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" 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/CMakeLists.txt b/source/CMakeLists.txt index b0fba42..29d9ec6 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -8,6 +8,19 @@ 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 +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-cm.h) set(LIBRARIES ${GTK_LIBRARIES} @@ -28,5 +41,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-strings.h b/source/ubl-settings-video-strings.h index 3693de7..d400317 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,13 +60,25 @@ #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 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 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 READ_DOCUMENTATION_LABEL _("Read documentation") +#define WEB_VIEW_TITLE_LABEL _("UBLinux Settings Web View") #define MONITOR_POSITION_LEFT_PARAMETER "lo:" #define MONITOR_POSITION_RIGHT_PARAMETER "ro:" diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 9b223b3..bb58c32 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; @@ -33,10 +31,8 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ config->position_port=NULL; config->port=NULL; config->resolution=NULL; - config->frequency=NULL; - 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); + config->frequency=0; + 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){ @@ -52,6 +48,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 +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); + 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) @@ -162,48 +161,59 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){ } void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ + 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); 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 { + 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){ - + 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); 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,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); + } } void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ - + 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); 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 { + 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){ - + 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); 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,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); + } } void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){ @@ -215,9 +225,12 @@ 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 { + yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } } void on_driver_info(GtkWidget *self,widgets_dict *widgets){ @@ -229,10 +242,12 @@ 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,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); + } } void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ @@ -311,11 +326,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)); @@ -378,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) @@ -403,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); } } @@ -422,17 +427,18 @@ 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); } } 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))); } @@ -488,6 +494,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); @@ -584,6 +601,47 @@ 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_button_set_label(GTK_BUTTON(readButton),READ_DOCUMENTATION_LABEL); + gtk_button_set_label(GTK_BUTTON(cancelButton),MONITOR_CANCEL_LABEL); + + gtk_widget_show(sureWindow); + }else { + on_read_documentation(NULL,NULL); + } +} + /**void on_about() * [EN] */ @@ -594,8 +652,9 @@ 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")); + g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL); gtk_widget_set_visible(hideButtonBox, 0); gtk_widget_show(window); } @@ -611,6 +670,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; @@ -692,9 +752,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); @@ -845,15 +910,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); } @@ -917,6 +982,7 @@ void on_config_fill_interface(widgets_dict *widgets) * [EN] */ dictionary *yon_proprieary_get(){ + 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); @@ -926,16 +992,46 @@ 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],-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(videoconfig.list); + gtk_list_store_clear(videoconfig.list2); + for_dictionaries(dict,videoconfig.proprietary){ + GtkTreeIter iter; + int size=0; + config_str str = yon_char_parse((char*)dict->data,&size,";"); + 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(videoconfig.list,&iter,0,1,-1); + } } } @@ -1064,7 +1170,6 @@ void yon_setup_config(char *configcommand) for (int i=0;iposition_port=NULL; monitor->resolution=NULL; monitor->resolutionCapabilities=NULL; - monitor->frequency=NULL; + monitor->frequency=0; monitor->rotation=0; monitor->stringparameters=NULL; monitor->dpms=0; @@ -1149,6 +1254,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;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 +1471,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 +1495,15 @@ 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")); + 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)); + 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); @@ -1414,7 +1525,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); @@ -1572,13 +1683,10 @@ 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); - 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 82d5b18..62eb651 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 @@ -16,6 +20,8 @@ #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" @@ -66,6 +72,7 @@ #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" #define get_proprietary_drivers_command "LC_ALL=C pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" +#define get_proprietary_drivers_local_command "LC_ALL=C pacman -Qq |grep -E \"ubm-nvidia-\"" // #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" @@ -83,7 +90,7 @@ char *local; typedef char *string; -string version_application = "1.0"; +string version_application = "1.6"; #define _(String) gettext(String) @@ -101,6 +108,7 @@ typedef struct { typedef struct { + int alwaysredirect; config_str loaded_config; int configsize; int autoChooseDrivers; @@ -109,6 +117,7 @@ typedef struct proprietary_config proprietary; dictionary *supported_resolutions; GtkListStore *list; + GtkListStore *list2; char *failsafenVidia; char *failsafeATI; int descreteOnly; @@ -139,7 +148,7 @@ typedef struct char *port; char *resolution; config_str resolutionCapabilities; - char *frequency; + int frequency; int rotation; char *stringparameters; int dpms; @@ -272,6 +281,8 @@ typedef struct GtkWidget *PlugBox; GtkWidget *PlugSaveBox; GtkWidget *PlugLoadBox; + + GtkWidget *MenusTab; } widgets_dict; typedef struct 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 diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 866c980..1f6e44d 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;i-1){ gtk_widget_hide(gtk_widget_get_toplevel(main_window)); @@ -1063,4 +987,47 @@ 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]. + * [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"); + 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..3b254bb 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) @@ -65,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); @@ -150,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 { @@ -173,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 @@ -198,21 +215,83 @@ 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 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 diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade index 96a64d2..20af17d 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 @@ -147,9 +404,6 @@ 0 - - - @@ -1107,17 +1361,19 @@ False go-bottom-symbolic - - - - - + - - - + + + + + + + - + + + @@ -1125,6 +1381,8 @@ + + @@ -1239,7 +1497,7 @@ - + True True @@ -1780,6 +2038,7 @@ 1 vertical True + 4 @@ -1811,7 +2070,7 @@ - 2 + 3 @@ -1826,7 +2085,7 @@ 150 - 3 + 4 @@ -1841,7 +2100,7 @@ 220 - 4 + 5 @@ -1946,11 +2205,11 @@ True True 5 - liststore6 + liststore1 0 vertical True - 2 + 4 @@ -1969,9 +2228,12 @@ Package - + + word + 175 + - 1 + 2 @@ -1982,7 +2244,7 @@ - 2 + 3 @@ -1997,7 +2259,7 @@ 150 - 3 + 4 @@ -2012,7 +2274,7 @@ 220 - 4 + 5 diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot index a3ed2fb..d718735 100644 --- a/ubl-settings-video.pot +++ b/ubl-settings-video.pot @@ -10,43 +10,43 @@ 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" -#: 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.c:581 source/ubl-settings-video-strings.h:40 +#: source/ubl-settings-video.c:653 msgid "UBlinux Video Configuration" msgstr "" -#: source/ubl-settings-video.c:583 -msgid "Progect Home Page" +#: 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 "" @@ -248,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 "" @@ -324,78 +328,150 @@ 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 "" + +#: 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 f9744c5..86d8bad 100644 --- a/ubl-settings-video_ru.po +++ b/ubl-settings-video_ru.po @@ -17,36 +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.c:581 source/ubl-settings-video-strings.h:40 +#: source/ubl-settings-video.c:653 +#, fuzzy msgid "UBlinux Video Configuration" msgstr "Видеокарта/Экран" -#: source/ubl-settings-video.c:583 -msgid "Progect Home Page" +#: 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 "Успешное сохранение локальной конфигурации" @@ -76,35 +77,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" @@ -254,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 "Загрузить" @@ -330,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 "Модули ядра" @@ -422,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" + diff --git a/video-drivers.csv b/video-drivers.csv index 78f380e..7f38275 100644 --- a/video-drivers.csv +++ b/video-drivers.csv @@ -1,8 +1,9 @@ -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; +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