|
|
|
@ -3,7 +3,7 @@
|
|
|
|
config main_config;
|
|
|
|
config main_config;
|
|
|
|
|
|
|
|
|
|
|
|
void on_terminal_done(GtkWidget *, int , main_window *widgets){
|
|
|
|
void on_terminal_done(GtkWidget *, int , main_window *widgets){
|
|
|
|
gtk_widget_destroy(widgets->TerminalRevealer);
|
|
|
|
vte_terminal_feed_child(VTE_TERMINAL(widgets->InstallTerminal),"^C",2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_terminal_more(GtkWidget *, main_window *widgets){
|
|
|
|
void on_terminal_more(GtkWidget *, main_window *widgets){
|
|
|
|
@ -13,31 +13,10 @@ void on_terminal_more(GtkWidget *, main_window *widgets){
|
|
|
|
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active);
|
|
|
|
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_terminal_destroy(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0);
|
|
|
|
|
|
|
|
gtk_widget_destroy(widgets->TerminalRevealer);
|
|
|
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree)),&model,&iter)){
|
|
|
|
|
|
|
|
char *module, *package;
|
|
|
|
|
|
|
|
gtk_tree_model_get(model, &iter, 7,&module, 8,&package,-1);
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(module)){
|
|
|
|
|
|
|
|
if (!system(yon_get_is_installed_command(module))){
|
|
|
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,9,1,-1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (!system(yon_get_is_installed_command(package))){
|
|
|
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,10,1,-1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
yon_proprietary_get_thread(NULL,widgets);
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(yon_char_unite(PROPRIETARY_OPETAION_DONE_LABEL,". ",PROPRIETARY_LOADING_LABEL,NULL),BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *widgets){
|
|
|
|
gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *widgets){
|
|
|
|
|
|
|
|
yon_install_buttons_set_sensitive(widgets,1);
|
|
|
|
|
|
|
|
vte_terminal_set_input_enabled(VTE_TERMINAL(self),0);
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
main_config.progress_active=0;
|
|
|
|
main_config.progress_active=0;
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
@ -47,44 +26,19 @@ gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *wid
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
on_terminal_done(self,0,widgets);
|
|
|
|
on_terminal_done(self,0,widgets);
|
|
|
|
|
|
|
|
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean on_terminal_check_progress(main_window *widgets){
|
|
|
|
gboolean on_terminal_check_progress(main_window *widgets){
|
|
|
|
char *text = vte_terminal_get_text_format(VTE_TERMINAL(widgets->terminal),VTE_FORMAT_TEXT);
|
|
|
|
|
|
|
|
GRegex *regex = g_regex_new("\\d?\\d?\\d%",0,0,NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GMatchInfo *match = NULL;
|
|
|
|
|
|
|
|
g_regex_match(regex,text,0,&match);
|
|
|
|
|
|
|
|
g_regex_unref(regex);
|
|
|
|
|
|
|
|
double percentage = 0.0;
|
|
|
|
|
|
|
|
char *last_match = NULL;
|
|
|
|
|
|
|
|
while (g_match_info_matches(match)) {
|
|
|
|
|
|
|
|
char *current_match = g_match_info_fetch(match, 0);
|
|
|
|
|
|
|
|
if (last_match) {
|
|
|
|
|
|
|
|
g_free(last_match);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
last_match = current_match;
|
|
|
|
|
|
|
|
g_match_info_next(match, NULL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (last_match) {
|
|
|
|
|
|
|
|
yon_char_remove_last_symbol(last_match,'%');
|
|
|
|
|
|
|
|
percentage = g_ascii_strtod(last_match,NULL);
|
|
|
|
|
|
|
|
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel), percentage / 100);
|
|
|
|
|
|
|
|
g_free(last_match);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (text) g_free(text);
|
|
|
|
|
|
|
|
if (match) g_match_info_unref(match);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
if (percentage>99||!main_config.progress_active){
|
|
|
|
if (!main_config.progress_active){
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_progress_bar_pulse(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel));
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
return G_SOURCE_CONTINUE;
|
|
|
|
return G_SOURCE_CONTINUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -96,64 +50,20 @@ void on_command_cancel(GtkWidget *,main_window *widgets){
|
|
|
|
on_terminal_done(NULL,0,widgets);
|
|
|
|
on_terminal_done(NULL,0,widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_terminal_start(main_window *widgets, char *usr_command){
|
|
|
|
void on_driver_pack_selection_change(GtkWidget *, GtkListBoxRow *selection, main_window *widgets){
|
|
|
|
char **command=new_arr(char*,2);
|
|
|
|
if (selection){
|
|
|
|
gchar **envp = g_get_environ();
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
|
|
|
|
command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
|
|
|
|
if (driver->supported_devices_avaliable){
|
|
|
|
command[1]=NULL;
|
|
|
|
gtk_widget_set_sensitive(widgets->SupportedDevicesButton,1);
|
|
|
|
char **env=new_arr(char*,2);
|
|
|
|
} else {
|
|
|
|
env[0]="";
|
|
|
|
gtk_widget_set_sensitive(widgets->SupportedDevicesButton,0);
|
|
|
|
env[1]=NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkBuilder *builder=gtk_builder_new_from_resource(glade_terminal_path);
|
|
|
|
|
|
|
|
widgets->TerminalBox = yon_gtk_builder_get_widget(builder, "TerminalBox");
|
|
|
|
|
|
|
|
widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
|
|
|
|
|
|
|
|
widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder, "TerminalMoreRevieler");
|
|
|
|
|
|
|
|
widgets->TerminalCancelButton = yon_gtk_builder_get_widget(builder, "TerminalCancelButton");
|
|
|
|
|
|
|
|
widgets->TerminalMoreButton = yon_gtk_builder_get_widget(builder, "TerminalMoreButton");
|
|
|
|
|
|
|
|
widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
|
|
|
|
|
|
|
|
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
widgets->terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->terminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->TerminalCancelButton),"clicked",G_CALLBACK(on_command_cancel),widgets);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->TerminalMoreButton),MORE_LABEL);
|
|
|
|
|
|
|
|
vte_terminal_set_size(VTE_TERMINAL(widgets->terminal),10,15);
|
|
|
|
|
|
|
|
gtk_widget_set_app_paintable(widgets->terminal,1);
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"opacited");
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"workingbg");
|
|
|
|
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->TerminalMoreButton), "clicked", G_CALLBACK(on_terminal_more), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->terminal), "destroy", G_CALLBACK(on_terminal_destroy), widgets);
|
|
|
|
|
|
|
|
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),1);
|
|
|
|
|
|
|
|
vte_terminal_reset(VTE_TERMINAL(widgets->terminal),0,1);
|
|
|
|
|
|
|
|
yon_terminal_integrated_start_shell(widgets->terminal,usr_command,NULL,NULL);
|
|
|
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(widgets->terminal), 100);
|
|
|
|
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(widgets->terminal), TRUE);
|
|
|
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widgets->terminal), TRUE);
|
|
|
|
|
|
|
|
vte_terminal_set_input_enabled(VTE_TERMINAL(widgets->terminal),1);
|
|
|
|
|
|
|
|
gtk_widget_show_all(widgets->TerminalRevealer);
|
|
|
|
|
|
|
|
gtk_widget_realize(widgets->terminal);
|
|
|
|
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
|
|
|
|
main_config.progress_active=1;
|
|
|
|
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
|
|
|
|
gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0.00001);
|
|
|
|
|
|
|
|
g_idle_add((GSourceFunc)on_terminal_check_progress,widgets);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_driver_pack_selection_change(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
|
|
|
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->InfoButton,1);
|
|
|
|
|
|
|
|
int installed=0;
|
|
|
|
|
|
|
|
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)),&iter,0,&installed,-1);
|
|
|
|
|
|
|
|
if (installed==1){
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->AboutModuleButton,1);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->AboutPackageButton,1);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
gtk_widget_set_sensitive(widgets->InfoButton,0);
|
|
|
|
gtk_widget_set_sensitive(widgets->SupportedDevicesButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->AboutModuleButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->AboutPackageButton,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -167,96 +77,29 @@ gpointer yon_driver_info_launch(void *command){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_driver_pack_info(GtkWidget *, main_window *widgets){
|
|
|
|
void on_driver_pack_info(GtkWidget *, main_window *widgets){
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkWidget *selection = GTK_WIDGET(gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList)));
|
|
|
|
char *module, *package;
|
|
|
|
if (selection){
|
|
|
|
GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list);
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
|
|
|
|
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
gtk_tree_model_get(list_s,&iter,7,&module,8,&package,-1);
|
|
|
|
char *command = get_info_proprietary_command(driver->package);
|
|
|
|
char *command = get_info_proprietary_command(yon_char_is_empty(module)?package:module);
|
|
|
|
|
|
|
|
g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
|
|
|
|
g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_pack_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *widgets){
|
|
|
|
void on_driver_module_info(GtkWidget *, main_window *widgets){
|
|
|
|
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
GtkWidget *selection = GTK_WIDGET(gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList)));
|
|
|
|
GtkTreeIter iter;
|
|
|
|
if (selection){
|
|
|
|
if (!GTK_IS_TREE_MODEL_FILTER(model)){
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
|
|
|
|
|
|
|
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
|
|
|
|
|
|
|
|
model=GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path);
|
|
|
|
|
|
|
|
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
char *package;
|
|
|
|
|
|
|
|
int installed;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(model),&iter,1,&installed,8,&package,-1);
|
|
|
|
|
|
|
|
if (!installed){
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
|
|
|
|
|
|
data->action_text=yon_char_unite(INSTALL_CONFIRMATION_LABEL(package),"\n",INSTALL_ATTENTION_LABEL,NULL);
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
|
|
|
char *command = install_proprietary_command(package);
|
|
|
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(PACKAGE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(data);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
|
|
|
|
|
|
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
|
|
|
char *command = delete_proprietary_command(package);
|
|
|
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(PACKAGE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_module_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *widgets){
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
char *command = get_info_proprietary_command(driver->module);
|
|
|
|
GtkTreeIter iter;
|
|
|
|
g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
|
|
|
|
if (!GTK_IS_TREE_MODEL_FILTER(model)){
|
|
|
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(main_config.list),&iter,path);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
GtkTreeIter itar;
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model),&itar,path);
|
|
|
|
|
|
|
|
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model),&iter,&itar);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
char *package;
|
|
|
|
|
|
|
|
int installed;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&installed,7,&package,-1);
|
|
|
|
|
|
|
|
if (!installed){
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
|
|
|
|
|
|
data->action_text=INSTALL_CONFIRMATION_LABEL(package);
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
|
|
|
char *command = install_proprietary_command(package);
|
|
|
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(MODULE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(data);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
|
|
|
|
|
|
data->action_text=REMOVE_CONFIRMATION_LABEL(package);
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
|
|
|
char *command = delete_proprietary_command(package);
|
|
|
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
|
|
|
yon_ubl_status_box_render(MODULE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widgets){
|
|
|
|
gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widgets){
|
|
|
|
@ -268,22 +111,24 @@ gboolean yon_filter_func(GtkTreeModel* model,GtkTreeIter* iter,main_window *widg
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
void on_kernel_filter_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self));
|
|
|
|
const char *active = gtk_combo_box_get_active_id(GTK_COMBO_BOX(self));
|
|
|
|
if (active){
|
|
|
|
if (!yon_char_is_empty(active)){
|
|
|
|
if (!GTK_IS_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree)))){
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
|
|
|
|
GtkTreeModel *model = gtk_tree_model_filter_new(GTK_TREE_MODEL(main_config.list),NULL);
|
|
|
|
for (GList *iter = list; iter; iter=iter->next){
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),model);
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model),(GtkTreeModelFilterVisibleFunc)yon_filter_func,widgets,NULL);
|
|
|
|
if (!strcmp(driver->kernel,active)){
|
|
|
|
|
|
|
|
gtk_widget_show(GTK_WIDGET(iter->data));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_hide(GTK_WIDGET(iter->data));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree))));
|
|
|
|
g_list_free(list);
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
|
|
|
|
if (GTK_IS_TREE_MODEL_FILTER(model)) {
|
|
|
|
for (GList *iter = list; iter; iter=iter->next){
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
|
|
|
|
gtk_widget_show(GTK_WIDGET(iter->data));
|
|
|
|
g_object_unref(model);
|
|
|
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
g_list_free(list);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1017,53 +862,113 @@ void yon_monitor_view_update(){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_clear(main_window *widgets){
|
|
|
|
gboolean yon_proprietary_clear(main_window *widgets){
|
|
|
|
gtk_widget_set_sensitive(widgets->LoadDriversButton,0);
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
|
|
|
|
gtk_list_store_clear(main_config.list);
|
|
|
|
GList *iter = NULL;
|
|
|
|
gtk_list_store_clear(main_config.list2);
|
|
|
|
for (iter = list; iter; iter=iter->next){
|
|
|
|
gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
|
|
|
|
gtk_widget_show(widgets->DriversLoadingSpinner);
|
|
|
|
free(driver->name);
|
|
|
|
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo));
|
|
|
|
free(driver->module);
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL);
|
|
|
|
free(driver->package);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0);
|
|
|
|
free(driver->kernel);
|
|
|
|
|
|
|
|
free(driver->description);
|
|
|
|
|
|
|
|
free(driver->devices);
|
|
|
|
|
|
|
|
gtk_widget_destroy(GTK_WIDGET(iter->data));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// gtk_widget_set_sensitive(widgets->LoadDriversButton,0);
|
|
|
|
|
|
|
|
// gtk_list_store_clear(main_config.list);
|
|
|
|
|
|
|
|
// gtk_list_store_clear(main_config.list2);
|
|
|
|
|
|
|
|
// gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
|
|
|
|
// gtk_widget_show(widgets->DriversLoadingSpinner);
|
|
|
|
|
|
|
|
// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo));
|
|
|
|
|
|
|
|
// gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL);
|
|
|
|
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void yon_drivers_resize(main_window *widgets){
|
|
|
|
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->DriversList));
|
|
|
|
|
|
|
|
GList *iter;
|
|
|
|
|
|
|
|
int module_width=0;
|
|
|
|
|
|
|
|
int package_width=0;
|
|
|
|
|
|
|
|
int kernel_width=0;
|
|
|
|
|
|
|
|
int driver_width=0;
|
|
|
|
|
|
|
|
int description_width=0;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(widgets->InstalledModuleLabel,&module_width,NULL);
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(widgets->InstalledPackageLabel,&package_width,NULL);
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(widgets->KernelLabel,&kernel_width,NULL);
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(widgets->DriverLabel,&driver_width,NULL);
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(widgets->DescriptionLabel,NULL,&description_width);
|
|
|
|
|
|
|
|
for (iter = list;iter;iter=iter->next){
|
|
|
|
|
|
|
|
driver_struct *data = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
|
|
|
|
|
|
|
|
gtk_widget_realize(data->ModuleInstalledCheck);
|
|
|
|
|
|
|
|
gtk_widget_realize(data->PackageInstalledCheck);
|
|
|
|
|
|
|
|
gtk_widget_realize(data->KernelLabel);
|
|
|
|
|
|
|
|
gtk_widget_realize(data->DriverLabel);
|
|
|
|
|
|
|
|
gtk_widget_realize(data->DescriptionLabel);
|
|
|
|
|
|
|
|
gtk_widget_realize(data->DevicesBox);
|
|
|
|
|
|
|
|
int temp_width = 0;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(data->ModuleInstalledCheck,&temp_width,NULL);
|
|
|
|
|
|
|
|
if (temp_width > module_width) module_width=temp_width;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(data->PackageInstalledCheck,&temp_width,NULL);
|
|
|
|
|
|
|
|
if (temp_width > package_width) package_width=temp_width;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(data->KernelLabel,&temp_width,NULL);
|
|
|
|
|
|
|
|
if (temp_width > kernel_width) kernel_width=temp_width;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(data->DriverLabel,&temp_width,NULL);
|
|
|
|
|
|
|
|
if (temp_width > driver_width) driver_width=temp_width;
|
|
|
|
|
|
|
|
gtk_widget_get_preferred_width(data->DescriptionLabel,NULL,&temp_width);
|
|
|
|
|
|
|
|
if (temp_width > description_width) description_width=temp_width;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (module_width||package_width||kernel_width||driver_width||description_width){
|
|
|
|
|
|
|
|
for (iter = list;iter;iter=iter->next){
|
|
|
|
|
|
|
|
driver_struct *data = g_object_get_data(G_OBJECT(iter->data),"driver_struct");
|
|
|
|
|
|
|
|
if (module_width)
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(gtk_widget_get_parent(data->ModuleInstalledCheck),module_width,-1);
|
|
|
|
|
|
|
|
if (package_width)
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(gtk_widget_get_parent(data->PackageInstalledCheck),package_width,-1);
|
|
|
|
|
|
|
|
if (kernel_width)
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(gtk_widget_get_parent(data->KernelLabel),kernel_width,-1);
|
|
|
|
|
|
|
|
if (driver_width)
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(gtk_widget_get_parent(data->DriverLabel),driver_width,-1);
|
|
|
|
|
|
|
|
if (description_width)
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(gtk_widget_get_parent(data->DescriptionLabel),description_width,-1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
g_list_free(list);
|
|
|
|
|
|
|
|
if (module_width) gtk_widget_set_size_request(widgets->InstalledModuleLabel,module_width,-1);
|
|
|
|
|
|
|
|
if (package_width) gtk_widget_set_size_request(widgets->InstalledPackageLabel,package_width,-1);
|
|
|
|
|
|
|
|
if (kernel_width) gtk_widget_set_size_request(widgets->KernelLabel,kernel_width,-1);
|
|
|
|
|
|
|
|
if (driver_width) gtk_widget_set_size_request(widgets->DriverLabel,driver_width,-1);
|
|
|
|
|
|
|
|
if (description_width) gtk_widget_set_size_request(widgets->DescriptionLabel,description_width,-1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_set(main_window *widgets){
|
|
|
|
gboolean yon_proprietary_set(main_window *widgets){
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->LoadDriversButton,1);
|
|
|
|
gtk_widget_set_sensitive(widgets->LoadDriversButton,1);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_append(struct proprietary_struct *target){
|
|
|
|
gboolean yon_proprietary_append(driver_struct *){
|
|
|
|
GtkTreeIter iter;
|
|
|
|
// GtkTreeIter iter;
|
|
|
|
gtk_list_store_append(main_config.list,&iter);
|
|
|
|
// gtk_list_store_append(main_config.list,&iter);
|
|
|
|
gtk_list_store_set(main_config.list,&iter,0,target->module_status,1,target->package_status,2,target->drivers[0],3,target->drivers[3],4,_(target->drivers[4]),5,_(target->drivers[5]),7,target->drivers[1],8,target->drivers[2],9,!yon_char_is_empty(target->drivers[1])&&target->module_exist,10,!yon_char_is_empty(target->drivers[2])&&target->package_exist,-1);
|
|
|
|
// gtk_list_store_set(main_config.list,&iter,0,target->module_status,1,target->package_status,2,target->drivers[0],3,target->drivers[3],4,_(target->drivers[4]),5,_(target->drivers[5]),7,target->drivers[1],8,target->drivers[2],9,!yon_char_is_empty(target->drivers[1])&&target->module_exist,10,!yon_char_is_empty(target->drivers[2])&&target->package_exist,-1);
|
|
|
|
free(target);
|
|
|
|
// free(target);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append){
|
|
|
|
gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append){
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(append->widgets->KernelsCombo),append->kernel);
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(append->widgets->KernelsCombo),append->kernel,append->kernel);
|
|
|
|
free(append->kernel);
|
|
|
|
free(append->kernel);
|
|
|
|
free(append);
|
|
|
|
free(append);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_disconnect(main_window *widgets){
|
|
|
|
|
|
|
|
g_object_ref(main_config.list);
|
|
|
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
|
|
|
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_connect(main_window *widgets){
|
|
|
|
gboolean yon_proprietary_connect(main_window *widgets){
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
|
|
|
|
|
|
|
|
gtk_spinner_stop(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
gtk_spinner_stop(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
gtk_widget_hide(widgets->DriversLoadingSpinner);
|
|
|
|
gtk_widget_hide(widgets->DriversLoadingSpinner);
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void *yon_proprietary_local_get(main_window *widgets){
|
|
|
|
void yon_proprietary_local_get(main_window *widgets){
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_clear,widgets);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_clear,widgets);
|
|
|
|
int kernels_size;
|
|
|
|
int kernels_size;
|
|
|
|
config_str kernels_installed=yon_config_load(yon_get_kernels_installed,&kernels_size);
|
|
|
|
config_str kernels_installed=yon_config_load(yon_get_kernels_installed,&kernels_size);
|
|
|
|
@ -1086,56 +991,45 @@ void *yon_proprietary_local_get(main_window *widgets){
|
|
|
|
yon_char_remove_last_symbol(rtn[i],'\n');
|
|
|
|
yon_char_remove_last_symbol(rtn[i],'\n');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int packages_size;
|
|
|
|
|
|
|
|
config_str packages = yon_config_load(yon_get_all_pacman_packages_command,&packages_size);
|
|
|
|
|
|
|
|
GHashTable *table = g_hash_table_new(g_str_hash,g_str_equal);
|
|
|
|
|
|
|
|
if (packages_size){
|
|
|
|
|
|
|
|
for (int i=0;i<packages_size;i++){
|
|
|
|
|
|
|
|
yon_char_remove_last_symbol(packages[i],'\n');
|
|
|
|
|
|
|
|
g_hash_table_add(table,packages[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(packages);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int installed_size;
|
|
|
|
|
|
|
|
config_str installed_packages = yon_config_load(yon_get_add_installed_packages,&installed_size);
|
|
|
|
|
|
|
|
GHashTable *installed = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
|
|
|
|
|
|
|
|
if (installed_packages){
|
|
|
|
|
|
|
|
for (int i=0;i<installed_size;i++){
|
|
|
|
|
|
|
|
yon_char_remove_last_symbol(installed_packages[i],'\n');
|
|
|
|
|
|
|
|
g_hash_table_add(installed,installed_packages[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
free(installed_packages);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_disconnect,widgets);
|
|
|
|
|
|
|
|
for (int dr_desc=1;dr_desc<size;dr_desc++){
|
|
|
|
for (int dr_desc=1;dr_desc<size;dr_desc++){
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
int current_size;
|
|
|
|
int current_size;
|
|
|
|
config_str current = yon_char_parse(rtn[dr_desc],¤t_size,";");
|
|
|
|
config_str current = yon_char_parse(rtn[dr_desc],¤t_size,";");
|
|
|
|
if ((!strcmp(current[0],"")||
|
|
|
|
if ((!strcmp(current[0],"")||
|
|
|
|
yon_char_parsed_check_exist(kernels_installed,kernels_size,current[0])>-1)){
|
|
|
|
yon_char_parsed_check_exist(kernels_installed,kernels_size,current[0])>-1)){
|
|
|
|
if ((!yon_char_is_empty(current[1])&&
|
|
|
|
if ((!yon_char_is_empty(current[1])&&
|
|
|
|
g_hash_table_contains(table,current[1]))||
|
|
|
|
yon_packages_check_exist(current[1]))||
|
|
|
|
(!yon_char_is_empty(current[2])&&
|
|
|
|
(!yon_char_is_empty(current[2])&&
|
|
|
|
g_hash_table_contains(table,current[2]))){
|
|
|
|
yon_packages_check_exist(current[2]))){
|
|
|
|
int module_status = !yon_char_is_empty(current[1])?g_hash_table_contains(installed,current[1]):0;
|
|
|
|
driver_struct *target = yon_driver_struct_new();
|
|
|
|
int package_status = !yon_char_is_empty(current[2])?g_hash_table_contains(installed,current[2]):0;
|
|
|
|
target->name = yon_char_new(current[3]);
|
|
|
|
struct proprietary_struct *cur = malloc(sizeof(struct proprietary_struct));
|
|
|
|
target->module = current[1];
|
|
|
|
cur->drivers=current;
|
|
|
|
target->package = current[2];
|
|
|
|
cur->drivers_size=current_size;
|
|
|
|
target->kernel = current[0];
|
|
|
|
cur->module_status=module_status;
|
|
|
|
target->devices = current_size>5?current[5]:NULL;
|
|
|
|
cur->package_status=package_status;
|
|
|
|
target->description = current[4];
|
|
|
|
cur->module_exist=g_hash_table_contains(table,current[1]);
|
|
|
|
target->module_installed = yon_packages_check_installed(current[1]);
|
|
|
|
cur->package_exist=g_hash_table_contains(table,current[2]);
|
|
|
|
target->package_installed = yon_packages_check_installed(current[2]);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_append,cur);
|
|
|
|
target->module_exist = yon_packages_check_exist(current[1]);
|
|
|
|
|
|
|
|
target->package_exist = yon_packages_check_exist(current[2]);
|
|
|
|
|
|
|
|
GtkWidget *list_row = gtk_list_box_row_new();
|
|
|
|
|
|
|
|
gtk_widget_show(list_row);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(target->ModuleInstalledCheck),"clicked", G_CALLBACK(on_install_activate),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(target->PackageInstalledCheck),"clicked", G_CALLBACK(on_install_activate),widgets);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_container_add(GTK_CONTAINER(list_row),target->MainBox);
|
|
|
|
|
|
|
|
g_object_set_data(G_OBJECT(list_row),"driver_struct",target);
|
|
|
|
|
|
|
|
gtk_list_box_insert(GTK_LIST_BOX(widgets->DriversList),list_row,-1);
|
|
|
|
|
|
|
|
yon_driver_struct_update(widgets,target);
|
|
|
|
|
|
|
|
// yon_proprietary_append(cur);
|
|
|
|
|
|
|
|
free(current);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (dr_desc==size-1) {
|
|
|
|
if (dr_desc==size-1) {
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
g_hash_table_unref(table);
|
|
|
|
|
|
|
|
g_hash_table_unref(installed);
|
|
|
|
|
|
|
|
if (!size){
|
|
|
|
if (!size){
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1143,13 +1037,12 @@ void *yon_proprietary_local_get(main_window *widgets){
|
|
|
|
yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
free(status_text);
|
|
|
|
free(status_text);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_set,widgets);
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_set,widgets);
|
|
|
|
g_thread_exit (NULL);
|
|
|
|
yon_drivers_resize(widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_proprietary_get_thread(GtkWidget *,main_window *widgets){
|
|
|
|
void yon_proprietary_get_thread(GtkWidget *,main_window *widgets){
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),NULL);
|
|
|
|
yon_proprietary_local_get(widgets);
|
|
|
|
g_thread_new("drivers_loading",(GThreadFunc)(yon_proprietary_local_get),widgets);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void yon_monitor_view_dictionary_destroy(void *window){
|
|
|
|
void yon_monitor_view_dictionary_destroy(void *window){
|
|
|
|
@ -1412,6 +1305,22 @@ void on_gapfix_changed(GtkWidget*, main_window *widgets){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int check_rmb_menu(void *data){
|
|
|
|
|
|
|
|
main_window *widgets = (main_window*)data;
|
|
|
|
|
|
|
|
GtkListBoxRow *selection = gtk_list_box_get_selected_row(GTK_LIST_BOX(widgets->DriversList));
|
|
|
|
|
|
|
|
if (selection){
|
|
|
|
|
|
|
|
driver_struct *driver = g_object_get_data(G_OBJECT(selection),"driver_struct");
|
|
|
|
|
|
|
|
if (driver->supported_devices_avaliable){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(GTK_WIDGET(widgets->menu->buttons->first->data),1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(GTK_WIDGET(widgets->menu->buttons->first->data),0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** void yon_setup_widgets(main_window *widgets)
|
|
|
|
/** void yon_setup_widgets(main_window *widgets)
|
|
|
|
* [EN]
|
|
|
|
* [EN]
|
|
|
|
* Sets up every element on main window
|
|
|
|
* Sets up every element on main window
|
|
|
|
@ -1422,7 +1331,8 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
main_config.widgets=widgets;
|
|
|
|
main_config.widgets=widgets;
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
|
|
|
|
widgets->MainBox = yon_gtk_builder_get_widget(builder,"BoxMain");
|
|
|
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),widgets->MainBox,1,1,0);
|
|
|
|
// Custom widgets configuration
|
|
|
|
// Custom widgets configuration
|
|
|
|
{
|
|
|
|
{
|
|
|
|
widgets->AutoDriverCombo = yon_gtk_builder_get_widget(builder,"AutoDriverCombo");
|
|
|
|
widgets->AutoDriverCombo = yon_gtk_builder_get_widget(builder,"AutoDriverCombo");
|
|
|
|
@ -1441,21 +1351,38 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
widgets->PrimusrunButton = yon_gtk_builder_get_widget(builder,"PrimusrunButton");
|
|
|
|
widgets->PrimusrunButton = yon_gtk_builder_get_widget(builder,"PrimusrunButton");
|
|
|
|
widgets->FrameGapCombo = yon_gtk_builder_get_widget(builder,"FrameGapCombo");
|
|
|
|
widgets->FrameGapCombo = yon_gtk_builder_get_widget(builder,"FrameGapCombo");
|
|
|
|
|
|
|
|
|
|
|
|
widgets->DriversTree = yon_gtk_builder_get_widget(builder, "DriversTree");
|
|
|
|
|
|
|
|
widgets->InfoButton = yon_gtk_builder_get_widget(builder, "InfoButton");
|
|
|
|
widgets->InfoButton = yon_gtk_builder_get_widget(builder, "InfoButton");
|
|
|
|
widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay");
|
|
|
|
widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay");
|
|
|
|
widgets->MenusTab = yon_gtk_builder_get_widget(builder, "MenusTab");
|
|
|
|
widgets->MenusTab = yon_gtk_builder_get_widget(builder, "MenusTab");
|
|
|
|
widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton");
|
|
|
|
widgets->LoadDriversButton = yon_gtk_builder_get_widget(builder,"LoadDriversButton");
|
|
|
|
|
|
|
|
widgets->SupportedDevicesButton = yon_gtk_builder_get_widget(builder,"SupportedDevicesButton");
|
|
|
|
|
|
|
|
widgets->AboutModuleButton = yon_gtk_builder_get_widget(builder,"AboutModuleButton");
|
|
|
|
|
|
|
|
widgets->AboutPackageButton = yon_gtk_builder_get_widget(builder,"AboutPackageButton");
|
|
|
|
|
|
|
|
|
|
|
|
widgets->DriversTree = yon_gtk_builder_get_widget(builder,"DriversTree");
|
|
|
|
|
|
|
|
widgets->TopTree = yon_gtk_builder_get_widget(builder,"TopTree");
|
|
|
|
|
|
|
|
widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo");
|
|
|
|
widgets->KernelsCombo = yon_gtk_builder_get_widget(builder,"KernelsCombo");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
widgets->InstalledBox = yon_gtk_builder_get_widget(builder,"InstalledBox");
|
|
|
|
|
|
|
|
widgets->InstalledModuleLabel = yon_gtk_builder_get_widget(builder,"InstalledModuleLabel");
|
|
|
|
|
|
|
|
widgets->InstalledPackageLabel = yon_gtk_builder_get_widget(builder,"InstalledPackageLabel");
|
|
|
|
|
|
|
|
widgets->KernelLabel = yon_gtk_builder_get_widget(builder,"KernelLabel");
|
|
|
|
|
|
|
|
widgets->DriverLabel = yon_gtk_builder_get_widget(builder,"DriverLabel");
|
|
|
|
|
|
|
|
widgets->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
|
|
|
|
|
|
|
|
widgets->DevicesLabel = yon_gtk_builder_get_widget(builder,"DevicesLabel");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
widgets->MoreButton = yon_gtk_builder_get_widget(builder,"TerminalMoreButton");
|
|
|
|
|
|
|
|
widgets->TerminalPaned = yon_gtk_builder_get_widget(builder,"TerminalPaned");
|
|
|
|
|
|
|
|
widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder,"TerminalMoreRevieler");
|
|
|
|
|
|
|
|
widgets->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
|
|
|
|
widgets->TerminalBox = yon_gtk_builder_get_widget(builder,"TerminalBox");
|
|
|
|
|
|
|
|
// widgets->InstallTerminal = vte_terminal_new();
|
|
|
|
|
|
|
|
widgets->InstallTerminal = yon_gtk_builder_get_widget(builder,"TerminalTerminal");
|
|
|
|
|
|
|
|
widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder,"TerminalMoreRevieler");
|
|
|
|
|
|
|
|
|
|
|
|
widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab"));
|
|
|
|
widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriverModulesTab"));
|
|
|
|
widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab"));
|
|
|
|
widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTab"));
|
|
|
|
widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "MainTabLabel"));
|
|
|
|
// widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "MainTabLabel"));
|
|
|
|
widgets->DriversTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTabLabel"));
|
|
|
|
// widgets->DriversTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "DriversTabLabel"));
|
|
|
|
widgets->InformationTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationTabLabel"));
|
|
|
|
// widgets->InformationTabLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationTabLabel"));
|
|
|
|
widgets->InformationFrameLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationFrameLabel"));
|
|
|
|
widgets->InformationFrameLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationFrameLabel"));
|
|
|
|
widgets->InformationOverlay = GTK_WIDGET(gtk_builder_get_object(builder, "InformationOverlay"));
|
|
|
|
widgets->InformationOverlay = GTK_WIDGET(gtk_builder_get_object(builder, "InformationOverlay"));
|
|
|
|
widgets->InformationCompanyLogoImage = GTK_WIDGET(gtk_builder_get_object(builder, "InformationCompanyLogoImage"));
|
|
|
|
widgets->InformationCompanyLogoImage = GTK_WIDGET(gtk_builder_get_object(builder, "InformationCompanyLogoImage"));
|
|
|
|
@ -1466,22 +1393,21 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
widgets->DriversLoadingOverlay = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingOverlay"));
|
|
|
|
widgets->DriversLoadingOverlay = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingOverlay"));
|
|
|
|
widgets->DriversLoadingSpinner = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingSpinner"));
|
|
|
|
widgets->DriversLoadingSpinner = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingSpinner"));
|
|
|
|
|
|
|
|
|
|
|
|
widgets->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer"));
|
|
|
|
widgets->DriversList = yon_gtk_builder_get_widget(builder, "DriversList");
|
|
|
|
widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer"));
|
|
|
|
widgets->TerminalCancelButton = yon_gtk_builder_get_widget(builder, "TerminalCancelButton");
|
|
|
|
|
|
|
|
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
|
|
|
|
main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6"));
|
|
|
|
widgets->TerminalMoveBox = yon_gtk_builder_get_widget(builder, "TerminalMoveBox");
|
|
|
|
main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1"));
|
|
|
|
widgets->TerminalMoveTargetBox = yon_gtk_builder_get_widget(builder, "TerminalMoveTargetBox");
|
|
|
|
|
|
|
|
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->DriversLoadingOverlay),widgets->DriversLoadingSpinner);
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->DriversLoadingOverlay),widgets->DriversLoadingSpinner);
|
|
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SupportedDevicesButton), "clicked", G_CALLBACK(on_devices_button_clicked), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AboutModuleButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AboutPackageButton), "clicked", G_CALLBACK(on_driver_module_info), widgets);
|
|
|
|
|
|
|
|
|
|
|
|
if (!getuid()){
|
|
|
|
g_signal_connect(G_OBJECT(widgets->DriversList), "row-selected", G_CALLBACK(on_driver_pack_selection_change), widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PackageRenderer), "toggled", G_CALLBACK(on_pack_install_activate), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->ModuleRenderer), "toggled", G_CALLBACK(on_module_install_activate), widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
|
|
|
|
}
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
|
|
|
|
@ -1499,6 +1425,23 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
g_signal_connect(G_OBJECT(widgets->FrameGapCombo),"changed",G_CALLBACK(on_gapfix_changed),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->FrameGapCombo),"changed",G_CALLBACK(on_gapfix_changed),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->OptirunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->OptirunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PrimusrunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PrimusrunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->TerminalCancelButton),"clicked",G_CALLBACK(on_command_cancel),widgets);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_object_set_data(G_OBJECT(widgets->InstallTerminal),"widgets",widgets);
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer);
|
|
|
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(widgets->InstallTerminal), 100);
|
|
|
|
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(widgets->InstallTerminal), TRUE);
|
|
|
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widgets->InstallTerminal), TRUE);
|
|
|
|
|
|
|
|
vte_terminal_set_input_enabled(VTE_TERMINAL(widgets->InstallTerminal),1);
|
|
|
|
|
|
|
|
gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0.1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
widgets->menu = yon_rmb_menu_setup(widgets->DriversList,check_rmb_menu,widgets,
|
|
|
|
|
|
|
|
SUPPORTED_LABEL,icon_devices_path,G_CALLBACK(on_devices_button_clicked),widgets,
|
|
|
|
|
|
|
|
MODULE_INFO_LABEL,icon_module_path,G_CALLBACK(on_driver_module_info),widgets,
|
|
|
|
|
|
|
|
PACKAGE_INFO_LABEL,icon_package_path,G_CALLBACK(on_driver_pack_info),widgets,
|
|
|
|
|
|
|
|
NULL);
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int size;
|
|
|
|
int size;
|
|
|
|
config_str default_driver = yon_config_load(yon_config_parameter_prepare_command(VGADRV_AUTO_command,"default",NULL,NULL),&size);
|
|
|
|
config_str default_driver = yon_config_load(yon_config_parameter_prepare_command(VGADRV_AUTO_command,"default",NULL,NULL),&size);
|
|
|
|
@ -1623,8 +1566,6 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(widgets->PrimusrunCombo),final);
|
|
|
|
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(widgets->PrimusrunCombo),final);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yon_adapter_window_setup(widgets);
|
|
|
|
yon_adapter_window_setup(widgets);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
@ -1651,10 +1592,11 @@ void config_init(){
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
main_config.load_mode=1;
|
|
|
|
main_config.load_mode=1;
|
|
|
|
main_config.progress_active=0;
|
|
|
|
main_config.progress_active=0;
|
|
|
|
|
|
|
|
yon_packages_init();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
local=setlocale(LC_ALL, "");
|
|
|
|
setlocale(LC_ALL, "");
|
|
|
|
textdomain (LocaleName);
|
|
|
|
textdomain (LocaleName);
|
|
|
|
config_init();
|
|
|
|
config_init();
|
|
|
|
|
|
|
|
|
|
|
|
@ -1680,5 +1622,6 @@ int main(int argc, char *argv[]){
|
|
|
|
yon_proprietary_get_thread(NULL,(main_window*)widgets);
|
|
|
|
yon_proprietary_get_thread(NULL,(main_window*)widgets);
|
|
|
|
yon_monitor_set_resolutions();
|
|
|
|
yon_monitor_set_resolutions();
|
|
|
|
gtk_main();
|
|
|
|
gtk_main();
|
|
|
|
|
|
|
|
yon_packages_finish();
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|