-/*******************************************************************************
-
- 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 {
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;
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
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();
#endif // _MOOF_MODALDIALOG_HH_
-/** vim: set ts=4 sw=4 tw=80: *************************************************/
-