Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=1922edc8e244adf9b033a03a683ebe898bd0f078
commit 1922edc8e244adf9b033a03a683ebe898bd0f078 Author: James Buren <[email protected]> Date: Wed Aug 8 15:33:51 2012 -0500 add beginning module diff --git a/Makefile b/Makefile index 0565a20..15ce483 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # Setup general C++ flags. CXXFLAGS ?= -O2 -CXXFLAGS := $(CXXFLAGS) -Wall -Wextra -Wno-unused-parameter +CXXFLAGS := $(CXXFLAGS) -Wall -Wextra -Wno-unused-parameter -ggdb3 # Set library includes. CXXFLAGS := $(CXXFLAGS) -I/usr/include/yui diff --git a/beginning.cc b/beginning.cc new file mode 100644 index 0000000..20e77c0 --- /dev/null +++ b/beginning.cc @@ -0,0 +1,48 @@ +#include "master.h" + +#define BEGINNING_TEXT \ +"Welcome to the Frugalware Installer!\n" \ +"\n" \ +"Please click Next to continue.\n" + +static enum order beginning_run(void) +{ + enum order rv = ORDER_NONE; + YRichText *text = YUI::widgetFactory()->createRichText(master->contents,BEGINNING_TEXT,true); + + while(rv == ORDER_NONE) + { + YEvent *event = master->dialog->waitForEvent(); + + if(event->eventType() == YEvent::WidgetEvent) + { + YWidgetEvent *wevent = (YWidgetEvent*) event; + + if(wevent->widget() == master->next && wevent->reason() == YEvent::Activated) + rv = ORDER_NEXT; + } + + master->dialog->deleteEvent(event); + } + + return rv; +} + +extern struct slave *beginning_initialize(void) +{ + struct slave *p; + + p = new struct slave; + + memset(p,0,sizeof(struct slave)); + + p->next = 0; + + p->previous = 0; + + p->name = new std::string(__FILE__); + + p->run = beginning_run; + + return p; +} diff --git a/master.cc b/master.cc index 365607a..c9df796 100644 --- a/master.cc +++ b/master.cc @@ -1,11 +1,21 @@ #include "master.h" struct master *master; +struct slave *slaves; extern int main(int argc,char **argv) { + struct slave *slave; + + stderr = freopen("setup.log","wb",stderr); + + if(stderr == 0) + return 1; + master = new struct master; + memset(master,0,sizeof(struct master)); + master->dialog = YUI::widgetFactory()->createMainDialog(); master->verticalbox = YUI::widgetFactory()->createVBox(master->dialog); @@ -28,5 +38,37 @@ extern int main(int argc,char **argv) master->dialog->setSize(640,480); + slaves = beginning_initialize(); + + for( slave = slaves ; slave ; ) + { + enum order order; + + fprintf(stderr,"%s: about to clear children of contents widget\n",__FILE__); + + master->contents->deleteChildren(); + + fprintf(stderr,"%s: about to run slave module '%s'\n",__FILE__,slave->name->c_str()); + + order = slave->run(); + + switch(order) + { + case ORDER_NEXT: + slave = slave->next; + break; + + case ORDER_PREVIOUS: + slave = slave->previous; + break; + + default: + slave = 0; + break; + } + } + + master->dialog->destroy(); + return 0; } diff --git a/master.h b/master.h index 08d27f1..94e41bd 100644 --- a/master.h +++ b/master.h @@ -35,6 +35,14 @@ #include <YReplacePoint.h> #include <cstdio> #include <cstring> +#include <search.h> + +enum order +{ + ORDER_NONE, + ORDER_PREVIOUS, + ORDER_NEXT +}; struct master { @@ -46,4 +54,15 @@ struct master YPushButton *next; }; +struct slave +{ + struct slave *next; + struct slave *previous; + std::string *name; + enum order (*run) (void); +}; + extern struct master *master; +extern struct slave *slaves; + +extern struct slave *beginning_initialize(void); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
