/*
* surf - visualizing algebraic curves and algebraic surfaces
* Copyright (C) 1996-1997 Friedrich-Alexander-Universitaet
* Erlangen-Nuernberg
* 1997-2000 Johannes Gutenberg-Universitaet Mainz
* Authors: Stephan Endrass, Hans Huelf, Ruediger Oertel,
* Kai Schneider, Ralf Schmitt, Johannes Beigel
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public 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 MAINWINDOWCONTROLLER_H
#define MAINWINDOWCONTROLLER_H
#include "mygtk.h"
#include "DrawingArea.h"
#include "TextWidget.h"
#include "ColorWindow.h"
#include "Document.h"
#include "ConfigurationWindow.h"
#include "WidgetReadWriter.h"
#include "SaveImageDialog.h"
#include "ProgressDialog.h"
enum SaveButtonType {
Color, Dithered
};
class MainWindowController : private DocumentListener
{
private:
MainWindowController (const MainWindowController &);
void operator=(const MainWindowController &);
public:
MainWindowController();
~MainWindowController();
void allowScriptExecution(bool val);
void showError (Document *doc, int error_begin, int error_end, const char *errorString);
void editDocument (Document *doc);
VOIDCALL(executeScript, MainWindowController);
void show();
void quit();
void toggleDisplayedState();
void enableSaveButton(SaveButtonType which);
protected:
MENUCALLBACK(showAbout, MainWindowController);
void showAbout();
MENUCALLBACK(quit, MainWindowController);
MENUCALLBACK(newDocument, MainWindowController);
void newDocument();
MENUCALLBACK(loadScript, MainWindowController);
MENUCALLBACK(saveScript, MainWindowController);
MENUCALLBACK(executeScript, MainWindowController);
MENUCALLBACK(drawSurface, MainWindowController);
MENUCALLBACK(ditherSurface, MainWindowController);
MENUCALLBACK(drawCurve, MainWindowController);
MENUCALLBACK(ditherCurve, MainWindowController);
MENUCALLBACK(configuration, MainWindowController);
MENUCALLBACK(newColorWindow, MainWindowController);
MENUCALLBACK(saveColorImage, MainWindowController);
MENUCALLBACK(newDitherWindow, MainWindowController);
MENUCALLBACK(saveDitheredImage, MainWindowController);
VOIDCALL(saveScript, MainWindowController);
MENUCALLBACK(saveScriptAs, MainWindowController);
void saveScriptAs();
VOIDCALL(drawSurface, MainWindowController);
VOIDCALL(ditherSurface, MainWindowController);
VOIDCALL(drawCurve, MainWindowController);
VOIDCALL(ditherCurve, MainWindowController);
VOIDCALL(configuration, MainWindowController)
{
cw.show();
}
VOIDCALL(loadScript,MainWindowController);
VOIDCALL(newColorWindow, MainWindowController)
{
colorWindow->unlock();
colorWindow = new ColorWindow(this, true);
colorWindow->show();
}
VOIDCALL(newDitherWindow, MainWindowController)
{
bitmapWindow->unlock();
bitmapWindow = new ColorWindow(this, false);
bitmapWindow->show();
}
VOIDCALL(saveDitheredImage, MainWindowController);
VOIDCALL(saveColorImage, MainWindowController);
VOIDCALL(destroy, MainWindowController);
VOIDCALL (fileSelected, MainWindowController);
VOIDCALL (fileSelectionCancelled, MainWindowController);
VOIDCALL (saveImageDialogOkay, MainWindowController);
VOIDCALL (saveImageDialogCancel, MainWindowController);
static gint fileSelectionDelete (GtkWidget *widget, GdkEvent *event, gpointer data);
protected:
GtkFileSelection *filesel;
GtkWidget *window;
GtkWidget *mainBox; /* hbox */
TextWidget tw;
GtkWidget *frame;
GtkWidget *buttons;
GtkWidget *b1;
GtkWidget *b2;
GtkWidget *loadScriptButton;
GtkWidget *testButton;
GtkWidget *executeScriptButton;
GtkWidget *drawSurfaceButton;
GtkWidget *ditherSurfaceButton;
GtkWidget *drawCurveButton;
GtkWidget *ditherCurveButton;
GtkWidget* colorSaveButton;
GtkWidget* ditheredSaveButton;
ColorWindow *colorWindow;
ColorWindow *bitmapWindow;
GtkWidget *loadedScripts;
GtkWidget* saveColor_MenuItem;
GtkWidget* saveDithered_MenuItem;
GtkWidget* executeScript_MenuItem;
GtkWidget* drawSurface_MenuItem;
GtkWidget* ditherSurface_MenuItem;
GtkWidget* drawCurve_MenuItem;
GtkWidget* ditherCurve_MenuItem;
ConfigurationWindow cw;
Document *actualDocument;
Document *docToSave;
GtkWidget * previewButtons[3];
bool displayedState;
bool colorSaveButtonState;
bool ditheredSaveButtonState;
private:
WidgetReadWriter wrw;
SaveImageDialog saveImageDialog;
ProgressDialog progress;
void addedDocument (Document *doc);
bool mayClose();
void internalExecuteScript (const char *before, const char *user, const char *after, bool run_commands);
typedef void (*methodType)(MainWindowController *);
GtkWidget *addCommandButton (const char *command, const char *tip=0);
void addCommandSeparator();
static void selectedDocument (GtkWidget *widget, gpointer data);
static gint handle_delete_event (GtkWidget *widget, GdkEvent *event, gpointer data);
static void previewToggled(GtkWidget *widget, gpointer data);
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1