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

Reply via email to