def createButtonOk(theme, text, fontSize): frame = osgWidget.Frame.createSimpleFrameFromTheme( "ButtonOK", osgDB.readImageFile(theme), 300.0, 50.0, osgWidget.Frame.FRAME_TEXTURE ) frame.getBackground().setColor(0.0, 0.0, 0.0, 0.0) label = createLabel(text, "fonts/Vera.ttf", fontSize, osgWidget.Color(0,0,0,1)) box = osgWidget.Box("HBOX", osgWidget.Box.HORIZONTAL) box.addWidget(label) box.resize() colorBack = frame.getEmbeddedWindow().getColor() box.getBackground().setColor(colorBack) frame.getEmbeddedWindow().setWindow(box) box.setVisibilityMode(osgWidget.Window.VM_ENTIRE) box.setEventMask(osgWidget.EVENT_NONE) frame.resizeFrame(box.getWidth(), box.getHeight()) frame.resizeAdd(0, 0) event = EventOK(frame) frame.setUpdateCallback(event) frame.addCallback(event) return frame.release()
def createErrorMessage(themeMessage, themeButton, titleText, messageText, buttonText, font, fontSize): frame = osgWidget.Frame.createSimpleFrameFromTheme( "error", osgDB.readImageFile(themeMessage), 300.0, 50.0, osgWidget.Frame.FRAME_ALL ) frame.getBackground().setColor(0.0, 0.0, 0.0, 0.0) labelText = createLabel(messageText, font, fontSize, osgWidget.Color(0,0,0,1)) labelTitle = createLabel(titleText, font, fontSize+5, osgWidget.Color(0.4,0,0,1)) box = osgWidget.Box("VBOX", osgWidget.Box.VERTICAL) buttonOK = createButtonOk(themeButton, buttonText, fontSize).embed() buttonOK.setColor(osgWidget.Color(0,0,0,0)) buttonOK.setCanFill(False) box.addWidget(buttonOK) box.addWidget(labelText) box.addWidget(labelTitle) colorBack = frame.getEmbeddedWindow().getColor() box.getBackground().setColor(colorBack) frame.setWindow(box) box.resize() frame.resizeFrame(box.getWidth(), box.getHeight()) return frame.release()
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D, osgWidget.WindowManager.WM_PICK_DEBUG ) box = osgWidget.Box("vbox", osgWidget.Box.VERTICAL) input_ = osgWidget.Input("input", "", 50) input_.setFont("fonts/VeraMono.ttf") input_.setFontColor(0.0, 0.0, 0.0, 1.0) input_.setFontSize(15) input_.setYOffset(input_.calculateBestYOffset("y")) input_.setSize(400.0, input_.getText().getCharacterHeight()) box.addWidget(input_) box.setOrigin(200.0, 200.0) wm.addChild(box) viewer.setUpViewInWindow( 50, 50, int(wm.getWidth()), int(wm.getHeight()) ) camera = wm.createParentOrthoCamera() viewer.addEventHandler(osgWidget.MouseHandler(wm)) viewer.addEventHandler(osgWidget.KeyboardHandler(wm)) viewer.addEventHandler(osgWidget.ResizeHandler(wm, camera)) viewer.addEventHandler(osgWidget.CameraSwitchHandler(wm, camera)) viewer.addEventHandler(osgViewer.WindowSizeHandler()) wm.resizeAllWindows() viewer.setSceneData(camera) return viewer.run()
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D, osgWidget.WindowManager.WM_PICK_DEBUG ) menu = osgWidget.Box("menu", osgWidget.Box.HORIZONTAL) menu.addWidget(ColorLabelMenu("Pick me not ")) menu.addWidget(ColorLabelMenu("No, wait, pick me not ")) menu.addWidget(ColorLabelMenu("Don't pick them...")) menu.addWidget(ColorLabelMenu("Grarar not ? not ")) wm.addChild(menu) menu.getBackground().setColor(1.0, 1.0, 1.0, 0.0) menu.resizePercent(100.0) model = osgDB.readNodeFile("osgcool.osgt") model.setNodeMask(MASK_3D) return osgWidget.createExample(viewer, wm, model)
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D, osgWidget.WindowManager.WM_PICK_DEBUG #osgWidget.WindowManager.WM_NO_INVERT_Y ) frame = osgWidget.Frame.createSimpleFrameFromTheme( "frame", osgDB.readImageFile("osgWidget/theme.png"), 40.0, 40.0, osgWidget.Frame.FRAME_ALL ) frame.getBackground().setColor(0.0, 0.0, 0.0, 0.0) # This is our Transformers box. :) box = osgWidget.Box("images", osgWidget.Box.VERTICAL) img1 = osgWidget.Widget("im1", 512.0, 512.0) img2 = osgWidget.Widget("im2", 512.0, 512.0) img3 = osgWidget.Widget("im3", 512.0, 512.0) img4 = osgWidget.Widget("im4", 512.0, 512.0) img1.setImage("osgWidget/scrolled1.jpg", True) img2.setImage("osgWidget/scrolled2.jpg", True) img3.setImage("osgWidget/scrolled3.jpg", True) img4.setImage("osgWidget/scrolled4.jpg", True) img1.setMinimumSize(10.0, 10.0) img2.setMinimumSize(10.0, 10.0) img3.setMinimumSize(10.0, 10.0) img4.setMinimumSize(10.0, 10.0) box.addWidget(img1) box.addWidget(img2) box.addWidget(img3) box.addWidget(img4) box.setEventMask(osgWidget.EVENT_NONE) #frame.getEmbeddedWindow().setWindow(box) frame.setWindow(box) frame.getEmbeddedWindow().setColor(1.0, 1.0, 1.0, 1.0) frame.resize(300.0, 300.0) frame.addCallback(osgWidget.Callback(scrollWindow, osgWidget.EVENT_MOUSE_SCROLL)) frame.addCallback(osgWidget.Callback(changeTheme, osgWidget.EVENT_KEY_DOWN)) wm.addChild(frame) return osgWidget.createExample(viewer, wm)
class AddRemove (osgWidget.Box) : _win1 = osgWidget.Window() AddRemove(): osgWidget.Box ("buttons", osgWidget.Box.VERTICAL), _win1 (osgWidget.Box("win1", osgWidget.Box.VERTICAL)) addWidget(Button("Add Widget")) addWidget(Button("Remove Widget")) # Take special note here not Not only do the Button objects have their # own overridden methods for changing the color, but they have attached # callbacks for doing the work with local data. getByName("Widget_1").addCallback(osgWidget.Callback( AddRemove.handlePressAdd, this, osgWidget.EVENT_MOUSE_PUSH )) getByName("Widget_2").addCallback(osgWidget.Callback( AddRemove.handlePressRemove, this, osgWidget.EVENT_MOUSE_PUSH ))
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, WINDOW_WIDTH, WINDOW_HEIGHT, MASK_2D ) menu = osgWidget.Box("menu", osgWidget.Box.HORIZONTAL) menu.addWidget(ColorLabelMenu("Choose EaseMotion")) menu.getBackground().setColor(1.0, 1.0, 1.0, 1.0) menu.setPosition(15.0, 15.0, 0.0) wm.addChild(menu) group = osg.Group() geode = osg.Geode() mt = osg.MatrixTransform() geode.addDrawable(osg.ShapeDrawable(osg.Sphere(osg.Vec3(), 4.0))) EASE_MOTION_SAMPLER = EaseMotionSampler(osg.Vec3(50.0, 0.0, 0.0)) EASE_MOTION_GEODE = osg.Geode() mt.addChild(geode) mt.setUpdateCallback(EASE_MOTION_SAMPLER) mt.setNodeMask(MASK_3D) viewer.setCameraManipulator(osgGA.TrackballManipulator()) viewer.getCameraManipulator().setHomePosition( osg.Vec3d(0.0, 0.0, 200.0), osg.Vec3d(20.0, 0.0, 0.0), osg.Vec3d(0.0, 1.0, 0.0) ) viewer.home() group.addChild(mt) group.addChild(EASE_MOTION_GEODE) return osgWidget.createExample(viewer, wm, group)
class ColorLabelMenu (ColorLabel) : _window = osgWidget.Window() ColorLabelMenu( char* label): ColorLabel(label) _window = osgWidget.Box( str("Menu_") + label, osgWidget.Box.VERTICAL, True ) _window.addWidget(ColorLabel("Open Some Stuff")) _window.addWidget(ColorLabel("Do It Now")) _window.addWidget(ColorLabel("Hello, How Are U?")) _window.addWidget(ColorLabel("Hmmm...")) _window.addWidget(ColorLabel("Option 5")) _window.resize() setColor(0.8, 0.8, 0.8, 0.8)
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D ) box = osgWidget.Box("box", osgWidget.Box.VERTICAL) widget1 = osgWidget.Widget("w1", 200.0, 200.0) widget2 = osgWidget.Widget("w2", 100.0, 100.0) widget3 = osgWidget.Widget("w3", 0.0, 0.0) # CustomStyled* cs = CustomStyled() # Yep. wm.getStyleManager().addStyle(osgWidget.Style("widget.style1", STYLE1)) wm.getStyleManager().addStyle(osgWidget.Style("widget.style2", STYLE2)) wm.getStyleManager().addStyle(osgWidget.Style("spacer", STYLE3)) wm.getStyleManager().addStyle(osgWidget.Style("window", STYLE4)) # wm.getStyleManager().addStyle(CustomStyle("widget", "")) widget1.setStyle("widget.style1") widget2.setStyle("widget.style2") widget3.setStyle("spacer") box.setStyle("window") box.addWidget(widget1) box.addWidget(widget2) box.addWidget(widget3) wm.addChild(box) # box.resizePercent(0.0, 100.0) return osgWidget.createExample(viewer, wm)
def createBox(name, bt): box = osgWidget.Box(name, bt, True) widget1 = osgWidget.Widget(name + "_widget1", 100.0, 100.0) widget2 = osgWidget.Widget(name + "_widget2", 100.0, 100.0) widget3 = ColorWidget() widget1.setColor(0.3, 0.3, 0.3, 1.0) widget2.setColor(0.6, 0.6, 0.6, 1.0) widget3.setImage("osgWidget/natascha.png") widget3.setTexCoord(0.0, 0.0, osgWidget.Widget.LOWER_LEFT) widget3.setTexCoord(1.0, 0.0, osgWidget.Widget.LOWER_RIGHT) widget3.setTexCoord(1.0, 1.0, osgWidget.Widget.UPPER_RIGHT) widget3.setTexCoord(0.0, 1.0, osgWidget.Widget.UPPER_LEFT) box.addWidget(widget1) box.addWidget(widget2) box.addWidget(widget3) return box
osgWidget.Frame* MessageBox.createButtonOk( str theme, str text, str font, int fontSize) frame = osgWidget.Frame.createSimpleFrameFromTheme( "ButtonOK", osgDB.readImageFile(theme), 300.0, 50.0, osgWidget.Frame.FRAME_TEXTURE ) frame.getBackground().setColor(0.0, 0.0, 0.0, 0.0) label = createLabel(text, font, fontSize, osgWidget.Color(0,0,0,1)) box = osgWidget.Box("HBOX", osgWidget.Box.HORIZONTAL) box.addWidget(label) box.resize() colorBack = frame.getEmbeddedWindow().getColor() box.getBackground().setColor(colorBack) frame.getEmbeddedWindow().setWindow(box) box.setVisibilityMode(osgWidget.Window.VM_ENTIRE) box.setEventMask(osgWidget.EVENT_NONE) frame.setVisibilityMode(osgWidget.Window.VM_ENTIRE) frame.resizeFrame(box.getWidth(), box.getHeight()) frame.resizeAdd(0, 0) event = EventOK(frame) frame.setUpdateCallback(event) frame.addCallback(event)
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D, # osgWidget.WindowManager.WM_USE_RENDERBINS | osgWidget.WindowManager.WM_PICK_DEBUG ) box = osgWidget.Box("HBOX", osgWidget.Box.HORIZONTAL) vbox = osgWidget.Box("vbox", osgWidget.Box.VERTICAL) label1 = createLabel(LABEL1) label2 = createLabel(LABEL2) # Setup the labels for horizontal box. label1.setPadding(10.0) label2.setPadding(10.0) label1.addSize(21.0, 22.0) label2.addSize(21.0, 22.0) label1.setColor(1.0, 0.5, 0.0, 0.0) label2.setColor(1.0, 0.5, 0.0, 0.5) label2.setImage("Images/Brick-Norman-Brown.TGA", True) box.addWidget(label1) box.addWidget(label2) box.attachMoveCallback() box.attachScaleCallback() box.attachRotateCallback() # Setup the labels for the vertical box. label3 = createLabel("Label 3", 80) label4 = createLabel("Label 4", 60) label5 = createLabel("ABCDEFGHIJK", 93) label3.setPadding(3.0) label4.setPadding(3.0) label5.setPadding(3.0) label3.setColor(0.0, 0.0, 0.5, 0.5) label4.setColor(0.0, 0.0, 0.5, 0.5) label5.setColor(0.0, 0.0, 0.5, 0.5) #label5.setAlignHorizontal(osgWidget.Widget.HA_LEFT) #label5.setAlignVertical(osgWidget.Widget.VA_BOTTOM) # Test our label copy construction... label6 = osg.clone(label5, "label6", osg.CopyOp.DEEP_COPY_ALL) label6.setLabel("abcdefghijklmnopqrs") vbox.addWidget(label3) vbox.addWidget(label4) vbox.addWidget(label5) vbox.addWidget(label6) vbox.attachMoveCallback() vbox.attachScaleCallback() vbox.resize() # vbox.setVisibilityMode(osgWidget.Window.VM_ENTIRE) # vbox.setVisibleArea(50, 50, 500, 200) # vbox.setAnchorVertical(osgWidget.Window.VA_TOP) # vbox.setAnchorHorizontal(osgWidget.Window.HA_RIGHT) # Test our label-in-window copy construction... clonedBox = osg.clone(box, "HBOX-", osg.CopyOp.DEEP_COPY_ALL)() clonedBox.getBackground().setColor(0.0, 1.0, 0.0, 0.5) wm.addChild(box) wm.addChild(vbox) wm.addChild(clonedBox) return osgWidget.createExample(viewer, wm)
def main(argv): viewer = osgViewer.Viewer() # Let's get busy not The WindowManager class is actually an osg.Switch, # so you can add it to (ideally) an orthographic camera and have it behave as # expected. Note that you create a WindowManager with a NodeMask--it is very important # that this be unique for picking to work properly. This also makes it possible to have # multiple WindowManagers each operating on their own, unique set of Window objects. # The final bool argument is a group of flags that introduce optional functionality # for the WindowManager. In our case we include the flags USE_PYTHON and USE_LUA, # to demonstrate (and test) their usage. Finally, we pass the temporary WM_NO_BETA_WARN # argument, which prevents creating the orange warning window. :) It will be shown # in other examples... wm = osgWidget.WindowManager( viewer, 1280.0, 1024.0, MASK_2D, osgWidget.WindowManager.WM_USE_LUA | osgWidget.WindowManager.WM_USE_PYTHON | osgWidget.WindowManager.WM_PICK_DEBUG ) # An actual osgWidget.Window is pure virtual, so we've got to use the osgWidget.Box # implementation for now. At a later time, support for Tables and other kinds of # advanced layout Window types will be added. box = osgWidget.Box("box", osgWidget.Box.HORIZONTAL) # Now we actually attach our two types of callbacks to the box instance. The first # uses the simple function signature, the second uses a bound method, passing "this" # as the second argument to the Callback constructor. # Object obj static str data = "lol ur face not " # # box.addCallback(osgWidget.Callback(windowClicked, osgWidget.EVENT_MOUSE_PUSH, data)) # box.addCallback(osgWidget.Callback(windowScrolled, osgWidget.EVENT_MOUSE_SCROLL)) # box.addCallback(osgWidget.Callback( # Object.windowClicked, # obj, # osgWidget.EVENT_MOUSE_PUSH # )) # box.addCallback(CallbackObject(osgWidget.EVENT_MOUSE_PUSH)) # Create some of our "testing" Widgets included are two Widget subclasses I made # during testing which I've kept around for testing purposes. You'll notice # that you cannot move the box using the NullWidget, and that the NotifyWidget # is a bit verbose. :) widget1 = osgWidget.NotifyWidget("widget1", 300.0, 100.0) widget2 = osgWidget.NullWidget("widget2", 400.0, 75.0) widget3 = osgWidget.Widget("widget3", 100.0, 100.0) # Set the colors of widget1 and widget3 to green. widget1.setColor(0.0, 1.0, 0.0, 1.0) widget1.setCanFill(True) widget3.setColor(0.0, 1.0, 0.0, 1.0) widget1.setImage(osgDB.readImageFile("Images/Saturn.TGA"), True) # Set the color of widget2, to differentiate it and make it sassy. This is # like a poor man's gradient not widget2.setColor(0.9, 0.0, 0.0, 0.9, osgWidget.Widget.LOWER_LEFT) widget2.setColor(0.9, 0.0, 0.0, 0.9, osgWidget.Widget.LOWER_RIGHT) widget2.setColor(0.0, 0.0, 0.9, 0.9, osgWidget.Widget.UPPER_RIGHT) widget2.setColor(0.0, 0.0, 0.9, 0.9, osgWidget.Widget.UPPER_LEFT) # Now add our newly created widgets to our box. box.addWidget(widget1) box.addWidget(widget2) box.addWidget(widget3) # For maximum efficiency, Windows don't automatically reallocate their geometry # and internal positioning every time a widget is added. Thus, we either have to # call the WindowManger.resizeAllWindows method or manually call # Window.resize when we're ready. box.resize() # Now, lets clone our existing box and create a copy of of it, also adding that # to the WindowManager. This demonstrates the usages of OSG's .clone() support, # though that is abstracted by our META_UIObject macro. boxCopy = osg.clone(box, "newBox", osg.CopyOp.DEEP_COPY_ALL) # Move our copy to make it visible. boxCopy.setOrigin(0.0, 125.0) boxCopy.getByName("widget1").setColor(0.5, 0.0, 1.0, 1.0) boxCopy.getByName("widget3").setColor(0.5, 0.0, 1.0, 1.0) # Add the successfully created Box (if we get this far) into the WindowManager, so # that they can receive events. wm.addChild(box) wm.addChild(boxCopy) # Now, ask our box to be 100% the width of the WindowManager. boxCopy.resizePercent(100.0, 0.0) # Here we demonstrate the use of osgWidget/io_utils. This is really only useful for # debugging at the moment. # print *box, *boxCopy # Setup our OSG objects for our scene note the use of the utility function # createOrthoCamera, which is just a helper for setting up a proper viewing area. # An alternative (and a MUCH easier alternative at that not ) is to # simply use the createParentOrthoCamera method of the WindowManager class, # which will wrap the calls to createOrthoCamera and addChild for us not Check out # some of the other examples to see this in action... group = osg.Group() camera = osgWidget.createOrthoCamera(1280.0, 1024.0) model = osgDB.readNodeFile("cow.osgt") # Add our event handler is this better as a MatrixManipulator? Add a few other # helpful ViewerEventHandlers. viewer.addEventHandler(osgWidget.MouseHandler(wm)) viewer.addEventHandler(osgWidget.KeyboardHandler(wm)) viewer.addEventHandler(osgWidget.ResizeHandler(wm, camera)) viewer.addEventHandler(osgWidget.CameraSwitchHandler(wm, camera)) viewer.addEventHandler(osgViewer.StatsHandler()) viewer.addEventHandler(osgViewer.WindowSizeHandler()) viewer.addEventHandler(osgGA.StateSetManipulator( viewer.getCamera().getOrCreateStateSet() )) # Set our first non-UI node to be something other than the mask we created our # WindowManager with to avoid picking. # TODO: Do I need to create a mechanism for doing this automatically, or should # that be the responsibility of the users of osgWidget? model.setNodeMask(MASK_3D) # Add the WindowManager instance to the 2D camera. This isn't strictly necessary, # and you can get some cool results putting the WindowManager directly into a # 3D scene. This is not necessary if you use WindowManager.createParentOrthoCamera. camera.addChild(wm) # Add our camera and a testing 3D model to the scene. group.addChild(camera) group.addChild(model) # Here we show how to both run simple strings of code AND run entire files. These # assume that you're running the osgwidgetwindow example from the build directory, # otherwise you'll need to adjust the file path below in the call to runFile(). wm.getLuaEngine().eval("window = osgwidget.newWindow()") wm.getLuaEngine().runFile("osgWidget/osgwidgetwindow.lua") wm.getPythonEngine().eval("import osgwidget") wm.getPythonEngine().runFile("osgWidget/osgwidgetwindow.py") viewer.setUpViewInWindow(0, 0, 1280, 1024) viewer.setSceneData(group) # # cameras = osgViewer.Viewer.Cameras() # viewer.getCameras(cameras) # c = cameras[0] # s = osg.Matrix.scale(1.0, -1.0, 1.0) # c.setProjectionMatrix(s * c.getProjectionMatrix()) # return viewer.run()
class Notebook (osgWidget.Box) : _tabs = osgWidget.Box() _windows = osgWidget.Canvas() # NOTE: This whole thing is just a hack to demonstrate a concept. The real # implementation would need to be much cleaner. def callbackTabPressed(ev): objs = _windows.getObjects() for(unsigned int i = 0 i < objs.size() i++) objs[i].setLayer( osgWidget.Widget.LAYER_MIDDLE, i * 2 ) _windows.getByName(ev.getWidget().getName()).setLayer( osgWidget.Widget.LAYER_MIDDLE, objs.size() * 2 ) _windows.resize() return True Notebook( str name): osgWidget.Box(name, osgWidget.Box.VERTICAL) _tabs = osgWidget.Box("tabs", osgWidget.Box.HORIZONTAL) _windows = osgWidget.Canvas("canvas") for(unsigned int i = 0 i < 4 i++) ss = strstream() # Setup everything for our Tab... ss, "Tab_", i label1 = osgWidget.Label(ss.str()) label1.setFont("fonts/VeraMono.ttf") label1.setFontSize(20) label1.setFontColor(1.0, 1.0, 1.0, 1.0) label1.setColor(0.0, i / 4.0, 0.3, 1.0) label1.setLabel(ss.str()) label1.addSize(20.0, 20.0) label1.setShadow(0.1) label1.setCanFill(True) _tabs.addWidget(label1) # Setup everything for the Window corresponding to the Tab # in the Canvas down below. descr = strstream() descr, "This is some text", "for the Tab_", i, " tab.", "Press the button up top", "And this should go to the next Window not " label2 = osgWidget.Label(ss.str()) label2.setFont("fonts/Vera.ttf") label2.setFontSize(15) label2.setFontColor(1.0, 1.0, 1.0, 1.0) label2.setColor(0.0, i / 4.0, 0.3, 1.0) label2.setLabel(descr.str()) label2.setLayer(osgWidget.Widget.LAYER_MIDDLE, i * 2) label2.addSize(50.0, 50.0) _windows.addWidget(label2, 0.0, 0.0) label1.setEventMask(osgWidget.EVENT_MOUSE_PUSH) label1.addCallback(osgWidget.Callback( Notebook.callbackTabPressed, this, osgWidget.EVENT_MOUSE_PUSH ))
def main(argv): viewer = osgViewer.Viewer() wm = osgWidget.WindowManager(viewer, 1280.0, 1024.0, MASK_2D, osgWidget.WindowManager.WM_PICK_DEBUG) frame = osgWidget.Frame.createSimpleFrame("frame", 32.0, 32.0, 300.0, 300.0) frame2 = osgWidget.Frame.createSimpleFrameFromTheme( "frameTheme", osgDB.readImageFile("osgWidget/theme-1.png"), 300.0, 300.0, osgWidget.Frame.FRAME_ALL) frame2.setPosition(300, 100, 0) frame2.getBackground().setColor(1.0, 1.0, 1.0, 0.0) frame22 = osgWidget.Frame.createSimpleFrameFromTheme( "frameTheme", osgDB.readImageFile("osgWidget/theme-2.png"), 300.0, 300.0, osgWidget.Frame.FRAME_ALL) frame22.setPosition(300, 100, 0) frame22.getBackground().setColor(1.0, 1.0, 1.0, 0.0) frame3 = osgWidget.Frame.createSimpleFrameFromTheme( "frameTheme", osgDB.readImageFile("osgWidget/theme-2.png"), 300.0, 300.0, osgWidget.Frame.FRAME_ALL) frame3.setPosition(300, 100, 0) frame3.getBackground().setColor(0.0, 0.0, 0.0, 1.0) table = osgWidget.Table("table", 2, 2) bottom = osgWidget.Box("panel", osgWidget.Box.HORIZONTAL) table.addWidget(osgWidget.Widget("red", 300.0, 300.0), 0, 0) table.addWidget(osgWidget.Widget("white", 300.0, 300.0), 0, 1) table.addWidget(osgWidget.Widget("yellow", 300.0, 300.0), 1, 0) table.addWidget(osgWidget.Widget("purple", 300.0, 300.0), 1, 1) table.getByRowCol(0, 0).setColor(1.0, 0.0, 0.0, 1.0) table.getByRowCol(0, 1).setColor(1.0, 1.0, 1.0, 1.0) table.getByRowCol(1, 0).setColor(1.0, 1.0, 0.0, 1.0) table.getByRowCol(1, 1).setColor(1.0, 0.0, 1.0, 1.0) table.getByRowCol(0, 0).setMinimumSize(100.0, 100.0) table.getByRowCol(0, 1).setMinimumSize(100.0, 100.0) table.getByRowCol(1, 0).setMinimumSize(100.0, 100.0) table.getByRowCol(1, 1).setMinimumSize(100.0, 100.0) frame.setWindow(table) # Give frame some nice textures. # TODO: This has to be done after setWindow() wtf? frame.getBackground().setColor(0.0, 0.0, 0.0, 0.0) l = frame.getBorder(osgWidget.Frame.BORDER_LEFT) r = frame.getBorder(osgWidget.Frame.BORDER_RIGHT) t = frame.getBorder(osgWidget.Frame.BORDER_TOP) b = frame.getBorder(osgWidget.Frame.BORDER_BOTTOM) l.setImage("osgWidget/border-left.tga", True) r.setImage("osgWidget/border-right.tga", True) t.setImage("osgWidget/border-top.tga", True) b.setImage("osgWidget/border-bottom.tga", True) l.setTexCoordWrapVertical() r.setTexCoordWrapVertical() t.setTexCoordWrapHorizontal() b.setTexCoordWrapHorizontal() # Create the bottom, XArt panel. left = osgWidget.Widget("left", 512.0, 256.0) center = osgWidget.Widget("center", 256.0, 256.0) right = osgWidget.Widget("right", 512.0, 256.0) left.setImage("osgWidget/panel-left.tga", True) center.setImage("osgWidget/panel-center.tga", True) right.setImage("osgWidget/panel-right.tga", True) center.setTexCoordWrapHorizontal() bottom.addWidget(left) bottom.addWidget(center) bottom.addWidget(right) bottom.getBackground().setColor(0.0, 0.0, 0.0, 0.0) bottom.setOrigin(0.0, 1024.0 - 256.0) # Add everything to the WindowManager. wm.addChild(frame) wm.addChild(frame2) wm.addChild(frame22) wm.addChild(frame3) wm.addChild(bottom) return osgWidget.createExample(viewer, wm)
elif name == "pause" : elif name == "open" : lsf = dynamic_cast<ListFunctor*>(_listBox.getUpdateCallback()) if not lsf : return False lsf.toggleShown() else return False return True void AnimtkViewerGUI._createButtonBox() _buttonBox = osgWidget.Box("buttonBox", osgWidget.Box.HORIZONTAL) space = osgWidget.Widget("nullSpace", 0.0, 0.0) back = _createButton("back") next = _createButton("next") play = _createButton("play") pause = _createButton("pause") stop = _createButton("stop") open = _createButton("open") space.setCanFill(True) space.setColor(0.0, 0.0, 0.0, 0.0) _buttonBox.addWidget(space) _buttonBox.addWidget(back) _buttonBox.addWidget(next)