예제 #1
0
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;
}
예제 #4
0
파일: combobox.c 프로젝트: vindo-app/wine
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;
}