-GtkWidget* TextureBrowser_constructWindow(GtkWindow* toplevel)
-{
- // The gl_widget and the tag assignment frame should be packed into a GtkVPaned with the slider
- // position stored in local.pref. gtk_paned_get_position() and gtk_paned_set_position() don't
- // seem to work in gtk 2.4 and the arrow buttons don't handle GTK_FILL, so here's another thing
- // for the "once-the-gtk-libs-are-updated-TODO-list" :x
-
- TextureBrowser_checkTagFile();
- TextureBrowser_SetNotex();
-
- GlobalShaderSystem().setActiveShadersChangedNotify(ReferenceCaller<TextureBrowser, TextureBrowser_activeShadersChanged>(g_TextureBrowser));
-
- g_TextureBrowser.m_parent = toplevel;
-
- GtkWidget* table = gtk_table_new(3, 3, FALSE);
- GtkWidget* frame_table = NULL;
- GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
- gtk_table_attach(GTK_TABLE(table), vbox, 0, 1, 1, 3, GTK_FILL, GTK_FILL, 0, 0);
- gtk_widget_show(vbox);
-
- GtkWidget* menu_bar;
-
- { // menu bar
- menu_bar = gtk_menu_bar_new();
- GtkWidget* menu_view = gtk_menu_new();
- GtkWidget* view_item = (GtkWidget*)TextureBrowser_constructViewMenu(GTK_MENU(menu_view));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(view_item), menu_view);
- gtk_menu_bar_append(GTK_MENU_BAR(menu_bar), view_item);
-
- GtkWidget* menu_tools = gtk_menu_new();
- GtkWidget* tools_item = (GtkWidget*)TextureBrowser_constructToolsMenu(GTK_MENU(menu_tools));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(tools_item), menu_tools);
- gtk_menu_bar_append(GTK_MENU_BAR(menu_bar), tools_item);
-
- gtk_table_attach(GTK_TABLE (table), menu_bar, 0, 3, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0);
- gtk_widget_show(menu_bar);
- }
- { // Texture TreeView
- g_TextureBrowser.m_scr_win_tree = gtk_scrolled_window_new(NULL, NULL);
- gtk_container_set_border_width(GTK_CONTAINER(g_TextureBrowser.m_scr_win_tree), 0);
-
- // vertical only scrolling for treeview
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(g_TextureBrowser.m_scr_win_tree), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
-
- gtk_widget_show(g_TextureBrowser.m_scr_win_tree);
-
- TextureBrowser_createTreeViewTree();
-
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(g_TextureBrowser.m_scr_win_tree), GTK_WIDGET(g_TextureBrowser.m_treeViewTree));
- gtk_widget_show(GTK_WIDGET(g_TextureBrowser.m_treeViewTree));
- }
- { // gl_widget scrollbar
- GtkWidget* w = gtk_vscrollbar_new(GTK_ADJUSTMENT(gtk_adjustment_new (0,0,0,1,1,0)));
- gtk_table_attach(GTK_TABLE (table), w, 2, 3, 1, 2, GTK_SHRINK, GTK_FILL, 0, 0);
- gtk_widget_show(w);
- g_TextureBrowser.m_texture_scroll = w;
-
- GtkAdjustment *vadjustment = gtk_range_get_adjustment (GTK_RANGE (g_TextureBrowser.m_texture_scroll));
- g_signal_connect(G_OBJECT(vadjustment), "value_changed", G_CALLBACK(TextureBrowser_verticalScroll), &g_TextureBrowser);
-
- widget_set_visible(g_TextureBrowser.m_texture_scroll, g_TextureBrowser.m_showTextureScrollbar);
- }
- { // gl_widget
- g_TextureBrowser.m_gl_widget = glwidget_new(FALSE);
- gtk_widget_ref(g_TextureBrowser.m_gl_widget);
-
- gtk_widget_set_events(g_TextureBrowser.m_gl_widget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK);
- GTK_WIDGET_SET_FLAGS(g_TextureBrowser.m_gl_widget, GTK_CAN_FOCUS);
-
- gtk_table_attach_defaults(GTK_TABLE(table), g_TextureBrowser.m_gl_widget, 1, 2, 1, 2);
- gtk_widget_show(g_TextureBrowser.m_gl_widget);
-
- g_TextureBrowser.m_sizeHandler = g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "size_allocate", G_CALLBACK(TextureBrowser_size_allocate), &g_TextureBrowser);
- g_TextureBrowser.m_exposeHandler = g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "expose_event", G_CALLBACK(TextureBrowser_expose), &g_TextureBrowser);
-
- g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "button_press_event", G_CALLBACK(TextureBrowser_button_press), &g_TextureBrowser);
- g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "button_release_event", G_CALLBACK(TextureBrowser_button_release), &g_TextureBrowser);
- g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "motion_notify_event", G_CALLBACK(TextureBrowser_motion), &g_TextureBrowser);
- g_signal_connect(G_OBJECT(g_TextureBrowser.m_gl_widget), "scroll_event", G_CALLBACK(TextureBrowser_scroll), &g_TextureBrowser);
- }
-
- // tag stuff
- if(g_TextureBrowser.m_tags)
- {
- { // fill tag GtkListStore
- g_TextureBrowser.m_all_tags_list = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING);
- GtkTreeSortable* sortable = GTK_TREE_SORTABLE(g_TextureBrowser.m_all_tags_list);
- gtk_tree_sortable_set_sort_column_id(sortable, TAG_COLUMN, GTK_SORT_ASCENDING);
-
- TagBuilder.GetAllTags(g_TextureBrowser.m_all_tags);
- TextureBrowser_buildTagList();
- }
- { // tag menu bar
- GtkWidget* menu_tags = gtk_menu_new();
- GtkWidget* tags_item = (GtkWidget*)TextureBrowser_constructTagsMenu(GTK_MENU(menu_tags));
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(tags_item), menu_tags);
- gtk_menu_bar_append(GTK_MENU_BAR(menu_bar), tags_item);
- }
- { // Tag TreeView
- g_TextureBrowser.m_scr_win_tags = gtk_scrolled_window_new(NULL, NULL);
- gtk_container_set_border_width(GTK_CONTAINER(g_TextureBrowser.m_scr_win_tags), 0);
-
- // vertical only scrolling for treeview
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(g_TextureBrowser.m_scr_win_tags), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
-
- TextureBrowser_createTreeViewTags();
-
- GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(g_TextureBrowser.m_treeViewTags));
- gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (g_TextureBrowser.m_scr_win_tags), GTK_WIDGET (g_TextureBrowser.m_treeViewTags));
- gtk_widget_show(GTK_WIDGET(g_TextureBrowser.m_treeViewTags));
- }
- { // Texture/Tag notebook
- TextureBrowser_constructTagNotebook();
- gtk_box_pack_start(GTK_BOX(vbox), g_TextureBrowser.m_tag_notebook, TRUE, TRUE, 0);
- }
- { // Tag search button
- TextureBrowser_constructSearchButton();
- gtk_box_pack_end(GTK_BOX(vbox), g_TextureBrowser.m_search_button, FALSE, FALSE, 0);
- }
- { // Tag frame
- frame_table = gtk_table_new(3, 3, FALSE);
-
- g_TextureBrowser.m_tag_frame = gtk_frame_new("Tag assignment");
- gtk_frame_set_label_align(GTK_FRAME(g_TextureBrowser.m_tag_frame), 0.5, 0.5);
- gtk_frame_set_shadow_type(GTK_FRAME(g_TextureBrowser.m_tag_frame), GTK_SHADOW_NONE);
-
- gtk_table_attach(GTK_TABLE(table), g_TextureBrowser.m_tag_frame, 1, 3, 2, 3, GTK_FILL, GTK_SHRINK, 0, 0);
-
- gtk_widget_show(frame_table);
-
- gtk_container_add (GTK_CONTAINER(g_TextureBrowser.m_tag_frame), frame_table);
- }
- { // assigned tag list
- GtkWidget* scrolled_win = gtk_scrolled_window_new(NULL, NULL);
- gtk_container_set_border_width(GTK_CONTAINER (scrolled_win), 0);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);