Mercurial > projects > mde
view mde/exception.d @ 179:1f9d00f392bd default tip
Fixed a bug where (non-resizible) widgets wouldn't get shrunk when minimal size decreases, meaning optional context menus are hiden properly now.
Optimised when ServiceContentList.opCall is called, I think without breaking anything.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Tue, 15 Sep 2009 20:09:59 +0200 |
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/>. */ /****************************************************************************** * Contains the base class for all mde exceptions plus some exception classes. *****************************************************************************/ module mde.exception; /** Base class for all mde Exceptions. * * All packages should have their own base exception type extending this one, and for each package * level a CTOR taking a message should pass the message to the super. * A CTOR not taking a message and calling the super without a parameter may also be provided. * * The static string symbol * should be overriden as below so that it ends up as something like "mde.file" or * "mde.pkg.file.Class" describing where the exception was thrown. (Since only methods overload * correctly, symbol is made static and an overloadable method is used to access the correct symbol.) */ class mdeException : Exception { /// Override in derived classes to name the module where the error occured. char[] getSymbol () { return "mde"; } /// Prefix msg, e.g.: "mde.foo: message" char[] prefixedMsg () { return getSymbol() ~ ": " ~ msg; } this (char[] msg) { super(msg); } this () { // No supplied error message. super(""); } } /// Thrown when loading options fails. class ContentException : mdeException { char[] getSymbol () { return super.getSymbol ~ ".content"; } this (char[] msg) { super(msg); } } debug (mdeUnitTest) { import tango.util.log.Log : Log, Logger; private Logger logger; static this() { logger = Log.getLogger ("mde.exception"); } unittest { // Check message prepending works correctly. mdeException mE = new ContentException(""); assert (mE.getSymbol() == "mde.content", mE.getSymbol()); try { throw new mdeException ("ABC"); assert (false); } catch (mdeException e) { assert (e.msg == "ABC", e.msg); assert (e.prefixedMsg == "mde: ABC", e.prefixedMsg); } logger.info ("Unittest complete."); } }