X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FModalDialog.hh;h=4ca199e0778f897d15c2c783816636f8e7852756;hp=68a6d285f99f414297d98e49a61093932fbb573c;hb=8fe54c8bf8255c704e29fd84e01dd22a169db63b;hpb=e495074443d9fd7bc16137084cf9de3d031b75c4 diff --git a/src/Moof/ModalDialog.hh b/src/Moof/ModalDialog.hh index 68a6d28..4ca199e 100644 --- a/src/Moof/ModalDialog.hh +++ b/src/Moof/ModalDialog.hh @@ -1,30 +1,13 @@ -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ +/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +**] All rights reserved. +* +* vi:ts=4 sw=4 tw=75 +* +* Distributable under the terms and conditions of the 2-clause BSD license; +* see the file COPYING for a complete text of the license. +* +**************************************************************************/ #ifndef _MOOF_MODALDIALOG_HH_ #define _MOOF_MODALDIALOG_HH_ @@ -32,10 +15,10 @@ #include #if HAVE_CONFIG_H -#include "../config.h" +#include "config.h" #endif -#if defined(_WIN32) || defined(__WIN32__) +#if defined(_WIN32) #include #elif defined(__APPLE__) && defined(__MACH__) #include @@ -74,25 +57,55 @@ struct ModalDialog std::string text2; + + ModalDialog(Type pType = INFO, + const std::string& pTitle = "", + const std::string& pText1 = "", + const std::string& pText2 = "") : + title(pTitle), + type(pType), + text1(pText1), + text2(pText2) {} + + void run() const { switch (type) { case WARNING: - logWarning("%s", text1.c_str()); - logWarning("%s", text2.c_str()); + logWarning(text1); + logWarning(text2); break; case CRITICAL: - logError("%s", text1.c_str()); - logError("%s", text2.c_str()); + logError(text1); + logError(text2); break; default: - logInfo("%s", text1.c_str()); - logInfo("%s", text2.c_str()); + logInfo(text1); + logInfo(text2); break; } -#if USE_GTK +#if defined(_WIN32) + + int iconType; + switch (type) + { + case WARNING: + iconType = MB_ICONWARNING; + break; + case CRITICAL: + iconType = MB_ICONERROR; + break; + default: + iconType = MB_ICONINFORMATION; + break; + } + + MessageBox(0, (text1 + "\n" + text2).c_str(), title.c_str(), + MB_OK | iconType); + +#elif USE_GTK int argc = 0; char** argv; @@ -116,17 +129,21 @@ struct ModalDialog GTK_DIALOG_DESTROY_WITH_PARENT, iconType, GTK_BUTTONS_CLOSE, "%s", text1.c_str()); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), - "%s", text2.c_str()); + "%s", text2.c_str()); gtk_window_set_title(GTK_WINDOW(dialog), title.c_str()); - std::string iconPath = Resource::getPath(PACKAGE".png"); - GdkPixbuf* iconPixbuf = gdk_pixbuf_new_from_file(iconPath.c_str(), NULL); - gtk_window_set_icon(GTK_WINDOW(dialog), iconPixbuf); + std::string iconPath(PACKAGE".png"); + if (Resource::getPath(iconPath)) + { + GdkPixbuf* iconPixbuf = gdk_pixbuf_new_from_file(iconPath.c_str(), + NULL); + gtk_window_set_icon(GTK_WINDOW(dialog), iconPixbuf); + } gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); // FIXME - this doesn't seem to actually remove the window from the - // screen when it closes, not sure why... + // screen when it closes #elif USE_QT4 @@ -155,9 +172,12 @@ struct ModalDialog dialog.setInformativeText(text2.c_str()); dialog.setStandardButtons(QMessageBox::Close); - std::string iconPath = Resource::getPath(PACKAGE".png"); - QIcon icon(iconPath.c_str()); - dialog.setWindowIcon(icon); + std::string iconPath(PACKAGE".png"); + if (Resource::getPath(iconPath)) + { + QIcon icon(iconPath.c_str()); + dialog.setWindowIcon(icon); + } dialog.exec(); @@ -170,5 +190,3 @@ struct ModalDialog #endif // _MOOF_MODALDIALOG_HH_ -/** vim: set ts=4 sw=4 tw=80: *************************************************/ -