Design changes

pull/9/head
parent 3685d14aa6
commit bd95e64597

@ -77,6 +77,7 @@ install_window *yon_install_window_new(){
window->ExecuteButton = yon_gtk_builder_get_widget(builder,"ExecuteButton");
window->KernelVersionCombo = yon_gtk_builder_get_widget(builder,"KernelVersionCombo");
window->FilenameEntry = yon_gtk_builder_get_widget(builder,"FilenameEntry");
window->DebugCheck = yon_gtk_builder_get_widget(builder,"DebugCheck");
window->DriversCheck = yon_gtk_builder_get_widget(builder,"DriversCheck");
@ -103,12 +104,16 @@ int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name
}
gboolean on_command_execute_success(GtkWidget *,gint,main_window *widgets){
gtk_revealer_set_transition_type(GTK_REVEALER(widgets->MainRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),0);
yon_interface_update(widgets);
return G_SOURCE_REMOVE;
}
void *yon_command_execute_async(char *command,main_window *widgets){
gtk_revealer_set_transition_type(GTK_REVEALER(widgets->MainRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),1);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0);
yon_terminal_integrated_start(widgets->InstallTerminal,command);
glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal));
vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20);
@ -152,8 +157,13 @@ GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window
kernels_tab *tab = malloc(sizeof(kernels_tab));
tab->main_box = yon_gtk_builder_get_widget(builder,"TableRowLabel");
tab->icon_box = yon_gtk_builder_get_widget(builder,"IconBox");
tab->name_label = yon_gtk_builder_get_widget(builder,"NameLabel");
tab->module_label = yon_gtk_builder_get_widget(builder,"ModuleLabel");
tab->package_label = yon_gtk_builder_get_widget(builder,"PackageLabel");
tab->module_icon = yon_gtk_builder_get_widget(builder,"ModuleIcon");
tab->package_icon = yon_gtk_builder_get_widget(builder,"PackageIcon");
tab->module_label = yon_gtk_builder_get_widget(builder,"ModuleLabel");
tab->package_label = yon_gtk_builder_get_widget(builder,"PackageLabel");
tab->install_tags_box = yon_gtk_builder_get_widget(builder,"InstallTagsBox");
tab->run_tags_box = yon_gtk_builder_get_widget(builder,"RunBox");
tab->tags_box = yon_gtk_builder_get_widget(builder,"TagsBox");
@ -184,7 +194,9 @@ GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window
tab->name = yon_char_new(parsed[0]);
tab->module = yon_char_new(parsed[1]);
tab->package = yon_char_new(parsed[2]);
char *name = yon_char_unite("<b>",tab->name,"</b>\n<i>",MODULE_LABEL," ",tab->module,"\n",PACKAGE_LABEL," ",tab->package,"</i>",NULL);
char *name = yon_char_unite("<b>",tab->name,"</b>",NULL);
char *module = yon_char_unite("<i>",MODULE_LABEL," ",tab->module,"</i>",NULL);
char *package = yon_char_unite("<i>",PACKAGE_LABEL," ",tab->package,"</i>",NULL);
int types_size;
config_str types_parsed = yon_char_parse(parsed[5],&types_size,", ");
for (int k=0;k<types_size;k++){
@ -209,34 +221,30 @@ GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window
}
char *check_install_command = get_package_is_installed_command(tab->module);
if (!system(check_install_command)){
yon_tag_add(GTK_BOX(tab->install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",module_icon_path);
GtkWidget *module_image = gtk_image_new_from_icon_name(module_icon_path,GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_box_pack_start(GTK_BOX(tab->icon_box),module_image,0,0,2);
GtkWidget *package_image = gtk_image_new_from_icon_name(package_icon_path,GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_box_pack_start(GTK_BOX(tab->icon_box),package_image,0,0,2);
gtk_widget_show(module_image);
gtk_widget_show(package_image);
yon_tag_add(GTK_BOX(tab->install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",NULL);
gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),module_icon_path,GTK_ICON_SIZE_BUTTON);
gtk_widget_show(tab->remove_module_button);
gtk_widget_show(tab->remove_package_button);
gtk_widget_hide(tab->install_module_button);
gtk_widget_hide(tab->install_package_button);
} else {
}
{
free(check_install_command);
check_install_command = get_package_is_installed_command(tab->package);
if (!system(check_install_command)){
yon_tag_add(GTK_BOX(tab->install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",package_icon_path);
GtkWidget *package_image = gtk_image_new_from_icon_name(package_icon_path,GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_box_pack_start(GTK_BOX(tab->icon_box),package_image,0,0,2);
gtk_widget_show(package_image);
yon_tag_add(GTK_BOX(tab->install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",NULL);
gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),package_icon_path,GTK_ICON_SIZE_BUTTON);
gtk_widget_hide(tab->install_package_button);
gtk_widget_show(tab->remove_package_button);
}
}
yon_char_parsed_free(types_parsed,types_size);
gtk_label_set_markup(GTK_LABEL(tab->name_label),name);
gtk_label_set_markup(GTK_LABEL(tab->module_label),module);
gtk_label_set_markup(GTK_LABEL(tab->package_label),package);
gtk_label_set_text(GTK_LABEL(tab->description_label),parsed[6]);
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->StatusSizeGroup),tab->icon_box);
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->KernelSizeGroup),tab->name_label);
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->KernelSizeGroup),gtk_widget_get_parent(gtk_widget_get_parent(tab->name_label)));
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->TagsSizeGroup),tab->tags_box);
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->InstallSizeGroup),tab->install_tags_box);
gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->RunSizeGroup),tab->run_tags_box);
@ -266,12 +274,18 @@ void config_init(){
main_config.load_mode=1;
}
void on_update_clicked(GtkWidget *, main_window *widgets){
yon_interface_update(widgets);
}
void on_selection_changed(GtkWidget *, GtkListBoxRow* row, main_window *widgets){
if (row){
gtk_widget_set_sensitive(widgets->InfoButton,1);
} else {
gtk_widget_set_sensitive(widgets->InfoButton,0);
}
}
void on_info_clicked(GtkWidget *, main_window *widgets){
info_window *window = yon_info_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->window),GTK_WINDOW(widgets->Window),INFO_TITLE_LABEL,icon_path,"info_window");
@ -285,12 +299,12 @@ void on_info_clicked(GtkWidget *, main_window *widgets){
if (target){
GList *list = gtk_container_get_children(GTK_CONTAINER(target));
GList *list2 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,0)));
GList *list3 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list2,1)));
char * target_str = yon_char_new((char*)gtk_label_get_text(GTK_LABEL(g_list_nth_data(list3,0))));
GList *list3 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list2,0)));
GList *list4 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list3,2)));
char * target_str = yon_char_new((char*)gtk_label_get_text(GTK_LABEL(g_list_nth_data(list4,1))));
int size;
config_str parsed = yon_char_parse(target_str,&size,"\n");
char *package=NULL;
if (size&&(package = strstr(parsed[2],": "))){
if ((package = strstr(target_str,": "))){
package+=2;
}
config_str info = yon_config_load(get_package_info_command(package),&size);
@ -298,7 +312,6 @@ void on_info_clicked(GtkWidget *, main_window *widgets){
char *final_text = yon_char_parsed_to_string(info,size,"");
gtk_label_set_text(GTK_LABEL(window->InfoLabel),final_text);
free(final_text);
yon_char_parsed_free(info,size);
} else {
gtk_label_set_text(GTK_LABEL(window->InfoLabel),PACKAGE_NOT_FOUND_LABEL);
}
@ -322,12 +335,38 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){
gtk_widget_show(window->window);
}
void on_build_execute(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
install_window *window = yon_dictionary_get_data(dict->first->next,install_window*);
int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugCheck));
int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DriversCheck));
char *target = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->KernelVersionCombo));
char *filename = (char*)gtk_entry_get_text(GTK_ENTRY(window->FilenameEntry));
char *command = build_command(target,filename,debug,drivers);
yon_command_execute_async(command,widgets);
}
void on_building_clicked(GtkWidget *, main_window *widgets){
if (widgets){};
install_window *window = yon_install_window_new();
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
yon_gtk_window_setup(GTK_WINDOW(window->window),GTK_WINDOW(widgets->Window),INFO_TITLE_LABEL,icon_path,"install_window");
gtk_widget_show(window->window);
g_signal_connect(G_OBJECT(window->ExecuteButton),"clicked",G_CALLBACK(on_build_execute),dict);
int size;
config_str kernels = yon_resource_open_file(kernels_path,&size);
for (int i=1;i<size;i++){
int cur_size;
config_str parsed = yon_char_parse(kernels[i],&cur_size,";");
if (cur_size&&!system(get_package_is_installed_command(parsed[2]))){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->KernelVersionCombo),parsed[2],parsed[0]);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(window->KernelVersionCombo),0);
}
gtk_widget_show(window->window);
}
void on_boot_toggled(GtkWidget *, char *path, main_window *widgets){
@ -375,6 +414,7 @@ void yon_main_window_complete(main_window *widgets){
widgets->InstallTerminal = yon_gtk_builder_get_widget(builder, "InstallTerminal");
widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay");
widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
widgets->KernelsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"KernelsList"));
widgets->AdditionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionsList"));
widgets->KernelsPackageBox = yon_gtk_builder_get_widget(builder,"KernelsPackageBox");
@ -390,8 +430,14 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->InfoButton),"clicked",G_CALLBACK(on_info_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets);
g_signal_connect(G_OBJECT(widgets->KernelsPackageBox),"row-selected",G_CALLBACK(on_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->AdditionsPackageBox),"row-selected",G_CALLBACK(on_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
GdkRGBA rgba;
vte_terminal_get_color_background_for_draw(VTE_TERMINAL(widgets->InstallTerminal),&rgba);
vte_terminal_set_color_cursor(VTE_TERMINAL(widgets->InstallTerminal),&rgba);
glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal));
vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20);
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->MainRevealer);

