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
26 #include <hildon/hildon-program.h>
29 #include <ui/sketchwidget.h>
30 #include <hildon/hildon-color-button.h>
31 #include <wptextview.h>
32 #include <wptextbuffer.h>
37 #define EXPANDING_ROWS
40 #ifndef EXPANDING_ROWS
41 #error EXPANDING_ROWS is needed for NEW_SEL_LOGIC
44 #define _(String) gettext(String)
46 #define USE_TEMP_TABLES
48 #ifdef USE_TEMP_TABLES
49 #define TEMPTABLE_KEYWORD " TEMP"
51 #define TEMPTABLE_KEYWORD ""
55 * confirmation responses
57 #define CONFRESP_YES 1
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
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
110 CHECKSTYLE_CHECKED
= 1 << 0,
111 CHECKSTYLE_BOLD
= 1 << 1,
112 CHECKSTYLE_STRIKE
= 1 << 2
115 typedef struct _nodeData nodeData
;
124 unsigned long lastMod
;
129 * Struct to include view's information
131 typedef struct _MainView MainView
;
135 * Handle to app's data
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*/
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
;
159 GtkWidget
*open_item
;
160 GtkWidget
*save_item
;
161 GtkWidget
*edit_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
;
178 GtkWidget
*shapemenu
;
186 GtkToolItem
*toggletree_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];
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
;
237 GtkWidget
*scrolledtree
; /* scrolledwindow for the tree */
238 GtkWidget
*hpaned
; /* hpaned between tree and document */
241 guint brushsize_backup
;
243 GdkCursor
*cursorBusy
;
246 gboolean file_edited
; /* for node operations and notification of new stuff in tmptable */
253 nodeData
*cansel_node
;
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, \
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, \
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
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
);