wx- wxHaskell

Copyright(c) Daan Leijen 2003
(c) Shelarcy (shelarcy@gmail.com) 2006
Safe HaskellNone




Defines Menus, toolbars, and statusbars.

The function menuPane is used to create a menu that can contain menuItems. Menu items can contain event handlers using (on command), but they can also be set, using the menu function, on a frame or (mdi) window so that the menu command is handled in the context of the active window, instead of the context of the entire application.

do frame  <- frame    [text := "Demo"]
   file   <- menuPane [text := "&File"]
   mclose <- menuItem file [text := "&Close\tCtrl+C", help := "Close the document"] 
   set frame [menuBar          := [file] 
             ,on (menu mclose) := ...] 



Menu containers

type MenuBar a = EvtHandler (CMenuBar a) #

Pointer to an object of type MenuBar, derived from EvtHandler.

type Menu a = EvtHandler (CMenu a) #

Pointer to an object of type Menu, derived from EvtHandler.

menuBar :: WriteAttr (Frame a) [Menu ()] Source #

Set the menu bar of a frame.

menuPopup :: Menu b -> Point -> Window a -> IO () Source #

Show a popup menu for a certain window.

menuPane :: [Prop (Menu ())] -> IO (Menu ()) Source #

Create a new menu with a certain title (corresponds with text attribute).

menuHelp :: [Prop (Menu ())] -> IO (Menu ()) Source #

Append a help menu item ("&Help"). On some platforms, the help menu is handled specially

menuRes :: Window a -> String -> [Prop (Menu ())] -> IO (Menu ()) Source #

Get a menu by name from a menu loaded from a resource file, given the frame which owns the menu. You can directly set properties on the item as part of the call, which enables simple connection of event handlers (e.g. on command).

menuBarLoadRes :: Window a -> FilePath -> String -> IO (MenuBar ()) Source #

Retrieve a menu bar instance which has been constructed by loading a resource file for a given top level window.

Menu events

menu :: MenuItem a -> Event (Window w) (IO ()) Source #

React to menu events.

menuId :: Id -> Event (Window w) (IO ()) Source #

React to a menu event based on identity.

Menu items

type MenuItem a = WxObject (CMenuItem a) #

Pointer to an object of type MenuItem, derived from WxObject.

menuItem :: Menu a -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Append a menu item. The label can contain menu accellerators by using an ampersand. It can also contain keyboard accellerators after a tab ('\t') character.

menuItem menu [text := "&Open\tCtrl+O", help := "Opens an existing document"] 

You can create a checkable menu item by setting checkable to True in the properties of a menu item.

Note: on GTK, it is required to set the text attribute immediately at creation time.

menuQuit :: Menu a -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Append an quit menu item ("&QuittCtrl+Q"). On some platforms, the quit menu is handled specially

menuAbout :: Menu a -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Append an about menu item ("&About..."). On some platforms, the about menu is handled specially.

menuItemEx :: Menu a -> Id -> String -> Int -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Append a menu item with a specific id, label, and kind (like wxITEM_CHECK).

menuItemOnCommandRes :: Window a -> String -> IO () -> IO () Source #

When setting event handlers on menu items which have been loaded from XRC resource files, properties cannot be used as the menu item instances are opaque to wxHaskell.

This function offers a convenient way to attach menu item event handlers, given the identity of the window which owns the menu containing the menu item, and the name of the menu item

menuLine :: Menu a -> IO () Source #

Add a menu seperator.

menuSub :: Menu b -> Menu a -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Create a submenu item.

menuRadioItem :: Menu a -> [Prop (MenuItem ())] -> IO (MenuItem ()) Source #

Append a radio menu item. These items are checkable by default. A sequence of radio menu items form automatically a group. A different kind of menu item, like a menuLine, terminates the group. Note: one sometimes has to set the first selected radio item specifically after setting the "menubar" property, or otherwise the radio item bullet is not displayed on windows. See menuItem for other properties of menu radio items.

Tool bar

type ToolBar a = ToolBarBase (CToolBar a) #

Pointer to an object of type ToolBar, derived from ToolBarBase.

toolBar :: Frame a -> [Prop (ToolBar ())] -> IO (ToolBar ()) Source #

Create a toolbar window with a divider and text labels. Normally, you can use toolMenu to add tools in the toolbar that behave like normal menu items.

 tbar   <- toolBar f []
 toolMenu tbar open  "Open"  "open.png"  []
 toolMenu tbar about "About" "about.png" []

toolBarEx :: Frame a -> Bool -> Bool -> [Prop (ToolBar ())] -> IO (ToolBar ()) Source #

Create a toolbar window. The second argument specifies whether text labels should be shown, and the third argument whether a divider line is present above the toolbar.

toolMenu :: ToolBar a -> MenuItem a -> String -> FilePath -> [Prop ToolBarItem] -> IO ToolBarItem Source #

Create a tool bar item based on a menu. Takes a relevant menu item, a label and an image file (bmp, png, gif, ico, etc.) as arguments. The image from the file is normally 16 pixels wide and 15 pixels high. The toolbar item will fire the relevant menu items just as if the menu has been selected. Checkable menus will give a checkable toolbar item. Beware though, that checkable tools normally require a specific on command handler to keep them synchronised with the corresponding menu item.

toolMenuFromBitmap :: ToolBar a -> MenuItem a -> String -> Bitmap b -> [Prop ToolBarItem] -> IO ToolBarItem Source #

This is a generalized version of toolMenu function. You can specify Bitmap that is loaded from any other place instead of using FilePath directly.

toolItem :: ToolBar a -> String -> Bool -> FilePath -> [Prop ToolBarItem] -> IO ToolBarItem Source #

Create an orphan toolbar item that is unassociated with a menu. Takes a label, a flag that is True when the item is checkable and a path to an image (bmp, png, gif, ico, etc.) as arguments.

toolControl :: ToolBar a -> Control b -> IO () Source #

Add an arbitrary control to a toolbar (typically a ComboBox). The control must be created with the toolbar as the parent.

tool :: ToolBarItem -> Event (Window w) (IO ()) Source #

React on tool event (normally handled by menu though, so only use this for orphan toolbar items).

Status bar

data StatusField Source #

A field in a status bar.

statusBar :: WriteAttr (Frame a) [StatusField] Source #

Specify the statusbar of a frame.

statusField :: [Prop StatusField] -> IO StatusField Source #

Create a status field.

statusWidth :: Attr StatusField Int Source #

The status width attribute determines the width of a status bar field. A negative width makes the field stretchable. The width than determines the amount of stretch in relation to other fields. The default status width is -1, ie. all fields stretch evenly.

Here is an example of a status bar with three fields, where the last field is 50 pixels wide, the first takes 66% of the remaining space and the second field 33%.

field1 <- statusField [statusWidth := -2]
field2 <- statusField [text := "hi"]
field3 <- statusField [statusWidth := 50]
set frame [statusBar := [field1,field2,field3]] 


menuList :: [Prop (Menu ())] -> IO (Menu ()) Source #

Deprecated: Use menuPane instead

Deprecated: use menuPane.

menubar :: WriteAttr (Frame a) [Menu ()] Source #

Deprecated: Use menuBar instead

Deprecated: use menuBar.

statusbar :: WriteAttr (Frame a) [StatusField] Source #

Deprecated: Use statusBar instead

Deprecated: use statusBar.

Orphan instances