#include "ubl-settings-manager.h" config main_config; // int on_settings_accept(GtkWidget *button, dictionary **widgetsDs){ // if (main_config.WindowTheme==0) // main_config.curThemeName="Main"; // else if (main_config.WindowTheme==1) // main_config.curThemeName="Gnome"; // dictionary *widgetsD=yon_dictionary_find(widgetsDs,main_config.curThemeName); // main_window *widgets=(main_window*)widgetsD->data; // int theme=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->settingsThemeChooser)); // gtk_window_get_position(GTK_WINDOW(widgets->window),&main_config.windowPosX,&main_config.windowPosY); // gtk_window_get_size(GTK_WINDOW(widgets->window),&main_config.windowWidth,&main_config.windowHeight); // if (theme==0) // main_config.curThemeName="Main"; // else if (theme==1) // main_config.curThemeName="Gnome"; // if (main_config.WindowTheme!=theme){ // main_config.WindowTheme=theme; // GtkWidget *loaderWindow=GTK_WIDGET(gtk_builder_get_object(widgets->builder,"LoaderWindow")); // gtk_window_resize(GTK_WINDOW(loaderWindow),main_config.windowWidth,main_config.windowHeight); // gtk_window_move(GTK_WINDOW(loaderWindow),main_config.windowPosX,main_config.windowPosY); // gtk_widget_show(loaderWindow); // yon_switch_theme(widgetsDs,yon_dictionary_find(&widgetsD,main_config.curThemeName)); // if (widgets!=(main_window*)widgetsD->data) widgets=(main_window*)widgetsD->data; // gtk_widget_hide(loaderWindow); // gtk_window_present(GTK_WINDOW(widgets->SettingsWindow)); // } // GKeyFile *gfile=g_key_file_new(); // int sz=1,szm=1; // if (main_config.Gnomeiconsize==64) sz=4; // else if (main_config.Gnomeiconsize==48) sz=3; // else if (main_config.Gnomeiconsize==32) sz=2; // else if (main_config.Gnomeiconsize==24) sz=1; // if (main_config.Mainiconsize==64) szm=4; // else if (main_config.Mainiconsize==48) szm=3; // else if (main_config.Mainiconsize==32) szm=2; // else if (main_config.Mainiconsize==24) szm=1; // char *fromint=malloc(5); // memset(fromint,0,5); // GError *err=NULL; // char *login=getlogin(); // if (geteuid()==0){ // login=main_config.lastUser; // } else { // main_config.lastUser=login; // } // char *pth=malloc(7+strlen(UserConfigPath)+strlen(getlogin())); // sprintf(pth,"%s%s%s","/home/",getlogin(),UserConfigPath); // g_key_file_load_from_file(gfile,pth,G_KEY_FILE_NONE,&err); // if (err){ // struct stat st = {0}; // char *ptdir=malloc(36+strlen(getlogin())); // sprintf(ptdir,"%s%s%s","/home/",getlogin(),"/.config/ubl-settings-manager"); // if (stat(ptdir, &st) == -1) { // mkdir(ptdir, 0777); // } // FILE *fp; // fp=fopen(pth,"w"); // fclose(fp); // } // g_key_file_load_from_file(gfile,pth,G_KEY_FILE_NONE,&err); // if (gtk_window_is_maximized(GTK_WINDOW(widgets->window))==0){ // sprintf(fromint,"%d",main_config.windowPosX); // g_key_file_set_string(gfile,"window","WindowPosX",fromint); // sprintf(fromint,"%d",main_config.windowPosY); // g_key_file_set_string(gfile,"window","WindowPosY",fromint); // sprintf(fromint,"%d",main_config.windowWidth); // g_key_file_set_string(gfile,"window","WindowWidth",fromint); // sprintf(fromint,"%d",main_config.windowHeight); // g_key_file_set_string(gfile,"window","WindowHeight",fromint); // } // sprintf(fromint,"%d",main_config.WindowTheme); // g_key_file_set_string(gfile,"window","WindowTheme",fromint); // sprintf(fromint,"%d",sz); // g_key_file_set_string(gfile,"window","GnomeIconSize",fromint); // sprintf(fromint,"%d",szm); // g_key_file_set_string(gfile,"window","MainIconSize",fromint); // sprintf(fromint,"%d",main_config.iconSegmentSize); // g_key_file_set_string(gfile,"window","IconSegmentSize",fromint); // sprintf(fromint,"%d",(int)((float)main_config.GnomelabelSize/1000)); // g_key_file_set_string(gfile,"window","GnomeLabelSize",fromint); // sprintf(fromint,"%d",(int)((float)main_config.MainlabelSize/1000)); // g_key_file_set_string(gfile,"window","MainLabelSize",fromint); // sprintf(fromint,"%d",(int)((float)main_config.labelDensity/1000)); // g_key_file_set_string(gfile,"window","LabelDensity",fromint); // g_key_file_set_string(gfile,"window","User",login); // g_key_file_set_boolean(gfile,"window","GnomeDoubleClick",main_config.GnomeDoubleClick); // g_key_file_set_boolean(gfile,"window","MainDoubleClick",main_config.MainDoubleClick); // g_key_file_remove_group(gfile, "sections",NULL); // for (dictionary *dict=widgets->ICSys->first;dict!=NULL;dict=dict->next){ // IVGraphicals *IV=(IVGraphicals*)dict->data; // g_key_file_set_string(gfile,"sections",IV->sectionName,IV->categories); // if (main_config.changed==1){ // load_apps_with_clear(IV,widgets->applist,widgets->appssize); // } // } // main_config.changed=0; // g_key_file_save_to_file(gfile,pth,NULL); // gtk_widget_hide(widgets->SettingsWindow); // }; // void on_section_settings_open(GtkButton* self,dictionary *cWidgets){ // main_window *widgets=(main_window*)cWidgets->data; // if (main_config.SettingsSections->first->data==NULL){ // char *name=((IconSection*)main_config.sections->first->data)->section; // char *categories=((IconSection*)main_config.sections->first->data)->categories; // main_config.SettingsSections->first->data=yon_create_section_setting(name, categories); // main_config.SettingsSections->first->key=name; // yon_segments_hide(widgets); // yon_segment_show(widgets, (SectionSettingSegment*)main_config.SettingsSections->data); // for (dictionary *dct=main_config.sections->first->next;dct!=NULL;dct=dct->next){ // name=((IconSection*)dct->data)->section; // categories=((IconSection*)dct->data)->categories; // main_config.SettingsSections=yon_dictionary_create_with_data_connected(main_config.SettingsSections,name,yon_create_section_setting(name, categories)); // main_config.SettingsSections->key=name; // yon_segment_show(widgets, (SectionSettingSegment*)main_config.SettingsSections->data); // } // yon_segments_show(widgets); // } // gtk_window_present(GTK_WINDOW(widgets->SectionSettingsWindow)); // } // void on_sections_edit(GtkWidget *button, main_window *widgets){ // for (dictionary *dct=widgets->SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->ButtonEdit){ // gtk_widget_hide(segment->NameLabel); // gtk_widget_hide(segment->CategoriesLabel); // gtk_widget_show(segment->NameEntry); // gtk_widget_show(segment->CategoriesEntry); // gtk_widget_show(segment->EditButtonBox); // gtk_widget_hide(segment->DeleditBox); // gtk_widget_set_sensitive(segment->DragButtonBox,0); // } else { // gtk_widget_set_sensitive(segment->OptionBox,0); // gtk_widget_set_sensitive(segment->DragButtonBox,0); // } // } // } // }; // void on_sections_accept(GtkWidget *button, main_window *widgets){ // for (dictionary *dct=widgets->SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->EditButtonAccept){ // char *name=yon_char_get_augumented((char*)gtk_label_get_text(GTK_LABEL(segment->NameLabel)),""); // char *newname=yon_char_get_augumented((char*)gtk_entry_get_text(GTK_ENTRY(segment->NameEntry)),""); // char *newcats=yon_char_get_augumented((char*)gtk_entry_get_text(GTK_ENTRY(segment->CategoriesEntry)),""); // if (newcats[strlen(newcats)-1]!=';') // newcats=yon_char_get_augumented(newcats,";"); // gtk_label_set_text(GTK_LABEL(segment->NameLabel),gtk_entry_get_text(GTK_ENTRY(segment->NameEntry))); // gtk_label_set_text(GTK_LABEL(segment->CategoriesLabel),gtk_entry_get_text(GTK_ENTRY(segment->CategoriesEntry))); // dictionary *toedit=yon_dictionary_find(&main_config.sections,name); // toedit->key=newname; // ((IconSection*)toedit->data)->section=newname; // ((IconSection*)toedit->data)->categories=newcats; // toedit=yon_dictionary_find(&main_config.SettingsSections,name); // toedit->key=newname; // ((IconSection*)toedit->data)->section=newname; // ((IconSection*)toedit->data)->categories=newcats; // gtk_widget_show(segment->NameLabel); // gtk_widget_show(segment->CategoriesLabel); // gtk_widget_hide(segment->NameEntry); // gtk_widget_hide(segment->CategoriesEntry); // gtk_widget_hide(segment->EditButtonBox); // gtk_widget_show(segment->DeleditBox); // gtk_widget_set_sensitive(segment->DragButtonBox,1); // }else { // gtk_widget_set_sensitive(segment->OptionBox,1); // gtk_widget_set_sensitive(segment->DragButtonBox,1); // } // } // } // }; // void on_sections_cancel(GtkWidget *button, main_window *widgets){ // for (dictionary *dct=widgets->SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->EditButtonCancel){ // gtk_entry_set_text(GTK_ENTRY(segment->NameEntry),gtk_label_get_text(GTK_LABEL(segment->NameLabel))); // gtk_entry_set_text(GTK_ENTRY(segment->CategoriesEntry),gtk_label_get_text(GTK_LABEL(segment->CategoriesLabel))); // gtk_widget_show(segment->NameLabel); // gtk_widget_show(segment->CategoriesLabel); // gtk_widget_hide(segment->NameEntry); // gtk_widget_hide(segment->CategoriesEntry); // gtk_widget_hide(segment->EditButtonBox); // gtk_widget_show(segment->ButtonEdit); // gtk_widget_show(segment->DeleditBox); // gtk_widget_set_sensitive(segment->DragButtonBox,1); // }else { // gtk_widget_set_sensitive(segment->OptionBox,1); // gtk_widget_set_sensitive(segment->DragButtonBox,1); // } // } // } // }; // void on_sections_move_up(GtkWidget *button, main_window *widgets){ // for (dictionary *dct=main_config.SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->DragUpButton){ // yon_dictionary_switch_places(yon_dictionary_find(&main_config.sections,(char*)gtk_label_get_text(GTK_LABEL(segment->NameLabel))),-1); // yon_dictionary_switch_places(yon_dictionary_find(&main_config.SettingsSections,(char*)gtk_label_get_text(GTK_LABEL(segment->NameLabel))),-1); // yon_segments_hide(widgets); // yon_segments_show(widgets); // } // } // } // }; // void on_sections_move_down(GtkWidget *button, main_window *widgets){ // for (dictionary *dct=main_config.SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->DragDownButton){ // yon_dictionary_switch_places(yon_dictionary_find(&main_config.sections,(char*)gtk_label_get_text(GTK_LABEL(segment->NameLabel))),1); // yon_dictionary_switch_places(yon_dictionary_find(&main_config.SettingsSections,(char*)gtk_label_get_text(GTK_LABEL(segment->NameLabel))),1); // yon_segments_hide(widgets); // yon_segments_show(widgets); // } // } // } // }; // void on_sections_add(GtkWidget *button, main_window *widgets){ // char *category_name = yon_char_get_augumented((char*)gtk_entry_get_text(GTK_ENTRY(widgets->SectionSettingAddNameEntry)),""); // if (strcmp(category_name,"")!=0){ // char *category_categories=yon_char_get_augumented((char*)gtk_entry_get_text(GTK_ENTRY(widgets->SectionSettingAddCategoriesEntry)),""); // if (category_categories[strlen(category_categories)-1]!=';') // category_categories=yon_char_get_augumented(category_categories,";"); // SectionSettingSegment *segment=yon_create_section_setting(category_name,category_categories); // dictionary *newsection = yon_dictionary_get_last(main_config.SettingsSections); // newsection=yon_dictionary_create_with_data_connected(newsection,category_name,segment); // dictionary *newsec=yon_dictionary_create_empty(); // newsec=yon_section_new(newsec,category_name,category_categories); // main_config.sections=yon_dictionary_create_with_data_connected(main_config.sections,category_name,newsec->data); // gtk_entry_set_text(GTK_ENTRY(widgets->SectionSettingAddNameEntry),""); // gtk_entry_set_text(GTK_ENTRY(widgets->SectionSettingAddCategoriesEntry),""); // yon_segment_show(widgets, segment); // yon_segments_hide(widgets); // yon_segments_show(widgets); // } // } // void on_sections_new_clear(GtkWidget *button, main_window *widgets){ // gtk_entry_set_text(GTK_ENTRY(widgets->SectionSettingAddNameEntry),""); // gtk_entry_set_text(GTK_ENTRY(widgets->SectionSettingAddCategoriesEntry),""); // } // void on_sections_close(GtkWidget *button, main_window *widgets){ // gtk_widget_hide(widgets->SectionSettingsWindow); // } // void on_sections_save(GtkWidget *button, dictionary *widgetsD){ // int temptheme=main_config.WindowTheme; // for (dictionary *dict=widgetsD->first;dict!=NULL;dict=dict->next){ // main_window *widgets=(main_window*)dict->data; // if (strcmp(dict->key,"Gnome")==0) main_config.WindowTheme=1; // else main_config.WindowTheme=0; // for (dictionary *ICSys=widgets->ICSys->first;ICSys!=NULL;ICSys=ICSys->next){ // gtk_container_remove(GTK_CONTAINER(widgets->icvpack),((IVGraphicals*)ICSys->data)->Box); // } // widgets->ICSys=yon_create_icon_section_list(main_config.sections); // for (dictionary *cur=widgets->ICSys->first; cur!=NULL;cur=cur->next){ // load_apps((IVGraphicals*)cur->data,widgets->applist,widgets->appssize); // } // yon_show_icon_views(widgets->ICSys,widgets); // hide_if_unfound(widgetsD); // if (main_config.WindowTheme==1) // yon_icv_resize_item(dict,widgets->GnomePaned); // } // main_config.WindowTheme=temptheme; // } // void on_section_delete(GtkWidget *button, main_window *widgets){ // gtk_widget_destroy(gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(button))))); // for (dictionary *dct=main_config.SettingsSections->first;dct!=NULL;dct=dct->next){ // SectionSettingSegment *segment=(SectionSettingSegment*)dct->data; // if (segment!=NULL){ // if (button==segment->ButtonDelete){ // main_config.sections=yon_dictionary_rip(yon_dictionary_find(&main_config.sections, dct->key)); // main_config.SettingsSections=yon_dictionary_rip(yon_dictionary_find(&main_config.SettingsSections, dct->key)); // break; // } // } // } // } // void on_resized (GtkWidget *window, GdkEventConfigure *event, dictionary *widgetsD){ // main_window *widgets=(main_window*)widgetsD->data; // if (gtk_window_is_maximized(GTK_WINDOW(widgets->window))==0){ // main_config.fullscreen=0; // gtk_window_get_size(GTK_WINDOW(window),&main_config.windowWidth,&main_config.windowHeight); // gtk_window_get_position(GTK_WINDOW(window),&main_config.windowPosX,&main_config.windowPosY); // } // else // main_config.fullscreen=1; // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->Revealer),!gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->Revealer))); // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->Revealer),gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->Revealer))); // } // void on_resized_done (GtkWidget *window, GdkEvent *event, dictionary *widgetsD){ // main_window *widgets=(main_window*)widgetsD->data; // if (event->type==GDK_CONFIGURE){ // if (stld==1){ // gtk_window_set_resizable(GTK_WINDOW(window),1); // } // } // } void on_reveal_banner(GtkWidget *, main_window *widgets){ if (gtk_revealer_get_reveal_child(GTK_REVEALER(widgets->BannerRevealer))){ gtk_revealer_set_transition_type(GTK_REVEALER(widgets->BannerRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT); gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),0); gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),GTK_ARROW_RIGHT); int banner = 1; yon_window_config_add_instant_parameter(hide_banner_parameter,"Settings",&banner,YON_TYPE_BOOLEAN); } else { gtk_revealer_set_transition_type(GTK_REVEALER(widgets->BannerRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT); gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),1); gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),GTK_ARROW_LEFT); int banner = 0; yon_window_config_add_instant_parameter(hide_banner_parameter,"Settings",&banner,YON_TYPE_BOOLEAN); } } // void on_double_click_changed(GtkWidget *Switch, gboolean state, dictionary *widgetsD){ // *main_config.currentDoubleClick=state; // update_double_clicks(widgetsD); // } // int py_launch_app(char *name,char *args){ // char *path=malloc(strlen("python ./")+strlen(name)+6+strlen(args)); // sprintf(path,"python ./%s.py %s &",name,args); // pthread_t thread_id; // thread_output *thread=malloc(sizeof(thread_output)); // thread->command=path; // thread->exitcode=malloc(sizeof(int)); // pthread_create(&thread_id, NULL, (void*)launch, thread); // return *thread->exitcode; // }; // int reload_list(IVGraphicals *section){ // gtk_icon_view_set_model(GTK_ICON_VIEW(section->IV),GTK_TREE_MODEL(section->LV)); // } // void update_double_clicks(dictionary *widgetsD){ // for (dictionary *dict=widgetsD->first;dict!=NULL;dict=dict->next){ // main_window *widgets=(main_window*)dict->data; // for (dictionary *ivdct=widgets->ICSys->first;ivdct!=NULL;ivdct=ivdct->next){ // IVGraphicals *IV=(IVGraphicals*)ivdct->data; // if (strcmp(dict->key,"Gnome")==0){ // gtk_icon_view_set_activate_on_single_click(GTK_ICON_VIEW(IV->IV),!main_config.GnomeDoubleClick); // } else{ // gtk_icon_view_set_activate_on_single_click(GTK_ICON_VIEW(IV->IV),!main_config.MainDoubleClick); // } // } // } // } // int load_apps(IVGraphicals *section, apps *applist, int size){ // int catstofind=sizeof(section->categories)/sizeof(char*); // int i=0,sz=0; // for (int i=0;icategories)==1){ // GError *err=NULL; // GtkTreeIter iter; // gtk_list_store_append(section->LV,&iter); // int sz= yon_get_icon_size(*main_config.currentThemeIconSize)+3; // if (sz<34) sz=34; // GtkIconTheme *icthm=gtk_icon_theme_get_default(); // GdkPixbuf *pixbuf=gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, applist[i].Icon,yon_get_icon_size(*main_config.currentThemeIconSize),1,GTK_ICON_LOOKUP_FORCE_SIZE),NULL); // GtkTreePath *pth = gtk_tree_model_get_path(GTK_TREE_MODEL(section->LV),&iter); // gtk_list_store_set(section->LV,&iter,0,applist[i].Name,1,0.0,2,0.5, 3, sz+5, 4, pixbuf, 5,yon_get_icon_size(*main_config.currentThemeIconSize)+10, -1); // int cols = gtk_icon_view_get_columns(GTK_ICON_VIEW(section->IV)); // gtk_icon_view_set_columns(GTK_ICON_VIEW(section->IV), -1); // gtk_icon_view_set_columns(GTK_ICON_VIEW(section->IV), cols); // } // } // gtk_icon_view_set_model(GTK_ICON_VIEW(section->IV),GTK_TREE_MODEL(section->LV)); // }; // int load_apps_with_clear(IVGraphicals *section, apps *applist, int size){ // gtk_list_store_clear(section->LV); // load_apps(section,applist,size); // }; // int hide_if_unfound(dictionary *widgetsD){ // for (dictionary *widgetsDc=widgetsD->first;widgetsDc!=NULL;widgetsDc=widgetsDc->next){ // main_window *widgets=(main_window*)widgetsDc->data; // for (dictionary *icvd=widgets->ICSys->first;icvd!=NULL;icvd=icvd->next){ // IVGraphicals *icv=icvd->data; // GtkTreeIter iter; // if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(icv->LV),&iter)==0){ // gtk_widget_hide(icv->Box); // gtk_widget_hide(GTK_WIDGET(icv->sep)); // } // } // } // } void config_init(){ main_config.sections=NULL; main_config.SettingsSections=NULL; main_config.double_click=0; main_config.apps_icon_size=24; main_config.labelDensity=0; main_config.themes = g_hash_table_new(g_str_hash,g_str_equal); yon_theme_init(); }; void yon_config_update(){ if (!yon_window_config_get_parameter("Setings",double_click_parameter,&main_config.double_click,YON_TYPE_INT)){ main_config.double_click=0; } if (!yon_window_config_get_parameter("Setings",icon_size_parameter,&main_config.apps_icon_size,YON_TYPE_INT)){ main_config.apps_icon_size=24; } } int yon_char_parsed_compare(const void *a, const void *b){ const config_str str_a = (const config_str)a; const config_str str_b = (const config_str)b; return strcmp(*str_a,*str_b); } void on_back_clicked(GtkWidget *, GtkWidget *socket){ gtk_widget_destroy(socket); } void on_plug_connected(GtkSocket *self, main_window *widgets){ gtk_widget_show(widgets->BackButton); gtk_widget_hide(widgets->SettingsButton); g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_back_clicked),self); } void on_plug_disconnected(GtkSocket *self, main_window *widgets){ gtk_widget_hide(widgets->BackButton); gtk_widget_show(widgets->SettingsButton); g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->BackButton),G_CALLBACK(on_back_clicked),self); } GtkSocket *yon_sockets_init(GtkBox *socketBox){ GtkWidget *main_socket = NULL; GList *list = gtk_container_get_children(GTK_CONTAINER(main_config.widgets->SaveSocketBox)); if (list){ gtk_widget_destroy(list->data); g_list_free(list); } list = gtk_container_get_children(GTK_CONTAINER(main_config.widgets->LoadSocketBox)); if (list){ gtk_widget_destroy(list->data); g_list_free(list); } list = gtk_container_get_children(GTK_CONTAINER(socketBox)); if (list){ gtk_widget_destroy(list->data); g_list_free(list); } main_socket = gtk_socket_new(); main_config.widgets->SaveSocket = gtk_socket_new(); main_config.widgets->LoadSocket = gtk_socket_new(); gtk_widget_show(main_config.widgets->SaveSocket); gtk_widget_show(main_config.widgets->LoadSocket); gtk_widget_show(main_socket); gtk_box_pack_start(GTK_BOX(socketBox),main_socket,1,1,0); gtk_box_pack_start(GTK_BOX(main_config.widgets->SaveSocketBox),main_config.widgets->SaveSocket,0,0,0); gtk_box_pack_start(GTK_BOX(main_config.widgets->LoadSocketBox),main_config.widgets->LoadSocket,0,0,0); g_signal_connect(G_OBJECT(main_socket),"plug_added",G_CALLBACK(on_plug_connected),main_config.widgets); g_signal_connect(G_OBJECT(main_socket),"destroy",G_CALLBACK(on_plug_disconnected),main_config.widgets); return GTK_SOCKET(main_socket); } char *yon_get_save_socket(){ long socket_id = (guint)gtk_socket_get_id(GTK_SOCKET(main_config.widgets->SaveSocket)); if (socket_id){ return yon_char_from_long(socket_id); } return NULL; } char *yon_get_load_socket(){ long socket_id = (guint)gtk_socket_get_id(GTK_SOCKET(main_config.widgets->LoadSocket)); if (socket_id){ return yon_char_from_long(socket_id); } return NULL; } void confugure_setings_window(main_window *widgets){ } void yon_interface_update(main_window *widgets){ if (main_config.sections) { yon_dictionary_free_all(main_config.sections,free); main_config.sections = NULL; } gsize size; config_str section_settings = yon_window_config_get_section("Sections",&size); if (size){ for (gsize i=0;iname = yon_char_new(section_settings[i]); char *categories = NULL; yon_window_config_get_parameter("Sections",cur_section->name,&categories,YON_TYPE_STRING); cur_section->categories = yon_char_parse(categories,&cur_section->categories_size,";"); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } } else { { app_section *cur_section = yon_app_section_new(); cur_section->name = yon_char_new("Personal"); cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-PersonalSettings;",&cur_section->categories_size,";"); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } { app_section *cur_section = yon_app_section_new(); cur_section->name = yon_char_new("Hardware"); cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-HardwareSettings;",&cur_section->categories_size,";"); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } { app_section *cur_section = yon_app_section_new(); cur_section->name = yon_char_new("System"); cur_section->categories = yon_char_parse("X-UBL-SettingsManager;X-UBL-SystemSettings;",&cur_section->categories_size,";"); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } { app_section *cur_section = yon_app_section_new(); cur_section->name = yon_char_new("Misc"); cur_section->categories = yon_char_parsed_new(&cur_section->categories_size,"",NULL); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } } widgets->current_theme = yon_theme_update(widgets); widgets->current_theme->list_update_func(widgets->current_theme); } main_window *yon_main_window_setup(){ main_window *widgets = malloc(sizeof(main_window)); main_config.widgets=widgets; GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); widgets->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); widgets->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel"); widgets->ThemeBox = yon_gtk_builder_get_widget(builder,"ThemeBox"); widgets->SocketBox = yon_gtk_builder_get_widget(builder,"SocketBox"); widgets->BackButton = yon_gtk_builder_get_widget(builder,"BackButton"); widgets->SettingsButton = yon_gtk_builder_get_widget(builder,"SettingsButton"); widgets->BannerImage = yon_gtk_builder_get_widget(builder,"BannerImage"); widgets->BannerRevealer = yon_gtk_builder_get_widget(builder,"BannerRevealer"); widgets->BannerButton = yon_gtk_builder_get_widget(builder,"BannerButton"); widgets->BannerArrow = yon_gtk_builder_get_widget(builder,"BannerArrow"); widgets->SaveSocketBox = yon_gtk_builder_get_widget(builder,"SaveSocketBox"); widgets->LoadSocketBox = yon_gtk_builder_get_widget(builder,"LoadSocketBox"); widgets->MainMenuItemSettings = yon_gtk_builder_get_widget(builder,"MainMenuItemSettings"); widgets->MainMenuItemAbout = yon_gtk_builder_get_widget(builder,"MainMenuItemAbout"); widgets->MainMenuItemDocumentation = yon_gtk_builder_get_widget(builder,"MainMenuItemDocumentation"); yon_apps_init(); g_signal_connect(G_OBJECT(widgets->MainMenuItemSettings),"activate",G_CALLBACK(on_settings_open),widgets); g_signal_connect(G_OBJECT(widgets->BannerButton),"clicked",G_CALLBACK(on_reveal_banner),widgets); yon_window_config_setup(GTK_WINDOW(widgets->Window)); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_load(path); free(path); { int banner_hidden = 0; yon_window_config_get_parameter("Settings",hide_banner_parameter, &banner_hidden,YON_TYPE_BOOLEAN); gtk_revealer_set_transition_type(GTK_REVEALER(widgets->BannerRevealer),!banner_hidden?GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT:GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT); gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->BannerRevealer),!banner_hidden); gtk_menu_button_set_direction(GTK_MENU_BUTTON(widgets->BannerArrow),!banner_hidden?GTK_ARROW_LEFT:GTK_ARROW_RIGHT); } gtk_widget_show(widgets->Window); yon_interface_update(widgets); return widgets; } int main(int argc, char *argv[]){ setlocale(LC_ALL, ""); textdomain (LocaleName); static struct option long_options[] = { {"lock-settings", 0, 0, 'l'}, {"help", 0, 0, 'h'}, {"version", 0, 0, 'v'}, }; int socket_find; int option_index=0; for (int i=0;i