@ -42,12 +42,14 @@
#define icon_path "com.ublinux.ubl-settings-kernel"
#define get_kernel_changelog_command(target) yon_char_unite("find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec grep -il \"",target,"\" {} + | xargs dirname | xargs -I {} cat \"{}/changelog\"", NULL)
#define get_package_info_command(target) yon_char_append("pacman -Q --info ",target)
#define get_package_info_command(target) yon_char_append("pacman -Si ",target)
#define get_package_is_installed_command(target) yon_char_append("pacman -Qqs ",target)
#define install_command(target) yon_char_append("pacman -S --noconfirm ",target)
#define remove_command(target) yon_char_append("pacman -R --noconfirm ",target)
#define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l -n ",filename," -k ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H ":"",target,NULL)
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot KERNEL_BOOT",NULL)
#define config_get_local_command "ubconfig --source system get boot KERNEL_BOOT"
#define config_get_global_command "ubconfig --source global get boot KERNEL_BOOT"
@ -98,6 +100,7 @@ typedef struct {
GtkWidget *InstallationProgress;
GtkWidget *MoreButton;
GtkWidget *TerminalOverlay;
GtkWidget *TerminalScroll;
} main_window;
@ -116,14 +119,18 @@ typedef struct {
GtkWidget *ExecuteButton;
GtkWidget *KernelVersionCombo;
GtkWidget *FilenameEntry;
GtkWidget *DebugCheck;
GtkWidget *DriversCheck;
}install_window;
typedef struct {
GtkWidget *main_box;
GtkWidget *icon_box;
GtkWidget *name_label;
GtkWidget *module_label;
GtkWidget *package_label;
GtkWidget *module_icon;
GtkWidget *package_icon;
GtkWidget *install_tags_box;
GtkWidget *run_tags_box;
GtkWidget *tags_box;
@ -155,11 +162,14 @@ void on_package_install_clicked(GtkWidget *,dictionary *dict);
void on_module_remove_clicked(GtkWidget *,dictionary *dict);
void on_package_remove_clicked(GtkWidget *,dictionary *dict);
void on_build_execute(GtkWidget *, dictionary *dict);
int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name);
GtkWidget *yon_tab_row_new(GtkListBox *target, char *target_string, main_window *widgets);
void on_update_clicked(GtkWidget *, main_window *widgets);
void on_selection_changed(GtkWidget *self,GtkListBoxRow* row,main_window *widgets);
void on_info_clicked(GtkWidget *, main_window *widgets);
void on_changelog_clicked(GtkWidget *, kernels_tab *tab);

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkApplicationWindow" id="MainWindow">
@ -60,6 +60,7 @@
<object class="GtkComboBoxText" id="KernelVersionCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
@ -74,6 +75,18 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="FilenameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">ublinux</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="DebugCheck">
<property name="label" translatable="yes">Add debug components</property>
@ -85,7 +98,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -99,7 +112,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
</object>

