diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 1894224..9b5af34 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -243,36 +243,43 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ - monitorconfig* config = yon_dictionary_get_data(window->config,monitorconfig*); - dictionary *dict=NULL; - gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)); - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0); - char *combo_text=yon_char_new((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo))); - char *resolution = yon_char_divide_search(yon_char_new(combo_text)," ",-1); - if (combo_text) - if (strcmp(combo_text,MONITOR_CHOOSE_PORT_LABEL)==0) - return; - else{ - dict=yon_dictionary_find(&videoconfig.supported_resolutions,resolution); - if (dict){ - resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*); - int found_size=0; - for (int i=0;isize;i++){ - char *check_line; - for (int j=0;jline[i])){ - found_size++; - if(!config->resolutionCapabilities) config->resolutionCapabilities=new(char*); - else config->resolutionCapabilities=realloc(config->resolutionCapabilities,sizeof(char*)*found_size); - config->resolutionCapabilities[found_size-1]=videoconfig.resolutions[j]; - config->resolution_size=found_size; + if (yon_dictionary_get_data(window->config,monitorconfig*)->show_usupported==0){ + monitorconfig* config = yon_dictionary_get_data(window->config,monitorconfig*); + dictionary *dict=NULL; + for (int i=0;iresolutionssize;i++){ + free(window->resolutions); + } + window->resolutions=NULL; + window->resolutionssize=0; + int portid=gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo)); + if (portid!=0) + window->curport=videoconfig.ports[portid-1]; + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)); + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0); + + if (window->curport){ + gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(window->mainMonitorConfigurationBox)),window->curport); + dict=yon_dictionary_find(&videoconfig.supported_resolutions,window->curport); + if (dict){ + resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*); + int found_size=0; + for (int i=0;isize;i++){ + char *check_line; + for (int j=0;jline[i])){ + found_size++; + if(!config->resolutionCapabilities) config->resolutionCapabilities=new(char*); + else config->resolutionCapabilities=realloc(config->resolutionCapabilities,sizeof(char*)*found_size); + config->resolutionCapabilities[found_size-1]=videoconfig.resolutions[j]; + config->resolution_size=found_size; + } } } + yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size); } - yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size); } } } @@ -529,7 +536,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){ g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationParameterLineCheck), "toggled", G_CALLBACK(on_sensitive_change_reversed), monitors->templateMonitorConfigurationBox); g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationParameterLineCheck), "toggled", G_CALLBACK(on_sensitive_change), monitors->templateMonitorConfigurationParameterLineEntry); g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationShowUnsupportedCheck), "toggled", G_CALLBACK(on_resolutions_unsupported_show),monitors); - g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationPortCombo), "popup", G_CALLBACK(on_port_chosen_changed),monitors); + g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationPortCombo), "changed", G_CALLBACK(on_port_chosen_changed),monitors); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(monitors->templateMonitorConfigurationEnableCheck),yon_dictionary_get_data(monitors->config,monitorconfig*)->enable==1); @@ -553,6 +560,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){ gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationSaveButton),MONITOR_SAVE_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),MONITOR_CHOOSE_PORT_LABEL); + monitors->curport=NULL; dictionary *dict=NULL; for (int i=0;itemplateMonitorConfigurationPositionPosCombo),0); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),PARAMETER_DEFAULT_LABEL); for (int i=0;itemplateMonitorConfigurationPositionPortCombo),videoconfig.ports[i]); + if (videoconfig.ports[i]!=monitors->config->key) + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),videoconfig.ports[i]); } gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationPositionPortCombo),0); @@ -649,9 +658,11 @@ void on_about() void yon_monitor_window_update(monitor_edit_window *window){ if (window){ - int found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationPortCombo, window->config->key); + int found = yon_char_parsed_check_exist(videoconfig.ports,videoconfig.portssize, window->config->key); if (found==-1) found=0; + else + found++; gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo),found); on_resolutions_unsupported_show(window->templateMonitorConfigurationShowUnsupportedCheck,window); if (((monitorconfig*)window->config->data)->resolutionCapabilities){ @@ -985,21 +996,37 @@ dictionary *yon_proprieary_get(){ config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size); int size=0; char **rtn = yon_config_load(get_proprietary_drivers_info_command,&size); - for (int drivers_found=0;drivers_founddata,&size,";"); - printf("%s\n",str[0]); if (strcmp(str[0],"")!=0&&str[0]){ gtk_list_store_append(videoconfig.list,&iter); gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); + if (yon_char_parsed_check_exist(installed,inssize,str[0])!=-1) + gtk_list_store_set(videoconfig.list,&iter,0,1,-1); } else{ gtk_list_store_append(videoconfig.list2,&iter); gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); + if (yon_char_parsed_check_exist(installed,inssize,str[1])!=-1) + gtk_list_store_set(videoconfig.list2,&iter,0,1,-1); } - if (strstr(dict->key," installed")) - gtk_list_store_set(videoconfig.list,&iter,0,1,-1); } } } @@ -1280,6 +1313,10 @@ void yon_monitor_view_new(monitor_config monitor){ window->templateMonitorInfoAddButton=yon_gtk_builder_get_widget(builder,"templateMonitorInfoAddButton"); window->config=NULL; gtk_overlay_add_overlay(GTK_OVERLAY(window->templateMonitorscreenOverlay),window->templateMonitorInfoBox); + gtk_widget_set_tooltip_text(window->templateMonitorDeleteButton,DELETE_LABEL); + gtk_widget_set_tooltip_text(window->templateMonitorInfoConfigureButton,CONFIGURE_LABEL); + gtk_widget_set_tooltip_text(window->templateMonitorSwitchButton,SWITCH_LABEL); + gtk_widget_set_tooltip_text(window->templateMonitorInfoAddButton,ADD_LABEL); if (monitor){ window->config=monitor; gtk_widget_hide(window->templateMonitorInfoAddButton); @@ -1368,7 +1405,7 @@ void yon_adapter_window_setup(widgets_dict *widgets){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } - else if (strstr(vendor,"NVVIDIA")){ + else if (strstr(vendor,"NVIDIA")){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } @@ -1671,7 +1708,7 @@ int main(int argc, char *argv[]) } } - if (getuid()!=0){ + if (0){ char *args=""; for (int i=0;i #include -#include "ubl-settings-video-cm.h" +// #include "ubl-settings-video-cm.h" #ifdef WEBKIT_FOUND #include #endif @@ -39,7 +39,7 @@ #define get_ports_command "xrandr |grep -E \"*connected\" |cut -d' ' -f1" #define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\"" -#define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} \"" +#define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[-0-9a-zA-Z:]{1,} connected\" |grep -oE \"[-0-9a-zA-Z:]{1,} \"" #define get_proprietary_drivers_info_command "cut -d';' -f2- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\"" @@ -71,9 +71,9 @@ #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" -#define get_proprietary_drivers_command "LC_ALL=C pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" -#define get_proprietary_drivers_local_command "LC_ALL=C pacman -Qq |grep -E \"ubm-nvidia-\"" - +#define get_proprietary_drivers_command "pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}\"" +#define get_proprietary_drivers_local_command "pacman -Qq |grep -E \"ubm-nvidia-\"" +#define get_proprietary_installed_command yon_char_unite("sudo pacman -Ss nvidia-.* |grep -E ",INSTALLED_LOW_LABEL," |grep -oE \"ubm-nvidia-[0-9a-zA-Z]{1,}|nvidia-[0-9]{1,4}xx-dkms\"",NULL) // #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" #define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ]{1,}\"|sed 's/: /=/g'|sed 's/ /_/g'" @@ -287,6 +287,10 @@ typedef struct typedef struct { + char *curport; + config_str resolutions; + int resolutionssize; + GtkWidget *templateMonitorConfigurationWindow; GtkWidget *mainMonitorConfigurationBox; GtkWidget *templateMonitorConfigurationBox;