diff --git a/data/Gtk/builder.xml b/data/Gtk/builder.xml index 450d9d3..c55347b 100644 --- a/data/Gtk/builder.xml +++ b/data/Gtk/builder.xml @@ -2,6 +2,70 @@ + + True + False + + + gtk-open + True + False + True + True + + + + + gtk-execute + True + False + True + True + + + + + True + False + + + + + gtk-cut + True + False + True + True + + + + + gtk-copy + True + False + True + True + + + + + gtk-paste + True + False + True + True + + + + + gtk-delete + True + False + True + True + + + False diff --git a/src/GUI/Gtk.hs b/src/GUI/Gtk.hs index 8386b94..ba56c39 100644 --- a/src/GUI/Gtk.hs +++ b/src/GUI/Gtk.hs @@ -167,6 +167,20 @@ startMainWindow startdir = do "urlBar" statusBar <- builderGetObject builder castToStatusbar "statusBar" + rcMenu <- builderGetObject builder castToMenu + "rcMenu" + rcFileOpen <- builderGetObject builder castToImageMenuItem + "rcFileOpen" + rcFileExecute <- builderGetObject builder castToImageMenuItem + "rcFileExecute" + rcFileCut <- builderGetObject builder castToImageMenuItem + "rcFileCut" + rcFileCopy <- builderGetObject builder castToImageMenuItem + "rcFileCopy" + rcFilePaste <- builderGetObject builder castToImageMenuItem + "rcFilePaste" + rcFileDelete <- builderGetObject builder castToImageMenuItem + "rcFileDelete" -- create initial list store model with unsorted data rawModel <- newTVarIO =<< listStoreNew diff --git a/src/GUI/Gtk/Callbacks.hs b/src/GUI/Gtk/Callbacks.hs index f0b995a..148e0e2 100644 --- a/src/GUI/Gtk/Callbacks.hs +++ b/src/GUI/Gtk/Callbacks.hs @@ -110,6 +110,28 @@ setCallbacks mygui myview = do _ <- menubarEditCut mygui `on` menuItemActivated $ liftIO $ withRow mygui myview moveInit + -- righ-click + _ <- treeView mygui `on` buttonPressEvent $ do + eb <- eventButton + t <- eventTime + case eb of + RightButton -> liftIO $ menuPopup (rcMenu mygui) $ Just (RightButton, t) + _ -> return () + return False + _ <- rcFileOpen mygui `on` menuItemActivated $ + liftIO $ withRow mygui myview open + _ <- rcFileExecute mygui `on` menuItemActivated $ + liftIO $ withRow mygui myview execute + _ <- rcFileCopy mygui `on` menuItemActivated $ + liftIO $ withRow mygui myview copyInit + _ <- rcFilePaste mygui `on` menuItemActivated $ + liftIO $ operationFinal mygui myview + _ <- rcFileDelete mygui `on` menuItemActivated $ + liftIO $ withRow mygui myview del + _ <- rcFileCut mygui `on` menuItemActivated $ + liftIO $ withRow mygui myview moveInit + + return () diff --git a/src/GUI/Gtk/Data.hs b/src/GUI/Gtk/Data.hs index 34c42f7..a6d4c12 100644 --- a/src/GUI/Gtk/Data.hs +++ b/src/GUI/Gtk/Data.hs @@ -34,6 +34,13 @@ data MyGUI = MkMyGUI { , menubarEditPaste :: ImageMenuItem , menubarEditDelete :: ImageMenuItem , menubarHelpAbout :: ImageMenuItem + , rcMenu :: Menu + , rcFileOpen :: ImageMenuItem + , rcFileExecute :: ImageMenuItem + , rcFileCut :: ImageMenuItem + , rcFileCopy :: ImageMenuItem + , rcFilePaste :: ImageMenuItem + , rcFileDelete :: ImageMenuItem , urlBar :: Entry , statusBar :: Statusbar , treeView :: TreeView