]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/ModalDialog.hh
removed doxygen; distcheck bugfix
[chaz/yoink] / src / Moof / ModalDialog.hh
index 11d9d7997916926b4fff50c25e44211af078f36d..4ca199e0778f897d15c2c783816636f8e7852756 100644 (file)
@@ -1,37 +1,24 @@
 
-/*******************************************************************************
-
- 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_
 
 #include <string>
 
-#if defined(_WIN32) || defined(__WIN32__)
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#if defined(_WIN32)
 #include <windows.h>
 #elif defined(__APPLE__) && defined(__MACH__)
 #include <Carbon/Carbon.h>
 #include <QMessageBox>
 #endif
 
+#include <Moof/Log.hh>
 #include <Moof/Resource.hh>
 
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 
 namespace Mf {
 
@@ -66,14 +50,62 @@ struct ModalDialog
                CRITICAL        = 3
        };
 
+
        std::string title;
        Type            type;
        std::string text1;
        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
        {
-#if USE_GTK
+               switch (type)
+               {
+                       case WARNING:
+                               logWarning(text1);
+                               logWarning(text2);
+                               break;
+                       case CRITICAL:
+                               logError(text1);
+                               logError(text2);
+                               break;
+                       default:
+                               logInfo(text1);
+                               logInfo(text2);
+                               break;
+               }
+
+#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;
@@ -97,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
 
@@ -136,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();
 
@@ -151,5 +190,3 @@ struct ModalDialog
 
 #endif // _MOOF_MODALDIALOG_HH_
 
-/** vim: set ts=4 sw=4 tw=80: *************************************************/
-
This page took 0.02434 seconds and 4 git commands to generate.