coin-1.0: src/Coin/UI/Widgets/SimpleListView.hs
{-
* Programmer: Piotr Borek
* E-mail: piotrborek@op.pl
* Copyright 2015 Piotr Borek
*
* Distributed under the terms of the GPL (GNU Public License)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-}
module Coin.UI.Widgets.SimpleListView (
SimpleListView,
simpleListViewNew,
simpleListViewAppend,
simpleListViewAppendList,
simpleListViewClear,
simpleListViewToList
) where
import System.Glib.Types
import Graphics.UI.Gtk
import Control.Monad
data SimpleListView = SimpleListView {
simpleListViewContainer :: TreeView,
simpleListViewStore :: ListStore String
}
instance GObjectClass SimpleListView where
toGObject = toGObject . simpleListViewContainer
unsafeCastGObject = undefined
instance WidgetClass SimpleListView
instance ContainerClass SimpleListView
instance TreeViewClass SimpleListView
instance Eq SimpleListView where
a == b = simpleListViewContainer a == simpleListViewContainer b
simpleListViewNew :: [String] -> IO SimpleListView
simpleListViewNew list = do
store <- listStoreNew list
treeView <- treeViewNewWithModel store
when (treeView == treeView) $ return ()
column <- treeViewColumnNew
cell <- cellRendererTextNew
cellLayoutSetAttributes column cell store $ \row -> [ cellText := row ]
treeViewColumnPackStart column cell True
treeViewSetHeadersVisible treeView False
_ <- treeViewAppendColumn treeView column
return $ SimpleListView
treeView
store
simpleListViewAppend :: SimpleListView -> String -> IO Int
simpleListViewAppend simpleView text = listStoreAppend (simpleListViewStore simpleView) text
simpleListViewAppendList :: SimpleListView -> [String] -> IO ()
simpleListViewAppendList simpleView texts = forM_ texts $ simpleListViewAppend simpleView
simpleListViewClear :: SimpleListView -> IO ()
simpleListViewClear simpleView = listStoreClear (simpleListViewStore simpleView)
simpleListViewToList :: SimpleListView -> IO [String]
simpleListViewToList simpleView = listStoreToList (simpleListViewStore simpleView)