From 79b7c2afbd6d459e209eb49a2c33f31e6a736303 Mon Sep 17 00:00:00 2001 From: YanTheKaller Date: Tue, 31 Jan 2023 06:52:55 +0000 Subject: [PATCH] Implemented caution message if trying to switch theme on low resolution --- ubl-settings-manager.c | 156 ++++++++++++++++------------------------- ubl-settings-manager.h | 2 + 2 files changed, 63 insertions(+), 95 deletions(-) diff --git a/ubl-settings-manager.c b/ubl-settings-manager.c index 162aa6e..c6585ec 100644 --- a/ubl-settings-manager.c +++ b/ubl-settings-manager.c @@ -53,7 +53,7 @@ void on_plug_removed(GtkSocket* self, actionWidgets *widgets){ gtk_widget_set_vexpand(widgets->socketplace,0); gtk_widget_set_vexpand(widgets->HideWhileLaunch,1); //printf("Plug has been removed!\n\n\n"); - + } void on_Item_activated(GtkIconView* self, GtkTreePath* path, actionWidgets *applist){ @@ -88,6 +88,12 @@ void on_gnome_Item_activated(GtkIconView* self, GtkTreePath* path, actionWidgets gtk_widget_destroy(applist->socket); } applist->socket=create_socket(applist); + char *socket_id=malloc(sizeof(gtk_socket_get_id(GTK_SOCKET(applist->socket)))/sizeof(int)); + sprintf(socket_id,"%d",gtk_socket_get_id(GTK_SOCKET(applist->socket))); + socket_id=yon_char_get_augumented("../ubl-info/ubl-info-bin --socket-id=",socket_id); + socket_id=yon_char_get_augumented(socket_id," &"); + system(socket_id); + gtk_tree_model_get_iter(gtk_icon_view_get_model(self),&iter,path); gtk_tree_model_get(gtk_icon_view_get_model(self),&iter,1,&name,-1); @@ -212,6 +218,7 @@ int on_settings_accept(GtkWidget *button, dictionary **widgetsDs){ load_apps_with_clear(IV,widgets->applist,widgets->appssize); } g_key_file_save_to_file(gfile,ConfigPath,NULL); + //gtk_widget_hide(widgets->SettingsWindow); gtk_window_present(GTK_WINDOW(widgets->SettingsWindow)); }; @@ -279,6 +286,10 @@ int on_settings_cancel(GtkWidget *button, actionWidgets *widgets){ setup_config(); }; +void on_caution_understand(GtkWidget *button,actionWidgets *widgets){ + gtk_widget_hide(widgets->CautionWindow); +} + void on_section_settings_open(GtkButton* self,dictionary *cWidgets){ actionWidgets *widgets=(actionWidgets*)cWidgets->data; if (widgets->SettingsSections==NULL){ @@ -558,28 +569,37 @@ void on_resized (GtkWidget *window, GdkEventConfigure *event, dictionary *widget if (main_config.windowWidth<1024){ if (stld==0){ stld=1; - char *details=gtk_label_get_label(GTK_LABEL(widgets->GnomeInfoDetailsLabel)); - //gtk_window_set_resizable(GTK_WINDOW(window),0); - // yon_switch_theme(&widgetsD,yon_dictionary_find(&widgetsD,"Main")); - details[12]='0'; - details[13]='9'; - printf("SSSSS\n"); - gtk_label_set_markup(GTK_LABEL(widgets->GnomeInfoDetailsLabel),details); - GtkWidget *logo = gtk_builder_get_object(widgets->builder,"GnomeInfoLogo"); - gtk_image_set_from_pixbuf(GTK_IMAGE(logo),gdk_pixbuf_new_from_file_at_scale(LogoPath,256,256,1,NULL)); - // gtk_window_resize(GTK_WINDOW(widgets->window),main_config.windowWidth,main_config.windowHeight); - // gtk_widget_hide(widgets->window); + main_config.WindowTheme=0; + // char *details=gtk_label_get_label(GTK_LABEL(widgets->GnomeInfoDetailsLabel)); + gtk_window_set_resizable(GTK_WINDOW(window),0); + gtk_window_get_position(GTK_WINDOW(window),&main_config.windowPosX,&main_config.windowPosY); + gtk_window_get_size(GTK_WINDOW(window),&main_config.windowWidth,&main_config.windowHeight); + yon_switch_theme(&widgetsD,yon_dictionary_find(&widgetsD,"Main")); + main_config.iconsize=24; + + for (dictionary *dict=widgets->ICSys->first;dict!=NULL;dict=dict->next){ + IVGraphicals *IV=(IVGraphicals*)dict->data; + load_apps_with_clear(IV,widgets->applist,widgets->appssize); + } + // details[12]='0'; + // details[13]='9'; + // printf("SSSSS\n"); + // gtk_label_set_markup(GTK_LABEL(widgets->GnomeInfoDetailsLabel),details); + // GtkWidget *logo = gtk_builder_get_object(widgets->builder,"GnomeInfoLogo"); + // gtk_image_set_from_pixbuf(GTK_IMAGE(logo),gdk_pixbuf_new_from_file_at_scale(LogoPath,256,256,1,NULL)); + gtk_window_resize(GTK_WINDOW(widgets->window),main_config.windowWidth,main_config.windowHeight); + gtk_widget_hide(widgets->window); } }else { if (stld==1){ stld=0; - char *details=gtk_label_get_label(GTK_LABEL(widgets->GnomeInfoDetailsLabel)); - details[12]='1'; - details[13]='2'; - printf("SSSSS\n"); - gtk_label_set_markup(GTK_LABEL(widgets->GnomeInfoDetailsLabel),details); - GtkWidget *logo = gtk_builder_get_object(widgets->builder,"GnomeInfoLogo"); - gtk_image_set_from_pixbuf(GTK_IMAGE(logo),gdk_pixbuf_new_from_file_at_scale(LogoPath,512,512,1,NULL)); + // char *details=gtk_label_get_label(GTK_LABEL(widgets->GnomeInfoDetailsLabel)); + // details[12]='1'; + // details[13]='2'; + // printf("SSSSS\n"); + // gtk_label_set_markup(GTK_LABEL(widgets->GnomeInfoDetailsLabel),details); + // GtkWidget *logo = gtk_builder_get_object(widgets->builder,"GnomeInfoLogo"); + // gtk_image_set_from_pixbuf(GTK_IMAGE(logo),gdk_pixbuf_new_from_file_at_scale(LogoPath,512,512,1,NULL)); } } @@ -588,12 +608,8 @@ void on_resized (GtkWidget *window, GdkEventConfigure *event, dictionary *widget void on_resized_done (GtkWidget *window, GdkEvent *event, dictionary *widgetsD){ actionWidgets *widgets=(actionWidgets*)widgetsD->data; if (event->type==GDK_CONFIGURE){ - int x,y; - gtk_window_get_size(GTK_WINDOW(window),&x,&y); - if (x<1024&&y<720){ + if (stld==1){ gtk_window_set_resizable(GTK_WINDOW(window),1); - printf("AAAAA\n"); - // gtk_widget_hide(widgets->window); } } } @@ -963,27 +979,6 @@ int setup_config(){ } }; - -int yon_theme_copy_undependent(actionWidgets *source, actionWidgets *dest){ - dest->DialogOpenDocumentation=source->DialogOpenDocumentation; - dest->CancelHelpButton=source->CancelHelpButton; - dest->ReadHelpButton=source->ReadHelpButton; - dest->AlwaysOpenDocumentation=source->AlwaysOpenDocumentation; - dest->helpHeader=source->helpHeader; - dest->helpText=source->helpText; - dest->appSettings=source->appSettings; - dest->SettingsWindow=source->SettingsWindow; - dest->settingsSizeSlider=source->settingsSizeSlider; - dest->settingsThemeChooser=source->settingsThemeChooser; - dest->settingsCancel=source->settingsCancel; - dest->settingsAccept=source->settingsAccept; - dest->MenuItemSettings=source->MenuItemSettings; - dest->MenuItemDocumentation=source->MenuItemDocumentation; - dest->LabelTitle=source->LabelTitle; - dest->settingsSubmenuLabelSize=source->settingsSubmenuLabelSize; - dest->settingsSubmenuLabelTheme=source->settingsSubmenuLabelTheme; -}; - char *yon_cut(char *source, int size, int startpos){ char *cut=NULL; cut=malloc(size+1); @@ -1132,7 +1127,9 @@ dictionary *yon_section_new(dictionary *section, char *section_name, char *categ void yon_icv_resize_item(dictionary *icdict, GtkWidget *paned){ for (dictionary *dict=icdict->first;dict!=NULL;dict=dict->next){ IVGraphicals *icv=(IVGraphicals*)dict->data; - gtk_icon_view_set_item_width(GTK_ICON_VIEW(icv->IV),gtk_paned_get_position(GTK_PANED(paned))); + int width=gtk_paned_get_position(GTK_PANED(paned)); + if (width < 115) width=115; + gtk_icon_view_set_item_width(GTK_ICON_VIEW(icv->IV),width); } } @@ -1184,6 +1181,7 @@ void yon_switch_theme(dictionary **dict, dictionary *newone){ gdk_monitor_get_workarea(gdk_display_get_monitor(gdk_screen_get_display(gtk_window_get_screen(GTK_WINDOW(widgets->window))),0),&workarea); gtk_window_get_size(GTK_WINDOW(widgets->window),&x, &y); if (workarea.width<1024&&workarea.height<720||x<1024&&y<720){ + gtk_widget_show(widgets->CautionWindow); dictionary *founddict=yon_dictionary_find(dict,"Main"); dct=yon_dictionary_find(dict,"Gnome"); yon_switch_theme(&dct,founddict); @@ -1192,6 +1190,7 @@ void yon_switch_theme(dictionary **dict, dictionary *newone){ main_config.WindowTheme=0; main_config.curThemeName="Main"; gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->settingsThemeChooser),0); + gtk_window_present(GTK_WINDOW(widgets->CautionWindow)); } else{ main_config.WindowTheme=1; main_config.curThemeName="Gnome"; @@ -1374,63 +1373,25 @@ dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *them curWidgets->GnomeInfoDetailsLabel=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,yon_char_get_augumented(theme_id,"InfoDetailsLabel"))); curWidgets->SettingsSections=NULL; gtk_style_context_add_class(gtk_widget_get_style_context(curWidgets->icvpack),"iconview"); - - - if (curWidgets->GnomeInfoLabel!=NULL&&curWidgets->GnomeInfoDetailsLabel!=NULL){ - FILE *fp; - char path[1035]; - char *loc=setlocale(LC_ALL,NULL); - if (strcmp(loc,"ru_RU.UTF-8")==0) - fp = popen("screenfetch -N -n | sed 's/OS:/Система:/' | sed 's/Kernel:/Ядро:/g' | sed 's/Uptime:/Время работы:/g' | \ - sed 's/Packages:/Установлено пакетов:/g' | sed 's/Shell:/Оболочка:/g' | sed 's/Resolution:/Разрешение:/g' | sed 's/DE:/Среда рабочего стола:/g' | \ - sed 's/WM:/Оконный менеджер:/g' | sed 's/WM Theme:/Тема оконного менеджера:/g' | sed 's/GTK Theme:/Тема GTK:/g' | sed 's/Icon Theme:/Тема значков:/g' | sed 's/Font:/Шрифт:/g' | \ - sed 's/Disk:/Диск:/g' | sed 's/RAM:/Оперативная память:/g'", "r"); - else fp = popen("screenfetch -n -w -N", "r"); - if (fp == NULL) { - printf("Failed to run command\n" ); - exit(1); - } - char *line=NULL; - line=""; - char *prevline=""; - char *pth; - char *preph=""; - line=""; - while (fgets(path, sizeof(path),fp)!=NULL){ - - line=strstr(path,": "); - if (line!=NULL){ - int size=strlen(path)-strlen(line); - pth=yon_cut(path,size,0); - pth=yon_char_get_augumented("",pth); - pth=yon_char_get_augumented(pth,""); - line=yon_char_get_augumented(pth,line); - } else { - line=path; - pth="\n"; - line=yon_char_get_augumented(pth,line); - } - prevline=yon_char_get_augumented(prevline,line); - - }; - prevline=yon_char_get_augumented(prevline,"");; - gtk_label_set_text(GTK_LABEL(curWidgets->GnomeInfoDetailsLabel),prevline); - // gtk_label_set_text(GTK_LABEL(curWidgets->GnomeInfoLabel),pth); - gtk_label_set_markup (GTK_LABEL(curWidgets->GnomeInfoDetailsLabel),prevline);; - // gtk_label_set_markup (GTK_LABEL(curWidgets->GnomeInfoLabel), pth);; - - } + curWidgets->socket=GTK_WIDGET(create_socket(curWidgets)); + if (curWidgets->ButtonBackToMain!=NULL) gtk_button_set_label(GTK_BUTTON(curWidgets->ButtonBackToMain),_("Back to settings")); gtk_window_set_title(GTK_WINDOW(curWidgets->window),"UBLinux Settings Manager"); g_signal_connect(G_OBJECT(curWidgets->window), "destroy", G_CALLBACK(gtk_main_quit), NULL); if (curWidgets->GnomePaned!=NULL){ + gtk_paned_set_position(GTK_PANED(curWidgets->GnomePaned),main_config.iconSegmentSize); g_signal_connect(G_OBJECT(curWidgets->GnomePaned), "notify::position", G_CALLBACK(on_paned_move), curWidgets); } if (strcmp(theme_id,"Gnome")==0){ + char *socket_id=malloc(sizeof(gtk_socket_get_id(GTK_SOCKET(curWidgets->socket)))/sizeof(int)); + sprintf(socket_id,"%d",gtk_socket_get_id(GTK_SOCKET(curWidgets->socket))); + socket_id=yon_char_get_augumented("../ubl-info/ubl-info-bin --socket-id=",socket_id); + socket_id=yon_char_get_augumented(socket_id," &"); + system(socket_id); g_signal_connect(G_OBJECT(curWidgets->window), "configure-event", G_CALLBACK(on_resized), widgets); - // g_signal_connect(G_OBJECT(curWidgets->window), "event-after", G_CALLBACK(on_resized_done), widgets); + g_signal_connect(G_OBJECT(curWidgets->window), "event-after", G_CALLBACK(on_resized_done), widgets); } if (curWidgets->ButtonBackToMain!=NULL) @@ -1466,9 +1427,11 @@ dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *them curWidgets->SectionSettingsClearEntryButton=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,"SectionSettingsClearEntryButton")); curWidgets->SectionSettingsSaveButton=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,"SectionSettingsSaveButton")); curWidgets->SectionSettingsCloseButton=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,"SectionSettingsCloseButton")); + curWidgets->CautionWindow=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,"CautionWindow")); + curWidgets->CautionUnderstandButton=GTK_WIDGET(gtk_builder_get_object(curWidgets->builder,"CautionUnderstandButton")); curWidgets->applist=applist; curWidgets->appssize=appsize; - curWidgets->socket=GTK_WIDGET(create_socket(curWidgets)); + gtk_widget_set_size_request(curWidgets->window,800,600); gtk_window_resize(GTK_WINDOW(curWidgets->window),main_config.windowWidth,main_config.windowHeight); gtk_window_set_icon_from_file(GTK_WINDOW(curWidgets->window),AppIconPath,NULL); @@ -1489,7 +1452,8 @@ dictionary *yon_theme_new(dictionary **widgetss, GtkBuilder *builder, char *them g_signal_connect(G_OBJECT(curWidgets->SectionSettingsClearEntryButton), "clicked", G_CALLBACK(on_sections_new_clear), curWidgets); g_signal_connect(G_OBJECT(curWidgets->SectionSettingsCloseButton), "clicked", G_CALLBACK(on_sections_close), curWidgets); g_signal_connect(G_OBJECT(curWidgets->SectionSettingsSaveButton), "clicked", G_CALLBACK(on_sections_save), curWidgets); - }// сделать функцию для сигналов окна секций, секции для настроек в словарь + g_signal_connect(G_OBJECT(curWidgets->CautionUnderstandButton), "clicked", G_CALLBACK(on_caution_understand), curWidgets); + } gtk_label_set_text(GTK_LABEL(curWidgets->LabelTitle),_("UBLinux Settings Manager")); gtk_label_set_text(GTK_LABEL(curWidgets->settingsSubmenuLabelSize),_("Icon size")); gtk_label_set_text(GTK_LABEL(curWidgets->settingsSubmenuLabelTheme),_("Window theme")); @@ -1529,6 +1493,7 @@ int main(int argc, char *argv[]){ load_apps((IVGraphicals*)cur->data,widg->applist,widg->appssize); } yon_show_icon_views(widg->ICSys,widg); + yon_icv_resize_item(widg->ICSys,widg->GnomePaned); theme="Main"; main_config.WindowTheme=0; widgets->next=yon_dictionary_create_empty(); @@ -1570,6 +1535,7 @@ int main(int argc, char *argv[]){ } yon_show_icon_views(widg->ICSys,widg); main_config.WindowTheme=0; + yon_icv_resize_item(widg->ICSys,widg->GnomePaned); } diff --git a/ubl-settings-manager.h b/ubl-settings-manager.h index db726a0..9367e91 100644 --- a/ubl-settings-manager.h +++ b/ubl-settings-manager.h @@ -128,6 +128,8 @@ typedef struct { GtkWidget *SectionSettingsSaveButton; GtkWidget *SectionSettingsCloseButton; GtkWidget *GnomeInfoDetailsLabel; + GtkWidget *CautionWindow; + GtkWidget *CautionUnderstandButton; int appssize; apps *applist; GtkWidget *icvpack;