diff options
Diffstat (limited to 'src/Gtk/Widgets.icl')
-rw-r--r-- | src/Gtk/Widgets.icl | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl index f2c942f..0848122 100644 --- a/src/Gtk/Widgets.icl +++ b/src/Gtk/Widgets.icl @@ -127,6 +127,27 @@ framed label widgetf = widgetf >>= \widget -> tuple widget <$> newFrame label widget +:: GtkListStore :== Pointer + +newListStore :: ![GType] -> GtkM GtkListStore +newListStore types = toStateR (gtk_list_store_newv {toInt t \\ t <- types}) + +appendToListStore :: ![GValue] !GtkListStore -> GtkM GtkListStore +appendToListStore values store = + set 0 values (gtk_list_store_append store) >>| + pure store +where + set :: !Int ![GValue] !.{#Int} -> GtkM () + set col [v:vs] iter = set` >>| set (col+1) vs iter + where + set` = case v of + GValueBool b -> toState (gtk_list_store_set_bool store iter col b) + GValueChar c -> toState (gtk_list_store_set_char store iter col c) + GValueInt i -> toState (gtk_list_store_set_int store iter col i) + GValueReal r -> toState (gtk_list_store_set_real store iter col r) + GValueString s -> toState (gtk_list_store_set_string store iter col s) + set _ [] _ = pure () + :: GtkMenu :== Pointer instance gtkWidget GtkMenu where gtkWidget m = m @@ -308,6 +329,23 @@ where toState (gtk_text_view_set_wrap_mode text_view (toInt mode)) >>| pure text_view +:: GtkTreeView :== Pointer + +instance gtkWidget GtkTreeView where gtkWidget tv = tv + +newTreeView :: !GtkListStore -> GtkM GtkTreeView +newTreeView store = toStateR (gtk_tree_view_new_with_model store) >>= show + +appendColumnToTreeView :: !String !Int !GtkExpand !GtkTreeView -> GtkM GtkTreeView +appendColumnToTreeView title col expand tree_view = + toStateR gtk_cell_renderer_text_new >>= \renderer -> + toStateR gtk_tree_view_column_new >>= \column -> + toState (gtk_tree_view_column_set_title column title) >>| + toState (gtk_tree_view_column_pack_start column renderer expand=:Expand) >>| + toState (gtk_tree_view_column_add_attribute column renderer "text" col) >>| + toState (gtk_tree_view_append_column tree_view column) >>| + pure tree_view + :: GtkWidget :== Pointer instance gtkWidget GtkWidget where gtkWidget w = w |