Mercurial > projects > mde
view examples/guiDemo.d @ 117:aba2dd815a1f
Some tweaks to popup events and widgets.
Moved gui.mtt to guiDemo.mtt
Changed handling of clicks with popups.
Made some of the popup widgets use usual from widget data construction.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Fri, 26 Dec 2008 12:07:38 +0000 |
parents | ee209602770d |
children | 5b37d0400732 |
line wrap: on
line source
/* LICENSE BLOCK Part of mde: a Modular D game-oriented Engine Copyright © 2007-2008 Diggory Hardy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /** Main module for a gui demo & testing executable. */ module examples.guiDemo; import mde.imde; // this module's interface for external modules import mde.events; // pollEvents() // NOTE: Must be imported before Init, otherwise fonts don't display properly (why??) import mde.setup.Init; // initialization import mde.lookup.Options; // pollInterval option import mde.scheduler.Scheduler; // mainSchedule import mde.setup.Screen; // Screen.draw() import mde.setup.InitStage; // StageState import mde.gui.WidgetManager; import tango.core.Thread : Thread; // Thread.sleep() import tango.time.Clock; // Clock.now() import tango.util.log.Log : Log, Logger; debug (mdeUnitTest) { import mde.file.ssi; import mde.file.mergetag.mdeUT; } int main(char[][] args) { Logger logger = Log.getLogger ("mde.mde"); // If compiled with unittests, notify that they completed and exit: debug (mdeUnitTest) { logger.info ("Compiled unittests have completed; terminating."); return 0; } // Set up the gui scope WidgetManager gui = new WidgetManager ("guiDemo"); StageState guiLoad () { // init func gui.init; gui.loadDesign(); return StageState.ACTIVE; } StageState guiSave () { gui.save; return StageState.INACTIVE; } addInitStage ("GuiM", &guiLoad, &guiSave, ["SWnd", "Font"]); scope Init init = new Init(args); // initialize mde //BEGIN Main loop setup /* Note: the main loop is currently controlled by the scheduler. This is not really ideal, * since it provides no direct control of the order in which components are executed and does * not allow running components simultaeneously with threads. * Note: probably drawing should start at the beginning of the loop and glFlush()/swapBuffers * be called at the end to optimise. */ mainSchedule.add (SCHEDULE.DRAW, &Screen.draw).request = true; // Draw, per event and first frame only. mainSchedule.add (mainSchedule.getNewID, &mde.events.pollEvents).frame = true; //END Main loop setup double pollInterval = miscOpts.pollInterval(); while (run) { mainSchedule.execute (Clock.now()); Thread.sleep (pollInterval); // sleep this many seconds } return 0; // cleanup handled by init's DTOR }