-ui::Widget EntityInspector_constructWindow( ui::Window toplevel ){
- ui::Widget vbox = ui::VBox( FALSE, 2 );
- gtk_widget_show( vbox );
- gtk_container_set_border_width( GTK_CONTAINER( vbox ), 2 );
-
- g_signal_connect( G_OBJECT( vbox ), "destroy", G_CALLBACK( EntityInspector_destroyWindow ), 0 );
-
- {
- ui::Widget split1 = ui::VPaned();
- gtk_box_pack_start( GTK_BOX( vbox ), split1, TRUE, TRUE, 0 );
- gtk_widget_show( split1 );
-
- g_entity_split1 = split1;
-
- {
- ui::Widget split2 = ui::VPaned();
- gtk_paned_add1( GTK_PANED( split1 ), split2 );
- gtk_widget_show( split2 );
-
- g_entity_split2 = split2;
-
- {
- // class list
- ui::Widget scr = ui::ScrolledWindow();
- gtk_widget_show( scr );
- gtk_paned_add1( GTK_PANED( split2 ), scr );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
- gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
-
- {
- ui::ListStore store = ui::ListStore(gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_POINTER ));
-
- GtkTreeView* view = ui::TreeView( ui::TreeModel( GTK_TREE_MODEL( store ) ));
- gtk_tree_view_set_enable_search( GTK_TREE_VIEW( view ), FALSE );
- gtk_tree_view_set_headers_visible( view, FALSE );
- g_signal_connect( G_OBJECT( view ), "button_press_event", G_CALLBACK( EntityClassList_button_press ), 0 );
- g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( EntityClassList_keypress ), 0 );
-
- {
- auto renderer = ui::CellRendererText();
- GtkTreeViewColumn* column = ui::TreeViewColumn( "Key", renderer, {{"text", 0}} );
- gtk_tree_view_append_column( view, column );
- }
-
- {
- GtkTreeSelection* selection = gtk_tree_view_get_selection( view );
- g_signal_connect( G_OBJECT( selection ), "changed", G_CALLBACK( EntityClassList_selection_changed ), 0 );
- }
-
- gtk_widget_show( GTK_WIDGET( view ) );
-
- gtk_container_add( GTK_CONTAINER( scr ), GTK_WIDGET( view ) );
-
- g_object_unref( G_OBJECT( store ) );
- g_entityClassList = view;
- g_entlist_store = store;
- }
- }
-
- {
- ui::Widget scr = ui::ScrolledWindow();
- gtk_widget_show( scr );
- gtk_paned_add2( GTK_PANED( split2 ), scr );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );
- gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
-
- {
- GtkTextView* text = ui::TextView();
- gtk_widget_set_size_request( GTK_WIDGET( text ), 0, -1 ); // allow shrinking
- gtk_text_view_set_wrap_mode( text, GTK_WRAP_WORD );
- gtk_text_view_set_editable( text, FALSE );
- gtk_widget_show( GTK_WIDGET( text ) );
- gtk_container_add( GTK_CONTAINER( scr ), GTK_WIDGET( text ) );
- g_entityClassComment = text;
- }
- }
- }
-
- {
- ui::Widget split2 = ui::VPaned();
- gtk_paned_add2( GTK_PANED( split1 ), split2 );
- gtk_widget_show( split2 );
-
- {
- ui::Widget vbox2 = ui::VBox( FALSE, 2 );
- gtk_widget_show( vbox2 );
- gtk_paned_pack1( GTK_PANED( split2 ), vbox2, FALSE, FALSE );
-
- {
- // Spawnflags (4 colums wide max, or window gets too wide.)
- GtkTable* table = ui::Table( 4, 4, FALSE );
- gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( table ), FALSE, TRUE, 0 );
- gtk_widget_show( GTK_WIDGET( table ) );
-
- g_spawnflagsTable = table;
-
- for ( int i = 0; i < MAX_FLAGS; i++ )
- {
- GtkCheckButton* check = ui::CheckButton( "" );
- g_object_ref( GTK_WIDGET( check ) );
- g_object_set_data( G_OBJECT( check ), "handler", gint_to_pointer( g_signal_connect( G_OBJECT( check ), "toggled", G_CALLBACK( SpawnflagCheck_toggled ), 0 ) ) );
- g_entitySpawnflagsCheck[i] = check;
- }
- }
-
- {
- // key/value list
- ui::Widget scr = ui::ScrolledWindow();
- gtk_widget_show( scr );
- gtk_box_pack_start( GTK_BOX( vbox2 ), scr, TRUE, TRUE, 0 );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
- gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scr ), GTK_SHADOW_IN );
-
- {
- ui::ListStore store = ui::ListStore(gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_STRING ));
-
- ui::Widget view = ui::TreeView(ui::TreeModel( GTK_TREE_MODEL( store ) ));
- gtk_tree_view_set_enable_search( GTK_TREE_VIEW( view ), FALSE );
- gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
-
- {
- auto renderer = ui::CellRendererText();
- GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 0}} );
- gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
- }
-
- {
- auto renderer = ui::CellRendererText();
- GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 1}} );
- gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
- }
-
- {
- GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
- g_signal_connect( G_OBJECT( selection ), "changed", G_CALLBACK( EntityProperties_selection_changed ), 0 );
- }
-
- gtk_widget_show( view );
-
- gtk_container_add( GTK_CONTAINER( scr ), view );
-
- g_object_unref( G_OBJECT( store ) );
-
- g_entprops_store = store;
- }
- }
-
- {
- // key/value entry
- GtkTable* table = ui::Table( 2, 2, FALSE );
- gtk_widget_show( GTK_WIDGET( table ) );
- gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( table ), FALSE, TRUE, 0 );
- gtk_table_set_row_spacings( table, 3 );
- gtk_table_set_col_spacings( table, 5 );
-
- {
- GtkEntry* entry = ui::Entry();
- gtk_widget_show( GTK_WIDGET( entry ) );
- gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 0, 1,
- (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
- (GtkAttachOptions)( 0 ), 0, 0 );
- gtk_widget_set_events( GTK_WIDGET( entry ), GDK_KEY_PRESS_MASK );
- g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 );
- g_entityKeyEntry = entry;
- }
-
- {
- GtkEntry* entry = ui::Entry();
- gtk_widget_show( GTK_WIDGET( entry ) );
- gtk_table_attach( table, GTK_WIDGET( entry ), 1, 2, 1, 2,
- (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),
- (GtkAttachOptions)( 0 ), 0, 0 );
- gtk_widget_set_events( GTK_WIDGET( entry ), GDK_KEY_PRESS_MASK );
- g_signal_connect( G_OBJECT( entry ), "key_press_event", G_CALLBACK( EntityEntry_keypress ), 0 );
- g_entityValueEntry = entry;
- }
-
- {
- GtkLabel* label = GTK_LABEL( ui::Label( "Value" ) );
- gtk_widget_show( GTK_WIDGET( label ) );
- gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 1, 2,
- (GtkAttachOptions)( GTK_FILL ),
- (GtkAttachOptions)( 0 ), 0, 0 );
- gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
- }
-
- {
- GtkLabel* label = GTK_LABEL( ui::Label( "Key" ) );
- gtk_widget_show( GTK_WIDGET( label ) );
- gtk_table_attach( table, GTK_WIDGET( label ), 0, 1, 0, 1,
- (GtkAttachOptions)( GTK_FILL ),
- (GtkAttachOptions)( 0 ), 0, 0 );
- gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 );
- }
- }
-
- {
- GtkBox* hbox = ui::HBox( TRUE, 4 );
- gtk_widget_show( GTK_WIDGET( hbox ) );
- gtk_box_pack_start( GTK_BOX( vbox2 ), GTK_WIDGET( hbox ), FALSE, TRUE, 0 );
-
- {
- GtkButton* button = ui::Button( "Clear All" );
- gtk_widget_show( GTK_WIDGET( button ) );
- g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( EntityInspector_clearAllKeyValues ), 0 );
- gtk_box_pack_start( hbox, GTK_WIDGET( button ), TRUE, TRUE, 0 );
- }
- {
- GtkButton* button = ui::Button( "Delete Key" );
- gtk_widget_show( GTK_WIDGET( button ) );
- g_signal_connect( G_OBJECT( button ), "clicked", G_CALLBACK( EntityInspector_clearKeyValue ), 0 );
- gtk_box_pack_start( hbox, GTK_WIDGET( button ), TRUE, TRUE, 0 );
- }
- }
- }
-
- {
- ui::Widget scr = ui::ScrolledWindow();
- gtk_widget_show( scr );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scr ), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
-
- ui::Widget viewport = ui::Widget(gtk_viewport_new( 0, 0 ));
- gtk_widget_show( viewport );
- gtk_viewport_set_shadow_type( GTK_VIEWPORT( viewport ), GTK_SHADOW_NONE );
-
- g_attributeBox = ui::VBox( FALSE, 2 );
- gtk_widget_show( GTK_WIDGET( g_attributeBox ) );
-
- gtk_container_add( GTK_CONTAINER( viewport ), GTK_WIDGET( g_attributeBox ) );
- gtk_container_add( GTK_CONTAINER( scr ), viewport );
- gtk_paned_pack2( GTK_PANED( split2 ), scr, FALSE, FALSE );
- }
- }
- }
-
-
- {
- // show the sliders in any case
- if ( g_entitysplit2_position > 22 ) {
- gtk_paned_set_position( GTK_PANED( g_entity_split2 ), g_entitysplit2_position );
- }
- else {
- g_entitysplit2_position = 22;
- gtk_paned_set_position( GTK_PANED( g_entity_split2 ), 22 );
- }
- if ( ( g_entitysplit1_position - g_entitysplit2_position ) > 27 ) {
- gtk_paned_set_position( GTK_PANED( g_entity_split1 ), g_entitysplit1_position );
- }
- else {
- gtk_paned_set_position( GTK_PANED( g_entity_split1 ), g_entitysplit2_position + 27 );
- }
- }
-
- g_entityInspector_windowConstructed = true;
- EntityClassList_fill();
-
- typedef FreeCaller1<const Selectable&, EntityInspector_selectionChanged> EntityInspectorSelectionChangedCaller;
- GlobalSelectionSystem().addSelectionChangeCallback( EntityInspectorSelectionChangedCaller() );
- GlobalEntityCreator().setKeyValueChangedFunc( EntityInspector_keyValueChanged );
-
- // hack
- gtk_container_set_focus_chain( GTK_CONTAINER( vbox ), NULL );
-
- return vbox;