+ auto vbox2 = ui::VBox(FALSE, 2);
+ vbox2.show();
+ gtk_paned_pack1(GTK_PANED(split2), vbox2, FALSE, FALSE);
+
+ {
+ // Spawnflags (4 colums wide max, or window gets too wide.)
+ auto table = ui::Table(4, 4, FALSE);
+ vbox2.pack_start(table, FALSE, TRUE, 0);
+ table.show();
+
+ g_spawnflagsTable = table;
+
+ for (int i = 0; i < MAX_FLAGS; i++) {
+ auto check = ui::CheckButton("");
+ check.ref();
+ g_object_set_data(G_OBJECT(check), "handler", gint_to_pointer(
+ check.connect("toggled", G_CALLBACK(SpawnflagCheck_toggled), 0)));
+ g_entitySpawnflagsCheck[i] = check;
+ }
+ }
+
+ {
+ // key/value list
+ auto scr = ui::ScrolledWindow(ui::New);
+ scr.show();
+ vbox2.pack_start(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::from(gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING));
+
+ auto view = ui::TreeView(ui::TreeModel::from(store._handle));
+ gtk_tree_view_set_enable_search(view, FALSE);
+ gtk_tree_view_set_headers_visible(view, FALSE);
+
+ {
+ auto renderer = ui::CellRendererText(ui::New);
+ auto column = ui::TreeViewColumn("", renderer, {{"text", 0}});
+ gtk_tree_view_append_column(view, column);
+ }
+
+ {
+ auto renderer = ui::CellRendererText(ui::New);
+ auto column = ui::TreeViewColumn("", renderer, {{"text", 1}});
+ gtk_tree_view_append_column(view, column);
+ }
+
+ {
+ auto selection = ui::TreeSelection::from(gtk_tree_view_get_selection(view));
+ selection.connect("changed", G_CALLBACK(EntityProperties_selection_changed), 0);
+ }
+
+ view.show();
+
+ scr.add(view);
+
+ store.unref();
+
+ g_entprops_store = store;
+ }
+ }
+
+ {
+ // key/value entry
+ auto table = ui::Table(2, 2, FALSE);
+ table.show();
+ vbox2.pack_start(table, FALSE, TRUE, 0);
+ gtk_table_set_row_spacings(table, 3);
+ gtk_table_set_col_spacings(table, 5);
+
+ {
+ auto entry = ui::Entry(ui::New);
+ entry.show();
+ table.attach(entry, {1, 2, 0, 1}, {GTK_EXPAND | GTK_FILL, 0});
+ gtk_widget_set_events(entry, GDK_KEY_PRESS_MASK);
+ entry.connect("key_press_event", G_CALLBACK(EntityEntry_keypress), 0);
+ g_entityKeyEntry = entry;
+ }
+
+ {
+ auto entry = ui::Entry(ui::New);
+ entry.show();
+ table.attach(entry, {1, 2, 1, 2}, {GTK_EXPAND | GTK_FILL, 0});
+ gtk_widget_set_events(entry, GDK_KEY_PRESS_MASK);
+ entry.connect("key_press_event", G_CALLBACK(EntityEntry_keypress), 0);
+ g_entityValueEntry = entry;
+ }
+
+ {
+ auto label = ui::Label("Value");
+ label.show();
+ table.attach(label, {0, 1, 1, 2}, {GTK_FILL, 0});
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ }
+
+ {
+ auto label = ui::Label("Key");
+ label.show();
+ table.attach(label, {0, 1, 0, 1}, {GTK_FILL, 0});
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ }
+ }
+
+ {
+ auto hbox = ui::HBox(TRUE, 4);
+ hbox.show();
+ vbox2.pack_start(hbox, FALSE, TRUE, 0);
+
+ {
+ auto button = ui::Button("Clear All");
+ button.show();
+ button.connect("clicked", G_CALLBACK(EntityInspector_clearAllKeyValues), 0);
+ hbox.pack_start(button, TRUE, TRUE, 0);
+ }
+ {
+ auto button = ui::Button("Delete Key");
+ button.show();
+ button.connect("clicked", G_CALLBACK(EntityInspector_clearKeyValue), 0);
+ hbox.pack_start(button, TRUE, TRUE, 0);
+ }
+ }