[Fresco-devel] 3 patches
Neil Pilgrim <[email protected]>
| Newsgroups | gmane.comp.video.fresco.devel |
|---|---|
| Message-ID | <[email protected]> |
Hmmm...long night of (not exactly amazing) hacking...Zzzz... Big_tidy.diff: some (small) tidying, which looks bigger than it is, but includes a change to ensure that the -R argument to the server accepts only the valid options. Big_demo.diff: polishing of the demo (application) appearance (IMHO;) http://www.kepier.clara.net/fresco/Big_demo.png Big_choice.diff: refactoring of the ToggleChoice and CheckboxChoice, including a change to make the 'labels' for the checkboxes also respond for the purposes of selecting elements. Please let me know wrt opinions of the patches and application status ;) -- Neil
Big_tidy.diff
(text/plain, 22.7 KB)
Index: Berlin/modules/Desktop/DesktopKitImpl.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Desktop/DesktopKitImpl.cc,v
retrieving revision 1.46
diff -u -r1.46 DesktopKitImpl.cc
--- Berlin/modules/Desktop/DesktopKitImpl.cc 26 Aug 2002 22:12:01 -0000 1.46
+++ Berlin/modules/Desktop/DesktopKitImpl.cc 31 Aug 2002 07:44:40 -0000
@@ -83,7 +83,7 @@
Graphic::Requisition req;
// GraphicImpl::init_requisiton(req) not needed as we init
- // everything manualy!
+ // everything manually!
req.preserve_aspect = false;
req.x.defined = true;
@@ -106,8 +106,8 @@
raster = _image->create("shade.png");
Image_var shadergraphic = _figure->pixmap(raster);
- Command_var shade = shader(wptr, vbox, down);
- Trigger_var shaderbutton = _widget->button(shadergraphic, shade);
+ Command_var shadecommand = shader(wptr, vbox, down);
+ Trigger_var shaderbutton = _widget->button(shadergraphic, shadecommand);
RefCount_var<Graphic> tbbuttons = _layout->hbox();
tbbuttons->append_graphic(shaderbutton);
Index: Berlin/modules/Widgets/Motif/WidgetKit.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Widgets/Motif/WidgetKit.cc,v
retrieving revision 1.28
diff -u -r1.28 WidgetKit.cc
--- Berlin/modules/Widgets/Motif/WidgetKit.cc 29 May 2002 06:49:40 -0000 1.28
+++ Berlin/modules/Widgets/Motif/WidgetKit.cc 31 Aug 2002 07:44:43 -0000
@@ -106,8 +106,8 @@
{
Controller_var toggle = _tools->toggle(Fresco::Graphic::_nil());
Fresco::ToolKit::FrameSpec s1, s2;
- s1.brightness(0.5); s1._d(ToolKit::inset);
- s2.brightness(0.5); s2._d(ToolKit::outset);
+ s1.brightness(0.5); s1._d(Fresco::ToolKit::inset);
+ s2.brightness(0.5); s2._d(Fresco::ToolKit::outset);
Graphic_var frame = _tools->dynamic(g, 20., Fresco::Controller::toggled, s1, s2, true, toggle);
toggle->body(frame);
return toggle._retn();
Index: Berlin/server/server.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/server/server.cc,v
retrieving revision 1.56
diff -u -r1.56 server.cc
--- Berlin/server/server.cc 6 Aug 2002 22:31:38 -0000 1.56
+++ Berlin/server/server.cc 31 Aug 2002 07:44:48 -0000
@@ -154,7 +154,6 @@
// ---------------------------------------------------------------
// Setup signalhandling
// ---------------------------------------------------------------
-
Dump *dump = new Dump;
Signal::set(Signal::usr2, dump);
Signal::set(Signal::abort, dump);
@@ -164,12 +163,11 @@
// ---------------------------------------------------------------
// Parse commandline arguments
// ---------------------------------------------------------------
-
GetOpt getopt(argv[0], "a fresco display server");
getopt.add('h', "help", GetOpt::novalue, "help message");
getopt.add('v', "version", GetOpt::novalue, "version number");
- getopt.add('R', "export-ref",
- GetOpt::mandatory, "means of exporting server reference");
+ getopt.add('R', "export-ref", GetOpt::mandatory,
+ "means of exporting server reference: ior|corbaloc|nameserver");
getopt.add('l', "logger", GetOpt::optional, "switch logging on");
getopt.add('t', "tracer", GetOpt::novalue, "switch tracing on");
getopt.add('p', "profiler", GetOpt::novalue, "switch profiling on");
@@ -186,8 +184,32 @@
if (getopt.is_set("version")) { std::cout << "version is " << version
<< std::endl; return 0;}
if (getopt.is_set("help")) { getopt.usage(); return 0;}
-
+
std::string value;
+
+ // determine the method of exporting the server reference
+ enum { ior, corbaloc, nameserver } reference_export_method = nameserver;
+ if (getopt.get("export-ref", &value))
+ {
+ if("ior"==value) reference_export_method = ior;
+ else if ("corbaloc"==value) reference_export_method = corbaloc;
+ else if ("nameserver"==value) reference_export_method = nameserver;
+ else
+ {
+ std::cout << "option --export-ref/-R requires one of the values: \n"
+ << "\tior : <insert help here>"
+ << (reference_export_method==ior?"(default)":"") << "\n"
+ << "\tcorbaloc : <insert help here>"
+ << (reference_export_method==corbaloc?"(default)":"") << "\n"
+ << "\tnameserver : <insert help here>"
+ << (reference_export_method==nameserver?"(default)":"")
+ << endl;
+ return 0;
+ }
+ }
+
+ // determine what should be logged
+ value="";
if (getopt.get("logger", &value))
{
if (!value.empty())
@@ -226,12 +248,12 @@
<< std::endl;
}
}
- value = "";
- // Find our resorce file:
+ // Find our resource file:
+ value = "";
if (getopt.get("resource", &value))
{
- // Load resorcefile given on the commandline:
+ // Load resourcefile given on the commandline:
try
{
value = Prague::Path::expand_user(value);
@@ -316,13 +338,12 @@
Logger::log(Logger::loader) << "Commandline arguments are parsed,"
<< " configuration is read in." << std::endl;
- // ---------------------------------------------------------------
- // Setup CORBA
- // ---------------------------------------------------------------
-
CORBA::ORB_var orb;
try
{
+ // ---------------------------------------------------------------
+ // Setup CORBA
+ // ---------------------------------------------------------------
orb = CORBA::ORB_init(argc, argv);
PortableServer::POA_var poa = resolve_init<PortableServer::POA>(orb, "RootPOA");
PortableServer::POAManager_var pman = poa->the_POAManager();
@@ -338,12 +359,16 @@
policies[0] = poa->create_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION);
CORBA::Any value;
value <<= omniPolicy::LOCAL_CALLS_SHORTCUT;
- policies[1] = orb->create_policy(omniPolicy::LOCAL_SHORTCUT_POLICY_TYPE, value);
+ policies[1] =
+ orb->create_policy(omniPolicy::LOCAL_SHORTCUT_POLICY_TYPE,
+ value);
poa = poa->create_POA("shortcut", pman, policies);
// create a policy list to be used by kit specific POAs
policies.length(1);
- policies[0] = orb->create_policy(omniPolicy::LOCAL_SHORTCUT_POLICY_TYPE, value);
+ policies[0] =
+ orb->create_policy(omniPolicy::LOCAL_SHORTCUT_POLICY_TYPE,
+ value);
}
# elif defined(ORB_TAO)
// fillin TAO-specific initialisation here...
@@ -352,120 +377,122 @@
<< std::endl;
#endif
- DefaultPOA::default_POA(poa);
- Logger::log(Logger::corba) << "Default POA set up." << std::endl;
+ DefaultPOA::default_POA(poa);
+ Logger::log(Logger::corba) << "Default POA set up." << std::endl;
- // ---------------------------------------------------------------
- // Open the Console
- // ---------------------------------------------------------------
-
- value = "";
- getopt.get("console", &value);
- try { Console::open(value, argc, argv, poa); }
- catch (const std::runtime_error &e)
- {
+ // ---------------------------------------------------------------
+ // Open the Console
+ // ---------------------------------------------------------------
+ value = "";
+ getopt.get("console", &value);
+ try { Console::open(value, argc, argv, poa); }
+ catch (const std::runtime_error &e)
+ {
std::cerr << "ERROR: Failed to open the Console \"" << value
<< "\": " << e.what() << std::endl;
exit(2);
- }
-
- Logger::log(Logger::console) << "Console is initialized." << std::endl;
+ }
- // ---------------------------------------------------------------
- // Construct Server
- // ---------------------------------------------------------------
+ Logger::log(Logger::console) << "Console is initialized." << std::endl;
- PortableServer::POA_var insPOA;
- ServerImpl *server;
- value = "";
- getopt.get("export-ref",&value);
- if (value == "corbaloc")
- {
- insPOA = resolve_init<PortableServer::POA>(orb,"omniINSPOA");
- PortableServer::POAManager_var poam = insPOA->the_POAManager();
- poam->activate();
+ // ---------------------------------------------------------------
+ // Construct Server
+ // ---------------------------------------------------------------
+ PortableServer::POA_var insPOA;
+ ServerImpl *server;
+ switch(reference_export_method)
+ {
+ case corbaloc:
+ {
+ insPOA = resolve_init<PortableServer::POA>(orb,"omniINSPOA");
+ PortableServer::POAManager_var poam = insPOA->the_POAManager();
+ poam->activate();
- server = ServerImpl::create(insPOA, policies);
- Logger::log(Logger::loader) << "corbaloc setup." << std::endl;
- }
- else
- {
- server = ServerImpl::create(poa, policies);
- Logger::log(Logger::loader) << "no corbaloc. Setup skipped."
- << std::endl;
- }
+ server = ServerImpl::create(insPOA, policies);
+ Logger::log(Logger::loader) << "corbaloc setup." << std::endl;
+ }
+ break;
+ case ior:
+ case nameserver:
+ {
+ server = ServerImpl::create(poa, policies);
+ Logger::log(Logger::loader) << "no corbaloc. Setup skipped."
+ << std::endl;
+ }
+ break;
+ }
- Prague::Path path = RCManager::get_path("modulepath");
- for (Prague::Path::iterator i = path.begin(); i != path.end(); ++i)
+ Prague::Path path = RCManager::get_path("modulepath");
+ for (Prague::Path::iterator i = path.begin(); i != path.end(); ++i)
server->scan(*i);
- Logger::log(Logger::loader) << "Kits are loaded." << std::endl;
+ Logger::log(Logger::loader) << "Kits are loaded." << std::endl;
- // ---------------------------------------------------------------
- // Setup default DrawingKit
- // ---------------------------------------------------------------
-
- Kit::PropertySeq props;
- props.length(1);
- props[0].name = CORBA::string_dup("implementation");
- value = "";
- getopt.get("drawing", &value);
- if (!value.empty()) props[0].value = CORBA::string_dup(value.c_str());
- else props[0].value = CORBA::string_dup("LibArtDrawingKit");
- DrawingKit_var drawing =
+ // ---------------------------------------------------------------
+ // Setup default DrawingKit
+ // ---------------------------------------------------------------
+ Kit::PropertySeq props;
+ props.length(1);
+ props[0].name = CORBA::string_dup("implementation");
+ value = "";
+ getopt.get("drawing", &value);
+ if (!value.empty()) props[0].value = CORBA::string_dup(value.c_str());
+ else props[0].value = CORBA::string_dup("LibArtDrawingKit");
+ DrawingKit_var drawing =
server->resolve<DrawingKit>("IDL:fresco.org/Fresco/DrawingKit:1.0",
props,
poa);
- if (CORBA::is_nil(drawing))
- {
+ if (CORBA::is_nil(drawing))
+ {
std::cerr << "ERROR: Unable to open "
<< "IDL:fresco.org/Fresco/DrawingKit:1.0"
<< " with attribute "
<< props[0].name << '=' << props[0].value << std::endl;
exit(3);
- }
+ }
- Logger::log(Logger::drawing) << "Drawing system is set up." << std::endl;
+ Logger::log(Logger::drawing) << "Drawing system is set up." << std::endl;
- // ---------------------------------------------------------------
- // make a Screen graphic to hold this server's scene graph
- // ---------------------------------------------------------------
-
- ScreenImpl *screen = new ScreenImpl();
- EventManager *emanager = new EventManager(Controller_var(screen->_this()), screen->allocation());
- ScreenManager *smanager = new ScreenManager(Graphic_var(screen->_this()), emanager, drawing);
- screen->bind_managers(emanager, smanager);
+ // ---------------------------------------------------------------
+ // make a Screen graphic to hold this server's scene graph
+ // and set up associated event- and screen-managers
+ // ---------------------------------------------------------------
+ ScreenImpl *screen = new ScreenImpl();
+ EventManager *emanager =
+ new EventManager(Controller_var(screen->_this()),
+ screen->allocation());
+ ScreenManager *smanager =
+ new ScreenManager(Graphic_var(screen->_this()), emanager, drawing);
+ screen->bind_managers(emanager, smanager);
- Logger::log(Logger::loader) << "Screen is set up and managers are "
+ Logger::log(Logger::loader) << "Screen is set up and managers are "
<< "bound to it." << std::endl;
- props.length(0);
- LayoutKit_var layout = server->resolve<LayoutKit>("IDL:fresco.org/Fresco/LayoutKit:1.0", props, poa);
- Layout::Stage_var stage = layout->create_stage();
- DesktopImpl *desktop = new DesktopImpl(orb, stage);
- screen->body(Desktop_var(desktop->_this()));
- screen->append_controller(Desktop_var(desktop->_this()));
-
- Logger::log(Logger::layout) << "Desktop is created." << std::endl;
-
- // initialize the client listener
- server->set_singleton("IDL:fresco.org/Fresco/Desktop:1.0", Desktop_var(desktop->_this()));
- server->set_singleton("IDL:fresco.org/Fresco/DrawingKit:1.0", drawing);
- server->start();
-
- Logger::log(Logger::loader) << "Server started, registering with "
+ props.length(0);
+ LayoutKit_var layout =
+ server->resolve<LayoutKit>("IDL:fresco.org/Fresco/LayoutKit:1.0",
+ props, poa);
+ Layout::Stage_var stage = layout->create_stage();
+ DesktopImpl *desktop = new DesktopImpl(orb, stage);
+ screen->body(Desktop_var(desktop->_this()));
+ screen->append_controller(Desktop_var(desktop->_this()));
+
+ Logger::log(Logger::layout) << "Desktop is created." << std::endl;
+
+ server->set_singleton("IDL:fresco.org/Fresco/Desktop:1.0",
+ Desktop_var(desktop->_this()));
+ server->set_singleton("IDL:fresco.org/Fresco/DrawingKit:1.0", drawing);
+
+ // ---------------------------------------------------------------
+ // initialize the client listener and register server with CORBA
+ // ---------------------------------------------------------------
+ server->start();
+ Logger::log(Logger::loader) << "Server started, registering with "
<< "CORBA now." << std::endl;
- value = "";
- getopt.get("export-ref",&value);
- if (value == "ior")
- {
- Server_var serverRef = server->_this();
- std::cout << "Export Reference: FrescoServer="
- << orb->object_to_string(serverRef) << std::endl;
- Logger::log(Logger::corba) << "IOR exported." << std::endl;
- }
- else if (value == "corbaloc")
- {
+ switch(reference_export_method)
+ {
+ case corbaloc:
+ {
PortableServer::ObjectId_var oid =
PortableServer::string_to_ObjectId("FrescoServer");
insPOA->activate_object_with_id(oid,server);
@@ -474,9 +501,16 @@
std::cout << "Export Reference: FrescoServer="
<< "corbaloc::localhost/FrescoServer" << std::endl;
Logger::log(Logger::corba) << "Corbaloc exported." << std::endl;
- }
- else if (value == "nameserver" || value.empty())
- {
+ } break;
+ case ior:
+ {
+ Server_var serverRef = server->_this();
+ std::cout << "Export Reference: FrescoServer="
+ << orb->object_to_string(serverRef) << std::endl;
+ Logger::log(Logger::corba) << "IOR exported." << std::endl;
+ } break;
+ case nameserver:
+ {
try
{
bind_name(orb,
@@ -498,22 +532,28 @@
std::cerr << "Unknown exception finding Fresco" << std::endl;
exit(5);
}
- }
-
- Logger::log(Logger::corba) << "Server is registered with CORBA." << std::endl;
+ } break;
+ }
+ Logger::log(Logger::corba) << "Server is registered with CORBA."
+ << std::endl;
- // Start client via --execute argument
- value = "";
- getopt.get("execute", &value);
- if (!value.empty())
- {
+ // ---------------------------------------------------------------
+ // Start client via --execute argument
+ // ---------------------------------------------------------------
+ value = "";
+ getopt.get("execute", &value);
+ if (!value.empty())
+ {
exec_child(child, value);
- }
+ }
- Logger::log(Logger::loader) << "Running the ScreenManager now."
+ // ---------------------------------------------------------------
+ // Run screen manager
+ // ---------------------------------------------------------------
+ Logger::log(Logger::loader) << "Running the ScreenManager now."
<< std::endl;
- smanager->run();
- }
+ smanager->run();
+ }
catch (const CORBA::SystemException &e)
{
std::cerr << "ERROR: Unexpected CORBA::System exception caught: "
@@ -546,4 +586,3 @@
if (!CORBA::is_nil(orb)) orb->destroy();
return 0;
}
-
Index: Fresco/idl/Fresco/ToolKit.idl
===================================================================
RCS file: /cvs/fresco/Fresco/Fresco/idl/Fresco/ToolKit.idl,v
retrieving revision 1.16
diff -u -r1.16 ToolKit.idl
--- Fresco/idl/Fresco/ToolKit.idl 29 May 2002 06:57:01 -0000 1.16
+++ Fresco/idl/Fresco/ToolKit.idl 31 Aug 2002 07:44:57 -0000
@@ -92,7 +92,7 @@
//. The frame will have the given thickness and FrameSpec and will be
//. filled with the current default color if 'filled' is set to true.
Graphic frame(in Graphic g, in Coord thickness, in FrameSpec spec, in boolean fill);
- //. Same as frame(), but switches between drawinf one of the two
+ //. Same as frame(), but switches between drawing one of the two
//. given FrameSpecs according to the value of the flag
//. given by mask and Telltale.
//. s1 will be drawn whenever the examined flag is set, s2 will be
Index: Prague/include/Prague/Sys/GetOpt.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Prague/include/Prague/Sys/GetOpt.hh,v
retrieving revision 1.9
diff -u -r1.9 GetOpt.hh
--- Prague/include/Prague/Sys/GetOpt.hh 18 Jul 2001 04:27:32 -0000 1.9
+++ Prague/include/Prague/Sys/GetOpt.hh 31 Aug 2002 07:45:06 -0000
@@ -31,15 +31,19 @@
namespace Prague
{
-//. GetOpt manages a command line option data base. It deals with short and long options,
-//. and reorders the given option vector such that you can run different GetOpt instances over
-//. the argv vector one after another.
+//. GetOpt manages a command line option data base. It deals with short and
+//. long options, and reorders the given option vector such that you can run
+//. different GetOpt instances over the argv vector one after another.
class GetOpt
{
-public:
+ public:
//. the option type, i.e. whether an argument is required or not.
- enum type { novalue, optional, mandatory};
- enum order { inorder, require, permute};
+ enum type
+ {
+ novalue, // option has no value
+ optional, // option may take a value
+ mandatory // option must take a value
+ };
class NoSuchOption : std::exception
{
@@ -48,44 +52,47 @@
virtual ~NoSuchOption() throw() {}
virtual const char* what() const throw() { return "no such option";}
};
-private:
- struct cell
- {
- cell(char oo, const std::string &opt, type tt, const std::string &des)
- : set(false), o(oo), option(opt), t(tt), description(des) {}
- bool set;
- char o; // option char
- std::string option; // option name
- type t; // option type
- std::string description; // a description of option
- std::string value; // value of option (string)
- };
- typedef std::vector<cell> table_t; // option table
-public:
+
GetOpt(const char *, const char * = 0);
~GetOpt();
- //. print out usage information. This function uses help data provided with each
- //. registered option, i.e. it is suitable to be used as a help message.
+ //. print out usage information. This function uses help data provided with
+ //. each registered option, i.e. it is suitable to be used as a help message.
void usage() const;
//. parse the given argv
int parse(int argc, char **argv);
//. parse the given args
int parse(char *args);
//. register an option
- void add(char o, const std::string &option, type, const std::string & = "no description available");
+ void add(char o, const std::string &option, type,
+ const std::string & = "no description available");
//. return whether the option was issued
bool is_set(char o) const throw (NoSuchOption);
//. return whether the option was issued
bool is_set(const std::string &option) const throw (NoSuchOption);
- //. return whether the option was issued and return a value (if any) in out parameter
+ //. return whether the option was issued and return a value (if any) in out
+ //. parameter
bool get(char o, std::string *) const throw (NoSuchOption);
- //. return whether the option was issued and return a value (if any) in out parameter
+ //. return whether the option was issued and return a value (if any) in out
+ //. parameter
bool get(const std::string &option, std::string *) const throw (NoSuchOption);
-private:
+
+ private:
+ struct cell
+ {
+ cell(char oo, const std::string &opt, type tt, const std::string &des)
+ : set(false), o(oo), option(opt), t(tt), description(des) {}
+ bool set;
+ char o; // option char
+ std::string option; // option name
+ type t; // option type
+ std::string description; // a description of option
+ std::string value; // value of option (string)
+ };
+ typedef std::vector<cell> table_t; // option table
+
table_t table;
const char *p; // program basename
const char *u; // usage message
- order ordering;
//. try to extract a long option, return number of tokens consumed
size_t getlongopt(int argc, char **argv);
//. try to extract a short option, return number of tokens consumed
@@ -116,6 +123,9 @@
bool operator () (const cell &c) { return name == c.o;}
char name;
};
+
+// enum order { inorder, require, permute}; XXX Not referenced
+// order ordering; XXX Not referenced
};
};
Big_demo.diff
(text/plain, 10.2 KB)
Index: Clients-C++/src/Application.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/Application.cc,v
retrieving revision 1.29
diff -u -r1.29 Application.cc
--- Clients-C++/src/Application.cc 7 Aug 2002 15:52:29 -0000 1.29
+++ Clients-C++/src/Application.cc 31 Aug 2002 07:44:49 -0000
@@ -85,8 +85,18 @@
Raster_var raster = _ik->create("fresco.png");
Image_var image = _fk->pixmap(raster);
Graphic_var hbox = _lk->hbox();
- hbox->append_graphic(image);
+ Graphic_var vbox = _lk->vbox();
+ Graphic_var use1 = _tk->chunk(Unicode::to_CORBA(Babylon::String("Select a")));
+ Graphic_var use2 = _tk->chunk(Unicode::to_CORBA(Babylon::String("demo:")));
+ vbox->append_graphic(Graphic_var(_lk->vfill()));
+ vbox->append_graphic(use1);
+ vbox->append_graphic(use2);
+ vbox->append_graphic(Graphic_var(_lk->vfill()));
+ Graphic_var black_usage = _ttk->rgb(vbox, 0., 0., 0.);
+ hbox->append_graphic(Graphic_var(_lk->hfill()));
+ hbox->append_graphic(black_usage);
hbox->append_graphic(Graphic_var(_lk->hfill()));
+ hbox->append_graphic(image);
_vbox->append_graphic(hbox);
Graphic_var glyph = _tk->chunk(Unicode::to_CORBA(Babylon::String("close")));
@@ -140,28 +150,35 @@
void Application::run()
{
-
_vbox->append_graphic(Graphic_var(_lk->vspace(200.)));
ToolKit::FrameSpec spec;
spec.brightness(0.5); spec._d(ToolKit::concav);
_vbox->append_graphic(Graphic_var(_ttk->frame(_choice, 20., spec, false)));
_vbox->append_graphic(Graphic_var(_lk->vspace(200.)));
+
+ // run button
Graphic_var glyph1 = _tk->chunk(Unicode::to_CORBA(Babylon::String("run")));
Graphic_var label1 = _lk->margin(glyph1, 20.);
- Trigger_var run = _wk->button(Graphic_var(_ttk->rgb(label1, 0., 0., 0.)), Command_var(_mapper->_this()));
+ Graphic_var label1f = _lk->hmargin_lr_flexible(label1,
+ 0,100000,0,
+ 0,100000,0);
+ Trigger_var run = _wk->button(Graphic_var(_ttk->rgb(label1f, 0., 0., 0.)),
+ Command_var(_mapper->_this()));
+
+ // quit button
Graphic_var glyph2 = _tk->chunk(Unicode::to_CORBA(Babylon::String("quit")));
Graphic_var label2 = _lk->margin(glyph2, 20.);
ExitCommand *cmd = new ExitCommand();
- Trigger_var quit = _wk->button(Graphic_var(_ttk->rgb(label2, 0., 0., 0.)), Command_var(cmd->_this()));
-
- _vbox->append_graphic(Graphic_var(_lk->vspace(200.)));
+ Graphic_var label2f = _lk->hmargin_lr_flexible(label2,
+ 0,100000,0,
+ 0,100000,0);
+ Trigger_var quit = _wk->button(Graphic_var(_ttk->rgb(label2f, 0., 0., 0.)),
+ Command_var(cmd->_this()));
Graphic_var hbox = _lk->hbox();
- hbox->append_graphic(Graphic_var(_lk->hglue(200., 0., 10000.)));
hbox->append_graphic(run);
hbox->append_graphic(Graphic_var(_lk->hspace(200.)));
hbox->append_graphic(quit);
- hbox->append_graphic(Graphic_var(_lk->hglue(200., 0., 10000.)));
_vbox->append_graphic(hbox);
Graphic_var margin = _lk->margin(_vbox, 200.);
Index: Clients-C++/src/ColorDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/ColorDemo.cc,v
retrieving revision 1.9
diff -u -r1.9 ColorDemo.cc
--- Clients-C++/src/ColorDemo.cc 7 Aug 2002 15:52:29 -0000 1.9
+++ Clients-C++/src/ColorDemo.cc 31 Aug 2002 07:44:50 -0000
@@ -107,7 +107,7 @@
vbox->append_graphic(hbox28);
hbox->append_graphic(vbox);
Controller_var root = tools->group(Graphic_var(layout->margin(hbox, 100.)));
- application->append(root, Babylon::String("Color demo"));
+ application->append(root, Babylon::String("Color"));
}
void ColorDemo::adjust(Tag tag)
Index: Clients-C++/src/DocDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/DocDemo.cc,v
retrieving revision 1.7
diff -u -r1.7 DocDemo.cc
--- Clients-C++/src/DocDemo.cc 7 Aug 2002 15:52:29 -0000 1.7
+++ Clients-C++/src/DocDemo.cc 31 Aug 2002 07:44:51 -0000
@@ -49,5 +49,5 @@
Controller_var page = widgets->scrollable(Graphic_var(tools->rgb(column, 0., 0., .0)));
Controller_var root = tools->group(Graphic_var(layout->fixed_size(page, 3000., 2000.)));
root->append_controller(page);
- application->append(root, Babylon::String("multiline text demo"));
+ application->append(root, Babylon::String("multiline text"));
};
Index: Clients-C++/src/EditTextDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/EditTextDemo.cc,v
retrieving revision 1.12
diff -u -r1.12 EditTextDemo.cc
--- Clients-C++/src/EditTextDemo.cc 7 Aug 2002 15:52:29 -0000 1.12
+++ Clients-C++/src/EditTextDemo.cc 31 Aug 2002 07:44:51 -0000
@@ -53,5 +53,5 @@
spec.brightness(0.5); spec._d(ToolKit::inset);
Graphic_var frame = tools->frame(Graphic_var(layout->margin(Graphic_var(layout->hfixed(Graphic_var(tools->rgb(txt, 0., 0., 0.)), 4000)), 50.)), 20., spec, true);
buf->insert_string(Unicode::to_CORBA(str));
- application->append(Controller_var(tools->text_input(frame, vis_buf)), Babylon::String("editable text demo"));
+ application->append(Controller_var(tools->text_input(frame, vis_buf)), Babylon::String("editable text"));
};
Index: Clients-C++/src/FocusDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/FocusDemo.cc,v
retrieving revision 1.17
diff -u -r1.17 FocusDemo.cc
--- Clients-C++/src/FocusDemo.cc 7 Aug 2002 15:52:29 -0000 1.17
+++ Clients-C++/src/FocusDemo.cc 31 Aug 2002 07:44:52 -0000
@@ -104,5 +104,5 @@
gr->append_controller(c2);
gr->append_controller(c3);
gr->append_controller(c4);
- application->append(gr, Babylon::String("focus demo"));
+ application->append(gr, Babylon::String("focus"));
};
Index: Clients-C++/src/LayoutDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/LayoutDemo.cc,v
retrieving revision 1.11
diff -u -r1.11 LayoutDemo.cc
--- Clients-C++/src/LayoutDemo.cc 7 Aug 2002 15:52:29 -0000 1.11
+++ Clients-C++/src/LayoutDemo.cc 31 Aug 2002 07:44:52 -0000
@@ -56,5 +56,5 @@
group->append_controller(button1);
group->append_controller(button2);
group->append_controller(button3);
- application->append(group, Babylon::String("layout demo"));
+ application->append(group, Babylon::String("layout"));
};
Index: Clients-C++/src/LogoDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/LogoDemo.cc,v
retrieving revision 1.20
diff -u -r1.20 LogoDemo.cc
--- Clients-C++/src/LogoDemo.cc 7 Aug 2002 15:52:29 -0000 1.20
+++ Clients-C++/src/LogoDemo.cc 31 Aug 2002 07:44:53 -0000
@@ -131,7 +131,7 @@
spec.brightness(0.5); spec._d(ToolKit::inset);
Graphic_var foo = tools->frame(box, 10., spec, true);
Controller_var bar = tools->group(foo);
- application->append(bar, Babylon::String("MVC demo"));
+ application->append(bar, Babylon::String("MVC"));
}
Graphic_ptr LogoDemo::make_controller(BoundedValue_ptr value, const Color &color)
Index: Clients-C++/src/RasterDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/RasterDemo.cc,v
retrieving revision 1.8
diff -u -r1.8 RasterDemo.cc
--- Clients-C++/src/RasterDemo.cc 7 Aug 2002 15:52:30 -0000 1.8
+++ Clients-C++/src/RasterDemo.cc 31 Aug 2002 07:44:53 -0000
@@ -48,5 +48,5 @@
hbox->append_graphic(Graphic_var(widgets->button(im, command3)));
Controller_var group = tools->group(hbox);
- application->append(group, Babylon::String("raster demo"));
+ application->append(group, Babylon::String("raster"));
};
Index: Clients-C++/src/TermDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/TermDemo.cc,v
retrieving revision 1.6
diff -u -r1.6 TermDemo.cc
--- Clients-C++/src/TermDemo.cc 7 Aug 2002 15:52:30 -0000 1.6
+++ Clients-C++/src/TermDemo.cc 31 Aug 2002 07:44:54 -0000
@@ -40,5 +40,5 @@
scrollable->append_controller(terminal);
Controller_var group = tools->group(Graphic_var(layout->fixed_size(scrollable, 4000., 3000.)));
group->append_controller(scrollable);
- application->append(group, Babylon::String("terminal demo"));
+ application->append(group, Babylon::String("terminal"));
};
Index: Clients-C++/src/TextDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/TextDemo.cc,v
retrieving revision 1.7
diff -u -r1.7 TextDemo.cc
--- Clients-C++/src/TextDemo.cc 7 Aug 2002 15:52:30 -0000 1.7
+++ Clients-C++/src/TextDemo.cc 31 Aug 2002 07:44:54 -0000
@@ -42,5 +42,5 @@
Babylon::String str(34, chars);
Graphic_var txt = text->chunk(Unicode::to_CORBA(str));
Controller_var group = tools->group(Graphic_var(tools->rgb(txt, 0.7, 0.8, 1.0)));
- application->append(group, Babylon::String("text demo"));
+ application->append(group, Babylon::String("text"));
};
Index: Clients-C++/src/TransformDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/TransformDemo.cc,v
retrieving revision 1.9
diff -u -r1.9 TransformDemo.cc
--- Clients-C++/src/TransformDemo.cc 7 Aug 2002 15:52:30 -0000 1.9
+++ Clients-C++/src/TransformDemo.cc 31 Aug 2002 07:44:54 -0000
@@ -51,5 +51,5 @@
Transform_var(transformer->transformation())->rotate(45., zaxis);
Graphic_var root = layout->halign(transformer, 0.);
Controller_var group = tools->group(root);
- application->append(group, Babylon::String("transformation demo"));
+ application->append(group, Babylon::String("transformation"));
};
Index: Clients-C++/src/ViewportDemo.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Clients-C++/src/ViewportDemo.cc,v
retrieving revision 1.10
diff -u -r1.10 ViewportDemo.cc
--- Clients-C++/src/ViewportDemo.cc 7 Aug 2002 15:52:30 -0000 1.10
+++ Clients-C++/src/ViewportDemo.cc 31 Aug 2002 07:44:55 -0000
@@ -63,5 +63,5 @@
group->append_controller(xscroller);
group->append_controller(yscroller);
- application->append(group, Babylon::String("viewport demo"));
+ application->append(group, Babylon::String("viewport"));
}
Big_choice.diff
(text/plain, 9.2 KB)
Index: Berlin/modules/Widgets/Motif/Choice.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Widgets/Motif/Choice.cc,v
retrieving revision 1.17
diff -u -r1.17 Choice.cc
--- Berlin/modules/Widgets/Motif/Choice.cc 29 May 2002 06:49:40 -0000 1.17
+++ Berlin/modules/Widgets/Motif/Choice.cc 31 Aug 2002 07:44:41 -0000
@@ -56,41 +56,53 @@
: ::Motif::Choice(s, l, t, w)
{}
-Tag ToggleChoice::append_item(Graphic_ptr g)
+RefCount_var<Fresco::Graphic> ToggleChoice::create_item(Graphic_ptr g, Tag& t)
{
- Trace trace("ToggleChoice::append_item");
- RefCount_var<Fresco::Controller> toggle =
- widgets->toggle(RefCount_var<Fresco::Graphic>(layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.)));
- Tag tag = selection->add(toggle);
- append_controller(toggle);
- RefCount_var<Fresco::Graphic> item = layout->hbox();
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(toggle, 50.)), 0.5)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(200.)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
- Graphic_var box = body();
+ Trace trace("ToggleChoice::create_item");
+
+ // Define initial hbox, which is nested inside a toggle-box (no bevel!)
+ RefCount_var<Fresco::Graphic> box = layout->hbox();
+ RefCount_var<Fresco::Controller> toggle_box = tools->toggle(box);
+ t = selection->add(toggle_box);
+ append_controller(toggle_box);
+
+ // 'toggle': simply a graphic with bevel dependent upon toggle_box
+ RefCount_var<Fresco::Graphic> toggle =
+ layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.);
+ Fresco::ToolKit::FrameSpec s1, s2;
+ s1.brightness(0.5); s1._d(Fresco::ToolKit::inset);
+ s2.brightness(0.5); s2._d(Fresco::ToolKit::outset);
+ Graphic_var frame = tools->dynamic(toggle, 20., Fresco::Controller::toggled,
+ s1, s2, true, toggle_box);
+
+ // now add the toggle button into the button box, along with g
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(frame, 50.)), 0.5)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(100.)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(50.)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hfill()));
+
+ // Add the 'active item' border
Fresco::ToolKit::FrameSpec none, colored;
Color black = {0., 0., 0., 1.};
colored.foreground(black);
- box->append_graphic(RefCount_var<Fresco::Graphic>(tools->dynamic(item, 20., Fresco::Controller::active, colored, none, false, toggle)));
+ return RefCount_var<Fresco::Graphic>(tools->dynamic(toggle_box, 20.,
+ Fresco::Controller::active, colored, none, false, toggle_box));
+}
+
+Tag ToggleChoice::append_item(Graphic_ptr g)
+{
+ Trace trace("ToggleChoice::append_item");
+ Tag tag;
+ body()->append_graphic(create_item(g,tag));
return tag;
}
Tag ToggleChoice::prepend_item(Graphic_ptr g)
{
Trace trace("ToggleChoice::prepend_item");
- RefCount_var<Fresco::Controller> toggle =
- widgets->toggle(RefCount_var<Fresco::Graphic>(layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.)));
- Tag tag = selection->add(toggle);
- append_controller(toggle);
- RefCount_var<Fresco::Graphic> item = layout->hbox();
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(toggle, 50.)), 0.5)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(200.)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
- Graphic_var box = body();
- Fresco::ToolKit::FrameSpec none, colored;
- Color black = {0., 0., 0., 1.};
- colored.foreground(black);
- box->prepend_graphic(RefCount_var<Fresco::Graphic>(tools->dynamic(item, 20., Fresco::Controller::active, colored, none, false, toggle)));
+ Tag tag;
+ body()->prepend_graphic(create_item(g,tag));
return tag;
}
@@ -106,57 +118,53 @@
: ::Motif::Choice(s, l, t, w)
{}
-Tag CheckboxChoice::append_item(Graphic_ptr g)
+RefCount_var<Fresco::Graphic> CheckboxChoice::create_item(Graphic_ptr g, Tag& t)
{
- Trace trace("CheckboxChoice::append_item");
- RefCount_var<Fresco::Controller> toggle = tools->toggle(Fresco::Graphic::_nil());
- Tag tag = selection->add(toggle);
- append_controller(toggle);
+ Trace trace("CheckboxChoice::create_item");
+ // Define initial hbox, which is nested inside a toggle-box (no bevel!)
+ RefCount_var<Fresco::Graphic> box = layout->hbox();
+ RefCount_var<Fresco::Controller> toggle_box = tools->toggle(box);
+ t = selection->add(toggle_box);
+ append_controller(toggle_box);
+
+ // 'toggle': simply a graphic with bevel dependent upon toggle_box state
+ RefCount_var<Fresco::Graphic> toggle =
+ layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.);
Fresco::ToolKit::FrameSpec s1, s2;
- s1.brightness(0.5); s1._d(ToolKit::outset);
- s2.brightness(0.5); s2._d(ToolKit::inset);
+ s1.brightness(0.5); s1._d(Fresco::ToolKit::outset);
+ s2.brightness(0.5); s2._d(Fresco::ToolKit::inset);
RefCount_var<Fresco::Graphic> frame =
- tools->dynamic_diamond(RefCount_var<Fresco::Graphic>(layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.)),
- 20., Fresco::Controller::toggled, s1, s2, true, toggle);
- toggle->body(frame);
-
- RefCount_var<Fresco::Graphic> item = layout->hbox();
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(toggle, 50.)), 0.5)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(200.)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
- Graphic_var box = body();
+ tools->dynamic_diamond(toggle, 20., Fresco::Controller::toggled,
+ s1, s2, true, toggle_box);
+
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(frame, 50.)), 0.5)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(100.)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(50.)));
+ box->append_graphic(RefCount_var<Fresco::Graphic>(layout->hfill()));
+
+ // Add the 'active item' border
Fresco::ToolKit::FrameSpec none, colored;
Color black = {0., 0., 0., 1.};
colored.foreground(black);
- box->append_graphic(RefCount_var<Fresco::Graphic>(tools->dynamic(item, 20., Fresco::Controller::active, colored, none, false, toggle)));
+ return RefCount_var<Fresco::Graphic>(tools->dynamic(toggle_box, 20.,
+ Fresco::Controller::active, colored, none, false, toggle_box));
+}
+
+Tag CheckboxChoice::append_item(Graphic_ptr g)
+{
+ Trace trace("CheckboxChoice::append_item");
+ Tag tag;
+ body()->append_graphic(create_item(g,tag));
return tag;
}
Tag CheckboxChoice::prepend_item(Graphic_ptr g)
{
Trace trace("CheckboxChoice::prepend_item");
- RefCount_var<Fresco::Controller> toggle = tools->toggle(Fresco::Graphic::_nil());
- Tag tag = selection->add(toggle);
- append_controller(toggle);
-
- ToolKit::FrameSpec s1, s2;
- s1.brightness(0.5); s1._d(ToolKit::outset);
- s2.brightness(0.5); s2._d(ToolKit::inset);
- RefCount_var<Fresco::Graphic> frame =
- tools->dynamic_diamond(RefCount_var<Fresco::Graphic>(layout->fixed_size(Fresco::Graphic::_nil(), 60., 60.)),
- 20., Fresco::Controller::toggled, s1, s2, true, toggle);
- toggle->body(frame);
-
- RefCount_var<Fresco::Graphic> item = layout->hbox();
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(RefCount_var<Fresco::Graphic>(layout->margin(toggle, 50.)), 0.5)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->hspace(200.)));
- item->append_graphic(RefCount_var<Fresco::Graphic>(layout->valign(g, 0.5)));
- Graphic_var box = body();
- Fresco::ToolKit::FrameSpec none, colored;
- Color black = {0., 0., 0., 1.};
- colored.foreground(black);
- box->prepend_graphic(RefCount_var<Fresco::Graphic>(tools->dynamic(item, 20., Fresco::Controller::active, colored, none, false, toggle)));
+ Tag tag;
+ body()->prepend_graphic(create_item(g,tag));
return tag;
}
Index: Berlin/modules/Widgets/Motif/Choice.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Widgets/Motif/Choice.hh,v
retrieving revision 1.9
diff -u -r1.9 Choice.hh
--- Berlin/modules/Widgets/Motif/Choice.hh 29 May 2002 06:49:40 -0000 1.9
+++ Berlin/modules/Widgets/Motif/Choice.hh 31 Aug 2002 07:44:42 -0000
@@ -60,6 +60,8 @@
virtual Fresco::Tag append_item(Fresco::Graphic_ptr);
virtual Fresco::Tag prepend_item(Fresco::Graphic_ptr);
void remove_item(Fresco::Tag);
+ private:
+ RefCount_var<Fresco::Graphic> create_item(Fresco::Graphic_ptr, Fresco::Tag &);
};
class CheckboxChoice : public Choice
@@ -69,6 +71,8 @@
virtual Fresco::Tag append_item(Fresco::Graphic_ptr);
virtual Fresco::Tag prepend_item(Fresco::Graphic_ptr);
void remove_item(Fresco::Tag);
+ private:
+ RefCount_var<Fresco::Graphic> create_item(Fresco::Graphic_ptr, Fresco::Tag &);
};
class ToolChoice : public Choice