summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/Window.h
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@cs.ox.ac.uk>2012-12-03 19:02:53 +0000
committerAlex Merry <alex.merry@cs.ox.ac.uk>2012-12-04 11:12:28 +0000
commit94ff07fc9d728d97dde159e0c3e6ab80e29e0855 (patch)
tree2e74ff3d709db87e2e2b27aa501ed46727c054d7 /tikzit/src/gtk/Window.h
parent0d715a7f17b8e5570b42d7802c502e4aa234a3c1 (diff)
Refactor MainWindow into Application and Window
Basic multiple-window support, but no tools.
Diffstat (limited to 'tikzit/src/gtk/Window.h')
-rw-r--r--tikzit/src/gtk/Window.h158
1 files changed, 158 insertions, 0 deletions
diff --git a/tikzit/src/gtk/Window.h b/tikzit/src/gtk/Window.h
new file mode 100644
index 0000000..6aa710a
--- /dev/null
+++ b/tikzit/src/gtk/Window.h
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2011-2012 Alex Merry <dev@randomguy3.me.uk>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#import "TZFoundation.h"
+#import <gtk/gtk.h>
+#import "WidgetSurface.h"
+
+@class GraphRenderer;
+@class GraphInputHandler;
+@class Menu;
+@class PropertyPane;
+@class Preambles;
+@class PreambleEditor;
+@class PreviewWindow;
+@class SettingsDialog;
+@class StyleManager;
+@class StylesPane;
+@class TikzDocument;
+
+/**
+ * Manages a document window
+ */
+@interface Window: NSObject {
+ // GTK+ widgets
+ GtkWindow *window;
+ GtkTextBuffer *tikzBuffer;
+ GtkStatusbar *statusBar;
+ GtkPaned *tikzPaneSplitter;
+ GtkWidget *tikzPane;
+
+ // Classes that manage parts of the window
+ Menu *menu;
+ GraphRenderer *renderer;
+ GraphInputHandler *inputHandler;
+
+ WidgetSurface *surface;
+
+ // state variables
+ BOOL suppressTikzUpdates;
+ BOOL hasParseError;
+
+ // the document displayed by the window
+ TikzDocument *document;
+}
+
+/**
+ * The document displayed by the window
+ */
+@property (retain) TikzDocument *document;
+
+/**
+ * Create a window with an empty document
+ */
+- (id) init;
++ (id) window;
+
+/**
+ * Create a window with the given document
+ */
+- (id) initWithDocument:(TikzDocument*)doc;
++ (id) windowWithDocument:(TikzDocument*)doc;
+
+/**
+ * Open a file, asking the user which file to open
+ */
+- (void) openFile;
+/**
+ * Open a file
+ */
+- (BOOL) openFileAtPath:(NSString*)path;
+/**
+ * Save the active document to the path it was opened from
+ * or last saved to, or ask the user where to save it.
+ */
+- (BOOL) saveActiveDocument;
+/**
+ * Save the active document, asking the user where to save it.
+ */
+- (BOOL) saveActiveDocumentAs;
+/**
+ * Save the active document as a shape, asking the user what to name it.
+ */
+- (void) saveActiveDocumentAsShape;
+
+/**
+ * Cut the current selection to the clipboard.
+ */
+- (void) cut;
+/**
+ * Copy the current selection to the clipboard.
+ */
+- (void) copy;
+/**
+ * Paste from the clipboard to the appropriate place.
+ */
+- (void) paste;
+
+/**
+ * The graph input handler
+ */
+- (GraphInputHandler*) graphInputHandler;
+/**
+ * The GTK+ window that this class manages.
+ */
+- (GtkWindow*) gtkWindow;
+/**
+ * The menu for the window.
+ */
+- (Menu*) menu;
+
+/**
+ * Present an error to the user
+ *
+ * @param error the error to present
+ */
+- (void) presentError:(NSError*)error;
+/**
+ * Present an error to the user
+ *
+ * @param error the error to present
+ * @param message a message to display with the error
+ */
+- (void) presentError:(NSError*)error withMessage:(NSString*)message;
+/**
+ * Present an error to the user
+ *
+ * @param error the error to present
+ */
+- (void) presentGError:(GError*)error;
+/**
+ * Present an error to the user
+ *
+ * @param error the error to present
+ * @param message a message to display with the error
+ */
+- (void) presentGError:(GError*)error withMessage:(NSString*)message;
+
+- (void) zoomIn;
+- (void) zoomOut;
+- (void) zoomReset;
+
+@end
+
+// vim:ft=objc:ts=8:et:sts=4:sw=4