From 7a8fb102808514438278f02cb788a02430ee3506 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 10:39:34 +0600 Subject: [PATCH 01/26] Description fixes --- ubl-settings-video.pot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index a3ed2fb..6c39565 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -10,9 +10,9 @@ msgstr "" "Report-Msgid-Bugs-To: info@ublinux.com\n" "POT-Creation-Date: 2023-05-10 15:53+0600\n" "PO-Revision-Date: 2023-01-01 00:00+0600\n" -"Last-Translator: UBLinux Team \n" -"Language-Team: UBLinux Team \n" -"Language: Russian\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -- 2.35.1 From 20210d866fa3fcb160029acbb77b78cdd0c6dbc6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 14:27:25 +0600 Subject: [PATCH 02/26] Fixed bug, caused crash when trying to launch program without updated package databases --- com.ublinux.ubl-settings-video.amd-logo.svg | 78 ++++++- com.ublinux.ubl-settings-video.intel-logo.svg | 44 +++- ...ublinux.ubl-settings-video.nvidia-logo.svg | 44 +++- com.ublinux.ubl-settings-video.video-card.svg | 214 +++++++++++------- source/ubl-settings-video-strings.h | 3 +- source/ubl-settings-video.c | 41 +++- source/ubl-settings-video.h | 2 + source/ubl-utils.c | 92 -------- ubl-settings-video.glade | 29 +-- video-drivers.csv | 16 +- 10 files changed, 344 insertions(+), 219 deletions(-) diff --git a/com.ublinux.ubl-settings-video.amd-logo.svg b/com.ublinux.ubl-settings-video.amd-logo.svg index c75c6d2..b8a741c 100644 --- a/com.ublinux.ubl-settings-video.amd-logo.svg +++ b/com.ublinux.ubl-settings-video.amd-logo.svg @@ -19,7 +19,44 @@ xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + id="defs10"> + + + + + + + + AMD icon - @@ -53,4 +86,35 @@ + + + + + + + + + + + diff --git a/com.ublinux.ubl-settings-video.intel-logo.svg b/com.ublinux.ubl-settings-video.intel-logo.svg index fa4fcb2..a704324 100644 --- a/com.ublinux.ubl-settings-video.intel-logo.svg +++ b/com.ublinux.ubl-settings-video.intel-logo.svg @@ -16,7 +16,44 @@ xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> + id="defs10"> + + + + + + + + + style="stroke-width:0.165814;filter:url(#filter3075)" + transform="matrix(0.84740862,0,0,0.84740862,4.882924,4.8829241)" /> diff --git a/com.ublinux.ubl-settings-video.nvidia-logo.svg b/com.ublinux.ubl-settings-video.nvidia-logo.svg index d4f2d8b..755bf1e 100644 --- a/com.ublinux.ubl-settings-video.nvidia-logo.svg +++ b/com.ublinux.ubl-settings-video.nvidia-logo.svg @@ -17,7 +17,44 @@ xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> + id="defs12"> + + + + + + + + generated by pstoedit version:3.44 from NVBadge_2D.eps + transform="matrix(0.06760249,0,0,0.06760249,35.173187,-8.514446)" + style="filter:url(#filter2175)"> diff --git a/com.ublinux.ubl-settings-video.video-card.svg b/com.ublinux.ubl-settings-video.video-card.svg index 7c30d8b..7a7601b 100644 --- a/com.ublinux.ubl-settings-video.video-card.svg +++ b/com.ublinux.ubl-settings-video.video-card.svg @@ -14,7 +14,36 @@ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> + inkscape:current-layer="layer2" /> + @@ -53,53 +83,68 @@ + inkscape:groupmode="layer" + id="layer1" + inkscape:label="Layer 1" + style="display:none"> + style="fill:#6c797a" + d="M 24.389,38.655 C 22.629,36.623 21.415,33.659 21.094,30.279 21.091,30.254 21.089,30.229 21.086,30.204 21.035,29.645 21,29.079 21,28.5 c 0,-0.579 0.035,-1.145 0.086,-1.704 0.003,-0.025 0.005,-0.05 0.008,-0.075 0.321,-3.38 1.535,-6.344 3.295,-8.376 0.781,-1.046 1.67,-2.005 2.667,-2.845 H 17 c -4.971,0 -9,5.82 -9,13 0,7.18 4.029,13 9,13 h 10.057 c -0.998,-0.84 -1.886,-1.8 -2.668,-2.845 z" + id="path24" /> - + style="fill:#cbd4d8" + d="M 4,7.5 H 1 c -0.553,0 -1,0.447 -1,1 0,0.553 0.447,1 1,1 h 2 v 41 c 0,0.553 0.447,1 1,1 0.553,0 1,-0.447 1,-1 V 8.5 C 5,7.947 4.553,7.5 4,7.5 Z" + id="path58" /> diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index 3693de7..6df2e43 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -37,7 +37,7 @@ #define HYBRID_GRAPHICS_LABEL _("Hybrid graphics") #define FIX_GAP_LABEL _("Fix frame gap (nVidia)") #define EXTRA_LABEL _("Extra") -#define TITLE_LABEL _("UBlinux Video Configuration") +#define TITLE_LABEL _("UBLinux Video Configuration") #define LOAD_LABEL _("Load") #define SAVE_LABEL _("Save") #define ON_LABEL _("On") @@ -60,6 +60,7 @@ #define CANCEL_LABEL _("Cancel") #define ACCEPT_LABEL _("Accept") #define DONT_USE_LABEL _("Don't use") +#define PROPRIETARY_LOADING_LABEL _("Driver list is currently loading...") #define INFORMATION_LABEL _("Information") #define DRIVERS_LABEL _("Drivers") diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 9b223b3..8c62f7a 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -488,6 +488,17 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){ } } +void on_proprietary_get(GtkWidget *notebook, GtkWidget *page, int pagen, gpointer data){ + if (pagen==1){ + GtkTreeIter iter; + if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(videoconfig.list),&iter)){ + pthread_t tid; + pthread_create(&tid,NULL,(void*)yon_proprieary_get,NULL); + } + } + +} + void on_monitor_configure(GtkWidget *self,monitor_window *window){ if(window&&window->config){ monitor_edit_window *monitors = new(monitor_edit_window); @@ -594,7 +605,7 @@ void on_about() GtkWidget *hideButtonBox = yon_gtk_builder_get_widget(builder, "buttonBoxHide"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window), _("UBlinux Video Configuration")); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), version_application); - gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Progect Home Page")); + gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Project Home Page")); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window), _("Videocard and monitor configuration manager")); gtk_widget_set_visible(hideButtonBox, 0); gtk_widget_show(window); @@ -611,6 +622,7 @@ void yon_monitor_window_update(monitor_edit_window *window){ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),PARAMETER_DEFAULT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),"60"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),"75"); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo),0); found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationPositionPortCombo, yon_dictionary_get_data(window->config,monitorconfig*)->position_port); if (found==-1) found=0; @@ -917,6 +929,11 @@ void on_config_fill_interface(widgets_dict *widgets) * [EN] */ dictionary *yon_proprieary_get(){ + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); videoconfig.proprietary=NULL; int drivers_size=0; config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size); @@ -936,6 +953,12 @@ dictionary *yon_proprieary_get(){ else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); } } + yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=""; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); } @@ -950,7 +973,7 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ int size=0; config_str str = yon_char_parse((char*)dict->data,&size,";"); gtk_list_store_append(list,&iter); - gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],-1); + gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); if (strstr(dict->key," installed")) gtk_list_store_set(list,&iter,0,1,-1); } @@ -1064,7 +1087,6 @@ void yon_setup_config(char *configcommand) for (int i=0;i",USED_KERNEL_DRIVER_LABEL,": ",driver_use, "\n",AVALIABLE_KERNEL_DRIVERS_LABEL,": ",driver_all,"",NULL); gtk_label_set_markup(GTK_LABEL(gtk_builder_get_object(widgets->builder,"InformationLabel")),final_text); - if (strcmp(vendor,"Intel Corporation")==0){ + if (strstr(vendor,"Intel")){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } - else if (strcmp(vendor,"NVidia Corporation")==0){ + else if (strstr(vendor,"NVidia")){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } - else if (strcmp(vendor,"AMD Corporation")==0){ + else if (strstr(vendor,"AMD")){ GtkIconTheme *icthm=gtk_icon_theme_get_default(); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.amd-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); } @@ -1365,6 +1387,7 @@ void yon_setup_widgets(widgets_dict *widgets) widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton"); widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton"); widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay"); + widgets->MenusTab = yon_gtk_builder_get_widget(widgets->builder, "MenusTab"); widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection")); widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn")); @@ -1388,11 +1411,14 @@ void yon_setup_widgets(widgets_dict *widgets) widgets->driverDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDescriptionColumn")); widgets->driverSupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverSupportedColumn")); + gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore6")); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->proprietaryTreeView),GTK_TREE_MODEL(videoconfig.list)); + g_signal_connect(G_OBJECT(widgets->MenusTab), "switch-page", G_CALLBACK(on_proprietary_get), widgets); + g_signal_connect(G_OBJECT(widgets->proprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); @@ -1476,6 +1502,7 @@ void yon_setup_widgets(widgets_dict *widgets) videoconfig.status_render.icon=widgets->mainStatusIcon; videoconfig.status_render.label=widgets->mainStatusLabel; videoconfig.status_render.box=widgets->mainStatusBox; + if (videoconfig.lock) if (videoconfig.lock_load_global==1) gtk_widget_set_sensitive(widgets->mainHeaderLoadGlobalMenuItem,0); if (videoconfig.lock_save_global==1) @@ -1572,7 +1599,7 @@ int main(int argc, char *argv[]) yon_setup_config(load_drivers_local_command); widgets_dict widgets; yon_setup_widgets(&widgets); - yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); + // yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); // yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist); gtk_widget_show(widgets.MainWindow); // yon_fill_ui(&widgets); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 82d5b18..0a107d9 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -272,6 +272,8 @@ typedef struct GtkWidget *PlugBox; GtkWidget *PlugSaveBox; GtkWidget *PlugLoadBox; + + GtkWidget *MenusTab; } widgets_dict; typedef struct diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 866c980..3dd7177 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -853,98 +853,6 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi #endif - -// dictionary *yon_gtk_app_chooser_create(GtkBuilder *builder){ -// GtkWidget *chooserWindow=gtk_window_new(GTK_WINDOW_TOPLEVEL); -// GtkWidget *Box=gtk_box_new(GTK_ORIENTATION_VERTICAL,5); -// GtkWidget *Frame=gtk_frame_new(""); -// GtkWidget *Scroll=gtk_scrolled_window_new(NULL, gtk_adjustment_new(0,0,10000,1,10,100)); -// GtkWidget *PackBox=gtk_box_new(GTK_ORIENTATION_VERTICAL,5); -// GtkWidget *ButtonsBox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); -// GtkWidget *ButtonsPlaceBox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); - -// GtkWidget *CancelButton=gtk_button_new_with_label("Cancel"); -// GtkWidget *AcceptButton=gtk_button_new_with_label("Accept"); -// gtk_container_add(GTK_CONTAINER(chooserWindow),Box); -// gtk_box_pack_start(GTK_BOX(Box),Frame,1,1,0); -// gtk_container_add(GTK_CONTAINER(Frame),PackBox); -// gtk_box_pack_start(GTK_BOX(Box),ButtonsBox,0,0,0); -// gtk_box_pack_end(GTK_BOX(ButtonsBox),ButtonsPlaceBox,0,0,0); -// gtk_box_pack_end(GTK_BOX(ButtonsPlaceBox),AcceptButton,0,0,0); -// gtk_box_pack_end(GTK_BOX(ButtonsPlaceBox),CancelButton,0,0,0); -// gtk_box_pack_start(GTK_BOX(PackBox),(GtkWidget*)yon_gtk_app_chooser_apps_create(builder),0,0,0); -// gtk_widget_show_all(chooserWindow); -// } - -/** - * yon_iv_segment_create: - * connect_to - dictionary, in the end of which new one will be connected; - * name - name of this segment, renders on label; - * categories - desktop file categories that application NEEDS to have to render in that category; - * segment_icon_name - icon name for this section; - * builder - newly allocated builder with glade file connected where template widgets are stored: - * - templateAppsIconView - setted up icon view; - * - templateAppsPack - setted up container for every template widget; - * - templateAppsImage - image for rendering section image; - * - templateAppsLabel - label for rendering section name; - */ -// dictionary *yon_iv_segment_create(dictionary *connect_to, char *name, char *categories, char *segment_icon_name){ -// IVSegment *segment=malloc(sizeof(IVSegment)); -// segment->name=name; -// segment->categories=categories; -// GtkBuilder *builder=gtk_builder_new_from_string(return_app_string(),-1); -// GtkWidget *iv=yon_gtk_builder_get_widget(builder,"templateAppsIconView"); -// GtkWidget *expander=yon_gtk_builder_get_widget(builder,"templateAppsPack"); -// GtkWidget *image=yon_gtk_builder_get_widget(builder,"templateAppsImage"); -// GtkWidget *label=yon_gtk_builder_get_widget(builder,"templateAppsLabel"); -// GtkIconTheme *theme=gtk_icon_theme_get_default(); -// gtk_image_set_from_pixbuf(GTK_IMAGE(image),gtk_icon_theme_load_icon_for_scale(theme,segment_icon_name,20,1,GTK_ICON_LOOKUP_FORCE_SVG,NULL)); -// gtk_label_set_text(GTK_LABEL(label),name); -// GtkListStore *ls=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore5")); -// // g_signal_connect(G_OBJECT(iv), "item-activated", G_CALLBACK(on_activate), videoconfig.applist); -// segment->Expander=expander; -// segment->IV=iv; -// segment->LS=ls; -// segment->Image=image; -// dictionary *dict=NULL; -// if (connect_to) { -// // connect_to=yon_dictionary_get_last(connect_to); -// dict=yon_dictionary_create_with_data_connected(connect_to,name,segment); -// } else -// dict=yon_dictionary_create_with_data(name,segment); -// return dict; -// } - -// GtkWidget *yon_gtk_app_chooser_apps_create(){ -// GtkWidget *Box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0); -// dictionary *IVS=yon_iv_segment_create(NULL, "Graphics", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Tools", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Internet", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Multimedia", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Settings", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Education", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Office", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Other", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "Development", "", "dialog-yes-symbolic"); -// yon_iv_segment_create(IVS, "System", "", "dialog-yes-symbolic"); -// dictionary *nd; -// for_dictionaries(nd,IVS){ -// gtk_box_pack_start(GTK_BOX(Box),((IVSegment*)nd->data)->Expander,0,0,0); -// } -// return Box; - -// } - -// GtkWidget *yon_gtk_socket_create_new_with_connect(GtkWidget *container, gpointer data){ -// GtkWidget *socket; -// socket = gtk_socket_new(); -// g_signal_connect(G_OBJECT(socket),"plug-added",G_CALLBACK(yon_on_plug_added),data); -// g_signal_connect(G_OBJECT(socket),"plug-removed",G_CALLBACK(yon_on_plug_removed),data); -// g_signal_connect(G_OBJECT(socket),"destroy",G_CALLBACK(yon_on_plug_removed),data); -// gtk_box_pack_start(GTK_BOX(container),socket,1,1,0); -// return socket; -// }; - int yon_gtk_combo_box_fill(GtkWidget *combo, config_str parameters,int size){ if (combo&¶meters){ for (int i=0;i0 - - - @@ -1125,6 +1122,8 @@ + + @@ -1239,7 +1238,7 @@ - + True True @@ -1780,6 +1779,7 @@ 1 vertical True + 4 @@ -1811,7 +1811,7 @@ - 2 + 3 @@ -1826,7 +1826,7 @@ 150 - 3 + 4 @@ -1841,7 +1841,7 @@ 220 - 4 + 5 @@ -1950,7 +1950,7 @@ 0 vertical True - 2 + 4 @@ -1969,9 +1969,12 @@ Package - + + word + 175 + - 1 + 2 @@ -1982,7 +1985,7 @@ - 2 + 3 @@ -1997,7 +2000,7 @@ 150 - 3 + 4 @@ -2012,7 +2015,7 @@ 220 - 4 + 5 diff --git a/video-drivers.csv b/video-drivers.csv index 78f380e..a1678f5 100644 --- a/video-drivers.csv +++ b/video-drivers.csv @@ -1,8 +1,8 @@ -VERSION_ID;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT -2204;ubm-nvidia-340;nvidia-340;Пакет с модулем драйвера и утилиты NVIDIA 340xx;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX -2204;ubm-nvidia-390;nvidia-390;Пакет с модулем драйвера и утилиты NVIDIA 390xx;Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX -2204;ubm-nvidia-430;nvidia-430;Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX -2204;ubm-nvidia-470;nvidia-470;Пакет с модулем драйвера и утилиты NVIDIA 470xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-510;nvidia-510;Пакет с модулем драйвера и утилиты NVIDIA 510xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-515;nvidia-515;Пакет с модулем драйвера и утилиты NVIDIA 515xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-optimus;nvidia-optimus;Пакет с модулем включает в себя NVIDIA Optimus; +VERSION_ID;DRV_PAСKAGE_UBM;DRV_PACKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT +2204;ubm-nvidia-340;bbswitch-dkms, ffnvcodec-headers, gwe, lib32-nvidia-340xx-utils, lib32-opencl-nvidia-340xx, libxnvctrl-340xx, nvidia-340xx-dkms, nvidia-340xx-utils, nvidia-prime, nvtop, opencl-nvidia-340xx, python-py3nvml, ;nvidia-340;Пакет с модулем драйвера и утилиты NVIDIA 340xx;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX +2204;ubm-nvidia-390;bbswitch-dkms, ffnvcodec-headers8.1, ;nvidia-390;Пакет с модулем драйвера и утилиты NVIDIA 390xx;Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX +2204;ubm-nvidia-430;nvidia-430xx-dkms;nvidia-430;Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX +2204;ubm-nvidia-470;nvidia-470xx-dkms;nvidia-470;Пакет с модулем драйвера и утилиты NVIDIA 470xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;ubm-nvidia-510;nvidia-510xx-dkms;nvidia-510;Пакет с модулем драйвера и утилиты NVIDIA 510xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;ubm-nvidia-515;ubm-001-linux, ubm-010-core, ubm-020-xorg-base, ubm-030-xorg-gtk, ubm-lib32;nvidia-515;Пакет с модулем драйвера и утилиты NVIDIA 515xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;ubm-nvidia-optimus;ubm-001-linux, ubm-010-core, ubm-020-xorg-base, ubm-030-xorg-gtk, ubm-035-xorg-qt5, ubm-lib32;nvidia-optimus;Пакет с модулем включает в себя NVIDIA Optimus; -- 2.35.1 From 59a3a083231d0c5dab80328e849aacc19a23cada Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 14:27:59 +0600 Subject: [PATCH 03/26] Added new translatable string --- ubl-settings-video.pot | 8 ++++++-- ubl-settings-video_ru.po | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index 6c39565..ac0024b 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -22,12 +22,16 @@ msgstr "" msgid "Don't use" msgstr "" +#: source/ubl-settings-video-strings.h:63 +msgid "Driver list is currently loading..." +msgstr "" + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 -msgid "UBlinux Video Configuration" +msgid "UBLinux Video Configuration" msgstr "" #: source/ubl-settings-video.c:583 -msgid "Progect Home Page" +msgid "Project Home Page" msgstr "" #: source/ubl-settings-video.c:584 diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index f9744c5..1ebe291 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -22,12 +22,16 @@ msgstr "" msgid "Don't use" msgstr "Не использовать" +#: source/ubl-settings-video-strings.h:63 +msgid "Driver list is currently loading..." +msgstr "Список драйверов загружается..." + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 -msgid "UBlinux Video Configuration" +msgid "UBLinux Video Configuration" msgstr "Видеокарта/Экран" #: source/ubl-settings-video.c:583 -msgid "Progect Home Page" +msgid "Project Home Page" msgstr "Домашняя страница проекта" #: source/ubl-settings-video.c:584 @@ -76,35 +80,35 @@ msgstr "Аргументы:" #: source/ubl-settings-video-strings.h:2 msgid "Show this help" -msgstr "Показать эту справку" +msgstr "Показать параметры справки" #: source/ubl-settings-video-strings.h:2 msgid "Show package version" -msgstr "Показать версию пакета" +msgstr "Показать текущую версию" #: source/ubl-settings-video-strings.h:2 msgid "Lock this help menu" -msgstr "Запретить вывод этой справки" +msgstr "Блокировка вызова справки" #: source/ubl-settings-video-strings.h:2 #, fuzzy msgid "Lock configration saving" -msgstr "Запретить сохранение конфигурации" +msgstr "Блокировка сохранения локальной и глобальной конфигурации" #: source/ubl-settings-video-strings.h:2 #, fuzzy msgid "Lock local configration saving" -msgstr "Запретить сохранение локальной конфигурации" +msgstr "Блокировка сохранения локальной конфигурации" #: source/ubl-settings-video-strings.h:2 #, fuzzy msgid "Lock global configration saving" -msgstr "Запретить сохранение глобальной конфигурации" +msgstr "Блокировка сохранения глобальной конфигурации" #: source/ubl-settings-video-strings.h:2 #, fuzzy msgid "Lock global configration loading" -msgstr "Запретить загрузку глобальной конфигурации" +msgstr "Блокировка загрузки глобальной конфигурации" #: source/ubl-settings-video-strings.h:3 msgid "Default settings" -- 2.35.1 From 7c2c4322fa6be16f920b11bd4399ca64b78eff1e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 16:51:52 +0600 Subject: [PATCH 04/26] Added translatable strings --- ubl-settings-video.pot | 20 ++++++++++++++++++++ ubl-settings-video_ru.po | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index ac0024b..eab00f0 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -26,6 +26,26 @@ msgstr "" msgid "Driver list is currently loading..." msgstr "" +#: source/ubl-settings-video-strings.h:64 +msgid "Driver list is failed to load." +msgstr "" + +#: source/ubl-settings-video-strings.h:65 +msgid "Deleting driver..." +msgstr "" + +#: source/ubl-settings-video-strings.h:66 +msgid "Installing driver..." +msgstr "" + +#: source/ubl-settings-video-strings.h:67 +msgid "Driver operation is done." +msgstr "" + +#: source/ubl-settings-video-strings.h:68 +msgid "Nothing was selected." +msgstr "" + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index 1ebe291..0342f06 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -26,6 +26,26 @@ msgstr "Не использовать" msgid "Driver list is currently loading..." msgstr "Список драйверов загружается..." +#: source/ubl-settings-video-strings.h:64 +msgid "Driver list is failed to load." +msgstr "Не удалось загрузить список драйверов" + +#: source/ubl-settings-video-strings.h:65 +msgid "Deleting driver..." +msgstr "Удаление драйвера..." + +#: source/ubl-settings-video-strings.h:66 +msgid "Installing driver..." +msgstr "Установка драйвера..." + +#: source/ubl-settings-video-strings.h:67 +msgid "Driver operation is done." +msgstr "Операция завершена" + +#: source/ubl-settings-video-strings.h:68 +msgid "Nothing was selected." +msgstr "Выберите драйвер." + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" msgstr "Видеокарта/Экран" -- 2.35.1 From b644effe5a8e0b8a402452a007bc34e82b6eb8a5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 16:52:27 +0600 Subject: [PATCH 05/26] Frequency saving done --- source/ubl-settings-video-strings.h | 5 + source/ubl-settings-video.c | 194 ++++++++++++++++++++-------- source/ubl-settings-video.h | 2 +- 3 files changed, 144 insertions(+), 57 deletions(-) diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index 6df2e43..5bc3d26 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -61,6 +61,11 @@ #define ACCEPT_LABEL _("Accept") #define DONT_USE_LABEL _("Don't use") #define PROPRIETARY_LOADING_LABEL _("Driver list is currently loading...") +#define PROPRIETARY_LOADING_FAILED_LABEL _("Driver list is failed to load.") +#define PROPRIETARY_DELETING_IN_PROGRESS_LABEL _("Deleting driver...") +#define PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL _("Installing driver...") +#define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.") +#define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.") #define INFORMATION_LABEL _("Information") #define DRIVERS_LABEL _("Drivers") diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 8c62f7a..12cd6e4 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -33,7 +33,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->position_port=NULL; config->port=NULL; config->resolution=NULL; - config->frequency=NULL; + config->frequency=0; videoconfig.status_render.text_to_render=MONITOR_PORT_SUCCESS_LABEL; videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; yon_ubl_status_box_render(&videoconfig.status_render); @@ -52,6 +52,8 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo)); } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo))>0) + config->frequency=gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo)); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) { config->resolution =yon_char_divide_search((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)),";",-1); int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo)); @@ -87,6 +89,11 @@ void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){ gtk_widget_destroy(widgets->TerminalRevealer); yon_proprieary_get(); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_OPETAION_DONE_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); } static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) @@ -162,48 +169,91 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){ } void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); - - + if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_install(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ - + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ @@ -215,9 +265,16 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_driver_info(GtkWidget *self,widgets_dict *widgets){ @@ -229,10 +286,16 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); - gtk_tree_selection_get_selected(selection,&list_s,&iter); - gtk_tree_model_get(list_s,&iter,1,&name,-1); - pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); - + if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ + gtk_tree_model_get(list_s,&iter,1,&name,-1); + pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ @@ -311,11 +374,11 @@ char *yon_configuration_get_save_command(char *command){ str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL); } - if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0) + if (videoconfig.optirun&&strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0) str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL)); else str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL)); - if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0) + if (videoconfig.primusrun&&strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0) str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL)); else str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL)); @@ -430,9 +493,13 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets) } void yon_update_config(widgets_dict *widgets) -{ +{ + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchOptirunCheck))==1) videoconfig.optirun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry))); + else videoconfig.optirun = NULL; + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchPrismusunCheck))==1) videoconfig.primusrun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry))); + else videoconfig.primusrun = NULL; videoconfig.failsafenVidia = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo))); videoconfig.failsafeATI = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo))); } @@ -704,9 +771,14 @@ void yon_monitor_view_update(){ gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,"")); monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*); gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable); - if (config->resolution) - gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution); - else if (params->stringparameters){ + if (config->resolution){ + char *freq=""; + if (config->frequency>0){ + if (config->frequency==1) freq ="60"; + else if (config->frequency==2) freq="75"; + } + gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),yon_char_unite(config->resolution,":",freq,NULL)); + }else if (params->stringparameters){ int size=0; config_str rtn=yon_char_parse(params->stringparameters,&size,","); char *res=yon_char_divide_search(yon_char_new(yon_char_parsed_get_resolution(rtn,size))," ",-1); @@ -857,15 +929,15 @@ char *yon_monitor_make_string(monitorconfig* config) char *frequency=""; - if (config->frequency) - if (first==1){ - frequency=config->frequency; - first=0; - }else{ - frequency=yon_char_get_augumented(",",config->frequency); - } + if (config->frequency){ + if (config->frequency==1) frequency="x60"; + else if (config->frequency==2) frequency="x75"; + } + if (strcmp(resolution,"")!=0) + resolution=yon_char_get_augumented(resolution,frequency); + - char *stringparameters=yon_char_unite("",main,resolution,frequency,enable,position,rotation,dpms,cvt,reduced,gtf,NULL); + char *stringparameters=yon_char_unite("",main,resolution,enable,position,rotation,dpms,cvt,reduced,gtf,NULL); config->stringparameters=yon_char_new(stringparameters); } @@ -954,11 +1026,19 @@ dictionary *yon_proprieary_get(){ } } yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=""; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + if (videoconfig.proprietary){ + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=""; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } else { + videoconfig.status_render.strings_size=0; + videoconfig.status_render.text_strings_to_render=NULL; + videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_FAILED_LABEL; + videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } @@ -966,16 +1046,18 @@ dictionary *yon_proprieary_get(){ * [EN] */ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ - dictionary *dict=NULL; - gtk_list_store_clear(list); - for_dictionaries(dict,videoconfig.proprietary){ - GtkTreeIter iter; - int size=0; - config_str str = yon_char_parse((char*)dict->data,&size,";"); - gtk_list_store_append(list,&iter); - gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); - if (strstr(dict->key," installed")) - gtk_list_store_set(list,&iter,0,1,-1); + if(videoconfig.proprietary){ + dictionary *dict=NULL; + gtk_list_store_clear(list); + for_dictionaries(dict,videoconfig.proprietary){ + GtkTreeIter iter; + int size=0; + config_str str = yon_char_parse((char*)dict->data,&size,";"); + gtk_list_store_append(list,&iter); + gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + if (strstr(dict->key," installed")) + gtk_list_store_set(list,&iter,0,1,-1); + } } } @@ -1102,7 +1184,7 @@ monitor_config yon_monitor_config_new(char *port){ monitor->position_port=NULL; monitor->resolution=NULL; monitor->resolutionCapabilities=NULL; - monitor->frequency=NULL; + monitor->frequency=0; monitor->rotation=0; monitor->stringparameters=NULL; monitor->dpms=0; @@ -1171,6 +1253,7 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_ } } + char *yon_char_parsed_get_resolution(config_str parsed_string, int size){ char *left=NULL, *right=NULL, *freq=NULL; for (int i=0;imainStatusIcon; videoconfig.status_render.label=widgets->mainStatusLabel; videoconfig.status_render.box=widgets->mainStatusBox; - if (videoconfig.lock) if (videoconfig.lock_load_global==1) gtk_widget_set_sensitive(widgets->mainHeaderLoadGlobalMenuItem,0); if (videoconfig.lock_save_global==1) diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 0a107d9..17b9547 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -139,7 +139,7 @@ typedef struct char *port; char *resolution; config_str resolutionCapabilities; - char *frequency; + int frequency; int rotation; char *stringparameters; int dpms; -- 2.35.1 From cd463ab627f360d9bffd69fa57cddabf09b9aa0d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 17:11:41 +0600 Subject: [PATCH 06/26] Drivers test fix for certain cases --- source/ubl-settings-video.c | 18 +++++++++++++++++- source/ubl-settings-video.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 12cd6e4..73b6e75 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1025,14 +1025,30 @@ dictionary *yon_proprieary_get(){ else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); } } - yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); if (videoconfig.proprietary){ + yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); videoconfig.status_render.strings_size=0; videoconfig.status_render.text_strings_to_render=NULL; videoconfig.status_render.text_to_render=""; videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; yon_ubl_status_box_render(&videoconfig.status_render); } else { + drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); + for (int drivers_found=0;drivers_found Date: Thu, 11 May 2023 17:55:34 +0600 Subject: [PATCH 07/26] Drivers test fix for certain cases --- source/CMakeLists.txt | 22 +++++++++++++++-- source/ubl-settings-video.c | 49 +++++++++++++++++++++++-------------- source/ubl-settings-video.h | 3 +++ 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index b0fba42..6559f48 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,6 +8,20 @@ include_directories(${GTK_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS}) add_definitions(${GTK_CFLAGS_OTHER}) +option(WEBKIT_FOUND "No" OFF) + +find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) + +if(WEBKIT_LIBRARIES_FOUND) + option(WEBKIT_FOUND "Yes" ON) + PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) + include_directories(${WEBKIT_INCLUDE_DIRS}) + link_directories(${WEBKIT_LIBRARY_DIRS}) + add_definitions(${WEBKIT_CFLAGS_OTHER}) +endif() + +configure_file(ubl-settings-video.h.in ubl-settings-video-cm.h) + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") @@ -19,7 +33,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin set(SOURCE_FILES ubl-settings-video.c ubl-utils.c -) + ubl-settings-video-cm.h) set(LIBRARIES ${GTK_LIBRARIES} @@ -28,5 +42,9 @@ set(LIBRARIES add_executable(ubl-settings-video ${SOURCE_FILES}) -target_link_libraries(ubl-settings-video ${LIBRARIES}) +target_link_libraries(ubl-settings-video PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES}) +target_include_directories(ubl-settings-video PUBLIC + "${PROJECT_BINARY_DIR}" + ${WEBKIT_INCLUDE_DIRS} + ) install(TARGETS ubl-settings-video DESTINATION bin) \ No newline at end of file diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 73b6e75..a07ab8a 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1025,7 +1025,7 @@ dictionary *yon_proprieary_get(){ else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); } } - if (videoconfig.proprietary){ + if (!videoconfig.proprietary){ yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); videoconfig.status_render.strings_size=0; videoconfig.status_render.text_strings_to_render=NULL; @@ -1034,26 +1034,37 @@ dictionary *yon_proprieary_get(){ yon_ubl_status_box_render(&videoconfig.status_render); } else { drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); - for (int drivers_found=0;drivers_found #include #include +#ifdef WEBKIT_FOUND + #include +#endif #include "ubl-utils.h" #include "ubl-settings-video-strings.h" #ifndef UBL_SETINGS_VIDEO_H -- 2.35.1 From aab11d89da8d3b488ca4a7c48312c7327092b331 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 17:57:01 +0600 Subject: [PATCH 08/26] .in file for webkit2gtk --- source/ubl-settings-video.h.in | 1 + 1 file changed, 1 insertion(+) create mode 100644 source/ubl-settings-video.h.in diff --git a/source/ubl-settings-video.h.in b/source/ubl-settings-video.h.in new file mode 100644 index 0000000..d4623a7 --- /dev/null +++ b/source/ubl-settings-video.h.in @@ -0,0 +1 @@ +#cmakedefine WEBKIT_FOUND -- 2.35.1 From 7a11c3664c67073c2a3a057f6660d6d8bd4d85e9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 18:01:25 +0600 Subject: [PATCH 09/26] Added new translatable string --- source/ubl-settings-video-strings.h | 1 + ubl-settings-video.pot | 4 ++++ ubl-settings-video_ru.po | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index 5bc3d26..23de4ad 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -66,6 +66,7 @@ #define PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL _("Installing driver...") #define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.") #define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.") +#define PROPRIETARY_USE_LOCAL_LABEL _("Failed to load available drivers for your system... Installed driver list is shown.") #define INFORMATION_LABEL _("Information") #define DRIVERS_LABEL _("Drivers") diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index eab00f0..788729f 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -46,6 +46,10 @@ msgstr "" msgid "Nothing was selected." msgstr "" +#: source/ubl-settings-video-strings.h:69 +msgid "Failed to load available drivers for your system... Installed driver list is shown." +msgstr "" + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index 0342f06..d8bcbd0 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -46,6 +46,11 @@ msgstr "Операция завершена" msgid "Nothing was selected." msgstr "Выберите драйвер." +#: source/ubl-settings-video-strings.h:69 +msgid "Failed to load available drivers for your system... Installed driver list is shown." +msgstr "Не удалось загрузить список драйверов, доступных для вашей системы. Выведен список установленных драйверов." + + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" msgstr "Видеокарта/Экран" -- 2.35.1 From 88edccbe08369984eeadd21864cd588f2af3d522 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 11 May 2023 18:03:23 +0600 Subject: [PATCH 10/26] Drivers test fix for certain cases --- source/ubl-settings-video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index a07ab8a..61ea790 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1025,7 +1025,7 @@ dictionary *yon_proprieary_get(){ else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); } } - if (!videoconfig.proprietary){ + if (videoconfig.proprietary){ yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); videoconfig.status_render.strings_size=0; videoconfig.status_render.text_strings_to_render=NULL; -- 2.35.1 From 10bcd5668817f7ff7860229826dba008ddf9a16b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:10:38 +0600 Subject: [PATCH 11/26] Added webkit2gtk-dependent function, which opens integrated browser window if webkit is present in system or opens common browser if not --- source/ubl-utils.c | 41 +++++++++++++++++++++++++++++++++++++++++ source/ubl-utils.h | 10 ++++++++++ 2 files changed, 51 insertions(+) diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 3dd7177..980e2f3 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -971,4 +971,45 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi } } +#ifdef WEBKIT_FOUND + +/**yon_ubl_browser_window_open(char *link, char *browser_window_name) + * [EN] + * Launches integrated browser window, named [browser_window_name] at header with [link]. + * [RU] + * Открывает встроенный браузер с именем [browser_window_name] и показываемой страницей по ссылке [link] +*/ +void yon_ubl_browser_window_open(char *link, char *browser_window_name){ + GtkWidget *browser=gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget *web_place=gtk_box_new(GTK_ORIENTATION_VERTICAL,0); + GtkWidget *header=gtk_header_bar_new(); + GtkWidget *header_label=gtk_label_new(browser_window_name); + GtkWidget *WebView=webkit_web_view_new(); + gtk_container_add(GTK_CONTAINER(browser),web_place); + gtk_window_set_titlebar(GTK_WINDOW(browser),header); + gtk_window_set_title(GTK_WINDOW(browser),browser_window_name); + gtk_widget_set_size_request(browser,800,600); + gtk_header_bar_set_custom_title(GTK_HEADER_BAR(header),header_label); + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),1); + webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),link); + gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0); + gtk_widget_show_all(browser); +} +#else + +/**yon_ubl_browser_window_open(char *link, char *browser_window_name) + * [EN] + * Launches browser with [link]. + * [RU] + * Открывает браузер со страницей по ссылке [link] +*/ +void yon_ubl_browser_window_open(char *link, char *browser_window_name){ + char *user=getenv("SUDO_USER"); + if (!user) + user=getlogin(); + char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL); + yon_launch_app(command); +} +#endif + #endif \ No newline at end of file diff --git a/source/ubl-utils.h b/source/ubl-utils.h index aaa4b13..43021b6 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -11,6 +11,10 @@ #include #include +#include "ubl-settings-video-cm.h" +#ifdef WEBKIT_FOUND + #include +#endif #define DesktopPath "/usr/share/applications/" #define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next) @@ -214,5 +218,11 @@ typedef struct { void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); void _yon_ubl_status_box_render(render_data *datav); void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id); +#ifdef WEBKIT_FOUND + +void yon_ubl_browser_window_open(char *link, char *browser_window_name); +#else +void yon_ubl_browser_window_open(char *link, char *browser_window_name); +#endif #endif #endif \ No newline at end of file -- 2.35.1 From 88ca662101ba66c5727889a2cd244435b7633bae Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:11:15 +0600 Subject: [PATCH 12/26] New translatable strings are added --- ubl-settings-video.pot | 12 ++++++++++++ ubl-settings-video_ru.po | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index 788729f..93a6c48 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -50,6 +50,18 @@ msgstr "" msgid "Failed to load available drivers for your system... Installed driver list is shown." msgstr "" +#: source/ubl-settings-video-strings.h:71 +msgid "Would you like to read documentation in the Web?" +msgstr "" + +#: source/ubl-settings-video-strings.h:72 +msgid "You will be redirected to documentation website where documentation is translated and supported by community." +msgstr "" + +#: source/ubl-settings-video-strings.h:73 +msgid "Always redirect to online documentation" +msgstr "" + #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index d8bcbd0..b756a3c 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -50,6 +50,18 @@ msgstr "Выберите драйвер." msgid "Failed to load available drivers for your system... Installed driver list is shown." msgstr "Не удалось загрузить список драйверов, доступных для вашей системы. Выведен список установленных драйверов." +#: source/ubl-settings-video-strings.h:71 +msgid "Would you like to read documentation in the Web?" +msgstr "Вы хотите прочитать справку в Сети?" + +#: source/ubl-settings-video-strings.h:72 +msgid "You will be redirected to documentation website where documentation is translated and supported by community." +msgstr "Вы будете перенаправлены на сайт с документацией где страницы помощи " +"переводятся и поддерживаются сообществом." + +#: source/ubl-settings-video-strings.h:73 +msgid "Always redirect to online documentation" +msgstr "Всегда перенаправлять" #: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 msgid "UBLinux Video Configuration" -- 2.35.1 From 3cae79526f3c2afef544587481fd745164d183b7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:11:30 +0600 Subject: [PATCH 13/26] Added webkit2gtk-dependent function, which opens integrated browser window if webkit is present in system or opens common browser if not --- ubl-settings-video.glade | 257 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 0f520e6..6d6de85 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -7,6 +7,203 @@ + + False + False + 450 + 250 + dialog-question-symbolic + + + True + False + vertical + + + True + False + + + True + False + start + 20 + 20 + dialog-question-symbolic + 6 + + + False + True + 0 + + + + + True + False + vertical + + + True + False + start + 10 + 5 + Would you like to read documentation in the Web? + True + 0 + + + + + + + False + True + 0 + + + + + True + False + start + start + 10 + 10 + You will be redirected to documentation website where documentation is translated and supported by community. + True + 0 + + + + True + True + 1 + + + + + Always redirect to online documentation + True + True + False + end + 10 + True + + + + False + True + 2 + + + + + + True + True + 1 + + + + + + True + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 30 + True + + + Cancel + True + True + True + + + + True + True + 0 + + + + + Read Online + True + True + True + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + True + False + + + True + False + UBLinux Settings + + + + + + + + True + False + 32 + dialog-question-symbolic + + + + + True False @@ -108,6 +305,66 @@ + + 800 + 558 + False + 800 + 558 + ubconfig-gui + + + True + False + vertical + + + + + + + + True + False + True + + + True + False + True + + + True + False + UBLinux Settings Web View + + + + + + True + True + 0 + + + + + + + True + False + 32 + com.ublinux.ubl-settings-manager + 5 + + + + + + False False -- 2.35.1 From 3bc8e9879881af75b373081b03624ac0400076df Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:12:14 +0600 Subject: [PATCH 14/26] video-drivers.csv data remade --- video-drivers.csv | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/video-drivers.csv b/video-drivers.csv index a1678f5..7f38275 100644 --- a/video-drivers.csv +++ b/video-drivers.csv @@ -1,8 +1,9 @@ -VERSION_ID;DRV_PAСKAGE_UBM;DRV_PACKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT -2204;ubm-nvidia-340;bbswitch-dkms, ffnvcodec-headers, gwe, lib32-nvidia-340xx-utils, lib32-opencl-nvidia-340xx, libxnvctrl-340xx, nvidia-340xx-dkms, nvidia-340xx-utils, nvidia-prime, nvtop, opencl-nvidia-340xx, python-py3nvml, ;nvidia-340;Пакет с модулем драйвера и утилиты NVIDIA 340xx;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX -2204;ubm-nvidia-390;bbswitch-dkms, ffnvcodec-headers8.1, ;nvidia-390;Пакет с модулем драйвера и утилиты NVIDIA 390xx;Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX -2204;ubm-nvidia-430;nvidia-430xx-dkms;nvidia-430;Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX -2204;ubm-nvidia-470;nvidia-470xx-dkms;nvidia-470;Пакет с модулем драйвера и утилиты NVIDIA 470xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-510;nvidia-510xx-dkms;nvidia-510;Пакет с модулем драйвера и утилиты NVIDIA 510xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-515;ubm-001-linux, ubm-010-core, ubm-020-xorg-base, ubm-030-xorg-gtk, ubm-lib32;nvidia-515;Пакет с модулем драйвера и утилиты NVIDIA 515xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX -2204;ubm-nvidia-optimus;ubm-001-linux, ubm-010-core, ubm-020-xorg-base, ubm-030-xorg-gtk, ubm-035-xorg-qt5, ubm-lib32;nvidia-optimus;Пакет с модулем включает в себя NVIDIA Optimus; +OS_VERSION_ID;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT +2204;ubm-nvidia-340;;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX +2204;;nvidia-340xx-dkms;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX +2204;ubm-nvidia-390;;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX +2204;;nvidia-390xx-dkms;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX +2204;ubm-nvidia-470;;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;;nvidia-470xx-dkms;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;ubm-nvidia-510;;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX +2204;;nvidia-510xx-dkms;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX \ No newline at end of file -- 2.35.1 From 2a5cbdfd5214c9e1f35dc4eead0d6051eeaf49cc Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:12:31 +0600 Subject: [PATCH 15/26] Added webkit2gtk-dependent function, which opens integrated browser window if webkit is present in system or opens common browser if not --- source/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 6559f48..80d85ab 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -22,7 +22,6 @@ endif() configure_file(ubl-settings-video.h.in ubl-settings-video-cm.h) - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ @@ -33,6 +32,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin set(SOURCE_FILES ubl-settings-video.c ubl-utils.c + ubl-settings-video.h ubl-settings-video-cm.h) set(LIBRARIES -- 2.35.1 From 5bb4993fbdd1cd98e35676dbbfa7bea4d6e50a02 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 11:12:56 +0600 Subject: [PATCH 16/26] New translatable strings are added --- source/ubl-settings-video-strings.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index 23de4ad..e3fb4f5 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -68,12 +68,16 @@ #define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.") #define PROPRIETARY_USE_LOCAL_LABEL _("Failed to load available drivers for your system... Installed driver list is shown.") +#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?") +#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is translated and supported by community.") +#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation") #define INFORMATION_LABEL _("Information") #define DRIVERS_LABEL _("Drivers") #define MAIN_SETTINGS_LABEL _("Main settings") #define DEVICES_DRIVERS_LABEL _("Devices and drivers") #define DRIVER_MODULES_LABEL _("Driver modules") +#define WEB_VIEW_TITLE_LABEL _("UBLinux Settings Web View") #define MONITOR_POSITION_LEFT_PARAMETER "lo:" #define MONITOR_POSITION_RIGHT_PARAMETER "ro:" -- 2.35.1 From 96528102fc0453811c7574dff2e0ea62a549baf7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 12:42:18 +0600 Subject: [PATCH 17/26] Library changes, descriptions for some functions --- source/ubl-utils.c | 28 +++++++++++--- source/ubl-utils.h | 93 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 104 insertions(+), 17 deletions(-) diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 980e2f3..1f6e44d 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -902,6 +902,9 @@ void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image gtk_image_set_from_file(GTK_IMAGE(Image), image_path); } +/** + * +*/ void _yon_ubl_status_box_render(render_data *datav) { render_data data = *(render_data*)datav; @@ -926,13 +929,26 @@ void _yon_ubl_status_box_render(render_data *datav) } if (data.text_to_render) gtk_label_set_text(GTK_LABEL(data.label), data.text_to_render); - else - for (int i=0;i-1){ gtk_widget_hide(gtk_widget_get_toplevel(main_window)); @@ -1000,8 +1016,10 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){ /**yon_ubl_browser_window_open(char *link, char *browser_window_name) * [EN] * Launches browser with [link]. + * [browser_window_name] is't used. It's needed for compatibility with webkit version of that function. * [RU] * Открывает браузер со страницей по ссылке [link] + * [browser_window_name] не используется. Нужна для совместимости с webkit версией этой функции. */ void yon_ubl_browser_window_open(char *link, char *browser_window_name){ char *user=getenv("SUDO_USER"); diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 43021b6..3b254bb 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -69,7 +69,16 @@ typedef struct apps typedef char** config_str; // dictionary functions - +/**yon_dictionary_get_data(dictionary, type) + * [EN] + * Gets data from dictionary. + * [dictionary] is dictionary, from which data should be extracted; + * [type] is type of data, [dictionary] contains. + * [RU] + * Возвращает данные из словаря. + * [dictionary] - словарь из которого достаются данные. + * [type] - тип данных, хранящихся в словаре [dictionary]. +*/ #define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data) #define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) if (!dict) dict=yon_dictionary_create_with_data(key,data); \ else dict=yon_dictionary_create_with_data_connected(dict,key,data); @@ -154,10 +163,20 @@ int yon_launch(thread_output *thread); #ifdef __GTK_H__ #ifdef VTE_TERMINAL + +/** + * +*/ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument); #endif -#define yon_gtk_builder_get_widget(obj, obj2) GTK_WIDGET(gtk_builder_get_object(obj, obj2)) +/**yon_gtk_builder_get_widget(builder, widget_name) + * [EN] + * Returns GtkWidget from GtkBuilder *[builder]. + * [builder] is GtkBuilder*; + * [widget_name] is id of widget; +*/ +#define yon_gtk_builder_get_widget(builder, widget_name) GTK_WIDGET(gtk_builder_get_object(builder, widget_name)) typedef struct { @@ -177,17 +196,11 @@ int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); -GtkWidget *yon_gtk_socket_create_new_with_connect(GtkWidget *container, gpointer data); - int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment); int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding); int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding); -// uninitialised - -void yon_on_plug_added(GtkSocket *self, gpointer user_data); -void yon_on_plug_removed(GtkSocket *self, gpointer user_data); typedef enum @@ -202,16 +215,72 @@ typedef struct { GtkWidget *box; GtkWidget *label; char* text_to_render; - char** text_strings_to_render; - int strings_size; } render_data; - -#define yon_ubl_status_box_render(render) {pthread_attr_t attr; pthread_attr_init(&attr); pthread_t tid; pthread_create(&tid,&attr,(void*)_yon_ubl_status_box_render,((void*)render)); } +/**yon_ubl_status_box_setup(render,icon,box,label) + * [EN] + * Sets up [render] structure of type render_data. + * [icon] is GtkImage widget of status box for showing status icons; + * [box] is GtkBox widget of status box for showing status color; + * [label] is GtkLabel widget of status box for showing status text; + * [RU] + * Настраивает структуру [render] типа render_data. + * [icon] - виджет типа GtkIcon в котором будут отображаться статусные иконки; + * [box] - виджет типа GtkBox в котором будет отображаться цвет статуса; + * [label] - виджет типа GtkLabel в котором будет отображаться текст статусного сообщения; +*/ +#define yon_ubl_status_box_setup(render,icon,box,label) {render.icon=GTK_WIDGET(icon); render.box=GTK_WIDGET(box); render.label=GTK_WIDGET(label);} + +/**yon_ubl_status_box_render(render,text,type) + * [EN] + * Renders message in status box; + * [render] is render_data structure of status box; + * [text] is text to be shown in status box; + * [type] if type of message. Can be BACKGROUND_IMAGE_FAIL_TYPE or BACKGROUND_IMAGE_SUCCESS_TYPE + * [RU] + * Отображает сообщение в статусном окне. + * [render] - структура типа render_data для нужного статусного окна; + * [text] - текст, отображаемый в статусном окне; + * [type] - тип сообщения. Может быть: + * BACKGROUND_IMAGE_FAIL_TYPE (красный фон,иконка - восклицательный знак) + * или + * BACKGROUND_IMAGE_SUCCESS_TYPE (Жёлтный фон, иконка - галка) +*/ +#define yon_ubl_status_box_render(render,text,m_type) {render.text_to_render=text; render.type=m_type; pthread_attr_t attr; pthread_attr_init(&attr); pthread_t tid; pthread_create(&tid,&attr,(void*)_yon_ubl_status_box_render,((void*)&render)); } #ifdef __cplusplus + +/**yon_ubl_header_setup(overlay, head, image, imag_path) + * [EN] + * Sets up header of app. + * [overlay] is overlay for app header; + * [head] is box of header, which connects to [overlay] + * [image] is header background image; + * [imag_path] is path of image, shown in [image] + * [RU] + * Настраивает заголовок приложения. + * [overlay] - оверлей заголовка приложения; + * [head] - шапка заголовка, присоединяемая к [overlay] + * [image] - виджет картинки для заднего фона; + * [imag_path] - путь до картинки, загружаемой в [image] +*/ #define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay.gobj()), GTK_WIDGET(head.gobj()), GTK_WIDGET(image.gobj()), (char *)imag_path) #else + +/**yon_ubl_header_setup(overlay, head, image, imag_path) + * [EN] + * Sets up header of app. + * [overlay] is overlay for app header; + * [head] is box of header, which connects to [overlay] + * [image] is header background image; + * [imag_path] is path of image, shown in [image] + * [RU] + * Настраивает заголовок приложения. + * [overlay] - оверлей заголовка приложения; + * [head] - шапка заголовка, присоединяемая к [overlay] + * [image] - виджет картинки для заднего фона; + * [imag_path] - путь до картинки, загружаемой в [image] +*/ #define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path) #endif -- 2.35.1 From fd47737f5aeb7f4ad2f3d3ad0f58e260260ad02e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 12:44:05 +0600 Subject: [PATCH 18/26] code fixes for library edits, webkit2gkt-dependent browser function is moved to library --- source/CMakeLists.txt | 1 - source/ubl-settings-video.c | 166 ++++++++++++++---------------------- source/ubl-settings-video.h | 10 ++- 3 files changed, 70 insertions(+), 107 deletions(-) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 80d85ab..29d9ec6 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -32,7 +32,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin set(SOURCE_FILES ubl-settings-video.c ubl-utils.c - ubl-settings-video.h ubl-settings-video-cm.h) set(LIBRARIES diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 61ea790..aea0871 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -18,9 +18,7 @@ void on_subwindow_close(GtkWidget *self) void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*); if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){ - videoconfig.status_render.text_to_render=MONITOR_PORT_ERROR_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); return; } config->main=0; @@ -34,9 +32,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->port=NULL; config->resolution=NULL; config->frequency=0; - videoconfig.status_render.text_to_render=MONITOR_PORT_SUCCESS_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); config->port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo)); window->config->key = yon_char_new(config->port); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationParameterLineCheck))==0){ @@ -89,11 +85,7 @@ void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){ gtk_widget_destroy(widgets->TerminalRevealer); yon_proprieary_get(); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_OPETAION_DONE_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) @@ -169,11 +161,7 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){ } void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -182,20 +170,12 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } void on_driver_install(GtkWidget *self,widgets_dict *widgets){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -204,20 +184,12 @@ void on_driver_install(GtkWidget *self,widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -226,20 +198,12 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_DELETING_IN_PROGRESS_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); GtkTreeIter iter; char *name; GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); @@ -248,11 +212,7 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -269,11 +229,7 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -290,11 +246,7 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ gtk_tree_model_get(list_s,&iter,1,&name,-1); pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_NOTHING_SELECTED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -441,21 +393,14 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets) // } if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } - // else - // yon_ubl_status_box_render(widgets->mainStatusBox, widgets->mainStatusIcon, widgets->mainStatusLabel, _("Local configuration saving failed."), BACKGROUND_IMAGE_FAIL_TYPE); } void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets) { on_configuration_save_global_local(self, widgets); - videoconfig.status_render.text_to_render=GLOBAL_LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets) @@ -466,10 +411,7 @@ void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets) str=yon_configuration_get_save_command(save_drivers_global_local_command); if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } } @@ -485,10 +427,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets) // } if (str){ yon_config_save(str); - - videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } } @@ -662,6 +601,45 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){ } } +void on_read_documentation(GtkWidget *self,gpointer user_data){ + yon_ubl_browser_window_open(UBLINUX_WIKI_LINK,WEB_VIEW_TITLE_LABEL); + +} + +void on_toggle(GtkWidget *self, int *changing_var){ + *changing_var = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); +} + +void on_link(GtkWidget *self, char* link, gpointer user_data){ + if (GTK_IS_ABOUT_DIALOG(self)){ + gtk_widget_destroy(self); + } + if (videoconfig.alwaysredirect==0){ + GtkBuilder *builder=gtk_builder_new_from_file(glade_path); + GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow"); + GtkWidget *readButton=yon_gtk_builder_get_widget(builder,"ReadHelpButton"); + GtkWidget *cancelButton=yon_gtk_builder_get_widget(builder,"CancelHelpButton"); + GtkWidget *titleLabel=yon_gtk_builder_get_widget(builder,"helpHeader"); + GtkWidget *headQuestionLabel=yon_gtk_builder_get_widget(builder,"webHeaderNameLabel"); + GtkWidget *textLabel=yon_gtk_builder_get_widget(builder,"helpText"); + GtkWidget *alwaysOpenCheck=yon_gtk_builder_get_widget(builder,"AlwaysOpenHelpCheckbox"); + + g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_read_documentation),NULL); + g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(cancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(alwaysOpenCheck),"toggled",G_CALLBACK(on_toggle),&videoconfig.alwaysredirect); + + gtk_label_set_text(GTK_LABEL(titleLabel),SETTINGS_VIDEO_TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(headQuestionLabel),HELP_TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(textLabel),HELP_INFO_LABEL); + gtk_button_set_label(GTK_BUTTON(alwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL); + + gtk_widget_show(sureWindow); + }else { + on_read_documentation(NULL,NULL); + } +} + /**void on_about() * [EN] */ @@ -674,6 +652,7 @@ void on_about() gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), version_application); gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Project Home Page")); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window), _("Videocard and monitor configuration manager")); + g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL); gtk_widget_set_visible(hideButtonBox, 0); gtk_widget_show(window); } @@ -1001,11 +980,7 @@ void on_config_fill_interface(widgets_dict *widgets) * [EN] */ dictionary *yon_proprieary_get(){ - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); videoconfig.proprietary=NULL; int drivers_size=0; config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size); @@ -1027,11 +1002,7 @@ dictionary *yon_proprieary_get(){ } if (videoconfig.proprietary){ yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=""; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); if (drivers){ @@ -1052,18 +1023,10 @@ dictionary *yon_proprieary_get(){ } yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_USE_LOCAL_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { - videoconfig.status_render.strings_size=0; - videoconfig.status_render.text_strings_to_render=NULL; - videoconfig.status_render.text_to_render=PROPRIETARY_LOADING_FAILED_LABEL; - videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } } @@ -1550,7 +1513,7 @@ void yon_setup_widgets(widgets_dict *widgets) // g_signal_connect(G_OBJECT(widgets->extraPrimusunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets); g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsAboutMenuItem), "activate", G_CALLBACK(on_about), NULL); - g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_about), NULL); + g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_link), NULL); g_signal_connect(G_OBJECT(widgets->mainHeaderLoadGlobalMenuItem), "activate", G_CALLBACK(on_configuration_load_global), widgets); g_signal_connect(G_OBJECT(widgets->mainHeaderLoadLocalMenuItem), "activate", G_CALLBACK(on_configuration_load_local), widgets); @@ -1711,10 +1674,7 @@ int main(int argc, char *argv[]) // yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); // yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist); gtk_widget_show(widgets.MainWindow); - // yon_fill_ui(&widgets); - videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); + yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); on_config_fill_interface(&widgets); yon_monitor_set_resolutions(); yon_adapter_window_setup(&widgets); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index b05462c..c4120fe 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -1,5 +1,9 @@ #include #include +#include "ubl-settings-video-cm.h" +#ifdef WEBKIT_FOUND + #include +#endif #include #include #include @@ -11,14 +15,13 @@ #include #include #include -#ifdef WEBKIT_FOUND - #include -#endif #include "ubl-utils.h" #include "ubl-settings-video-strings.h" #ifndef UBL_SETINGS_VIDEO_H #define UBL_SETINGS_VIDEO_H +#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-video" + #define icon_name "com.ublinux.ubl-settings-video" #define banner_path "/usr/share/ubl-settings-video/images/ubl-settings-video-banner.png" @@ -105,6 +108,7 @@ typedef struct { typedef struct { + int alwaysredirect; config_str loaded_config; int configsize; int autoChooseDrivers; -- 2.35.1 From 6f26cf39180273c6c8ac6d51f7b74510bd69dafa Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 14:21:08 +0600 Subject: [PATCH 19/26] Driver packs are shoowing properly --- source/ubl-settings-video.c | 27 ++++++++++++++++++--------- source/ubl-settings-video.h | 1 + ubl-settings-video.glade | 22 ++++++++++++---------- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index aea0871..77f3216 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -990,12 +990,13 @@ dictionary *yon_proprieary_get(){ drivers[drivers_found]=yon_char_divide_search(drivers[drivers_found],"\n",-1); for (int i=0;idata,&size,";"); - gtk_list_store_append(list,&iter); - gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + printf("%s\n",str[0]); + if (strcmp(str[0],"")!=0&&str[0]){ + gtk_list_store_append(videoconfig.list,&iter); + gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + } + else{ + gtk_list_store_append(videoconfig.list2,&iter); + gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + } if (strstr(dict->key," installed")) - gtk_list_store_set(list,&iter,0,1,-1); + gtk_list_store_set(videoconfig.list,&iter,0,1,-1); } } } @@ -1487,6 +1495,7 @@ void yon_setup_widgets(widgets_dict *widgets) gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore6")); + videoconfig.list2 = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore1")); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->proprietaryTreeView),GTK_TREE_MODEL(videoconfig.list)); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index c4120fe..c7fa092 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -117,6 +117,7 @@ typedef struct proprietary_config proprietary; dictionary *supported_resolutions; GtkListStore *list; + GtkListStore *list2; char *failsafenVidia; char *failsafeATI; int descreteOnly; diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 6d6de85..20af17d 100644 --- a/ubl-settings-video.glade +++ b/ubl-settings-video.glade @@ -1361,17 +1361,19 @@ False go-bottom-symbolic - - - - - + - - - + + + - + + + + + + + @@ -2203,7 +2205,7 @@ True True 5 - liststore6 + liststore1 0 vertical True -- 2.35.1 From 826612f0b2c360ad4f1c53f451598e2416691c34 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 14:23:06 +0600 Subject: [PATCH 20/26] make warning fixes --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 8b1a16c..5cfec29 100644 --- a/Makefile +++ b/Makefile @@ -100,17 +100,17 @@ install: check uninstall @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm655 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ + install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ echo "$${FILE_PO}"; \ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done @for SIZE in 16 32 48; do \ - install -dm655 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ + install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ done - @install -dm655 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" + @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/" "com.ublinux.${PKGNAME}.display.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/" "com.ublinux.${PKGNAME}.video-card.svg" @@ -122,7 +122,7 @@ install: check uninstall @install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.pkexec.${PKGNAME}.exec.policy" @install -Dm655 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm655 "${DESTDIR}${PREFIX}/share/applications" + @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -dm655 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" -- 2.35.1 From 03f72c1b3691fb96c230b8bd5c5f468a0f5d50db Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 14:44:13 +0600 Subject: [PATCH 21/26] New translatable strings added --- source/ubl-settings-video-strings.h | 1 + ubl-settings-video.pot | 150 ++++++++++++++------------ ubl-settings-video_ru.po | 157 ++++++++++++++++------------ 3 files changed, 173 insertions(+), 135 deletions(-) diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h index e3fb4f5..d400317 100644 --- a/source/ubl-settings-video-strings.h +++ b/source/ubl-settings-video-strings.h @@ -76,6 +76,7 @@ #define MAIN_SETTINGS_LABEL _("Main settings") #define DEVICES_DRIVERS_LABEL _("Devices and drivers") #define DRIVER_MODULES_LABEL _("Driver modules") +#define READ_DOCUMENTATION_LABEL _("Read documentation") #define WEB_VIEW_TITLE_LABEL _("UBLinux Settings Web View") diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index 93a6c48..2dcdceb 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -17,76 +17,36 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-video.c:298 source/ubl-settings-video.c:354 +#: source/ubl-settings-video.c:313 source/ubl-settings-video.c:369 #: source/ubl-settings-video-strings.h:62 msgid "Don't use" msgstr "" -#: source/ubl-settings-video-strings.h:63 -msgid "Driver list is currently loading..." -msgstr "" - -#: source/ubl-settings-video-strings.h:64 -msgid "Driver list is failed to load." -msgstr "" - -#: source/ubl-settings-video-strings.h:65 -msgid "Deleting driver..." -msgstr "" - -#: source/ubl-settings-video-strings.h:66 -msgid "Installing driver..." -msgstr "" - -#: source/ubl-settings-video-strings.h:67 -msgid "Driver operation is done." -msgstr "" - -#: source/ubl-settings-video-strings.h:68 -msgid "Nothing was selected." -msgstr "" - -#: source/ubl-settings-video-strings.h:69 -msgid "Failed to load available drivers for your system... Installed driver list is shown." -msgstr "" - -#: source/ubl-settings-video-strings.h:71 -msgid "Would you like to read documentation in the Web?" -msgstr "" - -#: source/ubl-settings-video-strings.h:72 -msgid "You will be redirected to documentation website where documentation is translated and supported by community." -msgstr "" - -#: source/ubl-settings-video-strings.h:73 -msgid "Always redirect to online documentation" +#: source/ubl-settings-video.c:653 +msgid "UBlinux Video Configuration" msgstr "" -#: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 -msgid "UBLinux Video Configuration" -msgstr "" - -#: source/ubl-settings-video.c:583 +#: source/ubl-settings-video.c:655 msgid "Project Home Page" msgstr "" -#: source/ubl-settings-video.c:584 +#: source/ubl-settings-video.c:656 msgid "Videocard and monitor configuration manager" msgstr "" -#: source/ubl-settings-video.h:27 +#: source/ubl-settings-video.h:33 msgid "Failed to load global configuration" msgstr "" -#: source/ubl-settings-video.h:28 +#: source/ubl-settings-video.h:34 msgid "Failed to load local configuration" msgstr "" -#: source/ubl-settings-video.h:30 +#: source/ubl-settings-video.h:36 msgid "Saving to global configuration Succeeded" msgstr "" -#: source/ubl-settings-video.h:31 +#: source/ubl-settings-video.h:37 msgid "Saving to local configuration Succeeded" msgstr "" @@ -288,6 +248,10 @@ msgstr "" msgid "Extra" msgstr "" +#: source/ubl-settings-video-strings.h:40 +msgid "UBLinux Video Configuration" +msgstr "" + #: source/ubl-settings-video-strings.h:41 msgid "Load" msgstr "" @@ -364,78 +328,130 @@ msgstr "" msgid "Accept" msgstr "" +#: source/ubl-settings-video-strings.h:63 +msgid "Driver list is currently loading..." +msgstr "" + #: source/ubl-settings-video-strings.h:64 -msgid "Information" +msgid "Driver list is failed to load." msgstr "" #: source/ubl-settings-video-strings.h:65 -msgid "Drivers" +msgid "Deleting driver..." msgstr "" #: source/ubl-settings-video-strings.h:66 -msgid "Main settings" +msgid "Installing driver..." msgstr "" #: source/ubl-settings-video-strings.h:67 -msgid "Devices and drivers" +msgid "Driver operation is done." msgstr "" #: source/ubl-settings-video-strings.h:68 +msgid "Nothing was selected." +msgstr "" + +#: source/ubl-settings-video-strings.h:69 +msgid "" +"Failed to load available drivers for your system... Installed driver list is " +"shown." +msgstr "" + +#: source/ubl-settings-video-strings.h:71 +msgid "Would you like to read documentation in the Web?" +msgstr "" + +#: source/ubl-settings-video-strings.h:72 +msgid "" +"You will be redirected to documentation website where documentation is " +"translated and supported by community." +msgstr "" + +#: source/ubl-settings-video-strings.h:73 +msgid "Always redirect to online documentation" +msgstr "" + +#: source/ubl-settings-video-strings.h:74 +msgid "Information" +msgstr "" + +#: source/ubl-settings-video-strings.h:75 +msgid "Drivers" +msgstr "" + +#: source/ubl-settings-video-strings.h:76 +msgid "Main settings" +msgstr "" + +#: source/ubl-settings-video-strings.h:77 +msgid "Devices and drivers" +msgstr "" + +#: source/ubl-settings-video-strings.h:78 msgid "Driver modules" msgstr "" -#: source/ubl-settings-video-strings.h:83 +#: source/ubl-settings-video-strings.h:79 +msgid "Read documentation" +msgstr "" + +#: source/ubl-settings-video-strings.h:81 +msgid "UBLinux Settings Web View" +msgstr "" + +#: source/ubl-settings-video-strings.h:95 msgid "Error: Port must be chosen to save" msgstr "" -#: source/ubl-settings-video-strings.h:84 +#: source/ubl-settings-video-strings.h:96 msgid "Monitor configuration succeedeed" msgstr "" -#: source/ubl-settings-video-strings.h:86 +#: source/ubl-settings-video-strings.h:98 msgid "Global configuration loading succseeded." msgstr "" -#: source/ubl-settings-video-strings.h:87 +#: source/ubl-settings-video-strings.h:99 msgid "Local configuration loading succseeded." msgstr "" -#: source/ubl-settings-video-strings.h:89 +#: source/ubl-settings-video-strings.h:101 msgid "Local and global configuration saving succseeded." msgstr "" -#: source/ubl-settings-video-strings.h:90 +#: source/ubl-settings-video-strings.h:102 msgid "Global configuration saving succseeded." msgstr "" -#: source/ubl-settings-video-strings.h:91 +#: source/ubl-settings-video-strings.h:103 msgid "Local configuration saving succseeded." msgstr "" -#: source/ubl-settings-video-strings.h:93 +#: source/ubl-settings-video-strings.h:105 msgid "Yes" msgstr "" -#: source/ubl-settings-video-strings.h:94 +#: source/ubl-settings-video-strings.h:106 msgid "No" msgstr "" -#: source/ubl-settings-video-strings.h:96 +#: source/ubl-settings-video-strings.h:108 msgid "Description" msgstr "" -#: source/ubl-settings-video-strings.h:97 +#: source/ubl-settings-video-strings.h:109 msgid "Vendor" msgstr "" -#: source/ubl-settings-video-strings.h:98 +#: source/ubl-settings-video-strings.h:110 msgid "Model" msgstr "" -#: source/ubl-settings-video-strings.h:99 +#: source/ubl-settings-video-strings.h:111 msgid "Kernel driver in use" msgstr "" -#: source/ubl-settings-video-strings.h:100 +#: source/ubl-settings-video-strings.h:112 msgid "Kernel modules" msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index b756a3c..ccee342 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -17,77 +17,37 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-video.c:298 source/ubl-settings-video.c:354 +#: source/ubl-settings-video.c:313 source/ubl-settings-video.c:369 #: source/ubl-settings-video-strings.h:62 msgid "Don't use" msgstr "Не использовать" -#: source/ubl-settings-video-strings.h:63 -msgid "Driver list is currently loading..." -msgstr "Список драйверов загружается..." - -#: source/ubl-settings-video-strings.h:64 -msgid "Driver list is failed to load." -msgstr "Не удалось загрузить список драйверов" - -#: source/ubl-settings-video-strings.h:65 -msgid "Deleting driver..." -msgstr "Удаление драйвера..." - -#: source/ubl-settings-video-strings.h:66 -msgid "Installing driver..." -msgstr "Установка драйвера..." - -#: source/ubl-settings-video-strings.h:67 -msgid "Driver operation is done." -msgstr "Операция завершена" - -#: source/ubl-settings-video-strings.h:68 -msgid "Nothing was selected." -msgstr "Выберите драйвер." - -#: source/ubl-settings-video-strings.h:69 -msgid "Failed to load available drivers for your system... Installed driver list is shown." -msgstr "Не удалось загрузить список драйверов, доступных для вашей системы. Выведен список установленных драйверов." - -#: source/ubl-settings-video-strings.h:71 -msgid "Would you like to read documentation in the Web?" -msgstr "Вы хотите прочитать справку в Сети?" - -#: source/ubl-settings-video-strings.h:72 -msgid "You will be redirected to documentation website where documentation is translated and supported by community." -msgstr "Вы будете перенаправлены на сайт с документацией где страницы помощи " -"переводятся и поддерживаются сообществом." - -#: source/ubl-settings-video-strings.h:73 -msgid "Always redirect to online documentation" -msgstr "Всегда перенаправлять" - -#: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40 -msgid "UBLinux Video Configuration" +#: source/ubl-settings-video.c:653 +#, fuzzy +msgid "UBlinux Video Configuration" msgstr "Видеокарта/Экран" -#: source/ubl-settings-video.c:583 +#: source/ubl-settings-video.c:655 msgid "Project Home Page" msgstr "Домашняя страница проекта" -#: source/ubl-settings-video.c:584 +#: source/ubl-settings-video.c:656 msgid "Videocard and monitor configuration manager" msgstr "Настройка вывода изображения" -#: source/ubl-settings-video.h:27 +#: source/ubl-settings-video.h:33 msgid "Failed to load global configuration" msgstr "Ошибка загрузки глобальной конфигурации" -#: source/ubl-settings-video.h:28 +#: source/ubl-settings-video.h:34 msgid "Failed to load local configuration" msgstr "Ошибка загрузки локальной конфигурации" -#: source/ubl-settings-video.h:30 +#: source/ubl-settings-video.h:36 msgid "Saving to global configuration Succeeded" msgstr "Успешное сохранение глобальной конфигурации" -#: source/ubl-settings-video.h:31 +#: source/ubl-settings-video.h:37 msgid "Saving to local configuration Succeeded" msgstr "Успешное сохранение локальной конфигурации" @@ -295,6 +255,10 @@ msgstr "Исправить разрыв кадров (nVidia)" msgid "Extra" msgstr "Дополнительно" +#: source/ubl-settings-video-strings.h:40 +msgid "UBLinux Video Configuration" +msgstr "Видеокарта/Экран" + #: source/ubl-settings-video-strings.h:41 msgid "Load" msgstr "Загрузить" @@ -371,79 +335,136 @@ msgstr "Устройства" msgid "Accept" msgstr "Принять" +#: source/ubl-settings-video-strings.h:63 +msgid "Driver list is currently loading..." +msgstr "Список драйверов загружается..." + #: source/ubl-settings-video-strings.h:64 +msgid "Driver list is failed to load." +msgstr "Не удалось загрузить список драйверов" + +#: source/ubl-settings-video-strings.h:65 +msgid "Deleting driver..." +msgstr "Удаление драйвера..." + +#: source/ubl-settings-video-strings.h:66 +msgid "Installing driver..." +msgstr "Установка драйвера..." + +#: source/ubl-settings-video-strings.h:67 +msgid "Driver operation is done." +msgstr "Операция завершена" + +#: source/ubl-settings-video-strings.h:68 +msgid "Nothing was selected." +msgstr "Выберите драйвер." + +#: source/ubl-settings-video-strings.h:69 +msgid "" +"Failed to load available drivers for your system... Installed driver list is " +"shown." +msgstr "" +"Не удалось загрузить список драйверов, доступных для вашей системы. Выведен " +"список установленных драйверов." + +#: source/ubl-settings-video-strings.h:71 +msgid "Would you like to read documentation in the Web?" +msgstr "Вы хотите прочитать справку в Сети?" + +#: source/ubl-settings-video-strings.h:72 +msgid "" +"You will be redirected to documentation website where documentation is " +"translated and supported by community." +msgstr "" +"Вы будете перенаправлены на сайт с документацией где страницы помощи " +"переводятся и поддерживаются сообществом." + +#: source/ubl-settings-video-strings.h:73 +msgid "Always redirect to online documentation" +msgstr "Всегда перенаправлять" + +#: source/ubl-settings-video-strings.h:74 msgid "Information" msgstr "Информация" -#: source/ubl-settings-video-strings.h:65 +#: source/ubl-settings-video-strings.h:75 msgid "Drivers" msgstr "Драйвера" -#: source/ubl-settings-video-strings.h:66 +#: source/ubl-settings-video-strings.h:76 msgid "Main settings" msgstr "Основные настройки" -#: source/ubl-settings-video-strings.h:67 +#: source/ubl-settings-video-strings.h:77 msgid "Devices and drivers" msgstr "Устройства и драйвера" -#: source/ubl-settings-video-strings.h:68 +#: source/ubl-settings-video-strings.h:78 msgid "Driver modules" msgstr "Модули драйвера" -#: source/ubl-settings-video-strings.h:83 +#: source/ubl-settings-video-strings.h:79 +#, fuzzy +msgid "Read documentation" +msgstr "Справка" + +#: source/ubl-settings-video-strings.h:81 +msgid "UBLinux Settings Web View" +msgstr "" + +#: source/ubl-settings-video-strings.h:95 msgid "Error: Port must be chosen to save" msgstr "Ошибка: Выберите порт для сохранения" -#: source/ubl-settings-video-strings.h:84 +#: source/ubl-settings-video-strings.h:96 msgid "Monitor configuration succeedeed" msgstr "Настройки экрана сохранены" -#: source/ubl-settings-video-strings.h:86 +#: source/ubl-settings-video-strings.h:98 msgid "Global configuration loading succseeded." msgstr "Успешная загрузка глобальной конфигурации" -#: source/ubl-settings-video-strings.h:87 +#: source/ubl-settings-video-strings.h:99 msgid "Local configuration loading succseeded." msgstr "Успешная загрузка локальной конфигурации" -#: source/ubl-settings-video-strings.h:89 +#: source/ubl-settings-video-strings.h:101 msgid "Local and global configuration saving succseeded." msgstr "Успешное сохранение глобальной и локальной конфигурации" -#: source/ubl-settings-video-strings.h:90 +#: source/ubl-settings-video-strings.h:102 msgid "Global configuration saving succseeded." msgstr "Успешное сохранение глобальной конфигурации" -#: source/ubl-settings-video-strings.h:91 +#: source/ubl-settings-video-strings.h:103 msgid "Local configuration saving succseeded." msgstr "Успешная загрузка локальной конфигурации" -#: source/ubl-settings-video-strings.h:93 +#: source/ubl-settings-video-strings.h:105 msgid "Yes" msgstr "Да" -#: source/ubl-settings-video-strings.h:94 +#: source/ubl-settings-video-strings.h:106 msgid "No" msgstr "Нет" -#: source/ubl-settings-video-strings.h:96 +#: source/ubl-settings-video-strings.h:108 msgid "Description" msgstr "Описание" -#: source/ubl-settings-video-strings.h:97 +#: source/ubl-settings-video-strings.h:109 msgid "Vendor" msgstr "Производитель" -#: source/ubl-settings-video-strings.h:98 +#: source/ubl-settings-video-strings.h:110 msgid "Model" msgstr "Модель" -#: source/ubl-settings-video-strings.h:99 +#: source/ubl-settings-video-strings.h:111 msgid "Kernel driver in use" msgstr "Используемый драйвер ядра" -#: source/ubl-settings-video-strings.h:100 +#: source/ubl-settings-video-strings.h:112 msgid "Kernel modules" msgstr "Модули ядра" -- 2.35.1 From 57a1e578b31b58c8c74bdc784b3923223ca3d74d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 14:53:22 +0600 Subject: [PATCH 22/26] Documentation window buttons translation --- source/ubl-settings-video.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 77f3216..4151d3a 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -633,6 +633,8 @@ void on_link(GtkWidget *self, char* link, gpointer user_data){ gtk_label_set_text(GTK_LABEL(headQuestionLabel),HELP_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(textLabel),HELP_INFO_LABEL); gtk_button_set_label(GTK_BUTTON(alwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL); + gtk_button_set_label(GTK_BUTTON(readButton),READ_DOCUMENTATION_LABEL); + gtk_button_set_label(GTK_BUTTON(cancelButton),MONITOR_CANCEL_LABEL); gtk_widget_show(sureWindow); }else { -- 2.35.1 From 5e32cce1f16b845f57bca777c360f20b4f88e83f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 15:10:41 +0600 Subject: [PATCH 23/26] Fixed info, installing and deleting driver packs --- VERSION.md | 2 +- source/ubl-settings-video.c | 6 +++--- source/ubl-settings-video.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION.md b/VERSION.md index 12ebd01..d2d639a 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -VERSION 1.0 +VERSION 1.6 \ No newline at end of file diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 4151d3a..d819ff9 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -181,7 +181,7 @@ void on_driver_install(GtkWidget *self,widgets_dict *widgets){ GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,1,&name,-1); + gtk_tree_model_get(list_s,&iter,2,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); } else { yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); @@ -209,7 +209,7 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,1,&name,-1); + gtk_tree_model_get(list_s,&iter,2,&name,-1); yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); } else { yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); @@ -243,7 +243,7 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){ GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ - gtk_tree_model_get(list_s,&iter,1,&name,-1); + gtk_tree_model_get(list_s,&iter,2,&name,-1); pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); } else { yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index c7fa092..62eb651 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -90,7 +90,7 @@ char *local; typedef char *string; -string version_application = "1.0"; +string version_application = "1.6"; #define _(String) gettext(String) -- 2.35.1 From 6f9e325337769b3c8046b6cd957f091d23c27c07 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 15:18:14 +0600 Subject: [PATCH 24/26] Version --- VERSION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.md b/VERSION.md index d2d639a..12ebd01 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -VERSION 1.6 \ No newline at end of file +VERSION 1.0 -- 2.35.1 From 764933ee21ec2c856de331cfe2e02ef47c7dd44f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 15:23:19 +0600 Subject: [PATCH 25/26] Fixed overloading of driver pack menu --- source/ubl-settings-video.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index d819ff9..1daa4a1 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1042,6 +1042,7 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ if(videoconfig.proprietary){ dictionary *dict=NULL; gtk_list_store_clear(videoconfig.list); + gtk_list_store_clear(videoconfig.list2); for_dictionaries(dict,videoconfig.proprietary){ GtkTreeIter iter; int size=0; -- 2.35.1 From 9323fe26d162f704a52390fc32ee376074b41de7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 12 May 2023 15:35:20 +0600 Subject: [PATCH 26/26] Translation for driver tables --- source/ubl-settings-video.c | 4 ++-- ubl-settings-video.pot | 20 ++++++++++++++++++++ ubl-settings-video_ru.po | 13 +++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 1daa4a1..bb58c32 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -1050,11 +1050,11 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ printf("%s\n",str[0]); if (strcmp(str[0],"")!=0&&str[0]){ gtk_list_store_append(videoconfig.list,&iter); - gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); } else{ gtk_list_store_append(videoconfig.list2,&iter); - gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,str[3],5,str[4],-1); + gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); } if (strstr(dict->key," installed")) gtk_list_store_set(videoconfig.list,&iter,0,1,-1); diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index 2dcdceb..d718735 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -455,3 +455,23 @@ msgstr "" #: source/ubl-settings-video-strings.h:112 msgid "Kernel modules" msgstr "" + +#: source/ubl-settings-video-strings.h:112 +msgid "UBLinux module includes NVIDIA 340xx driver and utilities" +msgstr "" + +#: source/ubl-settings-video-strings.h:112 +msgid "UBLinux module includes NVIDIA 390xx driver and utilities" +msgstr "" + +#: source/ubl-settings-video-strings.h:112 +msgid "UBLinux module includes NVIDIA 470xx driver and utilities" +msgstr "" + +#: source/ubl-settings-video-strings.h:112 +msgid "UBLinux module includes NVIDIA 510xx driver and utilities" +msgstr "" + +#: source/ubl-settings-video-strings.h:112 +msgid "UBLinux module includes NVIDIA 510xx driver and utilities" +msgstr "" diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po index ccee342..86d8bad 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -484,3 +484,16 @@ msgstr "Модули ядра" #~ msgid "DPMS off" #~ msgstr "DMPS выключен" + +msgid "UBLinux module includes NVIDIA 340xx driver and utilities" +msgstr "UBLinux пакет драйвера и утилиты NVIDIA 340xx" + +msgid "UBLinux module includes NVIDIA 390xx driver and utilities" +msgstr "UBLinux пакет драйвера и утилиты NVIDIA 390xx" + +msgid "UBLinux module includes NVIDIA 470xx driver and utilities" +msgstr "UBLinux пакет драйвера и утилиты NVIDIA 470xx" + +msgid "UBLinux module includes NVIDIA 510xx driver and utilities" +msgstr "UBLinux пакет драйвера и утилиты NVIDIA 510xx" + -- 2.35.1