design changes

pull/6/head^2
parent c47eab30d1
commit 8382fb0914

@ -1,5 +1,5 @@
# ubl-settings-video # ubl-settings-video
# Видеокарта/Экран # Настройки видеоадаптера и дисплея
# Build # Build
In order to build ubl-settings-video you will need: In order to build ubl-settings-video you will need:

@ -0,0 +1,43 @@
#define PARAMETER_DEFAULT_LABEL _("Default settings")
#define MONITOR_LABEL _("Monitor ")
#define SETTINGS_VIDEO_TITLE_LABEL _("Video adapter and display settings")
#define MONITOR_PORT_LABEL _("Port: ")
#define MONITOR_RESOLUTION_LABEL _("Resolution (px): ")
#define MONITOR_FREQUENCY_LABEL _("Frequency (Hz): ")
#define MONITOR_ROTATION_LABEL _("Rotation: ")
#define MONITOR_POSITION_LABEL _("Position: ")
#define MONITOR_SWITCH_OFF_LABEL _("Do not switch off display")
#define MONITOR_CVT_LABEL _("Create modeline for current resolution with CVT")
#define MONITOR_REDUCED_LABEL _("Use \"CVT Reduced Blanking\"")
#define MONITOR_GTF_LABEL _("Create modeline for current resolution with GTF")
#define MONITOR_MANUALLY_LABEL _("Configure manually through parameter line: ")
#define MONITOR_MAIN_DISPLAY_LABEL _("Main display")
#define MONITOR_UNSUPPORTED_LABEL _("Show unsupported")
#define MONITOR_ENABLED_LABEL _("Enabled")
#define MONITOR_LEFT_LABEL _("Left")
#define MONITOR_RIGHT_LABEL _("Right")
#define MONITOR_INVERTED_LABEL _("Inverted")
#define MONITOR_LEFT_POS_LABEL _("Left of")
#define MONITOR_RIGHT_POS_LABEL _("Right of")
#define MONITOR_ABOVE_POS_LABEL _("Above")
#define MONITOR_BELOW_POS_LABEL _("Below ")
#define MONITOR_NO_ROTATION_LABEL _("No rotation")
#define MONITOR_SAVE_LABEL _("Save")
#define MONITOR_CANCEL_LABEL _("Cancel")
#define MONITOR_CHOOSE_PORT_LABEL _("Choose port to configure")
#define MONITOR_POSITION_LEFT_PARAMETER _("lo:")
#define MONITOR_POSITION_RIGHT_PARAMETER _("ro:")
#define MONITOR_POSITION_ABOVE_PARAMETER _("ab:")
#define MONITOR_POSITION_BELOW_PARAMETER _("be:")
#define MONITOR_ROTATE_PARAMETER _("rotate:")
#define MONITOR_ROTATE_NORMAL_PARAMETER _("normal")
#define MONITOR_ROTATE_LEFT_PARAMETER _("left")
#define MONITOR_ROTATE_RIGHT_PARAMETER _("right")
#define MONITOR_ROTATE_INVERTED_PARAMETER _("invert")
#define MONITOR_PORT_ERROR_LABEL _("Error: Port must be chosen to save")
#define MONITOR_PORT_SUCCESS_LABEL _("Monitor configuration succeedeed")

File diff suppressed because it is too large Load Diff

