[Fxruby-commits] CVS: FXRuby/examples shutter.rb,1.6,1.7
Status: Inactive
Brought to you by:
lyle
From: Lyle J. <ly...@us...> - 2002-03-21 18:56:34
|
Update of /cvsroot/fxruby/FXRuby/examples In directory usw-pr-cvs1:/tmp/cvs-serv21284 Modified Files: shutter.rb Log Message: Massive overhaul of the previously somewhat boring shutter example. Now replaced with an example that looks startingly like a popular PIM application. Index: shutter.rb =================================================================== RCS file: /cvsroot/fxruby/FXRuby/examples/shutter.rb,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shutter.rb 12 Jul 2001 20:34:20 -0000 1.6 --- shutter.rb 21 Mar 2002 18:47:18 -0000 1.7 *************** *** 5,112 **** include Fox class ShutterWindow < FXMainWindow ! # This is just a helper function that loads a GIF file from disk ! # and constructs and returns a GIF icon object. def loadIcon(filename) ! FXGIFIcon.new(getApp(), File.open("icons/" + filename, "rb").read()) end def initialize(app) # Invoke base class initialize first ! super(app, "Shutter Widget Test", nil, nil, DECOR_ALL, 0, 0, 600, 600) ! # Load up these icons ! foldericon = loadIcon("shutter1.gif") ! compressicon = loadIcon("shutter2.gif") ! # Create top-level container ! contents = FXHorizontalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! # List frame takes up most of the space on the left-hand side. ! # Since both the LAYOUT_FILL_X and LAYOUT_FILL_Y flags are set ! # it will expand to fill up any leftover space. ! listFrame = FXVerticalFrame.new(contents, ! LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10) ! # Button frame appears on the right ! buttonFrame = FXVerticalFrame.new(contents, ! FRAME_RAISED|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10) ! # The list frame contains a label, a separator and a tree list ! FXLabel.new(listFrame, "Tree List", nil, JUSTIFY_CENTER_X|LAYOUT_FILL_X) ! FXHorizontalSeparator.new(listFrame, SEPARATOR_GROOVE|LAYOUT_FILL_X) ! tree = FXTreeList.new(listFrame, 0, nil, 0, ! FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_RIGHT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES) ! # The button frame also contains a label and a separator, plus the shutter ! FXLabel.new(buttonFrame, "Button Frame", nil, ! JUSTIFY_CENTER_X|LAYOUT_FILL_X) ! FXHorizontalSeparator.new(buttonFrame, SEPARATOR_RIDGE|LAYOUT_FILL_X) ! shutter = FXShutter.new(buttonFrame, nil, 0, ! FRAME_SUNKEN|LAYOUT_FILL_Y|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ! shutterItem = FXShutterItem.new(shutter, "Item 1", nil, ! LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10, 10, 10) ! FXButton.new(shutterItem.getContent(), nil, foldericon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, compressicon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, compressicon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, foldericon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! ! shutterItem = FXShutterItem.new(shutter, "Item 2", nil, ! LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10, 10, 10) ! FXButton.new(shutterItem.getContent(), nil, foldericon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, compressicon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, foldericon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! shutterItem = FXShutterItem.new(shutter, "Item 3", nil, ! LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10, 10, 10) ! FXButton.new(shutterItem.getContent(), nil, foldericon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! FXButton.new(shutterItem.getContent(), nil, compressicon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) ! shutterItem = FXShutterItem.new(shutter, "Item 4", nil, ! LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 10, 10, 10, 10) ! FXButton.new(shutterItem.getContent(), nil, compressicon, ! getApp(), FXApp::ID_QUIT, ! FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, ! 0, 0, 0, 0, 10, 10, 5, 5) end def create super show end --- 5,138 ---- include Fox + class ShutterItem < FXShutterItem + def initialize(p, text, icon=nil, opts=0) + super(p, text, icon, opts|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10) + button.padTop = 2 + button.padBottom = 2 + end + end + + class ShutterButton < FXButton + def initialize(p, txt, ic=nil) + super(p, txt, ic, nil, 0, BUTTON_TOOLBAR|TEXT_BELOW_ICON|FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X|LAYOUT_TOP|LAYOUT_LEFT) + self.backColor = p.backColor + self.textColor = FXRGB(255, 255, 255) + end + end + class ShutterWindow < FXMainWindow ! # This is just a helper function that loads an ICO file from disk ! # and constructs and returns a ICO icon object. def loadIcon(filename) ! FXICOIcon.new(getApp(), File.open("icons/" + filename, "rb").read) end def initialize(app) # Invoke base class initialize first ! super(app, "Look Out!", nil, nil, DECOR_ALL, 0, 0, 600, 600) ! # Menubar along the top ! menubar = FXMenubar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X) ! ! # File menu ! filemenu = FXMenuPane.new(self) ! FXMenuCommand.new(filemenu, "Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT) ! FXMenuTitle.new(menubar, "&File", nil, filemenu) ! # Edit menu ! editmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "&Edit", nil, editmenu) ! # View menu ! viewmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "&View", nil, viewmenu) ! # Favorites menu ! favmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "Fav&orites", nil, favmenu) ! # Tools menu ! toolsmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "&Tools", nil, toolsmenu) ! # Actions menu ! actionsmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "&Actions", nil, actionsmenu) ! # Help menu ! helpmenu = FXMenuPane.new(self) ! FXMenuTitle.new(menubar, "&Help", nil, helpmenu) ! ! # Status bar along the bottom ! status = FXStatusbar.new(self, ! LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER) ! ! # Main contents area is split left-to-right ! splitter = FXSplitter.new(self, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X| ! LAYOUT_FILL_Y|SPLITTER_TRACKING)) ! ! # Shutter area on the left ! @shutter = FXShutter.new(splitter, nil, 0, ! FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ! ! fatBot = loadIcon("FatBot.ico") ! angryGuy = loadIcon("AngryGuyInBunnySuit.ico") ! sawBlade = loadIcon("SawBlade.ico") ! redMacOS = loadIcon("RedMacOS.ico") ! leGoon = loadIcon("LeGoon.ico") ! flippedySwitch = loadIcon("FlippedySwitch.ico") ! net = loadIcon("Net.ico") ! ! shutterItem = ShutterItem.new(@shutter, "Lookout Shortcuts", nil, LAYOUT_FILL_Y) ! ShutterButton.new(shutterItem.content, "Lookout Today", fatBot).connect(SEL_COMMAND) { @switcher.current = 0 } ! ShutterButton.new(shutterItem.content, "Inbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 1 } ! ShutterButton.new(shutterItem.content, "Calendar", sawBlade).connect(SEL_COMMAND) { @switcher.current = 2 } ! ShutterButton.new(shutterItem.content, "Contacts", redMacOS).connect(SEL_COMMAND) { @switcher.current = 3 } ! ShutterButton.new(shutterItem.content, "Tasks", leGoon).connect(SEL_COMMAND) { @switcher.current = 4 } ! ShutterButton.new(shutterItem.content, "Notes", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 5 } ! ShutterButton.new(shutterItem.content, "Deleted Items", net).connect(SEL_COMMAND) { @switcher.current = 6 } ! shutterItem = ShutterItem.new(@shutter, "My Shortcuts") ! ShutterButton.new(shutterItem.content, "Drafts", fatBot).connect(SEL_COMMAND) { @switcher.current = 7 } ! ShutterButton.new(shutterItem.content, "Outbox", angryGuy).connect(SEL_COMMAND) { @switcher.current = 8 } ! ShutterButton.new(shutterItem.content, "Sent Items", sawBlade).connect(SEL_COMMAND) { @switcher.current = 9 } ! ShutterButton.new(shutterItem.content, "Journal", redMacOS).connect(SEL_COMMAND) { @switcher.current = 10 } ! ShutterButton.new(shutterItem.content, "Lookout Update", flippedySwitch).connect(SEL_COMMAND) { @switcher.current = 11 } ! shutterItem = ShutterItem.new(@shutter, "Other Shortcuts") ! ShutterButton.new(shutterItem.content, "My Computer", angryGuy).connect(SEL_COMMAND) { @switcher.current = 12 } ! ShutterButton.new(shutterItem.content, "My Documents", net).connect(SEL_COMMAND) { @switcher.current = 13 } ! ShutterButton.new(shutterItem.content, "Favorites", leGoon).connect(SEL_COMMAND) { @switcher.current = 14 } ! ! # Right pane is a switcher ! # For a real application, each panel in the switcher would have real, working contents... ! @switcher = FXSwitcher.new(splitter, ! FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0) ! ! FXLabel.new(@switcher, ! "Lookout Today!\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Inbox\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Calendar\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Contacts\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Tasks\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Notes\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Deleted Items\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! ! FXLabel.new(@switcher, "Drafts\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Outbox\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Sent Items\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Journal\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Lookout Update\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! ! FXLabel.new(@switcher, "My Computer\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "My Documents\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) ! FXLabel.new(@switcher, "Favorites\n\nIcons courtesy of Gort's Icons:\nhttp://www2.fwi.com/~forrest/icons.html", nil, LAYOUT_FILL_X|LAYOUT_FILL_Y) end def create super + @shutter.width = 1.25*@shutter.width show end |