Merge pull request 'master' (#45) from YanTheKaller/ubl-settings-video:master into master

Reviewed-on: #45
pull/52/head v2.7
Dmitry Razumov 2 years ago
commit bf2036ed9c

@ -2,6 +2,8 @@
<gresources> <gresources>
<gresource prefix="/com/ublinux/ui"> <gresource prefix="/com/ublinux/ui">
<file>ubl-settings-video.glade</file> <file>ubl-settings-video.glade</file>
<file>ubl-settings-video-monitor.glade</file>
<file>ubl-settings-video-configuration.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubl-settings-video.css</file> <file>ubl-settings-video.css</file>

@ -36,6 +36,8 @@ add_custom_target(GLADE ubl-settings-video.glade)
set(DEPENDFILES set(DEPENDFILES
../ubl-settings-video.glade ../ubl-settings-video.glade
../ubl-settings-video-monitor.glade
../ubl-settings-video-configuration.glade
../gresource.xml ../gresource.xml
../ubl-settings-video-banner.png ../ubl-settings-video-banner.png
../ubl-settings-video.css ../ubl-settings-video.css

@ -30,7 +30,7 @@ void on_resized(GtkWidget *window, GdkEventConfigure *event){
void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*); monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*);
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){
yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(MONITOR_PORT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return; return;
} }
config->main=0; config->main=0;
@ -44,7 +44,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
config->port=NULL; config->port=NULL;
config->resolution=NULL; config->resolution=NULL;
config->frequency=0; config->frequency=0;
yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_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)); config->port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo));
window->config->key = yon_char_new(config->port); window->config->key = yon_char_new(config->port);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationParameterLineCheck))==0){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationParameterLineCheck))==0){
@ -97,7 +97,7 @@ void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){
gtk_widget_destroy(widgets->TerminalRevealer); gtk_widget_destroy(widgets->TerminalRevealer);
yon_proprieary_get(); yon_proprieary_get();
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); 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); yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
@ -174,44 +174,44 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){
} }
void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ 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); yon_ubl_status_box_render(PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ 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,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); yon_terminal_start(widgets,yon_char_append(install_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
void on_driver_install(GtkWidget *self,widgets_dict *widgets){ 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); yon_ubl_status_box_render(PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&name,-1); gtk_tree_model_get(list_s,&iter,2,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name)); yon_terminal_start(widgets,yon_char_append(install_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){ 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); yon_ubl_status_box_render(PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){ 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,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); yon_terminal_start(widgets,yon_char_append(delete_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
@ -253,16 +253,16 @@ void on_driver_selection_change(GtkWidget *self, widgets_dict *widgets){
} }
void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ 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); yon_ubl_status_box_render(PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter; GtkTreeIter iter;
char *name; char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list); GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&name,-1); gtk_tree_model_get(list_s,&iter,2,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name)); yon_terminal_start(widgets,yon_char_append(delete_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
@ -277,9 +277,9 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ 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,1,&name,-1);
pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name)); pthread_create(&tid,&attr,(void*)yon_launch,yon_char_append(get_info_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
@ -294,9 +294,9 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){ if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&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)); pthread_create(&tid,&attr,(void*)yon_launch,yon_char_append(get_info_proprietary_command,name));
} else { } else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
@ -318,7 +318,7 @@ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
if (window->curport){ if (window->curport){
gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(window->mainMonitorConfigurationBox)),window->curport); gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(window->mainMonitorConfigurationBox)),window->curport);
dict=yon_dictionary_find(&videoconfig.supported_resolutions,window->curport); dict=yon_dictionary_get(&videoconfig.supported_resolutions,window->curport);
if (dict){ if (dict){
resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*); resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*);
int found_size=0; int found_size=0;
@ -336,7 +336,7 @@ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
} }
} }
} }
yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size); yon_gtk_combo_box_text_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size);
} }
} }
} }
@ -373,26 +373,26 @@ char *yon_configuration_get_save_command(char *command){
str=yon_char_new(command); str=yon_char_new(command);
if (videoconfig.autoChooseDrivers==0){ if (videoconfig.autoChooseDrivers==0){
if (strcmp(videoconfig.failsafenVidia, dntus)!=0) if (strcmp(videoconfig.failsafenVidia, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFENVIDIA=", videoconfig.failsafenVidia)); str = yon_char_append(str, yon_char_append(" FAILSAFENVIDIA=", videoconfig.failsafenVidia));
else else
str = yon_char_get_augumented(str," FAILSAFENVIDIA=\"\""); str = yon_char_append(str," FAILSAFENVIDIA=\"\"");
if (strcmp(videoconfig.failsafeATI, dntus)!=0) if (strcmp(videoconfig.failsafeATI, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFEATI=", videoconfig.failsafeATI)); str = yon_char_append(str, yon_char_append(" FAILSAFEATI=", videoconfig.failsafeATI));
else else
str = yon_char_get_augumented(str," FAILSAFEATI=\"\""); str = yon_char_append(str," FAILSAFEATI=\"\"");
str=yon_char_get_augumented(str," VGADRV_AUTO=NO"); str=yon_char_append(str," VGADRV_AUTO=NO");
} else { } else {
str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL); str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL);
} }
if (videoconfig.optirun&&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)); str = yon_char_append(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL));
else else
str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL)); str = yon_char_append(str, yon_char_unite(" OPTIRUN=\"\"",NULL));
if (videoconfig.primusrun&&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)); str = yon_char_append(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL));
else else
str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL)); str = yon_char_append(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL));
dictionary *dict=NULL; dictionary *dict=NULL;
for (int i=0;i<videoconfig.portssize;i++) for (int i=0;i<videoconfig.portssize;i++)
@ -415,9 +415,9 @@ void on_resolutions_unsupported_show(GtkWidget *self, monitor_edit_window *windo
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0);
if (((monitorconfig*)window->config->data)->show_usupported==1){ if (((monitorconfig*)window->config->data)->show_usupported==1){
yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,videoconfig.resolutions,videoconfig.resolutionssize); yon_gtk_combo_box_text_fill(window->templateMonitorConfigurationResolutionCombo,videoconfig.resolutions,videoconfig.resolutionssize);
} else { } else {
yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,((monitorconfig*)window->config->data)->resolutionCapabilities,((monitorconfig*)window->config->data)->resolution_size); yon_gtk_combo_box_text_fill(window->templateMonitorConfigurationResolutionCombo,((monitorconfig*)window->config->data)->resolutionCapabilities,((monitorconfig*)window->config->data)->resolution_size);
} }
} }
@ -427,13 +427,13 @@ char *yon_configuration_get_remove_command(char *command){
char *dntus = NULL; char *dntus = NULL;
dntus=_("Don't use"); dntus=_("Don't use");
str=yon_char_new(command); str=yon_char_new(command);
str = yon_char_get_augumented(str, " FAILSAFENVIDIA"); str = yon_char_append(str, " FAILSAFENVIDIA");
str = yon_char_get_augumented(str, " FAILSAFATI"); str = yon_char_append(str, " FAILSAFATI");
str = yon_char_get_augumented(str, " OPTIRUN"); str = yon_char_append(str, " OPTIRUN");
str = yon_char_get_augumented(str, " PRIMUSRUN"); str = yon_char_append(str, " PRIMUSRUN");
dictionary *dict=NULL; dictionary *dict=NULL;
for(int i=0;i<videoconfig.portssize;i++){ for(int i=0;i<videoconfig.portssize;i++){
str = yon_char_get_augumented(str, yon_char_get_augumented(" ",XORG_MONITOR(videoconfig.ports[i]))); str = yon_char_append(str, yon_char_append(" ",XORG_MONITOR(videoconfig.ports[i])));
} }
if (strcmp(str,command)!=0) if (strcmp(str,command)!=0)
return str; return str;
@ -447,15 +447,15 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
char *delstr=NULL; char *delstr=NULL;
str=yon_configuration_get_save_command(save_drivers_local_command); str=yon_configuration_get_save_command(save_drivers_local_command);
if (str){ if (str){
yon_config_save(str); yon_launch(str);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
} }
void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets) void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets)
{ {
on_configuration_save_global_local(self, widgets); on_configuration_save_global_local(self, widgets);
yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets) void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets)
@ -465,8 +465,8 @@ void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets)
char *delstr=NULL; char *delstr=NULL;
str=yon_configuration_get_save_command(save_drivers_global_local_command); str=yon_configuration_get_save_command(save_drivers_global_local_command);
if (str){ if (str){
yon_config_save(str); yon_launch(str);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
} }
@ -477,8 +477,8 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
char *delstr=NULL; char *delstr=NULL;
str=yon_configuration_get_save_command(save_drivers_global_command); str=yon_configuration_get_save_command(save_drivers_global_command);
if (str){ if (str){
yon_config_save(str); yon_launch(str);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
} }
@ -500,7 +500,7 @@ void on_configuration_load_local(GtkWidget *self, widgets_dict *widgets)
yon_setup_config(load_drivers_local_command); yon_setup_config(load_drivers_local_command);
on_config_fill_interface(widgets); on_config_fill_interface(widgets);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets) void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets)
@ -509,7 +509,7 @@ void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets)
yon_setup_config(load_drivers_global_command); yon_setup_config(load_drivers_global_command);
on_config_fill_interface(widgets); on_config_fill_interface(widgets);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
/**void on_monitor_delete(GtkWidget *self,monitor_view windowd) /**void on_monitor_delete(GtkWidget *self,monitor_view windowd)
@ -548,13 +548,12 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){
} }
} }
void on_proprietary_get(GtkWidget *notebook, GtkWidget *page, int pagen, gpointer data){ void on_proprietary_get(GtkWidget *self, gpointer data){
if (pagen==1&&videoconfig.dblock==0){ if (videoconfig.dblock==0){
GtkTreeIter iter; GtkTreeIter iter;
if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(videoconfig.list),&iter)){
pthread_t tid; pthread_t tid;
pthread_create(&tid,NULL,(void*)yon_proprieary_get,NULL); pthread_create(&tid,NULL,(void*)yon_proprieary_get,NULL);
} videoconfig.dblock=1;
} }
} }
@ -623,7 +622,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
monitors->curport=NULL; monitors->curport=NULL;
dictionary *dict=NULL; dictionary *dict=NULL;
for (int i=0;i<videoconfig.portssize;i++){ for (int i=0;i<videoconfig.portssize;i++){
dictionary *check_if_exists = yon_dictionary_find(&videoconfig.monitors,videoconfig.ports[i]); dictionary *check_if_exists = yon_dictionary_get(&videoconfig.monitors,videoconfig.ports[i]);
if (!check_if_exists||!yon_dictionary_get_data(check_if_exists,monitorconfig*)->stringparameters||check_if_exists==monitors->config) if (!check_if_exists||!yon_dictionary_get_data(check_if_exists,monitorconfig*)->stringparameters||check_if_exists==monitors->config)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),videoconfig.ports[i]); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),videoconfig.ports[i]);
@ -673,7 +672,7 @@ void on_link(GtkWidget *self, char* link, gpointer user_data){
if (!link) if (!link)
link=UBLINUX_WIKI_LINK; link=UBLINUX_WIKI_LINK;
if (videoconfig.alwaysredirect==0){ if (videoconfig.alwaysredirect==0){
GtkBuilder *builder=gtk_builder_new_from_resource(glade_path); GtkBuilder *builder=gtk_builder_new_from_resource(glade_path_configuration);
GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow"); GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow");
GtkWidget *readButton=yon_gtk_builder_get_widget(builder,"ReadHelpButton"); GtkWidget *readButton=yon_gtk_builder_get_widget(builder,"ReadHelpButton");
GtkWidget *cancelButton=yon_gtk_builder_get_widget(builder,"CancelHelpButton"); GtkWidget *cancelButton=yon_gtk_builder_get_widget(builder,"CancelHelpButton");
@ -848,9 +847,9 @@ void yon_monitor_view_update(){
monitor_window *monitor = yon_dictionary_get_data(dict,monitor_window*); monitor_window *monitor = yon_dictionary_get_data(dict,monitor_window*);
monitorconfig *config = yon_dictionary_get_data(monitor->config,monitorconfig*); monitorconfig *config = yon_dictionary_get_data(monitor->config,monitorconfig*);
if (strcmp(monitor->config->key,PARAMETER_DEFAULT_LABEL)!=0) if (strcmp(monitor->config->key,PARAMETER_DEFAULT_LABEL)!=0)
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,monitor->config->key)); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_append(MONITOR_LABEL,monitor->config->key));
else else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,"")); gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_append(MONITOR_LABEL,""));
monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*); 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); gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable);
if (config->resolution){ if (config->resolution){
@ -894,7 +893,7 @@ char *yon_monitor_make_string(monitorconfig* config)
resolution=config->resolution; resolution=config->resolution;
first=0; first=0;
}else{ }else{
resolution=yon_char_get_augumented(",",config->resolution); resolution=yon_char_append(",",config->resolution);
} }
char *enable=""; char *enable="";
@ -916,31 +915,31 @@ char *yon_monitor_make_string(monitorconfig* config)
char *position=""; char *position="";
if (config->position==1) if (config->position==1)
if (first==1){ if (first==1){
position=yon_char_get_augumented("lo:",config->position_port); position=yon_char_append("lo:",config->position_port);
first=0; first=0;
}else{ }else{
position=yon_char_get_augumented(",lo:",config->position_port); position=yon_char_append(",lo:",config->position_port);
} }
else if (config->position==2) else if (config->position==2)
if (first==1){ if (first==1){
position=yon_char_get_augumented("ro:",config->position_port); position=yon_char_append("ro:",config->position_port);
first=0; first=0;
}else{ }else{
position=yon_char_get_augumented(",ro:",config->position_port); position=yon_char_append(",ro:",config->position_port);
} }
else if (config->position==3) else if (config->position==3)
if (first==1){ if (first==1){
position=yon_char_get_augumented("ab:",config->position_port); position=yon_char_append("ab:",config->position_port);
first=0; first=0;
}else{ }else{
position=yon_char_get_augumented(",ab:",config->position_port); position=yon_char_append(",ab:",config->position_port);
} }
else if (config->position==4) else if (config->position==4)
if (first==1){ if (first==1){
position=yon_char_get_augumented("be:",config->position_port); position=yon_char_append("be:",config->position_port);
first=0; first=0;
}else{ }else{
position=yon_char_get_augumented(",be:",config->position_port); position=yon_char_append(",be:",config->position_port);
} }
char *rotation=""; char *rotation="";
@ -1016,7 +1015,7 @@ char *yon_monitor_make_string(monitorconfig* config)
else if (config->frequency==2) frequency="x75"; else if (config->frequency==2) frequency="x75";
} }
if (strcmp(resolution,"")!=0) if (strcmp(resolution,"")!=0)
resolution=yon_char_get_augumented(resolution,frequency); resolution=yon_char_append(resolution,frequency);
char *stringparameters=yon_char_unite("",main,resolution,enable,position,rotation,dpms,cvt,reduced,gtf,NULL); char *stringparameters=yon_char_unite("",main,resolution,enable,position,rotation,dpms,cvt,reduced,gtf,NULL);
@ -1079,33 +1078,44 @@ void on_config_fill_interface(widgets_dict *widgets)
dictionary *dict = NULL; dictionary *dict = NULL;
} }
void yon_proprietary_local_get(){
int drivers_size=0;
int size;
config_str rtn=NULL;
rtn = yon_config_load(get_proprietary_drivers_info_command,&size);
config_str drivers=yon_config_load(get_proprietary_installed_command,&drivers_size);
for (int dr_desc=0;dr_desc<drivers_size;dr_desc++){
for (int dr_foun=0;dr_foun<drivers_size;dr_foun++){
drivers[dr_foun]=yon_char_divide_search(drivers[dr_foun],"\n",-1);
char *pack=yon_char_new(rtn[dr_desc]);
char *ubm=yon_char_divide_search(pack,";",-1);
pack=yon_char_divide_search(pack,";",-1);
if (strcmp(drivers[dr_foun],ubm)==0){
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]);
}
// else if (strcmp(pack,"")!=0&&!(yon_dictionary_get(!videoconfig.proprietary||&videoconfig.proprietary,pack))){
// yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]);
// }
}
}
if (videoconfig.proprietary){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
videoconfig.proprietary=NULL;
}
}
/**dictionary *yon_proprieary_get() /**dictionary *yon_proprieary_get()
* [EN] * [EN]
*/ */
dictionary *yon_proprieary_get(){ dictionary *yon_proprieary_get(){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
videoconfig.dblock=1;
videoconfig.proprietary=NULL; videoconfig.proprietary=NULL;
int drivers_size=0; int drivers_size=0;
int size=0; int size=0;
config_str drivers=NULL; config_str drivers=NULL;
config_str rtn=NULL; config_str rtn=NULL;
rtn = yon_config_load(get_proprietary_drivers_info_command,&size); rtn = yon_config_load(get_proprietary_drivers_info_command,&size);
// drivers=yon_config_load(get_proprietary_installed_command,&drivers_size);
// for (int dr_desc=0;dr_desc<drivers_size;dr_desc++){
// for (int dr_foun=0;dr_foun<drivers_size;dr_foun++){
// drivers[dr_foun]=yon_char_divide_search(drivers[dr_foun],"\n",-1);
// char *pack=yon_char_new(rtn[dr_desc]);
// char *ubm=yon_char_divide_search(pack,";",-1);
// pack=yon_char_divide_search(pack,";",-1);
// if (strcmp(drivers[dr_foun],ubm)==0){
// yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]);
// }
// // else if (strcmp(pack,"")!=0&&!(yon_dictionary_find(!videoconfig.proprietary||&videoconfig.proprietary,pack))){
// // yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]);
// // }
// }
// }
if (videoconfig.proprietary){ if (videoconfig.proprietary){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
videoconfig.proprietary=NULL; videoconfig.proprietary=NULL;
@ -1120,14 +1130,14 @@ dictionary *yon_proprieary_get(){
if (strcmp(drivers[dr_foun],ubm)==0){ if (strcmp(drivers[dr_foun],ubm)==0){
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]); yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]);
} }
else if (strcmp(pack,"")!=0&&!yon_dictionary_find(&videoconfig.proprietary,pack)){ else if (strcmp(pack,"")!=0&&!yon_dictionary_get(&videoconfig.proprietary,pack)){
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]); yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]);
} }
} }
} }
if (videoconfig.proprietary){ if (videoconfig.proprietary){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); 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); yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else { } else {
drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size); drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size);
if (drivers){ if (drivers){
@ -1141,16 +1151,15 @@ dictionary *yon_proprieary_get(){
key = yon_char_divide_search(key,";",-1); key = yon_char_divide_search(key,";",-1);
char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1); char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1);
if (strcmp(key,driver_name)==0) if (strcmp(key,driver_name)==0)
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]); if (i==0) videoconfig.proprietary=yon_dictionary_new_with_data(drivers[drivers_found],rtn[i]);
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); else videoconfig.proprietary=yon_dictionary_append_with_data(videoconfig.proprietary,drivers[drivers_found],rtn[i]);
} }
} }
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else { } else {
videoconfig.dblock=0; yon_ubl_status_box_render(PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
} }
@ -1243,7 +1252,7 @@ void yon_setup_config(char *configcommand)
dictionary *dct; dictionary *dct;
for(int i=0; i<videoconfig.portssize;i++) for(int i=0; i<videoconfig.portssize;i++)
{ {
command = yon_char_get_augumented(command, XORG_MONITOR(yon_char_divide_search(yon_char_new(videoconfig.ports[i]),"\n",-1))); command = yon_char_append(command, XORG_MONITOR(yon_char_divide_search(yon_char_new(videoconfig.ports[i]),"\n",-1)));
} }
videoconfig.configsize=0; videoconfig.configsize=0;
videoconfig.loaded_config = yon_ubl_load_global_config(command, &videoconfig.configsize); videoconfig.loaded_config = yon_ubl_load_global_config(command, &videoconfig.configsize);
@ -1323,9 +1332,9 @@ monitor_config yon_monitor_config_new(char *port){
monitor->reduced=0; monitor->reduced=0;
monitor->gtf=0; monitor->gtf=0;
if (videoconfig.monitors) if (videoconfig.monitors)
videoconfig.monitors=yon_dictionary_create_with_data_connected(videoconfig.monitors,port,monitor); videoconfig.monitors=yon_dictionary_append_with_data(videoconfig.monitors,port,monitor);
else else
videoconfig.monitors=yon_dictionary_create_with_data(port,monitor); videoconfig.monitors=yon_dictionary_new_with_data(port,monitor);
return videoconfig.monitors; return videoconfig.monitors;
} }
} }
@ -1399,7 +1408,7 @@ char *yon_char_parsed_get_resolution(config_str parsed_string, int size){
} }
void yon_monitor_view_new(monitor_config monitor){ void yon_monitor_view_new(monitor_config monitor){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_monitor);
monitor_window *window = new(monitor_window); monitor_window *window = new(monitor_window);
window->templateMonitorscreenOverlay=yon_gtk_builder_get_widget(builder,"templateMonitorscreenOverlay"); window->templateMonitorscreenOverlay=yon_gtk_builder_get_widget(builder,"templateMonitorscreenOverlay");
window->templateMonitorImage=yon_gtk_builder_get_widget(builder,"templateMonitorImage"); window->templateMonitorImage=yon_gtk_builder_get_widget(builder,"templateMonitorImage");
@ -1420,8 +1429,8 @@ void yon_monitor_view_new(monitor_config monitor){
window->config=monitor; window->config=monitor;
gtk_widget_hide(window->templateMonitorInfoAddButton); gtk_widget_hide(window->templateMonitorInfoAddButton);
g_signal_connect(G_OBJECT(window->templateMonitorInfoConfigureButton), "clicked", G_CALLBACK(on_monitor_configure), window); g_signal_connect(G_OBJECT(window->templateMonitorInfoConfigureButton), "clicked", G_CALLBACK(on_monitor_configure), window);
if (videoconfig.monitor_visuals) videoconfig.monitor_visuals = yon_dictionary_create_with_data_connected(videoconfig.monitor_visuals, window->config->key,window); if (videoconfig.monitor_visuals) videoconfig.monitor_visuals = yon_dictionary_append_with_data(videoconfig.monitor_visuals, window->config->key,window);
else videoconfig.monitor_visuals = yon_dictionary_create_with_data(window->config->key,window); else videoconfig.monitor_visuals = yon_dictionary_new_with_data(window->config->key,window);
g_signal_connect(G_OBJECT(window->templateMonitorDeleteButton), "clicked", G_CALLBACK(on_monitor_delete), videoconfig.monitor_visuals); g_signal_connect(G_OBJECT(window->templateMonitorDeleteButton), "clicked", G_CALLBACK(on_monitor_delete), videoconfig.monitor_visuals);
g_signal_connect(G_OBJECT(window->templateMonitorSwitchButton), "clicked", G_CALLBACK(on_monitor_switch), window); g_signal_connect(G_OBJECT(window->templateMonitorSwitchButton), "clicked", G_CALLBACK(on_monitor_switch), window);
@ -1431,8 +1440,8 @@ void yon_monitor_view_new(monitor_config monitor){
gtk_widget_hide(window->templateMonitorSwitchButton); gtk_widget_hide(window->templateMonitorSwitchButton);
gtk_widget_hide(window->templateMonitorInfoConfigureButton); gtk_widget_hide(window->templateMonitorInfoConfigureButton);
g_signal_connect(G_OBJECT(window->templateMonitorInfoAddButton), "clicked", G_CALLBACK(on_monitor_add), window); g_signal_connect(G_OBJECT(window->templateMonitorInfoAddButton), "clicked", G_CALLBACK(on_monitor_add), window);
if (videoconfig.monitor_visuals) videoconfig.monitor_visuals = yon_dictionary_create_with_data_connected(videoconfig.monitor_visuals, "GENERIC",window); if (videoconfig.monitor_visuals) videoconfig.monitor_visuals = yon_dictionary_append_with_data(videoconfig.monitor_visuals, "GENERIC",window);
else videoconfig.monitor_visuals = yon_dictionary_create_with_data("GENERIC",window); else videoconfig.monitor_visuals = yon_dictionary_new_with_data("GENERIC",window);
} }
} }
@ -1470,7 +1479,7 @@ void yon_monitor_set_resolutions(){
port_for_res=yon_char_new(dct->key); port_for_res=yon_char_new(dct->key);
} }
if(port_for_res){ if(port_for_res){
dct=yon_dictionary_find(&videoconfig.supported_resolutions,port_for_res); dct=yon_dictionary_get(&videoconfig.supported_resolutions,port_for_res);
resolution_supported *sup=yon_dictionary_get_data(dct,resolution_supported*); resolution_supported *sup=yon_dictionary_get_data(dct,resolution_supported*);
sup->size++; sup->size++;
sup->line=realloc(sup->line,sizeof(char*)*sup->size); sup->line=realloc(sup->line,sizeof(char*)*sup->size);
@ -1493,7 +1502,6 @@ void yon_adapter_window_setup(widgets_dict *widgets){
char *driver_use = yon_config_get_parameter(rtn,size,"Kernel-driver-in-use"); char *driver_use = yon_config_get_parameter(rtn,size,"Kernel-driver-in-use");
yon_char_divide_search(driver_use,"=",-1); yon_char_divide_search(driver_use,"=",-1);
char *driver_all = yon_config_get_parameter(rtn,size,"Kernel-modules"); char *driver_all = yon_config_get_parameter(rtn,size,"Kernel-modules");
driver_all = yon_char_replace(driver_all,"-"," ");
yon_char_divide_search(driver_all,"=",-1); yon_char_divide_search(driver_all,"=",-1);
char *final_text = yon_char_unite("<span size=\"12pt\"><span weight='bold' color='#1a5fb4'>",DESCRIPTION_LABEL,":</span> ",_(desc), char *final_text = yon_char_unite("<span size=\"12pt\"><span weight='bold' color='#1a5fb4'>",DESCRIPTION_LABEL,":</span> ",_(desc),
"\n<span weight='bold' color='#1a5fb4'>",VENDOR_LABEL,":</span> ",vendor, "\n<span weight='bold' color='#1a5fb4'>",VENDOR_LABEL,":</span> ",vendor,
@ -1612,7 +1620,9 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay"); widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay");
widgets->MenusTab = yon_gtk_builder_get_widget(widgets->builder, "MenusTab"); widgets->MenusTab = yon_gtk_builder_get_widget(widgets->builder, "MenusTab");
widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection")); widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection"));
widgets->LoadDriversButton = yon_gtk_builder_get_widget(widgets->builder,"LoadDriversButton");
widgets->proprietaryNotebook = yon_gtk_builder_get_widget(widgets->builder,"notebook1");
widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn")); widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn"));
widgets->ProprietaryPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryPackageColumn")); widgets->ProprietaryPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryPackageColumn"));
widgets->ProprietaryDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryDriverColumn")); widgets->ProprietaryDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryDriverColumn"));
@ -1642,7 +1652,7 @@ void yon_setup_widgets(widgets_dict *widgets)
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->proprietaryTreeView),GTK_TREE_MODEL(videoconfig.list)); 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->LoadDriversButton), "clicked", 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->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->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets);
@ -1740,6 +1750,8 @@ void yon_setup_widgets(widgets_dict *widgets)
gtk_widget_set_sensitive(widgets->mainHeaderSaveLocalMenuItem,0); gtk_widget_set_sensitive(widgets->mainHeaderSaveLocalMenuItem,0);
if (videoconfig.lock_save_global==1||videoconfig.lock_save_local==1) if (videoconfig.lock_save_global==1||videoconfig.lock_save_local==1)
gtk_widget_set_sensitive(widgets->mainHeaderSaveGlobalLocalMenuItem,0); gtk_widget_set_sensitive(widgets->mainHeaderSaveGlobalLocalMenuItem,0);
gtk_notebook_set_action_widget(GTK_NOTEBOOK(widgets->proprietaryNotebook),widgets->LoadDriversButton,GTK_PACK_END);
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -1820,27 +1832,20 @@ int main(int argc, char *argv[])
} }
if (getuid()!=0){ if (getuid()!=0){
char *args=""; }{
for (int i=0;i<argc;i++)
args=yon_char_unite(args," ",argv[i],NULL);
if (system(yon_char_get_augumented("/usr/bin/pkexec ubl-settings-video ",args)));
return 0;
} else {
int ssize=0;
yon_launch_app("pacman -Sy >/dev/null");
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
GError error; GError error;
yon_setup_config(load_drivers_local_command); yon_setup_config(load_drivers_local_command);
widgets_dict widgets; widgets_dict widgets;
yon_setup_widgets(&widgets); yon_setup_widgets(&widgets);
// yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
// yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist);
gtk_widget_show(widgets.MainWindow); gtk_widget_show(widgets.MainWindow);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_setup(widgets.mainStatusIcon,widgets.mainStatusBox,widgets.mainStatusLabel);
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
on_config_fill_interface(&widgets); on_config_fill_interface(&widgets);
yon_monitor_set_resolutions(); yon_monitor_set_resolutions();
yon_adapter_window_setup(&widgets); yon_adapter_window_setup(&widgets);
GtkCssProvider *css = gtk_css_provider_new(); GtkCssProvider *css = gtk_css_provider_new();
yon_proprietary_local_get();
gtk_css_provider_load_from_resource(css, CssPath); gtk_css_provider_load_from_resource(css, CssPath);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER(css),

@ -29,6 +29,9 @@
#define banner_path "/com/ublinux/images/ubl-settings-video-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-video-banner.png"
#define glade_path "/com/ublinux/ui/ubl-settings-video.glade" #define glade_path "/com/ublinux/ui/ubl-settings-video.glade"
#define glade_path_monitor "/com/ublinux/ui/ubl-settings-video-monitor.glade"
#define glade_path_configuration "/com/ublinux/ui/ubl-settings-video-configuration.glade"
#define LocalePath "/usr/share/locale" #define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-video" #define LocaleName "ubl-settings-video"
#define CssPath "/com/ublinux/css/ubl-settings-video.css" #define CssPath "/com/ublinux/css/ubl-settings-video.css"
@ -80,7 +83,7 @@
#define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ,_]{1,}\"|sed 's/: /=/g'|sed 's/ /-/g'" #define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ,_]{1,}\"|sed 's/: /=/g'|sed 's/ /-/g'"
#define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] ")) #define XORG_MONITOR(port) yon_char_append(" XORG_MONITOR[",yon_char_append(port,"] "))
typedef struct{ typedef struct{
@ -289,6 +292,9 @@ typedef struct
GtkWidget *PlugLoadBox; GtkWidget *PlugLoadBox;
GtkWidget *MenusTab; GtkWidget *MenusTab;
GtkWidget *LoadDriversButton;
GtkWidget *proprietaryNotebook;
} widgets_dict; } widgets_dict;
typedef struct typedef struct

@ -117,4 +117,5 @@
#define VENDOR_LABEL _("Vendor") #define VENDOR_LABEL _("Vendor")
#define MODEL_LABEL _("Model") #define MODEL_LABEL _("Model")
#define USED_KERNEL_DRIVER_LABEL _("Kernel driver in use") #define USED_KERNEL_DRIVER_LABEL _("Kernel driver in use")
#define AVALIABLE_KERNEL_DRIVERS_LABEL _("Kernel modules") #define AVALIABLE_KERNEL_DRIVERS_LABEL _("Kernel modules")
#define LOAD_DRIVERS_LABEL _("Load drivers from database")

File diff suppressed because it is too large Load Diff

@ -7,44 +7,63 @@
#include <pthread.h> #include <pthread.h>
#include <string.h> #include <string.h>
#include <dirent.h> #include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <pwd.h>
#include <locale.h> #include <locale.h>
#include <libintl.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkx.h> #include <gtk/gtkx.h>
#include <pwd.h>
#include <vte/vte.h>
#include "ubl-cmake.h" #include "ubl-cmake.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
#define DesktopPath "/usr/share/applications/"
#define _(String) gettext(String)
#define DesktopPath "/usr/share/applications/"
#define try bool __HadError=false;
#define catch(x) ExitJmp:if(__HadError)
#define throw(x) {__HadError=true;goto ExitJmp;}
static char** array_size_pow;
#define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next) #define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next)
#define new(type) malloc(sizeof(type)) #define new(type) malloc(sizeof(type))
#define new_arr(type,size) malloc(sizeof(type)*size) #define new_arr(type,size) malloc(sizeof(type)*size)
#define get_home_dir_command yon_char_unite("getent passwd \"",yon_ubl_root_user_get(),"\" | cut -d: -f6",NULL)
#define get_processes_command "systemd-cgls --no-pager |grep -oE \"[-0-9A-Za-z.:]{1,}.service\""
#define get_slices_command "systemd-cgls --no-pager |grep -oE \"[-0-9A-Za-z.:]{1,}.slice\""
#define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command #define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command
#define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer) #define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_load_local_config(command, size_pointer) yon_config_load(command, size_pointer) #define yon_ubl_load_local_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_save_global_config(command) yon_config_save(command) #define yon_ubl_save_global_config(command) yon_config_save(command)
#define yon_ubl_save_local_config(command) yon_config_save(command) #define yon_ubl_save_local_config(command) yon_config_save(command)
typedef enum typedef enum
{ {
#ifdef __GTK_H__ #ifdef __GTK_H__
DICTIONARY_GTK_WIDGETS_TYPE, DICTIONARY_GTK_WIDGETS_TYPE,
#endif #endif
DICTIONARY_OTHER_TYPE DICTIONARY_OTHER_TYPE=0,
DICTIONARY_CHAR_TYPE,
DICTIONARY_INT_TYPE,
DICTIONARY_BOOL_TYPE,
} DICT_TYPE; } DICT_TYPE;
typedef struct typedef struct
{ {
char *command; char *command;
int *exitcode; int *exitcode;
} thread_output; } thread_output;
typedef struct dictionary typedef struct dictionary
{ {
char *key; char *key;
@ -53,10 +72,12 @@ typedef struct dictionary
struct dictionary *prev; struct dictionary *prev;
struct dictionary *first; struct dictionary *first;
DICT_TYPE data_type; DICT_TYPE data_type;
int flag1;
} dictionary; } dictionary;
typedef struct apps typedef struct apps
{ {
char *filename;
char *Name; char *Name;
int Type; int Type;
char *Categories; char *Categories;
@ -64,9 +85,19 @@ typedef struct apps
char *Icon; char *Icon;
int Pluggable; int Pluggable;
int DualPluggable; int DualPluggable;
int Hidden;
} apps; } apps;
typedef char** config_str; typedef char** config_str;
static dictionary *__yon__config__strings = NULL;
#define check_config if(__yon__config__strings&&__yon__config__strings->data_type==DICTIONARY_CHAR_TYPE)
#define config(key) yon_config_get_by_key(key)
#define for_config dictionary temp = NULL; for_dictionary(temp,__yon__config__strings)
#define yon_remalloc(pointer, size) (!pointer) ? malloc(size) : realloc(pointer, size)
// dictionary functions // dictionary functions
/**yon_dictionary_get_data(dictionary, type) /**yon_dictionary_get_data(dictionary, type)
@ -80,28 +111,36 @@ typedef char** config_str;
* [type] - тип данных, хранящихся в словаре [dictionary]. * [type] - тип данных, хранящихся в словаре [dictionary].
*/ */
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data) #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);}
dictionary *yon_dictionary_create_empty(); /**yon_dictionary_add_or_create_if_exists_with_data(dict,key,data)
* [EN]
*
* [RU]
* Добавляет элемент словаря в конец словаря [dict] c ключом [key] и данными [data].
* Если словарь не существует, создаёт его
*/
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_new_with_data(key,data); \
else dict=yon_dictionary_append_with_data(dict,key,data);}
dictionary *yon_dictionary_create_conneced(dictionary *targetdict); dictionary *yon_dictionary_new();
dictionary *yon_dictionary_append(dictionary *targetdict);
dictionary *yon_dictionary_get_last(dictionary *dict); dictionary *yon_dictionary_get_last(dictionary *dict);
dictionary *yon_dictionary_switch_places(dictionary *dict, int aim); dictionary *yon_dictionary_swap(dictionary *dict, int aim);
void yon_dictionary_make_first(dictionary *dict); void yon_dictionary_make_first(dictionary *dict);
void yon_dictionary_make_nth(dictionary *dict, int nth); void yon_dictionary_make_nth(dictionary *dict, int nth);
dictionary *yon_dictionary_create_with_data(char *key, void *data); dictionary *yon_dictionary_new_with_data(char *key, void *data);
dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); dictionary *yon_dictionary_append_with_data(dictionary *dict, char *key, void *data);
dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect);
dictionary *yon_dictionary_find(dictionary **dict, char *key); dictionary *yon_dictionary_get(dictionary **dict, char *key);
dictionary *yon_dictionary_rip(dictionary *dict); dictionary *yon_dictionary_rip(dictionary *dict);
@ -111,7 +150,9 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo
// char functions // char functions
char *yon_char_get_augumented(char *source, char *append); int yon_char_find_last(char *source, char find);
char *yon_char_append(char *source, char *append);
char *yon_char_new(char *chr); char *yon_char_new(char *chr);
@ -124,12 +165,13 @@ char *yon_char_divide(char *source, int dividepos);
char *yon_char_divide_search(char *source, char *dividepos, int delete_divider); char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_from_int(int int_to_convert); char *yon_char_from_int(int int_to_convert);
char *yon_char_from_long(long int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace); char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider); char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
@ -137,43 +179,94 @@ int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size); int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (config_str old, int *old_size, ...); config_str yon_char_parsed_new (int *size, ...);
void yon_char_parsed_copy(config_str *source, config_str *to_copy);
config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
int yon_char_parsed_remove_newline_symbols(config_str parsed, int *size);
int yon_ubl_check_root();
char *yon_ubl_root_user_get();
char *yon_ubl_user_get_home_directory();
config_str yon_ubl_get_all_users(int *user_size);
config_str yon_ubl_get_all_processes(int *processes_size);
config_str yon_ubl_get_all_slices(int *slices_size);
// parsing functions // parsing functions
config_str philos_list_user(int* size);
dictionary *yon_scan_desktops();
apps *yon_apps_scan_and_parse_desktops(int *sizef); apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size); void yon_apps_sort(apps *applist, int size);
apps *yon_apps_get_by_name(apps *applist, char *name, int size); apps *yon_apps_get_by_name(apps *applist, char *name, int size);
char *yon_app_chooser_open_with_sections(char *section_name, char *section_filter, char *section_icon, ...);
config_str yon_config_load(char *command, int *str_len); config_str yon_config_load(char *command, int *str_len);
int yon_config_save(char *command); int yon_config_save_registered(char *path, char *section);
char *yon_config_get_parameter(config_str parameters, int size, char *param); char *yon_config_get_parameter(config_str parameters, int size, char *param);
char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider); int yon_config_load_register(char *command);
// terminal-using functions int yon_config_remove_by_key(char *key);
int yon_config_remove_by_data(void *data);
int yon_config_remove_element(char *key, char *deleted);
void *yon_config_get_by_key(char *key);
char *yon_config_get_key_by_data(char *data);
int yon_launch_app(char *name); int yon_config_set(char *key, void *data);
int yon_config_clean();
void yon_config_register(char *key, void *data);
config_str yon_config_get_all();
// terminal-using functions
int yon_launch_app_with_arguments(char *name, char *args); int yon_launch_app_with_arguments(char *name, char *args);
int yon_launch(thread_output *thread); void yon_launch(char *command);
void yon_launch_thread(char *command);
// Gtk functions // Gtk functions
#ifdef __GTK_H__ #ifdef __GTK_H__
#ifdef VTE_TERMINAL #ifdef VTE_TERMINAL
/**
*
*/
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument); void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument);
void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
#endif #endif
enum YON_TYPE{
YON_TYPE_STRING,
YON_TYPE_STRING_LIST,
YON_TYPE_INT,
YON_TYPE_DOUBLE,
YON_TYPE_BOOLEAN,
YON_TYPE_OTHER
};
GtkWidget *yon_ubl_menu_item_about_new(char *buttonname);
GtkWidget *yon_ubl_menu_item_documentation_new(char *buttonname);
/**yon_gtk_builder_get_widget(builder, widget_name) /**yon_gtk_builder_get_widget(builder, widget_name)
* [EN] * [EN]
* Returns GtkWidget from GtkBuilder *[builder]. * Returns GtkWidget from GtkBuilder *[builder].
@ -190,22 +283,39 @@ typedef struct
GtkListStore *List; GtkListStore *List;
} expander_icon_view; } expander_icon_view;
// GtkWidget *yon_gtk_app_chooser_apps_create(); void yon_window_config_setup(GtkWindow *window);
int yon_window_config_load(char *path);
// dictionary *yon_gtk_app_chooser_create(); config_str yon_window_config_get_section(char *section, gsize *size);
// expander_icon_view yon_gtk_icon_view_expander_create(GtkWidget *pack, ...); void yon_window_config_add_listener(GtkWidget *widget, char *param_name, char *widget_property, enum YON_TYPE val_type);
int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); void yon_window_config_add_custom_parameter(char *param_name, char *section, void *tracked_value, enum YON_TYPE val_type);
void yon_window_config_erase_custom_parameter(char *param_name, char *section);
int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type);
int yon_gtk_combo_box_text_fill(GtkWidget *combo, char **parameters,int size);
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
void yon_gtk_column_minimal_fixed_size_set(GtkTreeViewColumn *column);
int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment); 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); void yon_subwindow_close(GtkWidget *self);
int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...);
void yon_gtk_widget_set_sensitive_from_toggle_button(GtkToggleButton *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_toggle_button_inversed(GtkToggleButton *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_combo_box_inversed(GtkComboBox *toggle, GtkWidget *target);
typedef enum typedef enum
{ {
@ -221,6 +331,7 @@ typedef struct {
char* text_to_render; char* text_to_render;
} render_data; } render_data;
/**yon_ubl_status_box_setup(render,icon,box,label) /**yon_ubl_status_box_setup(render,icon,box,label)
* [EN] * [EN]
* Sets up [render] structure of type render_data. * Sets up [render] structure of type render_data.
@ -233,7 +344,7 @@ typedef struct {
* [box] - виджет типа GtkBox в котором будет отображаться цвет статуса; * [box] - виджет типа GtkBox в котором будет отображаться цвет статуса;
* [label] - виджет типа GtkLabel в котором будет отображаться текст статусного сообщения; * [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);} int yon_ubl_status_box_setup(GtkWidget *icon, GtkWidget *box, GtkWidget *label);
/**yon_ubl_status_box_render(render,text,type) /**yon_ubl_status_box_render(render,text,type)
* [EN] * [EN]
@ -250,26 +361,7 @@ typedef struct {
* или * или
* BACKGROUND_IMAGE_SUCCESS_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)); } void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type);
#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) /**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN] * [EN]
@ -290,8 +382,9 @@ typedef struct {
#endif #endif
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_header_setup_resource(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); void _yon_ubl_header_setup_resource(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); 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 #ifdef WEBKIT_FOUND
@ -299,5 +392,4 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#else #else
void yon_ubl_browser_window_open(char *link, char *browser_window_name); void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#endif #endif
#endif
#endif #endif

@ -0,0 +1,500 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkWindow" id="templateMonitorConfigurationWindow">
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationEnableCheck">
<property name="label" translatable="yes">Enabled</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="templateMonitorConfigurationSaveButton">
<property name="label" translatable="yes">Save</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="templateMonitorConfigurationCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="mainMonitorConfigurationBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="templateMonitorConfigurationBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="templateMonitorConfigurationPortLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Port</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationPortCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationMainCheck">
<property name="label" translatable="yes">Main display</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="templateMonitorConfigurationResolutionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Resolution (px): </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationResolutionCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationShowUnsupportedCheck">
<property name="label" translatable="yes">Show unsupported</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="templateMonitorConfigurationFrequencyLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Frequency (Hz): </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationFrequencyCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">60</item>
<item translatable="yes">75</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="templateMonitorConfigurationRotationLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Rotation: </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationRotationCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="templateMonitorConfigurationPositionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Position: </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationPositionPosCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="templateMonitorConfigurationPositionPortCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationDoNotSwitchOffCheck">
<property name="label" translatable="yes">Do not switch off display</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationModelineCVTCheck">
<property name="label" translatable="yes">Create modeline for current resolution with CVT</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationUseCVTReducedCheck">
<property name="label" translatable="yes">Use "CVT Reduced Blanking"gshgrbehr</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationModelineGTFCheck">
<property name="label" translatable="yes">Create modeline for current resolution with GTF</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">10</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="templateMonitorConfigurationParameterLineCheck">
<property name="label" translatable="yes">Configure manually through parameter line:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="templateMonitorConfigurationParameterLineEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="valign">center</property>
<property name="placeholder-text" translatable="yes">1920x1080</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkImage" id="image13">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="tooltip-text" translatable="yes">Switch</property>
<property name="icon-name">system-shutdown-symbolic</property>
</object>
<object class="GtkImage" id="image14">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="tooltip-text" translatable="yes">Delete</property>
<property name="icon-name">user-trash-symbolic</property>
</object>
<object class="GtkImage" id="image15">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="icon-name">value-increase-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Configure</property>
<property name="icon-name">open-menu-symbolic</property>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="textoutline"/>
</style>
</object>
<object class="GtkBox" id="templateMonitorInfoBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="margin-left">3</property>
<property name="margin-right">3</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="margin-top">10</property>
<property name="margin-bottom">20</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="templateMonitorInfoNameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="single-line-mode">True</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
<style>
<class name="textoutline"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="templateMonitorInfoResolutionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="single-line-mode">True</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
<style>
<class name="textoutline"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">15</property>
<child>
<object class="GtkButton" id="templateMonitorDeleteButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image14</property>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="templateMonitorSwitchButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image13</property>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="templateMonitorInfoConfigureButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="no-show-all">True</property>
<property name="halign">end</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="templateMonitorInfoAddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add</property>
<property name="image">image15</property>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<object class="GtkOverlay" id="templateMonitorscreenOverlay">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage" id="templateMonitorImage">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="pixel-size">128</property>
<property name="icon-name">com.ublinux.ubl-settings-video.display</property>
<property name="icon_size">6</property>
</object>
<packing>
<property name="index">-1</property>
</packing>
</child>
</object>
</interface>

File diff suppressed because it is too large Load Diff

@ -17,23 +17,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.h:26 #: source/ubl-settings-video.h:25
msgid "https://wiki.ublinux.com" msgid "https://wiki.ublinux.com"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:36 #: source/ubl-settings-video.h:35
msgid "Failed to load global configuration" msgid "Failed to load global configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:37 #: source/ubl-settings-video.h:36
msgid "Failed to load local configuration" msgid "Failed to load local configuration"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:39 #: source/ubl-settings-video.h:38
msgid "Saving to global configuration Succeeded" msgid "Saving to global configuration Succeeded"
msgstr "" msgstr ""
#: source/ubl-settings-video.h:40 #: source/ubl-settings-video.h:39
msgid "Saving to local configuration Succeeded" msgid "Saving to local configuration Succeeded"
msgstr "" msgstr ""
@ -478,6 +478,10 @@ msgstr ""
msgid "Kernel modules" msgid "Kernel modules"
msgstr "" msgstr ""
#: source/ubl-strings.h:121
msgid "Load drivers from database"
msgstr ""
#: source/ubl-settings-video.c:713 #: source/ubl-settings-video.c:713
msgid "Project Home Page" msgid "Project Home Page"
msgstr "" msgstr ""

@ -17,23 +17,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.h:26 #: source/ubl-settings-video.h:25
msgid "https://wiki.ublinux.com" msgid "https://wiki.ublinux.com"
msgstr "https://wiki.ublinux.ru" msgstr "https://wiki.ublinux.ru"
#: source/ubl-settings-video.h:36 #: source/ubl-settings-video.h:35
msgid "Failed to load global configuration" msgid "Failed to load global configuration"
msgstr "Ошибка загрузки глобальной конфигурации" msgstr "Ошибка загрузки глобальной конфигурации"
#: source/ubl-settings-video.h:37 #: source/ubl-settings-video.h:36
msgid "Failed to load local configuration" msgid "Failed to load local configuration"
msgstr "Ошибка загрузки локальной конфигурации" msgstr "Ошибка загрузки локальной конфигурации"
#: source/ubl-settings-video.h:39 #: source/ubl-settings-video.h:38
msgid "Saving to global configuration Succeeded" msgid "Saving to global configuration Succeeded"
msgstr "Успешное сохранение глобальной конфигурации" msgstr "Успешное сохранение глобальной конфигурации"
#: source/ubl-settings-video.h:40 #: source/ubl-settings-video.h:39
msgid "Saving to local configuration Succeeded" msgid "Saving to local configuration Succeeded"
msgstr "Успешно записана локальная конфигурация" msgstr "Успешно записана локальная конфигурация"
@ -74,22 +74,18 @@ msgid "Lock this help menu"
msgstr "Блокировка вызова справки" msgstr "Блокировка вызова справки"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
#, fuzzy
msgid "Lock configration saving" msgid "Lock configration saving"
msgstr "Блокировка сохранения локальной и глобальной конфигурации" msgstr "Блокировка сохранения локальной и глобальной конфигурации"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
#, fuzzy
msgid "Lock local configration saving" msgid "Lock local configration saving"
msgstr "Блокировка сохранения локальной конфигурации" msgstr "Блокировка сохранения локальной конфигурации"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
#, fuzzy
msgid "Lock global configration saving" msgid "Lock global configration saving"
msgstr "Блокировка сохранения глобальной конфигурации" msgstr "Блокировка сохранения глобальной конфигурации"
#: source/ubl-strings.h:2 #: source/ubl-strings.h:2
#, fuzzy
msgid "Lock global configration loading" msgid "Lock global configration loading"
msgstr "Блокировка загрузки глобальной конфигурации" msgstr "Блокировка загрузки глобальной конфигурации"
@ -272,7 +268,7 @@ msgid "Automatically choose and use driver"
msgstr "Автоматический выбор и использование драйвера" msgstr "Автоматический выбор и использование драйвера"
#: source/ubl-strings.h:49 #: source/ubl-strings.h:49
msgid "Launch programms through optirun (Nvidia): " msgid "Launch programs through optirun (Nvidia): "
msgstr "Запуск программ через optirun (Nvidia)" msgstr "Запуск программ через optirun (Nvidia)"
#: source/ubl-strings.h:50 #: source/ubl-strings.h:50
@ -369,24 +365,20 @@ msgstr ""
"список установленных драйверов." "список установленных драйверов."
#: source/ubl-strings.h:73 #: source/ubl-strings.h:73
#, fuzzy
msgid "Configure monitor" msgid "Configure monitor"
msgstr "Основной" msgstr "Настроить монитоор"
#: source/ubl-strings.h:74 #: source/ubl-strings.h:74
#, fuzzy
msgid "Delete monitor configuration" msgid "Delete monitor configuration"
msgstr "Настройка экрана" msgstr "Удалить конфигурацию мониотра"
#: source/ubl-strings.h:75 #: source/ubl-strings.h:75
#, fuzzy
msgid "Add monitor configuration" msgid "Add monitor configuration"
msgstr "Настройка экрана" msgstr "Добавить монитор"
#: source/ubl-strings.h:76 #: source/ubl-strings.h:76
#, fuzzy
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Основной" msgstr "Переключить монтор"
#: source/ubl-strings.h:77 #: source/ubl-strings.h:77
msgid "More" msgid "More"
@ -429,7 +421,6 @@ msgid "Driver modules"
msgstr "Модули драйвера" msgstr "Модули драйвера"
#: source/ubl-strings.h:87 #: source/ubl-strings.h:87
#, fuzzy
msgid "Read documentation" msgid "Read documentation"
msgstr "Справка" msgstr "Справка"
@ -493,55 +484,70 @@ msgstr "Используемый драйвер ядра"
msgid "Kernel modules" msgid "Kernel modules"
msgstr "Модули ядра" msgstr "Модули ядра"
#: source/ubl-strings.h:121
msgid "Load drivers from database"
msgstr "Загрузить список доступных драйверов"
#: source/ubl-settings-video.c:713 #: source/ubl-settings-video.c:713
msgid "Project Home Page" msgid "Project Home Page"
msgstr "Домашняя страница проекта" msgstr "Домашняя страница проекта"
msgid "UBlinux Video Configuration" msgid "UBlinux Video Configuration"
msgstr "Видеокарта/Экран" msgstr "Видеокарта/Экран"
msgid "Videocard and monitor configuration manager" msgid "Videocard and monitor configuration manager"
msgstr "Настройка вывода изображения" msgstr "Настройка вывода изображения"
msgid "Saving to local and global configuration Succeeded" msgid "Saving to local and global configuration Succeeded"
msgstr "Успешно записаны локальная и глобальная конфигурация" msgstr "Успешно записаны локальная и глобальная конфигурация"
msgid "VGA compitable controller" msgid "VGA compitable controller"
msgstr "VGA-совместимый адаптер" msgstr "VGA-совместимый адаптер"
msgid "Configuration has been loaded" msgid "Configuration has been loaded"
msgstr "Конфигурация была загружена" msgstr "Конфигурация была загружена"
msgid "Proprietary driver: " msgid "Proprietary driver: "
msgstr "Проприетарный драйвер: " msgstr "Проприетарный драйвер: "
msgid "DPMS off" msgid "DPMS off"
msgstr "DMPS выключен" msgstr "DMPS выключен"
msgid "UBLinux module includes NVIDIA 340xx driver and utilities" msgid "UBLinux module includes NVIDIA 340xx driver and utilities"
msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 340xx" msgstr "Пакет с модулем драйвера и утилитами NVIDIA 340xx"
msgid "UBLinux module includes NVIDIA 390xx driver and utilities" msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 390xx" msgstr "Пакет с модулем драйвера и утилитами NVIDIA 390xx"
msgid "UBLinux module includes NVIDIA 470xx driver and utilities" msgid "UBLinux module includes NVIDIA 470xx driver and utilities"
msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 470xx" msgstr "Пакет с модулем драйвера и утилитами NVIDIA 470xx"
msgid "UBLinux module includes NVIDIA 510xx driver and utilities" msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 510xx" msgstr "Пакет с модулем драйвера и утилитами NVIDIA 510xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 340xx driver and utilities" msgid "UBLinux package includes NVIDIA 340xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 340xx" msgstr "Пакет с драйвером NVIDIA 340xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 390xx driver and utilities" msgid "UBLinux package includes NVIDIA 390xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 390xx" msgstr "Пакет с драйвером NVIDIA 390xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 470xx driver and utilities" msgid "UBLinux package includes NVIDIA 470xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 470xx" msgstr "Пакет с драйвером NVIDIA 470xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 510xx driver and utilities" msgid "UBLinux package includes NVIDIA 510xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 510xx" msgstr "Пакет с драйвером NVIDIA 510xx"

Loading…
Cancel
Save