Tagged 0.32test1-it2008
[maemopadplus.git] / src / ui / interface.h
blob87098809a8a3a97f89cbe5d15c2448b5a5e1be7d
1 /*
2 * This file is part of maemopad+
5 * This software is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License
7 * as published by the Free Software Foundation; either version 2.1 of
8 * the License, or (at your option) any later version.
10 * This software is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this software; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18 * 02110-1301 USA
22 #ifndef INTERFACE_H
23 #define INTERFACE_H
25 #include <gtk/gtk.h>
26 #include <hildon/hildon-program.h>
27 #include <appdata.h>
28 #include <sqlite3.h>
29 #include <ui/sketchwidget.h>
30 #include <hildon/hildon-color-button.h>
31 #include <wptextview.h>
32 #include <wptextbuffer.h>
34 #include "config.h"
36 #define NEW_SEL_LOGIC
37 #define EXPANDING_ROWS
40 #ifndef EXPANDING_ROWS
41 #error EXPANDING_ROWS is needed for NEW_SEL_LOGIC
42 #endif
44 #define _(String) gettext(String)
46 #define USE_TEMP_TABLES
48 #ifdef USE_TEMP_TABLES
49 #define TEMPTABLE_KEYWORD " TEMP"
50 #else
51 #define TEMPTABLE_KEYWORD ""
52 #endif
55 * confirmation responses
57 #define CONFRESP_YES 1
58 #define CONFRESP_NO 2
59 #define CONFRESP_OK 3
60 #define CONFRESP_CANCEL 4
61 #define CONFRESP_ERROR 5
63 #define BRUSHSIZE_COUNT 7
65 #define SKETCHNODE_X 288
66 #define SKETCHNODE_Y 96
67 #define SKETCHNODE_RX 144
68 #define SKETCHNODE_RY 48
70 typedef enum
72 NODE_UNKNOWN = 0,
73 NODE_TEXT,
74 NODE_SKETCH,
75 NODE_CHECKLIST
76 } nodeType;
78 typedef enum
80 NODEFLAG_NONE = 0,
81 NODEFLAG_SKETCHLINES = 1 << 0,
82 NODEFLAG_SKETCHGRAPH = 1 << 1,
83 NODEFLAG_WORDWRAP = 1 << 2
85 * NODEFLAG_OTHER = 1 << 3
86 * NODEFLAG_OTHER2 = 1 << 4
88 } nodeFlag;
90 enum
92 NODE_NAME,
93 NODE_PIXBUF,
94 NODE_DATA,
95 N_COLUMNS
98 enum
100 CHECKNODE_CHECKED,
101 CHECKNODE_TEXT,
102 CHECKNODE_COLOR,
103 CHECKNODE_BOLD,
104 CHECKNODE_STRIKE,
105 CHECKN_COLUMNS
108 typedef enum
110 CHECKSTYLE_CHECKED = 1 << 0,
111 CHECKSTYLE_BOLD = 1 << 1,
112 CHECKSTYLE_STRIKE = 1 << 2
113 } checklistStyle;
115 typedef struct _nodeData nodeData;
116 struct _nodeData
118 unsigned int sql3id;
120 nodeType typ;
121 gchar *name;
122 GdkPixbuf *namepix;
124 unsigned long lastMod;
125 unsigned int flags;
129 * Struct to include view's information
131 typedef struct _MainView MainView;
132 struct _MainView
135 * Handle to app's data
137 AppData *data;
139 guint viewflags;
140 /*old (guint fullscreen): 0:normal 1:notree-normal 2:normal-full 3:notree-full 4:justdoc-full */
141 /*new (guint viewflags): 1:tree 2:toolbar 4:fullscreen*/
144 * Items for menu
146 GtkWidget *file_item;
147 GtkWidget *tools_item;
148 GtkWidget *new_node_item;
149 GtkWidget *delete_node_item;
150 GtkWidget *rename_node_item;
151 GtkWidget *expand_collapse_node_item;
152 GtkWidget *export_node_item;
153 GtkWidget *move_node_item;
154 GtkWidget *move_up_node_item;
155 GtkWidget *move_down_node_item;
156 GtkWidget *move_to_bottom_node_item;
157 GtkWidget *move_to_top_node_item;
158 GtkWidget *new_item;
159 GtkWidget *open_item;
160 GtkWidget *save_item;
161 GtkWidget *edit_item;
162 GtkWidget *cut_item;
163 GtkWidget *copy_item;
164 GtkWidget *paste_item;
165 GtkWidget *clear_item;
166 GtkWidget *tools_brushsize;
167 GtkWidget *tools_pagestyle;
168 GtkWidget *tools_shape;
169 GtkWidget *tools_font;
170 GtkWidget *tools_wordwrap;
171 GtkWidget *tools_color;
172 GtkWidget *tools_pressure;
173 GtkWidget *view_item;
175 GtkWidget *brushsizemenu;
176 GtkWidget *sketchlinesmenu;
177 GtkWidget *viewmenu;
178 GtkWidget *shapemenu;
181 * Toolbar
183 GtkWidget *toolbar;
184 GtkWidget *iconw;
186 GtkToolItem *toggletree_tb;
188 GtkToolItem *new_tb;
191 * GtkToolItem* open_tb;
193 GtkToolItem *save_tb;
194 GtkToolItem *separator_tb1;
197 * GtkToolItem* cut_tb;
198 * GtkToolItem* copy_tb;
199 * GtkToolItem* paste_tb;
200 * GtkToolItem* separator_tb2;
202 GtkToolItem *bold_tb, *italic_tb, *underline_tb, *bullet_tb, *strikethru_tb, *check_tb, *checkadd_tb, *checkdel_tb;
203 guint check_newitemcounter;
205 GtkToolItem *font_tb;
206 GtkWidget *colorbutton;
207 GtkToolItem *colorbutton_tb;
208 GtkWidget *viewmenuitems[3];
210 GtkToolItem *brushsize_tb;
211 GtkWidget *brushsizemenuitems[BRUSHSIZE_COUNT];
213 GtkToolItem *eraser_tb;
215 GtkToolItem *sketchlines_tb;
216 GtkWidget *sketchlinesmenuitems[3];
218 GtkToolItem *undo_tb;
219 GtkToolItem *redo_tb;
221 GtkToolItem *shape_tb;
222 GtkWidget *shapemenuitems[4];
225 * Textview related
227 GtkWidget *scrolledwindow; /* textview is under this widget */
228 GtkWidget *textview; /* widget that shows the text */
229 WPTextBuffer *buffer; /* buffer that contains the text */
230 GtkClipboard *clipboard; /* clipboard for copy/paste */
232 GtkWidget *listscroll; /* checklist is under this widget */
233 GtkWidget *listview; /*checklist */
234 GtkTreeViewColumn *listtextcol;
236 GtkWidget *treeview;
237 GtkWidget *scrolledtree; /* scrolledwindow for the tree */
238 GtkWidget *hpaned; /* hpaned between tree and document */
240 SketchWidget *sk;
241 guint brushsize_backup;
243 GdkCursor *cursorBusy;
244 guint busyrefcount;
246 gboolean file_edited; /* for node operations and notification of new stuff in tmptable */
247 gchar *file_name;
248 gboolean loading;
250 sqlite3 *db;
252 #ifdef NEW_SEL_LOGIC
253 nodeData *cansel_node;
254 guint32 cansel_time;
255 #endif
257 gboolean newnodedialog_createchild;
260 #define datatable_name "nodes"
261 #define datatable_tmpname "tmpnodes"
262 #define datatable_backupname "nodesbackup"
264 #define datatable "( \
265 nodeid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
266 parent INTEGER NOT NULL DEFAULT 0, \
267 bodytype INTEGER NOT NULL DEFAULT 0, \
268 name TEXT, \
269 body TEXT, \
270 nameblob BLOB, \
271 bodyblob BLOB, \
272 lastmodified INTEGER NOT NULL DEFAULT 0, \
273 ord INTEGER NOT NULL DEFAULT 0, \
274 flags INTEGER NOT NULL DEFAULT 0);"
276 #define dataindex "(parent, ord);"
278 #define misctable_name "settings"
279 #define misctable "(skey TEXT UNIQUE, sval TEXT);"
281 #define datatableversion 1
283 #define checklisttable_name "checklists"
284 #define checklisttable_tmpname "tmpchecklists"
285 #define checklisttable_backupname "checklistsbackup"
287 #define checklisttable "( \
288 idx INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
289 nodeid INTEGER NOT NULL DEFAULT 0, \
290 name TEXT, \
291 style INTEGER NOT NULL DEFAULT 0, \
292 color INTEGER NOT NULL DEFAULT 0, \
293 ord INTEGER NOT NULL DEFAULT 0);"
294 #define checklistindex "(nodeid, ord);"
296 #define checklisttableversion 1
299 * Publics:
301 void sk_set_brushsize(MainView * main, guint bsize);
302 void _toggle_tool_button_set_inconsistent(GtkToggleToolButton *button, gboolean inconsistent);
303 MainView *interface_main_view_new(AppData * data);
304 void interface_main_view_destroy(MainView * main);
305 gchar *interface_file_chooser(MainView * mainview, GtkFileChooserAction action, gchar * suggname, gchar * suggext);
306 gint interface_create_new_file(MainView * main);
308 #endif