]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/uilib/uilib.h
Wrap GtkTextView
[xonotic/netradiant.git] / libs / uilib / uilib.h
index d42428a00c1bf4da0886357a9a6be6577ed13759..3afaa0cb55ae357fefa0a28c52364dd8c462bf9f 100644 (file)
@@ -3,28 +3,38 @@
 
 #include <string>
 
+using ui_accelgroup = struct _GtkAccelGroup;
 using ui_adjustment = struct _GtkAdjustment;
 using ui_alignment = struct _GtkAlignment;
 using ui_box = struct _GtkBox;
 using ui_button = struct _GtkButton;
 using ui_checkbutton = struct _GtkCheckButton;
+using ui_combobox = struct _GtkComboBox;
 using ui_cellrenderer = struct _GtkCellRenderer;
 using ui_cellrenderertext = struct _GtkCellRendererText;
 using ui_entry = struct _GtkEntry;
 using ui_evkey = struct _GdkEventKey;
+using ui_frame = struct _GtkFrame;
 using ui_hbox = struct _GtkHBox;
+using ui_hpaned = struct _GtkHPaned;
+using ui_image = struct _GtkImage;
 using ui_label = struct _GtkLabel;
 using ui_menu = struct _GtkMenu;
 using ui_menuitem = struct _GtkMenuItem;
 using ui_modal = struct ModalDialog;
 using ui_object = struct _GtkObject;
+using ui_paned = struct _GtkPaned;
 using ui_scrolledwindow = struct _GtkScrolledWindow;
 using ui_spinbutton = struct _GtkSpinButton;
 using ui_table = struct _GtkTable;
+using ui_textview = struct _GtkTextView;
 using ui_treemodel = struct _GtkTreeModel;
+using ui_treepath = struct _GtkTreePath;
 using ui_treeview = struct _GtkTreeView;
+using ui_treeviewcolumn = struct _GtkTreeViewColumn;
 using ui_typeinst = struct _GTypeInstance;
 using ui_vbox = struct _GtkVBox;
+using ui_vpaned = struct _GtkVPaned;
 using ui_widget = struct _GtkWidget;
 using ui_window = struct _GtkWindow;
 
@@ -57,6 +67,11 @@ namespace ui {
         NO,
     };
 
+    enum class window_type {
+        TOP,
+        POPUP
+    };
+
     template<class Self, class T, bool implicit = true>
     struct Convertible;
 
@@ -74,6 +89,7 @@ namespace ui {
 
     class Object : public Convertible<Object, ui_object, false> {
     public:
+        using native = ui_object;
         void *_handle;
 
         Object(void *h) : _handle(h)
@@ -118,6 +134,10 @@ namespace ui {
     }; \
     static_assert(sizeof(name) == sizeof(super), "object slicing")
 
+    WRAP(AccelGroup, Object, ui_accelgroup,
+         AccelGroup();
+    );
+
     WRAP(Adjustment, Widget, ui_adjustment,
          Adjustment(double value,
                     double lower, double upper,
@@ -136,7 +156,7 @@ namespace ui {
          Button(const char *label);
     );
 
-    WRAP(CellRenderer, Widget, ui_cellrenderer,);
+    WRAP(CellRenderer, Object, ui_cellrenderer,);
 
     WRAP(CellRendererText, CellRenderer, ui_cellrenderertext,
          CellRendererText();
@@ -146,15 +166,27 @@ namespace ui {
          CheckButton(const char *label);
     );
 
+    WRAP(ComboBox, Widget, ui_combobox,);
+
+    ComboBox ComboBoxText();
+
     WRAP(Entry, Widget, ui_entry,
          Entry();
          Entry(std::size_t max_length);
     );
 
+    WRAP(Frame, Widget, ui_frame,
+         Frame(const char *label = nullptr);
+    );
+
     WRAP(HBox, Box, ui_hbox,
          HBox(bool homogenous, int spacing);
     );
 
+    WRAP(Image, Widget, ui_image,
+         Image();
+    );
+
     WRAP(Label, Widget, ui_label,
          Label(const char *label);
     );
@@ -167,6 +199,16 @@ namespace ui {
          MenuItem(const char *label, bool mnemonic = false);
     );
 
+    WRAP(Paned, Widget, ui_paned,);
+
+        WRAP(HPaned, Paned, ui_hpaned,
+             HPaned();
+        );
+
+        WRAP(VPaned, Paned, ui_vpaned,
+             VPaned();
+        );
+
     WRAP(ScrolledWindow, Widget, ui_scrolledwindow,
          ScrolledWindow();
     );
@@ -179,18 +221,37 @@ namespace ui {
          Table(std::size_t rows, std::size_t columns, bool homogenous);
     );
 
+    WRAP(TextView, Widget, ui_textview,
+         TextView();
+    );
+
     WRAP(TreeModel, Widget, ui_treemodel,);
 
+    WRAP(TreePath, Object, ui_treepath,
+         TreePath();
+         TreePath(const char *path);
+    );
+
     WRAP(TreeView, Widget, ui_treeview,
+         TreeView();
          TreeView(TreeModel model);
     );
 
+    struct TreeViewColumnAttribute {
+        const char *attribute;
+        int column;
+    };
+    WRAP(TreeViewColumn, Widget, ui_treeviewcolumn,
+         TreeViewColumn(const char *title, CellRenderer renderer, std::initializer_list<TreeViewColumnAttribute> attributes);
+    );
+
     WRAP(VBox, Box, ui_vbox,
          VBox(bool homogenous, int spacing);
     );
 
     WRAP(Window, Widget, ui_window,
          Window() : Window(nullptr) {};
+         Window(window_type type);
 
          Window create_dialog_window(const char *title, void func(), void *data, int default_w = -1,
                                      int default_h = -1);