From 29834fc9bf8e11b600363401aa7a741c0995e856 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 23 May 2023 16:33:30 +0600 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D1=8B=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20treeView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/view/filters.c | 40 ++++++++++++++++-- source/view/filters.h | 4 ++ source/view/ubl-settings-resourcequota.c | 52 ++++++++++++++++++++++-- source/view/ubl-settings-resourcequota.h | 15 ++++++- ubl-settings-resourcequota.glade | 18 ++++---- 5 files changed, 112 insertions(+), 17 deletions(-) diff --git a/source/view/filters.c b/source/view/filters.c index 97bfff7..c5f816e 100644 --- a/source/view/filters.c +++ b/source/view/filters.c @@ -1,7 +1,7 @@ #include "filters.h" filters_window *filters_widgets = NULL; - +gboolean flag_filters[8]; filters_window *filters_setup_window(char* glade_path){ if (filters_widgets == NULL) { filters_widgets = malloc(sizeof(filters_window)); @@ -19,11 +19,12 @@ filters_window *filters_setup_window(char* glade_path){ filters_widgets->btnFiltersSave = yon_gtk_builder_get_widget(builder,"btnFiltersSave"); filters_event(filters_widgets); } + filters_set_flag(); return filters_widgets; } void filters_event(filters_window *widgets) { - g_signal_connect(G_OBJECT(widgets->btnFiltersCancel),"clicked",G_CALLBACK(filters_on_hide_subwindow),NULL); + g_signal_connect(G_OBJECT(widgets->btnFiltersCancel), "clicked",G_CALLBACK(filters_on_hide_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(filters_destroy), NULL); } @@ -52,5 +53,38 @@ void filters_show(GtkWidget *self, char* glade_path) { filters_setup_window(glade_path); gtk_widget_show_all(filters_widgets->Window); } - +} + +gboolean* filters_get_flag() { + flag_filters[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterTypeQouota)); + flag_filters[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbQuotaVolume)); + flag_filters[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbSoftLimit)); + flag_filters[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbHardLimit)); + flag_filters[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbSwapFileLimit)); + flag_filters[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbCPULimit)); + flag_filters[6] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbIOLimitWrite)); + flag_filters[7] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbIOLimitRead)); + return flag_filters; +} + +void filters_init_flag() { + flag_filters[0] = 1; + flag_filters[1] = 1; + flag_filters[2] = 1; + flag_filters[3] = 1; + flag_filters[4] = 1; + flag_filters[5] = 1; + flag_filters[6] = 1; + flag_filters[7] = 1; +} + +void filters_set_flag() { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterTypeQouota),flag_filters[0] ); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbQuotaVolume), flag_filters[1]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbSoftLimit), flag_filters[2]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbHardLimit), flag_filters[3]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbSwapFileLimit), flag_filters[4]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbCPULimit), flag_filters[5]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbIOLimitWrite), flag_filters[6]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbIOLimitRead), flag_filters[7]); } \ No newline at end of file diff --git a/source/view/filters.h b/source/view/filters.h index fdfd409..96025df 100644 --- a/source/view/filters.h +++ b/source/view/filters.h @@ -12,6 +12,7 @@ #include #include + // Переменные typedef struct { GtkWidget* Window; @@ -35,4 +36,7 @@ void filters_on_hide_subwindow(GtkWidget *self); filters_window *get_widget_filters(); void filters_show(GtkWidget *self, char* glade_path); void filters_destroy(GtkWidget *self); +int* filters_get_flag(); +void filters_init_flag(); +void filters_set_flag(); #endif \ No newline at end of file diff --git a/source/view/ubl-settings-resourcequota.c b/source/view/ubl-settings-resourcequota.c index c7aafb4..ae7a782 100644 --- a/source/view/ubl-settings-resourcequota.c +++ b/source/view/ubl-settings-resourcequota.c @@ -120,6 +120,16 @@ main_window *setup_window(){ GtkBuilder *builder = gtk_builder_new_from_file(glade_path); widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + widgets->treeViewMain = yon_gtk_builder_get_widget(builder,"treeViewMain"); + widgets->tvc0 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc0")); + widgets->tvc1 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc1")); + widgets->tvc2 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc2")); + widgets->tvc3 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc3")); + widgets->tvc4 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc4")); + widgets->tvc5 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc5")); + widgets->tvc6 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc6")); + widgets->tvc7 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc7")); + widgets->btnSaveCfg = yon_gtk_builder_get_widget(builder,"btnSaveCfg"); widgets->notebookMain = yon_gtk_builder_get_widget(builder,"notebookMain"); @@ -174,15 +184,25 @@ main_window *setup_window(){ return widgets; } +void main_visible_columns(GtkWidget *self) { + gboolean *flags_filters = filters_get_flag(); + gtk_tree_view_column_set_visible(widgets->tvc0, flags_filters[0]); + gtk_tree_view_column_set_visible(widgets->tvc1, flags_filters[1]); + gtk_tree_view_column_set_visible(widgets->tvc2, flags_filters[2]); + gtk_tree_view_column_set_visible(widgets->tvc3, flags_filters[3]); + gtk_tree_view_column_set_visible(widgets->tvc4, flags_filters[4]); + gtk_tree_view_column_set_visible(widgets->tvc5, flags_filters[5]); + gtk_tree_view_column_set_visible(widgets->tvc6, flags_filters[6]); + gtk_tree_view_column_set_visible(widgets->tvc7, flags_filters[7]); + filters_on_hide_subwindow(self); +} + void info_show(GtkWidget *self) { gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->notebookMain), 3); } void event_all(main_window *widgets) { - g_signal_connect(G_OBJECT(widgets->btnShowFilters),"clicked",G_CALLBACK(filters_show), glade_path); - g_signal_connect(G_OBJECT(widgets->btnAdd),"clicked",G_CALLBACK(add_show), glade_path); - g_signal_connect(G_OBJECT(widgets->btnEdit),"clicked",G_CALLBACK(edit_show), glade_path); - g_signal_connect(G_OBJECT(widgets->btnInfo),"clicked",G_CALLBACK(info_show), glade_path); + } void main_event(main_window *widgets) { @@ -191,6 +211,27 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL); + g_signal_connect(G_OBJECT(widgets->btnShowFilters),"clicked",G_CALLBACK(wrapper_filters_show), NULL); + g_signal_connect(G_OBJECT(widgets->btnAdd),"clicked",G_CALLBACK(add_show), glade_path); + g_signal_connect(G_OBJECT(widgets->btnEdit),"clicked",G_CALLBACK(edit_show), glade_path); + g_signal_connect(G_OBJECT(widgets->btnInfo),"clicked",G_CALLBACK(info_show), glade_path); +/* + g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL); + g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL); + g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(),NULL); + + g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(),NULL); + g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(),NULL); +*/ +} +void wrapper_filters_show(GtkWidget *self) { + filters_show(self, glade_path); + g_signal_connect(G_OBJECT(get_widget_filters()->btnFiltersSave),"clicked",G_CALLBACK(main_visible_columns), NULL); + + +} + +void main_localization(main_window *widgets) { /* Localisation | Локализация */ gtk_label_set_text(GTK_LABEL(widgets->HatLabel),TITLE_LABEL); gtk_label_set_text(GTK_LABEL(widgets->SaveLabel),SAVE_LABEL); @@ -278,11 +319,14 @@ int main(int argc, char *argv[]){ main_window *widgets = setup_window(); + filters_init_flag(); filters_setup_window(glade_path); add_setup_window(glade_path); edit_setup_window(glade_path); + main_localization(widgets); event_all(widgets); main_event(widgets); + yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel)) diff --git a/source/view/ubl-settings-resourcequota.h b/source/view/ubl-settings-resourcequota.h index 201b228..9154926 100644 --- a/source/view/ubl-settings-resourcequota.h +++ b/source/view/ubl-settings-resourcequota.h @@ -56,6 +56,16 @@ typedef struct { typedef struct { GtkWidget *Window; + GtkTreeViewColumn *tvc0; + GtkTreeViewColumn *tvc1; + GtkTreeViewColumn *tvc2; + GtkTreeViewColumn *tvc3; + GtkTreeViewColumn *tvc4; + GtkTreeViewColumn *tvc5; + GtkTreeViewColumn *tvc6; + GtkTreeViewColumn *tvc7; + + GtkWidget *treeViewMain; GtkWidget *btnSaveCfg; GtkWidget *btnShowFilters; GtkWidget *notebookMain; @@ -109,4 +119,7 @@ void config_init(); void event_all(); void main_event(main_window *widgets); void event_all(main_window *widgets); -void info_show(GtkWidget *self); \ No newline at end of file +void info_show(GtkWidget *self); +void main_localization(main_window *widgets); +void main_visible_columns(); +void wrapper_filters_show(GtkWidget *self); \ No newline at end of file diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index d0a162a..a82cb0d 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -636,7 +636,7 @@ translated and supported by community. True False - + True True liststore @@ -645,7 +645,7 @@ translated and supported by community. - + Type quota True @@ -657,7 +657,7 @@ translated and supported by community. - + Quota volume True @@ -670,7 +670,7 @@ volume - + Soft RAM limit, (volume) True @@ -683,7 +683,7 @@ volume - + Hard RAM limit, (volume) True @@ -696,7 +696,7 @@ volume - + Swap file limit (volume) @@ -710,7 +710,7 @@ limit - + CPU limit (%) True @@ -723,7 +723,7 @@ limit - + I/O limit (read) @@ -737,7 +737,7 @@ limit - + I/O limit (write)