Visual updates; Localisation updates; Fixes #170
YanTheKaller/ubinstall-gtk:master into master 4 months ago
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1009 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 183 KiB |
@ -0,0 +1,152 @@
|
||||
msgid "Docker and webmanager and utils"
|
||||
msgstr ""
|
||||
|
||||
msgid "Containerization"
|
||||
msgstr ""
|
||||
|
||||
msgid "Podman and webmanager and utils"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brother printer drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Canon CAPT Printer Driver"
|
||||
msgstr ""
|
||||
|
||||
msgid "Canon UFR II LIPSLX CARPS2 printer driver"
|
||||
msgstr ""
|
||||
|
||||
msgid "Epson printer drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kyocera printer drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lexmark drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pantum printer drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "hplip, gutenprint, foomatic printers drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Printer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ricoh drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Samsung drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Xerox drivers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Education"
|
||||
msgstr ""
|
||||
|
||||
msgid "soft collection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Multimedia"
|
||||
msgstr ""
|
||||
|
||||
msgid "Collection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Multimedia soft collection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Blender and utilities"
|
||||
msgstr ""
|
||||
|
||||
msgid "AnyDesk"
|
||||
msgstr ""
|
||||
|
||||
msgid "Realvnc viewer and server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rustdesk"
|
||||
msgstr ""
|
||||
|
||||
msgid "Remote desktop"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rustdesk gateway server"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
|
||||
msgid "Telegram"
|
||||
msgstr ""
|
||||
|
||||
msgid "Web servers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webmin and Usermin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
msgid "Managment"
|
||||
msgstr ""
|
||||
|
||||
msgid "UBPile Workflow"
|
||||
msgstr ""
|
||||
|
||||
msgid "Kingsoft Office (WPS Office) - an office productivity suite"
|
||||
msgstr ""
|
||||
|
||||
msgid "OnlyOffice suite"
|
||||
msgstr ""
|
||||
|
||||
msgid "LibreOffice"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chromium and some plugins"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chromium and some plugins"
|
||||
msgstr ""
|
||||
|
||||
msgid "Office"
|
||||
msgstr ""
|
||||
|
||||
msgid "Browser"
|
||||
msgstr ""
|
||||
|
||||
msgid "Firefox and some plugins"
|
||||
msgstr ""
|
||||
|
||||
msgid "ubm"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yandex Browser and some utils"
|
||||
msgstr ""
|
||||
|
||||
msgid "QEMU"
|
||||
msgstr ""
|
||||
|
||||
msgid "QEMU, manager and utils"
|
||||
msgstr ""
|
||||
|
||||
msgid "VirtualBox"
|
||||
msgstr ""
|
||||
|
||||
msgid "VirtualBox and extension packs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Virtualization"
|
||||
msgstr ""
|
||||
|
||||
msgid "Vmware"
|
||||
msgstr ""
|
||||
|
||||
msgid "Vmware Workstation 17
|
||||
msgstr ""
|
||||
@ -1,12 +1,16 @@
|
||||
#include "ubinstall-gtk.h"
|
||||
|
||||
int yon_installation_start(main_window *widgets){
|
||||
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));
|
||||
return !pthread_create(&main_config.install_thread,NULL,on_config_save,widgets);
|
||||
}
|
||||
|
||||
void yon_quick_install(GtkWidget *self, main_window *widgets){
|
||||
main_config.save_configured=1;
|
||||
gtk_widget_hide(self);
|
||||
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));
|
||||
pthread_create(&main_config.install_thread,NULL,on_config_save,widgets);
|
||||
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
|
||||
yon_page_init(widgets,YON_PAGE_INSTALLATION);
|
||||
yon_page_update(widgets);
|
||||
}
|
||||
@ -0,0 +1,300 @@
|
||||
#include "ubinstall-gtk.h"
|
||||
|
||||
void on_source_changed(GtkComboBox *self){
|
||||
GtkWidget *devices_combo = g_object_get_data(G_OBJECT(self),"target");
|
||||
GtkWidget *path_button = g_object_get_data(G_OBJECT(self),"button");
|
||||
GtkWidget *path_combo = g_object_get_data(G_OBJECT(self),"combo");
|
||||
if (gtk_combo_box_get_active(self)){
|
||||
gtk_widget_show(path_button);
|
||||
gtk_widget_show(path_combo);
|
||||
gtk_widget_hide(devices_combo);
|
||||
} else{
|
||||
gtk_widget_hide(path_button);
|
||||
gtk_widget_hide(path_combo);
|
||||
gtk_widget_show(devices_combo);
|
||||
}
|
||||
}
|
||||
|
||||
source_element *yon_source_element_new(){
|
||||
source_element *element = new(source_element);
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source_element);
|
||||
|
||||
element->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
|
||||
element->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
|
||||
element->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
|
||||
element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
|
||||
element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
|
||||
element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
|
||||
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->DeviceCombo));
|
||||
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->TypeCombo));
|
||||
g_signal_connect(G_OBJECT(element->RemoveButton),"clicked",G_CALLBACK(on_source_remove),element);
|
||||
g_signal_connect(G_OBJECT(element->PathButton),"clicked",G_CALLBACK(on_source_choose),element);
|
||||
g_signal_connect(G_OBJECT(element->TypeCombo),"changed",G_CALLBACK(on_source_changed),element);
|
||||
g_object_set_data(G_OBJECT(element->PathButton),"combo",element->TypeCombo);
|
||||
g_object_set_data(G_OBJECT(element->MainBox),"source_element",element);
|
||||
g_object_set_data(G_OBJECT(element->PathButton),"target_combo",element->TypeCombo);
|
||||
g_object_set_data(G_OBJECT(element->TypeCombo),"target",element->DeviceCombo);
|
||||
g_object_set_data(G_OBJECT(element->TypeCombo),"button",element->PathButton);
|
||||
g_object_set_data(G_OBJECT(element->TypeCombo),"combo",element->PathEntry);
|
||||
gtk_widget_set_sensitive(element->DeviceCombo,0);
|
||||
gtk_widget_set_sensitive(element->TypeCombo,0);
|
||||
gtk_widget_set_sensitive(element->PathEntry,0);
|
||||
gtk_widget_set_sensitive(element->PathButton,0);
|
||||
gtk_widget_hide(element->PathButton);
|
||||
int size;
|
||||
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
|
||||
for (int i=0;i<size;i++){
|
||||
int parsed_size;
|
||||
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
|
||||
if (!strcmp(parsed[0],"part")){
|
||||
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(element->DeviceCombo),parsed[1],parsed[1]);
|
||||
}
|
||||
yon_char_parsed_free(parsed,parsed_size);
|
||||
}
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(element->DeviceCombo),0);
|
||||
yon_char_parsed_free(parts,size);
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
void yon_source_element_add(char *key,void*,source_window *window){
|
||||
source_element *element = yon_source_element_new();
|
||||
if (yon_char_check_begins_with(key,"/dev/")){
|
||||
gtk_combo_box_set_active_id(GTK_COMBO_BOX(element->DeviceCombo),key);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0);
|
||||
} else if (g_regex_match_simple(".*\\.iso",key,G_REGEX_DEFAULT,G_REGEX_MATCH_DEFAULT)){
|
||||
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),2);
|
||||
} else {
|
||||
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),1);
|
||||
}
|
||||
gtk_box_pack_start(GTK_BOX(window->AddBox),element->MainBox,0,0,0);
|
||||
g_object_set_data(G_OBJECT(element->MainBox),"window",window);
|
||||
g_object_set_data(G_OBJECT(element->PathButton),"target",window->PathEntry);
|
||||
}
|
||||
|
||||
void yon_source_update(source_window *window){
|
||||
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
|
||||
GList *iter;
|
||||
for (iter=list;iter;iter=iter->next){
|
||||
gtk_widget_destroy(GTK_WIDGET(iter->data));
|
||||
}
|
||||
dictionary *dict;
|
||||
if (!window->sources) return;
|
||||
for_dictionaries(dict,window->sources){
|
||||
yon_source_element_add(dict->key,NULL,window);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void on_source_add(GtkWidget *,source_window *window){
|
||||
const char *path = gtk_widget_get_visible(window->PathEntry)?gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->DeviceCombo));
|
||||
if (!yon_dictionary_get(&window->sources,(char*)path)){
|
||||
yon_dictionary_add_or_create_if_exists_with_data(window->sources,yon_char_new(path),NULL);
|
||||
gtk_entry_set_text(GTK_ENTRY(window->PathEntry),"");
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
|
||||
yon_source_update(window);
|
||||
} else {
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
void on_source_remove(GtkWidget *,source_element *element){
|
||||
source_window *window = g_object_get_data(G_OBJECT(element->MainBox),"window");
|
||||
const char *path = gtk_widget_get_visible(element->PathEntry)?gtk_entry_get_text(GTK_ENTRY(element->PathEntry)):gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo));
|
||||
dictionary *dict = yon_dictionary_get(&window->sources,(char*)path);
|
||||
if (dict){
|
||||
window->sources = yon_dictionary_rip(dict);
|
||||
yon_source_update(window);
|
||||
}
|
||||
}
|
||||
|
||||
void on_source_choose(GtkWidget *self){
|
||||
GtkWidget *target_entry = g_object_get_data(G_OBJECT(self),"target");
|
||||
GtkWidget *target_mode = g_object_get_data(G_OBJECT(self),"combo");
|
||||
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(target_mode))){
|
||||
case 1:{
|
||||
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
|
||||
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
|
||||
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
|
||||
free(dialog);
|
||||
}
|
||||
|
||||
} break;
|
||||
case 2: {
|
||||
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
|
||||
GtkFileFilter *filter = gtk_file_filter_new();
|
||||
gtk_file_filter_add_pattern(filter,"*.iso");
|
||||
gtk_file_filter_set_name(filter,".iso");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
|
||||
|
||||
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
|
||||
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
|
||||
free(dialog);
|
||||
}
|
||||
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void on_source_accept(GtkWidget *,source_window *window){
|
||||
if (gtk_switch_get_active(GTK_SWITCH(window->AutoSwitch))){
|
||||
yon_config_register(source_parameter,source_parameter_command,"auto");
|
||||
on_subwindow_close(window->Window);
|
||||
return;
|
||||
}
|
||||
const char *creation_path = gtk_widget_get_visible(window->PathEntry)? gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):NULL;
|
||||
if (!yon_char_is_empty(creation_path)){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SOURCE_CREATE_ONGOING_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
}
|
||||
char *sources_list = NULL;
|
||||
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
|
||||
GList *iter;
|
||||
for (iter=list;iter;iter=iter->next){
|
||||
source_element *element = NULL;
|
||||
element = g_object_get_data(G_OBJECT(iter->data),"source_element");
|
||||
switch(gtk_combo_box_get_active(GTK_COMBO_BOX(element->TypeCombo))){
|
||||
case 0:{
|
||||
char *cur = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo));
|
||||
if (yon_char_check_element(sources_list,cur,",")){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
|
||||
return;
|
||||
}
|
||||
char *temp = yon_char_append_element(sources_list,cur,",");
|
||||
if (!yon_char_is_empty(sources_list)) free(sources_list);
|
||||
sources_list = temp;
|
||||
} break;
|
||||
case 1:{
|
||||
char *cur = (char*)gtk_entry_get_text(GTK_ENTRY(element->PathEntry));
|
||||
if (yon_char_check_element(sources_list,cur,",")){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
|
||||
return;
|
||||
}
|
||||
char *temp = yon_char_append_element(sources_list,cur,",");
|
||||
if (!yon_char_is_empty(sources_list)) free(sources_list);
|
||||
sources_list = temp;
|
||||
} break;
|
||||
case 2:{
|
||||
char *cur = (char*)gtk_entry_get_text(GTK_ENTRY(element->PathEntry));
|
||||
if (yon_char_check_element(sources_list,cur,",")){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
|
||||
return;
|
||||
}
|
||||
char *temp = yon_char_append_element(sources_list,cur,",");
|
||||
if (!yon_char_is_empty(sources_list)) free(sources_list);
|
||||
sources_list = temp;
|
||||
} break;
|
||||
}
|
||||
}
|
||||
if (!yon_char_is_empty(sources_list)){
|
||||
yon_config_register(source_parameter,source_parameter_command,sources_list);
|
||||
} else {
|
||||
yon_config_remove_by_key(source_parameter);
|
||||
}
|
||||
int size;
|
||||
config_str paths = NULL;
|
||||
dictionary *dict;
|
||||
if (!window->sources) return;
|
||||
for_dictionaries(dict,window->sources){
|
||||
if (yon_char_parsed_check_exist(paths,size,dict->key)>-1){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
return;
|
||||
}
|
||||
yon_char_parsed_add_or_create_if_exists(paths,&size,dict->key);
|
||||
}
|
||||
if (!size){
|
||||
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
yon_ubl_status_highlight_incorrect(window->PathEntry);
|
||||
return;
|
||||
}
|
||||
char *parameter_string = yon_char_parsed_to_string(paths,(int)size,",");
|
||||
free(parameter_string);
|
||||
on_subwindow_close(window->Window);
|
||||
|
||||
if (!main_config.configure_mode){
|
||||
int size;
|
||||
config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_parameter,NULL);
|
||||
if (parameters){
|
||||
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
|
||||
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
|
||||
if (!system(command)){}
|
||||
free(command);
|
||||
yon_char_parsed_free(parameters,size);
|
||||
}
|
||||
}
|
||||
yon_dictionary_free_all(window->sources,NULL);
|
||||
free(window);
|
||||
}
|
||||
|
||||
source_window *yon_source_window_new(){
|
||||
source_window *window = new(source_window);
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source);
|
||||
|
||||
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
|
||||
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
||||
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
||||
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
|
||||
window->AutoSwitch = yon_gtk_builder_get_widget(builder,"AutoSwitch");
|
||||
window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
|
||||
window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
|
||||
window->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
|
||||
window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
|
||||
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
|
||||
window->AddBox = yon_gtk_builder_get_widget(builder,"AddBox");
|
||||
window->sources = NULL;
|
||||
|
||||
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
||||
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_source_accept),window);
|
||||
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_source_add),window);
|
||||
g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_source_choose),window);
|
||||
g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_source_changed),window);
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),gtk_widget_get_parent(gtk_widget_get_parent(window->AddBox)));
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->TypeCombo);
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->DeviceCombo);
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathButton);
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathEntry);
|
||||
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->AddButton);
|
||||
g_object_set_data(G_OBJECT(window->PathButton),"combo",window->TypeCombo);
|
||||
g_object_set_data(G_OBJECT(window->PathButton),"target",window->PathEntry);
|
||||
g_object_set_data(G_OBJECT(window->TypeCombo),"target",window->DeviceCombo);
|
||||
g_object_set_data(G_OBJECT(window->TypeCombo),"button",window->PathButton);
|
||||
g_object_set_data(G_OBJECT(window->TypeCombo),"combo",window->PathEntry);
|
||||
{
|
||||
char *config_parameter = config(source_parameter);
|
||||
if (window->sources){
|
||||
yon_dictionary_free_all(window->sources,NULL);
|
||||
}
|
||||
int size;
|
||||
config_str parsed = yon_char_parse(config_parameter,&size,",");
|
||||
for (int i=0;i<size;i++){
|
||||
yon_dictionary_add_or_create_if_exists_with_data(window->sources,parsed[i],NULL);
|
||||
}
|
||||
yon_char_parsed_free(parsed,size);
|
||||
}
|
||||
int size;
|
||||
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
|
||||
for (int i=0;i<size;i++){
|
||||
int parsed_size;
|
||||
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
|
||||
if (!strcmp(parsed[0],"part")){
|
||||
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->DeviceCombo),parsed[1],parsed[1]);
|
||||
}
|
||||
yon_char_parsed_free(parsed,parsed_size);
|
||||
}
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
|
||||
yon_char_parsed_free(parts,size);
|
||||
return window;
|
||||
}
|
||||
|
||||
void on_source_clicked(GtkWidget *,main_window *widgets){
|
||||
source_window *window = yon_source_window_new();
|
||||
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
|
||||
yon_source_update(window);
|
||||
gtk_widget_show(window->Window);
|
||||
}
|
||||