#include "libublsettings-gtk3.h" #ifdef __GTK_H__ // GtkEntry section // struct entry_pattern_data { // GtkEntry *entry; // char *pattern; // %d %s // }; // char *yon_gtk_entry_pattern_format(GtkWidget *target, struct entry_pattern_data *data){ // if (target){ // const char *entry_data = gtk_entry_get_text(target); // int next_track=0; // for (int i=0; ipattern);i++){ // char target_letter=-1; // target_letter = ; // switch (data->pattern[i]){ // case '%':next_track=1; // break; // case 'd':if (next_track){ // } // break; // case 's': // break; // default: // } // } // }; // } // void yon_gtk_entry_set_pattern(GtkEntry *entry, char *pattern){ // struct entry_pattern_data *data = malloc(sizeof(struct entry_pattern_data)); // data->entry=entry; // data->pattern=pattern; // char *current_text = gtk_entry_get_text(entry); // } struct packages { GHashTable *all_list; GHashTable *installed_list; GHashTable *updates_list; int init_status; } packages_struct; GThread *packages_thread = NULL; void *_yon_packages_init(void){ if (getuid()){ packages_struct.init_status = 0; g_thread_exit(NULL); } packages_struct.all_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); packages_struct.installed_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); packages_struct.updates_list = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); int size; int installed_size; int updates_size; config_str package_list = yon_config_load("pacman -Slq",&size); config_str installed = yon_config_load("pacman -Qq",&installed_size); config_str updates = yon_config_load("pacman -Qqu",&updates_size); for (int i=0;itarget,target->command_value,target->default_value); if (!yon_char_is_empty(target->default_value)) free(target->command); if (!yon_char_is_empty(target->default_value)) free(target->command_value); } void *__yon_combo_set_default(struct yon_combo_default_struct *target){ int size; config_str parameter = yon_config_load(yon_config_parameter_prepare_command(target->command,"default",NULL,NULL),&size); if (size&&!yon_char_is_empty(parameter[0])&&strcmp(parameter[0],"(null)\n")){ yon_char_remove_last_symbol(parameter[0],'\n'); target->command_value = yon_char_new(parameter[0]); target->default_value = ((char*(*)(char*))(target->result_callback))(parameter[0]); } else { target->default_value = ((char*(*)(char*))(target->result_callback))(NULL); } g_idle_add_once((GSourceOnceFunc)_yon_combo_box_set_default_value,target); } void yon_combo_box_set_default(GtkComboBoxText *target, char *command, char*(result_callback)(char*)){ struct yon_combo_default_struct *target_struct = malloc(sizeof(struct yon_combo_default_struct)); target_struct->result_callback = result_callback; target_struct->target = target; target_struct->command = yon_char_new(command); target_struct->command_value=NULL; target_struct->default_value = NULL; g_thread_new("combo_get_default",(GThreadFunc)__yon_combo_set_default,target_struct); } // dictionary *__yon_config_listeners = NULL; // typedef struct { // GtkWidget *target; // char *widget_parameter; // void *check_function; // char *parameter; // char *save_command; // } config_listener; // void __yon_gtk_config_activated(GtkWidget *, config_listener *current){ // char *parameter; // if (((int (*)(char*, GtkWidget*, char*))(current->check_function))(parameter,current->target, current->parameter)) { // } // } // int yon_gtk_config_add_listener (GtkWidget *target, char *parameter, char *save_command,int(check_function)(char*,GtkWidget*,char*)){ // if (__yon_config_listeners){ // dictionary *dict; // for_dictionaries(dict,__yon_config_listeners){ // if (target==((config_listener*)dict->data)->target){ // return 0; // } // } // } // config_listener *current = malloc(sizeof(config_listener)); // current->target=target; // current->parameter = parameter; // current->save_command = save_command; // current->check_function = (void*)check_function; // if (GTK_IS_TOGGLE_BUTTON(target)){ // g_signal_connect(G_OBJECT(target),"toggled",C_CALLBACK(__yon_gtk_config_activated),current); // } // yon_dictionary_add_or_create_if_exists_with_data(__yon_config_listeners,NULL,current); // return 0; // } #endif