From 888669249d0e691c1f06d5ee98694164a8fe333f Mon Sep 17 00:00:00 2001 From: Kemal Hadimli Date: Mon, 12 Feb 2007 01:59:24 +0000 Subject: [PATCH] tagged 0.25a / 0.25b git-svn-id: https://vcs.maemo.org/svn/maemopadplus/tags/0.25a@26 5e5308f7-2816-0410-9b18-d3ce14e03fc0 --- configure.in | 4 +- data/pixmaps/maemopadplus.rc | 23 ++- debian/changelog | 40 ++++ debian/control | 34 +++- debian/files | 2 +- debian/substvars | 2 +- debian/todo | 19 +- po/en_GB.gmo | Bin 1107 -> 369 bytes po/en_GB.po | 396 ++++++++++++++++++++++++++++-------- src/main.c | 1 - src/ui/callbacks.c | 171 +++++++++++----- src/ui/callbacks.h | 9 +- src/ui/interface.c | 86 ++++---- src/ui/interface.h | 22 +- src/ui/sketchwidget.c | 475 +++++++++++++++++++++++++++---------------- src/ui/sketchwidget.h | 9 + 16 files changed, 893 insertions(+), 400 deletions(-) rewrite debian/substvars (100%) rewrite po/en_GB.gmo (93%) rewrite po/en_GB.po (77%) diff --git a/configure.in b/configure.in index e61936e..0fee9aa 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_INIT(Makefile.am) -AM_INIT_AUTOMAKE(maemopadplus, 0.23a) +AM_INIT_AUTOMAKE(maemopadplus, 0.25a) AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST @@ -9,7 +9,7 @@ AC_PROG_CPP AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_LIBTOOL -AC_PROG_INTLTOOL([0.23a]) +AC_PROG_INTLTOOL([0.23]) AC_HEADER_STDC # Option to enable debugging diff --git a/data/pixmaps/maemopadplus.rc b/data/pixmaps/maemopadplus.rc index 94fba3b..256162a 100644 --- a/data/pixmaps/maemopadplus.rc +++ b/data/pixmaps/maemopadplus.rc @@ -1,7 +1,16 @@ -style "osso-maemopadplus-treeview" -{ - GtkTreeView::expander-size = 12 - GtkTreeView::expander-indent = 0 -} - -widget "*.maemopadplus-treeview" style "osso-maemopadplus-treeview" +style "osso-maemopadplus-treeview" +{ + GtkTreeView::expander-size = 12 + GtkTreeView::expander-indent = 0 +} + +widget "*.maemopadplus-treeview" style "osso-maemopadplus-treeview" + +style "osso-window-background-maemopadplus" { +HildonAppview::border-width = 0 +HildonWindow::borders = { 8, 24, 0, 24 } +HildonWindow::toolbar-borders = { 8, 24, 8, 3 } +} + +class "HildonAppView" style "osso-window-background-maemopadplus" +class "HildonWindow" style "osso-window-background-maemopadplus" diff --git a/debian/changelog b/debian/changelog index 159299f..a54ff63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,43 @@ +maemopadplus (0.25a) unstable; urgency=low + + fixed accidental drawing on pane movage + fixed intltool version check in configure.in + updated the .po file + made code prettier + + -- Kemal 'disq' Hadimli Thu, 12 Feb 2007 02:30:00 +0300 + +maemopadplus (0.25) unstable; urgency=low + + added simple range check for sketchwidget, prevents hangs on bora + added basic pressure support on bora (with ugly hacks) + made the eraser bigger + fixed filechange logic + fullscreen (without toolbars/tree) now also removes scrollbars + + -- Kemal 'disq' Hadimli Thu, 10 Feb 2007 01:53:00 +0300 + +maemopadplus (0.24a) unstable; urgency=low + + hopefully fixed icon to debian/control + + -- Kemal 'disq' Hadimli Thu, 09 Feb 2007 10:41:00 +0300 + +maemopadplus (0.24) unstable; urgency=low + + replaced fullscreen menu with view menu + fullscreen key now just toggles fullscreen, doesn't touch toolbar + toggle treeview button added to toolbar (esc key also works) + creating a new file now resets view flags, pane position, and adds a "my first memo" (sketchnode) and saves + added icon to debian/control + removed some of the gutters, still needs work + + -- Kemal 'disq' Hadimli Thu, 09 Feb 2007 07:47:00 +0300 + + first build on bora + + -- Kemal 'disq' Hadimli Thu, 08 Feb 2007 03:42:00 +0300 + maemopadplus (0.23a) unstable; urgency=low fixed sqlite3 dependency diff --git a/debian/control b/debian/control index 4b35cfb..aa79ead 100644 --- a/debian/control +++ b/debian/control @@ -9,4 +9,36 @@ Package: maemopadplus Architecture: any Pre-Depends: maemo-select-menu-location Depends: libsqlite3-0 (>= 3.0) -Description: Tree-based notes application with sketch support. Requires sqlite3 to work. +Description: Tree-based note/sketch application. Requires sqlite3 to work. +XB-Maemo-Icon-26: iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsT + AAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/ + AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAE5UlEQVR42mL8DwQMdAAAAcTE + QCcAEEB0swgggOhmEUAA4bfo6ysGhi8vMMXf3GRgeH6egeH/X9x6395mYHh9 + Fc4FCCAWOOvbGwaGT08ZGN7fByq4zsDw5BQDw7PLDAy2RQwM5lkQNZ+eMDAc + 6mBguLycgeH3d6B4HgODWxsDAyOSe7+9ZWA42sPAcG4uA8NfoEPsqhgYrAsY + AAIIahEw4d3bD7Ho6hoGhgdHgZqBwlwCDAwyZhAlt3cwMGzIYGD4+Y6B4d9n + iNjhTqC8KQODdjCEf2kFA8PuGmAoAM1h+AE2luFAHQODgi0DQABBnQI0VSeU + gcGqAOICkPXMQCxrxcAgbczA8PQ0A8NmoM9M0xgYkoAOEtWDGAL2wXtEUO2p + ZWDQDGBgiNvGwMCvCHHsX6CFX14yAAQQC0bYfnwEdDHIIqAqdW8Ghs/AONoI + dIBhNAODA9ARoGzHIQRRw8EOdIgRUM9jBoathQwMFsAgtiqEmMMlycDwDhgN + nDwMDDziDAABhGnRg0MQQwSBCpVdgHHSC7HEEime3gNdD0oHsoYMDFJAi1Yn + MDCI6SIs+QB07IebELaQGgODiDoDQAChpro/P4EKbkG8LGsDjDegpb+A8WGR + glDz7i4wuF5B1Ci7Ah12mIGBW4SBwbkOVc13YFwyQdVw8DMABBCqRW+Alry7 + wcDABkr4wGC5sZWBwb6U4ctvNobn7yAeZXh5EWj5bwYGdmAkMnMzMOxtggQZ + KyfCnFdXgI4GBjEbBwODmg9YCCCAUC16cACYqr4CLQEa8hboKst0hi98KgyL + d/5nmLwRaO9jYHi9PAPxDSsfA8N9oG90Q4DBo4Qa/E+OQVzFJwsONhAACCCE + Rb+/MTBcWw9R8BtooLonA4OKB8MTYFo4fesfwyNg9rh1Fch5fBwSJCD1EtoM + DGbpqJZ8eMjAcHcnRI0IUJ5LGCwMEEAsqDn5MkQBMysDg6oXNOH/Z2AE+oAZ + qFLkGzDYPj2CJP3fPyHhjw4eAX3zBZrkhTXgwgABxIKS2r6+gbDVgJZI6IGZ + CuKMDMG2TAw///xjMLq7FBI/oDyk4MTAIG+Nagko6V9eAQlaNmAcy9nApQAC + CGERKFP+h+Yfg0SgzyBS7EDPeZkCxb4Dw+74YUQRaZaJmgDAqe0O0JwjEIuE + gcla2gQuBRBAENNA5dbbKxCLQEUOKP+gg1fXgEHyDKIG6OO/Kp4M14HR8QeY + ujTkGBk4gA5iuLMbGCrvoEnfE5xRGV4Co+PhCQaAAGKCZ8KPDyAGKrkBvc2N + pcQGxuGfv5D40Q1jOP+cm2HGln8MUzf/Y7j6EKrm9TVIYmIFul/DH5JgtpQC + i71PDAABBPHRvb1AlwAjEOQqGQvsxf7joxBD+BWA8ePMcO8S0G1f/zOwMEHs + B3sVlNnBiQlo7B1gIXxyNgODfhgDg1EcA0AAMTH8/QUsdYHFPqhAZgZmMFFN + TEtASfYmMPN+A+UNeSCWYtCQARYIwPjmAUaTtAhI0T9IYgI55juwIN3eDEza + ggwMJkng+AYIIBZwsSNtCXSpMjAClcCGYABQHKoHAsMd6CglR7CQlhwDQ7wr + EwMz0AeSggyQ4l49CBhMQLXcwLyjE87AYIwougACiJHqraCfX4BRwAFPtTAA + EECM9GpuAQQQ3RonAAFEN4sAAgwA6EtoSzyQaWEAAAAASUVORK5CYII= + ==== diff --git a/debian/files b/debian/files index 4a981ce..daac8e3 100644 --- a/debian/files +++ b/debian/files @@ -1 +1 @@ -maemopadplus_0.23a_i386.deb user/accessories optional +maemopadplus_0.25a_armel.deb user/accessories optional diff --git a/debian/substvars b/debian/substvars dissimilarity index 100% index fc438b7..a31cbae 100644 --- a/debian/substvars +++ b/debian/substvars @@ -1 +1 @@ -shlibs:Depends=gtkhtml0, hildon-base-lib0 (>= 0.9.3), hildon-fm1 (>= 0.25-2), hildon-libs0 (>= 0.12.18-1), libart-2.0-2 (>= 2.3.16), libatk1.0-0 (>= 1.9.0), libaudiofile0 (>= 0.2.3-4), libc6 (>= 2.3.5-1), libdbus-1-2 (>= 0.61), libdbus-glib-1-2 (>= 0.61), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.3.2-1osso7), libfreetype6 (>= 2.1.10-1osso1), libgconf2-6 (>= 2.6.4.14), libglib2.0-0 (>= 2.8.6-1osso1), libgtk2.0-0 (>= 2:2.6.10-1.osso8), libjpeg62, libmatchbox1 (>= 1.7-1), libosso-gnomevfs2-0, libosso-help0 (>= 1.5.10), libosso1 (>= 1.11-1), libossomime0 (>= 1.4.17), libpango1.0-0 (>= 1.8.1), libpng12-0 (>= 1.2.8rel), libx11-6 | xlibs (>> 4.1.0), libxau0, libxext6 | xlibs (>> 4.1.0), libxft2 (>= 2.1.6-1osso10), libxml2 (>= 2.6.16), libxrender1, osso-esd, osso-thumbnail0 (>= 0.5-1), sqlite, zlib1g (>= 1:1.2.1) +shlibs:Depends=hildon-fm1 (>= 1.14-1), hildon-libs0 (>= 0.14.11-1), libatk1.0-0 (>= 1.9.0), libc6 (>= 2.3.5-1), libdbus-1-2 (>= 0.61), libdbus-glib-1-2 (>= 0.61), libgconf2-6 (>= 2.6.4.15), libglib2.0-0 (>= 2.8.6-1osso1), libgtk2.0-0 (>= 2:2.6.10-1.osso8), libosso-gnomevfs2-0, libosso-help0 (>= 2.0.8), libosso1 (>= 1.20-1), libpango1.0-0 (>= 1.8.1), libsqlite3-0 (>= 3.3.8), libxml2 (>= 2.6.16), zlib1g (>= 1:1.2.1) diff --git a/debian/todo b/debian/todo index fd6a2a2..88c9199 100755 --- a/debian/todo +++ b/debian/todo @@ -3,7 +3,6 @@ ADD: - rename node - BORDERS around sketchwidget (gtkrc?) -- resize canvas (pages of 480 pixels?) - import images (minimal vector ops might be needed here, to move and resize the image) - change canvas background color (just to keep up with xournal :P ) - erase by drawing over option? @@ -16,14 +15,28 @@ ADD: - add a swatches toolbar? at least "last used 4 colors" somewhere? +- ability to rearrange nodes +- add the d-pad shape drawing stuff to the toolbar +- add filled-with-bordered option, with a secondary color-well +- eraser presets (4 presets, tiny to huge) +- selection support +- vector-node support +- multiple pages on nodes +- checklists / bulleted outlines nodetypes +- import/export +- hyperlinks in rtf +- adjustable grid size +- note-type indicators in tree +- multiple pages in one sketch + FIX: - sketchnamed children of the textnamed node gets cropped when you collapse/expand its parent - gc/bitmap logic (when drawing over something else) - make drawing shapes faster (=queue_draw less) - make undo for drawing shapes consume less memory -- creating a childnode to the rootnode is not possible +- multiple root nodes not possible - fix/add hook: make tools menu not appear when no node is selected - probable bug: ending drawing beyond canvas might make undo a dull boy (crash protection in place) - node order -- column `ord` not saved (FIXME) - change detection might be too sensitive, test -- offering filenames on newfile/savefile dialogs doesn't work as it should +- offering filenames on newfile/savefile dialogs doesn't work as it should (only on mistral?) diff --git a/po/en_GB.gmo b/po/en_GB.gmo dissimilarity index 93% index 65d58954c093037a0d3ac314388edd3aafa5a20c..d0d698950d4f026c8201c437e8366e9d8fc715c7 100644 GIT binary patch delta 255 zcwW2A@sTO!o)F7a1|VPrVi_P-0b*t#)?t7E3m`TJN?JnIz(GJ!epYI7iLPggZdhtj zab|v=l|q1{v$vzWt3sG-P_U=J-{iSWdiCbI21dGu1`0;TR)*%<21W)3Tmk;NL8)b# zAU(P+i6yC43X!gkLAt*Fx-O0i9{yIop4w6Vey&_TiNz(lAw`LK#W{&3`9)R=ZlOLt z3Vx2ht_n7;zK)(g4vsD^L9W5Uc0i?h>7|M3sk$MliMdt^K8}9wp&*yoaQgT-pt217pwEt#@~T1@F(yX&@Gt0(*+Zs z1D*hG*!VVZ377&q(DR^R^qv=u-pity_u9s9Ek9U(EE@gKw(gtF|0o)r1;@mTjyczo zW9A(P!YFjc#%F;Cfn^(49HZ9;=2w=_ID-DRL&)gnme1P{z89I^+?J8i%`Km|2)^&P z{=?u$kvU^NcV)IwO{8L|D$@z7jx?%8T%$Tq7^+JFt5K5R-XLR4pccD_+9@nLRB48K zbZma`b>(>;8d5ftDUCud#x&tkILi1uDdc=DK_uLvFeI8M6)1&+J5g+m&#U0b{B zCrqJEChxL=CXI;PWSQbp1b9|}OJ2$CvQ%c8G*!$aQW?dH^ksnEPPL;C|x2xWT23A*_f+;)osF!kbXvmN~o4ufZGc0Ad5FX-{Ucx1C)D4H1uM%t)WnVSrN|R=Rk7ia!gRjb?5Be@mY4R^h3bfD=qo zIHG3v_4zcRTwKO*p_yX(%2vNl*5-BjNq1OAYGNQGF5&>MZFBAZzmK6|z5%?|ZLFe} WoR(tqgsY~`KJ_&d&9-jAtNsEPi}eNo diff --git a/po/en_GB.po b/po/en_GB.po dissimilarity index 77% index 10bf0e8..a91de88 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -1,89 +1,307 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#: ../src/main.c:60 -msgid "" -msgstr "" -"Project-Id-Version: maemopad 1.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-04-14 00:16-0200\n" -"PO-Revision-Date: 2005-04-14 00:16-0200\n" -"Last-Translator: Osvaldo Santana Neto \n" -"Language-Team: pt_BR \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../src/ui/interface.c:123 -msgid "maemopad_save_changes_made" -msgstr "Save changes?" - -#: ../src/ui/interface.c:124 -msgid "maemopad_yes" -msgstr "Yes" - -#: ../src/ui/interface.c:125 -msgid "maemopad_no" -msgstr "No" - -#: ../src/ui/interface.c:143 -msgid "maemopad_invalid_uri" -msgstr "Invalid URI!" - -#: ../src/ui/interface.c:147 -msgid "maemopad_save_failed" -msgstr "Save failed!" - -#: ../src/ui/interface.c:151 -msgid "maemopad_open_failed" -msgstr "Open failed!" - -#: ../src/ui/interface.c:190 -msgid "File" -msgstr "File" - -#: ../src/ui/interface.c:191 -msgid "New" -msgstr "New" - -#: ../src/ui/interface.c:192 -msgid "Open" -msgstr "Open" - -#: ../src/ui/interface.c:193 -msgid "Save" -msgstr "Save" - -#: ../src/ui/interface.c:194 -msgid "Save As..." -msgstr "Save As..." - -#: ../src/ui/interface.c:195 -msgid "Edit" -msgstr "Edit" - -#: ../src/ui/interface.c:196 -msgid "Cut" -msgstr "Cut" - -#: ../src/ui/interface.c:197 -msgid "Copy" -msgstr "Copy" - -#: ../src/ui/interface.c:198 -msgid "Paste" -msgstr "Paste" - -#: ../src/ui/interface.c:199 -msgid "Font" -msgstr "Font" - -#: ../src/ui/interface.c:200 -msgid "Full Screen" -msgstr "Full Screen" - -#: ../src/ui/interface.c:202 -msgid "Close" -msgstr "Close" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-02-10 23:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../src/main.c:71 +msgid "Maemopad+" +msgstr "" + +#: ../../src/main.c:142 +msgid "Exit?" +msgstr "" + +#: ../../src/main.c:142 ../../src/ui/interface.c:255 +#: ../../src/ui/callbacks.c:1335 +msgid "Yes" +msgstr "" + +#: ../../src/main.c:142 ../../src/ui/interface.c:255 +#: ../../src/ui/callbacks.c:1335 +msgid "No" +msgstr "" + +#: ../../src/ui/interface.c:255 +msgid "Create new file?" +msgstr "" + +#. +#. * Create the menu items +#. +#: ../../src/ui/interface.c:294 +msgid "File" +msgstr "" + +#: ../../src/ui/interface.c:295 +msgid "Memo" +msgstr "" + +#: ../../src/ui/interface.c:297 ../../src/ui/callbacks.c:573 +msgid "New memo" +msgstr "" + +#: ../../src/ui/interface.c:298 +msgid "Delete memo" +msgstr "" + +#: ../../src/ui/interface.c:299 +msgid "Expand/collapse node" +msgstr "" + +#: ../../src/ui/interface.c:300 +msgid "Export memo" +msgstr "" + +#: ../../src/ui/interface.c:302 +msgid "New data file" +msgstr "" + +#: ../../src/ui/interface.c:303 +msgid "Open data file..." +msgstr "" + +#: ../../src/ui/interface.c:304 +msgid "Save data" +msgstr "" + +#: ../../src/ui/interface.c:305 +msgid "View" +msgstr "" + +#: ../../src/ui/interface.c:306 +msgid "Edit" +msgstr "" + +#: ../../src/ui/interface.c:307 +msgid "Cut" +msgstr "" + +#: ../../src/ui/interface.c:308 +msgid "Copy" +msgstr "" + +#: ../../src/ui/interface.c:309 +msgid "Paste" +msgstr "" + +#: ../../src/ui/interface.c:310 +msgid "Clear" +msgstr "" + +#: ../../src/ui/interface.c:311 +msgid "Tools" +msgstr "" + +#: ../../src/ui/interface.c:312 +msgid "Exit" +msgstr "" + +#: ../../src/ui/interface.c:342 +msgid "About..." +msgstr "" + +#: ../../src/ui/interface.c:356 +msgid "Brush size" +msgstr "" + +#: ../../src/ui/interface.c:357 +msgid "Page style" +msgstr "" + +#: ../../src/ui/interface.c:358 +msgid "Shape" +msgstr "" + +#: ../../src/ui/interface.c:359 +msgid "Color..." +msgstr "" + +#: ../../src/ui/interface.c:360 +msgid "Font..." +msgstr "" + +#: ../../src/ui/interface.c:422 +#, c-format +msgid "%dpt" +msgstr "" + +#: ../../src/ui/interface.c:450 +#, c-format +msgid "No background" +msgstr "" + +#: ../../src/ui/interface.c:451 +#, c-format +msgid "Notebook lines" +msgstr "" + +#: ../../src/ui/interface.c:452 +#, c-format +msgid "Graph lines" +msgstr "" + +#: ../../src/ui/interface.c:489 +#, c-format +msgid "Tree" +msgstr "" + +#: ../../src/ui/interface.c:490 +#, c-format +msgid "Toolbar" +msgstr "" + +#: ../../src/ui/interface.c:491 +#, c-format +msgid "Full screen" +msgstr "" + +#: ../../src/ui/interface.c:529 +#, c-format +msgid "Free" +msgstr "" + +#: ../../src/ui/interface.c:530 +#, c-format +msgid "Line" +msgstr "" + +#: ../../src/ui/interface.c:531 +#, c-format +msgid "Rectangle" +msgstr "" + +#: ../../src/ui/interface.c:532 +#, c-format +msgid "Ellipse" +msgstr "" + +#: ../../src/ui/callbacks.c:268 +msgid "Error saving memo" +msgstr "" + +#: ../../src/ui/callbacks.c:489 +msgid "Error loading memo" +msgstr "" + +#: ../../src/ui/callbacks.c:556 +msgid "Text memo" +msgstr "" + +#: ../../src/ui/callbacks.c:560 +msgid "Sketch memo" +msgstr "" + +#: ../../src/ui/callbacks.c:569 +msgid "Text name" +msgstr "" + +#: ../../src/ui/callbacks.c:571 ../../src/ui/callbacks.c:584 +msgid "Please name the memo:" +msgstr "" + +#: ../../src/ui/callbacks.c:581 +msgid "Sketch name" +msgstr "" + +#: ../../src/ui/callbacks.c:599 +msgid "Create" +msgstr "" + +#: ../../src/ui/callbacks.c:600 ../../src/ui/callbacks.c:902 +#: ../../src/ui/callbacks.c:1335 +msgid "Cancel" +msgstr "" + +#: ../../src/ui/callbacks.c:891 ../../src/ui/callbacks.c:932 +#: ../../src/ui/callbacks.c:959 +msgid "Select a node first" +msgstr "" + +#: ../../src/ui/callbacks.c:899 +msgid "Are you sure?" +msgstr "" + +#: ../../src/ui/callbacks.c:901 +msgid "Yes, Delete" +msgstr "" + +#: ../../src/ui/callbacks.c:973 ../../src/ui/callbacks.c:1006 +msgid "Node is empty" +msgstr "" + +#: ../../src/ui/callbacks.c:985 ../../src/ui/callbacks.c:1015 +msgid "Export failed" +msgstr "" + +#: ../../src/ui/callbacks.c:991 ../../src/ui/callbacks.c:1019 +msgid "Exported" +msgstr "" + +#: ../../src/ui/callbacks.c:992 +msgid "Export incomplete" +msgstr "" + +#: ../../src/ui/callbacks.c:1258 +msgid "Error cutting" +msgstr "" + +#: ../../src/ui/callbacks.c:1280 +msgid "Error copying" +msgstr "" + +#: ../../src/ui/callbacks.c:1302 +msgid "Error pasting" +msgstr "" + +#: ../../src/ui/callbacks.c:1335 +msgid "Save changes?" +msgstr "" + +#: ../../src/ui/callbacks.c:1418 +msgid "Error 1" +msgstr "" + +#: ../../src/ui/callbacks.c:1431 +msgid "Error 2" +msgstr "" + +#: ../../src/ui/callbacks.c:1447 +msgid "My first memo" +msgstr "" + +#: ../../src/ui/callbacks.c:1612 +msgid "Close" +msgstr "" + +#: ../../src/ui/callbacks.c:1941 +msgid "Squared shapes ON" +msgstr "" + +#: ../../src/ui/callbacks.c:1952 +msgid "Squared shapes OFF" +msgstr "" + +#: ../../src/ui/callbacks.c:1963 +msgid "Filled shapes OFF" +msgstr "" + +#: ../../src/ui/callbacks.c:1974 +msgid "Filled shapes ON" +msgstr "" + +#: ../../src/ui/callbacks.c:2650 +msgid "Saved" +msgstr "" diff --git a/src/main.c b/src/main.c index b1a2eed..059a405 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * diff --git a/src/ui/callbacks.c b/src/ui/callbacks.c index a3bb332..2c5b84e 100644 --- a/src/ui/callbacks.c +++ b/src/ui/callbacks.c @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * @@ -35,6 +34,7 @@ #include #include #include +#include #include #include @@ -382,6 +382,8 @@ void callback_treeview_change(GtkTreeSelection * selection, gpointer data) prepareUIforNodeChange(mainview, nd->typ); if (nd->typ == NODE_TEXT) { + gboolean file_edited_backup = mainview->file_edited; + textdata = (char *)sqlite3_column_text(stmt, 1); blobsize = sqlite3_column_bytes(stmt, 1); @@ -393,6 +395,8 @@ void callback_treeview_change(GtkTreeSelection * selection, gpointer data) } gtk_text_buffer_set_modified(GTK_TEXT_BUFFER(mainview->buffer), FALSE); + + if (file_edited_backup==FALSE) mainview->file_edited=FALSE; /*textview changed event toggles this*/ goterr = FALSE; } else if (nd->typ == NODE_SKETCH) @@ -1324,16 +1328,14 @@ gint cb_popup(GtkWidget * widget, GdkEvent * event) */ gboolean closefile(MainView * mainview) { - gint answer; - saveCurrentData(mainview); - /* - * save changes note if file is edited - */ if (mainview->file_edited) { - answer = interface_save_changes_note(mainview); + HildonNote *hn = HILDON_NOTE(hildon_note_new_confirmation_add_buttons(GTK_WINDOW(mainview->data->main_view), _("Save changes?"), _("Yes"), CONFRESP_YES, _("No"), CONFRESP_NO, _("Cancel"), CONFRESP_CANCEL, NULL, NULL)); + gint answer = gtk_dialog_run(GTK_DIALOG(hn)); + gtk_widget_destroy(GTK_WIDGET(hn)); + if (answer == CONFRESP_CANCEL) return (FALSE); else if (answer == CONFRESP_YES) @@ -1398,7 +1400,7 @@ void callback_file_new(GtkAction * action, gpointer data) if (closefile(mainview) == FALSE) return; - filename = interface_file_chooser(mainview, GTK_FILE_CHOOSER_ACTION_SAVE, "newfile", "db"); + filename = interface_file_chooser(mainview, GTK_FILE_CHOOSER_ACTION_SAVE, "memos", "db"); if (filename == NULL) return; @@ -1437,6 +1439,22 @@ void callback_file_new(GtkAction * action, gpointer data) mainview->file_name = filename; mainview->file_edited = FALSE; read_file_to_buffer(mainview); + +/*add a starter memo*/ + nodeData *node; + node = g_malloc(sizeof(nodeData)); + node->typ = NODE_SKETCH; + node->name = _("My first memo"); + node->namepix = NULL; + node->lastMod = 0; + node->flags = 0; + node->sql3id = 0; + add_new_node(node, mainview, TRUE); + gtk_paned_set_position(GTK_PANED(mainview->hpaned), 180); + mainview->viewflags = 3; + callback_setview(mainview, 1); + write_buffer_to_file(mainview); + }while(FALSE); setBusy(mainview, 0); } @@ -1669,7 +1687,7 @@ void callback_eraser(GtkAction * action, MainView * mainview) sketchwidget_set_brushcolor(mainview->sk, c2); mainview->brushsize_backup = sketchwidget_get_brushsize(mainview->sk); - guint ers=(mainview->brushsize_backup*2)+4; + guint ers=(mainview->brushsize_backup*4)+4; sk_set_brushsize(mainview, ers); sketchwidget_set_brushsize(mainview->sk, ers); /*fixme:to override max brush size, not pretty*/ } @@ -1688,6 +1706,20 @@ void callback_eraser(GtkAction * action, MainView * mainview) } } +void callback_toggletree(GtkAction * action, MainView * mainview) +{ + g_assert(mainview != NULL && mainview->data != NULL); + + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[0]), gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(mainview->toggletree_tb))); + + if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(mainview->toggletree_tb))==TRUE) + mainview->viewflags |= 1; + else + mainview->viewflags &= ~1; + + callback_setview(mainview, 0); +} + void callback_menu(GtkAction * action, GtkWidget * menu) { gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME); @@ -1736,7 +1768,7 @@ void callback_sketchlines(GtkAction * action, GtkWidget * wid) { nd->flags &= ~NODEFLAG_SKETCHLINES; nd->flags &= ~NODEFLAG_SKETCHGRAPH; - sketchwidget_set_edited(mainview->sk, TRUE); +/* sketchwidget_set_edited(mainview->sk, TRUE);*/ /*we call this on openfile, so this messes things up*/ doit = TRUE; } @@ -1946,7 +1978,9 @@ gboolean key_press_cb(GtkWidget * widget, GdkEventKey * event, MainView * mainvi return FALSE; } case GDK_F6: - callback_fullscreen(NULL, mainview); + if ((mainview->viewflags & 4) == 0) mainview->viewflags |= 4; + else mainview->viewflags &= ~4; + callback_setview(mainview, 1); return TRUE; case GDK_F7: { @@ -1969,62 +2003,87 @@ gboolean key_press_cb(GtkWidget * widget, GdkEventKey * event, MainView * mainvi return FALSE; } case GDK_Escape: - if (mainview->fullscreen > 0) - { - mainview->fullscreen = 4; - callback_fullscreen(NULL, mainview); - } - else - { - callback_file_close(NULL, mainview); - } + if ((mainview->viewflags & 1) == 0) mainview->viewflags |= 1; + else mainview->viewflags &= ~1; + callback_setview(mainview, 1); + return TRUE; } return FALSE; } -/* - * fullscreen - */ -void callback_fullscreenmenu(GtkAction * action, GtkWidget * wid) +void callback_viewmenu(GtkAction * action, GtkWidget * wid) { - int style = (int)gtk_object_get_user_data(GTK_OBJECT(wid)); + int flag = (int)gtk_object_get_user_data(GTK_OBJECT(wid)); MainView *mainview = gtk_object_get_data(GTK_OBJECT(wid), "mainview"); g_assert(mainview != NULL); - setBusy(mainview, 1); + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(wid))) mainview->viewflags |= flag; + else mainview->viewflags &= ~flag; + + if (flag==1) + { + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(mainview->toggletree_tb), gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(wid))); + return; + } + + callback_setview(mainview, 0); +} - mainview->fullscreen=style; - if (mainview->fullscreen <= 1) + +void callback_setview(MainView *mainview, int setmenu) +{ +if (setmenu>0) + { + if ((mainview->viewflags&4)>0) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[2]), TRUE); + else + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[2]), FALSE); + + if ((mainview->viewflags&2)>0) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[1]), TRUE); + else + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[1]), FALSE); + + if ((mainview->viewflags&1)>0) { - gtk_window_unfullscreen(GTK_WINDOW(mainview->data->main_view)); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[0]), TRUE); + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(mainview->toggletree_tb), TRUE); } else { - gtk_window_fullscreen(GTK_WINDOW(mainview->data->main_view)); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->viewmenuitems[0]), FALSE); + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(mainview->toggletree_tb), FALSE); } - gtk_widget_show(mainview->scrolledtree); - gtk_widget_show(mainview->toolbar); - if (mainview->fullscreen == 1 || mainview->fullscreen >= 3) - gtk_widget_hide(mainview->scrolledtree); - if (mainview->fullscreen == 4) - gtk_widget_hide(mainview->toolbar); - setBusy(mainview, 2); -} + return; + } -void callback_fullscreen(GtkAction * action, gpointer data) -{ - MainView *mainview = NULL; - mainview = (MainView *) data; - g_assert(mainview != NULL && mainview->data != NULL); + setBusy(mainview, 1); - mainview->fullscreen++; - if (mainview->fullscreen > 4) - mainview->fullscreen = 0; - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mainview->fullscreenmenuitems[mainview->fullscreen]), TRUE); + if ((mainview->viewflags&4)>0) + gtk_window_fullscreen(GTK_WINDOW(mainview->data->main_view)); + else + gtk_window_unfullscreen(GTK_WINDOW(mainview->data->main_view)); + + if ((mainview->viewflags&2)>0) + gtk_widget_show(mainview->toolbar); + else + gtk_widget_hide(mainview->toolbar); + + if ((mainview->viewflags&1)>0) + gtk_widget_show(mainview->scrolledtree); + else + gtk_widget_hide(mainview->scrolledtree); + + if (mainview->viewflags==4) + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sketchwidget_get_mainwidget(mainview->sk)), GTK_POLICY_NEVER, GTK_POLICY_NEVER); + else + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sketchwidget_get_mainwidget(mainview->sk)), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + setBusy(mainview, 2); } /* @@ -2324,8 +2383,20 @@ gboolean read_file_to_buffer(MainView * mainview) if (tmp<0 || tmp>4) tmp=0; if (tmp==0) tmp=4; else tmp--; - mainview->fullscreen=tmp; - callback_fullscreen(NULL, mainview); + if (tmp==0) tmp=3; + else if (tmp==1) tmp=2; + else if (tmp==2) tmp=7; + else if (tmp==3) tmp=6; + else if (tmp==4) tmp=4; + mainview->viewflags=tmp; + callback_setview(mainview, TRUE); + } + if (!strcmp(col_key, "viewFlags")) + { + gint tmp = atoi((char *)col_val); + if (tmp<0) tmp=3; + mainview->viewflags=tmp; + callback_setview(mainview, TRUE); } if (!strcmp(col_key, "brushSize")) { @@ -2502,7 +2573,7 @@ void write_buffer_to_file(MainView * mainview) snprintf(tq, sizeof(tq), "INSERT INTO %s VALUES('newNodeDlgCreateChild', '%d');", misctable_name, nndcc); sqlite3_exec(mainview->db, tq, NULL, NULL, NULL); - snprintf(tq, sizeof(tq), "INSERT INTO %s VALUES('fullScreen', '%d');", misctable_name, mainview->fullscreen); + snprintf(tq, sizeof(tq), "INSERT INTO %s VALUES('viewFlags', '%d');", misctable_name, mainview->viewflags); sqlite3_exec(mainview->db, tq, NULL, NULL, NULL); nodeData *node = getSelectedNode(mainview); diff --git a/src/ui/callbacks.h b/src/ui/callbacks.h index 370e56e..d71db3c 100644 --- a/src/ui/callbacks.h +++ b/src/ui/callbacks.h @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * @@ -80,8 +79,9 @@ void callback_file_save(GtkAction * action, gpointer data); */ void callback_shapemenu(GtkAction * action, GtkWidget * wid); void callback_eraser(GtkAction * action, MainView * mainview); +void callback_toggletree(GtkAction * action, MainView * mainview); void callback_menu(GtkAction * action, GtkWidget * menu); -void callback_fullscreenmenu(GtkAction * action, GtkWidget * wid); +void callback_viewmenu(GtkAction * action, GtkWidget * wid); void callback_brushsizetb(GtkAction * action, MainView *mainview); void callback_brushsize(GtkAction * action, GtkWidget * wid); void callback_sketchlines(GtkAction * action, GtkWidget * wid); @@ -97,10 +97,7 @@ void callback_redotoggle(SketchWidget * sk, gboolean st, MainView * mainview); gboolean close_cb(GtkWidget * widget, GdkEventAny * event, MainView * mainview); gboolean key_press_cb(GtkWidget * widget, GdkEventKey * event, MainView * mainview); -/* - * fullscreen - */ -void callback_fullscreen(GtkAction * action, gpointer data); +void callback_setview(MainView *mainview, int setmenu); /* * buffer modified diff --git a/src/ui/interface.c b/src/ui/interface.c index 605af18..9e39fcc 100644 --- a/src/ui/interface.c +++ b/src/ui/interface.c @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * @@ -25,9 +24,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -40,7 +41,7 @@ */ GtkWidget *create_brushsizemenu(MainView * main); -GtkWidget *create_fullscreenmenu(MainView * main); +GtkWidget *create_viewmenu(MainView * main); GtkWidget *create_shapemenu(MainView * main); GtkWidget *create_sketchlinesmenu(MainView * main); GtkWidget *create_menu(MainView * main); @@ -92,7 +93,7 @@ MainView *interface_main_view_new(AppData * data) create_textarea(result); result->brushsizemenu = create_brushsizemenu(result); result->sketchlinesmenu = create_sketchlinesmenu(result); - result->fullscreenmenu = create_fullscreenmenu(result); + result->viewmenu = create_viewmenu(result); result->shapemenu = create_shapemenu(result); create_toolbar(result); @@ -103,10 +104,6 @@ MainView *interface_main_view_new(AppData * data) gtk_container_add(GTK_CONTAINER(result->data->main_view), result->hpaned); - /* - * gtk_container_add( GTK_CONTAINER( result->data->main_view ), main_vbox2); - * gtk_box_pack_start( GTK_BOX( main_vbox2 ), result->hpaned, TRUE, TRUE, 0 ); - */ gtk_paned_add1(GTK_PANED(result->hpaned), result->scrolledtree); result->sk = sketchwidget_new(800, 480, FALSE); @@ -135,7 +132,6 @@ MainView *interface_main_view_new(AppData * data) sk_set_brushsize(result, 4); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(result->sketchlinesmenuitems[0]), TRUE); - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(result->fullscreenmenuitems[0]), TRUE); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(result->shapemenuitems[0]), TRUE); result->newnodedialog_createchild = TRUE; @@ -248,22 +244,6 @@ PangoFontDescription *interface_font_chooser(MainView * main) return font; } -/* - * Save changes note - */ -gint interface_save_changes_note(MainView * main) -{ - HildonNote *hn = NULL; - gint response = FALSE; - - g_assert(main != NULL && main->data->main_view != NULL); - - hn = HILDON_NOTE(hildon_note_new_confirmation_add_buttons(GTK_WINDOW(main->data->main_view), _("Save changes?"), _("Yes"), CONFRESP_YES, _("No"), CONFRESP_NO, _("Cancel"), CONFRESP_CANCEL, NULL, NULL)); - response = gtk_dialog_run(GTK_DIALOG(hn)); - gtk_widget_destroy(GTK_WIDGET(hn)); - return response; -} - gint interface_create_new_file(MainView * main) { HildonNote *hn = NULL; @@ -321,14 +301,14 @@ GtkWidget *create_menu(MainView * main) main->new_item = gtk_menu_item_new_with_label(_("New data file")); main->open_item = gtk_menu_item_new_with_label(_("Open data file...")); main->save_item = gtk_menu_item_new_with_label(_("Save data")); + main->view_item = gtk_menu_item_new_with_label(_("View")); main->edit_item = gtk_menu_item_new_with_label(_("Edit")); main->cut_item = gtk_menu_item_new_with_label(_("Cut")); main->copy_item = gtk_menu_item_new_with_label(_("Copy")); main->paste_item = gtk_menu_item_new_with_label(_("Paste")); main->clear_item = gtk_menu_item_new_with_label(_("Clear")); main->tools_item = gtk_menu_item_new_with_label(_("Tools")); - main->fullscreen_item = gtk_menu_item_new_with_label(_("Full screen")); - close = gtk_menu_item_new_with_label(_("Close")); + close = gtk_menu_item_new_with_label(_("Exit")); /* * Add menu items to right menus @@ -338,6 +318,8 @@ GtkWidget *create_menu(MainView * main) gtk_menu_append(file_menu, main->open_item); gtk_menu_append(file_menu, main->save_item); + gtk_menu_append(main_menu, main->view_item); + gtk_menu_append(main_menu, main->edit_item); gtk_menu_append(edit_menu, main->cut_item); gtk_menu_append(edit_menu, main->copy_item); @@ -355,7 +337,6 @@ GtkWidget *create_menu(MainView * main) gtk_menu_append(node_menu, main->expand_collapse_node_item); #endif gtk_menu_append(main_menu, main->tools_item); - gtk_menu_append(main_menu, main->fullscreen_item); gtk_menu_append(main_menu, gtk_separator_menu_item_new()); about = gtk_menu_item_new_with_label(_("About...")); gtk_menu_append(main_menu, about); @@ -385,7 +366,7 @@ GtkWidget *create_menu(MainView * main) gtk_menu_item_set_submenu(GTK_MENU_ITEM(main->tools_pagestyle), main->sketchlinesmenu); gtk_menu_item_set_submenu(GTK_MENU_ITEM(main->tools_shape), main->shapemenu); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(main->fullscreen_item), main->fullscreenmenu); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(main->view_item), main->viewmenu); /* * Attach the callback functions to the activate signal @@ -494,33 +475,38 @@ GtkWidget *create_sketchlinesmenu(MainView * main) return (menu); } -GtkWidget *create_fullscreenmenu(MainView * main) +GtkWidget *create_viewmenu(MainView * main) { GtkWidget *menu; int i; - GSList *gr = NULL; - menu = gtk_menu_new(); - char st[5][128]; + char st[3][128]; + int stf[3]; - snprintf(st[0], sizeof(st[0]), _("Normal")); - snprintf(st[1], sizeof(st[1]), _("No Tree")); + snprintf(st[0], sizeof(st[0]), _("Tree")); + snprintf(st[1], sizeof(st[1]), _("Toolbar")); snprintf(st[2], sizeof(st[2]), _("Full screen")); - snprintf(st[3], sizeof(st[3]), _("Full - No tree")); - snprintf(st[4], sizeof(st[4]), _("Full - No tree/toolbar")); - for(i = 0; i < 5; i++) +/* +this is here because we might want to change the order of the items +warning: these are also in callback_setview() +*/ + + stf[0]=1; + stf[1]=2; + stf[2]=4; + + for(i = 0; i < 3; i++) { - main->fullscreenmenuitems[i] = gtk_radio_menu_item_new_with_label(gr, st[i]); - gr = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(main->fullscreenmenuitems[i])); + main->viewmenuitems[i] = gtk_check_menu_item_new_with_label(st[i]); - gtk_object_set_user_data(GTK_OBJECT(main->fullscreenmenuitems[i]), i); - gtk_object_set_data(GTK_OBJECT(main->fullscreenmenuitems[i]), "mainview", main); + gtk_object_set_user_data(GTK_OBJECT(main->viewmenuitems[i]), stf[i]); + gtk_object_set_data(GTK_OBJECT(main->viewmenuitems[i]), "mainview", main); - gtk_menu_prepend(menu, main->fullscreenmenuitems[i]); - g_signal_connect(G_OBJECT(main->fullscreenmenuitems[i]), "activate", G_CALLBACK(callback_fullscreenmenu), main->fullscreenmenuitems[i]); + gtk_menu_prepend(menu, main->viewmenuitems[i]); + g_signal_connect(G_OBJECT(main->viewmenuitems[i]), "toggled", G_CALLBACK(callback_viewmenu), main->viewmenuitems[i]); } gtk_widget_show_all(GTK_WIDGET(menu)); @@ -579,9 +565,9 @@ static void create_toolbar(MainView * main) /* * Make menus and buttons to toolbar: */ - /* - * Create toolitems using defined items from stock - */ + main->toggletree_tb = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_INDEX); + g_signal_connect(G_OBJECT(main->toggletree_tb), "toggled", G_CALLBACK(callback_toggletree), main); + main->new_tb = gtk_tool_button_new_from_stock( /*GTK_STOCK_NEW */ GTK_STOCK_ADD); main->save_tb = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE); @@ -595,14 +581,16 @@ static void create_toolbar(MainView * main) */ main->font_tb = gtk_tool_button_new_from_stock(GTK_STOCK_SELECT_FONT); - main->fullscreen_tb = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_FIT); +/* main->fullscreen_tb = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_FIT);*/ /* * Insert items to toolbar */ + gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->toggletree_tb, -1); +/* gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), gtk_separator_tool_item_new(), -1);*/ gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->new_tb, -1); gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->save_tb, -1); - gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->fullscreen_tb, -1); +/* gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->fullscreen_tb, -1);*/ gtk_toolbar_insert(GTK_TOOLBAR(main->toolbar), main->separator_tb1, -1); /* @@ -672,7 +660,7 @@ static void create_toolbar(MainView * main) * G_CALLBACK(callback_edit_paste), main); */ g_signal_connect(G_OBJECT(main->font_tb), "clicked", G_CALLBACK(callback_font), main); - g_signal_connect(G_OBJECT(main->fullscreen_tb), "clicked", G_CALLBACK(callback_menu), main->fullscreenmenu); +/* g_signal_connect(G_OBJECT(main->fullscreen_tb), "clicked", G_CALLBACK(callback_menu), main->fullscreenmenu);*/ /* * Show toolbar diff --git a/src/ui/interface.h b/src/ui/interface.h index b171fea..b7f7177 100644 --- a/src/ui/interface.h +++ b/src/ui/interface.h @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * @@ -123,14 +122,9 @@ struct _MainView */ AppData *data; - /* - * Fullscreen mode is on (TRUE) or off (FALSE) - */ - - /* - * gboolean fullscreen; - */ - guint fullscreen; /*0:normal 1:notree-normal 2:normal-full 3:notree-full 4:justdoc-full */ + guint viewflags; + /*old (guint fullscreen): 0:normal 1:notree-normal 2:normal-full 3:notree-full 4:justdoc-full */ + /*new (guint viewflags): 1:tree 2:toolbar 4:fullscreen*/ /* * Items for menu @@ -154,11 +148,11 @@ struct _MainView GtkWidget *tools_shape; GtkWidget *tools_font; GtkWidget *tools_color; - GtkWidget *fullscreen_item; + GtkWidget *view_item; GtkWidget *brushsizemenu; GtkWidget *sketchlinesmenu; - GtkWidget *fullscreenmenu; + GtkWidget *viewmenu; GtkWidget *shapemenu; /* @@ -167,6 +161,8 @@ struct _MainView GtkWidget *toolbar; GtkWidget *iconw; + GtkToolItem *toggletree_tb; + GtkToolItem *new_tb; /* @@ -184,8 +180,7 @@ struct _MainView GtkToolItem *font_tb; GtkWidget *colorbutton; GtkToolItem *colorbutton_tb; - GtkToolItem *fullscreen_tb; - GtkWidget *fullscreenmenuitems[5]; + GtkWidget *viewmenuitems[3]; GtkToolItem *brushsize_tb; GtkWidget *brushsizemenuitems[BRUSHSIZE_COUNT]; @@ -266,7 +261,6 @@ MainView *interface_main_view_new(AppData * data); void interface_main_view_destroy(MainView * main); gchar *interface_file_chooser(MainView * mainview, GtkFileChooserAction action, gchar * suggname, gchar * suggext); PangoFontDescription *interface_font_chooser(MainView * main); -gint interface_save_changes_note(MainView * main); gint interface_create_new_file(MainView * main); #endif diff --git a/src/ui/sketchwidget.c b/src/ui/sketchwidget.c index 7d8e99e..021adb3 100755 --- a/src/ui/sketchwidget.c +++ b/src/ui/sketchwidget.c @@ -1,4 +1,3 @@ - /* * This file is part of maemopad+ * @@ -27,7 +26,9 @@ */ void calc_rect(GdkRectangle *res, gint x1, gint y1, gint x2, gint y2, gint bs); void sketchwidget_init_backpixmaps(SketchWidget * sk); -void sketch_draw_brush(GtkWidget * widget, gdouble x, gdouble y, SketchWidget * sk); +void sketch_draw_brush(GtkWidget * widget, gdouble x, gdouble y, gdouble pressure, SketchWidget * sk); +guint sketch_calc_brush_size_from_pressure(gdouble pressure, SketchWidget * sk); +gboolean sketch_teststupid(GtkWidget * widget, GdkEventExpose * event, SketchWidget * sk); gboolean sketch_button_release(GtkWidget * widget, GdkEventButton * event, SketchWidget * sk); gboolean sketch_button_press(GtkWidget * widget, GdkEventButton * event, SketchWidget * sk); gboolean sketch_motion_notify(GtkWidget * widget, GdkEventMotion * event, SketchWidget * sk); @@ -131,7 +132,13 @@ void sketchundo_new(SketchWidget * sk) */ void sketchundo_commit(SketchWidget * sk) { - g_assert(sk->undocurbuffer != NULL); + if (sk->undocurbuffer==NULL) /*sometimes happens (esp on gregale) with scrolledwindow expose stupid hack enabled, should be fixed though*/ + { + fprintf(stderr, "[sketchundo] undocurbuffer is null!\n"); + return; + } + +/* g_assert(sk->undocurbuffer != NULL);*/ /* * free structs ahead of undocurrent here @@ -152,7 +159,7 @@ void sketchundo_commit(SketchWidget * sk) sk->undolist = NULL; } /* -fixme:crash--see comment in func. probabyl due to bad "snipping" somewhere above +fixme:crash--see comment in func. probably due to bad "snipping" somewhere above */ sketchundo_free_list(startsnip); #endif @@ -677,6 +684,9 @@ SketchWidget *sketchwidget_new(gint sizex, gint sizey, gboolean border) result->drawingarea = gtk_drawing_area_new(); gtk_widget_set_size_request(result->drawingarea, sizex, sizey); + result->sizex=sizex; + result->sizey=sizey; + result->brush_color.red = 0; result->brush_color.green = 0; result->brush_color.blue = 0; @@ -689,15 +699,14 @@ SketchWidget *sketchwidget_new(gint sizex, gint sizey, gboolean border) g_signal_connect(G_OBJECT(result->drawingarea), "button_press_event", G_CALLBACK(sketch_button_press), result); g_signal_connect(G_OBJECT(result->drawingarea), "button_release_event", G_CALLBACK(sketch_button_release), result); - gtk_widget_set_events(result->drawingarea, GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK); + gtk_widget_set_events(result->drawingarea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK/* | GDK_ALL_EVENTS_MASK*/); + + g_signal_connect(G_OBJECT(result->scrolledwindow), "expose_event", G_CALLBACK(sketch_teststupid), result); + gtk_widget_set_extension_events(result->drawingarea, GDK_EXTENSION_EVENTS_CURSOR); /* root of all evil */ gtk_widget_show(result->drawingarea); gtk_widget_hide(result->scrolledwindow); - /* - * gtk_widget_set_extension_events (result->drawingarea, GDK_EXTENSION_EVENTS_CURSOR); - */ - result->undocurrent = 0; result->undolist = NULL; @@ -1089,17 +1098,28 @@ res->width=w; res->height=h; } -void sketch_draw_brush(GtkWidget * widget, gdouble x, gdouble y, SketchWidget * sk) +void sketch_draw_brush(GtkWidget * widget, gdouble x, gdouble y, gdouble pressure, SketchWidget * sk) { GdkRectangle update_rect; GdkGC *gc; - int br, bs; + int br, bs, oldbs; gc = sk->gc; br = sk->brush_radius; - bs = sk->brush_size; +/* bs = sk->brush_size;*/ + if (pressure!=1) + { + bs=sketch_calc_brush_size_from_pressure(pressure, sk); + oldbs=sk->brush_size; + if (sk->gc) gdk_gc_set_line_attributes(sk->gc, bs, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + } + else + { + bs=sk->brush_size; + } + if (bs == 1) { update_rect.x = x; @@ -1124,215 +1144,316 @@ void sketch_draw_brush(GtkWidget * widget, gdouble x, gdouble y, SketchWidget * gdk_draw_arc(sk->pixmap, gc, TRUE, x - br, y - br, bs, bs, 0, 64 * 360); } + if (pressure!=1) gdk_gc_set_line_attributes(sk->gc, oldbs, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + gtk_widget_queue_draw_area(widget, update_rect.x, update_rect.y, update_rect.width, update_rect.height); } +gboolean sketch_teststupid(GtkWidget * widget, GdkEventExpose * event, SketchWidget * sk) +{ +/*fprintf(stderr, "TEST: %d, %d, %d, %d\n", event->area.x, event->area.y, event->area.width, event->area.height);*/ + +if (event->area.height>=350) + { +#ifdef NOTIFY_STUPID + fprintf(stderr, "STUPID\n"); +#endif + sk->stupidflag=1; + } + +return FALSE; +} + gboolean sketch_button_release(GtkWidget * widget, GdkEventButton * event, SketchWidget * sk) { - if (event->button == 1) +if (sk->pressed==FALSE) return TRUE; + +if (event->button == 1) + { + if (sk->shape != SKETCHSHAPE_FREEHAND) { - if (sk->shape != SKETCHSHAPE_FREEHAND) - { - if (sk->pressed==FALSE) return TRUE; - - sketchundo_new(sk); + sketchundo_new(sk); - GdkRectangle update_rect; - GdkGC *gc; - int bs; - - gc = sk->gc; - bs = sk->brush_size + 3; + GdkRectangle update_rect; + GdkGC *gc; + int bs; + + gc = sk->gc; + bs = sk->brush_size + 3; - calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); + calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); - if (sk->shiftmode) + if (sk->shiftmode) + { + if (sk->shape == SKETCHSHAPE_LINE) + { + int xd=abs(sk->start_x - sk->cur_x); + int yd=abs(sk->start_y - sk->cur_y); + if (xd>(yd*1.8)) sk->cur_y=sk->start_y; + else if (yd>(xd*1.8)) sk->cur_x=sk->start_x; + else { - if (sk->shape == SKETCHSHAPE_LINE) - { - int xd=abs(sk->start_x - sk->cur_x); - int yd=abs(sk->start_y - sk->cur_y); - if (xd>(yd*1.8)) sk->cur_y=sk->start_y; - else if (yd>(xd*1.8)) sk->cur_x=sk->start_x; - else - { - if (sk->cur_xstart_x && sk->cur_y>sk->start_y) - sk->cur_x=sk->start_x - abs(sk->cur_y - sk->start_y); - else if (sk->cur_x>sk->start_x && sk->cur_ystart_y) - sk->cur_x=sk->start_x + abs(sk->cur_y - sk->start_y); - else - sk->cur_y=sk->start_y + (sk->cur_x - sk->start_x); - } - calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); - } - else - { - update_rect.width=update_rect.height=sqrt((update_rect.height*update_rect.height)+(update_rect.width*update_rect.width)); - } + if (sk->cur_xstart_x && sk->cur_y>sk->start_y) + sk->cur_x=sk->start_x - abs(sk->cur_y - sk->start_y); + else if (sk->cur_x>sk->start_x && sk->cur_ystart_y) + sk->cur_x=sk->start_x + abs(sk->cur_y - sk->start_y); + else + sk->cur_y=sk->start_y + (sk->cur_x - sk->start_x); } + calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); + } + else + { + update_rect.width=update_rect.height=sqrt((update_rect.height*update_rect.height)+(update_rect.width*update_rect.width)); + } + } - sketchundo_drawrect(sk, (update_rect.x>bs)?(update_rect.x-bs):0, (update_rect.y>bs)?(update_rect.y-bs):0, update_rect.width+(bs*2), update_rect.height+(bs*2)); - if (sk->shape == SKETCHSHAPE_RECT) gdk_draw_rectangle(sk->pixmap, gc, sk->fillmode, update_rect.x, update_rect.y, update_rect.width, update_rect.height); - else if (sk->shape == SKETCHSHAPE_ELLIPSE) gdk_draw_arc(sk->pixmap, gc, sk->fillmode, update_rect.x, update_rect.y, update_rect.width, update_rect.height, 0, 360*64); - else if (sk->shape == SKETCHSHAPE_LINE) gdk_draw_line(sk->pixmap, gc, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y); + sketchundo_drawrect(sk, (update_rect.x>bs)?(update_rect.x-bs):0, (update_rect.y>bs)?(update_rect.y-bs):0, update_rect.width+(bs*2), update_rect.height+(bs*2)); + if (sk->shape == SKETCHSHAPE_RECT) gdk_draw_rectangle(sk->pixmap, gc, sk->fillmode, update_rect.x, update_rect.y, update_rect.width, update_rect.height); + else if (sk->shape == SKETCHSHAPE_ELLIPSE) gdk_draw_arc(sk->pixmap, gc, sk->fillmode, update_rect.x, update_rect.y, update_rect.width, update_rect.height, 0, 360*64); + else if (sk->shape == SKETCHSHAPE_LINE) gdk_draw_line(sk->pixmap, gc, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y); /* gtk_widget_queue_draw_area(widget, update_rect.x, update_rect.y, update_rect.width+(bs*2), update_rect.height+(bs*2)); */ - gtk_widget_queue_draw(widget); - } + gtk_widget_queue_draw(widget); + } - sketchundo_commit(sk); + sketchundo_commit(sk); - sk->pressed=FALSE; + sk->pressed=FALSE; - sk->lastevent_x = 0; - sk->lastevent_y = 0; + sk->lastevent_x = 0; + sk->lastevent_y = 0; - sk->start_x = 0; - sk->start_y = 0; + sk->start_x = 0; + sk->start_y = 0; - sk->cur_x = 0; - sk->cur_y = 0; - } - return TRUE; + sk->cur_x = 0; + sk->cur_y = 0; + } +return TRUE; } gboolean sketch_button_press(GtkWidget * widget, GdkEventButton * event, SketchWidget * sk) { - if (event->button == 1 && sk->pixmap != NULL) - { - if (sk->shape == SKETCHSHAPE_FREEHAND) - { - sketchundo_new(sk); - sketch_draw_brush(widget, event->x, event->y, sk); - sketchwidget_set_edited(sk, TRUE); - sk->lastevent_x = event->x; - sk->lastevent_y = event->y; - } - else - { - sk->start_x = event->x; - sk->start_y = event->y; - } - sk->pressed = TRUE; - } +if (sk->stupidflag==2) + { +#ifdef NOTIFY_STUPID + fprintf(stderr, "STUPID 2\n"); +#endif + sk->pressed=TRUE; /*first action after the stupid call wouldn't register otherwise*/ + sk->stupidflag=0; return TRUE; + } + +if (event->button == 1 && sk->pixmap != NULL) + { + + if (event->x<0 || event->y<0 || event->x>=sk->sizex || event->y>=sk->sizey) return TRUE; + +#ifdef NOTIFY_COORDS + fprintf(stderr, "GOT BUTTONPRESS! (%d,%d)\n", (int)event->x, (int)event->y); +#endif + + if (sk->shape == SKETCHSHAPE_FREEHAND) + { + gdouble pressure; + if (!gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure)) pressure=1; + + sketchundo_new(sk); + sketch_draw_brush(widget, event->x, event->y, pressure, sk); + + sketchwidget_set_edited(sk, TRUE); + sk->lastevent_x = event->x; + sk->lastevent_y = event->y; + } + else + { + sk->start_x = event->x; + sk->start_y = event->y; + } + + sk->pressed = TRUE; + } +return TRUE; +} + +guint sketch_calc_brush_size_from_pressure(gdouble pressure, SketchWidget * sk) +{ +if (pressurePRESSURE_MAX) pressure=PRESSURE_MAX; + +gdouble rp=pressure/PRESSURE_MAX; + +guint bs=ceil(sk->brush_size*rp); +/*fprintf(stderr, "returned %f for pressure %f (new bs=%d)\n", rp, pressure, bs);*/ + +return(bs); } gboolean sketch_motion_notify(GtkWidget * widget, GdkEventMotion * event, SketchWidget * sk) { - int x, y; - GdkModifierType state; +double x, y, pressure; +GdkModifierType state; - if (event->is_hint) - gdk_window_get_pointer(event->window, &x, &y, &state); - else - { - x = event->x; - y = event->y; - state = event->state; - } +if (sk->stupidflag==1) + { +#ifdef NOTIFY_STUPID + fprintf(stderr, "STUPID 1\n"); +#endif + sk->stupidflag++; + return TRUE; + } - if (sk->shape != SKETCHSHAPE_FREEHAND) - { - sk->cur_x = x; - sk->cur_y = y; +if (sk->shape == SKETCHSHAPE_FREEHAND && sk->pressed == FALSE) + { +#ifdef NOTIFY_COORDS + fprintf(stderr, "IGN\n"); +#endif + return TRUE; + } + +if (event->is_hint) + { +/* gdk_window_get_pointer(event->window, &x, &y, &state);*/ + + gdk_device_get_state (event->device, event->window, NULL, &state); + gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_X, &x); + gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_Y, &y); + if (!gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure)) pressure=1; + +#ifdef NOTIFY_COORDS + fprintf(stderr, "GOT HINT! (%d,%d)\n", (int)x, (int)y); +#endif + } +else + { + x = event->x; + y = event->y; + state = event->state; + if (!gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure)) pressure=1; + +#ifdef NOTIFY_COORDS + fprintf(stderr, "GOT MOTIONNOTIFY! (%d,%d)\n", (int)x, (int)y); +#endif + } + + if (x<0 || y<0 || x>=sk->sizex || y>=sk->sizey) return TRUE; + +if (sk->shape != SKETCHSHAPE_FREEHAND) + { + sk->cur_x = x; + sk->cur_y = y; /* - GdkRectangle update_rect; - int bs; - bs = sk->brush_size + 3; - calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); - if (sk->shiftmode) update_rect.width=update_rect.height; + GdkRectangle update_rect; + int bs; + bs = sk->brush_size + 3; + calc_rect(&update_rect, sk->start_x, sk->start_y, sk->cur_x, sk->cur_y, bs); + if (sk->shiftmode) update_rect.width=update_rect.height; - gtk_widget_queue_draw_area(widget, update_rect.x, update_rect.y, update_rect.width+(bs*2), update_rect.height+(bs*2)); + gtk_widget_queue_draw_area(widget, update_rect.x, update_rect.y, update_rect.width+(bs*2), update_rect.height+(bs*2)); */ - gtk_widget_queue_draw(widget); + gtk_widget_queue_draw(widget); - return TRUE; - } + return TRUE; + } - int xb = x, yb = y; +int xb = x, yb = y; - if (state & GDK_BUTTON1_MASK && sk->pixmap != NULL) - { - sketchundo_new(sk); +if (state & GDK_BUTTON1_MASK && sk->pixmap != NULL) + { + sketchundo_new(sk); - if (sk->lastevent_x == 0 && sk->lastevent_y == 0) - { - sketch_draw_brush(widget, event->x, event->y, sk); - } - else - { - gint x1, y1, w, h; - gint bs = sk->brush_size + 3; + if (sk->lastevent_x == 0 && sk->lastevent_y == 0) + { + sketch_draw_brush(widget, x, y, pressure, sk); + } + else + { + gint bs2, oldbs; + if (pressure!=1) + { + bs2=sketch_calc_brush_size_from_pressure(pressure, sk); + oldbs=sk->brush_size; + if (sk->gc) gdk_gc_set_line_attributes(sk->gc, bs2, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + } + else + { + bs2=sk->brush_size; + } + + gint x1, y1, w, h; + gint bs = bs2 + 3; - if (x < sk->lastevent_x) - { - w = sk->lastevent_x - x; - x1 = x; - } - else - { - w = x - sk->lastevent_x; - x1 = sk->lastevent_x; - } + if (x < sk->lastevent_x) + { + w = sk->lastevent_x - x; + x1 = x; + } + else + { + w = x - sk->lastevent_x; + x1 = sk->lastevent_x; + } - if (y < sk->lastevent_y) - { - h = sk->lastevent_y - y; - y1 = y; - } - else - { - h = y - sk->lastevent_y; - y1 = sk->lastevent_y; - } + if (y < sk->lastevent_y) + { + h = sk->lastevent_y - y; + y1 = y; + } + else + { + h = y - sk->lastevent_y; + y1 = sk->lastevent_y; + } - if (x1 >= bs) - x1 -= bs; - else - x1 = 0; - - if (y1 >= bs) - y1 -= bs; - else - y1 = 0; - - /* - nice debug code - GdkColor col=sketchwidget_get_brushcolor(sk); - GdkColor col2, col3; - col2.red=col2.green=0; - col2.blue=255*255; - sketchwidget_set_brushcolor(sk, col2); - - col3.red=col2.green=col3.blue=255*255; - GdkColormap *colormap = gdk_window_get_colormap(sk->drawingarea->window); - gdk_color_alloc(colormap, &col3); - gdk_gc_set_background(sk->gc, &col3); - - gdk_gc_set_line_attributes(sk->gc, 1, GDK_LINE_DOUBLE_DASH, GDK_CAP_BUTT, GDK_JOIN_BEVEL); - gdk_draw_rectangle(sk->pixmap, sk->gc, FALSE, x1, y1, w+(bs*2), h+(bs*2)); - - sketchwidget_set_brushcolor(sk, col); - gdk_gc_set_line_attributes(sk->gc, sk->brush_size, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); - gtk_widget_queue_draw(widget); - */ - sketchundo_drawrect(sk, x1, y1, w + (bs * 2), h + (bs * 2)); - - gdk_draw_line(sk->pixmap, sk->gc, sk->lastevent_x, sk->lastevent_y, x, y); - - gtk_widget_queue_draw_area(widget, x1, y1, w + (bs * 2), h + (bs * 2)); - } + if (x1 >= bs) + x1 -= bs; + else + x1 = 0; - sk->lastevent_x = xb; - sk->lastevent_y = yb; + if (y1 >= bs) + y1 -= bs; + else + y1 = 0; + + /* + nice debug code + GdkColor col=sketchwidget_get_brushcolor(sk); + GdkColor col2, col3; + col2.red=col2.green=0; + col2.blue=255*255; + sketchwidget_set_brushcolor(sk, col2); + + col3.red=col2.green=col3.blue=255*255; + GdkColormap *colormap = gdk_window_get_colormap(sk->drawingarea->window); + gdk_color_alloc(colormap, &col3); + gdk_gc_set_background(sk->gc, &col3); + + gdk_gc_set_line_attributes(sk->gc, 1, GDK_LINE_DOUBLE_DASH, GDK_CAP_BUTT, GDK_JOIN_BEVEL); + gdk_draw_rectangle(sk->pixmap, sk->gc, FALSE, x1, y1, w+(bs*2), h+(bs*2)); + + sketchwidget_set_brushcolor(sk, col); + gdk_gc_set_line_attributes(sk->gc, sk->brush_size, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + gtk_widget_queue_draw(widget); + */ + sketchundo_drawrect(sk, x1, y1, w + (bs * 2), h + (bs * 2)); + + gdk_draw_line(sk->pixmap, sk->gc, sk->lastevent_x, sk->lastevent_y, x, y); + + gtk_widget_queue_draw_area(widget, x1, y1, w + (bs * 2), h + (bs * 2)); + + if (pressure!=1 && sk->gc) gdk_gc_set_line_attributes(sk->gc, oldbs, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND); + } - sketchwidget_set_edited(sk, TRUE); - } + sketchwidget_set_edited(sk, TRUE); - return TRUE; + sk->lastevent_x = xb; + sk->lastevent_y = yb; + } + +return TRUE; } gboolean sketch_configure(GtkWidget * widget, GdkEventConfigure * event, SketchWidget * sk) @@ -1369,6 +1490,8 @@ gboolean sketch_configure(GtkWidget * widget, GdkEventConfigure * event, SketchW */ gboolean sketch_expose(GtkWidget * widget, GdkEventExpose * event, SketchWidget * sk) { +/* fprintf(stderr, "EXPOSE: %d, %d, %d, %d\n", event->area.x, event->area.y, event->area.width, event->area.height);*/ + GdkGC *tmpgc = gdk_gc_new(widget->window); gdk_gc_copy(tmpgc, widget->style->fg_gc[GTK_WIDGET_STATE(widget)]); diff --git a/src/ui/sketchwidget.h b/src/ui/sketchwidget.h index 374fb5c..ef39916 100755 --- a/src/ui/sketchwidget.h +++ b/src/ui/sketchwidget.h @@ -25,6 +25,12 @@ #include +/* #define NOTIFY_STUPID /**/ +/* #define NOTIFY_COORDS /**/ + +#define PRESSURE_MIN 0.1 +#define PRESSURE_MAX 0.35 + #define BACKGRAPH_LINE_HEIGHT 32 #define BACKGRAPH_LINE_MARGIN 40 #define BACKGRAPH_LINE_SIZE 1 @@ -130,6 +136,9 @@ struct _SketchWidget void (*callback_redotoggle) (SketchWidget * sk, gboolean st, gpointer data); gpointer callback_undotoggle_data; gpointer callback_redotoggle_data; + + guint sizex, sizey; + guint stupidflag; /*1:ignore next motion_event 2:ignore next keypress 0:normal*/ }; SketchWidget *sketchwidget_new(gint sizex, gint sizey, gboolean border); -- 2.11.4.GIT