Partially make of packages adding

pull/41/head
parent 33ce2595cc
commit 7861614253

@ -327,15 +327,79 @@ 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,&current,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&current,3,&current_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){
@ -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);

@ -3,7 +3,16 @@
<interface domain="ubl-settings-repomanager"> <interface domain="ubl-settings-repomanager">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-repomanager.css --> <!-- interface-css-provider-path ubl-settings-repomanager.css -->
<object class="GtkListStore" id="PackagesList"/> <object class="GtkListStore" id="PackagesList">
<columns>
<!-- column-name Icon -->
<column type="gchararray"/>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Path -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -490,9 +499,43 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="model">PackagesList</property> <property name="model">PackagesList</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Type</property>
<child>
<object class="GtkCellRendererPixbuf"/>
<attributes>
<attribute name="icon-name">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>

@ -14,13 +14,9 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Name --> <!-- column-name Name -->
<column type="gchararray"/> <column type="gchararray"/>
</columns> <!-- column-name IconBottom -->
</object>
<object class="GtkListStore" id="RepoPackagesStore">
<columns>
<!-- column-name Icon -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Name --> <!-- column-name Filename -->
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
@ -334,7 +330,7 @@
<object class="GtkTreeView" id="RepoPackagesTree"> <object class="GtkTreeView" id="RepoPackagesTree">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="model">RepoPackagesStore</property> <property name="model">RepoFileList</property>
<property name="headers-visible">False</property> <property name="headers-visible">False</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
@ -345,13 +341,13 @@
<child> <child>
<object class="GtkCellRendererPixbuf"/> <object class="GtkCellRendererPixbuf"/>
<attributes> <attributes>
<attribute name="icon-name">0</attribute> <attribute name="icon-name">2</attribute>
</attributes> </attributes>
</child> </child>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
<attribute name="text">1</attribute> <attribute name="text">3</attribute>
</attributes> </attributes>
</child> </child>
</object> </object>

Loading…
Cancel
Save