diff --git a/data/Gtk/builder.xml b/data/Gtk/builder.xml
index 40990f3..6e57043 100644
--- a/data/Gtk/builder.xml
+++ b/data/Gtk/builder.xml
@@ -7,88 +7,6 @@
False
gtk-edit
-
+
+
diff --git a/src/HSFM/GUI/Gtk/Callbacks.hs b/src/HSFM/GUI/Gtk/Callbacks.hs
index 7fbea36..4e1aa78 100644
--- a/src/HSFM/GUI/Gtk/Callbacks.hs
+++ b/src/HSFM/GUI/Gtk/Callbacks.hs
@@ -206,8 +206,10 @@ setCallbacks mygui myview = do
liftIO $ withItems mygui myview open
_ <- rcFileExecute mygui `on` menuItemActivated $
liftIO $ withItems mygui myview execute
- _ <- rcFileNew mygui `on` menuItemActivated $
+ _ <- rcFileNewRegFile mygui `on` menuItemActivated $
liftIO $ newFile mygui myview
+ _ <- rcFileNewDir mygui `on` menuItemActivated $
+ liftIO $ newDir mygui myview
_ <- rcFileCopy mygui `on` menuItemActivated $
liftIO $ withItems mygui myview copyInit
_ <- rcFileRename mygui `on` menuItemActivated $
@@ -353,7 +355,7 @@ upDir mygui myview = withErrorDialog $ do
refreshView' mygui myview nv
--- |Go up one directory and visualize it in the treeView.
+-- |Create a new file.
newFile :: MyGUI -> MyView -> IO ()
newFile _ myview = withErrorDialog $ do
mfn <- textInputDialog "Enter file name"
@@ -363,6 +365,16 @@ newFile _ myview = withErrorDialog $ do
createFile cdir fn
+-- |Create a new directory.
+newDir :: MyGUI -> MyView -> IO ()
+newDir _ myview = withErrorDialog $ do
+ mfn <- textInputDialog "Enter directory name"
+ let pmfn = P.parseFn =<< P.userStringToFP <$> mfn
+ for_ pmfn $ \fn -> do
+ cdir <- getCurrentDir myview
+ createDir cdir fn
+
+
renameF :: [Item] -> MyGUI -> MyView -> IO ()
renameF [item] _ _ = withErrorDialog $ do
mfn <- textInputDialog "Enter new file name"
diff --git a/src/HSFM/GUI/Gtk/Data.hs b/src/HSFM/GUI/Gtk/Data.hs
index 0c3cfbd..0072223 100644
--- a/src/HSFM/GUI/Gtk/Data.hs
+++ b/src/HSFM/GUI/Gtk/Data.hs
@@ -66,7 +66,8 @@ data MyGUI = MkMyGUI {
, rcMenu :: Menu
, rcFileOpen :: ImageMenuItem
, rcFileExecute :: ImageMenuItem
- , rcFileNew :: ImageMenuItem
+ , rcFileNewRegFile :: ImageMenuItem
+ , rcFileNewDir :: ImageMenuItem
, rcFileCut :: ImageMenuItem
, rcFileCopy :: ImageMenuItem
, rcFileRename :: ImageMenuItem
diff --git a/src/HSFM/GUI/Gtk/MyGUI.hs b/src/HSFM/GUI/Gtk/MyGUI.hs
index 49bbed3..6939d4a 100644
--- a/src/HSFM/GUI/Gtk/MyGUI.hs
+++ b/src/HSFM/GUI/Gtk/MyGUI.hs
@@ -87,8 +87,10 @@ createMyGUI = do
"rcFileOpen"
rcFileExecute <- builderGetObject builder castToImageMenuItem
"rcFileExecute"
- rcFileNew <- builderGetObject builder castToImageMenuItem
- "rcFileNew"
+ rcFileNewRegFile <- builderGetObject builder castToImageMenuItem
+ "rcFileNewRegFile"
+ rcFileNewDir <- builderGetObject builder castToImageMenuItem
+ "rcFileNewDir"
rcFileCut <- builderGetObject builder castToImageMenuItem
"rcFileCut"
rcFileCopy <- builderGetObject builder castToImageMenuItem