|
|
|
@ -327,17 +327,81 @@ void on_add_target_arch_selection_changed(GtkWidget *target,repo_add_window *win
|
|
|
|
|
|
|
|
|
|
|
|
int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter);
|
|
|
|
int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter);
|
|
|
|
for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){
|
|
|
|
for(;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){
|
|
|
|
char *current;
|
|
|
|
char *current, *current_path;
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,¤t,-1);
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,¤t,3,¤t_path,-1);
|
|
|
|
if (!yon_char_is_empty(current)){
|
|
|
|
if (!yon_char_is_empty(current)){
|
|
|
|
char *path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar);
|
|
|
|
char *path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar);
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo),path_str,current);
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo),path_str,current);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window *window){
|
|
|
|
|
|
|
|
gtk_list_store_clear(GTK_LIST_STORE(window->PackagesList));
|
|
|
|
|
|
|
|
char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(path_str)){
|
|
|
|
|
|
|
|
GtkTreeIter iter, itar;
|
|
|
|
|
|
|
|
GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
|
|
|
|
|
|
|
|
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(window->tree_copy),&iter,path)){
|
|
|
|
|
|
|
|
char *curpath;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&curpath,-1);
|
|
|
|
|
|
|
|
char *packages;
|
|
|
|
|
|
|
|
yon_window_config_get_parameter("package_info",curpath,&packages,YON_TYPE_STRING);
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(packages)){
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
|
|
|
config_str parsed = yon_char_parse(packages,&size,",");
|
|
|
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
|
|
|
char *full_path_package = yon_char_unite(curpath,"/",parsed[i],NULL);
|
|
|
|
|
|
|
|
char *name = yon_char_new(parsed[i]);
|
|
|
|
|
|
|
|
gtk_list_store_append(window->PackagesList,&iter);
|
|
|
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&iter,1,parsed[i],2,full_path_package,-1);
|
|
|
|
|
|
|
|
free(full_path_package);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_add_package(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
|
|
|
GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
|
|
|
|
|
|
|
|
gtk_widget_show(dialog);
|
|
|
|
|
|
|
|
GtkFileFilter *filter = gtk_file_filter_new();
|
|
|
|
|
|
|
|
gtk_file_filter_add_pattern(filter,"*.tar.*");
|
|
|
|
|
|
|
|
gtk_file_filter_set_name(filter,"*.tar.*");
|
|
|
|
|
|
|
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
|
|
|
|
|
|
|
|
int responce = gtk_dialog_run(GTK_DIALOG(dialog));
|
|
|
|
|
|
|
|
if (responce == GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
|
|
|
|
|
|
|
|
char *path;
|
|
|
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id);
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&path,-1);
|
|
|
|
|
|
|
|
char *packages;
|
|
|
|
|
|
|
|
yon_window_config_get_parameter("package_info",path,&packages,YON_TYPE_STRING);
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
|
|
|
config_str parsed = yon_char_parse(packages,&size,",");
|
|
|
|
|
|
|
|
GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
|
|
|
|
|
|
|
|
for (int i=0;i<g_slist_length(list);i++){
|
|
|
|
|
|
|
|
char *current = g_slist_nth_data(list,i);
|
|
|
|
|
|
|
|
char *name = yon_char_new(current);
|
|
|
|
|
|
|
|
free(yon_char_divide(name,yon_char_find_last(name,'/')));
|
|
|
|
|
|
|
|
if (yon_char_parsed_check_exist(parsed,size,current)==-1){
|
|
|
|
|
|
|
|
gtk_list_store_append(window->PackagesList,&itar);
|
|
|
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&itar,1,name,2,current,-1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_widget_destroy(dialog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_remove_package(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_add_selection_changed(GtkWidget *self, repo_add_window *window){
|
|
|
|
void on_add_selection_changed(GtkWidget *self, repo_add_window *window){
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(window->storage_filter));
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(window->storage_filter));
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(window->repo_filter));
|
|
|
|
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(window->repo_filter));
|
|
|
|
@ -382,9 +446,11 @@ repo_add_window *yon_repo_add_window_new(){
|
|
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
|
|
|
|
// g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_selection_changed),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_remove_package),window);
|
|
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
return window;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -489,6 +555,45 @@ void yon_config_load_update(main_window *widgets){
|
|
|
|
yon_char_parsed_free(storages,size);
|
|
|
|
yon_char_parsed_free(storages,size);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
|
|
|
|
gtk_list_store_clear(widgets->RepoFileList);
|
|
|
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
|
|
|
GtkTreeModel *model=NULL;
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
|
|
|
|
|
|
|
|
GtkTreePath *path = gtk_tree_model_get_path(model,&iter);
|
|
|
|
|
|
|
|
int depth = gtk_tree_path_get_depth(path);
|
|
|
|
|
|
|
|
char *target;
|
|
|
|
|
|
|
|
gtk_tree_model_get(model, &iter,3,&target,-1);
|
|
|
|
|
|
|
|
switch (depth){
|
|
|
|
|
|
|
|
case 1:{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:{
|
|
|
|
|
|
|
|
char *packages;
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
|
|
|
yon_window_config_get_parameter("package_info",target,&packages,YON_TYPE_STRING);
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(packages)){
|
|
|
|
|
|
|
|
config_str parsed = yon_char_parse(packages,&size,",");
|
|
|
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
|
|
|
gtk_list_store_append(widgets->RepoFileList,&itar);
|
|
|
|
|
|
|
|
char *name = yon_char_new(parsed[i]);
|
|
|
|
|
|
|
|
char *temp = yon_char_divide_search(name,"-",-1);
|
|
|
|
|
|
|
|
free(name);
|
|
|
|
|
|
|
|
name=temp;
|
|
|
|
|
|
|
|
gtk_list_store_set(widgets->RepoFileList,&itar,1,name,3,parsed[i],-1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
@ -517,6 +622,7 @@ main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->ReposTree),"cursor-changed",G_CALLBACK(on_main_tree_selection_changed),widgets);
|
|
|
|
|
|
|
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL);
|
|
|
|
gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL);
|
|
|
|
|
|
|
|
|
|
|
|
|