/* Dr Genius an interactive geometry software
* (C) Copyright Hilaire Fernandes 2003
* hilaire@ofset.org
*
*
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public Licences as by published
* by the Free Software Foundation; either version 2; or (at your option)
* any later version
*
* This program is distributed in the hope that it will entertaining,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILTY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Publis License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.
* 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef DRGENIUS_MDI_H
#define DRGENIUS_MDI_H
// #define G_PLATFORM_WIN32
#include <gtk/gtk.h>
#include <gmodule.h>
#include "drgeo_printer.h"
#include "xmlinclude.h"
#include "drgenius_view.h"
// This class handle the multi document interface
class drgeniusMDI
{
public:
drgeniusMDI ();
~drgeniusMDI ();
void newGeometricDocument (xmlNodePtr tree);
void newTextDocument (xmlNodePtr tree);
void openSession (gchar *filename);
void evaluateScmFigure (gchar *filenalme);
void closeView (drgeniusView *v);
void renameView (drgeniusView *v, const gchar *newName);
drgeniusView * activeView ();
GList * viewList ();
void reconcile_grayout_undo ();
void reconcile_grayout_widget ();
GList *addView (drgeniusView *v);
GList *removeView (drgeniusView *v);
void setMessage (const gchar * msg);
void setNullView ();
void setActiveView (gint page);
void setActiveView (drgeniusView *v);
GtkWindow * mainWindow ();
void setTransientDialog (GtkWindow * dialog);
GtkWidget *getMenuItem (gint n);
void addMacroMenuItem (gchar *name, gchar *description);
void setMacroMenuItemDescription (gchar *name, gchar *description);
private:
GtkWidget *p_undoButton, *p_undoItem, *p_redoButton,
*p_redoItem, *p_gridItem, *p_gridItemSc, *p_renameItem, *p_renameItemSc, *p_customUiItem,
*p_saveItem, *p_saveAsItem, *p_saveMultipleItem, *p_printFigure,
*p_exportItem, *p_exportPreferencesItem, *p_closeItem,
*p_drgeoStatusbar, *p_noteBook, *p_drgeoMDIVbox, *p_nullViewWidget,
*p_windowsMenu, *p_macroMenu, *p_animationMenu;
GtkTooltips *p_tooltipsMacro;
GtkWindow *p_mainWindow;
drgeniusView *p_activeView;
GList *p_viewList;
};
// Helper functions to get the name of avalaible macro in the registry
char *firstMacroName ();
char *nextMacroName ();
gboolean saveMacro (gchar * name, xmlNodePtr tree);
gboolean loadMacro (xmlNodePtr macroXml);
// Callback for the Session Save Dialog
static void dialogSaveSession_response (gint r, GtkTreeSelection *select);
static void saveSelectedRow (GtkTreeModel *model, GtkTreePath *path,
GtkTreeIter *iter, gpointer data);
static void on_notebook_switchPage (GtkNotebook *notebook,
GtkNotebookPage *page,
gint p, gpointer data);
static void on_windowsMenu_cb (GtkWidget * widget, gpointer v);
static void on_macroMenu_cb (GtkWidget * widget, gpointer v);
// Callback to libglade
extern "C" {
/*********************************/
/* Handlers to the MDI interface */
/*********************************/
G_MODULE_EXPORT static void nothing_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT gboolean on_drgeoMain_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);
G_MODULE_EXPORT void on_drgeoMain_destroy_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);
G_MODULE_EXPORT void undo_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void redo_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void new_figure_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void new_editor_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void close_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void quit_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void on_about_activate (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void open_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void evaluate_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void save_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void save_as_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void save_multiple_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void print_figure_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void print_view (gint reply, GtkOptionMenu *list,
int printerCount,
PrintDestination *pDestinations);
G_MODULE_EXPORT void export_figure_to_flydraw_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void export_figure_to_latex_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void export_figure_to_postscript_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void export_figure_to_png_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void define_printing_area_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void remove_printing_area_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void save_session_ok_cb (GtkWidget * widget,
GtkWidget * dialog);
G_MODULE_EXPORT void export_figure_flydraw_ok_cb (GtkWidget * widget,
GtkWidget * dialog);
G_MODULE_EXPORT void export_figure_latex_ok_cb (GtkWidget * widget,
GtkWidget * dialog);
G_MODULE_EXPORT void export_figure_postscript_ok_cb (GtkWidget * widget,
GtkWidget * dialog);
G_MODULE_EXPORT void export_figure_png_ok_cb (GtkWidget * widget,
GtkWidget * dialog);
G_MODULE_EXPORT void gridItem_cb (GtkWidget * widget,
gpointer data);
G_MODULE_EXPORT void rename_view_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void rename_view_string(gint reply, GtkWidget *entry);
G_MODULE_EXPORT void on_entryRenameView_activate (GtkWidget *w, gpointer data);
G_MODULE_EXPORT void customize_interface_cb (GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void on_contents_activate (GtkWidget *widget, gpointer data);
/*----- Property box ----------- */
G_MODULE_EXPORT void preferences_box_cb (GtkWidget * widget, gpointer data);
/*------ Animation -------*/
G_MODULE_EXPORT void on_animation1_activate(GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void on_animation2_activate(GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void on_animation3_activate(GtkWidget * widget, gpointer data);
G_MODULE_EXPORT void on_animation4_activate(GtkWidget * widget, gpointer data);
}
#endif /* DRGENIUS_MDI_H */
syntax highlighted by Code2HTML, v. 0.9.1