Lastest docs updated

travis build: 17
commit: 7fef11ecd2
auto-pushed to gh-pages
This commit is contained in:
travis-ci 2016-06-01 18:06:00 +00:00
parent 4fac84dde4
commit b97befe681
21 changed files with 521 additions and 532 deletions

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,6 @@ window.onload = function () {pageLoad();setSynopsis("mini_HSFM-FileSystem-UtilTy
the result is undefined if another process changes that context
while the non-atomic operation is still happening. However, where
possible, as few syscalls as possible are used and the underlying
exception handling is kept.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:FileOperation">FileOperation</a><ul class="subs"><li>= <a href="#v:FCopy">FCopy</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Copy">Copy</a></li><li>| <a href="#v:FMove">FMove</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Move">Move</a></li><li>| <a href="#v:FDelete">FDelete</a> [Path Abs]</li><li>| <a href="#v:FOpen">FOpen</a> (Path Abs)</li><li>| <a href="#v:FExecute">FExecute</a> (Path Abs) [<a href="https://hackage.haskell.org/package/utf8-string-0.3.7/docs/Data-ByteString-UTF8.html#t:ByteString">ByteString</a>]</li><li>| <a href="#v:None">None</a></li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Copy">Copy</a><ul class="subs"><li>= <a href="#v:PartialCopy">PartialCopy</a> [Path Abs]</li><li>| <a href="#v:Copy">Copy</a> [Path Abs] (Path Abs)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Move">Move</a><ul class="subs"><li>= <a href="#v:PartialMove">PartialMove</a> [Path Abs]</li><li>| <a href="#v:Move">Move</a> [Path Abs] (Path Abs)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:FCollisonMode">FCollisonMode</a><ul class="subs"><li>= <a href="#v:Strict">Strict</a></li><li>| <a href="#v:Overwrite">Overwrite</a></li><li>| <a href="#v:OverwriteAll">OverwriteAll</a></li><li>| <a href="#v:Skip">Skip</a></li><li>| <a href="#v:Rename">Rename</a> (Path Fn)</li></ul></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FileOperation" class="def">FileOperation</a> <a href="src/HSFM-FileSystem-UtilTypes.html#FileOperation" class="link">Source</a> <a href="#t:FileOperation" class="selflink">#</a></p><div class="doc"><p>Data type describing file operations.
Useful to build up a list of operations or delay operations.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:FCopy" class="def">FCopy</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Copy">Copy</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FMove" class="def">FMove</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Move">Move</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FDelete" class="def">FDelete</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FOpen" class="def">FOpen</a> (Path Abs)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FExecute" class="def">FExecute</a> (Path Abs) [<a href="https://hackage.haskell.org/package/utf8-string-0.3.7/docs/Data-ByteString-UTF8.html#t:ByteString">ByteString</a>]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:None" class="def">None</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Copy" class="def">Copy</a> <a href="src/HSFM-FileSystem-UtilTypes.html#Copy" class="link">Source</a> <a href="#t:Copy" class="selflink">#</a></p><div class="doc"><p>Data type describing partial or complete file copy operation.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:PartialCopy" class="def">PartialCopy</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Copy" class="def">Copy</a> [Path Abs] (Path Abs)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Move" class="def">Move</a> <a href="src/HSFM-FileSystem-UtilTypes.html#Move" class="link">Source</a> <a href="#t:Move" class="selflink">#</a></p><div class="doc"><p>Data type describing partial or complete file move operation.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:PartialMove" class="def">PartialMove</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Move" class="def">Move</a> [Path Abs] (Path Abs)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FCollisonMode" class="def">FCollisonMode</a> <a href="src/HSFM-FileSystem-UtilTypes.html#FCollisonMode" class="link">Source</a> <a href="#t:FCollisonMode" class="selflink">#</a></p><div class="doc"><p>Collision modes that describe the behavior in case a file collision
exception handling is kept.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:FileOperation">FileOperation</a><ul class="subs"><li>= <a href="#v:FCopy">FCopy</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Copy">Copy</a></li><li>| <a href="#v:FMove">FMove</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Move">Move</a></li><li>| <a href="#v:FDelete">FDelete</a> [Path Abs]</li><li>| <a href="#v:FOpen">FOpen</a> (Path Abs)</li><li>| <a href="#v:FExecute">FExecute</a> (Path Abs) [<a href="https://hackage.haskell.org/package/bytestring-0.10.8.1/docs/Data-ByteString.html#t:ByteString">ByteString</a>]</li><li>| <a href="#v:None">None</a></li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Copy">Copy</a><ul class="subs"><li>= <a href="#v:PartialCopy">PartialCopy</a> [Path Abs]</li><li>| <a href="#v:Copy">Copy</a> [Path Abs] (Path Abs)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:Move">Move</a><ul class="subs"><li>= <a href="#v:PartialMove">PartialMove</a> [Path Abs]</li><li>| <a href="#v:Move">Move</a> [Path Abs] (Path Abs)</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:FCollisonMode">FCollisonMode</a><ul class="subs"><li>= <a href="#v:Strict">Strict</a></li><li>| <a href="#v:Overwrite">Overwrite</a></li><li>| <a href="#v:OverwriteAll">OverwriteAll</a></li><li>| <a href="#v:Skip">Skip</a></li><li>| <a href="#v:Rename">Rename</a> (Path Fn)</li></ul></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FileOperation" class="def">FileOperation</a> <a href="src/HSFM-FileSystem-UtilTypes.html#FileOperation" class="link">Source</a> <a href="#t:FileOperation" class="selflink">#</a></p><div class="doc"><p>Data type describing file operations.
Useful to build up a list of operations or delay operations.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:FCopy" class="def">FCopy</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Copy">Copy</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FMove" class="def">FMove</a> <a href="HSFM-FileSystem-UtilTypes.html#t:Move">Move</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FDelete" class="def">FDelete</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FOpen" class="def">FOpen</a> (Path Abs)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:FExecute" class="def">FExecute</a> (Path Abs) [<a href="https://hackage.haskell.org/package/bytestring-0.10.8.1/docs/Data-ByteString.html#t:ByteString">ByteString</a>]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:None" class="def">None</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Copy" class="def">Copy</a> <a href="src/HSFM-FileSystem-UtilTypes.html#Copy" class="link">Source</a> <a href="#t:Copy" class="selflink">#</a></p><div class="doc"><p>Data type describing partial or complete file copy operation.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:PartialCopy" class="def">PartialCopy</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Copy" class="def">Copy</a> [Path Abs] (Path Abs)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Move" class="def">Move</a> <a href="src/HSFM-FileSystem-UtilTypes.html#Move" class="link">Source</a> <a href="#t:Move" class="selflink">#</a></p><div class="doc"><p>Data type describing partial or complete file move operation.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:PartialMove" class="def">PartialMove</a> [Path Abs]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Move" class="def">Move</a> [Path Abs] (Path Abs)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:FCollisonMode" class="def">FCollisonMode</a> <a href="src/HSFM-FileSystem-UtilTypes.html#FCollisonMode" class="link">Source</a> <a href="#t:FCollisonMode" class="selflink">#</a></p><div class="doc"><p>Collision modes that describe the behavior in case a file collision
happens.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Strict" class="def">Strict</a></td><td class="doc"><p>fail if the target already exists</p></td></tr><tr><td class="src"><a id="v:Overwrite" class="def">Overwrite</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:OverwriteAll" class="def">OverwriteAll</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Skip" class="def">Skip</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Rename" class="def">Rename</a> (Path Fn)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.GUI.Gtk.Callbacks.Utils</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-GUI-Gtk-Callbacks-Utils.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Callbacks.Utils</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:doFileOperation">doFileOperation</a> :: <a href="HSFM-FileSystem-UtilTypes.html#t:FileOperation">FileOperation</a> -&gt; IO ()</li><li class="src short"><a href="#v:_doFileOperation">_doFileOperation</a> :: [Path b1] -&gt; Path Abs -&gt; (Path b1 -&gt; Path Abs -&gt; IO b) -&gt; (Path b1 -&gt; Path Abs -&gt; IO a) -&gt; IO () -&gt; IO ()</li><li class="src short"><a href="#v:goDir">goDir</a> :: <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:MyView">MyView</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:Item">Item</a> -&gt; IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:doFileOperation" class="def">doFileOperation</a> :: <a href="HSFM-FileSystem-UtilTypes.html#t:FileOperation">FileOperation</a> -&gt; IO () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#doFileOperation" class="link">Source</a> <a href="#v:doFileOperation" class="selflink">#</a></p><div class="doc"><p>Carries out a file operation with the appropriate error handling
allowing the user to react to various exceptions with further input.</p></div></div><div class="top"><p class="src"><a id="v:_doFileOperation" class="def">_doFileOperation</a> :: [Path b1] -&gt; Path Abs -&gt; (Path b1 -&gt; Path Abs -&gt; IO b) -&gt; (Path b1 -&gt; Path Abs -&gt; IO a) -&gt; IO () -&gt; IO () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#_doFileOperation" class="link">Source</a> <a href="#v:_doFileOperation" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:goDir" class="def">goDir</a> :: <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:MyView">MyView</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:Item">Item</a> -&gt; IO () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#goDir" class="link">Source</a> <a href="#v:goDir" class="selflink">#</a></p><div class="doc"><p>Helper that is invoked for any directory change operations.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Callbacks.Utils</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:doFileOperation">doFileOperation</a> :: <a href="HSFM-FileSystem-UtilTypes.html#t:FileOperation">FileOperation</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:_doFileOperation">_doFileOperation</a> :: [Path b1] -&gt; Path Abs -&gt; (Path b1 -&gt; Path Abs -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> b) -&gt; (Path b1 -&gt; Path Abs -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> a) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:goDir">goDir</a> :: <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:MyView">MyView</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:Item">Item</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:doFileOperation" class="def">doFileOperation</a> :: <a href="HSFM-FileSystem-UtilTypes.html#t:FileOperation">FileOperation</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#doFileOperation" class="link">Source</a> <a href="#v:doFileOperation" class="selflink">#</a></p><div class="doc"><p>Carries out a file operation with the appropriate error handling
allowing the user to react to various exceptions with further input.</p></div></div><div class="top"><p class="src"><a id="v:_doFileOperation" class="def">_doFileOperation</a> :: [Path b1] -&gt; Path Abs -&gt; (Path b1 -&gt; Path Abs -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> b) -&gt; (Path b1 -&gt; Path Abs -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> a) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#_doFileOperation" class="link">Source</a> <a href="#v:_doFileOperation" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:goDir" class="def">goDir</a> :: <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:MyView">MyView</a> -&gt; <a href="HSFM-GUI-Gtk-Data.html#t:Item">Item</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/HSFM-GUI-Gtk-Callbacks-Utils.html#goDir" class="link">Source</a> <a href="#v:goDir" class="selflink">#</a></p><div class="doc"><p>Helper that is invoked for any directory change operations.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.GUI.Gtk.Errors</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-GUI-Gtk-Errors.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Errors.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Errors</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Provides error handling for Gtk.</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GtkException" class="def">GtkException</a> <a href="src/HSFM-GUI-Gtk-Errors.html#GtkException" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:UnknownDialogButton" class="def">UnknownDialogButton</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:GtkException" class="caption collapser" onclick="toggleSection('i:GtkException')">Instances</p><div id="section.i:GtkException" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GtkException:Show:1" class="instance expander" onclick="toggleSection('i:id:GtkException:Show:1')"></span> Show <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a></span> <a href="src/HSFM-GUI-Gtk-Errors.html#line-31" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:GtkException:Show:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: Int -&gt; <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; ShowS</p><p class="src"><a href="#v:show">show</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; String</p><p class="src"><a href="#v:showList">showList</a> :: [<a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a>] -&gt; ShowS</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GtkException:Exception:2" class="instance expander" onclick="toggleSection('i:id:GtkException:Exception:2')"></span> Exception <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a></span> <a href="src/HSFM-GUI-Gtk-Errors.html#line-33" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:GtkException:Exception:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toException">toException</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; SomeException</p><p class="src"><a href="#v:fromException">fromException</a> :: SomeException -&gt; Maybe <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a></p><p class="src"><a href="#v:displayException">displayException</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; String</p></div></div></td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Errors.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Errors</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Provides error handling for Gtk.</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GtkException" class="def">GtkException</a> <a href="src/HSFM-GUI-Gtk-Errors.html#GtkException" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:UnknownDialogButton" class="def">UnknownDialogButton</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:GtkException" class="caption collapser" onclick="toggleSection('i:GtkException')">Instances</p><div id="section.i:GtkException" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GtkException:Show:1" class="instance expander" onclick="toggleSection('i:id:GtkException:Show:1')"></span> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Text-Show.html#t:Show">Show</a> <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a></span> <a href="src/HSFM-GUI-Gtk-Errors.html#line-31" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:GtkException:Show:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a> -&gt; <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-String.html#t:String">String</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a>] -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:GtkException:Exception:2" class="instance expander" onclick="toggleSection('i:id:GtkException:Exception:2')"></span> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Exception-Base.html#t:Exception">Exception</a> <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a></span> <a href="src/HSFM-GUI-Gtk-Errors.html#line-33" class="link">Source</a> <a href="#t:GtkException" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:GtkException:Exception:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toException">toException</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Exception-Base.html#t:SomeException">SomeException</a> <a href="#v:toException" class="selflink">#</a></p><p class="src"><a href="#v:fromException">fromException</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Exception-Base.html#t:SomeException">SomeException</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> <a href="#v:fromException" class="selflink">#</a></p><p class="src"><a href="#v:displayException">displayException</a> :: <a href="HSFM-GUI-Gtk-Errors.html#t:GtkException">GtkException</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-String.html#t:String">String</a> <a href="#v:displayException" class="selflink">#</a></p></div></div></td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.GUI.Gtk.Icons</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-GUI-Gtk-Icons.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Icons.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Icons</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Module for Gtk icon handling.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:GtkIcon">GtkIcon</a><ul class="subs"><li>= <a href="#v:IFolder">IFolder</a></li><li>| <a href="#v:SymL">SymL</a></li><li>| <a href="#v:IFile">IFile</a></li><li>| <a href="#v:IError">IError</a></li></ul></li><li class="src short"><a href="#v:getIcon">getIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; Int -&gt; IO Pixbuf</li><li class="src short"><a href="#v:getSymlinkIcon">getSymlinkIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; Int -&gt; IO Pixbuf</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GtkIcon" class="def">GtkIcon</a> <a href="src/HSFM-GUI-Gtk-Icons.html#GtkIcon" class="link">Source</a> <a href="#t:GtkIcon" class="selflink">#</a></p><div class="doc"><p>Icon type we use in our GUI.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:IFolder" class="def">IFolder</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:SymL" class="def">SymL</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:IFile" class="def">IFile</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:IError" class="def">IError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a id="v:getIcon" class="def">getIcon</a> <a href="src/HSFM-GUI-Gtk-Icons.html#getIcon" class="link">Source</a> <a href="#v:getIcon" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a></td><td class="doc"><p>icon we want</p></td></tr><tr><td class="src">-&gt; IconTheme</td><td class="doc"><p>which icon theme to get the icon from</p></td></tr><tr><td class="src">-&gt; Int</td><td class="doc"><p>requested icon size</p></td></tr><tr><td class="src">-&gt; IO Pixbuf</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Gets an icon from the default icon theme and falls back to project-icons
if not found. The requested icon size is not guaranteed.</p></div></div><div class="top"><p class="src"><a id="v:getSymlinkIcon" class="def">getSymlinkIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; Int -&gt; IO Pixbuf <a href="src/HSFM-GUI-Gtk-Icons.html#getSymlinkIcon" class="link">Source</a> <a href="#v:getSymlinkIcon" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-Icons.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.Icons</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Module for Gtk icon handling.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:GtkIcon">GtkIcon</a><ul class="subs"><li>= <a href="#v:IFolder">IFolder</a></li><li>| <a href="#v:SymL">SymL</a></li><li>| <a href="#v:IFile">IFile</a></li><li>| <a href="#v:IError">IError</a></li></ul></li><li class="src short"><a href="#v:getIcon">getIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> Pixbuf</li><li class="src short"><a href="#v:getSymlinkIcon">getSymlinkIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> Pixbuf</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:GtkIcon" class="def">GtkIcon</a> <a href="src/HSFM-GUI-Gtk-Icons.html#GtkIcon" class="link">Source</a> <a href="#t:GtkIcon" class="selflink">#</a></p><div class="doc"><p>Icon type we use in our GUI.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:IFolder" class="def">IFolder</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:SymL" class="def">SymL</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:IFile" class="def">IFile</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:IError" class="def">IError</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a id="v:getIcon" class="def">getIcon</a> <a href="src/HSFM-GUI-Gtk-Icons.html#getIcon" class="link">Source</a> <a href="#v:getIcon" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a></td><td class="doc"><p>icon we want</p></td></tr><tr><td class="src">-&gt; IconTheme</td><td class="doc"><p>which icon theme to get the icon from</p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>requested icon size</p></td></tr><tr><td class="src">-&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> Pixbuf</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Gets an icon from the default icon theme and falls back to project-icons
if not found. The requested icon size is not guaranteed.</p></div></div><div class="top"><p class="src"><a id="v:getSymlinkIcon" class="def">getSymlinkIcon</a> :: <a href="HSFM-GUI-Gtk-Icons.html#t:GtkIcon">GtkIcon</a> -&gt; IconTheme -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> Pixbuf <a href="src/HSFM-GUI-Gtk-Icons.html#getSymlinkIcon" class="link">Source</a> <a href="#v:getSymlinkIcon" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.GUI.Gtk.MyGUI</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-GUI-Gtk-MyGUI.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-MyGUI.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.MyGUI</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:createMyGUI">createMyGUI</a> :: IO <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:createMyGUI" class="def">createMyGUI</a> :: IO <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> <a href="src/HSFM-GUI-Gtk-MyGUI.html#createMyGUI" class="link">Source</a> <a href="#v:createMyGUI" class="selflink">#</a></p><div class="doc"><p>Set up the GUI. This only creates the permanent widgets.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-GUI-Gtk-MyGUI.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.GUI.Gtk.MyGUI</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:createMyGUI">createMyGUI</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:createMyGUI" class="def">createMyGUI</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="HSFM-GUI-Gtk-Data.html#t:MyGUI">MyGUI</a> <a href="src/HSFM-GUI-Gtk-MyGUI.html#createMyGUI" class="link">Source</a> <a href="#v:createMyGUI" class="selflink">#</a></p><div class="doc"><p>Set up the GUI. This only creates the permanent widgets.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.Utils.IO</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-Utils-IO.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-Utils-IO.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.Utils.IO</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Random and general IO utilities.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:writeTVarIO">writeTVarIO</a> :: <a href="https://hackage.haskell.org/package/stm-2.4.4.1/docs/Control-Concurrent-STM-TVar.html#t:TVar">TVar</a> a -&gt; a -&gt; IO ()</li><li class="src short"><a href="#v:modifyTVarIO">modifyTVarIO</a> :: <a href="https://hackage.haskell.org/package/stm-2.4.4.1/docs/Control-Concurrent-STM-TVar.html#t:TVar">TVar</a> a -&gt; (a -&gt; a) -&gt; IO ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:writeTVarIO" class="def">writeTVarIO</a> :: <a href="https://hackage.haskell.org/package/stm-2.4.4.1/docs/Control-Concurrent-STM-TVar.html#t:TVar">TVar</a> a -&gt; a -&gt; IO () <a href="src/HSFM-Utils-IO.html#writeTVarIO" class="link">Source</a> <a href="#v:writeTVarIO" class="selflink">#</a></p><div class="doc"><p>Atomically write a TVar.</p></div></div><div class="top"><p class="src"><a id="v:modifyTVarIO" class="def">modifyTVarIO</a> :: <a href="https://hackage.haskell.org/package/stm-2.4.4.1/docs/Control-Concurrent-STM-TVar.html#t:TVar">TVar</a> a -&gt; (a -&gt; a) -&gt; IO () <a href="src/HSFM-Utils-IO.html#modifyTVarIO" class="link">Source</a> <a href="#v:modifyTVarIO" class="selflink">#</a></p><div class="doc"><p>Atomically modify a TVar.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-Utils-IO.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.Utils.IO</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Random and general IO utilities.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:writeTVarIO">writeTVarIO</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Conc.html#t:TVar">TVar</a> a -&gt; a -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:modifyTVarIO">modifyTVarIO</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Conc.html#t:TVar">TVar</a> a -&gt; (a -&gt; a) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:writeTVarIO" class="def">writeTVarIO</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Conc.html#t:TVar">TVar</a> a -&gt; a -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/HSFM-Utils-IO.html#writeTVarIO" class="link">Source</a> <a href="#v:writeTVarIO" class="selflink">#</a></p><div class="doc"><p>Atomically write a TVar.</p></div></div><div class="top"><p class="src"><a id="v:modifyTVarIO" class="def">modifyTVarIO</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Conc.html#t:TVar">TVar</a> a -&gt; (a -&gt; a) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/HSFM-Utils-IO.html#modifyTVarIO" class="link">Source</a> <a href="#v:modifyTVarIO" class="selflink">#</a></p><div class="doc"><p>Atomically modify a TVar.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.Utils.MyPrelude</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_HSFM-Utils-MyPrelude.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-Utils-MyPrelude.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.Utils.MyPrelude</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:listIndices">listIndices</a> :: [a] -&gt; [Int]</li><li class="src short"><a href="#v:maybeD">maybeD</a> :: Default b =&gt; (a -&gt; b) -&gt; Maybe a -&gt; b</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:listIndices" class="def">listIndices</a> :: [a] -&gt; [Int] <a href="src/HSFM-Utils-MyPrelude.html#listIndices" class="link">Source</a> <a href="#v:listIndices" class="selflink">#</a></p><div class="doc"><p>Turns any list into a list of the same length with the values
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/HSFM-Utils-MyPrelude.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">HSFM.Utils.MyPrelude</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:listIndices">listIndices</a> :: [a] -&gt; [<a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a>]</li><li class="src short"><a href="#v:maybeD">maybeD</a> :: Default b =&gt; (a -&gt; b) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; b</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:listIndices" class="def">listIndices</a> :: [a] -&gt; [<a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Int.html#t:Int">Int</a>] <a href="src/HSFM-Utils-MyPrelude.html#listIndices" class="link">Source</a> <a href="#v:listIndices" class="selflink">#</a></p><div class="doc"><p>Turns any list into a list of the same length with the values
being the indices.
E.g.: &quot;abdasd&quot; -&gt; [0,1,2,3,4,5]</p></div></div><div class="top"><p class="src"><a id="v:maybeD" class="def">maybeD</a> :: Default b =&gt; (a -&gt; b) -&gt; Maybe a -&gt; b <a href="src/HSFM-Utils-MyPrelude.html#maybeD" class="link">Source</a> <a href="#v:maybeD" class="selflink">#</a></p><div class="doc"><p>A <code>maybe</code> flavor using the <code>Default</code> class.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
E.g.: &quot;abdasd&quot; -&gt; [0,1,2,3,4,5]</p></div></div><div class="top"><p class="src"><a id="v:maybeD" class="def">maybeD</a> :: Default b =&gt; (a -&gt; b) -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; b <a href="src/HSFM-Utils-MyPrelude.html#maybeD" class="link">Source</a> <a href="#v:maybeD" class="selflink">#</a></p><div class="doc"><p>A <code><a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#v:maybe">maybe</a></code> flavor using the <code>Default</code> class.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Main</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Main.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Main.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Main</p></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:main" class="def">main</a> :: IO () <a href="src/Main.html#main" class="link">Source</a> <a href="#v:main" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Main.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Main</p></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:main" class="def">main</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> () <a href="src/Main.html#main" class="link">Source</a> <a href="#v:main" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Paths_hsfm</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Paths_hsfm.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Paths_hsfm.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Paths_hsfm</p></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:version" class="def">version</a> :: Version <a href="src/Paths_hsfm.html#version" class="link">Source</a> <a href="#v:version" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getBinDir" class="def">getBinDir</a> :: IO FilePath <a href="src/Paths_hsfm.html#getBinDir" class="link">Source</a> <a href="#v:getBinDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getLibDir" class="def">getLibDir</a> :: IO FilePath <a href="src/Paths_hsfm.html#getLibDir" class="link">Source</a> <a href="#v:getLibDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getDataDir" class="def">getDataDir</a> :: IO FilePath <a href="src/Paths_hsfm.html#getDataDir" class="link">Source</a> <a href="#v:getDataDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getLibexecDir" class="def">getLibexecDir</a> :: IO FilePath <a href="src/Paths_hsfm.html#getLibexecDir" class="link">Source</a> <a href="#v:getLibexecDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getDataFileName" class="def">getDataFileName</a> :: FilePath -&gt; IO FilePath <a href="src/Paths_hsfm.html#getDataFileName" class="link">Source</a> <a href="#v:getDataFileName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getSysconfDir" class="def">getSysconfDir</a> :: IO FilePath <a href="src/Paths_hsfm.html#getSysconfDir" class="link">Source</a> <a href="#v:getSysconfDir" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Paths_hsfm.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Paths_hsfm</p></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:version" class="def">version</a> :: <a href="https://hackage.haskell.org/package/Cabal-1.24.0.0/docs/Distribution-Version.html#t:Version">Version</a> <a href="src/Paths_hsfm.html#version" class="link">Source</a> <a href="#v:version" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getBinDir" class="def">getBinDir</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getBinDir" class="link">Source</a> <a href="#v:getBinDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getLibDir" class="def">getLibDir</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getLibDir" class="link">Source</a> <a href="#v:getLibDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getDataDir" class="def">getDataDir</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getDataDir" class="link">Source</a> <a href="#v:getDataDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getLibexecDir" class="def">getLibexecDir</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getLibexecDir" class="link">Source</a> <a href="#v:getLibexecDir" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getDataFileName" class="def">getDataFileName</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> -&gt; <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getDataFileName" class="link">Source</a> <a href="#v:getDataFileName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getSysconfDir" class="def">getSysconfDir</a> :: <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:IO">IO</a> <a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/System-IO.html#t:FilePath">FilePath</a> <a href="src/Paths_hsfm.html#getSysconfDir" class="link">Source</a> <a href="#v:getSysconfDir" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>hsfm-gtk (Index - N)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - N</p><table><tr><td class="src">NamedPipe</td><td class="module"><a href="HSFM-FileSystem-FileType.html#v:NamedPipe">HSFM.FileSystem.FileType</a></td></tr><tr><td class="src">newDir</td><td class="module"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newDir">HSFM.GUI.Gtk.Callbacks</a></td></tr><tr><td class="src">newFile</td><td class="module"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newFile">HSFM.GUI.Gtk.Callbacks</a></td></tr><tr><td class="src">newTab</td><td class="module"><a href="HSFM-GUI-Gtk-MyView.html#v:newTab">HSFM.GUI.Gtk.MyView</a></td></tr><tr><td class="src">newTabHere</td><td class="module"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newTabHere">HSFM.GUI.Gtk.Callbacks</a></td></tr><tr><td class="src">None</td><td class="module"><a href="HSFM-FileSystem-UtilTypes.html#v:None">HSFM.FileSystem.UtilTypes</a></td></tr><tr><td class="src">noNullPtrs</td><td class="module"><a href="HSFM-GUI-Glib-GlibString.html#v:noNullPtrs">HSFM.GUI.Glib.GlibString</a></td></tr><tr><td class="src">notebook</td><td class="module"><a href="HSFM-GUI-Gtk-Data.html#v:notebook">HSFM.GUI.Gtk.Data</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hsfm-gtk</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - N</p><table><tr><td class="src">NamedPipe</td><td class="module"><a href="HSFM-FileSystem-FileType.html#v:NamedPipe">HSFM.FileSystem.FileType</a></td></tr><tr><td class="src">newDir</td><td class="module"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newDir">HSFM.GUI.Gtk.Callbacks</a></td></tr><tr><td class="src">newFile</td><td class="module"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newFile">HSFM.GUI.Gtk.Callbacks</a></td></tr><tr><td class="src">newTab</td><td class="module"><a href="HSFM-GUI-Gtk-MyView.html#v:newTab">HSFM.GUI.Gtk.MyView</a></td></tr><tr><td class="src">None</td><td class="module"><a href="HSFM-FileSystem-UtilTypes.html#v:None">HSFM.FileSystem.UtilTypes</a></td></tr><tr><td class="src">noNullPtrs</td><td class="module"><a href="HSFM-GUI-Glib-GlibString.html#v:noNullPtrs">HSFM.GUI.Glib.GlibString</a></td></tr><tr><td class="src">notebook</td><td class="module"><a href="HSFM-GUI-Gtk-Data.html#v:notebook">HSFM.GUI.Gtk.Data</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>

Binary file not shown.

View File

@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HSFM.GUI.Gtk.Callbacks</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();};
//]]>
</script></head><body id="mini"><div id="module-header"><p class="caption">HSFM.GUI.Gtk.Callbacks</p></div><div id="interface"><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:setGUICallbacks" target="main">setGUICallbacks</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:setViewCallbacks" target="main">setViewCallbacks</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:openTerminalHere" target="main">openTerminalHere</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:closeTab" target="main">closeTab</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newTabHere" target="main">newTabHere</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:del" target="main">del</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:moveInit" target="main">moveInit</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:copyInit" target="main">copyInit</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:operationFinal" target="main">operationFinal</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newFile" target="main">newFile</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newDir" target="main">newDir</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:renameF" target="main">renameF</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:urlGoTo" target="main">urlGoTo</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHome" target="main">goHome</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:execute" target="main">execute</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:open" target="main">open</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:upDir" target="main">upDir</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHistoryPrev" target="main">goHistoryPrev</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHistoryNext" target="main">goHistoryNext</a></p></div></div></body></html>
</script></head><body id="mini"><div id="module-header"><p class="caption">HSFM.GUI.Gtk.Callbacks</p></div><div id="interface"><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:setGUICallbacks" target="main">setGUICallbacks</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:setViewCallbacks" target="main">setViewCallbacks</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:openTerminalHere" target="main">openTerminalHere</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:closeTab" target="main">closeTab</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:del" target="main">del</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:moveInit" target="main">moveInit</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:copyInit" target="main">copyInit</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:operationFinal" target="main">operationFinal</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newFile" target="main">newFile</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:newDir" target="main">newDir</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:renameF" target="main">renameF</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:urlGoTo" target="main">urlGoTo</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHome" target="main">goHome</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:execute" target="main">execute</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:open" target="main">open</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:upDir" target="main">upDir</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHistoryPrev" target="main">goHistoryPrev</a></p></div><div class="top"><p class="src"><a href="HSFM-GUI-Gtk-Callbacks.html#v:goHistoryNext" target="main">goHistoryNext</a></p></div></div></body></html>

