|
|
|
|
@ -98,6 +98,20 @@ void on_about(){
|
|
|
|
|
gtk_widget_show(window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_load(){
|
|
|
|
|
gsize size=0;
|
|
|
|
|
config_str repos = yon_window_config_get_section("repos",&size);
|
|
|
|
|
gtk_tree_store_clear(main_config.tree_store);
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
char *name = yon_char_new(repos[i]);
|
|
|
|
|
char *path = yon_char_divide(name,yon_char_find_last(name,'/'));
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_tree_store_append(main_config.tree_store,&iter,NULL);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0,folder_no_edits,1,name,3,path,4,0,5,0,-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_save(){
|
|
|
|
|
char *command = "repo-manager";
|
|
|
|
|
char *remove_command=NULL;
|
|
|
|
|
@ -113,8 +127,11 @@ void on_save(){
|
|
|
|
|
add_flagged = NULL;
|
|
|
|
|
int repostatus=0;
|
|
|
|
|
gboolean renamed=0;
|
|
|
|
|
int *add = g_malloc0(sizeof(int));
|
|
|
|
|
*(add) = 1;
|
|
|
|
|
char *old_name=NULL;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,1,&name_flagged,3,&origin_flagged,4,&repostatus,6,&old_name,7,&renamed,-1);
|
|
|
|
|
yon_window_config_add_custom_parameter(yon_char_unite(origin_flagged,"/",name_flagged,NULL),"repos",add,YON_TYPE_INT);
|
|
|
|
|
if (repostatus==-1) {
|
|
|
|
|
remove_command = yon_char_unite("rm -rdf ",origin_flagged,"/",name_flagged,NULL);
|
|
|
|
|
system (remove_command);
|
|
|
|
|
@ -179,12 +196,7 @@ void on_tree_selection_changed(GtkWidget *self,main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int yon_char_find_last(char *source, char find){
|
|
|
|
|
int size = strlen(source);
|
|
|
|
|
int i=size;
|
|
|
|
|
for (;source[i]!=find&&i>0;i--);
|
|
|
|
|
return i;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_repo_add_new(GtkWidget *self, dictionary *dict){
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
@ -196,7 +208,7 @@ void on_repo_add_new(GtkWidget *self, dictionary *dict){
|
|
|
|
|
window->path = yon_char_divide(name,yon_char_find_last(window->path, '/'));
|
|
|
|
|
if (!name||strcmp(name,"")!=0){
|
|
|
|
|
GtkTreeIter *iter = yon_repo_append(widgets, name, YON_REPO_LINE_REPO_TYPE);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,iter,0,"com.ublinux.ubl-settings-repomanager.folder-green-symbolic",2,window->BranchesListStore,3,window->path,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,iter,0,folder_added,2,window->BranchesListStore,3,window->path,-1);
|
|
|
|
|
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(EMPTY_NAME_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
@ -314,7 +326,6 @@ void on_repo_load_local(GtkWidget *self, main_window *widgets){
|
|
|
|
|
GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYPE type){
|
|
|
|
|
GtkTreeIter *retIter=g_malloc0(sizeof(GtkTreeIter));
|
|
|
|
|
GtkTreeIter iter,parentIter;
|
|
|
|
|
GdkPixbuf *icon = NULL;
|
|
|
|
|
GtkIconTheme *theme = gtk_icon_theme_get_default();
|
|
|
|
|
char *name_short = yon_char_new(name);
|
|
|
|
|
gboolean fls = 0;
|
|
|
|
|
@ -325,23 +336,21 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&parentIter)){
|
|
|
|
|
if (type==YON_REPO_LINE_REPO_TYPE){
|
|
|
|
|
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
|
|
|
|
|
gtk_tree_store_append(main_config.tree_store,&iter,NULL);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.folder-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, folder_no_edits, 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
retIter = gtk_tree_iter_copy(&iter);
|
|
|
|
|
}
|
|
|
|
|
else if (type==YON_REPO_LINE_FILE_TYPE){
|
|
|
|
|
GtkTreeIter branch;
|
|
|
|
|
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.follder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
|
|
|
|
|
if (gtk_tree_model_iter_parent(model,&branch,&parentIter)){
|
|
|
|
|
GtkTreeIter repo;
|
|
|
|
|
gtk_tree_store_append(main_config.tree_store,&iter,&branch);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, document_no_edits, 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
retIter = gtk_tree_iter_copy(&iter);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
gtk_tree_store_append(main_config.tree_store,&iter,&parentIter);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, document_no_edits, 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
retIter = gtk_tree_iter_copy(&iter);
|
|
|
|
|
}
|
|
|
|
|
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
@ -349,9 +358,8 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter);
|
|
|
|
|
}
|
|
|
|
|
else if (type==YON_REPO_LINE_REPO_TYPE){
|
|
|
|
|
icon = gtk_icon_theme_load_icon_for_scale(theme,"com.ublinux.ubl-settings-repomanager.folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL);
|
|
|
|
|
gtk_tree_store_append(main_config.tree_store,&iter,NULL);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.folder-symbolic", 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0, folder_no_edits, 1, name_short,3,name,4,1,5,fls,-1);
|
|
|
|
|
retIter = gtk_tree_iter_copy(&iter);
|
|
|
|
|
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter);
|
|
|
|
|
} else {
|
|
|
|
|
@ -371,7 +379,7 @@ void yon_repo_remove_package(main_window *widgets){
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,4,&status,-1);
|
|
|
|
|
if (status != 1){
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,4,-1,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0,"com.ublinux.ubl-settings-repomanager.document-red-symbolic",-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,0,document_deleted,-1);
|
|
|
|
|
} else gtk_tree_store_remove(main_config.tree_store,&iter);
|
|
|
|
|
yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
}else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
@ -383,7 +391,7 @@ void yon_repo_remove(main_window *widgets){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store);
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){
|
|
|
|
|
if(gtk_tree_store_iter_depth(main_config.tree_store,&iter)==0){
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,4,-1,0,"com.ublinux.ubl-settings-repomanager.folder-red-symbolic",-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,&iter,4,-1,0,folder_deleted,-1);
|
|
|
|
|
}else yon_ubl_status_box_render(CHOOSE_REPO_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
} else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
}
|
|
|
|
|
@ -413,7 +421,7 @@ void yon_add_file(main_window *widgets){
|
|
|
|
|
else if (strstr(p,"Architecture")) packarch = yon_char_new(cur_string);
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter *iter = yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,iter,0,"com.ublinux.ubl-settings-repomanager.document-green-symbolic",11,packname,12,packver,13,packarch,-1);
|
|
|
|
|
gtk_tree_store_set(main_config.tree_store,iter,0,document_added,11,packname,12,packver,13,packarch,-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
on_close_subwindow(chooser);
|
|
|
|
|
@ -447,6 +455,7 @@ main_window *setup_window(){
|
|
|
|
|
widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
|
|
|
|
|
widgets->HatLabel = yon_gtk_builder_get_widget(builder,"headerTopic");
|
|
|
|
|
widgets->PlugBox = yon_gtk_builder_get_widget(builder,"plugBox");
|
|
|
|
|
widgets->MovePaned = yon_gtk_builder_get_widget(builder,"MovePaned");
|
|
|
|
|
|
|
|
|
|
widgets->HeadOverlay = yon_gtk_builder_get_widget(builder,"HeadOverlay");
|
|
|
|
|
widgets->HeadImage = yon_gtk_builder_get_widget(builder,"HeadBackgroundImage");
|
|
|
|
|
@ -536,6 +545,10 @@ main_window *setup_window(){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
|
|
|
|
|
yon_window_config_add_listener(widgets->MovePaned,"pane_position","position",YON_TYPE_INT);
|
|
|
|
|
|
|
|
|
|
/* Signal connection | Присоединение сигналов */
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK);
|
|
|
|
|
@ -636,12 +649,12 @@ int main(int argc, char *argv[]){
|
|
|
|
|
|
|
|
|
|
main_window *widgets = setup_window();
|
|
|
|
|
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);
|
|
|
|
|
|
|
|
|
|
yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel);
|
|
|
|
|
yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
|
|
|
|
|
yon_window_config_setup(GTK_WINDOW(widgets->Window));
|
|
|
|
|
yon_window_config_load(config_path);
|
|
|
|
|
on_load();
|
|
|
|
|
GtkCssProvider *css=gtk_css_provider_new();
|
|
|
|
|
gtk_css_provider_load_from_resource(css,CssPath);
|
|
|
|
|
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
|
|
|
|
|
|