|
|
|
|
@ -212,10 +212,15 @@ void yon_interface_update(main_window *widgets){
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,5,parsed[3],-1);
|
|
|
|
|
}
|
|
|
|
|
if (cur_size>4&&!yon_char_is_empty(parsed[4])){
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1);
|
|
|
|
|
}
|
|
|
|
|
if (cur_size>5&&!yon_char_is_empty(parsed[5])){
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1);
|
|
|
|
|
if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1);
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1);
|
|
|
|
|
if (cur_size>5&&!yon_char_is_empty(parsed[5])){
|
|
|
|
|
gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -409,10 +414,52 @@ void on_repo_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
repo_add_window *window = yon_repo_add_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"add_repo_window");
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *target;
|
|
|
|
|
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepositoriesTree)),NULL,&iter);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->ReposList),&iter,1,&target,-1);
|
|
|
|
|
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);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_repo_accept_clicked),dict);
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(config(REPOSITORY(target)),&size,";");
|
|
|
|
|
if (size){
|
|
|
|
|
{
|
|
|
|
|
int cur_size;
|
|
|
|
|
config_str repos = yon_char_parse(parsed[0],&cur_size,",");
|
|
|
|
|
for (int i=0;i<cur_size;i++){
|
|
|
|
|
char *target = repos[i];
|
|
|
|
|
if (yon_char_is_empty(target)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->RepoSourceEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo));
|
|
|
|
|
char *full_name = yon_char_append(type,target);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->RepoSourceEntry),"");
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(window->SourceBox),yon_gtk_builder_get_widget(builder,"PathRemovalBox"),0,0,2);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(gtk_builder_get_object(builder,"PathEntry")),full_name);
|
|
|
|
|
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),gtk_builder_get_object(builder,"PathRemovalBox"));
|
|
|
|
|
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),gtk_builder_get_object(builder,"PathRemovalBox"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (size>1&&!yon_char_is_empty(parsed[1])){ //siglevel
|
|
|
|
|
int cur_size;
|
|
|
|
|
config_str siglevel = yon_char_parse(parsed[1],&cur_size,",");
|
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignCheckCombo),siglevel[0]);
|
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignConditionCombo),siglevel[1]);
|
|
|
|
|
}
|
|
|
|
|
if (size>2&&!yon_char_is_empty(parsed[2])){} //usage
|
|
|
|
|
if (size>3&&!yon_char_is_empty(parsed[3])){ //disable
|
|
|
|
|
if (strcmp(parsed[3],"disable")){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnabledCheck),1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_web_publish_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
@ -423,6 +470,62 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_web_publish_accept),dict);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),NULL,&iter)){
|
|
|
|
|
char *storage;
|
|
|
|
|
char *repos;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,-1);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage);
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *full_name = storage;
|
|
|
|
|
if(!yon_char_is_empty(repos)){
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(repos,&size,"\n");
|
|
|
|
|
full_name = yon_char_unite(storage,":",yon_char_replace(repos,"\n",","),NULL);
|
|
|
|
|
if (size){
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
for_iter(GTK_TREE_MODEL(window->list),&itar){
|
|
|
|
|
char *target;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,1,&target,-1);
|
|
|
|
|
if (yon_char_parsed_check_exist(parsed,size,target)==-1){
|
|
|
|
|
gtk_list_store_set(window->list,&itar,0,0,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
char *parameter = config(REPOPUBLIC_WEB_full(full_name));
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(parameter,&size,":");
|
|
|
|
|
if (size){
|
|
|
|
|
if (!strcmp(parsed[0],"enable")||!strcmp(parsed[0],"yes")){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck),1);
|
|
|
|
|
}
|
|
|
|
|
if (size>1&&!strcmp(parsed[1],"listing")){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck),1);
|
|
|
|
|
}
|
|
|
|
|
if (size>2&&!yon_char_is_empty(parsed[2])){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->PortEntry),parsed[2]);
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortCheck),1);
|
|
|
|
|
}
|
|
|
|
|
if (size>3&&!yon_char_is_empty(parsed[3])){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->UsernameEntry),parsed[3]);
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsernameCheck),1);
|
|
|
|
|
}
|
|
|
|
|
if (size>4&&!yon_char_is_empty(parsed[4])){
|
|
|
|
|
if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){
|
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[5]);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[4]);
|
|
|
|
|
if (size>5)
|
|
|
|
|
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),"");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_mirror_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
@ -436,15 +539,31 @@ void on_mirror_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
|
|
|
|
|
char *target;
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),NULL,&iter);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->MirrorList),&iter,0,&target,-1);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),target);
|
|
|
|
|
char *parameter = config(REPOPUBLIC_CACHE_full(target));
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(parameter,&size,",");
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
char *target = parsed[i];
|
|
|
|
|
if (yon_char_is_empty(target)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->TypeEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo));
|
|
|
|
|
char *full_name = yon_char_unite(type,"@",target,NULL);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),"");
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(window->PathBox),yon_gtk_builder_get_widget(builder,"PathRemovalBox"),0,0,2);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(gtk_builder_get_object(builder,"PathEntry")),full_name);
|
|
|
|
|
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),gtk_builder_get_object(builder,"PathRemovalBox"));
|
|
|
|
|
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),gtk_builder_get_object(builder,"PathRemovalBox"));
|
|
|
|
|
g_object_unref(G_OBJECT(builder));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_mirror_configure(GtkWidget *,main_window *widgets){
|
|
|
|
|
@ -518,6 +637,7 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
int username_check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsernameCheck));
|
|
|
|
|
char *username = (char*)gtk_entry_get_text(GTK_ENTRY(window->UsernameEntry));
|
|
|
|
|
char *user_password = (char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry));
|
|
|
|
|
char *encryption = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->UserPasswordCombo));
|
|
|
|
|
|
|
|
|
|
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry));
|
|
|
|
|
char *full_name = "";
|
|
|
|
|
@ -542,7 +662,7 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
char *final_name = yon_char_is_empty(full_name)||!disabled ? name : yon_char_unite(name,":",full_name,NULL);
|
|
|
|
|
char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",username_check?user_password:"",NULL);
|
|
|
|
|
char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",":",username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":",username_check?!yon_char_is_empty(encryption)?user_password:"":"",NULL);
|
|
|
|
|
yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final);
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
gtk_widget_destroy(window->Window);
|
|
|
|
|
@ -831,6 +951,10 @@ void yon_main_window_complete(main_window *widgets){
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->WebPublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MirrorTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MirrorEditButton),"clicked",G_CALLBACK(on_mirror_edit),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->WebPublicationEditButton),"clicked",G_CALLBACK(on_web_publish_edit),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->RepositoriesEditButton),"clicked",G_CALLBACK(on_repo_edit),widgets);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->MirrorTree));
|
|
|
|
|
|