// //Tree.cpp //Copyright (c) 2015 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. #include <oz++/Locale.h> #include <oz++/DirectoryScanner.h> #include <oz++/motif/ApplicationView.h> #include <oz++/motif/ScrolledTree.h> #include <oz++/motif/Label.h> #include <oz++/motif/PushButton.h> #include <oz++/motif/CompoundString.h> #include <oz++/motif/Color.h> namespace OZ { class MainView :public ApplicationView { private: SmartPtr<Tree> tree; void pushed(Action& action) { View* sender = (View*)action.getSender(); XmString xms; sender -> get(XmNlabelString, &xms); CompoundString cs(xms); char* name = cs.unparse(); printf("Pushed node=%s\n", name); XtFree(name); } public: MainView(Application& applet, const char* name, Args& args) :ApplicationView(applet, name, args) { Color color(this); Args ar; ar.set(XmNbackground, color.allocNamedColor("white")); tree = new Tree(this, "", ar); ar.reset(); ar.set(XmNbackground, color.allocNamedColor("pink")); View* root = tree -> addLabel(NULL, "CommonObject", ar); ar.reset(); ar.set(XmNbackground, color.allocNamedColor("lightgreen")); View* primitive = tree -> addLabel(root, "Primitive", ar); ar.reset(); ar.set(XmNbackground, color.allocNamedColor("lightblue")); View* composite = tree -> addLabel(root, "Composite", ar); ar.reset(); View* label = tree -> addPushButton(primitive, "Label", ar); ar.reset(); View* combob = tree -> addPushButton(primitive, "ComboBox", ar); ar.reset(); View* pushb = tree -> addPushButton(label, "PushButton", ar, this, (Callback)&MainView::pushed); ar.reset(); View* scrollb = tree -> addPushButton(primitive, "ScrollBar", ar, this, (Callback)&MainView::pushed); ar.reset(); View* text = tree -> addPushButton(primitive, "Text", ar, this, (Callback)&MainView::pushed); ar.reset(); View* textf = tree -> addPushButton(primitive, "TextField", ar, this, (Callback)&MainView::pushed); ar.reset(); View* drawnb = tree -> addPushButton(primitive, "DrawnButton", ar, this, (Callback)&MainView::pushed); ar.reset(); View* manager = tree -> addLabel(composite, "Manager", ar); ar.reset(); View* mainw = tree -> addLabel(manager, "MainWindow", ar); ar.reset(); View* rowColumn = tree -> addLabel(manager, "RowColumn", ar); ar.reset(); View* scrolledw = tree -> addLabel(manager, "ScrolledWindow", ar); ar.reset(); View* hierarchy = tree -> addLabel(manager, "Hierarchy", ar); ar.reset(); View* treev = tree -> addLabel(hierarchy, "Tree", ar); } ~MainView() { } }; } // int main(int argc, char** argv) { try { Locale locale; const char* appclass = argv[0]; Application applet(appclass, argc, argv); Args args; args.set(XmNgeometry, "550x300"); MainView view(applet, argv[0], args); view.realize(); applet.run(); } catch (Exception& ex) { caught(ex); } return 0; } |