From 134d3791f1d5b904dd11365843eb8da1b332e32a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 23 May 2023 12:48:40 +0600 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/view/filters.c | 45 ++++++++++++++++-------- source/view/filters.h | 1 + source/view/ubl-settings-resourcequota.c | 9 +++-- source/view/ubl-settings-resourcequota.h | 1 + source/view/view_add.c | 36 +++++++++++++------ source/view/view_add.h | 1 + source/view/view_edit.c | 29 +++++++++++---- source/view/view_edit.h | 1 + ubl-settings-resourcequota.glade | 2 +- 9 files changed, 89 insertions(+), 36 deletions(-) diff --git a/source/view/filters.c b/source/view/filters.c index 990f704..446388a 100644 --- a/source/view/filters.c +++ b/source/view/filters.c @@ -1,26 +1,34 @@ #include "filters.h" -filters_window *filters_widgets; +filters_window *filters_widgets = NULL; filters_window *filters_setup_window(char* glade_path){ - filters_widgets = malloc(sizeof(filters_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); - filters_widgets->Window = yon_gtk_builder_get_widget(builder,"wndFilters"); - filters_widgets->chbFilterTypeQouota = yon_gtk_builder_get_widget(builder,"chbFilterTypeQouota"); - filters_widgets->chbQuotaVolume = yon_gtk_builder_get_widget(builder,"chbQuotaVolume"); - filters_widgets->chbSoftLimit = yon_gtk_builder_get_widget(builder,"chbSoftLimit"); - filters_widgets->chbHardLimit = yon_gtk_builder_get_widget(builder,"chbHardLimit"); - filters_widgets->chbSwapFileLimit = yon_gtk_builder_get_widget(builder,"chbSwapFileLimit"); - filters_widgets->chbIOLimitWrite = yon_gtk_builder_get_widget(builder,"chbIOLimitWrite"); - filters_widgets->chbCPULimit = yon_gtk_builder_get_widget(builder,"chbCPULimit"); - filters_widgets->chbIOLimitRead = yon_gtk_builder_get_widget(builder,"chbIOLimitRead"); - filters_widgets->btnFiltersCancel = yon_gtk_builder_get_widget(builder,"btnFiltersCancel"); - filters_widgets->btnFiltersSave = yon_gtk_builder_get_widget(builder,"btnFiltersSave"); + if (filters_widgets == NULL) { + filters_widgets = malloc(sizeof(filters_window)); + GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + filters_widgets->Window = yon_gtk_builder_get_widget(builder,"wndFilters"); + filters_widgets->chbFilterTypeQouota = yon_gtk_builder_get_widget(builder,"chbFilterTypeQouota"); + filters_widgets->chbQuotaVolume = yon_gtk_builder_get_widget(builder,"chbQuotaVolume"); + filters_widgets->chbSoftLimit = yon_gtk_builder_get_widget(builder,"chbSoftLimit"); + filters_widgets->chbHardLimit = yon_gtk_builder_get_widget(builder,"chbHardLimit"); + filters_widgets->chbSwapFileLimit = yon_gtk_builder_get_widget(builder,"chbSwapFileLimit"); + filters_widgets->chbIOLimitWrite = yon_gtk_builder_get_widget(builder,"chbIOLimitWrite"); + filters_widgets->chbCPULimit = yon_gtk_builder_get_widget(builder,"chbCPULimit"); + filters_widgets->chbIOLimitRead = yon_gtk_builder_get_widget(builder,"chbIOLimitRead"); + filters_widgets->btnFiltersCancel = yon_gtk_builder_get_widget(builder,"btnFiltersCancel"); + filters_widgets->btnFiltersSave = yon_gtk_builder_get_widget(builder,"btnFiltersSave"); + filters_event(filters_widgets); + } 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->Window), "destroy", G_CALLBACK(filters_destroy), NULL); +} + +void filters_destroy(GtkWidget *self) { + filters_widgets = NULL; } void filters_localization(filters_window *widgets) { @@ -29,6 +37,7 @@ void filters_localization(filters_window *widgets) { void filters_on_hide_subwindow(GtkWidget *self) { gtk_widget_destroy(gtk_widget_get_toplevel(self)); + filters_widgets = NULL; } filters_window *get_widget_filters() { @@ -36,5 +45,11 @@ filters_window *get_widget_filters() { } void filters_show(GtkWidget *self) { - gtk_widget_show_all(filters_widgets->Window); + if (filters_widgets != NULL) { + gtk_widget_show_all(filters_widgets->Window); + } + else { + + } + } \ No newline at end of file diff --git a/source/view/filters.h b/source/view/filters.h index 8f6a9ef..9794374 100644 --- a/source/view/filters.h +++ b/source/view/filters.h @@ -34,4 +34,5 @@ void filters_localization(filters_window *widgets); void filters_on_hide_subwindow(GtkWidget *self); filters_window *get_widget_filters(); void filters_show(GtkWidget *self); +void filters_destroy(GtkWidget *self); #endif \ No newline at end of file diff --git a/source/view/ubl-settings-resourcequota.c b/source/view/ubl-settings-resourcequota.c index a090090..2d0680d 100644 --- a/source/view/ubl-settings-resourcequota.c +++ b/source/view/ubl-settings-resourcequota.c @@ -1,7 +1,7 @@ #include "ubl-settings-resourcequota.h" config main_config; - +main_window *widgets; /**on_close_subwindow(GtkWidget *self) * [EN] * Closes window in which [self] is contained. @@ -116,9 +116,12 @@ void config_init(){ main_window *setup_window(){ /* Widgets getting | Получение виджетов */ - main_window *widgets = malloc(sizeof(main_window)); + widgets = malloc(sizeof(main_window)); GtkBuilder *builder = gtk_builder_new_from_file(glade_path); widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + + widgets->notebookMain = yon_gtk_builder_get_widget(builder,"notebookMain"); + widgets->btnEdit = yon_gtk_builder_get_widget(builder,"btnEdit"); widgets->btnAdd = yon_gtk_builder_get_widget(builder,"btnAdd"); widgets->btnInfo = yon_gtk_builder_get_widget(builder,"btnInfo"); @@ -157,7 +160,7 @@ main_window *setup_window(){ } void info_show(GtkWidget *self) { - + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->notebookMain), 3); } void event_all(main_window *widgets) { diff --git a/source/view/ubl-settings-resourcequota.h b/source/view/ubl-settings-resourcequota.h index 29b6178..b4280ef 100644 --- a/source/view/ubl-settings-resourcequota.h +++ b/source/view/ubl-settings-resourcequota.h @@ -56,6 +56,7 @@ typedef struct { typedef struct { GtkWidget *Window; GtkWidget *btnShowFilters; + GtkWidget *notebookMain; GtkWidget *btnEdit; GtkWidget *btnInfo; GtkWidget *btnAdd; diff --git a/source/view/view_add.c b/source/view/view_add.c index f82aa5a..2c92ec3 100644 --- a/source/view/view_add.c +++ b/source/view/view_add.c @@ -1,18 +1,26 @@ #include "view_add.h" -add_window *add_widgets; - -add_window *add_setup_window(char* glade_path){ - add_widgets = malloc(sizeof(add_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); - add_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasAdding"); - add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); - add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); +add_window *add_widgets = NULL; + +add_window *add_setup_window(char* glade_path) { + if (add_widgets == NULL) { + add_widgets = malloc(sizeof(add_window)); + GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + add_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasAdding"); + add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); + add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); + add_event(add_widgets); + } return add_widgets; } void add_event(add_window *widgets) { - g_signal_connect(G_OBJECT(widgets->btnSaveAddSave),"clicked",G_CALLBACK(add_on_hide_subwindow),NULL); + g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_hide_subwindow),NULL); + g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); +} + +void add_destroy(GtkWidget *self) { + add_widgets = NULL; } void add_localization(add_window *widgets) { @@ -21,6 +29,8 @@ void add_localization(add_window *widgets) { void add_on_hide_subwindow(GtkWidget *self) { gtk_widget_destroy(gtk_widget_get_toplevel(self)); + add_widgets = NULL; + } add_window *get_widget_add() { @@ -28,5 +38,11 @@ add_window *get_widget_add() { } void add_show(GtkWidget *self) { - gtk_widget_show_all(add_widgets->Window); + if (add_widgets != NULL) { + gtk_widget_show_all(add_widgets->Window); + } + else { + + } + } \ No newline at end of file diff --git a/source/view/view_add.h b/source/view/view_add.h index e15e58c..fb4de5e 100644 --- a/source/view/view_add.h +++ b/source/view/view_add.h @@ -26,4 +26,5 @@ void add_localization(add_window *widgets); void add_on_hide_subwindow(GtkWidget *self); add_window *get_widget_add(); void add_show(GtkWidget *self); +void add_destroy(GtkWidget *self); #endif \ No newline at end of file diff --git a/source/view/view_edit.c b/source/view/view_edit.c index 6a68369..edbc652 100644 --- a/source/view/view_edit.c +++ b/source/view/view_edit.c @@ -1,18 +1,26 @@ #include "view_edit.h" -edit_window *edit_widgets; +edit_window *edit_widgets = NULL; edit_window *edit_setup_window(char* glade_path){ - edit_widgets = malloc(sizeof(edit_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); - edit_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasEdit"); - edit_widgets->btnEditCancel = yon_gtk_builder_get_widget(builder,"btnEditCancel"); - edit_widgets->btnSaveEditSave = yon_gtk_builder_get_widget(builder,"btnSaveEditSave"); + if (edit_widgets == NULL) { + edit_widgets = malloc(sizeof(edit_window)); + GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + edit_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasEdit"); + edit_widgets->btnEditCancel = yon_gtk_builder_get_widget(builder,"btnEditCancel"); + edit_widgets->btnSaveEditSave = yon_gtk_builder_get_widget(builder,"btnSaveEditSave"); + edit_event(edit_widgets); + } return edit_widgets; } void edit_event(edit_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnEditCancel),"clicked",G_CALLBACK(edit_on_hide_subwindow),NULL); + g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(edit_destroy), NULL); +} + +void edit_destroy(GtkWidget *self) { + edit_widgets = NULL; } void edit_localization(edit_window *widgets) { @@ -21,6 +29,7 @@ void edit_localization(edit_window *widgets) { void edit_on_hide_subwindow(GtkWidget *self) { gtk_widget_destroy(gtk_widget_get_toplevel(self)); + edit_widgets = NULL; } edit_window *get_widget_edit() { @@ -28,5 +37,11 @@ edit_window *get_widget_edit() { } void edit_show(GtkWidget *self) { - gtk_widget_show_all(edit_widgets->Window); + if (edit_widgets != NULL) { + gtk_widget_show_all(edit_widgets->Window); + } + else { + + } + } \ No newline at end of file diff --git a/source/view/view_edit.h b/source/view/view_edit.h index 2e1add2..024b08c 100644 --- a/source/view/view_edit.h +++ b/source/view/view_edit.h @@ -26,4 +26,5 @@ void edit_localization(edit_window *widgets); void edit_on_hide_subwindow(GtkWidget *self); edit_window *get_widget_edit(); void edit_show(GtkWidget *self); +void edit_destroy(GtkWidget *self); #endif \ No newline at end of file diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 90edad8..a8d9205 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -618,7 +618,7 @@ translated and supported by community. True vertical - + True True