{-# LANGUAGE FlexibleInstances #-} ----------------------------------------------------------------------------- -- | -- Module : Hoodle.Type.Event -- Copyright : (c) 2011-2013 Ian-Woo Kim -- -- License : BSD3 -- Maintainer : Ian-Woo Kim -- Stability : experimental -- Portability : GHC -- -- GUI events in hoodle application -- ----------------------------------------------------------------------------- module Hoodle.Type.Event where -- from other package import Control.Concurrent import Data.ByteString import Data.IORef import qualified Data.Text as T import Data.Time.Clock import Graphics.UI.Gtk hiding (Image) -- from hoodle-platform import Control.Monad.Trans.Crtn.Event import Data.Hoodle.BBox import Data.Hoodle.Simple -- from this package import Hoodle.Device import Hoodle.Type.Enum import Hoodle.Type.Canvas import Hoodle.Type.PageArrangement -- | data AllEvent = UsrEv UserEvent | SysEv SystemEvent deriving Show -- | data SystemEvent = TestSystemEvent | ClockUpdateEvent deriving Show -- | data UserEvent = Initialized | CanvasConfigure Int Double Double | UpdateCanvas Int | UpdateCanvasEfficient Int | PenDown Int PenButton PointerCoord | PenMove Int PointerCoord | PenUp Int PointerCoord | TouchDown Int PointerCoord | TouchMove Int PointerCoord | TouchUp Int PointerCoord | PenColorChanged PenColor | PenWidthChanged Int | AssignPenMode (Either PenType SelectType) | BackgroundStyleChanged BackgroundStyle | HScrollBarMoved Int Double | VScrollBarMoved Int Double | VScrollBarStart Int Double | VScrollBarEnd Int Double | PaneMoveStart | PaneMoveEnd | ToViewAppendMode | ToSelectMode | ToSinglePage | ToContSinglePage | Menu MenuEvent | GotOk | OkCancel Bool | FileChosen (Maybe FilePath) | ColorChosen (Maybe PenColor) | GotClipboardContent (Maybe [Item]) | ContextMenuCreated | GotContextMenuSignal ContextMenuEvent | LaTeXInput (Maybe (ByteString,ByteString)) | TextInput (Maybe String) | AddLink (Maybe (String,FilePath)) | EventDisconnected | GetHoodleFileInfo (IORef (Maybe String)) | GotLink (Maybe String) (Int,Int) | Sync UTCTime | FileReloadOrdered | CustomKeyEvent String | GotRevision String String | GotRevisionInk String [Stroke] | ChangeDialog | ActionOrdered | MiniBuffer MiniBufferEvent | MultiLine MultiLineEvent | NetworkProcess NetworkEvent | ImageFileDropped FilePath deriving Show instance Show (IORef a) where show _ = "IORef" -- | data MenuEvent = MenuNew | MenuAnnotatePDF | MenuOpen | MenuSave | MenuSaveAs | MenuReload | MenuRecentDocument | MenuLoadPNGorJPG | MenuLoadSVG | MenuLaTeX | MenuCombineLaTeX | MenuEmbedPredefinedImage | MenuEmbedPredefinedImage2 | MenuEmbedPredefinedImage3 | MenuPrint | MenuExport | MenuStartSync | MenuVersionSave | MenuShowRevisions | MenuShowUUID | MenuQuit | MenuUndo | MenuRedo | MenuCut | MenuCopy | MenuPaste | MenuDelete | MenuFullScreen | MenuZoom | MenuZoomIn | MenuZoomOut | MenuNormalSize | MenuPageWidth | MenuPageHeight | MenuSetZoom | MenuFirstPage | MenuPreviousPage | MenuNextPage | MenuLastPage | MenuShowLayer | MenuHideLayer | MenuHSplit | MenuVSplit | MenuDelCanvas | MenuNewPageBefore | MenuNewPageAfter | MenuNewPageAtEnd | MenuDeletePage | MenuExportPageSVG | MenuNewLayer | MenuNextLayer | MenuPrevLayer | MenuGotoLayer | MenuDeleteLayer | MenuPaperSize | MenuPaperColor | MenuPaperStyle | MenuApplyToAllPages | MenuEmbedAllPDFBkg | MenuDefaultPaper | MenuSetAsDefaultPaper | MenuText | MenuAddLink | MenuShapeRecognizer | MenuRuler | MenuSelectRegion | MenuSelectRectangle | MenuVerticalSpace -- | MenuHandTool | MenuPenOptions | MenuEraserOptions | MenuHighlighterOptions | MenuTextFont | MenuColorPicker | MenuDefaultPen | MenuDefaultEraser | MenuDefaultHighlighter | MenuDefaultText | MenuSetAsDefaultOption | MenuRelaunch | MenuUseXInput | MenuUseTouch | MenuSmoothScroll | MenuUsePopUpMenu | MenuEmbedImage | MenuEmbedPDF | MenuFollowLinks | MenuKeepAspectRatio | MenuTogglePanZoomWidget | MenuToggleLayerWidget | MenuToggleClockWidget | MenuDiscardCoreEvents | MenuEraserTip | MenuPressureSensitivity | MenuPageHighlight | MenuMultiplePageView | MenuMultiplePages | MenuButton2Mapping | MenuButton3Mapping | MenuAntialiasedBitmaps | MenuProgressiveBackgrounds | MenuPrintPaperRuling | MenuLeftHandedScrollbar | MenuShortenMenus | MenuAutoSavePreferences | MenuSavePreferences | MenuAbout | MenuDefault deriving Show -- (Show, Ord, Eq) -- | data ImgType = TypSVG | TypPDF deriving (Show, Ord, Eq) -- | data ContextMenuEvent = CMenuSaveSelectionAs ImgType | CMenuCut | CMenuCopy | CMenuDelete | CMenuCanvasView CanvasId PageNum Double Double | CMenuAutosavePage | CMenuLinkConvert Link | CMenuCreateALink | CMenuAssocWithNewFile | CMenuPangoConvert (Double,Double) T.Text | CMenuLaTeXConvert (Double,Double) T.Text | CMenuLaTeXConvertNetwork (Double,Double) T.Text | CMenuCropImage (BBoxed Image) | CMenuRotate RotateDir (BBoxed Image) | CMenuCustom deriving (Show, Ord, Eq) -- | event for minibuffer operation (currently pen only) data MiniBufferEvent = MiniBufferInitialized DrawWindow | MiniBufferPenDown PenButton PointerCoord | MiniBufferPenUp PointerCoord | MiniBufferPenMove PointerCoord deriving Show instance Show DrawWindow where show _ = "DrawWindow" -- | event for multiline text view/buffer data MultiLineEvent = MultiLineChanged T.Text deriving Show -- | event for network data NetworkEvent = NetworkDialog | NetworkInitialized ThreadId (MVar ()) | NetworkReceived T.Text | NetworkCloseDialog | NetworkClosed deriving Show instance Show (MVar ()) where show _ = "MVar" -- | viewModeToUserEvent :: RadioAction -> IO UserEvent viewModeToUserEvent a = do v <- radioActionGetCurrentValue a case v of 1 -> return ToSinglePage 0 -> return ToContSinglePage _ -> return ToSinglePage -- | mkIOaction :: ((AllEvent -> IO ()) -> IO AllEvent) -> Either (ActionOrder AllEvent) AllEvent mkIOaction = Left . ActionOrder