diff --git a/.gitignore b/.gitignore
index 561563a..57ab3b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
.vscode/
ubl-settings-update.glade~
ubl-settings-update
+ubl-settings-update_ru.po~
+build/
diff --git a/Makefile b/Makefile
index aaee618..aef26b5 100644
--- a/Makefile
+++ b/Makefile
@@ -86,6 +86,7 @@ uninstall:
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
+ @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/${PKGNAME}-banner.png"
@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
@@ -117,7 +118,10 @@ install: check uninstall
@install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images}
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}-banner.png"
+ @install -dm755 -d "${DESTDIR}${PREFIX}/share/${PKGNAME}/images"
+ @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png"
+ @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
+ @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \
diff --git a/com.ublinux.ubl-settings-update.checked.svg b/com.ublinux.ubl-settings-update.checked.svg
new file mode 100644
index 0000000..e3cab42
--- /dev/null
+++ b/com.ublinux.ubl-settings-update.checked.svg
@@ -0,0 +1,327 @@
+
+
diff --git a/com.ublinux.ubl-settings-update.warning.svg b/com.ublinux.ubl-settings-update.warning.svg
new file mode 100644
index 0000000..9a90dba
--- /dev/null
+++ b/com.ublinux.ubl-settings-update.warning.svg
@@ -0,0 +1,55 @@
+
+
diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c
index 27b104c..0ee60fc 100644
--- a/source/ubl-settings-update.c
+++ b/source/ubl-settings-update.c
@@ -1,19 +1,186 @@
#include
#include "ubl-settings-update.h"
-int main(int argc, char *argv[]){
- gtk_init(&argc,&argv);
+void on_repo_window_open(GtkWidget *self){
+ repo_window *widgets=setup_repo_window();
+}
+
+void on_close_subwindow(GtkWidget *self){
+ gtk_widget_destroy(gtk_widget_get_toplevel(self));
+}
+void on_about(){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
- GtkWidget *window=GTK_WIDGET(gtk_builder_get_object(builder,"MainWindow"));
- GtkWidget *Header = yon_gtk_builder_get_widget(builder,"boxColor");
- GtkWidget *Image = yon_gtk_builder_get_widget(builder,"HeadBackgroundImage");
- GtkWidget *Overlay = yon_gtk_builder_get_widget(builder,"HeadOverlay");
- GtkWidget *UnderNoteOverlay = yon_gtk_builder_get_widget(builder,"UnderNoteOverlay");
- GtkWidget *checkForUpdatesButton = yon_gtk_builder_get_widget(builder,"checkForUpdatesButton");
+ GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
+ GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
+ gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window),_("UBlinux System update"));
+ gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application);
+ gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window),_("Project Home Page"));
+ gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),_("Update configurator"));
+ gtk_widget_set_visible(hideButtonBox,0);
+ gtk_widget_show(window);
+}
+
+repo_window *setup_repo_window(){
+ repo_window *widgets=NULL;
+ widgets=malloc(sizeof(repo_window));
+ widgets->builder= gtk_builder_new_from_file(glade_path);
+ widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
+
+ widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoTypeLabel");
+ widgets->repoTypeEntry=yon_gtk_builder_get_widget(widgets->builder, "repoTypeEntry");
+ widgets->repoURILabel=yon_gtk_builder_get_widget(widgets->builder, "repoURILabel");
+ widgets->repoURIMeanLabel=yon_gtk_builder_get_widget(widgets->builder, "repoURIMeanLabel");
+ widgets->repoDistributionLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionLabel");
+ widgets->repoDistributionMeanLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionMeanLabel");
+ widgets->repoSectionsLabel=yon_gtk_builder_get_widget(widgets->builder, "repoSectionsLabel");
+ widgets->repoSectionsMeanlabel=yon_gtk_builder_get_widget(widgets->builder, "repoSectionsMeanlabel");
+
+ widgets->repoCancelButton=yon_gtk_builder_get_widget(widgets->builder, "repoCancelButton");
+ widgets->repoAcceptButton=yon_gtk_builder_get_widget(widgets->builder, "repoAcceptButton");
+
+ g_signal_connect(G_OBJECT(widgets->repoCancelButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
+ g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
+
+
+ gtk_window_set_title(GTK_WINDOW(widgets->window),_("System update"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->repoTypeLabel),_("Type: "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoURILabel),_("URI: "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoURIMeanLabel),_(" "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoDistributionLabel),_("Distribution: "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoDistributionMeanLabel),_(" "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoSectionsLabel),_("Sections: "));
+ gtk_label_set_text(GTK_LABEL(widgets->repoSectionsMeanlabel),_(" "));
+
+ gtk_button_set_label(GTK_BUTTON(widgets->repoCancelButton),_("Cancel"));
+ gtk_button_set_label(GTK_BUTTON(widgets->repoAcceptButton),_("Save"));
+ gtk_widget_show_all(widgets->window);
+}
+
+main_window *setup_window(){
+ main_window *widgets=NULL;
+ widgets=malloc(sizeof(main_window));
+ widgets->builder=gtk_builder_new_from_file(glade_path);
+ widgets->window=yon_gtk_builder_get_widget(widgets->builder,"MainWindow");
+
+ widgets->HeaderTopic=yon_gtk_builder_get_widget(widgets->builder,"headerTopic");
+
+ widgets->generalSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"generalTabLabel");
+ widgets->repositoriesSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"repositoriesTabLabel");
+ widgets->extraSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"extraTabLabel");
+
+ widgets->generalSettingsHideNoUpdatesCheck=yon_gtk_builder_get_widget(widgets->builder,"hideIfNoUpdatesCheck");
+ widgets->generalSettingsUpdatesCheckFreqLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqLabel");
+ widgets->generalSettingsUpdatesCheckFreqCombo=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqCombo");
+ widgets->generalSettingsDownloadAutoCheck=yon_gtk_builder_get_widget(widgets->builder,"DownloadAutoCheck");
+
+ widgets->repositoriesSettingsActivateAURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateAURCheck");
+ widgets->repositoriesSettingsActivateUBURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateUBURCheck");
+ widgets->repositoriesSettingsMoveUpButton=yon_gtk_builder_get_widget(widgets->builder,"MoveUpButton");
+ widgets->repositoriesSettingsMoveDownButton=yon_gtk_builder_get_widget(widgets->builder,"MoveDownButton");
+ widgets->repositoriesSettingsCreateButton=yon_gtk_builder_get_widget(widgets->builder,"CreateButton");
+ widgets->repositoriesSettingsEditButton=yon_gtk_builder_get_widget(widgets->builder,"EditButton");
+ widgets->repositoriesSettingsDeleteButton=yon_gtk_builder_get_widget(widgets->builder,"DeleteButton");
+ widgets->repositoriesSettingsRepositoriesTreeView=yon_gtk_builder_get_widget(widgets->builder,"RepositoriesTreeView");
+ widgets->repositoriesSettingsEnabledColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"EnabledColumn"));
+ widgets->repositoriesSettingsURIColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"URIColumn"));
+
+ widgets->extraSettingsPackageManagerLabel=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerLabel");
+ widgets->extraSettingsPackageManagerEntry=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerEntry");
+ widgets->extraSettingsUpdateCommandLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandLabel");
+ widgets->extraSettingsUpdateCommandEntry=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandEntry");
+ widgets->extraSettingsCacheCleanlabel=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandLabel");
+ widgets->extraSettingsCacheCleanEntry=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandEntry");
+ widgets->extraSettingsLaunchPackageManagerButton=yon_gtk_builder_get_widget(widgets->builder,"LaunchPackageManagerButton");
+
+ widgets->headerLoadConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerLoadConfigLabel");
+ widgets->headerLoadGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadGlobalConfigurationMenuItem");
+ widgets->headerLoadLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadLocalConfigurationMenuItem");
+
+ widgets->headerSaveConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerSaveConfigLabel");
+ widgets->headerSaveGlobalLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalLocalConfigurationMenuItem");
+ widgets->headerSaveGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalConfigurationMenuItem");
+ widgets->headerSaveLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveLocalConfigurationMenuItem");
+
+ widgets->headerDocumentationButton=yon_gtk_builder_get_widget(widgets->builder,"DocumentationMenuItem");
+ widgets->headerAboutButton=yon_gtk_builder_get_widget(widgets->builder,"AboutMenuItem");
+
+ widgets->mainCheckForUpdatesButton=yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
+
+ gtk_window_set_title(GTK_WINDOW(widgets->window),_("System update"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->HeaderTopic),_("System update"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->generalSettingsTabLabel),_("General"));
+ gtk_label_set_text(GTK_LABEL(widgets->repositoriesSettingsTabLabel),_("Repositories"));
+ gtk_label_set_text(GTK_LABEL(widgets->extraSettingsTabLabel),_("Extra"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->generalSettingsUpdatesCheckFreqLabel),_("Update checking frequency"));
+ gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsHideNoUpdatesCheck),_("Hide icon of no updates found"));
+ gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsDownloadAutoCheck),_("Download updates automatically"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),_("Every 1 hour"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),_("Every 2 hours"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),_("Every 3 hours"));
+
+ gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateAURCheck),_("Activate AUR"));
+ gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateUBURCheck),_("Activate UBUR"));
+ gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsCreateButton),_("Create"));
+ gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsEditButton),_("Edit"));
+ gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsDeleteButton),_("Delete"));
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsEnabledColumn),_("Enabled"));
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsURIColumn),_("URI"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->extraSettingsPackageManagerLabel),_("Package manager: "));
+ gtk_label_set_text(GTK_LABEL(widgets->extraSettingsUpdateCommandLabel),_("Update command: "));
+ gtk_label_set_text(GTK_LABEL(widgets->extraSettingsCacheCleanlabel),_("Cache clean command: "));
+ gtk_button_set_label(GTK_BUTTON(widgets->extraSettingsLaunchPackageManagerButton),_("Launch package manager"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->headerLoadConfigLabel),_("load"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadGlobalConfigButton),_("Load global configuration"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadLocalConfigButton),_("Load local configuration"));
+
+ gtk_label_set_text(GTK_LABEL(widgets->headerSaveConfigLabel),_("Save"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalLocalConfigButton),_("Save to global and local configuration"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalConfigButton),_("Save to global configuration"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveLocalConfigButton),_("Save to local configuration"));
+
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerDocumentationButton),_("Documentation"));
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerAboutButton),_("About"));
+
+ gtk_button_set_label(GTK_BUTTON(widgets->mainCheckForUpdatesButton),_("Check for updates"));
+
+
+
+
+ GtkWidget *Header = yon_gtk_builder_get_widget(widgets->builder,"boxColor");
+ GtkWidget *Image = yon_gtk_builder_get_widget(widgets->builder,"HeadBackgroundImage");
+ GtkWidget *Overlay = yon_gtk_builder_get_widget(widgets->builder,"HeadOverlay");
+
+ GtkWidget *UnderNoteOverlay = yon_gtk_builder_get_widget(widgets->builder,"UnderNoteOverlay");
+ GtkWidget *checkForUpdatesButton = yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
+ GtkWidget *headLabel = yon_gtk_builder_get_widget(widgets->builder,"headLabel");
yon_ubl_header_setup(Overlay,Header,Image,image_path);
gtk_overlay_add_overlay(GTK_OVERLAY(UnderNoteOverlay),checkForUpdatesButton);
- gtk_widget_show_all(window);
+
+ gtk_label_set_text(GTK_LABEL(headLabel),_("System update parameter configuration"));
+ gtk_widget_show_all(widgets->window);
+
+
+ g_signal_connect(G_OBJECT(widgets->repositoriesSettingsCreateButton), "clicked", G_CALLBACK(on_repo_window_open), NULL);
+ g_signal_connect(G_OBJECT(widgets->repositoriesSettingsEditButton), "clicked", G_CALLBACK(on_repo_window_open), NULL);
+
+ g_signal_connect(G_OBJECT(widgets->headerAboutButton), "activate", G_CALLBACK(on_about), NULL);
+
+ g_signal_connect(G_OBJECT(widgets->window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
+}
+
+
+int main(int argc, char *argv[]){
+ local=setlocale(LC_ALL, "");
+ textdomain (LocaleName);
+ gtk_init(&argc,&argv);
+ main_window *widgets = setup_window();
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_path(css,CssPath,NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h
index 2112054..e5129f0 100644
--- a/source/ubl-settings-update.h
+++ b/source/ubl-settings-update.h
@@ -1,5 +1,92 @@
#include "ubl-utils.h"
+#include
+#include
+#include
+#include
+#include
+
+#define _(String) gettext(String)
+
#define glade_path "/usr/share/ubl-settings-update/ui/ubl-settings-update.glade"
-#define image_path "/usr/share/ubl-settings-update/ui/ubl-settings-update-banner.png"
-#define CssPath "/usr/share/ubl-settings-update/css/ubl-settings-update.css"
\ No newline at end of file
+#define image_path "/usr/share/ubl-settings-update/images/ubl-settings-update-banner.png"
+#define CssPath "/usr/share/ubl-settings-update/css/ubl-settings-update.css"
+
+#define LocalePath "/usr/share/locale"
+#define LocaleName "ubl-settings-update"
+typedef char* string;
+string version_application = "1.2";
+
+char *local;
+
+typedef struct {
+ GtkWidget *window;
+ GtkBuilder *builder;
+
+ GtkWidget *HeaderTopic;
+
+ GtkWidget *generalSettingsTabLabel;
+ GtkWidget *repositoriesSettingsTabLabel;
+ GtkWidget *extraSettingsTabLabel;
+
+ GtkWidget *generalSettingsHideNoUpdatesCheck;
+ GtkWidget *generalSettingsUpdatesCheckFreqLabel;
+ GtkWidget *generalSettingsUpdatesCheckFreqCombo;
+ GtkWidget *generalSettingsDownloadAutoCheck;
+
+ GtkWidget *repositoriesSettingsActivateAURCheck;
+ GtkWidget *repositoriesSettingsActivateUBURCheck;
+ GtkWidget *repositoriesSettingsMoveUpButton;
+ GtkWidget *repositoriesSettingsMoveDownButton;
+ GtkWidget *repositoriesSettingsCreateButton;
+ GtkWidget *repositoriesSettingsEditButton;
+ GtkWidget *repositoriesSettingsDeleteButton;
+ GtkWidget *repositoriesSettingsRepositoriesTreeView;
+ GtkTreeViewColumn *repositoriesSettingsEnabledColumn;
+ GtkTreeViewColumn *repositoriesSettingsURIColumn;
+
+ GtkWidget *extraSettingsPackageManagerLabel;
+ GtkWidget *extraSettingsPackageManagerEntry;
+ GtkWidget *extraSettingsUpdateCommandLabel;
+ GtkWidget *extraSettingsUpdateCommandEntry;
+ GtkWidget *extraSettingsCacheCleanlabel;
+ GtkWidget *extraSettingsCacheCleanEntry;
+ GtkWidget *extraSettingsLaunchPackageManagerButton;
+
+ GtkWidget *headerLoadConfigLabel;
+ GtkWidget *headerLoadGlobalConfigButton;
+ GtkWidget *headerLoadLocalConfigButton;
+
+ GtkWidget *headerSaveConfigLabel;
+ GtkWidget *headerSaveGlobalLocalConfigButton;
+ GtkWidget *headerSaveGlobalConfigButton;
+ GtkWidget *headerSaveLocalConfigButton;
+
+ GtkWidget *headerDocumentationButton;
+ GtkWidget *headerAboutButton;
+
+ GtkWidget *mainCheckForUpdatesButton;
+
+} main_window;
+
+typedef struct {
+ GtkWidget *window;
+ GtkBuilder *builder;
+
+ GtkWidget *repoTypeLabel;
+ GtkWidget *repoTypeEntry;
+ GtkWidget *repoURILabel;
+ GtkWidget *repoURIMeanLabel;
+ GtkWidget *repoDistributionLabel;
+ GtkWidget *repoDistributionMeanLabel;
+ GtkWidget *repoSectionsLabel;
+ GtkWidget *repoSectionsMeanlabel;
+
+ GtkWidget *repoCancelButton;
+ GtkWidget *repoAcceptButton;
+} repo_window;
+
+void on_repo_window_open(GtkWidget *self);
+
+main_window *setup_window();
+repo_window *setup_repo_window();
\ No newline at end of file
diff --git a/ubl-settings-update.glade b/ubl-settings-update.glade
index 3054889..2cfba93 100644
--- a/ubl-settings-update.glade
+++ b/ubl-settings-update.glade
@@ -31,7 +31,7 @@
vertical
2
-
-
-
-
-
+
False
System update
+ True
com.ublinux.ubl-settings-update
@@ -176,7 +175,7 @@
False
5
-
+
True
False
Type:
@@ -189,7 +188,7 @@
-
+
True
True
@@ -218,7 +217,7 @@
False
5
-
+
True
False
URI:
@@ -231,7 +230,7 @@
-
+
True
False
0
@@ -255,7 +254,7 @@
False
5
-
+
True
False
Distribution:
@@ -268,7 +267,7 @@
-
+
True
False
0
@@ -292,7 +291,7 @@
False
5
-
+
True
False
Sections:
@@ -305,7 +304,7 @@
-
+
True
False
0
@@ -352,7 +351,7 @@
5
True
-
+
Cancel
True
True
@@ -366,7 +365,7 @@
-
+
Save
True
True
@@ -400,10 +399,10 @@
-
-
-
-
+
+
+
+
@@ -438,14 +437,14 @@
True
False
-
-