diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index a84f1e0..c1ba2bf 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -493,6 +493,11 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi } // gtk misc section + +void on_subwindow_close(GtkWidget *self){ + gtk_widget_destroy(gtk_widget_get_toplevel(self)); +} + int yon_gtk_window_setup(GtkWindow *window, GtkWindow *transistent_window, char *title, char *icon_name, char *window_id){ if (GTK_IS_WINDOW(window)){ int success=0; @@ -598,6 +603,39 @@ void yon_gtk_tree_view_minimal_fixed_size_set_full(GtkTreeView *tree){ GThread *thread = g_thread_new("column",(GThreadFunc)_yon_gtk_tree_view_minimal_fixed_size_set_full,tree); } +void yon_gtk_tree_view_set_(GtkTreeView *top,GtkTreeView *resizing, ...){ + va_list arglist; + va_start(arglist,resizing); + int column=-2, connect_to=-2; + + int top_columns=gtk_tree_view_get_n_columns(top); + int resizing_columns=gtk_tree_view_get_n_columns(resizing); + + dictionary *dict=NULL; + while((column=va_arg(arglist,int))!=-1){ + connect_to = va_arg(arglist,int); + if (top_columns>column&&resizing_columns>connect_to){ + char *name="1"; + name[0]=connect_to+1; + dictionary *cur = NULL; + if (!(cur =yon_dictionary_get(&dict,name))){ + int *width = malloc(sizeof(int)); + (*width)=gtk_tree_view_column_get_width(gtk_tree_view_get_column(top,column)); + yon_dictionary_append_with_data(dict,name,width); + } else { + *(int*)cur->data+=gtk_tree_view_column_get_width(gtk_tree_view_get_column(top,column)); + } + } + } + dictionary *cur; + for_dictionaries(cur,dict){ + int cur_column = cur->key[0]-1; + gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(resizing,cur_column),*(int*)dict->data); + free(dict->data); + } + va_end(arglist); +} + int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...){ va_list args; va_start(args,padding); @@ -1230,6 +1268,30 @@ gboolean yon_gtk_tree_model_check_exist(GtkTreeModel *model, GtkTreeIter *iter, return 0; } +gboolean yon_gtk_list_store_copy_full(GtkListStore *target, GtkListStore *source){ + gtk_list_store_clear(target); + GtkTreeIter iter, itar; + g_return_val_if_fail(GTK_IS_LIST_STORE(target),0); + g_return_val_if_fail(GTK_IS_LIST_STORE(source),0); + int columns = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(source)); + int target_columns = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(target)); + if (columns!=target_columns){ + g_warning("Target and source models have different number of columns",NULL); + return 0; + } + for_iter(source,&iter){ + gtk_list_store_append(target,&itar); + for(int i=0;i #include +#define _(String) gettext(String) #ifdef __GTK_H__ #ifdef VTE_INCLUDE @@ -172,6 +173,14 @@ void yon_window_config_custom_window_set(GtkWindow *window, char *window_name); int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment); +/**on_subwindow_close(GtkWidget *self) + * [EN] + * Closes window in which [self] is contained. + * [RU] + * Закрывает окно, в котором расположен виджет [self]. +*/ +void on_subwindow_close(GtkWidget *self); + int yon_gtk_window_setup(GtkWindow *window, GtkWindow *transistent_window, char *title, char *icon_name, char *window_id); /**yon_ubl_menu_item_documentation_new(char *buttonname) @@ -481,8 +490,12 @@ gboolean yon_gtk_tree_iter_get_from_combo_box_id(GtkComboBox *combo, GtkTreeMode gboolean yon_gtk_tree_model_check_exist(GtkTreeModel *model, GtkTreeIter *iter, char *id, int column); +gboolean yon_gtk_list_store_copy_full(GtkListStore *target, GtkListStore *source); + void yon_calendar_set_date_orientation(int orientation); void yon_calendar_popover_open(GtkEntry *TargetEntry,GtkWidget *PopupTarget); -int yon_calendar_get_last_date(); \ No newline at end of file +int yon_calendar_get_last_date(); + +config_str yon_resource_open_file(const char *path, int *size); \ No newline at end of file