parent
c9b36c023c
commit
f91d15ede4
@ -0,0 +1,120 @@
|
||||
#include "ubl-settings-manager.h"
|
||||
|
||||
typedef struct {
|
||||
GtkWidget *Window;
|
||||
GtkWidget *StatusBox;
|
||||
GtkWidget *SectionsBox;
|
||||
GtkWidget *NameEntry;
|
||||
GtkWidget *CategoriesEntry;
|
||||
GtkWidget *ClearButton;
|
||||
GtkWidget *AddButton;
|
||||
GtkWidget *CancelButton;
|
||||
GtkWidget *SaveButton;
|
||||
// section_struct *sections;
|
||||
} settings_section_window;
|
||||
|
||||
typedef struct {
|
||||
GtkWidget *SectionBox;
|
||||
GtkWidget *NameEntry;
|
||||
GtkWidget *CategoriesEntry;
|
||||
GtkWidget *RemoveButton;
|
||||
// GtkWidget *AcceptButton;
|
||||
} section_struct;
|
||||
|
||||
void on_section_remove(GtkWidget *,section_struct *section);
|
||||
void on_section_add(GtkWidget *,settings_section_window *window);
|
||||
void on_section_clear(GtkWidget *,settings_section_window *window);
|
||||
void on_sections_save(GtkWidget *,settings_section_window *window);
|
||||
section_struct *yon_section_new();
|
||||
settings_section_window *yon_section_window_new();
|
||||
|
||||
|
||||
void on_section_remove(GtkWidget *,section_struct *section){
|
||||
gtk_widget_destroy(section->SectionBox);
|
||||
}
|
||||
|
||||
section_struct *yon_section_new(){
|
||||
section_struct *section = malloc(sizeof(section_struct));
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_section_element);
|
||||
section->SectionBox = yon_gtk_builder_get_widget(builder,"SectionBox");
|
||||
section->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
|
||||
section->CategoriesEntry = yon_gtk_builder_get_widget(builder,"CategoriesEntry");
|
||||
section->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
|
||||
// section->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
|
||||
|
||||
g_object_set_data(G_OBJECT(section->SectionBox),"section",section);
|
||||
|
||||
g_signal_connect(G_OBJECT(section->RemoveButton),"clicked",G_CALLBACK(on_section_remove),section);
|
||||
return section;
|
||||
}
|
||||
|
||||
void on_section_add(GtkWidget *,settings_section_window *window){
|
||||
const char *cat_name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
|
||||
const char *cat_categories = gtk_entry_get_text(GTK_ENTRY(window->CategoriesEntry));
|
||||
if (yon_char_is_empty(cat_name)){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
yon_ubl_status_highlight_incorrect(window->NameEntry);
|
||||
return;
|
||||
}
|
||||
section_struct *section = yon_section_new();
|
||||
gtk_box_pack_start(GTK_BOX(window->SectionsBox),section->SectionBox,0,0,0);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(section->NameEntry),cat_name);
|
||||
gtk_entry_set_text(GTK_ENTRY(section->CategoriesEntry),cat_categories);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),"");
|
||||
gtk_entry_set_text(GTK_ENTRY(window->CategoriesEntry),"");
|
||||
}
|
||||
|
||||
void on_section_clear(GtkWidget *,settings_section_window *window){
|
||||
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),"");
|
||||
gtk_entry_set_text(GTK_ENTRY(window->CategoriesEntry),"");
|
||||
}
|
||||
|
||||
void on_sections_save(GtkWidget *,settings_section_window *window){
|
||||
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
|
||||
gsize size;
|
||||
config_str parameters = yon_window_config_get_section(sections_section,&size);
|
||||
for (gsize i=0;i<size;i++){
|
||||
yon_window_config_erase_instant_parameter(parameters[i],sections_section);
|
||||
}
|
||||
GList *list = gtk_container_get_children(GTK_CONTAINER(window->SectionsBox));
|
||||
GList *iter;
|
||||
for (iter=list;iter;iter=iter->next){
|
||||
section_struct *section = g_object_get_data(G_OBJECT(iter->data),"section");
|
||||
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(section->NameEntry));
|
||||
char *categories = (char*)gtk_entry_get_text(GTK_ENTRY(section->CategoriesEntry));
|
||||
yon_window_config_add_instant_parameter(name,sections_section,categories,YON_TYPE_STRING);
|
||||
}
|
||||
on_subwindow_close(window->Window);
|
||||
yon_interface_update(widgets);
|
||||
|
||||
}
|
||||
|
||||
settings_section_window *yon_section_window_new(){
|
||||
settings_section_window *window = malloc(sizeof(settings_section_window));
|
||||
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_settings_section);
|
||||
window->Window = yon_gtk_builder_get_widget(builder,"Window");
|
||||
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
||||
window->SectionsBox = yon_gtk_builder_get_widget(builder,"SectionsBox");
|
||||
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
|
||||
window->CategoriesEntry = yon_gtk_builder_get_widget(builder,"CategoriesEntry");
|
||||
window->ClearButton = yon_gtk_builder_get_widget(builder,"ClearButton");
|
||||
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
|
||||
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
||||
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
|
||||
|
||||
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
||||
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_sections_save),window);
|
||||
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_section_add),window);
|
||||
g_signal_connect(G_OBJECT(window->ClearButton),"clicked",G_CALLBACK(on_section_clear),window);
|
||||
return window;
|
||||
}
|
||||
|
||||
void yon_section_window_open(GtkWidget *, settings_window *settings){
|
||||
main_window *widgets = g_object_get_data(G_OBJECT(settings->Window),"widgets");
|
||||
settings_section_window *window = yon_section_window_new();
|
||||
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
|
||||
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(settings->Window),TITLE_LABEL,icon_path,"sections_window");
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.38.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.24"/>
|
||||
<object class="GtkBox" id="SectionBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="NameEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="width-chars">15</property>
|
||||
<property name="truncate-multiline">True</property>
|
||||
<property name="caps-lock-warning">False</property>
|
||||
<property name="input-purpose">name</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="CategoriesEntry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="width-chars">25</property>
|
||||
<property name="caps-lock-warning">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="RemoveButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="image">image2</property>
|
||||
<style>
|
||||
<class name="thin"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="pixel-size">16</property>
|
||||
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.trash-symbolic</property>
|
||||
</object>
|
||||
</interface>
|
||||
Loading…
Reference in new issue