View File

@ -31,524 +31,513 @@
<a name="line-22"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Callbacks</span> <span class='hs-keyword'>where</span>
<a name="line-23"></a>
<a name="line-24"></a>
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Concurrent</span><span class='hs-varop'>.</span><span class='hs-conid'>STM</span>
<a name="line-26"></a> <span class='hs-layout'>(</span>
<a name="line-27"></a> <span class='hs-layout'>(</span><span class='hs-varop'>&lt;$&gt;</span><span class='hs-layout'>)</span>
<a name="line-27"></a> <span class='hs-varid'>readTVarIO</span>
<a name="line-28"></a> <span class='hs-layout'>)</span>
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Concurrent</span><span class='hs-varop'>.</span><span class='hs-conid'>STM</span>
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-30"></a> <span class='hs-layout'>(</span>
<a name="line-31"></a> <span class='hs-varid'>readTVarIO</span>
<a name="line-31"></a> <span class='hs-varid'>throwIO</span>
<a name="line-32"></a> <span class='hs-layout'>)</span>
<a name="line-33"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span>
<a name="line-33"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-34"></a> <span class='hs-layout'>(</span>
<a name="line-35"></a> <span class='hs-varid'>throwIO</span>
<a name="line-36"></a> <span class='hs-layout'>)</span>
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-38"></a> <span class='hs-layout'>(</span>
<a name="line-39"></a> <span class='hs-varid'>forM_</span>
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>void</span>
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>when</span>
<a name="line-35"></a> <span class='hs-varid'>forM_</span>
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>void</span>
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>when</span>
<a name="line-38"></a> <span class='hs-layout'>)</span>
<a name="line-39"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span>
<a name="line-40"></a> <span class='hs-layout'>(</span>
<a name="line-41"></a> <span class='hs-varid'>liftIO</span>
<a name="line-42"></a> <span class='hs-layout'>)</span>
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span>
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-44"></a> <span class='hs-layout'>(</span>
<a name="line-45"></a> <span class='hs-varid'>liftIO</span>
<a name="line-45"></a> <span class='hs-conid'>ByteString</span>
<a name="line-46"></a> <span class='hs-layout'>)</span>
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>UTF8</span>
<a name="line-48"></a> <span class='hs-layout'>(</span>
<a name="line-49"></a> <span class='hs-conid'>ByteString</span>
<a name="line-50"></a> <span class='hs-layout'>)</span>
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>UTF8</span>
<a name="line-52"></a> <span class='hs-layout'>(</span>
<a name="line-53"></a> <span class='hs-varid'>fromString</span>
<a name="line-54"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>toString</span>
<a name="line-49"></a> <span class='hs-varid'>fromString</span>
<a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>toString</span>
<a name="line-51"></a> <span class='hs-layout'>)</span>
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Foldable</span>
<a name="line-53"></a> <span class='hs-layout'>(</span>
<a name="line-54"></a> <span class='hs-varid'>for_</span>
<a name="line-55"></a> <span class='hs-layout'>)</span>
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Foldable</span>
<a name="line-57"></a> <span class='hs-layout'>(</span>
<a name="line-58"></a> <span class='hs-varid'>for_</span>
<a name="line-59"></a> <span class='hs-layout'>)</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span>
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>HPath</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>P</span>
<a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span>
<a name="line-63"></a> <span class='hs-layout'>(</span>
<a name="line-64"></a> <span class='hs-conid'>Abs</span>
<a name="line-65"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Path</span>
<a name="line-66"></a> <span class='hs-layout'>)</span>
<a name="line-67"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-68"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Errors</span>
<a name="line-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>FileSystem</span><span class='hs-varop'>.</span><span class='hs-conid'>FileType</span>
<a name="line-71"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>FileSystem</span><span class='hs-varop'>.</span><span class='hs-conid'>UtilTypes</span>
<a name="line-72"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Callbacks</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-73"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Data</span>
<a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Dialogs</span>
<a name="line-75"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>MyView</span>
<a name="line-76"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-77"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-78"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span><span class='hs-layout'>(</span><span class='hs-varid'>readFile</span><span class='hs-layout'>)</span>
<a name="line-79"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>UTFString</span>
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span>
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>HPath</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>P</span>
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span>
<a name="line-59"></a> <span class='hs-layout'>(</span>
<a name="line-60"></a> <span class='hs-conid'>Abs</span>
<a name="line-61"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Path</span>
<a name="line-62"></a> <span class='hs-layout'>)</span>
<a name="line-63"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-64"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Errors</span>
<a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-66"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>FileSystem</span><span class='hs-varop'>.</span><span class='hs-conid'>FileType</span>
<a name="line-67"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>FileSystem</span><span class='hs-varop'>.</span><span class='hs-conid'>UtilTypes</span>
<a name="line-68"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Callbacks</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Data</span>
<a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Dialogs</span>
<a name="line-71"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>MyView</span>
<a name="line-72"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>GUI</span><span class='hs-varop'>.</span><span class='hs-conid'>Gtk</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span>
<a name="line-73"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>HSFM</span><span class='hs-varop'>.</span><span class='hs-conid'>Utils</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span>
<a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span><span class='hs-layout'>(</span><span class='hs-varid'>readFile</span><span class='hs-layout'>)</span>
<a name="line-75"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>UTFString</span>
<a name="line-76"></a> <span class='hs-layout'>(</span>
<a name="line-77"></a> <span class='hs-varid'>glibToString</span>
<a name="line-78"></a> <span class='hs-layout'>)</span>
<a name="line-79"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Env</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-80"></a> <span class='hs-layout'>(</span>
<a name="line-81"></a> <span class='hs-varid'>glibToString</span>
<a name="line-81"></a> <span class='hs-varid'>getEnv</span>
<a name="line-82"></a> <span class='hs-layout'>)</span>
<a name="line-83"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Env</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
<a name="line-84"></a> <span class='hs-layout'>(</span>
<a name="line-85"></a> <span class='hs-varid'>getEnv</span>
<a name="line-86"></a> <span class='hs-layout'>)</span>
<a name="line-87"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Process</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>SPP</span>
<a name="line-88"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-89"></a> <span class='hs-layout'>(</span>
<a name="line-90"></a> <span class='hs-conid'>ProcessID</span>
<a name="line-91"></a> <span class='hs-layout'>)</span>
<a name="line-83"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Process</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>SPP</span>
<a name="line-84"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Posix</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-85"></a> <span class='hs-layout'>(</span>
<a name="line-86"></a> <span class='hs-conid'>ProcessID</span>
<a name="line-87"></a> <span class='hs-layout'>)</span>
<a name="line-88"></a>
<a name="line-89"></a>
<a name="line-90"></a>
<a name="line-91"></a>
<a name="line-92"></a>
<a name="line-93"></a>
<a name="line-94"></a>
<a name="line-95"></a>
<a name="line-93"></a> <span class='hs-comment'>-----------------</span>
<a name="line-94"></a> <span class='hs-comment'>--[ Callbacks ]--</span>
<a name="line-95"></a> <span class='hs-comment'>-----------------</span>
<a name="line-96"></a>
<a name="line-97"></a> <span class='hs-comment'>-----------------</span>
<a name="line-98"></a> <span class='hs-comment'>--[ Callbacks ]--</span>
<a name="line-99"></a> <span class='hs-comment'>-----------------</span>
<a name="line-100"></a>
<a name="line-97"></a>
<a name="line-98"></a>
<a name="line-99"></a>
<a name="line-100"></a><span class='hs-comment'>---- MAIN CALLBACK ENTRYPOINT ----</span>
<a name="line-101"></a>
<a name="line-102"></a>
<a name="line-103"></a>
<a name="line-104"></a><span class='hs-comment'>---- MAIN CALLBACK ENTRYPOINT ----</span>
<a name="line-105"></a>
<a name="line-103"></a><a name="setGUICallbacks"></a><span class='hs-comment'>-- |Set callbacks for the whole gui, on hotkeys, events and stuff.</span>
<a name="line-104"></a><span class='hs-definition'>setGUICallbacks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-105"></a><span class='hs-definition'>setGUICallbacks</span> <span class='hs-varid'>mygui</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-106"></a>
<a name="line-107"></a><a name="setGUICallbacks"></a><span class='hs-comment'>-- |Set callbacks for the whole gui, on hotkeys, events and stuff.</span>
<a name="line-108"></a><span class='hs-definition'>setGUICallbacks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-109"></a><span class='hs-definition'>setGUICallbacks</span> <span class='hs-varid'>mygui</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-107"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>clearStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-108"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-109"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-conid'>None</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>clearStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-112"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-113"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-conid'>None</span>
<a name="line-111"></a> <span class='hs-comment'>-- menubar-file</span>
<a name="line-112"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>menubarFileQuit</span> <span class='hs-varop'>.</span> <span class='hs-varid'>menubar</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-113"></a> <span class='hs-varid'>mainQuit</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class='hs-comment'>-- menubar-file</span>
<a name="line-116"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>menubarFileQuit</span> <span class='hs-varop'>.</span> <span class='hs-varid'>menubar</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-117"></a> <span class='hs-varid'>mainQuit</span>
<a name="line-118"></a>
<a name="line-119"></a> <span class='hs-comment'>-- menubar-help</span>
<a name="line-120"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>menubarHelpAbout</span> <span class='hs-varop'>.</span> <span class='hs-varid'>menubar</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-121"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>showAboutDialog</span>
<a name="line-122"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-123"></a>
<a name="line-124"></a> <span class='hs-comment'>-- key events</span>
<a name="line-125"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>rootWin</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-126"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-127"></a> <span class='hs-str'>"q"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-128"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>mainQuit</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-131"></a>
<a name="line-132"></a>
<a name="line-133"></a><a name="setViewCallbacks"></a><span class='hs-comment'>-- |Set callbacks specific to a given view, on hotkeys, events and stuff.</span>
<a name="line-134"></a><span class='hs-definition'>setViewCallbacks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-135"></a><span class='hs-definition'>setViewCallbacks</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-136"></a> <span class='hs-varid'>view'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>view</span> <span class='hs-varid'>myview</span>
<a name="line-137"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>view'</span> <span class='hs-keyword'>of</span>
<a name="line-138"></a> <span class='hs-varid'>fmv</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>FMTreeView</span> <span class='hs-varid'>treeView</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-139"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>rowActivated</span>
<a name="line-140"></a> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span><span class='hs-layout'>)</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class='hs-comment'>-- drag events</span>
<a name="line-143"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragBegin</span> <span class='hs-varop'>$</span>
<a name="line-144"></a> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-145"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragDrop</span> <span class='hs-varop'>$</span>
<a name="line-146"></a> <span class='hs-keyglyph'>\</span><span class='hs-varid'>dc</span> <span class='hs-varid'>p</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-147"></a> <span class='hs-varid'>p'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewConvertWidgetToTreeCoords</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p</span>
<a name="line-148"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p'</span>
<a name="line-149"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-150"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-151"></a> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>False</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-152"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-153"></a> <span class='hs-conid'>Just</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-154"></a> <span class='hs-varid'>atom</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>atomNew</span> <span class='hs-layout'>(</span><span class='hs-str'>"HSFM"</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-155"></a> <span class='hs-varid'>dragGetData</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>dc</span> <span class='hs-varid'>atom</span> <span class='hs-varid'>ts</span>
<a name="line-156"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-157"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragDataReceived</span> <span class='hs-varop'>$</span>
<a name="line-158"></a> <span class='hs-keyglyph'>\</span><span class='hs-varid'>dc</span> <span class='hs-varid'>p</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-159"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-160"></a> <span class='hs-varid'>signalStopEmission</span> <span class='hs-varid'>treeView</span> <span class='hs-str'>"drag_data_received"</span>
<a name="line-161"></a> <span class='hs-varid'>p'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewConvertWidgetToTreeCoords</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p</span>
<a name="line-162"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p'</span>
<a name="line-163"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-164"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>False</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-165"></a> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-varid'>tp</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-166"></a> <span class='hs-varid'>mitem</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>rawPathToItem</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>tp</span>
<a name="line-167"></a> <span class='hs-varid'>forM_</span> <span class='hs-varid'>mitem</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>item</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-168"></a> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-169"></a> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>True</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-170"></a>
<a name="line-171"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span>
<a name="line-172"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-173"></a> <span class='hs-varid'>fmv</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>FMIconView</span> <span class='hs-varid'>iconView</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-174"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>iconView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>itemActivated</span>
<a name="line-175"></a> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span><span class='hs-layout'>)</span>
<a name="line-176"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span>
<a name="line-177"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-178"></a> <span class='hs-keyword'>where</span>
<a name="line-179"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-180"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>view</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmViewToContainer</span> <span class='hs-varid'>fmv</span>
<a name="line-181"></a>
<a name="line-182"></a> <span class='hs-comment'>-- GUI events</span>
<a name="line-183"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>urlBar</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>entryActivated</span> <span class='hs-varop'>$</span> <span class='hs-varid'>urlGoTo</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-184"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>upViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span>
<a name="line-185"></a> <span class='hs-varid'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-186"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>homeViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span>
<a name="line-187"></a> <span class='hs-varid'>goHome</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-188"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>refreshViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-189"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-190"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>cdir</span>
<a name="line-191"></a>
<a name="line-192"></a> <span class='hs-comment'>-- key events</span>
<a name="line-193"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-194"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-195"></a> <span class='hs-str'>"h"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-196"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-197"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>settings</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-198"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>x</span> <span class='hs-layout'>{</span> <span class='hs-varid'>showHidden</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showHidden</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
<a name="line-199"></a> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>cdir</span>
<a name="line-115"></a> <span class='hs-comment'>-- menubar-help</span>
<a name="line-116"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>menubarHelpAbout</span> <span class='hs-varop'>.</span> <span class='hs-varid'>menubar</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-117"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>showAboutDialog</span>
<a name="line-118"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class='hs-comment'>-- key events</span>
<a name="line-121"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>rootWin</span> <span class='hs-varid'>mygui</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-122"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-123"></a> <span class='hs-str'>"q"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-124"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>mainQuit</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-127"></a>
<a name="line-128"></a>
<a name="line-129"></a><a name="setViewCallbacks"></a><span class='hs-comment'>-- |Set callbacks specific to a given view, on hotkeys, events and stuff.</span>
<a name="line-130"></a><span class='hs-definition'>setViewCallbacks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-131"></a><span class='hs-definition'>setViewCallbacks</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-132"></a> <span class='hs-varid'>view'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>view</span> <span class='hs-varid'>myview</span>
<a name="line-133"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>view'</span> <span class='hs-keyword'>of</span>
<a name="line-134"></a> <span class='hs-varid'>fmv</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>FMTreeView</span> <span class='hs-varid'>treeView</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-135"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>rowActivated</span>
<a name="line-136"></a> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span><span class='hs-layout'>)</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class='hs-comment'>-- drag events</span>
<a name="line-139"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragBegin</span> <span class='hs-varop'>$</span>
<a name="line-140"></a> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-141"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragDrop</span> <span class='hs-varop'>$</span>
<a name="line-142"></a> <span class='hs-keyglyph'>\</span><span class='hs-varid'>dc</span> <span class='hs-varid'>p</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-143"></a> <span class='hs-varid'>p'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewConvertWidgetToTreeCoords</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p</span>
<a name="line-144"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p'</span>
<a name="line-145"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-146"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-147"></a> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>False</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-148"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-149"></a> <span class='hs-conid'>Just</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-150"></a> <span class='hs-varid'>atom</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>atomNew</span> <span class='hs-layout'>(</span><span class='hs-str'>"HSFM"</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-151"></a> <span class='hs-varid'>dragGetData</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>dc</span> <span class='hs-varid'>atom</span> <span class='hs-varid'>ts</span>
<a name="line-152"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>True</span>
<a name="line-153"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>dragDataReceived</span> <span class='hs-varop'>$</span>
<a name="line-154"></a> <span class='hs-keyglyph'>\</span><span class='hs-varid'>dc</span> <span class='hs-varid'>p</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-155"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-156"></a> <span class='hs-varid'>signalStopEmission</span> <span class='hs-varid'>treeView</span> <span class='hs-str'>"drag_data_received"</span>
<a name="line-157"></a> <span class='hs-varid'>p'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewConvertWidgetToTreeCoords</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p</span>
<a name="line-158"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-varid'>p'</span>
<a name="line-159"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-160"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>False</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-161"></a> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-varid'>tp</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-162"></a> <span class='hs-varid'>mitem</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>rawPathToItem</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>tp</span>
<a name="line-163"></a> <span class='hs-varid'>forM_</span> <span class='hs-varid'>mitem</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>item</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-164"></a> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-165"></a> <span class='hs-varid'>dragFinish</span> <span class='hs-varid'>dc</span> <span class='hs-conid'>True</span> <span class='hs-conid'>False</span> <span class='hs-varid'>ts</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span>
<a name="line-168"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-169"></a> <span class='hs-varid'>fmv</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>FMIconView</span> <span class='hs-varid'>iconView</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-170"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>iconView</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>itemActivated</span>
<a name="line-171"></a> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span><span class='hs-layout'>)</span>
<a name="line-172"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span>
<a name="line-173"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-174"></a> <span class='hs-keyword'>where</span>
<a name="line-175"></a> <span class='hs-varid'>commonGuiEvents</span> <span class='hs-varid'>fmv</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-176"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>view</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmViewToContainer</span> <span class='hs-varid'>fmv</span>
<a name="line-177"></a>
<a name="line-178"></a> <span class='hs-comment'>-- GUI events</span>
<a name="line-179"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>urlBar</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>entryActivated</span> <span class='hs-varop'>$</span> <span class='hs-varid'>urlGoTo</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-180"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>upViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span>
<a name="line-181"></a> <span class='hs-varid'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-182"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>homeViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span>
<a name="line-183"></a> <span class='hs-varid'>goHome</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-184"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>refreshViewB</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonActivated</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-185"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-186"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>cdir</span>
<a name="line-187"></a>
<a name="line-188"></a> <span class='hs-comment'>-- key events</span>
<a name="line-189"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-190"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-191"></a> <span class='hs-str'>"h"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-192"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-193"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>settings</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-194"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>x</span> <span class='hs-layout'>{</span> <span class='hs-varid'>showHidden</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showHidden</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
<a name="line-195"></a> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>cdir</span>
<a name="line-196"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-197"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Alt</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-198"></a> <span class='hs-str'>"Up"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-199"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-200"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-201"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Alt</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-202"></a> <span class='hs-str'>"Up"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-203"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-202"></a> <span class='hs-str'>"Left"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-203"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-204"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-205"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Alt</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-206"></a> <span class='hs-str'>"Left"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-207"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-208"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-209"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Alt</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-210"></a> <span class='hs-str'>"Right"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-211"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-212"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-213"></a> <span class='hs-str'>"Delete"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-214"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>del</span>
<a name="line-206"></a> <span class='hs-str'>"Right"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-207"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-208"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-209"></a> <span class='hs-str'>"Delete"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-210"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>del</span>
<a name="line-211"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-212"></a> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-213"></a> <span class='hs-str'>"Return"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-214"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span>
<a name="line-215"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-216"></a> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-217"></a> <span class='hs-str'>"Return"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-218"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span>
<a name="line-216"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-217"></a> <span class='hs-str'>"c"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-218"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>copyInit</span>
<a name="line-219"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-220"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-221"></a> <span class='hs-str'>"c"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-222"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>copyInit</span>
<a name="line-223"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-221"></a> <span class='hs-str'>"x"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-222"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-223"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-224"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-225"></a> <span class='hs-str'>"x"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-226"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-225"></a> <span class='hs-str'>"v"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-226"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-conid'>Nothing</span>
<a name="line-227"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-228"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-229"></a> <span class='hs-str'>"v"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-230"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-conid'>Nothing</span>
<a name="line-231"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-232"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-233"></a> <span class='hs-str'>"t"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-234"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-235"></a> <span class='hs-varid'>cwd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-236"></a> <span class='hs-varid'>newTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>createTreeView</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cwd</span><span class='hs-layout'>)</span>
<a name="line-229"></a> <span class='hs-str'>"t"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-230"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-231"></a> <span class='hs-varid'>cwd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-232"></a> <span class='hs-varid'>newTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>createTreeView</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cwd</span><span class='hs-layout'>)</span>
<a name="line-233"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-234"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-235"></a> <span class='hs-str'>"w"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-236"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>closeTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-237"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-238"></a> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Control</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventModifier</span>
<a name="line-239"></a> <span class='hs-str'>"w"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-240"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>closeTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-241"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>viewBox</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>keyPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tryEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-242"></a> <span class='hs-str'>"F4"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-243"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openTerminalHere</span> <span class='hs-varid'>myview</span>
<a name="line-244"></a>
<a name="line-245"></a> <span class='hs-comment'>-- righ-click</span>
<a name="line-246"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-247"></a> <span class='hs-varid'>eb</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventButton</span>
<a name="line-248"></a> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventTime</span>
<a name="line-249"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>eb</span> <span class='hs-keyword'>of</span>
<a name="line-250"></a> <span class='hs-conid'>RightButton</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-251"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>menuPopup</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcMenu</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span> <span class='hs-varop'>$</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-252"></a> <span class='hs-varop'>$</span> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-conid'>RightButton</span><span class='hs-layout'>,</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span>
<a name="line-253"></a> <span class='hs-comment'>-- this is just to not screw with current selection</span>
<a name="line-254"></a> <span class='hs-comment'>-- on right-click</span>
<a name="line-255"></a> <span class='hs-comment'>-- TODO: this misbehaves under IconView</span>
<a name="line-256"></a> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventCoordinates</span>
<a name="line-257"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getPathAtPos</span> <span class='hs-varid'>fmv</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-258"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-259"></a> <span class='hs-comment'>-- item under the cursor, only pass on the signal</span>
<a name="line-260"></a> <span class='hs-comment'>-- if the item under the cursor is not within the current</span>
<a name="line-261"></a> <span class='hs-comment'>-- selection</span>
<a name="line-262"></a> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>tp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-263"></a> <span class='hs-varid'>selectedTps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getSelectedTreePaths</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-264"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elem</span> <span class='hs-varid'>tp</span> <span class='hs-varid'>selectedTps</span>
<a name="line-265"></a> <span class='hs-comment'>-- no item under the cursor, pass on the signal</span>
<a name="line-266"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-267"></a> <span class='hs-conid'>MiddleButton</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-268"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-269"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-270"></a> <span class='hs-conid'>OtherButton</span> <span class='hs-num'>8</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-271"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-272"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-273"></a> <span class='hs-conid'>OtherButton</span> <span class='hs-num'>9</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-274"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-275"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-276"></a> <span class='hs-comment'>-- not right-click, so pass on the signal</span>
<a name="line-277"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-278"></a>
<a name="line-279"></a> <span class='hs-comment'>-- right click menu</span>
<a name="line-280"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileOpen</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-281"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span>
<a name="line-282"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileExecute</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-283"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>execute</span>
<a name="line-284"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileNewRegFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-285"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>newFile</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-286"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileNewDir</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-287"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>newDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-288"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileCopy</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-289"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>copyInit</span>
<a name="line-290"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileRename</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-291"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>renameF</span>
<a name="line-292"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFilePaste</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-293"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-conid'>Nothing</span>
<a name="line-294"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-295"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>del</span>
<a name="line-296"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileProperty</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-297"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>showFilePropertyDialog</span>
<a name="line-298"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileCut</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-299"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-300"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileIconView</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-301"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>switchView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>createIconView</span>
<a name="line-302"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileTreeView</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-303"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>switchView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>createTreeView</span>
<a name="line-304"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-305"></a>
<a name="line-306"></a> <span class='hs-varid'>getPathAtPos</span> <span class='hs-varid'>fmv</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-307"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>fmv</span> <span class='hs-keyword'>of</span>
<a name="line-308"></a> <span class='hs-conid'>FMTreeView</span> <span class='hs-varid'>treeView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-309"></a> <span class='hs-varid'>mp</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>round</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-310"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-varid'>mp</span>
<a name="line-311"></a> <span class='hs-conid'>FMIconView</span> <span class='hs-varid'>iconView</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-312"></a> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>tp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>tp</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>tp</span><span class='hs-layout'>)</span>
<a name="line-313"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>iconViewGetPathAtPos</span> <span class='hs-varid'>iconView</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-314"></a>
<a name="line-315"></a>
<a name="line-316"></a>
<a name="line-317"></a>
<a name="line-318"></a><span class='hs-comment'>---- OTHER ----</span>
<a name="line-238"></a> <span class='hs-str'>"F4"</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>glibToString</span> <span class='hs-varid'>eventKeyName</span>
<a name="line-239"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openTerminalHere</span> <span class='hs-varid'>myview</span>
<a name="line-240"></a>
<a name="line-241"></a> <span class='hs-comment'>-- righ-click</span>
<a name="line-242"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>view</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>buttonPressEvent</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-243"></a> <span class='hs-varid'>eb</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventButton</span>
<a name="line-244"></a> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventTime</span>
<a name="line-245"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>eb</span> <span class='hs-keyword'>of</span>
<a name="line-246"></a> <span class='hs-conid'>RightButton</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-247"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>menuPopup</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcMenu</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span> <span class='hs-varop'>$</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-248"></a> <span class='hs-varop'>$</span> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-conid'>RightButton</span><span class='hs-layout'>,</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span>
<a name="line-249"></a> <span class='hs-comment'>-- this is just to not screw with current selection</span>
<a name="line-250"></a> <span class='hs-comment'>-- on right-click</span>
<a name="line-251"></a> <span class='hs-comment'>-- TODO: this misbehaves under IconView</span>
<a name="line-252"></a> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>eventCoordinates</span>
<a name="line-253"></a> <span class='hs-varid'>mpath</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getPathAtPos</span> <span class='hs-varid'>fmv</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-254"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>mpath</span> <span class='hs-keyword'>of</span>
<a name="line-255"></a> <span class='hs-comment'>-- item under the cursor, only pass on the signal</span>
<a name="line-256"></a> <span class='hs-comment'>-- if the item under the cursor is not within the current</span>
<a name="line-257"></a> <span class='hs-comment'>-- selection</span>
<a name="line-258"></a> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>tp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-259"></a> <span class='hs-varid'>selectedTps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getSelectedTreePaths</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-260"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>elem</span> <span class='hs-varid'>tp</span> <span class='hs-varid'>selectedTps</span>
<a name="line-261"></a> <span class='hs-comment'>-- no item under the cursor, pass on the signal</span>
<a name="line-262"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-263"></a> <span class='hs-conid'>OtherButton</span> <span class='hs-num'>8</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-264"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-265"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-266"></a> <span class='hs-conid'>OtherButton</span> <span class='hs-num'>9</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-267"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-268"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-269"></a> <span class='hs-comment'>-- not right-click, so pass on the signal</span>
<a name="line-270"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>False</span>
<a name="line-271"></a>
<a name="line-272"></a> <span class='hs-comment'>-- right click menu</span>
<a name="line-273"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileOpen</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-274"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>open</span>
<a name="line-275"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileExecute</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-276"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>execute</span>
<a name="line-277"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileNewRegFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-278"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>newFile</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-279"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileNewDir</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-280"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>newDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-281"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileCopy</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-282"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>copyInit</span>
<a name="line-283"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileRename</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-284"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>renameF</span>
<a name="line-285"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFilePaste</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-286"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-conid'>Nothing</span>
<a name="line-287"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-288"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>del</span>
<a name="line-289"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileProperty</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-290"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>showFilePropertyDialog</span>
<a name="line-291"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileCut</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-292"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withItems</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>moveInit</span>
<a name="line-293"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileIconView</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-294"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>switchView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>createIconView</span>
<a name="line-295"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-varid'>rcFileTreeView</span> <span class='hs-varop'>.</span> <span class='hs-varid'>rcmenu</span><span class='hs-layout'>)</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>`on`</span> <span class='hs-varid'>menuItemActivated</span> <span class='hs-varop'>$</span>
<a name="line-296"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>switchView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>createTreeView</span>
<a name="line-297"></a> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-298"></a>
<a name="line-299"></a> <span class='hs-varid'>getPathAtPos</span> <span class='hs-varid'>fmv</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-300"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>fmv</span> <span class='hs-keyword'>of</span>
<a name="line-301"></a> <span class='hs-conid'>FMTreeView</span> <span class='hs-varid'>treeView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-302"></a> <span class='hs-varid'>mp</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>treeViewGetPathAtPos</span> <span class='hs-varid'>treeView</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>round</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-303"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-varid'>mp</span>
<a name="line-304"></a> <span class='hs-conid'>FMIconView</span> <span class='hs-varid'>iconView</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-305"></a> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>tp</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>tp</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>tp</span><span class='hs-layout'>)</span>
<a name="line-306"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>iconViewGetPathAtPos</span> <span class='hs-varid'>iconView</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>round</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-307"></a>
<a name="line-308"></a>
<a name="line-309"></a>
<a name="line-310"></a>
<a name="line-311"></a><span class='hs-comment'>---- OTHER ----</span>
<a name="line-312"></a>
<a name="line-313"></a>
<a name="line-314"></a><a name="openTerminalHere"></a><span class='hs-definition'>openTerminalHere</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>ProcessID</span>
<a name="line-315"></a><span class='hs-definition'>openTerminalHere</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-316"></a> <span class='hs-varid'>cwd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-317"></a> <span class='hs-comment'>-- TODO: make terminal configurable</span>
<a name="line-318"></a> <span class='hs-conid'>SPP</span><span class='hs-varop'>.</span><span class='hs-varid'>forkProcess</span> <span class='hs-varop'>$</span> <span class='hs-conid'>SPP</span><span class='hs-varop'>.</span><span class='hs-varid'>executeFile</span> <span class='hs-str'>"sakura"</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"-d"</span><span class='hs-layout'>,</span> <span class='hs-varid'>cwd</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Nothing</span>
<a name="line-319"></a>
<a name="line-320"></a>
<a name="line-321"></a><a name="openTerminalHere"></a><span class='hs-definition'>openTerminalHere</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>ProcessID</span>
<a name="line-322"></a><span class='hs-definition'>openTerminalHere</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-323"></a> <span class='hs-varid'>cwd</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-324"></a> <span class='hs-comment'>-- TODO: make terminal configurable</span>
<a name="line-325"></a> <span class='hs-conid'>SPP</span><span class='hs-varop'>.</span><span class='hs-varid'>forkProcess</span> <span class='hs-varop'>$</span> <span class='hs-conid'>SPP</span><span class='hs-varop'>.</span><span class='hs-varid'>executeFile</span> <span class='hs-str'>"sakura"</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"-d"</span><span class='hs-layout'>,</span> <span class='hs-varid'>cwd</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>Nothing</span>
<a name="line-326"></a>
<a name="line-327"></a>
<a name="line-328"></a>
<a name="line-329"></a>
<a name="line-330"></a><span class='hs-comment'>---- TAB OPERATIONS ----</span>
<a name="line-321"></a>
<a name="line-322"></a>
<a name="line-323"></a><span class='hs-comment'>---- TAB OPERATIONS ----</span>
<a name="line-324"></a>
<a name="line-325"></a>
<a name="line-326"></a><a name="closeTab"></a><span class='hs-comment'>-- |Closes the current tab, but only if there is more than one tab.</span>
<a name="line-327"></a><span class='hs-definition'>closeTab</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-328"></a><span class='hs-definition'>closeTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-329"></a> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>notebookGetNPages</span> <span class='hs-layout'>(</span><span class='hs-varid'>notebook</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-330"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>n</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>destroyView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-331"></a>
<a name="line-332"></a>
<a name="line-333"></a><a name="closeTab"></a><span class='hs-comment'>-- |Closes the current tab, but only if there is more than one tab.</span>
<a name="line-334"></a><span class='hs-definition'>closeTab</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-335"></a><span class='hs-definition'>closeTab</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-336"></a> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>notebookGetNPages</span> <span class='hs-layout'>(</span><span class='hs-varid'>notebook</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-337"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>n</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>destroyView</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span>
<a name="line-338"></a>
<a name="line-339"></a>
<a name="line-340"></a><a name="newTabHere"></a><span class='hs-definition'>newTabHere</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-341"></a><span class='hs-definition'>newTabHere</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>undefined</span>
<a name="line-342"></a><span class='hs-definition'>newTabHere</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-343"></a>
<a name="line-344"></a>
<a name="line-345"></a><span class='hs-comment'>---- FILE OPERATION CALLBACKS (COPY, MOVE, ...) ----</span>
<a name="line-346"></a>
<a name="line-347"></a>
<a name="line-348"></a><a name="del"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Deletes a file or directory.</span>
<a name="line-349"></a><span class='hs-definition'>del</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-350"></a><span class='hs-definition'>del</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-351"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really delete \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-352"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span>
<a name="line-353"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>easyDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span>
<a name="line-354"></a><span class='hs-comment'>-- this throws on the first error that occurs</span>
<a name="line-355"></a><span class='hs-definition'>del</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-356"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really delete "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>length</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>" files?"</span>
<a name="line-357"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span>
<a name="line-358"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>forM_</span> <span class='hs-varid'>items</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>item</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>easyDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span>
<a name="line-359"></a><span class='hs-definition'>del</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-360"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-361"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-362"></a>
<a name="line-363"></a>
<a name="line-364"></a><a name="moveInit"></a><span class='hs-comment'>-- |Initializes a file move operation.</span>
<a name="line-365"></a><span class='hs-definition'>moveInit</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-366"></a><span class='hs-definition'>moveInit</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-367"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>FMove</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PartialMove</span> <span class='hs-varop'>.</span> <span class='hs-varid'>map</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-368"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>sbmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>items</span> <span class='hs-keyword'>of</span>
<a name="line-369"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Move buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-370"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Move buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-371"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-372"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-373"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>pushStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>sbmsg</span>
<a name="line-374"></a><span class='hs-definition'>moveInit</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-375"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-376"></a> <span class='hs-str'>"No file selected!"</span>
<a name="line-377"></a>
<a name="line-378"></a><a name="copyInit"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Initializes a file copy operation.</span>
<a name="line-379"></a><span class='hs-definition'>copyInit</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-380"></a><span class='hs-definition'>copyInit</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-381"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>FCopy</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PartialCopy</span> <span class='hs-varop'>.</span> <span class='hs-varid'>map</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-382"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>sbmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>items</span> <span class='hs-keyword'>of</span>
<a name="line-383"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Copy buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-384"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Copy buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-385"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-386"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-387"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>pushStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>sbmsg</span>
<a name="line-388"></a><span class='hs-definition'>copyInit</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-389"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-390"></a> <span class='hs-str'>"No file selected!"</span>
<a name="line-391"></a>
<a name="line-392"></a>
<a name="line-393"></a><a name="operationFinal"></a><span class='hs-comment'>-- |Finalizes a file operation, such as copy or move.</span>
<a name="line-394"></a><span class='hs-definition'>operationFinal</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Item</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-395"></a><span class='hs-definition'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>mitem</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-396"></a> <span class='hs-varid'>op</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-397"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>mitem</span> <span class='hs-keyword'>of</span>
<a name="line-398"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>path</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-399"></a> <span class='hs-conid'>Just</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>x</span>
<a name="line-400"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>op</span> <span class='hs-keyword'>of</span>
<a name="line-401"></a> <span class='hs-conid'>FMove</span> <span class='hs-layout'>(</span><span class='hs-conid'>PartialMove</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-402"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really move "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span>
<a name="line-403"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-404"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-405"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span> <span class='hs-varid'>doFileOperation</span> <span class='hs-layout'>(</span><span class='hs-conid'>FMove</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Move</span> <span class='hs-varid'>s</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-406"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-407"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-conid'>None</span>
<a name="line-408"></a> <span class='hs-conid'>FCopy</span> <span class='hs-layout'>(</span><span class='hs-conid'>PartialCopy</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-409"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really copy "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span>
<a name="line-410"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-411"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-412"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span> <span class='hs-varid'>doFileOperation</span> <span class='hs-layout'>(</span><span class='hs-conid'>FCopy</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Copy</span> <span class='hs-varid'>s</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-413"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-414"></a> <span class='hs-keyword'>where</span>
<a name="line-415"></a> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>of</span>
<a name="line-416"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"\""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\""</span>
<a name="line-417"></a> <span class='hs-varid'>items</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-333"></a>
<a name="line-334"></a><span class='hs-comment'>---- FILE OPERATION CALLBACKS (COPY, MOVE, ...) ----</span>
<a name="line-335"></a>
<a name="line-336"></a>
<a name="line-337"></a><a name="del"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Deletes a file or directory.</span>
<a name="line-338"></a><span class='hs-definition'>del</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-339"></a><span class='hs-definition'>del</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-340"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really delete \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-341"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span>
<a name="line-342"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>easyDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span>
<a name="line-343"></a><span class='hs-comment'>-- this throws on the first error that occurs</span>
<a name="line-344"></a><span class='hs-definition'>del</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-345"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really delete "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>length</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>" files?"</span>
<a name="line-346"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span>
<a name="line-347"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>forM_</span> <span class='hs-varid'>items</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>item</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>easyDelete</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span>
<a name="line-348"></a><span class='hs-definition'>del</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-349"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-350"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-351"></a>
<a name="line-352"></a>
<a name="line-353"></a><a name="moveInit"></a><span class='hs-comment'>-- |Initializes a file move operation.</span>
<a name="line-354"></a><span class='hs-definition'>moveInit</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-355"></a><span class='hs-definition'>moveInit</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-356"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>FMove</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PartialMove</span> <span class='hs-varop'>.</span> <span class='hs-varid'>map</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-357"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>sbmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>items</span> <span class='hs-keyword'>of</span>
<a name="line-358"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Move buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-359"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Move buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-360"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-361"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-362"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>pushStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>sbmsg</span>
<a name="line-363"></a><span class='hs-definition'>moveInit</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-364"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-365"></a> <span class='hs-str'>"No file selected!"</span>
<a name="line-366"></a>
<a name="line-367"></a><a name="copyInit"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Initializes a file copy operation.</span>
<a name="line-368"></a><span class='hs-definition'>copyInit</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-369"></a><span class='hs-definition'>copyInit</span> <span class='hs-varid'>items</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-conop'>:</span><span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>mygui</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-370"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>FCopy</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PartialCopy</span> <span class='hs-varop'>.</span> <span class='hs-varid'>map</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-371"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>sbmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>items</span> <span class='hs-keyword'>of</span>
<a name="line-372"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Copy buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-373"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"Copy buffer: "</span> <span class='hs-varop'>++</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span>
<a name="line-374"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-375"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-376"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>pushStatusBar</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>sbmsg</span>
<a name="line-377"></a><span class='hs-definition'>copyInit</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-378"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-379"></a> <span class='hs-str'>"No file selected!"</span>
<a name="line-380"></a>
<a name="line-381"></a>
<a name="line-382"></a><a name="operationFinal"></a><span class='hs-comment'>-- |Finalizes a file operation, such as copy or move.</span>
<a name="line-383"></a><span class='hs-definition'>operationFinal</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Item</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-384"></a><span class='hs-definition'>operationFinal</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>mitem</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-385"></a> <span class='hs-varid'>op</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span>
<a name="line-386"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>mitem</span> <span class='hs-keyword'>of</span>
<a name="line-387"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>path</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-388"></a> <span class='hs-conid'>Just</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>x</span>
<a name="line-389"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>op</span> <span class='hs-keyword'>of</span>
<a name="line-390"></a> <span class='hs-conid'>FMove</span> <span class='hs-layout'>(</span><span class='hs-conid'>PartialMove</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-391"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really move "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span>
<a name="line-392"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-393"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-394"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span> <span class='hs-varid'>doFileOperation</span> <span class='hs-layout'>(</span><span class='hs-conid'>FMove</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Move</span> <span class='hs-varid'>s</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-395"></a> <span class='hs-varid'>popStatusbar</span> <span class='hs-varid'>mygui</span>
<a name="line-396"></a> <span class='hs-varid'>writeTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>operationBuffer</span> <span class='hs-varid'>mygui</span><span class='hs-layout'>)</span> <span class='hs-conid'>None</span>
<a name="line-397"></a> <span class='hs-conid'>FCopy</span> <span class='hs-layout'>(</span><span class='hs-conid'>PartialCopy</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-398"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really copy "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span>
<a name="line-399"></a> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-400"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-401"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span> <span class='hs-varid'>doFileOperation</span> <span class='hs-layout'>(</span><span class='hs-conid'>FCopy</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Copy</span> <span class='hs-varid'>s</span> <span class='hs-varid'>cdir</span><span class='hs-layout'>)</span>
<a name="line-402"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-403"></a> <span class='hs-keyword'>where</span>
<a name="line-404"></a> <span class='hs-varid'>imsg</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>of</span>
<a name="line-405"></a> <span class='hs-layout'>(</span><span class='hs-varid'>item</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-str'>"\""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\""</span>
<a name="line-406"></a> <span class='hs-varid'>items</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-varid'>items</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>" items"</span>
<a name="line-407"></a>
<a name="line-408"></a>
<a name="line-409"></a><a name="newFile"></a><span class='hs-comment'>-- |Create a new file.</span>
<a name="line-410"></a><span class='hs-definition'>newFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-411"></a><span class='hs-definition'>newFile</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-412"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter file name"</span> <span class='hs-layout'>(</span><span class='hs-str'>""</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-413"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-414"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-415"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-416"></a> <span class='hs-varid'>createRegularFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-417"></a>
<a name="line-418"></a>
<a name="line-419"></a>
<a name="line-420"></a><a name="newFile"></a><span class='hs-comment'>-- |Create a new file.</span>
<a name="line-421"></a><span class='hs-definition'>newFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-422"></a><span class='hs-definition'>newFile</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-423"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter file name"</span> <span class='hs-layout'>(</span><span class='hs-str'>""</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-424"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-425"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-426"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-427"></a> <span class='hs-varid'>createRegularFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-419"></a><a name="newDir"></a><span class='hs-comment'>-- |Create a new directory.</span>
<a name="line-420"></a><span class='hs-definition'>newDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-421"></a><span class='hs-definition'>newDir</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-422"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter directory name"</span> <span class='hs-layout'>(</span><span class='hs-str'>""</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-423"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-424"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-425"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-426"></a> <span class='hs-varid'>createDir</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-427"></a>
<a name="line-428"></a>
<a name="line-429"></a>
<a name="line-430"></a><a name="newDir"></a><span class='hs-comment'>-- |Create a new directory.</span>
<a name="line-431"></a><span class='hs-definition'>newDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-432"></a><span class='hs-definition'>newDir</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-433"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter directory name"</span> <span class='hs-layout'>(</span><span class='hs-str'>""</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-434"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-435"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-436"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-437"></a> <span class='hs-varid'>createDir</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-438"></a>
<a name="line-439"></a>
<a name="line-440"></a><a name="renameF"></a><span class='hs-definition'>renameF</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-441"></a><span class='hs-definition'>renameF</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-442"></a> <span class='hs-varid'>iname</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromRel</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>basename</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-443"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter new file name"</span> <span class='hs-layout'>(</span><span class='hs-varid'>iname</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
<a name="line-444"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-445"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-446"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really rename \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-447"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\""</span> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span>
<a name="line-448"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>dirname</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-449"></a> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-450"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span>
<a name="line-451"></a> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-varid'>renameFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-452"></a> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>dirname</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-453"></a><span class='hs-definition'>renameF</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-454"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-455"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-456"></a>
<a name="line-457"></a>
<a name="line-458"></a>
<a name="line-459"></a>
<a name="line-460"></a><span class='hs-comment'>---- DIRECTORY TRAVERSAL AND FILE OPENING CALLBACKS ----</span>
<a name="line-461"></a>
<a name="line-429"></a><a name="renameF"></a><span class='hs-definition'>renameF</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-430"></a><span class='hs-definition'>renameF</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-431"></a> <span class='hs-varid'>iname</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromRel</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>basename</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-432"></a> <span class='hs-varid'>mfn</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>textInputDialog</span> <span class='hs-str'>"Enter new file name"</span> <span class='hs-layout'>(</span><span class='hs-varid'>iname</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
<a name="line-433"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>pmfn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseFn</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>mfn</span>
<a name="line-434"></a> <span class='hs-varid'>for_</span> <span class='hs-varid'>pmfn</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fn</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-435"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cmsg</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Really rename \""</span> <span class='hs-varop'>++</span> <span class='hs-varid'>getFPasStr</span> <span class='hs-varid'>item</span>
<a name="line-436"></a> <span class='hs-varop'>++</span> <span class='hs-str'>"\""</span> <span class='hs-varop'>++</span> <span class='hs-str'>" to \""</span>
<a name="line-437"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>toString</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>fromAbs</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>dirname</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-438"></a> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-str'>"\"?"</span>
<a name="line-439"></a> <span class='hs-varid'>withConfirmationDialog</span> <span class='hs-varid'>cmsg</span> <span class='hs-varop'>$</span>
<a name="line-440"></a> <span class='hs-conid'>HPath</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-varid'>renameFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span>
<a name="line-441"></a> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>dirname</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-conid'>P</span><span class='hs-varop'>.&lt;/&gt;</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
<a name="line-442"></a><span class='hs-definition'>renameF</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-443"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-444"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-445"></a>
<a name="line-446"></a>
<a name="line-447"></a>
<a name="line-448"></a>
<a name="line-449"></a><span class='hs-comment'>---- DIRECTORY TRAVERSAL AND FILE OPENING CALLBACKS ----</span>
<a name="line-450"></a>
<a name="line-451"></a>
<a name="line-452"></a><a name="urlGoTo"></a><span class='hs-comment'>-- |Go to the url given at the 'urlBar' and visualize it in the given</span>
<a name="line-453"></a><span class='hs-comment'>-- treeView.</span>
<a name="line-454"></a><span class='hs-comment'>--</span>
<a name="line-455"></a><span class='hs-comment'>-- If the url is invalid, does nothing.</span>
<a name="line-456"></a><span class='hs-definition'>urlGoTo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-457"></a><span class='hs-definition'>urlGoTo</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-458"></a> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>entryGetText</span> <span class='hs-layout'>(</span><span class='hs-varid'>urlBar</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-459"></a> <span class='hs-varid'>forM_</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseAbs</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-460"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span>
<a name="line-461"></a> <span class='hs-layout'>(</span><span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-462"></a>
<a name="line-463"></a><a name="urlGoTo"></a><span class='hs-comment'>-- |Go to the url given at the 'urlBar' and visualize it in the given</span>
<a name="line-464"></a><span class='hs-comment'>-- treeView.</span>
<a name="line-465"></a><span class='hs-comment'>--</span>
<a name="line-466"></a><span class='hs-comment'>-- If the url is invalid, does nothing.</span>
<a name="line-467"></a><span class='hs-definition'>urlGoTo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-468"></a><span class='hs-definition'>urlGoTo</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-469"></a> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>entryGetText</span> <span class='hs-layout'>(</span><span class='hs-varid'>urlBar</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-470"></a> <span class='hs-varid'>forM_</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseAbs</span> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-471"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span>
<a name="line-472"></a> <span class='hs-layout'>(</span><span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-473"></a>
<a name="line-474"></a>
<a name="line-475"></a><a name="goHome"></a><span class='hs-definition'>goHome</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-476"></a><span class='hs-definition'>goHome</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-477"></a> <span class='hs-varid'>mhomedir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getEnv</span> <span class='hs-str'>"HOME"</span>
<a name="line-478"></a> <span class='hs-varid'>forM_</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseAbs</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>mhomedir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-479"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span>
<a name="line-480"></a> <span class='hs-layout'>(</span><span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-481"></a>
<a name="line-482"></a>
<a name="line-483"></a><a name="execute"></a><span class='hs-comment'>-- |Execute a given file.</span>
<a name="line-484"></a><span class='hs-definition'>execute</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-485"></a><span class='hs-definition'>execute</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-486"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>executeFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-conid'>[]</span>
<a name="line-487"></a><span class='hs-definition'>execute</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-488"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-489"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-490"></a>
<a name="line-491"></a>
<a name="line-492"></a><a name="open"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Opens a file or directory.</span>
<a name="line-493"></a><span class='hs-definition'>open</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-494"></a><span class='hs-definition'>open</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-495"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>item</span> <span class='hs-keyword'>of</span>
<a name="line-496"></a> <span class='hs-conid'>DirOrSym</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-497"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>r</span>
<a name="line-498"></a> <span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-499"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-500"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>r</span>
<a name="line-501"></a><span class='hs-comment'>-- this throws on the first error that occurs</span>
<a name="line-502"></a><span class='hs-definition'>open</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileLikeList</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-503"></a> <span class='hs-varid'>forM_</span> <span class='hs-varid'>fs</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>f</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span>
<a name="line-504"></a><span class='hs-definition'>open</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-505"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-506"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-507"></a>
<a name="line-508"></a>
<a name="line-509"></a><a name="upDir"></a><span class='hs-comment'>-- |Go up one directory and visualize it in the treeView.</span>
<a name="line-510"></a><span class='hs-definition'>upDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-511"></a><span class='hs-definition'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-512"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-513"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>goUp</span> <span class='hs-varid'>cdir</span>
<a name="line-514"></a> <span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-515"></a>
<a name="line-516"></a>
<a name="line-517"></a><a name="goHistoryPrev"></a><span class='hs-comment'>-- |Go "back" in the history.</span>
<a name="line-518"></a><span class='hs-definition'>goHistoryPrev</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-519"></a><span class='hs-definition'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-520"></a> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-521"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>hs</span> <span class='hs-keyword'>of</span>
<a name="line-522"></a> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-523"></a> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-524"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-525"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span>
<a name="line-526"></a> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-527"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>xs</span><span class='hs-layout'>,</span> <span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-varop'>`addHistory`</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-528"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-529"></a>
<a name="line-530"></a>
<a name="line-531"></a><a name="goHistoryNext"></a><span class='hs-comment'>-- |Go "forth" in the history.</span>
<a name="line-532"></a><span class='hs-definition'>goHistoryNext</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-533"></a><span class='hs-definition'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-534"></a> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-535"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>hs</span> <span class='hs-keyword'>of</span>
<a name="line-536"></a> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-537"></a> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-538"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-539"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span>
<a name="line-540"></a> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-541"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-varop'>`addHistory`</span> <span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-542"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-543"></a>
<a name="line-463"></a>
<a name="line-464"></a><a name="goHome"></a><span class='hs-definition'>goHome</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-465"></a><span class='hs-definition'>goHome</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-466"></a> <span class='hs-varid'>mhomedir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getEnv</span> <span class='hs-str'>"HOME"</span>
<a name="line-467"></a> <span class='hs-varid'>forM_</span> <span class='hs-layout'>(</span><span class='hs-conid'>P</span><span class='hs-varop'>.</span><span class='hs-varid'>parseAbs</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-varid'>mhomedir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Path</span> <span class='hs-conid'>Abs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fp'</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-468"></a> <span class='hs-varid'>whenM</span> <span class='hs-layout'>(</span><span class='hs-varid'>canOpenDirectory</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span>
<a name="line-469"></a> <span class='hs-layout'>(</span><span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varop'>=&lt;&lt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fp'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-470"></a>
<a name="line-471"></a>
<a name="line-472"></a><a name="execute"></a><span class='hs-comment'>-- |Execute a given file.</span>
<a name="line-473"></a><span class='hs-definition'>execute</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-474"></a><span class='hs-definition'>execute</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-475"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>executeFile</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>item</span><span class='hs-layout'>)</span> <span class='hs-conid'>[]</span>
<a name="line-476"></a><span class='hs-definition'>execute</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-477"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-478"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-479"></a>
<a name="line-480"></a>
<a name="line-481"></a><a name="open"></a><span class='hs-comment'>-- |Supposed to be used with 'withRows'. Opens a file or directory.</span>
<a name="line-482"></a><span class='hs-definition'>open</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Item</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-483"></a><span class='hs-definition'>open</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>item</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-484"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>item</span> <span class='hs-keyword'>of</span>
<a name="line-485"></a> <span class='hs-conid'>DirOrSym</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-486"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>path</span> <span class='hs-varid'>r</span>
<a name="line-487"></a> <span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-488"></a> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-489"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>r</span>
<a name="line-490"></a><span class='hs-comment'>-- this throws on the first error that occurs</span>
<a name="line-491"></a><span class='hs-definition'>open</span> <span class='hs-layout'>(</span><span class='hs-conid'>FileLikeList</span> <span class='hs-varid'>fs</span><span class='hs-layout'>)</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span>
<a name="line-492"></a> <span class='hs-varid'>forM_</span> <span class='hs-varid'>fs</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>f</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>openFile</span> <span class='hs-varop'>.</span> <span class='hs-varid'>path</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span>
<a name="line-493"></a><span class='hs-definition'>open</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span>
<a name="line-494"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>InvalidOperation</span>
<a name="line-495"></a> <span class='hs-str'>"Operation not supported on multiple files"</span>
<a name="line-496"></a>
<a name="line-497"></a>
<a name="line-498"></a><a name="upDir"></a><span class='hs-comment'>-- |Go up one directory and visualize it in the treeView.</span>
<a name="line-499"></a><span class='hs-definition'>upDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-500"></a><span class='hs-definition'>upDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withErrorDialog</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-501"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-502"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>goUp</span> <span class='hs-varid'>cdir</span>
<a name="line-503"></a> <span class='hs-varid'>goDir</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-504"></a>
<a name="line-505"></a>
<a name="line-506"></a><a name="goHistoryPrev"></a><span class='hs-comment'>-- |Go "back" in the history.</span>
<a name="line-507"></a><span class='hs-definition'>goHistoryPrev</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-508"></a><span class='hs-definition'>goHistoryPrev</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-509"></a> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-510"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>hs</span> <span class='hs-keyword'>of</span>
<a name="line-511"></a> <span class='hs-layout'>(</span><span class='hs-conid'>[]</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-512"></a> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-513"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-514"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span>
<a name="line-515"></a> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-516"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>xs</span><span class='hs-layout'>,</span> <span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-varop'>`addHistory`</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-517"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-518"></a>
<a name="line-519"></a>
<a name="line-520"></a><a name="goHistoryNext"></a><span class='hs-comment'>-- |Go "forth" in the history.</span>
<a name="line-521"></a><span class='hs-definition'>goHistoryNext</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MyGUI</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MyView</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-522"></a><span class='hs-definition'>goHistoryNext</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-523"></a> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-524"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>hs</span> <span class='hs-keyword'>of</span>
<a name="line-525"></a> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-conid'>()</span>
<a name="line-526"></a> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-527"></a> <span class='hs-varid'>cdir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getCurrentDir</span> <span class='hs-varid'>myview</span>
<a name="line-528"></a> <span class='hs-varid'>nv</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>getFileInfo</span> <span class='hs-varop'>$</span> <span class='hs-varid'>x</span>
<a name="line-529"></a> <span class='hs-varid'>modifyTVarIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>history</span> <span class='hs-varid'>myview</span><span class='hs-layout'>)</span>
<a name="line-530"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>path</span> <span class='hs-varid'>cdir</span> <span class='hs-varop'>`addHistory`</span> <span class='hs-varid'>p</span><span class='hs-layout'>,</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-531"></a> <span class='hs-varid'>refreshView'</span> <span class='hs-varid'>mygui</span> <span class='hs-varid'>myview</span> <span class='hs-varid'>nv</span>
<a name="line-532"></a>
</pre></body>
</html>