From fc5d54decf344a3104a6c46641b93ea2f7319a62 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 12 Dec 2019 14:59:47 +0100 Subject: Add GtkSortable for TreeView columns --- src/Gtk/Internal.dcl | 1 + src/Gtk/Internal.icl | 5 +++++ src/Gtk/Types.dcl | 4 ++++ src/Gtk/Widgets.dcl | 6 +++--- src/Gtk/Widgets.icl | 5 +++-- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Gtk/Internal.dcl b/src/Gtk/Internal.dcl index bd37efa..8c9da9e 100644 --- a/src/Gtk/Internal.dcl +++ b/src/Gtk/Internal.dcl @@ -160,6 +160,7 @@ gtk_tree_selection_select_iter :: !Pointer !{#Int} !.a -> .a gtk_tree_view_column_add_attribute :: !Pointer !Pointer !String !Int !.a -> .a gtk_tree_view_column_new :: !.a -> (!Pointer, !.a) gtk_tree_view_column_pack_start :: !Pointer !Pointer !Bool !.a -> .a +gtk_tree_view_column_set_sort_column_id :: !Pointer !Int !.a -> .a gtk_tree_view_column_set_title :: !Pointer !String !.a -> .a gtk_tree_view_append_column :: !Pointer !Pointer !.a -> .a diff --git a/src/Gtk/Internal.icl b/src/Gtk/Internal.icl index 89546ba..b92d3d8 100644 --- a/src/Gtk/Internal.icl +++ b/src/Gtk/Internal.icl @@ -718,6 +718,11 @@ gtk_tree_view_column_pack_start column renderer expand env = code { ccall gtk_tree_view_column_pack_start "ppI:V:A" } +gtk_tree_view_column_set_sort_column_id :: !Pointer !Int !.a -> .a +gtk_tree_view_column_set_sort_column_id column id env = code { + ccall gtk_tree_view_column_set_sort_column_id "pI:V:A" +} + gtk_tree_view_column_set_title :: !Pointer !String !.a -> .a gtk_tree_view_column_set_title column title env = set column (packString title) env where diff --git a/src/Gtk/Types.dcl b/src/Gtk/Types.dcl index 62b925c..dfbde91 100644 --- a/src/Gtk/Types.dcl +++ b/src/Gtk/Types.dcl @@ -201,6 +201,10 @@ instance toInt GtkScrollbarPolicy :: GtkSizeRequest =: GtkSizeRequest (!Int,!Int) +:: GtkSortable + = Sortable + | NotSortable + :: GtkSpacing =: Spacing Int :: GtkStylePriority diff --git a/src/Gtk/Widgets.dcl b/src/Gtk/Widgets.dcl index a9cb44c..27d5677 100644 --- a/src/Gtk/Widgets.dcl +++ b/src/Gtk/Widgets.dcl @@ -29,8 +29,8 @@ from Gtk.Types import :: GtkLineSpacingModifier, :: GtkMargins, :: GtkMarkup, :: GtkMessageType, :: GtkModal, :: GtkOrientation, :: GtkPanedHandleWidth, :: GtkResize, :: GtkResponse, :: GtkScrollbarPolicy, :: GtkSensitivity, :: GtkShrink, - :: GtkSizeRequest, :: GtkSpacing, :: GtkStylePriority, :: GtkText, - :: GtkTitle, :: GtkWrapMode + :: GtkSizeRequest, :: GtkSortable, :: GtkSpacing, :: GtkStylePriority, + :: GtkText, :: GtkTitle, :: GtkWrapMode /** * A `GtkAccelGroup` is needed for a `GtkAccelerator`. 'Accelerator' is Gtk's @@ -365,7 +365,7 @@ newTreeView :: !GtkListStore -> GtkM GtkTreeView * the column index in the list store that is shown. When `Expand` is used, * excess space of the tree view is (partially) given to this column. */ -appendColumnToTreeView :: !String !Int !GtkExpand !GtkTreeView -> GtkM GtkTreeView +appendColumnToTreeView :: !String !Int !GtkSortable !GtkExpand !GtkTreeView -> GtkM GtkTreeView //* Add a signal handler for the event that the user selects a different row. addSelectionChangedHandler :: !(GtkM ()) !GtkTreeView -> GtkM GtkTreeView diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl index 4fec8d4..d4f53a4 100644 --- a/src/Gtk/Widgets.icl +++ b/src/Gtk/Widgets.icl @@ -540,13 +540,14 @@ newTreeView (GtkListStore s) = toState (g_object_unref s) >>| show (GtkTreeView view) -appendColumnToTreeView :: !String !Int !GtkExpand !GtkTreeView -> GtkM GtkTreeView -appendColumnToTreeView title col expand tree=:(GtkTreeView tv) = +appendColumnToTreeView :: !String !Int !GtkSortable !GtkExpand !GtkTreeView -> GtkM GtkTreeView +appendColumnToTreeView title col sortable expand tree=:(GtkTreeView tv) = 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) >>| + if (sortable=:Sortable) (toState (gtk_tree_view_column_set_sort_column_id column col)) (pure ()) >>| toState (gtk_tree_view_append_column tv column) >>| pure tree -- cgit v1.2.3