|
|
|
@ -71,56 +71,91 @@ install_window *yon_install_window_new(){
|
|
|
|
return window;
|
|
|
|
return window;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name){
|
|
|
|
|
|
|
|
if (GTK_IS_BOX(target)&&!yon_char_is_empty(tag_label)&&!yon_char_is_empty(tag_style)){
|
|
|
|
|
|
|
|
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2);
|
|
|
|
|
|
|
|
GtkWidget *label = gtk_label_new(tag_label);
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(label),tag_style);
|
|
|
|
|
|
|
|
GtkWidget *icon = NULL;
|
|
|
|
|
|
|
|
if (icon_name){
|
|
|
|
|
|
|
|
icon = gtk_image_new_from_icon_name(icon_name,GTK_ICON_SIZE_BUTTON);
|
|
|
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(box),icon,0,0,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(box),label,1,1,0);
|
|
|
|
|
|
|
|
gtk_widget_show_all(box);
|
|
|
|
|
|
|
|
gtk_box_pack_start(target,box,0,0,0);
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window *widgets){
|
|
|
|
GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window *widgets){
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_table_row_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_table_row_path);
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *main_box = yon_gtk_builder_get_widget(builder,"TableRowLabel");
|
|
|
|
GtkWidget *main_box = yon_gtk_builder_get_widget(builder,"TableRowLabel");
|
|
|
|
GtkWidget *icon_box = yon_gtk_builder_get_widget(builder,"IconPackBox");
|
|
|
|
GtkWidget *icon_box = yon_gtk_builder_get_widget(builder,"IconBox");
|
|
|
|
GtkWidget *name_label = yon_gtk_builder_get_widget(builder,"NameLabel");
|
|
|
|
GtkWidget *name_label = yon_gtk_builder_get_widget(builder,"NameLabel");
|
|
|
|
|
|
|
|
GtkWidget *install_tags_box = yon_gtk_builder_get_widget(builder,"InstallTagsBox");
|
|
|
|
|
|
|
|
GtkWidget *run_tags_box = yon_gtk_builder_get_widget(builder,"RunBox");
|
|
|
|
GtkWidget *tags_box = yon_gtk_builder_get_widget(builder,"TagsBox");
|
|
|
|
GtkWidget *tags_box = yon_gtk_builder_get_widget(builder,"TagsBox");
|
|
|
|
GtkWidget *module_check = yon_gtk_builder_get_widget(builder,"ModuleCheck");
|
|
|
|
|
|
|
|
GtkWidget *package_check = yon_gtk_builder_get_widget(builder,"PackageCheck");
|
|
|
|
|
|
|
|
GtkWidget *loaded_radio = yon_gtk_builder_get_widget(builder,"LoadedRadio");
|
|
|
|
|
|
|
|
GtkWidget *description_label = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
|
|
|
|
GtkWidget *description_label = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
|
|
|
|
|
|
|
|
GtkWidget *remove_module_button = yon_gtk_builder_get_widget(builder,"RemoveModuleButton");
|
|
|
|
|
|
|
|
GtkWidget *remove_package_button = yon_gtk_builder_get_widget(builder,"RemovePackageButton");
|
|
|
|
|
|
|
|
GtkWidget *install_module_button = yon_gtk_builder_get_widget(builder,"InstallModuleButton");
|
|
|
|
|
|
|
|
GtkWidget *install_package_button = yon_gtk_builder_get_widget(builder,"InstallPackageButton");
|
|
|
|
gtk_list_box_insert(target,main_box,-1);
|
|
|
|
gtk_list_box_insert(target,main_box,-1);
|
|
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
int size;
|
|
|
|
config_str parsed = yon_char_parse(target_string,&size,";");
|
|
|
|
config_str parsed = yon_char_parse(target_string,&size,";");
|
|
|
|
if (size){
|
|
|
|
if (size){
|
|
|
|
char *name = yon_char_unite("<b>",parsed[2],"</b>\n<i>",parsed[0],"\n",parsed[1],"</i>",NULL);
|
|
|
|
char *name = yon_char_unite("<b>",parsed[2],"</b>\n<i>",MODULE_LABEL," ",parsed[0],"\n",PACKAGE_LABEL," ",parsed[1],"</i>",NULL);
|
|
|
|
int types_size;
|
|
|
|
int types_size;
|
|
|
|
config_str types_parsed = yon_char_parse(parsed[3],&types_size,", ");
|
|
|
|
config_str types_parsed = yon_char_parse(parsed[5],&types_size,", ");
|
|
|
|
for (int k=0;k<types_size;k++){
|
|
|
|
for (int k=0;k<types_size;k++){
|
|
|
|
GtkWidget *cur_tag_label = gtk_label_new(types_parsed[k]);
|
|
|
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(tags_box),cur_tag_label,0,0,1);
|
|
|
|
|
|
|
|
gtk_widget_show(cur_tag_label);
|
|
|
|
|
|
|
|
char *passw = types_parsed[k][0]==' '?yon_char_divide(types_parsed[k],0):NULL;
|
|
|
|
char *passw = types_parsed[k][0]==' '?yon_char_divide(types_parsed[k],0):NULL;
|
|
|
|
if (passw) free(passw);
|
|
|
|
if (passw) free(passw);
|
|
|
|
|
|
|
|
char *tag_type = NULL;
|
|
|
|
if (!strcmp(types_parsed[k],"LTS")){
|
|
|
|
if (!strcmp(types_parsed[k],"LTS")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_blue");
|
|
|
|
tag_type = "tag_blue";
|
|
|
|
} else if (!strcmp(types_parsed[k],"Stable")){
|
|
|
|
} else if (!strcmp(types_parsed[k],"Stable")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_green");
|
|
|
|
tag_type = "tag_green";
|
|
|
|
} else if (!strcmp(types_parsed[k],"RealTime")){
|
|
|
|
} else if (!strcmp(types_parsed[k],"RealTime")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_orange");
|
|
|
|
tag_type = "tag_orange";
|
|
|
|
} else if (!strcmp(types_parsed[k],"Hardened")){
|
|
|
|
} else if (!strcmp(types_parsed[k],"Hardened")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_yellow");
|
|
|
|
tag_type = "tag_yellow";
|
|
|
|
} else if (!strcmp(types_parsed[k],"Recomended")){
|
|
|
|
} else if (!strcmp(types_parsed[k],"Recomended")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_blue");
|
|
|
|
tag_type = "tag_blue";
|
|
|
|
} else if (!strcmp(types_parsed[k],"Reactive")){
|
|
|
|
} else if (!strcmp(types_parsed[k],"Reactive")){
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context(cur_tag_label),"tag_purple");
|
|
|
|
tag_type = "tag_purple";
|
|
|
|
} else continue;
|
|
|
|
} else continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yon_tag_add(GTK_BOX(tags_box),types_parsed[k],tag_type,NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
char *check_install_command = get_package_is_installed_command(parsed[1]);
|
|
|
|
|
|
|
|
if (!system(check_install_command)){
|
|
|
|
|
|
|
|
yon_tag_add(GTK_BOX(install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",module_icon_path);
|
|
|
|
|
|
|
|
gtk_widget_show(remove_module_button);
|
|
|
|
|
|
|
|
gtk_widget_show(remove_package_button);
|
|
|
|
|
|
|
|
gtk_widget_hide(install_module_button);
|
|
|
|
|
|
|
|
gtk_widget_hide(install_package_button);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
free(check_install_command);
|
|
|
|
|
|
|
|
check_install_command = get_package_is_installed_command(parsed[2]);
|
|
|
|
|
|
|
|
if (!system(check_install_command)){
|
|
|
|
|
|
|
|
yon_tag_add(GTK_BOX(install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",package_icon_path);
|
|
|
|
|
|
|
|
gtk_widget_hide(install_package_button);
|
|
|
|
|
|
|
|
gtk_widget_show(remove_package_button);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
yon_char_parsed_free(types_parsed,types_size);
|
|
|
|
gtk_label_set_markup(GTK_LABEL(name_label),name);
|
|
|
|
gtk_label_set_markup(GTK_LABEL(name_label),name);
|
|
|
|
gtk_label_set_text(GTK_LABEL(description_label),parsed[4]);
|
|
|
|
gtk_label_set_text(GTK_LABEL(description_label),parsed[6]);
|
|
|
|
gtk_size_group_add_widget(widgets->StatusSizeGroup,icon_box);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->StatusSizeGroup),icon_box);
|
|
|
|
gtk_size_group_add_widget(widgets->KernelSizeGroup,name_label);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->KernelSizeGroup),name_label);
|
|
|
|
gtk_size_group_add_widget(widgets->TagsSizeGroup,tags_box);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->TagsSizeGroup),tags_box);
|
|
|
|
gtk_size_group_add_widget(widgets->ModuleSizeGroup,module_check);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->InstallSizeGroup),install_tags_box);
|
|
|
|
gtk_size_group_add_widget(widgets->PackageSizeGroup,package_check);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->RunSizeGroup),run_tags_box);
|
|
|
|
gtk_size_group_add_widget(widgets->LoaderSizeGroup,loaded_radio);
|
|
|
|
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->DescriptionSizeGroup),description_label);
|
|
|
|
gtk_size_group_add_widget(widgets->DescriptionSizeGroup,description_label);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return main_box;
|
|
|
|
return main_box;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -274,33 +309,23 @@ void yon_main_window_complete(main_window *widgets){
|
|
|
|
widgets->StatusSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"StatusSizeGroup"));
|
|
|
|
widgets->StatusSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"StatusSizeGroup"));
|
|
|
|
widgets->KernelSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"KernelSizeGroup"));
|
|
|
|
widgets->KernelSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"KernelSizeGroup"));
|
|
|
|
widgets->TagsSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"TagsSizeGroup"));
|
|
|
|
widgets->TagsSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"TagsSizeGroup"));
|
|
|
|
widgets->ModuleSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"ModuleSizeGroup"));
|
|
|
|
widgets->InstallSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"InstallSizeGroup"));
|
|
|
|
widgets->PackageSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"PackageSizeGroup"));
|
|
|
|
widgets->RunSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"RunSizeGroup"));
|
|
|
|
widgets->LoaderSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"LoaderSizeGroup"));
|
|
|
|
|
|
|
|
widgets->DescriptionSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"DescriptionSizeGroup"));
|
|
|
|
widgets->DescriptionSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"DescriptionSizeGroup"));
|
|
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->InfoButton),"clicked",G_CALLBACK(on_info_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->InfoButton),"clicked",G_CALLBACK(on_info_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LogButton),"clicked",G_CALLBACK(on_changelog_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LogButton),"clicked",G_CALLBACK(on_changelog_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets);
|
|
|
|
// g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_install_module_toggled),widgets);
|
|
|
|
|
|
|
|
// g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_install_package_toggled),widgets);
|
|
|
|
|
|
|
|
// g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_boot_toggled),widgets);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *radio_group=NULL;
|
|
|
|
|
|
|
|
int kernels_size;
|
|
|
|
int kernels_size;
|
|
|
|
config_str kernels = yon_resource_open_file(kernels_path, &kernels_size);
|
|
|
|
config_str kernels = yon_resource_open_file(kernels_path, &kernels_size);
|
|
|
|
for (int i=1;i<kernels_size;i++){
|
|
|
|
for (int i=1;i<kernels_size;i++){
|
|
|
|
GtkWidget * current = yon_tab_row_new(GTK_LIST_BOX(widgets->KernelsPackageBox),kernels[i],widgets);
|
|
|
|
GtkWidget * current = yon_tab_row_new(GTK_LIST_BOX(widgets->KernelsPackageBox),kernels[i],widgets);
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(current));
|
|
|
|
gtk_widget_set_can_focus(gtk_widget_get_parent(current),0);
|
|
|
|
GList *list2 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,5)));
|
|
|
|
|
|
|
|
GtkWidget *radio = GTK_WIDGET(g_list_nth_data(list2,0));
|
|
|
|
|
|
|
|
if (radio_group) gtk_radio_button_join_group(GTK_RADIO_BUTTON(radio),GTK_RADIO_BUTTON(radio_group));
|
|
|
|
|
|
|
|
radio_group = radio;
|
|
|
|
|
|
|
|
g_list_free(list);
|
|
|
|
|
|
|
|
g_list_free(list2);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
|