@ -8,6 +8,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <fcntl.h> #include <fcntl.h>
#include "ubl-utils.h" #include "ubl-utils.h"
#include "ubl-settings-video-strings.h"
#ifndef UBL_SETINGS_VIDEO_H #ifndef UBL_SETINGS_VIDEO_H
#define UBL_SETINGS_VIDEO_H #define UBL_SETINGS_VIDEO_H
@ -29,9 +30,9 @@
#define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\"" #define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\""
#define get_proprietary_drivers_command "cut -d, -f1- video-drivers.csv | grep -E \"-\"" #define get_proprietary_drivers_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\""
#define get_resolutions_supportable_command "cut -d, -f1- Resolutions.csv |sed 's/,/\t/g'" #define get_resolutions_supportable_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/resolutions.csv |sed 's/,/\t/g'"
#define get_frequences_command "xrandr |grep -v -n \"[a-z][a-z]\" |sed 's/ * / /g' |cut -d' ' -f1,3-" #define get_frequences_command "xrandr |grep -v -n \"[a-z][a-z]\" |sed 's/ * / /g' |cut -d' ' -f1,3-"
@ -49,6 +50,8 @@
#define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video " #define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video "
#define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] "))
char *local; char *local;
@ -58,12 +61,25 @@ string version_application = "1.0";
#define _(String) gettext(String) #define _(String) gettext(String)
typedef dictionary* monitor_config;
typedef dictionary* proprietary_config;
typedef dictionary* monitor_view;
typedef struct {
GtkWidget *icon;
GtkWidget *box;
GtkWidget *label;
} render_data;
typedef struct typedef struct
{ {
config_str loaded_config;
int configsize;
int autoChooseDrivers; int autoChooseDrivers;
dictionary *videoconfig; monitor_view monitor_visuals;
dictionary *monitors; monitor_config monitors;
dictionary *proprietary; proprietary_config proprietary;
GtkListStore *list; GtkListStore *list;
char *failsafenVidia; char *failsafenVidia;
char *failsafeATI; char *failsafeATI;
@ -71,25 +87,30 @@ typedef struct
char *optirun; char *optirun;
char *primusrun; char *primusrun;
int gapfix; int gapfix;
int optiorprimus; config_str ports;
char **ports;
int portssize; int portssize;
char **resolutions; config_str resolutions;
int resolutionssize; int resolutionssize;
render_data status_render;
} config; } config;
typedef struct typedef struct
{ {
int main; int main;
int enable; int enable;
char *position; int position;
char *position_port;
char *port; char *port;
char *resolution; char *resolution;
char **resolutionCapabilities; config_str resolutionCapabilities;
char *frequency; char *frequency;
char *rotation; int rotation;
char *stringparameters; char *stringparameters;
int dpms;
int resolution_size; int resolution_size;
int cvt;
int reduced;
int gtf;
} monitorconfig; } monitorconfig;
typedef struct { typedef struct {
@ -174,43 +195,46 @@ typedef struct
typedef struct typedef struct
{ {
GtkWidget *templateMonitorConfigurationWindow; GtkWidget *templateMonitorConfigurationWindow;
GtkWidget *mainMonitorConfigurationBox;
GtkWidget *templateMonitorConfigurationBox; GtkWidget *templateMonitorConfigurationBox;
GtkWidget *templateMonitorConfigurationMonitorLabel; GtkWidget *templateMonitorConfigurationEnableCheck;
GtkWidget *templateMonitorConfigurationPortLabel;
GtkWidget *templateMonitorConfigurationPortCombo;
GtkWidget *templateMonitorConfigurationMainCheck;
GtkWidget *templateMonitorConfigurationResolutionLabel; GtkWidget *templateMonitorConfigurationResolutionLabel;
GtkWidget *templateMonitorConfigurationResolutionCombo; GtkWidget *templateMonitorConfigurationResolutionCombo;
GtkWidget *templateMonitorConfigurationShowUnsupportedCheck;
GtkWidget *templateMonitorConfigurationFrequencyLabel; GtkWidget *templateMonitorConfigurationFrequencyLabel;
GtkWidget *templateMonitorConfigurationFrequencyCombo; GtkWidget *templateMonitorConfigurationFrequencyCombo;
GtkWidget *templateMonitorConfigurationRotationCombo;
GtkWidget *templateMonitorConfigurationRotationLabel; GtkWidget *templateMonitorConfigurationRotationLabel;
GtkWidget *templateMonitorConfigurationMainRadio; GtkWidget *templateMonitorConfigurationRotationCombo;
GtkWidget *templateMonitorConfigurationParameterLineCheck;
GtkWidget *templateMonitorConfigurationParameterLineEntry;
GtkWidget *templateMonitorConfigurationDoNotSwitchOffLabel;
GtkWidget *templateMonitorConfigurationDoNotSwitchOffCheck;
GtkWidget *templateMonitorConfigurationCancelButton;
GtkWidget *templateMonitorConfigurationSaveButton;
GtkWidget *templateMonitorConfigurationEnableCheck;
GtkWidget *templateMonitorConfigurationPortLabel;
GtkWidget *templateMonitorConfigurationPortCombo;
GtkWidget *templateMonitorConfigurationShowUnsupportedCheck;
GtkWidget *templateMonitorConfigurationPositionLabel; GtkWidget *templateMonitorConfigurationPositionLabel;
GtkWidget *templateMonitorConfigurationPositionPosCombo; GtkWidget *templateMonitorConfigurationPositionPosCombo;
GtkWidget *templateMonitorConfigurationPositionPortCombo; GtkWidget *templateMonitorConfigurationPositionPortCombo;
GtkWidget *templateMonitorConfigurationDoNotSwitchOffCheck;
GtkWidget *templateMonitorConfigurationModelineCVTCheck; GtkWidget *templateMonitorConfigurationModelineCVTCheck;
GtkWidget *templateMonitorConfigurationUseCVTReducedCheck; GtkWidget *templateMonitorConfigurationUseCVTReducedCheck;
GtkWidget *templateMonitorConfigurationModelineGTFCheck; GtkWidget *templateMonitorConfigurationModelineGTFCheck;
GtkWidget *templateMonitorConfigurationParameterLineCheck;
GtkWidget *templateMonitorConfigurationParameterLineEntry;
GtkWidget *templateMonitorConfigurationCancelButton;
GtkWidget *templateMonitorConfigurationSaveButton;
dictionary *config;
} monitor_edit_window;
typedef struct {
GtkWidget *templateMonitorscreenOverlay; GtkWidget *templateMonitorscreenOverlay;
GtkWidget *templateMonitorImage; GtkWidget *templateMonitorImage;
GtkWidget *templateMonitorInfoBox; GtkWidget *templateMonitorInfoBox;
GtkWidget *templateMonitorInfoNameLabel; GtkWidget *templateMonitorInfoNameLabel;
GtkWidget *templateMonitorInfoResolutionLabel; GtkWidget *templateMonitorInfoResolutionLabel;
GtkWidget *templateMonitorInfoConfigureButton;
GtkWidget *templateMonitorDeleteButton; GtkWidget *templateMonitorDeleteButton;
GtkWidget *templateMonitorSwitchButton; GtkWidget *templateMonitorSwitchButton;
dictionary *curconfig; GtkWidget *templateMonitorInfoConfigureButton;
} MonitorSettings; GtkWidget *templateMonitorInfoAddButton;
monitor_config config;
} monitor_window;
typedef struct typedef struct
{ {
@ -225,14 +249,10 @@ typedef struct
GtkWidget *ProprietaryAcceptButton; GtkWidget *ProprietaryAcceptButton;
} driver_window; } driver_window;
int yon_check_for_monitors();
MonitorSettings *yon_setup_monitor_settings(); // void on_closed_configuration(GtkWidget *self, MonitorSettings *monitors);
dictionary *yon_dictionary_pack_monitors(MonitorSettings *monitors, int size); // void on_save_configuration(GtkWidget self, MonitorSettings *monitors);
dictionary *yon_dictionary_pack_overlays(MonitorSettings *monitors, int size); void yon_parse_monitor();
void on_closed_configuration(GtkWidget *self, MonitorSettings *monitors);
void on_save_configuration(GtkWidget self, MonitorSettings *monitors);
int yon_config_init(char **parameters, int size);
void yon_parse_monitor(dictionary *monitor, char *string_of_settings);
void on_config_fill_interface(widgets_dict *widgets); void on_config_fill_interface(widgets_dict *widgets);
void yon_update_config(widgets_dict *widgets); void yon_update_config(widgets_dict *widgets);
void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets); void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets);
@ -241,4 +261,16 @@ void on_configuration_save__local(GtkWidget *self, widgets_dict *widgets);
void yon_config_monitor_string_parse(char *parameters, int *size); void yon_config_monitor_string_parse(char *parameters, int *size);
int yon_char_get_if_resolution(char *parsed_string); int yon_char_get_if_resolution(char *parsed_string);
void yon_monitor_set_resolutions(dictionary *dict); void yon_monitor_set_resolutions(dictionary *dict);
monitor_config yon_monitor_config_new(char *port);
void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_string);
void yon_monitor_view_new(monitor_config monitor);
// void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings);
void yon_monitor_view_draw_all(GtkWidget *cnt);
void on_monitor_configure(GtkWidget *self,monitor_window *window);
void on_monitor_add(GtkWidget *self,monitor_window *window);
void on_monitor_switch(GtkWidget *self,monitor_window *window);
void on_monitor_delete(GtkWidget *self,monitor_view windowd);
void yon_monitor_view_update();
void yon_monitor_window_update(monitor_edit_window *window);
char *yon_monitor_make_string(monitorconfig* config);
#endif #endif

