diff --git a/source/ubl-settings-video-install.c b/source/ubl-settings-video-install.c index dde113f..f090b5e 100644 --- a/source/ubl-settings-video-install.c +++ b/source/ubl-settings-video-install.c @@ -47,19 +47,31 @@ void on_install_activate(GtkWidget *self, main_window *widgets){ g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_install_activate),widgets); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self),!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self))); g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_install_activate),widgets); - + int is_installed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); driver_struct *driver = g_object_get_data(G_OBJECT(self),"driver_struct"); char *install_target = NULL; + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); if (self == driver->ModuleInstalledCheck){ install_target = driver->module; + data->title = is_installed?MODULE_REMOVE_PROCESS_LABEL(install_target):MODULE_INSTALL_PROCESS_LABEL(install_target); } else if (self == driver->PackageInstalledCheck){ install_target = driver->package; + data->title = is_installed?PACKAGE_REMOVE_PROCESS_LABEL(install_target):PACKAGE_INSTALL_PROCESS_LABEL(install_target); + } + if (is_installed){ + data->action_text = REMOVE_CONFIRMATION_LABEL(install_target); + } else { + data->action_text = self == driver->ModuleInstalledCheck?yon_char_unite(INSTALL_CONFIRMATION_LABEL(install_target),"\n",INSTALL_ATTENTION_LABEL,NULL): + INSTALL_CONFIRMATION_LABEL(install_target); } char *command = NULL; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self))){ + if (is_installed){ command = delete_proprietary_command(install_target); } else { command = install_proprietary_command(install_target); + } + if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT){ + return; } g_mutex_lock(&main_config.progress_mutex); main_config.progress_active=1; @@ -69,7 +81,7 @@ void on_install_activate(GtkWidget *self, main_window *widgets){ vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1); g_signal_connect_after(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_install_check),driver); yon_install_buttons_set_sensitive(widgets,0); - yon_terminal_integrated_start(widgets->InstallTerminal,command); + yon_terminal_integrated_start_shell(widgets->InstallTerminal,command,NULL,NULL); // g_signal_connect(G_OBJECT(widgets->InstallTerminal),"contents-changed",G_CALLBACK(on_terminal_check_progress),widgets); if (!gtk_widget_get_visible(widgets->TerminalPaned)){ on_terminal_revealer_open(NULL,widgets); diff --git a/source/ubl-settings-video-monitor.c b/source/ubl-settings-video-monitor.c index 1a3d4a8..a0f71d8 100644 --- a/source/ubl-settings-video-monitor.c +++ b/source/ubl-settings-video-monitor.c @@ -23,6 +23,7 @@ void on_monitor_delete(GtkWidget *,monitor_data *window){ void on_monitor_switch(GtkWidget *,monitor_data *window){ if(window){ const char *name = gtk_label_get_text(GTK_LABEL(window->NameLabel)); + if (yon_char_is_empty(name)) return; char *parameter = config(XORG_MONITOR(name)); int size; config_str parsed = yon_char_parse(parameter,&size,","); @@ -282,6 +283,15 @@ void on_port_chosen_changed(GtkWidget *, monitor_edit_window *window){ } } +int yon_string_compare(char **a, char **b){ + gchar *key_a = g_utf8_collate_key(*a, -1); + gchar *key_b = g_utf8_collate_key(*b, -1); + gint result = strcmp(key_a, key_b); + g_free(key_a); + g_free(key_b); + + return result; +} void on_monitor_configure(GtkWidget *,monitor_data *window){ if(window){ @@ -312,6 +322,8 @@ void on_monitor_configure(GtkWidget *,monitor_data *window){ monitors->ParameterLineEntry = yon_gtk_builder_get_widget(builder, "ParameterLineEntry"); monitors->CancelButton = yon_gtk_builder_get_widget(builder, "CancelButton"); monitors->SaveButton = yon_gtk_builder_get_widget(builder, "SaveButton"); + monitors->resolutions = NULL; + monitors->resolutionssize=0; char *title; char *cur_port = (char*)gtk_label_get_text(GTK_LABEL(window->NameLabel)); @@ -346,6 +358,9 @@ void on_monitor_configure(GtkWidget *,monitor_data *window){ } guint ports_size; config_str ports = (config_str)g_hash_table_get_keys_as_array(main_config.ports_table,&ports_size); + // for (guint i=0;iUnsupportedCheck),1); while(gtk_events_pending()) gtk_main_iteration(); } + if (!yon_char_is_empty(resolution)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(monitors->ResolutionCombo),resolution); + }else{ + gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->ResolutionCombo),0); + } } } gtk_widget_show(monitors->MainWindow); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 9bfa0e8..6d9a0c2 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -76,7 +76,7 @@ END {\n\ #define get_resolutions_supportable_command "resource:///com/ublinux/csv/resolutions.csv" -#define install_proprietary_command(target) yon_char_append("pacman --quiet --needed -Sy ",target) +#define install_proprietary_command(target) yon_char_append("echo y| pacman --quiet --needed -Sy ",target) #define delete_proprietary_command(target) yon_char_append("pacman -R --noconfirm ",target) @@ -471,5 +471,6 @@ char *yon_optirun_default(char *target); char *yon_primusrun_default(char *target); void yon_all_resolutions_update(); void yon_monitor_port_manual(GtkToggleButton *self,monitor_edit_window *monitors); +int yon_string_compare(char **a, char **b); #endif \ No newline at end of file diff --git a/ubl-settings-video-configuration.glade b/ubl-settings-video-configuration.glade index 9dbdd34..7fd24f2 100644 --- a/ubl-settings-video-configuration.glade +++ b/ubl-settings-video-configuration.glade @@ -1,5 +1,5 @@ - + @@ -550,4 +550,10 @@ + + + + + + diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index f0740bb..ceba046 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -1,5 +1,5 @@ - + @@ -207,10 +207,11 @@ False 5 - + True False Choose driver automatically: + 0 False @@ -247,10 +248,11 @@ False 5 - + True False Failsafe Nvidia driver: + 0 False @@ -952,7 +954,7 @@ False True True - Supported Devices + Supported devices image4