1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Main application window implementation
7
////////////////////////////////////////////////////////////////////////////
11
#include <gdk/gdkkeysyms.h>
14
#include "interface.h"
19
#include "callbacks.h"
20
#include "lib/debug.h"
21
#include "lib/NoteDocument.h"
22
#include "lib/IniFile.h"
23
#include "lib/FilePath.h"
24
#include "PortableTrayIcon.h"
25
#include "PasswordDialog.h"
26
#include "gui/GuiLanguage.h"
27
#include "ShortcutsList.h"
28
#include "FindReplaceInfo.h"
32
#include <hildon-widgets/hildon-program.h>
34
#include <hildon/hildon-program.h>
38
#include "../res/notecase.xpm"
39
#include "../res/icon_attachment.xpm"
40
#include "../res/icon_picture.xpm"
41
#include "../res/page_link.xpm"
42
#include "../res/text_bold.xpm"
43
#include "../res/text_italic.xpm"
44
#include "../res/text_underline.xpm"
45
#include "../res/text_strikethrough.xpm"
46
#include "../res/text_color.xpm"
47
#include "../res/text_bg_color.xpm"
48
#include "../res/text_no_format.xpm"
49
#include "../res/icon_datetime.xpm"
50
#include "../res/internal_lock.xpm"
51
#include "../res/key.xpm"
53
extern bool g_bBusyCursor;
54
void ShowBusyCursor();
55
void HideBusyCursor();
57
extern NoteDocument g_doc;
59
extern GtkWidget *window1;
60
extern GtkWidget *g_menuitem5;
61
extern TreeView g_tree;
62
extern TextView g_text;
63
extern bool g_bMinimizeToTray;
64
extern bool g_bCloseToTray;
65
extern bool g_bCloseDlgOnTextEnter;
66
extern bool g_bAutoSaveOnClose;
67
extern bool g_bSkipMemOnlyAutosave;
68
extern bool g_bExportDataAsSeparateFile;
69
extern MainWindow g_wnd;
70
extern IniFile g_objIni;
71
extern GuiLanguage g_lang;
72
extern bool g_bTreeToTheRight;
73
extern bool g_bTreeToTheRightInitial;
74
extern GdkColor g_linkColor;
75
extern int g_nDefaultNodeIconType;
76
extern std::string g_strDefaultIconFile;
77
extern FindReplaceInfo g_objSearchInfo;
79
extern bool g_bInitialLoad;
80
extern bool g_bUpdateMRU;
81
extern bool g_bLoadEmbedded;
82
extern std::string g_strLoadDocumentFile;
83
extern std::string g_strLoadDocumentPass;
84
extern int g_nLoadDocumentNodeID;
86
extern ShortcutDef g_defTreeNodeNew;
87
extern ShortcutDef g_defTreeNodeNewChild;
88
extern ShortcutDef g_defTreeNodeDelete;
89
extern ShortcutDef g_defTreeNodeRename;
90
extern ShortcutDef g_defTreeNodeMoveUp;
91
extern ShortcutDef g_defTreeNodeMoveDown;
92
extern ShortcutDef g_defTreeNodeMoveLeft;
93
extern ShortcutDef g_defTreeNodeMoveRight;
94
extern ShortcutDef g_defTreeNodeProperties;
95
extern ShortcutDef g_defTreeNodeDelFinished;
96
extern ShortcutDef g_defTreeNodeToggleFinished;
97
extern ShortcutDef g_defTreeNodeSortChildrenAsc;
98
extern ShortcutDef g_defTreeNodeSortChildrenDsc;
99
extern ShortcutDef g_defTreeNodeSortRootAsc;
100
extern ShortcutDef g_defTreeNodeSortRootDsc;
101
extern ShortcutDef g_defTreeNodeExpandAll;
102
extern ShortcutDef g_defTreeNodeColapseAll;
103
extern ShortcutDef g_defTreeCopyBranchStruct;
104
extern ShortcutDef g_defTreePasteBranchRoot;
106
ShortcutsList g_shortcuts;
107
PortableTrayIcon g_tray;
108
int g_nTitleBarTextSize = 10 * PANGO_SCALE; //default size
109
bool g_bWrapTree=false;
110
bool g_bDrawTextviewExpose = false;
112
GdkColor g_rgbTextViewBkColor = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; //white
114
void register_extensions_check();
115
static void create_menu (GtkWidget *window1, GtkWidget *menubar1, GtkAccelGroup *accel_group);
116
static gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event);
117
const char *PasswordCallback(const char *szFile, bool bSave);
118
static gboolean on_focus_event (GtkWidget *widget, GtkDirectionType arg1, gpointer user_data);
119
bool LocaleToUtf8(const char *szTxt, std::string &strResult);
120
static gint dlg_keyboard_handler (GtkWidget *widget, GdkEventKey *event, gpointer data);
121
void SetTextViewCaretColor(bool bBlack);
122
void RefreshTextViewCaretColor(GdkColor &BkColor);
123
gboolean initial_load_timer(gpointer data);
124
int load_file_embedded(int nCurNodeIdx = -1);
125
int load_file(const char *filename, const char *szPassword, int nCurNodeIdx);
126
void on_tree_resize(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data);
127
void update_tree_wrap();
129
MainWindow::MainWindow()
132
m_pToolbarBold = NULL;
133
m_pToolbarItalic = NULL;
134
m_pToolbarUnderline = NULL;
135
m_pToolbarColor = NULL;
136
m_pToolbarAttachment = NULL;
137
m_pToolbarBkgColor = NULL;
138
m_pToolbarUndo = NULL;
139
m_pToolbarRedo = NULL;
142
MainWindow::~MainWindow()
146
void MainWindow::Create()
150
g_objIni.GetValue("Display", "DrawGrayTextView", g_bDrawTextviewExpose, 1);
152
g_objIni.GetValue("Display", "TreeToTheRight", g_bTreeToTheRight);
153
g_bTreeToTheRightInitial = g_bTreeToTheRight;
155
//set global RTL support
156
if(g_lang.IsCurLangRTL()) //RTL support
157
gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
159
m_pWidget = create_main_win();
162
//cache loaded shortcuts for faster lookup
163
int nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW, SH_CTX_TREE_WIDGET);
164
if(nPos >= 0) g_defTreeNodeNew = g_shortcuts[nPos];
166
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW_CHILD, SH_CTX_TREE_WIDGET);
167
if(nPos >= 0) g_defTreeNodeNewChild = g_shortcuts[nPos];
169
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE, SH_CTX_TREE_WIDGET);
170
if(nPos >= 0) g_defTreeNodeDelete = g_shortcuts[nPos];
172
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_RENAME, SH_CTX_TREE_WIDGET);
173
if(nPos >= 0) g_defTreeNodeRename = g_shortcuts[nPos];
175
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_UP, SH_CTX_TREE_WIDGET);
176
if(nPos >= 0) g_defTreeNodeMoveUp = g_shortcuts[nPos];
178
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_DOWN, SH_CTX_TREE_WIDGET);
179
if(nPos >= 0) g_defTreeNodeMoveDown = g_shortcuts[nPos];
181
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_LEFT, SH_CTX_TREE_WIDGET);
182
if(nPos >= 0) g_defTreeNodeMoveLeft = g_shortcuts[nPos];
184
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT, SH_CTX_TREE_WIDGET);
185
if(nPos >= 0) g_defTreeNodeMoveRight = g_shortcuts[nPos];
187
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT, SH_CTX_TREE_WIDGET);
188
if(nPos >= 0) g_defTreeNodeMoveRight = g_shortcuts[nPos];
190
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_PROPERTIES, SH_CTX_TREE_WIDGET);
191
if(nPos >= 0) g_defTreeNodeProperties = g_shortcuts[nPos];
193
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE_FINISHED, SH_CTX_TREE_WIDGET);
194
if(nPos >= 0) g_defTreeNodeDelFinished = g_shortcuts[nPos];
196
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_TOGGLE_FINISHED, SH_CTX_TREE_WIDGET);
197
if(nPos >= 0) g_defTreeNodeToggleFinished = g_shortcuts[nPos];
199
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_ASC, SH_CTX_TREE_WIDGET);
200
if(nPos >= 0) g_defTreeNodeSortChildrenAsc = g_shortcuts[nPos];
202
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_DESC, SH_CTX_TREE_WIDGET);
203
if(nPos >= 0) g_defTreeNodeSortChildrenDsc = g_shortcuts[nPos];
205
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_ASC, SH_CTX_TREE_WIDGET);
206
if(nPos >= 0) g_defTreeNodeSortRootAsc = g_shortcuts[nPos];
208
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_DESC, SH_CTX_TREE_WIDGET);
209
if(nPos >= 0) g_defTreeNodeSortRootDsc = g_shortcuts[nPos];
211
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_EXPAND_ALL, SH_CTX_TREE_WIDGET);
212
if(nPos >= 0) g_defTreeNodeExpandAll = g_shortcuts[nPos];
214
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_COLAPSE_ALL, SH_CTX_TREE_WIDGET);
215
if(nPos >= 0) g_defTreeNodeColapseAll = g_shortcuts[nPos];
217
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY_BR_STRUCT, SH_CTX_TREE_WIDGET);
218
if(nPos >= 0) g_defTreeCopyBranchStruct = g_shortcuts[nPos];
220
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE_BR_ROOT, SH_CTX_TREE_WIDGET);
221
if(nPos >= 0) g_defTreePasteBranchRoot = g_shortcuts[nPos];
224
void MainWindow::OnCreate()
226
//check startup options
227
window1 = g_wnd.m_pWidget;
228
g_signal_connect (window1, "destroy", G_CALLBACK (on_quit1_activate), NULL);
229
g_signal_connect (window1, "delete_event", G_CALLBACK (on_window_delete_event), NULL);
230
g_signal_connect (window1, "key_press_event", G_CALLBACK (dlg_keyboard_handler), this);
232
GtkWidget *treeview = lookup_widget(window1, "treeview1");
233
GtkWidget *textview = lookup_widget(window1, "textview1");
234
GtkWidget *label1 = lookup_widget(window1, "label1");
237
gtk_text_view_set_left_margin (GTK_TEXT_VIEW(textview), 5);
238
gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 5);
241
std::string strFont1;
242
g_objIni.GetValue("Display", "TreeFont", strFont1, "");
243
if(!strFont1.empty()){
244
PangoFontDescription *desc1 = pango_font_description_from_string(strFont1.c_str());
245
gtk_widget_modify_font(treeview, desc1);
246
pango_font_description_free(desc1);
249
std::string strFont2;
250
g_objIni.GetValue("Display", "TextFont", strFont2, "");
251
if(!strFont2.empty()){
252
PangoFontDescription *desc1 = pango_font_description_from_string(strFont2.c_str());
253
gtk_widget_modify_font(textview, desc1);
254
//calculate text size for node title bar as 1.5 the size of other text
255
g_nTitleBarTextSize = (pango_font_description_get_size(desc1) * 15)/10;
256
pango_font_description_free(desc1);
259
//set font size for node title bar (1.5 times of node text font)
260
PangoContext *context = gtk_widget_get_pango_context (label1);
261
PangoFontDescription *desc2 = pango_context_get_font_description(context);
262
PangoFontDescription *desc3 = pango_font_description_copy(desc2);
263
#if GTK_CHECK_VERSION(2,6,0) //minimal version for pango_font_description_set_absolute_size
264
pango_font_description_set_absolute_size(desc3, g_nTitleBarTextSize);
266
pango_font_description_set_size (desc3, (8*g_nTitleBarTextSize)/10); //TOFIX convert from pixels to fractions?
268
gtk_widget_modify_font(label1, desc3);
269
pango_font_description_free(desc3);
270
//TRACE("Node title bar: Font size=%d\n", g_nTitleBarTextSize);
273
if(g_objIni.GetValue("Startup", "Maximize", bMaximize))
275
gtk_window_maximize(GTK_WINDOW(window1));
277
//on demand check if we need to register file formats
278
bool bRegisterFormats;
279
if(g_objIni.GetValue("Startup", "RegisterFormats", bRegisterFormats))
281
register_extensions_check();
283
//restore text wrapping option
285
if(g_objIni.GetValue("Display", "WrapText", bWrapText))
287
set_wrap_activated(true);
289
//restore tree wrapping option
290
g_objIni.GetValue("Display", "WrapTree", g_bWrapTree);
292
//restore "tree lines" option
294
g_objIni.GetValue("Display", "ShowTreeLines", bTreeLines);
295
g_tree.SetTreeLines(bTreeLines);
297
//restore "toolbar visible" option
299
g_objIni.GetValue("Display", "ShowToolBar", bShowToolbar, 1);
301
set_show_toolbar(true);
303
//restore "node title visible" option
305
if(g_objIni.GetValue("Display", "NodeTitleBar", bShowTitle))
307
set_show_node_title(true);
309
//restore "status bar visible" option
311
g_objIni.GetValue("Display", "ShowStatusBar", bShowStatBar, 1);
312
if(bShowStatBar) // default is true, change only if false
313
set_show_status_bar(true);
315
//restore last position
316
bool bRestoreLastPos;
317
g_objIni.GetValue("Startup", "RestoreLastPosition", bRestoreLastPos, 1);
320
gint nPosLeft, nPosTop, nPosWidth, nPosHeight, nPosDivider;
321
nPosLeft = nPosTop = nPosWidth = nPosHeight = nPosDivider = 0;
323
g_objIni.GetValue("Startup", "LastPos_Left", nPosLeft);
324
g_objIni.GetValue("Startup", "LastPos_Top", nPosTop);
325
g_objIni.GetValue("Startup", "LastPos_Width", nPosWidth);
326
g_objIni.GetValue("Startup", "LastPos_Height", nPosHeight);
327
g_objIni.GetValue("Startup", "LastPos_Divider", nPosDivider);
329
//apply some common sense checks/fixes
330
if(nPosWidth <= 0) nPosWidth = 500;
331
if(nPosHeight <= 0) nPosHeight = 350;
332
if(nPosLeft <= 0) nPosLeft = 0;
333
if(nPosTop <= 0) nPosTop = 0;
334
if(nPosDivider<= 0) nPosDivider = 150;
336
gtk_window_move(GTK_WINDOW(window1), nPosLeft, nPosTop);
337
gtk_window_set_default_size(GTK_WINDOW(window1), nPosWidth, nPosHeight);
338
gtk_window_resize(GTK_WINDOW(window1), nPosWidth, nPosHeight);
339
GtkWidget *divider = lookup_widget(window1, "hbox1");
340
gtk_paned_set_position(GTK_PANED(divider), nPosDivider);
344
gtk_window_set_default_size (GTK_WINDOW (window1), 500, 350);
345
GtkWidget *divider = lookup_widget(window1, "hbox1");
346
if(g_bTreeToTheRight)
347
gtk_paned_set_position (GTK_PANED(divider), 350);
349
gtk_paned_set_position (GTK_PANED(divider), 150);
354
g_objIni.GetValue("Display", "ViewMode", nMode, 0);
356
on_view_text_only_mode (NULL, NULL);
358
on_view_text_only_mode (NULL, NULL);
361
//set custom GUI colors
362
std::string strColor, strColor1;
363
g_objIni.GetValue("Display", "TextColor", strColor, "");
364
g_objIni.GetValue("Display", "BackgroundColor", strColor1, "");
365
if(strColor.size() > 0)
368
gdk_color_parse (strColor.c_str(), &color);
369
gtk_widget_modify_text(GTK_WIDGET(textview), GTK_STATE_NORMAL, &color);
370
gtk_widget_modify_text(GTK_WIDGET(treeview), GTK_STATE_NORMAL, &color);
372
if(strColor1.size() > 0)
375
gdk_color_parse (strColor1.c_str(), &color1);
376
gtk_widget_modify_base(GTK_WIDGET(textview), GTK_STATE_NORMAL, &color1);
377
gtk_widget_modify_base(GTK_WIDGET(textview), GTK_STATE_INSENSITIVE, &color1);
378
gtk_widget_modify_base(GTK_WIDGET(treeview), GTK_STATE_NORMAL, &color1);
379
RefreshTextViewCaretColor(color1);
381
g_rgbTextViewBkColor = color1;
383
//fix for GTK bug - tree view loses background color
384
static const char cursor_color_rc[] =
387
"GtkTreeView::odd-row-color=\"#%04x%04x%04x\"\n"
388
"GtkTreeView::even-row-color =\"#%04x%04x%04x\"\n"
390
"widget \"*.aaa\" style \"aaa\"";
392
gchar *rc_temp = g_strdup_printf (cursor_color_rc,
399
gtk_rc_parse_string (rc_temp);
400
gtk_widget_set_name(treeview, "aaa");
401
gtk_widget_reset_rc_styles (treeview);
405
if(g_bDrawTextviewExpose){
406
//code to register drawing over text view
407
g_signal_connect (G_OBJECT (textview), "expose_event", G_CALLBACK(textview_expose_event_cb), NULL);
408
gtk_widget_set_app_paintable (textview, TRUE);
409
gtk_widget_set_redraw_on_allocate (textview, TRUE);
413
std::string strColor2;
414
g_objIni.GetValue("Display", "LinkColor", strColor2, "#0000FF");
416
gdk_color_parse (strColor2.c_str(), &color2);
417
g_linkColor = color2;
419
//init default node icon
420
g_objIni.GetValue("Default", "NodeIconType", g_nDefaultNodeIconType, -2);
421
g_objIni.GetValue("Security", "NodeIconValue", g_strDefaultIconFile, "");
424
g_objIni.GetValue("Search", "CaseSensitive", g_objSearchInfo.m_bFindSensitive, false);
426
//set custom tab size
427
int nCustomTabSize = 0;
428
g_objIni.GetValue("Display", "CustomTabSize", nCustomTabSize, 0);
429
if(nCustomTabSize > 0)
431
int nWidthPixels = g_text.CalcTabWidthInPixels(nCustomTabSize);
432
g_text.SetTabWidth(nWidthPixels);
435
//disable "New notecase" item when single instance is on
437
if(g_objIni.GetValue("Startup", "AllowSingleInstance", bSingleInst) && bSingleInst){
438
GtkWidget *new_notecase1 = lookup_widget(window1, "new_notecase1");
439
gtk_widget_set_sensitive(new_notecase1, FALSE);
443
g_timeout_add (0, initial_load_timer, NULL);
445
g_tree.SetFocus(); // set initial focus
447
gtk_widget_show (window1);
450
g_objIni.GetValue("Display", "MinimizeToTray", g_bMinimizeToTray);
451
g_objIni.GetValue("Display", "CloseToTray", g_bCloseToTray);
452
g_objIni.GetValue("Default", "CloseDlgOnTxtEnter", g_bCloseDlgOnTextEnter, true);
453
g_objIni.GetValue("Save", "AutoSaveOnClose", g_bAutoSaveOnClose);
454
g_objIni.GetValue("Save", "SkipMemOnlyAutoSave", g_bSkipMemOnlyAutosave, true);
455
g_objIni.GetValue("Export", "ExportEmbeddedAsSeparateFile", g_bExportDataAsSeparateFile, 1);
458
g_tree.WrapTreeToSize(g_tree.m_pWidget->allocation.width);
463
//TOFIX make class member RefreshTitle()
464
void RefreshMainTitle()
466
if(!g_wnd.m_pWidget) //no need if doing export from cmd line
469
std::string strTitle;
471
//basename of the document
472
if(g_doc.GetPath().size()>0)
474
strTitle += GetBaseName(g_doc.GetPath().c_str());
475
if(g_doc.IsModified())
480
strTitle += APP_NAME_STR;
482
strTitle += APP_VER_STR;
486
strTitle += g_doc.GetPath().c_str();
491
strTitle += APP_NAME_STR;
493
strTitle += APP_VER_STR;
496
gtk_window_set_title (GTK_WINDOW (window1), strTitle.c_str());
499
GtkWidget* MainWindow::create_main_win ()
502
HildonProgram *program;
503
HildonWindow *window1;
511
GtkWidget *scrolledwindow1;
512
GtkWidget *treeview1;
513
GtkWidget *scrolledwindow2;
514
GtkWidget *textview1;
515
GtkWidget *statusbar1;
518
GtkAccelGroup *accel_group;
522
// Create the hildon program and setup the title
523
program = HILDON_PROGRAM(hildon_program_get_instance());
524
g_set_application_name("Notecase");
527
accel_group = gtk_accel_group_new ();
529
//prepare version string
530
std::string strApp(APP_NAME_STR);
532
strApp += APP_VER_STR;
535
// Create HildonWindow and set it to HildonProgram
536
window1 = HILDON_WINDOW(hildon_window_new());
537
hildon_program_add_window(program, window1);
539
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
540
gtk_window_set_title (GTK_WINDOW (window1), strApp.c_str());
543
vbox1 = gtk_vbox_new (FALSE, 0);
544
gtk_widget_show (vbox1);
545
gtk_container_add (GTK_CONTAINER (window1), vbox1);
550
menubar1 = gtk_menu_bar_new ();
551
gtk_widget_show (menubar1);
552
gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0);
555
create_menu(GTK_WIDGET(window1), menubar1, accel_group);
558
toolbar1 = create_toolbar();
561
hildon_window_add_toolbar(window1, GTK_TOOLBAR(toolbar1));
563
gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0);
567
hbox1 = gtk_hpaned_new ();
568
gtk_widget_show (hbox1);
569
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
570
gtk_paned_set_position (GTK_PANED (hbox1), 0);
572
GtkWidget *frameLeft = gtk_frame_new (NULL);
573
GtkWidget *frameRight = gtk_frame_new (NULL);
574
gtk_frame_set_shadow_type (GTK_FRAME (frameLeft), GTK_SHADOW_IN);
575
gtk_frame_set_shadow_type (GTK_FRAME (frameRight), GTK_SHADOW_IN);
576
gtk_widget_show (frameLeft);
577
gtk_widget_show (frameRight);
579
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
580
gtk_widget_show (scrolledwindow1);
582
if(g_lang.IsCurLangRTL() || g_bTreeToTheRight) //RTL support
583
gtk_container_add( GTK_CONTAINER(frameRight), scrolledwindow1 );
585
gtk_container_add( GTK_CONTAINER(frameLeft), scrolledwindow1 );
587
gtk_paned_pack1(GTK_PANED(hbox1), frameLeft, FALSE, TRUE);
589
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
593
treeview1 = g_tree.m_pWidget;
594
gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);
596
vbox2 = gtk_vbox_new (FALSE, 0);
597
gtk_widget_show (vbox2);
598
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 2);
600
if(g_lang.IsCurLangRTL() || g_bTreeToTheRight) //RTL support
601
gtk_container_add( GTK_CONTAINER(frameLeft), vbox2 );
603
gtk_container_add( GTK_CONTAINER(frameRight), vbox2 );
605
gtk_paned_pack2 (GTK_PANED (hbox1), frameRight, TRUE, TRUE);
607
//create text node label
608
label1 = gtk_label_new ("");
609
gtk_label_set_selectable(GTK_LABEL(label1), TRUE);
610
gtk_widget_set_size_request(label1, 300, -1);
611
gtk_misc_set_alignment(GTK_MISC(label1), 0.0f, 0.7f); // horizontal: left aligned, vertically centered
612
gtk_misc_set_padding(GTK_MISC(label1), 0, 2);
613
gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0);
615
//hack trying to fake top margin for text view
616
GtkWidget *margin1 = NULL;
617
if(g_bDrawTextviewExpose){
618
margin1 = gtk_label_new ("");
619
gtk_widget_show (margin1);
620
gtk_widget_set_size_request(margin1, -1, 5);
621
gtk_box_pack_start (GTK_BOX (vbox2), margin1, FALSE, FALSE, 0);
622
gtk_widget_set_app_paintable (margin1, TRUE);
623
gtk_widget_set_redraw_on_allocate (margin1, TRUE);
624
g_signal_connect (G_OBJECT (margin1), "expose_event", G_CALLBACK(textview1_expose_event_cb), NULL);
627
scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
628
gtk_widget_show (scrolledwindow2);
629
gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow2, TRUE, TRUE, 0);
630
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
632
//hack trying to fake bottom margin for text view
633
GtkWidget *margin2 = NULL;
634
if(g_bDrawTextviewExpose){
635
margin2 = gtk_label_new ("");
636
gtk_widget_show (margin2);
637
gtk_widget_set_size_request(margin2, -1, 5);
638
gtk_widget_set_app_paintable (margin1, TRUE);
639
gtk_widget_set_redraw_on_allocate (margin2, TRUE);
640
gtk_box_pack_start (GTK_BOX (vbox2), margin2, FALSE, FALSE, 0);
641
g_signal_connect (G_OBJECT (margin2), "expose_event", G_CALLBACK(textview1_expose_event_cb), NULL);
646
g_text.SetEditable(false); // no selected node
647
textview1 = g_text.m_pWidget;
648
gtk_container_add (GTK_CONTAINER (scrolledwindow2), textview1);
650
statusbar1 = gtk_statusbar_new ();
651
//gtk_widget_show (statusbar1);
652
gtk_box_pack_start (GTK_BOX (vbox1), statusbar1, FALSE, FALSE, 0);
654
g_signal_connect (GTK_OBJECT (window1), "window_state_event", G_CALLBACK(window_state_event), NULL);
655
g_signal_connect (GTK_OBJECT (scrolledwindow1), "size-allocate", G_CALLBACK(on_tree_resize), NULL);
657
// Store pointers to all widgets, for use by lookup_widget()
658
GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
659
GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1");
661
GLADE_HOOKUP_OBJECT (window1, menubar1, "menubar1");
663
GLADE_HOOKUP_OBJECT (window1, hbox1, "hbox1");
664
GLADE_HOOKUP_OBJECT (window1, scrolledwindow1, "scrolledwindow1");
665
GLADE_HOOKUP_OBJECT (window1, treeview1, "treeview1");
666
GLADE_HOOKUP_OBJECT (window1, scrolledwindow2, "scrolledwindow2");
667
GLADE_HOOKUP_OBJECT (window1, textview1, "textview1");
668
GLADE_HOOKUP_OBJECT (window1, statusbar1, "statusbar1");
669
GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2");
670
GLADE_HOOKUP_OBJECT (window1, label1, "label1");
671
GLADE_HOOKUP_OBJECT (window1, toolbar1, "toolbar1");
672
if(g_bDrawTextviewExpose){
673
GLADE_HOOKUP_OBJECT (window1, margin1, "margin1");
674
GLADE_HOOKUP_OBJECT (window1, margin2, "margin2");
677
gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group);
679
g_doc.SetPassCallback(PasswordCallback);
683
//set window/application icon
684
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
685
gtk_window_set_icon(GTK_WINDOW(window1), pixbuf);
686
g_object_unref(pixbuf);
689
//modify context menu for text view widget
690
g_signal_connect(G_OBJECT(textview1), "populate-popup", G_CALLBACK(on_textview_populate_popup), NULL);
693
//first one is required for maemo
694
gtk_widget_show_all(GTK_WIDGET(window1));
695
gtk_widget_hide_all(toolbar1); // hidden on startup
696
gtk_widget_hide(statusbar1); // hidden on startup
697
gtk_widget_hide(label1); // hidden on startup (node title bar)
700
return GTK_WIDGET(window1);
703
GtkWidget* MainWindow::create_toolbar()
705
GtkWidget *toolitem1;
707
GtkIconSize tmp_toolbar_icon_size;
709
GtkWidget *toolbar1 = gtk_toolbar_new ();
710
//gtk_widget_show (toolbar1); //initialy invisible (set by .ini value)
712
gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_ICONS);
713
gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar1), GTK_ICON_SIZE_SMALL_TOOLBAR);
714
tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1));
716
g_signal_connect (GTK_OBJECT (toolbar1), "focus", G_CALLBACK(on_focus_event), NULL);
718
gtk_toolbar_set_tooltips (GTK_TOOLBAR (toolbar1), TRUE );
719
GtkTooltips *tips = gtk_tooltips_new ();
721
button3 = gtk_image_new_from_stock (GTK_STOCK_NEW, tmp_toolbar_icon_size);
722
gtk_widget_show (button3);
724
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("New"));
725
gtk_widget_show (toolitem1);
726
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
727
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("New"), NULL);
728
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_new1_activate), NULL);
731
button3 = gtk_image_new_from_stock (GTK_STOCK_OPEN, tmp_toolbar_icon_size);
732
gtk_widget_show (button3);
734
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Open"));
735
gtk_widget_show (toolitem1);
736
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
737
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Open"), NULL);
738
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_open1_activate), NULL);
741
button3 = gtk_image_new_from_stock (GTK_STOCK_SAVE, tmp_toolbar_icon_size);
742
gtk_widget_show (button3);
744
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Save"));
745
gtk_widget_show (toolitem1);
746
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
747
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Save"), NULL);
748
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_save1_activate), NULL);
751
button3 = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, tmp_toolbar_icon_size);
752
gtk_widget_show (button3);
754
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Save As"));
755
gtk_widget_show (toolitem1);
756
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
757
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Save As"), NULL);
758
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_save_as1_activate), NULL);
761
toolitem1 = (GtkWidget*) gtk_separator_tool_item_new();
762
gtk_widget_show (toolitem1);
763
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
766
button3 = gtk_image_new_from_stock (GTK_STOCK_UNDO, tmp_toolbar_icon_size);
767
gtk_widget_show (button3);
769
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Undo"));
770
gtk_widget_show (toolitem1);
771
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
772
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Undo"), NULL);
773
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_undo_activate), NULL);
774
gtk_widget_set_sensitive(toolitem1, FALSE);
775
m_pToolbarUndo = toolitem1;
777
button3 = gtk_image_new_from_stock (GTK_STOCK_REDO, tmp_toolbar_icon_size);
778
gtk_widget_show (button3);
780
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Redo"));
781
gtk_widget_show (toolitem1);
782
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
783
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Redo"), NULL);
784
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_redo_activate), NULL);
785
gtk_widget_set_sensitive(toolitem1, FALSE);
786
m_pToolbarRedo = toolitem1;
788
button3 = gtk_image_new_from_stock (GTK_STOCK_CUT, tmp_toolbar_icon_size);
789
gtk_widget_show (button3);
791
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Cut"));
792
gtk_widget_show (toolitem1);
793
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
794
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Cut"), NULL);
795
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_cut1_activate), NULL);
798
button3 = gtk_image_new_from_stock (GTK_STOCK_COPY, tmp_toolbar_icon_size);
799
gtk_widget_show (button3);
801
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Copy"));
802
gtk_widget_show (toolitem1);
803
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
804
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Copy"), NULL);
805
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_copy1_activate), NULL);
808
button3 = gtk_image_new_from_stock (GTK_STOCK_PASTE, tmp_toolbar_icon_size);
809
gtk_widget_show (button3);
811
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Paste"));
812
gtk_widget_show (toolitem1);
813
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
814
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Paste"), NULL);
815
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_paste1_activate), NULL);
818
button3 = gtk_image_new_from_stock (GTK_STOCK_DELETE, tmp_toolbar_icon_size);
819
gtk_widget_show (button3);
821
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Delete"));
822
gtk_widget_show (toolitem1);
823
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
824
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Delete"), NULL);
825
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_delete1_activate), NULL);
831
button3 = gtk_image_new_from_stock (GTK_STOCK_ADD, tmp_toolbar_icon_size);
832
gtk_widget_show (button3);
834
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Insert Node"));
835
gtk_widget_show (toolitem1);
836
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
837
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Insert Node"), NULL);
838
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_insert_node), NULL);
841
button3 = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, tmp_toolbar_icon_size);
842
gtk_widget_show (button3);
844
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Move Node Left"));
845
gtk_widget_show (toolitem1);
846
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
847
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Move Node Left"), NULL);
848
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_move_left), NULL);
851
button3 = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, tmp_toolbar_icon_size);
852
gtk_widget_show (button3);
854
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Move Node Right"));
855
gtk_widget_show (toolitem1);
856
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
857
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Move Node Right"), NULL);
858
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_move_right), NULL);
862
toolitem1 = (GtkWidget*) gtk_separator_tool_item_new();
863
gtk_widget_show (toolitem1);
864
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
867
// link wizard button
868
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
869
button3 = gtk_image_new_from_pixbuf (pixbuf);
870
gtk_widget_show (button3);
872
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Link wizard"));
873
gtk_widget_show (toolitem1);
874
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
875
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Link wizard"), NULL);
876
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_link_wizard_activate), NULL);
878
// insert image button
879
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_picture);
880
button3 = gtk_image_new_from_pixbuf (pixbuf);
881
gtk_widget_show (button3);
883
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Insert Picture"));
884
gtk_widget_show (toolitem1);
885
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
886
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Insert Picture"), NULL);
887
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_insert_picture_activate), NULL);
889
// insert image button
890
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_attachment);
891
button3 = gtk_image_new_from_pixbuf (pixbuf);
892
gtk_widget_show (button3);
894
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
895
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Node Attachments"));
896
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
898
gtk_widget_show (toolitem1);
899
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
900
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Node Attachments"), NULL);
901
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_node_attachments_activate), NULL);
903
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_attachments");
904
m_pToolbarAttachment = toolitem1;
906
// insert bold button
907
//button3 = gtk_image_new_from_stock (GTK_STOCK_BOLD, tmp_toolbar_icon_size);
908
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bold);
909
button3 = gtk_image_new_from_pixbuf (pixbuf);
910
gtk_widget_show (button3);
912
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
913
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Bold"));
914
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
916
gtk_widget_show (toolitem1);
917
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
918
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Bold"), NULL);
919
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_bold_activate), NULL);
921
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_bold");
922
m_pToolbarBold = toolitem1;
924
// insert italic button
925
//button3 = gtk_image_new_from_stock (GTK_STOCK_ITALIC, tmp_toolbar_icon_size);
926
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_italic);
927
button3 = gtk_image_new_from_pixbuf (pixbuf);
928
gtk_widget_show (button3);
930
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
931
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Italic"));
932
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
934
gtk_widget_show (toolitem1);
935
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
936
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Italic"), NULL);
937
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_italic_activate), NULL);
939
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_italic");
940
m_pToolbarItalic = toolitem1;
942
// insert underline button
943
//button3 = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, tmp_toolbar_icon_size);
944
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_underline);
945
button3 = gtk_image_new_from_pixbuf (pixbuf);
946
gtk_widget_show (button3);
948
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
949
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Underline"));
950
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
952
gtk_widget_show (toolitem1);
953
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
954
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Underline"), NULL);
955
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_underline_activate), NULL);
957
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_underline");
958
m_pToolbarUnderline = toolitem1;
960
// insert strikethrough button
961
//button3 = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, tmp_toolbar_icon_size);
962
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_strikethrough);
963
button3 = gtk_image_new_from_pixbuf (pixbuf);
964
gtk_widget_show (button3);
966
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
967
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Strikethrough"));
968
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
970
gtk_widget_show (toolitem1);
971
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
972
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Strikethrough"), NULL);
973
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_strikethrough_activate), NULL);
975
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_strikethrough");
976
m_pToolbarStrike = toolitem1;
978
// insert color button
979
//button3 = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, tmp_toolbar_icon_size);
980
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_color_xpm);
981
button3 = gtk_image_new_from_pixbuf (pixbuf);
982
gtk_widget_show (button3);
984
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
985
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Text Color"));
986
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
988
gtk_widget_show (toolitem1);
989
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
990
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Text Color"), NULL);
991
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_color_activate), NULL);
993
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_color");
994
m_pToolbarColor = toolitem1;
996
// insert bkg color button
997
//button3 = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, tmp_toolbar_icon_size);
998
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bg_color_xpm);
999
button3 = gtk_image_new_from_pixbuf (pixbuf);
1000
gtk_widget_show (button3);
1002
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
1003
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Text Background Color"));
1004
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
1006
gtk_widget_show (toolitem1);
1007
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
1008
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Text Background Color"), NULL);
1009
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_background_color_activate), NULL);
1011
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_bkg_color");
1012
m_pToolbarBkgColor = toolitem1;
1014
//insert help button
1015
button3 = gtk_image_new_from_stock (GTK_STOCK_HELP, tmp_toolbar_icon_size);
1016
gtk_widget_show (button3);
1018
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Help"));
1019
gtk_widget_show (toolitem1);
1020
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
1021
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Help"), NULL);
1022
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_help1_activate), NULL);
1027
gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event)
1029
if(event->changed_mask & GDK_WINDOW_STATE_ICONIFIED)
1031
if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED)
1033
//on window minimized, show tray icon
1034
if(g_bMinimizeToTray)
1037
g_tray.SetTooltip("NoteCase"); //important: call this after Show
1038
gtk_widget_hide(window1);
1045
const char *PasswordCallback(const char *szFile, bool bSave)
1047
static char szPass[1024] = "";
1050
bool bCursor = g_bBusyCursor;
1052
HideBusyCursor(); //restore the normal cursor for the moment
1054
//ask user for password
1055
PasswordDialog dlg(bSave ? MODE_PASS_NEW : MODE_PASS_VERIFY);
1058
std::string strLabel = _("Please enter the password for file: ");
1059
strLabel += GetBaseName(szFile);
1060
dlg.SetLabel(strLabel.c_str());
1062
gtk_grab_add( dlg.GetDialog() ); //block all other widgets in the app
1064
if(GTK_RESPONSE_OK == dlg.ShowModal())
1067
const char *szText = dlg.GetPassword();
1069
strcpy(szPass, szText);
1072
gtk_grab_remove(dlg.GetDialog()); //unblock
1076
ShowBusyCursor(); //keep showing busy
1079
if(strlen(szPass)<1)
1084
void create_menu (GtkWidget *window1, GtkWidget *menubar1, GtkAccelGroup *accel_group)
1086
GtkWidget *menuitem1;
1089
GtkWidget *new_notecase1;
1093
GtkWidget *save_as1;
1096
GtkWidget *change_pass1;
1097
GtkWidget *read_only1;
1098
GtkWidget *separatormenuitem1;
1100
GtkWidget *menuitem2;
1108
GtkWidget *replace1;
1111
GtkWidget *statbar1;
1112
GtkWidget *menutool1;
1113
GtkWidget *menufull1;
1115
GtkWidget *options1;
1116
GtkWidget *shortcuts1;
1119
GtkWidget *menuitem3;
1121
GtkWidget *menuitem4;
1125
GtkWidget *website1;
1127
GtkWidget *menu_item;
1128
GtkWidget *textonly1;
1130
GtkWidget *menuitem5;
1131
GtkWidget *move_item;
1133
GtkWidget *wordcount1;
1134
GtkWidget *sort_item;
1137
GtkWidget *underline1;
1138
GtkWidget *strikethrough1;
1140
GtkWidget *bkgcolor1;
1141
GtkWidget *picture1;
1142
GtkWidget *remove_format1;
1143
GtkWidget *attachments1;
1144
GtkTooltips *menutips;
1147
menutips = gtk_tooltips_new();
1148
gtk_tooltips_enable(menutips);
1151
GtkWidget *maemomenu = gtk_menu_new ();
1154
menuitem1 = gtk_menu_item_new_with_mnemonic (_("_File"));
1155
gtk_widget_show (menuitem1);
1157
gtk_menu_append(GTK_MENU(maemomenu), menuitem1);
1159
gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);
1162
menu1 = gtk_menu_new ();
1163
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menu1);
1165
new_notecase1 = gtk_image_menu_item_new_with_mnemonic (_("New _Window"));
1166
gtk_widget_show (new_notecase1);
1167
gtk_container_add (GTK_CONTAINER (menu1), new_notecase1);
1168
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
1169
GdkPixbuf *destpix = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
1170
g_object_unref (G_OBJECT (pixbuf));
1171
icon = gtk_image_new_from_pixbuf (destpix);
1172
gtk_widget_show (icon);
1173
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new_notecase1), icon);
1174
int nPos = g_shortcuts.FindByAction(NC_ACTION_APP_NEW);
1175
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1176
gtk_widget_add_accelerator (new_notecase1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1178
new1 = gtk_image_menu_item_new_with_mnemonic (_("_New"));
1179
gtk_widget_show (new1);
1180
gtk_container_add (GTK_CONTAINER (menu1), new1);
1181
icon = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_MENU);
1182
gtk_widget_show (icon);
1183
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new1), icon);
1184
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_NEW);
1185
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1186
gtk_widget_add_accelerator (new1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1188
open1 = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
1189
gtk_widget_show (open1);
1190
gtk_container_add (GTK_CONTAINER (menu1), open1);
1191
icon = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
1192
gtk_widget_show (icon);
1193
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open1), icon);
1194
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_OPEN);
1195
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1196
gtk_widget_add_accelerator (open1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1198
close1 = gtk_image_menu_item_new_with_mnemonic (_("_Close"));
1199
gtk_widget_show (close1);
1200
gtk_container_add (GTK_CONTAINER (menu1), close1);
1201
icon = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
1202
gtk_widget_show (icon);
1203
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (close1), icon);
1204
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_CLOSE);
1205
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1206
gtk_widget_add_accelerator (close1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1208
save1 = gtk_image_menu_item_new_with_mnemonic (_("_Save"));
1209
gtk_widget_show (save1);
1210
gtk_container_add (GTK_CONTAINER (menu1), save1);
1211
icon = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
1212
gtk_widget_show (icon);
1213
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save1), icon);
1214
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_SAVE);
1215
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1216
gtk_widget_add_accelerator (save1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1218
save_as1 = gtk_image_menu_item_new_with_mnemonic (_("Save _As"));
1219
gtk_widget_show (save_as1);
1220
gtk_container_add (GTK_CONTAINER (menu1), save_as1);
1221
icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_MENU);
1222
gtk_widget_show (icon);
1223
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save_as1), icon);
1224
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_SAVE_AS);
1225
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1226
gtk_widget_add_accelerator (save_as1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1228
reload1 = gtk_image_menu_item_new_with_mnemonic (_("Re_load"));
1229
gtk_widget_show (reload1);
1230
gtk_container_add (GTK_CONTAINER (menu1), reload1);
1231
icon = gtk_image_new_from_stock (GTK_STOCK_REFRESH, GTK_ICON_SIZE_MENU);
1232
gtk_widget_show (icon);
1233
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (reload1), icon);
1234
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_RELOAD);
1235
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1236
gtk_widget_add_accelerator (reload1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1238
read_only1 = gtk_check_menu_item_new_with_mnemonic (_("Read-Only"));
1239
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(read_only1), TRUE); //show check mark always
1240
gtk_widget_show (read_only1);
1241
gtk_container_add (GTK_CONTAINER (menu1), read_only1);
1242
nPos = g_shortcuts.FindByAction(NC_ACTION_READ_ONLY);
1243
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1244
gtk_widget_add_accelerator (read_only1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1245
gtk_tooltips_set_tip(menutips, read_only1, _("Document property that forbids document editing."), NULL);
1247
lock1 = gtk_image_menu_item_new_with_mnemonic (_("_Lock Document"));
1248
gtk_widget_show (lock1);
1249
gtk_container_add (GTK_CONTAINER (menu1), lock1);
1250
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&lock_xpm);
1251
icon = gtk_image_new_from_pixbuf (pixbuf);
1252
gtk_widget_show (icon);
1253
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (lock1), icon);
1254
nPos = g_shortcuts.FindByAction(NC_ACTION_LOCK_DOCUMENT);
1255
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1256
gtk_widget_add_accelerator (lock1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1257
gtk_widget_set_sensitive (lock1, FALSE);
1258
gtk_tooltips_set_tip(menutips, lock1, _("Unload encrypted document from memory."), NULL);
1260
change_pass1 = gtk_image_menu_item_new_with_mnemonic (_("_Change Password"));
1261
gtk_widget_show (change_pass1);
1262
gtk_container_add (GTK_CONTAINER (menu1), change_pass1);
1263
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&key);
1264
icon = gtk_image_new_from_pixbuf (pixbuf);
1265
gtk_widget_show (icon);
1266
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (change_pass1), icon);
1267
nPos = g_shortcuts.FindByAction(NC_ACTION_PASSWORD_CHANGE);
1268
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1269
gtk_widget_add_accelerator (change_pass1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1270
gtk_widget_set_sensitive (change_pass1, FALSE);
1272
separatormenuitem1 = gtk_separator_menu_item_new ();
1273
gtk_widget_show (separatormenuitem1);
1274
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1275
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1277
menu_item = gtk_menu_item_new_with_mnemonic(_("_Import"));
1278
gtk_widget_show (menu_item); // Show the widget
1279
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_import), NULL);
1280
gtk_menu_append(menu1, menu_item);
1281
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_IMPORT);
1282
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1283
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1285
menu_item = gtk_menu_item_new_with_mnemonic(_("_Export"));
1286
gtk_widget_show (menu_item); // Show the widget
1287
g_signal_connect(GTK_OBJECT(menu_item), "activate", G_CALLBACK (on_menu_export), NULL);
1288
gtk_menu_append(menu1, menu_item);
1289
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_EXPORT);
1290
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1291
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1293
separatormenuitem1 = gtk_separator_menu_item_new ();
1294
gtk_widget_show (separatormenuitem1);
1295
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1296
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1299
// MRU (most recently used) list
1303
g_menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Recent"));
1304
gtk_widget_show (g_menuitem5);
1305
gtk_container_add (GTK_CONTAINER (menu1), g_menuitem5);
1308
g_objMRU.RebuildMenu();
1311
separatormenuitem1 = gtk_separator_menu_item_new ();
1312
gtk_widget_show (separatormenuitem1);
1313
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1314
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1316
//continue creating menus
1317
quit1 = gtk_image_menu_item_new_with_mnemonic (_("_Quit"));
1318
gtk_widget_show (quit1);
1319
gtk_container_add (GTK_CONTAINER (menu1), quit1);
1320
icon = gtk_image_new_from_stock (GTK_STOCK_QUIT, GTK_ICON_SIZE_MENU);
1321
gtk_widget_show (icon);
1322
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit1), icon);
1323
nPos = g_shortcuts.FindByAction(NC_ACTION_APP_QUIT);
1324
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1325
gtk_widget_add_accelerator (quit1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1331
menuitem2 = gtk_menu_item_new_with_mnemonic (_("_Edit"));
1332
gtk_widget_show (menuitem2);
1334
gtk_menu_append(GTK_MENU(maemomenu), menuitem2);
1336
gtk_container_add (GTK_CONTAINER (menubar1), menuitem2);
1339
menu2 = gtk_menu_new ();
1340
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menu2);
1342
undo1 = gtk_image_menu_item_new_with_mnemonic (_("_Undo"));
1343
gtk_widget_show (undo1);
1344
gtk_widget_set_sensitive(undo1, FALSE);
1345
gtk_container_add (GTK_CONTAINER (menu2), undo1);
1346
icon = gtk_image_new_from_stock (GTK_STOCK_UNDO, GTK_ICON_SIZE_MENU);
1347
gtk_widget_show (icon);
1348
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (undo1), icon);
1349
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_UNDO);
1350
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1351
gtk_widget_add_accelerator (undo1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1353
redo1 = gtk_image_menu_item_new_with_mnemonic (_("_Redo"));
1354
gtk_widget_show (redo1);
1355
gtk_widget_set_sensitive(redo1, FALSE);
1356
gtk_container_add (GTK_CONTAINER (menu2), redo1);
1357
icon = gtk_image_new_from_stock (GTK_STOCK_REDO, GTK_ICON_SIZE_MENU);
1358
gtk_widget_show (icon);
1359
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (redo1), icon);
1360
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_REDO);
1361
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1362
gtk_widget_add_accelerator (redo1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1364
separatormenuitem1 = gtk_separator_menu_item_new ();
1365
gtk_widget_show (separatormenuitem1);
1366
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1367
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1369
cut1 = gtk_image_menu_item_new_with_mnemonic (_("Cu_t"));
1370
gtk_widget_show (cut1);
1371
gtk_container_add (GTK_CONTAINER (menu2), cut1);
1372
icon = gtk_image_new_from_stock (GTK_STOCK_CUT, GTK_ICON_SIZE_MENU);
1373
gtk_widget_show (icon);
1374
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (cut1), icon);
1375
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_CUT);
1376
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1377
gtk_widget_add_accelerator (cut1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1379
copy1 = gtk_image_menu_item_new_with_mnemonic (_("_Copy"));
1380
gtk_widget_show (copy1);
1381
gtk_container_add (GTK_CONTAINER (menu2), copy1);
1382
icon = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
1383
gtk_widget_show (icon);
1384
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (copy1), icon);
1385
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY);
1386
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1387
gtk_widget_add_accelerator (copy1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1389
paste1 = gtk_image_menu_item_new_with_mnemonic (_("_Paste"));
1390
gtk_widget_show (paste1);
1391
gtk_container_add (GTK_CONTAINER (menu2), paste1);
1392
icon = gtk_image_new_from_stock (GTK_STOCK_PASTE, GTK_ICON_SIZE_MENU);
1393
gtk_widget_show (icon);
1394
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (paste1), icon);
1395
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE);
1396
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1397
gtk_widget_add_accelerator (paste1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1399
delete1 = gtk_image_menu_item_new_with_mnemonic (_("_Delete"));
1400
gtk_widget_show (delete1);
1401
gtk_container_add (GTK_CONTAINER (menu2), delete1);
1402
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1403
gtk_widget_show (icon);
1404
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (delete1), icon);
1405
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_DELETE);
1406
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1407
gtk_widget_add_accelerator (delete1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1409
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Copy Branch _Structure"));
1410
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_copy_branch_structure), NULL);
1411
gtk_menu_append(menu2, menu_item);
1412
gtk_widget_show (menu_item); // Show the widget
1413
icon = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
1414
gtk_widget_show (icon);
1415
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1416
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY_BR_STRUCT);
1417
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1418
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1420
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Paste Branch To Root"));
1421
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_paste_branch_root), NULL);
1422
gtk_menu_append(menu2, menu_item);
1423
gtk_widget_show (menu_item); // Show the widget
1424
icon = gtk_image_new_from_stock (GTK_STOCK_PASTE, GTK_ICON_SIZE_MENU);
1425
gtk_widget_show (icon);
1426
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1427
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE_BR_ROOT);
1428
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1429
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1431
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Insert Date/Time"));
1432
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_date_time), NULL);
1433
gtk_menu_append(menu2, menu_item);
1434
gtk_widget_show (menu_item); // Show the widget
1435
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_datetime);
1436
icon = gtk_image_new_from_pixbuf (pixbuf);
1437
gtk_widget_show (icon);
1438
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1439
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_INSERT_DATETIME);
1440
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1441
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1443
separatormenuitem1 = gtk_separator_menu_item_new ();
1444
gtk_widget_show (separatormenuitem1);
1445
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1446
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1448
find1 = gtk_image_menu_item_new_with_mnemonic (_("_Find"));
1449
gtk_widget_show (find1);
1450
gtk_container_add (GTK_CONTAINER (menu2), find1);
1451
icon = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
1452
gtk_widget_show (icon);
1453
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find1), icon);
1454
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_FIND);
1455
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1456
gtk_widget_add_accelerator (find1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1458
find2 = gtk_image_menu_item_new_with_mnemonic (_("Find _Next"));
1459
gtk_widget_show (find2);
1460
gtk_container_add (GTK_CONTAINER (menu2), find2);
1461
icon = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
1462
gtk_widget_show (icon);
1463
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find2), icon);
1464
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_FIND_NEXT);
1465
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1466
gtk_widget_add_accelerator (find2, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1468
replace1 = gtk_image_menu_item_new_with_mnemonic (_("R_eplace"));
1469
gtk_widget_show (replace1);
1470
gtk_container_add (GTK_CONTAINER (menu2), replace1);
1471
icon = gtk_image_new_from_stock (GTK_STOCK_FIND_AND_REPLACE, GTK_ICON_SIZE_MENU);
1472
gtk_widget_show (icon);
1473
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), icon);
1474
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_REPLACE);
1475
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1476
gtk_widget_add_accelerator (replace1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1478
link1 = gtk_image_menu_item_new_with_mnemonic (_("Link _Wizard"));
1479
gtk_widget_show (link1);
1480
gtk_container_add (GTK_CONTAINER (menu2), link1);
1481
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
1482
icon = gtk_image_new_from_pixbuf (pixbuf);
1483
gtk_widget_show (icon);
1484
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (link1), icon);
1485
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_LINK_WIZARD);
1486
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1487
gtk_widget_add_accelerator (link1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1489
picture1 = gtk_image_menu_item_new_with_mnemonic (_("_Insert Picture"));
1490
gtk_widget_show (picture1);
1491
gtk_container_add (GTK_CONTAINER (menu2), picture1);
1492
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_picture);
1493
icon = gtk_image_new_from_pixbuf (pixbuf);
1494
gtk_widget_show (icon);
1495
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (picture1), icon);
1496
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_INSERT_PICTURE);
1497
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1498
gtk_widget_add_accelerator (picture1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1500
attachments1 = gtk_image_menu_item_new_with_mnemonic (_("Node _Attachments"));
1501
gtk_widget_show (attachments1);
1502
gtk_container_add (GTK_CONTAINER (menu2), attachments1);
1503
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_attachment);
1504
icon = gtk_image_new_from_pixbuf (pixbuf);
1505
gtk_widget_show (icon);
1506
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (attachments1), icon);
1507
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_ATTACHMENTS);
1508
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1509
gtk_widget_add_accelerator (attachments1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1511
separatormenuitem1 = gtk_separator_menu_item_new ();
1512
gtk_widget_show (separatormenuitem1);
1513
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1514
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1516
shortcuts1 = gtk_image_menu_item_new_with_mnemonic (_("Configure Shortcuts"));
1517
gtk_widget_show (shortcuts1);
1518
gtk_container_add (GTK_CONTAINER (menu2), shortcuts1);
1519
icon = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
1520
gtk_widget_show (icon);
1521
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (shortcuts1), icon);
1522
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_SHORTCUTS);
1523
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1524
gtk_widget_add_accelerator (shortcuts1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1526
options1 = gtk_image_menu_item_new_with_mnemonic (_("Configure NoteCase"));
1527
gtk_widget_show (options1);
1528
gtk_container_add (GTK_CONTAINER (menu2), options1);
1529
icon = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
1530
gtk_widget_show (icon);
1531
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (options1), icon);
1532
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_OPTIONS);
1533
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1534
gtk_widget_add_accelerator (options1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1539
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_View"));
1540
gtk_widget_show (menuitem3);
1542
gtk_menu_append(GTK_MENU(maemomenu), menuitem3);
1544
gtk_container_add (GTK_CONTAINER (menubar1), menuitem3);
1547
menu3 = gtk_menu_new ();
1548
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menu3);
1550
menufull1 = gtk_check_menu_item_new_with_mnemonic (_("_Full Screen"));
1551
gtk_widget_show (menufull1);
1552
gtk_container_add (GTK_CONTAINER (menu3), menufull1);
1555
gtk_widget_add_accelerator (menufull1, "activate", accel_group, HILDON_HARDKEY_FULLSCREEN, (GdkModifierType)0, (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1557
#ifndef _NOKIA_MAEMO
1558
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_FULLSCREEN);
1559
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1560
gtk_widget_add_accelerator (menufull1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1563
ontop1 = gtk_check_menu_item_new_with_mnemonic (_("_Always on top"));
1564
gtk_widget_show (ontop1);
1565
gtk_container_add (GTK_CONTAINER (menu3), ontop1);
1566
//TOFIX nPos = g_shortcuts.FindByAction(NC_ACTION_KEEP_ON_TOP);
1567
//if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1568
// gtk_widget_add_accelerator (ontop1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1570
menutool1 = gtk_check_menu_item_new_with_mnemonic (_("_Tool Bar"));
1571
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(menutool1), TRUE); //show check mark always
1572
gtk_widget_show (menutool1);
1573
gtk_container_add (GTK_CONTAINER (menu3), menutool1);
1574
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_TOOLBAR);
1575
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1576
gtk_widget_add_accelerator (menutool1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1578
title1 = gtk_check_menu_item_new_with_mnemonic (_("_Node Title Bar"));
1579
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(title1), TRUE); //show check mark always
1580
gtk_widget_show (title1);
1581
gtk_container_add (GTK_CONTAINER (menu3), title1);
1582
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_NODE_TITLEBAR);
1583
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1584
gtk_widget_add_accelerator (title1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1586
statbar1 = gtk_check_menu_item_new_with_mnemonic (_("_Status Bar"));
1587
gtk_widget_show (statbar1);
1588
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(statbar1), TRUE); //show check mark always
1589
gtk_container_add (GTK_CONTAINER (menu3), statbar1);
1590
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_STATUS_BAR);
1591
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1592
gtk_widget_add_accelerator (statbar1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1594
wrap1 = gtk_check_menu_item_new_with_mnemonic (_("_Wrap"));
1595
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(wrap1), TRUE); //show check mark always
1596
gtk_widget_show (wrap1);
1597
gtk_container_add (GTK_CONTAINER (menu3), wrap1);
1598
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_WRAP);
1599
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1600
gtk_widget_add_accelerator (wrap1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1602
textonly1 = gtk_menu_item_new_with_mnemonic (_("Change View _Mode"));
1603
gtk_widget_show (textonly1);
1604
gtk_container_add (GTK_CONTAINER (menu3), textonly1);
1605
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_CHANGE_MODE);
1606
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1607
gtk_widget_add_accelerator (textonly1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1609
wordcount1 = gtk_menu_item_new_with_mnemonic (_("_Calculate Word Count"));
1610
gtk_widget_show (wordcount1);
1611
gtk_container_add (GTK_CONTAINER (menu3), wordcount1);
1612
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_WORD_COUNT);
1613
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1614
gtk_widget_add_accelerator (wordcount1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1617
// tree menu (start)
1620
menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Tree"));
1621
gtk_widget_show (menuitem5);
1623
gtk_menu_append(GTK_MENU(maemomenu), menuitem5);
1625
gtk_container_add (GTK_CONTAINER (menubar1), menuitem5);
1628
menu5 = gtk_menu_new ();
1629
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem5), menu5);
1631
// ... add menu items with accelerators ...
1632
menu_item = gtk_menu_item_new_with_mnemonic(_("_Insert Node"));
1633
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_node), NULL);
1634
gtk_menu_append(menu5, menu_item);
1635
gtk_widget_show (menu_item); // Show the widget
1636
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW);
1637
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1638
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1640
menu_item = gtk_menu_item_new_with_mnemonic(_("Insert Child _Node"));
1641
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_child_node), NULL);
1642
gtk_menu_append(menu5, menu_item);
1643
gtk_widget_show (menu_item); // Show the widget
1644
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW_CHILD);
1645
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1646
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1648
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Delete Node"));
1649
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_node), NULL);
1650
gtk_menu_append(menu5, menu_item);
1651
gtk_widget_show (menu_item); // Show the widget
1652
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1653
gtk_widget_show (icon);
1654
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1655
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE);
1656
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1657
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1659
menu_item = gtk_menu_item_new_with_mnemonic(_("_Rename Node"));
1660
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_rename_node), NULL);
1661
gtk_menu_append(menu5, menu_item);
1662
gtk_widget_show (menu_item); // Show the widget
1663
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_RENAME);
1664
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1665
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1667
move_item = gtk_menu_item_new_with_mnemonic(_("_Move Node"));
1668
gtk_menu_append(menu5, move_item);
1669
gtk_widget_show (move_item); // Show the widget
1671
sort_item = gtk_menu_item_new_with_mnemonic(_("_Sort"));
1672
gtk_menu_append(menu5, sort_item);
1673
gtk_widget_show (sort_item); // Show the widget
1675
menu_item = gtk_menu_item_new_with_mnemonic(_("_Expand All"));
1676
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_expand_all), NULL);
1677
gtk_menu_append(menu5, menu_item);
1678
gtk_widget_show (menu_item); // Show the widget
1679
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_EXPAND_ALL);
1680
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1681
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1683
menu_item = gtk_menu_item_new_with_mnemonic(_("_Collapse All"));
1684
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_collapse_all), NULL);
1685
gtk_menu_append(menu5, menu_item);
1686
gtk_widget_show (menu_item); // Show the widget
1687
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_COLAPSE_ALL);
1688
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1689
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1691
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Node _Properties"));
1692
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_node_properties), NULL);
1693
gtk_menu_append(menu5, menu_item);
1694
gtk_widget_show (menu_item); // Show the widget
1695
icon = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU);
1696
gtk_widget_show (icon);
1697
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1698
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_PROPERTIES);
1699
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1700
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1702
//"move node" submenu
1703
submenu = gtk_menu_new ();
1705
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Up"));
1706
gtk_menu_append(submenu, menu_item);
1707
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_up), NULL);
1708
gtk_widget_show (menu_item); // Show the widget
1709
icon = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
1710
gtk_widget_show (icon);
1711
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1712
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_UP);
1713
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1714
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1716
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Down"));
1717
gtk_menu_append(submenu, menu_item);
1718
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_down), NULL);
1719
gtk_widget_show (menu_item); // Show the widget
1720
icon = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
1721
gtk_widget_show (icon);
1722
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1723
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_DOWN);
1724
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1725
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1727
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Left"));
1728
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_left), NULL);
1729
gtk_menu_append(submenu, menu_item);
1730
gtk_widget_show (menu_item); // Show the widget
1731
icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU);
1732
gtk_widget_show (icon);
1733
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1734
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_LEFT);
1735
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1736
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1738
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Right"));
1739
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_right), NULL);
1740
gtk_menu_append(submenu, menu_item);
1741
gtk_widget_show (menu_item); // Show the widget
1742
icon = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU);
1743
gtk_widget_show (icon);
1744
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1745
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT);
1746
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1747
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1749
gtk_menu_item_set_submenu (GTK_MENU_ITEM (move_item), submenu);
1751
//"sort node" submenu
1752
submenu = gtk_menu_new ();
1754
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Sort Children Ascending"));
1755
gtk_menu_append(submenu, menu_item);
1756
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_ascending), NULL);
1757
gtk_widget_show (menu_item); // Show the widget
1758
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
1759
gtk_widget_show (icon);
1760
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1761
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_ASC);
1762
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1763
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1765
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort _Children Descending"));
1766
gtk_menu_append(submenu, menu_item);
1767
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_descending), NULL);
1768
gtk_widget_show (menu_item); // Show the widget
1769
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
1770
gtk_widget_show (icon);
1771
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1772
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_DESC);
1773
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1774
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1776
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort Root Ascending"));
1777
gtk_menu_append(submenu, menu_item);
1778
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_ascending), NULL);
1779
gtk_widget_show (menu_item); // Show the widget
1780
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
1781
gtk_widget_show (icon);
1782
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1783
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_ASC);
1784
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1785
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1787
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort Root Descending"));
1788
gtk_menu_append(submenu, menu_item);
1789
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_descending), NULL);
1790
gtk_widget_show (menu_item); // Show the widget
1791
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
1792
gtk_widget_show (icon);
1793
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1794
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_DESC);
1795
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1796
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1798
gtk_menu_item_set_submenu (GTK_MENU_ITEM (sort_item), submenu);
1800
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Delete all _Completed nodes"));
1801
gtk_menu_append(menu5, menu_item);
1802
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_finished_nodes), NULL);
1803
gtk_widget_show (menu_item); // Show the widget
1804
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1805
gtk_widget_show (icon);
1806
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1807
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE_FINISHED);
1808
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1809
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1815
menuitem2 = gtk_menu_item_new_with_mnemonic (_("F_ormat"));
1816
gtk_widget_show (menuitem2);
1818
gtk_menu_append(GTK_MENU(maemomenu), menuitem2);
1820
gtk_container_add (GTK_CONTAINER (menubar1), menuitem2);
1823
menu2 = gtk_menu_new ();
1824
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menu2);
1826
bold1 = gtk_image_menu_item_new_with_mnemonic (_("_Bold"));
1827
gtk_widget_show (bold1);
1828
gtk_container_add (GTK_CONTAINER (menu2), bold1);
1829
//icon = gtk_image_new_from_stock (GTK_STOCK_BOLD, GTK_ICON_SIZE_MENU);
1830
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bold);
1831
icon = gtk_image_new_from_pixbuf (pixbuf);
1832
gtk_widget_show (icon);
1833
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (bold1), icon);
1834
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_BOLD);
1835
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1836
gtk_widget_add_accelerator (bold1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1838
italic1 = gtk_image_menu_item_new_with_mnemonic (_("_Italic"));
1839
gtk_widget_show (italic1);
1840
gtk_container_add (GTK_CONTAINER (menu2), italic1);
1841
//icon = gtk_image_new_from_stock (GTK_STOCK_ITALIC, GTK_ICON_SIZE_MENU);
1842
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_italic);
1843
icon = gtk_image_new_from_pixbuf (pixbuf);
1844
gtk_widget_show (icon);
1845
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (italic1), icon);
1846
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_ITALIC);
1847
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1848
gtk_widget_add_accelerator (italic1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1850
underline1 = gtk_image_menu_item_new_with_mnemonic (_("_Underline"));
1851
gtk_widget_show (underline1);
1852
gtk_container_add (GTK_CONTAINER (menu2), underline1);
1853
//icon = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, GTK_ICON_SIZE_MENU);
1854
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_underline);
1855
icon = gtk_image_new_from_pixbuf (pixbuf);
1856
gtk_widget_show (icon);
1857
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (underline1), icon);
1858
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_UNDERLINE);
1859
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1860
gtk_widget_add_accelerator (underline1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1862
strikethrough1 = gtk_image_menu_item_new_with_mnemonic (_("_Strikethrough"));
1863
gtk_widget_show (strikethrough1);
1864
gtk_container_add (GTK_CONTAINER (menu2), strikethrough1);
1865
//icon = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, GTK_ICON_SIZE_MENU);
1866
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_strikethrough);
1867
icon = gtk_image_new_from_pixbuf (pixbuf);
1868
gtk_widget_show (icon);
1869
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (strikethrough1), icon);
1870
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_STRIKETHROUGH);
1871
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1872
gtk_widget_add_accelerator (strikethrough1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1874
color1 = gtk_image_menu_item_new_with_mnemonic (_("_Text color"));
1875
gtk_widget_show (color1);
1876
gtk_container_add (GTK_CONTAINER (menu2), color1);
1877
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_color_xpm);
1878
icon = gtk_image_new_from_pixbuf (pixbuf);
1879
gtk_widget_show (icon);
1880
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (color1), icon);
1881
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_COLOR);
1882
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1883
gtk_widget_add_accelerator (color1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1885
bkgcolor1 = gtk_image_menu_item_new_with_mnemonic (_("Text Background _Color"));
1886
gtk_widget_show (bkgcolor1);
1887
gtk_container_add (GTK_CONTAINER (menu2), bkgcolor1);
1888
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bg_color_xpm);
1889
icon = gtk_image_new_from_pixbuf (pixbuf);
1890
gtk_widget_show (icon);
1891
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (bkgcolor1), icon);
1892
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_BKG_COLOR);
1893
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1894
gtk_widget_add_accelerator (bkgcolor1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1896
remove_format1 = gtk_image_menu_item_new_with_mnemonic (_("_Remove formatting"));
1897
gtk_widget_show (remove_format1);
1898
gtk_container_add (GTK_CONTAINER (menu2), remove_format1);
1899
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_no_format_xpm);
1900
icon = gtk_image_new_from_pixbuf (pixbuf);
1901
gtk_widget_show (icon);
1902
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove_format1), icon);
1903
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_REMOVE);
1904
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1905
gtk_widget_add_accelerator (remove_format1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1912
menuitem4 = gtk_menu_item_new_with_mnemonic (_("_Help"));
1913
gtk_widget_show (menuitem4);
1915
gtk_menu_append(GTK_MENU(maemomenu), menuitem4);
1917
gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);
1920
menu4 = gtk_menu_new ();
1921
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menu4);
1923
website1 = gtk_image_menu_item_new_with_mnemonic (_("_Visit Website"));
1924
gtk_widget_show (website1);
1925
gtk_container_add (GTK_CONTAINER (menu4), website1);
1926
//icon = gtk_image_new_from_stock (GTK_STOCK_HELP, GTK_ICON_SIZE_MENU);
1927
//gtk_widget_show (icon);
1928
//gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (website1), icon);
1929
nPos = g_shortcuts.FindByAction(NC_ACTION_VISIT_WEBSITE);
1930
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1931
gtk_widget_add_accelerator (website1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1933
help1 = gtk_image_menu_item_new_with_mnemonic (_("_Show help"));
1934
gtk_widget_show (help1);
1935
gtk_container_add (GTK_CONTAINER (menu4), help1);
1936
icon = gtk_image_new_from_stock (GTK_STOCK_HELP, GTK_ICON_SIZE_MENU);
1937
gtk_widget_show (icon);
1938
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), icon);
1939
nPos = g_shortcuts.FindByAction(NC_ACTION_HELP_INDEX);
1940
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1941
gtk_widget_add_accelerator (help1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1943
separatormenuitem1 = gtk_separator_menu_item_new ();
1944
gtk_widget_show (separatormenuitem1);
1945
gtk_container_add (GTK_CONTAINER (menu4), separatormenuitem1);
1946
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1948
about1 = gtk_menu_item_new_with_mnemonic (_("_About"));
1949
gtk_widget_show (about1);
1950
gtk_container_add (GTK_CONTAINER (menu4), about1);
1951
nPos = g_shortcuts.FindByAction(NC_ACTION_HELP_ABOUT);
1952
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1953
gtk_widget_add_accelerator (about1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1955
g_signal_connect (GTK_OBJECT (new_notecase1), "activate", G_CALLBACK(on_new_notecase1_activate), NULL);
1956
g_signal_connect (GTK_OBJECT (new1), "activate", G_CALLBACK(on_new1_activate), NULL);
1957
g_signal_connect (GTK_OBJECT (open1), "activate", G_CALLBACK(on_open1_activate), NULL);
1958
g_signal_connect (GTK_OBJECT (close1), "activate", G_CALLBACK(on_close1_activate), NULL);
1959
g_signal_connect (GTK_OBJECT (save1), "activate", G_CALLBACK(on_save1_activate), NULL);
1960
g_signal_connect (GTK_OBJECT (save_as1),"activate", G_CALLBACK(on_save_as1_activate), NULL);
1961
g_signal_connect (GTK_OBJECT (reload1), "activate", G_CALLBACK(on_reload1_activate), NULL);
1962
g_signal_connect (GTK_OBJECT (ontop1), "activate", G_CALLBACK(on_ontop1_activate), NULL);
1963
g_signal_connect (GTK_OBJECT (read_only1), "activate", G_CALLBACK(on_read_only_activate), NULL);
1964
g_signal_connect (GTK_OBJECT (lock1), "activate", G_CALLBACK(on_lock_document_activate), NULL);
1965
g_signal_connect (GTK_OBJECT (change_pass1), "activate", G_CALLBACK(on_change_pass1_activate), NULL);
1966
g_signal_connect (GTK_OBJECT (quit1), "activate", G_CALLBACK(on_quit1_activate), NULL);
1967
g_signal_connect (GTK_OBJECT (cut1), "activate", G_CALLBACK(on_cut1_activate), NULL);
1968
g_signal_connect (GTK_OBJECT (copy1), "activate", G_CALLBACK(on_copy1_activate), NULL);
1969
g_signal_connect (GTK_OBJECT (paste1), "activate", G_CALLBACK(on_paste1_activate), NULL);
1970
g_signal_connect (GTK_OBJECT (delete1), "activate", G_CALLBACK(on_delete1_activate), NULL);
1971
g_signal_connect (GTK_OBJECT (about1), "activate", G_CALLBACK(on_about1_activate), NULL);
1972
g_signal_connect (GTK_OBJECT (help1), "activate", G_CALLBACK(on_help1_activate), NULL);
1973
g_signal_connect (GTK_OBJECT (website1),"activate", G_CALLBACK(on_menu_visit_website), NULL);
1974
g_signal_connect (GTK_OBJECT (options1),"activate", G_CALLBACK(on_options1_activate), NULL);
1975
g_signal_connect (GTK_OBJECT (shortcuts1),"activate", G_CALLBACK(on_view_shortcuts_activate), NULL);
1976
g_signal_connect (GTK_OBJECT (find1), "activate", G_CALLBACK(on_find1_activate), NULL);
1977
g_signal_connect (GTK_OBJECT (find2), "activate", G_CALLBACK(on_find2_activate), NULL);
1978
g_signal_connect (GTK_OBJECT (replace1),"activate", G_CALLBACK(on_find_replace_activate), NULL);
1979
g_signal_connect (GTK_OBJECT (wrap1), "activate", G_CALLBACK(on_wrap_activate), NULL);
1980
g_signal_connect (GTK_OBJECT (title1), "activate", G_CALLBACK(on_show_node_titlebar_activate), NULL);
1981
g_signal_connect (GTK_OBJECT (statbar1),"activate", G_CALLBACK(on_show_status_bar_activate), NULL);
1982
g_signal_connect (GTK_OBJECT (menutool1),"activate", G_CALLBACK(on_show_toolbar_activate), NULL);
1983
g_signal_connect (GTK_OBJECT (menufull1),"activate", G_CALLBACK(on_full_screen_activate), NULL);
1984
g_signal_connect (GTK_OBJECT (undo1), "activate", G_CALLBACK(on_undo_activate), NULL);
1985
g_signal_connect (GTK_OBJECT (redo1), "activate", G_CALLBACK(on_redo_activate), NULL);
1986
g_signal_connect (GTK_OBJECT (link1), "activate", G_CALLBACK(on_link_wizard_activate), NULL);
1987
g_signal_connect (GTK_OBJECT (textonly1), "activate", G_CALLBACK(on_view_text_only_mode), NULL);
1988
g_signal_connect (GTK_OBJECT (wordcount1), "activate", G_CALLBACK(on_view_calc_word_count), NULL);
1989
g_signal_connect (GTK_OBJECT (bold1), "activate", G_CALLBACK(on_text_bold_activate), NULL);
1990
g_signal_connect (GTK_OBJECT (italic1), "activate", G_CALLBACK(on_text_italic_activate), NULL);
1991
g_signal_connect (GTK_OBJECT (underline1),"activate", G_CALLBACK(on_text_underline_activate), NULL);
1992
g_signal_connect (GTK_OBJECT (strikethrough1),"activate", G_CALLBACK(on_text_strikethrough_activate), NULL);
1993
g_signal_connect (GTK_OBJECT (color1), "activate", G_CALLBACK(on_text_color_activate), NULL);
1994
g_signal_connect (GTK_OBJECT (bkgcolor1), "activate", G_CALLBACK(on_text_background_color_activate), NULL);
1995
g_signal_connect (GTK_OBJECT (picture1), "activate", G_CALLBACK(on_insert_picture_activate), NULL);
1996
g_signal_connect (GTK_OBJECT (remove_format1), "activate", G_CALLBACK(on_remove_format_activate), NULL);
1997
g_signal_connect (GTK_OBJECT (attachments1), "activate", G_CALLBACK(on_node_attachments_activate), NULL);
1999
GLADE_HOOKUP_OBJECT (window1, menuitem1, "menuitem1");
2000
GLADE_HOOKUP_OBJECT (window1, menu1, "menu1");
2001
GLADE_HOOKUP_OBJECT (window1, new1, "new1");
2002
GLADE_HOOKUP_OBJECT (window1, open1, "open1");
2003
GLADE_HOOKUP_OBJECT (window1, wrap1, "wrap1");
2004
GLADE_HOOKUP_OBJECT (window1, title1, "title1");
2005
GLADE_HOOKUP_OBJECT (window1, menutool1, "menutool1");
2006
GLADE_HOOKUP_OBJECT (window1, find1, "find1");
2007
GLADE_HOOKUP_OBJECT (window1, find2, "find2");
2008
GLADE_HOOKUP_OBJECT (window1, replace1, "replace1");
2009
GLADE_HOOKUP_OBJECT (window1, save1, "save1");
2010
GLADE_HOOKUP_OBJECT (window1, save_as1, "save_as1");
2011
GLADE_HOOKUP_OBJECT (window1, reload1, "reload1");
2012
GLADE_HOOKUP_OBJECT (window1, read_only1, "read_only1");
2013
GLADE_HOOKUP_OBJECT (window1, lock1, "lock1");
2014
GLADE_HOOKUP_OBJECT (window1, change_pass1, "change_pass1");
2015
GLADE_HOOKUP_OBJECT (window1, separatormenuitem1, "separatormenuitem1");
2016
GLADE_HOOKUP_OBJECT (window1, quit1, "quit1");
2017
GLADE_HOOKUP_OBJECT (window1, menuitem2, "menuitem2");
2018
GLADE_HOOKUP_OBJECT (window1, menu2, "menu2");
2019
GLADE_HOOKUP_OBJECT (window1, cut1, "cut1");
2020
GLADE_HOOKUP_OBJECT (window1, copy1, "copy1");
2021
GLADE_HOOKUP_OBJECT (window1, paste1, "paste1");
2022
GLADE_HOOKUP_OBJECT (window1, delete1, "delete1");
2023
GLADE_HOOKUP_OBJECT (window1, menuitem4, "menuitem4");
2024
GLADE_HOOKUP_OBJECT (window1, menu4, "menu4");
2025
GLADE_HOOKUP_OBJECT (window1, about1, "about1");
2026
GLADE_HOOKUP_OBJECT (window1, help1, "help1");
2027
GLADE_HOOKUP_OBJECT (window1, website1, "website1");
2028
GLADE_HOOKUP_OBJECT (window1, statbar1, "statbar1");
2029
GLADE_HOOKUP_OBJECT (window1, undo1, "undo1");
2030
GLADE_HOOKUP_OBJECT (window1, redo1, "redo1");
2031
GLADE_HOOKUP_OBJECT (window1, link1, "link1");
2032
GLADE_HOOKUP_OBJECT (window1, wordcount1, "wordcount1");
2033
GLADE_HOOKUP_OBJECT (window1, new_notecase1, "new_notecase1");
2034
GLADE_HOOKUP_OBJECT (window1, bold1, "bold1");
2035
GLADE_HOOKUP_OBJECT (window1, italic1, "italic1");
2036
GLADE_HOOKUP_OBJECT (window1, underline1, "underline1");
2037
GLADE_HOOKUP_OBJECT (window1, color1, "color1");
2038
GLADE_HOOKUP_OBJECT (window1, bkgcolor1, "bkgcolor1");
2039
GLADE_HOOKUP_OBJECT (window1, picture1, "picture1");
2040
GLADE_HOOKUP_OBJECT (window1, remove_format1, "remove_format1");
2041
GLADE_HOOKUP_OBJECT (window1, attachments1, "attachments1");
2042
GLADE_HOOKUP_OBJECT (window1, menufull1, "menufull1");
2045
hildon_window_set_menu(HILDON_WINDOW(window1), GTK_MENU(maemomenu));
2049
gboolean on_focus_event (GtkWidget *widget, GtkDirectionType arg1, gpointer user_data)
2051
//FIX: prevent toolbar from getting focus by keyboard
2052
static bool bRecurse = false;
2056
gtk_widget_child_focus (widget, (GtkDirectionType)GTK_DIR_TAB_FORWARD);
2063
bool LocaleToUtf8(const char *szTxt, std::string &strResult)
2067
gsize nBytesWritten = 0;
2068
#if defined(G_OS_WIN32)
2069
gchar *pFileNameInUTF8 = g_locale_to_utf8(szTxt, -1, 0, &nBytesWritten, 0);
2071
gchar *pFileNameInUTF8 = g_filename_to_utf8(szTxt, -1, 0, &nBytesWritten, 0);
2074
if (pFileNameInUTF8)
2076
strResult = pFileNameInUTF8;
2077
g_free(pFileNameInUTF8);
2081
// on failure, copy original string
2086
bool Utf8ToLocale(const char *szTxt, std::string &strResult)
2088
gsize bytesWritten = 0;
2090
// On Windows GLib uses UTF-8 for filenames, but as well as we operate
2091
// on native Windows API, conversion to the encoding used in current
2092
// locale is required.
2093
#if defined(G_OS_WIN32)
2094
gchar *pFileName = g_locale_from_utf8(szTxt, -1, 0, &bytesWritten, 0);
2096
gchar *pFileName = g_filename_from_utf8(szTxt, -1, 0, &bytesWritten, 0);
2098
if (NULL != pFileName)
2100
strResult = pFileName;
2105
// on failure, copy original string
2110
gint dlg_keyboard_handler(GtkWidget *widget, GdkEventKey *event, gpointer data)
2112
//Esc press in the main window minimizes the application
2113
if( event->keyval == GDK_Escape )
2115
GtkWidget *widget1 = gtk_window_get_focus(GTK_WINDOW(window1));
2116
if( widget1 != g_text.m_pWidget &&
2117
widget1 != g_tree.m_pWidget)
2118
return FALSE; // skip this, we are in the label editing mode
2120
gtk_window_iconify(GTK_WINDOW(widget));
2121
return TRUE; //eat event (handled here)
2126
void SetTextViewCaretColor(bool bBlack)
2128
//hack to set 'caret' color dynamicaly (without .rc file on disk)
2130
GdkColor color = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; //white
2132
GdkColor black = { 0, 0, 0, 0 }; //black
2136
//TOFIX move this to TextView fn.
2137
static const char cursor_color_rc[] =
2138
"style \"Notecase\"\n"
2140
"GtkTextView::cursor-color=\"#%04x%04x%04x\"\n"
2142
"widget \"*.GtkTextView*\" style : application \"Notecase\"\n";
2144
gchar *rc_temp = g_strdup_printf (cursor_color_rc,
2148
gtk_rc_parse_string (rc_temp);
2149
gtk_widget_reset_rc_styles (g_text.m_pWidget);
2153
//Based on text-view background color, calculate
2154
//the color for text-view caret mark (a.k.a. cursor).
2155
//Caret is set to either white or black color (dark bkg -> light caret and vice versa)
2156
void RefreshTextViewCaretColor(GdkColor &BkColor)
2158
//TOFIX for better result try using HSL color model -> L = (MAX(r,g,b) + MIN(r,g,b))/2
2159
//is the background light enough for cursor to be black?
2160
int nR = BkColor.red/255;
2161
int nG = BkColor.green/255;
2162
int nB = BkColor.blue/255;
2163
int nPower = (nR*nR)+(nG*nG)+(nB*nB);
2165
bool bCaretColorBlack = (nPower > 48387);
2166
SetTextViewCaretColor(bCaretColorBlack);
2169
gboolean initial_load_timer(gpointer data)
2171
//load initial document if any
2173
load_file_embedded(/*strCurNodeID*/);
2175
//allow password being entered up to 3 times
2179
nResult = load_file(g_strLoadDocumentFile.c_str(), g_strLoadDocumentPass.c_str(), g_nLoadDocumentNodeID);
2181
if(DOC_LOAD_WRONG_PASSWORD != nResult){
2186
g_objMRU.Change(g_strLoadDocumentFile.c_str(), (DOC_LOAD_NOT_FOUND != nResult));//update MRU unless file not found
2189
g_strLoadDocumentPass = ""; // reset password
2191
return FALSE; // kill timer
2194
void treeview_show_popup_menu()
2196
GtkWidget *menu, *submenu;
2197
GtkWidget *menu_item, *move_item, *sort_item, *icon;
2198
int button, event_time;
2200
menu = gtk_menu_new ();
2201
//g_signal_connect (menu, "deactivate", G_CALLBACK(gtk_widget_destroy), NULL);
2203
GtkAccelGroup *accel_group = gtk_accel_group_new();
2204
gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
2206
// ... add menu items with accelerators ...
2207
menu_item = gtk_menu_item_new_with_label(_("Insert Node"));
2208
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_node), NULL);
2209
gtk_menu_append(menu, menu_item);
2210
gtk_widget_show (menu_item); // Show the widget
2211
if(g_defTreeNodeNew.IsValid(SH_CTX_TREE_WIDGET))
2212
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeNew.m_nKey, (GdkModifierType)g_defTreeNodeNew.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2214
menu_item = gtk_menu_item_new_with_label(_("Insert Child Node"));
2215
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_child_node), NULL);
2216
gtk_menu_append(menu, menu_item);
2217
gtk_widget_show (menu_item); // Show the widget
2218
if(g_defTreeNodeNewChild.IsValid(SH_CTX_TREE_WIDGET))
2219
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeNewChild.m_nKey, (GdkModifierType)g_defTreeNodeNewChild.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2221
menu_item = gtk_image_menu_item_new_with_label(_("Delete Node"));
2222
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_node), NULL);
2223
gtk_menu_append(menu, menu_item);
2224
gtk_widget_show (menu_item); // Show the widget
2225
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
2226
gtk_widget_show (icon);
2227
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2228
if(g_defTreeNodeDelete.IsValid(SH_CTX_TREE_WIDGET))
2229
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeDelete.m_nKey, (GdkModifierType)g_defTreeNodeDelete.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2231
menu_item = gtk_menu_item_new_with_label(_("Rename Node"));
2232
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_rename_node), NULL);
2233
gtk_menu_append(menu, menu_item);
2234
gtk_widget_show (menu_item); // Show the widget
2235
if(g_defTreeNodeRename.IsValid(SH_CTX_TREE_WIDGET))
2236
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeRename.m_nKey, (GdkModifierType)g_defTreeNodeRename.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2238
move_item = gtk_menu_item_new_with_label(_("Move Node"));
2239
gtk_menu_append(menu, move_item);
2240
gtk_widget_show (move_item); // Show the widget
2242
sort_item = gtk_menu_item_new_with_label(_("Sort"));
2243
gtk_menu_append(menu, sort_item);
2244
gtk_widget_show (sort_item); // Show the widget
2246
menu_item = gtk_menu_item_new_with_label(_("Expand All"));
2247
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_expand_all), NULL);
2248
gtk_menu_append(menu, menu_item);
2249
gtk_widget_show (menu_item); // Show the widget
2250
if(g_defTreeNodeExpandAll.IsValid(SH_CTX_TREE_WIDGET))
2251
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeExpandAll.m_nKey, (GdkModifierType)g_defTreeNodeExpandAll.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2253
menu_item = gtk_menu_item_new_with_label(_("Collapse All"));
2254
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_collapse_all), NULL);
2255
gtk_menu_append(menu, menu_item);
2256
gtk_widget_show (menu_item); // Show the widget
2257
if(g_defTreeNodeColapseAll.IsValid(SH_CTX_TREE_WIDGET))
2258
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeColapseAll.m_nKey, (GdkModifierType)g_defTreeNodeColapseAll.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2260
menu_item = gtk_image_menu_item_new_with_label(_("Mark node as Completed"));
2261
g_signal_connect(menu_item, "activate", G_CALLBACK (on_node_toggle_finished), NULL);
2262
gtk_menu_append(menu, menu_item);
2263
gtk_widget_show (menu_item); // Show the widget
2264
if(g_defTreeNodeToggleFinished.IsValid(SH_CTX_TREE_WIDGET))
2265
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeToggleFinished.m_nKey, (GdkModifierType)g_defTreeNodeToggleFinished.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2267
menu_item = gtk_image_menu_item_new_with_label(_("Node Properties"));
2268
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_node_properties), NULL);
2269
gtk_menu_append(menu, menu_item);
2270
gtk_widget_show (menu_item); // Show the widget
2271
icon = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU);
2272
gtk_widget_show (icon);
2273
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2274
if(g_defTreeNodeProperties.IsValid(SH_CTX_TREE_WIDGET))
2275
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeProperties.m_nKey, (GdkModifierType)g_defTreeNodeProperties.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2277
menu_item = gtk_image_menu_item_new_with_label(_("Link wizard"));
2278
g_signal_connect(menu_item, "activate", G_CALLBACK (on_link_wizard_activate), NULL);
2279
gtk_menu_append(menu, menu_item);
2280
gtk_widget_show (menu_item); // Show the widget
2281
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
2282
icon = gtk_image_new_from_pixbuf (pixbuf);
2283
gtk_widget_show (icon);
2284
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2286
//"move node" submenu
2287
submenu = gtk_menu_new ();
2289
menu_item = gtk_image_menu_item_new_with_label(_("Up"));
2290
gtk_menu_append(submenu, menu_item);
2291
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_up), NULL);
2292
gtk_widget_show (menu_item); // Show the widget
2293
icon = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
2294
gtk_widget_show (icon);
2295
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2296
if(g_defTreeNodeMoveUp.IsValid(SH_CTX_TREE_WIDGET))
2297
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveUp.m_nKey, (GdkModifierType)g_defTreeNodeMoveUp.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2299
menu_item = gtk_image_menu_item_new_with_label(_("Down"));
2300
gtk_menu_append(submenu, menu_item);
2301
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_down), NULL);
2302
gtk_widget_show (menu_item); // Show the widget
2303
icon = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
2304
gtk_widget_show (icon);
2305
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2306
if(g_defTreeNodeMoveDown.IsValid(SH_CTX_TREE_WIDGET))
2307
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveDown.m_nKey, (GdkModifierType)g_defTreeNodeMoveDown.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2309
menu_item = gtk_image_menu_item_new_with_label(_("Left"));
2310
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_left), NULL);
2311
gtk_menu_append(submenu, menu_item);
2312
gtk_widget_show (menu_item); // Show the widget
2313
icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU);
2314
gtk_widget_show (icon);
2315
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2316
if(g_defTreeNodeMoveLeft.IsValid(SH_CTX_TREE_WIDGET))
2317
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveLeft.m_nKey, (GdkModifierType)g_defTreeNodeMoveLeft.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2319
menu_item = gtk_image_menu_item_new_with_label(_("Right"));
2320
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_right), NULL);
2321
gtk_menu_append(submenu, menu_item);
2322
gtk_widget_show (menu_item); // Show the widget
2323
icon = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU);
2324
gtk_widget_show (icon);
2325
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2326
if(g_defTreeNodeMoveRight.IsValid(SH_CTX_TREE_WIDGET))
2327
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveRight.m_nKey, (GdkModifierType)g_defTreeNodeMoveRight.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2329
gtk_menu_item_set_submenu (GTK_MENU_ITEM (move_item), submenu);
2331
//"sort node" submenu
2332
submenu = gtk_menu_new ();
2334
menu_item = gtk_image_menu_item_new_with_label(_("_Sort Children Ascending"));
2335
gtk_menu_append(submenu, menu_item);
2336
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_ascending), NULL);
2337
gtk_widget_show (menu_item); // Show the widget
2338
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
2339
gtk_widget_show (icon);
2340
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2341
if(g_defTreeNodeSortChildrenAsc.IsValid(SH_CTX_TREE_WIDGET))
2342
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortChildrenAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortChildrenAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2344
menu_item = gtk_image_menu_item_new_with_label(_("Sort _Children Descending"));
2345
gtk_menu_append(submenu, menu_item);
2346
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_descending), NULL);
2347
gtk_widget_show (menu_item); // Show the widget
2348
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
2349
gtk_widget_show (icon);
2350
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2351
if(g_defTreeNodeSortChildrenAsc.IsValid(SH_CTX_TREE_WIDGET))
2352
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortChildrenAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortChildrenAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2354
menu_item = gtk_image_menu_item_new_with_label(_("Sort Root Ascending"));
2355
gtk_menu_append(submenu, menu_item);
2356
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_ascending), NULL);
2357
gtk_widget_show (menu_item); // Show the widget
2358
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
2359
gtk_widget_show (icon);
2360
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2361
if(g_defTreeNodeSortRootAsc.IsValid(SH_CTX_TREE_WIDGET))
2362
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortRootAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortRootAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2364
menu_item = gtk_image_menu_item_new_with_label(_("Sort Root Descending"));
2365
gtk_menu_append(submenu, menu_item);
2366
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_descending), NULL);
2367
gtk_widget_show (menu_item); // Show the widget
2368
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
2369
gtk_widget_show (icon);
2370
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2371
if(g_defTreeNodeSortRootDsc.IsValid(SH_CTX_TREE_WIDGET))
2372
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortRootDsc.m_nKey, (GdkModifierType)g_defTreeNodeSortRootDsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2375
gtk_menu_item_set_submenu (GTK_MENU_ITEM (sort_item), submenu);
2378
// event_time = event->time;
2380
event_time = gtk_get_current_event_time ();
2381
button = 0; //FIX: allow mouse button to trigger the submenu
2383
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
2386
void on_tree_resize(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data)
2388
static bool bSkip = false;
2390
if(g_bWrapTree/* && !bSkip*/){
2398
void update_tree_wrap()
2400
GtkWidget *scrolledwindow1 = lookup_widget(window1, "scrolledwindow1");
2401
GtkAdjustment *hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW(scrolledwindow1));
2403
int nWidth = scrolledwindow1->allocation.width; //allocation->width
2405
TRACE("Wrap tree to %d\n", nWidth);
2406
g_tree.WrapTreeToSize(nWidth);
2408
//set horz scrollbar width
2411
g_object_get (G_OBJECT (hadjustment), "upper", &nValue, (char *)NULL);
2412
TRACE("Adj: %f\n", nValue);
2414
//g_signal_handlers_block_by_func(scrolledwindow1, (void *)on_tree_resize, 0);
2417
//TOFIX crashes on Ubuntu g_object_set (G_OBJECT (hadjustment), "upper", &nValue, NULL);
2419
//gtk_adjustment_changed(hadjustment);
2420
//g_signal_handlers_unblock_by_func(scrolledwindow1, (void *)on_tree_resize, 0);
1
////////////////////////////////////////////////////////////////////////////
2
// NoteCase notes manager project <http://notecase.sf.net>
4
// This code is licensed under BSD license.See "license.txt" for more details.
6
// File: Main application window implementation
7
////////////////////////////////////////////////////////////////////////////
11
#include <gdk/gdkkeysyms.h>
14
#include "interface.h"
19
#include "callbacks.h"
20
#include "lib/debug.h"
21
#include "lib/NoteDocument.h"
22
#include "lib/IniFile.h"
23
#include "lib/FilePath.h"
24
#include "PortableTrayIcon.h"
25
#include "PasswordDialog.h"
26
#include "gui/GuiLanguage.h"
27
#include "ShortcutsList.h"
28
#include "FindReplaceInfo.h"
32
#include <hildon-widgets/hildon-program.h>
34
#include <hildon/hildon-program.h>
38
#include "../res/notecase.xpm"
39
#include "../res/icon_attachment.xpm"
40
#include "../res/icon_picture.xpm"
41
#include "../res/page_link.xpm"
42
#include "../res/text_bold.xpm"
43
#include "../res/text_italic.xpm"
44
#include "../res/text_underline.xpm"
45
#include "../res/text_strikethrough.xpm"
46
#include "../res/text_color.xpm"
47
#include "../res/text_bg_color.xpm"
48
#include "../res/text_no_format.xpm"
49
#include "../res/icon_datetime.xpm"
50
#include "../res/internal_lock.xpm"
51
#include "../res/key.xpm"
53
extern bool g_bBusyCursor;
54
void ShowBusyCursor();
55
void HideBusyCursor();
57
extern NoteDocument g_doc;
59
extern GtkWidget *window1;
60
extern GtkWidget *g_menuitem5;
61
extern TreeView g_tree;
62
extern TextView g_text;
63
extern bool g_bMinimizeToTray;
64
extern bool g_bCloseToTray;
65
extern bool g_bCloseDlgOnTextEnter;
66
extern bool g_bAutoSaveOnClose;
67
extern bool g_bSkipMemOnlyAutosave;
68
extern bool g_bExportDataAsSeparateFile;
69
extern MainWindow g_wnd;
70
extern IniFile g_objIni;
71
extern GuiLanguage g_lang;
72
extern bool g_bTreeToTheRight;
73
extern bool g_bTreeToTheRightInitial;
74
extern GdkColor g_linkColor;
75
extern int g_nDefaultNodeIconType;
76
extern std::string g_strDefaultIconFile;
77
extern FindReplaceInfo g_objSearchInfo;
79
extern bool g_bInitialLoad;
80
extern bool g_bUpdateMRU;
81
extern bool g_bLoadEmbedded;
82
extern std::string g_strLoadDocumentFile;
83
extern std::string g_strLoadDocumentPass;
84
extern int g_nLoadDocumentNodeID;
86
extern ShortcutDef g_defTreeNodeNew;
87
extern ShortcutDef g_defTreeNodeNewChild;
88
extern ShortcutDef g_defTreeNodeDelete;
89
extern ShortcutDef g_defTreeNodeRename;
90
extern ShortcutDef g_defTreeNodeMoveUp;
91
extern ShortcutDef g_defTreeNodeMoveDown;
92
extern ShortcutDef g_defTreeNodeMoveLeft;
93
extern ShortcutDef g_defTreeNodeMoveRight;
94
extern ShortcutDef g_defTreeNodeProperties;
95
extern ShortcutDef g_defTreeNodeDelFinished;
96
extern ShortcutDef g_defTreeNodeToggleFinished;
97
extern ShortcutDef g_defTreeNodeSortChildrenAsc;
98
extern ShortcutDef g_defTreeNodeSortChildrenDsc;
99
extern ShortcutDef g_defTreeNodeSortRootAsc;
100
extern ShortcutDef g_defTreeNodeSortRootDsc;
101
extern ShortcutDef g_defTreeNodeExpandAll;
102
extern ShortcutDef g_defTreeNodeColapseAll;
103
extern ShortcutDef g_defTreeCopyBranchStruct;
104
extern ShortcutDef g_defTreePasteBranchRoot;
106
ShortcutsList g_shortcuts;
107
PortableTrayIcon g_tray;
108
int g_nTitleBarTextSize = 10 * PANGO_SCALE; //default size
109
bool g_bWrapTree=false;
110
bool g_bDrawTextviewExpose = false;
112
GdkColor g_rgbTextViewBkColor = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; //white
114
void register_extensions_check();
115
static void create_menu (GtkWidget *window1, GtkWidget *menubar1, GtkAccelGroup *accel_group);
116
static gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event);
117
const char *PasswordCallback(const char *szFile, bool bSave);
118
static gboolean on_focus_event (GtkWidget *widget, GtkDirectionType arg1, gpointer user_data);
119
bool LocaleToUtf8(const char *szTxt, std::string &strResult);
120
static gint dlg_keyboard_handler (GtkWidget *widget, GdkEventKey *event, gpointer data);
121
void SetTextViewCaretColor(bool bBlack);
122
void RefreshTextViewCaretColor(GdkColor &BkColor);
123
gboolean initial_load_timer(gpointer data);
124
int load_file_embedded(int nCurNodeIdx = -1);
125
int load_file(const char *filename, const char *szPassword, int nCurNodeIdx);
126
void on_tree_resize(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data);
127
void update_tree_wrap();
129
MainWindow::MainWindow()
132
m_pToolbarBold = NULL;
133
m_pToolbarItalic = NULL;
134
m_pToolbarUnderline = NULL;
135
m_pToolbarColor = NULL;
136
m_pToolbarAttachment = NULL;
137
m_pToolbarBkgColor = NULL;
138
m_pToolbarUndo = NULL;
139
m_pToolbarRedo = NULL;
142
MainWindow::~MainWindow()
146
void MainWindow::Create()
150
g_objIni.GetValue("Display", "DrawGrayTextView", g_bDrawTextviewExpose, 1);
152
g_objIni.GetValue("Display", "TreeToTheRight", g_bTreeToTheRight);
153
g_bTreeToTheRightInitial = g_bTreeToTheRight;
155
//set global RTL support
156
if(g_lang.IsCurLangRTL()) //RTL support
157
gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
159
m_pWidget = create_main_win();
162
//cache loaded shortcuts for faster lookup
163
int nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW, SH_CTX_TREE_WIDGET);
164
if(nPos >= 0) g_defTreeNodeNew = g_shortcuts[nPos];
166
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW_CHILD, SH_CTX_TREE_WIDGET);
167
if(nPos >= 0) g_defTreeNodeNewChild = g_shortcuts[nPos];
169
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE, SH_CTX_TREE_WIDGET);
170
if(nPos >= 0) g_defTreeNodeDelete = g_shortcuts[nPos];
172
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_RENAME, SH_CTX_TREE_WIDGET);
173
if(nPos >= 0) g_defTreeNodeRename = g_shortcuts[nPos];
175
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_UP, SH_CTX_TREE_WIDGET);
176
if(nPos >= 0) g_defTreeNodeMoveUp = g_shortcuts[nPos];
178
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_DOWN, SH_CTX_TREE_WIDGET);
179
if(nPos >= 0) g_defTreeNodeMoveDown = g_shortcuts[nPos];
181
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_LEFT, SH_CTX_TREE_WIDGET);
182
if(nPos >= 0) g_defTreeNodeMoveLeft = g_shortcuts[nPos];
184
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT, SH_CTX_TREE_WIDGET);
185
if(nPos >= 0) g_defTreeNodeMoveRight = g_shortcuts[nPos];
187
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT, SH_CTX_TREE_WIDGET);
188
if(nPos >= 0) g_defTreeNodeMoveRight = g_shortcuts[nPos];
190
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_PROPERTIES, SH_CTX_TREE_WIDGET);
191
if(nPos >= 0) g_defTreeNodeProperties = g_shortcuts[nPos];
193
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE_FINISHED, SH_CTX_TREE_WIDGET);
194
if(nPos >= 0) g_defTreeNodeDelFinished = g_shortcuts[nPos];
196
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_TOGGLE_FINISHED, SH_CTX_TREE_WIDGET);
197
if(nPos >= 0) g_defTreeNodeToggleFinished = g_shortcuts[nPos];
199
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_ASC, SH_CTX_TREE_WIDGET);
200
if(nPos >= 0) g_defTreeNodeSortChildrenAsc = g_shortcuts[nPos];
202
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_DESC, SH_CTX_TREE_WIDGET);
203
if(nPos >= 0) g_defTreeNodeSortChildrenDsc = g_shortcuts[nPos];
205
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_ASC, SH_CTX_TREE_WIDGET);
206
if(nPos >= 0) g_defTreeNodeSortRootAsc = g_shortcuts[nPos];
208
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_DESC, SH_CTX_TREE_WIDGET);
209
if(nPos >= 0) g_defTreeNodeSortRootDsc = g_shortcuts[nPos];
211
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_EXPAND_ALL, SH_CTX_TREE_WIDGET);
212
if(nPos >= 0) g_defTreeNodeExpandAll = g_shortcuts[nPos];
214
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_COLAPSE_ALL, SH_CTX_TREE_WIDGET);
215
if(nPos >= 0) g_defTreeNodeColapseAll = g_shortcuts[nPos];
217
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY_BR_STRUCT, SH_CTX_TREE_WIDGET);
218
if(nPos >= 0) g_defTreeCopyBranchStruct = g_shortcuts[nPos];
220
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE_BR_ROOT, SH_CTX_TREE_WIDGET);
221
if(nPos >= 0) g_defTreePasteBranchRoot = g_shortcuts[nPos];
224
void MainWindow::OnCreate()
226
//check startup options
227
window1 = g_wnd.m_pWidget;
228
g_signal_connect (window1, "destroy", G_CALLBACK (on_quit1_activate), NULL);
229
g_signal_connect (window1, "delete_event", G_CALLBACK (on_window_delete_event), NULL);
230
g_signal_connect (window1, "key_press_event", G_CALLBACK (dlg_keyboard_handler), this);
232
GtkWidget *treeview = lookup_widget(window1, "treeview1");
233
GtkWidget *textview = lookup_widget(window1, "textview1");
234
GtkWidget *label1 = lookup_widget(window1, "label1");
237
gtk_text_view_set_left_margin (GTK_TEXT_VIEW(textview), 5);
238
gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 5);
241
std::string strFont1;
242
g_objIni.GetValue("Display", "TreeFont", strFont1, "");
243
if(!strFont1.empty()){
244
PangoFontDescription *desc1 = pango_font_description_from_string(strFont1.c_str());
245
gtk_widget_modify_font(treeview, desc1);
246
pango_font_description_free(desc1);
249
std::string strFont2;
250
g_objIni.GetValue("Display", "TextFont", strFont2, "");
251
if(!strFont2.empty()){
252
PangoFontDescription *desc1 = pango_font_description_from_string(strFont2.c_str());
253
gtk_widget_modify_font(textview, desc1);
254
//calculate text size for node title bar as 1.5 the size of other text
255
g_nTitleBarTextSize = (pango_font_description_get_size(desc1) * 15)/10;
256
pango_font_description_free(desc1);
259
//set font size for node title bar (1.5 times of node text font)
260
PangoContext *context = gtk_widget_get_pango_context (label1);
261
PangoFontDescription *desc2 = pango_context_get_font_description(context);
262
PangoFontDescription *desc3 = pango_font_description_copy(desc2);
263
#if GTK_CHECK_VERSION(2,6,0) //minimal version for pango_font_description_set_absolute_size
264
pango_font_description_set_absolute_size(desc3, g_nTitleBarTextSize);
266
pango_font_description_set_size (desc3, (8*g_nTitleBarTextSize)/10); //TOFIX convert from pixels to fractions?
268
gtk_widget_modify_font(label1, desc3);
269
pango_font_description_free(desc3);
270
//TRACE("Node title bar: Font size=%d\n", g_nTitleBarTextSize);
273
if(g_objIni.GetValue("Startup", "Maximize", bMaximize))
275
gtk_window_maximize(GTK_WINDOW(window1));
277
//on demand check if we need to register file formats
278
bool bRegisterFormats;
279
if(g_objIni.GetValue("Startup", "RegisterFormats", bRegisterFormats))
281
register_extensions_check();
283
//restore text wrapping option
285
if(g_objIni.GetValue("Display", "WrapText", bWrapText))
287
set_wrap_activated(true);
289
//restore tree wrapping option
290
g_objIni.GetValue("Display", "WrapTree", g_bWrapTree);
292
//restore "tree lines" option
294
g_objIni.GetValue("Display", "ShowTreeLines", bTreeLines);
295
g_tree.SetTreeLines(bTreeLines);
297
//restore "toolbar visible" option
299
g_objIni.GetValue("Display", "ShowToolBar", bShowToolbar, 1);
301
set_show_toolbar(true);
303
//restore "node title visible" option
305
if(g_objIni.GetValue("Display", "NodeTitleBar", bShowTitle))
307
set_show_node_title(true);
309
//restore "status bar visible" option
311
g_objIni.GetValue("Display", "ShowStatusBar", bShowStatBar, 1);
312
if(bShowStatBar) // default is true, change only if false
313
set_show_status_bar(true);
315
//restore last position
316
bool bRestoreLastPos;
317
g_objIni.GetValue("Startup", "RestoreLastPosition", bRestoreLastPos, 1);
320
gint nPosLeft, nPosTop, nPosWidth, nPosHeight, nPosDivider;
321
nPosLeft = nPosTop = nPosWidth = nPosHeight = nPosDivider = 0;
323
g_objIni.GetValue("Startup", "LastPos_Left", nPosLeft);
324
g_objIni.GetValue("Startup", "LastPos_Top", nPosTop);
325
g_objIni.GetValue("Startup", "LastPos_Width", nPosWidth);
326
g_objIni.GetValue("Startup", "LastPos_Height", nPosHeight);
327
g_objIni.GetValue("Startup", "LastPos_Divider", nPosDivider);
329
//apply some common sense checks/fixes
330
if(nPosWidth <= 0) nPosWidth = 500;
331
if(nPosHeight <= 0) nPosHeight = 350;
332
if(nPosLeft <= 0) nPosLeft = 0;
333
if(nPosTop <= 0) nPosTop = 0;
334
if(nPosDivider<= 0) nPosDivider = 150;
336
gtk_window_move(GTK_WINDOW(window1), nPosLeft, nPosTop);
337
gtk_window_set_default_size(GTK_WINDOW(window1), nPosWidth, nPosHeight);
338
gtk_window_resize(GTK_WINDOW(window1), nPosWidth, nPosHeight);
339
GtkWidget *divider = lookup_widget(window1, "hbox1");
340
gtk_paned_set_position(GTK_PANED(divider), nPosDivider);
344
gtk_window_set_default_size (GTK_WINDOW (window1), 500, 350);
345
GtkWidget *divider = lookup_widget(window1, "hbox1");
346
if(g_bTreeToTheRight)
347
gtk_paned_set_position (GTK_PANED(divider), 350);
349
gtk_paned_set_position (GTK_PANED(divider), 150);
354
g_objIni.GetValue("Display", "ViewMode", nMode, 0);
356
on_view_text_only_mode (NULL, NULL);
358
on_view_text_only_mode (NULL, NULL);
361
//set custom GUI colors
362
std::string strColor, strColor1;
363
g_objIni.GetValue("Display", "TextColor", strColor, "");
364
g_objIni.GetValue("Display", "BackgroundColor", strColor1, "");
365
if(strColor.size() > 0)
368
gdk_color_parse (strColor.c_str(), &color);
369
gtk_widget_modify_text(GTK_WIDGET(textview), GTK_STATE_NORMAL, &color);
370
gtk_widget_modify_text(GTK_WIDGET(treeview), GTK_STATE_NORMAL, &color);
372
if(strColor1.size() > 0)
375
gdk_color_parse (strColor1.c_str(), &color1);
376
gtk_widget_modify_base(GTK_WIDGET(textview), GTK_STATE_NORMAL, &color1);
377
gtk_widget_modify_base(GTK_WIDGET(textview), GTK_STATE_INSENSITIVE, &color1);
378
gtk_widget_modify_base(GTK_WIDGET(treeview), GTK_STATE_NORMAL, &color1);
379
RefreshTextViewCaretColor(color1);
381
g_rgbTextViewBkColor = color1;
383
//fix for GTK bug - tree view loses background color
384
static const char cursor_color_rc[] =
387
"GtkTreeView::odd-row-color=\"#%04x%04x%04x\"\n"
388
"GtkTreeView::even-row-color =\"#%04x%04x%04x\"\n"
390
"widget \"*.aaa\" style \"aaa\"";
392
gchar *rc_temp = g_strdup_printf (cursor_color_rc,
399
gtk_rc_parse_string (rc_temp);
400
gtk_widget_set_name(treeview, "aaa");
401
gtk_widget_reset_rc_styles (treeview);
405
if(g_bDrawTextviewExpose){
406
//code to register drawing over text view
407
g_signal_connect (G_OBJECT (textview), "expose_event", G_CALLBACK(textview_expose_event_cb), NULL);
408
gtk_widget_set_app_paintable (textview, TRUE);
409
gtk_widget_set_redraw_on_allocate (textview, TRUE);
413
std::string strColor2;
414
g_objIni.GetValue("Display", "LinkColor", strColor2, "#0000FF");
416
gdk_color_parse (strColor2.c_str(), &color2);
417
g_linkColor = color2;
419
//init default node icon
420
g_objIni.GetValue("Default", "NodeIconType", g_nDefaultNodeIconType, -2);
421
g_objIni.GetValue("Security", "NodeIconValue", g_strDefaultIconFile, "");
424
g_objIni.GetValue("Search", "CaseSensitive", g_objSearchInfo.m_bFindSensitive, false);
426
//set custom tab size
427
int nCustomTabSize = 0;
428
g_objIni.GetValue("Display", "CustomTabSize", nCustomTabSize, 0);
429
if(nCustomTabSize > 0)
431
int nWidthPixels = g_text.CalcTabWidthInPixels(nCustomTabSize);
432
g_text.SetTabWidth(nWidthPixels);
435
//disable "New notecase" item when single instance is on
437
if(g_objIni.GetValue("Startup", "AllowSingleInstance", bSingleInst) && bSingleInst){
438
GtkWidget *new_notecase1 = lookup_widget(window1, "new_notecase1");
439
gtk_widget_set_sensitive(new_notecase1, FALSE);
443
g_timeout_add (0, initial_load_timer, NULL);
445
g_tree.SetFocus(); // set initial focus
447
gtk_widget_show (window1);
450
g_objIni.GetValue("Display", "MinimizeToTray", g_bMinimizeToTray);
451
g_objIni.GetValue("Display", "CloseToTray", g_bCloseToTray);
452
g_objIni.GetValue("Default", "CloseDlgOnTxtEnter", g_bCloseDlgOnTextEnter, true);
453
g_objIni.GetValue("Save", "AutoSaveOnClose", g_bAutoSaveOnClose);
454
g_objIni.GetValue("Save", "SkipMemOnlyAutoSave", g_bSkipMemOnlyAutosave, true);
455
g_objIni.GetValue("Export", "ExportEmbeddedAsSeparateFile", g_bExportDataAsSeparateFile, 1);
458
g_tree.WrapTreeToSize(g_tree.m_pWidget->allocation.width);
463
//TOFIX make class member RefreshTitle()
464
void RefreshMainTitle()
466
if(!g_wnd.m_pWidget) //no need if doing export from cmd line
469
std::string strTitle;
471
//basename of the document
472
if(g_doc.GetPath().size()>0)
474
strTitle += GetBaseName(g_doc.GetPath().c_str());
475
if(g_doc.IsModified())
480
strTitle += APP_NAME_STR;
482
strTitle += APP_VER_STR;
486
strTitle += g_doc.GetPath().c_str();
491
strTitle += APP_NAME_STR;
493
strTitle += APP_VER_STR;
496
gtk_window_set_title (GTK_WINDOW (window1), strTitle.c_str());
499
GtkWidget* MainWindow::create_main_win ()
502
HildonProgram *program;
503
HildonWindow *window1;
511
GtkWidget *scrolledwindow1;
512
GtkWidget *treeview1;
513
GtkWidget *scrolledwindow2;
514
GtkWidget *textview1;
515
GtkWidget *statusbar1;
518
GtkAccelGroup *accel_group;
522
// Create the hildon program and setup the title
523
program = HILDON_PROGRAM(hildon_program_get_instance());
524
g_set_application_name("Notecase");
527
accel_group = gtk_accel_group_new ();
529
//prepare version string
530
std::string strApp(APP_NAME_STR);
532
strApp += APP_VER_STR;
535
// Create HildonWindow and set it to HildonProgram
536
window1 = HILDON_WINDOW(hildon_window_new());
537
hildon_program_add_window(program, window1);
539
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
540
gtk_window_set_title (GTK_WINDOW (window1), strApp.c_str());
543
vbox1 = gtk_vbox_new (FALSE, 0);
544
gtk_widget_show (vbox1);
545
gtk_container_add (GTK_CONTAINER (window1), vbox1);
550
menubar1 = gtk_menu_bar_new ();
551
gtk_widget_show (menubar1);
552
gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0);
555
create_menu(GTK_WIDGET(window1), menubar1, accel_group);
558
toolbar1 = create_toolbar();
561
hildon_window_add_toolbar(window1, GTK_TOOLBAR(toolbar1));
563
gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0);
567
hbox1 = gtk_hpaned_new ();
568
gtk_widget_show (hbox1);
569
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
570
gtk_paned_set_position (GTK_PANED (hbox1), 0);
572
GtkWidget *frameLeft = gtk_frame_new (NULL);
573
GtkWidget *frameRight = gtk_frame_new (NULL);
574
gtk_frame_set_shadow_type (GTK_FRAME (frameLeft), GTK_SHADOW_IN);
575
gtk_frame_set_shadow_type (GTK_FRAME (frameRight), GTK_SHADOW_IN);
576
gtk_widget_show (frameLeft);
577
gtk_widget_show (frameRight);
579
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
580
gtk_widget_show (scrolledwindow1);
582
if(g_lang.IsCurLangRTL() || g_bTreeToTheRight) //RTL support
583
gtk_container_add( GTK_CONTAINER(frameRight), scrolledwindow1 );
585
gtk_container_add( GTK_CONTAINER(frameLeft), scrolledwindow1 );
587
gtk_paned_pack1(GTK_PANED(hbox1), frameLeft, FALSE, TRUE);
589
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
593
treeview1 = g_tree.m_pWidget;
594
gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);
596
vbox2 = gtk_vbox_new (FALSE, 0);
597
gtk_widget_show (vbox2);
598
gtk_container_set_border_width (GTK_CONTAINER (vbox2), 2);
600
if(g_lang.IsCurLangRTL() || g_bTreeToTheRight) //RTL support
601
gtk_container_add( GTK_CONTAINER(frameLeft), vbox2 );
603
gtk_container_add( GTK_CONTAINER(frameRight), vbox2 );
605
gtk_paned_pack2 (GTK_PANED (hbox1), frameRight, TRUE, TRUE);
607
//create text node label
608
label1 = gtk_label_new ("");
609
gtk_label_set_selectable(GTK_LABEL(label1), TRUE);
610
gtk_widget_set_size_request(label1, 300, -1);
611
gtk_misc_set_alignment(GTK_MISC(label1), 0.0f, 0.7f); // horizontal: left aligned, vertically centered
612
gtk_misc_set_padding(GTK_MISC(label1), 0, 2);
613
gtk_box_pack_start (GTK_BOX (vbox2), label1, FALSE, FALSE, 0);
615
//hack trying to fake top margin for text view
616
GtkWidget *margin1 = NULL;
617
if(g_bDrawTextviewExpose){
618
margin1 = gtk_label_new ("");
619
gtk_widget_show (margin1);
620
gtk_widget_set_size_request(margin1, -1, 5);
621
gtk_box_pack_start (GTK_BOX (vbox2), margin1, FALSE, FALSE, 0);
622
gtk_widget_set_app_paintable (margin1, TRUE);
623
gtk_widget_set_redraw_on_allocate (margin1, TRUE);
624
g_signal_connect (G_OBJECT (margin1), "expose_event", G_CALLBACK(textview1_expose_event_cb), NULL);
627
scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
628
gtk_widget_show (scrolledwindow2);
629
gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow2, TRUE, TRUE, 0);
630
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
632
//hack trying to fake bottom margin for text view
633
GtkWidget *margin2 = NULL;
634
if(g_bDrawTextviewExpose){
635
margin2 = gtk_label_new ("");
636
gtk_widget_show (margin2);
637
gtk_widget_set_size_request(margin2, -1, 5);
638
gtk_widget_set_app_paintable (margin1, TRUE);
639
gtk_widget_set_redraw_on_allocate (margin2, TRUE);
640
gtk_box_pack_start (GTK_BOX (vbox2), margin2, FALSE, FALSE, 0);
641
g_signal_connect (G_OBJECT (margin2), "expose_event", G_CALLBACK(textview1_expose_event_cb), NULL);
646
g_text.SetEditable(false); // no selected node
647
textview1 = g_text.m_pWidget;
648
gtk_container_add (GTK_CONTAINER (scrolledwindow2), textview1);
650
statusbar1 = gtk_statusbar_new ();
651
//gtk_widget_show (statusbar1);
652
gtk_box_pack_start (GTK_BOX (vbox1), statusbar1, FALSE, FALSE, 0);
654
g_signal_connect (GTK_OBJECT (window1), "window_state_event", G_CALLBACK(window_state_event), NULL);
655
g_signal_connect (GTK_OBJECT (scrolledwindow1), "size-allocate", G_CALLBACK(on_tree_resize), NULL);
657
// Store pointers to all widgets, for use by lookup_widget()
658
GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
659
GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1");
661
GLADE_HOOKUP_OBJECT (window1, menubar1, "menubar1");
663
GLADE_HOOKUP_OBJECT (window1, hbox1, "hbox1");
664
GLADE_HOOKUP_OBJECT (window1, scrolledwindow1, "scrolledwindow1");
665
GLADE_HOOKUP_OBJECT (window1, treeview1, "treeview1");
666
GLADE_HOOKUP_OBJECT (window1, scrolledwindow2, "scrolledwindow2");
667
GLADE_HOOKUP_OBJECT (window1, textview1, "textview1");
668
GLADE_HOOKUP_OBJECT (window1, statusbar1, "statusbar1");
669
GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2");
670
GLADE_HOOKUP_OBJECT (window1, label1, "label1");
671
GLADE_HOOKUP_OBJECT (window1, toolbar1, "toolbar1");
672
if(g_bDrawTextviewExpose){
673
GLADE_HOOKUP_OBJECT (window1, margin1, "margin1");
674
GLADE_HOOKUP_OBJECT (window1, margin2, "margin2");
677
gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group);
679
g_doc.SetPassCallback(PasswordCallback);
683
//set window/application icon
684
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
685
gtk_window_set_icon(GTK_WINDOW(window1), pixbuf);
686
g_object_unref(pixbuf);
689
//modify context menu for text view widget
690
g_signal_connect(G_OBJECT(textview1), "populate-popup", G_CALLBACK(on_textview_populate_popup), NULL);
693
//first one is required for maemo
694
gtk_widget_show_all(GTK_WIDGET(window1));
695
gtk_widget_hide_all(toolbar1); // hidden on startup
696
gtk_widget_hide(statusbar1); // hidden on startup
697
gtk_widget_hide(label1); // hidden on startup (node title bar)
700
return GTK_WIDGET(window1);
703
GtkWidget* MainWindow::create_toolbar()
705
GtkWidget *toolitem1;
707
GtkIconSize tmp_toolbar_icon_size;
709
GtkWidget *toolbar1 = gtk_toolbar_new ();
710
//gtk_widget_show (toolbar1); //initialy invisible (set by .ini value)
712
gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_ICONS);
713
gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar1), GTK_ICON_SIZE_SMALL_TOOLBAR);
714
tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1));
716
g_signal_connect (GTK_OBJECT (toolbar1), "focus", G_CALLBACK(on_focus_event), NULL);
718
gtk_toolbar_set_tooltips (GTK_TOOLBAR (toolbar1), TRUE );
719
GtkTooltips *tips = gtk_tooltips_new ();
721
button3 = gtk_image_new_from_stock (GTK_STOCK_NEW, tmp_toolbar_icon_size);
722
gtk_widget_show (button3);
724
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("New"));
725
gtk_widget_show (toolitem1);
726
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
727
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("New"), NULL);
728
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_new1_activate), NULL);
731
button3 = gtk_image_new_from_stock (GTK_STOCK_OPEN, tmp_toolbar_icon_size);
732
gtk_widget_show (button3);
734
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Open"));
735
gtk_widget_show (toolitem1);
736
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
737
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Open"), NULL);
738
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_open1_activate), NULL);
741
button3 = gtk_image_new_from_stock (GTK_STOCK_SAVE, tmp_toolbar_icon_size);
742
gtk_widget_show (button3);
744
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Save"));
745
gtk_widget_show (toolitem1);
746
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
747
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Save"), NULL);
748
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_save1_activate), NULL);
751
button3 = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, tmp_toolbar_icon_size);
752
gtk_widget_show (button3);
754
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Save As"));
755
gtk_widget_show (toolitem1);
756
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
757
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Save As"), NULL);
758
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_save_as1_activate), NULL);
761
toolitem1 = (GtkWidget*) gtk_separator_tool_item_new();
762
gtk_widget_show (toolitem1);
763
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
766
button3 = gtk_image_new_from_stock (GTK_STOCK_UNDO, tmp_toolbar_icon_size);
767
gtk_widget_show (button3);
769
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Undo"));
770
gtk_widget_show (toolitem1);
771
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
772
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Undo"), NULL);
773
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_undo_activate), NULL);
774
gtk_widget_set_sensitive(toolitem1, FALSE);
775
m_pToolbarUndo = toolitem1;
777
button3 = gtk_image_new_from_stock (GTK_STOCK_REDO, tmp_toolbar_icon_size);
778
gtk_widget_show (button3);
780
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Redo"));
781
gtk_widget_show (toolitem1);
782
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
783
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Redo"), NULL);
784
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_redo_activate), NULL);
785
gtk_widget_set_sensitive(toolitem1, FALSE);
786
m_pToolbarRedo = toolitem1;
788
button3 = gtk_image_new_from_stock (GTK_STOCK_CUT, tmp_toolbar_icon_size);
789
gtk_widget_show (button3);
791
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Cut"));
792
gtk_widget_show (toolitem1);
793
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
794
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Cut"), NULL);
795
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_cut1_activate), NULL);
798
button3 = gtk_image_new_from_stock (GTK_STOCK_COPY, tmp_toolbar_icon_size);
799
gtk_widget_show (button3);
801
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Copy"));
802
gtk_widget_show (toolitem1);
803
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
804
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Copy"), NULL);
805
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_copy1_activate), NULL);
808
button3 = gtk_image_new_from_stock (GTK_STOCK_PASTE, tmp_toolbar_icon_size);
809
gtk_widget_show (button3);
811
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Paste"));
812
gtk_widget_show (toolitem1);
813
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
814
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Paste"), NULL);
815
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_paste1_activate), NULL);
818
button3 = gtk_image_new_from_stock (GTK_STOCK_DELETE, tmp_toolbar_icon_size);
819
gtk_widget_show (button3);
821
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Delete"));
822
gtk_widget_show (toolitem1);
823
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
824
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Delete"), NULL);
825
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_delete1_activate), NULL);
831
button3 = gtk_image_new_from_stock (GTK_STOCK_ADD, tmp_toolbar_icon_size);
832
gtk_widget_show (button3);
834
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Insert Node"));
835
gtk_widget_show (toolitem1);
836
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
837
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Insert Node"), NULL);
838
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_insert_node), NULL);
841
button3 = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, tmp_toolbar_icon_size);
842
gtk_widget_show (button3);
844
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Move Node Left"));
845
gtk_widget_show (toolitem1);
846
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
847
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Move Node Left"), NULL);
848
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_move_left), NULL);
851
button3 = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, tmp_toolbar_icon_size);
852
gtk_widget_show (button3);
854
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Move Node Right"));
855
gtk_widget_show (toolitem1);
856
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
857
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Move Node Right"), NULL);
858
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_menu_move_right), NULL);
862
toolitem1 = (GtkWidget*) gtk_separator_tool_item_new();
863
gtk_widget_show (toolitem1);
864
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
867
// link wizard button
868
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
869
button3 = gtk_image_new_from_pixbuf (pixbuf);
870
gtk_widget_show (button3);
872
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Link wizard"));
873
gtk_widget_show (toolitem1);
874
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
875
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Link wizard"), NULL);
876
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_link_wizard_activate), NULL);
878
// insert image button
879
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_picture);
880
button3 = gtk_image_new_from_pixbuf (pixbuf);
881
gtk_widget_show (button3);
883
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Insert Picture"));
884
gtk_widget_show (toolitem1);
885
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
886
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Insert Picture"), NULL);
887
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_insert_picture_activate), NULL);
889
// insert image button
890
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_attachment);
891
button3 = gtk_image_new_from_pixbuf (pixbuf);
892
gtk_widget_show (button3);
894
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
895
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Node Attachments"));
896
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
898
gtk_widget_show (toolitem1);
899
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
900
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Node Attachments"), NULL);
901
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_node_attachments_activate), NULL);
903
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_attachments");
904
m_pToolbarAttachment = toolitem1;
906
// insert bold button
907
//button3 = gtk_image_new_from_stock (GTK_STOCK_BOLD, tmp_toolbar_icon_size);
908
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bold);
909
button3 = gtk_image_new_from_pixbuf (pixbuf);
910
gtk_widget_show (button3);
912
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
913
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Bold"));
914
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
916
gtk_widget_show (toolitem1);
917
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
918
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Bold"), NULL);
919
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_bold_activate), NULL);
921
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_bold");
922
m_pToolbarBold = toolitem1;
924
// insert italic button
925
//button3 = gtk_image_new_from_stock (GTK_STOCK_ITALIC, tmp_toolbar_icon_size);
926
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_italic);
927
button3 = gtk_image_new_from_pixbuf (pixbuf);
928
gtk_widget_show (button3);
930
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
931
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Italic"));
932
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
934
gtk_widget_show (toolitem1);
935
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
936
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Italic"), NULL);
937
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_italic_activate), NULL);
939
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_italic");
940
m_pToolbarItalic = toolitem1;
942
// insert underline button
943
//button3 = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, tmp_toolbar_icon_size);
944
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_underline);
945
button3 = gtk_image_new_from_pixbuf (pixbuf);
946
gtk_widget_show (button3);
948
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
949
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Underline"));
950
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
952
gtk_widget_show (toolitem1);
953
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
954
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Underline"), NULL);
955
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_underline_activate), NULL);
957
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_underline");
958
m_pToolbarUnderline = toolitem1;
960
// insert strikethrough button
961
//button3 = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, tmp_toolbar_icon_size);
962
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_strikethrough);
963
button3 = gtk_image_new_from_pixbuf (pixbuf);
964
gtk_widget_show (button3);
966
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
967
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Strikethrough"));
968
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
970
gtk_widget_show (toolitem1);
971
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
972
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Strikethrough"), NULL);
973
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_strikethrough_activate), NULL);
975
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_strikethrough");
976
m_pToolbarStrike = toolitem1;
978
// insert color button
979
//button3 = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, tmp_toolbar_icon_size);
980
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_color_xpm);
981
button3 = gtk_image_new_from_pixbuf (pixbuf);
982
gtk_widget_show (button3);
984
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
985
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Text Color"));
986
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
988
gtk_widget_show (toolitem1);
989
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
990
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Text Color"), NULL);
991
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_color_activate), NULL);
993
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_color");
994
m_pToolbarColor = toolitem1;
996
// insert bkg color button
997
//button3 = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, tmp_toolbar_icon_size);
998
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bg_color_xpm);
999
button3 = gtk_image_new_from_pixbuf (pixbuf);
1000
gtk_widget_show (button3);
1002
toolitem1 = (GtkWidget*) gtk_toggle_tool_button_new ();
1003
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem1), _("Text Background Color"));
1004
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolitem1), button3);
1006
gtk_widget_show (toolitem1);
1007
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
1008
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Text Background Color"), NULL);
1009
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_text_background_color_activate), NULL);
1011
GLADE_HOOKUP_OBJECT (toolbar1, toolitem1, "toolbar_bkg_color");
1012
m_pToolbarBkgColor = toolitem1;
1014
//insert help button
1015
button3 = gtk_image_new_from_stock (GTK_STOCK_HELP, tmp_toolbar_icon_size);
1016
gtk_widget_show (button3);
1018
toolitem1 = (GtkWidget*) gtk_tool_button_new (button3, _("Help"));
1019
gtk_widget_show (toolitem1);
1020
gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1);
1021
gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(toolitem1), tips, _("Help"), NULL);
1022
g_signal_connect (GTK_OBJECT (toolitem1), "clicked", G_CALLBACK(on_help1_activate), NULL);
1027
gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event)
1029
if(event->changed_mask & GDK_WINDOW_STATE_ICONIFIED)
1031
if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED)
1033
//on window minimized, show tray icon
1034
if(g_bMinimizeToTray)
1037
g_tray.SetTooltip("NoteCase"); //important: call this after Show
1038
gtk_widget_hide(window1);
1045
const char *PasswordCallback(const char *szFile, bool bSave)
1047
static char szPass[1024] = "";
1050
bool bCursor = g_bBusyCursor;
1052
HideBusyCursor(); //restore the normal cursor for the moment
1054
//ask user for password
1055
PasswordDialog dlg(bSave ? MODE_PASS_NEW : MODE_PASS_VERIFY);
1058
std::string strLabel = _("Please enter the password for file: ");
1059
strLabel += GetBaseName(szFile);
1060
dlg.SetLabel(strLabel.c_str());
1062
gtk_grab_add( dlg.GetDialog() ); //block all other widgets in the app
1064
if(GTK_RESPONSE_OK == dlg.ShowModal())
1067
const char *szText = dlg.GetPassword();
1069
strcpy(szPass, szText);
1072
gtk_grab_remove(dlg.GetDialog()); //unblock
1076
ShowBusyCursor(); //keep showing busy
1079
if(strlen(szPass)<1)
1084
void create_menu (GtkWidget *window1, GtkWidget *menubar1, GtkAccelGroup *accel_group)
1086
GtkWidget *menuitem1;
1089
GtkWidget *new_notecase1;
1093
GtkWidget *save_as1;
1096
GtkWidget *change_pass1;
1097
GtkWidget *read_only1;
1098
GtkWidget *separatormenuitem1;
1100
GtkWidget *menuitem2;
1108
GtkWidget *replace1;
1111
GtkWidget *statbar1;
1112
GtkWidget *menutool1;
1113
GtkWidget *menufull1;
1115
GtkWidget *options1;
1116
GtkWidget *shortcuts1;
1119
GtkWidget *menuitem3;
1121
GtkWidget *menuitem4;
1125
GtkWidget *website1;
1127
GtkWidget *menu_item;
1128
GtkWidget *textonly1;
1130
GtkWidget *menuitem5;
1131
GtkWidget *move_item;
1133
GtkWidget *wordcount1;
1134
GtkWidget *sort_item;
1137
GtkWidget *underline1;
1138
GtkWidget *strikethrough1;
1140
GtkWidget *bkgcolor1;
1141
GtkWidget *picture1;
1142
GtkWidget *remove_format1;
1143
GtkWidget *attachments1;
1144
GtkTooltips *menutips;
1146
#ifdef HAVE_GTKSOURCEVIEW
1150
menutips = gtk_tooltips_new();
1151
gtk_tooltips_enable(menutips);
1154
GtkWidget *maemomenu = gtk_menu_new ();
1157
menuitem1 = gtk_menu_item_new_with_mnemonic (_("_File"));
1158
gtk_widget_show (menuitem1);
1160
gtk_menu_append(GTK_MENU(maemomenu), menuitem1);
1162
gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);
1165
menu1 = gtk_menu_new ();
1166
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menu1);
1168
new_notecase1 = gtk_image_menu_item_new_with_mnemonic (_("New _Window"));
1169
gtk_widget_show (new_notecase1);
1170
gtk_container_add (GTK_CONTAINER (menu1), new_notecase1);
1171
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)¬ecase_xpm);
1172
GdkPixbuf *destpix = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
1173
g_object_unref (G_OBJECT (pixbuf));
1174
icon = gtk_image_new_from_pixbuf (destpix);
1175
gtk_widget_show (icon);
1176
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new_notecase1), icon);
1177
int nPos = g_shortcuts.FindByAction(NC_ACTION_APP_NEW);
1178
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1179
gtk_widget_add_accelerator (new_notecase1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1181
new1 = gtk_image_menu_item_new_with_mnemonic (_("_New"));
1182
gtk_widget_show (new1);
1183
gtk_container_add (GTK_CONTAINER (menu1), new1);
1184
icon = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_MENU);
1185
gtk_widget_show (icon);
1186
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new1), icon);
1187
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_NEW);
1188
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1189
gtk_widget_add_accelerator (new1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1191
open1 = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
1192
gtk_widget_show (open1);
1193
gtk_container_add (GTK_CONTAINER (menu1), open1);
1194
icon = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
1195
gtk_widget_show (icon);
1196
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open1), icon);
1197
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_OPEN);
1198
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1199
gtk_widget_add_accelerator (open1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1201
close1 = gtk_image_menu_item_new_with_mnemonic (_("_Close"));
1202
gtk_widget_show (close1);
1203
gtk_container_add (GTK_CONTAINER (menu1), close1);
1204
icon = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
1205
gtk_widget_show (icon);
1206
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (close1), icon);
1207
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_CLOSE);
1208
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1209
gtk_widget_add_accelerator (close1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1211
save1 = gtk_image_menu_item_new_with_mnemonic (_("_Save"));
1212
gtk_widget_show (save1);
1213
gtk_container_add (GTK_CONTAINER (menu1), save1);
1214
icon = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
1215
gtk_widget_show (icon);
1216
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save1), icon);
1217
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_SAVE);
1218
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1219
gtk_widget_add_accelerator (save1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1221
save_as1 = gtk_image_menu_item_new_with_mnemonic (_("Save _As"));
1222
gtk_widget_show (save_as1);
1223
gtk_container_add (GTK_CONTAINER (menu1), save_as1);
1224
icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_MENU);
1225
gtk_widget_show (icon);
1226
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save_as1), icon);
1227
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_SAVE_AS);
1228
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1229
gtk_widget_add_accelerator (save_as1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1231
reload1 = gtk_image_menu_item_new_with_mnemonic (_("Re_load"));
1232
gtk_widget_show (reload1);
1233
gtk_container_add (GTK_CONTAINER (menu1), reload1);
1234
icon = gtk_image_new_from_stock (GTK_STOCK_REFRESH, GTK_ICON_SIZE_MENU);
1235
gtk_widget_show (icon);
1236
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (reload1), icon);
1237
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_RELOAD);
1238
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1239
gtk_widget_add_accelerator (reload1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1241
read_only1 = gtk_check_menu_item_new_with_mnemonic (_("Read-Only"));
1242
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(read_only1), TRUE); //show check mark always
1243
gtk_widget_show (read_only1);
1244
gtk_container_add (GTK_CONTAINER (menu1), read_only1);
1245
nPos = g_shortcuts.FindByAction(NC_ACTION_READ_ONLY);
1246
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1247
gtk_widget_add_accelerator (read_only1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1248
gtk_tooltips_set_tip(menutips, read_only1, _("Document property that forbids document editing."), NULL);
1250
lock1 = gtk_image_menu_item_new_with_mnemonic (_("_Lock Document"));
1251
gtk_widget_show (lock1);
1252
gtk_container_add (GTK_CONTAINER (menu1), lock1);
1253
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&lock_xpm);
1254
icon = gtk_image_new_from_pixbuf (pixbuf);
1255
gtk_widget_show (icon);
1256
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (lock1), icon);
1257
nPos = g_shortcuts.FindByAction(NC_ACTION_LOCK_DOCUMENT);
1258
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1259
gtk_widget_add_accelerator (lock1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1260
gtk_widget_set_sensitive (lock1, FALSE);
1261
gtk_tooltips_set_tip(menutips, lock1, _("Unload encrypted document from memory."), NULL);
1263
change_pass1 = gtk_image_menu_item_new_with_mnemonic (_("_Change Password"));
1264
gtk_widget_show (change_pass1);
1265
gtk_container_add (GTK_CONTAINER (menu1), change_pass1);
1266
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&key);
1267
icon = gtk_image_new_from_pixbuf (pixbuf);
1268
gtk_widget_show (icon);
1269
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (change_pass1), icon);
1270
nPos = g_shortcuts.FindByAction(NC_ACTION_PASSWORD_CHANGE);
1271
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1272
gtk_widget_add_accelerator (change_pass1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1273
gtk_widget_set_sensitive (change_pass1, FALSE);
1275
separatormenuitem1 = gtk_separator_menu_item_new ();
1276
gtk_widget_show (separatormenuitem1);
1277
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1278
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1280
menu_item = gtk_menu_item_new_with_mnemonic(_("_Import"));
1281
gtk_widget_show (menu_item); // Show the widget
1282
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_import), NULL);
1283
gtk_menu_append(menu1, menu_item);
1284
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_IMPORT);
1285
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1286
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1288
menu_item = gtk_menu_item_new_with_mnemonic(_("_Export"));
1289
gtk_widget_show (menu_item); // Show the widget
1290
g_signal_connect(GTK_OBJECT(menu_item), "activate", G_CALLBACK (on_menu_export), NULL);
1291
gtk_menu_append(menu1, menu_item);
1292
nPos = g_shortcuts.FindByAction(NC_ACTION_DOC_EXPORT);
1293
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1294
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1296
separatormenuitem1 = gtk_separator_menu_item_new ();
1297
gtk_widget_show (separatormenuitem1);
1298
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1299
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1302
// MRU (most recently used) list
1306
g_menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Recent"));
1307
gtk_widget_show (g_menuitem5);
1308
gtk_container_add (GTK_CONTAINER (menu1), g_menuitem5);
1311
g_objMRU.RebuildMenu();
1314
separatormenuitem1 = gtk_separator_menu_item_new ();
1315
gtk_widget_show (separatormenuitem1);
1316
gtk_container_add (GTK_CONTAINER (menu1), separatormenuitem1);
1317
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1319
//continue creating menus
1320
quit1 = gtk_image_menu_item_new_with_mnemonic (_("_Quit"));
1321
gtk_widget_show (quit1);
1322
gtk_container_add (GTK_CONTAINER (menu1), quit1);
1323
icon = gtk_image_new_from_stock (GTK_STOCK_QUIT, GTK_ICON_SIZE_MENU);
1324
gtk_widget_show (icon);
1325
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit1), icon);
1326
nPos = g_shortcuts.FindByAction(NC_ACTION_APP_QUIT);
1327
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1328
gtk_widget_add_accelerator (quit1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1334
menuitem2 = gtk_menu_item_new_with_mnemonic (_("_Edit"));
1335
gtk_widget_show (menuitem2);
1337
gtk_menu_append(GTK_MENU(maemomenu), menuitem2);
1339
gtk_container_add (GTK_CONTAINER (menubar1), menuitem2);
1342
menu2 = gtk_menu_new ();
1343
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menu2);
1345
undo1 = gtk_image_menu_item_new_with_mnemonic (_("_Undo"));
1346
gtk_widget_show (undo1);
1347
gtk_widget_set_sensitive(undo1, FALSE);
1348
gtk_container_add (GTK_CONTAINER (menu2), undo1);
1349
icon = gtk_image_new_from_stock (GTK_STOCK_UNDO, GTK_ICON_SIZE_MENU);
1350
gtk_widget_show (icon);
1351
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (undo1), icon);
1352
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_UNDO);
1353
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1354
gtk_widget_add_accelerator (undo1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1356
redo1 = gtk_image_menu_item_new_with_mnemonic (_("_Redo"));
1357
gtk_widget_show (redo1);
1358
gtk_widget_set_sensitive(redo1, FALSE);
1359
gtk_container_add (GTK_CONTAINER (menu2), redo1);
1360
icon = gtk_image_new_from_stock (GTK_STOCK_REDO, GTK_ICON_SIZE_MENU);
1361
gtk_widget_show (icon);
1362
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (redo1), icon);
1363
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_REDO);
1364
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1365
gtk_widget_add_accelerator (redo1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1367
separatormenuitem1 = gtk_separator_menu_item_new ();
1368
gtk_widget_show (separatormenuitem1);
1369
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1370
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1372
cut1 = gtk_image_menu_item_new_with_mnemonic (_("Cu_t"));
1373
gtk_widget_show (cut1);
1374
gtk_container_add (GTK_CONTAINER (menu2), cut1);
1375
icon = gtk_image_new_from_stock (GTK_STOCK_CUT, GTK_ICON_SIZE_MENU);
1376
gtk_widget_show (icon);
1377
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (cut1), icon);
1378
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_CUT);
1379
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1380
gtk_widget_add_accelerator (cut1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1382
copy1 = gtk_image_menu_item_new_with_mnemonic (_("_Copy"));
1383
gtk_widget_show (copy1);
1384
gtk_container_add (GTK_CONTAINER (menu2), copy1);
1385
icon = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
1386
gtk_widget_show (icon);
1387
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (copy1), icon);
1388
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY);
1389
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1390
gtk_widget_add_accelerator (copy1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1392
paste1 = gtk_image_menu_item_new_with_mnemonic (_("_Paste"));
1393
gtk_widget_show (paste1);
1394
gtk_container_add (GTK_CONTAINER (menu2), paste1);
1395
icon = gtk_image_new_from_stock (GTK_STOCK_PASTE, GTK_ICON_SIZE_MENU);
1396
gtk_widget_show (icon);
1397
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (paste1), icon);
1398
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE);
1399
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1400
gtk_widget_add_accelerator (paste1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1402
delete1 = gtk_image_menu_item_new_with_mnemonic (_("_Delete"));
1403
gtk_widget_show (delete1);
1404
gtk_container_add (GTK_CONTAINER (menu2), delete1);
1405
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1406
gtk_widget_show (icon);
1407
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (delete1), icon);
1408
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_DELETE);
1409
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1410
gtk_widget_add_accelerator (delete1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1412
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Copy Branch _Structure"));
1413
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_copy_branch_structure), NULL);
1414
gtk_menu_append(menu2, menu_item);
1415
gtk_widget_show (menu_item); // Show the widget
1416
icon = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
1417
gtk_widget_show (icon);
1418
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1419
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_COPY_BR_STRUCT);
1420
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1421
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1423
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Paste Branch To Root"));
1424
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_paste_branch_root), NULL);
1425
gtk_menu_append(menu2, menu_item);
1426
gtk_widget_show (menu_item); // Show the widget
1427
icon = gtk_image_new_from_stock (GTK_STOCK_PASTE, GTK_ICON_SIZE_MENU);
1428
gtk_widget_show (icon);
1429
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1430
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_PASTE_BR_ROOT);
1431
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1432
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1434
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Insert Date/Time"));
1435
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_date_time), NULL);
1436
gtk_menu_append(menu2, menu_item);
1437
gtk_widget_show (menu_item); // Show the widget
1438
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_datetime);
1439
icon = gtk_image_new_from_pixbuf (pixbuf);
1440
gtk_widget_show (icon);
1441
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1442
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_INSERT_DATETIME);
1443
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1444
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1446
separatormenuitem1 = gtk_separator_menu_item_new ();
1447
gtk_widget_show (separatormenuitem1);
1448
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1449
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1451
find1 = gtk_image_menu_item_new_with_mnemonic (_("_Find"));
1452
gtk_widget_show (find1);
1453
gtk_container_add (GTK_CONTAINER (menu2), find1);
1454
icon = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
1455
gtk_widget_show (icon);
1456
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find1), icon);
1457
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_FIND);
1458
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1459
gtk_widget_add_accelerator (find1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1461
find2 = gtk_image_menu_item_new_with_mnemonic (_("Find _Next"));
1462
gtk_widget_show (find2);
1463
gtk_container_add (GTK_CONTAINER (menu2), find2);
1464
icon = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
1465
gtk_widget_show (icon);
1466
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (find2), icon);
1467
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_FIND_NEXT);
1468
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1469
gtk_widget_add_accelerator (find2, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1471
replace1 = gtk_image_menu_item_new_with_mnemonic (_("R_eplace"));
1472
gtk_widget_show (replace1);
1473
gtk_container_add (GTK_CONTAINER (menu2), replace1);
1474
icon = gtk_image_new_from_stock (GTK_STOCK_FIND_AND_REPLACE, GTK_ICON_SIZE_MENU);
1475
gtk_widget_show (icon);
1476
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (replace1), icon);
1477
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_REPLACE);
1478
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1479
gtk_widget_add_accelerator (replace1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1481
link1 = gtk_image_menu_item_new_with_mnemonic (_("Link _Wizard"));
1482
gtk_widget_show (link1);
1483
gtk_container_add (GTK_CONTAINER (menu2), link1);
1484
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
1485
icon = gtk_image_new_from_pixbuf (pixbuf);
1486
gtk_widget_show (icon);
1487
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (link1), icon);
1488
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_LINK_WIZARD);
1489
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1490
gtk_widget_add_accelerator (link1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1492
picture1 = gtk_image_menu_item_new_with_mnemonic (_("_Insert Picture"));
1493
gtk_widget_show (picture1);
1494
gtk_container_add (GTK_CONTAINER (menu2), picture1);
1495
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_picture);
1496
icon = gtk_image_new_from_pixbuf (pixbuf);
1497
gtk_widget_show (icon);
1498
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (picture1), icon);
1499
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_INSERT_PICTURE);
1500
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1501
gtk_widget_add_accelerator (picture1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1503
attachments1 = gtk_image_menu_item_new_with_mnemonic (_("Node _Attachments"));
1504
gtk_widget_show (attachments1);
1505
gtk_container_add (GTK_CONTAINER (menu2), attachments1);
1506
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&icon_attachment);
1507
icon = gtk_image_new_from_pixbuf (pixbuf);
1508
gtk_widget_show (icon);
1509
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (attachments1), icon);
1510
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_ATTACHMENTS);
1511
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1512
gtk_widget_add_accelerator (attachments1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1514
separatormenuitem1 = gtk_separator_menu_item_new ();
1515
gtk_widget_show (separatormenuitem1);
1516
gtk_container_add (GTK_CONTAINER (menu2), separatormenuitem1);
1517
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1519
shortcuts1 = gtk_image_menu_item_new_with_mnemonic (_("Configure Shortcuts"));
1520
gtk_widget_show (shortcuts1);
1521
gtk_container_add (GTK_CONTAINER (menu2), shortcuts1);
1522
icon = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
1523
gtk_widget_show (icon);
1524
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (shortcuts1), icon);
1525
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_SHORTCUTS);
1526
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1527
gtk_widget_add_accelerator (shortcuts1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1529
options1 = gtk_image_menu_item_new_with_mnemonic (_("Configure NoteCase"));
1530
gtk_widget_show (options1);
1531
gtk_container_add (GTK_CONTAINER (menu2), options1);
1532
icon = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
1533
gtk_widget_show (icon);
1534
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (options1), icon);
1535
nPos = g_shortcuts.FindByAction(NC_ACTION_EDIT_OPTIONS);
1536
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1537
gtk_widget_add_accelerator (options1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1542
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_View"));
1543
gtk_widget_show (menuitem3);
1545
gtk_menu_append(GTK_MENU(maemomenu), menuitem3);
1547
gtk_container_add (GTK_CONTAINER (menubar1), menuitem3);
1550
menu3 = gtk_menu_new ();
1551
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menu3);
1553
menufull1 = gtk_check_menu_item_new_with_mnemonic (_("_Full Screen"));
1554
gtk_widget_show (menufull1);
1555
gtk_container_add (GTK_CONTAINER (menu3), menufull1);
1558
gtk_widget_add_accelerator (menufull1, "activate", accel_group, HILDON_HARDKEY_FULLSCREEN, (GdkModifierType)0, (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1560
#ifndef _NOKIA_MAEMO
1561
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_FULLSCREEN);
1562
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1563
gtk_widget_add_accelerator (menufull1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1566
ontop1 = gtk_check_menu_item_new_with_mnemonic (_("_Always on top"));
1567
gtk_widget_show (ontop1);
1568
gtk_container_add (GTK_CONTAINER (menu3), ontop1);
1569
//TOFIX nPos = g_shortcuts.FindByAction(NC_ACTION_KEEP_ON_TOP);
1570
//if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1571
// gtk_widget_add_accelerator (ontop1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1573
menutool1 = gtk_check_menu_item_new_with_mnemonic (_("_Tool Bar"));
1574
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(menutool1), TRUE); //show check mark always
1575
gtk_widget_show (menutool1);
1576
gtk_container_add (GTK_CONTAINER (menu3), menutool1);
1577
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_TOOLBAR);
1578
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1579
gtk_widget_add_accelerator (menutool1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1581
title1 = gtk_check_menu_item_new_with_mnemonic (_("_Node Title Bar"));
1582
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(title1), TRUE); //show check mark always
1583
gtk_widget_show (title1);
1584
gtk_container_add (GTK_CONTAINER (menu3), title1);
1585
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_NODE_TITLEBAR);
1586
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1587
gtk_widget_add_accelerator (title1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1589
statbar1 = gtk_check_menu_item_new_with_mnemonic (_("_Status Bar"));
1590
gtk_widget_show (statbar1);
1591
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(statbar1), TRUE); //show check mark always
1592
gtk_container_add (GTK_CONTAINER (menu3), statbar1);
1593
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_STATUS_BAR);
1594
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1595
gtk_widget_add_accelerator (statbar1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1597
#ifdef HAVE_GTKSOURCEVIEW
1598
lines1 = gtk_check_menu_item_new_with_mnemonic (_("Line numbers"));
1599
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(lines1), TRUE); //show check mark always
1600
gtk_widget_show (lines1);
1601
gtk_container_add (GTK_CONTAINER (menu3), lines1);
1602
//TOFIX nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_WRAP);
1603
//if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1604
// gtk_widget_add_accelerator (wrap1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1607
wrap1 = gtk_check_menu_item_new_with_mnemonic (_("_Wrap"));
1608
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(wrap1), TRUE); //show check mark always
1609
gtk_widget_show (wrap1);
1610
gtk_container_add (GTK_CONTAINER (menu3), wrap1);
1611
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_WRAP);
1612
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1613
gtk_widget_add_accelerator (wrap1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1615
textonly1 = gtk_menu_item_new_with_mnemonic (_("Change View _Mode"));
1616
gtk_widget_show (textonly1);
1617
gtk_container_add (GTK_CONTAINER (menu3), textonly1);
1618
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_CHANGE_MODE);
1619
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1620
gtk_widget_add_accelerator (textonly1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1622
wordcount1 = gtk_menu_item_new_with_mnemonic (_("_Calculate Word Count"));
1623
gtk_widget_show (wordcount1);
1624
gtk_container_add (GTK_CONTAINER (menu3), wordcount1);
1625
nPos = g_shortcuts.FindByAction(NC_ACTION_VIEW_WORD_COUNT);
1626
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1627
gtk_widget_add_accelerator (wordcount1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1630
// tree menu (start)
1633
menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Tree"));
1634
gtk_widget_show (menuitem5);
1636
gtk_menu_append(GTK_MENU(maemomenu), menuitem5);
1638
gtk_container_add (GTK_CONTAINER (menubar1), menuitem5);
1641
menu5 = gtk_menu_new ();
1642
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem5), menu5);
1644
// ... add menu items with accelerators ...
1645
menu_item = gtk_menu_item_new_with_mnemonic(_("_Insert Node"));
1646
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_node), NULL);
1647
gtk_menu_append(menu5, menu_item);
1648
gtk_widget_show (menu_item); // Show the widget
1649
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW);
1650
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1651
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1653
menu_item = gtk_menu_item_new_with_mnemonic(_("Insert Child _Node"));
1654
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_child_node), NULL);
1655
gtk_menu_append(menu5, menu_item);
1656
gtk_widget_show (menu_item); // Show the widget
1657
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_NEW_CHILD);
1658
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1659
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1661
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Delete Node"));
1662
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_node), NULL);
1663
gtk_menu_append(menu5, menu_item);
1664
gtk_widget_show (menu_item); // Show the widget
1665
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1666
gtk_widget_show (icon);
1667
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1668
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE);
1669
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1670
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1672
menu_item = gtk_menu_item_new_with_mnemonic(_("_Rename Node"));
1673
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_rename_node), NULL);
1674
gtk_menu_append(menu5, menu_item);
1675
gtk_widget_show (menu_item); // Show the widget
1676
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_RENAME);
1677
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1678
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1680
move_item = gtk_menu_item_new_with_mnemonic(_("_Move Node"));
1681
gtk_menu_append(menu5, move_item);
1682
gtk_widget_show (move_item); // Show the widget
1684
sort_item = gtk_menu_item_new_with_mnemonic(_("_Sort"));
1685
gtk_menu_append(menu5, sort_item);
1686
gtk_widget_show (sort_item); // Show the widget
1688
menu_item = gtk_menu_item_new_with_mnemonic(_("_Expand All"));
1689
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_expand_all), NULL);
1690
gtk_menu_append(menu5, menu_item);
1691
gtk_widget_show (menu_item); // Show the widget
1692
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_EXPAND_ALL);
1693
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1694
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1696
menu_item = gtk_menu_item_new_with_mnemonic(_("_Collapse All"));
1697
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_collapse_all), NULL);
1698
gtk_menu_append(menu5, menu_item);
1699
gtk_widget_show (menu_item); // Show the widget
1700
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_COLAPSE_ALL);
1701
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1702
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1704
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Node _Properties"));
1705
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_node_properties), NULL);
1706
gtk_menu_append(menu5, menu_item);
1707
gtk_widget_show (menu_item); // Show the widget
1708
icon = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU);
1709
gtk_widget_show (icon);
1710
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1711
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_PROPERTIES);
1712
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1713
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1715
//"move node" submenu
1716
submenu = gtk_menu_new ();
1718
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Up"));
1719
gtk_menu_append(submenu, menu_item);
1720
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_up), NULL);
1721
gtk_widget_show (menu_item); // Show the widget
1722
icon = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
1723
gtk_widget_show (icon);
1724
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1725
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_UP);
1726
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1727
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1729
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Down"));
1730
gtk_menu_append(submenu, menu_item);
1731
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_down), NULL);
1732
gtk_widget_show (menu_item); // Show the widget
1733
icon = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
1734
gtk_widget_show (icon);
1735
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1736
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_DOWN);
1737
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1738
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1740
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Left"));
1741
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_left), NULL);
1742
gtk_menu_append(submenu, menu_item);
1743
gtk_widget_show (menu_item); // Show the widget
1744
icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU);
1745
gtk_widget_show (icon);
1746
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1747
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_LEFT);
1748
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1749
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1751
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Right"));
1752
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_right), NULL);
1753
gtk_menu_append(submenu, menu_item);
1754
gtk_widget_show (menu_item); // Show the widget
1755
icon = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU);
1756
gtk_widget_show (icon);
1757
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1758
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_MOVE_RIGHT);
1759
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1760
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1762
gtk_menu_item_set_submenu (GTK_MENU_ITEM (move_item), submenu);
1764
//"sort node" submenu
1765
submenu = gtk_menu_new ();
1767
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Sort Children Ascending"));
1768
gtk_menu_append(submenu, menu_item);
1769
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_ascending), NULL);
1770
gtk_widget_show (menu_item); // Show the widget
1771
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
1772
gtk_widget_show (icon);
1773
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1774
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_ASC);
1775
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1776
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1778
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort _Children Descending"));
1779
gtk_menu_append(submenu, menu_item);
1780
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_descending), NULL);
1781
gtk_widget_show (menu_item); // Show the widget
1782
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
1783
gtk_widget_show (icon);
1784
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1785
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_CHILDREN_DESC);
1786
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1787
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1789
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort Root Ascending"));
1790
gtk_menu_append(submenu, menu_item);
1791
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_ascending), NULL);
1792
gtk_widget_show (menu_item); // Show the widget
1793
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
1794
gtk_widget_show (icon);
1795
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1796
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_ASC);
1797
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1798
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1800
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Sort Root Descending"));
1801
gtk_menu_append(submenu, menu_item);
1802
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_descending), NULL);
1803
gtk_widget_show (menu_item); // Show the widget
1804
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
1805
gtk_widget_show (icon);
1806
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1807
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_SORT_ROOT_DESC);
1808
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1809
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1811
gtk_menu_item_set_submenu (GTK_MENU_ITEM (sort_item), submenu);
1813
menu_item = gtk_image_menu_item_new_with_mnemonic(_("Delete all _Completed nodes"));
1814
gtk_menu_append(menu5, menu_item);
1815
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_finished_nodes), NULL);
1816
gtk_widget_show (menu_item); // Show the widget
1817
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
1818
gtk_widget_show (icon);
1819
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
1820
nPos = g_shortcuts.FindByAction(NC_ACTION_TREE_NODE_DELETE_FINISHED);
1821
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1822
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1828
menuitem2 = gtk_menu_item_new_with_mnemonic (_("F_ormat"));
1829
gtk_widget_show (menuitem2);
1831
gtk_menu_append(GTK_MENU(maemomenu), menuitem2);
1833
gtk_container_add (GTK_CONTAINER (menubar1), menuitem2);
1836
menu2 = gtk_menu_new ();
1837
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menu2);
1839
bold1 = gtk_image_menu_item_new_with_mnemonic (_("_Bold"));
1840
gtk_widget_show (bold1);
1841
gtk_container_add (GTK_CONTAINER (menu2), bold1);
1842
//icon = gtk_image_new_from_stock (GTK_STOCK_BOLD, GTK_ICON_SIZE_MENU);
1843
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bold);
1844
icon = gtk_image_new_from_pixbuf (pixbuf);
1845
gtk_widget_show (icon);
1846
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (bold1), icon);
1847
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_BOLD);
1848
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1849
gtk_widget_add_accelerator (bold1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1851
italic1 = gtk_image_menu_item_new_with_mnemonic (_("_Italic"));
1852
gtk_widget_show (italic1);
1853
gtk_container_add (GTK_CONTAINER (menu2), italic1);
1854
//icon = gtk_image_new_from_stock (GTK_STOCK_ITALIC, GTK_ICON_SIZE_MENU);
1855
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_italic);
1856
icon = gtk_image_new_from_pixbuf (pixbuf);
1857
gtk_widget_show (icon);
1858
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (italic1), icon);
1859
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_ITALIC);
1860
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1861
gtk_widget_add_accelerator (italic1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1863
underline1 = gtk_image_menu_item_new_with_mnemonic (_("_Underline"));
1864
gtk_widget_show (underline1);
1865
gtk_container_add (GTK_CONTAINER (menu2), underline1);
1866
//icon = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, GTK_ICON_SIZE_MENU);
1867
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_underline);
1868
icon = gtk_image_new_from_pixbuf (pixbuf);
1869
gtk_widget_show (icon);
1870
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (underline1), icon);
1871
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_UNDERLINE);
1872
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1873
gtk_widget_add_accelerator (underline1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1875
strikethrough1 = gtk_image_menu_item_new_with_mnemonic (_("_Strikethrough"));
1876
gtk_widget_show (strikethrough1);
1877
gtk_container_add (GTK_CONTAINER (menu2), strikethrough1);
1878
//icon = gtk_image_new_from_stock (GTK_STOCK_UNDERLINE, GTK_ICON_SIZE_MENU);
1879
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_strikethrough);
1880
icon = gtk_image_new_from_pixbuf (pixbuf);
1881
gtk_widget_show (icon);
1882
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (strikethrough1), icon);
1883
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_STRIKETHROUGH);
1884
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1885
gtk_widget_add_accelerator (strikethrough1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1887
color1 = gtk_image_menu_item_new_with_mnemonic (_("_Text color"));
1888
gtk_widget_show (color1);
1889
gtk_container_add (GTK_CONTAINER (menu2), color1);
1890
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_color_xpm);
1891
icon = gtk_image_new_from_pixbuf (pixbuf);
1892
gtk_widget_show (icon);
1893
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (color1), icon);
1894
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_COLOR);
1895
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1896
gtk_widget_add_accelerator (color1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1898
bkgcolor1 = gtk_image_menu_item_new_with_mnemonic (_("Text Background _Color"));
1899
gtk_widget_show (bkgcolor1);
1900
gtk_container_add (GTK_CONTAINER (menu2), bkgcolor1);
1901
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_bg_color_xpm);
1902
icon = gtk_image_new_from_pixbuf (pixbuf);
1903
gtk_widget_show (icon);
1904
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (bkgcolor1), icon);
1905
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_BKG_COLOR);
1906
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1907
gtk_widget_add_accelerator (bkgcolor1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1909
remove_format1 = gtk_image_menu_item_new_with_mnemonic (_("_Remove formatting"));
1910
gtk_widget_show (remove_format1);
1911
gtk_container_add (GTK_CONTAINER (menu2), remove_format1);
1912
pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&text_no_format_xpm);
1913
icon = gtk_image_new_from_pixbuf (pixbuf);
1914
gtk_widget_show (icon);
1915
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove_format1), icon);
1916
nPos = g_shortcuts.FindByAction(NC_ACTION_FORMAT_REMOVE);
1917
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1918
gtk_widget_add_accelerator (remove_format1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1925
menuitem4 = gtk_menu_item_new_with_mnemonic (_("_Help"));
1926
gtk_widget_show (menuitem4);
1928
gtk_menu_append(GTK_MENU(maemomenu), menuitem4);
1930
gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);
1933
menu4 = gtk_menu_new ();
1934
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menu4);
1936
website1 = gtk_image_menu_item_new_with_mnemonic (_("_Visit Website"));
1937
gtk_widget_show (website1);
1938
gtk_container_add (GTK_CONTAINER (menu4), website1);
1939
//icon = gtk_image_new_from_stock (GTK_STOCK_HELP, GTK_ICON_SIZE_MENU);
1940
//gtk_widget_show (icon);
1941
//gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (website1), icon);
1942
nPos = g_shortcuts.FindByAction(NC_ACTION_VISIT_WEBSITE);
1943
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1944
gtk_widget_add_accelerator (website1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1946
help1 = gtk_image_menu_item_new_with_mnemonic (_("_Show help"));
1947
gtk_widget_show (help1);
1948
gtk_container_add (GTK_CONTAINER (menu4), help1);
1949
icon = gtk_image_new_from_stock (GTK_STOCK_HELP, GTK_ICON_SIZE_MENU);
1950
gtk_widget_show (icon);
1951
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), icon);
1952
nPos = g_shortcuts.FindByAction(NC_ACTION_HELP_INDEX);
1953
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1954
gtk_widget_add_accelerator (help1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1956
separatormenuitem1 = gtk_separator_menu_item_new ();
1957
gtk_widget_show (separatormenuitem1);
1958
gtk_container_add (GTK_CONTAINER (menu4), separatormenuitem1);
1959
gtk_widget_set_sensitive (separatormenuitem1, FALSE);
1961
about1 = gtk_menu_item_new_with_mnemonic (_("_About"));
1962
gtk_widget_show (about1);
1963
gtk_container_add (GTK_CONTAINER (menu4), about1);
1964
nPos = g_shortcuts.FindByAction(NC_ACTION_HELP_ABOUT);
1965
if(nPos >= 0 && !g_shortcuts[nPos].IsEmpty())
1966
gtk_widget_add_accelerator (about1, "activate", accel_group, g_shortcuts[nPos].m_nKey, (GdkModifierType)g_shortcuts[nPos].GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
1968
g_signal_connect (GTK_OBJECT (new_notecase1), "activate", G_CALLBACK(on_new_notecase1_activate), NULL);
1969
g_signal_connect (GTK_OBJECT (new1), "activate", G_CALLBACK(on_new1_activate), NULL);
1970
g_signal_connect (GTK_OBJECT (open1), "activate", G_CALLBACK(on_open1_activate), NULL);
1971
g_signal_connect (GTK_OBJECT (close1), "activate", G_CALLBACK(on_close1_activate), NULL);
1972
g_signal_connect (GTK_OBJECT (save1), "activate", G_CALLBACK(on_save1_activate), NULL);
1973
g_signal_connect (GTK_OBJECT (save_as1),"activate", G_CALLBACK(on_save_as1_activate), NULL);
1974
g_signal_connect (GTK_OBJECT (reload1), "activate", G_CALLBACK(on_reload1_activate), NULL);
1975
g_signal_connect (GTK_OBJECT (ontop1), "activate", G_CALLBACK(on_ontop1_activate), NULL);
1976
g_signal_connect (GTK_OBJECT (read_only1), "activate", G_CALLBACK(on_read_only_activate), NULL);
1977
g_signal_connect (GTK_OBJECT (lock1), "activate", G_CALLBACK(on_lock_document_activate), NULL);
1978
g_signal_connect (GTK_OBJECT (change_pass1), "activate", G_CALLBACK(on_change_pass1_activate), NULL);
1979
g_signal_connect (GTK_OBJECT (quit1), "activate", G_CALLBACK(on_quit1_activate), NULL);
1980
g_signal_connect (GTK_OBJECT (cut1), "activate", G_CALLBACK(on_cut1_activate), NULL);
1981
g_signal_connect (GTK_OBJECT (copy1), "activate", G_CALLBACK(on_copy1_activate), NULL);
1982
g_signal_connect (GTK_OBJECT (paste1), "activate", G_CALLBACK(on_paste1_activate), NULL);
1983
g_signal_connect (GTK_OBJECT (delete1), "activate", G_CALLBACK(on_delete1_activate), NULL);
1984
g_signal_connect (GTK_OBJECT (about1), "activate", G_CALLBACK(on_about1_activate), NULL);
1985
g_signal_connect (GTK_OBJECT (help1), "activate", G_CALLBACK(on_help1_activate), NULL);
1986
g_signal_connect (GTK_OBJECT (website1),"activate", G_CALLBACK(on_menu_visit_website), NULL);
1987
g_signal_connect (GTK_OBJECT (options1),"activate", G_CALLBACK(on_options1_activate), NULL);
1988
g_signal_connect (GTK_OBJECT (shortcuts1),"activate", G_CALLBACK(on_view_shortcuts_activate), NULL);
1989
g_signal_connect (GTK_OBJECT (find1), "activate", G_CALLBACK(on_find1_activate), NULL);
1990
g_signal_connect (GTK_OBJECT (find2), "activate", G_CALLBACK(on_find2_activate), NULL);
1991
g_signal_connect (GTK_OBJECT (replace1),"activate", G_CALLBACK(on_find_replace_activate), NULL);
1992
g_signal_connect (GTK_OBJECT (wrap1), "activate", G_CALLBACK(on_wrap_activate), NULL);
1993
#ifdef HAVE_GTKSOURCEVIEW
1994
g_signal_connect (GTK_OBJECT (lines1), "activate", G_CALLBACK(on_show_line_numbers_activate), NULL);
1996
g_signal_connect (GTK_OBJECT (title1), "activate", G_CALLBACK(on_show_node_titlebar_activate), NULL);
1997
g_signal_connect (GTK_OBJECT (statbar1),"activate", G_CALLBACK(on_show_status_bar_activate), NULL);
1998
g_signal_connect (GTK_OBJECT (menutool1),"activate", G_CALLBACK(on_show_toolbar_activate), NULL);
1999
g_signal_connect (GTK_OBJECT (menufull1),"activate", G_CALLBACK(on_full_screen_activate), NULL);
2000
g_signal_connect (GTK_OBJECT (undo1), "activate", G_CALLBACK(on_undo_activate), NULL);
2001
g_signal_connect (GTK_OBJECT (redo1), "activate", G_CALLBACK(on_redo_activate), NULL);
2002
g_signal_connect (GTK_OBJECT (link1), "activate", G_CALLBACK(on_link_wizard_activate), NULL);
2003
g_signal_connect (GTK_OBJECT (textonly1), "activate", G_CALLBACK(on_view_text_only_mode), NULL);
2004
g_signal_connect (GTK_OBJECT (wordcount1), "activate", G_CALLBACK(on_view_calc_word_count), NULL);
2005
g_signal_connect (GTK_OBJECT (bold1), "activate", G_CALLBACK(on_text_bold_activate), NULL);
2006
g_signal_connect (GTK_OBJECT (italic1), "activate", G_CALLBACK(on_text_italic_activate), NULL);
2007
g_signal_connect (GTK_OBJECT (underline1),"activate", G_CALLBACK(on_text_underline_activate), NULL);
2008
g_signal_connect (GTK_OBJECT (strikethrough1),"activate", G_CALLBACK(on_text_strikethrough_activate), NULL);
2009
g_signal_connect (GTK_OBJECT (color1), "activate", G_CALLBACK(on_text_color_activate), NULL);
2010
g_signal_connect (GTK_OBJECT (bkgcolor1), "activate", G_CALLBACK(on_text_background_color_activate), NULL);
2011
g_signal_connect (GTK_OBJECT (picture1), "activate", G_CALLBACK(on_insert_picture_activate), NULL);
2012
g_signal_connect (GTK_OBJECT (remove_format1), "activate", G_CALLBACK(on_remove_format_activate), NULL);
2013
g_signal_connect (GTK_OBJECT (attachments1), "activate", G_CALLBACK(on_node_attachments_activate), NULL);
2015
GLADE_HOOKUP_OBJECT (window1, menuitem1, "menuitem1");
2016
GLADE_HOOKUP_OBJECT (window1, menu1, "menu1");
2017
GLADE_HOOKUP_OBJECT (window1, new1, "new1");
2018
GLADE_HOOKUP_OBJECT (window1, open1, "open1");
2019
GLADE_HOOKUP_OBJECT (window1, wrap1, "wrap1");
2020
GLADE_HOOKUP_OBJECT (window1, title1, "title1");
2021
GLADE_HOOKUP_OBJECT (window1, menutool1, "menutool1");
2022
GLADE_HOOKUP_OBJECT (window1, find1, "find1");
2023
GLADE_HOOKUP_OBJECT (window1, find2, "find2");
2024
GLADE_HOOKUP_OBJECT (window1, replace1, "replace1");
2025
GLADE_HOOKUP_OBJECT (window1, save1, "save1");
2026
GLADE_HOOKUP_OBJECT (window1, save_as1, "save_as1");
2027
GLADE_HOOKUP_OBJECT (window1, reload1, "reload1");
2028
GLADE_HOOKUP_OBJECT (window1, read_only1, "read_only1");
2029
GLADE_HOOKUP_OBJECT (window1, lock1, "lock1");
2030
GLADE_HOOKUP_OBJECT (window1, change_pass1, "change_pass1");
2031
GLADE_HOOKUP_OBJECT (window1, separatormenuitem1, "separatormenuitem1");
2032
GLADE_HOOKUP_OBJECT (window1, quit1, "quit1");
2033
GLADE_HOOKUP_OBJECT (window1, menuitem2, "menuitem2");
2034
GLADE_HOOKUP_OBJECT (window1, menu2, "menu2");
2035
GLADE_HOOKUP_OBJECT (window1, cut1, "cut1");
2036
GLADE_HOOKUP_OBJECT (window1, copy1, "copy1");
2037
GLADE_HOOKUP_OBJECT (window1, paste1, "paste1");
2038
GLADE_HOOKUP_OBJECT (window1, delete1, "delete1");
2039
GLADE_HOOKUP_OBJECT (window1, menuitem4, "menuitem4");
2040
GLADE_HOOKUP_OBJECT (window1, menu4, "menu4");
2041
GLADE_HOOKUP_OBJECT (window1, about1, "about1");
2042
GLADE_HOOKUP_OBJECT (window1, help1, "help1");
2043
GLADE_HOOKUP_OBJECT (window1, website1, "website1");
2044
GLADE_HOOKUP_OBJECT (window1, statbar1, "statbar1");
2045
GLADE_HOOKUP_OBJECT (window1, undo1, "undo1");
2046
GLADE_HOOKUP_OBJECT (window1, redo1, "redo1");
2047
GLADE_HOOKUP_OBJECT (window1, link1, "link1");
2048
GLADE_HOOKUP_OBJECT (window1, wordcount1, "wordcount1");
2049
GLADE_HOOKUP_OBJECT (window1, new_notecase1, "new_notecase1");
2050
GLADE_HOOKUP_OBJECT (window1, bold1, "bold1");
2051
GLADE_HOOKUP_OBJECT (window1, italic1, "italic1");
2052
GLADE_HOOKUP_OBJECT (window1, underline1, "underline1");
2053
GLADE_HOOKUP_OBJECT (window1, color1, "color1");
2054
GLADE_HOOKUP_OBJECT (window1, bkgcolor1, "bkgcolor1");
2055
GLADE_HOOKUP_OBJECT (window1, picture1, "picture1");
2056
GLADE_HOOKUP_OBJECT (window1, remove_format1, "remove_format1");
2057
GLADE_HOOKUP_OBJECT (window1, attachments1, "attachments1");
2058
GLADE_HOOKUP_OBJECT (window1, menufull1, "menufull1");
2061
hildon_window_set_menu(HILDON_WINDOW(window1), GTK_MENU(maemomenu));
2065
gboolean on_focus_event (GtkWidget *widget, GtkDirectionType arg1, gpointer user_data)
2067
//FIX: prevent toolbar from getting focus by keyboard
2068
static bool bRecurse = false;
2072
gtk_widget_child_focus (widget, (GtkDirectionType)GTK_DIR_TAB_FORWARD);
2079
bool LocaleToUtf8(const char *szTxt, std::string &strResult)
2083
gsize nBytesWritten = 0;
2084
#if defined(G_OS_WIN32)
2085
gchar *pFileNameInUTF8 = g_locale_to_utf8(szTxt, -1, 0, &nBytesWritten, 0);
2087
gchar *pFileNameInUTF8 = g_filename_to_utf8(szTxt, -1, 0, &nBytesWritten, 0);
2090
if (pFileNameInUTF8)
2092
strResult = pFileNameInUTF8;
2093
g_free(pFileNameInUTF8);
2097
// on failure, copy original string
2102
bool Utf8ToLocale(const char *szTxt, std::string &strResult)
2104
gsize bytesWritten = 0;
2106
// On Windows GLib uses UTF-8 for filenames, but as well as we operate
2107
// on native Windows API, conversion to the encoding used in current
2108
// locale is required.
2109
#if defined(G_OS_WIN32)
2110
gchar *pFileName = g_locale_from_utf8(szTxt, -1, 0, &bytesWritten, 0);
2112
gchar *pFileName = g_filename_from_utf8(szTxt, -1, 0, &bytesWritten, 0);
2114
if (NULL != pFileName)
2116
strResult = pFileName;
2121
// on failure, copy original string
2126
gint dlg_keyboard_handler(GtkWidget *widget, GdkEventKey *event, gpointer data)
2128
//Esc press in the main window minimizes the application
2129
if( event->keyval == GDK_Escape )
2131
GtkWidget *widget1 = gtk_window_get_focus(GTK_WINDOW(window1));
2132
if( widget1 != g_text.m_pWidget &&
2133
widget1 != g_tree.m_pWidget)
2134
return FALSE; // skip this, we are in the label editing mode
2136
gtk_window_iconify(GTK_WINDOW(widget));
2137
return TRUE; //eat event (handled here)
2142
void SetTextViewCaretColor(bool bBlack)
2144
//hack to set 'caret' color dynamicaly (without .rc file on disk)
2146
GdkColor color = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; //white
2148
GdkColor black = { 0, 0, 0, 0 }; //black
2152
//TOFIX move this to TextView fn.
2153
static const char cursor_color_rc[] =
2154
"style \"Notecase\"\n"
2156
"GtkTextView::cursor-color=\"#%04x%04x%04x\"\n"
2158
"widget \"*.GtkTextView*\" style : application \"Notecase\"\n";
2160
gchar *rc_temp = g_strdup_printf (cursor_color_rc,
2164
gtk_rc_parse_string (rc_temp);
2165
gtk_widget_reset_rc_styles (g_text.m_pWidget);
2169
//Based on text-view background color, calculate
2170
//the color for text-view caret mark (a.k.a. cursor).
2171
//Caret is set to either white or black color (dark bkg -> light caret and vice versa)
2172
void RefreshTextViewCaretColor(GdkColor &BkColor)
2174
//TOFIX for better result try using HSL color model -> L = (MAX(r,g,b) + MIN(r,g,b))/2
2175
//is the background light enough for cursor to be black?
2176
int nR = BkColor.red/255;
2177
int nG = BkColor.green/255;
2178
int nB = BkColor.blue/255;
2179
int nPower = (nR*nR)+(nG*nG)+(nB*nB);
2181
bool bCaretColorBlack = (nPower > 48387);
2182
SetTextViewCaretColor(bCaretColorBlack);
2185
gboolean initial_load_timer(gpointer data)
2187
//load initial document if any
2189
load_file_embedded(/*strCurNodeID*/);
2191
//allow password being entered up to 3 times
2195
nResult = load_file(g_strLoadDocumentFile.c_str(), g_strLoadDocumentPass.c_str(), g_nLoadDocumentNodeID);
2197
if(DOC_LOAD_WRONG_PASSWORD != nResult){
2202
g_objMRU.Change(g_strLoadDocumentFile.c_str(), (DOC_LOAD_NOT_FOUND != nResult));//update MRU unless file not found
2205
g_strLoadDocumentPass = ""; // reset password
2207
return FALSE; // kill timer
2210
void treeview_show_popup_menu()
2212
GtkWidget *menu, *submenu;
2213
GtkWidget *menu_item, *move_item, *sort_item, *icon;
2214
int button, event_time;
2216
menu = gtk_menu_new ();
2217
//g_signal_connect (menu, "deactivate", G_CALLBACK(gtk_widget_destroy), NULL);
2219
GtkAccelGroup *accel_group = gtk_accel_group_new();
2220
gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
2222
// ... add menu items with accelerators ...
2223
menu_item = gtk_menu_item_new_with_label(_("Insert Node"));
2224
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_node), NULL);
2225
gtk_menu_append(menu, menu_item);
2226
gtk_widget_show (menu_item); // Show the widget
2227
if(g_defTreeNodeNew.IsValid(SH_CTX_TREE_WIDGET))
2228
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeNew.m_nKey, (GdkModifierType)g_defTreeNodeNew.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2230
menu_item = gtk_menu_item_new_with_label(_("Insert Child Node"));
2231
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_insert_child_node), NULL);
2232
gtk_menu_append(menu, menu_item);
2233
gtk_widget_show (menu_item); // Show the widget
2234
if(g_defTreeNodeNewChild.IsValid(SH_CTX_TREE_WIDGET))
2235
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeNewChild.m_nKey, (GdkModifierType)g_defTreeNodeNewChild.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2237
menu_item = gtk_image_menu_item_new_with_label(_("Delete Node"));
2238
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_delete_node), NULL);
2239
gtk_menu_append(menu, menu_item);
2240
gtk_widget_show (menu_item); // Show the widget
2241
icon = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
2242
gtk_widget_show (icon);
2243
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2244
if(g_defTreeNodeDelete.IsValid(SH_CTX_TREE_WIDGET))
2245
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeDelete.m_nKey, (GdkModifierType)g_defTreeNodeDelete.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2247
menu_item = gtk_menu_item_new_with_label(_("Rename Node"));
2248
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_rename_node), NULL);
2249
gtk_menu_append(menu, menu_item);
2250
gtk_widget_show (menu_item); // Show the widget
2251
if(g_defTreeNodeRename.IsValid(SH_CTX_TREE_WIDGET))
2252
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeRename.m_nKey, (GdkModifierType)g_defTreeNodeRename.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2254
move_item = gtk_menu_item_new_with_label(_("Move Node"));
2255
gtk_menu_append(menu, move_item);
2256
gtk_widget_show (move_item); // Show the widget
2258
sort_item = gtk_menu_item_new_with_label(_("Sort"));
2259
gtk_menu_append(menu, sort_item);
2260
gtk_widget_show (sort_item); // Show the widget
2262
menu_item = gtk_menu_item_new_with_label(_("Expand All"));
2263
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_expand_all), NULL);
2264
gtk_menu_append(menu, menu_item);
2265
gtk_widget_show (menu_item); // Show the widget
2266
if(g_defTreeNodeExpandAll.IsValid(SH_CTX_TREE_WIDGET))
2267
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeExpandAll.m_nKey, (GdkModifierType)g_defTreeNodeExpandAll.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2269
menu_item = gtk_menu_item_new_with_label(_("Collapse All"));
2270
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_collapse_all), NULL);
2271
gtk_menu_append(menu, menu_item);
2272
gtk_widget_show (menu_item); // Show the widget
2273
if(g_defTreeNodeColapseAll.IsValid(SH_CTX_TREE_WIDGET))
2274
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeColapseAll.m_nKey, (GdkModifierType)g_defTreeNodeColapseAll.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2276
menu_item = gtk_image_menu_item_new_with_label(_("Mark node as Completed"));
2277
g_signal_connect(menu_item, "activate", G_CALLBACK (on_node_toggle_finished), NULL);
2278
gtk_menu_append(menu, menu_item);
2279
gtk_widget_show (menu_item); // Show the widget
2280
if(g_defTreeNodeToggleFinished.IsValid(SH_CTX_TREE_WIDGET))
2281
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeToggleFinished.m_nKey, (GdkModifierType)g_defTreeNodeToggleFinished.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2283
menu_item = gtk_image_menu_item_new_with_label(_("Node Properties"));
2284
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_node_properties), NULL);
2285
gtk_menu_append(menu, menu_item);
2286
gtk_widget_show (menu_item); // Show the widget
2287
icon = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU);
2288
gtk_widget_show (icon);
2289
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2290
if(g_defTreeNodeProperties.IsValid(SH_CTX_TREE_WIDGET))
2291
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeProperties.m_nKey, (GdkModifierType)g_defTreeNodeProperties.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2293
menu_item = gtk_image_menu_item_new_with_label(_("Link wizard"));
2294
g_signal_connect(menu_item, "activate", G_CALLBACK (on_link_wizard_activate), NULL);
2295
gtk_menu_append(menu, menu_item);
2296
gtk_widget_show (menu_item); // Show the widget
2297
GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)&page_link);
2298
icon = gtk_image_new_from_pixbuf (pixbuf);
2299
gtk_widget_show (icon);
2300
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2302
//"move node" submenu
2303
submenu = gtk_menu_new ();
2305
menu_item = gtk_image_menu_item_new_with_label(_("Up"));
2306
gtk_menu_append(submenu, menu_item);
2307
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_up), NULL);
2308
gtk_widget_show (menu_item); // Show the widget
2309
icon = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
2310
gtk_widget_show (icon);
2311
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2312
if(g_defTreeNodeMoveUp.IsValid(SH_CTX_TREE_WIDGET))
2313
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveUp.m_nKey, (GdkModifierType)g_defTreeNodeMoveUp.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2315
menu_item = gtk_image_menu_item_new_with_label(_("Down"));
2316
gtk_menu_append(submenu, menu_item);
2317
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_down), NULL);
2318
gtk_widget_show (menu_item); // Show the widget
2319
icon = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
2320
gtk_widget_show (icon);
2321
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2322
if(g_defTreeNodeMoveDown.IsValid(SH_CTX_TREE_WIDGET))
2323
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveDown.m_nKey, (GdkModifierType)g_defTreeNodeMoveDown.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2325
menu_item = gtk_image_menu_item_new_with_label(_("Left"));
2326
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_left), NULL);
2327
gtk_menu_append(submenu, menu_item);
2328
gtk_widget_show (menu_item); // Show the widget
2329
icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU);
2330
gtk_widget_show (icon);
2331
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2332
if(g_defTreeNodeMoveLeft.IsValid(SH_CTX_TREE_WIDGET))
2333
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveLeft.m_nKey, (GdkModifierType)g_defTreeNodeMoveLeft.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2335
menu_item = gtk_image_menu_item_new_with_label(_("Right"));
2336
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_move_right), NULL);
2337
gtk_menu_append(submenu, menu_item);
2338
gtk_widget_show (menu_item); // Show the widget
2339
icon = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU);
2340
gtk_widget_show (icon);
2341
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2342
if(g_defTreeNodeMoveRight.IsValid(SH_CTX_TREE_WIDGET))
2343
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeMoveRight.m_nKey, (GdkModifierType)g_defTreeNodeMoveRight.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2345
gtk_menu_item_set_submenu (GTK_MENU_ITEM (move_item), submenu);
2347
//"sort node" submenu
2348
submenu = gtk_menu_new ();
2350
menu_item = gtk_image_menu_item_new_with_label(_("_Sort Children Ascending"));
2351
gtk_menu_append(submenu, menu_item);
2352
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_ascending), NULL);
2353
gtk_widget_show (menu_item); // Show the widget
2354
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
2355
gtk_widget_show (icon);
2356
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2357
if(g_defTreeNodeSortChildrenAsc.IsValid(SH_CTX_TREE_WIDGET))
2358
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortChildrenAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortChildrenAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2360
menu_item = gtk_image_menu_item_new_with_label(_("Sort _Children Descending"));
2361
gtk_menu_append(submenu, menu_item);
2362
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_child_descending), NULL);
2363
gtk_widget_show (menu_item); // Show the widget
2364
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
2365
gtk_widget_show (icon);
2366
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2367
if(g_defTreeNodeSortChildrenAsc.IsValid(SH_CTX_TREE_WIDGET))
2368
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortChildrenAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortChildrenAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2370
menu_item = gtk_image_menu_item_new_with_label(_("Sort Root Ascending"));
2371
gtk_menu_append(submenu, menu_item);
2372
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_ascending), NULL);
2373
gtk_widget_show (menu_item); // Show the widget
2374
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_ASCENDING, GTK_ICON_SIZE_MENU);
2375
gtk_widget_show (icon);
2376
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2377
if(g_defTreeNodeSortRootAsc.IsValid(SH_CTX_TREE_WIDGET))
2378
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortRootAsc.m_nKey, (GdkModifierType)g_defTreeNodeSortRootAsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2380
menu_item = gtk_image_menu_item_new_with_label(_("Sort Root Descending"));
2381
gtk_menu_append(submenu, menu_item);
2382
g_signal_connect(menu_item, "activate", G_CALLBACK (on_menu_sort_root_descending), NULL);
2383
gtk_widget_show (menu_item); // Show the widget
2384
icon = gtk_image_new_from_stock (GTK_STOCK_SORT_DESCENDING, GTK_ICON_SIZE_MENU);
2385
gtk_widget_show (icon);
2386
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), icon);
2387
if(g_defTreeNodeSortRootDsc.IsValid(SH_CTX_TREE_WIDGET))
2388
gtk_widget_add_accelerator (menu_item, "activate", accel_group, g_defTreeNodeSortRootDsc.m_nKey, (GdkModifierType)g_defTreeNodeSortRootDsc.GetModifierFlags(), (GtkAccelFlags)(GTK_ACCEL_VISIBLE));
2391
gtk_menu_item_set_submenu (GTK_MENU_ITEM (sort_item), submenu);
2394
// event_time = event->time;
2396
event_time = gtk_get_current_event_time ();
2397
button = 0; //FIX: allow mouse button to trigger the submenu
2399
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
2402
void on_tree_resize(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data)
2404
static bool bSkip = false;
2406
if(g_bWrapTree/* && !bSkip*/){
2414
void update_tree_wrap()
2416
GtkWidget *scrolledwindow1 = lookup_widget(window1, "scrolledwindow1");
2417
GtkAdjustment *hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW(scrolledwindow1));
2419
int nWidth = scrolledwindow1->allocation.width; //allocation->width
2421
TRACE("Wrap tree to %d\n", nWidth);
2422
g_tree.WrapTreeToSize(nWidth);
2424
//set horz scrollbar width
2427
g_object_get (G_OBJECT (hadjustment), "upper", &nValue, (char *)NULL);
2428
TRACE("Adj: %f\n", nValue);
2430
//g_signal_handlers_block_by_func(scrolledwindow1, (void *)on_tree_resize, 0);
2433
//TOFIX crashes on Ubuntu g_object_set (G_OBJECT (hadjustment), "upper", &nValue, NULL);
2435
//gtk_adjustment_changed(hadjustment);
2436
//g_signal_handlers_unblock_by_func(scrolledwindow1, (void *)on_tree_resize, 0);