[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
|