# gcu/application.h

Go to the documentation of this file.

    00001 // -*- C++ -*-
    00002
    00003 /*
    00004  * Gnome Chemistry Utils
    00005  * gcu/application.h
    00006  *
    00007  * Copyright (C) 2005-2008 Jean Bréfort <jean.brefort@normalesup.org>
    00008  *
    00009  * This program is free software; you can redistribute it and/or
    00010  * modify it under the terms of the GNU General Public License as
    00011  * published by the Free Software Foundation; either version 2 of the
    00012  * License, or (at your option) any later version.
    00013  *
    00014  * This program is distributed in the hope that it will be useful,
    00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00017  * GNU General Public License for more details.
    00018  *
    00019  * You should have received a copy of the GNU General Public License
    00020  * along with this program; if not, write to the Free Software
    00021  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
    00022  * USA
    00023  */
    00024
    00025 #ifndef GCU_APPLICATION_H
    00026 #define GCU_APPLICATION_H
    00027
    00028 #include "dialog-owner.h"
    00029 #include <map>
    00030 #include <set>
    00031 #include <string>
    00032 #ifdef HAVE_GO_CONF_SYNC
    00033 #include <goffice/app/go-conf.h>
    00034 #endif
    00035 #include <gtk/gtkmain.h>
    00036 #include <gtk/gtkwindow.h>
    00037 #include <gtk/gtkrecentmanager.h>
    00038 #include <gcu/macros.h>
    00039
    00041 namespace gcu {
    00042
    00043 class Document;
    00044 class Dialog;
    00045
    00046 #define GCU_CONF_DIR "gchemutils"
    00047
    00051 class Application: public DialogOwner
    00052 {
    00053 friend class Document;
    00054 friend class Dialog;
    00055 public:
    00067         Application (std::string name, std::string datadir = DATADIR, char const *help_name = NULL, char const *icon_name = NULL);
    00071         virtual ~Application ();
    00072
    00081         void OnHelp (std::string s = "");
    00085         bool HasHelp ();
    00089         std::string &GetName () {return Name;}
    00090
    00094         virtual GtkWindow * GetWindow () {return NULL;}
    00095
    00109         virtual bool FileProcess (const gchar* filename, const gchar* mime_type, bool bSave, GtkWindow *window, Document *pDoc = NULL)
    00110                 {return false;}
    00111
    00115         char const* GetCurDir () {return CurDir.c_str ();}
    00116
    00120         void SetCurDir (char const* dir);
    00121
    00125         void SetCurDir (std::string const &dir);
    00126
    00132         void ShowURI (std::string& uri);
    00133
    00139         void OnBug (char const *uri = PACKAGE_BUGREPORT)
    00140                 {std::string s (uri); ShowURI (s);}
    00141
    00146         void OnWeb (char const *uri = "http://gchemutils.nongnu.org/")
    00147                 {std::string s (uri); ShowURI (s);}
    00148
    00155         void OnMail (char const *MailAddress = "mailto:gchemutils-main@nongnu.org");
    00156
    00160         void OnLiveAssistance ();
    00161
    00166         GtkWidget *GetImageResolutionWidget ();
    00167
    00172         GtkWidget *GetImageSizeWidget ();
    00173
    00177         std::map<std::string, GdkPixbufFormat*> &GetSupportedPixbufFormats () {return m_SupportedPixbufFormats;}
    00178
    00188         char const *GetPixbufTypeName (std::string& filename, char const *mime_type);
    00189
    00199         bool Load (std::string const &uri, const gchar *mime_type, Document* Doc);
    00200
    00210         bool Save (std::string const &uri, const gchar *mime_type, Document* Doc);
    00211
    00216         virtual Document *CreateNewDocument () {return NULL;}
    00217
    00218 #ifdef HAVE_GO_CONF_SYNC
    00219
    00224         static GOConfNode *GetConfDir ();
    00225 #endif
    00226
    00227 protected:
    00228
    00234         virtual void NoMoreDocsEvent () {gtk_main_quit ();}
    00235
    00236 private:
    00237         void AddDocument (Document *Doc) {m_Docs.insert (Doc);}
    00238         void RemoveDocument (Document *Doc);
    00239
    00240 private:
    00241         std::string Name;
    00242         std::string HelpName;
    00243         std::string HelpBrowser;
    00244         std::string HelpFilename;
    00245         std::string CurDir;
    00246 #ifdef HAVE_GO_CONF_SYNC
    00247         static GOConfNode *m_ConfDir;
    00248 #endif
    00249
    00250 protected:
    00254         std::map<std::string, GdkPixbufFormat*> m_SupportedPixbufFormats;
    00255
    00262 GCU_PROT_PROP (std::set <Document*>, Docs)
    00266 GCU_RO_PROP (unsigned, ScreenResolution)
    00280 GCU_PROP (unsigned, ImageResolution)
    00294 GCU_PROP (unsigned, ImageWidth)
    00308 GCU_PROP (unsigned, ImageHeight)
    00312 GCU_RO_PROP (GtkRecentManager*, RecentManager)
    00313 };
    00314
    00315 }       // namespace gcu
    00316
    00317 #endif // GCU_APPLICATION_H