You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubl-settings-repomanager/source/ubl-settings-repomanager-st...

61 lines
2.9 KiB

#include "ubl-settings-repomanager.h"
void on_repo_signed(GtkWidget *self, storage_repo_block *block){
storage_config_window *window = g_object_get_data(G_OBJECT(self),"window");
const char *sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(block->SignatureCombo));
const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id);
repo_struct *repo = g_hash_table_lookup(storage->repos,block->repo_name);
// yon_repo_struct_sign(storage,repo,sign);
yon_config_register(repo->path,STORAGE_command,(char*)sign);
if (!yon_char_is_empty(block->sign_request)) free(block->sign_request);
block->sign_request = yon_char_new(sign);
}
void on_repo_removed(GtkWidget *self,storage_repo_block *block){
storage_config_window *window = g_object_get_data(G_OBJECT(self),"window");
const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id);
if (g_hash_table_lookup(storage->repos,block->repo_name)){
repo_struct *repo = g_hash_table_lookup(storage->repos,block->repo_name);
// yon_storage_struct_remove(storage,repo);
yon_config_remove_element(storage->path,repo->path,",");
g_hash_table_remove(storage->repos,block->repo_name);
gtk_widget_destroy(block->MainBox);
yon_storage_repo_block_destroy(block);
}
}
storage_repo_block *yon_storage_repo_block_new(){
storage_repo_block *block = malloc(sizeof(storage_repo_block));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_block);
block->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
block->SignatureCombo = yon_gtk_builder_get_widget(builder,"SignatureCombo");
block->RepoNameEntry = yon_gtk_builder_get_widget(builder,"RepoNameEntry");
block->RepoRemoveButton = yon_gtk_builder_get_widget(builder,"RepoRemoveButton");
block->repo_name=NULL;
block->storage_path=NULL;
block->sign_request=NULL;
g_object_set_data(G_OBJECT(block->MainBox),"repo_block",block);
g_object_set_data(G_OBJECT(block->SignatureCombo),"repo_block",block);
g_object_set_data(G_OBJECT(block->RepoRemoveButton),"repo_block",block);
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(block->SignatureCombo));
gtk_combo_box_set_active(GTK_COMBO_BOX(block->SignatureCombo),0);
g_signal_connect(block->SignatureCombo,"changed",G_CALLBACK(on_repo_signed),block);
g_signal_connect(block->RepoRemoveButton,"clicked",G_CALLBACK(on_repo_removed),block);
return block;
}
void yon_storage_repo_block_destroy(storage_repo_block *block){
if (!yon_char_is_empty(block->repo_name)) free(block->repo_name);
if (!yon_char_is_empty(block->storage_path)) free(block->storage_path);
free(block);
}