@ -300,6 +300,7 @@ dictionary *yon_dictionary_rip(dictionary *dict)
dictionary *yon_dictionary_get_nth(dictionary *dict, int place) dictionary *yon_dictionary_get_nth(dictionary *dict, int place)
{ {
if (dict){
dict = dict->first; dict = dict->first;
int i = 0; int i = 0;
for (i = 0; i < place; i++) for (i = 0; i < place; i++)
@ -311,6 +312,7 @@ dictionary *yon_dictionary_get_nth(dictionary *dict, int place)
return dict; return dict;
else else
return NULL; return NULL;
} else return NULL;
} }
// char functions // char functions
@ -342,10 +344,30 @@ char *yon_char_get_augumented(char *source, char *append)
*/ */
char *yon_char_new(char *chr) char *yon_char_new(char *chr)
{ {
if (chr){
char *newchar = malloc(strlen(chr) + 1); char *newchar = malloc(strlen(chr) + 1);
memset(newchar, 0, strlen(chr) + 1); memset(newchar, 0, strlen(chr) + 1);
memcpy(newchar, chr, strlen(chr)); memcpy(newchar, chr, strlen(chr));
return newchar; return newchar;
} else
return NULL;
}
// char *yon_char_unite(char *source, ...)
char *yon_char_unite(char *source, ...){
va_list arglist;
char *new_char=NULL;
char *unite_char=NULL;
new_char=yon_char_new(source);
va_start(arglist,source);
unite_char = va_arg(arglist,char*);
while(unite_char){
new_char = yon_char_get_augumented(new_char,unite_char);
unite_char = va_arg(arglist,char*);
}
va_end(arglist);
return new_char;
} }
/**[EN] /**[EN]
@ -407,7 +429,7 @@ char *yon_char_divide_search(char *source, char *dividepos, int delete_divider)
return cut; return cut;
} }
else else
return NULL; return source;
} }
} }
/**[EN] /**[EN]
@ -447,6 +469,7 @@ char **yon_char_parse(char *parameters, int *size, char *divider){
string=realloc(string,sizeof(char*)*i); string=realloc(string,sizeof(char*)*i);
string[i-1]=yon_char_new(param); string[i-1]=yon_char_new(param);
i++; i++;
if (strcmp(param,paramline)==0) break;
} }
string=realloc(string,sizeof(char*)*i); string=realloc(string,sizeof(char*)*i);
string[i-1]=yon_char_new(paramline); string[i-1]=yon_char_new(paramline);
@ -606,7 +629,7 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size)
return NULL; return NULL;
}; };
char **yon_config_load(char *command, int *str_len) config_str yon_config_load(char *command, int *str_len)
{ {
FILE *output = popen(command, "r"); FILE *output = popen(command, "r");
char **output_strings = NULL; char **output_strings = NULL;
@ -626,8 +649,13 @@ char **yon_config_load(char *command, int *str_len)
i++; i++;
} }
} }
if (i>0){
*str_len = i; *str_len = i;
return output_strings; return output_strings;
} else{
*str_len=-1;
return NULL;
}
} }
@ -643,13 +671,17 @@ int yon_config_save(char *command)
} }
/**[EN] /**[EN]
* char *yon_config_get_parameter(char **parameters, int size, char *param) * char *yon_config_get_parameter(config parameters, int size, char *param)
* Gets parameter from parameter list; * Gets parameter from parameter list;
* *
* [RU] * [RU]
*/ */
char *yon_config_get_parameter(char **parameters, int size, char *param) char *yon_config_get_parameter(config_str parameters, int size, char *param)
{ {
if (param[0]==' ')
yon_char_divide_search(param," ",-1);
param=yon_char_divide_search(yon_char_new(param)," ",-1);
char *str = NULL; char *str = NULL;
for (int j = 0; j < size; j++) for (int j = 0; j < size; j++)
{ {
@ -828,6 +860,7 @@ int yon_launch(thread_output *thread)
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){
if (combo_box&&text_to_find){
int active=gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); int active=gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box));
char *str="-1"; char *str="-1";
for (int i=0;strcmp(str,"")!=0;i++){ for (int i=0;strcmp(str,"")!=0;i++){
@ -836,16 +869,18 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){
if (!str) return -1; if (!str) return -1;
if (strcmp(text_to_find,str)==0) return i; if (strcmp(text_to_find,str)==0) return i;
} }
return -1; } return -1;
} }
int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding) int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding)
{ {
if (dict){
for (dictionary *dct = dict->first; dct != NULL; dct = dct->next) for (dictionary *dct = dict->first; dct != NULL; dct = dct->next)
{ {
gtk_box_pack_start(GTK_BOX(destination), (GtkWidget *)dct->data, expand, fill, padding); gtk_box_pack_start(GTK_BOX(destination), (GtkWidget *)dct->data, expand, fill, padding);
} }
return 1; return 1;
}else return 0;
} }
int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding) int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding)

