uxgtk_theme_t *uxgtk_window_theme_create(void) { window_theme_t *theme; GtkStyleContext *context; TRACE("()\n"); theme = malloc(sizeof(window_theme_t)); memset(theme, 0, sizeof(window_theme_t)); uxgtk_theme_init(&theme->base, &window_vtable); context = pgtk_widget_get_style_context(theme->base.window); pgtk_style_context_add_class(context, GTK_STYLE_CLASS_BACKGROUND); return &theme->base; }
uxgtk_theme_t *uxgtk_header_theme_create(void) { header_theme_t *theme; TRACE("()\n"); theme = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*theme)); if (!theme) return NULL; uxgtk_theme_init(&theme->base, &header_vtable); theme->treeview = pgtk_tree_view_new(); pgtk_tree_view_append_column((GtkTreeView *)theme->treeview, pgtk_tree_view_column_new()); pgtk_tree_view_append_column((GtkTreeView *)theme->treeview, pgtk_tree_view_column_new()); pgtk_tree_view_append_column((GtkTreeView *)theme->treeview, pgtk_tree_view_column_new()); pgtk_container_add((GtkContainer *)theme->base.layout, theme->treeview); return &theme->base; }
uxgtk_theme_t *uxgtk_button_theme_create(void) { button_theme_t *theme; TRACE("()\n"); theme = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*theme)); if (!theme) return NULL; uxgtk_theme_init(&theme->base, &button_vtable); /* Other widgets will be created on demand */ theme->check = pgtk_check_button_new(); pgtk_container_add((GtkContainer *)theme->base.layout, theme->check); /* Used for both check- and radiobuttons */ pgtk_widget_style_get(theme->check, "indicator-size", &theme->indicator_size, NULL); TRACE("-GtkCheckButton-indicator-size: %d\n", theme->indicator_size); return &theme->base; }
uxgtk_theme_t *uxgtk_combobox_theme_create(void) { combobox_theme_t *theme; TRACE("()\n"); theme = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*theme)); if (!theme) return NULL; uxgtk_theme_init(&theme->base, &combobox_vtable); /* I use a simple entry because .combobox-entry has no right border sometimes */ theme->entry = pgtk_entry_new(); theme->combobox = pgtk_combo_box_new_with_entry(); pgtk_container_add((GtkContainer *)theme->base.layout, theme->entry); pgtk_container_add((GtkContainer *)theme->base.layout, theme->combobox); /* Extract button */ pgtk_container_forall((GtkContainer *)theme->combobox, iter_callback, theme); theme->arrow = pgtk_bin_get_child((GtkBin *)theme->button); pgtk_widget_style_get(theme->combobox, "arrow-size", &theme->arrow_size, "arrow-scaling", &theme->arrow_scaling, NULL); /* A workaround for old themes like Ambiance */ if (theme->arrow_scaling == 1) theme->arrow_scaling = 0.6; TRACE("-GtkComboBox-arrow-scaling: %f\n", theme->arrow_scaling); TRACE("-GtkComboBox-arrow-size: %d\n", theme->arrow_size); return &theme->base; }