|
|
|
@ -23,6 +23,7 @@ void on_monitor_delete(GtkWidget *,monitor_data *window){
|
|
|
|
void on_monitor_switch(GtkWidget *,monitor_data *window){
|
|
|
|
void on_monitor_switch(GtkWidget *,monitor_data *window){
|
|
|
|
if(window){
|
|
|
|
if(window){
|
|
|
|
const char *name = gtk_label_get_text(GTK_LABEL(window->NameLabel));
|
|
|
|
const char *name = gtk_label_get_text(GTK_LABEL(window->NameLabel));
|
|
|
|
|
|
|
|
if (yon_char_is_empty(name)) return;
|
|
|
|
char *parameter = config(XORG_MONITOR(name));
|
|
|
|
char *parameter = config(XORG_MONITOR(name));
|
|
|
|
int size;
|
|
|
|
int size;
|
|
|
|
config_str parsed = yon_char_parse(parameter,&size,",");
|
|
|
|
config_str parsed = yon_char_parse(parameter,&size,",");
|
|
|
|
@ -282,6 +283,15 @@ void on_port_chosen_changed(GtkWidget *, monitor_edit_window *window){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int yon_string_compare(char **a, char **b){
|
|
|
|
|
|
|
|
gchar *key_a = g_utf8_collate_key(*a, -1);
|
|
|
|
|
|
|
|
gchar *key_b = g_utf8_collate_key(*b, -1);
|
|
|
|
|
|
|
|
gint result = strcmp(key_a, key_b);
|
|
|
|
|
|
|
|
g_free(key_a);
|
|
|
|
|
|
|
|
g_free(key_b);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_monitor_configure(GtkWidget *,monitor_data *window){
|
|
|
|
void on_monitor_configure(GtkWidget *,monitor_data *window){
|
|
|
|
if(window){
|
|
|
|
if(window){
|
|
|
|
@ -312,6 +322,8 @@ void on_monitor_configure(GtkWidget *,monitor_data *window){
|
|
|
|
monitors->ParameterLineEntry = yon_gtk_builder_get_widget(builder, "ParameterLineEntry");
|
|
|
|
monitors->ParameterLineEntry = yon_gtk_builder_get_widget(builder, "ParameterLineEntry");
|
|
|
|
monitors->CancelButton = yon_gtk_builder_get_widget(builder, "CancelButton");
|
|
|
|
monitors->CancelButton = yon_gtk_builder_get_widget(builder, "CancelButton");
|
|
|
|
monitors->SaveButton = yon_gtk_builder_get_widget(builder, "SaveButton");
|
|
|
|
monitors->SaveButton = yon_gtk_builder_get_widget(builder, "SaveButton");
|
|
|
|
|
|
|
|
monitors->resolutions = NULL;
|
|
|
|
|
|
|
|
monitors->resolutionssize=0;
|
|
|
|
|
|
|
|
|
|
|
|
char *title;
|
|
|
|
char *title;
|
|
|
|
char *cur_port = (char*)gtk_label_get_text(GTK_LABEL(window->NameLabel));
|
|
|
|
char *cur_port = (char*)gtk_label_get_text(GTK_LABEL(window->NameLabel));
|
|
|
|
@ -346,6 +358,9 @@ void on_monitor_configure(GtkWidget *,monitor_data *window){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
guint ports_size;
|
|
|
|
guint ports_size;
|
|
|
|
config_str ports = (config_str)g_hash_table_get_keys_as_array(main_config.ports_table,&ports_size);
|
|
|
|
config_str ports = (config_str)g_hash_table_get_keys_as_array(main_config.ports_table,&ports_size);
|
|
|
|
|
|
|
|
// for (guint i=0;i<ports_size;i++){
|
|
|
|
|
|
|
|
qsort(ports,ports_size,sizeof(*ports),(int(*)(const void*,const void*))yon_string_compare);
|
|
|
|
|
|
|
|
// }
|
|
|
|
for (guint i=0;i<ports_size;i++){
|
|
|
|
for (guint i=0;i<ports_size;i++){
|
|
|
|
int found = yon_char_parsed_check_exist(config_ports,config_size,ports[i]);
|
|
|
|
int found = yon_char_parsed_check_exist(config_ports,config_size,ports[i]);
|
|
|
|
if (found==-1||(!yon_char_is_empty(target)&&!strcmp(target,ports[i]))||yon_config_get_status(XORG_MONITOR(ports[i]))==-1){
|
|
|
|
if (found==-1||(!yon_char_is_empty(target)&&!strcmp(target,ports[i]))||yon_config_get_status(XORG_MONITOR(ports[i]))==-1){
|
|
|
|
@ -399,13 +414,17 @@ void on_monitor_configure(GtkWidget *,monitor_data *window){
|
|
|
|
resolution = current;
|
|
|
|
resolution = current;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(target)&&!yon_char_is_empty(resolutions)&&!strstr(resolutions,resolution)){
|
|
|
|
if (!yon_char_is_empty(resolution)&&!yon_char_is_empty(target)&&!yon_char_is_empty(resolutions)&&!strstr(resolutions,resolution)){
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(monitors->UnsupportedCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(monitors->UnsupportedCheck),1);
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(resolution)){
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(monitors->ResolutionCombo),resolution);
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(monitors->ResolutionCombo),resolution);
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->ResolutionCombo),0);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
gtk_widget_show(monitors->MainWindow);
|
|
|
|
gtk_widget_show(monitors->MainWindow);
|
|
|
|
|