@ -15,6 +15,9 @@
#define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next) #define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next)
#define new(type) malloc(sizeof(type))
#define new_arr(type,size) malloc(sizeof(type)*size)
#define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command #define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command
#define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer) #define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer)
@ -58,6 +61,7 @@ typedef struct apps
int DualPluggable; int DualPluggable;
} apps; } apps;
typedef char** config_str;
// dictionary functions // dictionary functions
@ -93,6 +97,8 @@ char *yon_char_get_augumented(char *source, char *append);
char *yon_char_new(char *chr); char *yon_char_new(char *chr);
char *yon_char_unite(char *source, ...);
char *yon_cut(char *source, int size, int startpos); char *yon_cut(char *source, int size, int startpos);
char *yon_char_divide(char *source, int dividepos); char *yon_char_divide(char *source, int dividepos);
@ -107,6 +113,8 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete)
int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
// parsing functions // parsing functions
apps *yon_apps_scan_and_parse_desktops(int *sizef); apps *yon_apps_scan_and_parse_desktops(int *sizef);
@ -115,11 +123,11 @@ void yon_apps_sort(apps *applist, int size);
apps *yon_apps_get_by_name(apps *applist, char *name, int size); apps *yon_apps_get_by_name(apps *applist, char *name, int size);
char **yon_config_load(char *command, int *str_len); config_str yon_config_load(char *command, int *str_len);
int yon_config_save(char *command); int yon_config_save(char *command);
char *yon_config_get_parameter(char **parameters, int size, char *param); char *yon_config_get_parameter(config_str parameters, int size, char *param);
char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider); char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider);
@ -165,7 +173,7 @@ int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *de
void yon_on_plug_added(GtkSocket *self, gpointer user_data); void yon_on_plug_added(GtkSocket *self, gpointer user_data);
void yon_on_plug_removed(GtkSocket *self, gpointer user_data); void yon_on_plug_removed(GtkSocket *self, gpointer user_data);
#endif
typedef enum typedef enum
{ {
BACKGROUND_IMAGE_SUCCESS_TYPE, BACKGROUND_IMAGE_SUCCESS_TYPE,
@ -182,3 +190,4 @@ typedef enum
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_status_box_render(GtkWidget *StatusBox, GtkWidget *StatusIcon, GtkWidget *StatusLabel, char *StatusText, BACKGROUND_IMAGE_TYPE BackgroundClass); void _yon_ubl_status_box_render(GtkWidget *StatusBox, GtkWidget *StatusIcon, GtkWidget *StatusLabel, char *StatusText, BACKGROUND_IMAGE_TYPE BackgroundClass);
#endif #endif
#endif

@ -1,7 +1,7 @@
[Desktop Entry] [Desktop Entry]
Encoding=UTF-8 Encoding=UTF-8
Name=ubl-settings-video Name=ubl-settings-video
Name[ru]=Настройки Видеоадаптера и дисплея Name[ru]=Настройки видеоадаптера и дисплея
GenericName=ubl-settings-video GenericName=ubl-settings-video
GenericName[ru]=Настройки Видеоадаптера и дисплея GenericName[ru]=Настройки Видеоадаптера и дисплея
Comment=Application for managing video adapter and display settings Comment=Application for managing video adapter and display settings

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save