Separated library source code from testing code, fixing #6
[rodin/chimara.git] / libchimara / window.h
diff --git a/libchimara/window.h b/libchimara/window.h
new file mode 100644 (file)
index 0000000..1a0b2e9
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef WINDOW_H
+#define WINDOW_H
+
+#include <gtk/gtk.h>
+#include "glk.h"
+
+#include "stream.h"
+#include "error.h"
+#include "input.h"
+#include "style.h"
+
+
+enum InputRequestType
+{
+       INPUT_REQUEST_NONE,
+       INPUT_REQUEST_CHARACTER,
+       INPUT_REQUEST_CHARACTER_UNICODE,
+       INPUT_REQUEST_LINE,
+       INPUT_REQUEST_LINE_UNICODE
+};
+
+/**
+ * glk_window_struct:
+ *
+ * This is an opaque structure (see <link linkend="chimara-Opaque-Structures">
+ * Opaque Structures</link> and should not be accessed directly.
+ */
+struct glk_window_struct
+{
+       /*< private >*/
+       glui32 magic, rock;
+       /* Pointer to the node in the global tree that contains this window */
+       GNode *window_node;
+       /* Window parameters */
+       glui32 type;
+       /* "widget" is the actual widget with the window's functionality */
+       GtkWidget *widget;
+       /* "frame" is the widget that is the child of the ChimaraGlk container, such 
+       as a scroll window. It may be the same as "widget". */
+       GtkWidget *frame;
+       /* Width and height of the window's size units, in pixels */
+       int unit_width;
+       int unit_height;
+       /* Streams associated with the window */
+       strid_t window_stream;
+       strid_t echo_stream;
+       /* Width and height of the window, in characters (text grids only) */
+       glui32 width;
+       glui32 height;
+       /* Window split data (pair windows only) */
+       winid_t key_window;
+       glui32 split_method;
+       glui32 constraint_size;
+       /* Input request stuff */
+       enum InputRequestType input_request_type;
+       gchar *line_input_buffer;
+       glui32 *line_input_buffer_unicode;
+       glui32 line_input_buffer_max_len;
+       gboolean mouse_input_requested;
+       /* Line input field (text grids only) */
+       glui32 input_length;
+       GtkTextChildAnchor *input_anchor;
+       GtkWidget *input_entry;
+       /* Signal handlers */
+       gulong keypress_handler;
+       gulong insert_text_handler;
+};
+
+#endif