diff --git a/source/ubl-settings-system.c b/source/ubl-settings-system.c index 86925c3..aceb8f7 100644 --- a/source/ubl-settings-system.c +++ b/source/ubl-settings-system.c @@ -176,7 +176,15 @@ void on_terminal_command_ended(VteTerminal *, gint status, domain_info_window *w void on_language_default_toggled(GtkWidget *, int status, main_window *widgets){ gtk_widget_set_sensitive(widgets->LocaleTree,!status); gtk_widget_set_sensitive(widgets->LocaleAddButton,!status); - gtk_widget_set_sensitive(widgets->LocaleRemoveButton,!status); + GtkTreeModel *model; + GtkTreeIter iter; + if (!status&>k_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LocaleTree)),&model,&iter)){ + gtk_widget_set_sensitive(widgets->LocaleRemoveButton,1); + gtk_widget_set_sensitive(GTK_WIDGET(widgets->locale_menu->buttons->first->next->data),1); + } else { + gtk_widget_set_sensitive(widgets->LocaleRemoveButton,0); + gtk_widget_set_sensitive(GTK_WIDGET(widgets->locale_menu->buttons->first->next->data),0); + } if (!status){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguageList); GtkTreeIter iter; @@ -199,6 +207,18 @@ void on_language_default_toggled(GtkWidget *, int status, main_window *widgets){ } } +void on_locale_selection_changed(GtkWidget *,main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LocaleTree)),&model,&iter)){ + gtk_widget_set_sensitive(widgets->LocaleRemoveButton,1); + gtk_widget_set_sensitive(GTK_WIDGET(widgets->locale_menu->buttons->first->next->data),1); + } else { + gtk_widget_set_sensitive(widgets->LocaleRemoveButton,0); + gtk_widget_set_sensitive(GTK_WIDGET(widgets->locale_menu->buttons->first->next->data),0); + } +} + main_window *yon_main_window_complete(main_window *widgets){ /* Widgets getting | Получение виджетов */ widgets = yon_remalloc(widgets,sizeof(main_window)); @@ -229,6 +249,11 @@ main_window *yon_main_window_complete(main_window *widgets){ /* Signal connection | Присоединение сигналов */ + widgets->locale_menu = yon_rmb_menu_setup(widgets->LocaleTree,NULL,NULL, + ADD_LANGUAGE_TOOLTIP_LABEL,add_icon_path,G_CALLBACK(on_language_open),widgets, + REMOVE_LANGUAGE_LABEL,remove_icon_path,G_CALLBACK(on_language_remove),widgets, + NULL); + g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(yon_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(yon_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(yon_config_custom_load),widgets); @@ -238,6 +263,8 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(yon_config_local_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(yon_config_custom_save),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleTree),"cursor-changed",G_CALLBACK(on_locale_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->HostnameEntry),"changed",G_CALLBACK(on_hostname_changed),widgets); g_signal_connect(G_OBJECT(widgets->IDCombo),"changed",G_CALLBACK(on_id_combo_toggled),widgets); g_signal_connect(G_OBJECT(widgets->IDEntry),"changed",G_CALLBACK(on_id_changed),widgets); @@ -255,6 +282,7 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->FindButton),"clicked",G_CALLBACK(on_find_domains_clicked),widgets); + on_locale_selection_changed(NULL,widgets); on_check_domain_connected(NULL, widgets); diff --git a/source/ubl-settings-system.h b/source/ubl-settings-system.h index 55b0482..2266a6f 100644 --- a/source/ubl-settings-system.h +++ b/source/ubl-settings-system.h @@ -69,6 +69,8 @@ #define domain_connected_icon "com.ublinux.ubl-settings-system.plug-connected-symbolic" #define domain_disconnected_icon "com.ublinux.ubl-settings-system.plug-disconnected-symbolic" +#define add_icon_path "com.ublinux.libublsettingsui-gtk3.increase-symbolic" +#define remove_icon_path "com.ublinux.libublsettingsui-gtk3.trash-symbolic" #define domain_connect_check "ubdomain-client list|grep -q 'configured'" @@ -132,6 +134,8 @@ typedef struct { GtkListStore *LanguageList; + rmb_menu_window *locale_menu; + } main_window; @@ -296,4 +300,5 @@ void on_domain_options_accept(GtkWidget *,domain_options_window *dialog); void on_domain_options_cell_toggled(GtkCellRenderer*, gchar *path,domain_options_window *window); domain_options_window *yon_domain_options_window_new(); void yon_domain_additional_options_open(GtkWidget *, connection_window *window); -void yon_domain_client_changed_switch(GtkWidget*,int ,connection_window *window); \ No newline at end of file +void yon_domain_client_changed_switch(GtkWidget*,int ,connection_window *window); +void on_locale_selection_changed(GtkWidget *,main_window *widgets); \ No newline at end of file diff --git a/ubl-settings-system.glade b/ubl-settings-system.glade index aa5c0fb..577182b 100644 --- a/ubl-settings-system.glade +++ b/ubl-settings-system.glade @@ -1,5 +1,5 @@ -