diff --git a/applications-list.csv b/applications-list.csv new file mode 100644 index 0000000..8380b4a --- /dev/null +++ b/applications-list.csv @@ -0,0 +1,4 @@ +GROUP;APPLICATION;DESCRIPTION +Plank dock-panel;plank.desktop;Universal macOS-style dock-panel +Conky monitor;conky.desktop;System monitor +Hostalive;check-hostalive.desktop;Check the internet is alive \ No newline at end of file diff --git a/gresource.xml b/gresource.xml index 8c9575b..eaee9ad 100644 --- a/gresource.xml +++ b/gresource.xml @@ -46,5 +46,6 @@ filesystems-format-list.csv groups-list.csv vfs-list.csv + applications-list.csv \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index a1b596f..5bf8753 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -67,6 +67,7 @@ set(DEPENDFILES ../filesystems-format-list.csv ../groups-list.csv ../vfs-list.csv + ../applications-list.csv ../icons-builtin/install_type_custom_normal.png ../icons-builtin/install_type_data_only_normal.png ../icons-builtin/install_type_fast_normal.png @@ -136,6 +137,7 @@ set(SOURCE_FILES ubinstall-gtk-kernel.c ubinstall-gtk-language.c ubinstall-gtk-config-hub.c + ubinstall-gtk-startup-apps.c ubinstall-gtk.h ubl-strings.h ) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 2f46b4f..30f8463 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -54,7 +54,6 @@ int yon_os_components_save(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *iter; int size; - int overall_num=0; config_str modules = NULL; for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); @@ -63,12 +62,9 @@ int yon_os_components_save(main_window *widgets){ if (status){ yon_char_parsed_add_or_create_if_exists(modules,&size,target); } - overall_num++; } g_list_free(list); - if (size&&size==overall_num){ - yon_config_register(modules_parameter,modules_parameter_command,"auto"); - } else if (size){ + if (size){ char *final = yon_char_parsed_to_string(modules,size,","); yon_config_register(modules_parameter,modules_parameter_command,final); } else { diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index 4e3d292..1aef884 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -178,6 +178,7 @@ void yon_configuration_hub_init(main_window *widgets){ yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),KEYBOARD_TAB_LABEL,"com.ublinux.ubl-settings-keyboard",YON_PAGE_KEYBOARD); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),USERS_TAB_LABEL,"com.ublinux.ubl-settings-usergroups",YON_PAGE_USERS); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),STARTUP_LABEL,"com.ublinux.ubl-settings-info",YON_PAGE_STARTUP); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),STARTUP_APP_LABEL,"com.ublinux.ubl-settings-info",YON_PAGE_APP_STARTUP); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),BOOTLOADER_LABEL,"com.ublinux.ubl-settings-bootloader",YON_PAGE_BOOTLOADER); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),NETWORK_LABEL,"com.ublinux.ubl-settings-multiseat",YON_PAGE_NETWORK); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_LABEL,kernel_icon_path,YON_PAGE_KERNEL); diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index c20e618..9201f23 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -463,7 +463,12 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){ yon_char_parsed_free(fs_types,size); char *parameter = config(part_fs_type_parameter); if (!yon_char_is_empty(parameter)){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(fs_type_combo),parameter); + if (!gtk_combo_box_set_active_id(GTK_COMBO_BOX(fs_type_combo),parameter)){ + if(gtk_combo_box_get_has_entry(GTK_COMBO_BOX(fs_type_combo))){ + gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(fs_type_combo))),parameter); + } + } + } else { gtk_combo_box_set_active(GTK_COMBO_BOX(fs_type_combo),0); } diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 414e2a8..d937eea 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -18,7 +18,7 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_REGION: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_LANGUAGE: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_KEYBOARD: return YON_PAGE_CONFIG_HUB; break; - case YON_PAGE_USERS: return YON_PAGE_CONFIG_HUB; break; + case YON_PAGE_USERS: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_STARTUP: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_APP_STARTUP: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_BOOTLOADER: return YON_PAGE_CONFIG_HUB; break; diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c new file mode 100644 index 0000000..26e8d45 --- /dev/null +++ b/source/ubinstall-gtk-startup-apps.c @@ -0,0 +1,218 @@ +#include "ubinstall-gtk.h" + +void on_srartup_apps_toggled(GtkWidget *, char *path, main_window *widgets){ + GtkTreeIter iter; + int status; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,path); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,0,&status,-1); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,!status,-1); +} + +void on_startup_apps_selection_changed(GtkWidget *,main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupAppsTree)),&model,&iter)){ + int status; + gtk_tree_model_get(model,&iter,4,&status,-1); + if (status){ + gtk_widget_set_sensitive(widgets->StartupAppsEditButton,1); + gtk_widget_set_sensitive(widgets->StartupAppsRemoveButton,1); + return; + } + } + gtk_widget_set_sensitive(widgets->StartupAppsEditButton,0); + gtk_widget_set_sensitive(widgets->StartupAppsRemoveButton,0); +} + +void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupAppsTree)),&model,&iter)){ + char *unit; + int deletable; + gtk_tree_model_get(model,&iter,2,&unit,4,&deletable,-1); + if (!deletable) return; + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text = SERVICE_REMOVE_CONFIRMATION_LABEL(unit); + data->title = SERVICE_REMOVE_TITLE_LABEL; + if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ + gtk_list_store_remove(widgets->StartupList,&iter); + } + } +} + +void yon_startup_apps_setup(main_window *widgets){ + GtkTreeIter iter; + if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->StartupAppsList),&iter)){ + int size; + config_str apps = yon_resource_open_file(apps_list_path,&size); + for (int i=1;iStartupAppsList,&iter); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(parsed[2],""),-1); + } + } + } + char *startup = config(SERVICES_ENABLE_parameter); + if (!yon_char_is_empty(startup)){ + if (!strcmp(startup,"auto")){ + for_iter(GTK_TREE_MODEL(widgets->StartupAppsList),&iter){ + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,-1); + } + } else { + int parsed_size; + config_str parsed = yon_char_parse(startup,&parsed_size,","); + for_iter(GTK_TREE_MODEL(widgets->StartupAppsList),&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,2,&target,-1); + if (strstr(target,",")){ + int target_size; + config_str target_parsed = yon_char_parse(target,&target_size,","); + int found =0; + for (int i=0;i-1){ + found++; + parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); + } + } + if (found == target_size){ + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,-1); + } else { + gtk_list_store_set(widgets->StartupAppsList,&iter,0,0,-1); + } + yon_char_parsed_free(target_parsed,target_size); + } else { + int pos = yon_char_parsed_check_exist(parsed,parsed_size,target); + if (pos>-1){ + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,-1); + parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); + } else { + gtk_list_store_set(widgets->StartupAppsList,&iter,0,0,-1); + } + } + } + if (parsed_size&&parsed){ + for (int i=0;iStartupAppsList,&iter); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,2,parsed[i],-1); + } + } + yon_char_parsed_free(parsed,parsed_size); + } + } +} + +void on_startup_app_add_accept(GtkWidget *self, main_window *widgets){ + startup_app_window *window = g_object_get_data(G_OBJECT(self),"startup_app_window"); + const char *unit = gtk_entry_get_text(GTK_ENTRY(window->UnitEntry)); + const char *app = gtk_entry_get_text(GTK_ENTRY(window->ServiceEntry)); + const char *description = gtk_entry_get_text(GTK_ENTRY(window->DescriptionEntry)); + if (yon_char_is_empty(app)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->ServiceEntry); + return; + } + GtkTreeIter iter; + gtk_list_store_append(widgets->StartupAppsList,&iter); + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,1,unit,2,app,3,description,4,1,-1); + on_subwindow_close(self); +} + +void on_startup_app_edit_accept(GtkWidget *self, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupServicesTree)),&model,&iter)){ + startup_app_window *window = g_object_get_data(G_OBJECT(self),"startup_app_window"); + const char *unit = gtk_entry_get_text(GTK_ENTRY(window->UnitEntry)); + const char *app = gtk_entry_get_text(GTK_ENTRY(window->ServiceEntry)); + const char *description = gtk_entry_get_text(GTK_ENTRY(window->DescriptionEntry)); + if (yon_char_is_empty(app)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->ServiceEntry); + return; + } + gtk_list_store_set(widgets->StartupAppsList,&iter,0,1,1,unit,2,app,3,description,4,1,-1); + } + on_subwindow_close(self); +} + +startup_app_window *yon_startup_app_window_new(){ + startup_app_window *window = new(startup_app_window); + + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_service); + + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->UnitEntry = yon_gtk_builder_get_widget(builder,"UnitEntry"); + window->ServiceEntry = yon_gtk_builder_get_widget(builder,"ServiceEntry"); + window->DescriptionEntry = yon_gtk_builder_get_widget(builder,"DescriptionEntry"); + window->AppLabel = yon_gtk_builder_get_widget(builder,"AppLabel"); + window->GroupLabel = yon_gtk_builder_get_widget(builder,"GroupLabel"); + window->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); + gtk_label_set_text(GTK_LABEL(window->AppLabel),APP_LABEL); + gtk_label_set_text(GTK_LABEL(window->AppLabel),GROUP_LABEL); + + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_object_set_data(G_OBJECT(window->AcceptButton),"startup_app_window",window); + + return window; +} + +void on_startup_app_add(GtkWidget *, main_window *widgets){ + startup_app_window *window = yon_startup_app_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_ADD_TITLE_LABEL,icon_path,"app_add_window"); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_add_accept),widgets); + gtk_widget_show(window->Window); +} + +void on_startup_app_edit(GtkWidget *, main_window *widgets){ + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupServicesTree)),NULL,&iter)){ + char *app, *unit, *description; + int status; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,1,&unit,2,&app,3,&description,4,&status,-1); + if (status){ + startup_app_window *window = yon_startup_app_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_EDIT_TITLE_LABEL,icon_path,"app_add_window"); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_edit_accept),widgets); + gtk_entry_set_text(GTK_ENTRY(window->UnitEntry),unit); + gtk_entry_set_text(GTK_ENTRY(window->ServiceEntry),app); + gtk_entry_set_text(GTK_ENTRY(window->DescriptionEntry),description); + gtk_widget_show(window->Window); + } + } +} + +int yon_startup_app_save(main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->StartupList); + int size = 0; + int list_size=0; + config_str modules = NULL; + for_iter(model,&iter){ + list_size++; + char *target; + int status; + gtk_tree_model_get(model,&iter,0,&status,2,&target,-1); + if (status){ + yon_char_parsed_add_or_create_if_exists(modules,&size,target); + } + } + if (size){ + if (list_size==size){ + yon_config_register(SERVICES_ENABLE_parameter,SERVICES_ENABLE_parameter_command,"auto"); + } else { + char *final = yon_char_parsed_to_string(modules,size,","); + yon_config_register(SERVICES_ENABLE_parameter,SERVICES_ENABLE_parameter_command,final); + } + yon_char_parsed_free(modules,size); + } else { + yon_config_remove_by_key(SERVICES_ENABLE_parameter); + } + return 1; +} \ No newline at end of file diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index e847944..b6175f4 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -405,6 +405,7 @@ void on_exit_accepted(main_window *widgets){ main_config.exit_accepted=1; while(gtk_events_pending()) gtk_main_iteration(); gtk_widget_destroy(widgets->MainWindow); + gtk_main_quit(); } gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ @@ -822,6 +823,13 @@ void yon_main_window_create(main_window *widgets){ widgets->StartupServicesRemoveButton = yon_gtk_builder_get_widget(builder,"StartupServicesRemoveButton"); widgets->StartupChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StartupChosenCell")); widgets->StartupList = GTK_LIST_STORE(gtk_builder_get_object(builder,"StartupList")); + + widgets->StartupAppsTree = yon_gtk_builder_get_widget(builder,"StartupAppsTree"); + widgets->StartupAppsAddButton = yon_gtk_builder_get_widget(builder,"StartupAppsAddButton"); + widgets->StartupAppsEditButton = yon_gtk_builder_get_widget(builder,"StartupAppsEditButton"); + widgets->StartupAppsRemoveButton = yon_gtk_builder_get_widget(builder,"StartupAppsRemoveButton"); + widgets->StartupAppsChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StartupAppsChosenCell")); + widgets->StartupAppsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"StartupAppsList")); // widgets->BootloaderImage = yon_gtk_builder_get_widget(builder,"BootloaderImage"); widgets->BootloadTimerSwitch = yon_gtk_builder_get_widget(builder,"BootloadTimerSwitch"); @@ -942,7 +950,11 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets); - + + g_signal_connect(G_OBJECT(widgets->StartupAppsTree),"cursor-changed",G_CALLBACK(on_startup_apps_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsAddButton),"clicked",G_CALLBACK(on_startup_app_add),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsEditButton),"clicked",G_CALLBACK(on_startup_app_edit),widgets); + g_signal_connect(G_OBJECT(widgets->StartupAppsRemoveButton),"clicked",G_CALLBACK(on_startup_apps_remove),widgets); g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 6a48b51..ac06a20 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -77,6 +77,7 @@ #define kernel_list_path "resource:///com/ublinux/csv/kernel-list.csv" #define kernel_list_addon_path "resource:///com/ublinux/csv/kernel-list-addon.csv" #define services_list_path "resource:///com/ublinux/csv/services-list.csv" +#define apps_list_path "resource:///com/ublinux/csv/applications-list.csv" #define network_path "resource:///com/ublinux/csv/network-list.csv" #define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv" #define vfs_list_path "resource:///com/ublinux/csv/vfs-list.csv" @@ -682,6 +683,12 @@ typedef struct { GtkWidget *StartupServicesRemoveButton; GtkCellRenderer *StartupChosenCell; GtkListStore *StartupList; + GtkWidget *StartupAppsTree; + GtkWidget *StartupAppsAddButton; + GtkWidget *StartupAppsEditButton; + GtkWidget *StartupAppsRemoveButton; + GtkCellRenderer *StartupAppsChosenCell; + GtkListStore *StartupAppsList; // GtkWidget *BootloaderImage; GtkWidget *BootloadTimerSwitch; @@ -962,6 +969,19 @@ typedef struct { GtkWidget *AcceptButton; } startup_service_window; +typedef struct { + GtkWidget *Window; + GtkWidget *StatusBox; + GtkWidget *UnitEntry; + GtkWidget *ServiceEntry; + GtkWidget *DescriptionEntry; + GtkWidget *CancelButton; + GtkWidget *AcceptButton; + GtkWidget *AppLabel; + GtkWidget *GroupLabel; + GtkWidget *DescriptionLabel; +} startup_app_window; + struct pacman_struct{ main_window *widgets; const char *find_package; @@ -1403,4 +1423,15 @@ gboolean yon_software_insert(struct row_data *row_input); int yon_configuration_hub_save(main_window *widgets); int yon_packages_tab_save(main_window *widgets); gboolean on_install_slider_slide_proceed(main_window *widgets); -gboolean on_install_slider_slide(main_window *widgets); \ No newline at end of file +gboolean on_install_slider_slide(main_window *widgets); + +void on_srartup_apps_toggled(GtkWidget *, char *path, main_window *widgets); +void on_startup_apps_selection_changed(GtkWidget *,main_window *widgets); +void on_startup_apps_remove(GtkWidget *self,main_window *widgets); +void yon_startup_apps_setup(main_window *widgets); +void on_startup_app_add_accept(GtkWidget *self, main_window *widgets); +void on_startup_app_edit_accept(GtkWidget *self, main_window *widgets); +startup_app_window *yon_startup_app_window_new(); +void on_startup_app_add(GtkWidget *, main_window *widgets); +void on_startup_app_edit(GtkWidget *, main_window *widgets); +int yon_startup_app_save(main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index fe09696..716161f 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -275,11 +275,19 @@ NULL) #define PACMAN_SOFTWARE_LABEL _("Installing Packages") #define REGION_ICON_LABEL _("Location") #define STARTUP_LABEL _("Startup services") +#define STARTUP_APP_LABEL _("Autorun of services") #define BOOTLOADER_LABEL _("Boot load") #define NETWORK_LABEL _("Network") #define ENABLE_VNC_LABEL _("Enable VNC server") #define ENABLE_RDP_LABEL _("Enable RDP server") +#define APP_TITLE_LABEL _("Autorun of application") +#define APP_TITLE_INFO_LABEL _("Configuring autorun application") +#define APP_LABEL _("Application:") +#define GROUP_LABEL _("Group:") +#define APP_TABLE_LABEL _("Application") +#define GROUP_TABLE_LABEL _("Group") + // #define _LABEL _("Package:") // #define _LABEL _("Module:") // #define _LABEL _("New section at") diff --git a/ubinstall-gtk-service-window.glade b/ubinstall-gtk-service-window.glade index a369131..b10860d 100644 --- a/ubinstall-gtk-service-window.glade +++ b/ubinstall-gtk-service-window.glade @@ -1,5 +1,5 @@ - + @@ -54,7 +54,7 @@ False 5 - + True False Unit: @@ -90,7 +90,7 @@ False 5 - + True False Service: @@ -126,7 +126,7 @@ False 5 - + True False Description: @@ -211,9 +211,9 @@ - - - + + +