parent
1361ae18dd
commit
8f6936eb08
|
|
@ -0,0 +1,135 @@
|
||||
#include "ubinstall-gtk.h"
|
||||
|
||||
|
||||
void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets){
|
||||
GtkTreeIter iter;
|
||||
int status;
|
||||
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->StartupList),&iter,path);
|
||||
gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupList),&iter,0,&status,-1);
|
||||
gtk_list_store_set(widgets->StartupList,&iter,0,!status,-1);
|
||||
}
|
||||
|
||||
void on_startup_services_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->StartupServicesTree)),&model,&iter)){
|
||||
int status;
|
||||
gtk_tree_model_get(model,&iter,4,&status,-1);
|
||||
if (status){
|
||||
gtk_widget_set_sensitive(widgets->StartupServicesEditButton,1);
|
||||
gtk_widget_set_sensitive(widgets->StartupServicesRemoveButton,1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
gtk_widget_set_sensitive(widgets->StartupServicesEditButton,0);
|
||||
gtk_widget_set_sensitive(widgets->StartupServicesRemoveButton,0);
|
||||
}
|
||||
|
||||
void on_startup_services_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->StartupServicesTree)),&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_services_setup(main_window *widgets){
|
||||
int size;
|
||||
config_str services = yon_resource_open_file(services_list_path,&size);
|
||||
for (int i=1;i<size;i++){
|
||||
int parsed_size;
|
||||
config_str parsed = yon_char_parse(services[i],&parsed_size,";");
|
||||
if (parsed_size&&!yon_char_is_empty(parsed[0])){
|
||||
GtkTreeIter iter;
|
||||
gtk_list_store_append(widgets->StartupList,&iter);
|
||||
gtk_list_store_set(widgets->StartupList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(parsed[2],""),-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void on_startup_add_accept(GtkWidget *self, main_window *widgets){
|
||||
startup_service_window *window = g_object_get_data(G_OBJECT(self),"startup_service_window");
|
||||
const char *unit = gtk_entry_get_text(GTK_ENTRY(window->UnitEntry));
|
||||
const char *service = gtk_entry_get_text(GTK_ENTRY(window->ServiceEntry));
|
||||
const char *description = gtk_entry_get_text(GTK_ENTRY(window->DescriptionEntry));
|
||||
if (yon_char_is_empty(service)){
|
||||
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->StartupList,&iter);
|
||||
gtk_list_store_set(widgets->StartupList,&iter,1,unit,2,service,3,description,4,1,-1);
|
||||
on_subwindow_close(self);
|
||||
}
|
||||
|
||||
void on_startup_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_service_window *window = g_object_get_data(G_OBJECT(self),"startup_service_window");
|
||||
const char *unit = gtk_entry_get_text(GTK_ENTRY(window->UnitEntry));
|
||||
const char *service = gtk_entry_get_text(GTK_ENTRY(window->ServiceEntry));
|
||||
const char *description = gtk_entry_get_text(GTK_ENTRY(window->DescriptionEntry));
|
||||
if (yon_char_is_empty(service)){
|
||||
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->StartupList,&iter,1,unit,2,service,3,description,4,1,-1);
|
||||
}
|
||||
on_subwindow_close(self);
|
||||
}
|
||||
|
||||
startup_service_window *yon_startup_service_window_new(){
|
||||
startup_service_window *window = new(startup_service_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");
|
||||
|
||||
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
||||
g_object_set_data(G_OBJECT(window->AcceptButton),"startup_service_window",window);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
void on_startup_service_add(GtkWidget *, main_window *widgets){
|
||||
startup_service_window *window = yon_startup_service_window_new();
|
||||
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_ADD_TITLE_LABEL,icon_path,"service_add_window");
|
||||
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_add_accept),widgets);
|
||||
gtk_widget_show(window->Window);
|
||||
}
|
||||
|
||||
void on_startup_service_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 *service, *unit, *description;
|
||||
int status;
|
||||
gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupList),&iter,1,&unit,2,&service,3,&description,4,&status,-1);
|
||||
if (status){
|
||||
startup_service_window *window = yon_startup_service_window_new();
|
||||
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_EDIT_TITLE_LABEL,icon_path,"service_add_window");
|
||||
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_edit_accept),widgets);
|
||||
gtk_entry_set_text(GTK_ENTRY(window->UnitEntry),unit);
|
||||
gtk_entry_set_text(GTK_ENTRY(window->ServiceEntry),service);
|
||||
gtk_entry_set_text(GTK_ENTRY(window->DescriptionEntry),description);
|
||||
gtk_widget_show(window->Window);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,219 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.38.2 -->
|
||||
<interface domain="ubinstall-gtk">
|
||||
<requires lib="gtk+" version="3.24"/>
|
||||
<!-- interface-css-provider-path ubinstall-gtk.css -->
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-symbolic</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
|
||||
</object>
|
||||
<object class="GtkWindow" id="MainWindow">
|
||||
<property name="width-request">500</property>
|
||||
<property name="height-request">250</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="modal">True</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="StatusBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-top">5</property>
|
||||
<property name="margin-bottom">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Unit:</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="UnitEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Service:</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="ServiceEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Description:</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="DescriptionEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="titlebar">
|
||||
<object class="GtkHeaderBar">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child type="title">
|
||||
<object class="GtkLabel" id="headerTopic">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">5</property>
|
||||
<property name="margin-right">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-bottom">2</property>
|
||||
<property name="label" translatable="yes">UBLinux installation</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="CancelButton">
|
||||
<property name="label" translatable="yes">Cancel</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="image">image1</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="AcceptButton">
|
||||
<property name="label" translatable="yes">Accept</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="image">image2</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkSizeGroup">
|
||||
<widgets>
|
||||
<widget name="label1"/>
|
||||
<widget name="label2"/>
|
||||
<widget name="label3"/>
|
||||
</widgets>
|
||||
</object>
|
||||
</interface>
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue