struct _GtkItem;
struct _GtkLabel;
struct _GtkListStore;
+struct _GtkTreeIter;
struct _GtkMenu;
struct _GtkMenuBar;
struct _GtkMenuItem;
}
extern struct Null {} null;
+ extern struct New_t {} New;
class Object :
public details::Convertible<Object, _GtkObject *, details::Convert::Explicit>,
using native = _GtkObject *;
native _handle;
- Object(native h) : _handle(h)
+ explicit Object(native h) : _handle(h)
{}
explicit operator bool() const
using native = T *; \
explicit name(native h) : super(reinterpret_cast<super::native>(h)) {} \
explicit name(Null n) : name((native) nullptr) {} \
+ explicit name(New_t); \
static name from(void *ptr) { return name((native) ptr); } \
ctors \
}; \
);
WRAP(Editable, Object, _GtkEditable, (),
- Editable();
,
void editable(bool value);
);
// GObject
+ struct Dimensions {
+ int width;
+ int height;
+ };
+
WRAP(Widget, Object, _GtkWidget, (),
- Widget();
,
alert_response alert(
std::string text,
bool want_import = false,
bool want_save = false
);
+ bool visible();
+ void visible(bool shown);
void show();
+ void hide();
+ Dimensions dimensions();
+ void dimensions(int width, int height);
+ void destroy();
);
WRAP(Container, Widget, _GtkContainer, (),
class AccelGroup;
WRAP(Window, Bin, _GtkWindow, (),
- Window(window_type type);
+ explicit Window(window_type type);
,
Window create_dialog_window(
const char *title,
);
WRAP(Frame, Bin, _GtkFrame, (),
- Frame(const char *label = nullptr);
+ explicit Frame(const char *label = nullptr);
,
);
WRAP(Button, Bin, _GtkButton, (),
- Button();
- Button(const char *label);
+ explicit Button(const char *label);
,
);
);
WRAP(CheckButton, ToggleButton, _GtkCheckButton, (),
- CheckButton(const char *label);
+ explicit CheckButton(const char *label);
,
);
);
WRAP(MenuItem, Item, _GtkMenuItem, (),
- MenuItem();
- MenuItem(const char *label, bool mnemonic = false);
+ explicit MenuItem(const char *label, bool mnemonic = false);
,
);
);
WRAP(TearoffMenuItem, MenuItem, _GtkTearoffMenuItem, (),
- TearoffMenuItem();
,
);
);
WRAP(ComboBoxText, ComboBox, _GtkComboBoxText, (),
- ComboBoxText();
,
);
);
WRAP(ScrolledWindow, Bin, _GtkScrolledWindow, (),
- ScrolledWindow();
,
+ void overflow(Policy x, Policy y);
);
WRAP(Box, Container, _GtkBox, (),
);
WRAP(HPaned, Paned, _GtkHPaned, (),
- HPaned();
,
);
WRAP(VPaned, Paned, _GtkVPaned, (),
- VPaned();
,
);
);
WRAP(Menu, MenuShell, _GtkMenu, (),
- Menu();
,
);
);
WRAP(TextView, Container, _GtkTextView, (),
- TextView();
,
+ void text(char const *str);
);
WRAP(Toolbar, Container, _GtkToolbar, (),
class TreeModel;
WRAP(TreeView, Widget, _GtkTreeView, (),
- TreeView();
TreeView(TreeModel model);
,
);
);
WRAP(Label, Widget, _GtkLabel, (),
- Label(const char *label);
+ explicit Label(const char *label);
,
+ void text(char const *str);
);
WRAP(Image, Widget, _GtkImage, (),
- Image();
,
);
WRAP(Entry, Widget, _GtkEntry, (IEditable, ICellEditable),
- Entry();
- Entry(std::size_t max_length);
+ explicit Entry(std::size_t max_length);
,
+ char const *text();
+ void text(char const *str);
);
class Adjustment;
);
WRAP(HScale, Scale, _GtkHScale, (),
- HScale(Adjustment adjustment);
+ explicit HScale(Adjustment adjustment);
HScale(double min, double max, double step);
,
);
);
WRAP(CellRendererText, CellRenderer, _GtkCellRendererText, (),
- CellRendererText();
,
);
);
WRAP(AccelGroup, Object, _GtkAccelGroup, (),
- AccelGroup();
,
);
WRAP(ListStore, Object, _GtkListStore, (ITreeModel),
,
void clear();
+
+ template<class... T>
+ void append(T... args);
+
+ void append();
);
WRAP(TreeSelection, Object, _GtkTreeSelection, (),
// GBoxed
WRAP(TreePath, Object, _GtkTreePath, (),
- TreePath();
- TreePath(const char *path);
+ explicit TreePath(const char *path);
,
);
gtk_container_foreach(this, cb, &lambda);
}
+ namespace {
+ extern "C" {
+ void gtk_list_store_insert_with_values(_GtkListStore *, _GtkTreeIter *, gint position, ...);
+ }
+ }
+
+ template<class... T>
+ void IListStore::append(T... args) {
+ static_assert(sizeof...(args) % 2 == 0, "received an odd number of arguments");
+ gtk_list_store_insert_with_values(this, NULL, -1, args..., -1);
+ }
+
#undef this
}