Update 1.0 WIP

pull/13/head
parent 5d742a851e
commit 7c72a0186d

@ -8,6 +8,11 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
pkg_check_modules(VTE291 REQUIRED vte-2.91)
include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF)
@ -19,18 +24,18 @@ if(WEBKIT_LIBRARIES_FOUND)
add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()
configure_file(ubl-cmake.in ubl-cmake.h)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)
set(GRESOURCE_C resources.c)
set(GRESOURCE_XML gresource.xml)
find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
add_custom_target(GLADE ubl-settings-update.glade)
add_custom_target(GLADE ubinstall-gtk.glade)
set(DEPENDFILES
../ubl-settings-update.glade
../ubl-settings-update-repo-add.glade
../ubl-settings-update-web-publication-add.glade
../ubl-settings-update-mirror-add.glade
../ubl-settings-update-mirror-configure.glade
../gresource.xml
../ubl-settings-update-banner.png
../ubl-settings-update.css
@ -56,27 +61,35 @@ add_custom_target(
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND)
if(FORTIFY_FOUND EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-D_FORTIFY_SOURCE=2")
endif()
set(SOURCE_FILES
ubl-settings-update.c
ubl-settings-update.h
ubl-strings.h
ubl-utils.h
ubl-utils.c
${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
)
set(LIBRARIES
${GTK_LIBRARIES}
${WEBKIT_LIBRARIES}
pthread)
${UTILS_LIBRARIES}
${VTE291_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
ublsettingsui-gtk3
)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})

@ -1 +0,0 @@
#cmakedefine WEBKIT_FOUND

@ -1,406 +1,417 @@
#include "ubl-settings-update.h"
config main_config;
render_data render;
void on_close_subwindow(GtkWidget *self){
gtk_widget_destroy(gtk_widget_get_toplevel(self));
//functions
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
yon_config_load_config(type,config_get_global_command,NULL);
} else if (type==YON_CONFIG_LOCAL){
yon_config_load_config(type,config_get_local_command,NULL);
} else if (type==YON_CONFIG_CUSTOM){
char *path="";
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
textdomain(LocaleName);
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_filter_set_name(filter, "*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
int response = gtk_dialog_run(GTK_DIALOG(dialog));
if (response == GTK_RESPONSE_ACCEPT){
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (!yon_char_is_empty(file)){
path=file;
}
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
}
char *command = yon_config_get_custom_command(path);
yon_config_load_config(type,command,NULL);
}
}
void yon_open_browser(GtkWidget *self, char *link){
yon_ubl_browser_window_open(link,TITLE_LABEL);
// standard functions
/**config_init()
* [EN]
*
* [RU]
* Функция инициализации всех параметров конфигурации
*/
void config_init(){
main_config.always_open_documentation=0;
main_config.socket_id=-1;
main_config.save_socket_id=-1;
main_config.load_socket_id=-1;
main_config.lock_help=0;
main_config.lock_help=0;
main_config.lock_load_global=0;
main_config.lock_save_global=0;
main_config.lock_save_local=0;
main_config.load_mode=1;
}
void on_open_documentation_confirmation(GtkWidget *self, char *link){
if (main_config.always_open_documentation==0){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
documentation_confirmation_window *widgets = malloc(sizeof(documentation_confirmation_window));
widgets->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow");
widgets->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton");
widgets->CloseButton = yon_gtk_builder_get_widget(builder,"CancelHelpButton");
widgets->HatText = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
widgets->HeaderText = yon_gtk_builder_get_widget(builder,"helpHeader");
widgets->InfoText = yon_gtk_builder_get_widget(builder,"helpText");
widgets->AlwaysOpenCheck = yon_gtk_builder_get_widget(builder,"AlwaysOpenDocumentationCheckbox");
gtk_label_set_text(GTK_LABEL(widgets->HatText),TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->HeaderText),HELP_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->InfoText),HELP_INFO_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->AcceptButton),OPEN_HELP_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->AlwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->CloseButton),CANCEL_LABEL);
gtk_widget_show_all(widgets->Window);
g_signal_connect(G_OBJECT(widgets->CloseButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(widgets->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(link));
g_signal_connect(G_OBJECT(widgets->AcceptButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
} else {
yon_open_browser(self,link);
void on_selection_changed(GtkWidget *self, main_window *widgets){
GtkTreeModel *model;
GtkTreeIter iter;
if (self == widgets->RepositoriesTree){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepositoriesTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->RepositoriesMoveUpButton,1);
gtk_widget_set_sensitive(widgets->RepositoriesMoveDownButton,1);
gtk_widget_set_sensitive(widgets->RepositoriesEditButton,1);
gtk_widget_set_sensitive(widgets->RepositoriesDeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->RepositoriesMoveUpButton,0);
gtk_widget_set_sensitive(widgets->RepositoriesMoveDownButton,0);
gtk_widget_set_sensitive(widgets->RepositoriesEditButton,0);
gtk_widget_set_sensitive(widgets->RepositoriesDeleteButton,0);
}
} else if (self == widgets->WebPublicationTree){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->WebPublicationEditButton,1);
gtk_widget_set_sensitive(widgets->WebPublicationRemoveButton,1);
} else {
gtk_widget_set_sensitive(widgets->WebPublicationEditButton,0);
gtk_widget_set_sensitive(widgets->WebPublicationRemoveButton,0);
}
} else if (self == widgets->MirrorTree){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&iter)){
gtk_widget_set_sensitive(widgets->MirrorConfigureButton,1);
gtk_widget_set_sensitive(widgets->MirrorEditButton,1);
gtk_widget_set_sensitive(widgets->MirrorRemoveButton,1);
} else {
gtk_widget_set_sensitive(widgets->MirrorConfigureButton,0);
gtk_widget_set_sensitive(widgets->MirrorEditButton,0);
gtk_widget_set_sensitive(widgets->MirrorRemoveButton,0);
}
}
}
void on_link(GtkWidget *self, char* uri, gpointer user_data){
gtk_widget_destroy(self);
on_open_documentation_confirmation(self,uri);
}
void on_repo_add(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");
void on_about(){
GtkBuilder *builder=gtk_builder_new_from_resource(glade_path);
GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic");
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application);
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window),PROJECT_HOME_LABEL);
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(title),TITLE_LABEL);
g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL);
gtk_widget_set_visible(hideButtonBox,0);
gtk_widget_destroy(hideButtonBox);
gtk_widget_show(window);
}
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);
void on_repos_add(GtkWidget *self, repo_window *repo){
char *distr = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(repo->repoDistributionEntry)));
char *address = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(repo->repoTypeEntry)));
if ((distr&&address)||(strcmp(distr,"")!=0&&strcmp(address,"")!=0)){
GtkTreeIter iter;
gtk_list_store_append(main_config.list,&iter);
gtk_list_store_set(main_config.list,&iter,1,address,2,distr,-1);
}
}
void on_repos_delete(GtkWidget *self, GtkWidget *tree){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(main_config.list);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
gtk_list_store_remove(main_config.list,&iter);
} else {
yon_ubl_status_box_render(render,NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_web_publish_add(GtkWidget *,main_window *widgets){
web_publication_add_window *window = yon_web_publication_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"web_publish_window");
void on_repos_edit(GtkWidget *self, repo_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model=GTK_TREE_MODEL(main_config.list);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree)),&model,&iter)){
char *adress=yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(widgets->repoTypeEntry)));
char *distro=yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(widgets->repoDistributionEntry)));
if ((distro&&adress)||(strcmp(distro,"")!=0&&strcmp(adress,"")!=0))
gtk_list_store_set(main_config.list,&iter,1,adress,2,distro,-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_web_publish_accept),dict);
}
void on_repo_window_open_edit(GtkWidget *self, GtkWidget *tree){
GtkTreeIter iter;
GtkTreeModel *model=GTK_TREE_MODEL(main_config.list);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
repo_window *widgets=NULL;
widgets=malloc(sizeof(repo_window));
widgets->builder= gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
widgets->repoTypeEntry=yon_gtk_builder_get_widget(widgets->builder, "repoAdressEntry");
widgets->repoDistributionLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionLabel");
widgets->repoDistributionEntry=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionEntry");
widgets->repoCancelButton=yon_gtk_builder_get_widget(widgets->builder, "repoCancelButton");
widgets->repoAcceptButton=yon_gtk_builder_get_widget(widgets->builder, "repoAcceptButton");
widgets->tree=tree;
g_signal_connect(G_OBJECT(widgets->repoCancelButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_repos_edit), widgets);
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
char *adress = NULL;
char *distro = NULL;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&adress,2,&distro,-1);
gtk_entry_set_text(GTK_ENTRY(widgets->repoTypeEntry),adress);
gtk_entry_set_text(GTK_ENTRY(widgets->repoDistributionEntry),distro);
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->repoTypeLabel),ADRESS_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->repoDistributionLabel),DISTRIBUTION_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->repoCancelButton),CANCEL_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->repoAcceptButton),SAVE_LABEL);
gtk_widget_show_all(widgets->window);
} else {
yon_ubl_status_box_render(render,NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
void on_mirror_add(GtkWidget *,main_window *widgets){
mirror_add_window *window = yon_mirror_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window");
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_mirror_accept),dict);
}
repo_window *on_repo_window_open_create(GtkWidget *self){
repo_window *widgets=NULL;
widgets=malloc(sizeof(repo_window));
widgets->builder= gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
widgets->repoTypeEntry=yon_gtk_builder_get_widget(widgets->builder, "repoAdressEntry");
widgets->repoDistributionLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionLabel");
widgets->repoDistributionEntry=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionEntry");
widgets->repoCancelButton=yon_gtk_builder_get_widget(widgets->builder, "repoCancelButton");
widgets->repoAcceptButton=yon_gtk_builder_get_widget(widgets->builder, "repoAcceptButton");
void on_web_publish_remove(GtkWidget *self,main_window *widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_REPO_WARNING_LABEL;
data->function=(void(*)(void*,void*))on_remove_accept;
data->data = widgets->WebPublicationTree;
yon_confirmation_dialog_call(self,data);
}
g_signal_connect(G_OBJECT(widgets->repoCancelButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_repos_add), widgets);
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
void on_mirror_remove(GtkWidget *self,main_window *widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_REPO_WARNING_LABEL;
data->function=(void(*)(void*,void*))on_remove_accept;
data->data = widgets->MirrorTree;
yon_confirmation_dialog_call(self,data);
}
void on_web_publish_edit(GtkWidget *,main_window *widgets){
web_publication_add_window *window = yon_web_publication_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window");
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
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_mirror_accept),dict);
}
gtk_label_set_text(GTK_LABEL(widgets->repoTypeLabel),ADRESS_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->repoDistributionLabel),DISTRIBUTION_LABEL);
void on_mirror_edit(GtkWidget *,main_window *widgets){
mirror_add_window *window = yon_mirror_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window");
gtk_button_set_label(GTK_BUTTON(widgets->repoCancelButton),CANCEL_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->repoAcceptButton),SAVE_LABEL);
gtk_widget_show_all(widgets->window);
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_mirror_accept),dict);
}
void init(GtkListStore *list){
main_config.always_open_documentation=0;
main_config.win_height=600;
main_config.win_width=800;
main_config.win_pos_x=0;
main_config.win_pos_y=0;
main_config.socket_id=-1;
main_config.save_socket_id=-1;
main_config.load_socket_id=-1;
main_config.lock_help=0;
main_config.lock_help=0;
main_config.lock_load_global=0;
main_config.lock_save_global=0;
main_config.lock_save_local=0;
main_config.list=list;
void on_mirror_configure(GtkWidget *,main_window *widgets){
mirror_configure_window *window = yon_mirror_configure_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window");
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_mirror_accept),dict);
}
main_window *setup_window(){
main_window *widgets=NULL;
widgets=malloc(sizeof(main_window));
widgets->builder=gtk_builder_new_from_resource(glade_path);
widgets->window=yon_gtk_builder_get_widget(widgets->builder,"MainWindow");
widgets->HeaderTopic=yon_gtk_builder_get_widget(widgets->builder,"headerTopic");
widgets->PlugBox=yon_gtk_builder_get_widget(widgets->builder,"plugBox");
widgets->RightBox=yon_gtk_builder_get_widget(widgets->builder,"LeftBox");
widgets->LeftBox=yon_gtk_builder_get_widget(widgets->builder,"RightBox");
widgets->generalSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"generalTabLabel");
widgets->repositoriesSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"repositoriesTabLabel");
widgets->extraSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"extraTabLabel");
widgets->generalSettingsHideNoUpdatesCheck=yon_gtk_builder_get_widget(widgets->builder,"hideIfNoUpdatesCheck");
widgets->generalSettingsUpdatesCheckFreqLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqLabel");
widgets->generalSettingsUpdatesCheckFreqCombo=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqCombo");
widgets->generalSettingsDownloadAutoCheck=yon_gtk_builder_get_widget(widgets->builder,"DownloadAutoCheck");
widgets->repositoriesSettingsActivateAURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateAURCheck");
widgets->repositoriesSettingsActivateUBURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateUBURCheck");
widgets->repositoriesSettingsMoveUpButton=yon_gtk_builder_get_widget(widgets->builder,"MoveUpButton");
widgets->repositoriesSettingsMoveDownButton=yon_gtk_builder_get_widget(widgets->builder,"MoveDownButton");
widgets->repositoriesSettingsCreateButton=yon_gtk_builder_get_widget(widgets->builder,"CreateButton");
widgets->repositoriesSettingsEditButton=yon_gtk_builder_get_widget(widgets->builder,"EditButton");
widgets->repositoriesSettingsDeleteButton=yon_gtk_builder_get_widget(widgets->builder,"DeleteButton");
widgets->repositoriesSettingsRepositoriesTreeView=yon_gtk_builder_get_widget(widgets->builder,"RepositoriesTreeView");
widgets->repositoriesSettingsEnabledColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"EnabledColumn"));
widgets->repositoriesSettingsURIColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"URIColumn"));
widgets->repositoriesSettingsDistributionColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"DistributionColumn"));
widgets->extraSettingsPackageManagerLabel=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerLabel");
widgets->extraSettingsPackageManagerEntry=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerEntry");
widgets->extraSettingsUpdateCommandLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandLabel");
widgets->extraSettingsUpdateCommandEntry=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandEntry");
widgets->extraSettingsCacheCleanlabel=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandLabel");
widgets->extraSettingsCacheCleanEntry=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandEntry");
widgets->extraSettingsLaunchPackageManagerButton=yon_gtk_builder_get_widget(widgets->builder,"LaunchPackageManagerButton");
widgets->headerLoadConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerLoadConfigLabel");
widgets->headerLoadGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadGlobalConfigurationMenuItem");
widgets->headerLoadLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadLocalConfigurationMenuItem");
widgets->headerSaveConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerSaveConfigLabel");
widgets->headerSaveGlobalLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalLocalConfigurationMenuItem");
widgets->headerSaveGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalConfigurationMenuItem");
widgets->headerSaveLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveLocalConfigurationMenuItem");
widgets->headerDocumentationButton=yon_gtk_builder_get_widget(widgets->builder,"DocumentationMenuItem");
widgets->headerAboutButton=yon_gtk_builder_get_widget(widgets->builder,"AboutMenuItem");
widgets->mainCheckForUpdatesButton=yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
widgets->mainCheckForUpdatesButton = yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
widgets->statusBox = yon_gtk_builder_get_widget(widgets->builder,"mainStatusBox");
widgets->statusIcon = yon_gtk_builder_get_widget(widgets->builder,"mainStatusIcon");
widgets->statusLabel = yon_gtk_builder_get_widget(widgets->builder,"mainStatusLabel");
main_config.list=GTK_LIST_STORE(gtk_builder_get_object(widgets->builder,"liststore1"));
if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->headerLoadGlobalConfigButton,0);
}
if (main_config.lock_save_global == 1){
gtk_widget_set_sensitive(widgets->headerSaveGlobalConfigButton,0);
gtk_widget_set_sensitive(widgets->headerSaveGlobalLocalConfigButton,0);
void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck));
const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->RepoNameEntry));
if (yon_char_is_empty(repo_name)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->RepoNameEntry);
return;
}
if (main_config.lock_save_local == 1){
gtk_widget_set_sensitive(widgets->headerSaveLocalConfigButton,0);
gtk_widget_set_sensitive(widgets->headerSaveGlobalLocalConfigButton,0);
// int source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSourceCombo));
const char *source_path = gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry));
if (yon_char_is_empty(source_path)){
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;
}
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->HeaderTopic),TITLE_LABEL);
// int sign_level_package = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSignCheckCombo));
// int sign_level_condiition = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSignConditionCombo));
gtk_label_set_text(GTK_LABEL(widgets->generalSettingsTabLabel),GENERAL_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->repositoriesSettingsTabLabel),REPOSITORIES_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsTabLabel),EXTRA_LABEL);
// int usage_level_default = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck));
// int usage_level_enable_update = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableUpdateCheck));
// int usage_level_enable_search = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableSearchCheck));
// int usage_level_enable_install = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableInsallCheck));
// int usage_level_sysupgrade = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageSysupgradeCheck));
gtk_widget_destroy(window->Window);
free(window);
gtk_label_set_text(GTK_LABEL(widgets->generalSettingsUpdatesCheckFreqLabel),CHECK_FREQUENCY_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsHideNoUpdatesCheck),HIDE_NO_UPDATES_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsDownloadAutoCheck),AUTO_UPDATE_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_1_HOUR_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_2_HOURS_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_3_HOURS_LABEL);
}
gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateAURCheck),AUR_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateUBURCheck),UBUR_LABEL);
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsCreateButton),_("Create"));
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsEditButton),_("Edit"));
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsDeleteButton),_("Delete"));
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsEnabledColumn),ENABLED_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsURIColumn),URI_LABEL);
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsDistributionColumn),DISTIBUTION_LABEL);
void on_web_publish_accept(GtkWidget *, dictionary *){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsPackageManagerLabel),PACKAGE_MANAGER_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsUpdateCommandLabel),UPDATE_COMMAND_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsCacheCleanlabel),CACHE_CLEAN_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->extraSettingsLaunchPackageManagerButton),LAUNCH_PACKAGE_MANAGER_LABEL);
}
gtk_label_set_text(GTK_LABEL(widgets->headerLoadConfigLabel),LOAD_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadGlobalConfigButton),LOAD_GLOBAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadLocalConfigButton),LOAD_LOCAL_LABEL);
void on_mirror_accept(GtkWidget *,dictionary *){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
gtk_label_set_text(GTK_LABEL(widgets->headerSaveConfigLabel),SAVE_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalLocalConfigButton),SAVE_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalConfigButton),SAVE_GLOBAL_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveLocalConfigButton),SAVE_LOCAL_LABEL);
}
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerDocumentationButton),DOCUMENTATION_LABEL);
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerAboutButton),ABOUT_LABEL);
void on_remove_accept(GtkWidget *, GtkWidget *){
gtk_button_set_label(GTK_BUTTON(widgets->mainCheckForUpdatesButton),CHECK_FOR_UPDATES_LABEL);
}
repo_add_window *yon_repo_add_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_repo_add_path);
repo_add_window *window = malloc(sizeof(repo_add_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->EnabledCheck = yon_gtk_builder_get_widget(builder,"EnabledCheck");
window->RepoNameEntry = yon_gtk_builder_get_widget(builder,"RepoNameEntry");
window->RepoSourceCombo = yon_gtk_builder_get_widget(builder,"RepoSourceCombo");
window->RepoSourceEntry = yon_gtk_builder_get_widget(builder,"RepoSourceEntry");
window->RepoSourceButton = yon_gtk_builder_get_widget(builder,"RepoSourceButton");
window->RepoSignCheckCombo = yon_gtk_builder_get_widget(builder,"RepoSignCheckCombo");
window->RepoSignConditionCombo = yon_gtk_builder_get_widget(builder,"RepoSignConditionCombo");
window->UsageDefaultCheck = yon_gtk_builder_get_widget(builder,"UsageDefaultCheck");
window->UsageEnableUpdateCheck = yon_gtk_builder_get_widget(builder,"UsageEnableUpdateCheck");
window->UsageEnableSearchCheck = yon_gtk_builder_get_widget(builder,"UsageEnableSearchCheck");
window->UsageEnableInsallCheck = yon_gtk_builder_get_widget(builder,"UsageEnableInsallCheck");
window->UsageSysupgradeCheck = yon_gtk_builder_get_widget(builder,"UsageSysupgradeCheck");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_widget_show(window->Window);
return window;
}
web_publication_add_window *yon_web_publication_add_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_web_publish_add_path);
web_publication_add_window *window = malloc(sizeof(web_publication_add_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->EnablePublishCheck = yon_gtk_builder_get_widget(builder,"EnablePublishCheck");
window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
window->RepositoriesTree = yon_gtk_builder_get_widget(builder,"RepositoriesTree");
window->PortCheck = yon_gtk_builder_get_widget(builder,"PortCheck");
window->PortEntry = yon_gtk_builder_get_widget(builder,"PortEntry");
window->EnableWebFileBrowserCheck = yon_gtk_builder_get_widget(builder,"EnableWebFileBrowserCheck");
window->UsernameCheck = yon_gtk_builder_get_widget(builder,"UsernameCheck");
window->UsernameEntry = yon_gtk_builder_get_widget(builder,"UsernameEntry");
window->UserPasswordCheck = yon_gtk_builder_get_widget(builder,"UserPasswordCheck");
window->UserPasswordCombo = yon_gtk_builder_get_widget(builder,"UserPasswordCombo");
window->UserPasswordEntry = yon_gtk_builder_get_widget(builder,"UserPasswordEntry");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_widget_show(window->Window);
return window;
}
GtkWidget *Header = yon_gtk_builder_get_widget(widgets->builder,"boxColor");
GtkWidget *Image = yon_gtk_builder_get_widget(widgets->builder,"HeadBackgroundImage");
GtkWidget *Overlay = yon_gtk_builder_get_widget(widgets->builder,"HeadOverlay");
GtkWidget *UnderNoteOverlay = yon_gtk_builder_get_widget(widgets->builder,"UnderNoteOverlay");
GtkWidget *headLabel = yon_gtk_builder_get_widget(widgets->builder,"headLabel");
GtkWidget *headInfoLabel = yon_gtk_builder_get_widget(widgets->builder,"headInfoLabel");
yon_ubl_header_setup(Overlay,Header,Image,image_path);
gtk_overlay_add_overlay(GTK_OVERLAY(UnderNoteOverlay),widgets->mainCheckForUpdatesButton);
gtk_label_set_text(GTK_LABEL(headLabel),TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(headInfoLabel),TITLE_INFO_LABEL);
gtk_widget_show_all(widgets->window);
render.box=widgets->statusBox;
render.icon=widgets->statusIcon;
render.label=widgets->statusLabel;
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
mirror_configure_window *yon_mirror_configure_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_configure_path);
mirror_configure_window *window = malloc(sizeof(mirror_configure_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->PortDefaultCheck = yon_gtk_builder_get_widget(builder,"PortDefaultCheck");
window->PortEntry = yon_gtk_builder_get_widget(builder,"PortEntry");
window->CacheDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheDefaultCheck");
window->CacheEntry = yon_gtk_builder_get_widget(builder,"CacheEntry");
window->CacheButton = yon_gtk_builder_get_widget(builder,"CacheButton");
window->InactivityDurationDefaultCheck = yon_gtk_builder_get_widget(builder,"InactivityDurationDefaultCheck");
window->InactivityDurationEntry = yon_gtk_builder_get_widget(builder,"InactivityDurationEntry");
window->CacheTimeoutDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheTimeoutDefaultCheck");
window->CacheTimeoutEntry = yon_gtk_builder_get_widget(builder,"CacheTimeoutEntry");
window->ProxyCheck = yon_gtk_builder_get_widget(builder,"ProxyCheck");
window->ProxyEntry = yon_gtk_builder_get_widget(builder,"ProxyEntry");
window->AgentDefaultCheck = yon_gtk_builder_get_widget(builder,"AgentDefaultCheck");
window->AgentEntry = yon_gtk_builder_get_widget(builder,"AgentEntry");
window->CronEntry = yon_gtk_builder_get_widget(builder,"CronEntry");
window->UpdatesDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesDelayDefaultCheck");
window->UpdatesDelayEntry = yon_gtk_builder_get_widget(builder,"UpdatesDelayEntry");
window->UpdatesRequestDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayDefaultCheck");
window->UpdatesRequestDelayEntry = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayEntry");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_widget_show(window->Window);
return window;
}
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsCreateButton), "clicked", G_CALLBACK(on_repo_window_open_create), NULL);
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsEditButton), "clicked", G_CALLBACK(on_repo_window_open_edit), widgets->repositoriesSettingsRepositoriesTreeView);
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsDeleteButton), "clicked", G_CALLBACK(on_repos_delete), widgets->repositoriesSettingsRepositoriesTreeView);
mirror_add_window *yon_mirror_add_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_add_path);
mirror_add_window *window = malloc(sizeof(mirror_add_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
window->TypeEntry = yon_gtk_builder_get_widget(builder,"TypeEntry");
window->TypeButton = yon_gtk_builder_get_widget(builder,"TypeButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_widget_show(window->Window);
return window;
}
g_signal_connect(G_OBJECT(widgets->headerAboutButton), "activate", G_CALLBACK(on_about), NULL);
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
* [RU]
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
void yon_main_window_complete(main_window *widgets){
widgets = yon_remalloc(widgets,sizeof(main_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
g_signal_connect(G_OBJECT(widgets->window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(widgets->headerDocumentationButton), "activate", G_CALLBACK(on_open_documentation_confirmation), WIKI_LINK);
{
gtk_builder_add_callback_symbol(builder,"yon_gtk_widget_set_sensitive_from_toggle_button_inversed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed));
}
// Custom widgets configuration
{
widgets->AutoUpdateCheck = yon_gtk_builder_get_widget(builder,"AutoUpdateCheck");
widgets->UpdateCheckFreqCombo = yon_gtk_builder_get_widget(builder,"UpdateCheckFreqCombo");
widgets->UpdateCheckIntervalCombo = yon_gtk_builder_get_widget(builder,"UpdateCheckIntervalCombo");
widgets->UpdateRepoListCombo = yon_gtk_builder_get_widget(builder,"UpdateRepoListCombo");
widgets->UpdateRepoTree = yon_gtk_builder_get_widget(builder,"UpdateRepoTree");
widgets->RepositoriesRepoListConfigurationCheck = yon_gtk_builder_get_widget(builder,"RepositoriesRepoListConfigurationCheck");
widgets->RepositoriesDisableSystemReposCheck = yon_gtk_builder_get_widget(builder,"RepositoriesDisableSystemReposCheck");
widgets->RepositoriesTree = yon_gtk_builder_get_widget(builder,"RepositoriesTree");
widgets->RepositoriesUpdateButton = yon_gtk_builder_get_widget(builder,"RepositoriesUpdateButton");
widgets->RepositoriesMoveUpButton = yon_gtk_builder_get_widget(builder,"RepositoriesMoveUpButton");
widgets->RepositoriesMoveDownButton = yon_gtk_builder_get_widget(builder,"RepositoriesMoveDownButton");
widgets->RepositoriesCreateButton = yon_gtk_builder_get_widget(builder,"RepositoriesCreateButton");
widgets->RepositoriesEditButton = yon_gtk_builder_get_widget(builder,"RepositoriesEditButton");
widgets->RepositoriesDeleteButton = yon_gtk_builder_get_widget(builder,"RepositoriesDeleteButton");
widgets->PublicationConnectPublicCheck = yon_gtk_builder_get_widget(builder,"PublicationConnectPublicCheck");
widgets->RecieveDBFromNetCheck = yon_gtk_builder_get_widget(builder,"RecieveDBFromNetCheck");
widgets->PublicationTree = yon_gtk_builder_get_widget(builder,"PublicationTree");
widgets->PublicationUpdateButton = yon_gtk_builder_get_widget(builder,"PublicationUpdateButton");
widgets->WebPublicationUpdateButton = yon_gtk_builder_get_widget(builder,"WebPublicationUpdateButton");
widgets->WebPublicationAddButton = yon_gtk_builder_get_widget(builder,"WebPublicationAddButton");
widgets->WebPublicationEditButton = yon_gtk_builder_get_widget(builder,"WebPublicationEditButton");
widgets->WebPublicationRemoveButton = yon_gtk_builder_get_widget(builder,"WebPublicationRemoveButton");
widgets->WebPublicationTree = yon_gtk_builder_get_widget(builder,"WebPublicationTree");
widgets->MirrorPublicCheck = yon_gtk_builder_get_widget(builder,"MirrorPublicCheck");
widgets->MirrorTree = yon_gtk_builder_get_widget(builder,"MirrorTree");
widgets->MirrorUpdateButton = yon_gtk_builder_get_widget(builder,"MirrorUpdateButton");
widgets->MirrorAddButton = yon_gtk_builder_get_widget(builder,"MirrorAddButton");
widgets->MirrorEditButton = yon_gtk_builder_get_widget(builder,"MirrorEditButton");
widgets->MirrorRemoveButton = yon_gtk_builder_get_widget(builder,"MirrorRemoveButton");
widgets->MirrorConfigureButton = yon_gtk_builder_get_widget(builder,"MirrorConfigureButton");
widgets->UpdateRepoList = GTK_LIST_STORE(gtk_builder_get_object(builder,"UpdateRepoList"));
widgets->ReposList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ReposList"));
widgets->PublicationList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PublicationList"));
widgets->WebPublicationList = GTK_LIST_STORE(gtk_builder_get_object(builder,"WebPublicationList"));
widgets->MirrorList = GTK_LIST_STORE(gtk_builder_get_object(builder,"MirrorList"));
}
{
g_signal_connect(G_OBJECT(widgets->RepositoriesCreateButton),"clicked",G_CALLBACK(on_repo_add),widgets);
g_signal_connect(G_OBJECT(widgets->WebPublicationAddButton),"clicked",G_CALLBACK(on_web_publish_add),widgets);
g_signal_connect(G_OBJECT(widgets->MirrorAddButton),"clicked",G_CALLBACK(on_mirror_add),widgets);
g_signal_connect(G_OBJECT(widgets->RepositoriesTree),"cursor-changed",G_CALLBACK(on_selection_changed),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);
}
}
int main(int argc, char *argv[]){
int main(int argc, char *argv[]){
local=setlocale(LC_ALL, "");
textdomain (LocaleName);
init(NULL);
int option_index=0;
int show_help=0;
{
struct option long_options[] = {
{"help", 0, 0, 'h'},
{"version", 0, 0, 'V'},
{"lock-help", 0,0, 1},
{"lock-save", 0,0, 2},
{"lock-save-local", 0,0, 3},
{"lock-save-global", 0,0, 4},
{"lock-load-global", 0,0, 5},
{"socket-id", 1, 0, 's'},
{"socket-ext-id", 1,0, 'e'},
{"socket-trd-id", 1,0, 't'},
{ NULL, 0, NULL, 0 }
};
for (int i=0;i<argc;i++){
int argument=getopt_long(argc,argv,"hVvs:e:t:",long_options,&option_index);
switch(argument){
case 'h':
show_help=1;
break;
case 'v':
case 'V':
printf("%s\n",VERSION_LABEL);
exit(0);
break;
case 's':
if(optarg)
main_config.socket_id=atoi(optarg);
break;
case 'e':
if(optarg)
main_config.load_socket_id=atoi(optarg);
break;
case 't':
if(optarg)
main_config.save_socket_id=atoi(optarg);
break;
case 1:
main_config.lock_help=1;
break;
case 2:
main_config.lock_save_local=1;
main_config.lock_save_global=1;
break;
case 3:
main_config.lock_save_local=1;
break;
case 4:
main_config.lock_save_global=1;
break;
case 5:
main_config.lock_load_global=1;
break;
}
}
if (show_help==1&&main_config.lock_help!=1){
printf("%s\n",HELP_LABEL);
exit(0);
}
}
config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL;
int size=0;
yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL);
gtk_init(&argc,&argv);
main_window *widgets = setup_window();
yon_ubl_status_box_render(render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
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(),
GTK_STYLE_PROVIDER(css),
-1);
template_main_window *widgets = yon_ubl_window_setup();
yon_main_window_complete((main_window*)widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
yon_window_config_load(path);
if (getuid()!=0){
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
textdomain(LocaleName);
}
gtk_main();
return 0;
}

@ -1,6 +1,7 @@
#ifndef UBL_SETTINGS_UPDATE_INIT
#define UBL_SETTINGS_UPDATE_INIT
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include "ubl-utils.h"
#include <locale.h>
#include <stdio.h>
#include <unistd.h>
@ -8,7 +9,9 @@
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include "../compile/ubl-cmake.h"
#include <libublsettings.h>
#include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -19,123 +22,197 @@
#define _(String) gettext(String)
#define glade_path "/com/ublinux/ui/ubl-settings-update.glade"
#define image_path "/com/ublinux/images/ubl-settings-update-banner.png"
#define glade_repo_add_path "/com/ublinux/ui/ubl-settings-update-repo-add.glade"
#define glade_web_publish_add_path "/com/ublinux/ui/ubl-settings-update-web-publication-add.glade"
#define glade_mirror_configure_path "/com/ublinux/ui/ubl-settings-update-mirror-configure.glade"
#define glade_mirror_add_path "/com/ublinux/ui/ubl-settings-update-mirror-add.glade"
#define banner_path "/com/ublinux/images/ubl-settings-update-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-update.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-update"
#define icon_path "com.ublinux.ubl-settings-update"
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get system PARAMETERS",NULL)
#define config_get_local_command "ubconfig --source system get system PARAMETERS"
#define config_get_global_command "ubconfig --source global get system PARAMETERS"
#define config_get_default_command ""
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
typedef char* string;
string version_application;
char *local;
typedef struct {
int always_open_documentation;
int win_pos_x;
int win_pos_y;
int win_width;
int win_height;
int socket_id;
int load_socket_id;
int save_socket_id;
int lock_help;
int lock_save_local;
int lock_save_global;
int lock_load_global;
GtkListStore *list;
template_config_fields
} config;
typedef struct {
GtkWidget *window;
GtkBuilder *builder;
GtkWidget *HeaderTopic;
GtkWidget *PlugBox;
GtkWidget *LeftBox;
GtkWidget *RightBox;
GtkWidget *generalSettingsTabLabel;
GtkWidget *repositoriesSettingsTabLabel;
GtkWidget *extraSettingsTabLabel;
GtkWidget *generalSettingsHideNoUpdatesCheck;
GtkWidget *generalSettingsUpdatesCheckFreqLabel;
GtkWidget *generalSettingsUpdatesCheckFreqCombo;
GtkWidget *generalSettingsDownloadAutoCheck;
GtkWidget *repositoriesSettingsActivateAURCheck;
GtkWidget *repositoriesSettingsActivateUBURCheck;
GtkWidget *repositoriesSettingsMoveUpButton;
GtkWidget *repositoriesSettingsMoveDownButton;
GtkWidget *repositoriesSettingsCreateButton;
GtkWidget *repositoriesSettingsEditButton;
GtkWidget *repositoriesSettingsDeleteButton;
GtkWidget *repositoriesSettingsRepositoriesTreeView;
GtkTreeViewColumn *repositoriesSettingsEnabledColumn;
GtkTreeViewColumn *repositoriesSettingsURIColumn;
GtkTreeViewColumn *repositoriesSettingsDistributionColumn;
GtkWidget *extraSettingsPackageManagerLabel;
GtkWidget *extraSettingsPackageManagerEntry;
GtkWidget *extraSettingsUpdateCommandLabel;
GtkWidget *extraSettingsUpdateCommandEntry;
GtkWidget *extraSettingsCacheCleanlabel;
GtkWidget *extraSettingsCacheCleanEntry;
GtkWidget *extraSettingsLaunchPackageManagerButton;
GtkWidget *headerLoadConfigLabel;
GtkWidget *headerLoadGlobalConfigButton;
GtkWidget *headerLoadLocalConfigButton;
GtkWidget *headerSaveConfigLabel;
GtkWidget *headerSaveGlobalLocalConfigButton;
GtkWidget *headerSaveGlobalConfigButton;
GtkWidget *headerSaveLocalConfigButton;
GtkWidget *headerDocumentationButton;
GtkWidget *headerAboutButton;
GtkWidget *mainCheckForUpdatesButton;
GtkWidget *statusBox;
GtkWidget *statusIcon;
GtkWidget *statusLabel;
template_window_fields
GtkWidget *AutoUpdateCheck;
GtkWidget *UpdateCheckFreqCombo;
GtkWidget *UpdateCheckIntervalCombo;
GtkWidget *UpdateRepoListCombo;
GtkWidget *UpdateRepoTree;
GtkListStore *UpdateRepoList;
GtkWidget *RepositoriesRepoListConfigurationCheck;
GtkWidget *RepositoriesDisableSystemReposCheck;
GtkWidget *RepositoriesTree;
GtkWidget *RepositoriesUpdateButton;
GtkWidget *RepositoriesMoveUpButton;
GtkWidget *RepositoriesMoveDownButton;
GtkWidget *RepositoriesCreateButton;
GtkWidget *RepositoriesEditButton;
GtkWidget *RepositoriesDeleteButton;
GtkListStore *ReposList;
GtkWidget *PublicationConnectPublicCheck;
GtkWidget *RecieveDBFromNetCheck;
GtkWidget *PublicationTree;
GtkWidget *PublicationUpdateButton;
GtkListStore *PublicationList;
GtkWidget *WebPublicationUpdateButton;
GtkWidget *WebPublicationAddButton;
GtkWidget *WebPublicationEditButton;
GtkWidget *WebPublicationRemoveButton;
GtkWidget *WebPublicationTree;
GtkListStore *WebPublicationList;
GtkWidget *MirrorPublicCheck;
GtkWidget *MirrorTree;
GtkWidget *MirrorUpdateButton;
GtkWidget *MirrorAddButton;
GtkWidget *MirrorEditButton;
GtkWidget *MirrorRemoveButton;
GtkWidget *MirrorConfigureButton;
GtkListStore *MirrorList;
} main_window;
typedef struct {
GtkWidget *window;
GtkBuilder *builder;
GtkListStore *list;
GtkWidget *Window;
GtkWidget *HeadLabel;
GtkWidget *StatusBox;
GtkWidget *UsageSysupgradeCheck;
GtkWidget *UsageEnableInsallCheck;
GtkWidget *UsageEnableSearchCheck;
GtkWidget *UsageEnableUpdateCheck;
GtkWidget *UsageDefaultCheck;
GtkWidget *RepoSignConditionCombo;
GtkWidget *RepoSignCheckCombo;
GtkWidget *RepoSourceButton;
GtkWidget *RepoSourceEntry;
GtkWidget *RepoSourceCombo;
GtkWidget *RepoNameEntry;
GtkWidget *EnabledCheck;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
} repo_add_window;
GtkWidget *repoTypeLabel;
GtkWidget *repoTypeEntry;
GtkWidget *repoDistributionLabel;
GtkWidget *repoDistributionEntry;
typedef struct {
GtkWidget *Window;
GtkWidget *HeadLabel;
GtkWidget *StatusBox;
GtkWidget *EnablePublishCheck;
GtkWidget *PathEntry;
GtkWidget *PathButton;
GtkWidget *RepositoriesTree;
GtkWidget *PortCheck;
GtkWidget *PortEntry;
GtkWidget *EnableWebFileBrowserCheck;
GtkWidget *UsernameCheck;
GtkWidget *UsernameEntry;
GtkWidget *UserPasswordCheck;
GtkWidget *UserPasswordCombo;
GtkWidget *UserPasswordEntry;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
} web_publication_add_window;
GtkWidget *repoCancelButton;
GtkWidget *repoAcceptButton;
GtkWidget *tree;
} repo_window;
typedef struct {
GtkWidget *Window;
GtkWidget *HeadLabel;
GtkWidget *StatusBox;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
GtkWidget *NameEntry;
GtkWidget *TypeCombo;
GtkWidget *TypeEntry;
GtkWidget *TypeButton;
} mirror_add_window;
typedef struct {
GtkWidget *Window;
GtkWidget *HeadLabel;
GtkWidget *StatusBox;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
GtkWidget *PortDefaultCheck;
GtkWidget *PortEntry;
GtkWidget *CacheDefaultCheck;
GtkWidget *CacheEntry;
GtkWidget *CacheButton;
GtkWidget *InactivityDurationDefaultCheck;
GtkWidget *InactivityDurationEntry;
GtkWidget *CacheTimeoutDefaultCheck;
GtkWidget *CacheTimeoutEntry;
GtkWidget *ProxyCheck;
GtkWidget *ProxyEntry;
GtkWidget *AgentDefaultCheck;
GtkWidget *AgentEntry;
GtkWidget *CronEntry;
GtkWidget *UpdatesDelayDefaultCheck;
GtkWidget *UpdatesDelayEntry;
GtkWidget *UpdatesRequestDelayDefaultCheck;
GtkWidget *UpdatesRequestDelayEntry;
} mirror_configure_window;
typedef struct {
GtkWidget *Window;
GtkWidget *HeaderLabel;
GtkWidget *HatText;
GtkWidget *HeaderText;
GtkWidget *InfoText;
GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
void on_repo_window_open(GtkWidget *self);
void yon_load_proceed(YON_CONFIG_TYPE type);
void config_init();
void yon_main_window_complete(main_window *widgets);
void on_repo_accept_clicked(GtkWidget *, dictionary *dict);
void on_web_publish_accept(GtkWidget *, dictionary *dict);
void on_mirror_accept(GtkWidget *,dictionary *dict);
void on_remove_accept(GtkWidget *, GtkWidget *target);
repo_add_window *yon_repo_add_window_new();
web_publication_add_window *yon_web_publication_add_window_new();
mirror_add_window *yon_mirror_add_window_new();
mirror_configure_window *yon_mirror_configure_window_new();
void on_repo_add(GtkWidget *, main_window *widgets);
void on_mirror_add(GtkWidget *,main_window *widgets);
void on_web_publish_add(GtkWidget *,main_window *widgets);
void on_web_publish_remove(GtkWidget *self,main_window *widgets);
void on_mirror_remove(GtkWidget *,main_window *widgets);
void on_web_publish_edit(GtkWidget *,main_window *widgets);
void on_mirror_edit(GtkWidget *,main_window *widgets);
void on_mirror_configure(GtkWidget *,main_window *widgets);
void on_selection_changed(GtkWidget *self, main_window *widgets);
void on_repo_window_open_edit(GtkWidget *self, GtkWidget *tree);
repo_window *on_repo_window_open_create(GtkWidget *self);
main_window *setup_window();
#endif

@ -1,49 +1,11 @@
#define VERSION_LABEL yon_char_unite(_("Version:")," ",version_application,"\n",NULL)
#define HELP_LABEL yon_char_unite(_("ubl-settings-update version:")," ", version_application,"\n",_("update settings"),"\n",_("Usage:"), " ubl-settings-update ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n",NULL)
#define TITLE_LABEL _("System update")
#define TITLE_INFO_LABEL _("System update settings management")
#define CHECK_FOR_UPDATES_LABEL _("Check for updates")
#define ABOUT_LABEL _("About")
#define DOCUMENTATION_LABEL _("Documentation")
#define SAVE_LOCAL_LABEL _("Save to local configuration")
#define SAVE_GLOBAL_LABEL _("Save to global configuration")
#define SAVE_CONFIGURATION_LABEL _("Save configuration")
#define SAVE_LABEL _("Save")
#define LOAD_LOCAL_LABEL _("Load local configuration")
#define LOAD_GLOBAL_LABEL _("Load global configuration")
#define LOAD_LABEL _("load")
#define LAUNCH_PACKAGE_MANAGER_LABEL _("Launch package manager")
#define CACHE_CLEAN_LABEL _("Cache clean command: ")
#define UPDATE_COMMAND_LABEL _("Update command: ")
#define PACKAGE_MANAGER_LABEL _("Package manager: ")
#define URI_LABEL _("URI")
#define ENABLED_LABEL _("Enabled")
#define DISTIBUTION_LABEL _("Distribution")
#define UBUR_LABEL _("Activate UBUR")
#define AUR_LABEL _("Activate AUR")
#define EVERY_3_HOURS_LABEL _("Every 3 hours")
#define EVERY_2_HOURS_LABEL _("Every 2 hours")
#define EVERY_1_HOUR_LABEL _("Every 1 hour")
#define AUTO_UPDATE_LABEL _("Download updates automatically")
#define HIDE_NO_UPDATES_LABEL _("Hide icon of no updates found")
#define CHECK_FREQUENCY_LABEL _("Update checking frequency")
#define EXTRA_LABEL _("Extra")
#define REPOSITORIES_LABEL _("Repositories")
#define GENERAL_LABEL _("General")
#define ADRESS_LABEL _("Adress: ")
#define DISTRIBUTION_LABEL _("Distribution: ")
#define CANCEL_LABEL _("Cancel")
#define SAVE_LABEL _("Save")
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.")
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
#define OPEN_HELP_LABEL _("Open documentation")
#define PROJECT_HOME_LABEL _("Project Home Page")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#ifndef UBL_SETTINGS_UPDATE_STRINGS
#define UBL_SETTINGS_UPDATE_STRINGS
#define GLOBAL_LOAD_SUCCESS _("Global configuration loading succseeded.")
#define LOCAL_LOAD_SUCCESS _("Local configuration loading succseeded.")
#define TITLE_LABEL _("System update")
#define TITLE_INFO_LABEL _("System update settings management")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#define EMPTY_IMPORTANT_LABEL _("Empty important field!")
#define ADD_REPO_LABEL _("Add repository")
#define REMOVE_REPO_WARNING_LABEL _("Are you sure want to remove repository?")
#define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
#endif

File diff suppressed because it is too large Load Diff

@ -1,297 +0,0 @@
#ifndef UBL_UTILS
#define UBL_UTILS
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <pthread.h>
#include <string.h>
#include <dirent.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#define DesktopPath "/usr/share/applications/"
#define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next)
#define new(type) malloc(sizeof(type))
#define new_arr(type,size) malloc(sizeof(type)*size)
#define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command
#define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_load_local_config(command, size_pointer) yon_config_load(command, size_pointer)
#define yon_ubl_save_global_config(command) yon_config_save(command)
#define yon_ubl_save_local_config(command) yon_config_save(command)
typedef enum
{
#ifdef __GTK_H__
DICTIONARY_GTK_WIDGETS_TYPE,
#endif
DICTIONARY_OTHER_TYPE
} DICT_TYPE;
typedef struct
{
char *command;
int *exitcode;
} thread_output;
typedef struct dictionary
{
char *key;
void *data;
struct dictionary *next;
struct dictionary *prev;
struct dictionary *first;
DICT_TYPE data_type;
} dictionary;
typedef struct apps
{
char *Name;
int Type;
char *Categories;
char *Exec;
char *Icon;
int Pluggable;
int DualPluggable;
} apps;
typedef char** config_str;
// dictionary functions
/**yon_dictionary_get_data(dictionary, type)
* [EN]
* Gets data from dictionary.
* [dictionary] is dictionary, from which data should be extracted;
* [type] is type of data, [dictionary] contains.
* [RU]
* Возвращает данные из словаря.
* [dictionary] - словарь из которого достаются данные.
* [type] - тип данных, хранящихся в словаре [dictionary].
*/
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_create_with_data(key,data); \
else dict=yon_dictionary_create_with_data_connected(dict,key,data);}
dictionary *yon_dictionary_create_empty();
dictionary *yon_dictionary_create_conneced(dictionary *targetdict);
dictionary *yon_dictionary_get_last(dictionary *dict);
dictionary *yon_dictionary_switch_places(dictionary *dict, int aim);
void yon_dictionary_make_first(dictionary *dict);
void yon_dictionary_make_nth(dictionary *dict, int nth);
dictionary *yon_dictionary_create_with_data(char *key, void *data);
dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data);
dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect);
dictionary *yon_dictionary_find(dictionary **dict, char *key);
dictionary *yon_dictionary_rip(dictionary *dict);
dictionary *yon_dictionary_get_nth(dictionary *dict, int place);
void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(void*));
// char functions
char *yon_char_get_augumented(char *source, char *append);
char *yon_char_new(char *chr);
char *yon_char_unite(char *source, ...);
char *yon_cut(char *source, int size, int startpos);
char *yon_char_divide(char *source, int dividepos);
char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_from_int(int int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (config_str old, int *old_size, ...);
// parsing functions
apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size);
apps *yon_apps_get_by_name(apps *applist, char *name, int size);
config_str yon_config_load(char *command, int *str_len);
int yon_config_save(char *command);
char *yon_config_get_parameter(config_str parameters, int size, char *param);
char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider);
// terminal-using functions
int yon_launch_app(char *name);
int yon_launch_app_with_arguments(char *name, char *args);
int yon_launch(thread_output *thread);
// Gtk functions
#ifdef __GTK_H__
#ifdef VTE_TERMINAL
/**
*
*/
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument);
#endif
/**yon_gtk_builder_get_widget(builder, widget_name)
* [EN]
* Returns GtkWidget from GtkBuilder *[builder].
* [builder] is GtkBuilder*;
* [widget_name] is id of widget;
*/
#define yon_gtk_builder_get_widget(builder, widget_name) GTK_WIDGET(gtk_builder_get_object(builder, widget_name))
typedef struct
{
GtkWidget *Icon;
GtkWidget *Label;
GtkWidget *IconView;
GtkListStore *List;
} expander_icon_view;
// GtkWidget *yon_gtk_app_chooser_apps_create();
// dictionary *yon_gtk_app_chooser_create();
// expander_icon_view yon_gtk_icon_view_expander_create(GtkWidget *pack, ...);
int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size);
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment);
int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
typedef enum
{
BACKGROUND_IMAGE_SUCCESS_TYPE,
BACKGROUND_IMAGE_FAIL_TYPE
} BACKGROUND_IMAGE_TYPE;
typedef struct {
BACKGROUND_IMAGE_TYPE type;
GtkWidget *icon;
GtkWidget *box;
GtkWidget *label;
char* text_to_render;
} render_data;
/**yon_ubl_status_box_setup(render,icon,box,label)
* [EN]
* Sets up [render] structure of type render_data.
* [icon] is GtkImage widget of status box for showing status icons;
* [box] is GtkBox widget of status box for showing status color;
* [label] is GtkLabel widget of status box for showing status text;
* [RU]
* Настраивает структуру [render] типа render_data.
* [icon] - виджет типа GtkIcon в котором будут отображаться статусные иконки;
* [box] - виджет типа GtkBox в котором будет отображаться цвет статуса;
* [label] - виджет типа GtkLabel в котором будет отображаться текст статусного сообщения;
*/
#define yon_ubl_status_box_setup(render,icon,box,label) {render.icon=GTK_WIDGET(icon); render.box=GTK_WIDGET(box); render.label=GTK_WIDGET(label);}
/**yon_ubl_status_box_render(render,text,type)
* [EN]
* Renders message in status box;
* [render] is render_data structure of status box;
* [text] is text to be shown in status box;
* [type] if type of message. Can be BACKGROUND_IMAGE_FAIL_TYPE or BACKGROUND_IMAGE_SUCCESS_TYPE
* [RU]
* Отображает сообщение в статусном окне.
* [render] - структура типа render_data для нужного статусного окна;
* [text] - текст, отображаемый в статусном окне;
* [type] - тип сообщения. Может быть:
* BACKGROUND_IMAGE_FAIL_TYPE (красный фон,иконка - восклицательный знак)
* или
* BACKGROUND_IMAGE_SUCCESS_TYPE (Жёлтный фон, иконка - галка)
*/
#define yon_ubl_status_box_render(render,text,m_type) {render.text_to_render=text; render.type=m_type; pthread_attr_t attr; pthread_attr_init(&attr); pthread_t tid; pthread_create(&tid,&attr,(void*)_yon_ubl_status_box_render,((void*)&render)); }
#ifdef __cplusplus
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay.gobj()), GTK_WIDGET(head.gobj()), GTK_WIDGET(image.gobj()), (char *)imag_path)
#else
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#endif
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_status_box_render(render_data *datav);
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id);
#ifdef WEBKIT_FOUND
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#else
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#endif
#endif
#endif
Loading…
Cancel
Save