@ -8,41 +8,120 @@
<property name="can-focus">False</property>
<property name="spacing">15</property>
<child>
<object class="GtkBox" id="IconBox">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<property name="spacing">1</property>
<child>
<placeholder/>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage">
<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">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="NameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Name</property>
<property name="use-markup">True</property>
<property name="track-visited-links">False</property>
<property name="xalign">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">0</property>
</packing>
</child>
<child>
<placeholder/>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="ModuleIcon">
<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">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ModuleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Module</property>
<property name="xalign">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">1</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>
<child>
<object class="GtkLabel" id="NameLabel">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="use-markup">True</property>
<property name="track-visited-links">False</property>
<property name="xalign">0</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="PackageIcon">
<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">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="PackageLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Package</property>
<property name="xalign">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="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">2</property>
</packing>
</child>
</object>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface domain="ubl-settings-kernel">
<requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.76"/>
@ -43,12 +43,19 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkSizeGroup" id="RunSizeGroup"/>
<object class="GtkSizeGroup" id="StatusSizeGroup"/>
<object class="GtkSizeGroup" id="TagsSizeGroup"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkRevealer" id="MainRevealer">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">end</property>
<property name="transition-type">slide-up</property>
<property name="reveal-child">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -69,6 +76,7 @@
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="vadjustment">adjustment1</property>
<property name="vscroll-policy">natural</property>
<property name="encoding">UTF-8</property>
<property name="pointer-autohide">True</property>
@ -82,10 +90,11 @@
</packing>
</child>
<child>
<object class="GtkScrollbar">
<object class="GtkScrollbar" id="TerminalScroll">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="adjustment">adjustment1</property>
</object>
<packing>
<property name="expand">False</property>
@ -169,14 +178,6 @@
<class name="workingbg"/>
</style>
</object>
<object class="GtkSizeGroup" id="RunSizeGroup"/>
<object class="GtkSizeGroup" id="StatusSizeGroup"/>
<object class="GtkSizeGroup" id="TagsSizeGroup"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -227,6 +228,7 @@
<child>
<object class="GtkButton" id="InfoButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open package information</property>
@ -333,7 +335,6 @@
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>

Loading…
Cancel
Save