Mercurial > projects > mde
view mde/mde.d @ 143:2ac3e0012788
Added a simple Slider widget.
Moved SwitchWidget into PopupMenuWidget's module and renamed the module ParentContent.
Made editContent create DisplayContentWidgets for DebugContent (instead of ButtonContentWidgets).
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Mon, 09 Feb 2009 23:27:41 +0000 |
parents | 9f035cd139c6 |
children |
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/>. */ /** Modular D Engine * * This module contains a minimal main() function. Practically, it is useful for running unittests * and some other testing. It also serves as a basic example program. */ module mde.mde; import mde.imde; import mde.mainLoop; // Some setup for the main loop import mde.setup.Init; // initialization import mde.setup.Screen; // Screen.draw() import mde.scheduler.Scheduler; // mainSchedule import tango.core.Thread : Thread; // Thread.sleep() import tango.time.Clock; // Clock.now() import tango.util.log.Log : Log, Logger; debug (mdeUnitTest) { // These modules contain unittests which wouldn't be run otherwise. import mde.file.ssi; import mde.file.mergetag.mdeUT; import mde.file.mergetag.MTTagUnittest; import mde.lookup.Translation; import mde.gui.widget.layout; } //BEGIN A simple drawable to print a message in the window. /* This block of code is to draw the message you see on the screen. Most users of mde would be better off using the gui drawable in gui.WidgetManager than this. */ import mde.font.font; class SimpleDrawable : Screen.IDrawable { this () { msg = "Welcome to mde.\nThis executable is only for testing, and\nas such doesn't do anything interesting."; debug msg ~= "\nRunning in debug mode."; font = FontStyle.getDefault; // get the default or fallback font } void sizeEvent (int,int) {}; // Don't care what the size is void draw () { font.textBlock (16,32, msg, textCache, Colour.WHITE); } char[] msg; FontStyle font; TextBlock textCache; } //END A simple drawable to print a message in the window. 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; } scope Init init = new Init(args); // initialize mde // Note: must create the drawable after init, since it uses font (initialized in init). Screen.addDrawable (new SimpleDrawable); // a drawable to print a message. //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. However, it does allow easy run-on-request * functionality. * 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. // Further setup is done by mde.mainLoop. //END Main loop setup while (run) { mainSchedule.execute (Clock.now()); Thread.sleep (mainInterval); // sleep this many seconds } return 0; // cleanup handled by init's DTOR }