diff -Nru bijiben-3.8.4/aclocal.m4 bijiben-3.10.2/aclocal.m4 --- bijiben-3.8.4/aclocal.m4 2013-08-18 23:29:45.000000000 +0000 +++ bijiben-3.10.2/aclocal.m4 2013-11-11 20:55:21.000000000 +0000 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.13.4 -*- Autoconf -*- +# generated automatically by aclocal 1.14 -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. @@ -898,7 +898,8 @@ .PHONY: pot pot: $(_HELP_POTFILE) $(_HELP_POTFILE): $(_HELP_C_FILES) $(_HELP_C_EXTRA) $(_HELP_C_MEDIA) - $(AM_V_GEN)$(ITSTOOL) -o "[$]@" $(_HELP_C_FILES) + $(AM_V_GEN)if test -d "C"; then d=; else d="$(srcdir)/"; fi; \ + $(ITSTOOL) -o "[$]@" $(foreach f,$(_HELP_C_FILES),"$${d}$(f)") .PHONY: repo repo: $(_HELP_POTFILE) @@ -1051,10 +1052,10 @@ # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.13' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.13.4], [], +m4_if([$1], [1.14], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -1070,7 +1071,7 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.13.4])dnl +[AM_AUTOMAKE_VERSION([1.14])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -1437,6 +1438,12 @@ # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -1545,7 +1552,48 @@ AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -1553,7 +1601,6 @@ m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -1771,6 +1818,70 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. diff -Nru bijiben-3.8.4/ChangeLog bijiben-3.10.2/ChangeLog --- bijiben-3.8.4/ChangeLog 2013-08-18 23:30:06.000000000 +0000 +++ bijiben-3.10.2/ChangeLog 2013-11-11 20:58:17.000000000 +0000 @@ -1,285 +1,3589 @@ -commit ff8e9105d8c46f3c6ff3db8c0ac241d1393e2e48 +commit 408106e26aa08d0dfec0e451a221b9ad53ef7bcc Author: Pierre-Yves Luyten -Date: Mon Aug 19 01:21:27 2013 +0200 +Date: Thu Nov 7 23:11:45 2013 +0100 + + Controller: fix the item removal + + No more note. The on_manager_changed deals with generic "items". + See https://bugzilla.redhat.com/show_bug.cgi?id=1026979 + + src/bjb-controller.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 74f34090fa48e3d7038f984d31c7775ff180ceee +Author: Anish A +Date: Mon Oct 21 23:57:30 2013 +0530 + + Updated Malayalam Translation + + po/LINGUAS | 1 + + po/ml.po | 351 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 352 insertions(+) + +commit cabdf504a23267d3dbd8f5ea4e15777073bd32ed +Author: Efstathios Iosifidis +Date: Wed Oct 16 15:10:59 2013 +0300 + + Updated Greek translation + + po/el.po | 228 ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 138 insertions(+), 90 deletions(-) + +commit 9f73724c27b4f354228e94d329072ccac2525ca1 +Author: Pierre-Yves Luyten +Date: Sun Oct 13 22:41:59 2013 +0200 + + Prepare for 3.10.1 + + NEWS | 9 +++++++++ + configure.ac | 2 +- + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit 3bc57f63b2b5a30a4de03a87516c69c491ed686e +Author: Pierre-Yves Luyten +Date: Thu Oct 3 22:08:07 2013 +0200 + + ownCloud: add a bit for import + + src/libbiji/provider/biji-import-provider.c | 8 +++--- + src/libbiji/provider/biji-own-cloud-provider.c | 34 ++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 3 deletions(-) + +commit 14279fe0aec4975943b9f61dd98c6a5cf87fcb4b +Author: Pierre-Yves Luyten +Date: Wed Oct 2 23:08:15 2013 +0200 + + tomboyReader: do not fail on html reserved characters + + See 708812 + + src/libbiji/deserializer/biji-tomboy-reader.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit 090ec038fadfeaa511a43405a94565cb2ad8fea6 +Author: Pierre-Yves Luyten +Date: Wed Oct 2 22:17:23 2013 +0200 + + tomboyReader: cleanup: append html header at gstring initization + + src/libbiji/deserializer/biji-tomboy-reader.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 9d9fdc24faf421e24e7ceb8e24407c669b2e4dcf +Author: Pierre-Yves Luyten +Date: Fri Sep 27 00:34:55 2013 +0200 + + Tomboy notes: be sure not to alter source + + See 708812 + New classes: BijiImportProvider, BijiTomboyReader + Instead of directly creating a note from an existing file + (then altering path and saving...), read the data, instanciate + an object then save it as anyone would expect. + + src/bjb-bijiben.c | 155 +------ + src/libbiji/Makefile.am | 4 + + src/libbiji/biji-date-time.c | 11 + + src/libbiji/biji-date-time.h | 17 +- + src/libbiji/biji-error.c | 7 +- + src/libbiji/biji-error.h | 7 +- + src/libbiji/biji-note-book.c | 45 +- + src/libbiji/biji-note-book.h | 16 + + src/libbiji/deserializer/biji-lazy-deserializer.c | 23 +- + src/libbiji/deserializer/biji-tomboy-reader.c | 527 ++++++++++++++++++++++ + src/libbiji/deserializer/biji-tomboy-reader.h | 64 +++ + src/libbiji/provider/biji-import-provider.c | 367 +++++++++++++++ + src/libbiji/provider/biji-import-provider.h | 75 +++ + src/libbiji/provider/biji-local-provider.c | 37 ++ + src/libbiji/provider/biji-own-cloud-provider.c | 2 +- + src/libbiji/provider/biji-provider.h | 42 +- + 16 files changed, 1225 insertions(+), 174 deletions(-) + +commit 7fb1aa9600edeb22f8f8add427ebf9507aafb786 +Author: Pierre-Yves Luyten +Date: Sun Oct 13 22:13:47 2013 +0200 + + collection: use the biji item book property + + The book property was not working anymore. + Fixes 709820 + + src/libbiji/biji-collection.c | 35 +++++++++++++---------------------- + 1 file changed, 13 insertions(+), 22 deletions(-) + +commit 56977e043ce5463b8b1da3b515781b83b245ddc2 +Author: Carles Ferrando +Date: Sun Oct 6 22:11:20 2013 +0200 + + [l10n] Added Catalan (Valencian) translation + + po/LINGUAS | 1 + + po/ca@valencia.po | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 346 insertions(+) + +commit 6643d0df612fa9b9928c3ae7b1b0539a475da33a +Author: Muhammet Kara +Date: Sat Sep 28 22:09:06 2013 +0300 + + [l10n]Updated Turkish translation + + po/tr.po | 257 +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 153 insertions(+), 104 deletions(-) + +commit ebf20c0043a57144fcee1a0bf486e2d96db01228 +Author: Pierre-Yves Luyten +Date: Thu Sep 26 23:04:10 2013 +0200 + + Book: always signal mass-change when a provider a loaded + + This might be the first provider. See 708458 + + src/libbiji/biji-note-book.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit 2ac80ce160bab554db6f81c42aca2158a8d1d5e4 +Author: Olav Vitters +Date: Mon Sep 23 22:07:16 2013 +0200 + + fix keyword typo in nl,ga po files + + po/ga.po | 2 +- + po/nl.po | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d314de20b20888d0b5a7dd120b998fea96fa643e +Author: Christian Kirbach +Date: Tue Sep 24 16:37:53 2013 +0200 + + Updated German translation + + po/de.po | 174 +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 98 insertions(+), 76 deletions(-) + +commit 8ac0dfcf6b106b410eea0d6ba128b4887b7ee80b +Author: Pierre-Yves Luyten +Date: Mon Sep 23 21:46:36 2013 +0200 + + Release 3.10 + + NEWS | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit ae82d7fa6250e11ed8446cf5299c47fe754f5ad3 +Author: Priit Laes +Date: Mon Sep 23 10:15:05 2013 +0300 + + Added Estonian (et) to LINGUAS + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 7bcba95c9cb88b9c87559845a2fd936f48cf18d2 +Author: Mattias Põldaru +Date: Mon Sep 23 10:14:37 2013 +0300 + + [l10n] Updated Estonian translation + + po/et.po | 275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 275 insertions(+) + +commit d1668488e5f64f69a09aa39b3d9bbb37efa30d8d +Author: Alexandre Franke +Date: Sun Sep 22 13:05:27 2013 +0200 + + Update French translation + + po/fr.po | 305 +++++++++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 217 insertions(+), 88 deletions(-) + +commit 98f5d3110ff40809c2241b38dc8b9d20fe284c7f +Author: António Lima +Date: Sun Sep 22 01:03:22 2013 +0100 + + Updated Portuguese translation + + po/LINGUAS | 1 + + po/pt.po | 343 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 344 insertions(+) + +commit ae6469b3a64256f0a4a3c164605ba0a0a0bba0cd +Author: Josep Sànchez +Date: Sat Sep 21 23:29:27 2013 +0200 + + [l10n] Update Catalan translation + + po/ca.po | 312 ++++++++++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 239 insertions(+), 73 deletions(-) + +commit e656cd2648d82ce47faea46c26d2d0815198c0cf +Author: Jiro Matsuzawa +Date: Sat Sep 21 10:39:37 2013 +0900 + + l10n: Update Japanese translation + + po/ja.po | 184 ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 106 insertions(+), 78 deletions(-) + +commit b1026871746e00cdb51c2435aaeb8360a3aae6dc +Author: Inaki Larranaga Murgoitio +Date: Fri Sep 20 21:45:04 2013 +0200 + + Added Basque language\nAdded 'eu' (Basque) to LINGUAS + + po/LINGUAS | 1 + + po/eu.po | 343 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 344 insertions(+) + +commit 148601a787ed0229bf96101b9f13e40d2dd3e823 +Author: Nilamdyuti Goswami +Date: Fri Sep 20 15:18:55 2013 +0530 + + Assamese translation updated + + po/as.po | 344 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 344 insertions(+) + +commit 94155965a36a07bd0d0345eb910ae5af42e4f5ab +Author: Nilamdyuti Goswami +Date: Fri Sep 20 15:18:26 2013 +0530 + + Added Assamese to LINGUAS + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 1dee1abb9dc9f955faf69237ab2be2e9854781ac +Author: Victor Ibragimov +Date: Thu Sep 19 11:57:24 2013 +0500 + + Tajik translation updated + + po/tg.po | 147 +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 77 insertions(+), 70 deletions(-) + +commit 5037453985950a7b510f49752d4a43dd9629fc8c +Author: Pierre-Yves Luyten +Date: Wed Sep 18 21:22:06 2013 +0200 + + configure: remove old Anjuta reference + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit 22e79731fa33a2b59a2bbaba627a7cbac3524318 +Author: Pierre-Yves Luyten +Date: Wed Sep 18 21:17:13 2013 +0200 + + Bump to 3.10 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1906fa3cdae8ff07705595cb693065117a14081f +Author: Shobha Tyagi +Date: Wed Sep 18 17:58:28 2013 +0530 + + Add instructions to rename help page + + help/C/rename.page | 13 +++---------- + 1 file changed, 3 insertions(+), 10 deletions(-) + +commit fe128e0616554318f34831ea976c9b80c105ef66 +Author: Ask H. Larsen +Date: Tue Sep 17 18:17:36 2013 +0200 + + Updated Danish translation + + po/da.po | 302 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 223 insertions(+), 79 deletions(-) + +commit 76a5bffde439ff8bd9e45dfb1d6a42783819689f +Author: Pierre-Yves Luyten +Date: Tue Sep 17 00:46:28 2013 +0200 + + Prepare for 3.9.92 + + NEWS | 28 ++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 29 insertions(+), 1 deletion(-) + +commit 265015bcf6623a3882ac395d2ceb0dacdc887966 +Author: Pierre-Yves Luyten +Date: Tue Sep 17 00:16:15 2013 +0200 + + Update to later libgd + + Not the latest however, to avoid a crash which remain to be explored. + + libgd | 2 +- + src/bjb-controller.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit dd3d2002d6d4ac62b968e23101e5334b13f90fd8 +Author: Yosef Or Boczko +Date: Mon Sep 16 23:15:01 2013 +0300 + + Updated Hebrew translation + + po/he.po | 110 +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 58 insertions(+), 52 deletions(-) + +commit 8036f20655eedc8fc4eb195cd1c5a911ccb38a97 +Author: Pierre-Yves Luyten +Date: Sun Sep 15 23:26:23 2013 +0200 + + shell / ownCloud: make opening works with distant notes + + use g file get parse name and gqueue the notes to open + to check each time a new provider is loaded. + This, untill libbiji does a better job + + src/bjb-bijiben.c | 28 +++++++++++++++++++++++----- + 1 file changed, 23 insertions(+), 5 deletions(-) + +commit 01f5310ca9eb8f5ac5d4398a39b35886572d19f4 +Author: Pierre-Yves Luyten +Date: Sun Sep 15 22:49:50 2013 +0200 + + ownCloud: Read file to open a note + + Do not keep html cache since we are editing online notes. Opening + a note should be async however. + + src/libbiji/provider/biji-own-cloud-note.c | 60 +++++++++++++++++------------- + 1 file changed, 34 insertions(+), 26 deletions(-) + +commit 104f499d0fe1044ccf8ace08e97d67845473bac5 +Author: Reinout van Schouwen +Date: Sun Sep 15 22:42:51 2013 +0200 + + Initial Dutch translation by Erwin Poeze + + po/LINGUAS | 1 + + po/nl.po | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 350 insertions(+) + +commit 2b38cf363045036c6843e9a6a3bc1d882aaad60d +Author: Pierre-Yves Luyten +Date: Sun Sep 15 02:00:05 2013 +0200 + + shell: oops, forgot the string split to retrieve basename + + src/bijiben-shell-search-provider.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5c70ba6fda15ed5c0cf585a4e97f90b04387d106 +Author: Pierre-Yves Luyten +Date: Sun Sep 15 01:37:18 2013 +0200 + + shell: start fixing ownCloud notes research in shell + + src/bijiben-shell-search-provider.c | 29 +++++++++++++++++++++-------- + 1 file changed, 21 insertions(+), 8 deletions(-) + +commit 4ba220ff4523c4d491ca9351f24e16c1804a75ea +Author: Pierre-Yves Luyten +Date: Sun Sep 15 01:32:52 2013 +0200 + + ownCloud: do not create a file each time the note is renamed + + We end up with a big mess. Rather wait some secs before + creating a new file. + + src/libbiji/provider/biji-own-cloud-note.c | 27 ++++++++++++++++++++++++--- + 1 file changed, 24 insertions(+), 3 deletions(-) + +commit e0bdc42f2e5e683b6cce96a183c693af08f60540 +Author: Pierre-Yves Luyten +Date: Sun Sep 15 01:09:55 2013 +0200 + + ownCloud: better handle note creation with a primary path + + generate a unique path at startup that will anyway be changed soon + + src/libbiji/biji-note-book.c | 15 ++++++++++++-- + src/libbiji/provider/biji-own-cloud-note.c | 33 +++++++++++++++++------------- + 2 files changed, 32 insertions(+), 16 deletions(-) + +commit afd086ab60adb2ce9aab824bc93bb358e7549e50 +Author: Pierre-Yves Luyten +Date: Sat Sep 14 23:11:26 2013 +0200 + + ownCloud: adapt to new auto-rename behaviour + + ownCloud notes should delete old files and create new ones + as their title change. TODO : destroy old thumbnails. + + src/libbiji/biji-note-obj.c | 2 +- + src/libbiji/provider/biji-own-cloud-note.c | 71 ++++++++++++++------------ + src/libbiji/provider/biji-own-cloud-provider.c | 27 ++++++++-- + src/libbiji/provider/biji-own-cloud-provider.h | 3 ++ + 4 files changed, 66 insertions(+), 37 deletions(-) + +commit 83004cdb987e55dcd16b0a4a75ef626fd714748c +Author: Pierre-Yves Luyten +Date: Sat Sep 14 23:07:15 2013 +0200 + + Rename notes as first row is edited + + See #688902 + Do not perform any wrong magic here. When the first row is edited, + change the note name. + + src/bjb-main-toolbar.c | 32 ------------ + src/libbiji/biji-note-book.c | 1 - + src/libbiji/biji-note-obj.c | 87 +++++++++------------------------ + src/libbiji/biji-note-obj.h | 8 --- + src/libbiji/editor/biji-webkit-editor.c | 30 ++++++------ + 5 files changed, 39 insertions(+), 119 deletions(-) + +commit 514b01d01106154d6a8f8cde85fb94063d6ed30e +Author: Pierre-Yves Luyten +Date: Fri Sep 13 23:17:27 2013 +0200 + + serializer: make save icon a public function + + src/libbiji/serializer/biji-lazy-serializer.c | 2 +- + src/libbiji/serializer/biji-lazy-serializer.h | 12 ++++++++++-- + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit f6732bad79a5abf727ca16456ca63a3ef50d3eea +Author: Changwoo Ryu +Date: Sun Sep 15 04:39:28 2013 +0900 + + Added Korean translation + + po/LINGUAS | 1 + + po/ko.po | 350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 351 insertions(+) + +commit 796e7bd59187d95c32e3f7772b4ff2f055bcada1 +Author: Dušan Kazik +Date: Fri Sep 13 19:51:30 2013 +0200 + + Updated slovak translation + + po/sk.po | 60 +++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 35 insertions(+), 25 deletions(-) + +commit 121a316f6c86c9de14f7b00a1df1dc2522680d65 +Author: Pierre-Yves Luyten +Date: Fri Sep 13 00:33:37 2013 +0200 + + ownCloud: allow title to change, do not loose new notes + + ownCloud notes have to specify to allow title to change anytime. + Otherwise, new own Cloud notes would never have a title - + nor a path. + + src/libbiji/provider/biji-own-cloud-note.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 236381afa098cb59bfad60940c3be61cd203c4f9 +Author: Pierre-Yves Luyten +Date: Fri Sep 13 00:00:08 2013 +0200 + + tracker: use tracker:coalesce to retrieve either BijiItems URL or URN + + Now that we use nie:url as notes key, and since we still urn:uuid for collections, + we need to use tracker power to retrieve URL or, if none, URN + + src/libbiji/biji-tracker.c | 27 +++++++++++++++++++-------- + 1 file changed, 19 insertions(+), 8 deletions(-) + +commit 1673ded28f423096bc6edc72d8e5e593f308ac6a +Author: Pierre-Yves Luyten +Date: Thu Sep 12 23:59:06 2013 +0200 + + windowBase: remove old function set_entry + + src/bjb-window-base.c | 12 ++++++------ + src/bjb-window-base.h | 4 ++-- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit daf7134c19f10c42f4615c474ed6abb995c4a347 +Author: Pierre-Yves Luyten +Date: Thu Sep 12 23:55:56 2013 +0200 + + windowBase: delete unused get_font function + + src/bjb-window-base.h | 1 - + 1 file changed, 1 deletion(-) + +commit 7e5715e3ee50577e34e432736ce3880356659241 +Author: Pierre-Yves Luyten +Date: Thu Sep 12 23:55:09 2013 +0200 + + Remove a warning + + src/bjb-window-base.c | 1 - + 1 file changed, 1 deletion(-) + +commit 4c7fc4a4e6934bbd7a30c37a5e3a8aafe5652033 +Author: Pierre-Yves Luyten +Date: Thu Sep 12 01:59:12 2013 +0200 + + New windows have notes too + + When a new winow is created just to open a note, + it first ensures which notes are to be displayed. + This is just a dirty workaround to be sure empty + windows are not displayed. + + src/bjb-bijiben.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 5f9142ff047527931d89d6bd8cd47aded63f5ad0 +Author: Pierre-Yves Luyten +Date: Thu Sep 12 01:51:07 2013 +0200 + + startup : if we open an existing note, do not serialize it + + At startup, keep the files to open in a queue. Once the book + is loaded, handle the switch to. + + src/bjb-bijiben.c | 114 +++++++++++++++++++++++++++++++++++++++++--------- + src/bjb-controller.c | 2 + + src/bjb-window-base.c | 30 +++++++++++++ + src/bjb-window-base.h | 3 ++ + 4 files changed, 129 insertions(+), 20 deletions(-) + +commit e6f92e92a0e7d59d5f9215012bbe7411a25061c3 +Author: Rūdolfs Mazurs +Date: Wed Sep 11 23:13:48 2013 +0300 + + Added Latvian translation + + po/LINGUAS | 1 + + po/lv.po | 353 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 354 insertions(+) + +commit a85167953c26024db759a68820ed7f6521b70aaa +Author: A S Alam +Date: Mon Sep 9 22:20:15 2013 -0500 + + Punjabi Translation updated by Aman + + po/pa.po | 272 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 201 insertions(+), 71 deletions(-) + +commit e9eee18da4e2d61e0aad4bb38e15bea0609e21c1 +Author: Pierre-Yves Luyten +Date: Mon Sep 9 00:02:29 2013 +0200 + + mainToolbar: make the New button align + + src/bjb-main-toolbar.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 04f76d5d1329248ba1438e0587d8c86e27c942cd +Author: Yosef Or Boczko +Date: Sun Sep 8 23:52:11 2013 +0300 + + selectionToolbar: make the cancel button as center vertically + + https://bugzilla.gnome.org/show_bug.cgi?id=707719 + + src/bjb-main-toolbar.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 72431ce0bfe313b388fa814be5a6aa4e2932cc50 +Author: Pierre-Yves Luyten +Date: Sun Sep 8 21:43:57 2013 +0200 + + shellProvider: uses fn-contains and urn + + First retrieve notes URN given fn-contains filter, + then retrieve the url + + src/bijiben-shell-search-provider.c | 35 ++++++++++++++++++++++++----------- + 1 file changed, 24 insertions(+), 11 deletions(-) + +commit 5896dce446b8a96a418af665696f1ef92ade4342 +Author: Pierre-Yves Luyten +Date: Sun Sep 8 21:41:14 2013 +0200 + + tracker: fix notes retrieve + + Retrieve url in tracker since book uses uuid to hash + and "item_class->get_uuid = biji_note_obj_get_path" + + src/libbiji/biji-tracker.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit bc2759b279ba2baa4bd117aaceb8348f2c6bbf34 +Author: Kjartan Maraas +Date: Sun Sep 8 19:22:57 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 89 ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 48 insertions(+), 41 deletions(-) + +commit 43c8c58bed9853c0150244d14fdadd829c4a7e45 +Author: Мирослав Николић +Date: Sun Sep 8 14:41:27 2013 +0200 + + Updated Serbian translation + + po/sr.po | 217 +++++++++++++++++++++++++++++++++++++-------------------- + po/sr@latin.po | 217 +++++++++++++++++++++++++++++++++++++-------------------- + 2 files changed, 282 insertions(+), 152 deletions(-) + +commit e3113935e0553634091a63d2e0ac2ba1340d78ce +Author: Andika Triwidada +Date: Sun Sep 8 16:56:12 2013 +0700 + + Updated Indonesian translation + + po/id.po | 158 +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 93 insertions(+), 65 deletions(-) + +commit 96d245e8e4851f0e1e9b6ba13356d105050d2728 +Author: Pierre-Yves Luyten +Date: Fri Sep 6 00:47:37 2013 +0200 + + controller: do not force main view if note opened + + When the book is loaded, this is usually the right time to switch to main view. But not is a note is opened. + + src/bjb-controller.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 2c5804577bb1e8838107796892da33e5a3c41f05 +Author: Dmitriy S. Seregin +Date: Sat Sep 7 23:27:57 2013 +0400 + + Updated Russian translation + + po/ru.po | 251 ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 143 insertions(+), 108 deletions(-) + +commit 047215552f4d9bd46460635a22867adde49e7dda +Author: Ville-Pekka Vainio +Date: Sat Sep 7 20:19:54 2013 +0300 + + Finnish translation update by Jiri Grönroos + + po/fi.po | 305 +++++++++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 230 insertions(+), 75 deletions(-) + +commit 994dc8f16ce727cca1f455a88ac9a91e130fb24a +Author: Marek Černocký +Date: Thu Sep 5 11:52:05 2013 +0200 + + Updated Czech translation + + po/cs.po | 60 +++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 35 insertions(+), 25 deletions(-) + +commit 87b01a190908f87a79a5b94cc40f2529058d8dea +Author: Pierre-Yves Luyten +Date: Thu Sep 5 02:03:18 2013 +0200 + + controller : sort items before refreshing the view + + src/bjb-controller.c | 38 +++++++++++++++++++++----------------- + 1 file changed, 21 insertions(+), 17 deletions(-) + +commit ec3506b9eff65e8fafc626fb8d09d0b9d3d24d41 +Author: Pierre-Yves Luyten +Date: Thu Sep 5 01:45:55 2013 +0200 + + controller: fix adding item to controller when a note appears + + Otherwise, changing view will loose the item + See 702983 + + src/bjb-controller.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 09bbfd9fdb3dcedbe1ee173e40515bddc576186d +Author: Pierre-Yves Luyten +Date: Thu Sep 5 01:33:19 2013 +0200 + + Cancel button: do not valign + + Otherwise we loose the height. + + src/bjb-main-toolbar.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9e4d17a8d2df6e3c4495592ae0f27d6e37290e99 +Author: Pierre-Yves Luyten +Date: Wed Sep 4 01:01:08 2013 +0200 + + tracker: do not corrupt plain text + + The tracker_str had a strange behaviour. If a workaround is needed, this is not the right place. + + src/libbiji/biji-tracker.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7d3ca87931ad3b4fcd9051385799c3e8b715337a +Author: Chao-Hsiung Liao +Date: Wed Sep 4 14:46:54 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 60 ++++++++++++++++++++++++++++++++++-------------------------- + po/zh_TW.po | 60 ++++++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 68 insertions(+), 52 deletions(-) + +commit f65bb4ef6920cc1f6ee7510ef3361dbb0c6f7f3a +Author: Seán de Búrca +Date: Tue Sep 3 19:36:23 2013 -0600 + + Added Irish translation + + po/LINGUAS | 1 + + po/ga.po | 354 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 355 insertions(+) + +commit 993dcfa6b42f5bdd3ad531c696bd767034b66c53 +Author: Balázs Úr +Date: Tue Sep 3 19:50:54 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 62 ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 36 insertions(+), 26 deletions(-) + +commit e3e4b1554e4b24727aa447f32f6925b8a128f32e +Author: Claudio Arseni +Date: Tue Sep 3 18:12:38 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 120 +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 47 insertions(+), 73 deletions(-) + +commit e0a349de766b2f69be005f058749dce392bb76d3 +Author: Pierre-Yves Luyten +Date: Mon Sep 2 23:41:08 2013 +0200 + + Prepare for 3.9.91 + + NEWS | 30 ++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 31 insertions(+), 1 deletion(-) + +commit e2736faab837b74948b349b2c2557becb0b8f74c +Author: Daniel Mustieles +Date: Mon Sep 2 18:03:27 2013 +0200 + + Updated Spanish translation + + po/es.po | 93 ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 50 insertions(+), 43 deletions(-) + +commit f6185f320e97fbaf1ad5acf33abe39fbfdbd51c4 +Author: Yosef Or Boczko +Date: Mon Sep 2 00:23:32 2013 +0300 + + selectionToolbar: make the buttons as center vertically + + https://bugzilla.gnome.org/show_bug.cgi?id=707219 + + src/bjb-selection-toolbar.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3b47c3e3354a5b0626c7b60024c85a325a6141cc +Author: Aurimas Černius +Date: Sun Sep 1 21:32:00 2013 +0300 + + Updated Lithuanian translation + + po/lt.po | 61 +++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 35 insertions(+), 26 deletions(-) + +commit 7d2555af56dee7d77fb876d861564a33b1f12966 +Author: Enrico Nicoletto +Date: Sat Aug 31 18:25:25 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 66 +++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 38 insertions(+), 28 deletions(-) + +commit b4555e27cd68900bf73ecb4a159c10ea5dedf4fa +Author: Piotr Drąg +Date: Sat Aug 31 22:55:07 2013 +0200 + + Updated Polish translation + + po/pl.po | 90 +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 49 insertions(+), 41 deletions(-) + +commit df4d0c8f26ecf2cfb081eaa1499fce2011f40458 +Author: Fran Diéguez +Date: Sat Aug 31 21:10:34 2013 +0200 + + Updated Galician translations + + po/gl.po | 57 +++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 33 insertions(+), 24 deletions(-) + +commit 6b6e47d24937089dbdf2dcf9bee55240ec646bce +Author: Daniel Korostil +Date: Sat Aug 31 15:06:47 2013 +0300 + + Added uk translation + + po/LINGUAS | 1 + + po/uk.po | 386 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 387 insertions(+) + +commit 63530ee4c36d87491cfbd91170731a4d9b482242 +Author: Matej Urbančič +Date: Fri Aug 30 23:01:01 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 60 ++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 36 insertions(+), 24 deletions(-) + +commit bbd4f768932648948aba77badf9b3e7ae6427182 +Author: Pierre-Yves Luyten +Date: Fri Aug 30 22:50:04 2013 +0200 + + Ship appdata information + + bijiben.appdata.xml for AppStream + + .gitignore | 1 + + data/Makefile.am | 14 ++++++++++++-- + data/bijiben.appdata.xml.in | 18 ++++++++++++++++++ + po/POTFILES.in | 1 + + 4 files changed, 32 insertions(+), 2 deletions(-) + +commit c4bd29811daa4208ea562cf8646ad123f12e5e98 +Author: Balázs Úr +Date: Fri Aug 30 19:24:19 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 72 +++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 35 insertions(+), 37 deletions(-) + +commit c0b2ea09e89303e9bc0038b6edffa16400950201 +Author: Pierre-Yves Luyten +Date: Fri Aug 30 01:52:40 2013 +0200 + + mainView : fix compilation warnings + + Remove unused overlay and cast widget + + src/bjb-main-view.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 6eda2619e8bac757410b0f396328b0e5075e8004 +Author: Pierre-Yves Luyten +Date: Fri Aug 30 01:51:51 2013 +0200 + + mainToolbar: clean compilation warnings + + Remove unused variables + + src/bjb-main-toolbar.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 6f5506c739f560eda9d5012fa6f86bce0090781f +Author: Yosef Or Boczko +Date: Fri Aug 30 02:33:08 2013 +0300 + + Remove utils/bjb-icons-colors.{c,h} + + They are not used more. + + https://bugzilla.gnome.org/show_bug.cgi?id=706943 + + src/Makefile.am | 4 +--- + src/bjb-main-toolbar.c | 1 - + src/bjb-main-view.c | 2 -- + src/utils/bjb-icons-colors.c | 15 --------------- + src/utils/bjb-icons-colors.h | 8 -------- + 5 files changed, 1 insertion(+), 29 deletions(-) + +commit cbe17030a1f547adcf2c65af03b8e81d7da964fe +Author: Yosef Or Boczko +Date: Fri Aug 30 02:24:37 2013 +0300 + + mainToolbar: Use new close button in GtkHeaderBar + + https://bugzilla.gnome.org/show_bug.cgi?id=707056 + + src/bjb-main-toolbar.c | 48 ++++++++---------------------------------------- + 1 file changed, 8 insertions(+), 40 deletions(-) + +commit b14c71a424d70a3db0393e6eec72eabf99dd5bd1 +Author: Yosef Or Boczko +Date: Fri Aug 30 02:23:04 2013 +0300 + + Fix the look of the back button + + and remove the grid is unnecessary. + + https://bugzilla.gnome.org/show_bug.cgi?id=706943 + + Signed-off-by: Yosef Or Boczko + + src/bjb-main-toolbar.c | 20 +++++--------------- + 1 file changed, 5 insertions(+), 15 deletions(-) + +commit 0135c19c16534391be3cb33c0c91a343223a3948 +Author: Matej Urbančič +Date: Thu Aug 29 18:22:04 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 65 ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 32 insertions(+), 33 deletions(-) + +commit 7c183bcb276d4af332679e5e8f41ebe60dd7f6c1 +Author: Chao-Hsiung Liao +Date: Thu Aug 29 21:41:00 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 69 ++++++++++++++++++++++++++++++------------------------------- + po/zh_TW.po | 69 ++++++++++++++++++++++++++++++------------------------------- + 2 files changed, 68 insertions(+), 70 deletions(-) + +commit b3a3b2da3edaca8314785576928c090000de77f1 +Author: Aurimas Černius +Date: Wed Aug 28 23:30:13 2013 +0300 + + Updated Lithuanian translation + + po/lt.po | 71 +++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 34 insertions(+), 37 deletions(-) + +commit 69fbc60c913ca63de53dc94d0f331ffbb33d08f7 +Author: Dušan Kazik +Date: Wed Aug 28 19:02:50 2013 +0200 + + Updated slovak translation + + po/sk.po | 182 +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 107 insertions(+), 75 deletions(-) + +commit 31782910f2c247f66187631cfb16582d618f5f07 +Author: Fran Diéguez +Date: Wed Aug 28 12:43:24 2013 +0200 + + Updated Galician translations + + po/gl.po | 55 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 27 insertions(+), 28 deletions(-) + +commit 99f7453f3e763b5d7d30f4c4247ee5953745d3ac +Author: Marek Černocký +Date: Wed Aug 28 11:22:49 2013 +0200 + + Updated Czech translation + + po/cs.po | 70 +++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 34 insertions(+), 36 deletions(-) + +commit 490877ad1372041ec4f9007dcccdb524e37c3f18 +Author: Rafael Ferreira +Date: Tue Aug 27 21:09:09 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 65 +++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 33 insertions(+), 32 deletions(-) + +commit ee9b0d2228b4dcf7a670cc93e449a0503227cf49 +Author: Pierre-Yves Luyten +Date: Wed Aug 28 01:31:55 2013 +0200 + + errorBox: do not mix translatable strings with markup + + Use gtk label magic for this. + See 706476 + + src/bjb-empty-results-box.c | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +commit 2ec401e78c7a3e912d63b629f2385454beeffded +Author: Pierre-Yves Luyten +Date: Wed Aug 28 01:10:52 2013 +0200 + + lastUpdated: fix the string + + Do not use empty space in the translatable string. + See 706476 + + src/bjb-note-view.c | 25 +++++++++++++++---------- + 1 file changed, 15 insertions(+), 10 deletions(-) + +commit 81a31037498d390149654c5211d36087f2df17fb +Author: Pierre-Yves Luyten +Date: Wed Aug 28 00:41:01 2013 +0200 + + mainToolbar: Show selection mode label as primary label + + Do not use subtitle for the selected items label + See 706912 + + src/bjb-main-toolbar.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2e3a52170b63ac7c558f314b57b3593434aa6c54 +Author: Pierre-Yves Luyten +Date: Wed Aug 28 00:34:08 2013 +0200 + + mainToolbar: remove New button padding + + But stick to size request. See 706911 + + src/bjb-main-toolbar.c | 12 +----------- + 1 file changed, 1 insertion(+), 11 deletions(-) + +commit 5f72c8366f1606800826329bd0e28a9775ecf351 +Author: Pierre-Yves Luyten +Date: Wed Aug 28 00:19:42 2013 +0200 + + icons: do not install the source svg + + Install all public hicolor apps icon but this one. Put this to no inst. + See 706910 + + data/icons/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a33a2d3e076923b6ad5f2480a8f4b8c2a4228de4 +Author: Pierre-Yves Luyten +Date: Wed Aug 28 00:18:39 2013 +0200 + + searchBar: use GTK_STYLE_CLASS_PRIMARY_TOOLBAR + + Do not directly use the string "primary-toolbar" + + src/bjb-search-toolbar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6adc921e0639b752e87bcf0a29cf6ecc5cb204b0 +Author: Pierre-Yves Luyten +Date: Tue Aug 27 23:39:33 2013 +0200 + + mainToolbar: Do not use a label for back button + + Back button just shows an icon. See 706908 + + src/bjb-main-toolbar.c | 19 +++++-------------- + 1 file changed, 5 insertions(+), 14 deletions(-) + +commit c2cc7fd4c726c91772d261c5eda16f7259dbf770 +Author: Fran Diéguez +Date: Tue Aug 27 03:32:09 2013 +0200 + + Updated Galician translations + + po/gl.po | 131 +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 73 insertions(+), 58 deletions(-) + +commit 22446a6f7ad76560361c45a295bc4c5f053e81f1 +Author: Pierre-Yves Luyten +Date: Tue Aug 27 00:04:29 2013 +0200 + + tracker: local provider use ensure_ressource + + Each provider will use the same func + + src/libbiji/biji-local-note.c | 31 ++++++++++- + src/libbiji/biji-local-note.h | 3 +- + src/libbiji/biji-note-book.c | 14 ++--- + src/libbiji/biji-note-obj.c | 13 +++-- + src/libbiji/biji-tracker.c | 82 +++++------------------------- + src/libbiji/biji-tracker.h | 2 - + src/libbiji/provider/biji-local-provider.c | 25 +++++---- + 7 files changed, 75 insertions(+), 95 deletions(-) + +commit ae960d385a02f7153d6bb568ea763c6e14c58b0b +Author: Pierre-Yves Luyten +Date: Tue Aug 27 00:02:05 2013 +0200 + + Remove duplicate files + + biji local note was included twice + + src/libbiji/provider/biji-local-note.c | 211 --------------------------------- + src/libbiji/provider/biji-local-note.h | 59 --------- + 2 files changed, 270 deletions(-) + +commit 3f889f811302290154cf255ef15b4e498bffba31 +Author: Arnel A. Borja +Date: Sun Aug 25 23:18:08 2013 +0200 + + aboutDialog: Add and update some properties + + - Use license-type property to set license + - Add credits for authors and artists + - Update copyright string to match other GNOME applications + + https://bugzilla.gnome.org/show_bug.cgi?id=706753 + + src/bjb-app-menu.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +commit daa536fd3213ee06deed3257238a3b3adf436632 +Author: Arnel A. Borja +Date: Sun Aug 25 23:13:51 2013 +0200 + + searchToolbar: Remove 'linked' style class + + This style class is unused and hides a small part of the entry. + + https://bugzilla.gnome.org/show_bug.cgi?id=706764 + + src/bjb-search-toolbar.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 05549cbf3e9ad3c7ec090dfa554c38365d4384d3 +Author: Claudio Arseni +Date: Sat Aug 24 18:49:23 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 296 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 218 insertions(+), 78 deletions(-) + +commit 42bf71b007ef2f8db693f0784bea4d491396e371 +Author: Rafael Ferreira +Date: Thu Aug 22 23:12:02 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 127 +++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 71 insertions(+), 56 deletions(-) + +commit 52e61a7996b283405579e6326311abd5447d6f4d +Author: Jeremy Bicha +Date: Thu Aug 22 21:06:28 2013 -0400 + + Update website link since the wiki page was moved + + src/bjb-app-menu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a5b94c5e3be8c419fa8caccb186d961fad6ab8be +Author: Pierre-Yves Luyten +Date: Thu Aug 22 02:06:09 2013 +0200 + + selection mode: exit selection after any callback + + src/bjb-selection-toolbar.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit a554aab27f0216b718049d37fc5713775f0cf9b7 +Author: Pierre-Yves Luyten +Date: Thu Aug 22 00:55:11 2013 +0200 + + ShellProvider: do not use g_error + + If tracker connection fail we could still workaround. At last, do not abort. + + src/bijiben-shell-search-provider.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f80c3580e6e95bb71cfdcb057b0def42477508fa +Author: Pierre-Yves Luyten +Date: Thu Aug 22 00:54:47 2013 +0200 + + all: cleanup warnings + + src/bjb-bijiben.c | 4 ++-- + src/libbiji/biji-note-book.c | 1 - + src/libbiji/biji-tracker.c | 7 +++---- + 3 files changed, 5 insertions(+), 7 deletions(-) + +commit ce59d6791f61ca9ff4dc7a445722f65c070fdfca +Author: Balázs Úr +Date: Wed Aug 21 18:30:46 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 143 ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 78 insertions(+), 65 deletions(-) + +commit 7d2cecd0204ee475e00767b97a1b1476d88b23e9 +Author: Shobha Tyagi +Date: Wed Aug 21 19:29:51 2013 +0530 + + Do not scale screenshot in user help + + help/C/introduction.page | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 2597617a8e0389e4825c8766d8fa92ea8a5ddea8 +Author: Fabio Tomat +Date: Tue Aug 20 14:13:29 2013 +0200 + + Added Friulian translation + + po/fur.po | 343 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 343 insertions(+) + +commit 662ba3da49fc99240537936df512de23dd9a0327 +Author: Fabio Tomat +Date: Tue Aug 20 14:13:25 2013 +0200 + + Added Friulian translation + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 9ad4704754d7e45aff9a6adfe2bb8adb6fbfb849 +Author: Shobha Tyagi +Date: Tue Aug 20 01:59:21 2013 +0200 + + Update the Help + + Update index page, add introduction page, add rename page and fix a typo + + .../figures/HighContrast_apps_scalable_bijiben.svg | 110 +++++++++++++++++++++ + help/C/figures/notes-scr.png | Bin 0 -> 36477 bytes + help/C/index.page | 38 ++++--- + help/C/introduction.page | 37 +++++++ + help/C/rename.page | 32 ++++++ + help/C/search.page | 2 +- + help/Makefile.am | 5 +- + 7 files changed, 207 insertions(+), 17 deletions(-) + +commit 6f6837cc287f16c57c22423dbc4771e7e5c6ab9b +Author: Piotr Drąg +Date: Mon Aug 19 01:44:48 2013 +0200 + + Updated Polish translation + + po/pl.po | 237 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 173 insertions(+), 64 deletions(-) + +commit 8b63300ecc04c5bea832b53860df0622580b536d +Author: Pierre-Yves Luyten +Date: Mon Aug 19 01:11:50 2013 +0200 + + Update NEWS + + NEWS | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit b13f40072b0541f7dbd3925822c918ef5760f717 +Author: Pierre-Yves Luyten +Date: Mon Aug 19 01:10:27 2013 +0200 + + Prepare for 3.9.90 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 04d615bd77fe3ea7e803515c5750af973eacf315 +Author: Matej Urbančič +Date: Sat Aug 17 17:05:26 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 173 +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 107 insertions(+), 66 deletions(-) + +commit 3c0d89c706597ef0ff5337a528188c9d01e51985 +Author: Chao-Hsiung Liao +Date: Fri Aug 16 12:38:03 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 129 +++++++++++++++++++++++++++++++++--------------------------- + po/zh_TW.po | 129 +++++++++++++++++++++++++++++++++--------------------------- + 2 files changed, 144 insertions(+), 114 deletions(-) + +commit 1ac562a30cc354f032b2155619cf74c96922f497 +Author: Andrea Veri +Date: Wed Aug 14 14:13:58 2013 +0200 + + must match the exact repository's name. + + bijiben.doap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 493bcc3eeb6e94be34015907537322116a0cd6db +Author: Daniel Mustieles +Date: Wed Aug 14 14:07:02 2013 +0200 + + Updated Spanish translation + + po/es.po | 132 ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 75 insertions(+), 57 deletions(-) + +commit b4c9fab777489e305d0e55e862d0b65124ed581e +Author: Kjartan Maraas +Date: Mon Aug 12 00:58:52 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 123 ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 66 insertions(+), 57 deletions(-) + +commit b1d1ee653d6387e84c58befffcc8408aecca3641 +Author: Aurimas Černius +Date: Sun Aug 11 20:06:03 2013 +0300 + + Updated Lithuanian translation + + po/lt.po | 167 ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 100 insertions(+), 67 deletions(-) + +commit c2b69c83c004e7f47461142d4bbc98de673ee57a +Author: Marek Černocký +Date: Sat Aug 10 09:57:21 2013 +0200 + + Updated Czech translation + + po/cs.po | 125 ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 67 insertions(+), 58 deletions(-) + +commit 579bc132ec8fb700145546876afc3941195ff376 +Author: Victor Ibragimov +Date: Sat Aug 10 12:04:07 2013 +0500 + + Tajik translation updated + + po/tg.po | 132 ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 75 insertions(+), 57 deletions(-) + +commit db21cb000e622edaed25e58ce1d14148fef38a58 +Author: Yaron Shahrabani +Date: Fri Aug 9 12:32:41 2013 +0300 + + Updated Hebrew translation. + + po/he.po | 131 +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 72 insertions(+), 59 deletions(-) + +commit 86f927efce1b7d101760cd45f2dc96273f9adc1b +Author: Pierre-Yves Luyten +Date: Fri Aug 9 03:01:54 2013 +0200 + + selections: Update the selection bar to newer pattern + + src/bjb-main-toolbar.c | 9 ++--- + src/bjb-main-view.c | 8 +--- + src/bjb-selection-toolbar.c | 93 ++++++++++++++------------------------------- + src/bjb-selection-toolbar.h | 4 +- + 4 files changed, 36 insertions(+), 78 deletions(-) + +commit e6137536efdf382572122e853ebbe0ce5f299b49 +Author: Pierre-Yves Luyten +Date: Thu Aug 8 22:55:21 2013 +0200 + + SettingsDialog: align the switcher + + src/bjb-settings-dialog.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5e93bf0ded2ea33044ebe6d94749729077e5fc45 +Author: Pierre-Yves Luyten +Date: Thu Aug 8 22:50:57 2013 +0200 + + settings: do not expand the color button + + src/bjb-settings-dialog.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 6d558179737de3188a71192d0b7ff464b57e3bd6 +Author: Pierre-Yves Luyten +Date: Thu Aug 8 22:36:36 2013 +0200 + + importDialog: do not user symbolic icon for local folder import + + This is not consistent. + + src/bjb-import-dialog.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fe8f65ae5e30119d040f662139debb10622df817 +Author: Pierre-Yves Luyten +Date: Thu Aug 8 21:16:41 2013 +0200 + + settings: Add the primary book choice + + User can now select any provider as the default one for new notes. + + po/POTFILES.in | 2 + + src/Makefile.am | 2 + + src/bjb-bijiben.c | 13 +- + src/bjb-editor-toolbar.c | 6 +- + src/bjb-main-toolbar.c | 10 +- + src/bjb-main-view.c | 8 +- + src/bjb-settings-dialog.c | 535 ++++++++++++++++++++++++++++++++++++++++++++++ + src/bjb-settings-dialog.h | 61 ++++++ + src/bjb-settings.c | 190 ++++++++-------- + src/bjb-settings.h | 30 ++- + 10 files changed, 733 insertions(+), 124 deletions(-) + +commit 03557160c9552a24c9fc849b79959a408ae86fa8 +Author: Pierre-Yves Luyten +Date: Sun Aug 4 01:04:25 2013 +0200 + + settings: Add a Primary Notebook + + The user can setup which notebook to use for new notes. + + data/org.gnome.bijiben.gschema.xml.in | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 442a78ce6cbf8c25a90a4ab00ef096233fd2dcb0 +Author: Pierre-Yves Luyten +Date: Thu Aug 8 21:15:48 2013 +0200 + + libbiji: add initial ProviderInfo struct + + the book can now list the different locations in human readable + format + + src/libbiji/biji-info-set.h | 2 +- + src/libbiji/biji-note-book.c | 72 ++++++++- + src/libbiji/biji-note-book.h | 11 +- + src/libbiji/biji-note-id.c | 2 + + src/libbiji/libbiji.h | 1 + + src/libbiji/provider/biji-local-note.c | 211 +++++++++++++++++++++++++ + src/libbiji/provider/biji-local-note.h | 59 +++++++ + src/libbiji/provider/biji-local-provider.c | 27 +++- + src/libbiji/provider/biji-own-cloud-note.c | 124 ++++++++++++--- + src/libbiji/provider/biji-own-cloud-provider.c | 96 +++++++++-- + src/libbiji/provider/biji-own-cloud-provider.h | 3 + + src/libbiji/provider/biji-provider.c | 7 + + src/libbiji/provider/biji-provider.h | 36 ++++- + 13 files changed, 604 insertions(+), 47 deletions(-) + +commit 56ce2f19b7945efe724cba1f679b927d719b78bb +Author: Rafael Ferreira +Date: Mon Aug 5 23:13:23 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 82 +++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 52 insertions(+), 30 deletions(-) + +commit 68357b46044217c5915badb9a7f6f1cd7b584eec +Author: tuhaihe <1132321739qq@gmail.com> +Date: Sat Aug 3 22:06:13 2013 +0800 + + Update Chinese simplified translation + + po/zh_CN.po | 260 +++++++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 196 insertions(+), 64 deletions(-) + +commit ff370aadf4c8c0a53ee37d02778deeaf288356ed +Author: Gabor Kelemen +Date: Sat Aug 3 11:16:59 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 264 +++++++++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 197 insertions(+), 67 deletions(-) + +commit b8d612f476d68343b9130d4c4883eec7777464ff +Author: Benjamin Steinwender +Date: Sat Aug 3 07:23:23 2013 +0200 + + Updated German translation + + po/de.po | 119 +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 73 insertions(+), 46 deletions(-) + +commit 4af64703245dc3fa88357a09446bfb62f87afd91 +Author: Fran Diéguez +Date: Fri Aug 2 11:32:58 2013 +0200 + + Updated Galician translations + + po/gl.po | 134 ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 80 insertions(+), 54 deletions(-) + +commit 25d90d59bb259eaa110507235a62b2ca123fa3fd +Author: Yosef Or Boczko +Date: Wed Jul 31 17:39:36 2013 +0300 + + Updated Hebrew translation. + + po/he.po | 174 ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 112 insertions(+), 62 deletions(-) + +commit e0de494a001bb62121630a7956202c35e9945481 +Author: Pierre-Yves Luyten +Date: Mon Jul 29 22:41:46 2013 +0200 Update NEWS - NEWS | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit aa897d83626fa599a58ca5bc9ba0de897cb18856 +Author: Manish Sinha +Date: Mon Jul 29 22:39:10 2013 +0200 + + install note mimetype + + See 704521 + + .gitignore | 1 + + Makefile.am | 2 +- + NEWS | 1 + + configure.ac | 12 ++++++++++++ + data/Makefile.am | 25 ++++++++++++++++++++++--- + data/bijiben.xml.in | 7 +++++++ + po/POTFILES.in | 1 + + 7 files changed, 45 insertions(+), 4 deletions(-) + +commit 4cabc724b3947efb460fcbc24650538bd98e04a4 +Author: Pierre-Yves Luyten +Date: Mon Jul 29 02:10:41 2013 +0200 + + Prepare for 3.9.5 + + NEWS | 15 +++++++++++++++ + configure.ac | 2 +- + 2 files changed, 16 insertions(+), 1 deletion(-) + +commit e528aca4b593ab555605f1962701908c878b1a4b +Author: Victor Ibragimov +Date: Mon Jul 29 12:34:57 2013 +0100 + + Tajik translation added + + po/tg.po | 334 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 334 insertions(+) + +commit 54a1d06c14230fdfca27da7216886fbe31772b91 +Author: Victor Ibragimov +Date: Mon Jul 29 12:32:47 2013 +0100 + + Tajik translation added + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 0230691ab67522067c9d6fdefafaf4ba28839859 +Author: Pierre-Yves Luyten +Date: Mon Jul 29 01:55:42 2013 +0200 + + Controller: do not crash when closing a window + + src/bjb-controller.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a1b05f67163b84351b9e2c99fadd70b6dc7c481a +Author: Chao-Hsiung Liao +Date: Thu Jul 25 19:30:26 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 251 +++++++++++++++++++++++++++++++++++++++++++++--------------- + po/zh_TW.po | 251 +++++++++++++++++++++++++++++++++++++++++++++--------------- + 2 files changed, 376 insertions(+), 126 deletions(-) + +commit 469907134d1083d25e9e186c8e0f766f6e9a8886 +Author: Daniel Mustieles +Date: Mon Jul 22 13:47:02 2013 +0200 + + Updated Spanish translation + + po/es.po | 61 ++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 34 insertions(+), 27 deletions(-) + +commit f483f807f1b2c474aec05943bb066ba820021725 +Author: Pierre-Yves Luyten +Date: Sat Jul 20 01:53:17 2013 +0200 + + webkitEditor: do not crash when immediately closing a new note + + Add a weak pointer to the note to know it was deleted. + Fix 703706 + + src/libbiji/editor/biji-webkit-editor.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit f5768f982abc6cca1f45736da80e7058c6e8e392 +Author: Kjartan Maraas +Date: Thu Jul 18 13:43:10 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit 52b5e86397bcb5a0a69f7128b6a15e99dce90c82 +Author: Manish Sinha +Date: Mon Jul 15 00:31:49 2013 +0200 + + zeitgeist: Add zeitgeist CREATE, LEAVE, MODIFY and DELETE events + + Bug #703703 + Log note creation and deletion, access and leave, and modify. + Do not log anything without title. + + src/libbiji/biji-note-obj.c | 1 + + src/libbiji/biji-zeitgeist.c | 96 ++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 93 insertions(+), 4 deletions(-) + +commit 631746e5996138886e3665cdf7831abbf84c4fdf +Author: Marek Černocký +Date: Sun Jul 14 10:41:08 2013 +0200 + + Updated Czech translation + + po/cs.po | 60 ++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 34 insertions(+), 26 deletions(-) + +commit 2bbf10de53cb63df9b5868be85f12fbd92f8a8f4 +Author: Pierre-Yves Luyten +Date: Fri Jul 12 01:19:08 2013 +0200 + + tracker: Provides a useful Oops view if tracker is not avalaible + + Tell the user something is wrong there rather crashing + more or less silently. + + src/bjb-bijiben.c | 36 +++++++++++++++------ + src/bjb-empty-results-box.c | 75 +++++++++++++++++++++++++++++++------------- + src/bjb-empty-results-box.h | 3 +- + src/bjb-main-toolbar.c | 1 + + src/bjb-window-base.c | 8 +++++ + src/bjb-window-base.h | 1 + + src/libbiji/Makefile.am | 2 ++ + src/libbiji/biji-error.c | 47 +++++++++++++++++++++++++++ + src/libbiji/biji-error.h | 48 ++++++++++++++++++++++++++++ + src/libbiji/biji-note-book.c | 61 +++++++++++++++++++++++++---------- + src/libbiji/biji-note-book.h | 3 +- + 11 files changed, 235 insertions(+), 50 deletions(-) + +commit 2392c299220a0b780ce505bbb91b93b6b64abf89 +Author: Nishio Futoshi +Date: Sat Jul 13 01:21:33 2013 +0900 + + l10n: Update Japanese translation + + po/ja.po | 112 ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 61 insertions(+), 51 deletions(-) + +commit 243cc0a3cf02bfdd4dc80efea93d39543a6af204 +Author: Pierre-Yves Luyten +Date: Thu Jul 11 00:40:46 2013 +0200 + + libbiji: clean-up old commented code + + src/libbiji/biji-note-book.c | 4 ---- + src/libbiji/biji-note-obj.c | 1 - + 2 files changed, 5 deletions(-) + +commit 78759e50cc44deb20831e4402d5f9bbbaa954517 +Author: Manish Sinha +Date: Thu Jul 11 00:36:12 2013 +0200 + + Add zeitgeist LEAVE and DELETE event + + See 703703 + + src/libbiji/biji-note-obj.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit e247e9206b2f171e29db76a2ddd6977a5d49b53c +Author: Pierre-Yves Luyten +Date: Wed Jul 10 01:07:56 2013 +0200 + + noteObj: fix a typo, do not create editor twice + + src/libbiji/biji-note-obj.c | 1 - + 1 file changed, 1 deletion(-) + +commit 6fdd58b5f4b439e86c5c3adb1668b8fcfb3a0629 +Author: Pierre-Yves Luyten +Date: Wed Jul 10 00:43:32 2013 +0200 + + zeigeist: subject list ends with NULL + + src/libbiji/biji-zeitgeist.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1118bbe9b0d807528dd69e53f70ee583b4a9b6bd +Author: Pierre-Yves Luyten +Date: Tue Jul 9 11:40:48 2013 +0200 + + Zeitgeist: noteBook owns the log + + NoteBook creates the zg log and pushes the data source. + + src/libbiji/biji-note-book.c | 9 +++++++ + src/libbiji/biji-note-book.h | 3 +++ + src/libbiji/biji-zeitgeist.c | 63 +++++++++++++++++++++++++++++--------------- + src/libbiji/biji-zeitgeist.h | 7 ++++- + 4 files changed, 60 insertions(+), 22 deletions(-) + +commit 318346c87e420201be841a8a4451aa8516617db0 +Author: Pierre-Yves Luyten +Date: Tue Jul 9 11:17:15 2013 +0200 + + Release 3.9.4 + + NEWS | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit 411f441b21d7fc4b61689c24179a07f834a6f134 +Author: Manish Sinha +Date: Tue Jul 2 19:54:03 2013 -0700 + + Fix #703501 to port to libzeitgeist2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5740d58237a19b5d3437f885dd47f0837b777e46 +Author: Kjartan Maraas +Date: Thu Jul 4 11:20:11 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 81 ++++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 48 insertions(+), 33 deletions(-) + +commit 5beea9ff56464a41f15a69558abaf984cca06274 +Author: Andika Triwidada +Date: Thu Jul 4 08:32:30 2013 +0700 + + Added Indonesian translation + + po/LINGUAS | 1 + + po/id.po | 324 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 325 insertions(+) + +commit 917756bbebf0fe2a8e9f416258e8389c66f3ba43 +Author: Marek Černocký +Date: Wed Jul 3 17:52:17 2013 +0200 + + Updated Czech translation + + po/cs.po | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +commit 26aa2841f27d36eae95125fcbd9a5abe547124a8 +Author: Daniel Mustieles +Date: Wed Jul 3 16:23:23 2013 +0200 + + Updated Spanish translation + + po/es.po | 119 ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 69 insertions(+), 50 deletions(-) + +commit 9bc804e4ded773ff9ce8419667c36b7198f67436 +Author: Yosef Or Boczko +Date: Wed Jul 3 01:34:03 2013 +0300 + + mainToolbar: Fix the look of buttons + + See #703474 + + src/bjb-main-toolbar.c | 40 ++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 38 insertions(+), 2 deletions(-) + +commit c33bd36cc6e77733409513cbdf0d08943d83cc2c +Author: Yosef Or Boczko +Date: Wed Jul 3 01:28:12 2013 +0300 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 5a2ed0cf4b933186712f6c8b82a9a0756ea46361 +Author: Yosef Or Boczko +Date: Wed Jul 3 01:27:53 2013 +0300 + + drop GtkStock + + src/bjb-import-dialog.c | 2 +- + src/bjb-note-tag-dialog.c | 2 +- + src/bjb-rename-note.c | 6 ++++-- + src/bjb-settings.c | 2 +- + 4 files changed, 7 insertions(+), 5 deletions(-) + +commit dfcf1463bbe5d6713d150dee5c39b1d65066866c +Author: Piotr Drąg +Date: Tue Jul 2 23:18:28 2013 +0200 + + Updated Polish translation + + po/pl.po | 73 +++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 35 insertions(+), 38 deletions(-) + +commit 3b082948c76c1ec097357da1c2489201a2417496 +Author: Rafael Ferreira +Date: Tue Jul 2 07:45:34 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 111 +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 57 insertions(+), 54 deletions(-) + +commit 6af0778e7e7757b1db1e921ebc0fbaf6612c874a +Author: Marek Černocký +Date: Tue Jul 2 07:39:39 2013 +0200 + + Updated Czech translation + + po/cs.po | 97 ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 48 insertions(+), 49 deletions(-) + +commit bc08780f1ff8bd4c82d306aa39200084d0cfb68d +Author: Pierre-Yves Luyten +Date: Tue Jul 2 00:22:04 2013 +0200 + + Ship a HighContrast icon + + The CreativeCommons icon might be used for accessibility. + Fixes #703404 + + data/icons/HighContrast_apps_scalable_bijiben.svg | 110 ++++++++++++++++++++++ + data/icons/Makefile.am | 1 + + 2 files changed, 111 insertions(+) + +commit 125746d56e13c67e7b94501c41e5e1e08e108546 +Author: Jeremy Bicha +Date: Mon Jul 1 12:20:24 2013 -0400 + + Add website link to about dialog + + https://bugzilla.gnome.org/show_bug.cgi?id=703401 + + src/bjb-app-menu.c | 1 + + 1 file changed, 1 insertion(+) + +commit 24c18ee97a9be662d1eca1a7ffa7f60a5e129c6f +Author: Jeremy Bicha +Date: Mon Jul 1 12:11:10 2013 -0400 + + rename About Bijiben to About Notes + + https://bugzilla.gnome.org/show_bug.cgi?id=703401 + + src/resources/app-menu.ui | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a1a612edaf683145d7bb2f1237d10477d004fa28 +Author: Yosef Or Boczko +Date: Thu Jun 27 00:56:55 2013 +0200 + + mainToolbar: replace "Note" string with the name collection + + https://bugzilla.gnome.org/attachment.cgi?id=247694 + + src/bjb-main-toolbar.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +commit 52a235f59a2a3a9f132700063a6f2d212a68acd7 +Author: Yosef Or Boczko +Date: Sun Jun 23 21:48:12 2013 +0200 + + mainToolbar: Make headerbar a titlebar and add close button + + src/bjb-main-toolbar.c | 36 ++++++++++++++++++++++++++++++++++++ + src/bjb-window-base.c | 3 +-- + 2 files changed, 37 insertions(+), 2 deletions(-) + +commit fc2e2dff63d980c5e19d1c03d90c5283c93269b8 +Author: Jiro Matsuzawa +Date: Sun Jun 23 01:06:18 2013 +0900 + + Make title bar translatable + + https://bugzilla.gnome.org/show_bug.cgi?id=702865 + + po/POTFILES.in | 1 + + src/bjb-window-base.c | 5 +++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 657563ebb2b396bed4c9b1be39d5f9c46fa3c46c +Author: Yosef Or Boczko +Date: Sun Jun 23 00:10:29 2013 +0200 + + mainToolbar: Use GtkButton subclasses instead of GdHeaderButton + + configure.ac | 1 - + src/bjb-main-toolbar.c | 52 +++++++++++++++++++++++++++++--------------------- + 2 files changed, 30 insertions(+), 23 deletions(-) + +commit f2c7322896f8eed09a043d0644bcfedeb109dd9f +Author: Yosef Or Boczko +Date: Sat Jun 22 00:05:51 2013 +0200 + + Do not use egg list box + + Port Import Dialog to GtkListBox + + .gitmodules | 3 -- + Makefile.am | 2 +- + autogen.sh | 7 ---- + configure.ac | 17 +------- + egg-list-box | 1 - + m4/ax_config_dir.m4 | 109 ------------------------------------------------ + po/POTFILES.skip | 1 - + src/bjb-import-dialog.c | 52 ++++++++++++----------- + 8 files changed, 30 insertions(+), 162 deletions(-) + +commit 173974013e288e6e27e506c1457dffffccd179da +Author: Kjartan Maraas +Date: Thu Jun 20 10:31:32 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 139 +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 69 insertions(+), 70 deletions(-) + +commit 11dd105ad55f9333ecbba98bf4c5e6dcfabca96b +Author: Pierre-Yves Luyten +Date: Wed Jun 19 22:04:56 2013 +0200 + + Help: apply the new title + + help/C/collections.page | 2 +- + help/C/formatting.page | 2 +- + help/C/index.page | 6 +++--- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit ff868004c773e388cb37d6b7ee22aa6ec35fb117 +Author: Yosef Or Boczko +Date: Wed Jun 19 21:35:51 2013 +0200 + + Set button arrow icons according to locale's text direction + + src/bjb-main-toolbar.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit a8b5aee5920574723f9232f87d56082bd2dba89c +Author: Pierre-Yves Luyten +Date: Wed Jun 19 00:48:42 2013 +0200 + + Rename simply Notes + + It is a more useful title. See 702298 + + data/bijiben.desktop.in.in | 2 +- + src/bjb-app-menu.c | 4 ++-- + src/bjb-window-base.c | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 61aeb4985407471c71522bdc841798f4550c71d7 +Author: Pierre-Yves Luyten +Date: Wed Jun 19 00:39:35 2013 +0200 + + searchToolbar: do not include gd where it's not used anymore + + Include Gtk as required + + src/bjb-search-toolbar.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f83e9837e4bf5b7654304d17c7833d3188d973f5 +Author: Pierre-Yves Luyten +Date: Wed Jun 19 00:34:20 2013 +0200 + + icons: use fantastic icons to represent Notes + + Provider useful icons - see 702298 + + data/icons/Makefile.am | 1 + + data/icons/hicolor_apps_16x16_bijiben.png | Bin 593 -> 666 bytes + data/icons/hicolor_apps_22x22_bijiben.png | Bin 852 -> 784 bytes + data/icons/hicolor_apps_24x24_bijiben.png | Bin 966 -> 770 bytes + data/icons/hicolor_apps_256x256_bijiben.png | Bin 0 -> 22451 bytes + data/icons/hicolor_apps_32x32_bijiben.png | Bin 1282 -> 1484 bytes + data/icons/hicolor_apps_48x48_bijiben.png | Bin 2325 -> 2561 bytes + data/icons/hicolor_apps_scalable_bijiben.svg | 2414 ++++++++++++++++++++++++-- + 8 files changed, 2278 insertions(+), 137 deletions(-) + +commit dc70ddd6eebdd8244c6925a3ee205e171fc59c0e +Author: Pierre-Yves Luyten +Date: Tue Jun 18 01:48:05 2013 +0200 + + Use GtkRevealer instead of GdRevealer + + configure.ac | 1 - + src/bjb-load-more-button.c | 5 ++--- + src/bjb-search-toolbar.c | 22 +++++++++++----------- + src/bjb-search-toolbar.h | 2 +- + src/bjb-window-base.c | 2 +- + 5 files changed, 15 insertions(+), 17 deletions(-) + +commit 4e2d94ddf8c048af644bac3428799220d89b314e +Author: Pierre-Yves Luyten +Date: Tue Jun 18 01:34:21 2013 +0200 + + Use GtkStack rather than GdStack + + configure.ac | 2 +- + src/bjb-window-base.c | 24 ++++++++++++------------ + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit df1d50e7b1c782d69f937c2065109297ce0f33b9 +Author: Pierre-Yves Luyten +Date: Tue Jun 18 01:18:47 2013 +0200 + + mainToolbar: inherit GtkHeaderBar, not GdMainToolbar + + configure.ac | 1 - + src/bjb-main-toolbar.c | 155 ++++++++++++++++++++++++++++++------------------- + src/bjb-main-toolbar.h | 16 +++-- + 3 files changed, 104 insertions(+), 68 deletions(-) + +commit b676e913160bde11d15dbd4284b265235491ecf8 +Author: Pierre-Yves Luyten +Date: Sun Jun 16 23:59:47 2013 +0200 + + noteView: clean up old code + + There is no more GtkAccel for note view + + src/bjb-note-view.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 051def1f9e41390070b2bbfcb6dfbba9a026512b +Author: Pierre-Yves Luyten +Date: Sun Jun 16 23:53:14 2013 +0200 + + ownCloud startup: do not mess up too much volume + + startup is still wrong, but at least it does not loop + without any result + + src/libbiji/provider/biji-own-cloud-provider.c | 15 +++++---------- + 1 file changed, 5 insertions(+), 10 deletions(-) + +commit b6cd6ddc89259f3d656f040fbc71495037c00d66 +Author: Pierre-Yves Luyten +Date: Sun Jun 16 23:16:26 2013 +0200 + + noteBook: use a localProvider to represent local notes + + Local notes should use the same principles + + src/libbiji/Makefile.am | 2 + + src/libbiji/biji-note-book.c | 234 ++++------------ + src/libbiji/biji-note-book.h | 2 +- + src/libbiji/biji-note-id.h | 1 + + src/libbiji/libbiji.h | 1 + + src/libbiji/provider/Makefile.am | 2 + + src/libbiji/provider/biji-local-provider.c | 364 +++++++++++++++++++++++++ + src/libbiji/provider/biji-local-provider.h | 66 +++++ + src/libbiji/provider/biji-own-cloud-provider.c | 81 ++---- + src/libbiji/provider/biji-provider.c | 105 ++++++- + src/libbiji/provider/biji-provider.h | 7 + + 11 files changed, 620 insertions(+), 245 deletions(-) + +commit 4e2873396991718ab2e1a4c0212114308ae9fa75 +Author: Benjamin Steinwender +Date: Sun Jun 16 19:57:12 2013 +0200 + + Updated German translation + + po/de.po | 224 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 164 insertions(+), 60 deletions(-) + +commit 5d42dc86993ae28f96db7f34e84312795f70b36a +Author: Nishio Futoshi +Date: Mon Jun 17 00:29:02 2013 +0900 + + l10n: Add Japanese translation + + po/LINGUAS | 1 + + po/ja.po | 314 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 315 insertions(+) + +commit cfba2a4413f2d8ad18873053c2d17f7628133324 +Author: Pierre-Yves Luyten +Date: Sun Jun 16 01:41:04 2013 +0200 + + Fix regressions when several windows + + The window cannot be modal, use another way + Show new window + + src/bjb-app-menu.c | 1 + + src/bjb-selection-toolbar.c | 19 +++++++++++++++++++ + src/bjb-window-base.c | 1 - + 3 files changed, 20 insertions(+), 1 deletion(-) + +commit 4fca6c71433574eb8ff8d995aa149504a1aca489 +Author: Pierre-Yves Luyten +Date: Sun Jun 16 01:25:35 2013 +0200 + + Version bump: prepare 3.9.3 + + NEWS | 13 +++++++++++++ + configure.ac | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit 96432c79fd4c45d1ff7b7aa3717a7e179f2c0fcf +Author: Pierre-Yves Luyten +Date: Sun Jun 16 01:13:01 2013 +0200 + + mainToolbar: cleanup accel, notes button and menu + + Do not create an accel group each time a note is displayed + Do not gtk widget show each menu item + Use gd main toolbar add widget for back to notes grid button + + src/bjb-main-toolbar.c | 35 ++++++++++++----------------------- + src/bjb-note-view.c | 1 - + 2 files changed, 12 insertions(+), 24 deletions(-) + +commit 20a907fd422b5e37fe05efe3b4c74f92d85a8cc9 +Author: Pierre-Yves Luyten +Date: Sat Jun 15 15:15:47 2013 +0200 + + ownCloud : Initial support + + Already allow to see ownCloud notes + But no new note, no UI to setup anything and wrong startup + + configure.ac | 1 + + src/bjb-bijiben.c | 103 ++- + src/bjb-controller.c | 12 +- + src/bjb-editor-toolbar.c | 266 ++++---- + src/bjb-main-toolbar.c | 93 +-- + src/bjb-main-view.c | 2 + + src/bjb-main-view.h | 2 + + src/bjb-note-tag-dialog.c | 10 +- + src/bjb-selection-toolbar.c | 23 +- + src/bjb-share.c | 6 +- + src/libbiji/Makefile.am | 12 +- + src/libbiji/biji-collection.c | 39 +- + src/libbiji/biji-collection.h | 2 +- + src/libbiji/biji-info-set.c | 44 ++ + src/libbiji/biji-info-set.h | 64 ++ + src/libbiji/biji-item.c | 87 ++- + src/libbiji/biji-item.h | 14 + + src/libbiji/biji-local-note.c | 212 ++++++ + src/libbiji/biji-local-note.h | 59 ++ + src/libbiji/biji-note-book.c | 244 +++++-- + src/libbiji/biji-note-book.h | 57 +- + src/libbiji/biji-note-id.c | 214 ++++--- + src/libbiji/biji-note-id.h | 46 +- + src/libbiji/biji-note-obj.c | 342 ++++------ + src/libbiji/biji-note-obj.h | 144 +++-- + src/libbiji/biji-tracker.c | 467 +++++++++++--- + src/libbiji/biji-tracker.h | 44 +- + src/libbiji/deserializer/biji-lazy-deserializer.c | 35 +- + src/libbiji/editor/biji-webkit-editor.c | 7 +- + src/libbiji/libbiji.h | 1 + + src/libbiji/provider/Makefile.am | 1 + + src/libbiji/provider/biji-own-cloud-note.c | 288 +++++++++ + src/libbiji/provider/biji-own-cloud-note.h | 61 ++ + src/libbiji/provider/biji-own-cloud-provider.c | 745 ++++++++++++++++++++++ + src/libbiji/provider/biji-own-cloud-provider.h | 61 ++ + src/libbiji/provider/biji-provider.c | 74 +++ + src/libbiji/provider/biji-provider.h | 59 ++ + src/libbiji/serializer/biji-lazy-serializer.c | 33 +- + 38 files changed, 3244 insertions(+), 730 deletions(-) + +commit 850286f7c05df6f16f9f61eaf3ab1ad262e39ca8 +Author: Christian Kirbach +Date: Sun Jun 9 18:54:38 2013 +0200 + + Added German translation + + po/LINGUAS | 1 + + po/de.po | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 239 insertions(+) + +commit 17bc96576fb7a871a1713744a03f07c2c4fbfe21 +Author: Georges Basile Stavracas Neto +Date: Sun Jun 9 03:17:54 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 105 ++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 67 insertions(+), 38 deletions(-) + +commit a89cee075a905ee1da6e1392cc4ad432a43f4539 +Author: Dimitris Spingos +Date: Wed Jun 5 08:39:13 2013 +0300 + + Updated Greek translation + + po/el.po | 208 +++++++++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 157 insertions(+), 51 deletions(-) + +commit 3762402567b6a3bb5196bdb468ddb5d035b6f961 +Author: Dušan Kazik +Date: Tue Jun 4 22:53:10 2013 +0200 + + Updated slovak translation + + po/sk.po | 206 ++++++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 146 insertions(+), 60 deletions(-) + +commit bad088b00b8841a9d58d41a566b8464850a5f732 +Author: Matej Urbančič +Date: Mon Jun 3 21:25:26 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 107 +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 67 insertions(+), 40 deletions(-) + +commit 59275c9fa7b40c52805a496230808a616cad641a +Author: Marek Černocký +Date: Mon Jun 3 10:59:26 2013 +0200 + + Updated Czech translation + + po/cs.po | 100 +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 62 insertions(+), 38 deletions(-) + +commit f94c8476b2e27ad404148e9ffaad6dd8bfab6a7f +Author: Aurimas Černius +Date: Sun Jun 2 13:55:50 2013 +0300 + + Added Lithuanian translation + + po/LINGUAS | 1 + + po/lt.po | 317 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 318 insertions(+) + +commit b5657f14959a2706f78bb667c29255aef4fa761f +Author: Kjartan Maraas +Date: Sun Jun 2 01:58:34 2013 +0200 + + Add nb + + po/LINGUAS | 1 + + po/nb.po | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 4986c0863f54de9e4b0be7a282d6399156b67e8f +Author: Kjartan Maraas +Date: Sun Jun 2 01:58:19 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 309 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 309 insertions(+) + +commit fde7f979a48d00cd31d84a27c4fa8587e6f1789a +Author: Fran Diéguez +Date: Fri May 31 01:41:03 2013 +0200 + + Updated Galician translations + + po/gl.po | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 259 insertions(+), 17 deletions(-) + +commit 3648a65b302dacebcba921d9c62475c2e1e7f42b +Author: Aurimas Černius +Date: Sun May 26 18:53:15 2013 +0300 + + Move g_variant_builder_open() inside if + + In add_single_note_meta() results are put to GVariant conditionally, + but a call to open is unconditional (while close is conditional). + Fixes Bug 701054. + + src/bijiben-shell-search-provider.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9b6c051367294e48045f4dcec892e7ff643227fe +Author: Pierre-Yves Luyten +Date: Tue May 28 00:23:42 2013 +0200 + + Release 3.9.2 + + NEWS | 17 +++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 18 insertions(+), 1 deletion(-) + +commit 5cd150dc2e5735cb6d24107b9a91bf1bcc0f3d3e +Author: Pierre-Yves Luyten +Date: Tue May 28 00:15:59 2013 +0200 + + shellProvider: give the right icon before fallback + + Do not use generic icon if we have better + + src/bijiben-shell-search-provider.c | 62 ++++++++++++++++++++++++++++--------- + 1 file changed, 48 insertions(+), 14 deletions(-) + +commit 442789c441c4439faf6dfff9f7f0ac692695cba8 +Author: Pierre-Yves Luyten +Date: Mon May 27 23:06:45 2013 +0200 + + selectionToolbar - mainView : cleanup + + src/bjb-main-toolbar.c | 2 +- + src/bjb-main-view.c | 105 -------------------------------------------- + src/bjb-main-view.h | 11 +---- + src/bjb-selection-toolbar.c | 84 ++++++++++++++++++++++++++++++----- + 4 files changed, 76 insertions(+), 126 deletions(-) + +commit 8975f7f7fce376818c4a37876d8d16b2b9046c61 +Author: Pierre-Yves Luyten +Date: Mon May 27 22:49:39 2013 +0200 + + SelectionToolbar: dont allow to organize collections + + Collections have only one level for now + + src/bjb-main-view.c | 27 +++++++++++++++++++++++++++ + src/bjb-main-view.h | 6 ++++-- + src/bjb-selection-toolbar.c | 24 ++++++++++++++++++++++-- + 3 files changed, 53 insertions(+), 4 deletions(-) + +commit 290bc432b80f038ab177f289e817a8cc3088b446 +Author: Pierre-Yves Luyten +Date: Tue May 21 22:51:51 2013 +0200 + + cleanup: bjb_window_base construction in constructed + + src/bjb-bijiben.c | 9 ++++- + src/bjb-window-base.c | 100 ++++++++++++++++++++++++-------------------------- + 2 files changed, 54 insertions(+), 55 deletions(-) + +commit 5600a0511cae90408596b6e1a7b2ad489f826eb4 +Author: Muhammet Kara +Date: Fri May 24 19:44:13 2013 +0300 + + [l10n] Added Turkish translation + + po/LINGUAS | 1 + + po/tr.po | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 340 insertions(+) + +commit dbc8bd06f073919faf186697585715649403e9c8 +Author: Daniel Mustieles +Date: Wed May 22 12:14:09 2013 +0200 + + Updated Spanish translation + + po/es.po | 69 +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 38 insertions(+), 31 deletions(-) + +commit db3acb6b625f3c68fd4d70ae1e906afb774ad933 +Author: Pierre-Yves Luyten +Date: Tue May 21 00:34:46 2013 +0200 + + controller: if no item is found, still add the note + + We now check for the first note to preppend. But if nothing + is found, add it however + + src/bjb-controller.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 6f4e22f5dc050cb4ec9bc563fbc82051935a6147 +Author: Pierre-Yves Luyten +Date: Sun May 19 02:02:42 2013 +0200 + + mainToolbar: also appear if no note if found + + Fixes a regression + + src/bjb-main-toolbar.c | 1 + + 1 file changed, 1 insertion(+) + +commit f2e91d2081853c0b0ec0df817c280849c4aaa3f3 +Author: Pierre-Yves Luyten +Date: Sat May 18 21:49:14 2013 +0200 + + Do not display all items at startup. Offer to display more. + + Controller displays 48 items at startup. Main view displays + a button to load more while there are more. + + 48 allows to have full rows for 3 or 4 items wide windows. + + po/POTFILES.in | 1 + + src/Makefile.am | 2 + + src/bjb-controller.c | 135 ++++++++++++++++------ + src/bjb-controller.h | 3 + + src/bjb-load-more-button.c | 236 +++++++++++++++++++++++++++++++++++++++ + src/bjb-load-more-button.h | 78 +++++++++++++ + src/bjb-main-toolbar.c | 41 ++++--- + src/bjb-main-view.c | 11 +- + src/libbiji/biji-marshalers.list | 1 + + 9 files changed, 458 insertions(+), 50 deletions(-) + +commit 23ab61f2bcf5fed69529ffac75423126f72359cb +Author: Pierre-Yves Luyten +Date: Sat May 18 00:50:32 2013 +0200 + + tracker: some cleanup for async functions + + libbiji user calls only one async function + libbiji deals with GAsyncResult and + triggers the expected callback. + + src/bjb-controller.c | 39 ++--- + src/bjb-note-tag-dialog.c | 11 +- + src/libbiji/biji-collection.c | 16 +- + src/libbiji/biji-note-book.c | 7 +- + src/libbiji/biji-note-obj.c | 16 +- + src/libbiji/biji-tracker.c | 343 +++++++++++++++++++++++++----------------- + src/libbiji/biji-tracker.h | 92 ++++++----- + 7 files changed, 299 insertions(+), 225 deletions(-) + +commit 994676ef5878f112eb6913a65446ab5f422debcc +Author: Pierre-Yves Luyten +Date: Thu May 16 19:23:39 2013 +0200 + + importDialog: remove warnings + + src/bjb-import-dialog.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 4153951314f355952f2f57cf2dc88d2448698b71 +Author: Daniel Mustieles +Date: Fri May 17 13:34:02 2013 +0200 + + Updated Spanish translation + + po/es.po | 54 ++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 36 insertions(+), 18 deletions(-) + +commit c495d15a6134869553804a3c423b7d99d540e02a +Author: Pierre-Yves Luyten +Date: Thu May 16 00:22:17 2013 +0200 + + importDialog: start playing with, bug 698326 + + EggListBox + Custom location + Allow selecting several imports at once + + po/POTFILES.in | 1 + + src/Makefile.am | 2 + + src/bjb-app-menu.c | 175 ++------------- + src/bjb-bijiben.c | 27 +-- + src/bjb-bijiben.h | 2 +- + src/bjb-import-dialog.c | 557 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/bjb-import-dialog.h | 65 ++++++ + 7 files changed, 647 insertions(+), 182 deletions(-) + +commit 286c01599b3ac8edc82dde5a649a7d409afb6491 +Author: Pierre-Yves Luyten +Date: Tue May 14 01:10:03 2013 +0200 + + eggListBox : import as a git submodule + + .gitmodules | 3 ++ + Makefile.am | 2 +- + autogen.sh | 7 ++++ + configure.ac | 34 ++++++++++++++-- + egg-list-box | 1 + + m4/ax_config_dir.m4 | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + po/POTFILES.skip | 1 + + 7 files changed, 152 insertions(+), 5 deletions(-) + +commit 938b490e25903354fb2837bd6797004a1aa8af88 +Author: Мирослав Николић +Date: Wed May 15 10:51:24 2013 +0200 + + Updated Serbian translation + + po/sr.po | 161 ++++++++++++++++++++++++++++++++++++++------------------- + po/sr@latin.po | 161 ++++++++++++++++++++++++++++++++++++++------------------- + 2 files changed, 214 insertions(+), 108 deletions(-) + +commit 7a7af2ba2de404c12e24429d43f55a3d98d8a6e5 +Author: Yuri Myasoedov +Date: Wed May 15 11:28:41 2013 +0400 + + Updated Russian translation + + po/LINGUAS | 1 + + po/ru.po | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 324 insertions(+) + +commit 82ee5a63331c947a9cd5ab648c8326face40c6a1 +Author: Daniel Mustieles +Date: Mon May 13 13:27:26 2013 +0200 + + Updated Spanish translation + + po/es.po | 86 +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 44 insertions(+), 42 deletions(-) + +commit 43219f59bb0d42a45a7f76c85e590e326101db64 +Author: Pierre-Yves Luyten +Date: Mon May 13 03:06:58 2013 +0200 + + collections: also refresh icons when notes are removed + + Use the same principle as for adding items to collections + + src/bjb-note-tag-dialog.c | 14 ++++---------- + src/libbiji/biji-collection.c | 2 +- + src/libbiji/biji-item.c | 4 ++-- + src/libbiji/biji-item.h | 4 ++-- + src/libbiji/biji-note-obj.c | 10 +++++++--- + src/libbiji/biji-tracker.c | 14 +++++++++++--- + src/libbiji/biji-tracker.h | 9 ++++++--- + 7 files changed, 33 insertions(+), 24 deletions(-) + +commit b0a4ce83e2a19f95078cdc02656e25b8ef8b25b1 +Author: Pierre-Yves Luyten +Date: Mon May 13 02:11:48 2013 +0200 + + Collections: fix icon refresh + + Always use an URN to add a collection on user response. + The biji_item_add_collection is responsible for + refreshing the collection itself afterward + + src/bjb-note-tag-dialog.c | 36 +++++++++++++++-------- + src/libbiji/biji-collection.c | 7 ++++- + src/libbiji/biji-collection.h | 4 +++ + src/libbiji/biji-item.c | 4 +-- + src/libbiji/biji-item.h | 12 ++++++-- + src/libbiji/biji-note-obj.c | 26 ++++++++++------ + src/libbiji/biji-tracker.c | 23 +++++++++------ + src/libbiji/biji-tracker.h | 14 +++++++-- + src/libbiji/deserializer/biji-lazy-deserializer.c | 2 +- + 9 files changed, 88 insertions(+), 40 deletions(-) + +commit 928f19d665d5336121f8b66b0aa30358ae0dc6cc +Author: Marek Černocký +Date: Sun May 12 22:28:04 2013 +0200 + + Updated Czech translation + + po/cs.po | 108 ++++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 72 insertions(+), 36 deletions(-) + +commit 731ed01e56a9777f66aa8b13ac82a993b560eb01 +Author: Rafael Ferreira +Date: Sun May 12 04:25:04 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 113 +++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 82 insertions(+), 31 deletions(-) + +commit d99e91218a8d7bed050c09b05c22b527e3a6f76a +Author: Pierre-Yves Luyten +Date: Sun May 12 02:29:54 2013 +0200 + + tracker: clean up obsolete workaround with urn + + old request was returning both file:///path/to/file and /path/to/file + new one has only one format, either file path or collection urn + + src/libbiji/biji-tracker.c | 23 +++-------------------- + 1 file changed, 3 insertions(+), 20 deletions(-) + +commit 19512c4719388210fc5bcf7306a65b7658412b03 +Author: Pierre-Yves Luyten +Date: Sun May 12 02:23:06 2013 +0200 + + tracker : do not use fts, rather fn:contains + + we look for any number of input characters + and do not exclude anything from search + + See #699656 + + src/libbiji/biji-tracker.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit eff2d7c74843468ab213ccadcff4477e1e6a61c5 +Author: Pierre-Yves Luyten +Date: Sat May 11 02:03:25 2013 +0200 + + mTime: back to gint64 + + Collections now store their LastModified field and return gint64. + The associated retrieves provide both collection label, urn and mtime. + Notes use the same format and so does the controller. + + src/bjb-controller.c | 20 +++++++-------- + src/bjb-note-tag-dialog.c | 54 +++++++++++++++++++++++++--------------- + src/libbiji/biji-collection.c | 43 ++++++++++++++++++++++++++------ + src/libbiji/biji-collection.h | 5 +++- + src/libbiji/biji-item.c | 8 +++--- + src/libbiji/biji-item.h | 4 +-- + src/libbiji/biji-note-book.c | 6 ++++- + src/libbiji/biji-note-id.c | 7 ++++++ + src/libbiji/biji-note-id.h | 2 ++ + src/libbiji/biji-note-obj.c | 11 +++++---- + src/libbiji/biji-tracker.c | 57 ++++++++++++++++++++++++++++++++++--------- + src/libbiji/biji-tracker.h | 17 +++++++++++++ + 12 files changed, 173 insertions(+), 61 deletions(-) + +commit 02521db181b389e2d4f1b216c5a0ae4bbf1f6301 +Author: Yaron Shahrabani +Date: Fri May 10 15:15:01 2013 +0300 + + Added Hebrew to the list of languages + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 7785d48890d98db9a42b61fa8c5255a9267a1790 +Author: Pierre-Yves Luyten +Date: Thu May 9 22:55:06 2013 +0200 + + windowBase: set modal to fix dialogs + + See bug 699776 + + src/bjb-window-base.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 2fae5abf8dc0d563d1ca8ebeb20fce81152da4b7 +Author: Yaron Shahrabani +Date: Tue May 7 11:18:49 2013 +0300 + + Updated Hebrew translation. + + po/he.po | 296 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 296 insertions(+) + +commit 042f1eb946dba3ed350e9089bbf9ef66c9c94c33 +Author: Pierre-Yves Luyten +Date: Mon May 6 23:09:12 2013 +0200 + + item: use const attribute for uuid and title + + path getter is no more allocated to remain the same than title + + src/bjb-bijiben.c | 3 +- + src/bjb-controller.c | 18 +-- + src/bjb-rename-note.c | 2 +- + src/bjb-rename-note.h | 5 +- + src/bjb-share.c | 5 +- + src/libbiji/biji-collection.c | 6 +- + src/libbiji/biji-item.c | 4 +- + src/libbiji/biji-item.h | 19 ++- + src/libbiji/biji-note-book.c | 20 +-- + src/libbiji/biji-note-book.h | 4 +- + src/libbiji/biji-note-id.c | 23 ++- + src/libbiji/biji-note-id.h | 6 +- + src/libbiji/biji-note-obj.c | 175 +++++++++++----------- + src/libbiji/biji-string.c | 6 +- + src/libbiji/biji-string.h | 4 +- + src/libbiji/biji-tracker.c | 28 ++-- + src/libbiji/biji-tracker.h | 4 +- + src/libbiji/biji-zeitgeist.c | 6 +- + src/libbiji/deserializer/biji-lazy-deserializer.c | 5 +- + src/libbiji/serializer/biji-lazy-serializer.c | 7 +- + 20 files changed, 171 insertions(+), 179 deletions(-) + +commit 156dfabb985f2488812fc1c89d95071dc48eb9b3 +Author: Pierre-Yves Luyten +Date: Mon May 6 01:30:09 2013 +0200 + + Collections: update icons when items change + + Look for both trashed and changing items (only color...) + + src/libbiji/biji-collection.c | 55 +++++++++++++++++++++++++++++++++++++------ + 1 file changed, 48 insertions(+), 7 deletions(-) + +commit f477332199ffc9e478c71727b1fa8c1da314c4d5 +Author: Pierre-Yves Luyten +Date: Mon May 6 00:45:52 2013 +0200 + + collections: do not use borders for collected items icons + + setup a dedicated get_pristine method for items + + src/libbiji/biji-collection.c | 3 ++- + src/libbiji/biji-item.c | 6 ++++++ + src/libbiji/biji-item.h | 4 ++++ + src/libbiji/biji-note-obj.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 55 insertions(+), 1 deletion(-) + +commit e1ce9419a8f8ae6ccbde6d433a9ea407f8508d32 +Author: Pierre-Yves Luyten +Date: Mon May 6 00:35:25 2013 +0200 + + noteObj: get icons when requested + + src/libbiji/biji-note-obj.c | 45 +++++++++++++++++---------------------------- + 1 file changed, 17 insertions(+), 28 deletions(-) + +commit fb0b7c21a051f423c7db037f983cdeb47dd2abda +Author: Pierre-Yves Luyten +Date: Sun May 5 23:20:56 2013 +0200 + + collections: very rough implementation of icons + + Have a book property, store icon and emblem + When items are added (at construct), update the icon + and emit a signal + + src/libbiji/biji-collection.c | 130 +++++++++++++++++++++++++++++++++++++----- + src/libbiji/biji-collection.h | 2 +- + src/libbiji/biji-note-book.c | 8 ++- + src/libbiji/biji-tracker.c | 2 +- + 4 files changed, 124 insertions(+), 18 deletions(-) + +commit 854321b460bdb67576ed6739abec0fbf2600db9c +Author: Pierre-Yves Luyten +Date: Sun May 5 22:53:40 2013 +0200 + + icon-amended: use a generic flag for items icon changed + + src/bjb-controller.c | 2 +- + src/libbiji/biji-note-book.c | 2 +- + src/libbiji/biji-note-book.h | 10 +++++----- + 3 files changed, 7 insertions(+), 7 deletions(-) + +commit f936e8972a86c984eda22271100638a871895c4d +Author: Pierre-Yves Luyten +Date: Sun May 5 22:46:07 2013 +0200 + + selectionToolbar: be more consistent + + Use list-add-symbolic for collection. Use right box for this. + Use left box for trash. + + src/bjb-selection-toolbar.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit 72a7821061014ce2c6c4d848f492aad254f393b6 +Author: Pierre-Yves Luyten +Date: Sun May 5 22:18:49 2013 +0200 + + Controller: take care to display notes after collection + + This was broken was amending the store rather than building from scratch. + + src/bjb-controller.c | 125 ++++++++++++++++++++++++++++++++------------------- + 1 file changed, 78 insertions(+), 47 deletions(-) + +commit a9bffcb7306f3a4a73bcd31fc074ebd9dba5fc2a +Author: Pierre-Yves Luyten +Date: Sun May 5 00:10:30 2013 +0200 + + searchToolbar: use GdTaggedEntry + + Also fix 699654 + + configure.ac | 1 + + src/bjb-search-toolbar.c | 112 ++++++++++++++++++++--------------------------- + 2 files changed, 49 insertions(+), 64 deletions(-) + +commit 5b8b9f310ab27444156c4b0a43c5f08323890932 +Author: Matej Urbančič +Date: Sat May 4 21:32:03 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 181 +++++++++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 130 insertions(+), 51 deletions(-) + +commit c57220554abf25fb9accf8379bcab7a2e6334293 +Author: Ekaterina Gerasimova +Date: Sat May 4 13:07:48 2013 +0100 + + UI: change tag to collection, bug 699662 + + Change tag to collection in the tag dialog and the toolbar menu. + + src/bjb-main-toolbar.c | 2 +- + src/bjb-note-tag-dialog.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit aef0b1cfb050b7d666a4e4be3bd39dfd152ea26e +Author: Ekaterina Gerasimova +Date: Sat May 4 13:05:18 2013 +0100 + + help: Tidy up help pages + + Tidy up tags, styles, wording and indentation. + + help/C/collections.page | 12 ++++++------ + help/C/colors.page | 2 ++ + help/C/create.page | 8 +++++--- + help/C/delete.page | 6 ++++-- + help/C/formatting.page | 16 +++++++++------- + help/C/search.page | 2 +- + help/C/share.page | 2 +- + 7 files changed, 28 insertions(+), 20 deletions(-) + +commit a48fb1aaca438b7519810c842558fd27e65574d1 +Author: Ekaterina Gerasimova +Date: Sat May 4 12:48:23 2013 +0100 + + help: Review note colors page + + Update the colors page and add it to the index. + + help/C/bjb-colours.page | 21 --------------------- + help/C/colors.page | 41 +++++++++++++++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 42 insertions(+), 22 deletions(-) + +commit 5f9d6a59f847c788429840d2de90327b28102e05 +Author: Ekaterina Gerasimova +Date: Sat May 4 12:37:29 2013 +0100 + + help: Review the delete page + + Make page consistent with other help. + + help/C/bjb-delete.page | 25 ------------------------- + help/C/delete.page | 41 +++++++++++++++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 42 insertions(+), 26 deletions(-) + +commit dd1f7bdeb1cde6f3456957ffefcf059ba1cdbd99 +Author: Ekaterina Gerasimova +Date: Sat May 4 12:29:47 2013 +0100 + + help: Review collections (tags) page + + Add revision tag. Update the page to talk about collections instead of + tags. + + help/C/bjb-tags.page | 22 ---------------------- + help/C/collections.page | 45 +++++++++++++++++++++++++++++++++++++++++++++ + help/C/search.page | 3 ++- + help/Makefile.am | 2 +- + 4 files changed, 48 insertions(+), 24 deletions(-) + +commit 92e4f15e481e980d9b344454e2cc6279402cb29c +Author: Ekaterina Gerasimova +Date: Sat May 4 12:02:13 2013 +0100 + + help: Review share page + + Update style to match other GNOME help. + + help/C/bjb-share.page | 19 ------------------- + help/C/share.page | 29 +++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 30 insertions(+), 20 deletions(-) + +commit 9e561bc007d6bdc059ad70041e25ac79c2a6872a +Author: Ekaterina Gerasimova +Date: Sat May 4 11:44:29 2013 +0100 + + help: Review formatting (editor) page + + Use capitalisation that is consistent with other help. + + help/C/bjb-editor.page | 23 ----------------------- + help/C/formatting.page | 40 ++++++++++++++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 41 insertions(+), 24 deletions(-) + +commit 55201725de9768d3fc6231b2e3ea0ef9fca7cda4 +Author: Ekaterina Gerasimova +Date: Sat May 4 10:43:26 2013 +0100 + + help: review search (find) page + + Rename page to "search". Add revision information. Update description. + Update capitalisation to match other help. + + help/C/bjb-find.page | 26 -------------------------- + help/C/search.page | 44 ++++++++++++++++++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 45 insertions(+), 27 deletions(-) + +commit 29516e17b1c7a0286578533183400c3e4a5fe071 +Author: Ekaterina Gerasimova +Date: Sat May 4 10:32:21 2013 +0100 + + help: Review create (note) page + + Add revision information. Expand on the description. Change style of the + title to use singular. Use capitalisation that is consistent with other + help. Use preferred indentation. + + help/C/bjb-create.page | 24 ------------------------ + help/C/create.page | 43 +++++++++++++++++++++++++++++++++++++++++++ + help/Makefile.am | 2 +- + 3 files changed, 44 insertions(+), 25 deletions(-) + +commit 3b0148422fe26ab7391723194dde75070022d9b0 +Author: Pierre-Yves Luyten +Date: Sat May 4 10:04:06 2013 +0200 + + mainToolbar: fix regression for selection mode + + The toolbar was never switching to selection mode. + Use a switch to easier code. Fix 699526 + + src/bjb-main-toolbar.c | 46 +++++++++++++++++++++++++++++++--------------- + 1 file changed, 31 insertions(+), 15 deletions(-) + +commit 11d8b262856c980fc2587b8395d27f9ed5d5a60e +Author: Pierre-Yves Luyten +Date: Sat May 4 01:05:56 2013 +0200 + + bjbController: keep connected. + + Otherwise coming back from note view to main view will make + some items invisible. + + src/bjb-controller.c | 4 +++- + src/bjb-controller.h | 2 -- + src/bjb-main-view.c | 2 -- + 3 files changed, 3 insertions(+), 5 deletions(-) + +commit 683cabef85d5b3c49890c5b15587c992b8990785 +Author: Pierre-Yves Luyten +Date: Sat May 4 00:21:51 2013 +0200 + + controller: Handle adding collections + + src/bjb-controller.c | 55 +++++++++++++++++++--------------------------------- + 1 file changed, 20 insertions(+), 35 deletions(-) + +commit 981075ed334bf31c8ad64ba2a6a1f2431c0ad913 +Author: Pierre-Yves Luyten +Date: Sat May 4 00:08:16 2013 +0200 + + noteTagDialog: creating a collection pushes to note book + + The tracker update retrieves the URN + for the sake of note book. + + src/bjb-bijiben.c | 2 +- + src/bjb-note-tag-dialog.c | 10 +++- + src/libbiji/biji-note-book.c | 38 ++++++++++--- + src/libbiji/biji-note-book.h | 2 +- + src/libbiji/biji-tracker.c | 133 ++++++++++++++++++++++++++++++++++++++----- + src/libbiji/biji-tracker.h | 2 +- + 6 files changed, 157 insertions(+), 30 deletions(-) + +commit e3913d884113c750a9133e02488a8ef31ebccfd8 +Author: Daniel Mustieles +Date: Fri May 3 17:58:48 2013 +0200 + + Updated Spanish translation + + po/es.po | 134 ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 98 insertions(+), 36 deletions(-) + +commit bed58ca4a1254490c59e129062230b579683b05c +Author: Ekaterina Gerasimova +Date: Thu May 2 22:21:49 2013 +0100 + + UI: Add tooltips to buttons, bug 699528 + + src/bjb-editor-toolbar.c | 3 ++- + src/bjb-main-toolbar.c | 13 ++++++++++++- + src/bjb-selection-toolbar.c | 5 ++++- + 3 files changed, 18 insertions(+), 3 deletions(-) + +commit 79037df0a4c1144e0ab59bdbaadd31b6edd9ceb2 +Author: Ekaterina Gerasimova +Date: Thu May 2 22:55:06 2013 +0100 + + UI: Improve dialog titles, bug 699534 + + src/bjb-color-button.c | 2 +- + src/bjb-note-tag-dialog.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 81ea66c9f395a39e8db54f41c94db351fbb37ca7 +Author: Pierre-Yves Luyten +Date: Fri May 3 00:36:34 2013 +0200 + + Collections : start fixing deletion + + Now we have the urn, we should allow to delete a collection + + src/libbiji/biji-collection.c | 23 ++++++++++++++++++++++- + src/libbiji/biji-note-book.c | 11 +++++++++++ + 2 files changed, 33 insertions(+), 1 deletion(-) + +commit b5066fe307f4d2f085fda24c66835d2b9a7832d9 +Author: Pierre-Yves Luyten +Date: Fri May 3 00:23:49 2013 +0200 + + bijiCollection: have a urn as key + + Tracker always needs these urn and the book, too + Collections are unique while title, not. + + src/bjb-controller.c | 31 +++++++++++------------ + src/bjb-controller.h | 4 +-- + src/bjb-main-toolbar.c | 15 ++++++------ + src/bjb-main-view.c | 22 +++++++++-------- + src/libbiji/biji-collection.c | 50 +++++++++++++++++++++++++------------ + src/libbiji/biji-collection.h | 2 +- + src/libbiji/biji-note-book.c | 57 ++++++++++++++++++++++++++++--------------- + 7 files changed, 108 insertions(+), 73 deletions(-) + +commit 294d9990cd527768a3748324aa6747aa7fdf2a66 +Author: Pierre-Yves Luyten +Date: Thu May 2 23:19:41 2013 +0200 + + biji_get_all_collections_ : use urn as key. title as value + + the returned HashTable was quite confusing. + + src/bjb-note-tag-dialog.c | 2 +- + src/libbiji/biji-tracker.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit feacf6949ba9b66881ee8c3e1606aeb8870640d1 +Author: Ekaterina Gerasimova +Date: Thu May 2 23:11:53 2013 +0100 + + help: Update index.page + + Add alt text for the screenshot. Update description. Update section + title capitalisation. + + help/C/index.page | 25 ++++++++++++++++--------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +commit 22a3ea886eb7d1a11783af63caa7e8aefdb9eb8e +Author: Pierre-Yves Luyten +Date: Thu May 2 22:38:16 2013 +0200 + + mainToolbar::searchButton - Set toggle when populating + + Otherwise the state will be inconsistent. Fixes #699505 + + src/bjb-main-toolbar.c | 4 ++++ + src/bjb-search-toolbar.c | 6 ++++++ + src/bjb-search-toolbar.h | 2 ++ + src/bjb-window-base.c | 11 +++++++++++ + src/bjb-window-base.h | 2 ++ + 5 files changed, 25 insertions(+) + +commit dd64c5d21c9d7ec4303c39585cbf36e0a9dfe294 +Author: Rafael Ferreira +Date: Wed May 1 15:20:25 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 76 +++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 44 insertions(+), 32 deletions(-) + +commit 8023ae40e8ee570f1badc0ca7732517f89c0ac28 +Author: A S Alam +Date: Wed May 1 20:28:48 2013 +0530 + + update Punjabi Translation + + po/pa.po | 99 +++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 63 insertions(+), 36 deletions(-) + +commit 382c5549352f8959efa6c6e976be130bac3f985d +Author: Pierre-Yves Luyten +Date: Wed May 1 09:47:56 2013 +0200 + + noteBook : note_new : cleanup code + + One func is enough and no need for DEFAULT_TITLE on libbiji side + Also fix 699247 + + src/bjb-editor-toolbar.c | 2 +- + src/bjb-main-toolbar.c | 2 +- + src/bjb-main-view.c | 2 +- + src/libbiji/biji-note-book.c | 47 +++++++++++++------------------------------- + src/libbiji/biji-note-book.h | 7 +------ + 5 files changed, 18 insertions(+), 42 deletions(-) + +commit 5be22af4f4085eefb0d7bae1e3e0f7d233e291c6 +Author: Pierre-Yves Luyten +Date: Wed May 1 08:21:24 2013 +0200 + + mainToolbar : make share button insensitive if note has no text + + Fixes 699348 + + src/bjb-main-toolbar.c | 29 ++++++++++++++++++++++++++--- + 1 file changed, 26 insertions(+), 3 deletions(-) + +commit 8cafc8b6065fe3f351ec944fcc1a63c026456cba +Author: Pierre-Yves Luyten +Date: Wed May 1 02:43:33 2013 +0200 + + emptyResuls: draw an empty state if no note found + + src/bjb-controller.c | 18 +++++++++++++----- + src/bjb-main-toolbar.c | 3 ++- + src/bjb-window-base.c | 14 +++++++------- + 3 files changed, 22 insertions(+), 13 deletions(-) + +commit cd3a26813437139d5310141f1afce82344294d71 +Author: Pierre-Yves Luyten +Date: Tue Apr 30 23:52:35 2013 +0200 + + SearchToolbar: now owned by window + + mainview : clean up some code, window and window-controller have more control. + main view is now rather a simple widget. + + src/bjb-main-toolbar.c | 14 ++--- + src/bjb-main-view.c | 29 +---------- + src/bjb-main-view.h | 4 -- + src/bjb-search-toolbar.c | 12 +---- + src/bjb-window-base.c | 132 ++++++++++++++++++++++++++++++----------------- + src/bjb-window-base.h | 5 ++ + 6 files changed, 97 insertions(+), 99 deletions(-) -commit 6f2127565950c2db3e157355439813252a65eab5 -Author: Pierre-Yves Luyten -Date: Mon Aug 19 01:21:14 2013 +0200 +commit ea606a6bd3b6c7054b5eea769d6949a3fd9284d3 +Author: Ekaterina Gerasimova +Date: Tue Apr 30 19:27:36 2013 +0100 - Prepare for 3.8.4 + UI: Rename "List" to "Numbered List", bug 699347 - configure.ac | 2 +- + src/bjb-main-toolbar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit a45f70df2b8611bf82d5119cd1b90da2683a5d0d -Author: Matej Urbančič -Date: Sat Aug 17 15:11:52 2013 +0200 +commit bafdab87c69514bf0fae4be495ca70a3fe93e5e0 +Author: Pierre-Yves Luyten +Date: Tue Apr 30 22:11:11 2013 +0200 - Updated Slovenian translation + Bump to 3.9.1 - po/sl.po | 78 +++++++++++++++++++++++++++++++++------------------------------- - 1 file changed, 40 insertions(+), 38 deletions(-) + NEWS | 26 ++++++++++++++++++++++++++ + TODO | 1 - + configure.ac | 3 ++- + 3 files changed, 28 insertions(+), 2 deletions(-) -commit d7b6fdbda05e2558208230ae7125c400b24620b7 -Author: Daniel Mustieles -Date: Mon Jul 8 13:35:41 2013 +0200 +commit 341f7cc6ccda74473d373fe6b5dd00b868341251 +Author: Pierre-Yves Luyten +Date: Tue Apr 30 22:08:06 2013 +0200 - Updated Spanish translation + update to latest libgd - po/es.po | 78 ++++++++++++++++++++++++++++++++-------------------------------- - 1 file changed, 39 insertions(+), 39 deletions(-) + libgd | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d6a11ed5ce47b182e68ee29c1aba51400a0db3b8 -Author: Yosef Or Boczko -Date: Thu Jul 4 00:17:36 2013 +0300 +commit 9ce0474fb418fe66b229e8f428ad16591ce84e85 +Author: Marek Černocký +Date: Tue Apr 30 14:58:44 2013 +0200 - Set button arrow icons according to locale's text direction + Updated Czech translation - src/bjb-note-view.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + po/cs.po | 49 +++++++++++++++++++++++++------------------------ + 1 file changed, 25 insertions(+), 24 deletions(-) -commit 7c92c2653cd50a1fe1df6707ca6961fb455c38a5 -Author: Piotr Drąg -Date: Tue Jul 2 23:18:28 2013 +0200 +commit 534b25b0b488aa19c32ebffaa60b7d52862b79aa +Author: Ekaterina Gerasimova +Date: Mon Apr 29 21:44:11 2013 +0100 - Updated Polish translation + UI: Rename "External Notes" to "Import Notes" + + Bug 699263 - po/pl.po | 73 +++++++++++++++++++++++++++++++--------------------------------- - 1 file changed, 35 insertions(+), 38 deletions(-) + src/bjb-app-menu.c | 4 ++-- + src/resources/app-menu.ui | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) -commit d3bc125479b7b9ffe62ac2e31ebf866a65f31a42 -Author: Rafael Ferreira -Date: Tue Jul 2 07:40:45 2013 -0300 +commit df1917568be41785ef3deef2368ff9045e5db564 +Merge: abb8f85 1f1a30d +Author: Pierre-Yves Luyten +Date: Mon Apr 29 01:13:21 2013 +0200 - Updated Brazilian Portuguese translation + Merge branch 'collection' - po/pt_BR.po | 84 +++++++++++++++++++++++++++++++------------------------------ - 1 file changed, 43 insertions(+), 41 deletions(-) +commit 1f1a30d48e9af03d6674d63d7576cc43687285de +Author: Pierre-Yves Luyten +Date: Mon Apr 29 00:15:04 2013 +0200 -commit f3a2f34676ac383d4fb0b034cddd12f5ff614324 -Author: Marek Černocký -Date: Tue Jul 2 07:39:16 2013 +0200 + Collections: initial view implementation + + The collection can be seen and user can simply go back - Updated Czech translation + src/bjb-controller.c | 62 +++++++++++++++++++++++++++++++++- + src/bjb-controller.h | 4 +++ + src/bjb-main-toolbar.c | 84 +++++++++++++++++++++++++++++++++------------- + src/bjb-main-view.c | 8 ++++- + src/libbiji/biji-tracker.c | 70 +++++++++++++++++++++++++++++++++++++- + src/libbiji/biji-tracker.h | 8 +++++ + 6 files changed, 209 insertions(+), 27 deletions(-) + +commit 68f6e61b7b50450427286794a3212ce5bb71858c +Author: Pierre-Yves Luyten +Date: Mon Apr 29 00:11:22 2013 +0200 - po/cs.po | 74 +++++++++++++++++++++++++++++++--------------------------------- - 1 file changed, 36 insertions(+), 38 deletions(-) + mainView : add spinner view accessor -commit 2165e749296a5a5d6bbafd75e4d372ead13addd1 + src/bjb-window-base.c | 6 ++++++ + src/bjb-window-base.h | 1 + + 2 files changed, 7 insertions(+) + +commit 9cb72eae1aae98c2974f7a3880c5fd05fdf6569d Author: Pierre-Yves Luyten -Date: Tue Jul 2 00:22:04 2013 +0200 +Date: Mon Apr 29 00:04:53 2013 +0200 - Ship a HighContrast icon + noteBook: do not replace existing collections - The CreativeCommons icon might be used for accessibility. - Fixes #703404 + Only create really new ones - data/icons/HighContrast_apps_scalable_bijiben.svg | 110 ++++++++++++++++++++++ - data/icons/Makefile.am | 1 + - 2 files changed, 111 insertions(+) + src/libbiji/biji-note-book.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) -commit 6d0431db2c776d61091c630f0e3e07518b03361e -Author: Jeremy Bicha -Date: Mon Jul 1 12:20:24 2013 -0400 +commit f4dd06a6338da0337b5951fc3b6835f143616708 +Author: Pierre-Yves Luyten +Date: Sun Apr 28 20:59:41 2013 +0200 - Add website link to about dialog + bijiItem: handle more collection stuff at item level - https://bugzilla.gnome.org/show_bug.cgi?id=703401 + Notes and Collections should share some accessors. + This partly fixes the note/tag dialog and prepare for next. - src/bjb-app-menu.c | 1 + - 1 file changed, 1 insertion(+) + src/bjb-note-tag-dialog.c | 17 ++++++++--------- + src/libbiji/biji-collection.c | 16 ++++++++++++++++ + src/libbiji/biji-item.c | 10 ++++++++++ + src/libbiji/biji-item.h | 20 ++++++++++++++++++++ + src/libbiji/biji-note-obj.c | 16 +++++++++++----- + src/libbiji/biji-note-obj.h | 4 ---- + src/libbiji/deserializer/biji-lazy-deserializer.c | 2 +- + 7 files changed, 66 insertions(+), 19 deletions(-) -commit f996fa5cffe5cf18ed9941bd9f8f1e94027fd035 -Author: Jeremy Bicha -Date: Mon Jul 1 12:11:10 2013 -0400 +commit d92a10415d3d30fb5b0b20b2ca27bbb0044afdf8 +Author: Pierre-Yves Luyten +Date: Sun Apr 28 06:48:45 2013 +0200 - rename About Bijiben to About Notes + noteBook: start fixing the changed signal - https://bugzilla.gnome.org/show_bug.cgi?id=703401 + The signal now sends an item, receiver should check for type - src/resources/app-menu.ui | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/bjb-controller.c | 44 ++++++++++++++++++++++++-------------------- + src/libbiji/biji-note-book.c | 14 +++++++------- + src/libbiji/biji-note-book.h | 6 +++--- + 3 files changed, 34 insertions(+), 30 deletions(-) -commit 3614633059679af31348e376344db1d1c12ea71c -Author: Jiro Matsuzawa -Date: Sun Jun 23 01:06:18 2013 +0900 +commit 0a84c72a5f25bd3cf55faef236133207b045d12f +Author: Pierre-Yves Luyten +Date: Sun Apr 28 05:56:41 2013 +0200 - Make title bar translatable + Items: start fixing func accessing both notes & collections - https://bugzilla.gnome.org/show_bug.cgi?id=702865 + Now that collections appear on the main view, + the callbacks should work with both cases - po/POTFILES.in | 1 + - src/bjb-window-base.c | 5 +++-- - 2 files changed, 4 insertions(+), 2 deletions(-) + src/bjb-bijiben.c | 2 +- + src/bjb-main-toolbar.c | 4 +-- + src/bjb-main-view.c | 77 ++++++++++++++++++++++++------------------- + src/bjb-main-view.h | 8 ++--- + src/bjb-note-tag-dialog.c | 46 +++++++++++++------------- + src/bjb-selection-toolbar.c | 8 ++--- + src/libbiji/biji-collection.c | 24 +++++++++++--- + src/libbiji/biji-item.c | 12 +++++-- + src/libbiji/biji-item.h | 19 +++-------- + src/libbiji/biji-note-book.c | 17 ++++------ + src/libbiji/biji-note-book.h | 4 +-- + src/libbiji/biji-note-obj.c | 27 ++++++++------- + src/libbiji/biji-note-obj.h | 4 --- + src/libbiji/biji-tracker.c | 8 ++--- + 14 files changed, 138 insertions(+), 122 deletions(-) -commit 30e02287cbc8900001ad0181a4ff052eafaa77c9 +commit f154ac73f581cc091c45f0412c80ee0941a28358 Author: Pierre-Yves Luyten -Date: Wed Jun 19 23:35:22 2013 +0200 +Date: Sat Apr 27 20:44:43 2013 +0200 - Release 3.8.3 + Collections: Read-Only first draft + + Collections are now created and returned per NoteBook. + Visible on retrieve, but cannot be activated - NEWS | 5 +++++ - configure.ac | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) + src/bjb-controller.c | 26 +++- + src/libbiji/Makefile.am | 2 + + src/libbiji/biji-collection.c | 291 ++++++++++++++++++++++++++++++++++++++++++ + src/libbiji/biji-collection.h | 59 +++++++++ + src/libbiji/biji-item.c | 13 +- + src/libbiji/biji-item.h | 30 ++++- + src/libbiji/biji-note-book.c | 68 ++++++---- + src/libbiji/biji-note-book.h | 2 - + src/libbiji/biji-note-obj.c | 40 +++--- + src/libbiji/libbiji.h | 3 +- + 10 files changed, 474 insertions(+), 60 deletions(-) + +commit abb8f850022c708e03ac36765b61b6bfae58507e +Author: Antonio Fernandes C. Neto +Date: Sat Apr 27 17:56:30 2013 -0300 -commit 774e7ce0ecf77bab0f9ea5fe4324370a584e8699 + Updated Brazilian Portuguese translation + + po/pt_BR.po | 92 ++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 54 insertions(+), 38 deletions(-) + +commit 70aa5040086110d54de9cfcae591d94cd35d5d01 Author: Pierre-Yves Luyten -Date: Wed Jun 19 23:00:13 2013 +0200 +Date: Sat Apr 27 11:42:00 2013 +0200 - Help: apply the new title + Controller : clarify some func accessing Items rather Notes + + Currently, every item is a note. But controller will need + at some point to carefully check type. - help/C/bjb-editor.page | 2 +- - help/C/bjb-tags.page | 2 +- - help/C/index.page | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) + src/bjb-controller.c | 116 +++++++++++++++++++++++-------------------------- + src/bjb-controller.h | 2 +- + src/bjb-main-toolbar.c | 2 +- + 3 files changed, 57 insertions(+), 63 deletions(-) -commit 7947033552935d847c927920ad4ecfab1b6b7db8 +commit d65f81e44236984d81ce6152ac64a090bae57db8 Author: Pierre-Yves Luyten -Date: Wed Jun 19 00:48:42 2013 +0200 +Date: Sat Apr 27 09:32:30 2013 +0200 - Rename simply Notes + noteObj: use biji_item_get_* accessors - It is a more useful title. See 702298 + Title, Uuid, Icon, Emblem, Mtime, + are provided via parent bijiItem rather directly. - data/bijiben.desktop.in.in | 2 +- - src/bjb-app-menu.c | 4 ++-- - src/bjb-window-base.c | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) + src/bjb-bijiben.c | 4 +- + src/bjb-controller.c | 79 ++++++++++++----------- + src/bjb-main-toolbar.c | 12 ++-- + src/bjb-share.c | 2 +- + src/libbiji/biji-item.c | 34 ++++++++-- + src/libbiji/biji-item.h | 26 +++++++- + src/libbiji/biji-note-book.c | 11 ++-- + src/libbiji/biji-note-book.h | 6 +- + src/libbiji/biji-note-obj.c | 53 ++++++++++----- + src/libbiji/biji-note-obj.h | 12 ---- + src/libbiji/biji-tracker.c | 9 +-- + src/libbiji/biji-zeitgeist.c | 6 +- + src/libbiji/deserializer/biji-lazy-deserializer.c | 4 +- + src/libbiji/serializer/biji-lazy-serializer.c | 9 ++- + 14 files changed, 170 insertions(+), 97 deletions(-) -commit 3f4929279e2f8859473922393243ba13c9b52632 +commit 69904b8e22cb7c0d9b1b74fc582d3eeaf03aea5b Author: Pierre-Yves Luyten -Date: Wed Jun 19 00:34:20 2013 +0200 +Date: Sat Apr 27 01:09:52 2013 +0200 - icons: use fantastic icons to represent Notes + noteObj : derive from a new BijiItem - Provider useful icons - see 702298 + Rather than a GObject, NoteObj is an Item + Item will be able to allow generic getters - data/icons/Makefile.am | 1 + - data/icons/hicolor_apps_16x16_bijiben.png | Bin 593 -> 666 bytes - data/icons/hicolor_apps_22x22_bijiben.png | Bin 852 -> 784 bytes - data/icons/hicolor_apps_24x24_bijiben.png | Bin 966 -> 770 bytes - data/icons/hicolor_apps_256x256_bijiben.png | Bin 0 -> 22451 bytes - data/icons/hicolor_apps_32x32_bijiben.png | Bin 1282 -> 1484 bytes - data/icons/hicolor_apps_48x48_bijiben.png | Bin 2325 -> 2561 bytes - data/icons/hicolor_apps_scalable_bijiben.svg | 2414 ++++++++++++++++++++++++-- - 8 files changed, 2278 insertions(+), 137 deletions(-) + src/libbiji/Makefile.am | 2 ++ + src/libbiji/biji-item.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ + src/libbiji/biji-item.h | 59 ++++++++++++++++++++++++++++++++++++++ + src/libbiji/biji-note-obj.c | 2 +- + src/libbiji/biji-note-obj.h | 6 ++-- + src/libbiji/libbiji.h | 1 + + 6 files changed, 136 insertions(+), 3 deletions(-) -commit 28691032c4d27d5e75f89d83534c765c843bac17 -Author: Christian Kirbach -Date: Sun Jun 9 18:57:12 2013 +0200 +commit 5b6c01656d972bbdb39217eca5029c43664b87bf +Author: Pierre-Yves Luyten +Date: Fri Apr 26 23:42:57 2013 +0200 - Added German translation + Bijiben: do not show_all twice - po/LINGUAS | 1 + - po/de.po | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 239 insertions(+) + src/bjb-bijiben.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) -commit 08a33d6d43c3d1586bb83d4f1e75483ffaedbcf0 -Author: Piotr Drąg -Date: Fri May 24 19:42:58 2013 +0200 +commit 7519111fecb1c8a5acf41db40a200437e0aec3e5 +Author: Pierre-Yves Luyten +Date: Fri Apr 26 22:32:01 2013 +0200 - Updated POTFILES.skip + controller: Do not try to display all notes at startup + + Wait for the book to be loaded. Rather, + new window do request all notes to be displayed directly. - po/POTFILES.skip | 1 + - 1 file changed, 1 insertion(+) + src/bjb-app-menu.c | 6 ++++++ + src/bjb-controller.c | 2 +- + 2 files changed, 7 insertions(+), 1 deletion(-) -commit 3aa7614e5b8d30e311382ac06c6cae6476893970 -Author: Muhammet Kara -Date: Fri May 24 19:49:54 2013 +0300 +commit c45bc5a66d55d8253b693aa7bf8730f9d818e4f1 +Author: Pierre-Yves Luyten +Date: Thu Apr 25 23:01:08 2013 +0200 - [l10n] Added Turkish translation + mainToolbar: fix warning for AccelGroup - po/LINGUAS | 1 + - po/tr.po | 339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 340 insertions(+) + src/bjb-main-toolbar.c | 3 +++ + 1 file changed, 3 insertions(+) -commit 39aa963aa4e169cbedb81d0bbc97dfabf2f283fd -Author: Yuri Myasoedov -Date: Wed May 15 11:28:41 2013 +0400 +commit 9c4d21d62740e0ad89478718a787c547689edbec +Author: Marek Černocký +Date: Thu Apr 25 21:24:47 2013 +0200 - Updated Russian translation + Updated Czech translation - po/LINGUAS | 1 + - po/ru.po | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 324 insertions(+) + po/cs.po | 91 +++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 53 insertions(+), 38 deletions(-) + +commit 227b56f001085871ed7c5da3b5751c5b57e5ba9e +Author: Daniel Mustieles +Date: Thu Apr 25 18:03:11 2013 +0200 + + Updated Spanish translation + + po/es.po | 91 +++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 53 insertions(+), 38 deletions(-) + +commit eeb03809d1b409f3e8bff162ea31c91b71836844 +Author: Pierre-Yves Luyten +Date: Thu Apr 25 01:20:25 2013 +0200 + + emptyResultsBox: inform the user when no book is loaded + + this is the most trivial case. + Book is loaded but no note appear. + Trashed notes or searching in vain are not yet supported. + + src/bjb-controller.c | 13 ++++++++++++- + src/bjb-window-base.c | 22 ++++++++++++++++++++++ + src/bjb-window-base.h | 2 ++ + 3 files changed, 36 insertions(+), 1 deletion(-) -commit bf6c897441ed9888efaaa6ee34a009f30c7c13d8 +commit e9e47b8e268db4a220f6ff384c50ccadf18431bf Author: Pierre-Yves Luyten -Date: Sat May 11 10:44:13 2013 +0200 +Date: Thu Apr 25 01:19:28 2013 +0200 - Bump to 3.8.2 + emptyResultsBox : unused types + + the user might have no note, + but we can also inform about no result - NEWS | 8 ++++++++ - configure.ac | 2 +- - 2 files changed, 9 insertions(+), 1 deletion(-) + src/bjb-empty-results-box.c | 53 +++++++++++++++++++++++++++++++++++++-------- + src/bjb-empty-results-box.h | 9 ++++++++ + 2 files changed, 53 insertions(+), 9 deletions(-) -commit ee55fb9029f2da5aedd302bdef1ae731e4fb2121 -Author: A S Alam -Date: Wed May 1 20:26:27 2013 +0530 +commit 06523e97b0c91428c833b96089df398baf36e888 +Author: Pierre-Yves Luyten +Date: Thu Apr 25 01:15:09 2013 +0200 - add Punjabi Translation in branch and update LINGUAS file + mainView: fix typo on_view_selection_changed - po/LINGUAS | 1 + - po/pa.po | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 245 insertions(+) + src/bjb-main-view.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 4350b399f11f1977a821122c2fd890b8ac4ab515 +commit 5f712ae52bcb1e91d7bd494bd6d89a9e445e5087 Author: Pierre-Yves Luyten -Date: Sun Apr 14 22:02:39 2013 +0200 +Date: Thu Apr 25 00:11:17 2013 +0200 - Fixes commit 10b444980f0447358371fdcc2707f310a351d020 + Controller: fix list-view note-color-changed - Forgot one file to stick to GdMainColumns enum + When a note color is changed, in case of list view + emblem should be updated - src/bjb-main-view.c | 2 +- + src/bjb-controller.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5ec5bb0c42a81424c07b781f1a3294d5dbb0e52a +Author: Pierre-Yves Luyten +Date: Thu Apr 25 00:03:21 2013 +0200 + + mainToolbar : fix regressions on selection mode + + Things have changed and toolbar was ignoring selection changing + + src/bjb-main-toolbar.c | 36 +++++++++++++++++++++++++++++++++--- + src/bjb-main-view.c | 42 +++++++++++------------------------------- + 2 files changed, 44 insertions(+), 34 deletions(-) + +commit 4342a8bb8357b3362277a2857748c687f4b3675c +Author: Pierre-Yves Luyten +Date: Wed Apr 24 22:10:35 2013 +0200 + + BjbController: own a reference to window, not to GdMainView + + The controller has to work with the BjbWindowBase + + src/bjb-controller.c | 78 +++++++++++++++++++++++++++------------------------ + src/bjb-controller.h | 13 ++++----- + src/bjb-main-view.c | 7 ++--- + src/bjb-window-base.c | 3 +- + src/bjb-window-base.h | 1 - + 5 files changed, 53 insertions(+), 49 deletions(-) + +commit 5b7ddfc25f23ef47383089b15e389ef0abf48bed +Author: Piotr Drąg +Date: Wed Apr 24 17:50:59 2013 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit d29b607ee8dfe6313d549e0eec7692f37499e804 +Author: Pierre-Yves Luyten +Date: Wed Apr 24 00:21:17 2013 +0200 + + Update to latest libgd + + libgd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit fba19cda32e016a7b97e3b7ee59a70ad0e1d7784 +commit 6a721f0249ee5886bd34457a365a78c2f96bd808 Author: Pierre-Yves Luyten -Date: Sun Apr 14 21:47:05 2013 +0200 +Date: Wed Apr 24 00:19:37 2013 +0200 - Use Gd enum for model columns. Mtime: use glong. + noteView : use mainToolbar rather own toolbar - Fixes #697921 + Change MainToolbar implementation to handle also note view. + This is a bit more simple - src/bjb-controller.c | 25 ++++++++++++------------- - src/bjb-controller.h | 15 --------------- - 2 files changed, 12 insertions(+), 28 deletions(-) + src/bjb-app-menu.c | 2 +- + src/bjb-bijiben.c | 2 +- + src/bjb-main-toolbar.c | 490 +++++++++++++++++++++++++++++++++++++++---------- + src/bjb-main-toolbar.h | 10 +- + src/bjb-main-view.c | 102 ++++++++-- + src/bjb-main-view.h | 13 ++ + src/bjb-note-view.c | 298 +----------------------------- + src/bjb-window-base.c | 81 +++++--- + src/bjb-window-base.h | 10 +- + 9 files changed, 568 insertions(+), 440 deletions(-) -commit bc596cb80effb04c967121f877e3b7e95e7d8998 -Author: tuhaihe <1132321739qq@gmail.com> -Date: Sat Apr 20 04:42:20 2013 +0800 +commit f93eac8813587bd26563c725b2bf3639a5b75fda +Author: Pierre-Yves Luyten +Date: Sun Apr 21 02:20:13 2013 +0200 - Update Simplified Chinese translation + emptyResultsBox : initial unused draft + + the box shows no note exists. It migth be improved to also + handle the case of search. Or a different box might be used. - po/zh_CN.po | 83 ++++++++++++++++++++++++++++++++++++++++++------------------- - 1 file changed, 57 insertions(+), 26 deletions(-) + data/icons/hicolor_actions_scalable_note.svg | 132 +++++++------------------- + src/Makefile.am | 2 + + src/bjb-empty-results-box.c | 136 +++++++++++++++++++++++++++ + src/bjb-empty-results-box.h | 76 +++++++++++++++ + 4 files changed, 249 insertions(+), 97 deletions(-) -commit 3ab91bbb819ae7aa6f8b0f35a1bf9a12e220644c +commit 65bb2b53f4aeb1450945a269977af023d8f98117 Author: Pierre-Yves Luyten -Date: Thu Apr 18 10:47:20 2013 +0200 +Date: Sat Apr 20 11:35:43 2013 +0200 - Bump to 3.8.1 + noteObj: make icon squared. + + see #698369 - NEWS | 10 ++++++++++ - configure.ac | 2 +- - 2 files changed, 11 insertions(+), 1 deletion(-) + src/libbiji/biji-note-obj.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit c3fa33ff95592d20ae741d094c8d7de0024e1198 +commit 95d6dfae9ae3e601edf43019437bbd116974a13b Author: Pierre-Yves Luyten -Date: Thu Apr 18 10:46:37 2013 +0200 +Date: Sat Apr 20 11:31:59 2013 +0200 - LINGUAS: remove non existent pa.po + mainToolbar: show a search button + + See #698245 : make search feature visible. - po/LINGUAS | 1 - - 1 file changed, 1 deletion(-) + src/bjb-main-toolbar.c | 60 ++++++++++++++++++++++++++++++++++++++++++++---- + src/bjb-main-toolbar.h | 2 ++ + src/bjb-main-view.c | 16 +++++++++++++ + src/bjb-main-view.h | 5 ++++ + src/bjb-search-toolbar.c | 40 +++++++++++++++++++++++++++++++- + src/bjb-search-toolbar.h | 4 ++++ + 6 files changed, 122 insertions(+), 5 deletions(-) + +commit 9c3d0b963b91daba594776fa123c891b20ce67b7 +Author: tuhaihe <1132321739qq@gmail.com> +Date: Sat Apr 20 04:41:49 2013 +0800 -commit c0787525cc2992ab7e647ad293655f99e5edb711 + Update Simplified Chinese translation + + po/zh_CN.po | 87 +++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 59 insertions(+), 28 deletions(-) + +commit 3eaa64f396ead1803397a840cffeb5f5fd160470 Author: Ekaterina Gerasimova Date: Wed Apr 17 23:30:42 2013 +0100 @@ -289,11 +3593,36 @@ help/C/bjb-editor.page | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) -commit 43018bd95432e4f20c4bb31928eee1d0343ab313 +commit 2fbb6444d269ea7bde76ec24f561c31dab788ff0 +Author: Pierre-Yves Luyten +Date: Thu Apr 18 09:53:38 2013 +0200 + + noteObj: emblem: remove shadow. + + Make the icon squared and draw a simple border + rather than a shadow for list view. See #698244 + + src/libbiji/biji-note-obj.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +commit 72bdb3c45b4ee2e9ddc9cab56bb9ec4437241870 Author: Pierre-Yves Luyten -Date: Thu Apr 18 00:03:11 2013 +0200 +Date: Thu Apr 18 09:28:51 2013 +0200 - help: change License to CC + windowBase: make default width a bit smaller + + see #698243 + + src/bjb-window-base.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4fde7488741ea637dc58ea7887a90838853f946c +Author: Pierre-Yves Luyten +Date: Wed Apr 17 23:56:51 2013 +0200 + + Help: move license to CC + + More precisely Creative Commons Attribution-ShareAlike 3.0 Unported License help/C/bjb-colours.page | 2 +- help/C/bjb-create.page | 2 +- @@ -307,9 +3636,93 @@ help/Makefile.am | 3 ++- 10 files changed, 18 insertions(+), 11 deletions(-) -commit c86988dc15e468c161a5846b2fc9799de18632c6 +commit 140c7643fbaaabdbcaaa1c49f3d1259fbf82193b +Author: Pierre-Yves Luyten +Date: Wed Apr 17 22:50:58 2013 +0200 + + css: margin-left = 0 + + Also, don't use units when css values = 0 + + data/Default.css | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 5539068bfbcc861d87d735da27885b51bf11597e +Author: Pierre-Yves Luyten +Date: Mon Apr 15 10:48:56 2013 +0200 + + NoteView: wrap words if needed. + + Fixes #698027 + + data/Default.css | 1 + + 1 file changed, 1 insertion(+) + +commit da54718daf28fdc6a71f9451947795cd577631db +Author: Pierre-Yves Luyten +Date: Mon Apr 15 10:03:16 2013 +0200 + + NoteView: little more padding on borders + + See 698026 + + data/Default.css | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit 74a255e8541a2f83aea5a4c2729fc667c1f00974 +Author: Pierre-Yves Luyten +Date: Mon Apr 15 09:46:03 2013 +0200 + + Rough spinner + + Main view shows a spinner before loading all notes. Spinner is not that cool but should not appear for a long time. + + src/bjb-app-menu.c | 5 ++++- + src/bjb-window-base.c | 8 ++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +commit d0b641c5f586c0e754e7fd4912503d6a73c7c1e8 +Author: Pierre-Yves Luyten +Date: Mon Apr 15 09:39:28 2013 +0200 + + Add emblems for list view + + These emblems only show notes color. Better than generic icon + and might be useful for later on + + src/bjb-controller.c | 2 +- + src/libbiji/biji-note-obj.c | 66 ++++++++++++++++++++++++++++++++++++++++---- + src/libbiji/biji-note-obj.h | 2 ++ + src/utils/bjb-icons-colors.c | 42 ---------------------------- + src/utils/bjb-icons-colors.h | 2 -- + 5 files changed, 64 insertions(+), 50 deletions(-) + +commit 58240885a40e790891e04e94d9a337cf47fefdec +Author: Pierre-Yves Luyten +Date: Sun Apr 14 22:02:39 2013 +0200 + + Fixes commit 10b444980f0447358371fdcc2707f310a351d020 + + Forgot one file to stick to GdMainColumns enum + + src/bjb-main-view.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 10b444980f0447358371fdcc2707f310a351d020 +Author: Pierre-Yves Luyten +Date: Sun Apr 14 21:47:05 2013 +0200 + + Use Gd enum for model columns. Mtime: use glong. + + Fixes #697921 + + src/bjb-controller.c | 25 ++++++++++++------------- + src/bjb-controller.h | 15 --------------- + 2 files changed, 12 insertions(+), 28 deletions(-) + +commit 91cc8eed66d742bceb6c5cd0d21c2192cdd9ad9a Author: Dimitris Spingos -Date: Tue Apr 9 10:55:40 2013 +0300 +Date: Tue Apr 9 10:50:30 2013 +0300 Added Greek translation @@ -317,17 +3730,17 @@ po/el.po | 241 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 242 insertions(+) -commit 809645a41cb0a1f9f5dbfef2b8c8187637f3159d +commit 5b05b29816376f606bacb95d21d5528e02a72c57 Author: Dušan Kazik -Date: Thu Apr 4 00:22:04 2013 +0200 +Date: Thu Apr 4 00:21:14 2013 +0200 Added slovak translation - po/LINGUAS | 2 + + po/LINGUAS | 1 + po/sk.po | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 260 insertions(+) + 2 files changed, 259 insertions(+) -commit de864fcbc48fef48339279e7d996bbb5956fdef8 +commit 37242254ee6c07358188e7c2e6814360075614d7 Author: Ville-Pekka Vainio Date: Sun Mar 31 20:19:57 2013 +0300 @@ -336,7 +3749,7 @@ po/LINGUAS | 1 + 1 file changed, 1 insertion(+) -commit 21206bb8ad635da2ce5b685c9e4c8f24b21ad37d +commit c6f61f3eacfa33a64164b1e9724da53e791b8201 Author: Ville-Pekka Vainio Date: Sun Mar 31 20:19:02 2013 +0300 @@ -345,37 +3758,26 @@ po/fi.po | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) -commit f966a7f9ac56b82e31d064a04a5c426bd307c53a -Author: Pierre-Yves Luyten -Date: Tue Mar 26 01:45:39 2013 +0100 - - Release 3.8.0 - - NEWS | 6 ++++++ - configure.ac | 2 +- - 2 files changed, 7 insertions(+), 1 deletion(-) - -commit a2527641ec3014bffcda43ba3f89100ea3cd9099 -Author: Chao-Hsiung Liao -Date: Fri Mar 22 21:18:27 2013 +0800 +commit 6d0a8fec2a6c2c2e60b9e824b3440c478353a1cc +Author: A S Alam +Date: Fri Mar 29 07:49:58 2013 +0530 - Updated Traditional Chinese translation(Hong Kong and Taiwan) + Adding Punjabi Translation and update LINGUAS file - po/LINGUAS | 2 + - po/zh_HK.po | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - po/zh_TW.po | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 474 insertions(+) + po/LINGUAS | 1 + + po/pa.po | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 241 insertions(+) -commit 33adb3799239478d1c56ddd6cab654293be59e89 +commit c1b15b8b1b8c0617f40b07c99b88ab97bd7fde44 Author: Balázs Úr -Date: Mon Mar 25 23:53:54 2013 +0100 +Date: Mon Mar 25 23:52:16 2013 +0100 Added hu entry po/LINGUAS | 1 + 1 file changed, 1 insertion(+) -commit 292bae57b9753662fc8637e7922822a640091a94 +commit 591001eea93d293bc097a3f26c8e8db845d91654 Author: Balázs Úr Date: Mon Mar 25 23:51:43 2013 +0100 @@ -384,6 +3786,17 @@ po/hu.po | 242 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) +commit 8170e062fad4a869733eb684950a49aed28d4fe4 +Author: Chao-Hsiung Liao +Date: Fri Mar 22 21:18:27 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/LINGUAS | 2 + + po/zh_HK.po | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + po/zh_TW.po | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 474 insertions(+) + commit b3ff28992942ab2b1ecd6c85311fc03d24b1e108 Author: Pierre-Yves Luyten Date: Mon Mar 18 00:07:32 2013 +0100 diff -Nru bijiben-3.8.4/compile bijiben-3.10.2/compile --- bijiben-3.8.4/compile 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/compile 2013-11-11 20:55:22.000000000 +0000 @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff -Nru bijiben-3.8.4/config.guess bijiben-3.10.2/config.guess --- bijiben-3.8.4/config.guess 2013-06-15 15:35:04.000000000 +0000 +++ bijiben-3.10.2/config.guess 2013-11-11 20:55:22.000000000 +0000 @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-04-24' +timestamp='2013-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -132,6 +132,27 @@ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -853,21 +874,21 @@ exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -880,67 +901,54 @@ EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif - #else - #include - #ifdef __UCLIBC__ - LIBC=uclibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build @@ -959,59 +967,63 @@ #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - LIBC=gnu - test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1244,19 +1256,21 @@ exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) diff -Nru bijiben-3.8.4/config.h.in bijiben-3.10.2/config.h.in --- bijiben-3.8.4/config.h.in 2013-08-18 23:30:06.000000000 +0000 +++ bijiben-3.10.2/config.h.in 2013-11-11 20:55:32.000000000 +0000 @@ -61,19 +61,10 @@ #undef LIBGD_MAIN_LIST_VIEW /* Description */ -#undef LIBGD_MAIN_TOOLBAR - -/* Description */ #undef LIBGD_MAIN_VIEW /* Description */ -#undef LIBGD_REVEALER - -/* Description */ -#undef LIBGD_STACK - -/* Description */ -#undef LIBGD__HEADER_BUTTON +#undef LIBGD_TAGGED_ENTRY /* Description */ #undef LIBGD__VIEW_COMMON diff -Nru bijiben-3.8.4/configure bijiben-3.10.2/configure --- bijiben-3.8.4/configure 2013-08-18 23:29:47.000000000 +0000 +++ bijiben-3.10.2/configure 2013-11-11 20:55:21.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bijiben 3.8.4. +# Generated by GNU Autoconf 2.69 for bijiben 3.10.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='bijiben' PACKAGE_TARNAME='bijiben' -PACKAGE_VERSION='3.8.4' -PACKAGE_STRING='bijiben 3.8.4' +PACKAGE_VERSION='3.10.2' +PACKAGE_STRING='bijiben 3.10.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -705,6 +705,9 @@ build_cpu build LIBTOOL +ENABLE_UPDATE_MIMEDB_FALSE +ENABLE_UPDATE_MIMEDB_TRUE +UPDATE_MIME_DATABASE ALL_LINGUAS INTLTOOL_PERL MSGMERGE @@ -855,6 +858,7 @@ enable_dependency_tracking with_help_dir enable_nls +enable_update_mimedb enable_shared enable_static with_pic @@ -1422,7 +1426,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bijiben 3.8.4 to adapt to many kinds of systems. +\`configure' configures bijiben 3.10.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1492,7 +1496,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bijiben 3.8.4:";; + short | recursive ) echo "Configuration of bijiben 3.10.2:";; esac cat <<\_ACEOF @@ -1510,6 +1514,8 @@ --disable-dependency-tracking speeds up one-time build --disable-nls do not use Native Language Support + --disable-update-mimedb disable the update-mime-database after install + [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -1618,7 +1624,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bijiben configure 3.8.4 +bijiben configure 3.10.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1983,7 +1989,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bijiben $as_me 3.8.4, which was +It was created by bijiben $as_me 3.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2373,7 +2379,7 @@ -am__api_version='1.13' +am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -2850,7 +2856,7 @@ # Define the identity of the package. PACKAGE=bijiben - VERSION=3.8.4 + VERSION=3.10.2 cat >>confdefs.h <<_ACEOF @@ -2901,6 +2907,47 @@ +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi ac_config_headers="$ac_config_headers config.h" @@ -3715,6 +3762,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -4061,7 +4167,8 @@ .PHONY: pot pot: $(_HELP_POTFILE) $(_HELP_POTFILE): $(_HELP_C_FILES) $(_HELP_C_EXTRA) $(_HELP_C_MEDIA) - $(AM_V_GEN)$(ITSTOOL) -o "$@" $(_HELP_C_FILES) + $(AM_V_GEN)if test -d "C"; then d=; else d="$(srcdir)/"; fi; \ + $(ITSTOOL) -o "$@" $(foreach f,$(_HELP_C_FILES),"$${d}$(f)") .PHONY: repo repo: $(_HELP_POTFILE) @@ -5896,6 +6003,68 @@ +# +# Check if we should update the mime database +# + +# Extract the first word of "update-mime-database", so it can be a program name with args. +set dummy update-mime-database; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_UPDATE_MIME_DATABASE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $UPDATE_MIME_DATABASE in + [\\/]* | ?:[\\/]*) + ac_cv_path_UPDATE_MIME_DATABASE="$UPDATE_MIME_DATABASE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_UPDATE_MIME_DATABASE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_UPDATE_MIME_DATABASE" && ac_cv_path_UPDATE_MIME_DATABASE="no" + ;; +esac +fi +UPDATE_MIME_DATABASE=$ac_cv_path_UPDATE_MIME_DATABASE +if test -n "$UPDATE_MIME_DATABASE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UPDATE_MIME_DATABASE" >&5 +$as_echo "$UPDATE_MIME_DATABASE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +# Check whether --enable-update-mimedb was given. +if test "${enable_update_mimedb+set}" = set; then : + enableval=$enable_update_mimedb; +else + enable_update_mimedb=yes +fi + + if (test x$enable_update_mimedb = xyes) && (test x$UPDATE_MIME_DATABASE != xno); then + ENABLE_UPDATE_MIMEDB_TRUE= + ENABLE_UPDATE_MIMEDB_FALSE='#' +else + ENABLE_UPDATE_MIMEDB_TRUE='#' + ENABLE_UPDATE_MIMEDB_FALSE= +fi + + case `pwd` in @@ -8166,7 +8335,7 @@ rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -8184,7 +8353,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -8203,7 +8375,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -13077,6 +13252,9 @@ +GLIB_REQUIRED_VERSION=2.28 +GTK_REQUIRED_VERSION=3.9.3 + @@ -13207,18 +13385,39 @@ pkg_cv_BIJIBEN_CFLAGS="$BIJIBEN_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid\""; } >&5 - ($PKG_CONFIG --exists --print-errors "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= \$GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= \$GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_BIJIBEN_CFLAGS=`$PKG_CONFIG --cflags "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid" 2>/dev/null` + pkg_cv_BIJIBEN_CFLAGS=`$PKG_CONFIG --cflags " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13230,18 +13429,39 @@ pkg_cv_BIJIBEN_LIBS="$BIJIBEN_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid\""; } >&5 - ($PKG_CONFIG --exists --print-errors "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= \$GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= \$GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_BIJIBEN_LIBS=`$PKG_CONFIG --libs "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid" 2>/dev/null` + pkg_cv_BIJIBEN_LIBS=`$PKG_CONFIG --libs " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13262,20 +13482,41 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - BIJIBEN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid" 2>&1` + BIJIBEN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0" 2>&1` else - BIJIBEN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid" 2>&1` + BIJIBEN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$BIJIBEN_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (tracker-sparql-0.16 clutter-gtk-1.0 -gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid) were not met: + as_fn_error $? "Package requirements ( clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0) were not met: $BIJIBEN_PKG_ERRORS @@ -13310,6 +13551,8 @@ + + # Check whether --enable-schemas-compile was given. if test "${enable_schemas_compile+set}" = set; then : enableval=$enable_schemas_compile; case ${enableval} in @@ -13759,7 +14002,7 @@ # main-toolbar: - if true; then + if false; then LIBGD_MAIN_TOOLBAR_TRUE= LIBGD_MAIN_TOOLBAR_FALSE='#' else @@ -13769,11 +14012,6 @@ - -$as_echo "#define LIBGD_MAIN_TOOLBAR 1" >>confdefs.h - - - # header-bar: if false; then LIBGD_HEADER_BAR_TRUE= @@ -13808,7 +14046,7 @@ # revealer: - if true; then + if false; then LIBGD_REVEALER_TRUE= LIBGD_REVEALER_FALSE='#' else @@ -13818,12 +14056,8 @@ -$as_echo "#define LIBGD_REVEALER 1" >>confdefs.h - - - # stack: - if true; then + if false; then LIBGD_STACK_TRUE= LIBGD_STACK_FALSE='#' else @@ -13833,13 +14067,8 @@ - -$as_echo "#define LIBGD_STACK 1" >>confdefs.h - - - # tagged-entry: Gtk+ widget - if false; then + if true; then LIBGD_TAGGED_ENTRY_TRUE= LIBGD_TAGGED_ENTRY_FALSE='#' else @@ -13849,6 +14078,10 @@ +$as_echo "#define LIBGD_TAGGED_ENTRY 1" >>confdefs.h + + + # vapi: vala bindings support if false; then LIBGD_VAPI_TRUE= @@ -13872,7 +14105,7 @@ # _header-button: - if true; then + if false; then LIBGD__HEADER_BUTTON_TRUE= LIBGD__HEADER_BUTTON_FALSE='#' else @@ -13882,10 +14115,6 @@ -$as_echo "#define LIBGD__HEADER_BUTTON 1" >>confdefs.h - - - # _view-common: if true; then LIBGD__VIEW_COMMON_TRUE= @@ -14140,6 +14369,10 @@ ac_config_commands="$ac_config_commands po/stamp-it" +if test -z "${ENABLE_UPDATE_MIMEDB_TRUE}" && test -z "${ENABLE_UPDATE_MIMEDB_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_UPDATE_MIMEDB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBGD_STATIC_TRUE}" && test -z "${LIBGD_STATIC_FALSE}"; then as_fn_error $? "conditional \"LIBGD_STATIC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -14601,7 +14834,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bijiben $as_me 3.8.4, which was +This file was extended by bijiben $as_me 3.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14667,7 +14900,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bijiben config.status 3.8.4 +bijiben config.status 3.10.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru bijiben-3.8.4/configure.ac bijiben-3.10.2/configure.ac --- bijiben-3.8.4/configure.ac 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/configure.ac 2013-11-11 20:55:05.000000000 +0000 @@ -1,7 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl Created by Anjuta application wizard. -AC_INIT(bijiben, 3.8.4) +AC_INIT(bijiben, 3.10.2) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) dnl _FOR_DOC @@ -30,26 +29,49 @@ AM_GLIB_GNU_GETTEXT IT_PROG_INTLTOOL([0.35.0]) +# +# Check if we should update the mime database +# + +AC_PATH_PROG(UPDATE_MIME_DATABASE, update-mime-database, no) + +AC_ARG_ENABLE(update-mimedb, + AC_HELP_STRING([--disable-update-mimedb], + [disable the update-mime-database after install [default=no]]),, + enable_update_mimedb=yes) +AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, (test x$enable_update_mimedb = xyes) && (test x$UPDATE_MIME_DATABASE != xno)) + AM_PROG_LIBTOOL -dnl tracker-sparql might be 0.12 +GLIB_REQUIRED_VERSION=2.28 +GTK_REQUIRED_VERSION=3.9.3 + + +PKG_CHECK_MODULES(BIJIBEN, + [ clutter-gtk-1.0 + gio-unix-2.0 + glib-2.0 >= $GLIB_REQUIRED_VERSION + goa-1.0 + gtk+-3.0 >= $GTK_REQUIRED_VERSION + libxml-2.0 + tracker-sparql-0.16 + uuid + webkitgtk-3.0 + zeitgeist-2.0]) + -PKG_CHECK_MODULES(BIJIBEN, tracker-sparql-0.16 clutter-gtk-1.0 -[gtk+-3.0 >= 3.7.7 libxml-2.0 glib-2.0 zeitgeist-1.0 - glib-2.0 >= 2.28 gio-unix-2.0 webkitgtk-3.0 uuid]) GLIB_GSETTINGS LIBGD_INIT([ + view-common gtk-hacks main-view - main-toolbar - revealer - stack static + tagged-entry ]) AC_CONFIG_FILES([ diff -Nru bijiben-3.8.4/data/bijiben.appdata.xml.in bijiben-3.10.2/data/bijiben.appdata.xml.in --- bijiben-3.8.4/data/bijiben.appdata.xml.in 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/data/bijiben.appdata.xml.in 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,18 @@ + + + bijiben.desktop + CC0 + Notes + Quickly jot notes + + <_p> + Notes is an editor allowing to make simple lists for later use. + + <_p>It allows to use ownCloud as a storage location and online editor. + + + http://py.luyten.fr/Publique/bijiben-notes-scr.png + + https://wiki.gnome.org/Apps/Bijiben + py_at_luyten.fr + diff -Nru bijiben-3.8.4/data/bijiben.desktop.in bijiben-3.10.2/data/bijiben.desktop.in --- bijiben-3.8.4/data/bijiben.desktop.in 2013-08-18 23:29:57.000000000 +0000 +++ bijiben-3.10.2/data/bijiben.desktop.in 2013-11-11 20:55:27.000000000 +0000 @@ -14,4 +14,4 @@ X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=bijiben X-GNOME-Bugzilla-Component=main -X-GNOME-Bugzilla-Version=3.8.4 +X-GNOME-Bugzilla-Version=3.10.2 diff -Nru bijiben-3.8.4/data/bijiben.xml.in bijiben-3.10.2/data/bijiben.xml.in --- bijiben-3.8.4/data/bijiben.xml.in 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/data/bijiben.xml.in 2013-07-29 20:40:43.000000000 +0000 @@ -0,0 +1,7 @@ + + + + <_comment>Notes + + + diff -Nru bijiben-3.8.4/data/Default.css bijiben-3.10.2/data/Default.css --- bijiben-3.8.4/data/Default.css 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/data/Default.css 2013-11-01 22:57:05.000000000 +0000 @@ -1,29 +1,30 @@ body { - margin-top: -2em; - margin-left: 1em; - margin-right: 1em; - margin-bottom: 8em; + margin-top: -2em; + margin-left: 0; + margin-right: 2em; + margin-bottom: 8em; + word-wrap: break-word; - background-image: -webkit-linear-gradient(90deg, - rgba(97%,97%,100%,0) 0%, - rgba(97%,97%,100%,0) 90%, - rgba(0%,0%,0%,0.15) 100%); + background-image: -webkit-linear-gradient(90deg, + rgba(97%,97%,100%,0) 0%, + rgba(97%,97%,100%,0) 90%, + rgba(0%,0%,0%,0.15) 100%); - background-size: 2.0em 2.0em; - line-height: 2.0em; - padding: 2.0em; + background-size: 2.0em 2.0em; + line-height: 2.0em; + padding: 2.0em; } ul { - margin-top : 0em; - margin-bottom: 0em; - line-height: 2.0em; - padding: 0em; + margin-top : 0; + margin-bottom: 0; + line-height: 2.0em; + padding: 0; } ol { - margin-top : 0em; - margin-bottom: 0em; - line-height: 2.0em; - padding: 0em; + margin-top : 0; + margin-bottom: 0; + line-height: 2.0em; + padding: 0; } diff -Nru bijiben-3.8.4/data/icons/hicolor_actions_scalable_note.svg bijiben-3.10.2/data/icons/hicolor_actions_scalable_note.svg --- bijiben-3.8.4/data/icons/hicolor_actions_scalable_note.svg 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/data/icons/hicolor_actions_scalable_note.svg 2013-07-04 20:53:56.000000000 +0000 @@ -9,14 +9,14 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="128" - height="128" - id="svg2" + width="64px" + height="64px" + id="svg11721" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="Nouveau document 1"> + inkscape:version="0.48.4 r9939" + sodipodi:docname="New document 3"> + id="defs11723" /> + inkscape:window-y="27" + inkscape:window-maximized="1"> + + + id="metadata11726"> @@ -48,89 +55,20 @@ - bijiben note editor allows you to leveragetracker to classiy your books.The tile comes from the Chinese Bijibenwhich simply means workbook ; BI - JI characters mean to remind, while the last charcter, BEN, can serves to describe several objects like booksOne note can use some format like * One * Two * * Two One * * Two two * Three. - + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + + diff -Nru bijiben-3.8.4/data/icons/Makefile.am bijiben-3.10.2/data/icons/Makefile.am --- bijiben-3.8.4/data/icons/Makefile.am 2013-07-19 22:02:06.000000000 +0000 +++ bijiben-3.10.2/data/icons/Makefile.am 2013-09-26 20:05:59.000000000 +0000 @@ -11,8 +11,7 @@ hicolor_apps_32x32_bijiben.png \ hicolor_apps_48x48_bijiben.png \ hicolor_apps_256x256_bijiben.png \ - hicolor_apps_scalable_bijiben.svg \ - HighContrast_apps_scalable_bijiben.svg \ + HighContrast_apps_scalable_bijiben.svg \ $(NULL) private_icons = \ @@ -24,6 +23,7 @@ $(NULL) noinst_DATA = \ + hicolor_apps_scalable_bijiben.svg \ $(NULL) EXTRA_DIST = \ diff -Nru bijiben-3.8.4/data/icons/Makefile.in bijiben-3.10.2/data/icons/Makefile.in --- bijiben-3.8.4/data/icons/Makefile.in 2013-08-18 23:29:46.000000000 +0000 +++ bijiben-3.10.2/data/icons/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -217,6 +217,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -288,8 +289,7 @@ hicolor_apps_32x32_bijiben.png \ hicolor_apps_48x48_bijiben.png \ hicolor_apps_256x256_bijiben.png \ - hicolor_apps_scalable_bijiben.svg \ - HighContrast_apps_scalable_bijiben.svg \ + HighContrast_apps_scalable_bijiben.svg \ $(NULL) private_icons = \ @@ -301,6 +301,7 @@ $(NULL) noinst_DATA = \ + hicolor_apps_scalable_bijiben.svg \ $(NULL) EXTRA_DIST = \ @@ -324,9 +325,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/icons/Makefile + $(AUTOMAKE) --gnu data/icons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru bijiben-3.8.4/data/Makefile.am bijiben-3.10.2/data/Makefile.am --- bijiben-3.8.4/data/Makefile.am 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/data/Makefile.am 2013-11-11 20:52:06.000000000 +0000 @@ -1,6 +1,15 @@ SUBDIRS = icons +xml_in_files = bijiben.xml.in +xml_files = $(xml_in_files:.xml.in=.xml) + +app_data_in_files = bijiben.appdata.xml.in +app_data_files = $(app_data_in_files:.xml.in=.xml) + + +@INTLTOOL_XML_RULE@ + @INTLTOOL_DESKTOP_RULE@ desktop_in_files = bijiben.desktop.in @@ -9,11 +18,18 @@ desktopdir = $(datadir)/applications desktop_DATA = $(desktop_files) +appdatadir = $(datadir)/appdata +appdata_DATA = $(app_data_files) + + servicedir = $(datadir)/dbus-1/services service_DATA = $(service_in_files:.service.in=.service) service_in_files = \ org.gnome.Bijiben.SearchProvider.service.in +mimedir = $(datadir)/mime/packages +mime_DATA = $(xml_files) + org.gnome.Bijiben.SearchProvider.service: org.gnome.Bijiben.SearchProvider.service.in Makefile $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ @@ -35,10 +51,23 @@ org.gnome.bijiben.gschema.xml.in \ shell-search-provider-dbus-interfaces.xml \ $(service_in_files) \ - $(searchprovider_DATA) + $(searchprovider_DATA) \ + $(xml_in_files) \ + $(app_data_in_files) DISTCLEANFILES = \ $(desktop_files) \ $(gsettings_SCHEMAS) \ - $(service_DATA) - + $(service_DATA) \ + $(xml_files) \ + $(app_data_files) + +install-data-hook: +if ENABLE_UPDATE_MIMEDB + $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime" +endif + +uninstall-hook: +if ENABLE_UPDATE_MIMEDB + $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime" +endif diff -Nru bijiben-3.8.4/data/Makefile.in bijiben-3.10.2/data/Makefile.in --- bijiben-3.8.4/data/Makefile.in 2013-08-18 23:29:46.000000000 +0000 +++ bijiben-3.10.2/data/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -147,10 +147,11 @@ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } -am__installdirs = "$(DESTDIR)$(cssdir)" "$(DESTDIR)$(desktopdir)" \ +am__installdirs = "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(cssdir)" \ + "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(mimedir)" \ "$(DESTDIR)$(searchproviderdir)" "$(DESTDIR)$(servicedir)" -DATA = $(css_DATA) $(desktop_DATA) $(searchprovider_DATA) \ - $(service_DATA) +DATA = $(appdata_DATA) $(css_DATA) $(desktop_DATA) $(mime_DATA) \ + $(searchprovider_DATA) $(service_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ @@ -308,6 +309,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -368,15 +370,23 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = icons +xml_in_files = bijiben.xml.in +xml_files = $(xml_in_files:.xml.in=.xml) +app_data_in_files = bijiben.appdata.xml.in +app_data_files = $(app_data_in_files:.xml.in=.xml) desktop_in_files = bijiben.desktop.in desktop_files = $(desktop_in_files:.desktop.in=.desktop) desktopdir = $(datadir)/applications desktop_DATA = $(desktop_files) +appdatadir = $(datadir)/appdata +appdata_DATA = $(app_data_files) servicedir = $(datadir)/dbus-1/services service_DATA = $(service_in_files:.service.in=.service) service_in_files = \ org.gnome.Bijiben.SearchProvider.service.in +mimedir = $(datadir)/mime/packages +mime_DATA = $(xml_files) searchproviderdir = $(datadir)/gnome-shell/search-providers searchprovider_DATA = bijiben-search-provider.ini css_files = Default.css @@ -389,12 +399,16 @@ org.gnome.bijiben.gschema.xml.in \ shell-search-provider-dbus-interfaces.xml \ $(service_in_files) \ - $(searchprovider_DATA) + $(searchprovider_DATA) \ + $(xml_in_files) \ + $(app_data_in_files) DISTCLEANFILES = \ $(desktop_files) \ $(gsettings_SCHEMAS) \ - $(service_DATA) + $(service_DATA) \ + $(xml_files) \ + $(app_data_files) all: all-recursive @@ -408,9 +422,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/Makefile + $(AUTOMAKE) --gnu data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -437,6 +451,27 @@ clean-libtool: -rm -rf .libs _libs +install-appdataDATA: $(appdata_DATA) + @$(NORMAL_INSTALL) + @list='$(appdata_DATA)'; test -n "$(appdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(appdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(appdatadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(appdatadir)" || exit $$?; \ + done + +uninstall-appdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(appdata_DATA)'; test -n "$(appdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(appdatadir)'; $(am__uninstall_files_from_dir) install-cssDATA: $(css_DATA) @$(NORMAL_INSTALL) @list='$(css_DATA)'; test -n "$(cssdir)" || list=; \ @@ -479,6 +514,27 @@ @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) +install-mimeDATA: $(mime_DATA) + @$(NORMAL_INSTALL) + @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(mimedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(mimedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(mimedir)" || exit $$?; \ + done + +uninstall-mimeDATA: + @$(NORMAL_UNINSTALL) + @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(mimedir)'; $(am__uninstall_files_from_dir) install-searchproviderDATA: $(searchprovider_DATA) @$(NORMAL_INSTALL) @list='$(searchprovider_DATA)'; test -n "$(searchproviderdir)" || list=; \ @@ -681,7 +737,7 @@ all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(cssdir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(searchproviderdir)" "$(DESTDIR)$(servicedir)"; do \ + for dir in "$(DESTDIR)$(appdatadir)" "$(DESTDIR)$(cssdir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(mimedir)" "$(DESTDIR)$(searchproviderdir)" "$(DESTDIR)$(servicedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -735,9 +791,11 @@ info-am: -install-data-am: install-cssDATA install-desktopDATA \ +install-data-am: install-appdataDATA install-cssDATA \ + install-desktopDATA install-mimeDATA \ install-searchproviderDATA install-serviceDATA - + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: @@ -780,29 +838,36 @@ ps-am: -uninstall-am: uninstall-cssDATA uninstall-desktopDATA \ +uninstall-am: uninstall-appdataDATA uninstall-cssDATA \ + uninstall-desktopDATA uninstall-mimeDATA \ uninstall-searchproviderDATA uninstall-serviceDATA - -.MAKE: $(am__recursive_targets) install-am install-strip + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook +.MAKE: $(am__recursive_targets) install-am install-data-am \ + install-strip uninstall-am .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-cssDATA install-data \ - install-data-am install-desktopDATA install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ + install install-am install-appdataDATA install-cssDATA \ + install-data install-data-am install-data-hook \ + install-desktopDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-mimeDATA install-pdf \ install-pdf-am install-ps install-ps-am \ install-searchproviderDATA install-serviceDATA install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-cssDATA \ - uninstall-desktopDATA uninstall-searchproviderDATA \ + tags tags-am uninstall uninstall-am uninstall-appdataDATA \ + uninstall-cssDATA uninstall-desktopDATA uninstall-hook \ + uninstall-mimeDATA uninstall-searchproviderDATA \ uninstall-serviceDATA +@INTLTOOL_XML_RULE@ + @INTLTOOL_DESKTOP_RULE@ org.gnome.Bijiben.SearchProvider.service: org.gnome.Bijiben.SearchProvider.service.in Makefile @@ -810,6 +875,12 @@ @INTLTOOL_XML_NOMERGE_RULE@ @GSETTINGS_RULES@ +install-data-hook: +@ENABLE_UPDATE_MIMEDB_TRUE@ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime" + +uninstall-hook: +@ENABLE_UPDATE_MIMEDB_TRUE@ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime" + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru bijiben-3.8.4/data/org.gnome.bijiben.gschema.xml.in bijiben-3.10.2/data/org.gnome.bijiben.gschema.xml.in --- bijiben-3.8.4/data/org.gnome.bijiben.gschema.xml.in 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/data/org.gnome.bijiben.gschema.xml.in 2013-11-11 20:52:06.000000000 +0000 @@ -10,5 +10,10 @@ New notes color. The color name set here will be used as the color when creating new notes. + + 'local' + Primary notes provider to use for new notes. + The primary notebook is the place where are created new notes. + diff -Nru bijiben-3.8.4/debian/changelog bijiben-3.10.2/debian/changelog --- bijiben-3.8.4/debian/changelog 2013-09-05 21:32:54.000000000 +0000 +++ bijiben-3.10.2/debian/changelog 2014-04-13 20:34:47.000000000 +0000 @@ -1,3 +1,20 @@ +bijiben (3.10.2-1~trusty1) trusty; urgency=medium + + * Copied from debian + + -- Rico Tzschichholz Sun, 13 Apr 2014 22:34:47 +0200 + +bijiben (3.10.2-1) unstable; urgency=medium + + * New upstream release. + - Bump build-dep on libgtk-3-dev to >= 3.9.3. + - Add new build-dep on libgoa-1.0-dev. + - Add new build-dep on libzeitgeist-2.0-dev. (LP: #1197569) + * Update Standards version to 3.9.5, no changes required. + * Update email address. + + -- Vincent Cheng Sat, 15 Feb 2014 22:41:13 -0800 + bijiben (3.8.4-2) unstable; urgency=low * Upload to unstable (now that build-depends are satisfied in unstable). diff -Nru bijiben-3.8.4/debian/control bijiben-3.10.2/debian/control --- bijiben-3.8.4/debian/control 2013-07-14 09:50:44.000000000 +0000 +++ bijiben-3.10.2/debian/control 2014-01-15 21:38:35.000000000 +0000 @@ -1,21 +1,22 @@ Source: bijiben Section: gnome Priority: optional -Maintainer: Vincent Cheng +Maintainer: Vincent Cheng Build-Depends: debhelper (>= 9), autotools-dev, intltool (>= 0.35.0), libclutter-gtk-1.0-dev (>= 1.4.2), libglib2.0-dev (>= 2.28.0), - libgtk-3-dev (>= 3.7.7), + libgoa-1.0-dev, + libgtk-3-dev (>= 3.9.3), libtracker-sparql-0.16-dev, libwebkitgtk-3.0-dev, libxml2-dev, - libzeitgeist-dev, + libzeitgeist-2.0-dev, pkg-config (>= 0.14.0), uuid-dev, yelp-tools -Standards-Version: 3.9.4 +Standards-Version: 3.9.5 Homepage: https://live.gnome.org/Bijiben Vcs-Svn: svn://anonscm.debian.org/collab-maint/deb-maint/bijiben/trunk Vcs-Browser: http://anonscm.debian.org/viewvc/collab-maint/deb-maint/bijiben/trunk diff -Nru bijiben-3.8.4/debian/copyright bijiben-3.10.2/debian/copyright --- bijiben-3.8.4/debian/copyright 2013-07-01 06:41:51.000000000 +0000 +++ bijiben-3.10.2/debian/copyright 2014-01-15 21:38:47.000000000 +0000 @@ -22,7 +22,7 @@ License: CC-BY-SA-3.0 Files: debian/* -Copyright: 2013 Vincent Cheng +Copyright: 2013 Vincent Cheng License: GPL-3.0+ License: GPL-2.0+ diff -Nru bijiben-3.8.4/debian/rules bijiben-3.10.2/debian/rules --- bijiben-3.8.4/debian/rules 2013-07-01 06:41:51.000000000 +0000 +++ bijiben-3.10.2/debian/rules 2014-02-16 09:12:58.000000000 +0000 @@ -1,13 +1,15 @@ #!/usr/bin/make -f +export DEB_CFLAGS_MAINT_APPEND=-Wno-error=format-security export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed %: - dh $@ --with autotools-dev + dh $@ --with autotools_dev override_dh_auto_configure: - dh_auto_configure -- --disable-static --disable-silent-rules + dh_auto_configure -- --disable-static --disable-silent-rules \ + --disable-update-mimedb override_dh_install: find $(CURDIR) -name "*.la" -delete - dh_install --fail-missing + dh_install diff -Nru bijiben-3.8.4/depcomp bijiben-3.10.2/depcomp --- bijiben-3.8.4/depcomp 2013-06-15 15:35:04.000000000 +0000 +++ bijiben-3.10.2/depcomp 2013-11-11 20:55:22.000000000 +0000 @@ -1,7 +1,7 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-10-18.11; # UTC +scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. @@ -552,6 +552,7 @@ G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; diff -Nru bijiben-3.8.4/help/C/bjb-colours.page bijiben-3.10.2/help/C/bjb-colours.page --- bijiben-3.8.4/help/C/bjb-colours.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-colours.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ - - - - - Use visual organization - - Pierre-Yves Luyten - 2012 - - - - - Colorize Notes - -

Enter a note and click on the color button.

-

From the main view, click on the selection button, select notes you want to change then click on the color button.

-
- -
diff -Nru bijiben-3.8.4/help/C/bjb-create.page bijiben-3.10.2/help/C/bjb-create.page --- bijiben-3.8.4/help/C/bjb-create.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-create.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ - - - - - - Create new notes - - Pierre-Yves Luyten - 2012 - - - - - Create Notes -

You can create notes with three different methods

- -

Click on New Notes buton to create a blank note.

-

Drag and drop text to the notes view to create a note containing this text.

-

Open a note, select some text and click on the link icon to create a note containing this text.

-
- -
diff -Nru bijiben-3.8.4/help/C/bjb-delete.page bijiben-3.10.2/help/C/bjb-delete.page --- bijiben-3.8.4/help/C/bjb-delete.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-delete.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ - - - - - - Put some notes to trash - - Pierre-Yves Luyten - 2012 - - - - - Delete Notes - -

You can delete a note in two ways:

- - -

Open a note and select Delete from the menu.

-

From the notes view, click on selection button, select the notes you want to delete then click on trash.

-
- -
diff -Nru bijiben-3.8.4/help/C/bjb-editor.page bijiben-3.10.2/help/C/bjb-editor.page --- bijiben-3.8.4/help/C/bjb-editor.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-editor.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ - - - - - - Format the content - - Pierre-Yves Luyten - 2012 - - - - - Note edition -

Notes allows a few formating.

- -

Select some text, the click on Bold or Italic button.

-

From the note menu, you can also use Bullets to have unordered list or List for ordered list.

-
- -
diff -Nru bijiben-3.8.4/help/C/bjb-find.page bijiben-3.10.2/help/C/bjb-find.page --- bijiben-3.8.4/help/C/bjb-find.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-find.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - - - - - - Lookup for existing notes - - Pierre-Yves Luyten - 2012 - - - - - Find Notes -

Default view show you the most recent notes.

-

You can find notes with below methods:

- -

Enter some text to look for notes with such title, or content.

-

You can also search for notes from the Activies view.

-

Search notes regarding their colours. You can change these colours : see

-

You can add any number of labels to notes to tag them : see .

-
- -
diff -Nru bijiben-3.8.4/help/C/bjb-share.page bijiben-3.10.2/help/C/bjb-share.page --- bijiben-3.8.4/help/C/bjb-share.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-share.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ - - - - - - Spread your notes to the world - - Pierre-Yves Luyten - 2012 - - - - - Share Notes -

Open a note, then click on the Share icon to send it.

- -
diff -Nru bijiben-3.8.4/help/C/bjb-tags.page bijiben-3.10.2/help/C/bjb-tags.page --- bijiben-3.8.4/help/C/bjb-tags.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/bjb-tags.page 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - - - Put labels to notes - - Pierre-Yves Luyten - 2012 - - - - - Tag Notes -

Notes uses the same labels, or tags, you can use to organize your files.

- -

Open a note, click on the menu then Tags

-

From the main view, click on the Selection button, select notes you want to tag then click on the labels button.

-
- -
diff -Nru bijiben-3.8.4/help/C/collections.page bijiben-3.10.2/help/C/collections.page --- bijiben-3.8.4/help/C/collections.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/collections.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,45 @@ + + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Add a note to a collection to make sorting and searching notes easier. + + + Collections + +

You can add notes to collections in Notes to help you + organize them. To view your Collections:

+ + + +

Open a note, open + More + options…Collections.

+
+ +

In the notes view, go into the selection mode. + Select the notes which you want to add to the collection then press the + Collections button.

+
+
+ + + +
diff -Nru bijiben-3.8.4/help/C/colors.page bijiben-3.10.2/help/C/colors.page --- bijiben-3.8.4/help/C/colors.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/colors.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,43 @@ + + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Edit the note background color. + + + Change note color + +

You can change the color of an individual note or a number of notes:

+ + + +

Open a note and press the Note color + button.

+
+ +

In the notes view, go into the selection mode. + Select the notes which you want to change then click on the + Note color button.

+
+
+ + + +
diff -Nru bijiben-3.8.4/help/C/create.page bijiben-3.10.2/help/C/create.page --- bijiben-3.8.4/help/C/create.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/create.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,45 @@ + + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + + Create a new note from scratch, using some text from another application or from another note. + + + Create a note + +

You can create a new note in three different ways:

+ + +

Press the New button to create a blank + note.

+
+ +

Drag and drop text to the notes view to create a note + containing this text.

+
+ +

Open a note, select some text and press the + Link button to create a note containing this + text.

+
+
+ +
diff -Nru bijiben-3.8.4/help/C/delete.page bijiben-3.10.2/help/C/delete.page --- bijiben-3.8.4/help/C/delete.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/delete.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,43 @@ + + + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Delete unwanted and old notes. + + + Delete a note + +

You can delete a note in two ways:

+ + + +

Open a note and select + More + options…Delete this Note.

+
+ +

In the notes view, go into the selection mode. + Select the notes that you want to delete, then press the + Trash button.

+
+
+ +
Binary files /tmp/fqP4A2PN74/bijiben-3.8.4/help/C/figures/bijiben-note.png and /tmp/widFWTHnpS/bijiben-3.10.2/help/C/figures/bijiben-note.png differ diff -Nru bijiben-3.8.4/help/C/figures/HighContrast_apps_scalable_bijiben.svg bijiben-3.10.2/help/C/figures/HighContrast_apps_scalable_bijiben.svg --- bijiben-3.8.4/help/C/figures/HighContrast_apps_scalable_bijiben.svg 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/figures/HighContrast_apps_scalable_bijiben.svg 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,110 @@ + + + + + + + + + image/svg+xml + + Tomboy Application icon + September 2007 + + + Andreas Nilsson + + + + + Andreas Nilsson + + + http://www.gnome.org + + + tomboy + notes + sticky + + + + + + + + + + + + + + + + + + + + Binary files /tmp/fqP4A2PN74/bijiben-3.8.4/help/C/figures/notes-scr.png and /tmp/widFWTHnpS/bijiben-3.10.2/help/C/figures/notes-scr.png differ diff -Nru bijiben-3.8.4/help/C/formatting.page bijiben-3.10.2/help/C/formatting.page --- bijiben-3.8.4/help/C/formatting.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/formatting.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,42 @@ + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Apply different formatting options to the text. + + + Change the text style + +

You can format your note in Notes:

+ + + +

Select the text that you want to format and press + Bold, Italic or + Strike.

+
+ +

To create a list, select More + options…Bullets for an + unordered list or More + options…Numbered List for an ordered list.

+
+
+ +
diff -Nru bijiben-3.8.4/help/C/index.page bijiben-3.10.2/help/C/index.page --- bijiben-3.8.4/help/C/index.page 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/C/index.page 2013-09-26 20:05:59.000000000 +0000 @@ -1,24 +1,39 @@ - - + + Notes + Notes + + Pierre-Yves Luyten + py@luyten.fr 2012 + + Shobha Tyagi + tyagishobha@gmail.com + 2013 + - Notes Help - -
- Introduction - -

Notes is a simple note editor.

-
+ + <media type="image" mime="image/png" src="figures/HighContrast_apps_scalable_bijiben.svg" + its:translate="no"/> + Notes + -
Create Notes
-
Edit and Share Notes
-
Delete Notes
+
+ Create notes +
+
+ Edit and share notes +
+
+ Delete notes +
diff -Nru bijiben-3.8.4/help/C/introduction.page bijiben-3.10.2/help/C/introduction.page --- bijiben-3.8.4/help/C/introduction.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/introduction.page 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,36 @@ + + + + + + + + Shobha Tyagi + tyagishobha@gmail.com + 2013 + + + Pierre-Yves Luyten + py@luyten.fr + 2012 + + + + + A simple application for creating, editing and viewing notes. + + + + Introduction to Notes + + +

Notes is a simple application for creating, editing, and + viewing notes. You can search for a note from the Activities + overview too. Notes integrates easily with the online accounts.

+ + + +
diff -Nru bijiben-3.8.4/help/C/rename.page bijiben-3.10.2/help/C/rename.page --- bijiben-3.8.4/help/C/rename.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/rename.page 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,25 @@ + + + + + + + + Shobha Tyagi + tyagishobha@gmail.com + 2013 + + + + + Change the name of an existing note. + + + Rename a note + +

To rename a note, change the first row in the text area.

+ +
diff -Nru bijiben-3.8.4/help/C/search.page bijiben-3.10.2/help/C/search.page --- bijiben-3.8.4/help/C/search.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/search.page 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,45 @@ + + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Search for an existing note. + + + Find a note + +

The default notes view shows the recently used notes.

+ +

You can find notes using the following methods:

+ + +

Type your search term while in the notes view and press + Return to search.

+
+ +

You can also search for notes from the Activities view.

+
+
+ + + +

You can also sort notes using colors and + collections.

+ +
diff -Nru bijiben-3.8.4/help/C/share.page bijiben-3.10.2/help/C/share.page --- bijiben-3.8.4/help/C/share.page 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/help/C/share.page 2013-07-04 20:53:56.000000000 +0000 @@ -0,0 +1,29 @@ + + + + + + + Pierre-Yves Luyten + 2012 + + + Ekaterina Gerasimova + kittykat3756@gmail.com + 2013 + + + + + Email a note to your contacts. + + + Share a note + +

Open a note, then click on the Share note button + to send it by email. Your default email client will start up.

+ +
diff -Nru bijiben-3.8.4/help/Makefile.am bijiben-3.10.2/help/Makefile.am --- bijiben-3.8.4/help/Makefile.am 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/help/Makefile.am 2013-09-26 20:05:59.000000000 +0000 @@ -6,15 +6,18 @@ HELP_LINGUAS = HELP_FILES = \ - bjb-colours.page \ - bjb-create.page \ - bjb-delete.page \ - bjb-editor.page \ - bjb-find.page \ - bjb-share.page \ - bjb-tags.page \ + colors.page \ + collections.page \ + create.page \ + delete.page \ + introduction.page \ + formatting.page \ + search.page \ + rename.page \ + share.page \ index.page \ legal.xml HELP_MEDIA = \ - figures/bijiben-note.png + figures/HighContrast_apps_scalable_bijiben.svg \ + figures/notes-scr.png diff -Nru bijiben-3.8.4/help/Makefile.in bijiben-3.10.2/help/Makefile.in --- bijiben-3.8.4/help/Makefile.in 2013-08-18 23:29:46.000000000 +0000 +++ bijiben-3.10.2/help/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -215,6 +215,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -277,18 +278,21 @@ HELP_ID = bijiben HELP_LINGUAS = HELP_FILES = \ - bjb-colours.page \ - bjb-create.page \ - bjb-delete.page \ - bjb-editor.page \ - bjb-find.page \ - bjb-share.page \ - bjb-tags.page \ + colors.page \ + collections.page \ + create.page \ + delete.page \ + introduction.page \ + formatting.page \ + search.page \ + rename.page \ + share.page \ index.page \ legal.xml HELP_MEDIA = \ - figures/bijiben-note.png + figures/HighContrast_apps_scalable_bijiben.svg \ + figures/notes-scr.png all: all-am @@ -302,9 +306,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign help/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu help/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign help/Makefile + $(AUTOMAKE) --gnu help/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru bijiben-3.8.4/libgd/libgd/gd.h bijiben-3.10.2/libgd/libgd/gd.h --- bijiben-3.8.4/libgd/libgd/gd.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd.h 2013-10-25 18:54:48.000000000 +0000 @@ -38,12 +38,12 @@ #ifdef LIBGD__VIEW_COMMON # include # include -# include # include #endif #ifdef LIBGD_MAIN_ICON_VIEW # include +# include #endif #ifdef LIBGD_MAIN_LIST_VIEW diff -Nru bijiben-3.8.4/libgd/libgd/gd-header-button.c bijiben-3.10.2/libgd/libgd/gd-header-button.c --- bijiben-3.8.4/libgd/libgd/gd-header-button.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-header-button.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,488 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include "gd-header-button.h" - -typedef GTypeInterface GdHeaderButtonIface; -typedef GdHeaderButtonIface GdHeaderButtonInterface; -#define GD_HEADER_BUTTON_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GD_TYPE_HEADER_BUTTON, GdHeaderButtonIface)) - -G_DEFINE_INTERFACE (GdHeaderButton, gd_header_button, GTK_TYPE_BUTTON) - -enum { - PROP_0, - PROP_LABEL, - PROP_USE_MARKUP, - PROP_SYMBOLIC_ICON_NAME -}; - -static void -gd_header_button_default_init (GdHeaderButtonIface *iface) -{ - GParamSpec *pspec; - - /** - * GdHeaderButton:label: - * - * The label of the #GdHeaderButton object. - */ - pspec = g_param_spec_string ("label", - "Text label", - "Label displayed by the button", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - g_object_interface_install_property (iface, pspec); - - /** - * GdHeaderButton:use-markup: - * - * Whether the label of the #GdHeaderButton object should use markup. - */ - pspec = g_param_spec_boolean ("use-markup", - "Use markup", - "Whether the label should use markup", - FALSE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - g_object_interface_install_property (iface, pspec); - - /** - * GdHeaderButton:symbolic-icon-name: - * - * The symbolic icon name of the #GdHeaderButton object. - */ - pspec = g_param_spec_string ("symbolic-icon-name", - "Symbolic icon name", - "The name of the symbolic icon displayed by the button", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - g_object_interface_install_property (iface, pspec); -} - -/** - * gd_header_button_get_label: - * @self: - * - * Returns: (transfer full): - */ -gchar * -gd_header_button_get_label (GdHeaderButton *self) -{ - gchar *label; - g_object_get (self, "label", &label, NULL); - - return label; -} - -/** - * gd_header_button_set_label: - * @self: - * @label: (allow-none): - * - */ -void -gd_header_button_set_label (GdHeaderButton *self, - const gchar *label) -{ - g_object_set (self, "label", label, NULL); -} - -/** - * gd_header_button_get_symbolic_icon_name: - * @self: - * - * Returns: (transfer full): - */ -gchar * -gd_header_button_get_symbolic_icon_name (GdHeaderButton *self) -{ - gchar *symbolic_icon_name; - g_object_get (self, "symbolic-icon-name", &symbolic_icon_name, NULL); - - return symbolic_icon_name; -} - -/** - * gd_header_button_set_symbolic_icon_name: - * @self: - * @symbolic_icon_name: (allow-none): - * - */ -void -gd_header_button_set_symbolic_icon_name (GdHeaderButton *self, - const gchar *symbolic_icon_name) -{ - if (symbolic_icon_name != NULL && - !g_str_has_suffix (symbolic_icon_name, "-symbolic")) - { - g_warning ("gd_header_button_set_symbolic_icon_name was called with " - "a non-symbolic name."); - return; - } - - g_object_set (self, "symbolic-icon-name", symbolic_icon_name, NULL); -} - -/** - * gd_header_button_get_use_markup: - * @self: - * - * Returns: - */ -gboolean -gd_header_button_get_use_markup (GdHeaderButton *self) -{ - gboolean use_markup; - - g_object_get (self, "use-markup", &use_markup, NULL); - return use_markup; -} - -/** - * gd_header_button_set_use_markup: - * @self: - * @use_markup: - * - */ -void -gd_header_button_set_use_markup (GdHeaderButton *self, - gboolean use_markup) -{ - g_object_set (self, "use-markup", use_markup, NULL); -} - -/* generic implementation for all private subclasses */ -typedef struct _GdHeaderButtonPrivate GdHeaderButtonPrivate; -struct _GdHeaderButtonPrivate { - gchar *label; - gchar *symbolic_icon_name; - - gboolean use_markup; -}; - -#define GET_PRIVATE(inst) G_TYPE_INSTANCE_GET_PRIVATE (inst, G_OBJECT_TYPE (inst), GdHeaderButtonPrivate) -#define GET_PARENT_CLASS(inst) g_type_class_peek_parent (G_OBJECT_GET_CLASS (inst)) - -static void -rebuild_child (GdHeaderButton *self) -{ - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - GtkStyleContext *context; - GtkWidget *button_child, *label; - - gtk_widget_set_valign (GTK_WIDGET (self), GTK_ALIGN_CENTER); - - button_child = gtk_bin_get_child (GTK_BIN (self)); - if (button_child != NULL) - gtk_widget_destroy (button_child); - - button_child = NULL; - context = gtk_widget_get_style_context (GTK_WIDGET (self)); - - if (priv->symbolic_icon_name != NULL) - { - button_child = gtk_image_new_from_icon_name (priv->symbolic_icon_name, GTK_ICON_SIZE_MENU); - if (priv->label != NULL) - gtk_widget_set_tooltip_text (GTK_WIDGET (self), priv->label); - - gtk_style_context_remove_class (context, "text-button"); - gtk_style_context_add_class (context, "image-button"); - } - else if (priv->label != NULL) - { - label = gtk_label_new (priv->label); - gtk_label_set_use_markup (GTK_LABEL (label), priv->use_markup); - - if (GTK_IS_MENU_BUTTON (self)) - { - GtkWidget *arrow; - - button_child = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - gtk_container_add (GTK_CONTAINER (button_child), label); - - arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); - gtk_container_add (GTK_CONTAINER (button_child), arrow); - } - else - { - button_child = label; - } - - gtk_style_context_remove_class (context, "image-button"); - gtk_style_context_add_class (context, "text-button"); - } - - if (button_child) - { - gtk_widget_show_all (button_child); - gtk_container_add (GTK_CONTAINER (self), button_child); - } -} - -static void -button_set_label (GdHeaderButton *self, - const gchar *label) -{ - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - - if (g_strcmp0 (priv->label, label) != 0) - { - g_free (priv->label); - priv->label = g_strdup (label); - - rebuild_child (self); - g_object_notify (G_OBJECT (self), "label"); - } -} - -static void -button_set_use_markup (GdHeaderButton *self, - gboolean use_markup) -{ - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - - if (priv->use_markup != use_markup) - { - priv->use_markup = use_markup; - - rebuild_child (self); - g_object_notify (G_OBJECT (self), "use-markup"); - } -} - -static void -button_set_symbolic_icon_name (GdHeaderButton *self, - const gchar *symbolic_icon_name) -{ - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - - if (g_strcmp0 (priv->symbolic_icon_name, symbolic_icon_name) != 0) - { - g_free (priv->symbolic_icon_name); - priv->symbolic_icon_name = g_strdup (symbolic_icon_name); - - rebuild_child (self); - g_object_notify (G_OBJECT (self), "symbolic-icon-name"); - } -} - -static void -gd_header_button_generic_finalize (GObject *object) -{ - GdHeaderButton *self = GD_HEADER_BUTTON (object); - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - - g_free (priv->label); - g_free (priv->symbolic_icon_name); - - G_OBJECT_CLASS (GET_PARENT_CLASS (object))->finalize (object); -} - -static void -gd_header_button_generic_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GdHeaderButton *self = GD_HEADER_BUTTON (object); - - switch (prop_id) - { - case PROP_LABEL: - button_set_label (self, g_value_get_string (value)); - break; - case PROP_USE_MARKUP: - button_set_use_markup (self, g_value_get_boolean (value)); - break; - case PROP_SYMBOLIC_ICON_NAME: - button_set_symbolic_icon_name (self, g_value_get_string (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_header_button_generic_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GdHeaderButton *self = GD_HEADER_BUTTON (object); - GdHeaderButtonPrivate *priv = GET_PRIVATE (self); - - switch (prop_id) - { - case PROP_LABEL: - g_value_set_string (value, priv->label); - break; - case PROP_USE_MARKUP: - g_value_set_boolean (value, priv->use_markup); - break; - case PROP_SYMBOLIC_ICON_NAME: - g_value_set_string (value, priv->symbolic_icon_name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_header_button_generic_iface_init (GdHeaderButtonIface *iface) -{ -} - -static void -gd_header_button_generic_class_init (gpointer klass) -{ - GObjectClass *oclass = G_OBJECT_CLASS (klass); - - oclass->get_property = gd_header_button_generic_get_property; - oclass->set_property = gd_header_button_generic_set_property; - oclass->finalize = gd_header_button_generic_finalize; - - g_object_class_override_property (oclass, PROP_LABEL, "label"); - g_object_class_override_property (oclass, PROP_USE_MARKUP, "use-markup"); - g_object_class_override_property (oclass, PROP_SYMBOLIC_ICON_NAME, "symbolic-icon-name"); - - g_type_class_add_private (klass, sizeof (GdHeaderButtonPrivate)); -} - -/* private subclasses */ -typedef GtkButtonClass GdHeaderSimpleButtonClass; -G_DEFINE_TYPE_WITH_CODE (GdHeaderSimpleButton, gd_header_simple_button, GTK_TYPE_BUTTON, - G_IMPLEMENT_INTERFACE (GD_TYPE_HEADER_BUTTON, gd_header_button_generic_iface_init)) - -static void -gd_header_simple_button_class_init (GdHeaderSimpleButtonClass *klass) -{ - gd_header_button_generic_class_init (klass); -} - -static void -gd_header_simple_button_init (GdHeaderSimpleButton *self) -{ -} - -typedef GtkToggleButtonClass GdHeaderToggleButtonClass; -G_DEFINE_TYPE_WITH_CODE (GdHeaderToggleButton, gd_header_toggle_button, GTK_TYPE_TOGGLE_BUTTON, - G_IMPLEMENT_INTERFACE (GD_TYPE_HEADER_BUTTON, gd_header_button_generic_iface_init)) - -static void -gd_header_toggle_button_class_init (GdHeaderToggleButtonClass *klass) -{ - gd_header_button_generic_class_init (klass); -} - -static void -gd_header_toggle_button_init (GdHeaderToggleButton *self) -{ -} - -typedef GtkMenuButtonClass GdHeaderMenuButtonClass; -G_DEFINE_TYPE_WITH_CODE (GdHeaderMenuButton, gd_header_menu_button, GTK_TYPE_MENU_BUTTON, - G_IMPLEMENT_INTERFACE (GD_TYPE_HEADER_BUTTON, gd_header_button_generic_iface_init)) - -static void -gd_header_menu_button_class_init (GdHeaderMenuButtonClass *klass) -{ - gd_header_button_generic_class_init (klass); -} - -static void -gd_header_menu_button_init (GdHeaderMenuButton *self) -{ -} - -typedef GtkRadioButtonClass GdHeaderRadioButtonClass; -G_DEFINE_TYPE_WITH_CODE (GdHeaderRadioButton, gd_header_radio_button, GTK_TYPE_RADIO_BUTTON, - G_IMPLEMENT_INTERFACE (GD_TYPE_HEADER_BUTTON, gd_header_button_generic_iface_init)) - -static void -gd_header_radio_button_constructed (GObject *object) -{ - GdHeaderRadioButton *self = (GdHeaderRadioButton *) (object); - - G_OBJECT_CLASS (GET_PARENT_CLASS (object))->constructed (object); - - gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (self), FALSE); -} - -static void -gd_header_radio_button_class_init (GdHeaderRadioButtonClass *klass) -{ - GObjectClass *oclass = G_OBJECT_CLASS (klass); - - oclass->constructed = gd_header_radio_button_constructed; - - gd_header_button_generic_class_init (klass); -} - -static void -gd_header_radio_button_init (GdHeaderRadioButton *self) -{ -} - -/** - * gd_header_simple_button_new: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_header_simple_button_new (void) -{ - return g_object_new (GD_TYPE_HEADER_SIMPLE_BUTTON, NULL); -} - -/** - * gd_header_toggle_button_new: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_header_toggle_button_new (void) -{ - return g_object_new (GD_TYPE_HEADER_TOGGLE_BUTTON, NULL); -} - -/** - * gd_header_radio_button_new: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_header_radio_button_new (void) -{ - return g_object_new (GD_TYPE_HEADER_RADIO_BUTTON, NULL); -} - -/** - * gd_header_menu_button_new: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_header_menu_button_new (void) -{ - return g_object_new (GD_TYPE_HEADER_MENU_BUTTON, NULL); -} diff -Nru bijiben-3.8.4/libgd/libgd/gd-header-button.h bijiben-3.10.2/libgd/libgd/gd-header-button.h --- bijiben-3.8.4/libgd/libgd/gd-header-button.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-header-button.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#ifndef __GD_HEADER_BUTTON_H__ -#define __GD_HEADER_BUTTON_H__ - -#include - -G_BEGIN_DECLS - -#define GD_TYPE_HEADER_BUTTON (gd_header_button_get_type ()) -#define GD_HEADER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_HEADER_BUTTON, GdHeaderButton)) -#define GD_IS_HEADER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_HEADER_BUTTON)) - -typedef struct _GdHeaderButton GdHeaderButton; - -GType gd_header_button_get_type (void) G_GNUC_CONST; - -void gd_header_button_set_label (GdHeaderButton *self, - const gchar *label); -void gd_header_button_set_symbolic_icon_name (GdHeaderButton *self, - const gchar *symbolic_icon_name); -gchar * gd_header_button_get_label (GdHeaderButton *self); -gchar * gd_header_button_get_symbolic_icon_name (GdHeaderButton *self); - -#define GD_TYPE_HEADER_SIMPLE_BUTTON (gd_header_simple_button_get_type ()) -typedef GtkButton GdHeaderSimpleButton; -GType gd_header_simple_button_get_type (void) G_GNUC_CONST; -GtkWidget * gd_header_simple_button_new (void); - -#define GD_TYPE_HEADER_TOGGLE_BUTTON (gd_header_toggle_button_get_type ()) -typedef GtkToggleButton GdHeaderToggleButton; -GType gd_header_toggle_button_get_type (void) G_GNUC_CONST; -GtkWidget * gd_header_toggle_button_new (void); - -#define GD_TYPE_HEADER_RADIO_BUTTON (gd_header_radio_button_get_type ()) -typedef GtkRadioButton GdHeaderRadioButton; -GType gd_header_radio_button_get_type (void) G_GNUC_CONST; -GtkWidget * gd_header_radio_button_new (void); - -#define GD_TYPE_HEADER_MENU_BUTTON (gd_header_menu_button_get_type ()) -typedef GtkMenuButton GdHeaderMenuButton; -GType gd_header_menu_button_get_type (void) G_GNUC_CONST; -GtkWidget * gd_header_menu_button_new (void); - -G_END_DECLS - -#endif /* __GD_HEADER_BUTTON_H__ */ diff -Nru bijiben-3.8.4/libgd/libgd/gd-main-icon-view.c bijiben-3.10.2/libgd/libgd/gd-main-icon-view.c --- bijiben-3.8.4/libgd/libgd/gd-main-icon-view.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-main-icon-view.c 2013-11-07 22:17:50.000000000 +0000 @@ -106,6 +106,8 @@ "active", GD_MAIN_COLUMN_SELECTED); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (self), cell, "pixbuf", GD_MAIN_COLUMN_ICON); + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (self), cell, + "pulse", GD_MAIN_COLUMN_PULSE); cell = gd_two_lines_renderer_new (); g_object_set (cell, @@ -295,7 +297,7 @@ GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); GtkBindingSet *binding_set; GdkModifierType activate_modifiers[] = { GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_SHIFT_MASK | GDK_CONTROL_MASK }; - int i; + guint i; binding_set = gtk_binding_set_by_class (klass); diff -Nru bijiben-3.8.4/libgd/libgd/gd-main-list-view.c bijiben-3.10.2/libgd/libgd/gd-main-list-view.c --- bijiben-3.8.4/libgd/libgd/gd-main-list-view.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-main-list-view.c 2013-11-07 22:17:50.000000000 +0000 @@ -146,7 +146,7 @@ GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); GtkBindingSet *binding_set; GdkModifierType activate_modifiers[] = { GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_SHIFT_MASK | GDK_CONTROL_MASK }; - int i; + guint i; binding_set = gtk_binding_set_by_class (klass); diff -Nru bijiben-3.8.4/libgd/libgd/gd-main-toolbar.c bijiben-3.10.2/libgd/libgd/gd-main-toolbar.c --- bijiben-3.8.4/libgd/libgd/gd-main-toolbar.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-main-toolbar.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,515 +0,0 @@ -/* - * Copyright (c) 2011, 2012 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Cosimo Cecchi - * - */ - -#include "gd-main-toolbar.h" -#include "gd-header-button.h" - -#include -#include - -G_DEFINE_TYPE (GdMainToolbar, gd_main_toolbar, GTK_TYPE_TOOLBAR) - -struct _GdMainToolbarPrivate { - GtkSizeGroup *size_group; - GtkSizeGroup *vertical_size_group; - - GtkToolItem *left_group; - GtkToolItem *center_group; - GtkToolItem *right_group; - - GtkWidget *left_grid; - GtkWidget *center_grid; - - GtkWidget *labels_grid; - GtkWidget *title_label; - GtkWidget *detail_label; - - GtkWidget *modes_box; - - GtkWidget *center_menu; - GtkWidget *center_menu_child; - - GtkWidget *right_grid; - - gboolean show_modes; -}; - -enum { - PROP_0, - PROP_SHOW_MODES, -}; - -static void -gd_main_toolbar_dispose (GObject *obj) -{ - GdMainToolbar *self = GD_MAIN_TOOLBAR (obj); - - g_clear_object (&self->priv->size_group); - g_clear_object (&self->priv->vertical_size_group); - - G_OBJECT_CLASS (gd_main_toolbar_parent_class)->dispose (obj); -} - -static GtkSizeGroup * -get_vertical_size_group (GdMainToolbar *self) -{ - GtkSizeGroup *retval; - GtkWidget *dummy; - GtkToolItem *container; - - dummy = gd_header_simple_button_new (); - gd_header_button_set_label (GD_HEADER_BUTTON (dummy), "Dummy"); - container = gtk_tool_item_new (); - gtk_widget_set_no_show_all (GTK_WIDGET (container), TRUE); - gtk_container_add (GTK_CONTAINER (container), dummy); - gtk_toolbar_insert (GTK_TOOLBAR (self), container, -1); - - retval = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); - gtk_size_group_add_widget (retval, dummy); - - return retval; -} - -gboolean -gd_main_toolbar_get_show_modes (GdMainToolbar *self) -{ - return self->priv->show_modes; -} - -void -gd_main_toolbar_set_show_modes (GdMainToolbar *self, - gboolean show_modes) -{ - if (self->priv->show_modes == show_modes) - return; - - self->priv->show_modes = show_modes; - if (self->priv->show_modes) - { - gtk_widget_set_no_show_all (self->priv->labels_grid, TRUE); - gtk_widget_hide (self->priv->labels_grid); - - gtk_widget_set_valign (self->priv->center_grid, GTK_ALIGN_FILL); - gtk_widget_set_no_show_all (self->priv->modes_box, FALSE); - gtk_widget_show_all (self->priv->modes_box); - } - else - { - gtk_widget_set_no_show_all (self->priv->modes_box, TRUE); - gtk_widget_hide (self->priv->modes_box); - - gtk_widget_set_valign (self->priv->center_grid, GTK_ALIGN_CENTER); - gtk_widget_set_no_show_all (self->priv->labels_grid, FALSE); - gtk_widget_show_all (self->priv->labels_grid); - } - - g_object_notify (G_OBJECT (self), "show-modes"); -} - -static void -gd_main_toolbar_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - - GdMainToolbar *self = GD_MAIN_TOOLBAR (object); - - switch (prop_id) - { - case PROP_SHOW_MODES: - gd_main_toolbar_set_show_modes (GD_MAIN_TOOLBAR (self), g_value_get_boolean (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_main_toolbar_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GdMainToolbar *self = GD_MAIN_TOOLBAR (object); - - switch (prop_id) - { - case PROP_SHOW_MODES: - g_value_set_boolean (value, self->priv->show_modes); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_main_toolbar_constructed (GObject *obj) -{ - GdMainToolbar *self = GD_MAIN_TOOLBAR (obj); - GtkToolbar *tb = GTK_TOOLBAR (obj); - GtkWidget *grid; - - G_OBJECT_CLASS (gd_main_toolbar_parent_class)->constructed (obj); - - self->priv->vertical_size_group = get_vertical_size_group (self); - - /* left section */ - self->priv->left_group = gtk_tool_item_new (); - gtk_widget_set_margin_right (GTK_WIDGET (self->priv->left_group), 12); - gtk_toolbar_insert (tb, self->priv->left_group, -1); - gtk_size_group_add_widget (self->priv->vertical_size_group, - GTK_WIDGET (self->priv->left_group)); - - /* left button group */ - self->priv->left_grid = gtk_grid_new (); - gtk_grid_set_column_spacing (GTK_GRID (self->priv->left_grid), 12); - gtk_container_add (GTK_CONTAINER (self->priv->left_group), self->priv->left_grid); - gtk_widget_set_halign (self->priv->left_grid, GTK_ALIGN_START); - - /* center section */ - self->priv->center_group = gtk_tool_item_new (); - gtk_tool_item_set_expand (self->priv->center_group, TRUE); - gtk_toolbar_insert (tb, self->priv->center_group, -1); - self->priv->center_grid = gtk_grid_new (); - gtk_widget_set_halign (self->priv->center_grid, GTK_ALIGN_CENTER); - gtk_widget_set_valign (self->priv->center_grid, GTK_ALIGN_CENTER); - gtk_container_add (GTK_CONTAINER (self->priv->center_group), self->priv->center_grid); - gtk_size_group_add_widget (self->priv->vertical_size_group, - GTK_WIDGET (self->priv->center_group)); - - /* centered label group */ - self->priv->labels_grid = grid = gtk_grid_new (); - gtk_grid_set_column_spacing (GTK_GRID (grid), 12); - gtk_container_add (GTK_CONTAINER (self->priv->center_grid), grid); - - self->priv->title_label = gtk_label_new (NULL); - gtk_label_set_ellipsize (GTK_LABEL (self->priv->title_label), PANGO_ELLIPSIZE_END); - gtk_container_add (GTK_CONTAINER (grid), self->priv->title_label); - - self->priv->detail_label = gtk_label_new (NULL); - gtk_label_set_ellipsize (GTK_LABEL (self->priv->detail_label), PANGO_ELLIPSIZE_END); - gtk_widget_set_no_show_all (self->priv->detail_label, TRUE); - gtk_style_context_add_class (gtk_widget_get_style_context (self->priv->detail_label), "dim-label"); - gtk_container_add (GTK_CONTAINER (grid), self->priv->detail_label); - - /* centered mode group */ - self->priv->modes_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_set_homogeneous (GTK_BOX (self->priv->modes_box), TRUE); - gtk_widget_set_no_show_all (self->priv->modes_box, TRUE); - gtk_style_context_add_class (gtk_widget_get_style_context (self->priv->modes_box), "linked"); - gtk_container_add (GTK_CONTAINER (self->priv->center_grid), self->priv->modes_box); - - /* right section */ - self->priv->right_group = gtk_tool_item_new (); - gtk_widget_set_margin_left (GTK_WIDGET (self->priv->right_group), 12); - gtk_toolbar_insert (tb, self->priv->right_group, -1); - gtk_size_group_add_widget (self->priv->vertical_size_group, - GTK_WIDGET (self->priv->right_group)); - - self->priv->right_grid = gtk_grid_new (); - gtk_grid_set_column_spacing (GTK_GRID (self->priv->right_grid), 12); - gtk_container_add (GTK_CONTAINER (self->priv->right_group), self->priv->right_grid); - gtk_widget_set_halign (self->priv->right_grid, GTK_ALIGN_END); - - self->priv->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - gtk_size_group_add_widget (self->priv->size_group, GTK_WIDGET (self->priv->left_group)); - gtk_size_group_add_widget (self->priv->size_group, GTK_WIDGET (self->priv->right_group)); -} - -static void -gd_main_toolbar_init (GdMainToolbar *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GD_TYPE_MAIN_TOOLBAR, GdMainToolbarPrivate); -} - -static void -gd_main_toolbar_class_init (GdMainToolbarClass *klass) -{ - GObjectClass *oclass; - - oclass = G_OBJECT_CLASS (klass); - oclass->constructed = gd_main_toolbar_constructed; - oclass->set_property = gd_main_toolbar_set_property; - oclass->get_property = gd_main_toolbar_get_property; - oclass->dispose = gd_main_toolbar_dispose; - - g_object_class_install_property (oclass, - PROP_SHOW_MODES, - g_param_spec_boolean ("show-modes", - "Show Modes", - "Show Modes", - FALSE, - G_PARAM_READWRITE)); - - g_type_class_add_private (klass, sizeof (GdMainToolbarPrivate)); -} - -void -gd_main_toolbar_clear (GdMainToolbar *self) -{ - /* reset labels */ - gtk_label_set_text (GTK_LABEL (self->priv->title_label), ""); - gtk_label_set_text (GTK_LABEL (self->priv->detail_label), ""); - - /* clear all added buttons */ - gtk_container_foreach (GTK_CONTAINER (self->priv->left_grid), - (GtkCallback) gtk_widget_destroy, self); - gtk_container_foreach (GTK_CONTAINER (self->priv->modes_box), - (GtkCallback) gtk_widget_destroy, self); - gtk_container_foreach (GTK_CONTAINER (self->priv->right_grid), - (GtkCallback) gtk_widget_destroy, self); -} - -/** - * gd_main_toolbar_set_labels: - * @self: - * @primary: (allow-none): - * @detail: (allow-none): - * - */ -void -gd_main_toolbar_set_labels (GdMainToolbar *self, - const gchar *primary, - const gchar *detail) -{ - gchar *real_primary = NULL; - - if (primary != NULL) - real_primary = g_markup_printf_escaped ("%s", primary); - - if (real_primary == NULL) - { - gtk_label_set_markup (GTK_LABEL (self->priv->title_label), ""); - gtk_widget_hide (self->priv->title_label); - } - else - { - gtk_label_set_markup (GTK_LABEL (self->priv->title_label), real_primary); - gtk_widget_show (self->priv->title_label); - } - - if (detail == NULL) - { - gtk_label_set_text (GTK_LABEL (self->priv->detail_label), ""); - gtk_widget_hide (self->priv->detail_label); - } - else - { - gtk_label_set_text (GTK_LABEL (self->priv->detail_label), detail); - gtk_widget_show (self->priv->detail_label); - } - - g_free (real_primary); -} - -GtkWidget * -gd_main_toolbar_new (void) -{ - return g_object_new (GD_TYPE_MAIN_TOOLBAR, NULL); -} - -/** - * gd_main_toolbar_set_labels_menu: - * @self: - * @menu: (allow-none): - * - */ -void -gd_main_toolbar_set_labels_menu (GdMainToolbar *self, - GMenuModel *menu) -{ - GtkWidget *button, *grid, *w; - - if (menu == NULL && - ((gtk_widget_get_parent (self->priv->labels_grid) == self->priv->center_grid) || - self->priv->center_menu_child == NULL)) - return; - - if (menu != NULL) - { - g_object_ref (self->priv->labels_grid); - gtk_container_remove (GTK_CONTAINER (self->priv->center_grid), - self->priv->labels_grid); - - self->priv->center_menu_child = grid = gtk_grid_new (); - gtk_grid_set_column_spacing (GTK_GRID (grid), 6); - gtk_container_add (GTK_CONTAINER (grid), self->priv->labels_grid); - g_object_unref (self->priv->labels_grid); - - w = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); - gtk_container_add (GTK_CONTAINER (grid), w); - - self->priv->center_menu = button = gtk_menu_button_new (); - gtk_style_context_add_class (gtk_widget_get_style_context (self->priv->center_menu), - "selection-menu"); - gtk_widget_destroy (gtk_bin_get_child (GTK_BIN (button))); - gtk_widget_set_halign (button, GTK_ALIGN_CENTER); - gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu); - gtk_container_add (GTK_CONTAINER (self->priv->center_menu), grid); - - gtk_container_add (GTK_CONTAINER (self->priv->center_grid), button); - } - else - { - g_object_ref (self->priv->labels_grid); - gtk_container_remove (GTK_CONTAINER (self->priv->center_menu_child), - self->priv->labels_grid); - gtk_widget_destroy (self->priv->center_menu); - - self->priv->center_menu = NULL; - self->priv->center_menu_child = NULL; - - gtk_container_add (GTK_CONTAINER (self->priv->center_grid), - self->priv->labels_grid); - g_object_unref (self->priv->labels_grid); - } - - gtk_widget_show_all (self->priv->center_grid); -} - -/** - * gd_main_toolbar_add_mode: - * @self: - * @label: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_main_toolbar_add_mode (GdMainToolbar *self, - const gchar *label) -{ - GtkWidget *button; - GList *group; - - button = gtk_radio_button_new_with_label (NULL, label); - gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE); - gtk_widget_set_size_request (button, 100, -1); - gtk_style_context_add_class (gtk_widget_get_style_context (button), "raised"); - gtk_style_context_add_class (gtk_widget_get_style_context (button), "text-button"); - - group = gtk_container_get_children (GTK_CONTAINER (self->priv->modes_box)); - if (group != NULL) - { - gtk_radio_button_join_group (GTK_RADIO_BUTTON (button), GTK_RADIO_BUTTON (group->data)); - g_list_free (group); - } - - gtk_container_add (GTK_CONTAINER (self->priv->modes_box), button); - gtk_widget_show (button); - - return button; -} - -/** - * gd_main_toolbar_add_button: - * @self: - * @icon_name: (allow-none): - * @label: (allow-none): - * @pack_start: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_main_toolbar_add_button (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start) -{ - GtkWidget *button = gd_header_simple_button_new (); - - gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (button), icon_name); - gd_header_button_set_label (GD_HEADER_BUTTON (button), label); - - gd_main_toolbar_add_widget (self, button, pack_start); - - return button; -} - -/** - * gd_main_toolbar_add_menu: - * @self: - * @icon_name: (allow-none): - * @label: (allow-none): - * @pack_start: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_main_toolbar_add_menu (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start) -{ - GtkWidget *button = gd_header_menu_button_new (); - - gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (button), icon_name); - gd_header_button_set_label (GD_HEADER_BUTTON (button), label); - - gd_main_toolbar_add_widget (self, button, pack_start); - - return button; -} - -/** - * gd_main_toolbar_add_toggle: - * @self: - * @icon_name: (allow-none): - * @label: (allow-none): - * @pack_start: - * - * Returns: (transfer none): - */ -GtkWidget * -gd_main_toolbar_add_toggle (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start) -{ - GtkWidget *button = gd_header_toggle_button_new (); - - gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (button), icon_name); - gd_header_button_set_label (GD_HEADER_BUTTON (button), label); - - gd_main_toolbar_add_widget (self, button, pack_start); - - return button; -} - -/** - * gd_main_toolbar_add_widget: - * @self: - * @widget: - * @pack_start: - * - */ -void -gd_main_toolbar_add_widget (GdMainToolbar *self, - GtkWidget *widget, - gboolean pack_start) -{ - if (pack_start) - gtk_container_add (GTK_CONTAINER (self->priv->left_grid), widget); - else - gtk_container_add (GTK_CONTAINER (self->priv->right_grid), widget); -} diff -Nru bijiben-3.8.4/libgd/libgd/gd-main-toolbar.h bijiben-3.10.2/libgd/libgd/gd-main-toolbar.h --- bijiben-3.8.4/libgd/libgd/gd-main-toolbar.h 2013-06-15 15:34:50.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-main-toolbar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2011, 2012 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Cosimo Cecchi - * - */ - -#ifndef __GD_MAIN_TOOLBAR_H__ -#define __GD_MAIN_TOOLBAR_H__ - -#include - -#include - -G_BEGIN_DECLS - -#define GD_TYPE_MAIN_TOOLBAR gd_main_toolbar_get_type() - -#define GD_MAIN_TOOLBAR(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GD_TYPE_MAIN_TOOLBAR, GdMainToolbar)) - -#define GD_MAIN_TOOLBAR_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - GD_TYPE_MAIN_TOOLBAR, GdMainToolbarClass)) - -#define GD_IS_MAIN_TOOLBAR(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GD_TYPE_MAIN_TOOLBAR)) - -#define GD_IS_MAIN_TOOLBAR_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - GD_TYPE_MAIN_TOOLBAR)) - -#define GD_MAIN_TOOLBAR_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GD_TYPE_MAIN_TOOLBAR, GdMainToolbarClass)) - -typedef struct _GdMainToolbar GdMainToolbar; -typedef struct _GdMainToolbarClass GdMainToolbarClass; -typedef struct _GdMainToolbarPrivate GdMainToolbarPrivate; - -struct _GdMainToolbar -{ - GtkToolbar parent; - - GdMainToolbarPrivate *priv; -}; - -struct _GdMainToolbarClass -{ - GtkToolbarClass parent_class; -}; - -GType gd_main_toolbar_get_type (void) G_GNUC_CONST; - -GtkWidget *gd_main_toolbar_new (void); - -void gd_main_toolbar_set_labels (GdMainToolbar *self, - const gchar *primary, - const gchar *detail); - -void gd_main_toolbar_set_labels_menu (GdMainToolbar *self, - GMenuModel *menu); - -GtkWidget * gd_main_toolbar_add_mode (GdMainToolbar *self, - const gchar *label); - -void gd_main_toolbar_clear (GdMainToolbar *self); - -GtkWidget * gd_main_toolbar_add_button (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start); - -GtkWidget * gd_main_toolbar_add_toggle (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start); - -GtkWidget * gd_main_toolbar_add_menu (GdMainToolbar *self, - const gchar *icon_name, - const gchar *label, - gboolean pack_start); - -void gd_main_toolbar_add_widget (GdMainToolbar *self, - GtkWidget *widget, - gboolean pack_start); - -gboolean gd_main_toolbar_get_show_modes (GdMainToolbar *self); - -void gd_main_toolbar_set_show_modes (GdMainToolbar *self, - gboolean show_modes); - -G_END_DECLS - -#endif /* __GD_MAIN_TOOLBAR_H__ */ diff -Nru bijiben-3.8.4/libgd/libgd/gd-main-view-generic.h bijiben-3.10.2/libgd/libgd/gd-main-view-generic.h --- bijiben-3.8.4/libgd/libgd/gd-main-view-generic.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-main-view-generic.h 2013-10-25 20:27:50.000000000 +0000 @@ -36,6 +36,7 @@ GD_MAIN_COLUMN_ICON, GD_MAIN_COLUMN_MTIME, GD_MAIN_COLUMN_SELECTED, + GD_MAIN_COLUMN_PULSE, GD_MAIN_COLUMN_LAST } GdMainColumns; diff -Nru bijiben-3.8.4/libgd/libgd/gd-revealer.c bijiben-3.10.2/libgd/libgd/gd-revealer.c --- bijiben-3.8.4/libgd/libgd/gd-revealer.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-revealer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,744 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Alexander Larsson - * - */ - -#include -#include "gd-revealer.h" -#include - -enum { - PROP_0, - PROP_ORIENTATION, - PROP_TRANSITION_DURATION, - PROP_REVEAL_CHILD, - PROP_CHILD_REVEALED -}; - -#define FRAME_TIME_MSEC 17 /* 17 msec => 60 fps */ - -struct _GdRevealerPrivate { - GtkOrientation orientation; - gint transition_duration; - - GdkWindow* bin_window; - GdkWindow* view_window; - - gdouble current_pos; - gdouble source_pos; - gdouble target_pos; - - guint tick_id; - gint64 start_time; - gint64 end_time; -}; - -#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB -#define GD_REVEALER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GD_TYPE_REVEALER, GdRevealerPrivate)) - -static void gd_revealer_real_realize (GtkWidget *widget); -static void gd_revealer_real_unrealize (GtkWidget *widget); -static void gd_revealer_real_add (GtkContainer *widget, - GtkWidget *child); -static void gd_revealer_real_style_updated (GtkWidget *widget); -static void gd_revealer_real_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gd_revealer_real_map (GtkWidget *widget); -static void gd_revealer_real_unmap (GtkWidget *widget); -static gboolean gd_revealer_real_draw (GtkWidget *widget, - cairo_t *cr); -static void gd_revealer_real_get_preferred_height (GtkWidget *widget, - gint *minimum_height, - gint *natural_height); -static void gd_revealer_real_get_preferred_height_for_width (GtkWidget *widget, - gint width, - gint *minimum_height, - gint *natural_height); -static void gd_revealer_real_get_preferred_width (GtkWidget *widget, - gint *minimum_width, - gint *natural_width); -static void gd_revealer_real_get_preferred_width_for_height (GtkWidget *widget, - gint height, - gint *minimum_width, - gint *natural_width); - -G_DEFINE_TYPE(GdRevealer, gd_revealer, GTK_TYPE_BIN); - -static void -gd_revealer_init (GdRevealer *revealer) -{ - GdRevealerPrivate *priv; - - priv = GD_REVEALER_GET_PRIVATE (revealer); - revealer->priv = priv; - - priv->orientation = GTK_ORIENTATION_HORIZONTAL; - priv->transition_duration = 250; - priv->current_pos = 0.0; - priv->target_pos = 0.0; - - gtk_widget_set_has_window ((GtkWidget*) revealer, TRUE); - gtk_widget_set_redraw_on_allocate ((GtkWidget*) revealer, FALSE); -} - -static void -gd_revealer_finalize (GObject* obj) -{ - GdRevealer *revealer = GD_REVEALER (obj); - GdRevealerPrivate *priv = revealer->priv; - - if (priv->tick_id != 0) - gtk_widget_remove_tick_callback (GTK_WIDGET (revealer), priv->tick_id); - priv->tick_id = 0; - - G_OBJECT_CLASS (gd_revealer_parent_class)->finalize (obj); -} - -static void -gd_revealer_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GdRevealer *revealer = GD_REVEALER (object); - - switch (property_id) { - case PROP_ORIENTATION: - g_value_set_enum (value, gd_revealer_get_orientation (revealer)); - break; - case PROP_TRANSITION_DURATION: - g_value_set_int (value, gd_revealer_get_transition_duration (revealer)); - break; - case PROP_REVEAL_CHILD: - g_value_set_boolean (value, gd_revealer_get_reveal_child (revealer)); - break; - case PROP_CHILD_REVEALED: - g_value_set_boolean (value, gd_revealer_get_child_revealed (revealer)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gd_revealer_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GdRevealer *revealer = GD_REVEALER (object); - - switch (property_id) { - case PROP_ORIENTATION: - gd_revealer_set_orientation (revealer, g_value_get_enum (value)); - break; - case PROP_TRANSITION_DURATION: - gd_revealer_set_transition_duration (revealer, g_value_get_int (value)); - break; - case PROP_REVEAL_CHILD: - gd_revealer_set_reveal_child (revealer, g_value_get_boolean (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gd_revealer_class_init (GdRevealerClass * klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); - GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); - - object_class->get_property = gd_revealer_get_property; - object_class->set_property = gd_revealer_set_property; - object_class->finalize = gd_revealer_finalize; - - widget_class->realize = gd_revealer_real_realize; - widget_class->unrealize = gd_revealer_real_unrealize; - widget_class->style_updated = gd_revealer_real_style_updated; - widget_class->size_allocate = gd_revealer_real_size_allocate; - widget_class->map = gd_revealer_real_map; - widget_class->unmap = gd_revealer_real_unmap; - widget_class->draw = gd_revealer_real_draw; - widget_class->get_preferred_height = gd_revealer_real_get_preferred_height; - widget_class->get_preferred_height_for_width = gd_revealer_real_get_preferred_height_for_width; - widget_class->get_preferred_width = gd_revealer_real_get_preferred_width; - widget_class->get_preferred_width_for_height = gd_revealer_real_get_preferred_width_for_height; - - container_class->add = gd_revealer_real_add; - - g_object_class_install_property (object_class, - PROP_ORIENTATION, - g_param_spec_enum ("orientation", "orientation", - "The orientation of the widget", - GTK_TYPE_ORIENTATION, - GTK_ORIENTATION_HORIZONTAL, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - g_object_class_install_property (object_class, - PROP_TRANSITION_DURATION, - g_param_spec_int ("transition-duration", "Transition duration", - "The animation duration, in milliseconds", - G_MININT, G_MAXINT, - 250, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - g_object_class_install_property (object_class, - PROP_REVEAL_CHILD, - g_param_spec_boolean ("reveal-child", "Reveal Child", - "Whether the container should reveal the child", - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, - PROP_CHILD_REVEALED, - g_param_spec_boolean ("child-revealed", "Child Revealed", - "Whether the child is revealed and the animation target reached", - FALSE, - G_PARAM_READABLE)); - - g_type_class_add_private (klass, sizeof (GdRevealerPrivate)); -} - - -GtkWidget * -gd_revealer_new (void) -{ - return g_object_new (GD_TYPE_REVEALER, NULL); -} - -static void -gd_revealer_get_child_allocation (GdRevealer *revealer, - GtkAllocation* allocation, - GtkAllocation* child_allocation) -{ - GtkWidget *child; - GdRevealerPrivate *priv; - - g_return_if_fail (revealer != NULL); - g_return_if_fail (allocation != NULL); - - priv = revealer->priv; - - child_allocation->x = 0; - child_allocation->y = 0; - child_allocation->width = allocation->width; - child_allocation->height = allocation->height; - - child = gtk_bin_get_child (GTK_BIN (revealer)); - if (child != NULL && gtk_widget_get_visible (child)) - { - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - gtk_widget_get_preferred_height_for_width (child, child_allocation->width, NULL, - &child_allocation->height); - else - gtk_widget_get_preferred_width_for_height (child, child_allocation->height, NULL, - &child_allocation->width); - } -} - -static void -gd_revealer_real_realize (GtkWidget *widget) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - GtkAllocation allocation; - GdkWindowAttr attributes = { 0 }; - GdkWindowAttributesType attributes_mask; - GtkAllocation child_allocation; - GtkWidget *child; - GtkStyleContext *context; - - gtk_widget_set_realized (widget, TRUE); - - gtk_widget_get_allocation (widget, &allocation); - - attributes.x = allocation.x; - attributes.y = allocation.y; - attributes.width = allocation.width; - attributes.height = allocation.height; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.event_mask = - gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - attributes_mask = (GDK_WA_X | GDK_WA_Y) | GDK_WA_VISUAL; - - priv->view_window = - gdk_window_new (gtk_widget_get_parent_window ((GtkWidget*) revealer), - &attributes, attributes_mask); - gtk_widget_set_window (widget, priv->view_window); - gtk_widget_register_window (widget, priv->view_window); - - gd_revealer_get_child_allocation (revealer, &allocation, &child_allocation); - - attributes.x = 0; - attributes.y = 0; - attributes.width = child_allocation.width; - attributes.height = child_allocation.height; - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - attributes.y = allocation.height - child_allocation.height; - else - attributes.x = allocation.width - child_allocation.width; - - priv->bin_window = - gdk_window_new (priv->view_window, &attributes, attributes_mask); - gtk_widget_register_window (widget, priv->bin_window); - - child = gtk_bin_get_child (GTK_BIN (revealer)); - if (child != NULL) - gtk_widget_set_parent_window (child, priv->bin_window); - - context = gtk_widget_get_style_context (widget); - gtk_style_context_set_background (context, priv->view_window); - gtk_style_context_set_background (context, priv->bin_window); - gdk_window_show (priv->bin_window); -} - - -static void -gd_revealer_real_unrealize (GtkWidget* widget) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - - gtk_widget_unregister_window (widget, priv->bin_window); - gdk_window_destroy (priv->bin_window); - priv->view_window = NULL; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->unrealize (widget); -} - - -static void -gd_revealer_real_add (GtkContainer* container, - GtkWidget* child) -{ - GdRevealer *revealer = GD_REVEALER (container); - GdRevealerPrivate *priv = revealer->priv; - - g_return_if_fail (child != NULL); - - gtk_widget_set_parent_window (child, priv->bin_window); - gtk_widget_set_child_visible (child, priv->current_pos != 0.0); - - GTK_CONTAINER_CLASS (gd_revealer_parent_class)->add (container, child); -} - - -static void -gd_revealer_real_style_updated (GtkWidget* widget) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - GtkStyleContext* context; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->style_updated (widget); - - if (gtk_widget_get_realized (widget)) - { - context = gtk_widget_get_style_context (widget); - gtk_style_context_set_background (context, priv->bin_window); - gtk_style_context_set_background (context, priv->view_window); - } -} - - -static void -gd_revealer_real_size_allocate (GtkWidget* widget, - GtkAllocation* allocation) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - GtkAllocation child_allocation; - GtkWidget *child; - gboolean window_visible; - int bin_x, bin_y; - - g_return_if_fail (allocation != NULL); - - gtk_widget_set_allocation (widget, allocation); - gd_revealer_get_child_allocation (revealer, allocation, &child_allocation); - - child = gtk_bin_get_child (GTK_BIN (revealer)); - if (child != NULL && - gtk_widget_get_visible (child)) - gtk_widget_size_allocate (child, &child_allocation); - - if (gtk_widget_get_realized (widget)) - { - if (gtk_widget_get_mapped (widget)) - { - window_visible = - allocation->width > 0 && allocation->height > 0; - - if (!window_visible && - gdk_window_is_visible (priv->view_window)) - gdk_window_hide (priv->view_window); - - if (window_visible && - !gdk_window_is_visible (priv->view_window)) - gdk_window_show (priv->view_window); - } - - gdk_window_move_resize (priv->view_window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - bin_x = 0; - bin_y = 0; - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - bin_y = allocation->height - child_allocation.height; - else - bin_x = allocation->width - child_allocation.width; - - gdk_window_move_resize (priv->bin_window, - bin_x, bin_y, - child_allocation.width, child_allocation.height); - } -} - - -static void -gd_revealer_set_position (GdRevealer *revealer, - gdouble pos) -{ - GdRevealerPrivate *priv = revealer->priv; - gboolean new_visible; - GtkWidget *child; - - priv->current_pos = pos; - - /* We check target_pos here too, because we want to ensure we set - * child_visible immediately when starting a reveal operation - * otherwise the child widgets will not be properly realized - * after the reveal returns. - */ - new_visible = priv->current_pos != 0.0 || priv->target_pos != 0.0; - - child = gtk_bin_get_child (GTK_BIN (revealer)); - if (child != NULL && - new_visible != gtk_widget_get_child_visible (child)) - gtk_widget_set_child_visible (child, new_visible); - - gtk_widget_queue_resize (GTK_WIDGET (revealer)); - - if (priv->current_pos == priv->target_pos) - g_object_notify (G_OBJECT (revealer), "child-revealed"); -} - -static gdouble -ease_out_quad (gdouble t, gdouble d) -{ - gdouble p = t / d; - return ((-1.0) * p) * (p - 2); -} - -static void -gd_revealer_animate_step (GdRevealer *revealer, - gint64 now) -{ - GdRevealerPrivate *priv = revealer->priv; - gdouble t; - - t = 1.0; - if (now < priv->end_time) - t = (now - priv->start_time) / (double) (priv->end_time - priv->start_time); - t = ease_out_quad (t, 1.0); - - gd_revealer_set_position (revealer, - priv->source_pos + (t * (priv->target_pos - priv->source_pos))); -} - -static gboolean -gd_revealer_animate_cb (GdRevealer *revealer, - GdkFrameClock *frame_clock, - gpointer user_data) -{ - GdRevealerPrivate *priv = revealer->priv; - gint64 now; - - now = gdk_frame_clock_get_frame_time (frame_clock); - gd_revealer_animate_step (revealer, now); - if (priv->current_pos == priv->target_pos) - { - priv->tick_id = 0; - return FALSE; - } - - return TRUE; -} - -static void -gd_revealer_start_animation (GdRevealer *revealer, - gdouble target) -{ - GdRevealerPrivate *priv = revealer->priv; - GtkWidget *widget = GTK_WIDGET (revealer); - - if (priv->target_pos == target) - return; - - priv->target_pos = target; - g_object_notify (G_OBJECT (revealer), "reveal-child"); - - if (gtk_widget_get_mapped (widget)) - { - priv->source_pos = priv->current_pos; - priv->start_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget)); - priv->end_time = priv->start_time + (priv->transition_duration * 1000); - if (priv->tick_id == 0) - priv->tick_id = - gtk_widget_add_tick_callback (widget, (GtkTickCallback)gd_revealer_animate_cb, revealer, NULL); - gd_revealer_animate_step (revealer, priv->start_time); - } - else - { - gd_revealer_set_position (revealer, target); - } -} - - -static void -gd_revealer_stop_animation (GdRevealer *revealer) -{ - GdRevealerPrivate *priv = revealer->priv; - - priv->current_pos = priv->target_pos; - if (priv->tick_id != 0) - { - gtk_widget_remove_tick_callback (GTK_WIDGET (revealer), priv->tick_id); - priv->tick_id = 0; - } -} - - -static void -gd_revealer_real_map (GtkWidget *widget) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - GtkAllocation allocation; - - if (!gtk_widget_get_mapped (widget)) - { - gtk_widget_get_allocation (widget, &allocation); - - if (allocation.width > 0 && allocation.height > 0) - gdk_window_show (priv->view_window); - - gd_revealer_start_animation (revealer, priv->target_pos); - } - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->map (widget); -} - -static void -gd_revealer_real_unmap (GtkWidget *widget) -{ - GdRevealer *revealer = GD_REVEALER (widget); - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->unmap (widget); - - gd_revealer_stop_animation (revealer); -} - - -static gboolean -gd_revealer_real_draw (GtkWidget *widget, - cairo_t *cr) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - - if (gtk_cairo_should_draw_window (cr, priv->bin_window)) - GTK_WIDGET_CLASS (gd_revealer_parent_class)->draw (widget, cr); - - return TRUE; -} - -void -gd_revealer_set_reveal_child (GdRevealer *revealer, - gboolean setting) -{ - g_return_if_fail (GD_IS_REVEALER (revealer)); - - if (setting) - gd_revealer_start_animation (revealer, 1.0); - else - gd_revealer_start_animation (revealer, 0.0); -} - -gboolean -gd_revealer_get_reveal_child (GdRevealer *revealer) -{ - g_return_val_if_fail (GD_IS_REVEALER (revealer), FALSE); - - return revealer->priv->target_pos != 0.0; -} - -gboolean -gd_revealer_get_child_revealed (GdRevealer *revealer) -{ - gboolean animation_finished = (revealer->priv->target_pos == revealer->priv->current_pos); - gboolean reveal_child = gd_revealer_get_reveal_child (revealer); - - if (animation_finished) - return reveal_child; - else - return !reveal_child; -} - -/* These all report only the natural size, ignoring the minimal size, - * because its not really possible to allocate the right size during - * animation if the child size can change (without the child - * re-arranging itself during the animation). - */ - -static void -gd_revealer_real_get_preferred_height (GtkWidget* widget, - gint* minimum_height_out, - gint* natural_height_out) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - gint minimum_height; - gint natural_height; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->get_preferred_height (widget, &minimum_height, &natural_height); - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - natural_height = round (natural_height * priv->current_pos); - - minimum_height = natural_height; - - if (minimum_height_out) - *minimum_height_out = minimum_height; - if (natural_height_out) - *natural_height_out = natural_height; -} - -static void -gd_revealer_real_get_preferred_height_for_width (GtkWidget* widget, - gint width, - gint* minimum_height_out, - gint* natural_height_out) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - gint minimum_height; - gint natural_height; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->get_preferred_height_for_width (widget, width, &minimum_height, &natural_height); - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - natural_height = round (natural_height * priv->current_pos); - - minimum_height = natural_height; - - if (minimum_height_out) - *minimum_height_out = minimum_height; - if (natural_height_out) - *natural_height_out = natural_height; -} - -static void -gd_revealer_real_get_preferred_width (GtkWidget* widget, - gint* minimum_width_out, - gint* natural_width_out) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - gint minimum_width; - gint natural_width; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->get_preferred_width (widget, &minimum_width, &natural_width); - - if (priv->orientation == GTK_ORIENTATION_VERTICAL) - natural_width = round (natural_width * priv->current_pos); - - minimum_width = natural_width; - - if (minimum_width_out) - *minimum_width_out = minimum_width; - if (natural_width_out) - *natural_width_out = natural_width; -} - -static void -gd_revealer_real_get_preferred_width_for_height (GtkWidget* widget, - gint height, - gint* minimum_width_out, - gint* natural_width_out) -{ - GdRevealer *revealer = GD_REVEALER (widget); - GdRevealerPrivate *priv = revealer->priv; - gint minimum_width; - gint natural_width; - - GTK_WIDGET_CLASS (gd_revealer_parent_class)->get_preferred_width_for_height (widget, height, &minimum_width, &natural_width); - - if (priv->orientation == GTK_ORIENTATION_VERTICAL) - natural_width = round (natural_width * priv->current_pos); - - minimum_width = natural_width; - - if (minimum_width_out) - *minimum_width_out = minimum_width; - if (natural_width_out) - *natural_width_out = natural_width; -} - -GtkOrientation -gd_revealer_get_orientation (GdRevealer *revealer) -{ - g_return_val_if_fail (revealer != NULL, 0); - - return revealer->priv->orientation; -} - -void -gd_revealer_set_orientation (GdRevealer *revealer, - GtkOrientation value) -{ - g_return_if_fail (GD_IS_REVEALER (revealer)); - - revealer->priv->orientation = value; - g_object_notify (G_OBJECT (revealer), "orientation"); -} - -gint -gd_revealer_get_transition_duration (GdRevealer *revealer) -{ - g_return_val_if_fail (revealer != NULL, 0); - - return revealer->priv->transition_duration; -} - -void -gd_revealer_set_transition_duration (GdRevealer *revealer, - gint value) -{ - g_return_if_fail (GD_IS_REVEALER (revealer)); - - revealer->priv->transition_duration = value; - g_object_notify (G_OBJECT (revealer), "transition-duration"); -} diff -Nru bijiben-3.8.4/libgd/libgd/gd-revealer.h bijiben-3.10.2/libgd/libgd/gd-revealer.h --- bijiben-3.8.4/libgd/libgd/gd-revealer.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-revealer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Alexander Larsson - * - */ - -#ifndef __GD_REVEALER_H__ -#define __GD_REVEALER_H__ - -#include - -G_BEGIN_DECLS - - -#define GD_TYPE_REVEALER (gd_revealer_get_type ()) -#define GD_REVEALER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_REVEALER, GdRevealer)) -#define GD_REVEALER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_REVEALER, GdRevealerClass)) -#define GD_IS_REVEALER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_REVEALER)) -#define GD_IS_REVEALER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_REVEALER)) -#define GD_REVEALER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_REVEALER, GdRevealerClass)) - -typedef struct _GdRevealer GdRevealer; -typedef struct _GdRevealerClass GdRevealerClass; -typedef struct _GdRevealerPrivate GdRevealerPrivate; - -struct _GdRevealer { - GtkBin parent_instance; - GdRevealerPrivate * priv; -}; - -struct _GdRevealerClass { - GtkBinClass parent_class; -}; - - -GType gd_revealer_get_type (void) G_GNUC_CONST; -GtkWidget* gd_revealer_new (void); -gboolean gd_revealer_get_reveal_child (GdRevealer *revealer); -void gd_revealer_set_reveal_child (GdRevealer *revealer, - gboolean setting); -GtkOrientation gd_revealer_get_orientation (GdRevealer *revealer); -void gd_revealer_set_orientation (GdRevealer *revealer, - GtkOrientation value); -gint gd_revealer_get_transition_duration (GdRevealer *revealer); -void gd_revealer_set_transition_duration (GdRevealer *revealer, - gint duration_msec); - -gboolean gd_revealer_get_child_revealed (GdRevealer *revealer); - - -G_END_DECLS - -#endif diff -Nru bijiben-3.8.4/libgd/libgd/gd-stack.c bijiben-3.10.2/libgd/libgd/gd-stack.c --- bijiben-3.8.4/libgd/libgd/gd-stack.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-stack.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1418 +0,0 @@ - - - -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Alexander Larsson - * - */ - -#include -#include "gd-stack.h" -#include -#include - -/* TODO: - * more transiton types (slides) - * filter events out events to the last_child widget during transitions - */ - -enum { - PROP_0, - PROP_HOMOGENEOUS, - PROP_VISIBLE_CHILD, - PROP_VISIBLE_CHILD_NAME, - PROP_TRANSITION_DURATION, - PROP_TRANSITION_TYPE, -}; - -enum -{ - CHILD_PROP_0, - CHILD_PROP_NAME, - CHILD_PROP_TITLE, - CHILD_PROP_SYMBOLIC_ICON_NAME, - CHILD_PROP_POSITION -}; - -typedef struct _GdStackChildInfo GdStackChildInfo; - -struct _GdStackChildInfo { - GtkWidget *widget; - char *name; - char *title; - char *symbolic_icon_name; -}; - -struct _GdStackPrivate { - GList *children; - - GdkWindow* bin_window; - GdkWindow* view_window; - - GdStackChildInfo *visible_child; - - gboolean homogeneous; - - GdStackTransitionType transition_type; - gint transition_duration; - - GdStackChildInfo *last_visible_child; - cairo_surface_t *last_visible_surface; - GtkAllocation last_visible_surface_allocation; - gdouble transition_pos; - - guint tick_id; - gint64 start_time; - gint64 end_time; -}; - -#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB -#define GD_STACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GD_TYPE_STACK, GdStackPrivate)) - -static void gd_stack_add (GtkContainer *widget, - GtkWidget *child); -static void gd_stack_remove (GtkContainer *widget, - GtkWidget *child); -static void gd_stack_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); -static void gd_stack_compute_expand (GtkWidget *widget, - gboolean *hexpand, - gboolean *vexpand); -static void gd_stack_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static gboolean gd_stack_draw (GtkWidget *widget, - cairo_t *cr); -static void gd_stack_get_preferred_height (GtkWidget *widget, - gint *minimum_height, - gint *natural_height); -static void gd_stack_get_preferred_height_for_width (GtkWidget *widget, - gint width, - gint *minimum_height, - gint *natural_height); -static void gd_stack_get_preferred_width (GtkWidget *widget, - gint *minimum_width, - gint *natural_width); -static void gd_stack_get_preferred_width_for_height (GtkWidget *widget, - gint height, - gint *minimum_width, - gint *natural_width); -static void gd_stack_finalize (GObject *obj); -static void gd_stack_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec); -static void gd_stack_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gd_stack_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec); -static void gd_stack_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gd_stack_unschedule_ticks (GdStack *stack); -static int get_bin_window_x (GdStack *stack, - GtkAllocation *allocation); - -G_DEFINE_TYPE(GdStack, gd_stack, GTK_TYPE_CONTAINER); - -static void -gd_stack_init (GdStack *stack) -{ - stack->priv = GD_STACK_GET_PRIVATE (stack); - - gtk_widget_set_has_window ((GtkWidget*) stack, TRUE); - gtk_widget_set_redraw_on_allocate ((GtkWidget*) stack, TRUE); -} - -static void -gd_stack_finalize (GObject* obj) -{ - GdStack *stack = GD_STACK (obj); - GdStackPrivate *priv = stack->priv; - - gd_stack_unschedule_ticks (stack); - - if (priv->last_visible_surface != NULL) - cairo_surface_destroy (priv->last_visible_surface); - - G_OBJECT_CLASS (gd_stack_parent_class)->finalize (obj); -} - -static void -gd_stack_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GdStack *stack = GD_STACK (object); - GdStackPrivate *priv = stack->priv; - - switch (property_id) - { - case PROP_HOMOGENEOUS: - g_value_set_boolean (value, priv->homogeneous); - break; - case PROP_VISIBLE_CHILD: - g_value_set_object (value, priv->visible_child); - break; - case PROP_VISIBLE_CHILD_NAME: - g_value_set_string (value, gd_stack_get_visible_child_name (stack)); - break; - case PROP_TRANSITION_DURATION: - g_value_set_int (value, gd_stack_get_transition_duration (stack)); - break; - case PROP_TRANSITION_TYPE: - g_value_set_int (value, gd_stack_get_transition_type (stack)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gd_stack_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GdStack *stack = GD_STACK (object); - - switch (property_id) - { - case PROP_HOMOGENEOUS: - gd_stack_set_homogeneous (stack, g_value_get_boolean (value)); - break; - case PROP_VISIBLE_CHILD: - gd_stack_set_visible_child (stack, g_value_get_object (value)); - break; - case PROP_VISIBLE_CHILD_NAME: - gd_stack_set_visible_child_name (stack, g_value_get_string (value)); - break; - case PROP_TRANSITION_DURATION: - gd_stack_set_transition_duration (stack, g_value_get_int (value)); - break; - case PROP_TRANSITION_TYPE: - gd_stack_set_transition_type (stack, g_value_get_int (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gd_stack_realize (GtkWidget *widget) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GtkAllocation allocation; - GdkWindowAttr attributes = { 0 }; - GdkWindowAttributesType attributes_mask; - GdStackChildInfo *info; - GList *l; - - gtk_widget_set_realized (widget, TRUE); - - gtk_widget_get_allocation (widget, &allocation); - - attributes.x = allocation.x; - attributes.y = allocation.y; - attributes.width = allocation.width; - attributes.height = allocation.height; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.event_mask = - gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - attributes_mask = (GDK_WA_X | GDK_WA_Y) | GDK_WA_VISUAL; - - priv->view_window = - gdk_window_new (gtk_widget_get_parent_window ((GtkWidget*) stack), - &attributes, attributes_mask); - gtk_widget_set_window (widget, priv->view_window); - gtk_widget_register_window (widget, priv->view_window); - - attributes.x = get_bin_window_x (stack, &allocation); - attributes.y = 0; - attributes.width = allocation.width; - attributes.height = allocation.height; - - priv->bin_window = - gdk_window_new (priv->view_window, &attributes, attributes_mask); - gtk_widget_register_window (widget, priv->bin_window); - - for (l = priv->children; l != NULL; l = l->next) - { - info = l->data; - - gtk_widget_set_parent_window (info->widget, priv->bin_window); - } - - gdk_window_show (priv->bin_window); -} - -static void -gd_stack_unrealize (GtkWidget* widget) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - - gtk_widget_unregister_window (widget, priv->bin_window); - gdk_window_destroy (priv->bin_window); - priv->view_window = NULL; - - GTK_WIDGET_CLASS (gd_stack_parent_class)->unrealize (widget); -} - -static void -gd_stack_class_init (GdStackClass * klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); - GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); - - object_class->get_property = gd_stack_get_property; - object_class->set_property = gd_stack_set_property; - object_class->finalize = gd_stack_finalize; - - widget_class->size_allocate = gd_stack_size_allocate; - widget_class->draw = gd_stack_draw; - widget_class->realize = gd_stack_realize; - widget_class->unrealize = gd_stack_unrealize; - widget_class->get_preferred_height = gd_stack_get_preferred_height; - widget_class->get_preferred_height_for_width = gd_stack_get_preferred_height_for_width; - widget_class->get_preferred_width = gd_stack_get_preferred_width; - widget_class->get_preferred_width_for_height = gd_stack_get_preferred_width_for_height; - widget_class->compute_expand = gd_stack_compute_expand; - - container_class->add = gd_stack_add; - container_class->remove = gd_stack_remove; - container_class->forall = gd_stack_forall; - container_class->set_child_property = gd_stack_set_child_property; - container_class->get_child_property = gd_stack_get_child_property; - /*container_class->get_path_for_child = gd_stack_get_path_for_child; */ - gtk_container_class_handle_border_width (container_class); - - g_object_class_install_property (object_class, - PROP_HOMOGENEOUS, - g_param_spec_boolean ("homogeneous", - "Homogeneous", - "Homogeneous sizing", - TRUE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - g_object_class_install_property (object_class, - PROP_VISIBLE_CHILD, - g_param_spec_object ("visible-child", - "Visible child", - "The widget currently visible in the stack", - GTK_TYPE_WIDGET, - GTK_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_VISIBLE_CHILD_NAME, - g_param_spec_string ("visible-child-name", - "Name of visible child", - "The name of the widget currently visible in the stack", - NULL, - GTK_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_TRANSITION_DURATION, - g_param_spec_int ("transition-duration", - "Transition duration", - "The animation duration, in milliseconds", - G_MININT, G_MAXINT, - 200, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - g_object_class_install_property (object_class, - PROP_TRANSITION_TYPE, - g_param_spec_int ("transition-type", - "Transition type", - "The type of animation used to transition", - GD_STACK_TRANSITION_TYPE_NONE, - G_MAXINT, - GD_STACK_TRANSITION_TYPE_NONE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - gtk_container_class_install_child_property (container_class, CHILD_PROP_NAME, - g_param_spec_string ("name", - "Name", - "The name of the child page", - NULL, - GTK_PARAM_READWRITE)); - - gtk_container_class_install_child_property (container_class, CHILD_PROP_TITLE, - g_param_spec_string ("title", - "Title", - "The title of the child page", - NULL, - GTK_PARAM_READWRITE)); - - gtk_container_class_install_child_property (container_class, CHILD_PROP_SYMBOLIC_ICON_NAME, - g_param_spec_string ("symbolic-icon-name", - "Symbolic icon name", - "The symbolic icon name of the child page", - NULL, - GTK_PARAM_READWRITE)); - - gtk_container_class_install_child_property (container_class, CHILD_PROP_POSITION, - g_param_spec_int ("position", - "Position", - "The index of the child in the parent", - -1, G_MAXINT, 0, - GTK_PARAM_READWRITE)); - - g_type_class_add_private (klass, sizeof (GdStackPrivate)); -} - - -GtkWidget * -gd_stack_new (void) -{ - return g_object_new (GD_TYPE_STACK, NULL); -} - -static GdStackChildInfo * -find_child_info_for_widget (GdStack *stack, - GtkWidget *child) -{ - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *info; - GList *l; - - for (l = priv->children; l != NULL; l = l->next) - { - info = l->data; - if (info->widget == child) - return info; - } - - return NULL; -} - -static void -reorder_child (GdStack *stack, - GtkWidget *child, - gint position) -{ - GdStackPrivate *priv; - GList *l; - GList *old_link = NULL; - GList *new_link = NULL; - GdStackChildInfo *child_info; - gint num = 0; - - priv = stack->priv; - - l = priv->children; - - /* Loop to find the old position and link of child, new link of child and - * total number of children. new_link will be NULL if the child should be - * moved to the end (in case of position being < 0 || >= num) - */ - while (l && (new_link == NULL || old_link == NULL)) - { - /* Record the new position if found */ - if (position == num) - new_link = l; - - if (old_link == NULL) - { - GdStackChildInfo *info; - info = l->data; - - /* Keep trying to find the current position and link location of the - child */ - if (info->widget == child) - { - old_link = l; - child_info = info; - } - } - - l = g_list_next (l); - num++; - } - - g_return_if_fail (old_link != NULL); - - if (old_link == new_link || (g_list_next (old_link) == NULL && new_link == NULL)) - return; - - priv->children = g_list_delete_link (priv->children, old_link); - priv->children = g_list_insert_before (priv->children, new_link, child_info); - - gtk_widget_child_notify (child, "position"); -} - -static void -gd_stack_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GdStack *stack = GD_STACK (container); - GdStackChildInfo *info; - GList *list; - guint i; - - info = find_child_info_for_widget (stack, child); - if (info == NULL) - { - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - return; - } - - switch (property_id) - { - case CHILD_PROP_NAME: - g_value_set_string (value, info->name); - break; - - case CHILD_PROP_TITLE: - g_value_set_string (value, info->title); - break; - - case CHILD_PROP_SYMBOLIC_ICON_NAME: - g_value_set_string (value, info->symbolic_icon_name); - break; - - case CHILD_PROP_POSITION: - i = 0; - for (list = stack->priv->children; list != NULL; list = g_list_next (list)) - { - if (info == list->data) - break; - ++i; - } - g_value_set_int (value, i); - break; - - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - -static void -gd_stack_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GdStack *stack = GD_STACK (container); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *info; - - info = find_child_info_for_widget (stack, child); - if (info == NULL) - { - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - return; - } - - switch (property_id) - { - case CHILD_PROP_NAME: - g_free (info->name); - info->name = g_value_dup_string (value); - - gtk_container_child_notify (container, child, "name"); - - if (priv->visible_child == info) - g_object_notify (G_OBJECT (stack), "visible-child-name"); - - break; - - case CHILD_PROP_TITLE: - g_free (info->title); - info->title = g_value_dup_string (value); - gtk_container_child_notify (container, child, "title"); - break; - - case CHILD_PROP_SYMBOLIC_ICON_NAME: - g_free (info->symbolic_icon_name); - info->symbolic_icon_name = g_value_dup_string (value); - gtk_container_child_notify (container, child, "symbolic-icon-name"); - break; - - case CHILD_PROP_POSITION: - reorder_child (stack, child, g_value_get_int (value)); - break; - - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - -/* From clutter-easing.c, based on Robert Penner's - * infamous easing equations, MIT license. */ -static double -ease_out_cubic (double t) -{ - double p = t - 1; - return p * p * p + 1; -} - -static int -get_bin_window_x (GdStack *stack, GtkAllocation *allocation) -{ - GdStackPrivate *priv = stack->priv; - int x = 0; - - if (priv->transition_pos < 1.0) - { - if (priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_LEFT) - x = allocation->width * (1 - ease_out_cubic (priv->transition_pos)); - if (priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_RIGHT) - x = -allocation->width * (1 - ease_out_cubic (priv->transition_pos)); - } - - return x; -} - -static gboolean -gd_stack_set_transition_position (GdStack *stack, - gdouble pos) -{ - GdStackPrivate *priv = stack->priv; - gboolean done; - - priv->transition_pos = pos; - gtk_widget_queue_draw (GTK_WIDGET (stack)); - - if (priv->bin_window != NULL && - (priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_LEFT || - priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_RIGHT)) - { - GtkAllocation allocation; - gtk_widget_get_allocation (GTK_WIDGET (stack), &allocation); - gdk_window_move (priv->bin_window, - get_bin_window_x (stack, &allocation), 0); - } - - done = pos >= 1.0; - - if (done || priv->last_visible_surface != NULL) - { - if (priv->last_visible_child) - { - gtk_widget_set_child_visible (priv->last_visible_child->widget, FALSE); - priv->last_visible_child = NULL; - } - } - - if (done) - { - if (priv->last_visible_surface != NULL) - { - cairo_surface_destroy (priv->last_visible_surface); - priv->last_visible_surface = NULL; - } - - gtk_widget_queue_resize (GTK_WIDGET (stack)); - } - - return done; -} - -static gboolean -gd_stack_transition_cb (GdStack *stack, - GdkFrameClock *frame_clock, - gpointer user_data) -{ - GdStackPrivate *priv = stack->priv; - gint64 now; - gdouble t; - - now = gdk_frame_clock_get_frame_time (frame_clock); - - t = 1.0; - if (now < priv->end_time) - t = (now - priv->start_time) / (double) (priv->end_time - priv->start_time); - - /* Finish animation early if not mapped anymore */ - if (!gtk_widget_get_mapped (GTK_WIDGET (stack))) - t = 1.0; - - if (gd_stack_set_transition_position (stack, t)) - { - gtk_widget_set_opacity (GTK_WIDGET (stack), 1.0); - priv->tick_id = 0; - - return FALSE; - } - - return TRUE; -} - -static void -gd_stack_schedule_ticks (GdStack *stack) -{ - GdStackPrivate *priv = stack->priv; - - if (priv->tick_id == 0) - { - priv->tick_id = - gtk_widget_add_tick_callback (GTK_WIDGET (stack), (GtkTickCallback)gd_stack_transition_cb, stack, NULL); - } -} - -static void -gd_stack_unschedule_ticks (GdStack *stack) -{ - GdStackPrivate *priv = stack->priv; - - if (priv->tick_id != 0) - { - gtk_widget_remove_tick_callback (GTK_WIDGET (stack), priv->tick_id); - priv->tick_id = 0; - } -} - -static void -gd_stack_start_transition (GdStack *stack) -{ - GdStackPrivate *priv = stack->priv; - GtkWidget *widget = GTK_WIDGET (stack); - gboolean animations_enabled; - - g_object_get (gtk_widget_get_settings (widget), - "gtk-enable-animations", &animations_enabled, - NULL); - - if (gtk_widget_get_mapped (widget) && - animations_enabled && - priv->transition_type != GD_STACK_TRANSITION_TYPE_NONE && - priv->last_visible_child != NULL) - { - gtk_widget_set_opacity (widget, 0.999); - - priv->transition_pos = 0.0; - priv->start_time = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget)); - priv->end_time = priv->start_time + (priv->transition_duration * 1000); - gd_stack_schedule_ticks (stack); - } - else - { - gd_stack_unschedule_ticks (stack); - gd_stack_set_transition_position (stack, 1.0); - } -} - -static void -set_visible_child (GdStack *stack, - GdStackChildInfo *child_info) -{ - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *info; - GtkWidget *widget = GTK_WIDGET (stack); - GList *l; - - /* If none, pick first visible */ - if (child_info == NULL) - { - for (l = priv->children; l != NULL; l = l->next) - { - info = l->data; - if (gtk_widget_get_visible (info->widget)) - { - child_info = info; - break; - } - } - } - - if (child_info == priv->visible_child) - return; - - if (priv->last_visible_child) - gtk_widget_set_child_visible (priv->last_visible_child->widget, FALSE); - priv->last_visible_child = NULL; - - if (priv->last_visible_surface != NULL) - cairo_surface_destroy (priv->last_visible_surface); - priv->last_visible_surface = NULL; - - if (priv->visible_child && priv->visible_child->widget) - { - if (gtk_widget_is_visible (widget)) - priv->last_visible_child = priv->visible_child; - else - gtk_widget_set_child_visible (priv->visible_child->widget, FALSE); - } - - priv->visible_child = child_info; - - if (child_info) - gtk_widget_set_child_visible (child_info->widget, TRUE); - - gtk_widget_queue_resize (GTK_WIDGET (stack)); - gtk_widget_queue_draw (GTK_WIDGET (stack)); - - g_object_notify (G_OBJECT (stack), "visible-child"); - g_object_notify (G_OBJECT (stack), "visible-child-name"); - - gd_stack_start_transition (stack); -} - -static void -stack_child_visibility_notify_cb (GObject *obj, - GParamSpec *pspec, - gpointer user_data) -{ - GdStack *stack = GD_STACK (user_data); - GdStackPrivate *priv = stack->priv; - GtkWidget *child = GTK_WIDGET (obj); - GdStackChildInfo *child_info; - - child_info = find_child_info_for_widget (stack, child); - - if (priv->visible_child == NULL && - gtk_widget_get_visible (child)) - set_visible_child (stack, child_info); - else if (priv->visible_child == child_info && - !gtk_widget_get_visible (child)) - set_visible_child (stack, NULL); - - if (child_info == priv->last_visible_child) - { - gtk_widget_set_child_visible (priv->last_visible_child->widget, FALSE); - priv->last_visible_child = NULL; - } -} - -void -gd_stack_add_titled (GdStack *stack, - GtkWidget *child, - const char *name, - const char *title) -{ - g_return_if_fail (GD_IS_STACK (stack)); - g_return_if_fail (GTK_IS_WIDGET (child)); - - gtk_container_add_with_properties (GTK_CONTAINER (stack), - child, - "name", name, - "title", title, - NULL); -} - -void -gd_stack_add_named (GdStack *stack, - GtkWidget *child, - const char *name) -{ - g_return_if_fail (GD_IS_STACK (stack)); - g_return_if_fail (GTK_IS_WIDGET (child)); - - gtk_container_add_with_properties (GTK_CONTAINER (stack), - child, - "name", name, - NULL); -} - -static void -gd_stack_add (GtkContainer *container, - GtkWidget *child) -{ - GdStack *stack = GD_STACK (container); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - - g_return_if_fail (child != NULL); - - child_info = g_slice_new (GdStackChildInfo); - child_info->widget = child; - child_info->name = NULL; - child_info->title = NULL; - child_info->symbolic_icon_name = NULL; - - priv->children = g_list_append (priv->children, child_info); - - gtk_widget_set_parent_window (child, priv->bin_window); - gtk_widget_set_parent (child, GTK_WIDGET (stack)); - - g_signal_connect (child, "notify::visible", - G_CALLBACK (stack_child_visibility_notify_cb), stack); - - gtk_widget_child_notify (child, "position"); - - if (priv->visible_child == NULL && - gtk_widget_get_visible (child)) - set_visible_child (stack, child_info); - else - gtk_widget_set_child_visible (child, FALSE); - - if (priv->homogeneous || priv->visible_child == child_info) - gtk_widget_queue_resize (GTK_WIDGET (stack)); -} - -static void -gd_stack_remove (GtkContainer *container, - GtkWidget *child) -{ - GdStack *stack = GD_STACK (container); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - gboolean was_visible; - - child_info = find_child_info_for_widget (stack, child); - if (child_info == NULL) - return; - - priv->children = g_list_remove (priv->children, child_info); - - g_signal_handlers_disconnect_by_func (child, - stack_child_visibility_notify_cb, - stack); - - was_visible = gtk_widget_get_visible (child); - - child_info->widget = NULL; - - if (priv->visible_child == child_info) - set_visible_child (stack, NULL); - - if (priv->last_visible_child == child_info) - priv->last_visible_child = NULL; - - gtk_widget_unparent (child); - - g_free (child_info->name); - g_free (child_info->title); - g_free (child_info->symbolic_icon_name); - g_slice_free (GdStackChildInfo, child_info); - - if (priv->homogeneous && was_visible) - gtk_widget_queue_resize (GTK_WIDGET (stack)); -} - -void -gd_stack_set_homogeneous (GdStack *stack, - gboolean homogeneous) -{ - GdStackPrivate *priv; - - g_return_if_fail (GD_IS_STACK (stack)); - - priv = stack->priv; - - homogeneous = !!homogeneous; - - if (priv->homogeneous == homogeneous) - return; - - priv->homogeneous = homogeneous; - - if (gtk_widget_get_visible (GTK_WIDGET(stack))) - gtk_widget_queue_resize (GTK_WIDGET (stack)); - - g_object_notify (G_OBJECT (stack), "homogeneous"); -} - -gboolean -gd_stack_get_homogeneous (GdStack *stack) -{ - g_return_val_if_fail (GD_IS_STACK (stack), FALSE); - - return stack->priv->homogeneous; -} - -gint -gd_stack_get_transition_duration (GdStack *stack) -{ - g_return_val_if_fail (GD_IS_STACK (stack), 0); - - return stack->priv->transition_duration; -} - -void -gd_stack_set_transition_duration (GdStack *stack, - gint value) -{ - g_return_if_fail (GD_IS_STACK (stack)); - - stack->priv->transition_duration = value; - g_object_notify (G_OBJECT (stack), "transition-duration"); -} - -GdStackTransitionType -gd_stack_get_transition_type (GdStack *stack) -{ - g_return_val_if_fail (GD_IS_STACK (stack), GD_STACK_TRANSITION_TYPE_NONE); - - return stack->priv->transition_type; -} - -void -gd_stack_set_transition_type (GdStack *stack, - GdStackTransitionType value) -{ - g_return_if_fail (GD_IS_STACK (stack)); - - stack->priv->transition_type = value; - g_object_notify (G_OBJECT (stack), "transition-type"); -} - -/** - * gd_stack_get_visible_child: - * @stack: a #GdStack - * - * Gets the currently visible child of the #GdStack, or %NULL if the - * there are no visible children. The returned widget does not have a reference - * added, so you do not need to unref it. - * - * Return value: (transfer none): pointer to child of the #GdStack - **/ -GtkWidget * -gd_stack_get_visible_child (GdStack *stack) -{ - g_return_val_if_fail (GD_IS_STACK (stack), NULL); - - return stack->priv->visible_child ? stack->priv->visible_child->widget : NULL; -} - -const char * -gd_stack_get_visible_child_name (GdStack *stack) -{ - g_return_val_if_fail (GD_IS_STACK (stack), NULL); - - if (stack->priv->visible_child) - return stack->priv->visible_child->name; - - return NULL; -} - -void -gd_stack_set_visible_child (GdStack *stack, - GtkWidget *child) -{ - GdStackChildInfo *child_info; - - g_return_if_fail (GD_IS_STACK (stack)); - g_return_if_fail (GTK_IS_WIDGET (child)); - - child_info = find_child_info_for_widget (stack, child); - if (child_info == NULL) - return; - - if (gtk_widget_get_visible (child_info->widget)) - set_visible_child (stack, child_info); -} - -void -gd_stack_set_visible_child_name (GdStack *stack, - const char *name) -{ - GdStackPrivate *priv; - GdStackChildInfo *child_info, *info; - GList *l; - - g_return_if_fail (GD_IS_STACK (stack)); - g_return_if_fail (name != NULL); - - priv = stack->priv; - - child_info = NULL; - for (l = priv->children; l != NULL; l = l->next) - { - info = l->data; - if (info->name != NULL && - strcmp (info->name, name) == 0) - { - child_info = info; - break; - } - } - - if (child_info != NULL && gtk_widget_get_visible (child_info->widget)) - set_visible_child (stack, child_info); -} - -static void -gd_stack_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GdStack *stack = GD_STACK (container); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - GList *l; - - l = priv->children; - while (l) - { - child_info = l->data; - l = l->next; - - (* callback) (child_info->widget, callback_data); - } -} - -static void -gd_stack_compute_expand (GtkWidget *widget, - gboolean *hexpand_p, - gboolean *vexpand_p) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - gboolean hexpand, vexpand; - GdStackChildInfo *child_info; - GtkWidget *child; - GList *l; - - hexpand = FALSE; - vexpand = FALSE; - for (l = priv->children; l != NULL; l = l->next) - { - child_info = l->data; - child = child_info->widget; - - if (!hexpand && - gtk_widget_compute_expand (child, GTK_ORIENTATION_HORIZONTAL)) - hexpand = TRUE; - - if (!vexpand && - gtk_widget_compute_expand (child, GTK_ORIENTATION_VERTICAL)) - vexpand = TRUE; - - if (hexpand && vexpand) - break; - } - - *hexpand_p = hexpand; - *vexpand_p = vexpand; -} - -static void -gd_stack_draw_crossfade (GtkWidget *widget, - cairo_t *cr) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - - if (priv->last_visible_surface) - { - cairo_set_source_surface (cr, priv->last_visible_surface, - priv->last_visible_surface_allocation.x, - priv->last_visible_surface_allocation.y); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - cairo_paint_with_alpha (cr, MAX (1.0 - priv->transition_pos, 0)); - } - - cairo_push_group (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_OVER); - gtk_container_propagate_draw (GTK_CONTAINER (stack), - priv->visible_child->widget, - cr); - cairo_pop_group_to_source (cr); - cairo_set_operator (cr, CAIRO_OPERATOR_ADD); - cairo_paint_with_alpha (cr, priv->transition_pos); -} - -static void -gd_stack_draw_slide (GtkWidget *widget, - cairo_t *cr) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GtkAllocation allocation; - int x = 0; - - gtk_widget_get_allocation (widget, &allocation); - - x = get_bin_window_x (stack, &allocation); - - if (priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_LEFT) - x -= allocation.width; - if (priv->transition_type == GD_STACK_TRANSITION_TYPE_SLIDE_RIGHT) - x += allocation.width; - - if (priv->last_visible_surface) - { - cairo_save (cr); - cairo_set_source_surface (cr, priv->last_visible_surface, x, 0); - cairo_paint (cr); - cairo_restore (cr); - } - - gtk_container_propagate_draw (GTK_CONTAINER (stack), - priv->visible_child->widget, - cr); -} - -static gboolean -gd_stack_draw (GtkWidget *widget, - cairo_t *cr) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - cairo_t *pattern_cr; - - if (priv->visible_child) - { - if (priv->transition_pos < 1.0) - { - if (priv->last_visible_surface == NULL && - priv->last_visible_child != NULL) - { - gtk_widget_get_allocation (priv->last_visible_child->widget, - &priv->last_visible_surface_allocation); - priv->last_visible_surface = - gdk_window_create_similar_surface (gtk_widget_get_window (widget), - CAIRO_CONTENT_COLOR_ALPHA, - priv->last_visible_surface_allocation.width, - priv->last_visible_surface_allocation.height); - pattern_cr = cairo_create (priv->last_visible_surface); - /* We don't use propagate_draw here, because we don't want to apply - the bin_window offset */ - gtk_widget_draw (priv->last_visible_child->widget, pattern_cr); - cairo_destroy (pattern_cr); - } - - switch (priv->transition_type) - { - case GD_STACK_TRANSITION_TYPE_CROSSFADE: - gd_stack_draw_crossfade (widget, cr); - break; - case GD_STACK_TRANSITION_TYPE_SLIDE_LEFT: - case GD_STACK_TRANSITION_TYPE_SLIDE_RIGHT: - gd_stack_draw_slide (widget, cr); - break; - default: - g_assert_not_reached (); - } - - } - else if (gtk_cairo_should_draw_window (cr, priv->bin_window)) - gtk_container_propagate_draw (GTK_CONTAINER (stack), - priv->visible_child->widget, - cr); - } - - return TRUE; -} - -static void -gd_stack_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GtkAllocation child_allocation; - - g_return_if_fail (allocation != NULL); - - gtk_widget_set_allocation (widget, allocation); - - child_allocation = *allocation; - child_allocation.x = 0; - child_allocation.y = 0; - - if (priv->last_visible_child) - gtk_widget_size_allocate (priv->last_visible_child->widget, &child_allocation); - - if (priv->visible_child) - gtk_widget_size_allocate (priv->visible_child->widget, &child_allocation); - - if (gtk_widget_get_realized (widget)) - { - gdk_window_move_resize (priv->view_window, - allocation->x, allocation->y, - allocation->width, allocation->height); - gdk_window_move_resize (priv->bin_window, - get_bin_window_x (stack, allocation), 0, - allocation->width, allocation->height); - } -} - -static void -gd_stack_get_preferred_height (GtkWidget *widget, - gint *minimum_height, - gint *natural_height) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - GtkWidget *child; - gint child_min, child_nat; - GList *l; - - *minimum_height = 0; - *natural_height = 0; - - for (l = priv->children; l != NULL; l = l->next) - { - child_info = l->data; - child = child_info->widget; - - if (!priv->homogeneous && - (priv->visible_child != child_info && - priv->last_visible_child != child_info)) - continue; - if (gtk_widget_get_visible (child)) - { - gtk_widget_get_preferred_height (child, &child_min, &child_nat); - - *minimum_height = MAX (*minimum_height, child_min); - *natural_height = MAX (*natural_height, child_nat); - } - } - - if (priv->last_visible_surface != NULL) - { - *minimum_height = MAX (*minimum_height, priv->last_visible_surface_allocation.height); - *natural_height = MAX (*natural_height, priv->last_visible_surface_allocation.height); - } -} - -static void -gd_stack_get_preferred_height_for_width (GtkWidget* widget, - gint width, - gint *minimum_height, - gint *natural_height) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - GtkWidget *child; - gint child_min, child_nat; - GList *l; - - *minimum_height = 0; - *natural_height = 0; - - for (l = priv->children; l != NULL; l = l->next) - { - child_info = l->data; - child = child_info->widget; - - if (!priv->homogeneous && - (priv->visible_child != child_info && - priv->last_visible_child != child_info)) - continue; - if (gtk_widget_get_visible (child)) - { - gtk_widget_get_preferred_height_for_width (child, width, &child_min, &child_nat); - - *minimum_height = MAX (*minimum_height, child_min); - *natural_height = MAX (*natural_height, child_nat); - } - } - - if (priv->last_visible_surface != NULL) - { - *minimum_height = MAX (*minimum_height, priv->last_visible_surface_allocation.height); - *natural_height = MAX (*natural_height, priv->last_visible_surface_allocation.height); - } -} - -static void -gd_stack_get_preferred_width (GtkWidget *widget, - gint *minimum_width, - gint *natural_width) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - GtkWidget *child; - gint child_min, child_nat; - GList *l; - - *minimum_width = 0; - *natural_width = 0; - - for (l = priv->children; l != NULL; l = l->next) - { - child_info = l->data; - child = child_info->widget; - - if (!priv->homogeneous && - (priv->visible_child != child_info && - priv->last_visible_child != child_info)) - continue; - if (gtk_widget_get_visible (child)) - { - gtk_widget_get_preferred_width (child, &child_min, &child_nat); - - *minimum_width = MAX (*minimum_width, child_min); - *natural_width = MAX (*natural_width, child_nat); - } - } - - if (priv->last_visible_surface != NULL) - { - *minimum_width = MAX (*minimum_width, priv->last_visible_surface_allocation.width); - *natural_width = MAX (*natural_width, priv->last_visible_surface_allocation.width); - } -} - -static void -gd_stack_get_preferred_width_for_height (GtkWidget* widget, - gint height, - gint *minimum_width, - gint *natural_width) -{ - GdStack *stack = GD_STACK (widget); - GdStackPrivate *priv = stack->priv; - GdStackChildInfo *child_info; - GtkWidget *child; - gint child_min, child_nat; - GList *l; - - *minimum_width = 0; - *natural_width = 0; - - for (l = priv->children; l != NULL; l = l->next) - { - child_info = l->data; - child = child_info->widget; - - if (!priv->homogeneous && - (priv->visible_child != child_info && - priv->last_visible_child != child_info)) - continue; - if (gtk_widget_get_visible (child)) - { - gtk_widget_get_preferred_width_for_height (child, height, &child_min, &child_nat); - - *minimum_width = MAX (*minimum_width, child_min); - *natural_width = MAX (*natural_width, child_nat); - } - } - - if (priv->last_visible_surface != NULL) - { - *minimum_width = MAX (*minimum_width, priv->last_visible_surface_allocation.width); - *natural_width = MAX (*natural_width, priv->last_visible_surface_allocation.width); - } -} diff -Nru bijiben-3.8.4/libgd/libgd/gd-stack.h bijiben-3.10.2/libgd/libgd/gd-stack.h --- bijiben-3.8.4/libgd/libgd/gd-stack.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-stack.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: Alexander Larsson - * - */ - -#ifndef __GD_STACK_H__ -#define __GD_STACK_H__ - -#include - -G_BEGIN_DECLS - - -#define GD_TYPE_STACK (gd_stack_get_type ()) -#define GD_STACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_STACK, GdStack)) -#define GD_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_STACK, GdStackClass)) -#define GD_IS_STACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_STACK)) -#define GD_IS_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_STACK)) -#define GD_STACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_STACK, GdStackClass)) - -typedef struct _GdStack GdStack; -typedef struct _GdStackClass GdStackClass; -typedef struct _GdStackPrivate GdStackPrivate; - -typedef enum { - GD_STACK_TRANSITION_TYPE_NONE, - GD_STACK_TRANSITION_TYPE_CROSSFADE, - GD_STACK_TRANSITION_TYPE_SLIDE_RIGHT, - GD_STACK_TRANSITION_TYPE_SLIDE_LEFT -} GdStackTransitionType; - -struct _GdStack { - GtkContainer parent_instance; - GdStackPrivate *priv; -}; - -struct _GdStackClass { - GtkContainerClass parent_class; -}; - -GType gd_stack_get_type (void) G_GNUC_CONST; - -GtkWidget * gd_stack_new (void); -void gd_stack_add_named (GdStack *stack, - GtkWidget *child, - const char *name); -void gd_stack_add_titled (GdStack *stack, - GtkWidget *child, - const char *name, - const char *title); -void gd_stack_set_visible_child (GdStack *stack, - GtkWidget *child); -GtkWidget * gd_stack_get_visible_child (GdStack *stack); -void gd_stack_set_visible_child_name (GdStack *stack, - const char *name); -const char * gd_stack_get_visible_child_name (GdStack *stack); -void gd_stack_set_homogeneous (GdStack *stack, - gboolean homogeneous); -gboolean gd_stack_get_homogeneous (GdStack *stack); -void gd_stack_set_transition_duration (GdStack *stack, - gint transition_duration); -gint gd_stack_get_transition_duration (GdStack *stack); -void gd_stack_set_transition_type (GdStack *stack, - GdStackTransitionType type); -GdStackTransitionType gd_stack_get_transition_type (GdStack *stack); - -G_END_DECLS - -#endif diff -Nru bijiben-3.8.4/libgd/libgd/gd-stack-switcher.c bijiben-3.10.2/libgd/libgd/gd-stack-switcher.c --- bijiben-3.8.4/libgd/libgd/gd-stack-switcher.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-stack-switcher.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,377 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include "gd-stack-switcher.h" -#include "gd-header-button.h" - -struct _GdStackSwitcherPrivate -{ - GdStack *stack; - GHashTable *buttons; - gboolean in_child_changed; -}; - -enum { - PROP_0, - PROP_STACK -}; - -G_DEFINE_TYPE (GdStackSwitcher, gd_stack_switcher, GTK_TYPE_BOX); - -static void -gd_stack_switcher_init (GdStackSwitcher *switcher) -{ - GtkStyleContext *context; - GdStackSwitcherPrivate *priv; - - priv = G_TYPE_INSTANCE_GET_PRIVATE (switcher, GD_TYPE_STACK_SWITCHER, GdStackSwitcherPrivate); - switcher->priv = priv; - - priv->stack = NULL; - priv->buttons = g_hash_table_new (g_direct_hash, g_direct_equal); - - context = gtk_widget_get_style_context (GTK_WIDGET (switcher)); - gtk_style_context_add_class (context, GTK_STYLE_CLASS_LINKED); - - gtk_orientable_set_orientation (GTK_ORIENTABLE (switcher), GTK_ORIENTATION_HORIZONTAL); -} - -static void -clear_switcher (GdStackSwitcher *self) -{ - gtk_container_foreach (GTK_CONTAINER (self), (GtkCallback) gtk_widget_destroy, self); -} - -static void -on_button_clicked (GtkWidget *widget, - GdStackSwitcher *self) -{ - GtkWidget *child; - - if (!self->priv->in_child_changed) - { - child = g_object_get_data (G_OBJECT (widget), "stack-child"); - gd_stack_set_visible_child (self->priv->stack, child); - } -} - -static void -update_button (GdStackSwitcher *self, - GtkWidget *widget, - GtkWidget *button) -{ - char *title; - char *symbolic_icon_name; - - gtk_container_child_get (GTK_CONTAINER (self->priv->stack), widget, - "title", &title, - "symbolic-icon-name", &symbolic_icon_name, - NULL); - - gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (button), symbolic_icon_name); - gd_header_button_set_label (GD_HEADER_BUTTON (button), title); - - gtk_widget_set_visible (button, title != NULL || symbolic_icon_name != NULL); - - if (symbolic_icon_name != NULL) - gtk_widget_set_size_request (button, -1, -1); - else - gtk_widget_set_size_request (button, 100, -1); - - g_free (title); - g_free (symbolic_icon_name); -} - -static void -on_title_icon_updated (GtkWidget *widget, - GParamSpec *pspec, - GdStackSwitcher *self) - -{ - GtkWidget *button; - - button = g_hash_table_lookup (self->priv->buttons, widget); - update_button (self, widget, button); -} - -static void -on_position_updated (GtkWidget *widget, - GParamSpec *pspec, - GdStackSwitcher *self) -{ - GtkWidget *button; - gint position; - - button = g_hash_table_lookup (self->priv->buttons, widget); - - gtk_container_child_get (GTK_CONTAINER (self->priv->stack), widget, - "position", &position, - NULL); - - gtk_box_reorder_child (GTK_BOX (self), button, position); -} - -static void -add_child (GdStackSwitcher *self, - GtkWidget *widget) -{ - GtkWidget *button; - GList *group; - GtkStyleContext *context; - - button = gd_header_radio_button_new (); - update_button (self, widget, button); - - group = gtk_container_get_children (GTK_CONTAINER (self)); - if (group != NULL) - { - gtk_radio_button_join_group (GTK_RADIO_BUTTON (button), GTK_RADIO_BUTTON (group->data)); - g_list_free (group); - } - - gtk_container_add (GTK_CONTAINER (self), button); - - g_object_set_data (G_OBJECT (button), "stack-child", widget); - g_signal_connect (button, "clicked", G_CALLBACK (on_button_clicked), self); - g_signal_connect (widget, "child-notify::title", G_CALLBACK (on_title_icon_updated), self); - g_signal_connect (widget, "child-notify::symbolic-icon-name", G_CALLBACK (on_title_icon_updated), self); - g_signal_connect (widget, "child-notify::position", G_CALLBACK (on_position_updated), self); - - g_hash_table_insert (self->priv->buttons, widget, button); -} - -static void -foreach_stack (GtkWidget *widget, - GdStackSwitcher *self) -{ - add_child (self, widget); -} - -static void -populate_switcher (GdStackSwitcher *self) -{ - gtk_container_foreach (GTK_CONTAINER (self->priv->stack), (GtkCallback)foreach_stack, self); -} - -static void -on_child_changed (GtkWidget *widget, - GParamSpec *pspec, - GdStackSwitcher *self) -{ - GtkWidget *child; - GtkWidget *button; - - child = gd_stack_get_visible_child (GD_STACK (widget)); - button = g_hash_table_lookup (self->priv->buttons, child); - if (button != NULL) - { - self->priv->in_child_changed = TRUE; - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); - self->priv->in_child_changed = FALSE; - } -} - -static void -on_stack_child_added (GtkContainer *container, - GtkWidget *widget, - GdStackSwitcher *self) -{ - add_child (self, widget); -} - -static void -on_stack_child_removed (GtkContainer *container, - GtkWidget *widget, - GdStackSwitcher *self) -{ - GtkWidget *button; - - button = g_hash_table_lookup (self->priv->buttons, widget); - gtk_container_remove (GTK_CONTAINER (self), button); - g_hash_table_remove (self->priv->buttons, widget); -} - -static void -disconnect_stack_signals (GdStackSwitcher *switcher) -{ - GdStackSwitcherPrivate *priv = switcher->priv; - - g_signal_handlers_disconnect_by_func (priv->stack, on_stack_child_added, switcher); - - g_signal_handlers_disconnect_by_func (priv->stack, on_stack_child_removed, switcher); - - g_signal_handlers_disconnect_by_func (priv->stack, on_child_changed, switcher); - - g_signal_handlers_disconnect_by_func (priv->stack, disconnect_stack_signals, switcher); -} - -static void -connect_stack_signals (GdStackSwitcher *switcher) -{ - GdStackSwitcherPrivate *priv = switcher->priv; - - g_signal_connect_after (priv->stack, "add", - G_CALLBACK (on_stack_child_added), switcher); - g_signal_connect_after (priv->stack, "remove", - G_CALLBACK (on_stack_child_removed), switcher); - g_signal_connect (priv->stack, "notify::visible-child", - G_CALLBACK (on_child_changed), switcher); - - g_signal_connect_swapped (priv->stack, "destroy", - G_CALLBACK (disconnect_stack_signals), switcher); -} - -/** - * gd_stack_switcher_set_stack: - * @switcher: a #GdStackSwitcher - * @stack: (allow-none): a #GdStack - * - * Sets the stack to control. - * - **/ -void -gd_stack_switcher_set_stack (GdStackSwitcher *switcher, - GdStack *stack) -{ - GdStackSwitcherPrivate *priv; - - g_return_if_fail (GD_IS_STACK_SWITCHER (switcher)); - if (stack) - g_return_if_fail (GD_IS_STACK (stack)); - - priv = switcher->priv; - - if (priv->stack == stack) - return; - - if (priv->stack) - { - disconnect_stack_signals (switcher); - clear_switcher (switcher); - g_clear_object (&priv->stack); - } - - if (stack) - { - priv->stack = g_object_ref (stack); - populate_switcher (switcher); - connect_stack_signals (switcher); - } - - gtk_widget_queue_resize (GTK_WIDGET (switcher)); - - g_object_notify (G_OBJECT (switcher), "stack"); -} - -/** - * gd_stack_switcher_get_stack: - * @switcher: a #GdStackSwitcher - * - * Retrieves the stack. See - * gd_stack_switcher_set_stack(). - * - * Return value: (transfer none): the stack, or %NULL if - * none has been set explicitly. - **/ -GdStack * -gd_stack_switcher_get_stack (GdStackSwitcher *switcher) -{ - g_return_val_if_fail (GD_IS_STACK_SWITCHER (switcher), NULL); - - return switcher->priv->stack; -} - -static void -gd_stack_switcher_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GdStackSwitcher *switcher = GD_STACK_SWITCHER (object); - GdStackSwitcherPrivate *priv = switcher->priv; - - switch (prop_id) - { - case PROP_STACK: - g_value_set_object (value, priv->stack); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_stack_switcher_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GdStackSwitcher *switcher = GD_STACK_SWITCHER (object); - - switch (prop_id) - { - case PROP_STACK: - gd_stack_switcher_set_stack (switcher, g_value_get_object (value)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gd_stack_switcher_dispose (GObject *object) -{ - GdStackSwitcher *switcher = GD_STACK_SWITCHER (object); - - gd_stack_switcher_set_stack (switcher, NULL); - - G_OBJECT_CLASS (gd_stack_switcher_parent_class)->dispose (object); -} - -static void -gd_stack_switcher_class_init (GdStackSwitcherClass *class) -{ - GObjectClass *object_class = G_OBJECT_CLASS (class); - - object_class->get_property = gd_stack_switcher_get_property; - object_class->set_property = gd_stack_switcher_set_property; - object_class->dispose = gd_stack_switcher_dispose; - - g_object_class_install_property (object_class, - PROP_STACK, - g_param_spec_object ("stack", - "Stack", - "Stack", - GD_TYPE_STACK, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_type_class_add_private (object_class, sizeof (GdStackSwitcherPrivate)); -} - -GtkWidget * -gd_stack_switcher_new (void) -{ - return GTK_WIDGET (g_object_new (GD_TYPE_STACK_SWITCHER, NULL)); -} diff -Nru bijiben-3.8.4/libgd/libgd/gd-stack-switcher.h bijiben-3.10.2/libgd/libgd/gd-stack-switcher.h --- bijiben-3.8.4/libgd/libgd/gd-stack-switcher.h 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-stack-switcher.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2013 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#ifndef __GD_STACK_SWITCHER_H__ -#define __GD_STACK_SWITCHER_H__ - -#include -#include "gd-stack.h" - -G_BEGIN_DECLS - -#define GD_TYPE_STACK_SWITCHER (gd_stack_switcher_get_type ()) -#define GD_STACK_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_STACK_SWITCHER, GdStackSwitcher)) -#define GD_STACK_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_STACK_SWITCHER, GdStackSwitcherClass)) -#define GD_IS_STACK_SWITCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_STACK_SWITCHER)) -#define GD_IS_STACK_SWITCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_STACK_SWITCHER)) -#define GD_STACK_SWITCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_STACK_SWITCHER, GdStackSwitcherClass)) - -typedef struct _GdStackSwitcher GdStackSwitcher; -typedef struct _GdStackSwitcherPrivate GdStackSwitcherPrivate; -typedef struct _GdStackSwitcherClass GdStackSwitcherClass; - -struct _GdStackSwitcher -{ - GtkBox widget; - - /*< private >*/ - GdStackSwitcherPrivate *priv; -}; - -struct _GdStackSwitcherClass -{ - GtkBoxClass parent_class; - - /* Padding for future expansion */ - void (*_gd_reserved1) (void); - void (*_gd_reserved2) (void); - void (*_gd_reserved3) (void); - void (*_gd_reserved4) (void); -}; - -GType gd_stack_switcher_get_type (void) G_GNUC_CONST; -GtkWidget *gd_stack_switcher_new (void); -void gd_stack_switcher_set_stack (GdStackSwitcher *switcher, - GdStack *stack); -GdStack *gd_stack_switcher_get_stack (GdStackSwitcher *switcher); - -G_END_DECLS - -#endif /* __GD_STACK_SWITCHER_H__ */ diff -Nru bijiben-3.8.4/libgd/libgd/gd-tagged-entry.c bijiben-3.10.2/libgd/libgd/gd-tagged-entry.c --- bijiben-3.8.4/libgd/libgd/gd-tagged-entry.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-tagged-entry.c 2013-11-07 22:17:50.000000000 +0000 @@ -0,0 +1,1179 @@ +/* + * Copyright (c) 2011 Red Hat, Inc. + * Copyright (c) 2013 Ignacio Casal Quinteiro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Cosimo Cecchi + * + */ + +#include "gd-tagged-entry.h" + +#include + +#define BUTTON_INTERNAL_SPACING 6 + +struct _GdTaggedEntryTagPrivate { + GdTaggedEntry *entry; + GdkWindow *window; + PangoLayout *layout; + + gchar *label; + gchar *style; + gboolean has_close_button; + + GdkPixbuf *close_pixbuf; + GtkStateFlags last_button_state; +}; + +struct _GdTaggedEntryPrivate { + GList *tags; + + GdTaggedEntryTag *in_child; + gboolean in_child_button; + gboolean in_child_active; + gboolean in_child_button_active; + gboolean button_visible; +}; + +enum { + SIGNAL_TAG_CLICKED, + SIGNAL_TAG_BUTTON_CLICKED, + LAST_SIGNAL +}; + +enum { + PROP_0, + PROP_TAG_BUTTON_VISIBLE, + NUM_PROPERTIES +}; + +enum { + PROP_TAG_0, + PROP_TAG_LABEL, + PROP_TAG_HAS_CLOSE_BUTTON, + PROP_TAG_STYLE, + NUM_TAG_PROPERTIES +}; + +G_DEFINE_TYPE (GdTaggedEntry, gd_tagged_entry, GTK_TYPE_SEARCH_ENTRY) +G_DEFINE_TYPE (GdTaggedEntryTag, gd_tagged_entry_tag, G_TYPE_OBJECT) + +static guint signals[LAST_SIGNAL] = { 0, }; +static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; +static GParamSpec *tag_properties[NUM_TAG_PROPERTIES] = { NULL, }; + +static void gd_tagged_entry_get_text_area_size (GtkEntry *entry, + gint *x, + gint *y, + gint *width, + gint *height); +static gint gd_tagged_entry_tag_get_width (GdTaggedEntryTag *tag, + GdTaggedEntry *entry); +static GtkStyleContext * gd_tagged_entry_tag_get_context (GdTaggedEntryTag *tag, + GdTaggedEntry *entry); + +static void +gd_tagged_entry_tag_get_margin (GdTaggedEntryTag *tag, + GdTaggedEntry *entry, + GtkBorder *margin) +{ + GtkStyleContext *context; + + context = gd_tagged_entry_tag_get_context (tag, entry); + gtk_style_context_get_margin (context, 0, margin); + g_object_unref (context); +} + +static void +gd_tagged_entry_tag_ensure_close_pixbuf (GdTaggedEntryTag *tag, + GtkStyleContext *context) +{ + GtkIconInfo *info; + gint icon_size; + + if (tag->priv->close_pixbuf != NULL) + return; + + gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, + &icon_size, NULL); + + info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (), + "window-close-symbolic", + icon_size, + GTK_ICON_LOOKUP_GENERIC_FALLBACK); + + tag->priv->close_pixbuf = + gtk_icon_info_load_symbolic_for_context (info, context, + NULL, NULL); + + /* FIXME: we need a fallback icon in case the icon is not found */ +} + +static gint +gd_tagged_entry_tag_panel_get_height (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkWidget *widget = GTK_WIDGET (entry); + gint height, req_height; + GtkRequisition requisition; + GtkAllocation allocation; + GtkBorder margin; + + gtk_widget_get_allocation (widget, &allocation); + gtk_widget_get_preferred_size (widget, &requisition, NULL); + gd_tagged_entry_tag_get_margin (tag, entry, &margin); + + /* the tag panel height is the whole entry height, minus the tag margins */ + req_height = requisition.height - gtk_widget_get_margin_top (widget) - gtk_widget_get_margin_bottom (widget); + height = MIN (req_height, allocation.height) - margin.top - margin.bottom; + + return height; +} + +static void +gd_tagged_entry_tag_panel_get_position (GdTaggedEntry *self, + gint *x_out, + gint *y_out) +{ + GtkWidget *widget = GTK_WIDGET (self); + gint text_x, text_y, text_width, text_height, req_height; + GtkAllocation allocation; + GtkRequisition requisition; + + gtk_widget_get_allocation (widget, &allocation); + gtk_widget_get_preferred_size (widget, &requisition, NULL); + req_height = requisition.height - gtk_widget_get_margin_top (widget) - gtk_widget_get_margin_bottom (widget); + + gd_tagged_entry_get_text_area_size (GTK_ENTRY (self), &text_x, &text_y, &text_width, &text_height); + + /* allocate the panel immediately after the text area */ + if (x_out) + *x_out = allocation.x + text_x + text_width; + if (y_out) + *y_out = allocation.y + (gint) floor ((allocation.height - req_height) / 2); +} + +static gint +gd_tagged_entry_tag_panel_get_width (GdTaggedEntry *self) +{ + GdTaggedEntryTag *tag; + gint width; + GList *l; + + width = 0; + + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + width += gd_tagged_entry_tag_get_width (tag, self); + } + + return width; +} + +static void +gd_tagged_entry_tag_ensure_layout (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + if (tag->priv->layout != NULL) + return; + + tag->priv->layout = pango_layout_new (gtk_widget_get_pango_context (GTK_WIDGET (entry))); + pango_layout_set_text (tag->priv->layout, tag->priv->label, -1); +} + +static GtkStateFlags +gd_tagged_entry_tag_get_state (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkStateFlags state = GTK_STATE_FLAG_NORMAL; + + if (entry->priv->in_child == tag) + state |= GTK_STATE_FLAG_PRELIGHT; + + if (entry->priv->in_child_active) + state |= GTK_STATE_FLAG_ACTIVE; + + return state; +} + +static GtkStateFlags +gd_tagged_entry_tag_get_button_state (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkStateFlags state = GTK_STATE_FLAG_NORMAL; + + if (entry->priv->in_child == tag && + entry->priv->in_child_button) + state |= GTK_STATE_FLAG_PRELIGHT; + + if (entry->priv->in_child_button_active) + state |= GTK_STATE_FLAG_ACTIVE; + + return state; +} + +static GtkStyleContext * +gd_tagged_entry_tag_get_context (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkWidget *widget = GTK_WIDGET (entry); + GtkWidgetPath *path; + gint pos; + GtkStyleContext *retval; + + retval = gtk_style_context_new (); + path = gtk_widget_path_copy (gtk_widget_get_path (widget)); + + pos = gtk_widget_path_append_type (path, GD_TYPE_TAGGED_ENTRY); + gtk_widget_path_iter_add_class (path, pos, tag->priv->style); + + gtk_style_context_set_path (retval, path); + + gtk_widget_path_unref (path); + + return retval; +} + +static gint +gd_tagged_entry_tag_get_width (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkBorder button_padding, button_border, button_margin; + GtkStyleContext *context; + GtkStateFlags state; + gint layout_width; + gint button_width; + + gd_tagged_entry_tag_ensure_layout (tag, entry); + pango_layout_get_pixel_size (tag->priv->layout, &layout_width, NULL); + + context = gd_tagged_entry_tag_get_context (tag, entry); + state = gd_tagged_entry_tag_get_state (tag, entry); + + gtk_style_context_get_padding (context, state, &button_padding); + gtk_style_context_get_border (context, state, &button_border); + gtk_style_context_get_margin (context, state, &button_margin); + + gd_tagged_entry_tag_ensure_close_pixbuf (tag, context); + + g_object_unref (context); + + button_width = 0; + if (entry->priv->button_visible && tag->priv->has_close_button) + button_width = gdk_pixbuf_get_width (tag->priv->close_pixbuf) + BUTTON_INTERNAL_SPACING; + + return layout_width + button_padding.left + button_padding.right + + button_border.left + button_border.right + + button_margin.left + button_margin.right + + button_width; +} + +static void +gd_tagged_entry_tag_get_size (GdTaggedEntryTag *tag, + GdTaggedEntry *entry, + gint *width_out, + gint *height_out) +{ + gint width, panel_height; + + width = gd_tagged_entry_tag_get_width (tag, entry); + panel_height = gd_tagged_entry_tag_panel_get_height (tag, entry); + + if (width_out) + *width_out = width; + if (height_out) + *height_out = panel_height; +} + +static void +gd_tagged_entry_tag_get_relative_allocations (GdTaggedEntryTag *tag, + GdTaggedEntry *entry, + GtkStyleContext *context, + GtkAllocation *background_allocation_out, + GtkAllocation *layout_allocation_out, + GtkAllocation *button_allocation_out) +{ + GtkAllocation background_allocation, layout_allocation, button_allocation; + gint width, height, x, y, pix_width, pix_height; + gint layout_width, layout_height; + GtkBorder padding, border; + GtkStateFlags state; + + width = gdk_window_get_width (tag->priv->window); + height = gdk_window_get_height (tag->priv->window); + + state = gd_tagged_entry_tag_get_state (tag, entry); + gtk_style_context_get_margin (context, state, &padding); + + width -= padding.left + padding.right; + height -= padding.top + padding.bottom; + x = padding.left; + y = padding.top; + + background_allocation.x = x; + background_allocation.y = y; + background_allocation.width = width; + background_allocation.height = height; + + layout_allocation = button_allocation = background_allocation; + + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + + gd_tagged_entry_tag_ensure_layout (tag, entry); + pango_layout_get_pixel_size (tag->priv->layout, &layout_width, &layout_height); + + layout_allocation.x += border.left + padding.left; + layout_allocation.y += (layout_allocation.height - layout_height) / 2; + + if (entry->priv->button_visible && tag->priv->has_close_button) + { + pix_width = gdk_pixbuf_get_width (tag->priv->close_pixbuf); + pix_height = gdk_pixbuf_get_height (tag->priv->close_pixbuf); + } + else + { + pix_width = 0; + pix_height = 0; + } + + button_allocation.x += width - pix_width - border.right - padding.right; + button_allocation.y += (height - pix_height) / 2; + button_allocation.width = pix_width; + button_allocation.height = pix_height; + + if (background_allocation_out) + *background_allocation_out = background_allocation; + if (layout_allocation_out) + *layout_allocation_out = layout_allocation; + if (button_allocation_out) + *button_allocation_out = button_allocation; +} + +static gboolean +gd_tagged_entry_tag_event_is_button (GdTaggedEntryTag *tag, + GdTaggedEntry *entry, + gdouble event_x, + gdouble event_y) +{ + GtkAllocation button_allocation; + GtkStyleContext *context; + + if (!entry->priv->button_visible || !tag->priv->has_close_button) + return FALSE; + + context = gd_tagged_entry_tag_get_context (tag, entry); + gd_tagged_entry_tag_get_relative_allocations (tag, entry, context, NULL, NULL, &button_allocation); + + g_object_unref (context); + + /* see if the event falls into the button allocation */ + if ((event_x >= button_allocation.x && + event_x <= button_allocation.x + button_allocation.width) && + (event_y >= button_allocation.y && + event_y <= button_allocation.y + button_allocation.height)) + return TRUE; + + return FALSE; +} + +static void +gd_tagged_entry_tag_draw (GdTaggedEntryTag *tag, + cairo_t *cr, + GdTaggedEntry *entry) +{ + GtkStyleContext *context; + GtkStateFlags state; + GtkAllocation background_allocation, layout_allocation, button_allocation; + + context = gd_tagged_entry_tag_get_context (tag, entry); + gd_tagged_entry_tag_get_relative_allocations (tag, entry, context, + &background_allocation, + &layout_allocation, + &button_allocation); + + cairo_save (cr); + gtk_cairo_transform_to_window (cr, GTK_WIDGET (entry), tag->priv->window); + + gtk_style_context_save (context); + + state = gd_tagged_entry_tag_get_state (tag, entry); + gtk_style_context_set_state (context, state); + gtk_render_background (context, cr, + background_allocation.x, background_allocation.y, + background_allocation.width, background_allocation.height); + gtk_render_frame (context, cr, + background_allocation.x, background_allocation.y, + background_allocation.width, background_allocation.height); + + gtk_render_layout (context, cr, + layout_allocation.x, layout_allocation.y, + tag->priv->layout); + + gtk_style_context_restore (context); + + if (!entry->priv->button_visible || !tag->priv->has_close_button) + goto done; + + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); + state = gd_tagged_entry_tag_get_button_state (tag, entry); + gtk_style_context_set_state (context, state); + + /* if the state changed since last time we draw the pixbuf, + * clear and redraw it. + */ + if (state != tag->priv->last_button_state) + { + g_clear_object (&tag->priv->close_pixbuf); + gd_tagged_entry_tag_ensure_close_pixbuf (tag, context); + + tag->priv->last_button_state = state; + } + + gtk_render_background (context, cr, + button_allocation.x, button_allocation.y, + button_allocation.width, button_allocation.height); + gtk_render_frame (context, cr, + button_allocation.x, button_allocation.y, + button_allocation.width, button_allocation.height); + + gtk_render_icon (context, cr, + tag->priv->close_pixbuf, + button_allocation.x, button_allocation.y); + +done: + cairo_restore (cr); + + g_object_unref (context); +} + +static void +gd_tagged_entry_tag_unrealize (GdTaggedEntryTag *tag) +{ + if (tag->priv->window == NULL) + return; + + gdk_window_set_user_data (tag->priv->window, NULL); + gdk_window_destroy (tag->priv->window); + tag->priv->window = NULL; +} + +static void +gd_tagged_entry_tag_realize (GdTaggedEntryTag *tag, + GdTaggedEntry *entry) +{ + GtkWidget *widget = GTK_WIDGET (entry); + GdkWindowAttr attributes; + gint attributes_mask; + gint tag_width, tag_height; + + if (tag->priv->window != NULL) + return; + + attributes.window_type = GDK_WINDOW_CHILD; + attributes.wclass = GDK_INPUT_ONLY; + attributes.event_mask = gtk_widget_get_events (widget); + attributes.event_mask |= GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK + | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK; + + gd_tagged_entry_tag_get_size (tag, entry, &tag_width, &tag_height); + attributes.x = 0; + attributes.y = 0; + attributes.width = tag_width; + attributes.height = tag_height; + + attributes_mask = GDK_WA_X | GDK_WA_Y; + + tag->priv->window = gdk_window_new (gtk_widget_get_window (widget), + &attributes, attributes_mask); + gdk_window_set_user_data (tag->priv->window, widget); +} + +static gboolean +gd_tagged_entry_draw (GtkWidget *widget, + cairo_t *cr) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + GList *l; + + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->draw (widget, cr); + + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + gd_tagged_entry_tag_draw (tag, cr, self); + } + + return FALSE; +} + +static void +gd_tagged_entry_map (GtkWidget *widget) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + GList *l; + + if (gtk_widget_get_realized (widget) && !gtk_widget_get_mapped (widget)) + { + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->map (widget); + + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + gdk_window_show (tag->priv->window); + } + } +} + +static void +gd_tagged_entry_unmap (GtkWidget *widget) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + GList *l; + + if (gtk_widget_get_mapped (widget)) + { + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + gdk_window_hide (tag->priv->window); + } + + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->unmap (widget); + } +} + +static void +gd_tagged_entry_realize (GtkWidget *widget) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + GList *l; + + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->realize (widget); + + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + gd_tagged_entry_tag_realize (tag, self); + } +} + +static void +gd_tagged_entry_unrealize (GtkWidget *widget) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + GList *l; + + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->unrealize (widget); + + for (l = self->priv->tags; l != NULL; l = l->next) + { + tag = l->data; + gd_tagged_entry_tag_unrealize (tag); + } +} + +static void +gd_tagged_entry_get_text_area_size (GtkEntry *entry, + gint *x, + gint *y, + gint *width, + gint *height) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (entry); + gint tag_panel_width; + + GTK_ENTRY_CLASS (gd_tagged_entry_parent_class)->get_text_area_size (entry, x, y, width, height); + + tag_panel_width = gd_tagged_entry_tag_panel_get_width (self); + + if (width) + *width -= tag_panel_width; +} + +static void +gd_tagged_entry_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + gint x, y, width, height; + GdTaggedEntryTag *tag; + GList *l; + + gtk_widget_set_allocation (widget, allocation); + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->size_allocate (widget, allocation); + + if (gtk_widget_get_realized (widget)) + { + gd_tagged_entry_tag_panel_get_position (self, &x, &y); + + for (l = self->priv->tags; l != NULL; l = l->next) + { + GtkBorder margin; + + tag = l->data; + gd_tagged_entry_tag_get_size (tag, self, &width, &height); + gd_tagged_entry_tag_get_margin (tag, self, &margin); + gdk_window_move_resize (tag->priv->window, x, y + margin.top, width, height); + + x += width; + } + + gtk_widget_queue_draw (widget); + } +} + +static void +gd_tagged_entry_get_preferred_width (GtkWidget *widget, + gint *minimum, + gint *natural) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + gint tag_panel_width; + + GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->get_preferred_width (widget, minimum, natural); + + tag_panel_width = gd_tagged_entry_tag_panel_get_width (self); + + if (minimum) + *minimum += tag_panel_width; + if (natural) + *natural += tag_panel_width; +} + +static void +gd_tagged_entry_finalize (GObject *obj) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (obj); + + if (self->priv->tags != NULL) + { + g_list_free_full (self->priv->tags, g_object_unref); + self->priv->tags = NULL; + } + + G_OBJECT_CLASS (gd_tagged_entry_parent_class)->finalize (obj); +} + +static GdTaggedEntryTag * +gd_tagged_entry_find_tag_by_window (GdTaggedEntry *self, + GdkWindow *window) +{ + GdTaggedEntryTag *tag = NULL, *elem; + GList *l; + + for (l = self->priv->tags; l != NULL; l = l->next) + { + elem = l->data; + if (elem->priv->window == window) + { + tag = elem; + break; + } + } + + return tag; +} + +static gint +gd_tagged_entry_enter_notify (GtkWidget *widget, + GdkEventCrossing *event) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + + tag = gd_tagged_entry_find_tag_by_window (self, event->window); + + if (tag != NULL) + { + self->priv->in_child = tag; + gtk_widget_queue_draw (widget); + } + + return GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->enter_notify_event (widget, event); +} + +static gint +gd_tagged_entry_leave_notify (GtkWidget *widget, + GdkEventCrossing *event) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + + if (self->priv->in_child != NULL) + { + self->priv->in_child = NULL; + gtk_widget_queue_draw (widget); + } + + return GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->leave_notify_event (widget, event); +} + +static gint +gd_tagged_entry_motion_notify (GtkWidget *widget, + GdkEventMotion *event) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + + tag = gd_tagged_entry_find_tag_by_window (self, event->window); + + if (tag != NULL) + { + gdk_event_request_motions (event); + + self->priv->in_child = tag; + self->priv->in_child_button = gd_tagged_entry_tag_event_is_button (tag, self, event->x, event->y); + gtk_widget_queue_draw (widget); + + return FALSE; + } + + return GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->motion_notify_event (widget, event); +} + +static gboolean +gd_tagged_entry_button_release_event (GtkWidget *widget, + GdkEventButton *event) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + + tag = gd_tagged_entry_find_tag_by_window (self, event->window); + + if (tag != NULL) + { + self->priv->in_child_active = FALSE; + + if (gd_tagged_entry_tag_event_is_button (tag, self, event->x, event->y)) + { + self->priv->in_child_button_active = FALSE; + g_signal_emit (self, signals[SIGNAL_TAG_BUTTON_CLICKED], 0, tag); + } + else + { + g_signal_emit (self, signals[SIGNAL_TAG_CLICKED], 0, tag); + } + + gtk_widget_queue_draw (widget); + + return TRUE; + } + + return GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->button_release_event (widget, event); +} + +static gboolean +gd_tagged_entry_button_press_event (GtkWidget *widget, + GdkEventButton *event) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (widget); + GdTaggedEntryTag *tag; + + tag = gd_tagged_entry_find_tag_by_window (self, event->window); + + if (tag != NULL) + { + if (gd_tagged_entry_tag_event_is_button (tag, self, event->x, event->y)) + self->priv->in_child_button_active = TRUE; + else + self->priv->in_child_active = TRUE; + + gtk_widget_queue_draw (widget); + + return TRUE; + } + + return GTK_WIDGET_CLASS (gd_tagged_entry_parent_class)->button_press_event (widget, event); +} + +static void +gd_tagged_entry_init (GdTaggedEntry *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GD_TYPE_TAGGED_ENTRY, GdTaggedEntryPrivate); + self->priv->button_visible = TRUE; +} + +static void +gd_tagged_entry_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (object); + + switch (property_id) + { + case PROP_TAG_BUTTON_VISIBLE: + g_value_set_boolean (value, gd_tagged_entry_get_tag_button_visible (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +gd_tagged_entry_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GdTaggedEntry *self = GD_TAGGED_ENTRY (object); + + switch (property_id) + { + case PROP_TAG_BUTTON_VISIBLE: + gd_tagged_entry_set_tag_button_visible (self, g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +gd_tagged_entry_class_init (GdTaggedEntryClass *klass) +{ + GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); + GtkEntryClass *eclass = GTK_ENTRY_CLASS (klass); + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + oclass->finalize = gd_tagged_entry_finalize; + oclass->set_property = gd_tagged_entry_set_property; + oclass->get_property = gd_tagged_entry_get_property; + + wclass->realize = gd_tagged_entry_realize; + wclass->unrealize = gd_tagged_entry_unrealize; + wclass->map = gd_tagged_entry_map; + wclass->unmap = gd_tagged_entry_unmap; + wclass->size_allocate = gd_tagged_entry_size_allocate; + wclass->get_preferred_width = gd_tagged_entry_get_preferred_width; + wclass->draw = gd_tagged_entry_draw; + wclass->enter_notify_event = gd_tagged_entry_enter_notify; + wclass->leave_notify_event = gd_tagged_entry_leave_notify; + wclass->motion_notify_event = gd_tagged_entry_motion_notify; + wclass->button_press_event = gd_tagged_entry_button_press_event; + wclass->button_release_event = gd_tagged_entry_button_release_event; + + eclass->get_text_area_size = gd_tagged_entry_get_text_area_size; + + signals[SIGNAL_TAG_CLICKED] = + g_signal_new ("tag-clicked", + GD_TYPE_TAGGED_ENTRY, + G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED, + 0, NULL, NULL, NULL, + G_TYPE_NONE, + 1, GD_TYPE_TAGGED_ENTRY_TAG); + signals[SIGNAL_TAG_BUTTON_CLICKED] = + g_signal_new ("tag-button-clicked", + GD_TYPE_TAGGED_ENTRY, + G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED, + 0, NULL, NULL, NULL, + G_TYPE_NONE, + 1, GD_TYPE_TAGGED_ENTRY_TAG); + + properties[PROP_TAG_BUTTON_VISIBLE] = + g_param_spec_boolean ("tag-close-visible", "Tag close icon visibility", + "Whether the close button should be shown in tags.", TRUE, + G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS); + + g_type_class_add_private (klass, sizeof (GdTaggedEntryPrivate)); + g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); +} + +static void +gd_tagged_entry_tag_init (GdTaggedEntryTag *self) +{ + GdTaggedEntryTagPrivate *priv; + + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTagPrivate); + priv = self->priv; + + priv->last_button_state = GTK_STATE_FLAG_NORMAL; +} + +static void +gd_tagged_entry_tag_finalize (GObject *obj) +{ + GdTaggedEntryTag *tag = GD_TAGGED_ENTRY_TAG (obj); + GdTaggedEntryTagPrivate *priv = tag->priv; + + if (priv->window != NULL) + gd_tagged_entry_tag_unrealize (tag); + + g_clear_object (&priv->layout); + g_clear_object (&priv->close_pixbuf); + g_free (priv->label); + g_free (priv->style); + + G_OBJECT_CLASS (gd_tagged_entry_tag_parent_class)->finalize (obj); +} + +static void +gd_tagged_entry_tag_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GdTaggedEntryTag *self = GD_TAGGED_ENTRY_TAG (object); + + switch (property_id) + { + case PROP_TAG_LABEL: + g_value_set_string (value, gd_tagged_entry_tag_get_label (self)); + break; + case PROP_TAG_HAS_CLOSE_BUTTON: + g_value_set_boolean (value, gd_tagged_entry_tag_get_has_close_button (self)); + break; + case PROP_TAG_STYLE: + g_value_set_string (value, gd_tagged_entry_tag_get_style (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +gd_tagged_entry_tag_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GdTaggedEntryTag *self = GD_TAGGED_ENTRY_TAG (object); + + switch (property_id) + { + case PROP_TAG_LABEL: + gd_tagged_entry_tag_set_label (self, g_value_get_string (value)); + break; + case PROP_TAG_HAS_CLOSE_BUTTON: + gd_tagged_entry_tag_set_has_close_button (self, g_value_get_boolean (value)); + break; + case PROP_TAG_STYLE: + gd_tagged_entry_tag_set_style (self, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +gd_tagged_entry_tag_class_init (GdTaggedEntryTagClass *klass) +{ + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + oclass->finalize = gd_tagged_entry_tag_finalize; + oclass->set_property = gd_tagged_entry_tag_set_property; + oclass->get_property = gd_tagged_entry_tag_get_property; + + tag_properties[PROP_TAG_LABEL] = + g_param_spec_string ("label", "Label", + "Text to show on the tag.", NULL, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + tag_properties[PROP_TAG_HAS_CLOSE_BUTTON] = + g_param_spec_boolean ("has-close-button", "Tag has a close button", + "Whether the tag has a close button.", TRUE, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + tag_properties[PROP_TAG_STYLE] = + g_param_spec_string ("style", "Style", + "Style of the tag.", "documents-entry-tag", + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + g_type_class_add_private (klass, sizeof (GdTaggedEntryTagPrivate)); + g_object_class_install_properties (oclass, NUM_TAG_PROPERTIES, tag_properties); +} + +GdTaggedEntry * +gd_tagged_entry_new (void) +{ + return g_object_new (GD_TYPE_TAGGED_ENTRY, NULL); +} + +gboolean +gd_tagged_entry_insert_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag, + gint position) +{ + if (g_list_find (self->priv->tags, tag) != NULL) + return FALSE; + + tag->priv->entry = self; + + self->priv->tags = g_list_insert (self->priv->tags, g_object_ref (tag), position); + + if (gtk_widget_get_mapped (GTK_WIDGET (self))) + { + gd_tagged_entry_tag_realize (tag, self); + gdk_window_show_unraised (tag->priv->window); + } + + gtk_widget_queue_resize (GTK_WIDGET (self)); + + return TRUE; +} + +gboolean +gd_tagged_entry_add_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag) +{ + return gd_tagged_entry_insert_tag (self, tag, -1); +} + +gboolean +gd_tagged_entry_remove_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag) +{ + if (!g_list_find (self->priv->tags, tag)) + return FALSE; + + self->priv->tags = g_list_remove (self->priv->tags, tag); + g_object_unref (tag); + + gtk_widget_queue_resize (GTK_WIDGET (self)); + + return TRUE; +} + +GdTaggedEntryTag * +gd_tagged_entry_tag_new (const gchar *label) +{ + return g_object_new (GD_TYPE_TAGGED_ENTRY_TAG, "label", label, NULL); +} + +void +gd_tagged_entry_tag_set_label (GdTaggedEntryTag *tag, + const gchar *label) +{ + GdTaggedEntryTagPrivate *priv; + + g_return_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag)); + + priv = tag->priv; + + if (g_strcmp0 (priv->label, label) != 0) + { + GtkWidget *entry; + + g_free (priv->label); + priv->label = g_strdup (label); + g_clear_object (&priv->layout); + + entry = GTK_WIDGET (tag->priv->entry); + if (entry) + gtk_widget_queue_resize (entry); + } +} + +const gchar * +gd_tagged_entry_tag_get_label (GdTaggedEntryTag *tag) +{ + g_return_val_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag), NULL); + + return tag->priv->label; +} + +void +gd_tagged_entry_tag_set_has_close_button (GdTaggedEntryTag *tag, + gboolean has_close_button) +{ + GdTaggedEntryTagPrivate *priv; + + g_return_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag)); + + priv = tag->priv; + + has_close_button = has_close_button != FALSE; + if (tag->priv->has_close_button != has_close_button) + { + GtkWidget *entry; + + tag->priv->has_close_button = has_close_button; + g_clear_object (&tag->priv->layout); + + entry = GTK_WIDGET (tag->priv->entry); + if (entry) + gtk_widget_queue_resize (entry); + } +} + +gboolean +gd_tagged_entry_tag_get_has_close_button (GdTaggedEntryTag *tag) +{ + g_return_val_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag), FALSE); + + return tag->priv->has_close_button; +} + +void +gd_tagged_entry_tag_set_style (GdTaggedEntryTag *tag, + const gchar *style) +{ + GdTaggedEntryTagPrivate *priv; + + g_return_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag)); + + priv = tag->priv; + + if (g_strcmp0 (priv->style, style) != 0) + { + GtkWidget *entry; + + g_free (priv->style); + priv->style = g_strdup (style); + g_clear_object (&priv->layout); + + entry = GTK_WIDGET (tag->priv->entry); + if (entry) + gtk_widget_queue_resize (entry); + } +} + +const gchar * +gd_tagged_entry_tag_get_style (GdTaggedEntryTag *tag) +{ + g_return_val_if_fail (GD_IS_TAGGED_ENTRY_TAG (tag), NULL); + + return tag->priv->style; +} + +void +gd_tagged_entry_set_tag_button_visible (GdTaggedEntry *self, + gboolean visible) +{ + g_return_if_fail (GD_IS_TAGGED_ENTRY (self)); + + if (self->priv->button_visible == visible) + return; + + self->priv->button_visible = visible; + gtk_widget_queue_resize (GTK_WIDGET (self)); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TAG_BUTTON_VISIBLE]); +} + +gboolean +gd_tagged_entry_get_tag_button_visible (GdTaggedEntry *self) +{ + g_return_val_if_fail (GD_IS_TAGGED_ENTRY (self), FALSE); + + return self->priv->button_visible; +} diff -Nru bijiben-3.8.4/libgd/libgd/gd-tagged-entry.h bijiben-3.10.2/libgd/libgd/gd-tagged-entry.h --- bijiben-3.8.4/libgd/libgd/gd-tagged-entry.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-tagged-entry.h 2013-10-25 18:54:48.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2011 Red Hat, Inc. + * Copyright (c) 2013 Ignacio Casal Quinteiro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Cosimo Cecchi + * + */ + +#ifndef __GD_TAGGED_ENTRY_H__ +#define __GD_TAGGED_ENTRY_H__ + +#include + +#include + +G_BEGIN_DECLS + +#define GD_TYPE_TAGGED_ENTRY gd_tagged_entry_get_type() +#define GD_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_TAGGED_ENTRY, GdTaggedEntry)) +#define GD_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_TAGGED_ENTRY, GdTaggedEntryClass)) +#define GD_IS_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_TAGGED_ENTRY)) +#define GD_IS_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_TAGGED_ENTRY)) +#define GD_TAGGED_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_TAGGED_ENTRY, GdTaggedEntryClass)) + +typedef struct _GdTaggedEntry GdTaggedEntry; +typedef struct _GdTaggedEntryClass GdTaggedEntryClass; +typedef struct _GdTaggedEntryPrivate GdTaggedEntryPrivate; + +typedef struct _GdTaggedEntryTag GdTaggedEntryTag; +typedef struct _GdTaggedEntryTagClass GdTaggedEntryTagClass; +typedef struct _GdTaggedEntryTagPrivate GdTaggedEntryTagPrivate; + +struct _GdTaggedEntry +{ + GtkSearchEntry parent; + + GdTaggedEntryPrivate *priv; +}; + +struct _GdTaggedEntryClass +{ + GtkSearchEntryClass parent_class; +}; + +#define GD_TYPE_TAGGED_ENTRY_TAG gd_tagged_entry_tag_get_type() +#define GD_TAGGED_ENTRY_TAG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTag)) +#define GD_TAGGED_ENTRY_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTagClass)) +#define GD_IS_TAGGED_ENTRY_TAG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_TAGGED_ENTRY_TAG)) +#define GD_IS_TAGGED_ENTRY_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_TAGGED_ENTRY_TAG)) +#define GD_TAGGED_ENTRY_TAG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTagClass)) + +struct _GdTaggedEntryTag +{ + GObject parent; + + GdTaggedEntryTagPrivate *priv; +}; + +struct _GdTaggedEntryTagClass +{ + GObjectClass parent_class; +}; + +GType gd_tagged_entry_get_type (void) G_GNUC_CONST; + +GdTaggedEntry *gd_tagged_entry_new (void); + +void gd_tagged_entry_set_tag_button_visible (GdTaggedEntry *self, + gboolean visible); +gboolean gd_tagged_entry_get_tag_button_visible (GdTaggedEntry *self); + +gboolean gd_tagged_entry_insert_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag, + gint position); + +gboolean gd_tagged_entry_add_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag); + +gboolean gd_tagged_entry_remove_tag (GdTaggedEntry *self, + GdTaggedEntryTag *tag); + +GType gd_tagged_entry_tag_get_type (void) G_GNUC_CONST; + +GdTaggedEntryTag *gd_tagged_entry_tag_new (const gchar *label); + +void gd_tagged_entry_tag_set_label (GdTaggedEntryTag *tag, + const gchar *label); +const gchar *gd_tagged_entry_tag_get_label (GdTaggedEntryTag *tag); + +void gd_tagged_entry_tag_set_has_close_button (GdTaggedEntryTag *tag, + gboolean has_close_button); +gboolean gd_tagged_entry_tag_get_has_close_button (GdTaggedEntryTag *tag); + +void gd_tagged_entry_tag_set_style (GdTaggedEntryTag *tag, + const gchar *style); +const gchar *gd_tagged_entry_tag_get_style (GdTaggedEntryTag *tag); + +G_END_DECLS + +#endif /* __GD_TAGGED_ENTRY_H__ */ diff -Nru bijiben-3.8.4/libgd/libgd/gd-toggle-pixbuf-renderer.c bijiben-3.10.2/libgd/libgd/gd-toggle-pixbuf-renderer.c --- bijiben-3.8.4/libgd/libgd/gd-toggle-pixbuf-renderer.c 2013-06-15 15:34:50.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-toggle-pixbuf-renderer.c 2013-10-25 18:54:48.000000000 +0000 @@ -26,6 +26,7 @@ enum { PROP_ACTIVE = 1, PROP_TOGGLE_VISIBLE, + PROP_PULSE, NUM_PROPERTIES }; @@ -34,38 +35,29 @@ struct _GdTogglePixbufRendererPrivate { gboolean active; gboolean toggle_visible; + + guint pulse; }; static void -gd_toggle_pixbuf_renderer_render (GtkCellRenderer *cell, - cairo_t *cr, - GtkWidget *widget, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - GtkCellRendererState flags) +render_check (GdTogglePixbufRenderer *self, + cairo_t *cr, + GtkWidget *widget, + const GdkRectangle *cell_area, + gint icon_size, + gint xpad, + gint ypad) { - gint icon_size = -1; - gint check_x, check_y, x_offset, xpad, ypad; GtkStyleContext *context; - GdTogglePixbufRenderer *self = GD_TOGGLE_PIXBUF_RENDERER (cell); + gint check_x, check_y, x_offset; GtkTextDirection direction; - GTK_CELL_RENDERER_CLASS (gd_toggle_pixbuf_renderer_parent_class)->render - (cell, cr, widget, - background_area, cell_area, flags); + context = gtk_widget_get_style_context (widget); if (!self->priv->toggle_visible) return; - gtk_cell_renderer_get_padding (cell, &xpad, &ypad); direction = gtk_widget_get_direction (widget); - gtk_widget_style_get (widget, - "check-icon-size", &icon_size, - NULL); - - if (icon_size == -1) - icon_size = 40; - if (direction == GTK_TEXT_DIR_RTL) x_offset = xpad; else @@ -74,7 +66,6 @@ check_x = cell_area->x + x_offset; check_y = cell_area->y + cell_area->height - icon_size - ypad; - context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); gtk_style_context_add_class (context, GTK_STYLE_CLASS_CHECK); @@ -84,11 +75,68 @@ gtk_render_check (context, cr, check_x, check_y, icon_size, icon_size); - gtk_style_context_restore (context); } static void +render_activity (GdTogglePixbufRenderer *self, + cairo_t *cr, + GtkWidget *widget, + const GdkRectangle *cell_area, + gint icon_size, + gint xpad, + gint ypad) +{ + gint x, y, width, height; + + if (self->priv->pulse == 0) + return; + + width = cell_area->width / 4; + height = cell_area->height / 4; + + x = cell_area->x + (cell_area->width / 2) - (width / 2) - xpad; + y = cell_area->y + (cell_area->height / 2) - (height / 2) - ypad; + + gtk_paint_spinner (gtk_widget_get_style (widget), + cr, + GTK_STATE_FLAG_ACTIVE, + widget, + NULL, + (guint) self->priv->pulse - 1, + x, y, + width, height); +} + +static void +gd_toggle_pixbuf_renderer_render (GtkCellRenderer *cell, + cairo_t *cr, + GtkWidget *widget, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + gint icon_size = -1; + GdTogglePixbufRenderer *self = GD_TOGGLE_PIXBUF_RENDERER (cell); + gint xpad, ypad; + + GTK_CELL_RENDERER_CLASS (gd_toggle_pixbuf_renderer_parent_class)->render + (cell, cr, widget, + background_area, cell_area, flags); + + gtk_cell_renderer_get_padding (cell, &xpad, &ypad); + gtk_widget_style_get (widget, + "check-icon-size", &icon_size, + NULL); + + if (icon_size == -1) + icon_size = 40; + + render_activity (self, cr, widget, cell_area, icon_size, xpad, ypad); + render_check (self, cr, widget, cell_area, icon_size, xpad, ypad); +} + +static void gd_toggle_pixbuf_renderer_get_size (GtkCellRenderer *cell, GtkWidget *widget, const GdkRectangle *cell_area, @@ -126,6 +174,9 @@ case PROP_TOGGLE_VISIBLE: g_value_set_boolean (value, self->priv->toggle_visible); break; + case PROP_PULSE: + g_value_set_uint (value, self->priv->pulse); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -148,6 +199,9 @@ case PROP_TOGGLE_VISIBLE: self->priv->toggle_visible = g_value_get_boolean (value); break; + case PROP_PULSE: + self->priv->pulse = g_value_get_uint (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -179,6 +233,16 @@ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + properties[PROP_PULSE] = + g_param_spec_uint ("pulse", + "Pulse", + "Set to any value other than 0 to display a " + "spinner on top of the pixbuf.", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); g_type_class_add_private (klass, sizeof (GdTogglePixbufRendererPrivate)); g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); @@ -189,6 +253,7 @@ { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GD_TYPE_TOGGLE_PIXBUF_RENDERER, GdTogglePixbufRendererPrivate); + self->priv->pulse = 0; } GtkCellRenderer * diff -Nru bijiben-3.8.4/libgd/libgd/gd-types-catalog.c bijiben-3.10.2/libgd/libgd/gd-types-catalog.c --- bijiben-3.8.4/libgd/libgd/gd-types-catalog.c 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/libgd/gd-types-catalog.c 2013-10-25 18:54:48.000000000 +0000 @@ -26,12 +26,12 @@ #ifdef LIBGD__VIEW_COMMON # include "gd-main-view-generic.h" # include "gd-styled-text-renderer.h" -# include "gd-toggle-pixbuf-renderer.h" # include "gd-two-lines-renderer.h" #endif #ifdef LIBGD_MAIN_ICON_VIEW # include "gd-main-icon-view.h" +# include "gd-toggle-pixbuf-renderer.h" #endif #ifdef LIBGD_MAIN_LIST_VIEW @@ -87,12 +87,12 @@ #ifdef LIBGD__VIEW_COMMON g_type_ensure (GD_TYPE_MAIN_VIEW_GENERIC); g_type_ensure (GD_TYPE_STYLED_TEXT_RENDERER); - g_type_ensure (GD_TYPE_TOGGLE_PIXBUF_RENDERER); g_type_ensure (GD_TYPE_TWO_LINES_RENDERER); #endif #ifdef LIBGD_MAIN_ICON_VIEW g_type_ensure (GD_TYPE_MAIN_ICON_VIEW); + g_type_ensure (GD_TYPE_TOGGLE_PIXBUF_RENDERER); #endif #ifdef LIBGD_MAIN_LIST_VIEW diff -Nru bijiben-3.8.4/libgd/Makefile.am bijiben-3.10.2/libgd/Makefile.am --- bijiben-3.8.4/libgd/Makefile.am 2013-06-22 15:45:34.000000000 +0000 +++ bijiben-3.10.2/libgd/Makefile.am 2013-10-25 18:54:48.000000000 +0000 @@ -199,6 +199,15 @@ nodist_libgd_la_SOURCES += $(tagged_entry_sources) EXTRA_DIST += $(tagged_entry_sources) + +noinst_PROGRAMS += test-tagged-entry +test_tagged_entry_SOURCES = \ + test-tagged-entry.c \ + $(NULL) +test_tagged_entry_LDADD = \ + $(LIBGD_LIBS) \ + libgd.la \ + $(NULL) endif if LIBGD_GIR diff -Nru bijiben-3.8.4/libgd/Makefile.in bijiben-3.10.2/libgd/Makefile.in --- bijiben-3.8.4/libgd/Makefile.in 2013-08-18 23:29:47.000000000 +0000 +++ bijiben-3.10.2/libgd/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -80,7 +80,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) +noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ + $(am__EXEEXT_4) @LIBGD_GTK_HACKS_TRUE@am__append_1 = $(gtk_hacks_sources) @LIBGD_GTK_HACKS_TRUE@am__append_2 = $(gtk_hacks_sources) @LIBGD__VIEW_COMMON_TRUE@am__append_3 = $(view_common_sources) @@ -110,13 +111,14 @@ @LIBGD_STACK_TRUE@am__append_27 = test-stack @LIBGD_TAGGED_ENTRY_TRUE@am__append_28 = $(tagged_entry_sources) @LIBGD_TAGGED_ENTRY_TRUE@am__append_29 = $(tagged_entry_sources) -@LIBGD_GIR_TRUE@@LIBGD_STATIC_TRUE@am__append_30 = $(srcdir)/Gd-1.0.gir +@LIBGD_TAGGED_ENTRY_TRUE@am__append_30 = test-tagged-entry @LIBGD_GIR_TRUE@@LIBGD_STATIC_TRUE@am__append_31 = $(srcdir)/Gd-1.0.gir @LIBGD_GIR_TRUE@@LIBGD_STATIC_TRUE@am__append_32 = $(srcdir)/Gd-1.0.gir -@LIBGD_GIR_TRUE@@LIBGD_STATIC_FALSE@am__append_33 = $(gir_DATA) $(typelib_DATA) -@LIBGD_VAPI_TRUE@am__append_34 = $(VAPIS) +@LIBGD_GIR_TRUE@@LIBGD_STATIC_TRUE@am__append_33 = $(srcdir)/Gd-1.0.gir +@LIBGD_GIR_TRUE@@LIBGD_STATIC_FALSE@am__append_34 = $(gir_DATA) $(typelib_DATA) @LIBGD_VAPI_TRUE@am__append_35 = $(VAPIS) @LIBGD_VAPI_TRUE@am__append_36 = $(VAPIS) +@LIBGD_VAPI_TRUE@am__append_37 = $(VAPIS) subdir = libgd DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/depcomp README @@ -226,6 +228,7 @@ @LIBGD_HEADER_BAR_TRUE@am__EXEEXT_1 = test-header-bar$(EXEEXT) @LIBGD_REVEALER_TRUE@am__EXEEXT_2 = test-revealer$(EXEEXT) @LIBGD_STACK_TRUE@am__EXEEXT_3 = test-stack$(EXEEXT) +@LIBGD_TAGGED_ENTRY_TRUE@am__EXEEXT_4 = test-tagged-entry$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am__test_header_bar_SOURCES_DIST = test-header-bar.c @LIBGD_HEADER_BAR_TRUE@am_test_header_bar_OBJECTS = \ @@ -248,6 +251,14 @@ test_stack_OBJECTS = $(am_test_stack_OBJECTS) @LIBGD_STACK_TRUE@test_stack_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @LIBGD_STACK_TRUE@ libgd.la $(am__DEPENDENCIES_1) +am__test_tagged_entry_SOURCES_DIST = test-tagged-entry.c +@LIBGD_TAGGED_ENTRY_TRUE@am_test_tagged_entry_OBJECTS = \ +@LIBGD_TAGGED_ENTRY_TRUE@ test-tagged-entry.$(OBJEXT) \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(am__objects_1) +test_tagged_entry_OBJECTS = $(am_test_tagged_entry_OBJECTS) +@LIBGD_TAGGED_ENTRY_TRUE@test_tagged_entry_DEPENDENCIES = \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(am__DEPENDENCIES_1) libgd.la \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -284,10 +295,11 @@ am__v_CCLD_1 = SOURCES = $(libgd_la_SOURCES) $(nodist_libgd_la_SOURCES) \ $(test_header_bar_SOURCES) $(test_revealer_SOURCES) \ - $(test_stack_SOURCES) + $(test_stack_SOURCES) $(test_tagged_entry_SOURCES) DIST_SOURCES = $(libgd_la_SOURCES) $(am__test_header_bar_SOURCES_DIST) \ $(am__test_revealer_SOURCES_DIST) \ - $(am__test_stack_SOURCES_DIST) + $(am__test_stack_SOURCES_DIST) \ + $(am__test_tagged_entry_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -417,6 +429,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -477,15 +490,15 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = -CLEANFILES = $(am__append_33) -MAINTAINERCLEANFILES = $(am__append_32) $(am__append_36) +CLEANFILES = $(am__append_34) +MAINTAINERCLEANFILES = $(am__append_33) $(am__append_37) EXTRA_DIST = $(catalog_sources) $(am__append_2) $(am__append_4) \ $(am__append_6) $(am__append_8) $(am__append_10) \ $(am__append_12) $(am__append_14) $(am__append_17) \ $(am__append_19) $(am__append_21) $(am__append_23) \ - $(am__append_26) $(am__append_29) $(am__append_31) \ - $(am__append_35) -noinst_DATA = $(am__append_30) $(am__append_34) + $(am__append_26) $(am__append_29) $(am__append_32) \ + $(am__append_36) +noinst_DATA = $(am__append_31) $(am__append_35) AM_CPPFLAGS = \ -I$(top_srcdir) \ -DPREFIX=\"$(prefix)\" \ @@ -612,6 +625,15 @@ @LIBGD_TAGGED_ENTRY_TRUE@ libgd/gd-tagged-entry.h \ @LIBGD_TAGGED_ENTRY_TRUE@ $(NULL) +@LIBGD_TAGGED_ENTRY_TRUE@test_tagged_entry_SOURCES = \ +@LIBGD_TAGGED_ENTRY_TRUE@ test-tagged-entry.c \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(NULL) + +@LIBGD_TAGGED_ENTRY_TRUE@test_tagged_entry_LDADD = \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(LIBGD_LIBS) \ +@LIBGD_TAGGED_ENTRY_TRUE@ libgd.la \ +@LIBGD_TAGGED_ENTRY_TRUE@ $(NULL) + @LIBGD_GIR_TRUE@INTROSPECTION_GIRS = Gd-1.0.gir @LIBGD_GIR_TRUE@Gd_1_0_gir_NAMESPACE = Gd @LIBGD_GIR_TRUE@Gd_1_0_gir_VERSION = 1.0 @@ -644,9 +666,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libgd/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libgd/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libgd/Makefile + $(AUTOMAKE) --gnu libgd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -736,6 +758,10 @@ @rm -f test-stack$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_stack_OBJECTS) $(test_stack_LDADD) $(LIBS) +test-tagged-entry$(EXEEXT): $(test_tagged_entry_OBJECTS) $(test_tagged_entry_DEPENDENCIES) $(EXTRA_test_tagged_entry_DEPENDENCIES) + @rm -f test-tagged-entry$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_tagged_entry_OBJECTS) $(test_tagged_entry_LDADD) $(LIBS) + mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -764,20 +790,21 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-header-bar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-revealer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-tagged-entry.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff -Nru bijiben-3.8.4/libgd/test-tagged-entry.c bijiben-3.10.2/libgd/test-tagged-entry.c --- bijiben-3.8.4/libgd/test-tagged-entry.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/libgd/test-tagged-entry.c 2013-10-25 18:54:48.000000000 +0000 @@ -0,0 +1,62 @@ +#include +#include + +static void +on_tag_clicked (GdTaggedEntry *entry, + GdTaggedEntryTag *tag, + gpointer useless) +{ + g_print ("tag clicked: %s\n", gd_tagged_entry_tag_get_label (tag)); +} + +static void +on_tag_button_clicked (GdTaggedEntry *entry, + GdTaggedEntryTag *tag, + gpointer useless) +{ + g_print ("tag button clicked: %s\n", gd_tagged_entry_tag_get_label (tag)); +} + +gint +main (gint argc, + gchar ** argv) +{ + GtkWidget *window, *box, *entry; + GdTaggedEntryTag *tag; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_widget_set_size_request (window, 300, 300); + + box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add (GTK_CONTAINER (window), box); + + entry = GTK_WIDGET (gd_tagged_entry_new ()); + g_signal_connect(entry, "tag-clicked", + G_CALLBACK (on_tag_clicked), NULL); + g_signal_connect(entry, "tag-button-clicked", + G_CALLBACK (on_tag_button_clicked), NULL); + gtk_container_add (GTK_CONTAINER (box), entry); + + tag = gd_tagged_entry_tag_new ("Blah1"); + gd_tagged_entry_add_tag (GD_TAGGED_ENTRY (entry), tag); + g_object_unref (tag); + + tag = gd_tagged_entry_tag_new ("Blah2"); + gd_tagged_entry_tag_set_has_close_button (tag, FALSE); + gd_tagged_entry_insert_tag (GD_TAGGED_ENTRY (entry), tag, -1); + g_object_unref (tag); + + tag = gd_tagged_entry_tag_new ("Blah3"); + gd_tagged_entry_tag_set_has_close_button (tag, FALSE); + gd_tagged_entry_insert_tag (GD_TAGGED_ENTRY (entry), tag, 0); + g_object_unref (tag); + + gtk_widget_show_all (window); + gtk_main (); + + gtk_widget_destroy (window); + + return 0; +} diff -Nru bijiben-3.8.4/m4/libtool.m4 bijiben-3.10.2/m4/libtool.m4 --- bijiben-3.8.4/m4/libtool.m4 2013-08-08 21:41:09.000000000 +0000 +++ bijiben-3.10.2/m4/libtool.m4 2013-11-11 20:55:19.000000000 +0000 @@ -1312,7 +1312,7 @@ rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -1326,7 +1326,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1345,7 +1348,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) diff -Nru bijiben-3.8.4/Makefile.am bijiben-3.10.2/Makefile.am --- bijiben-3.8.4/Makefile.am 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/Makefile.am 2013-10-30 21:59:42.000000000 +0000 @@ -10,7 +10,7 @@ INSTALL\ NEWS -DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper +DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --disable-update-mimedb # Ignore gtk theme cache files on distcheck distuninstallcheck_listfiles = find . -type f -print | grep -v 'icon-theme.cache' diff -Nru bijiben-3.8.4/Makefile.in bijiben-3.10.2/Makefile.in --- bijiben-3.8.4/Makefile.in 2013-08-18 23:29:46.000000000 +0000 +++ bijiben-3.10.2/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -78,11 +78,11 @@ build_triplet = @build@ host_triplet = @host@ subdir = . -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ +DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.h.in AUTHORS COPYING ChangeLog INSTALL NEWS \ - README TODO config.guess config.sub depcomp install-sh missing \ - ltmain.sh + $(srcdir)/config.h.in COPYING TODO compile config.guess \ + config.sub depcomp install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/libgd/libgd.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/libtool.m4 \ @@ -298,6 +298,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -366,7 +367,7 @@ INSTALL\ NEWS -DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper +DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --disable-update-mimedb # Ignore gtk theme cache files on distcheck distuninstallcheck_listfiles = find . -type f -print | grep -v 'icon-theme.cache' @@ -392,15 +393,15 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile + $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -422,8 +423,8 @@ $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -632,10 +633,16 @@ $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) diff -Nru bijiben-3.8.4/NEWS bijiben-3.10.2/NEWS --- bijiben-3.8.4/NEWS 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/NEWS 2013-11-11 20:54:46.000000000 +0000 @@ -1,36 +1,212 @@ -Overview of changes in 3.8.4 -============================ +Overview of changes in 3.10.2 +============================= + +* Bug fixes + https://bugzilla.redhat.com/show_bug.cgi?id=1026979 + +* Translations + Greek (Efstathios Iosifidis) + Malayalam (Anish A) + + +Overview of changes in 3.10.1 +============================= + +* Bug fixes + 708458, 709820, 708812 + +* Translations + German (Christian Kirbach) + +Overview of changes in 3.10.0 +============================= + +* Add instructions to rename help page (Shobha Tyagi) + +* Translations + Assamese (Nilamdyuti Goswami) + Basque (Inaki Larranaga Murgoitio) + Catalan (Josep Sànchez) + Danish (Ask H. Larsen) + Estonian (Priit Laes, Mattias Põldaru) + French (Alexandre Franke) + Japanese (Jiro Matsuzawa) + Portuguese (António Lima) + Tajik (Victor Ibragimov) + + +Overview of changes in 3.9.92 +============================= + +* Fixes some issues with own cloud notes. + +* Bug Fixes + Rename notes as first row is edited (#688902) + Do not hide new notes when switching view (#702983) + +* Translations: + Czech (Marek Černocký) + Dutch (Erwin Poeze) + Finnish (Jiri Grönroos) + Hebrew (Yosef Or Boczko) + Hungarian (Balázs Úr) + Indonesian (Andika Triwidada) + Irish (Seán de Búrca) + Italian (Claudio Arseni) + Korean (Changwoo Ryu) + Latvian (Rūdolfs Mazurs) + Norwegian bokmål (Kjartan Maraas) + Punjabi (Aman) + Russian (Dmitriy S. Seregin) + Serbian (Мирослав Николић) + Slovak (Dušan Kazik) + Traditional Chinese (Chao-Hsiung Liao) + + +Overview of changes in 3.9.91 +============================= + +* Ship appData +* Use native close button (Yosef Or Boczko) +* Update the documentation (Shobha Tyagi) +* Update About Dialog (Arnel A. Borja) * Bug Fixes - Set button arrow icons direction (Yosef Or Boczko) - Make titlebar translatable (Jiro Matsuzawa) - Add url to About Dialog (Jeremy Bicha) - Ship a HighContrast icon + * fix selection toolbar buttons valign (Yosef Or Boczko) + * Fix the back button (Yosef Or Boczko) + * shell-provider: do not abort when tracker connection fails + * Delete bjb-icons-colors (Yosef Or Boczko) * Translations - Updated Brazilian Portuguese translation (Rafael Ferreira) + Updated Brazilian Portuguese translation (Enrico Nicoletto, Rafael Ferreira) Updated Czech translation (Marek Černocký) + Added Friulian translation (Fabio Tomat) + Updated Galician translations (Fran Diéguez) + Updated Hungarian translation (Balázs Úr) + Updated Italian translation (Claudio Arseni) + Updated Lithuanian translation (Aurimas Černius) Updated Polish translation (Piotr Drąg) + Updated slovak translation (Dušan Kazik) + Updated Slovenian translation (Matej Urbančič) + Updated Spanish translation (Daniel Mustieles) + Updated Traditional Chinese translation (Chao-Hsiung Liao) + Added uk translation (Daniel Korostil) + + +Overview of changes in 3.9.90 +============================= + +* Settings: revamp the window to add primary book choice +* Selection toolbar: update to newer design + +* Bug Fixes + * must match the exact repository's name (Andrea Veri) + * fix the import dialog icon for folders + +* Translations + Updated Brazilian Portuguese translation (Rafael Ferreira) + Update Chinese simplified translation (tuhaihe) + Updated Czech translation (Marek Černocký) + Updated Galician translations (Fran Diéguez) + Updated German translation (Benjamin Steinwender) + Updated Hebrew translation (Yaron Shahrabani) + Updated Hungarian translation (Gabor Kelemen) + Updated Lithuanian translation (Aurimas Černius) + Updated Norwegian bokmål translation (Kjartan Maraas) Updated Slovenian translation (Matej Urbančič) Updated Spanish translation (Daniel Mustieles) + Updated Tajik translation (Victor Ibragimov) + Updated Traditional Chinese translation (Chao-Hsiung Liao) + + +Overview of changes in 3.9.5 +============================ + +* 703703: Add zeitgeist CREATE, LEAVE, MODIFY and DELETE event (Manish Sinha) + 704521: Install x-note mimetype (Manish Sinha) + +* Bug Fixes + 703706: Crash when immediately closing a new note + +* Translations + Updated Czech translation (Marek Černocký) + Update Japanese translation (Nishio Futoshi) + Updated Norwegian bokmål translation (Kjartan Maraas) + Updated Spanish translation (Daniel Mustieles) + Added Tajik translation (Victor Ibragimov) + Updated Traditional Chinese translation (Chao-Hsiung Liao) -Overview of changes in 3.8.3 +Overview of changes in 3.9.4 ============================ -* Backport new icon and title +* 702298: Rename Notes + +* Bug Fixes + 703404: Ship a HighContrast icon + 703017: mainToolbar: show the collection title (Yosef Or Boczko) + 702877: mainToolbar: Make headerbar a titlebar (Yosef Or Boczko) + 703474: mainToolbar: fix the look (Yosef Or Boczko) + 702504: Do not use egg list box (Yosef Or Boczko) + 703497: Set buttons according to locale s text direction (Yosef Or Boczko) + 703459: drop GtkStock (Yosef Or Boczko) + 703401: Add website link to about dialog (Jeremy Bicha) + 703401: Rename About Bijiben to About Notes (Jeremy Bicha) + 702865: Make title bar translatable (Jiro Matsuzawa) + 703501: bump to libzeitgeist2 (Manish Sinha) -Overview of changes in 3.8.2 +* Translations + Updated Brazilian Portuguese (Rafael Ferreira) + Update Czech (Marek Černocký) + Add Indonesian (Andika Triwidada) + Update Norwegian (Kjartan Maraas) + Update Spanish (Daniel Mustieles) + + + +Overview of changes in 3.9.3 +============================ + +* Initial ownCloud support and revisit architecture + +* Bug fixes + 701054 : Wrong g_variant_builder_open (Aurimas Černius) + +* New translations + German (Christian Kirbach) + Lithuanian (Aurimas Černius) + Norwegian bokmål (Kjartan Maraas) + +Overview of changes in 3.9.2 ============================= -* Backport fix for 32-bits crash (#697921). +* Start fixing import dialog, preparing for organize dialog + +* A first round of code cleanup + +* Bug 699656 - search was really awful * New translations: - pa + Turkish (Muhammet Karaà) + Hebrew (Yaron Shahrabani) + + + Thanks Ekaterina Gerasimova (many fixes) + -Overview of changes in 3.8.1 +Overview of changes in 3.9.1 ============================= -* Switch manual to CC license. +* Add basis for collections + +* Initial empty state (empty results box) + +* Initial spinner + +* Switch manual to CC license + +* Bugs fixes + 697922 - Crash on 32-bit + 698028 - Note icons for list view * New translations: el diff -Nru bijiben-3.8.4/po/as.po bijiben-3.10.2/po/as.po --- bijiben-3.8.4/po/as.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/as.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,344 @@ +# Assamese translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# +# ngoswami , 2013. +msgid "" +msgstr "" +"Project-Id-Version: bijiben gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-19 06:57+0000\n" +"PO-Revision-Date: 2013-09-20 15:16+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"টোকাসমূহ এটা সম্পাদক যি পৰৱৰ্তী ব্যৱহাৰৰ বাবে সহজ তালিকসমূহ নিৰ্মাণ কৰাৰ " +"অনুমতি দিয়ে।" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"ই ownCloud ক সংৰক্ষণ অৱস্থান আৰু অনলাইন সম্পাদক ব্যৱহাৰ কৰাৰ অনুমতি দিয়ে।" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "টোকাসমূহ" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "টোকাসমূহ;ৰিমাইণ্ডাৰ;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "টোকাসমূহ পস্ট কৰক, ফাইলসমূহ টেগ কৰক!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "টোকা-গ্ৰাহক" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "GNOME ৰ বাবে এটা সাধাৰণ টোকাবহী" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "টোকাৰ ৰঙ" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "কাট কৰক" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "কপি কৰক" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "পেইস্ট কৰক" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "ডাঠ" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "ইটালিক" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "স্ট্ৰাইক" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "নিৰ্বাচনক এটা নতুন টোকালৈ কপি কৰক" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "কোনো টোকা পোৱা নগল" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"আপোনাৰ টোকা সংগ্ৰহ ৰিক্ত।\n" +"আপোনাৰ প্ৰথম টোকা সৃষ্টি কৰিবলৈ নতুন বুটাম ক্লিক কৰক।" + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "এই গৱেষণাৰ বাবে কোনো ফলাফল পোৱা নগল।" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "ইচ্চ" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "অনুগ্ৰহ কৰি 'Tracker' ইনস্টল কৰক আৰু এপ্লিকেচন পুনাৰম্ভ কৰক।" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "স্বনিৰ্বাচিত অৱস্থান" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "টোকাসমূহ ইমপোৰ্ট কৰক" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "বাতিল কৰক (_C)" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "ইমপোৰ্ট কৰক" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "ইমপোৰ্ট অৱস্থান বাছক" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy এপ্লিকেচন" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote এপ্লিকেচন" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "অধিক ল'ড কৰক" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "ল'ড কৰা হৈছে..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "বস্তুবোৰ নিৰ্বাচন কৰিবলে সিহতত ক্লিক কৰক" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d নিৰ্বাচিত" +msgstr[1] "%d নিৰ্বাচিত" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "টোকা শীৰ্ষক, সমল আৰু সংগ্ৰহসমূহ সন্ধান কৰক" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "বাতিল কৰক" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "নিৰ্বাচন অৱস্থাৰ পৰা প্ৰস্থান কৰক" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "%s ৰ বাবে ফলাফলসমূহ" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "নতুন আৰু শেহতীয়া" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "নতুন" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "নিৰ্বাচন অৱস্থা" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "এটা তালিকাত টোকাসমূহ আৰু সংগ্ৰহসমূহ দৰ্শন কৰক" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "টোকাসমূহ আৰু সংগ্ৰহসমূহ এটা গ্ৰিডত দৰ্শন কৰক" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "বাতিল কৰক" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "আকৌ কৰক" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "বুলেটসমূহ" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "সাংখ্যিক তালিকা" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "সংগ্ৰহসমূহ" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "এই টোকা মচি পেলাওক" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "টোকাৰ ৰঙ" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "টোকা অংশীদাৰী কৰক" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "অধিক বিকল্প…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "এটা সংগ্ৰহ সৃষ্টি কৰিবলৈ এটা নাম সুমুৱাওক" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "নতুন সংগ্ৰহ" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "বন্ধ কৰক (_C)" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "সৰ্বশেষ আপডেইট কৰা হৈছিল" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "ঠিক আছে (_O)" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "মচি পেলাওক" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "সংগ্ৰহলৈ যোগ কৰক" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "টোকাৰ ফন্ট" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "অবিকল্পিত ৰঙ" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "টোকাৰ সংস্কৰণ" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "প্ৰাথমিক কিতাপ" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "আজি" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "যোৱাকালি" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "এই সপ্তাহ" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "এই মাহ" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "এই বছৰ" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "স্থানীয় সংৰক্ষণ" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "নতুন উইন্ডো (_N)" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "টোকাসমূহ ইমপোৰ্ট কৰক (_I)" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "পছন্দসমূহ (_P)" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "টোকাসমূহৰ বিষয়ে (_A)" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "সহায় (_H)" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "প্ৰস্থান কৰক (_Q)" + diff -Nru bijiben-3.8.4/po/ca.po bijiben-3.10.2/po/ca.po --- bijiben-3.8.4/po/ca.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/ca.po 2013-09-26 20:05:59.000000000 +0000 @@ -2,24 +2,38 @@ # Copyright (C) 2012 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. # Pau Iranzo , 2012. +# Josep Sanchez Mesegue , 2013. # msgid "" msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2012-12-21 23:49+0000\n" -"PO-Revision-Date: 2012-12-06 19:55+0100\n" -"Last-Translator: Pau Iranzo \n" +"POT-Creation-Date: 2013-09-19 06:57+0000\n" +"PO-Revision-Date: 2013-09-19 14:04+0200\n" +"Last-Translator: Josep Sanchez Mesegue \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../data/bijiben.desktop.in.in.h:1 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"El Notes és un editor que us permet crear llistes per al seu posterior ús." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Permet utilitzar l'ownCloud per desar-hi les notes i com a editor en " +"línia." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notes" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -33,144 +47,296 @@ msgid "Note-taker" msgstr "Prendre notes" -#: ../src/bjb-app-menu.c:152 -#, fuzzy -#| msgid "_External data" -msgid "External Notes" -msgstr "Dades _externes" +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Un bloc de notes senzill pel GNOME" -#: ../src/bjb-app-menu.c:167 -msgid "Click on the external notes to import" +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" msgstr "" +"Softcatalà \n" +"Jordi Mallach \n" +"Jordi Mas i Hernàndez \n" +"Josep Sanchez Mesegue " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Color de la nota" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Retalla" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Copia" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Enganxa" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Negreta" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Cursiva" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Ratllat" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Enllaç" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copia la selecció a una nota nova" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "No s'ha trobat cap nota" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"La col·lecció de notes és buida.\n" +"Feu clic al botó Nova per a crear la primera." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "No s'ha trobat cap resultat per la cerca." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Errada" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instal·leu el «Tracker» i reinicieu el programa." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Ubicació personalitzada" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importa les notes" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importa" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Seleccioneu la ubicació a importar" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Programa Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Programa Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Carrega'n més" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "S'està carregant…" -#: ../src/bjb-main-toolbar.c:179 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Feu clic als elements per seleccionar-los" -#: ../src/bjb-main-toolbar.c:181 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" -msgstr "%d seleccionat" +msgid_plural "%d selected" +msgstr[0] "%d seleccionada" +msgstr[1] "%d seleccionades" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Cerca al títol, al contingut i a les col·leccions de notes" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Surt del mode de selecció" -#: ../src/bjb-main-toolbar.c:220 +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "Resultats per %s" -#: ../src/bjb-main-toolbar.c:223 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Recents i noves" -#: ../src/bjb-main-toolbar.c:243 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Nova" -#: ../src/bjb-note-view.c:202 -msgid "Rename Note" -msgstr "Canvia el nom de la nota" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Mode de selecció" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Mostra les notes i les col·leccions en un llistat" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Mostra les notes i les col·leccions en una graella" #. Undo Redo separator -#: ../src/bjb-note-view.c:257 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Desfés" -#: ../src/bjb-note-view.c:265 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Refés" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:279 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Pics" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:286 -msgid "List" -msgstr "Llista" - -#. Rename, view tags, separtor -#: ../src/bjb-note-view.c:297 -msgid "Rename" -msgstr "Canvia el nom" - -#: ../src/bjb-note-view.c:303 -msgid "Tags" -msgstr "Etiquetes" +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Llista numerada" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Col·leccions" #. Delete Note -#: ../src/bjb-note-view.c:314 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Elimina la nota" -#. Button to go back to main view -#: ../src/bjb-note-view.c:381 -msgid "Notes" -msgstr "Notes" +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Color de la nota" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Comparteix la nota" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Més opcions…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Introduïu un nom per crear una col·lecció" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Col·lecció nova" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Tanca" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:482 -msgid "Last updated " -msgstr "Darrera actualització" - -#: ../src/bjb-selection-toolbar.c:172 -msgid "Tag" -msgstr "Etiqueta" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Última actualització" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_D'acord" -#: ../src/bjb-selection-toolbar.c:196 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Elimina" -#. create dialog -#: ../src/bjb-settings.c:191 -#, fuzzy -#| msgid "_Preferences" -msgid "Preferences" -msgstr "_Preferències" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Afegeix a la col·lecció" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" -msgstr "" +msgstr "Tipus de lletra de les notes" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" -msgstr "" +msgstr "Color per defecte" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edició de notes" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Llibre principal" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Avui" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Ahir" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Aquesta setmana" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Aquest mes" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Aquest any" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Desconegut" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Emmagatzematge local" #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "Finestra _nova" #: ../src/resources/app-menu.ui.h:2 -#, fuzzy -#| msgid "_External data" -msgid "_External Notes" -msgstr "Dades _externes" +msgid "_Import Notes" +msgstr "_Importa notes" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Preferències" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Quant al Bijiben" +msgid "_About Notes" +msgstr "_Quant al Notes" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" diff -Nru bijiben-3.8.4/po/ca@valencia.po bijiben-3.10.2/po/ca@valencia.po --- bijiben-3.8.4/po/ca@valencia.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/ca@valencia.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,345 @@ +# Catalan translation for bijiben. +# Copyright (C) 2012 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Pau Iranzo , 2012. +# Josep Sanchez Mesegue , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-10-06 22:11+0200\n" +"PO-Revision-Date: 2013-09-19 14:04+0200\n" +"Last-Translator: Josep Sanchez Mesegue \n" +"Language-Team: Catalan \n" +"Language: ca-XV\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"El Notes és un editor que vos permet crear llistes per al seu posterior ús." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Permet utilitzar l'ownCloud per guardar-hi les notes i com a editor en línia." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notes" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notes;recordatori;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Publiqueu notes i etiqueteu fitxers" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Prendre notes" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Un bloc de notes senzill pel GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "" +"Softcatalà \n" +"Jordi Mallach \n" +"Jordi Mas i Hernàndez \n" +"Josep Sanchez Mesegue " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Color de la nota" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Retalla" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Copia" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Apega" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Negreta" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Cursiva" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Ratllat" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copia la selecció a una nota nova" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "No s'ha trobat cap nota" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"La col·lecció de notes és buida.\n" +"Feu clic al botó Nova per a crear la primera." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "No s'ha trobat cap resultat per la cerca." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Errada" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instal·leu el «Tracker» i reinicieu el programa." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Ubicació personalitzada" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importa les notes" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importa" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Seleccioneu la ubicació a importar" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Programa Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Programa Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Carrega'n més" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "S'està carregant…" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Feu clic als elements per seleccionar-los" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d seleccionada" +msgstr[1] "%d seleccionades" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Cerca al títol, al contingut i a les col·leccions de notes" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Ix del mode de selecció" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "Resultats per %s" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Recents i noves" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Nova" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Mode de selecció" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Mostra les notes i les col·leccions en un llistat" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Mostra les notes i les col·leccions en una graella" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "Desfés" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "Refés" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "Pics" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Llista numerada" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Col·leccions" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "Elimina la nota" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Color de la nota" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Comparteix la nota" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Més opcions…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Introduïu un nom per crear una col·lecció" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Col·lecció nova" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Tanca" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Última actualització" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_D'acord" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Elimina" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Afig a la col·lecció" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Tipus de lletra de les notes" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Color per defecte" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edició de notes" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Llibre principal" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Hui" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Ahir" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Esta setmana" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Este mes" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Este any" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Desconegut" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Emmagatzematge local" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "Finestra _nova" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Importa notes" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Preferències" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Quant al Notes" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "A_juda" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "I_x" diff -Nru bijiben-3.8.4/po/cs.po bijiben-3.10.2/po/cs.po --- bijiben-3.8.4/po/cs.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/cs.po 2013-09-26 20:05:59.000000000 +0000 @@ -1,18 +1,17 @@ # Czech translation for bijiben. # Copyright (C) 2013 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. -# # Marek Černocký , 2013. # msgid "" msgstr "" -"Project-Id-Version: bijiben gnome-3.8\n" +"Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-07-01 22:26+0000\n" -"PO-Revision-Date: 2013-01-28 09:08+0100\n" +"POT-Creation-Date: 2013-09-04 01:37+0000\n" +"PO-Revision-Date: 2013-09-05 11:51+0200\n" "Last-Translator: Marek Černocký \n" -"Language-Team: čeština \n" +"Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,9 +19,18 @@ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.6\n" -#. Button to go back to main view -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -#: ../src/bjb-note-view.c:401 ../src/bjb-window-base.c:17 +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Aplikace Poznámky je editor pro vytváření jednoduchých zápisů, které se vám " +"mohou později hodit." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Umožňuje využívat ownCloud jako místo pro ukládání a on-line editor." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 msgid "Notes" msgstr "Poznámky" @@ -38,62 +46,114 @@ msgid "Note-taker" msgstr "Poznámky" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Jednoduchý poznámkový sešit pro GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Marek Černocký, " -#: ../src/bjb-app-menu.c:154 -msgid "External Notes" -msgstr "Externí poznámky" - -#: ../src/bjb-app-menu.c:169 -msgid "Click on the external notes to import" -msgstr "Kliknutím na externí poznámky je naimportujete" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Výběr barvy pro poznámku" +msgid "Note Color" +msgstr "Barva poznámky" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Vyjmout" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopírovat" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Vložit" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Tučné" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Kurzíva" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Přeškrtnuté" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Odkaz" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopírovat výběr do nové poznámky" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nenalezeny žádné poznámky" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Vaše sbírka poznámek je prázdná.\n" +"Kliknutím na Nová můžete vytvořit svou první." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nenalezen žádný výsledek pro toto hledání." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Problém" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "nainstalujte prosím „Tracker“ a po té aplikaci restartujte." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Vlastní umístění" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Import poznámek" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Zrušit" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importovat" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Vyberte umístění importu" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplikace Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplikace Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Načíst další" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Načítá se…" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Klikáním na položky je označíte" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" @@ -101,93 +161,144 @@ msgstr[1] "%d vybrány" msgstr[2] "%d vybráno" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Hledat v názvech a obsahu poznámek a sadách" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Zrušit" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Ukončit režim výběru" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Výsledky pro %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Nové a nedávné" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nová" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Zadejte název štítku, který chcete vytvořit" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nový štítek" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Režim výběru" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Zobrazit poznámky a sady v seznamu" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Zobrazit poznámky a sady v mřížce" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Přejmenování poznámky" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Zpět" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Znovu" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Odrážky" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Seznam" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Číslovaný seznam" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Přejmenovat" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Štítky" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Sady" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Odstranit tuto poznámku" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Barva poznámky" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Sdílet poznámku" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Další volby…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Zadejte název sady, kterou chcete vytvořit" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nová sada" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Zavřít" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Naposledy aktualizováno " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Štítek" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Naposledy aktualizováno" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Budiž" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Smazat" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Předvolby" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Přidat do sady" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Písmo poznámek" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Výchozí barva" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Vzhled poznámky" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Hlavní sešit" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "dnes" @@ -212,13 +323,17 @@ msgid "Unknown" msgstr "neznámo kdy" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Místní úložiště" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "Nové _okno" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Externí poznámky" +msgid "_Import Notes" +msgstr "_Import poznámek" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" diff -Nru bijiben-3.8.4/po/da.po bijiben-3.10.2/po/da.po --- bijiben-3.8.4/po/da.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/da.po 2013-09-26 20:05:59.000000000 +0000 @@ -2,14 +2,15 @@ # Copyright (C) 2013 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. # Joe Hansen , 2013. +# Ask Hjorth Larsen , 2013. # msgid "" msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-12 21:16+0100\n" -"PO-Revision-Date: 2013-03-10 23:31+0200\n" -"Last-Translator: Joe Hansen \n" +"POT-Creation-Date: 2013-09-17 18:17+0200\n" +"PO-Revision-Date: 2013-09-17 00:35+0200\n" +"Last-Translator: Ask Hjorth Larsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" @@ -17,9 +18,20 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Noter er et redigeringsprogram som lader dig lave simple lister til senere " +"brug." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Den tillader at bruge ownCloud som lagersted og online redigering." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Noter" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -33,11 +45,11 @@ msgid "Note-taker" msgstr "Noteprogram" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Simpelt noteprogram for GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" "Joe Hansen, 2013.\n" @@ -45,152 +57,241 @@ "Dansk-gruppen \n" "Mere info: http://www.dansk-gruppen.dk" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Eksterne noter" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Klik på de eksterne noter for at importere" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Vælg en notefarve" +msgid "Note Color" +msgstr "Notefarve" #. Cut -#: ../src/bjb-editor-toolbar.c:149 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Klip" #. Copy -#: ../src/bjb-editor-toolbar.c:156 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopier" #. 'n paste -#: ../src/bjb-editor-toolbar.c:163 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Indsæt" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Fed" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Kursiv" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Gennemstreg" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Henvisning" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopiér markeringen til en ny note" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Ingen noter fundet" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Din notesamling er tom.\n" +"Klik på Ny-knappen for at oprette din første note." -#: ../src/bjb-main-toolbar.c:175 +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Intet resultat fundet for denne søgning." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Installér venligst \"Tracker\" og genstart så programmet." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Brugertilpasset sted" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importér noter" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Annullér" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importér" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Vælg importsted" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Programmet Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Programmet Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Indlæs mere" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Indlæser..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Klik på punkter for at vælge dem" -#: ../src/bjb-main-toolbar.c:177 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d valgt" msgstr[1] "%d valgte" -#: ../src/bjb-main-toolbar.c:216 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Søg notetitler, indhold og samlinger" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Annullér" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Afslut markeringstilstand" + +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "Resultater for %s" -#: ../src/bjb-main-toolbar.c:219 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Nye og seneste" -#: ../src/bjb-main-toolbar.c:239 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Ny" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Indtast et navn for at oprette et mærke" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nyt mærke" - -#: ../src/bjb-note-view.c:202 -msgid "Rename Note" -msgstr "Omdøb note" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Markeringstilstand" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Vis noter og samlinger i en liste" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Vis noter og samlinger i et gitter" #. Undo Redo separator -#: ../src/bjb-note-view.c:256 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Fortryd" -#: ../src/bjb-note-view.c:264 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Gendan" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:278 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Punkttegn" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:285 -msgid "List" -msgstr "Liste" - -#. Rename, view tags, separtor -#: ../src/bjb-note-view.c:296 -msgid "Rename" -msgstr "Omdøb" - -#: ../src/bjb-note-view.c:302 -msgid "Tags" -msgstr "Mærker" +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Nummereret liste" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Samlinger" #. Delete Note -#: ../src/bjb-note-view.c:313 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Slet denne note" -#. Button to go back to main view -#: ../src/bjb-note-view.c:380 -msgid "Notes" -msgstr "Noter" +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Notefarve" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Del note" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Flere indstillinger…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Indtast et navn for at oprette en samling" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Ny samling" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Luk" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:481 -msgid "Last updated " -msgstr "Sidst opdateret " - -#: ../src/bjb-selection-toolbar.c:156 -msgid "Tag" -msgstr "Mærke" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Sidst opdateret" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_O.k." -#: ../src/bjb-selection-toolbar.c:180 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Slet" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Indstillinger" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Føj til samling" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Skrifttype for note" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Standardfarve" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Noteudgave" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Primær bog" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "I dag" @@ -215,21 +316,25 @@ msgid "Unknown" msgstr "Ukendt" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokalt lager" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nyt vindue" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Eksterne noter" +msgid "_Import Notes" +msgstr "_Importér noter" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Indstillinger" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Om Bijiben" +msgid "_About Notes" +msgstr "_Om Noter" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -238,3 +343,42 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "_Afslut" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Eksterne noter" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Klik på de eksterne noter for at importere" + +#~ msgid "Choose a color for note" +#~ msgstr "Vælg en notefarve" + +#~ msgid "Link" +#~ msgstr "Henvisning" + +#~ msgid "New tag" +#~ msgstr "Nyt mærke" + +#~ msgid "Rename Note" +#~ msgstr "Omdøb note" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Rename" +#~ msgstr "Omdøb" + +#~ msgid "Tags" +#~ msgstr "Mærker" + +#~ msgid "Tag" +#~ msgstr "Mærke" + +#~ msgid "Preferences" +#~ msgstr "Indstillinger" + +#~ msgid "_External Notes" +#~ msgstr "_Eksterne noter" diff -Nru bijiben-3.8.4/po/de.po bijiben-3.10.2/po/de.po --- bijiben-3.8.4/po/de.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/de.po 2013-11-11 20:52:06.000000000 +0000 @@ -2,14 +2,15 @@ # Copyright (C) 2013 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. # Christian Kirbach , 2013. +# Benjamin Steinwender , 2013. # msgid "" msgstr "" "Project-Id-Version: bijiben gnome-3-8\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-05-24 17:43+0000\n" -"PO-Revision-Date: 2013-06-09 18:53+0100\n" +"POT-Creation-Date: 2013-09-23 07:08+0000\n" +"PO-Revision-Date: 2013-09-24 16:37+0100\n" "Last-Translator: Christian Kirbach \n" "Language-Team: German \n" "Language: de\n" @@ -19,9 +20,21 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notizen ist ein Editor, der es erlaubt einfache Listen zum späteren Gebrauch " +"anzulegen." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Es erlaubt die Nutzung von ownCloud als Speicheranbieter und Online-Editor." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notizen" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,160 +48,251 @@ msgid "Note-taker" msgstr "Notizanwendung" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Ein einfaches Notizbuch für GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" -msgstr "Christian Kirbach , 2013" - -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Externe Notizen" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Klicken Sie auf die externen Notizen, um diese zu importieren" +msgstr "" +"Christian Kirbach , 2013\n" +"Benjamin Steinwender , 2013" #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Wählen Sie eine Farbe für die Notiz" +msgid "Note Color" +msgstr "Farbe der Notizen" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Ausschneiden" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopieren" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Einfügen" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Fett" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Kursiv" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Durchstreichen" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Verknüpfung" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Auswahl in eine neue Notiz kopieren" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Keine Notizen gefunden" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Ihre Notizsammlung ist leer.\n" +"Klicken Sie auf »Neu«, um Ihre erste Notiz zu erstellen." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Kein Ergebnis für diese Suche gefunden." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Uups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Bitte installieren Sie »Tracker« und starten die Anwendung danach neu." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Benutzerdefinierter Ort" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Notizen importieren" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "A_bbrechen" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importieren" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Wählen Sie den Ort für den Import" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy-Anwendung" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote-Anwendung" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Mehr laden" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Laden …" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Klicken Sie auf Objekte, um diese auszuwählen" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d ausgewählt" msgstr[1] "%d ausgewählt" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Nach Titel, Inhalt und Sammlungen von Notizen suchen" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Abbrechen" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Auswahlmodus verlassen" + +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "Ergebnisse für %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Neu und kürzlich verwendet" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Neu" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Geben Sie einen Namen ein, um ein Etikett anlegen" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Neues Etikett" - -#: ../src/bjb-note-view.c:222 -msgid "Rename Note" -msgstr "Notiz umbenennen" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Auswahlmodus" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Notizen und Sammlungen in einer Liste anzeigen" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Notizen und Sammlungen in einem Raster anzeigen" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Rückgängig" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Wiederholen" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Aufzählungspunkte" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Liste" - -#. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 -msgid "Rename" -msgstr "Umbenennen" - -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Etiketten" +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Nummerierte Liste" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Sammlungen" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Diese Notiz löschen" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "Notizen" +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Farbe der Notizen" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Notiz teilen" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Mehr Optionen …" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Geben Sie einen Namen ein, um eine Sammlung anzulegen" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Neue Sammlung" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "S_chließen" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " +#: ../src/bjb-note-view.c:229 +msgid "Last updated" msgstr "Zuletzt aktualisiert" -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Etikett" +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Löschen" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Einstellungen" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Zur Sammlung hinzufügen" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Schriftart der Notizen" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Voreingestellte Farbe" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Notizen" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Hauptbuch" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Heute" @@ -213,21 +317,25 @@ msgid "Unknown" msgstr "Unbekannt" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokaler Speicherplatz" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Neues Fenster" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Externe Notizen" +msgid "_Import Notes" +msgstr "Notizen _importieren" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Einstellungen" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Info zu Bijiben" +msgid "_About Notes" +msgstr "_Info zu Notizen" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -236,3 +344,48 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "_Beenden" + +#~ msgid "Done" +#~ msgstr "Fertig" + +#~ msgid "Rename Note" +#~ msgstr "Notiz umbenennen" + +#~ msgid "Rename" +#~ msgstr "Umbenennen" + +#~ msgid "Preferences" +#~ msgstr "Einstellungen" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "_About Bijiben" +#~ msgstr "_Info zu Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Externe Notizen" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Klicken Sie auf die externen Notizen, um diese zu importieren" + +#~ msgid "Choose a color for note" +#~ msgstr "Wählen Sie eine Farbe für die Notiz" + +#~ msgid "Link" +#~ msgstr "Verknüpfung" + +#~ msgid "New tag" +#~ msgstr "Neues Etikett" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Tags" +#~ msgstr "Etiketten" + +#~ msgid "Tag" +#~ msgstr "Etikett" + +#~ msgid "_External Notes" +#~ msgstr "_Externe Notizen" diff -Nru bijiben-3.8.4/po/el.po bijiben-3.10.2/po/el.po --- bijiben-3.8.4/po/el.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/el.po 2013-11-11 20:52:06.000000000 +0000 @@ -3,26 +3,41 @@ # This file is distributed under the same license as the bijiben package. # Dimitris Spingos , 2013. # Dimitris Spingos (Δημήτρης Σπίγγος) , 2013. +# Efstathios Iosifidis , 2013. +# msgid "" msgstr "" "Project-Id-Version: bijiben gnome-3-8\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijibe" -"n&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-04-03 22:22+0000\n" -"PO-Revision-Date: 2013-04-09 10:54+0300\n" -"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) \n" -"Language-Team: team@gnome.gr\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-06 20:11+0000\n" +"PO-Revision-Date: 2013-10-07 13:54+0300\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.7.1\n" +"X-Generator: Gtranslator 2.91.6\n" "X-Project-Style: gnome\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Οι Σημειώσεις είναι ένας επεξεργαστής που σας επιτρέπει να φτιάξετε απλές " +"λίστες για μεταγενέστερη χρήση." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Σας επιτρέπει να χρησιμοποιήσετε το ownCloud ως τοποθεσία αποθήκευσης και " +"online επεξεργαστή." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Σημειώσεις" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -36,162 +51,252 @@ msgid "Note-taker" msgstr "Λήψη σημειώσεων" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Απλό σημειωματάριο για το GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" " Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" " Για περισσότερα δείτε: http://gnome.gr" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Εξωτερικές σημειώσεις" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Πατήστε στις εξωτερικές σημειώσεις για εισαγωγή" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Επιλέξτε ένα χρώμα για σημείωση" +msgid "Note Color" +msgstr "Χρώμα σημείωσης" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Αποκοπή" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Αντιγραφή" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Επικόλληση" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Έντονα" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Πλάγια" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Επιγράμμιση" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Σύνδεσμος" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Αντιγραφή επιλογής σε νέα σημείωση" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Δεν βρέθηκαν σημειώσεις" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Η συλλογή σημειώσεων είναι κενή.\n" +"Πατήστε στο νέο κουμπί για τη δημιουργία της πρώτης σας σημείωσης." -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Δεν βρέθηκε αποτέλεσμα για αυτή την αναζήτηση." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oops" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Παρακαλώ εγκαταστήστε το 'Tracker' και επανεκκινήστε την εφαρμογή." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Προσαρμοσμένη Τοποθεσία" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Εισαγωγή Σημειώσεων" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Άκυρο" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Εισαγωγή" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Επιλογή τοποθεσίας εισαγωγής" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Εφαρμογή Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Εφαρμογή Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Φόρτωση περισσοτέρων" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Φορτώνει..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Πατήστε στα στοιχεία για να τα επιλέξετε" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d επιλεγμένο" msgstr[1] "%d επιλεγμένα" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Αναζήτηση τίτλων σημείωσης, περιεχομένου και συλλογών" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Άκυρο" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Έξοδος από την κατάσταση επιλογής" + +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "Αποτελέσματα για %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Νέα και πρόσφατα" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Νέα" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Εισαγωγή ονόματος για δημιουργία ετικέτας" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Νέα ετικέτα" - -#: ../src/bjb-note-view.c:222 -msgid "Rename Note" -msgstr "Σημείωση μετονομασίας" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Λειτουργία επιλογής" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Προβολή σημειώσεων και συλλογών σε μια λίστα" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Προβολή σημειώσεων και συλλογών σε ένα πλέγμα" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Αναίρεση" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Ακύρωση αναίρεσης" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Κουκκίδες" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Λίστα" - -#. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 -msgid "Rename" -msgstr "Μετονομασία" - -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Ετικέτες" +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Αριθμημένη λίστα" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Συλλογές" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Διαγραφή αυτής της σημείωσης" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "Σημειώσεις" +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Χρώμα σημείωσης" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Κοινόχρηστη σημείωση" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Περισσότερες επιλογές…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Εισαγωγή ονόματος για τη δημιουργία συλλογής" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Νέα συλλογή" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Κλείσιμο" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Τελευταία ενημέρωση " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Ετικέτα" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Τελευταία ενημέρωση" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Εντάξει" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Διαγραφή" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Προτιμήσεις" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Προσθήκη στη Συλλογή" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Γραμματοσειρά σημείωσης" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Προεπιλεγμένο χρώμα" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Έκδοση Σημειώσεων" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Πρωτεύον Βιβλίο" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Σήμερα" @@ -216,21 +321,25 @@ msgid "Unknown" msgstr "Άγνωστο" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Τοπική αποθήκευση" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Νέο παράθυρο" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Εξωτερικές σημειώσεις" +msgid "_Import Notes" +msgstr "Ε_ισαγωγή σημειώσεων" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Προτιμήσεις" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Περί του Bijiben" +msgid "_About Notes" +msgstr "_Περί Σημειώσεων" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -239,3 +348,48 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "Έ_ξοδος" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "Done" +#~ msgstr "Έτοιμο" + +#~ msgid "Rename Note" +#~ msgstr "Σημείωση μετονομασίας" + +#~ msgid "Rename" +#~ msgstr "Μετονομασία" + +#~ msgid "Preferences" +#~ msgstr "Προτιμήσεις" + +#~ msgid "_About Bijiben" +#~ msgstr "_Περί του Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Εξωτερικές σημειώσεις" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Πατήστε στις εξωτερικές σημειώσεις για εισαγωγή" + +#~ msgid "Choose a color for note" +#~ msgstr "Επιλέξτε ένα χρώμα για σημείωση" + +#~ msgid "Link" +#~ msgstr "Σύνδεσμος" + +#~ msgid "New tag" +#~ msgstr "Νέα ετικέτα" + +#~ msgid "List" +#~ msgstr "Λίστα" + +#~ msgid "Tags" +#~ msgstr "Ετικέτες" + +#~ msgid "Tag" +#~ msgstr "Ετικέτα" + +#~ msgid "_External Notes" +#~ msgstr "_Εξωτερικές σημειώσεις" diff -Nru bijiben-3.8.4/po/es.po bijiben-3.10.2/po/es.po --- bijiben-3.8.4/po/es.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/es.po 2013-11-11 20:52:06.000000000 +0000 @@ -9,8 +9,8 @@ "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-07-03 21:26+0000\n" -"PO-Revision-Date: 2013-07-08 12:42+0200\n" +"POT-Creation-Date: 2013-08-30 20:51+0000\n" +"PO-Revision-Date: 2013-09-02 14:18+0200\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "Language: es\n" @@ -20,9 +20,17 @@ "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: Gtranslator 2.91.5\n" -#. Button to go back to main view -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -#: ../src/bjb-note-view.c:404 ../src/bjb-window-base.c:17 +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notas es un editor que permite hacer listas sencillas para usarlas más tarde." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Permite usar ownCloud como almacenamiento y editor en línea." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 msgid "Notes" msgstr "Notas" @@ -38,155 +46,260 @@ msgid "Note-taker" msgstr "Para tomar notas" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Cuaderno de notas sencillo para GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Daniel Mustieles , 2012, 2013" -#: ../src/bjb-app-menu.c:154 -msgid "External Notes" -msgstr "Notas externas" - -#: ../src/bjb-app-menu.c:169 -msgid "Click on the external notes to import" -msgstr "Pulse en las notas externas para importarlas" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Elija un color para la nota" +msgid "Note Color" +msgstr "Color de la nota" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Cortar" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Copiar" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Pegar" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Negrita" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Cursiva" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Tachada" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Enlace" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copiar selección a una nota nueva" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "No se han encontrado notas" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Su colección de notas está vacía.\n" +"Pulse el botón Nueva para crear su primera nota." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "No se han encontrado resultados para esta búsqueda." + +#: ../src/bjb-empty-results-box.c:161 +#| msgid "Oops, " +msgid "Oops" +msgstr "Vaya" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instale «Tracker» y reinicie la aplicación." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Ubicación personalizada" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importar notas" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importar" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Seleccionar la ubicación de la importación" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplicación Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplicación Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Cargar más" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Cargando…" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Pulse sobre los elementos para seleccionarlos" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d seleccionada" msgstr[1] "%d seleccionadas" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Buscar en títulos de notas, contenido y colecciones" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Salir del modo de selección" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Resultados para %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Nuevas y recientes" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nuevo" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Introduzca un nombre para crear la etiqueta" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Etiqueta nueva" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Modo de selección" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Ver notas y colecciones en una lista" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Ver notas y colecciones en una rejilla" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Renombrar nota" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Deshacer" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Rehacer" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Topos" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Lista" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Lista numerada" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Renombrar" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Etiquetas" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Colecciones" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Eliminar esta nota" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Color de la nota" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Compartir nota" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Más opciones…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Introduzca un nombre para crear la colección" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Colección nueva" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Cerrar" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:505 -msgid "Last updated " +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" msgstr "Última actualización" -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Etiqueta" +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Aceptar" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Eliminar" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Preferencias" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Añadir a la colección" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Tipografía de la nota" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Color predeterminado" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edición de la nota" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Libro principal" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Hoy" @@ -211,22 +324,25 @@ msgid "Unknown" msgstr "Desconocida" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Almacenamiento local" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "Ventana _nueva" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "Notas externas" +msgid "_Import Notes" +msgstr "_Importar notas" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "Prefere_ncias" #: ../src/resources/app-menu.ui.h:4 -#| msgid "_About Bijiben" msgid "_About Notes" -msgstr "_Acerca de Notas" +msgstr "_Acerca de notas" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -236,5 +352,44 @@ msgid "_Quit" msgstr "_Salir" +#~ msgid "Done" +#~ msgstr "Hecho" + +#~ msgid "Preferences" +#~ msgstr "Preferencias" + #~ msgid "Bijiben" #~ msgstr "Bijiben" + +#~ msgid "_About Bijiben" +#~ msgstr "Acerca _de Bijiben" + +#~ msgid "Import notes from:" +#~ msgstr "Importar notas desde:" + +#~ msgid "Tags" +#~ msgstr "Etiquetas" + +#~ msgid "New tag" +#~ msgstr "Etiqueta nueva" + +#~ msgid "External Notes" +#~ msgstr "Notas externas" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Pulse en las notas externas para importarlas" + +#~ msgid "Choose a color for note" +#~ msgstr "Elija un color para la nota" + +#~ msgid "Link" +#~ msgstr "Enlace" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Tag" +#~ msgstr "Etiqueta" + +#~ msgid "_External Notes" +#~ msgstr "Notas externas" diff -Nru bijiben-3.8.4/po/et.po bijiben-3.10.2/po/et.po --- bijiben-3.8.4/po/et.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/et.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,275 @@ +# Estonian translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Mattias Põldaru , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-21 01:43+0000\n" +"PO-Revision-Date: 2013-09-20 21:18+0300\n" +"Last-Translator: Mattias Põldaru \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notes on lihtne redaktor, mis võimaldab teha hilisema kasutuse jaoks " +"lihtsaid nimekirju." + +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Sellega saa salvestada märkmeid ownCloudi ning selle abil neid ka veebis " +"muuta." + +msgid "Notes" +msgstr "Märkmed" + +msgid "notes;reminder;" +msgstr "märkmed;märkused;märkmik;meeldetuletused;" + +msgid "Post notes, tag files!" +msgstr "Postita märkmeid, sildista faile!" + +msgid "Note-taker" +msgstr "Märkmete tegija" + +msgid "Simple notebook for GNOME" +msgstr "GNOME lihtne märkmik" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013." + +msgid "Note Color" +msgstr "Märkme värvus" + +#. Cut +msgid "Cut" +msgstr "Lõika" + +#. Copy +msgid "Copy" +msgstr "Kopeeri" + +#. 'n paste +msgid "Paste" +msgstr "Aseta" + +msgid "Bold" +msgstr "Rasvane" + +msgid "Italic" +msgstr "Kaldkiri" + +msgid "Strike" +msgstr "Läbikriipsutus" + +msgid "Copy selection to a new note" +msgstr "Kopeeri valik uude märkmesse" + +msgid "No Notes Found" +msgstr "Ühtegi märget ei leitud" + +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Sinu märkmete kollektsioon on tühi.\n" +"Esimese märkme lisamiseks klõpsa nupul \"Uus\"." + +msgid "No result found for this research." +msgstr "See otsing ei andnud ühtegi vastet." + +msgid "Oops" +msgstr "Ups" + +msgid "Please install 'Tracker' then restart the application." +msgstr "Palun paigalda 'Tracker' ja käivita rakendus uuesti." + +msgid "Custom Location" +msgstr "Kohandatud asukoht" + +msgid "Import Notes" +msgstr "Märkmete importimine" + +msgid "_Cancel" +msgstr "_Loobu" + +msgid "Import" +msgstr "Impordi" + +msgid "Select import location" +msgstr "Importimise asukoha valimine" + +msgid "Tomboy application" +msgstr "Tomboy rakendus" + +msgid "Gnote application" +msgstr "Gnote rakendus" + +msgid "Load More" +msgstr "Laadi veel" + +msgid "Loading..." +msgstr "Laadimine..." + +msgid "Click on items to select them" +msgstr "Märkme valimiseks klõpsa sellel" + +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d valitud" +msgstr[1] "%d valitud" + +msgid "Search note titles, content and collections" +msgstr "Märkmete pealkirjade, sisu ja kogude otsimine" + +#. Select +msgid "Cancel" +msgstr "Loobu" + +msgid "Exit selection mode" +msgstr "Valimise režiimist väljumine" + +#, c-format +msgid "Results for %s" +msgstr "Otsingu tulemused: %s" + +msgid "New and Recent" +msgstr "Uued ja hiljutised" + +msgid "New" +msgstr "Uued" + +msgid "Selection mode" +msgstr "Valimise režiim" + +msgid "View notes and collections in a list" +msgstr "Märkmete ja kogude kuvamine loendis" + +msgid "View notes and collections in a grid" +msgstr "Märkmete ja kogude kuvamine ruudustikus" + +#. Undo Redo separator +msgid "Undo" +msgstr "Võta tagasi" + +msgid "Redo" +msgstr "Tee uuesti" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +msgid "Bullets" +msgstr "Täpploend" + +#. Ordered list as 1.mouse 2.cats 3.dogs +msgid "Numbered List" +msgstr "Nummerdatud loend" + +msgid "Collections" +msgstr "Kogud" + +#. Delete Note +msgid "Delete this Note" +msgstr "Kustuta see märge" + +msgid "Note color" +msgstr "Märkme värvus" + +msgid "Share note" +msgstr "Märkme jagamine" + +msgid "More options…" +msgstr "Veel valikuid…" + +msgid "Enter a name to create a collection" +msgstr "Kogu loomiseks sisesta nimi" + +msgid "New collection" +msgstr "Uus kogu" + +#. Response +msgid "_Close" +msgstr "_Sulge" + +#. "Last updated" precedes the note last updated date +msgid "Last updated" +msgstr "Viimati uuendatud" + +msgid "_OK" +msgstr "_Olgu" + +#. Trash notes +msgid "Delete" +msgstr "Kustuta" + +#. Notes tags +msgid "Add to Collection" +msgstr "Lisa kogusse" + +#. Default font +msgid "Note Font" +msgstr "Märkme font" + +#. Default color +msgid "Default Color" +msgstr "Vaikimisi värvus" + +msgid "Note Edition" +msgstr "Märkme muutmine" + +msgid "Primary Book" +msgstr "Peamine märkmik" + +msgid "Today" +msgstr "Täna" + +msgid "Yesterday" +msgstr "Eile" + +msgid "This week" +msgstr "Sel nädalal" + +msgid "This month" +msgstr "Sel kuul" + +msgid "This year" +msgstr "Sel aastal" + +msgid "Unknown" +msgstr "Teadmata" + +msgid "Local storage" +msgstr "Salvestatakse arvutisse" + +msgid "_New Window" +msgstr "_Uus aken" + +msgid "_Import Notes" +msgstr "_Impordi märkmed" + +msgid "_Preferences" +msgstr "_Eelistused" + +msgid "_About Notes" +msgstr "_Programmist" + +msgid "_Help" +msgstr "A_bi" + +msgid "_Quit" +msgstr "_Lõpeta" + +#~ msgid "Rename Note" +#~ msgstr "Märkme ümbernimetamine" + +#~ msgid "Rename" +#~ msgstr "Muuda nime" diff -Nru bijiben-3.8.4/po/eu.po bijiben-3.10.2/po/eu.po --- bijiben-3.8.4/po/eu.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/eu.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,343 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Iñaki Larrañaga Murgoitio , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-20 21:44+0200\n" +"PO-Revision-Date: 2013-09-20 21:42+0200\n" +"Last-Translator: Iñaki Larrañaga Murgoitio \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Beranduago erabiliko diren zerrenda xumeak egitea baimentzen duen editore " +"bat da 'Oharrak'" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Biltegiaren kokaleku eta lineako editore gisa ownCloud erabiltzea baimentzen " +"du." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Oharrak" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "oharrak;ohartarazlea;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Editatu oharrak, etiketatu fitxategiak." + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Ohar hartzailea" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "GNOMEren ohar-koaderno xumea" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Iñaki Larrañaga Murgoitio " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Oharraren kolorea" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Ebaki" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Kopiatu" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Itsatsi" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Lodia" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Etzana" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Marratua" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopiatu hautapena ohar berri batean" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Ez da oharrik aurkitu" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Zure oharren bilduma hutsik dago.\n" +"Egin klik 'Berria' botoian zure aurreneko oharra sortzeko." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Ez da emaitzarik aurkitu bilaketa honentzako." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Eeeepaaa" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instalatu 'Tracker', ondoren berrabiarazi aplikazioa." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Kokaleku pertsonalizatua" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Inportatu oharrak" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Utzi" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Inportatu" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Hautatu inportazioaren kokalekua" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy aplikazioa" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote aplikazioa" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Kargatu gehiago" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Kargatzen..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Egin klik elementuen gainean hautatzeko" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d hautatuta" +msgstr[1] "%d hautatuta" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Bilatu oharren tituluak, edukiak eta bildumak" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Utzi" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Irten hautapenaren modutik" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "'%s'(r)en emaitzak" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Berria eta azkena" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Berria" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Hautapen modua" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Ikusi oharrak eta bildumak zerrendan" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Ikusi oharrak eta bildumak saretan" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "Desegin" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "Berregin" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "Buletak" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Zenbatutako zerrenda" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Bildumak" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "Ezabatu ohar hau" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Oharraren kolorea" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Partekatu oharra" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Aukera gehiago…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Sartu izena bilduma sortzeko" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Bilduma berria" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Itxi" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Azken eguneraketa" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Ados" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Ezabatu" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Gehitu bildumari" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Oharraren letra-tipoa" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Kolore lehenetsia" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Oharraren edizioa" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Liburu nagusia" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Gaur" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Atzo" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Aste honetan" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Hil honetan" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Urte honetan" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Ezezaguna" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Biltegi lokala" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "Leiho _berria" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Inportatu oharrak" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Oharrak-i buruz" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Laguntza" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "I_rten" diff -Nru bijiben-3.8.4/po/fi.po bijiben-3.10.2/po/fi.po --- bijiben-3.8.4/po/fi.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/fi.po 2013-09-26 20:05:59.000000000 +0000 @@ -1,27 +1,40 @@ # Finnish translation for bijiben. # Copyright (C) 2013 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. +# Jiri Grönroos , 2013. # -# Jiri Grönroos , 2013. msgid "" msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-03-25 22:52+0000\n" -"PO-Revision-Date: 2013-03-26 18:34+0000\n" +"POT-Creation-Date: 2013-08-30 20:51+0000\n" +"PO-Revision-Date: 2013-09-07 18:32+0300\n" "Last-Translator: Jiri Grönroos \n" -"Language-Team: Finnish \n" +"Language-Team: suomi \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Gtranslator 2.91.6\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Muistilappujen avulla on mahdollista tehdä muistiinpanoja myöhempää käyttöä " +"varten." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Se mahdollistaa ownCloudin käytön tallennussijaintina ja verkossa toimivana " +"editorina." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Muistilaput" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,160 +48,265 @@ msgid "Note-taker" msgstr "Muistio" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Yksinkertainen muistio Gnomelle" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Jiri Grönroos" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Ulkoiset muistilaput" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Napsauta ulkoisia muistilappuja tuodaksesi ne" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Valitse muistilapun väri" +#| msgid "Note Font" +msgid "Note Color" +msgstr "Muistilapun väri" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Leikkaa" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopioi" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Liitä" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Lihavoi" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Kursivoi" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Viivoita yli" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Linkitä" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopioi valinta uuteen muistilappuun" + +#: ../src/bjb-empty-results-box.c:100 +#| msgid "Note Font" +msgid "No Notes Found" +msgstr "Muistilappuja ei löytynyt" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Muistilappujen kokoelma on tyhjä.\n" +"Luo ensimmäinen muistilappu napsauttamalla Uusi." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Hups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Asenna 'Tracker' ja käynnistä sovellus sitten uudelleen." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Omavalintainen sijainti" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Tuo muistilappuja" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Peru" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Tuo" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Valitse tuonnin sijainti" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy-sovellus" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote-sovellus" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Lataa lisää" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Ladataan..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Napsauta kohteita valitaksesi ne" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d valittu" msgstr[1] "%d valittu" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Etsi muistilappujen otsikoista, sisällöstä ja kokoelmista" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Peru" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Poistu valintatilasta" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Tulokset haulle %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Uudet ja viimeisimmät" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Uusi" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Kirjoita nimi luodaksesi tunnisteen" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Uusi tunniste" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Valintatila" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Näytä muistilaput ja kokoelmat luettelona" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Näytä muistilaput ja kokoelmat ruudukkona" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Nimeä muistilappu uudelleen" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Kumoa" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Tee uudelleen" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Järjestämätön luettelo" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Järjestetty luettelo" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Numeroitu luettelo" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Nimeä uudelleen" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Tunnisteet" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Kokoelmat" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Poista tämä muistilappu" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "Muistilaput" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +#| msgid "Note Font" +msgid "Note color" +msgstr "Muistilapun väri" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Jaa muistilappu" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Lisää valintoja…" + +#: ../src/bjb-note-tag-dialog.c:399 +#| msgid "Enter a name to create a tag" +msgid "Enter a name to create a collection" +msgstr "Kirjoita nimi luodaksesi kokoelman" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Uusi kokoelma" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Sulje" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Viimeksi päivitetty " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Tunniste" +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" +msgstr "Viimeksi päivitetty" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Poista" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Asetukset" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Lisää kokoelmaan" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Muistilapun kirjasin" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Oletusväri" +#: ../src/bjb-settings-dialog.c:437 +#, fuzzy +#| msgid "Note Font" +msgid "Note Edition" +msgstr "Muistilapun kirjasin" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Ensisijainen kirja" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Tänään" @@ -213,21 +331,26 @@ msgid "Unknown" msgstr "Tuntematon" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Paikallinen talennustila" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Uusi ikkuna" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Ulkoiset muistilaput" +msgid "_Import Notes" +msgstr "_Tuo muistilaput" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Asetukset" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Tietoja - Bijiben" +#| msgid "_About Bijiben" +msgid "_About Notes" +msgstr "_Tietoja - Muistilaput" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -237,3 +360,35 @@ msgid "_Quit" msgstr "_Lopeta" +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Ulkoiset muistilaput" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Napsauta ulkoisia muistilappuja tuodaksesi ne" + +#~ msgid "Choose a color for note" +#~ msgstr "Valitse muistilapun väri" + +#~ msgid "Link" +#~ msgstr "Linkitä" + +#~ msgid "New tag" +#~ msgstr "Uusi tunniste" + +#~ msgid "List" +#~ msgstr "Järjestetty luettelo" + +#~ msgid "Tags" +#~ msgstr "Tunnisteet" + +#~ msgid "Tag" +#~ msgstr "Tunniste" + +#~ msgid "Preferences" +#~ msgstr "Asetukset" + +#~ msgid "_External Notes" +#~ msgstr "_Ulkoiset muistilaput" diff -Nru bijiben-3.8.4/po/fr.po bijiben-3.10.2/po/fr.po --- bijiben-3.8.4/po/fr.po 2013-06-26 21:48:05.000000000 +0000 +++ bijiben-3.10.2/po/fr.po 2013-11-11 20:52:06.000000000 +0000 @@ -1,14 +1,15 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# French translation for bijiben. +# Copyright (C) 2012-2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. # Pierre-Yves Luyten , 2012. # msgid "" msgstr "" "Project-Id-Version: bijiben master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-28 00:03+0100\n" -"PO-Revision-Date: 2013-02-02 23:33+0200\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-22 00:03+0000\n" +"PO-Revision-Date: 2013-09-05 23:07+0200\n" "Last-Translator: Pierre-Yves Luyten \n" "Language-Team: gnome-l10n-fr@gnome.org\n" "Language: fr\n" @@ -17,9 +18,22 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notes est un éditeur qui permet de créer des listes simples pour un usage " +"ultérieur." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Il permet d'utiliser ownCloud comme emplacement de stockage et éditeur en " +"ligne." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notes" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -27,165 +41,255 @@ #: ../data/bijiben.desktop.in.in.h:3 msgid "Post notes, tag files!" -msgstr "Poster des notes, étiqueter des fichiers!" +msgstr "Publier des notes, étiqueter des fichiers !" #: ../data/bijiben.desktop.in.in.h:4 msgid "Note-taker" -msgstr "Editeur de notes" +msgstr "Éditeur de notes" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" -msgstr "Cahier de notes pour GNOME" +msgstr "Carnet de notes pour GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Pierre-Yves Luyten" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Notes Externes" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Cliquer sur les notes à importer" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Sélectionner une couleur pour la note" +msgid "Note Color" +msgstr "Couleur de la note" #. Cut -#: ../src/bjb-editor-toolbar.c:149 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Couper" #. Copy -#: ../src/bjb-editor-toolbar.c:156 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Copier" #. 'n paste -#: ../src/bjb-editor-toolbar.c:163 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Coller" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Gras" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Italique" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Barré" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Lien" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copier la sélection vers une nouvelle note" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Aucune note trouvée" -#: ../src/bjb-main-toolbar.c:179 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Votre collection de notes est vide.\n" +"Cliquez sur le bouton Nouveau pour créer votre première note." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Aucun résultat pour cette recherche." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Veuillez installer « Tracker » puis redémarrer l'application." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Emplacement personnalisé" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importer des notes" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "A_nnuler" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importer" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Sélectionner l'emplacement à importer" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Application Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Application Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Charger davantage" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Chargement..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" -msgstr "Cliquez sur des éléments pour les sélectionner" +msgstr "Cliquer sur des éléments pour les sélectionner" -#: ../src/bjb-main-toolbar.c:181 +#: ../src/bjb-main-toolbar.c:140 +#, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d sélectionnée" msgstr[1] "%d sélectionnées" -#: ../src/bjb-main-toolbar.c:220 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Rechercher dans les titres, le contenu et les collections" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Annuler" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Sortir du mode de sélection" + +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" -msgstr "Résulats pour %s" +msgstr "Résultats pour %s" -#: ../src/bjb-main-toolbar.c:223 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Nouveau et récent" -#: ../src/bjb-main-toolbar.c:243 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Nouveau" -#: ../src/bjb-note-tag-dialog.c:267 -msgid "Enter a name to create a tag" -msgstr "Entrer un nom pour créer une étiquette" - -#: ../src/bjb-note-tag-dialog.c:277 -msgid "New tag" -msgstr "Nouvelle étiquette" - -#: ../src/bjb-note-view.c:202 -msgid "Rename Note" -msgstr "Renommer la Note" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Mode de sélection" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Afficher les notes et les collections dans une liste" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Afficher les notes et les collections dans une grille" #. Undo Redo separator -#: ../src/bjb-note-view.c:257 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Annuler" -#: ../src/bjb-note-view.c:265 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Rétablir" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:279 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Puces" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:286 -msgid "List" -msgstr "Liste" - -#. Rename, view tags, separtor -#: ../src/bjb-note-view.c:297 -msgid "Rename" -msgstr "Renommer" - -#: ../src/bjb-note-view.c:303 -msgid "Tags" -msgstr "Étiquetes" +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Liste numérotée" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Collections" #. Delete Note -#: ../src/bjb-note-view.c:314 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Supprimer cette Note" -#. Button to go back to main view -#: ../src/bjb-note-view.c:381 -msgid "Notes" -msgstr "Notes" +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Couleur de la note" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Partager la note" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Plus d'options…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Saisir un nom pour créer une collection" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nouvelle collection" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Fermer" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:482 -msgid "Last updated " -msgstr "Denière sauvegarde " - -#: ../src/bjb-selection-toolbar.c:177 -msgid "Tag" -msgstr "Étiquette" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Dernière mise à jour" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Valider" -#: ../src/bjb-selection-toolbar.c:201 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Supprimer" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Préférences" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Ajouter à la collection" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" -msgstr "Police de caractères" +msgstr "Police de caractères de la note" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Couleur par défaut" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Modification de la note" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Carnet principal" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Aujourd'hui" @@ -210,21 +314,25 @@ msgid "Unknown" msgstr "Inconnu" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Stockage local" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nouvelle fenêtre" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Notes Externes" +msgid "_Import Notes" +msgstr "_Importer des notes" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Préférences" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_À propos de Bijiben" +msgid "_About Notes" +msgstr "À _propos de Notes" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -233,3 +341,24 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "_Quitter" + +#~ msgid "Rename Note" +#~ msgstr "Renommer la note" + +#~ msgid "Rename" +#~ msgstr "Renommer" + +#~ msgid "External Notes" +#~ msgstr "Notes externes" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Cliquer sur les notes à importer" + +#~ msgid "Choose a color for note" +#~ msgstr "Sélectionner une couleur pour la note" + +#~ msgid "New tag" +#~ msgstr "Nouvelle étiquette" + +#~ msgid "_External Notes" +#~ msgstr "Notes _externes" diff -Nru bijiben-3.8.4/po/fur.po bijiben-3.10.2/po/fur.po --- bijiben-3.8.4/po/fur.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/fur.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,343 @@ +# Friulian translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-08-20 00:01+0000\n" +"PO-Revision-Date: 2013-08-20 14:11+0100\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:35 ../src/bjb-main-toolbar.c:429 +#: ../src/bjb-main-toolbar.c:776 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notis" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notis;promemorie;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Publiche notis, etichete file" + +#: ../data/bijiben.desktop.in.in.h:4 +#, fuzzy +msgid "Note-taker" +msgstr "Cjape-note" + +#: ../src/bjb-app-menu.c:36 +msgid "Simple notebook for GNOME" +msgstr "" + +#: ../src/bjb-app-menu.c:40 +msgid "translator-credits" +msgstr "Fabio Tomat" + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Tae" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Copie" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Tache" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Gruessut " + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Corsîf" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Stricât" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copie la selezion intune gnove note" + +#: ../src/bjb-empty-results-box.c:102 +msgid "No Notes Found" +msgstr "Nissune note cjatade" + +#: ../src/bjb-empty-results-box.c:142 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"La tô colezion di notis a je vueide.\n" +"Sclice il boton Gnove par creâ la tô prime note." + +#: ../src/bjb-empty-results-box.c:148 +msgid "No result found for this research." +msgstr "Nissun risultât cjatât par cheste ricercje." + +#: ../src/bjb-empty-results-box.c:160 +msgid "Oops, " +msgstr "Orpo, " + +#: ../src/bjb-empty-results-box.c:168 +msgid "Please install 'Tracker' then restart the application." +msgstr "Par plasê instale 'Tracker' e dopo torne invie le aplicazion." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Impuarte notis" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Impuarte" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplicazion Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplicazion Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Cjame ancjemò" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Cjamant..." + +#: ../src/bjb-main-toolbar.c:143 +msgid "Click on items to select them" +msgstr "Sclice sui elements par selezionaju" + +#: ../src/bjb-main-toolbar.c:145 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d selezionât" +msgstr[1] "%d selezionâts" + +#: ../src/bjb-main-toolbar.c:272 +msgid "Search note titles, content and collections" +msgstr "Cîr titui, contignûts e colezions dais notis" + +#. Select +#: ../src/bjb-main-toolbar.c:332 +msgid "Cancel" +msgstr "" + +#: ../src/bjb-main-toolbar.c:338 +msgid "Exit selection mode" +msgstr "Jes de modalitât selezion" + +#: ../src/bjb-main-toolbar.c:368 +#, c-format +msgid "Results for %s" +msgstr "Risultâts par %s" + +#: ../src/bjb-main-toolbar.c:371 +msgid "New and Recent" +msgstr "Gnovis e recentis" + +#: ../src/bjb-main-toolbar.c:445 +msgid "New" +msgstr "Gnove" + +#: ../src/bjb-main-toolbar.c:472 +msgid "Selection mode" +msgstr "Modalitât selezion" + +#: ../src/bjb-main-toolbar.c:500 +msgid "View notes and collections in a list" +msgstr "Mostre notis e colezions intune liste" + +#: ../src/bjb-main-toolbar.c:524 +msgid "View notes and collections in a grid" +msgstr "Mostre notis e colezions intune gridele" + +#: ../src/bjb-main-toolbar.c:653 +msgid "Rename Note" +msgstr "" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:674 +msgid "Undo" +msgstr "Anule" + +#: ../src/bjb-main-toolbar.c:682 +msgid "Redo" +msgstr "Torne fâ" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:697 +msgid "Bullets" +msgstr "Liste pontade" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:704 +msgid "Numbered List" +msgstr "Liste numerade" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:716 +msgid "Rename" +msgstr "" + +#: ../src/bjb-main-toolbar.c:724 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Colezions" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:736 +msgid "Delete this Note" +msgstr "Elimine cheste note" + +#: ../src/bjb-main-toolbar.c:812 ../src/bjb-selection-toolbar.c:249 +msgid "Note color" +msgstr "Colôr de note" + +#: ../src/bjb-main-toolbar.c:839 +msgid "Share note" +msgstr "Condivît note" + +#: ../src/bjb-main-toolbar.c:860 +msgid "More options…" +msgstr "Plui opzions..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Scrîf un non par creâ une colezion" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Gnove colezion" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Siere" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:228 +msgid "Last updated " +msgstr "Ultime modifiche" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:242 +msgid "Delete" +msgstr "Elimine" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:254 +msgid "Add to Collection" +msgstr "Zonte ae colezion" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Tipo di caratar de note" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Colôr predefinît" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edizion de note" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Vuê" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Îr" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Cheste setemane" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Chest mês" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Chest an" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "No cognossût" + +#: ../src/libbiji/provider/biji-local-provider.c:293 +msgid "Local storage" +msgstr "" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "G_nûf balcon" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Impuartâ notis" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Preferencis" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Jutori" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "J_es" diff -Nru bijiben-3.8.4/po/ga.po bijiben-3.10.2/po/ga.po --- bijiben-3.8.4/po/ga.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/ga.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,354 @@ +# Irish translations for bijiben package. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the bijiben package. +# Seán de Búrca , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-03 19:19-0600\n" +"PO-Revision-Date: 2013-09-03 19:34-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Is eagarthóir é Nótaí chun liostaí simplí a dhéanamh le haghaidh úsáide níos " +"déanaí." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Is féidir é ownCloud a úsáid mar shuíomh stórais agus eagarthóir ar líne." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Nótaí" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "nótaí;meabhrúchán;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Postáil nótaí, clibeáil comhaid!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Scríobhaí Nótaí" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Leabhar nótaí simplí do GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Dath Nóta" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Gearr" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Cóipeáil" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Greamaigh" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Trom" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Iodálach" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Líne Tríd" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Cóipeáil roghnúchán go nóta nua" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nóta gan Aimsiú" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Tá do bhailiúchán nótaí folamh.\n" +"Cliceáil an cnaipe Nua chun do chéad nóta a chruthú." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Toradh gan aimsiú don chuardach seo." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Úps" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Suiteáil 'Tracker' agus atosaigh an feidhmchlár, le do thoil." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Suíomh Saincheaptha" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Iompórtáil Comhaid" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cealaigh" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Iompórtáil" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Roghnaigh suíomh iompórtála" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Feidhmchlár Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Feidhmchlár Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Luchtaigh Tuilleadh" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Á luchtú..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Cliceáil ar mhíreanna chun iad a roghnú" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d roghnaithe" +msgstr[1] "%d roghnaithe" +msgstr[2] "%d roghnaithe" +msgstr[3] "%d roghnaithe" +msgstr[4] "%d roghnaithe" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Cuardaigh teidil, ábhar agus bailiúcháin nótaí" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Cealaigh" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Scoir mód roghnaithe" + +#: ../src/bjb-main-toolbar.c:335 +#, c-format +msgid "Results for %s" +msgstr "Torthaí do %s" + +#: ../src/bjb-main-toolbar.c:338 +msgid "New and Recent" +msgstr "Nua agus le Déanaí" + +#: ../src/bjb-main-toolbar.c:402 +msgid "New" +msgstr "Nua" + +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Mód roghnaithe" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Amharc ar nótaí agus bhailiúcháin i liosta" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Amharc ar nótaí agus bhailiúcháin i ngreille" + +#: ../src/bjb-main-toolbar.c:601 +msgid "Rename Note" +msgstr "Athainmnigh Nóta" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:622 +msgid "Undo" +msgstr "Cealaigh" + +#: ../src/bjb-main-toolbar.c:630 +msgid "Redo" +msgstr "Athfheidhmigh" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:645 +msgid "Bullets" +msgstr "Urchair" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Liosta Uimhrithe" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:664 +msgid "Rename" +msgstr "Athainmnigh" + +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Bailiúcháin" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:684 +msgid "Delete this Note" +msgstr "Scrios an Nóta seo" + +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Dath nóta" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Comhroinn nóta" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Tuilleadh roghanna…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Iontráil ainm chun bailiúchán a chruthú" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Bailiúchán nua" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Dún" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Nuashonraithe" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "Tá g_o Maith" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Scrios" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Cuir le Bailiúchán" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Cló Nóta" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Dath Réamhshocraithe" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Leagan Nóta" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Príomhleabhar" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Inniu" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Inné" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "An tseachtain seo" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "An mhí seo" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "An bhliain seo" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Anaithnid" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Stóras logánta" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "Fuinneog _Nua" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Iompórtáil Nótaí" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "Sain_roghanna" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Maidir le Nótaí" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "Cab_hair" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "_Scoir" diff -Nru bijiben-3.8.4/po/gl.po bijiben-3.10.2/po/gl.po --- bijiben-3.8.4/po/gl.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/gl.po 2013-11-11 20:52:06.000000000 +0000 @@ -2,13 +2,13 @@ # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Fran Diéguez , 2012. -# Fran Dieguez , 2012. +# Fran Dieguez , 2012, 2013. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-11-21 22:58+0100\n" -"PO-Revision-Date: 2012-11-21 22:57+0200\n" +"POT-Creation-Date: 2013-08-31 21:09+0200\n" +"PO-Revision-Date: 2013-08-31 21:10+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: gnome-l10n-gl@gnome.org\n" "Language: gl\n" @@ -18,57 +18,327 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" -#: ../data/bijiben.desktop.in.h:1 ../data/bijiben.desktop.in.in.h:1 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notas é un editor que lle permite facer listas sinxelas para usar despois." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Permítelle usar ownCloud como lugar de almacenamento e editor en liña." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notas" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notas;recordatorios;" -#: ../data/bijiben.desktop.in.h:2 ../data/bijiben.desktop.in.in.h:2 +#: ../data/bijiben.desktop.in.in.h:3 msgid "Post notes, tag files!" msgstr "Envía notas, etiqueta ficheiros!" -#: ../data/bijiben.desktop.in.h:3 ../data/bijiben.desktop.in.in.h:3 +#: ../data/bijiben.desktop.in.in.h:4 msgid "Note-taker" msgstr "Caderno de notas" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Caderno de notas sinxelo para GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Fran Dieguez , 2013." + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Cor da nota" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Cortar" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Copiar" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Pegar" + +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Negra" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Cursiva" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Riscar" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Ligazón" - -#: ../src/bjb-selection-toolbar.c:171 -msgid "Tag" -msgstr "Etiqueta" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copiar selección a unha nova nota" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Non se atoparon notas" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"A súa colección de notas está baleira.\n" +"Prema no botón Nova para crear a súa primeira nota." -#: ../src/bjb-selection-toolbar.c:195 +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Non se atoparon resultados para esta busca." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instale «Tracker» e logo reinicie o aplicativo." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Localización personalizada" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importar notas" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importar" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Seleccionar a localización para importar" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplicativo Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplicativo Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Cargar máis" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Cargando…" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Prema nos elementos para seleccionalos" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d seleccionada" +msgstr[1] "%d seleccionadas" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Buscar títulos de notas, contido e coleccións" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Saír do modo de selección" + +#: ../src/bjb-main-toolbar.c:335 +#, c-format +msgid "Results for %s" +msgstr "Resultados para %s" + +#: ../src/bjb-main-toolbar.c:338 +msgid "New and Recent" +msgstr "Novo e recente" + +#: ../src/bjb-main-toolbar.c:402 +msgid "New" +msgstr "Novo" + +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Modo de selección" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Ver as notas e coleccións nunha lista" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Ver as notas e coleccións nunha grella" + +#: ../src/bjb-main-toolbar.c:601 +msgid "Rename Note" +msgstr "Renomear nota" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:622 +msgid "Undo" +msgstr "Desfacer" + +#: ../src/bjb-main-toolbar.c:630 +msgid "Redo" +msgstr "Refacer" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:645 +msgid "Bullets" +msgstr "Viñetas" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Lista numerada" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:664 +msgid "Rename" +msgstr "Renomear" + +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Coleccións" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:684 +msgid "Delete this Note" +msgstr "Eliminar esta nota" + +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Cor da nota" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Compartir nota" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Máis opcións…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Escriba o nome para crear unha colección" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nova colección" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Pechar" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Última actualización" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Eliminar" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Engadir á colección" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Tipo de letra da nota" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Cor predeterminado" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edición de nota" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Caderno primario" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Hoxe" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Onte" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Esta semana" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Este mes" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Este ano" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Descoñecido" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Almacenamento local" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nova xanela" #: ../src/resources/app-menu.ui.h:2 -msgid "_External data" -msgstr "_Datos externos" +msgid "_Import Notes" +msgstr "_Importar notas" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Preferencias" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Sobre Bijiben" +msgid "_About Notes" +msgstr "_Sobre Notas" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -77,3 +347,24 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "_Saír" + +#~ msgid "Done" +#~ msgstr "Feito" + +#~ msgid "Preferences" +#~ msgstr "Preferencias" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "_About Bijiben" +#~ msgstr "_Sobre Bijiben" + +#~ msgid "Link" +#~ msgstr "Ligazón" + +#~ msgid "Tag" +#~ msgstr "Etiqueta" + +#~ msgid "_External data" +#~ msgstr "_Datos externos" diff -Nru bijiben-3.8.4/po/he.po bijiben-3.10.2/po/he.po --- bijiben-3.8.4/po/he.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/he.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,365 @@ +# Hebrew translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Yaron Shahrabani , 2013. +# Yosef Or Boczko , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: GNOME Notes\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-16 23:11+0300\n" +"PO-Revision-Date: 2013-09-16 23:14+0300\n" +"Last-Translator: Yosef Or Boczko \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Project-Style: gnome\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "פתקיות הוא עורך המאפשר ליצור רשימות פשוטות לשימוש מאוחר יותר." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "הוא מאפשר להשתמש ב־ownCloud כמקום אחסון ועורך מקוון." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "פתקיות" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "פתקיות;תזכורות;הערות;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "לפרסם פתקיות, לתייג קבצים!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "רישום פתקיות" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "מחברת פשוטה לסביבת GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "" +"ירון שהרבני \n" +"יוסף אור בוצ׳קו " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "צבע הפתקית" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "גזירה" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "העתקה" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "הדבקה" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "מודגש" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "נטוי" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "קו חוצה" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "העתקת הבחירה לפתקית חדשה" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "לא נמצאו פתקיות" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"אוסף הפתקיות שלך ריק.\n" +"יש ללחוץ על הלחצן חדש כדי ליצור את הפתקית הראשונה שלך." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "לא נמצאו תוצאות למחקר זה." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "אופס" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "נא להתקין את „Tracker“ ואז להפעיל מחדש את היישום." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "מיקום מותאם אישית" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "יבוא פתקיות" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_ביטול" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "יבוא" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "בחירת מיקום הייבוא" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "היישום Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "היישום Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "טעינת עוד" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "בטעינה…" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "יש ללחוץ על פריטים כדי לבחור אותם" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "אחת נבחרה" +msgstr[1] "%d נבחרו" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "חיפוש בכותרות, בתוכן ובאוספים של הפתקיות" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "ביטול" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "יציאה ממצב בחירה" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "תוצאות עבור %s" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "חדש ואחרונים" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "חדש" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "מצב בחירה" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "צפייה בפתקיות ובאוספים ברשימה" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "צפייה בפתקיות ובאוספים בתצוגת רשת" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "ביטול" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "ביצוע מחדש" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "תבליטים" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "רשימה ממוספרת" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "אוספים" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "מחיקת פתקית זו" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "צבע הפתקית" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "שיתוף הפתקית" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "אפשרויות נוספות…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "נא להזין שם כדי ליצור אוסף" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "אוסף חדש" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_סגירה" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "עדכון אחרון" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_אישור" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "מחיקה" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "הוספה לאוסף" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "גופן הפתקית" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "צבע הפתקית" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "מהדורת הפתקית" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "ספר ראשי" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "היום" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "אתמול" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "השבוע" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "החודש" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "השנה" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "לא ידוע" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "אחסון מקומי" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_חלון חדש" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "י_בוא פתקיות" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "ה_עדפות" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "על _אודות פתקיות" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "ע_זרה" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "י_ציאה" + +#~ msgid "Rename Note" +#~ msgstr "שינוי שם הפתקית" + +#~ msgid "Rename" +#~ msgstr "שינוי שם" + +#~ msgid "Done" +#~ msgstr "בוצע" + +#~ msgid "Preferences" +#~ msgstr "העדפות" + +#~ msgid "Bijiben" +#~ msgstr "פתקיות" + +#~ msgid "Import notes from:" +#~ msgstr "יבוא פתקיות מהמיקום:" + +#~ msgid "_About Bijiben" +#~ msgstr "על אודות _פתקיות" diff -Nru bijiben-3.8.4/po/hu.po bijiben-3.10.2/po/hu.po --- bijiben-3.8.4/po/hu.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/hu.po 2013-09-26 20:05:59.000000000 +0000 @@ -4,15 +4,16 @@ # # Balázs Úr , 2013. # Balázs Úr , 2013. +# Gabor Kelemen , 2013. msgid "" msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-03-22 13:18+0000\n" -"PO-Revision-Date: 2013-03-25 23:51+0100\n" +"POT-Creation-Date: 2013-08-30 20:51+0000\n" +"PO-Revision-Date: 2013-09-03 19:50+0200\n" "Last-Translator: Balázs Úr \n" -"Language-Team: Hungarian \n" +"Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,9 +21,22 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.2\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"A Jegyzetek egy olyan szerkesztő, amely lehetővé teszi egyszerű listák " +"létrehozását későbbi felhasználásra." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Lehetővé teszi az ownCloud használatát tárolási helyként és az online " +"szerkesztést." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Jegyzetek" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -36,162 +50,260 @@ msgid "Note-taker" msgstr "Jegyzetkezelő" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Egyszerű jegyzetfüzet a GNOME-hoz" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" -"Havris György \n" -"Úr Balázs " - -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Külső jegyzetek" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Kattintson a külső jegyzetekre az importáláshoz" +"Havris György \n" +"Úr Balázs " #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Válasszon színt a jegyzetnek" +msgid "Note Color" +msgstr "Jegyzet színe" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Kivágás" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Másolás" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Beillesztés" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Félkövér" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Dőlt" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Áthúzott" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Hivatkozás" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kijelölés új jegyzetbe másolása" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nincsenek jegyzetek" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"A jegyzetgyűjteménye üres.\n" +"Kattintson az Új gombra az első jegyzet létrehozásához." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "A megadott keresésre nincs találat." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Hoppá" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Telepítse a „Tracker” csomagot, és indítsa újra az alkalmazást." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Egyéni hely" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Jegyzetek importálása" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "Mé_gse" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importálás" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Válasszon importálási helyet" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy alkalmazás" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote alkalmazás" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Több betöltése" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Betöltés…" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Kattintson az elemekre a kiválasztásukhoz" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d kiválasztva" msgstr[1] "%d kiválasztva" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Keresés jegyzetcímekben, -tartalmakban és gyűjteményekben" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Mégse" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Kilépés a kijelölési módból" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Találatok erre: %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Új és legutóbbi" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Új" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Adjon meg egy nevet a címke létrehozásához" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Új címke" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Kijelölési mód" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Jegyzetek és gyűjtemények megjelenítése listában" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Jegyzetek és gyűjtemények megjelenítése rácsban" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Jegyzet átnevezése" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Visszavonás" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Újra" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Felsorolás" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Lista" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Számozott lista" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Átnevezés" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Címkék" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Gyűjtemények" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Jegyzet törlése" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "Jegyzetek" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Jegyzet színe" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Jegyzet megosztása" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "További beállítások…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Adjon meg egy nevet a gyűjtemény létrehozásához" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Új gyűjtemény" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Bezárás" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Utoljára frissítve " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Címke" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Utoljára frissítve" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Törlés" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Beállítások" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Hozzáadás a gyűjteményhez" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Jegyzet betűkészlete" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Alapértelmezett szín" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Jegyzet kiadás" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Elsődleges könyv" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Ma" @@ -216,21 +328,25 @@ msgid "Unknown" msgstr "Ismeretlen" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Helyi tároló" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "Új _ablak" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "Kül_ső jegyzetek" +msgid "_Import Notes" +msgstr "_Jegyzetek importálása" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Beállítások" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "A Bijiben _névjegye" +msgid "_About Notes" +msgstr "A Jegyzetek _névjegye" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -240,3 +356,38 @@ msgid "_Quit" msgstr "_Kilépés" +#~ msgid "Done" +#~ msgstr "Kész" + +#~ msgid "Preferences" +#~ msgstr "Beállítások" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Külső jegyzetek" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Kattintson a külső jegyzetekre az importáláshoz" + +#~ msgid "Choose a color for note" +#~ msgstr "Válasszon színt a jegyzetnek" + +#~ msgid "Link" +#~ msgstr "Hivatkozás" + +#~ msgid "New tag" +#~ msgstr "Új címke" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Tags" +#~ msgstr "Címkék" + +#~ msgid "Tag" +#~ msgstr "Címke" + +#~ msgid "_External Notes" +#~ msgstr "Kül_ső jegyzetek" diff -Nru bijiben-3.8.4/po/id.po bijiben-3.10.2/po/id.po --- bijiben-3.8.4/po/id.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/id.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,352 @@ +# Indonesian translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Andika Triwidada , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-04 01:37+0000\n" +"PO-Revision-Date: 2013-09-08 16:54+0700\n" +"Last-Translator: Andika Triwidada \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.5.7\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Catatan adalah suatu penyunting yang memungkinkan membuat daftar sederhana " +"untuk dipakai nanti." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Itu mengijinkan penggunaan ownCloud sebagai lokasi penyimpanan dan " +"penyunting daring." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Catatan" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "catatan;pengingat;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Kirim catatan, tag berkas!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Perekam catatan" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Buku catatan sederhana bagi GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Andika Triwidada , 2013" + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Warna Catatan" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Potong" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Salin" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Tempel" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Tebal" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Miring" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Coret" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Salin pilihan ke catatan baru" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Tak Ditemukan Catatan" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Koleksi catatan Anda kosong.\n" +"Klik tombol Baru untuk membuat catatan pertama Anda." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Tak ditemukan hasil bagi riset ini." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Mohon pasang 'Pelacak' lalu mulai lagi aplikasi." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Lokasi Ubahan" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Impro Catatan" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Batal" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Impor" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Pilih lokasi impor" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplikasi Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplikasi Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Muat Lebih Banyak" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Memuat..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Klik pada butir untuk memilihnya" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d dipilih" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Cari judul, isi, dan koleksi catatan" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Batal" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Keluar mode pemilihan" + +#: ../src/bjb-main-toolbar.c:335 +#, c-format +msgid "Results for %s" +msgstr "Hasil bagi %s" + +#: ../src/bjb-main-toolbar.c:338 +msgid "New and Recent" +msgstr "Baru dan Terkini" + +#: ../src/bjb-main-toolbar.c:402 +msgid "New" +msgstr "Baru" + +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Mode pemilihan" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Lihat catatan dan koleksi dalam suatu daftar" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Lihat catatan dan koleksi dalam suatu kisi" + +#: ../src/bjb-main-toolbar.c:601 +msgid "Rename Note" +msgstr "Ubah Nama Catatan" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:622 +msgid "Undo" +msgstr "Batal" + +#: ../src/bjb-main-toolbar.c:630 +msgid "Redo" +msgstr "Jadi Lagi" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:645 +msgid "Bullets" +msgstr "Bulet" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Daftar Bernomor" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:664 +msgid "Rename" +msgstr "Ubah Nama" + +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Koleksi" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:684 +msgid "Delete this Note" +msgstr "Hapus Catatan ini" + +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Warna catatan" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Berbagi catatan" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Lebih banyak opsi..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Masukkan suatu nama untuk membuat sebuah koleksi" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Koleksi baru" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Tutup" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Terakhir diperbarui" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Hapus" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Tambah ke Koleksi" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Fonta Catatan" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Warna Baku" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edisi Catatan" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Buku Primer" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Hari ini" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Kemarin" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Minggu ini" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Bulan ini" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Tahun ini" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Tak diketahui" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Penyimpanan lokal" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "Je_ndela Baru" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Impor Catatan" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Preferensi" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "Tent_ang Catatan" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Bantuan" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "_Keluar" diff -Nru bijiben-3.8.4/po/it.po bijiben-3.10.2/po/it.po --- bijiben-3.8.4/po/it.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/it.po 2013-09-26 20:05:59.000000000 +0000 @@ -1,25 +1,35 @@ -# 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. +# Italian trasnlation of Bijiben. +# Copyright (C) 2013 The Free Software Foundation, Inc. +# This file is distributed under the same license as the Bijiben package. +# Claudio Arseni , 2013. # msgid "" msgstr "" "Project-Id-Version: bijiben\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 01:26+0100\n" -"PO-Revision-Date: 2013-03-03 01:32+0100\n" -"Last-Translator: Luca Ferretti \n" +"POT-Creation-Date: 2013-09-03 18:12+0200\n" +"PO-Revision-Date: 2013-08-31 09:43+0200\n" +"Last-Translator: Claudio Arseni \n" "Language-Team: Italian \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Note è un editor che consente di creare semplici elenchi." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Consente di usare ownCloud per l'archiviazione e la modifica online." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Note" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -33,160 +43,260 @@ msgid "Note-taker" msgstr "Annotazioni" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" -msgstr "Semplice notebook per GNOME" +msgstr "Semplice blocco note per GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" -msgstr "Luca Ferretti " - -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Note esterne" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Fare clic sulle note esterne da importare" +msgstr "" +"Claudio Arseni \n" +"Luca Ferretti " #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Scegliere un colore per la nota" +msgid "Note Color" +msgstr "Colore della nota" #. Cut -#: ../src/bjb-editor-toolbar.c:149 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Taglia" #. Copy -#: ../src/bjb-editor-toolbar.c:156 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Copia" #. 'n paste -#: ../src/bjb-editor-toolbar.c:163 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Incolla" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Grassetto" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Corsivo" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Sbarrato" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Collegamento" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copia la selezione in una nuova nota" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nessuna nota trovata" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"L'elenco delle note è vuoto.\n" +"Fare clic su «Nuova» per creare la prima nota." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nessun risultato per questa ricerca." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oops" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Installare «Tracker» e riavviare l'applicazione." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Posizione personalizzata" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importa note" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "A_nnulla" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importa" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Selezionare la posizione da cui importare" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Applicazione Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Applicazione Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Carica altre" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Caricamento..." -#: ../src/bjb-main-toolbar.c:175 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Fare clic sugli elementi per selezionarli" -#: ../src/bjb-main-toolbar.c:177 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d selezionato" msgstr[1] "%d selezionati" -#: ../src/bjb-main-toolbar.c:216 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Cerca nei titoli, nei contenuti e nelle raccolte delle note" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Annulla" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Esce dalla modalità selezione" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Risultati per %s" -#: ../src/bjb-main-toolbar.c:219 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Nuove e recenti" -#: ../src/bjb-main-toolbar.c:239 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nuova" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Inserire un nome per creare una etichetta" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nuova etichetta" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Modalità selezione" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Visualizza note e raccolte in un elenco" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Visualizza note e raccolte in una griglia" -#: ../src/bjb-note-view.c:201 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Rinomina nota" #. Undo Redo separator -#: ../src/bjb-note-view.c:255 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Annulla" -#: ../src/bjb-note-view.c:263 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Ripeti" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Punti elenco" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:284 -msgid "List" -msgstr "Elenco" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Elenco numerato" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:295 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Rinomina" -#: ../src/bjb-note-view.c:301 -msgid "Tags" -msgstr "Etichette" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Raccolte" #. Delete Note -#: ../src/bjb-note-view.c:312 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Elimina questa nota" -#. Button to go back to main view -#: ../src/bjb-note-view.c:379 -msgid "Notes" -msgstr "Note" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Colore della nota" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Condividi nota" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Altre opzioni…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Inserire un nome per creare una raccolta" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nuova raccolta" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Chiudi" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:480 -msgid "Last updated " -msgstr "Ultimo aggiornamento " - -#: ../src/bjb-selection-toolbar.c:156 -msgid "Tag" -msgstr "Etichetta" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Ultimo aggiornamento" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:180 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Elimina" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Preferenze" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Aggiungi alla raccolta" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Tipo carattere della nota" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Colore predefinito" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Preferenze nota" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Blocco principale" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Oggi" @@ -211,21 +321,25 @@ msgid "Unknown" msgstr "Sconosciuto" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Archivio locale" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nuova finestra" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "Note _esterne" +msgid "_Import Notes" +msgstr "_Importa note" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "Preferen_ze" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "I_nformazioni su Bijiben" +msgid "_About Notes" +msgstr "I_nformazioni su Note" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" diff -Nru bijiben-3.8.4/po/ja.po bijiben-3.10.2/po/ja.po --- bijiben-3.8.4/po/ja.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/ja.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,352 @@ +# Japanese translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Nishio Futoshi , 2013. +# Jiro Matsuzawa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-17 16:17+0000\n" +"PO-Revision-Date: 2013-09-18 22:06+0900\n" +"Last-Translator: Jiro Matsuzawa \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "さっとメモを取ってあとで使用できるメモツールです。" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "ownCloud をストレージの場所およびオンラインエディターとして利用できます。" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "メモ" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notes;reminder;メモ;ノート;覚え書き;覚書;備忘録;リマインダー;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "メモを取って整理しよう!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "メモツール" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "GNOME 向けのシンプルメモ" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "" +"Nishio Futoshi , 2013.\n" +"Jiro Matsuzawa " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "メモの色" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "切り取り" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "コピー" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "貼り付け" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "太字" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "斜体" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "取り消し線" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "選択範囲を新規メモにコピー" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "メモが見つかりません" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"メモがありません。\n" +"新規ボタンを押してメモを作成してください。" + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "検索に合致するものが見つかりませんでした。" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "おっと" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "'Tracker' をインストールして、このアプリケーションを再起動してください。" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "場所を指定する" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "メモのインポート" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "インポート" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "インポートする場所を選択してください。" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy アプリケーション" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote アプリケーション" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "さらに読み込む" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "読み込み中..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "選択するアイテムをクリックします" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d 件選択" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "メモのタイトルや内容、コレクションを検索します" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "キャンセル" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "選択モードを終了します" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "%s の検索結果" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "新規または最近使用したメモ" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "新規" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "選択モード" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "メモとコレクションをリスト表示します" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "メモとコレクションをグリッド表示します" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "元に戻す" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "やり直す" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "箇条書き" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "番号付き箇条書き" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "コレクション" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "このメモを削除" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "メモの色" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "メモを共有" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "追加オプション…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "作成するコレクションの名前を入力" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "新規コレクション" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "閉じる(_C)" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "最終更新日" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "OK(_O)" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "削除" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "コレクションに追加" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "メモのフォント" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "デフォルトの色" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "メモの設定" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "プライマリーブック" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "今日" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "昨日" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "今週" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "今月" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "今年" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "不明" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "ローカルストレージ" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "新しいウィンドウ(_N)" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "メモのインポート(_I)" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "設定(_P)" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "このアプリケーションについて(_A)" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "終了(_Q)" + +#~ msgid "Done" +#~ msgstr "完了" + +#~ msgid "Rename Note" +#~ msgstr "メモの名前を変更" + +#~ msgid "Rename" +#~ msgstr "名前を変更" + +#~ msgid "Preferences" +#~ msgstr "設定" diff -Nru bijiben-3.8.4/po/ko.po bijiben-3.10.2/po/ko.po --- bijiben-3.8.4/po/ko.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/ko.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,350 @@ +# Korean translation for bijiben. +# This file is distributed under the same license as the bijiben package. +# +# Changwoo Ryu , 2013. +# +# - 이 프로그램의 이름인 Notes는 "메모"라고 번역. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-13 17:51+0000\n" +"PO-Revision-Date: 2013-09-15 04:39+0900\n" +"Last-Translator: Changwoo Ryu \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "메모는 나중에 확인할 수 있도록 간단한 목록을 기록하는 편집기입니다." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "저장 위치 및 온라인 편집기로 ownCloud를 사용할 수 있습니다." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "메모" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notes;메모;reminder;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "메모를 쓰고 파일을 태그합니다!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "메모장" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "그놈 데스크톱의 간단한 메모지" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "류창우 " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "메모 색" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "잘라내기" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "복사" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "붙여넣기" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "굵게" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "기울임" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "취소선" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "선택한 사항을 새 메모로 복사합니다" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "메모가 없습니다" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"메모 모음이 비어 있습니다.\n" +"첫 메모를 만드려면 새로 만들기 단추를 누르십시오." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "이 연구에 대해 결과가 없습니다." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "앗" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "'트래커'를 설치하고 프로그램을 다시 시작하십시오." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "사용자 설정 위치" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "메모 가져오기" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "취소(_C)" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "가져오기" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "가져오기 위치 선택" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "톰보이 프로그램" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "지노트 프로그램" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "더 읽어들이기" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "읽어들이는 중..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "항목을 눌러 선택하십시오" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d개 선택" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "메모 제목, 내용, 모음을 검색합니다" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "취소" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "선택 모드 끝내기" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "%s에 대한 결과" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "새 항목 및 최근 항목" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "새로 만들기" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "선택 모드" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "목록에서 메모와 모음을 봅니다" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "격자에서 메모와 모음을 봅니다" + +#: ../src/bjb-main-toolbar.c:616 +msgid "Rename Note" +msgstr "메모 이름 바꾸기" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:637 +msgid "Undo" +msgstr "실행 취소" + +#: ../src/bjb-main-toolbar.c:645 +msgid "Redo" +msgstr "다시 실행" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:660 +msgid "Bullets" +msgstr "번호 없는 목록" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:667 +msgid "Numbered List" +msgstr "번호 목록" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:679 +msgid "Rename" +msgstr "이름 바꾸기" + +#: ../src/bjb-main-toolbar.c:687 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "모음" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:699 +msgid "Delete this Note" +msgstr "이 메모 삭제" + +#: ../src/bjb-main-toolbar.c:763 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "메모 색" + +#: ../src/bjb-main-toolbar.c:790 +msgid "Share note" +msgstr "메모 공유" + +#: ../src/bjb-main-toolbar.c:811 +msgid "More options…" +msgstr "다른 옵션…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "모음을 만드려면 이름을 입력하십시오" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "새 모음" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "닫기(_C)" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "최근 업데이트" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "확인(_O)" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "삭제" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "모음에 추가" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "메모 글꼴" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "기본 색" + +# 글꼴, 색 설정 페이지 +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "메모 형식" + +# 메모 저장 위치 설정 페이지 +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "메모 저장" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "오늘" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "어제" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "이번주" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "이번달" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "이번해" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "알 수 없음" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "로컬 저장소" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "새 창(_N)" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "메모 가져오기(_I)" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "기본 설정(_P)" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "메모 정보(_A)" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "도움말(_H)" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "끝내기(_Q)" diff -Nru bijiben-3.8.4/po/LINGUAS bijiben-3.10.2/po/LINGUAS --- bijiben-3.8.4/po/LINGUAS 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/LINGUAS 2013-11-11 20:52:06.000000000 +0000 @@ -1,25 +1,43 @@ # please keep this list sorted alphabetically # +as cs ca +ca@valencia da de el es +et +eu fi fr +fur +ga gl +he hu +id it +ja +ko +lt +lv +ml +nb +nl pa pl +pt pt_BR ru sk sl sr sr@latin +tg tr +uk zh_CN zh_HK zh_TW diff -Nru bijiben-3.8.4/po/lt.po bijiben-3.10.2/po/lt.po --- bijiben-3.8.4/po/lt.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/lt.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,356 @@ +# Lithuanian translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Aurimas Černius , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-08-30 20:51+0000\n" +"PO-Revision-Date: 2013-09-01 21:31+0300\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Rašteliai yra redaktorius, leidžiantis sukurti paprastus sąrašus vėlesniam " +"panaudojimui." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Jis leidžia naudoti ownCloud kaip saugyklos vietą ir internetinį redaktorių." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Rašteliai" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "rašteliai;priminimai;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Rašykite raštelius, žymėkite failus!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Užrašinė" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Paprasta užrašinė GNOME aplinkai" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "" +"išvertė:\n" +"Aurimas Černius " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Raštelio spalva" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Iškirpti" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Kopijuoti" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Įdėti" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Pusjuodis" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Kursyvas" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Perbrauktas" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopijuoti žymėjimą į naują raštelį" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nerasta raštelių" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Neturite raštelių.\n" +"Spauskite mygtuką „Naujas“ pirmajam rašteliui sukurti." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Šiai paieškai rezultatų nerasta." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oi" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Įdiekite „Tracker“ ir iš naujo paleiskite programą." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Pasirinktinė vieta" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importuoti raštelius" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importuoti" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Pasirinkite importavimo vietą" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy programa" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote programa" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Įkelti daugiau" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Įkeliama..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Spauskite ant elementų jiems pažymėti" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d pažymėtas" +msgstr[1] "%d pažymėti" +msgstr[2] "%d pažymėta" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Ieškoti raštelių pavadinimų, turinio ir rinkinių" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Atsisakyti" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Palikti žymėjimo veikseną" + +#: ../src/bjb-main-toolbar.c:335 +#, c-format +msgid "Results for %s" +msgstr "%s rezultatai" + +#: ../src/bjb-main-toolbar.c:338 +msgid "New and Recent" +msgstr "Nauji ir neseniai naudoti" + +#: ../src/bjb-main-toolbar.c:402 +msgid "New" +msgstr "Naujas" + +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Žymėjimo veiksena" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Rodyti raštelius ir rinkinius sąraše" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Rodyti raštelius ir rinkinius tinklelyje" + +#: ../src/bjb-main-toolbar.c:601 +msgid "Rename Note" +msgstr "Pervadinti raštelį" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:622 +msgid "Undo" +msgstr "Atšaukti" + +#: ../src/bjb-main-toolbar.c:630 +msgid "Redo" +msgstr "Pakartoti" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:645 +msgid "Bullets" +msgstr "Punktai" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Numeruotas sąrašas" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:664 +msgid "Rename" +msgstr "Pervadinti" + +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Rinkiniai" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:684 +msgid "Delete this Note" +msgstr "Ištrinti šį raštelį" + +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Raštelio spalva" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Dalintis rašteliu" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Daugiau…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Įveskite rinkinio pavadinimą" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Naujas rinkinys" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Užverti" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Paskutinis atnaujinimas" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Gerai" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Ištrinti" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Pridėti prie rinkinio" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Raštelio šriftas" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Numatytoji spalva" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Raštelio redakcija" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Pirminė knyga" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Šiandien" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Vakar" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Šią savaitę" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Šį mėnesį" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Šiemet" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Nežinoma" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Vietinė saugykla" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_Naujas langas" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Importuoti raštelius" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Nustatymai" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Apie raštelius" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Žinynas" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "Iš_eiti" diff -Nru bijiben-3.8.4/po/lv.po bijiben-3.10.2/po/lv.po --- bijiben-3.8.4/po/lv.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/lv.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,353 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-10 03:20+0000\n" +"PO-Revision-Date: 2013-09-11 10:39+0300\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"“Piezīmes” ir redaktors, kas ļauj veidot vienkāršus sarakstus vēlākai " +"izmantošanai." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Tas ļauj izmantot ownCloud kā datu glabātuvi un tiešsaistes redaktoru." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Piezīmes" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "piezīmes;atgādinājumi;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Raksti zīmītes, marķē datnes!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Piezīmju blociņš" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Vienkāršs GNOME piezīmju bloks" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Piezīmju krāsa" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Izgriezt" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Kopēt" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Ielīmēt" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Treknraksts" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Slīpraksts" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Pārsvītrots" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopēt izvēlēto uz jaunu piezīmi" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nav atrastu piezīmju" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Šī piezīmju kolekcija ir tukša.\n" +"Spiediet pogu “Jauna”, lai izveidotu savu pirmo piezīmi." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Šim meklējumam nekas nav atrasts." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ak vai!" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Lūdzu, instalējiet “Tracker” un pārstartējiet lietotni." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Pielāgota vieta" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importēt piezīmes" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "At_celt" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importēt" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Izvēlieties importēšanas vietu" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy lietotne" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote lietotne" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Ielādēt vairāk" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Ielādē..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Spiediet uz vienumiem, lai tos izvēlētos" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d izvēlēts" +msgstr[1] "%d izvēlēti" +msgstr[2] "%d izvēlētu" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Meklēt piezīmju nosaukumos, saturā un kolekcijās" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Atcelt" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Iziet no izvēles režīma" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "“%s” rezultāti" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Jaunas un nesenas" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Jauna" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Izvēlēšanās režīms" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Piezīmes un kolekcijas skatīt sarakstā" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Piezīmes un kolekcijas skatīt režģī" + +#: ../src/bjb-main-toolbar.c:616 +msgid "Rename Note" +msgstr "Pārsaukt piezīmi" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:637 +msgid "Undo" +msgstr "Atsaukt" + +#: ../src/bjb-main-toolbar.c:645 +msgid "Redo" +msgstr "Atatsaukt" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:660 +msgid "Bullets" +msgstr "Aizzīmes" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:667 +msgid "Numbered List" +msgstr "Numurēts saraksts" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:679 +msgid "Rename" +msgstr "Pārsaukt" + +#: ../src/bjb-main-toolbar.c:687 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Kolekcijas" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:699 +msgid "Delete this Note" +msgstr "Dzēst šo piezīmi" + +#: ../src/bjb-main-toolbar.c:763 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Piezīmju krāsa" + +#: ../src/bjb-main-toolbar.c:790 +msgid "Share note" +msgstr "Koplietot piezīmi" + +#: ../src/bjb-main-toolbar.c:811 +msgid "More options…" +msgstr "Vairāk opciju…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Ievadiet nosaukumu, lai izveidotu kolekciju" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Jauna kolekcija" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "Ai_zvērt" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Pēdējo reizi atjaunināts" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Labi" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Dzēst" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Pievienot kolekcijai" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Piezīmju fonts" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Noklusējuma krāsa" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Piezīmju izdevums" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Galvenā grāmata" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Šodien" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Vakar" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Šonedēļ" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Šajā mēnesī" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Šajā gadā" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Nezināms" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokālā glabātuve" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "Jau_ns logs" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Importēt piezīmes" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Iestatījumi" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "P_ar Piezīmēm" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Palīdzība" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "I_ziet" + diff -Nru bijiben-3.8.4/po/ml.po bijiben-3.10.2/po/ml.po --- bijiben-3.8.4/po/ml.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/ml.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,351 @@ +# Malayalam translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Anish A , 2013. +# Anish Sheela , 2013. +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-16 12:11+0000\n" +"PO-Revision-Date: 2013-08-19 00:21+0530\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Swatantra Malayalam Computing \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "കുറിപ്പുകള്‍" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notes;reminder;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "കുറിപ്പ് തയ്യാറാക്കു, ഫയലുകള്‍ അടയാളപ്പെടുത്തു!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "കുറിപ്പെടുക്കല്‍" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "ഗ്നോമിനായുള്ള ലളിതമായ കുറിപ്പ് പുസ്തകം" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "അനിഷ് " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "കുറിപ്പിന്റെ നിറം" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "മുറിയ്ക്കുക" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "പകര്‍ത്തുക" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "ഒട്ടിക്കുക" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "കട്ടികൂടിയത്" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "ചരിഞ്ഞ" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "വെട്ടിയത്" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "തെരഞ്ഞടുത്തത് ഒരു പുതിയ കുറിപ്പിലേക്ക് പകര്‍ത്തുക" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "കുറിപ്പുകളൊന്നും കണ്ടില്ല" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"നിങ്ങളുടെ കുറിപ്പ് ശേഖരം ശൂന്യമാണ്.\n" +"പുതിയത് ബട്ടണ്‍ ക്ലിക്ക് ചെയ്താല്‍ ആദ്യ കുറിപ്പ് ഉണ്ടാക്കാം" + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "ഈ തെരയലില്‍ ഫലങ്ങളൊന്നുമില്ല." + +#: ../src/bjb-empty-results-box.c:161 +#, fuzzy +#| msgid "Oops, " +msgid "Oops" +msgstr "അയ്യോ," + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "'Tracker' സ്ഥാപിച്ചശേഷം പ്രയോഗം വീണ്ടും തുടങ്ങുക" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "ഇഷ്ടമുളള സ്ഥാനം " + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "കുറിപ്പുകള്‍ ഇറക്കുമതി ചെയ്യുക" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_റദ്ദാക്കുക" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "ഇറക്കുമതി" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "ഇറക്കുമതി സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "ടോംബോയി പ്രയോഗം" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "ജിനോട്ട് പ്രയോഗം" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "കൂടുതല്‍ എടുക്കു" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "കയറ്റുന്നു..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "ഇനം തിരഞ്ഞെടുക്കുവാനായി അതാത് ഇനത്തില്‍ ക്ലിക്ക് ചെയ്യുക" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d തിരഞ്ഞെടുത്തിരിക്കുന്നു" +msgstr[1] "%d തിരഞ്ഞെടുത്തിരിക്കുന്നു" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "കുറിപ്പിന്റെ തലകെട്ട്, ഉള്ളടക്കം, ശേഖരം തുടങ്ങിയവ തിരയുക" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "തിരഞ്ഞെടുക്കുവാനുള്ള മോഡില്‍ നിന്ന് പുറത്ത് കടക്കുക" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "%s-നുള്ള ഫലങ്ങള്‍" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "പുതിയതും അടുത്തുപയോഗിച്ചതും" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "പുതിയ" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "തിരഞ്ഞെടുക്കുന്ന മോഡ്" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "കുറിപ്പുകളും ശേഖരങ്ങളും പട്ടികയാക്കി കാണിക്കുക" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "കുറിപ്പുകളും ശേഖരങ്ങളും കള്ളികളാക്കി കാണിക്കുക" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "വേണ്ടെന്ന് വയ്ക്കുക" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "വീണ്ടും" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "ബുള്ളറ്റുകള്‍" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "അക്കമിട്ട പട്ടിക" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "ശേഖരം" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "ഈ കുറിപ്പ് മായ്ക്കുക" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "കുറിപ്പിന്റെ നിറം" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "കുറിപ്പ് പങ്കുവെയ്ക്കുക" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "കൂടുതല്‍ ഐച്ഛികങ്ങള്‍…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "ശേഖരം ഉണ്ടാക്കാനായി പേര് നല്‍കുക" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "പുതിയ ശേഖരം" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_അടയ്ക്കുക" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +#, fuzzy +#| msgid "Last updated " +msgid "Last updated" +msgstr "ഏറ്റവും ഒടുവില്‍ പരിഷ്കരിച്ചത്" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_ശരി" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "നീക്കം ചെയ്യുക" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "ശേഖരത്തിലേക്ക് ചേര്‍ക്കുക" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "കുറിപ്പിന്റെ അക്ഷരരൂപം" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "സ്വതവേയുള്ള നിറം" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "കുറിപ്പിന്റെ പതിപ്പ്" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "പ്രാഥമിക പുസ്തകം" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "ഇന്ന്" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "ഇന്നലെ" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "ഈ ആഴ്ച" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "ഈ മാസം" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "ഈ വര്‍ഷം" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "അറിയാത്ത" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "പ്രാദേശിക സംഭരണം" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "പുതിയ ജാലകം (_N)" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "കുറിപ്പുകള്‍ ഇറക്കുമതി ചെയ്യുക (_I)" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "മുന്‍ഗണനകള്‍(_P)" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "കുറിപ്പുകളെ കുറിച്ച് (_A)" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "സഹായം (_H)" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "പുറത്ത് കടക്കുക (_Q)" + +#~ msgid "Rename Note" +#~ msgstr "കുറിപ്പിന്റെ പേരുമാറ്റുക" + +#~ msgid "Rename" +#~ msgstr "പേര് മാറ്റുക" diff -Nru bijiben-3.8.4/po/nb.po bijiben-3.10.2/po/nb.po --- bijiben-3.8.4/po/nb.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/nb.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,347 @@ +# Norwegian bokmål translation of bijiben. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben 3.9.x\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-08 19:22+0200\n" +"PO-Revision-Date: 2013-09-08 19:22+0200\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Notater lar deg redigere enkle lister for senere bruk." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Det lar deg bruke ownCloud som lagringslokasjon og redigering på nettet." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notater" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notater;påminnelse;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Legg ut notater, merk filer!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Notater" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Enkel notisblokk for GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Kjartan Maraas " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Farge på notat" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Klipp ut" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Kopier" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Lim inn" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Uthevet" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Kursiv" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Gjennomstrek" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopier utvalg til nytt notat" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Ingen notater funnet" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Notatsamlingen din er tom.\n" +"Klikk på Ny-knappen for å lage ditt første notat." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Ingen resultater funnet for dette søket." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oops" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Vennligst installer «Tracker» og start programmet på nytt." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Egendefinert lokasjon" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importer notater" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "A_vbryt" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importer" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Velg lokasjon for import" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Last mer" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Laster …" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Klikk på oppføringer for å velge dem" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d valgt" +msgstr[1] "%d valgt" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Søk i notattitler, innhold og samlinger" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Avbryt" + +#: ../src/bjb-main-toolbar.c:304 +msgid "Exit selection mode" +msgstr "Avslutt utvalgtsmodus" + +#: ../src/bjb-main-toolbar.c:334 +#, c-format +msgid "Results for %s" +msgstr "Resultater for %s" + +#: ../src/bjb-main-toolbar.c:337 +msgid "New and Recent" +msgstr "Nye og nylige" + +#: ../src/bjb-main-toolbar.c:401 +msgid "New" +msgstr "Ny" + +#: ../src/bjb-main-toolbar.c:419 +msgid "Selection mode" +msgstr "Utvalgsmodus" + +#: ../src/bjb-main-toolbar.c:447 +msgid "View notes and collections in a list" +msgstr "Vis notater og samlinger i en liste" + +#: ../src/bjb-main-toolbar.c:471 +msgid "View notes and collections in a grid" +msgstr "Vis notater og samlinger i et rutenett" + +#: ../src/bjb-main-toolbar.c:600 +msgid "Rename Note" +msgstr "Endre navn på notat" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:621 +msgid "Undo" +msgstr "Angre" + +#: ../src/bjb-main-toolbar.c:629 +msgid "Redo" +msgstr "Gjenta" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:644 +msgid "Bullets" +msgstr "Kulepunkter" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:651 +msgid "Numbered List" +msgstr "Nummerert liste" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:663 +msgid "Rename" +msgstr "Endre navn" + +#: ../src/bjb-main-toolbar.c:671 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Samlinger" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:683 +msgid "Delete this Note" +msgstr "Slett dette notatet" + +#: ../src/bjb-main-toolbar.c:747 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Farge på notat" + +#: ../src/bjb-main-toolbar.c:774 +msgid "Share note" +msgstr "Del notat" + +#: ../src/bjb-main-toolbar.c:795 +msgid "More options…" +msgstr "Flere alternativer …" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Oppgi et navn for å lage en samling" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Ny samling" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Lukk" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Sist oppdatert" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Slett" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Legg til i samling" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Skrift for notat" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Forvalgt farge" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Versjon av notat" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Hovedbok" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "I dag" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "I går" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Denne uken" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Denne måneden" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Dette året" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Ukjent" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokal lagring" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_Nytt vindu" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Importer notater" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Brukervalg" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Om notater" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Hjelp" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "A_vslutt" diff -Nru bijiben-3.8.4/po/nl.po bijiben-3.10.2/po/nl.po --- bijiben-3.8.4/po/nl.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/nl.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,349 @@ +# Dutch translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Erwin Poeze , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-14 23:38+0000\n" +"PO-Revision-Date: 2013-09-12 08:15+0100\n" +"Last-Translator: Erwin Poeze \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notities is een editor waarmee eenvoudige lijstjes gemaakt kunnen worden." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Het maakt het mogelijk Owncloud als een opslaglocatie en online-editor te " +"gebruiken." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notities" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notes;reminder;notities;herinnering;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Publiceer notities, markeer bestanden!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Notitieopnemer" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Eenvoudig notitieboek voor Gnome" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Erwin Poeze " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Achtergrondkleur notities" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Knippen" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Kopiëren" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Plakken" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Vet" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Cursief" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Doorhalen" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Selectie kopiëren naar een nieuwe notitie" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Geen notities gevonden" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Uw verzameling notities is leeg.\n" +"Klik op de knop Nieuw om de eerste notitie aan te maken." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "De zoekopdracht leverde geen resultaten." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oeps" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Installeer de toepassing 'Tracker' en herstart Notities." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Eigen locatie" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Notities importeren" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Annuleren" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importeren" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Selecteer de importeerlocatie" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboytoepassing" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnotetoepassing" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Meer laden" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Bezig met laden…" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Klik op notities om ze te selecteren" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d geselecteerd" +msgstr[1] "%d geselecteerd" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Notitietitels, -inhoud en verzamelingen doorzoeken" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Annuleren" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Selectiemodus verlaten" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "Resultaten voor %s" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Nieuw en recent" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Nieuw" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Selectiemodus" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Notities en verzamelingen als lijst bekijken" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Notities en verzamelingen als matrix bekijken" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "Ongedaan maken" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "Opnieuw" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "Aandachtspunten" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Genummerde lijst" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Verzamelingen" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "Deze notitie verwijderen" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Notitiekleur" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Notitie delen" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Meer opties…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Type een naam om een verzameling aan te maken" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nieuwe verzameling" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Sluiten" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Laatst bijgewerkt" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Verwijderen" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Aan verzameling toevoegen" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Notitielettertype" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Standaardkleur" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Notitieversie" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Hoofdverzameling" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Vandaag" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Gisteren" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Deze week" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Deze maand" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Dit jaar" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Onbekend" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokale opslag" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_Nieuw venster" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "Notities _importeren" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Voorkeuren" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Over Notities" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Hulp" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "_Afsluiten" + +#~ msgid "Rename Note" +#~ msgstr "Notitie hernoemen" + +#~ msgid "Rename" +#~ msgstr "Hernoemen" diff -Nru bijiben-3.8.4/po/pa.po bijiben-3.10.2/po/pa.po --- bijiben-3.8.4/po/pa.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/pa.po 2013-09-26 20:05:59.000000000 +0000 @@ -7,8 +7,8 @@ "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-04-22 21:08+0000\n" -"PO-Revision-Date: 2013-03-29 07:48+0530\n" +"POT-Creation-Date: 2013-09-04 01:37+0000\n" +"PO-Revision-Date: 2013-09-09 22:20-0500\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "Language: pa\n" @@ -18,9 +18,19 @@ "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.5\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "ਬੀਜੀਬੇਨ" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"ਨੋਟਿਸ ਸੰਪਾਦਕ ਹੈ, ਜੋ ਤੁਹਾਨੂੰ ਬਾਅਦ ਵਿੱਚ ਵਰਤਣ ਲਈ ਸਧਾਰਨ ਸੂਚੀ ਤਿਆਰ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ।" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "ਇਹ ownCloud ਨੂੰ ਸਟੋਰੇਜ਼ ਟਿਕਾਣੇ ਤੇ ਆਨਲਾਈਨ ਐਡੀਟਰ ਵਜੋਂ ਵਰਤਣ ਲਈ ਸਹਾਇਕ ਹੈ।" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "ਨੋਟ" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -34,162 +44,266 @@ msgid "Note-taker" msgstr "ਨੋਟ-ਕਰਤਾ" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "ਗਨੋਮ ਲਈ ਸਧਾਰਨ ਨੋਟਬੁੱਕ" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" "ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "ਬਾਹਰੀ ਨੋਟਿਸ" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "ਬਾਹਰੀ ਨੋਟਿਸ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "ਨੋਟ ਲਈ ਰੰਗ ਚੁਣੋ" +#| msgid "Note Font" +msgid "Note Color" +msgstr "ਨੋਟ ਰੰਗ" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "ਕੱਟੋ" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "ਕਾਪੀ ਕਰੋ" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "ਚੇਪੋ" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "ਗੂੜ੍ਹੇ" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "ਤਿਰਛੇ" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "ਵਿੰਨ੍ਹੋ" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "ਲਿੰਕ" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "ਚੋਣ ਨੂੰ ਨਵੇਂ ਨੋਟ ਲਈ ਕਾਪੀ ਕਰੋ" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "ਕੋਈ ਨੋਟਿਸ ਨਹੀਂ ਲੱਭਿਆ" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"ਤੁਹਾਡਾ ਨੋਟਿਸ ਭੰਡਾਰ ਖਾਲੀ ਹੈ।\n" +"ਆਪਣਾ ਪਹਿਲਾਂ ਨੋਟ ਬਣਾਉਣ ਲਈ ਨਵਾਂ ਬਟਨ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ।" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "ਇਹ ਖੋਜ ਲਈ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "ਓਹ ਹੋ!" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "'Tracker' ਨੂੰ ਇੰਸਟਾਲ ਕਰਕੇ ਐਪਲੀਕੇਸ਼ਨ ਮੁੜ-ਚਾਲੂ ਕਰੋ।" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "ਪਸੰਦੀਦਾ ਟਿਕਾਣਾ" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "ਨੋਟਿਸ ਇੰਪੋਰਟ ਕਰੋ" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#: ../src/bjb-import-dialog.c:410 +#| msgid "Import Notes" +msgid "Import" +msgstr "ਇੰਪੋਰਟ" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "ਇੰਪਰੋਟ ਟਿਕਾਣਾ ਚੁਣੋ" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "ਟੋਮਬਏ ਐਪਲੀਕੇਸ਼ਨ" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "ਜੀਨੋਟ ਐਪਲੀਕੇਸ਼ਨ" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "ਹੋਰ ਲੋਡ ਕਰੋ" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "...ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "ਆਈਟਮਾਂ ਨੂੰ ਚੁਣਨ ਲਈ ਉਹਨਾਂ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d ਚੁਣਿਆ" msgstr[1] "%d ਚੁਣੇ" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "ਖੋਜ ਨੋਟਿਸ ਟਾਈਟਲ, ਸਮੱਗਰੀ ਤੇ ਭੰਡਾਰ" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "ਚੋਣ ਢੰਗ ਬੰਦ ਕਰੋ" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "%s ਲਈ ਨਤੀਜੇ" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "ਨਵੇਂ ਅਤੇ ਤਾਜ਼ਾ" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "ਨਵਾਂ" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "ਟੈਗ ਬਣਾਉਣ ਲਈ ਨਾਂ ਦਿਉ" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "ਨਵਾਂ ਟੈਗ" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "ਚੋਣ ਢੰਗ" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "ਨੋਟਿਸ ਤੇ ਭੰਡਾਰਾਂ ਨੂੰ ਸੂਚੀ ਦੇ ਰੂਪ ਵਿੱਚ ਵੇਖੋ" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "ਨੋਟਿਸ ਤੇ ਭੰਡਾਰਾਂ ਨੂੰ ਗਰਿੱਡ ਦੇ ਰੂਪ ਵਿੱਚ ਵੇਖੋ" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "ਨੋਟ ਦਾ ਨਾਂ ਬਦਲੋ" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "ਵਾਪਸ" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "ਪਰਤਾਓ" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "ਬਿੰਦੀਆਂ" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "ਲਿਸਟ" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "ਅੰਕਾਂ ਵਾਲੀ ਸੂਚੀ" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "ਅਸਲੀ ਨਾਂ" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "ਟੈਗ" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "ਭੰਡਾਰ" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "ਇਸ ਨੋਟ ਹਟਾਓ" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "ਨੋਟ" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +#| msgid "Note Font" +msgid "Note color" +msgstr "ਨੋਟ ਰੰਗ" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "ਨੋਟ ਸਾਂਝਾ ਕਰੋ" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "...ਹੋਰ ਚੋਣਾਂ" + +#: ../src/bjb-note-tag-dialog.c:399 +#| msgid "Enter a name to create a tag" +msgid "Enter a name to create a collection" +msgstr "ਭੰਡਾਰ ਬਣਾਉਣ ਲਈ ਨਾਂ ਦਿਉ" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "ਨਵਾਂ ਭੰਡਾਰ" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "ਬੰਦ ਕਰੋ(_C)" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "ਆਖਰੀ ਅੱਪਡੇਟ ਸੀ " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "ਟੈਗ" +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" +msgstr "ਆਖਰੀ ਅੱਪਡੇਟ ਸੀ" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "ਠੀਕ ਹੈ(_O)" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "ਹਟਾਓ" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "ਮੇਰੀ ਪਸੰਦ" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "ਭੰਡਾਰ ਵਿੱਚ ਸ਼ਾਮਲ" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "ਨੋਟ ਫੋਂਟ" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "ਮੂਲ ਫੋਂਟ" +#: ../src/bjb-settings-dialog.c:437 +#| msgid "Note Font" +msgid "Note Edition" +msgstr "ਨੋਟ ਐਡੀਸ਼ਨ" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "ਪ੍ਰਾਇਮਰੀ ਬੁੱਕ" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "ਅੱਜ" @@ -214,21 +328,26 @@ msgid "Unknown" msgstr "ਅਣਜਾਣ" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "ਲੋਕਲ ਸਟੋਰੇਜ਼" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "ਨਵੀਂ ਵਿੰਡੋ(_N)" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "ਬਾਹਰੀ ਨੋਟਿਸ(_E)" +msgid "_Import Notes" +msgstr "ਨੋਟਿਸ ਇੰਪੋਰਟ ਕਰੋ(_I)" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "ਬੀਜੀਬੇਨ ਬਾਰੇ(_A)" +#| msgid "_Import Notes" +msgid "_About Notes" +msgstr "ਨੋਟਿਸ ਬਾਰੇ(_A)" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -238,7 +357,41 @@ msgid "_Quit" msgstr "ਬੰਦ ਕਰੋ(_Q)" -#, fuzzy -#~| msgid "Note Font" -#~ msgid "No Notes Found" -#~ msgstr "ਨੋਟ ਫੋਂਟ" +#~ msgid "Bijiben" +#~ msgstr "ਬੀਜੀਬੇਨ" + +#~ msgid "Import notes from:" +#~ msgstr "ਨੋਟਿਸ ਇੰਪੋਰਟ ਕਰੋ:" + +#~ msgid "Choose a color for note" +#~ msgstr "ਨੋਟ ਲਈ ਰੰਗ ਚੁਣੋ" + +#~ msgid "Link" +#~ msgstr "ਲਿੰਕ" + +#~ msgid "Tags" +#~ msgstr "ਟੈਗ" + +#~ msgid "New tag" +#~ msgstr "ਨਵਾਂ ਟੈਗ" + +#~ msgid "Tag" +#~ msgstr "ਟੈਗ" + +#~ msgid "Preferences" +#~ msgstr "ਮੇਰੀ ਪਸੰਦ" + +#~ msgid "_About Bijiben" +#~ msgstr "ਬੀਜੀਬੇਨ ਬਾਰੇ(_A)" + +#~ msgid "External Notes" +#~ msgstr "ਬਾਹਰੀ ਨੋਟਿਸ" + +#~ msgid "Click on the external notes to import" +#~ msgstr "ਬਾਹਰੀ ਨੋਟਿਸ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" + +#~ msgid "List" +#~ msgstr "ਲਿਸਟ" + +#~ msgid "_External Notes" +#~ msgstr "ਬਾਹਰੀ ਨੋਟਿਸ(_E)" diff -Nru bijiben-3.8.4/po/pl.po bijiben-3.10.2/po/pl.po --- bijiben-3.8.4/po/pl.po 2013-07-19 22:02:06.000000000 +0000 +++ bijiben-3.10.2/po/pl.po 2013-09-26 20:05:59.000000000 +0000 @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: bijiben\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-02 23:17+0200\n" -"PO-Revision-Date: 2013-07-02 23:18+0200\n" +"POT-Creation-Date: 2013-08-31 22:53+0200\n" +"PO-Revision-Date: 2013-08-31 22:55+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -23,9 +23,17 @@ "X-Poedit-Language: Polish\n" "X-Poedit-Country: Poland\n" -#. Button to go back to main view -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -#: ../src/bjb-note-view.c:401 ../src/bjb-window-base.c:17 +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Ten program umożliwia zapisywanie prostych list do późniejszego użytku." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Umożliwia używanie usługi ownCloud do przechowywania i modyfikowania notatek." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 msgid "Notes" msgstr "Notatki" @@ -41,64 +49,118 @@ msgid "Note-taker" msgstr "Robienie notatek" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Prosty notatnik dla środowiska GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" "Piotr Drąg , 2012-2013\n" "Aviary.pl , 2012-2013" -#: ../src/bjb-app-menu.c:154 -msgid "External Notes" -msgstr "Zewnętrzne notatki" - -#: ../src/bjb-app-menu.c:169 -msgid "Click on the external notes to import" -msgstr "Kliknięcie zewnętrznych notatek je zaimportuje" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Wybór koloru notatki" +msgid "Note Color" +msgstr "Kolor notatki" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Wytnij" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Skopiuj" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Wklej" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Pogrubienie" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Pochylenie" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Przekreślenie" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Odnośnik" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Skopiuj zaznaczenie do nowej notatki" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nie odnaleziono żadnych notatek" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Kolekcja notatek jest pusta.\n" +"Kliknięcie przycisku Nowa utworzy pierwszą notatkę." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nie odnaleziono wyników dla tego wyszukiwania." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ups" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "" +"Proszę zainstalować program \"Tracker\", a następnie ponownie uruchomić ten " +"program." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Własne położenie" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Zaimportuj notatki" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Anuluj" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Zaimportuj" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Wybór położenia importu" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Program Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Program Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Wczytaj więcej" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Wczytywanie..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Kliknięcie na elementach zaznacza je" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" @@ -106,93 +168,144 @@ msgstr[1] "Zaznaczono: %d" msgstr[2] "Zaznaczono: %d" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Przeszukiwanie tytułów, treści i kolekcji notatek" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Anuluj" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Wyjście z trybu zaznaczania" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Wyniki dla %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Nowe i ostatnie" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nowa" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Proszę wprowadzić nazwę, aby utworzyć etykietę" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nowa etykieta" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Tryb zaznaczania" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Wyświetlanie notatek i kolekcji jako listę" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Wyświetlanie notatek i kolekcji w siatce" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Zmień nazwę notatki" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Cofnij" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Ponów" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Wypunktowanie" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Lista" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Lista numerowana" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Zmień nazwę" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Etykiety" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Kolekcje" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Usuń tę notatkę" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Kolor notatki" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Współdziel notatkę" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Więcej opcji…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Proszę wprowadzić nazwę, aby utworzyć kolekcję" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nowa kolekcja" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "Za_mknij" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Ostatnio zaktualizowano " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Etykieta" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Ostatnio zaktualizowano" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Usuń" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Preferencje" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Dodaj do kolekcji" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Czcionka notatki" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Domyślny kolor" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edycja notatki" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Główna książka" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Dzisiaj" @@ -217,13 +330,17 @@ msgid "Unknown" msgstr "Nieznany" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Lokalne przechowywanie" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nowe okno" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "Z_ewnętrzne notatki" +msgid "_Import Notes" +msgstr "Za_importuj notatki" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" diff -Nru bijiben-3.8.4/po/POTFILES.in bijiben-3.10.2/po/POTFILES.in --- bijiben-3.8.4/po/POTFILES.in 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/POTFILES.in 2013-11-11 20:52:06.000000000 +0000 @@ -1,13 +1,21 @@ # List of source files containing translatable strings. +data/bijiben.appdata.xml.in data/bijiben.desktop.in.in +data/bijiben.xml.in src/bjb-app-menu.c src/bjb-color-button.c src/bjb-editor-toolbar.c +src/bjb-empty-results-box.c +src/bjb-import-dialog.c +src/bjb-load-more-button.c src/bjb-main-toolbar.c src/bjb-note-tag-dialog.c src/bjb-note-view.c +src/bjb-rename-note.c src/bjb-selection-toolbar.c src/bjb-settings.c +src/bjb-settings-dialog.c src/bjb-window-base.c src/libbiji/biji-date-time.c +src/libbiji/provider/biji-local-provider.c [type: gettext/glade]src/resources/app-menu.ui diff -Nru bijiben-3.8.4/po/POTFILES.skip bijiben-3.10.2/po/POTFILES.skip --- bijiben-3.8.4/po/POTFILES.skip 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/POTFILES.skip 2013-07-28 23:23:54.000000000 +0000 @@ -1,3 +1,2 @@ data/bijiben.desktop.in -egg-list-box/egg-flow-box.c libgd/libgd/gd-header-bar.c diff -Nru bijiben-3.8.4/po/pt_BR.po bijiben-3.10.2/po/pt_BR.po --- bijiben-3.8.4/po/pt_BR.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/pt_BR.po 2013-09-26 20:05:59.000000000 +0000 @@ -1,28 +1,40 @@ # Brazilian Portuguese translation for bijiben. -# Copyright (C) 2012 bijiben's COPYRIGHT HOLDER +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER # This file is distributed under the same license as the bijiben package. -# Rafael Ferreira , 2012, 2013 +# Rafael Ferreira , 2012, 2013. # Enrico Nicoletto , 2013. +# Georges Basile Stavracas Neto , 2013. # msgid "" msgstr "" -"Project-Id-Version: bijiben\n" +"Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-07-01 22:26+0000\n" -"PO-Revision-Date: 2013-07-02 07:25-0300\n" -"Last-Translator: Rafael Ferreira \n" +"POT-Creation-Date: 2013-08-30 21:01+0000\n" +"PO-Revision-Date: 2013-08-30 18:19-0300\n" +"Last-Translator: Enrico Nicoletto \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.5.5\n" +"X-Generator: Poedit 1.5.4\n" -#. Button to go back to main view -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -#: ../src/bjb-note-view.c:401 ../src/bjb-window-base.c:17 +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"O aplicativo Notas é um editor que permitir criar listas simples para uso " +"posterior." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Permite que seja usado ownCloud como um local de armazenamento e editor on-" +"line." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 msgid "Notes" msgstr "Notas" @@ -38,157 +50,260 @@ msgid "Note-taker" msgstr "Tomador de notas" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Um catálogo simples de notas para o GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" -"Rafael Ferreira \n" -"Enrico Nicoletto " - -#: ../src/bjb-app-menu.c:154 -msgid "External Notes" -msgstr "Notas externas" - -#: ../src/bjb-app-menu.c:169 -msgid "Click on the external notes to import" -msgstr "Clique nas notas externas para importar" +"Rafael Ferreira , 2012, 2013.\n" +"Enrico Nicoletto , 2013." #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Escolha uma cor para a nota" +msgid "Note Color" +msgstr "Cor da nota" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Cortar" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Copiar" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Colar" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Negrito" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Itálico" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Tachado" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Sublinhado" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copia a seleção para uma nova nota" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nenhuma nota foi encontrada" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Sua coleção de notas está vazia.\n" +"Clique no botão Nova para criar sua primeira nota." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Não foi encontrado resultado para essa busca." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ops" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Por favor, instale \"Tracker\" e, então, reinicie o aplicativo." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Local personalizado" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importar notas" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importar" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Selecione o local de importação" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplicativo Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplicativo Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Carregar mais" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Carregando..." + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Clique nos itens para selecioná-los" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d selecionado" msgstr[1] "%d selecionados" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Pesquisa em coleções, conteúdo e títulos de notas" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Sai do modo de seleção" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Resultados para %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Novas e recentes" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nova" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Insira um nome para criar uma etiqueta" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nova etiqueta" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Modo seleção" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Veja notas e coleções em uma lista" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Veja notas e coleções em uma grade" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Renomear nota" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Desfazer" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Refazer" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Marcadores" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Lista" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Lista numerada" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Renomear" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Etiquetas" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Coleções" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Excluir essa nota" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Cor da nota" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Compartilhar nota" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Mais opções…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Digite um nome para criar uma coleção" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nova coleção" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Fechar" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Última atualização " - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Etiqueta" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Última atualização" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Excluir" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Preferências" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Adicionar à coleção" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Fonte da nota" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Core padrão" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edição da nota" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Livro primário" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Hoje" @@ -213,22 +328,25 @@ msgid "Unknown" msgstr "Desconhecido" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Armazenamento local" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nova janela" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "Notas _externas" +msgid "_Import Notes" +msgstr "_Importar notas" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Preferências" #: ../src/resources/app-menu.ui.h:4 -#| msgid "_About Bijiben" msgid "_About Notes" -msgstr "S_obre Notas" +msgstr "S_obre notas" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -238,5 +356,44 @@ msgid "_Quit" msgstr "_Sair" +#~ msgid "Done" +#~ msgstr "Concluído" + +#~ msgid "Preferences" +#~ msgstr "Preferências" + #~ msgid "Bijiben" #~ msgstr "Bijiben" + +#~ msgid "_About Bijiben" +#~ msgstr "S_obre Bijiben" + +#~ msgid "Import notes from:" +#~ msgstr "Importar notas de:" + +#~ msgid "Choose a color for note" +#~ msgstr "Escolha uma cor para a nota" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Tags" +#~ msgstr "Etiquetas" + +#~ msgid "New tag" +#~ msgstr "Nova etiqueta" + +#~ msgid "Tag" +#~ msgstr "Etiqueta" + +#~ msgid "External Notes" +#~ msgstr "Notas externas" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Clique nas notas externas para importar" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "_External Notes" +#~ msgstr "Notas _externas" diff -Nru bijiben-3.8.4/po/pt.po bijiben-3.10.2/po/pt.po --- bijiben-3.8.4/po/pt.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/pt.po 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,343 @@ +# Portuguese translation for bijiben. +# Copyright (C) 2013 bijiben +# This file is distributed under the same license as the bijiben package. +# António Lima , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben gnome-3-10\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-09-22 01:02+0100\n" +"PO-Revision-Date: 2013-09-19 23:25-0100\n" +"Last-Translator: António Lima \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"O Notas é um editor que permite fazer listas simples para utilizar mais " +"tarde." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Permite a utilização da ownCloud como uma localização de armazenamento e " +"editor online." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notas" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "notas;lembrete;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Coloque notas, etiquete ficheiros!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Bloco de notas" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Bloco de notas simples para o GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "António Lima " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Cor da Nota" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Cortar" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Copiar" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Colar" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Negrito" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Itálico" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Texto riscado" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Copiar seleção para uma nova nota" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nenhuma Nota Encontrado" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"A sua coleção de notas está vazia.\n" +"Clique no botão Novo para criar a sua primeira nota." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nenhum resultado para esta pesquisa." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Oops" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Por favor instale o 'Tracker' e reinicie a aplicação." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Localização Personalizada" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Importar Notas" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Importar" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Selecionar localização de importação" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplicação Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplicação Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Carregar Mais" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "A carregar..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Clique nos itens para os selecionar" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d selecionada" +msgstr[1] "%d seleccionadas" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Procure títulos de notas, conteúdo e colecções" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Cancelar" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Sair do modo de seleção" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "Resultados para: %s" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Novo e Recente" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Novo" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Modo de seleção" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Ver notas e coleções numa lista" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Ver notas e coleções numa grelha" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "Desfazer" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "Refazer" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "Marcas" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Lista Numerada" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Coleções" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "Apagar esta Nota" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Cor da Nota" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Partilhar nota" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Mais opções..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Digite um nome para criar uma coleção" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nova coleção" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Fechar" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Última atualização" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Ok" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Apagar" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Adicionar à Coleção" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Fonte da Nota" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Cor por Omissão" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Edição da Nota" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Livro Principal" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Hoje" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Ontem" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Esta semana" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Este mês" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Este ano" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Desconhecido" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Armazenamento local" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_Nova Janela" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Importar Notas" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Preferências" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Sobre Notas" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Ajuda" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "_Sair" diff -Nru bijiben-3.8.4/po/ru.po bijiben-3.10.2/po/ru.po --- bijiben-3.8.4/po/ru.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/ru.po 2013-09-26 20:05:59.000000000 +0000 @@ -6,23 +6,32 @@ msgid "" msgstr "" "Project-Id-Version: bijiben master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-05-13 01:11+0000\n" -"PO-Revision-Date: 2013-05-15 11:26+0300\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-05 09:52+0000\n" +"PO-Revision-Date: 2013-09-07 23:27+0300\n" "Last-Translator: Yuri Myasoedov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.5.4\n" - -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.5.7\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Заметки — это редактор, позволяющий создавать простые списки для последующего использования." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Это позволяет использовать ownCloud как место хранилища и онлайн-редактор." + +#: ../data/bijiben.desktop.in.in.h:1 +#: ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 +#: ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Заметки" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -37,64 +46,54 @@ msgid "Note-taker" msgstr "Электронная ручка" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Простая записная книжка среды рабочего стола GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Stas Solovey , 2013." -#: ../src/bjb-app-menu.c:162 -msgid "Import Notes" -msgstr "Импортировать заметки" - -#: ../src/bjb-app-menu.c:177 -msgid "Import notes from:" -msgstr "Импортировать заметки из:" - #: ../src/bjb-color-button.c:146 -#| msgid "Note Font" msgid "Note Color" msgstr "Цвет заметки" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Вырезать" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Копировать" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Вставить" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Полужирный" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Курсив" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Подчёркнутый" -#: ../src/bjb-editor-toolbar.c:225 +#: ../src/bjb-editor-toolbar.c:450 msgid "Copy selection to a new note" msgstr "Копировать выделение в новую заметку" -#: ../src/bjb-empty-results-box.c:97 -#| msgid "Note Font" +#: ../src/bjb-empty-results-box.c:100 msgid "No Notes Found" msgstr "Заметки не найдены" -#: ../src/bjb-empty-results-box.c:133 +#: ../src/bjb-empty-results-box.c:144 msgid "" "Your notes collection is empty.\n" "Click the New button to create your first note." @@ -102,15 +101,61 @@ "Коллекция заметок пуста.\n" "Нажмите кнопку «Создать», чтобы создать заметку." -#: ../src/bjb-empty-results-box.c:140 +#: ../src/bjb-empty-results-box.c:150 msgid "No result found for this research." msgstr "По данному запросу ничего не найдено." -#: ../src/bjb-main-toolbar.c:116 +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ой" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Установите «Tracker» и перезапустите приложение." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Другое место" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Импортировать заметки" + +#: ../src/bjb-import-dialog.c:408 +#: ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Отмена" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Импортировать" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Выберите место для импорта" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Приложение Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Приложение Gnote" + +#: ../src/bjb-load-more-button.c:67 +#: ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Загрузить ещё" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Загрузка…" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Нажмите на элементы, чтобы выбрать их" -#: ../src/bjb-main-toolbar.c:118 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" @@ -118,135 +163,147 @@ msgstr[1] "Выделено %d объекта" msgstr[2] "Выделено %d объектов" -#: ../src/bjb-main-toolbar.c:232 +#: ../src/bjb-main-toolbar.c:260 msgid "Search note titles, content and collections" msgstr "Поиск по заголовкам, содержимому и коллекциям" -#: ../src/bjb-main-toolbar.c:266 -msgid "Done" -msgstr "Готово" +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Отмена" -#: ../src/bjb-main-toolbar.c:267 +#: ../src/bjb-main-toolbar.c:304 msgid "Exit selection mode" msgstr "Выйти из режима выделения" -#: ../src/bjb-main-toolbar.c:299 +#: ../src/bjb-main-toolbar.c:334 #, c-format msgid "Results for %s" msgstr "Результаты для %s" -#: ../src/bjb-main-toolbar.c:302 +#: ../src/bjb-main-toolbar.c:337 msgid "New and Recent" msgstr "Новые и недавние" -#: ../src/bjb-main-toolbar.c:364 +#: ../src/bjb-main-toolbar.c:401 msgid "New" msgstr "Создать" -#: ../src/bjb-main-toolbar.c:385 +#: ../src/bjb-main-toolbar.c:419 msgid "Selection mode" msgstr "Режим выделения" -#: ../src/bjb-main-toolbar.c:406 +#: ../src/bjb-main-toolbar.c:447 msgid "View notes and collections in a list" msgstr "Показывать заметки и коллекции в виде списка" -#: ../src/bjb-main-toolbar.c:426 +#: ../src/bjb-main-toolbar.c:471 msgid "View notes and collections in a grid" msgstr "Показывать заметки и коллекции в виде таблицы" -#: ../src/bjb-main-toolbar.c:562 +#: ../src/bjb-main-toolbar.c:600 msgid "Rename Note" msgstr "Переименовать заметку" #. Undo Redo separator -#: ../src/bjb-main-toolbar.c:583 +#: ../src/bjb-main-toolbar.c:621 msgid "Undo" msgstr "Отменить" -#: ../src/bjb-main-toolbar.c:591 +#: ../src/bjb-main-toolbar.c:629 msgid "Redo" msgstr "Вернуть" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-main-toolbar.c:605 +#: ../src/bjb-main-toolbar.c:644 msgid "Bullets" msgstr "Тип сортировки" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-main-toolbar.c:612 +#: ../src/bjb-main-toolbar.c:651 msgid "Numbered List" msgstr "Нумерованный список" #. Rename, view tags, separtor -#: ../src/bjb-main-toolbar.c:623 +#: ../src/bjb-main-toolbar.c:663 msgid "Rename" msgstr "Переименовать" -#: ../src/bjb-main-toolbar.c:629 ../src/bjb-note-tag-dialog.c:369 +#: ../src/bjb-main-toolbar.c:671 +#: ../src/bjb-note-tag-dialog.c:370 msgid "Collections" msgstr "Коллекции" #. Delete Note -#: ../src/bjb-main-toolbar.c:640 +#: ../src/bjb-main-toolbar.c:683 msgid "Delete this Note" msgstr "Удалить заметку" -#: ../src/bjb-main-toolbar.c:674 -msgid "Notes" -msgstr "Заметки" - -#: ../src/bjb-main-toolbar.c:704 ../src/bjb-selection-toolbar.c:162 -#| msgid "Note Font" +#: ../src/bjb-main-toolbar.c:747 +#: ../src/bjb-selection-toolbar.c:252 msgid "Note color" msgstr "Цвет заметки" -#: ../src/bjb-main-toolbar.c:720 +#: ../src/bjb-main-toolbar.c:774 msgid "Share note" msgstr "Поделиться заметкой" -#: ../src/bjb-main-toolbar.c:737 +#: ../src/bjb-main-toolbar.c:795 msgid "More options…" msgstr "Дополнительные параметры..." -#: ../src/bjb-note-tag-dialog.c:398 -#| msgid "Enter a name to create a tag" +#: ../src/bjb-note-tag-dialog.c:399 msgid "Enter a name to create a collection" msgstr "Введите имя для создания коллекции" -#: ../src/bjb-note-tag-dialog.c:408 +#: ../src/bjb-note-tag-dialog.c:409 msgid "New collection" msgstr "Создать коллекцию" +#. Response +#: ../src/bjb-note-tag-dialog.c:437 +#: ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Закрыть" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:231 -msgid "Last updated " +#: ../src/bjb-note-view.c:229 +msgid "Last updated" msgstr "Последнее обновление" -#: ../src/bjb-selection-toolbar.c:155 +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "О_К" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Удалить" -#: ../src/bjb-selection-toolbar.c:182 -msgid "Edit collections" -msgstr "Изменить коллекции" - -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Параметры" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Добавить в коллекцию" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Шрифт заметок" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Цвет по умолчанию" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Изменение заметки" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Первичная книга" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Сегодня" @@ -271,9 +328,13 @@ msgid "Unknown" msgstr "Неизвестный" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Локальное хранилище" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" -msgstr "_Новое окно" +msgstr "_Создать окно" #: ../src/resources/app-menu.ui.h:2 msgid "_Import Notes" @@ -284,7 +345,7 @@ msgstr "_Параметры" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" +msgid "_About Notes" msgstr "_О программе" #: ../src/resources/app-menu.ui.h:5 @@ -293,31 +354,5 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" -msgstr "_Выйти" - -#~ msgid "External Notes" -#~ msgstr "Внешние заметки" - -#~ msgid "Click on the external notes to import" -#~ msgstr "Нажмите на внешние заметки из списка, чтобы импортировать их" - -#~ msgid "Choose a color for note" -#~ msgstr "Выберите цвет для заметки" - -#~ msgid "Link" -#~ msgstr "Ссылка" - -#~ msgid "New tag" -#~ msgstr "Новый тег" - -#~ msgid "List" -#~ msgstr "Список" - -#~ msgid "Tags" -#~ msgstr "Теги" - -#~ msgid "Tag" -#~ msgstr "Тег" +msgstr "_Закончить" -#~ msgid "_External Notes" -#~ msgstr "В_нешние заметки" diff -Nru bijiben-3.8.4/po/sk.po bijiben-3.10.2/po/sk.po --- bijiben-3.8.4/po/sk.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/sk.po 2013-09-26 20:05:59.000000000 +0000 @@ -8,8 +8,8 @@ "Project-Id-Version: bijiben gnome-3-8\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-03-18 00:32+0000\n" -"PO-Revision-Date: 2013-03-23 16:47+0100\n" +"POT-Creation-Date: 2013-09-10 03:20+0000\n" +"PO-Revision-Date: 2013-09-11 10:26+0100\n" "Last-Translator: Dušan Kazik \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -19,9 +19,20 @@ "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Generator: Poedit 1.5.4\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Aplikácia Poznámky je editor, ktorý umožňuje vytvoriť jednoduché zápisky na " +"neskoršie pripomenutie." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Umožňuje použiť službu ownCloud ako miesto uloženia a online editor." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Poznámky" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,64 +46,123 @@ msgid "Note-taker" msgstr "Záznam poznámok" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" -msgstr "Jednoduchý zápisník prostredia GNOME" +msgstr "Jednoduchý zápisník pre prostredie GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Dušan Kazik " -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Externé poznámky" - +# DK:meni farbu danej poznamky # label -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Kliknutím na externé poznámky ich naimportujete" - -# dialog title #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Výber farby poznámky" +msgid "Note Color" +msgstr "Farba poznámky" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Vystrihnúť" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopírovať" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Prilepiť" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Tučné" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Kurzíva" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Preškrtnuté" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Odkaz" +# tooltip +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Skopíruje výber do novej poznámky" -#: ../src/bjb-main-toolbar.c:190 +# label +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nenašli sa žiadne poznámky" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Vaša zbierka poznámok je prázdna.\n" +"Kliknutím na tlačidlo Nová vytvoríte vašu prvú poznámku." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nenašli sa žiadne výsledky pre toto opätovné hľadanie." + +# DK: https://bugzilla.gnome.org/show_bug.cgi?id=706476 +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ale nie" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Prosím, nainštalujte program „Tracker“, a potom reštartujte aplikáciu." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Vlastné umiestnenie" + +# gtk_window_set_title +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Import poznámok" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Zrušiť" + +# dialog title +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Import" + +# gtk_label_new +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Vyberte umiestnenie importu" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Aplikácia Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Aplikácia Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Načítať viac" + +# tri bodky +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Načítava sa…" + +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Kliknutím na položky ich vyberiete" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" @@ -100,43 +170,61 @@ msgstr[1] "%d vybraná" msgstr[2] "%d vybrané" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Hľadajte v názvoch poznámok, obsahu a zbierkach" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Zrušiť" + +# tooltip +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Ukončí režim výberu" + +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "Výsledky pre %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Nové a nedávno použité" # DK:poznámka -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Nová" -# label -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Zadajte názov na vytvorenie značky" - -# button label -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nová značka" +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Režim výberu" + +# tooltip +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Zobrazí poznámky a zbierky v zozname" + +# tooltip +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Zobrazí poznámky a zbierky v mriežke" # dialog title -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:616 msgid "Rename Note" msgstr "Premenovanie poznámky" # menu item #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:637 msgid "Undo" msgstr "Vrátiť späť" # menu item -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:645 msgid "Redo" msgstr "Opakovať vrátené" @@ -144,71 +232,101 @@ # DK: vybratim tejto volby program vytvori odrazky vo forme guliciek - preto odrazky #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:660 msgid "Bullets" msgstr "Odrážky" -# menu item #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Zoznam" +#: ../src/bjb-main-toolbar.c:667 +msgid "Numbered List" +msgstr "Očíslovaný zoznam" # menu item #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:679 msgid "Rename" msgstr "Premenovať" -# menu item -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Značky" +#: ../src/bjb-main-toolbar.c:687 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Zbierky" # menu item #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:699 msgid "Delete this Note" msgstr "Odstrániť túto poznámku" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "Poznámky" - -#. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "Naposledy aktualizované " +# label +#: ../src/bjb-main-toolbar.c:763 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Farba poznámok" # tooltip -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Značka" +#: ../src/bjb-main-toolbar.c:790 +msgid "Share note" +msgstr "Sprístupní poznámku" + +#: ../src/bjb-main-toolbar.c:811 +msgid "More options…" +msgstr "Viac volieb…" + +# label +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Zadajte názov na vytvorenie zbierky" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nová zbierka" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "Za_vrieť" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Naposledy aktualizované" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" # tooltip -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Odstráni" -# menu item -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Nastavenia" +# tooltip +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Pridá do zbierky" # label -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Písmo poznámok" # label -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Predvolená farba" +# dialog title +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Úprava poznámky" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Hlavná kniha" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Dnes" @@ -233,21 +351,25 @@ msgid "Unknown" msgstr "Nevedno kedy" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Miestne úložisko" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Nové okno" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Externé poznámky" +msgid "_Import Notes" +msgstr "_Importovať poznámky" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" -msgstr "N_astavenia" +msgstr "Nas_tavenia" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_O programe Bijiben" +msgid "_About Notes" +msgstr "_O programe Poznámky" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -255,4 +377,10 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" -msgstr "_Ukončiť" +msgstr "U_končiť" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "Done" +#~ msgstr "Dokončiť" diff -Nru bijiben-3.8.4/po/sl.po bijiben-3.10.2/po/sl.po --- bijiben-3.8.4/po/sl.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/sl.po 2013-11-11 20:52:06.000000000 +0000 @@ -9,8 +9,8 @@ "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-08-12 13:41+0000\n" -"PO-Revision-Date: 2013-08-17 15:07+0100\n" +"POT-Creation-Date: 2013-08-30 20:51+0000\n" +"PO-Revision-Date: 2013-08-30 23:00+0100\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl_SI\n" @@ -22,9 +22,20 @@ "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 1.5.4\n" -#. Button to go back to main view -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -#: ../src/bjb-note-view.c:404 ../src/bjb-window-base.c:17 +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Progam je enostavni urejevalnik za enostavne sezname in opomnike za kasnejšo " +"rabo." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Omogoča uporabo oblaka ownCloud kot mesto shranjevanja in spletnega " +"urejevalnika." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 msgid "Notes" msgstr "Sporočilca" @@ -40,62 +51,114 @@ msgid "Note-taker" msgstr "Zapisovalec sporočilc" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Enostavna sporočilca za GNOME" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Matej Urbančič " -#: ../src/bjb-app-menu.c:154 -msgid "External Notes" -msgstr "Zunanja sporočilca" - -#: ../src/bjb-app-menu.c:169 -msgid "Click on the external notes to import" -msgstr "Kliknite na zunanja sporočilca za uvoz v program." - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Izbor barve za sporočilce" +msgid "Note Color" +msgstr "Barva sporočilca" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Izreži" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopiraj" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Prilepi" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Krepko" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Ležeče" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Prečrtano" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "Povezava" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Kopiraj izbor v novo sporočilce" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Ni najdenih sporočilc" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Zbirka sporočilc je prazna.\n" +"S klikom na gumb Novo sporočilce, lahko ustvarite prvo." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Ni najdenih rezultatov za to iskanje." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ops, napaka" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Namestiti je treba program 'tracker' in program bijiben znova zagnati." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Mesto po meri" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Uvozi sporočilca" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Prekliči" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Uvozi" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Izbor mesta uvoza" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Program Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Program Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Naloži več" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Nalaganje ..." -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "S klikom se predmet izbere" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" @@ -104,93 +167,144 @@ msgstr[2] "%d izbrani" msgstr[3] "%d izbrane" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Iskanje naslovov in vsebine sporočilc in zbirk" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Prekliči" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Končan izbirni način" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Rezultati za %s" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Novo in nedavno" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Novo" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "Vnos imena nove oznake" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "Nova oznaka" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Izbirni način" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Poglej sporočilca in zbirke kot seznam" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Poglej sporočilca in zbirke na mreži" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Preimenuj sporočilce" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Razveljavi" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Ponovi" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Vrstične oznake" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "Seznam" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Oštevilčen seznam" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Preimenuj" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "Oznake" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Zbirke" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Izbriši to sporočilce" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Barva sporočilca" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Objavi sporočilce" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Več podrobnosti ..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Vnos imena za novo zbirko" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nova zbirka" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Zapri" + #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:505 -msgid "Last updated " +#: ../src/bjb-note-view.c:229 +msgid "Last updated" msgstr "Zadnjič posodobljeno" -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "Oznaka" +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_V redu" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Izbriši" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Možnosti" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Dodaj v zbirko" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Pisava sporočilca" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Privzeta barva" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Izdaja opombe" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Osnovni imenik stikov" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Danes" @@ -215,20 +329,23 @@ msgid "Unknown" msgstr "Neznano" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Krajevna shramba" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Novo okno" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Zunanja sporočilca" +msgid "_Import Notes" +msgstr "_Uvozi sporočilca" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Možnosti" #: ../src/resources/app-menu.ui.h:4 -#| msgid "_About Bijiben" msgid "_About Notes" msgstr "_O programu" @@ -242,3 +359,42 @@ #~ msgid "Bijiben" #~ msgstr "Bijiben" + +#~ msgid "Done" +#~ msgstr "Končano" + +#~ msgid "Preferences" +#~ msgstr "Možnosti" + +#~ msgid "_About Bijiben" +#~ msgstr "_O programu" + +#~ msgid "Import notes from:" +#~ msgstr "Uvozi sporočilca iz:" + +#~ msgid "External Notes" +#~ msgstr "Zunanja sporočilca" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Kliknite na zunanja sporočilca za uvoz v program." + +#~ msgid "Choose a color for note" +#~ msgstr "Izbor barve za sporočilce" + +#~ msgid "Link" +#~ msgstr "Povezava" + +#~ msgid "New tag" +#~ msgstr "Nova oznaka" + +#~ msgid "List" +#~ msgstr "Seznam" + +#~ msgid "Tags" +#~ msgstr "Oznake" + +#~ msgid "Tag" +#~ msgstr "Oznaka" + +#~ msgid "_External Notes" +#~ msgstr "_Zunanja sporočilca" diff -Nru bijiben-3.8.4/po/sr@latin.po bijiben-3.10.2/po/sr@latin.po --- bijiben-3.8.4/po/sr@latin.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/sr@latin.po 2013-09-26 20:05:59.000000000 +0000 @@ -7,8 +7,8 @@ "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijibe" "n&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-01-27 23:12+0000\n" -"PO-Revision-Date: 2013-02-19 20:53+0200\n" +"POT-Creation-Date: 2013-09-04 01:37+0000\n" +"PO-Revision-Date: 2013-09-08 14:38+0200\n" "Last-Translator: Miroslav Nikolić \n" "Language-Team: Serbian \n" "Language: sr\n" @@ -19,9 +19,22 @@ "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Project-Style: gnome\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bižiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Beleške je uređivač koji omogućava stvaranje jednostavnih spiskova za kasniju " +"upotrebu." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Omogućava korišćenje Vlastitog oblaka kao mesto skladištenja i uređivača na " +"mreži." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Beleške" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,68 +48,119 @@ msgid "Note-taker" msgstr "Hvatač beleški" -#: ../src/bjb-app-menu.c:35 -#| msgid "Simple noteboook for GNOME" +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Jednostavna beležnica za Gnom" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" " Miroslav Nikolić\n" "\n" " http://prevod.org — prevod na srpski jezik" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Spoljne beleške" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Kliknite na spoljne beleške da ih uvezete" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Izaberite boju za belešku" +msgid "Note Color" +msgstr "Boja beleške" #. Cut -#: ../src/bjb-editor-toolbar.c:149 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Iseci" #. Copy -#: ../src/bjb-editor-toolbar.c:156 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Umnoži" #. 'n paste -#: ../src/bjb-editor-toolbar.c:163 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Ubaci" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Podebljano" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Iskošeno" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Precrtano" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Veza" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Umnoži izbor u novu belešku" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Nisam pronašao beleške" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Vaša zbirka beleški je prazna.\n" +"Kliknite na dugme „Nova“ da napravite vašu prvu belešku." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Nema rezultata za ovu pretragu." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Ups" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Instalirajte „Tragača“ zatim ponovo pokrenite program." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Proizvoljna putanja" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Uvezite beleške" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Otkaži" + +#: ../src/bjb-import-dialog.c:410 +#| msgid "Import Notes" +msgid "Import" +msgstr "Uvezi" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Izaberite putanju za uvoz" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomičine beleške" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnomove beleške" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Učitaj još" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Učitavam..." -#: ../src/bjb-main-toolbar.c:179 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Kliknite na stavke da ih izaberete" -#: ../src/bjb-main-toolbar.c:181 +#: ../src/bjb-main-toolbar.c:140 #, c-format -#| msgid "%d selected" msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d je izabrana" @@ -104,98 +168,147 @@ msgstr[2] "%d je izabrano" msgstr[3] "Izabranih — %d" -#: ../src/bjb-main-toolbar.c:220 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Tražite naslove, sadržaj i zbirke beleški" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Otkaži" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Izađite iz režima izbora" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Rezultati za „%s“" -#: ../src/bjb-main-toolbar.c:223 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Nove i skorašnje" -#: ../src/bjb-main-toolbar.c:243 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Nova" -#: ../src/bjb-note-tag-dialog.c:267 -msgid "Enter a name to create a tag" -msgstr "Unesite naziv da napravite oznaku" - -#: ../src/bjb-note-tag-dialog.c:277 -msgid "New tag" -msgstr "Nova oznaka" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Režim izbora" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Prikaži beleške i zbirke kao spisak" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Prikaži beleške i zbirke kao ikonice" -#: ../src/bjb-note-view.c:202 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Preimenuj belešku" #. Undo Redo separator -#: ../src/bjb-note-view.c:257 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Opozovi" -#: ../src/bjb-note-view.c:265 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Povrati" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:279 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Tačkasti spisak" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:286 -msgid "List" -msgstr "Spisak" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Brojni spisak" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:297 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Preimenuj" -#: ../src/bjb-note-view.c:303 -msgid "Tags" -msgstr "Naznake" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Zbirke" #. Delete Note -#: ../src/bjb-note-view.c:314 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Obriši ovu belešku" -#. Button to go back to main view -#: ../src/bjb-note-view.c:381 -msgid "Notes" -msgstr "Beleške" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Boja beleške" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Delite belešku" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Još opcija…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Unesite naziv da napravite zbirku" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Nova zbirka" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Zatvori" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:482 -msgid "Last updated " -msgstr "Poslednje ažuriranje" - -#: ../src/bjb-selection-toolbar.c:177 -msgid "Tag" -msgstr "Naznaka" +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" +msgstr "Poslednje ažuriranje " + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "U _redu" -#: ../src/bjb-selection-toolbar.c:201 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Obriši" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Postavke" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +#| msgid "Edit collections" +msgid "Add to Collection" +msgstr "Dodaj u zbirku" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Slovni lik beleške" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Osnovna boja" +#: ../src/bjb-settings-dialog.c:437 +#| msgid "Note Font" +msgid "Note Edition" +msgstr "Uređivanje beleške" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Osnovna knjiga" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Danas" @@ -220,21 +333,26 @@ msgid "Unknown" msgstr "Nepoznato" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Mesno skladište" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Novi prozor" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Spoljne beleške" +msgid "_Import Notes" +msgstr "_Uvezi beleške" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Postavke" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_O Bižibenu" +#| msgid "_Import Notes" +msgid "_About Notes" +msgstr "_O Beleškama" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" diff -Nru bijiben-3.8.4/po/sr.po bijiben-3.10.2/po/sr.po --- bijiben-3.8.4/po/sr.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/sr.po 2013-09-26 20:05:59.000000000 +0000 @@ -7,8 +7,8 @@ "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=bijibe" "n&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-01-27 23:12+0000\n" -"PO-Revision-Date: 2013-02-19 20:53+0200\n" +"POT-Creation-Date: 2013-09-04 01:37+0000\n" +"PO-Revision-Date: 2013-09-08 14:38+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" "Language: sr\n" @@ -19,9 +19,22 @@ "n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Project-Style: gnome\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Бижибен" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Белешке је уређивач који омогућава стварање једноставних спискова за каснију " +"употребу." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Омогућава коришћење Властитог облака као место складиштења и уређивача на " +"мрежи." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Белешке" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,68 +48,119 @@ msgid "Note-taker" msgstr "Хватач белешки" -#: ../src/bjb-app-menu.c:35 -#| msgid "Simple noteboook for GNOME" +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "Једноставна бележница за Гном" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "" " Мирослав Николић\n" "\n" " http://prevod.org — превод на српски језик" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "Спољне белешке" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "Кликните на спољне белешке да их увезете" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "Изаберите боју за белешку" +msgid "Note Color" +msgstr "Боја белешке" #. Cut -#: ../src/bjb-editor-toolbar.c:149 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Исеци" #. Copy -#: ../src/bjb-editor-toolbar.c:156 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Умножи" #. 'n paste -#: ../src/bjb-editor-toolbar.c:163 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Убаци" -#: ../src/bjb-editor-toolbar.c:174 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Подебљано" -#: ../src/bjb-editor-toolbar.c:185 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "Искошено" -#: ../src/bjb-editor-toolbar.c:196 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Прецртано" -#: ../src/bjb-editor-toolbar.c:225 -msgid "Link" -msgstr "Веза" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Умножи избор у нову белешку" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Нисам пронашао белешке" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Ваша збирка белешки је празна.\n" +"Кликните на дугме „Нова“ да направите вашу прву белешку." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Нема резултата за ову претрагу." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Упс" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Инсталирајте „Трагача“ затим поново покрените програм." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Произвољна путања" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Увезите белешке" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Откажи" + +#: ../src/bjb-import-dialog.c:410 +#| msgid "Import Notes" +msgid "Import" +msgstr "Увези" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Изаберите путању за увоз" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Томичине белешке" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Гномове белешке" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Учитај још" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Учитавам..." -#: ../src/bjb-main-toolbar.c:179 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Кликните на ставке да их изаберете" -#: ../src/bjb-main-toolbar.c:181 +#: ../src/bjb-main-toolbar.c:140 #, c-format -#| msgid "%d selected" msgid "%d selected" msgid_plural "%d selected" msgstr[0] "%d је изабрана" @@ -104,98 +168,147 @@ msgstr[2] "%d је изабрано" msgstr[3] "Изабраних — %d" -#: ../src/bjb-main-toolbar.c:220 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Тражите наслове, садржај и збирке белешки" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Откажи" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Изађите из режима избора" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "Резултати за „%s“" -#: ../src/bjb-main-toolbar.c:223 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "Нове и скорашње" -#: ../src/bjb-main-toolbar.c:243 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "Нова" -#: ../src/bjb-note-tag-dialog.c:267 -msgid "Enter a name to create a tag" -msgstr "Унесите назив да направите ознаку" - -#: ../src/bjb-note-tag-dialog.c:277 -msgid "New tag" -msgstr "Нова ознака" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Режим избора" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Прикажи белешке и збирке као списак" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Прикажи белешке и збирке као иконице" -#: ../src/bjb-note-view.c:202 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "Преименуј белешку" #. Undo Redo separator -#: ../src/bjb-note-view.c:257 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "Опозови" -#: ../src/bjb-note-view.c:265 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "Поврати" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:279 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "Тачкасти списак" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:286 -msgid "List" -msgstr "Списак" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Бројни списак" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:297 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "Преименуј" -#: ../src/bjb-note-view.c:303 -msgid "Tags" -msgstr "Назнаке" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Збирке" #. Delete Note -#: ../src/bjb-note-view.c:314 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "Обриши ову белешку" -#. Button to go back to main view -#: ../src/bjb-note-view.c:381 -msgid "Notes" -msgstr "Белешке" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Боја белешке" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Делите белешку" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Још опција…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Унесите назив да направите збирку" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Нова збирка" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Затвори" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:482 -msgid "Last updated " -msgstr "Последње ажурирање" - -#: ../src/bjb-selection-toolbar.c:177 -msgid "Tag" -msgstr "Назнака" +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" +msgstr "Последње ажурирање " + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "У _реду" -#: ../src/bjb-selection-toolbar.c:201 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Обриши" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Поставке" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +#| msgid "Edit collections" +msgid "Add to Collection" +msgstr "Додај у збирку" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Словни лик белешке" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Основна боја" +#: ../src/bjb-settings-dialog.c:437 +#| msgid "Note Font" +msgid "Note Edition" +msgstr "Уређивање белешке" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Основна књига" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Данас" @@ -220,21 +333,26 @@ msgid "Unknown" msgstr "Непознато" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Месно складиште" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "_Нови прозор" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "_Спољне белешке" +msgid "_Import Notes" +msgstr "_Увези белешке" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Поставке" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_О Бижибену" +#| msgid "_Import Notes" +msgid "_About Notes" +msgstr "_О Белешкама" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" diff -Nru bijiben-3.8.4/po/tg.po bijiben-3.10.2/po/tg.po --- bijiben-3.8.4/po/tg.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/tg.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,359 @@ +# Tajik translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Victor Ibragimov , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=bijiben&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-18 20:31+0000\n" +"PO-Revision-Date: 2013-09-19 11:54+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.7\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Ёддоштҳо - барномаи оддиест, ки барои эҷоди рӯйхати оддии ёддоштҳо имкон " +"медиҳад." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"Ин барнома имкон медиҳад, ки тавонед ownCloud-ро ҳамчун захирагоҳ ва " +"муҳаррири онлайн истифода баред." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Ёддоштҳо" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "ёддоштҳо;ёдрас;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Ёддоштҳоро фиристонед, файлҳоро барчасп кунед!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Ёддоштнавис" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Дафтари ёддоштҳои оддӣ барои GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "Victor Ibragimov" + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Ранги ёддошт" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Буридан" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Нусха бардоштан" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Гузоштан" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Ғафс" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Хам" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Кур" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Нусха бардоштани интихоб ба ёддошти нав" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Ягон ёддошт ёфт нашуд" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Маҷмӯи ёддоштҳои шумо холӣ аст.\n" +"Барои эҷод кардани ёддошти аввалини худ тугмаи \"Нав\"-ро зер кунед." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Барои ин пажӯҳиш ягон натиҷа ёфт нашуд." + +#: ../src/bjb-empty-results-box.c:161 +#| msgid "Oops, " +msgid "Oops" +msgstr "Эҳеее" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "" +"Лутфан, барномаи 'Tracker'-ро насб кунед ва баъд барномаро бозоғозӣ кунед." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Ҷойгиршавии фармоишӣ" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Ворид кардани ёддоштҳо" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Воридот" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Интихоби ҷойгиршавии воридот" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Барномаи Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Барномаи Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Бештар бор кардан" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Бор шуда истодааст..." + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Барои интихоби объект онро зер кунед" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d интихобшуда" +msgstr[1] "%d интихобшуда" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Ҷустуҷӯи сарлавҳаҳои ёддоштҳо, мӯҳтаво ва маҷмӯҳо" + +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "Бекор кардан" + +#: ../src/bjb-main-toolbar.c:313 +msgid "Exit selection mode" +msgstr "Хуруҷи ҳолати интихоб" + +#: ../src/bjb-main-toolbar.c:343 +#, c-format +msgid "Results for %s" +msgstr "Натиҷаҳои %s" + +#: ../src/bjb-main-toolbar.c:346 +msgid "New and Recent" +msgstr "Нав ва охирин" + +#: ../src/bjb-main-toolbar.c:411 +msgid "New" +msgstr "Нав" + +#: ../src/bjb-main-toolbar.c:429 +msgid "Selection mode" +msgstr "Ҳолати интихоб" + +#: ../src/bjb-main-toolbar.c:463 +msgid "View notes and collections in a list" +msgstr "Намоиш додани ёддоштҳо ва маҷмӯҳо дар рӯйхат" + +#: ../src/bjb-main-toolbar.c:487 +msgid "View notes and collections in a grid" +msgstr "Намоиш додани ёддоштҳо ва маҷмӯҳо дар тӯр" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:615 +msgid "Undo" +msgstr "Ботил сохтан" + +#: ../src/bjb-main-toolbar.c:623 +msgid "Redo" +msgstr "Дубора анҷом додан" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:638 +msgid "Bullets" +msgstr "Нишонҳо" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:645 +msgid "Numbered List" +msgstr "Рӯйхати рақамдор" + +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Маҷмӯҳо" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:667 +msgid "Delete this Note" +msgstr "Нест кардани ин ёддошт" + +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "Ранги ёддошт" + +#: ../src/bjb-main-toolbar.c:758 +msgid "Share note" +msgstr "Мубодила кардани ёддошт" + +#: ../src/bjb-main-toolbar.c:779 +msgid "More options…" +msgstr "Имконоти бештар..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Номеро барои эҷод кардани маҷмӯъ ворид кунед" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Маҷмӯи нав" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Пӯшидан" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +#| msgid "Last updated " +msgid "Last updated" +msgstr "Навсозии охирин" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_OK" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Нест кардан" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Илова кардан ба маҷмӯъ" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Шрифти ёддошт" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Ранги пешфарз" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Тавзеҳи нашр" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Китоби асосӣ" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Имрӯз" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Дирӯз" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "Ин ҳафта" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "Ин моҳ" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "Ин сол" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Номаълум" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Захирагоҳи маҳаллӣ" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "_Равзанаи нав" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Вори кардани ёддоштҳо" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Хусусиятҳо" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "_Дар бораи Ёддоштҳо" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Кӯмак" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "_Хуруҷ" + +#~ msgid "Rename Note" +#~ msgstr "Иваз кардани номи тавзеҳ" + +#~ msgid "Rename" +#~ msgstr "Иваз кардани ном" + +#~ msgid "Done" +#~ msgstr "Тайёр" + +#~ msgid "Preferences" +#~ msgstr "Бартариҳо" diff -Nru bijiben-3.8.4/po/tr.po bijiben-3.10.2/po/tr.po --- bijiben-3.8.4/po/tr.po 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/po/tr.po 2013-10-13 20:43:15.000000000 +0000 @@ -3,16 +3,18 @@ # This file is distributed under the same license as the bijiben package. # adamc , 2013. # Muhammet Kara , 2013. +# Osman Karagöz , 2013. +# Gökhan Gurbetoğlu , 2013. # msgid "" msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-05-19 00:11+0000\n" -"PO-Revision-Date: 2013-05-18 00:38+0300\n" -"Last-Translator: Muhammet Kara \n" -"Language-Team: Turkish \n" +"POT-Creation-Date: 2013-09-27 20:54+0000\n" +"PO-Revision-Date: 2013-09-28 21:23+0300\n" +"Last-Translator: Gökhan Gurbetoğlu \n" +"Language-Team: Türkçe \n" "Language: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,28 +22,40 @@ "X-Generator: Gtranslator 2.91.6\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:35 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "" +"Notlar, sonradan kullanmak üzere basit listeler oluşturmaya izin veren bir " +"düzenleyicidir." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "" +"ownCloud'u bir depolama konumu ve çevrimiçi düzenleyici olarak kullanmaya " +"izin verir." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Notlar" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" msgstr "notlar;hatırlatma;" #: ../data/bijiben.desktop.in.in.h:3 -#, fuzzy msgid "Post notes, tag files!" -msgstr "Notlar bırak, dosyalar etiketle!" +msgstr "Not bırak, dosyaları etiketle!" #: ../data/bijiben.desktop.in.in.h:4 msgid "Note-taker" msgstr "Not-tutucu" -#: ../src/bjb-app-menu.c:36 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "GNOME için basit not defteri" -#: ../src/bjb-app-menu.c:40 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Osman Karagöz " @@ -50,182 +64,184 @@ msgstr "Not Rengi" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "Kes" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "Kopyala" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "Yapıştır" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "Kalın" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "İtalik" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "Üstü Çizili" -#: ../src/bjb-editor-toolbar.c:225 +#: ../src/bjb-editor-toolbar.c:450 msgid "Copy selection to a new note" -msgstr "" +msgstr "Seçimi yeni bir nota kopyala" -#: ../src/bjb-empty-results-box.c:97 +#: ../src/bjb-empty-results-box.c:100 msgid "No Notes Found" msgstr "Not Bulunamadı" -#: ../src/bjb-empty-results-box.c:133 +#: ../src/bjb-empty-results-box.c:144 msgid "" "Your notes collection is empty.\n" "Click the New button to create your first note." msgstr "" +"Not koleksiyonunuz boş.\n" +"İlk notunuzu oluşturmak için Yeni düğmesine tıklayın." -#: ../src/bjb-empty-results-box.c:140 +#: ../src/bjb-empty-results-box.c:150 msgid "No result found for this research." -msgstr "" +msgstr "Bu araştırma için bir sonuç bulunamadı." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Aman" -#: ../src/bjb-import-dialog.c:305 +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Lütfen 'Tracker' kurup uygulamayı tekrar başlatın." + +#: ../src/bjb-import-dialog.c:310 msgid "Custom Location" -msgstr "" +msgstr "Özel Konum" -#: ../src/bjb-import-dialog.c:400 +#: ../src/bjb-import-dialog.c:405 msgid "Import Notes" -msgstr "" +msgstr "Notları İçe Aktar" -#: ../src/bjb-import-dialog.c:405 +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_İptal" + +#: ../src/bjb-import-dialog.c:410 msgid "Import" -msgstr "" +msgstr "İçe Aktar" -#: ../src/bjb-import-dialog.c:416 +#: ../src/bjb-import-dialog.c:421 msgid "Select import location" -msgstr "" +msgstr "İçe aktarma konumunu seçin" -#: ../src/bjb-import-dialog.c:436 +#: ../src/bjb-import-dialog.c:441 msgid "Tomboy application" -msgstr "" +msgstr "Tomboy uygulaması" -#: ../src/bjb-import-dialog.c:442 +#: ../src/bjb-import-dialog.c:447 msgid "Gnote application" -msgstr "" +msgstr "Gnote uygulaması" -#: ../src/bjb-load-more-button.c:68 ../src/bjb-load-more-button.c:154 +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 msgid "Load More" -msgstr "" +msgstr "Daha Fazla" -#: ../src/bjb-load-more-button.c:83 +#: ../src/bjb-load-more-button.c:82 msgid "Loading..." -msgstr "" +msgstr "Yükleniyor..." -#: ../src/bjb-main-toolbar.c:116 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "Öğeleri seçmek için tıklayın" -#: ../src/bjb-main-toolbar.c:118 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" -msgstr[0] "%d seçilen" +msgstr[0] "%d adet seçildi" -#: ../src/bjb-main-toolbar.c:232 +#: ../src/bjb-main-toolbar.c:260 msgid "Search note titles, content and collections" -msgstr "" +msgstr "Not başlığı, içerik ve koleksiyonlarda ara" -#: ../src/bjb-main-toolbar.c:269 -msgid "Done" -msgstr "" +#. Select +#: ../src/bjb-main-toolbar.c:302 +msgid "Cancel" +msgstr "İptal" -#: ../src/bjb-main-toolbar.c:270 +#: ../src/bjb-main-toolbar.c:313 msgid "Exit selection mode" -msgstr "" +msgstr "Seçim kipinden çık" -#: ../src/bjb-main-toolbar.c:302 +#: ../src/bjb-main-toolbar.c:343 #, c-format msgid "Results for %s" msgstr "%s için sonuçlar" -#: ../src/bjb-main-toolbar.c:305 +#: ../src/bjb-main-toolbar.c:346 msgid "New and Recent" msgstr "Yeni ve En Son" -#: ../src/bjb-main-toolbar.c:367 +#: ../src/bjb-main-toolbar.c:411 msgid "New" msgstr "Yeni" -#: ../src/bjb-main-toolbar.c:388 +#: ../src/bjb-main-toolbar.c:429 msgid "Selection mode" -msgstr "" +msgstr "Seçim Kipi" -#: ../src/bjb-main-toolbar.c:409 +#: ../src/bjb-main-toolbar.c:463 msgid "View notes and collections in a list" -msgstr "" +msgstr "Notları ve koleksiyonları liste olarak göster" -#: ../src/bjb-main-toolbar.c:429 +#: ../src/bjb-main-toolbar.c:487 msgid "View notes and collections in a grid" -msgstr "" - -#: ../src/bjb-main-toolbar.c:565 -msgid "Rename Note" -msgstr "Notu Yeniden Adlandır" +msgstr "Notları ve koleksiyonları tablo olarak göster" #. Undo Redo separator -#: ../src/bjb-main-toolbar.c:586 +#: ../src/bjb-main-toolbar.c:615 msgid "Undo" msgstr "Geri Al" -#: ../src/bjb-main-toolbar.c:594 +#: ../src/bjb-main-toolbar.c:623 msgid "Redo" msgstr "Yinele" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-main-toolbar.c:608 +#: ../src/bjb-main-toolbar.c:638 msgid "Bullets" msgstr "Madde İşaretleri" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-main-toolbar.c:615 +#: ../src/bjb-main-toolbar.c:645 msgid "Numbered List" -msgstr "" +msgstr "Numaralı Liste" -#. Rename, view tags, separtor -#: ../src/bjb-main-toolbar.c:626 -msgid "Rename" -msgstr "Yeniden Adlandır" - -#: ../src/bjb-main-toolbar.c:632 ../src/bjb-note-tag-dialog.c:370 +#: ../src/bjb-main-toolbar.c:659 ../src/bjb-note-tag-dialog.c:370 msgid "Collections" -msgstr "" +msgstr "Koleksiyonlar" #. Delete Note -#: ../src/bjb-main-toolbar.c:643 +#: ../src/bjb-main-toolbar.c:667 msgid "Delete this Note" msgstr "Bu Notu Sil" -#: ../src/bjb-main-toolbar.c:677 -msgid "Notes" -msgstr "Notlar" - -#: ../src/bjb-main-toolbar.c:707 ../src/bjb-selection-toolbar.c:162 +#: ../src/bjb-main-toolbar.c:731 ../src/bjb-selection-toolbar.c:252 msgid "Note color" msgstr "Not rengi" -#: ../src/bjb-main-toolbar.c:723 +#: ../src/bjb-main-toolbar.c:758 msgid "Share note" -msgstr "" +msgstr "Notu paylaş" -#: ../src/bjb-main-toolbar.c:740 +#: ../src/bjb-main-toolbar.c:779 msgid "More options…" -msgstr "" +msgstr "Diğer seçenekler…" #: ../src/bjb-note-tag-dialog.c:399 msgid "Enter a name to create a collection" @@ -233,36 +249,50 @@ #: ../src/bjb-note-tag-dialog.c:409 msgid "New collection" -msgstr "" +msgstr "Yeni koleksiyon" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Kapat" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:231 -msgid "Last updated " +#: ../src/bjb-note-view.c:229 +msgid "Last updated" msgstr "Son güncelleme" -#: ../src/bjb-selection-toolbar.c:155 +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Tamam" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "Sil" -#: ../src/bjb-selection-toolbar.c:182 -msgid "Edit collections" -msgstr "" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "Koleksiyonlara Ekle" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "Tercihler" - -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "Not Yazıtipi" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "Öntanımlı Renk" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Not Sürümü" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Birincil Kitap" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "Bugün" @@ -287,21 +317,25 @@ msgid "Unknown" msgstr "Bilinmeyen" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Yerel depolama" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" -msgstr "_Yeni Pencere" +msgstr "Yeni _Pencere" #: ../src/resources/app-menu.ui.h:2 msgid "_Import Notes" -msgstr "" +msgstr "Notları _İçe Aktar" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "_Tercihler" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "_Bijiben Hakkında" +msgid "_About Notes" +msgstr "_Notlar Hakkında" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -311,6 +345,21 @@ msgid "_Quit" msgstr "_Çıkış" +#~ msgid "Done" +#~ msgstr "Tamam" + +#~ msgid "Rename Note" +#~ msgstr "Notu Yeniden Adlandır" + +#~ msgid "Rename" +#~ msgstr "Yeniden Adlandır" + +#~ msgid "Preferences" +#~ msgstr "Tercihler" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + #~ msgid "External Notes" #~ msgstr "Dış Notlar" diff -Nru bijiben-3.8.4/po/uk.po bijiben-3.10.2/po/uk.po --- bijiben-3.8.4/po/uk.po 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/po/uk.po 2013-09-26 20:05:59.000000000 +0000 @@ -0,0 +1,386 @@ +# Ukrainian translation for bijiben. +# Copyright (C) 2013 bijiben's COPYRIGHT HOLDER +# This file is distributed under the same license as the bijiben package. +# Mykola Tkach , 2013. +# Daniel Korostil , 2013. +msgid "" +msgstr "" +"Project-Id-Version: bijiben master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-08-31 14:52+0300\n" +"PO-Revision-Date: 2013-08-31 15:04+0300\n" +"Last-Translator: Daniel Korostil \n" +"Language-Team: linux.org.ua\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Примітки — редактор, який дозволяє робити прості списки на майбутнє." + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "Можна використовувати ownCloud як місце зберігання та редагування." + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "Примітки" + +#: ../data/bijiben.desktop.in.in.h:2 +msgid "notes;reminder;" +msgstr "примітки;нагадування;" + +#: ../data/bijiben.desktop.in.in.h:3 +msgid "Post notes, tag files!" +msgstr "Створюйте примітки, залишай мітки на файлах!" + +#: ../data/bijiben.desktop.in.in.h:4 +msgid "Note-taker" +msgstr "Електронна ручка" + +#: ../src/bjb-app-menu.c:46 +msgid "Simple notebook for GNOME" +msgstr "Проста записна книжка середовища GNOME" + +#: ../src/bjb-app-menu.c:52 +msgid "translator-credits" +msgstr "" +"Микола Ткач , 2013.\n" +"Daniel Korostil " + +#: ../src/bjb-color-button.c:146 +msgid "Note Color" +msgstr "Колір примітки" + +#. Cut +#: ../src/bjb-editor-toolbar.c:367 +msgid "Cut" +msgstr "Вирізати" + +#. Copy +#: ../src/bjb-editor-toolbar.c:374 +msgid "Copy" +msgstr "Копіювати" + +#. 'n paste +#: ../src/bjb-editor-toolbar.c:381 +msgid "Paste" +msgstr "Вставити" + +#: ../src/bjb-editor-toolbar.c:396 +msgid "Bold" +msgstr "Напівжирний" + +#: ../src/bjb-editor-toolbar.c:407 +msgid "Italic" +msgstr "Курсив" + +#: ../src/bjb-editor-toolbar.c:418 +msgid "Strike" +msgstr "Підкреслений" + +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "Скопіювати вибране в нову примітку" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "Не знайдено жодної примітки" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"Ваша збірка приміток порожня.\n" +"Натисніть «Створити», щоб одержати першу вашу примітку." + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "Жодного результату не знайдено для цього дослідження." + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "Отакої" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "Установіть «Tracker» і перезапустіть програму." + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "Інша адреса" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "Імпортувати примітки" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "_Скасувати" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "Імпортувати" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "Вибрати адресу імпортування" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "Завантажити ще" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "Завантаження…" + +#: ../src/bjb-main-toolbar.c:138 +msgid "Click on items to select them" +msgstr "Щоб вибрати елементи, натисніть на них" + +#: ../src/bjb-main-toolbar.c:140 +#, c-format +msgid "%d selected" +msgid_plural "%d selected" +msgstr[0] "%d вибрано" +msgstr[1] "%d вибрано" +msgstr[2] "%d вибрано" + +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "Пошук заголовків, вмісту й збірок приміток" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "Скасувати" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "Вийти з режиму вибирання" + +#: ../src/bjb-main-toolbar.c:335 +#, c-format +msgid "Results for %s" +msgstr "Результати для %s" + +#: ../src/bjb-main-toolbar.c:338 +msgid "New and Recent" +msgstr "Нові та нещодавні" + +#: ../src/bjb-main-toolbar.c:402 +msgid "New" +msgstr "Створити" + +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "Режим вибирання" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "Переглядати примітки і збірки у списку" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "Переглядати примітки і збірки у ґратках" + +#: ../src/bjb-main-toolbar.c:601 +msgid "Rename Note" +msgstr "Перейменувати примітку" + +#. Undo Redo separator +#: ../src/bjb-main-toolbar.c:622 +msgid "Undo" +msgstr "Повернути" + +#: ../src/bjb-main-toolbar.c:630 +msgid "Redo" +msgstr "Повторити" + +#. Bullets, ordered list, separator +#. Bullets : unordered list format +#: ../src/bjb-main-toolbar.c:645 +msgid "Bullets" +msgstr "Тип сортування" + +#. Ordered list as 1.mouse 2.cats 3.dogs +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "Пронумерований список" + +#. Rename, view tags, separtor +#: ../src/bjb-main-toolbar.c:664 +msgid "Rename" +msgstr "Перейменувати" + +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "Збірки" + +#. Delete Note +#: ../src/bjb-main-toolbar.c:684 +msgid "Delete this Note" +msgstr "Вилучити цю примітку" + +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:251 +msgid "Note color" +msgstr "Колір примітки" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "Оприлюднити примітку" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "Більше параметрів…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "Уведіть назву, щоб створити збірку" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "Створити збірку" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "_Закрити" + +#. "Last updated" precedes the note last updated date +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "Востаннє оновлено" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "_Гаразд" + +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 +msgid "Delete" +msgstr "Вилучити" + +#. Notes tags +#: ../src/bjb-selection-toolbar.c:256 +msgid "Add to Collection" +msgstr "Додати до збірки" + +#. Default font +#: ../src/bjb-settings-dialog.c:350 +msgid "Note Font" +msgstr "Шрифт приміток" + +#. Default color +#: ../src/bjb-settings-dialog.c:361 +msgid "Default Color" +msgstr "Типовий колір" + +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "Редакція приміток" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "Первинна книга" + +#: ../src/libbiji/biji-date-time.c:32 +msgid "Today" +msgstr "Сьогодні" + +#: ../src/libbiji/biji-date-time.c:35 +msgid "Yesterday" +msgstr "Учора" + +#: ../src/libbiji/biji-date-time.c:38 +msgid "This week" +msgstr "На цьому тижні" + +#: ../src/libbiji/biji-date-time.c:41 +msgid "This month" +msgstr "У цьому місяці" + +#: ../src/libbiji/biji-date-time.c:44 +msgid "This year" +msgstr "У цьому році" + +#: ../src/libbiji/biji-date-time.c:46 +msgid "Unknown" +msgstr "Невідомо" + +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "Локальне сховище" + +#: ../src/resources/app-menu.ui.h:1 +msgid "_New Window" +msgstr "С_творити вікно" + +#: ../src/resources/app-menu.ui.h:2 +msgid "_Import Notes" +msgstr "_Імпортувати примітки" + +#: ../src/resources/app-menu.ui.h:3 +msgid "_Preferences" +msgstr "_Параметри" + +#: ../src/resources/app-menu.ui.h:4 +msgid "_About Notes" +msgstr "П_ро програму" + +#: ../src/resources/app-menu.ui.h:5 +msgid "_Help" +msgstr "_Довідка" + +#: ../src/resources/app-menu.ui.h:6 +msgid "_Quit" +msgstr "Ви_йти" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "Зовнішні примітки" + +#~ msgid "Click on the external notes to import" +#~ msgstr "Натисніть на зовнішні примітки зі списку, щоб їх імпортувати" + +#~ msgid "Choose a color for note" +#~ msgstr "Виберіть колір примітки" + +#~ msgid "Link" +#~ msgstr "Посилання" + +#~ msgid "New tag" +#~ msgstr "Створити мітку" + +#~ msgid "List" +#~ msgstr "Список" + +#~ msgid "Tags" +#~ msgstr "Мітки" + +#~ msgid "Tag" +#~ msgstr "Мітка" + +#~ msgid "Preferences" +#~ msgstr "Параметри" + +#~ msgid "_External Notes" +#~ msgstr "_Зовнішні примітки" diff -Nru bijiben-3.8.4/po/zh_CN.po bijiben-3.10.2/po/zh_CN.po --- bijiben-3.8.4/po/zh_CN.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/zh_CN.po 2013-11-11 20:52:06.000000000 +0000 @@ -8,8 +8,8 @@ "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=bijiben&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-03-27 00:44+0000\n" -"PO-Revision-Date: 2013-02-17 21:12+0800\n" +"POT-Creation-Date: 2013-07-29 20:43+0000\n" +"PO-Revision-Date: 2013-07-28 12:53+0800\n" "Last-Translator: tuhaihe <1132321739qq@gmail.com>\n" "Language-Team: Chinese (China) \n" "Language: zh_CN\n" @@ -19,9 +19,11 @@ "X-Generator: Poedit 1.5.4\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:35 ../src/bjb-main-toolbar.c:426 +#: ../src/bjb-main-toolbar.c:773 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "便笺" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -35,145 +37,239 @@ msgid "Note-taker" msgstr "便笺记录工具" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:36 msgid "Simple notebook for GNOME" msgstr "GNOME 下简易的便笺本" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:40 msgid "translator-credits" msgstr "tuhaihe <1132321739qq@gmail.com>, 2013" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "外部便笺" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "点击外部便笺以导入" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "选择便笺颜色" +msgid "Note Color" +msgstr "便笺颜色" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:363 msgid "Cut" msgstr "剪切" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:370 msgid "Copy" msgstr "复制" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:377 msgid "Paste" msgstr "粘贴" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:392 msgid "Bold" msgstr "粗体" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:403 msgid "Italic" msgstr "斜体" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:414 msgid "Strike" msgstr "删除线" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "链接" +#: ../src/bjb-editor-toolbar.c:446 +msgid "Copy selection to a new note" +msgstr "将选中区域复制到新便笺" + +#: ../src/bjb-empty-results-box.c:102 +msgid "No Notes Found" +msgstr "未发现便笺" + +#: ../src/bjb-empty-results-box.c:142 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"您的便笺合集为空。\n" +"点击新建按钮来创建您的第一个便笺吧。" + +#: ../src/bjb-empty-results-box.c:148 +msgid "No result found for this research." +msgstr "此次搜索未找到结果。" + +#: ../src/bjb-empty-results-box.c:160 +msgid "Oops, " +msgstr "哎呀," + +#: ../src/bjb-empty-results-box.c:168 +msgid "Please install 'Tracker' then restart the application." +msgstr "请先安装“Tracker”然后重新打开本应用程序。" + +#: ../src/bjb-import-dialog.c:309 +msgid "Custom Location" +msgstr "自定义位置" + +#: ../src/bjb-import-dialog.c:404 +msgid "Import Notes" +msgstr "导入便笺" + +#: ../src/bjb-import-dialog.c:407 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../src/bjb-import-dialog.c:409 +msgid "Import" +msgstr "导入" + +#: ../src/bjb-import-dialog.c:420 +msgid "Select import location" +msgstr "选择导入位置" + +#: ../src/bjb-import-dialog.c:440 +msgid "Tomboy application" +msgstr "Tomboy 应用程序" + +#: ../src/bjb-import-dialog.c:446 +msgid "Gnote application" +msgstr "Gnote 应用程序" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "加载更多" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "正在加载..." -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-main-toolbar.c:139 msgid "Click on items to select them" msgstr "点击条目以选中它们" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:141 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "已选中 %d 条" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:268 +msgid "Search note titles, content and collections" +msgstr "搜索便笺标题、内容和合集" + +#. Select +#: ../src/bjb-main-toolbar.c:327 +msgid "Done" +msgstr "完成" + +#: ../src/bjb-main-toolbar.c:333 +msgid "Exit selection mode" +msgstr "退出选择模式" + +#: ../src/bjb-main-toolbar.c:365 #, c-format msgid "Results for %s" msgstr "%s 的结果" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:368 msgid "New and Recent" -msgstr "新建和最近便笺" +msgstr "新建和最近打开的便笺" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:442 msgid "New" msgstr "新建" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "输入名称以创建标签" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "新标签" +#: ../src/bjb-main-toolbar.c:469 +msgid "Selection mode" +msgstr "选择模式" + +#: ../src/bjb-main-toolbar.c:497 +msgid "View notes and collections in a list" +msgstr "以列表形式查看便笺和合集" + +#: ../src/bjb-main-toolbar.c:521 +msgid "View notes and collections in a grid" +msgstr "以网格形式查看便笺和合集" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:650 msgid "Rename Note" msgstr "重命名便笺" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:671 msgid "Undo" msgstr "撤消" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:679 msgid "Redo" msgstr "重做" # 点句,与“项目符号列表”表达的意思都是一个,但后者更加常用。 #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:694 msgid "Bullets" msgstr "项目符号列表" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "列表" +#: ../src/bjb-main-toolbar.c:701 +msgid "Numbered List" +msgstr "编号列表" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:713 msgid "Rename" msgstr "重命名" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "标签" +#: ../src/bjb-main-toolbar.c:721 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "合集" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:733 msgid "Delete this Note" msgstr "删除该便笺" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "便笺" +#: ../src/bjb-main-toolbar.c:809 ../src/bjb-selection-toolbar.c:273 +msgid "Note color" +msgstr "便笺颜色" + +#: ../src/bjb-main-toolbar.c:836 +msgid "Share note" +msgstr "分享便笺" + +#: ../src/bjb-main-toolbar.c:857 +msgid "More options…" +msgstr "更多选项..." + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "输入名称以创建合集" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "新合集" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings.c:195 +msgid "_Close" +msgstr "关闭(_C)" +# # updated the translation according the App by tuhaihe #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 +#: ../src/bjb-note-view.c:228 msgid "Last updated " -msgstr "最近更新" +msgstr "最近更新时间:" -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "标签" +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "确认(_O)" -#: ../src/bjb-selection-toolbar.c:179 +#: ../src/bjb-selection-toolbar.c:266 msgid "Delete" msgstr "删除" +#: ../src/bjb-selection-toolbar.c:293 +msgid "Edit collections" +msgstr "编辑合集" + #. create dialog #: ../src/bjb-settings.c:191 msgid "Preferences" @@ -218,16 +314,16 @@ msgstr "新建窗口(_N)" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "外部便笺(_E)" +msgid "_Import Notes" +msgstr "导入便笺(_I)" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "首选项(_P)" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "关于 Bijiben(_A)" +msgid "_About Notes" +msgstr "关于便笺(_A)" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -236,3 +332,39 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "退出(_Q)" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "Import notes from:" +#~ msgstr "导入便笺位置:" + +#~ msgid "_About Bijiben" +#~ msgstr "关于 Bijiben(_A)" + +#~ msgid "External Notes" +#~ msgstr "外部便笺" + +#~ msgid "Click on the external notes to import" +#~ msgstr "点击外部便笺以导入" + +#~ msgid "Choose a color for note" +#~ msgstr "选择便笺颜色" + +#~ msgid "Link" +#~ msgstr "链接" + +#~ msgid "New tag" +#~ msgstr "新标签" + +#~ msgid "List" +#~ msgstr "列表" + +#~ msgid "Tags" +#~ msgstr "标签" + +#~ msgid "Tag" +#~ msgstr "标签" + +#~ msgid "_External Notes" +#~ msgstr "外部便笺(_E)" diff -Nru bijiben-3.8.4/po/zh_HK.po bijiben-3.10.2/po/zh_HK.po --- bijiben-3.8.4/po/zh_HK.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/zh_HK.po 2013-09-26 20:05:59.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-22 21:17+0800\n" -"PO-Revision-Date: 2013-03-22 21:17+0800\n" +"POT-Creation-Date: 2013-09-04 14:46+0800\n" +"PO-Revision-Date: 2013-09-04 14:46+0800\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Hong Kong) \n" "Language: zh_TW\n" @@ -16,11 +16,20 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.5.5\n" +"X-Generator: Poedit 1.5.7\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Notes 是一個編輯器,能製作簡易清單以便日後使用。" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "它可以使用 ownCloud 做為儲存位置與網上編輯器。" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "筆記" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -34,159 +43,257 @@ msgid "Note-taker" msgstr "做筆記" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "GNOME 的簡易筆記本" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Chao-Hsiung Liao" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "外部筆記" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "點選外部筆記以匯入" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "選擇筆記的顏色" +msgid "Note Color" +msgstr "筆記顏色" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "剪下" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "複製" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "貼上" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "粗體" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "斜體" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "删除線" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "連結" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "將選擇區域複製到新的筆記" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "找不到筆記" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"你的筆記收藏集是空的。\n" +"點選新增按鈕以建立你的第一個筆記。" + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "找不到這個研究的結果。" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "噢" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "請安裝「Tracker」然後重新啟動應用程式。" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "自選位置" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "匯入筆記" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "匯入" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "選擇匯入位置" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy 應用程式" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote 應用程式" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "載入更多" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "正在載入…" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "點擊項目來選取它們" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "已選擇 %d 個" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "搜尋筆記標題、內容與收藏集" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "取消" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "離開選擇區域模式" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "「%s」的結果" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "新增與最近使用" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "新增" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "輸入要建立的標籤名稱" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "新標籤" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "選擇區域模式" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "在清單中檢視筆記與收藏集" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "在圖示中檢視筆記與收藏集" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "重新命名筆記" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "復原" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "取消復原" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "項目符號" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "清單" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "有序清單" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "重新命名" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "標籤" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "收藏集" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "刪除這個筆記" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "筆記" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "筆記顏色" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "分享筆記" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "更多選項…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "輸入要建立的收藏集名稱" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "新增收藏集" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "關閉(_C)" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "上次更新於:" - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "標籤" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "上次更新於" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "確定(_O)" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "刪除" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "偏好設定" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "加入至收藏集" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "筆記字型" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "預設顏色" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "筆記版本" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "主要書籍" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "今日" @@ -211,21 +318,25 @@ msgid "Unknown" msgstr "不明" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "本地儲存空間" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "新增視窗(_N)" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "外部筆記(_E)" +msgid "_Import Notes" +msgstr "匯入筆記(_I)" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "偏好設定(_P)" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "關於 Bijiben (_A)" +msgid "_About Notes" +msgstr "關於筆記(_A)" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -234,3 +345,39 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "離開(_Q)" + +#~ msgid "Done" +#~ msgstr "完成" + +#~ msgid "Preferences" +#~ msgstr "偏好設定" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "外部筆記" + +#~ msgid "Click on the external notes to import" +#~ msgstr "點選外部筆記以匯入" + +#~ msgid "Choose a color for note" +#~ msgstr "選擇筆記的顏色" + +#~ msgid "Link" +#~ msgstr "連結" + +#~ msgid "New tag" +#~ msgstr "新標籤" + +#~ msgid "List" +#~ msgstr "清單" + +#~ msgid "Tags" +#~ msgstr "標籤" + +#~ msgid "Tag" +#~ msgstr "標籤" + +#~ msgid "_External Notes" +#~ msgstr "外部筆記(_E)" diff -Nru bijiben-3.8.4/po/zh_TW.po bijiben-3.10.2/po/zh_TW.po --- bijiben-3.8.4/po/zh_TW.po 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/po/zh_TW.po 2013-09-26 20:05:59.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: bijiben master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-22 21:17+0800\n" -"PO-Revision-Date: 2013-03-22 19:20+0800\n" +"POT-Creation-Date: 2013-09-04 14:46+0800\n" +"PO-Revision-Date: 2013-09-04 13:56+0800\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Taiwan) \n" "Language: zh_TW\n" @@ -16,11 +16,20 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.5.5\n" +"X-Generator: Poedit 1.5.7\n" -#: ../data/bijiben.desktop.in.in.h:1 ../src/bjb-app-menu.c:34 -msgid "Bijiben" -msgstr "Bijiben" +#: ../data/bijiben.appdata.xml.in.h:1 +msgid "Notes is an editor allowing to make simple lists for later use." +msgstr "Notes 是一個編輯器,能製作簡易清單以便日後使用。" + +#: ../data/bijiben.appdata.xml.in.h:2 +msgid "It allows to use ownCloud as a storage location and online editor." +msgstr "它可以使用 ownCloud 做為儲存位置與線上編輯器。" + +#: ../data/bijiben.desktop.in.in.h:1 ../data/bijiben.xml.in.h:1 +#: ../src/bjb-app-menu.c:45 ../src/bjb-window-base.c:19 +msgid "Notes" +msgstr "筆記" #: ../data/bijiben.desktop.in.in.h:2 msgid "notes;reminder;" @@ -34,159 +43,257 @@ msgid "Note-taker" msgstr "做筆記" -#: ../src/bjb-app-menu.c:35 +#: ../src/bjb-app-menu.c:46 msgid "Simple notebook for GNOME" msgstr "GNOME 的簡易筆記本" -#: ../src/bjb-app-menu.c:39 +#: ../src/bjb-app-menu.c:52 msgid "translator-credits" msgstr "Chao-Hsiung Liao" -#: ../src/bjb-app-menu.c:153 -msgid "External Notes" -msgstr "外部筆記" - -#: ../src/bjb-app-menu.c:168 -msgid "Click on the external notes to import" -msgstr "點選外部筆記以匯入" - #: ../src/bjb-color-button.c:146 -msgid "Choose a color for note" -msgstr "選擇筆記的顏色" +msgid "Note Color" +msgstr "筆記顏色" #. Cut -#: ../src/bjb-editor-toolbar.c:148 +#: ../src/bjb-editor-toolbar.c:367 msgid "Cut" msgstr "剪下" #. Copy -#: ../src/bjb-editor-toolbar.c:155 +#: ../src/bjb-editor-toolbar.c:374 msgid "Copy" msgstr "複製" #. 'n paste -#: ../src/bjb-editor-toolbar.c:162 +#: ../src/bjb-editor-toolbar.c:381 msgid "Paste" msgstr "貼上" -#: ../src/bjb-editor-toolbar.c:173 +#: ../src/bjb-editor-toolbar.c:396 msgid "Bold" msgstr "粗體" -#: ../src/bjb-editor-toolbar.c:184 +#: ../src/bjb-editor-toolbar.c:407 msgid "Italic" msgstr "斜體" -#: ../src/bjb-editor-toolbar.c:195 +#: ../src/bjb-editor-toolbar.c:418 msgid "Strike" msgstr "删除線" -#: ../src/bjb-editor-toolbar.c:224 -msgid "Link" -msgstr "連結" +#: ../src/bjb-editor-toolbar.c:450 +msgid "Copy selection to a new note" +msgstr "將選擇區域複製到新的筆記" + +#: ../src/bjb-empty-results-box.c:100 +msgid "No Notes Found" +msgstr "找不到筆記" + +#: ../src/bjb-empty-results-box.c:144 +msgid "" +"Your notes collection is empty.\n" +"Click the New button to create your first note." +msgstr "" +"您的筆記收藏集是空的。\n" +"點選新增按鈕以建立您的第一個筆記。" + +#: ../src/bjb-empty-results-box.c:150 +msgid "No result found for this research." +msgstr "找不到這個研究的結果。" + +#: ../src/bjb-empty-results-box.c:161 +msgid "Oops" +msgstr "噢" + +#: ../src/bjb-empty-results-box.c:167 +msgid "Please install 'Tracker' then restart the application." +msgstr "請安裝「Tracker」然後重新啟動應用程式。" + +#: ../src/bjb-import-dialog.c:310 +msgid "Custom Location" +msgstr "自訂位置" + +#: ../src/bjb-import-dialog.c:405 +msgid "Import Notes" +msgstr "匯入筆記" + +#: ../src/bjb-import-dialog.c:408 ../src/bjb-rename-note.c:17 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../src/bjb-import-dialog.c:410 +msgid "Import" +msgstr "匯入" + +#: ../src/bjb-import-dialog.c:421 +msgid "Select import location" +msgstr "選擇匯入位置" + +#: ../src/bjb-import-dialog.c:441 +msgid "Tomboy application" +msgstr "Tomboy 應用程式" + +#: ../src/bjb-import-dialog.c:447 +msgid "Gnote application" +msgstr "Gnote 應用程式" + +#: ../src/bjb-load-more-button.c:67 ../src/bjb-load-more-button.c:153 +msgid "Load More" +msgstr "載入更多" + +#: ../src/bjb-load-more-button.c:82 +msgid "Loading..." +msgstr "正在載入…" -#: ../src/bjb-main-toolbar.c:190 +#: ../src/bjb-main-toolbar.c:138 msgid "Click on items to select them" msgstr "點擊項目來選取它們" -#: ../src/bjb-main-toolbar.c:192 +#: ../src/bjb-main-toolbar.c:140 #, c-format msgid "%d selected" msgid_plural "%d selected" msgstr[0] "已選擇 %d 個" -#: ../src/bjb-main-toolbar.c:231 +#: ../src/bjb-main-toolbar.c:260 +msgid "Search note titles, content and collections" +msgstr "搜尋筆記標題、內容與收藏集" + +#. Select +#: ../src/bjb-main-toolbar.c:299 +msgid "Cancel" +msgstr "取消" + +#: ../src/bjb-main-toolbar.c:305 +msgid "Exit selection mode" +msgstr "離開選擇區域模式" + +#: ../src/bjb-main-toolbar.c:335 #, c-format msgid "Results for %s" msgstr "「%s」的結果" -#: ../src/bjb-main-toolbar.c:234 +#: ../src/bjb-main-toolbar.c:338 msgid "New and Recent" msgstr "新增與最近使用" -#: ../src/bjb-main-toolbar.c:259 +#: ../src/bjb-main-toolbar.c:402 msgid "New" msgstr "新增" -#: ../src/bjb-note-tag-dialog.c:374 -msgid "Enter a name to create a tag" -msgstr "輸入要建立的標籤名稱" - -#: ../src/bjb-note-tag-dialog.c:384 -msgid "New tag" -msgstr "新標籤" +#: ../src/bjb-main-toolbar.c:420 +msgid "Selection mode" +msgstr "選擇區域模式" + +#: ../src/bjb-main-toolbar.c:448 +msgid "View notes and collections in a list" +msgstr "在清單中檢視筆記與收藏集" + +#: ../src/bjb-main-toolbar.c:472 +msgid "View notes and collections in a grid" +msgstr "在圖示中檢視筆記與收藏集" -#: ../src/bjb-note-view.c:222 +#: ../src/bjb-main-toolbar.c:601 msgid "Rename Note" msgstr "重新命名筆記" #. Undo Redo separator -#: ../src/bjb-note-view.c:277 +#: ../src/bjb-main-toolbar.c:622 msgid "Undo" msgstr "復原" -#: ../src/bjb-note-view.c:285 +#: ../src/bjb-main-toolbar.c:630 msgid "Redo" msgstr "取消復原" #. Bullets, ordered list, separator #. Bullets : unordered list format -#: ../src/bjb-note-view.c:299 +#: ../src/bjb-main-toolbar.c:645 msgid "Bullets" msgstr "項目符號" #. Ordered list as 1.mouse 2.cats 3.dogs -#: ../src/bjb-note-view.c:306 -msgid "List" -msgstr "清單" +#: ../src/bjb-main-toolbar.c:652 +msgid "Numbered List" +msgstr "有序清單" #. Rename, view tags, separtor -#: ../src/bjb-note-view.c:317 +#: ../src/bjb-main-toolbar.c:664 msgid "Rename" msgstr "重新命名" -#: ../src/bjb-note-view.c:323 -msgid "Tags" -msgstr "標籤" +#: ../src/bjb-main-toolbar.c:672 ../src/bjb-note-tag-dialog.c:370 +msgid "Collections" +msgstr "收藏集" #. Delete Note -#: ../src/bjb-note-view.c:334 +#: ../src/bjb-main-toolbar.c:684 msgid "Delete this Note" msgstr "刪除這個筆記" -#. Button to go back to main view -#: ../src/bjb-note-view.c:401 -msgid "Notes" -msgstr "筆記" +#: ../src/bjb-main-toolbar.c:748 ../src/bjb-selection-toolbar.c:252 +msgid "Note color" +msgstr "筆記顏色" + +#: ../src/bjb-main-toolbar.c:775 +msgid "Share note" +msgstr "分享筆記" + +#: ../src/bjb-main-toolbar.c:796 +msgid "More options…" +msgstr "更多選項…" + +#: ../src/bjb-note-tag-dialog.c:399 +msgid "Enter a name to create a collection" +msgstr "輸入要建立的收藏集名稱" + +#: ../src/bjb-note-tag-dialog.c:409 +msgid "New collection" +msgstr "新增收藏集" + +#. Response +#: ../src/bjb-note-tag-dialog.c:437 ../src/bjb-settings-dialog.c:407 +msgid "_Close" +msgstr "關閉(_C)" #. "Last updated" precedes the note last updated date -#: ../src/bjb-note-view.c:502 -msgid "Last updated " -msgstr "上次更新於:" - -#: ../src/bjb-selection-toolbar.c:155 -msgid "Tag" -msgstr "標籤" +#: ../src/bjb-note-view.c:229 +msgid "Last updated" +msgstr "上次更新於" + +#: ../src/bjb-rename-note.c:19 +msgid "_OK" +msgstr "確定(_O)" -#: ../src/bjb-selection-toolbar.c:179 +#. Trash notes +#: ../src/bjb-selection-toolbar.c:244 msgid "Delete" msgstr "刪除" -#. create dialog -#: ../src/bjb-settings.c:191 -msgid "Preferences" -msgstr "偏好設定" +#. Notes tags +#: ../src/bjb-selection-toolbar.c:258 +msgid "Add to Collection" +msgstr "加入至收藏集" -#. Note Font -#: ../src/bjb-settings.c:222 +#. Default font +#: ../src/bjb-settings-dialog.c:350 msgid "Note Font" msgstr "筆記字型" -#. Default Color -#: ../src/bjb-settings.c:231 +#. Default color +#: ../src/bjb-settings-dialog.c:361 msgid "Default Color" msgstr "預設顏色" +#: ../src/bjb-settings-dialog.c:437 +msgid "Note Edition" +msgstr "筆記版本" + +#: ../src/bjb-settings-dialog.c:440 +msgid "Primary Book" +msgstr "主要書籍" + #: ../src/libbiji/biji-date-time.c:32 msgid "Today" msgstr "今日" @@ -211,21 +318,25 @@ msgid "Unknown" msgstr "不明" +#: ../src/libbiji/provider/biji-local-provider.c:298 +msgid "Local storage" +msgstr "本地儲存空間" + #: ../src/resources/app-menu.ui.h:1 msgid "_New Window" msgstr "新增視窗(_N)" #: ../src/resources/app-menu.ui.h:2 -msgid "_External Notes" -msgstr "外部筆記(_E)" +msgid "_Import Notes" +msgstr "匯入筆記(_I)" #: ../src/resources/app-menu.ui.h:3 msgid "_Preferences" msgstr "偏好設定(_P)" #: ../src/resources/app-menu.ui.h:4 -msgid "_About Bijiben" -msgstr "關於 Bijiben (_A)" +msgid "_About Notes" +msgstr "關於筆記(_A)" #: ../src/resources/app-menu.ui.h:5 msgid "_Help" @@ -234,3 +345,39 @@ #: ../src/resources/app-menu.ui.h:6 msgid "_Quit" msgstr "離開(_Q)" + +#~ msgid "Done" +#~ msgstr "完成" + +#~ msgid "Preferences" +#~ msgstr "偏好設定" + +#~ msgid "Bijiben" +#~ msgstr "Bijiben" + +#~ msgid "External Notes" +#~ msgstr "外部筆記" + +#~ msgid "Click on the external notes to import" +#~ msgstr "點選外部筆記以匯入" + +#~ msgid "Choose a color for note" +#~ msgstr "選擇筆記的顏色" + +#~ msgid "Link" +#~ msgstr "連結" + +#~ msgid "New tag" +#~ msgstr "新標籤" + +#~ msgid "List" +#~ msgstr "清單" + +#~ msgid "Tags" +#~ msgstr "標籤" + +#~ msgid "Tag" +#~ msgstr "標籤" + +#~ msgid "_External Notes" +#~ msgstr "外部筆記(_E)" diff -Nru bijiben-3.8.4/src/bijiben-shell-search-provider.c bijiben-3.10.2/src/bijiben-shell-search-provider.c --- bijiben-3.8.4/src/bijiben-shell-search-provider.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bijiben-shell-search-provider.c 2013-10-31 22:52:40.000000000 +0000 @@ -35,6 +35,7 @@ #include #include +#include /* Strlen for timestamp */ #include @@ -85,8 +86,8 @@ biji_get_notes_with_strings (BijibenShellSearchProviderApp *self, gchar **needles) { gint parser; - GString *match = g_string_new (""); - gchar *query; + GString *match; + gchar *query, *needle; TrackerSparqlCursor *cursor; const gchar *uuid; GList *result = NULL; @@ -94,6 +95,8 @@ if (!needles) return result; + match = g_string_new (""); + /* AND is implicit into tracker */ for (parser=0; needles[parser] != NULL; parser++) { @@ -101,7 +104,18 @@ match = g_string_append (match, "* "); } - query = g_strdup_printf ("SELECT ?f WHERE { ?f a nfo:Note ; fts:match '%s' }", match->str); + needle = g_utf8_strdown (match->str, -1); + + query = g_strconcat ( + "SELECT ?urn WHERE { ", + "?urn a nfo:Note; ", + "nie:title ?title ; ", + "nie:plainTextContent ?content ", + ". FILTER (fn:contains (fn:lower-case (?content),", + "'", needle, "' ) || ", + "fn:contains (fn:lower-case (?title), '", needle ,"' ))}", + NULL); + g_string_free (match, TRUE); /* Go to the query */ @@ -121,10 +135,9 @@ { uuid = tracker_sparql_cursor_get_string (cursor, 0, 0); - /* currently no mimetype pushed to tracker by libbiji "push note" method - * it shall be added instead testing suffix here */ - if (uuid && g_str_has_suffix (uuid, ".note")) + if (uuid) result = g_list_append (result, g_strdup(uuid)); + } g_free (query); @@ -185,20 +198,63 @@ } static gchar * -get_note_icon (gchar *note__nie_url) +get_note_icon (const gchar *note__nie_url) { - gchar *path = g_build_filename (DATADIR, "bijiben", "icons", "hicolor", - "48x48", "actions", "note.png", NULL); + gchar **split; + gchar *path, *basename, *hash; + GFile *file; + GIcon *gicon; + + + /* + * FIXME - below is ok for local notes only + * + * URL : DATA_DIR/bijiben/bf74f3b4-9363-44a1-852a-5746f3118ea7.note + * URL : davs://..../Notes/Trial.txt + * + * ICON : CACHE_DIR/bijiben/bf74f3b4-9363-44a1-852a-5746f3118ea7.png + * ICON : CACHE_DIR/bijiben/Trial.png + */ + split = g_strsplit (note__nie_url, "/", 20); + + basename = biji_str_mass_replace (split [g_strv_length (split)-1], + ".note", + ".png", + ".txt", + ".png", + NULL); + + path = g_build_filename (g_get_user_cache_dir (), + "bijiben", + basename, + NULL); - GFile *gicon_file = g_file_new_for_path (path); - g_free (path); - GIcon *gicon = g_file_icon_new (gicon_file); - g_object_unref (gicon_file); - gchar *result = g_icon_to_string (gicon); + file = g_file_new_for_path (path); + + if (g_file_query_exists (file, NULL)) + goto out; + + /* Well, else, just pick up something generic */ + if (path) + g_free (path); + if (file) + g_object_unref (file); + + path = g_build_filename (DATADIR, "bijiben", "icons", "hicolor", + "48x48", "actions", "note.png", NULL); + file = g_file_new_for_path (path); + +out: + g_strfreev (split); + gicon = g_file_icon_new (file); + hash = g_icon_to_string (gicon); + g_free (path); + g_object_unref (file); g_object_unref (gicon); - return result; + + return hash; } static void @@ -207,31 +263,35 @@ GVariantBuilder *results) { gchar *query; + const gchar *url; const gchar *result; TrackerSparqlCursor *cursor; - /* the WHERE nie:url query has a single result : the note which we're providing metadata */ query = g_strdup_printf ("SELECT nie:url(<%s>) nie:title(<%s>) WHERE { }", note__id, note__id); + + cursor = bjb_perform_query (self, query); g_free (query); - g_variant_builder_open (results, G_VARIANT_TYPE ("a{sv}")); - if (tracker_sparql_cursor_next (cursor, NULL, NULL)) { + g_variant_builder_open (results, G_VARIANT_TYPE ("a{sv}")); + /* NIE:URL (id) */ - result = tracker_sparql_cursor_get_string (cursor, 0, 0); - g_variant_builder_add (results, "{sv}", "id", g_variant_new_string (result)); + url = tracker_sparql_cursor_get_string (cursor, 0, 0); + g_variant_builder_add (results, "{sv}", "id", g_variant_new_string (url)); /* NIE:TITLE (name) is the title pushed by libbiji */ result = tracker_sparql_cursor_get_string (cursor, 1, 0); g_variant_builder_add (results, "{sv}", "name", g_variant_new_string (result)); + + /* ICON is currently generic icon, * * TODO serialize icons in libbiji * * or deserialize note here ) */ - result = get_note_icon (NULL); + result = get_note_icon (url); g_variant_builder_add (results, "{sv}", "gicon", g_variant_new_string (result)); g_variant_builder_close (results); @@ -380,7 +440,7 @@ if (error) { - g_error ("%s", error->message); + g_message ("%s", error->message); } } diff -Nru bijiben-3.8.4/src/bjb-app-menu.c bijiben-3.10.2/src/bjb-app-menu.c --- bijiben-3.8.4/src/bjb-app-menu.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-app-menu.c 2013-10-31 22:52:41.000000000 +0000 @@ -20,6 +20,7 @@ #include "bjb-app-menu.h" #include "bjb-bijiben.h" +#include "bjb-import-dialog.h" #include "bjb-main-view.h" #include "bjb-settings.h" #include "bjb-window-base.h" @@ -29,15 +30,27 @@ void show_about_dialog(GtkApplication *app) { GList * windows = gtk_application_get_windows (app); + + const gchar *authors[] = { + "Pierre-Yves Luyten ", + NULL + }; + + const gchar *artists[] = { + "William Jon McCann ", + NULL + }; gtk_show_about_dialog( g_list_nth_data (windows, 0), "program-name", _("Notes"), "comments", _("Simple notebook for GNOME"), - "license", "GPLv3", + "license-type", GTK_LICENSE_GPL_3_0, "version", VERSION, - "copyright", "Pierre-Yves Luyten 2013", + "copyright", "Copyright © 2013 Pierre-Yves Luyten", + "authors", authors, + "artists", artists, "translator-credits", _("translator-credits"), - "website", "https://wiki.gnome.org/Bijiben", + "website", "https://wiki.gnome.org/Apps/Bijiben", NULL,NULL,NULL); } @@ -47,181 +60,49 @@ GVariant *parameter, gpointer user_data) { - bjb_window_base_new(); -} - -/* Import external data - TODO : BJB_TYPE_IMPORT_DIALOG.c */ - -enum { - IMPORT_DIALOG_ID, - IMPORT_DIALOG_ICON, - IMPORT_DIALOG_LABEL, - IMPORT_DIALOG_N_COLUMNS -}; - -enum { - TOMBOY_EXT_SRC, - GNOTE_EXT_SRC -}; - -/* First try to find the real icon. FIXME Fallback otherwise - * in case the user has specific install */ -static GdkPixbuf * -get_app_icon (gchar *app_name) -{ - gint i; - GdkPixbuf *retval= NULL; - const gchar * const *paths = g_get_system_data_dirs (); - gchar *app_svg = g_strdup_printf ("%s.svg", app_name); - - for (i=0; paths[i] != NULL; i++) - { - gchar *path; - GError *error = NULL; + BjbWindowBase *win; + BjbController *control; - path = g_build_filename (paths[i], "icons", "hicolor", - "scalable", "apps", app_svg, NULL); - retval = gdk_pixbuf_new_from_file (path, &error); - g_free (path); + win = BJB_WINDOW_BASE (bjb_window_base_new()); - if (!error && GDK_IS_PIXBUF (retval)) - break; + /* Tell the controller to display all notes, */ + control = bjb_window_base_get_controller (win); + bjb_controller_set_needle (control, ""); - else - retval = NULL; - } - - g_free (app_svg); - return retval; + bjb_window_base_switch_to (win, BJB_WINDOW_BASE_MAIN_VIEW); + gtk_widget_show_all (GTK_WIDGET (win)); } -static void -on_import_source_activated_cb (GtkTreeView *t_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - GtkWidget *dialog) -{ - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model (t_view); - - if (gtk_tree_model_get_iter (model, &iter, path)) - { - GValue value = G_VALUE_INIT; - gint retval; - Bijiben *self = BIJIBEN_APPLICATION (g_application_get_default()); - - gtk_tree_model_get_value (model, &iter, IMPORT_DIALOG_ID, &value); - retval = g_value_get_int (&value); - g_value_unset (&value); - - switch (retval) - { - case TOMBOY_EXT_SRC: - import_notes (self, "tomboy"); - gtk_widget_destroy (dialog); - dialog = NULL; - break; - - case GNOTE_EXT_SRC: - import_notes (self, "gnote"); - gtk_widget_destroy (dialog); - dialog = NULL; - break; - default: - break; - } - } -} - -/* TODO : spinner or any notification */ static void external_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { - GtkWidget *dialog, *area, *label, *t_view; - GtkListStore *store; - GtkTreeModel *model; - GtkTreeIter iter; - GList *windows; - GdkPixbuf *app_icon; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - windows = gtk_application_get_windows (GTK_APPLICATION(user_data)); - - dialog = gtk_dialog_new_with_buttons (_("External Notes"), - g_list_nth_data (windows, 0), - GTK_DIALOG_MODAL| - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - NULL); - gtk_widget_set_size_request (dialog, 320, 280); - - /* User chooses which folder to import */ - area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - gtk_container_set_border_width (GTK_CONTAINER (area), 8); - gtk_widget_set_hexpand (area, TRUE); - gtk_widget_set_vexpand (area, TRUE); - - label = gtk_label_new (_("Click on the external notes to import")); - gtk_box_pack_start (GTK_BOX (area), label, TRUE, FALSE, 2); - - store = gtk_list_store_new (IMPORT_DIALOG_N_COLUMNS, - G_TYPE_INT, - GDK_TYPE_PIXBUF, - G_TYPE_STRING); - model = GTK_TREE_MODEL (store); + GtkDialog *dialog; + gint result; - /* Tomboy */ - app_icon = get_app_icon ("tomboy"); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, - IMPORT_DIALOG_ID, TOMBOY_EXT_SRC, - IMPORT_DIALOG_ICON, app_icon, - IMPORT_DIALOG_LABEL, "Tomboy", -1); - - /* Gnote */ - app_icon = get_app_icon ("gnote"); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, - IMPORT_DIALOG_ID, GNOTE_EXT_SRC, - IMPORT_DIALOG_ICON, app_icon, - IMPORT_DIALOG_LABEL, "Gnote", -1); - - /* Handle the t_view */ - t_view = gtk_tree_view_new_with_model (model); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (t_view), FALSE); - g_signal_connect (t_view, "row-activated", - G_CALLBACK (on_import_source_activated_cb), dialog); - - renderer = gtk_cell_renderer_pixbuf_new (); - column = gtk_tree_view_column_new_with_attributes (NULL, renderer, - "pixbuf", IMPORT_DIALOG_ICON, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (t_view), column); - - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (NULL, renderer, - "text", IMPORT_DIALOG_LABEL, - NULL); - gtk_tree_view_append_column (GTK_TREE_VIEW (t_view), column); - - gtk_box_pack_start (GTK_BOX (area), t_view, TRUE, FALSE, 2); - gtk_widget_show_all (dialog); - gtk_dialog_run (GTK_DIALOG (dialog)); + dialog = bjb_import_dialog_new (user_data); + result = gtk_dialog_run (dialog); - if (dialog) + if (result == GTK_RESPONSE_OK) { - gtk_widget_destroy (dialog); - dialog = NULL; + GList *locations, *l; + + locations = bjb_import_dialog_get_paths (BJB_IMPORT_DIALOG (dialog)); + for (l=locations; l!= NULL; l=l->next) + { + bijiben_import_notes (user_data, l->data); + } + + g_list_free (locations); } + + if (dialog) + g_clear_pointer (&dialog, gtk_widget_destroy); } + static void preferences_activated (GSimpleAction *action, GVariant *parameter, diff -Nru bijiben-3.8.4/src/bjb-bijiben.c bijiben-3.10.2/src/bjb-bijiben.c --- bijiben-3.8.4/src/bjb-bijiben.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-bijiben.c 2013-11-11 20:52:06.000000000 +0000 @@ -31,46 +31,139 @@ struct _BijibenPriv { BijiNoteBook *book; - BjbSettings *settings ; + BjbSettings *settings; + + + + /* Controls. 1st run is not used yet. to_open is for startup */ - /* First run is not used yet, - * could ask tracker for notes / memo to import */ gboolean first_run; - gchar dest; + gboolean is_loaded; + GQueue *to_open; }; G_DEFINE_TYPE (Bijiben, bijiben, GTK_TYPE_APPLICATION); static void -bijiben_new_window_internal (GApplication *app, +bijiben_new_window_internal (Bijiben *app, GFile *file, - BijiNoteObj *note_obj) + BijiNoteObj *note_obj, + GError *error); + +static void +on_window_activated_cb (BjbWindowBase *window, + gboolean win_is_available, + Bijiben *self) { - GtkWindow *win = bjb_window_base_new(); - BijiNoteObj* note = NULL; + BijibenPriv *priv; + gchar *path; + BijiItem *item; + GList *notfound, *l; + + item = NULL; + priv = self->priv; + priv->is_loaded = TRUE; + notfound = NULL; + + while ((path = g_queue_pop_head (priv->to_open))) + { + + item = biji_note_book_get_item_at_path (priv->book, path); + + if (item != NULL) + { + + // fixme - bjb_window_base_switch_to_item... + if (win_is_available) + bjb_window_base_switch_to_note (window, item); + + else + bijiben_new_window_internal (self, NULL, item, NULL); + + + g_free (path); + } + + + else + { + notfound = g_list_prepend (notfound, path); + } + + + } + + /* We just wait for next provider to be loaded. + * TODO should also check if all providers are loaded + * in order to trigger file reading. */ + for (l = notfound; l != NULL; l=l->next) + { + g_queue_push_head (priv->to_open, l->data); + } + +} + + +static void +bijiben_new_window_internal (Bijiben *self, + GFile *file, + BijiNoteObj *note_obj, + GError *error) +{ + BjbWindowBase *window; + BijiNoteObj* note; + gchar *path; + + + note = NULL; + path = NULL; + + window = BJB_WINDOW_BASE (bjb_window_base_new ()); + g_signal_connect (window, "activated", + G_CALLBACK (on_window_activated_cb), self); + + + if (error!= NULL) + { + g_warning ("%s", error->message); + g_error_free (error); + bjb_window_base_switch_to (window, BJB_WINDOW_BASE_ERROR_TRACKER); + goto out; + } + if (file != NULL) - note = biji_note_get_new_from_file (g_file_get_path(file)); + { + path = g_file_get_parse_name (file); + note = biji_note_book_get_item_at_path (self->priv->book, path); + } + else if (note_obj != NULL) + { note = note_obj; + } - if (note != NULL) - { - bjb_window_base_switch_to_note (BJB_WINDOW_BASE (win), note); - } - else + bjb_window_base_switch_to (window, BJB_WINDOW_BASE_MAIN_VIEW); + + if (note != NULL) { - bjb_window_base_switch_to (BJB_WINDOW_BASE (win), BJB_MAIN_VIEW); - gtk_widget_show_all (GTK_WIDGET (win)); // FIXME not here + bjb_controller_apply_needle (bjb_window_base_get_controller (window)); + bjb_window_base_switch_to_note (window, note); } + +out: + if (path != NULL) + g_free (path); + + gtk_widget_show_all (GTK_WIDGET (window)); } void bijiben_new_window_for_note (GApplication *app, BijiNoteObj *note) { - bijiben_new_window_internal(app, NULL, note); + bijiben_new_window_internal (BIJIBEN_APPLICATION (app), NULL, note, NULL); } static void @@ -82,209 +175,131 @@ gtk_window_present (g_list_nth_data (windows, 0)); } + +/* If the app is already loaded, just open the file. + * Else, keep it under the hood */ + static void bijiben_open (GApplication *application, GFile **files, gint n_files, const gchar *hint) { + Bijiben *self; gint i; - for (i = 0; i < n_files; i++) - bijiben_new_window_internal(application, files[i],NULL); -} + self = BIJIBEN_APPLICATION (application); -static void -bijiben_init (Bijiben *object) -{ - object->priv = - G_TYPE_INSTANCE_GET_PRIVATE(object,BIJIBEN_TYPE_APPLICATION,BijibenPriv); - object->priv->settings = initialize_settings(); + for (i = 0; i < n_files; i++) + { + if (self->priv->is_loaded == TRUE) + bijiben_new_window_internal (BIJIBEN_APPLICATION (application), files[i], NULL, NULL); + + else + g_queue_push_head (self->priv->to_open, g_file_get_parse_name (files[i])); + } } -/* Import. TODO : move to libbiji */ - -#define ATTRIBUTES_FOR_NOTEBOOK "standard::content-type,standard::name" - -static BijiNoteObj * -abort_note (BijiNoteObj *rejected) +static void +bijiben_init (Bijiben *self) { - g_object_unref (rejected); - return NULL; -} + BijibenPriv *priv; -static BijiNoteObj * -copy_note (GFileInfo *info, GFile *container) -{ - BijiNoteObj *retval = NULL; - const gchar *name; - gchar *path; - /* First make sure it's a note */ - name = g_file_info_get_name (info); - if (!g_str_has_suffix (name, ".note")) - return NULL; - - /* Deserialize it */ - path = g_build_filename (g_file_get_path (container), name, NULL); - retval = biji_note_get_new_from_file (path); - g_free (path); - - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (retval), NULL); - - /* Not a Template */ - if (biji_note_obj_is_template (retval)) - return abort_note (retval); - - /* Assign the new path */ - path = g_build_filename (g_get_user_data_dir (), "bijiben", name, NULL); - g_object_set (retval, "path", path, NULL); - g_free (path); + priv = self->priv = + G_TYPE_INSTANCE_GET_PRIVATE (self, BIJIBEN_TYPE_APPLICATION, BijibenPriv); - return retval; + priv->settings = bjb_settings_new (); + priv->to_open = g_queue_new (); + priv->is_loaded = FALSE; } -static void -release_enum_cb (GObject *source, GAsyncResult *res, gpointer user_data) -{ - g_file_enumerator_close_finish (G_FILE_ENUMERATOR (source), res, NULL); - g_object_unref (source); -} -/* Some notes might have been added previously */ -static void -go_through_notes_cb (GFileEnumerator *enumerator, GAsyncResult *res, Bijiben *self) +void +bijiben_import_notes (Bijiben *self, gchar *location) { - GList *notes_info; - GList *notes_proposal = NULL; - GList *l; - GFile *container; - - /* Sanitize title & color */ - gchar *unique_title, *default_color; - BjbSettings *settings; - GdkRGBA color; - - container = g_file_enumerator_get_container (enumerator); - notes_info = g_file_enumerator_next_files_finish (enumerator, res, NULL); - g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, - release_enum_cb, self); - - /* Get the GList of notes and load them */ - for ( l=notes_info; l !=NULL; l = l->next) - { - GFileInfo *info = G_FILE_INFO (l->data); - BijiNoteObj *iter = copy_note (info, container); - if (iter) - notes_proposal = g_list_prepend (notes_proposal, iter); - } - - for (l = notes_proposal; l != NULL; l = l->next) - { - BijiNoteObj *note = l->data; - gchar *path = biji_note_obj_get_path (note); - - /* Don't add an already imported note */ - if (note_book_get_note_at_path (self->priv->book, path)) - { - abort_note (note); - } - - /* Sanitize, append & save */ - else - { - /* Title */ - unique_title = biji_note_book_get_unique_title (self->priv->book, - biji_note_obj_get_title (note)); - biji_note_obj_set_title (note, unique_title); - g_free (unique_title); - - /* Color */ - settings = bjb_app_get_settings (self); - g_object_get (G_OBJECT (settings), "color", &default_color, NULL); - if (gdk_rgba_parse (&color, default_color)) - biji_note_obj_set_rgba (note, &color); + g_debug ("IMPORT to %s", bjb_settings_get_default_location (self->priv->settings)); - g_free (default_color); - - biji_note_book_append_new_note (self->priv->book, note, FALSE); - biji_note_obj_save_note (note); - } - - g_free (path); - } - - /* NoteBook will notify for all opened windows */ - - g_list_free_full (notes_info, g_object_unref); - g_list_free (notes_proposal); - biji_note_book_notify_changed (self->priv->book, BIJI_BOOK_MASS_CHANGE, NULL); + biji_note_book_import_uri (self->priv->book, + bjb_settings_get_default_location (self->priv->settings), + location); } -static void -list_notes_to_copy (GObject *src_obj, GAsyncResult *res, Bijiben *self) -{ - GFileEnumerator *enumerator; - GError *error = NULL; - enumerator = g_file_enumerate_children_finish (G_FILE (src_obj), res, &error); +/* Just filter on ownCloud accounts + * TODO : settings to force activate & inactivate + * but, up to libbiji to survey GoaObject + */ +static void +on_client_got (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + Bijiben *self; + GoaClient *client; + GError *error; + GList *accounts, *l; + GoaObject *object; + GoaAccount *account; + const gchar *type; + + self = BIJIBEN_APPLICATION (user_data); + error = NULL; + client = goa_client_new_finish (res, &error); if (error) { - g_warning ("Enumerator failed : %s", error->message); - g_error_free (error); - g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, release_enum_cb, self); + g_warning ("%s", error->message); + g_error_free (error); + return; } - else + accounts = goa_client_get_accounts (client); + + for (l=accounts; l!=NULL; l=l->next) { - g_file_enumerator_next_files_async (enumerator, G_MAXINT, G_PRIORITY_DEFAULT, NULL, - (GAsyncReadyCallback) go_through_notes_cb, self); - } -} + object = GOA_OBJECT (l->data); + account = goa_object_get_account (object); -static void -import_notes_from_x (gchar *x, Bijiben *self) -{ - GFile *to_import = g_file_new_for_path (x); + if (GOA_IS_ACCOUNT (account)) + { + type = goa_account_get_provider_type (account); - g_file_enumerate_children_async (to_import, ATTRIBUTES_FOR_NOTEBOOK, - G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, - NULL, (GAsyncReadyCallback) list_notes_to_copy, self); - g_object_unref (to_import); -} + /* We do not need to store any object here. + * account_get_id can be used to talk with libbji */ -void -import_notes (Bijiben *self, gchar *location) -{ - gchar *path_to_import; + if (g_strcmp0 (type, "owncloud") ==0) + { + g_message ("Loading account %s", goa_account_get_id (account)); + biji_note_book_add_goa_object (self->priv->book, object); + } - if (g_strcmp0 (location, "tomboy") ==0) - { - path_to_import = g_build_filename (g_get_user_data_dir (), "tomboy", NULL); - import_notes_from_x (path_to_import, self); - g_free (path_to_import); + else + { + g_object_unref (object); + } + } } - else if (g_strcmp0 (location, "gnote") ==0) - { - path_to_import = g_build_filename (g_get_user_data_dir (), "gnote", NULL); - import_notes_from_x (path_to_import, self); - g_free (path_to_import); - } + g_list_free (accounts); } static void bijiben_startup (GApplication *application) { - Bijiben *self = BIJIBEN_APPLICATION (application); - gchar *storage_path; - GFile *storage; - GError *error = NULL; + Bijiben *self; + gchar *storage_path, *default_color; + GFile *storage; + GError *error; + GdkRGBA color = {0,0,0,0}; + G_APPLICATION_CLASS (bijiben_parent_class)->startup (application); + self = BIJIBEN_APPLICATION (application); + error = NULL; + if (gtk_clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS) { @@ -320,13 +335,24 @@ self->priv->first_run = TRUE; } - self->priv->book = biji_note_book_new (storage); + g_object_get (self->priv->settings, "color", &default_color, NULL); + gdk_rgba_parse (&color, default_color); + + error = NULL; + self->priv->book = biji_note_book_new (storage, &color, &error); + if (error) + goto out; + + /* Goa */ + goa_client_new (NULL, on_client_got, self); // cancellable + + /* Create the first window */ + out: + bijiben_new_window_internal (BIJIBEN_APPLICATION (application), NULL, NULL, error); + g_free (default_color); g_free (storage_path); g_object_unref (storage); - - // create the first window - bijiben_new_window_internal (application, NULL, NULL); } static void @@ -336,6 +362,7 @@ g_clear_object (&self->priv->book); g_clear_object (&self->priv->settings); + g_queue_free (self->priv->to_open); G_OBJECT_CLASS (bijiben_parent_class)->finalize (object); } diff -Nru bijiben-3.8.4/src/bjb-bijiben.h bijiben-3.10.2/src/bjb-bijiben.h --- bijiben-3.8.4/src/bjb-bijiben.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-bijiben.h 2013-11-11 20:52:06.000000000 +0000 @@ -62,7 +62,7 @@ // Windows void bijiben_new_window_for_note (GApplication *app, BijiNoteObj *note); -void import_notes (Bijiben *self, gchar *location); +void bijiben_import_notes (Bijiben *self, gchar *path); G_END_DECLS diff -Nru bijiben-3.8.4/src/bjb-color-button.c bijiben-3.10.2/src/bjb-color-button.c --- bijiben-3.8.4/src/bjb-color-button.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-color-button.c 2013-10-31 22:52:40.000000000 +0000 @@ -143,7 +143,7 @@ BjbColorButtonPrivate *priv = BJB_COLOR_BUTTON_GET_PRIVATE(self); self->priv = priv; - priv->title = _("Choose a color for note"); + priv->title = _("Note Color"); } static void diff -Nru bijiben-3.8.4/src/bjb-controller.c bijiben-3.10.2/src/bjb-controller.c --- bijiben-3.8.4/src/bjb-controller.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-controller.c 2013-11-11 20:52:06.000000000 +0000 @@ -16,43 +16,56 @@ * with this program. If not, see . */ +/* + * bjb-controler is window-wide. + * mainly useful for BjbMainView, + * it controls the window behaviour. + */ + #include #include "bjb-controller.h" #include "bjb-main-view.h" #include "bjb-window-base.h" -#include "utils/bjb-icons-colors.h" + + +/* + * The start-up number of items to show, + * and its incrementation + */ + +#define BJB_ITEMS_SLICE 48 /* Gobject */ struct _BjbControllerPrivate { - BijiNoteBook *book ; - gchar *needle ; - GtkTreeModel *model ; - GtkTreeModel *completion; - - /* Optional - * Currently Controller is window-wide, in order to live while - * going from main view to note view. - * But not app-wide : each win has its controller & needle. - * - * gd-main-view is setup by main-view to allow choosing pixbuf - * according to grid / list view mode */ - GdMainView *cur; + BijiNoteBook *book ; + gchar *needle ; + BijiCollection *collection; + GtkTreeModel *model ; + GtkTreeModel *completion; + + BjbWindowBase *window; /* Private */ - GList *notes_to_show ; - gboolean connected; - gulong book_change; + GList *items_to_show; + gint n_items_to_show; + gboolean remaining_items; + GMutex mutex; + + gboolean connected; + gulong book_change; }; + enum { PROP_0, - PROP_BOOK , - PROP_NEEDLE , - PROP_MODEL , + PROP_BOOK, + PROP_WINDOW, + PROP_NEEDLE, + PROP_MODEL, NUM_PROPERTIES }; @@ -80,24 +93,25 @@ GtkListStore *store ; GtkListStore *completion ; - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - BJB_TYPE_CONTROLLER, - BjbControllerPrivate); - priv = self->priv ; + priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE + (self, BJB_TYPE_CONTROLLER, BjbControllerPrivate); /* Create the columns */ store = gtk_list_store_new (GD_MAIN_COLUMN_LAST, - G_TYPE_STRING, // urn - G_TYPE_STRING, // uri - G_TYPE_STRING, // name - G_TYPE_STRING, // author - GDK_TYPE_PIXBUF, // icon then note - G_TYPE_LONG, // mtime - G_TYPE_BOOLEAN); // state + G_TYPE_STRING, // urn + G_TYPE_STRING, // uri + G_TYPE_STRING, // name + G_TYPE_STRING, // author + GDK_TYPE_PIXBUF, // icon then note + G_TYPE_INT64, // mtime + G_TYPE_BOOLEAN, // state + G_TYPE_UINT); // pulse priv->model = GTK_TREE_MODEL(store) ; - priv->notes_to_show = NULL; + priv->items_to_show = NULL; + priv->n_items_to_show = BJB_ITEMS_SLICE; priv->needle = NULL; + priv->collection = NULL; priv->connected = FALSE; completion = gtk_list_store_new (1, G_TYPE_STRING); @@ -105,13 +119,9 @@ } static void -free_notes_store(BjbController *self) +free_items_store (BjbController *self) { - GtkListStore *store ; - - store = GTK_LIST_STORE (self->priv->model) ; - - gtk_list_store_clear(store); + gtk_list_store_clear (GTK_LIST_STORE (self->priv->model)); } static void @@ -120,12 +130,15 @@ BjbController *self = BJB_CONTROLLER(object); BjbControllerPrivate *priv = self->priv ; - free_notes_store (self); + g_object_unref (priv->model); g_object_unref (priv->completion); g_free (priv->needle); - g_list_free (priv->notes_to_show); + g_list_free (priv->items_to_show); + + if (priv->collection) + g_free (priv->collection); G_OBJECT_CLASS (bjb_controller_parent_class)->finalize (object); } @@ -143,6 +156,9 @@ case PROP_BOOK: g_value_set_object (value, self->priv->book); break; + case PROP_WINDOW: + g_value_set_object (value, self->priv->window); + break; case PROP_NEEDLE: g_value_set_string(value, self->priv->needle); break; @@ -168,8 +184,11 @@ case PROP_BOOK: bjb_controller_set_book(self,g_value_get_object(value)); break; + case PROP_WINDOW: + self->priv->window = g_value_get_object (value); + break; case PROP_NEEDLE: - bjb_controller_set_needle(self,g_value_get_string(value)); + self->priv->needle = g_strdup (g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -177,322 +196,439 @@ } } +/* get iter at this item + * or get iter at first note if item == NULL*/ +static gboolean +bjb_controller_get_iter (BjbController *self, + BijiItem *item, + GtkTreeIter **iter) +{ + BjbControllerPrivate *priv = self->priv; + gboolean retval = FALSE; + gboolean try; + const gchar *needle = NULL; + + if (item && BIJI_IS_ITEM (item)) + needle = biji_item_get_uuid (item); + + try = gtk_tree_model_get_iter_first (priv->model, *iter); + + if (!try) + *iter = NULL; + + while (try) + { + gchar *item_path; + gtk_tree_model_get (priv->model, *iter, GD_MAIN_COLUMN_URI, &item_path,-1); + + /* If we look for the item, check by uid */ + if (needle && g_strcmp0 (item_path, needle) == 0) + retval = TRUE; + + /* Else we check for the first note */ + else if (!needle && BIJI_IS_NOTE_OBJ ( + biji_note_book_get_item_at_path (self->priv->book, item_path))) + retval = TRUE; + + g_free (item_path); + + if (retval) + break; + + else + try = gtk_tree_model_iter_next (priv->model, *iter); + } + + return retval; +} + +/* Either append, prepend, or, if iter provider, + * prepend just before this iter */ static void -bjb_controller_add_note (BjbController *self, - BijiNoteObj *note, - gboolean prepend) +bjb_controller_add_item (BjbController *self, + BijiItem *item, + gboolean prepend, + GtkTreeIter *sibling) { GtkTreeIter iter; GtkListStore *store; GdkPixbuf *pix = NULL; - gchar *path; + const gchar *uuid; - g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); + g_return_if_fail (BIJI_IS_ITEM (item)); store = GTK_LIST_STORE (self->priv->model); - if (prepend) + if (sibling) + gtk_list_store_insert_before (store, &iter, sibling); + + else if (prepend) gtk_list_store_insert (store, &iter, 0); else gtk_list_store_append (store, &iter); /* Only append notes which are not templates. Currently useless */ - if ( biji_note_obj_is_template (note) == FALSE) - { - - /* First , if there is a gd main view , and if gd main view - * is a list, then load the 16x16 note pixbuf - * This is probably not correct but allows a nice list view */ - if (self->priv->cur) - { - if (gd_main_view_get_view_type (self->priv->cur) == GD_MAIN_VIEW_LIST) - pix = get_note_pixbuf(); - } - - /* If no gd-main-view or if not list view, - * load the icon for grid */ - if (!pix) - pix = biji_note_obj_get_icon (note); - - /* Appart from pixbuf, both icon & list view types - * currently use the same model */ - path = biji_note_obj_get_path (note); - - gtk_list_store_set (store, &iter, - GD_MAIN_COLUMN_ID, path, - GD_MAIN_COLUMN_URI, path, - GD_MAIN_COLUMN_PRIMARY_TEXT, biji_note_obj_get_title (note), - GD_MAIN_COLUMN_SECONDARY_TEXT, NULL, - GD_MAIN_COLUMN_ICON, pix, - GD_MAIN_COLUMN_MTIME, biji_note_obj_get_last_change_date_sec (note), - GD_MAIN_COLUMN_SELECTED, FALSE, - -1); - - g_free (path); - } + if (BIJI_IS_NOTE_OBJ (item) + && biji_note_obj_is_template (BIJI_NOTE_OBJ (item))) + return; + /* First , if there is a gd main view , and if gd main view + * is a list, then load the smaller emblem */ + if (bjb_window_base_get_view_type (self->priv->window) == BJB_WINDOW_BASE_MAIN_VIEW + && bjb_window_base_get_main_view (self->priv->window) + && bjb_main_view_get_view_type + (bjb_window_base_get_main_view (self->priv->window)) == GD_MAIN_VIEW_LIST) + pix = biji_item_get_emblem (item); + + /* Else, load the icon */ + if (!pix) + pix = biji_item_get_icon (item); + + /* Appart from pixbuf, both icon & list view types + * currently use the same model */ + uuid = biji_item_get_uuid (item); + + gtk_list_store_set (store, &iter, + GD_MAIN_COLUMN_ID, uuid, + GD_MAIN_COLUMN_URI, uuid, + GD_MAIN_COLUMN_PRIMARY_TEXT, biji_item_get_title (item), + GD_MAIN_COLUMN_SECONDARY_TEXT, NULL, + GD_MAIN_COLUMN_ICON, pix, + GD_MAIN_COLUMN_MTIME, biji_item_get_mtime (item), + -1); } /* If the user searches for notes, is the note searched? */ static void -bjb_controller_add_note_if_needed (BjbController *self, - BijiNoteObj *note, - gboolean prepend) -{ - gboolean need_to_add_note =FALSE; - gchar *title, *content; - GList *collections, *l; +bjb_controller_add_item_if_needed (BjbController *self, + BijiItem *item, + gboolean prepend, + GtkTreeIter *sibling) +{ + gboolean need_to_add_item = FALSE; + const gchar *content; + const gchar *title; BjbControllerPrivate *priv = self->priv; /* No note... */ - if (!note || !BIJI_IS_NOTE_OBJ (note)) + if (!item || !BIJI_IS_ITEM (item)) return; /* No search - we add the note */ if (!priv->needle || g_strcmp0 (priv->needle, "")==0) { - need_to_add_note = TRUE; + if (!priv->collection) + need_to_add_item = TRUE; + + /* To do : we might have a collection + * but have to udpate the view */ } /* a search.. we test...*/ else { + title = biji_item_get_title (item); - title = biji_note_obj_get_title (note); - content = biji_note_get_raw_text (note); - - /* matching title or content ... */ - if (g_strrstr (title , priv->needle) != NULL || - g_strrstr (content, priv->needle) != NULL ) - need_to_add_note = TRUE; + /* matching title... */ + if (g_strrstr (title, priv->needle) != NULL) + need_to_add_item = TRUE; - /* last chance, matching collections... */ - else + /* matching content */ + else if (BIJI_IS_NOTE_OBJ (item)) { - collections = biji_note_obj_get_collections (note); - - for (l = collections; l != NULL; l=l->next) - { - if (g_strrstr (l->data, title)) - { - need_to_add_note = TRUE; - break; - } - } - - g_list_free (collections); + content = biji_note_obj_get_raw_text (BIJI_NOTE_OBJ (item)); + if (g_strrstr (content, priv->needle) != NULL) + need_to_add_item = TRUE; } } - if (need_to_add_note) - bjb_controller_add_note (self, note, prepend); + if (need_to_add_item) + bjb_controller_add_item (self, item, prepend, sibling); } + +static gint +most_recent_item_first (gconstpointer a, gconstpointer b) +{ + BijiItem *one = BIJI_ITEM (a); + BijiItem *other = BIJI_ITEM (b); + glong result = 0; + + /* Always sort collections before notes */ + if (BIJI_IS_COLLECTION (a)) + { + if (BIJI_IS_NOTE_OBJ (b)) + result = -1; + } + + else if (BIJI_IS_COLLECTION (b)) + { + result = 1; + } + + /* If comparing two notes or + * two collections, use the most recent cookbook */ + else + { + result = biji_item_get_mtime (other) + - biji_item_get_mtime (one); + } + + return result; +} + + + +static void +sort_items (GList **to_show) +{ + *to_show = g_list_sort (*to_show, most_recent_item_first); +} + + void bjb_controller_update_view (BjbController *self) { - GList *notes, *l; + GList *items, *l; /* Do not update if nothing to show */ - if (!self->priv->cur) + if (bjb_window_base_get_view_type (self->priv->window) != BJB_WINDOW_BASE_MAIN_VIEW) return; - notes = self->priv->notes_to_show ; - free_notes_store (self); + items = self->priv->items_to_show ; + free_items_store (self); - for (l = notes; l != NULL; l = l->next) + sort_items (&items); + + for (l = items; l != NULL; l = l->next) { - bjb_controller_add_note (self, l->data, FALSE); + bjb_controller_add_item (self, l->data, FALSE, NULL); } } -static gint -most_recent_note_first (gconstpointer a, gconstpointer b) -{ - BijiNoteObj *one = BIJI_NOTE_OBJ (a); - BijiNoteObj *other = BIJI_NOTE_OBJ (b); - - glong result = biji_note_obj_get_last_change_date_sec (other); - return result - biji_note_obj_get_last_change_date_sec (one); -} static void -sort_notes( BjbController *self) +notify_displayed_items_changed (BjbController *self) { - self->priv->notes_to_show = g_list_sort (self->priv->notes_to_show, - most_recent_note_first); + g_signal_emit (G_OBJECT (self), + bjb_controller_signals[DISPLAY_NOTES_CHANGED], + 0, + (self->priv->items_to_show != NULL), + self->priv->remaining_items); } static void -sort_and_update (BjbController *self) +update (BjbController *self) { - sort_notes (self); - bjb_controller_update_view (self); + /* If the user already edits a note, he does not want the view + * to go back */ + if (bjb_window_base_get_view_type (self->priv->window) != + BJB_WINDOW_BASE_NOTE_VIEW) + bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_MAIN_VIEW); + - g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0); + bjb_controller_update_view (self); + notify_displayed_items_changed (self); } + static void -update_controller_callback (GObject *source_object, - GAsyncResult *res, +update_controller_callback (GList *result, gpointer user_data) { - GList *result; - BjbController *self = BJB_CONTROLLER (user_data); + BjbController *self; + BjbControllerPrivate *priv; + GList *l; + gint i; + + self = BJB_CONTROLLER (user_data); + priv = self->priv; + priv->remaining_items = FALSE; - result = biji_get_notes_with_strings_or_collection_finish (source_object, res, self->priv->book); - self->priv->notes_to_show = result; - sort_and_update (self); -} + if (!result) + { + bjb_window_base_switch_to (priv->window, BJB_WINDOW_BASE_NO_RESULT); + return; + } + + sort_items (&result); + i = 0; + + /* We are supposed to show n items. While not reach, + * add to the list. As soon as reached, keep in mind that */ + + for (l=result ; l!= NULL ; l=l->next) + { + if (i< priv->n_items_to_show) + { + priv->items_to_show = g_list_prepend (priv->items_to_show, l->data); + i ++; + } + + else if (l->next != NULL) + { + priv->remaining_items = TRUE; + break; + } + } + + priv->items_to_show = g_list_reverse (priv->items_to_show); + update (self); +} void bjb_controller_apply_needle (BjbController *self) { BjbControllerPrivate *priv = self->priv; gchar *needle; + GList *all_notes; - if (priv->notes_to_show) - g_clear_pointer (&priv->notes_to_show, g_list_free); - needle = priv->needle; + g_clear_pointer (&priv->items_to_show, g_list_free); /* Show all notes */ if (needle == NULL || g_strcmp0 (needle,"") == 0) { - priv->notes_to_show = biji_note_book_get_notes (self->priv->book); - sort_and_update (self); + all_notes = biji_note_book_get_items (self->priv->book); + + /* If there are no note, report this */ + if (all_notes == NULL) + { + bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_NO_NOTE); + return; + } + + /* Otherwise do show existing notes */ + update_controller_callback (all_notes, self); return; } - biji_get_notes_with_string_or_collection_async (needle, update_controller_callback, self); + /* There is a research, apply lookup */ + biji_get_items_matching_async (self->priv->book, needle, update_controller_callback, self); } static void -on_needle_changed ( BjbController *self ) +on_needle_changed (BjbController *self) { bjb_controller_apply_needle (self); g_signal_emit (self, bjb_controller_signals[SEARCH_CHANGED], 0); } static void -add_note_to_completion(BijiNoteObj *note , BjbController *self) +add_item_to_completion (BijiItem *item, BjbController *self) { GtkListStore *store; GtkTreeIter iter; - store = GTK_LIST_STORE(self->priv->completion); + store = GTK_LIST_STORE (self->priv->completion); // Search Tag. gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, - biji_note_obj_get_title(note), + biji_item_get_title (item), -1); } static void refresh_completion(BjbController *self) { - GList *notes = biji_note_book_get_notes (self->priv->book); - gtk_list_store_clear(GTK_LIST_STORE(self->priv->completion)); - - if (notes) - { - g_list_foreach (notes, (GFunc)add_note_to_completion, self); - g_list_free (notes); - } -} + GList *items; -static gboolean -bjb_controller_get_iter_at_note (BjbController *self, BijiNoteObj *note, GtkTreeIter **iter) -{ - BjbControllerPrivate *priv = self->priv; - gchar *needle = biji_note_obj_get_path (note); - gboolean retval = FALSE; - gboolean still = gtk_tree_model_get_iter_first (priv->model, *iter); + gtk_list_store_clear (GTK_LIST_STORE (self->priv->completion)); + items = biji_note_book_get_items (self->priv->book); - while (still) + if (items) { - gchar *note_path; - - gtk_tree_model_get (priv->model, *iter, GD_MAIN_COLUMN_URI, ¬e_path,-1); - - if (g_strcmp0 (note_path, needle)==0) - retval = TRUE; - - g_free (note_path); - - if (retval) - break; - - else - still = gtk_tree_model_iter_next (priv->model, *iter); + g_list_foreach (items, (GFunc) add_item_to_completion, self); + g_list_free (items); } - - g_free (needle); - return retval; } + /* Depending on the change at data level, * the view has to be totaly refreshed or just amended */ static void on_book_changed (BijiNoteBook *book, BijiNoteBookChangeFlag flag, - gpointer *note_obj, + gpointer *biji_item, BjbController *self) { BjbControllerPrivate *priv = self->priv; - BijiNoteObj *note = BIJI_NOTE_OBJ (note_obj); + BijiItem *item = BIJI_ITEM (biji_item); GtkTreeIter iter; GtkTreeIter *p_iter = &iter; + g_mutex_lock (&priv->mutex); + switch (flag) { - /* If this is a *new* note, per def prepend - * But do not add a new note to a search window */ - case BIJI_BOOK_NOTE_ADDED: - bjb_controller_add_note_if_needed (self, note, TRUE); - priv->notes_to_show = g_list_prepend (priv->notes_to_show, note); - g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0); + /* If this is a *new* item, per def prepend */ + case BIJI_BOOK_ITEM_ADDED: + if (BIJI_IS_NOTE_OBJ (item)) + bjb_controller_get_iter (self, NULL, &p_iter); + + else if (BIJI_IS_COLLECTION (item)) + p_iter = NULL; + + bjb_controller_add_item_if_needed (self, item, TRUE, p_iter); + priv->n_items_to_show ++; + priv->items_to_show = g_list_prepend (priv->items_to_show, item); + notify_displayed_items_changed (self); break; - /* If the note is *amended*, then per definition we prepend. - * but if we add other ordering this does not work */ + /* Same comment, prepend but collection before note */ case BIJI_BOOK_NOTE_AMENDED: - if (bjb_controller_get_iter_at_note (self, note, &p_iter)) + if (bjb_controller_get_iter (self, item, &p_iter)) { gtk_list_store_remove (GTK_LIST_STORE (priv->model), p_iter); - bjb_controller_add_note_if_needed (self, note, TRUE); + + if (BIJI_IS_NOTE_OBJ (item)) + bjb_controller_get_iter (self, NULL, &p_iter); + + else if (BIJI_IS_COLLECTION (item)) + p_iter = NULL; + + bjb_controller_add_item_if_needed (self, item, TRUE, p_iter); } break; /* If color changed we just amend the icon */ - case BIJI_BOOK_NOTE_COLORED: - if (gd_main_view_get_view_type (priv->cur) == GD_MAIN_VIEW_ICON - && bjb_controller_get_iter_at_note (self, note, &p_iter)) + case BIJI_BOOK_ITEM_ICON_CHANGED: + if (bjb_main_view_get_view_type ( + bjb_window_base_get_main_view (self->priv->window)) == GD_MAIN_VIEW_ICON + && bjb_controller_get_iter (self, item, &p_iter)) gtk_list_store_set (GTK_LIST_STORE (priv->model), p_iter, - GD_MAIN_COLUMN_ICON, biji_note_obj_get_icon (note), -1); + GD_MAIN_COLUMN_ICON, biji_item_get_icon (item), -1); + else if (bjb_main_view_get_view_type ( + bjb_window_base_get_main_view (self->priv->window)) == GD_MAIN_VIEW_LIST + && bjb_controller_get_iter (self, item, &p_iter)) + gtk_list_store_set (GTK_LIST_STORE (priv->model), p_iter, + GD_MAIN_COLUMN_ICON, biji_item_get_emblem (item), -1); break; - case BIJI_BOOK_NOTE_TRASHED: - if (bjb_controller_get_iter_at_note (self, note, &p_iter)) + case BIJI_BOOK_ITEM_TRASHED: + if (bjb_controller_get_iter (self, item, &p_iter)) gtk_list_store_remove (GTK_LIST_STORE (priv->model), p_iter); - priv->notes_to_show = g_list_remove (priv->notes_to_show, note); - g_signal_emit (G_OBJECT (self), bjb_controller_signals[DISPLAY_NOTES_CHANGED],0); + priv->items_to_show = g_list_remove (priv->items_to_show, item); + notify_displayed_items_changed (self); break; default: bjb_controller_apply_needle (self); + if (flag == BIJI_BOOK_MASS_CHANGE) + bjb_window_base_set_active (self->priv->window, TRUE); } /* FIXME we refresh the whole completion model each time */ refresh_completion(self); + g_mutex_unlock (&priv->mutex); } -void +static void bjb_controller_connect (BjbController *self) { BjbControllerPrivate *priv = self->priv; @@ -503,6 +639,8 @@ G_CALLBACK(on_book_changed), self); priv->connected = TRUE; } + + bjb_controller_update_view (self); } void @@ -518,6 +656,8 @@ bjb_controller_constructed (GObject *obj) { G_OBJECT_CLASS(bjb_controller_parent_class)->constructed(obj); + + bjb_controller_connect (BJB_CONTROLLER (obj)); } static void @@ -542,15 +682,17 @@ G_TYPE_NONE, 0); - bjb_controller_signals[DISPLAY_NOTES_CHANGED] = g_signal_new ( "display-notes-changed" , + bjb_controller_signals[DISPLAY_NOTES_CHANGED] = g_signal_new ( "display-items-changed" , G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, + _biji_marshal_VOID__BOOLEAN_BOOLEAN, G_TYPE_NONE, - 0); + 2, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); properties[PROP_BOOK] = g_param_spec_object ("book", "Book", @@ -560,6 +702,14 @@ G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); + properties[PROP_WINDOW] = g_param_spec_object ("window", + "GtkWindow", + "BjbWindowBase", + BJB_TYPE_WINDOW_BASE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + properties[PROP_NEEDLE] = g_param_spec_string ("needle", "Needle", "String to search notes", @@ -581,11 +731,13 @@ } BjbController * -bjb_controller_new (BijiNoteBook *book, - gchar *needle) +bjb_controller_new (BijiNoteBook *book, + GtkWindow *window, + gchar *needle) { return g_object_new ( BJB_TYPE_CONTROLLER, "book", book, + "window", window, "needle", needle, NULL); } @@ -631,19 +783,60 @@ return self->priv->completion ; } + +gboolean +bjb_controller_shows_item (BjbController *self) +{ + return (self->priv->items_to_show != NULL); +} + +BijiCollection * +bjb_controller_get_collection (BjbController *self) +{ + return self->priv->collection; +} + + void -bjb_controller_set_main_view (BjbController *self, GdMainView *current) +bjb_controller_set_collection (BjbController *self, + BijiCollection *coll) { - /* Refresh the model */ - self->priv->cur = current; - bjb_controller_update_view (self); + /* Going back from a collection */ + if (!coll) + { + if (!self->priv->collection) + return; + + bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_SPINNER_VIEW); + self->priv->collection = NULL; + bjb_controller_apply_needle (self); + return; + } + + /* Opening an __existing__ collection */ + bjb_window_base_switch_to (self->priv->window, BJB_WINDOW_BASE_SPINNER_VIEW); + g_clear_pointer (&self->priv->items_to_show, g_list_free); + g_clear_pointer (&self->priv->needle, g_free); + + self->priv->needle = g_strdup (""); + self->priv->collection = coll; + biji_get_items_with_collection_async (self->priv->book, + biji_item_get_title (BIJI_ITEM (coll)), + update_controller_callback, + self); } -gboolean -bjb_controller_shows_notes (BjbController *self) + +void +bjb_controller_show_more (BjbController *self) { - if (self->priv->notes_to_show) - return TRUE; + self->priv->n_items_to_show += BJB_ITEMS_SLICE; + + /* FIXME: this method to refresh is just non sense */ - return FALSE; + if (self->priv->collection != NULL) + bjb_controller_set_collection (self, self->priv->collection); + + else + on_needle_changed (self); } diff -Nru bijiben-3.8.4/src/bjb-controller.h bijiben-3.10.2/src/bjb-controller.h --- bijiben-3.8.4/src/bjb-controller.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-controller.h 2013-11-11 20:52:06.000000000 +0000 @@ -23,7 +23,6 @@ #include #include - G_BEGIN_DECLS #define BJB_TYPE_CONTROLLER (bjb_controller_get_type ()) @@ -40,20 +39,22 @@ struct _BjbControllerClass { - GObjectClass parent_class; + GObjectClass parent_class; }; struct _BjbController { - GObject parent_instance; + GObject parent_instance; - BjbControllerPrivate *priv; + BjbControllerPrivate *priv; }; GType bjb_controller_get_type (void) G_GNUC_CONST; -BjbController * bjb_controller_new ( BijiNoteBook *book, gchar *needle ) ; +BjbController * bjb_controller_new (BijiNoteBook *book, + GtkWindow *bjb_window_base, + gchar *needle); void bjb_controller_apply_needle (BjbController *self); @@ -69,13 +70,16 @@ GtkTreeModel * bjb_controller_get_completion(BjbController *self); -void bjb_controller_connect (BjbController *self); - void bjb_controller_disconnect (BjbController *self); -void bjb_controller_set_main_view (BjbController *self, GdMainView *current); +gboolean bjb_controller_shows_item (BjbController *self); + +BijiCollection * bjb_controller_get_collection (BjbController *self); + +void bjb_controller_set_collection (BjbController *self, BijiCollection *coll); + -gboolean bjb_controller_shows_notes (BjbController *self); +void bjb_controller_show_more (BjbController *controller); G_END_DECLS diff -Nru bijiben-3.8.4/src/bjb-editor-toolbar.c bijiben-3.10.2/src/bjb-editor-toolbar.c --- bijiben-3.8.4/src/bjb-editor-toolbar.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-editor-toolbar.c 2013-11-11 20:52:06.000000000 +0000 @@ -106,130 +106,12 @@ static void bjb_editor_toolbar_init (BjbEditorToolbar *self) { - BjbEditorToolbarPrivate *priv; - GtkWidget *bin; - GtkWidget *image; - GdkPixbuf *pixbuf; - GtkStyleContext *context; - GdkRGBA transparent = {0.0, 0.0, 0.0, 0.0}; - GdkRGBA black = {0.0, 0.0, 0.0, 0.6}; - gchar *icons_path, *full_path; - GError *error = NULL; - - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_EDITOR_TOOLBAR, BjbEditorToolbarPrivate); - priv = self->priv; - - priv->accel = gtk_accel_group_new (); - - priv->widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0); - context = gtk_widget_get_style_context (priv->widget); - gtk_style_context_add_class (context, "osd"); - gtk_style_context_add_class (context, "toolbar"); - - priv->actor = gtk_clutter_actor_new_with_contents (priv->widget); - clutter_actor_set_opacity (priv->actor, 0); - g_object_set (priv->actor, "show-on-set-parent", FALSE, NULL); - - clutter_actor_set_easing_mode (priv->actor, CLUTTER_EASE_IN_QUAD); - clutter_actor_set_easing_duration (priv->actor, 300.0); - - bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (priv->actor)); - gtk_widget_override_background_color (bin, - GTK_STATE_FLAG_NORMAL, - &transparent); - - priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - priv->group = gtk_tool_item_new (); - gtk_container_add (GTK_CONTAINER (priv->group), priv->box); - gtk_container_add (GTK_CONTAINER (priv->widget), GTK_WIDGET(priv->group)); - gtk_widget_show_all (GTK_WIDGET (priv->group)); - - /* Cut */ - priv->toolbar_cut = gtk_button_new_with_label (_("Cut")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_cut); - gtk_widget_override_background_color (priv->toolbar_cut, - GTK_STATE_FLAG_NORMAL, - &black); - - /* Copy */ - priv->toolbar_copy = gtk_button_new_with_label (_("Copy")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_copy); - gtk_widget_override_background_color (priv->toolbar_copy, - GTK_STATE_FLAG_NORMAL, - &black); + self->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + self, + BJB_TYPE_EDITOR_TOOLBAR, + BjbEditorToolbarPrivate); - /* 'n paste */ - priv->toolbar_paste = gtk_button_new_with_label (_("Paste")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_paste); - gtk_widget_override_background_color (priv->toolbar_paste, - GTK_STATE_FLAG_NORMAL, - &black); - - /* GtkWidget *toolbar_bold */ - priv->toolbar_bold = gtk_button_new (); - image = gtk_image_new_from_icon_name ("format-text-bold-symbolic", GTK_ICON_SIZE_INVALID); - gtk_image_set_pixel_size (GTK_IMAGE (image), 24); - gtk_container_add (GTK_CONTAINER (priv->toolbar_bold), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_bold), _("Bold")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_bold); - gtk_widget_override_background_color (priv->toolbar_bold, - GTK_STATE_FLAG_NORMAL, - &black); - - /* GtkWidget *toolbar_italic; */ - priv->toolbar_italic = gtk_button_new (); - image = gtk_image_new_from_icon_name ("format-text-italic-symbolic", GTK_ICON_SIZE_INVALID); - gtk_image_set_pixel_size (GTK_IMAGE (image), 24); - gtk_container_add (GTK_CONTAINER (priv->toolbar_italic), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_italic), _("Italic")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_italic); - gtk_widget_override_background_color (priv->toolbar_italic, - GTK_STATE_FLAG_NORMAL, - &black); - - /* GtkWidget *toolbar_strike; */ - priv->toolbar_strike = gtk_button_new (); - image = gtk_image_new_from_icon_name ("format-text-strikethrough-symbolic", GTK_ICON_SIZE_INVALID); - gtk_image_set_pixel_size (GTK_IMAGE (image), 24); - gtk_container_add (GTK_CONTAINER (priv->toolbar_strike), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_strike), _("Strike")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_strike); - gtk_widget_override_background_color (priv->toolbar_strike, - GTK_STATE_FLAG_NORMAL, - &black); - - /* GtkWidget *toolbar_link; */ - priv->toolbar_link = gtk_button_new (); - - icons_path = (gchar*) bijiben_get_bijiben_dir (); - full_path = g_build_filename (icons_path, - "bijiben", - "icons", - "hicolor", - "scalable", - "actions", - "link.svg", - NULL); - - pixbuf = gdk_pixbuf_new_from_file (full_path, &error); - g_free (full_path); - - if (error) - g_warning ("error loading link icon : %s",error->message); - - image = gtk_image_new_from_pixbuf (pixbuf); - gtk_image_set_pixel_size (GTK_IMAGE (image), 24); - - gtk_container_add (GTK_CONTAINER (priv->toolbar_link), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_link), _("Link")); - gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_link); - gtk_widget_override_background_color (priv->toolbar_link, - GTK_STATE_FLAG_NORMAL, - &black); - - priv->glued = FALSE; - gtk_widget_show_all (GTK_WIDGET(priv->group)); - clutter_actor_show (priv->actor); + self->priv->accel = gtk_accel_group_new (); } static void @@ -407,6 +289,7 @@ static void link_callback (GtkWidget *button, BjbEditorToolbar *self) { + BjbSettings *settings; gchar *link; GtkWidget *window; BijiNoteObj *result; @@ -422,7 +305,10 @@ window = bjb_note_view_get_base_window (priv->view); book = bjb_window_base_get_book(window); - result = biji_note_book_get_new_note_from_string (book, link); + settings = bjb_app_get_settings (g_application_get_default ()); + result = biji_note_book_note_new (book, + link, + bjb_settings_get_default_location (settings)); /* Change result color. */ if (biji_note_obj_get_rgba (priv->note, &color)) @@ -434,16 +320,143 @@ static void bjb_editor_toolbar_constructed (GObject *obj) { - BjbEditorToolbar *self = BJB_EDITOR_TOOLBAR(obj); - BjbEditorToolbarPrivate *priv = self->priv ; - GtkWidget *view; - GtkWidget *window; + BjbEditorToolbar *self; + BjbEditorToolbarPrivate *priv; + GtkWidget *view; + GtkWidget *window; + GtkWidget *bin; + GtkWidget *image; + GdkPixbuf *pixbuf; + GtkStyleContext *context; + GdkRGBA transparent = {0.0, 0.0, 0.0, 0.0}; + GdkRGBA black = {0.0, 0.0, 0.0, 0.6}; + gchar *icons_path, *full_path; + GError *error = NULL; G_OBJECT_CLASS (bjb_editor_toolbar_parent_class)->constructed (obj); - window = bjb_note_view_get_base_window (priv->view); + self = BJB_EDITOR_TOOLBAR (obj); + priv = self->priv; + window = bjb_note_view_get_base_window (priv->view); gtk_window_add_accel_group (GTK_WINDOW (window), priv->accel); + priv->widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0); + context = gtk_widget_get_style_context (priv->widget); + gtk_style_context_add_class (context, "osd"); + gtk_style_context_add_class (context, "toolbar"); + + priv->actor = gtk_clutter_actor_new_with_contents (priv->widget); + clutter_actor_set_opacity (priv->actor, 0); + g_object_set (priv->actor, "show-on-set-parent", FALSE, NULL); + + clutter_actor_set_easing_mode (priv->actor, CLUTTER_EASE_IN_QUAD); + clutter_actor_set_easing_duration (priv->actor, 300.0); + + bin = gtk_clutter_actor_get_widget (GTK_CLUTTER_ACTOR (priv->actor)); + gtk_widget_override_background_color (bin, + GTK_STATE_FLAG_NORMAL, + &transparent); + + priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + priv->group = gtk_tool_item_new (); + gtk_container_add (GTK_CONTAINER (priv->group), priv->box); + gtk_container_add (GTK_CONTAINER (priv->widget), GTK_WIDGET(priv->group)); + gtk_widget_show_all (GTK_WIDGET (priv->group)); + + /* Cut */ + priv->toolbar_cut = gtk_button_new_with_label (_("Cut")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_cut); + gtk_widget_override_background_color (priv->toolbar_cut, + GTK_STATE_FLAG_NORMAL, + &black); + + /* Copy */ + priv->toolbar_copy = gtk_button_new_with_label (_("Copy")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_copy); + gtk_widget_override_background_color (priv->toolbar_copy, + GTK_STATE_FLAG_NORMAL, + &black); + + /* 'n paste */ + priv->toolbar_paste = gtk_button_new_with_label (_("Paste")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_paste); + gtk_widget_override_background_color (priv->toolbar_paste, + GTK_STATE_FLAG_NORMAL, + &black); + + + if (biji_note_obj_can_format (priv->note)) + { + + /* GtkWidget *toolbar_bold */ + priv->toolbar_bold = gtk_button_new (); + image = gtk_image_new_from_icon_name ("format-text-bold-symbolic", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (image), 24); + gtk_container_add (GTK_CONTAINER (priv->toolbar_bold), image); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_bold), _("Bold")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_bold); + gtk_widget_override_background_color (priv->toolbar_bold, + GTK_STATE_FLAG_NORMAL, + &black); + + /* GtkWidget *toolbar_italic; */ + priv->toolbar_italic = gtk_button_new (); + image = gtk_image_new_from_icon_name ("format-text-italic-symbolic", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (image), 24); + gtk_container_add (GTK_CONTAINER (priv->toolbar_italic), image); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_italic), _("Italic")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_italic); + gtk_widget_override_background_color (priv->toolbar_italic, + GTK_STATE_FLAG_NORMAL, + &black); + + /* GtkWidget *toolbar_strike; */ + priv->toolbar_strike = gtk_button_new (); + image = gtk_image_new_from_icon_name ("format-text-strikethrough-symbolic", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (image), 24); + gtk_container_add (GTK_CONTAINER (priv->toolbar_strike), image); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_strike), _("Strike")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_strike); + gtk_widget_override_background_color (priv->toolbar_strike, + GTK_STATE_FLAG_NORMAL, + &black); + + } + + /* GtkWidget *toolbar_link; */ + priv->toolbar_link = gtk_button_new (); + + icons_path = (gchar*) bijiben_get_bijiben_dir (); + full_path = g_build_filename (icons_path, + "bijiben", + "icons", + "hicolor", + "scalable", + "actions", + "link.svg", + NULL); + + pixbuf = gdk_pixbuf_new_from_file (full_path, &error); + g_free (full_path); + + if (error) + g_warning ("error loading link icon : %s",error->message); + + image = gtk_image_new_from_pixbuf (pixbuf); + gtk_image_set_pixel_size (GTK_IMAGE (image), 24); + + gtk_container_add (GTK_CONTAINER (priv->toolbar_link), image); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_link), + _("Copy selection to a new note")); + gtk_container_add (GTK_CONTAINER (priv->box), priv->toolbar_link); + gtk_widget_override_background_color (priv->toolbar_link, + GTK_STATE_FLAG_NORMAL, + &black); + + priv->glued = FALSE; + gtk_widget_show_all (GTK_WIDGET(priv->group)); + clutter_actor_show (priv->actor); + /* text selected --> fade in , and not selected --> fade out */ view = biji_note_obj_get_editor (priv->note); diff -Nru bijiben-3.8.4/src/bjb-empty-results-box.c bijiben-3.10.2/src/bjb-empty-results-box.c --- bijiben-3.8.4/src/bjb-empty-results-box.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-empty-results-box.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,202 @@ +/* + * Bijiben + * Copyright © 2012, 2013 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/* Based on code from: + * + Documents + * + Photos + */ + + +#include "config.h" + +#include + +#include "bjb-bijiben.h" +#include "bjb-empty-results-box.h" + +G_DEFINE_TYPE (BjbEmptyResultsBox, bjb_empty_results_box, GTK_TYPE_GRID); + +struct _BjbEmptyResultsBoxPrivate +{ + GtkWidget *primary_label; + GtkLabel *details_label; + BjbEmptyResultsBoxType type; +}; + + +static void +bjb_empty_results_box_constructed (GObject *object) +{ + BjbEmptyResultsBox *self; + BjbEmptyResultsBoxPrivate *priv; + GtkStyleContext *context; + GdkPixbuf *pixbuf; + GtkWidget *image, *labels_grid; + gchar *label, *icons_path, *note_icon_path, *markup; + GError *error; + + G_OBJECT_CLASS (bjb_empty_results_box_parent_class)->constructed (object); + self = BJB_EMPTY_RESULTS_BOX (object); + priv = self->priv; + + gtk_widget_set_halign (GTK_WIDGET (self), GTK_ALIGN_CENTER); + gtk_widget_set_hexpand (GTK_WIDGET (self), TRUE); + gtk_widget_set_valign (GTK_WIDGET (self), GTK_ALIGN_CENTER); + gtk_widget_set_vexpand (GTK_WIDGET (self), TRUE); + + gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_HORIZONTAL); + gtk_grid_set_column_spacing (GTK_GRID (self), 12); + + context = gtk_widget_get_style_context (GTK_WIDGET (self)); + gtk_style_context_add_class (context, "dim-label"); + + icons_path = (gchar*) bijiben_get_bijiben_dir (); + note_icon_path = g_build_filename (icons_path, + "bijiben", + "icons", + "hicolor", + "scalable", + "actions", + "note.svg", + NULL); + + error = NULL; + pixbuf = gdk_pixbuf_new_from_file (note_icon_path, &error); + + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + image = gtk_image_new_from_pixbuf (pixbuf); + g_free (note_icon_path); + + gtk_image_set_pixel_size (GTK_IMAGE (image), 64); + gtk_container_add (GTK_CONTAINER (self), image); + + labels_grid = gtk_grid_new (); + gtk_orientable_set_orientation (GTK_ORIENTABLE (labels_grid), GTK_ORIENTATION_VERTICAL); + gtk_grid_set_row_spacing (GTK_GRID (labels_grid), 12); + gtk_container_add (GTK_CONTAINER (self), labels_grid); + + label = _("No Notes Found"); + markup = g_markup_printf_escaped ("%s", label); + + priv->primary_label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (priv->primary_label), markup); + g_free (markup); + + gtk_widget_set_halign (priv->primary_label, GTK_ALIGN_START); + gtk_widget_set_vexpand (priv->primary_label, TRUE); + gtk_label_set_use_markup (GTK_LABEL (priv->primary_label), TRUE); + gtk_container_add (GTK_CONTAINER (labels_grid), priv->primary_label); + + + self->priv->type = BJB_EMPTY_RESULTS_TYPE; + label = ""; + self->priv->details_label = GTK_LABEL (gtk_label_new (label)); + gtk_label_set_use_markup (GTK_LABEL (self->priv->details_label), TRUE); + gtk_widget_set_halign (priv->primary_label, GTK_ALIGN_START); + // xalign: 0, + // max_width_chars: 24, + // wrap: true + + gtk_container_add (GTK_CONTAINER (labels_grid), GTK_WIDGET (self->priv->details_label)); + + gtk_widget_set_valign (priv->primary_label, GTK_ALIGN_CENTER); + gtk_widget_show_all (GTK_WIDGET (self)); +} + +void +bjb_empty_results_box_set_type (BjbEmptyResultsBox *self, + BjbEmptyResultsBoxType type) +{ + gchar *label; + + g_return_if_fail (BJB_IS_EMPTY_RESULTS_BOX (self)); + + if (type == self->priv->type) + return; + + switch (type) + { + case BJB_EMPTY_RESULTS_NO_NOTE: + gtk_label_set_label ( + self->priv->details_label, + _("Your notes collection is empty.\nClick the New button to create your first note.")); + break; + + case BJB_EMPTY_RESULTS_NO_RESULTS: + gtk_label_set_label ( + self->priv->details_label, + _("No result found for this research.")); + break; + + + /* + * Tracker is not installed, Bijiben cannot work, + * do not try to workaround + * TODO: PK + */ + + case BJB_EMPTY_RESULTS_TRACKER: + label = _("Oops"); + gtk_label_set_label ( + GTK_LABEL (self->priv->primary_label), label); + + gtk_label_set_label ( + self->priv->details_label, + _("Please install 'Tracker' then restart the application.")); + break; + + default: + break; + } + + self->priv->type = type; +} + +static void +bjb_empty_results_box_init (BjbEmptyResultsBox *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + BJB_TYPE_EMPTY_RESULTS_BOX, + BjbEmptyResultsBoxPrivate); +} + + +static void +bjb_empty_results_box_class_init (BjbEmptyResultsBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (BjbEmptyResultsBoxPrivate)); + + object_class->constructed = bjb_empty_results_box_constructed; +} + + +GtkWidget * +bjb_empty_results_box_new (void) +{ + return g_object_new (BJB_TYPE_EMPTY_RESULTS_BOX, NULL); +} + diff -Nru bijiben-3.8.4/src/bjb-empty-results-box.h bijiben-3.10.2/src/bjb-empty-results-box.h --- bijiben-3.8.4/src/bjb-empty-results-box.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-empty-results-box.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * Bijiben + * Copyright © 2012, 2013 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/* Based on code from: + * + Documents + * + Photos + */ + +#ifndef BJB_EMPTY_RESULTS_BOX_H +#define BJB_EMPTY_RESULTS_BOX_H + +#include + +G_BEGIN_DECLS + +typedef enum { + BJB_EMPTY_RESULTS_TYPE, + BJB_EMPTY_RESULTS_NO_NOTE, + BJB_EMPTY_RESULTS_NO_RESULTS, + BJB_EMPTY_RESULTS_TRACKER +} BjbEmptyResultsBoxType; + +#define BJB_TYPE_EMPTY_RESULTS_BOX (bjb_empty_results_box_get_type ()) + +#define BJB_EMPTY_RESULTS_BOX(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + BJB_TYPE_EMPTY_RESULTS_BOX, BjbEmptyResultsBox)) + +#define BJB_EMPTY_RESULTS_BOX_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + BJB_TYPE_EMPTY_RESULTS_BOX, BjbEmptyResultsBoxClass)) + +#define BJB_IS_EMPTY_RESULTS_BOX(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + BJB_TYPE_EMPTY_RESULTS_BOX)) + +#define BJB_IS_EMPTY_RESULTS_BOX_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + BJB_TYPE_EMPTY_RESULTS_BOX)) + +#define BJB_EMPTY_RESULTS_BOX_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + BJB_TYPE_EMPTY_RESULTS_BOX, BjbEmptyResultsBoxClass)) + +typedef struct _BjbEmptyResultsBox BjbEmptyResultsBox; +typedef struct _BjbEmptyResultsBoxClass BjbEmptyResultsBoxClass; +typedef struct _BjbEmptyResultsBoxPrivate BjbEmptyResultsBoxPrivate; + +struct _BjbEmptyResultsBox +{ + GtkGrid parent_instance; + BjbEmptyResultsBoxPrivate *priv; +}; + +struct _BjbEmptyResultsBoxClass +{ + GtkGridClass parent_class; +}; + +GType bjb_empty_results_box_get_type (void) G_GNUC_CONST; + +GtkWidget *bjb_empty_results_box_new (void); + +void bjb_empty_results_box_set_type (BjbEmptyResultsBox *self, + BjbEmptyResultsBoxType type); + +G_END_DECLS + +#endif /* BJB_EMPTY_RESULTS_BOX_H */ diff -Nru bijiben-3.8.4/src/bjb-import-dialog.c bijiben-3.10.2/src/bjb-import-dialog.c --- bijiben-3.8.4/src/bjb-import-dialog.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-import-dialog.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,559 @@ +/* + * bjb-import-dialog.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see .*/ + + +/* TODO + * + * - better label for dialog (pango for head label) + * - maybe align diffrently + * - we check if apps are installed. rather check for notes... + * - we might also trigger spinner view when import runs + * - code : move import-notes to libbiji completely + */ + + +#include "config.h" + +#include + +#include "bjb-bijiben.h" +#include "bjb-import-dialog.h" + + +#define IMPORT_EMBLEM_WIDTH 32 +#define IMPORT_EMBLEM_HEIGHT 32 + + + + +enum { + PROP_0, + PROP_APPLICATION, + NUM_PROPERTIES +}; + + +static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; + +typedef struct +{ + GtkWidget *overlay; + GtkWidget *widget; + GtkWidget *toggle; + + gboolean selected; + gchar *location; + +} ImportDialogChild; + + +struct BjbImportDialogPrivate_ +{ + + GtkApplication *bijiben; + GtkListBox *box; + + + /* Select spec. foder */ + + GtkWidget *cust_box; + GtkWidget *browser; + ImportDialogChild *custom; + + /* paths and Confirm button */ + + GHashTable *locations; + GtkWidget *go_go_go; +}; + + +G_DEFINE_TYPE (BjbImportDialog, bjb_import_dialog, GTK_TYPE_DIALOG) + + + +static ImportDialogChild * +import_dialog_child_new () +{ + ImportDialogChild *retval = g_slice_new (ImportDialogChild); + + retval->overlay = NULL; + retval->widget = NULL; + retval->toggle = NULL; + + retval->selected = FALSE; + retval->location = NULL; + + return retval; +} + + +static void +import_dialog_child_free (ImportDialogChild *child) +{ + g_free (child->location); + g_slice_free (ImportDialogChild, child); +} + + +/* First try to find the real icon + * might use app_info here */ + +static GdkPixbuf * +get_app_icon (gchar *app_name) +{ + gint i; + GdkPixbuf *retval= NULL; + const gchar * const *paths = g_get_system_data_dirs (); + gchar *app_svg = g_strdup_printf ("%s.svg", app_name); + + for (i=0; paths[i] != NULL; i++) + { + gchar *path; + GError *error = NULL; + + path = g_build_filename (paths[i], "icons", "hicolor", + "scalable", "apps", app_svg, NULL); + retval = gdk_pixbuf_new_from_file (path, &error); + g_free (path); + + if (!error && GDK_IS_PIXBUF (retval)) + break; + + else + retval = NULL; + } + + g_free (app_svg); + return retval; +} + + +static inline GQuark +application_quark (void) +{ + static GQuark quark; + + if (G_UNLIKELY (quark == 0)) + quark = g_quark_from_static_string ("bjb-application"); + + return quark; +} + + +static GtkWidget * +child_toggle_new () +{ + GtkWidget *w; + + w = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (w), 38); + gtk_widget_show (w); + return w; +} + + +/* row_activated + * When an item is activated + * Check for the location + * Show or delete the visible toggle + * Add or remove location from import paths */ + +static void +toggle_widget (BjbImportDialog *self, + GObject *widget) +{ + BjbImportDialogPrivate *priv = self->priv; + ImportDialogChild *child; + GtkStyleContext *context; + GList *keys; + + child = g_object_get_qdata (widget, application_quark ()); + + if (!child->selected && child->location == NULL) + return; + + child->selected = !child->selected; + + + if (child->selected) + { + child->toggle = child_toggle_new (); + gtk_overlay_add_overlay (GTK_OVERLAY (child->overlay), child->toggle); + + g_hash_table_add (priv->locations, child->location); + } + + else + { + if (child->toggle && GTK_IS_WIDGET (child->toggle)) + gtk_widget_destroy (child->toggle); + + g_hash_table_remove (priv->locations, child->location); + } + + context = gtk_widget_get_style_context (priv->go_go_go); + keys = g_hash_table_get_keys (priv->locations); + + if (keys) + { + gtk_style_context_add_class (context, "suggested-action"); + gtk_widget_set_sensitive (priv->go_go_go, TRUE); + g_list_free (keys); + } + + else + { + gtk_style_context_remove_class (context, "suggested-action"); + } + + gtk_widget_reset_style (priv->go_go_go); +} + + +static void +on_row_activated_cb (GtkListBox *list_box, + GtkListBoxRow *row, + gpointer user_data) +{ + toggle_widget (user_data, G_OBJECT (gtk_bin_get_child (GTK_BIN (row)))); +} + + +static void +header_func (GtkListBoxRow *row, + GtkListBoxRow *before_row, + gpointer user_data) +{ + if (before_row != NULL && gtk_list_box_row_get_header (row) != NULL) + gtk_list_box_row_set_header (row, gtk_separator_new (GTK_ORIENTATION_HORIZONTAL)); + + else + gtk_list_box_row_set_header (row, NULL); +} + + +static void +on_file_set_cb (GtkWidget *chooser, + BjbImportDialog *dialog) +{ + gchar *location; + + /* Remove the former */ + + if (dialog->priv->custom->location) + { + g_hash_table_remove (dialog->priv->locations, + dialog->priv->custom->location); + g_clear_pointer (&dialog->priv->custom->location, g_free); + } + + + /* Handle the new : force toggle */ + + location = dialog->priv->custom->location = + gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (chooser)); + + if (location) + { + gtk_widget_set_sensitive (dialog->priv->cust_box, TRUE); + + dialog->priv->custom->selected = FALSE; + if (GTK_IS_WIDGET (dialog->priv->custom->toggle)) + gtk_widget_destroy (dialog->priv->custom->toggle); + + toggle_widget (dialog, G_OBJECT (dialog->priv->custom->overlay)); + return; + } + + gtk_widget_set_sensitive (dialog->priv->cust_box, FALSE); +} + + +static ImportDialogChild * +add_custom (BjbImportDialog *self) +{ + BjbImportDialogPrivate *priv; + GtkWidget *box, *w; + ImportDialogChild *child; + + priv = self->priv; + child = import_dialog_child_new (); + child->widget = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + child->overlay = gtk_overlay_new (); + gtk_container_add (GTK_CONTAINER (child->overlay), child->widget); + + /* Left group */ + priv->cust_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (box), priv->cust_box, TRUE, FALSE, 0); + + w = gtk_image_new_from_icon_name ("folder", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (w), 48); + gtk_widget_set_margin_left (w, 12); + gtk_widget_set_margin_right (w, 12); + gtk_container_add (GTK_CONTAINER (priv->cust_box), w); + + + w = gtk_label_new (_("Custom Location")); + gtk_widget_set_margin_right (w, 180); + gtk_container_add (GTK_CONTAINER (priv->cust_box), w); + gtk_widget_set_valign (w, GTK_ALIGN_CENTER); + gtk_box_pack_start (GTK_BOX (priv->cust_box), w, TRUE, FALSE, 0); + + gtk_widget_set_sensitive (priv->cust_box, FALSE); + + /* Right group */ + + priv->browser = + gtk_file_chooser_button_new ("", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (priv->browser), + g_get_user_data_dir ()); + gtk_box_pack_start (GTK_BOX (box), priv->browser, TRUE, FALSE, 0); + + g_signal_connect (priv->browser, "current-folder-changed", + G_CALLBACK (on_file_set_cb), self); + + g_object_set_qdata_full (G_OBJECT (child->overlay), application_quark (), + child, (GDestroyNotify) import_dialog_child_free); + + return child; +} + + +static ImportDialogChild * +add_application (gchar *app, + gchar *visible_label, + gchar *location) +{ + GtkWidget *box, *w; + GdkPixbuf *pix; + ImportDialogChild *child; + + child = import_dialog_child_new (); + child->widget = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + child->overlay = gtk_overlay_new (); + child->location = location; + gtk_container_add (GTK_CONTAINER (child->overlay), child->widget); + + if (location) + g_object_set_qdata_full (G_OBJECT (child->overlay), application_quark (), + child, (GDestroyNotify) import_dialog_child_free); + + /* If the icon is not found, consider the app is not installed + * to avoid the dialog showing the feature */ + + pix = get_app_icon (app); + + if (pix == NULL) + { + g_object_ref_sink (box); + import_dialog_child_free (child); + return NULL; + } + + w = gtk_image_new_from_pixbuf (pix); + gtk_widget_set_margin_left (w, 12); + gtk_container_add (GTK_CONTAINER (box), w); + + + w = gtk_label_new (visible_label); + gtk_widget_set_margin_right (w, 180); + gtk_container_add (GTK_CONTAINER (box), w); + gtk_widget_set_valign (w, GTK_ALIGN_CENTER); + gtk_box_pack_end (GTK_BOX (box), w, FALSE, FALSE, 0); + + gtk_widget_show_all (box); + return child; +} + + +static void +bjb_import_dialog_constructed (GObject *obj) +{ + G_OBJECT_CLASS(bjb_import_dialog_parent_class)->constructed(obj); + + GtkWidget *area, *label_box, *label; + gchar *path; + GList *windows; + ImportDialogChild *child; + BjbImportDialog *self = BJB_IMPORT_DIALOG (obj); + GtkDialog *dialog = GTK_DIALOG (obj); + GtkWindow *win = GTK_WINDOW (obj); + BjbImportDialogPrivate *priv = self->priv; + + /* Don't finalize locations with HashTable + * They belong to qdata in gtkwidgets */ + + priv->locations = g_hash_table_new (g_str_hash, g_str_equal); + + windows = gtk_application_get_windows (priv->bijiben); + + gtk_window_set_transient_for (win, g_list_nth_data (windows, 0)); + gtk_window_set_title (win, _("Import Notes")); + gtk_window_set_modal (win, TRUE); + + gtk_dialog_add_button (dialog, _("_Cancel"), GTK_RESPONSE_CANCEL); + + priv->go_go_go = gtk_dialog_add_button (dialog, _("Import"), GTK_RESPONSE_OK); + gtk_widget_set_sensitive (priv->go_go_go, FALSE); + + /* Dialog Label */ + area = gtk_dialog_get_content_area (dialog); + gtk_widget_set_margin_left (area, 12); + gtk_container_set_border_width (GTK_CONTAINER (area), 2); + gtk_widget_set_hexpand (area, TRUE); + gtk_widget_set_vexpand (area, TRUE); + + label_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + label = gtk_label_new (_("Select import location")); + gtk_widget_set_halign (label, GTK_ALIGN_START); + gtk_box_pack_start (GTK_BOX (label_box), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (area), label_box, TRUE, FALSE, 12); + + /* Dialog locations to import */ + + priv->box = GTK_LIST_BOX (gtk_list_box_new ()); + gtk_list_box_set_selection_mode (priv->box, GTK_SELECTION_NONE); + gtk_list_box_set_activate_on_single_click (priv->box, TRUE); + gtk_list_box_set_header_func (priv->box, (GtkListBoxUpdateHeaderFunc) header_func, NULL, NULL); + gtk_box_pack_start (GTK_BOX (area), GTK_WIDGET (priv->box) , TRUE, FALSE, 6); + g_signal_connect (priv->box, "row-activated", + G_CALLBACK (on_row_activated_cb), self); + + + /* Tomboy Gnote ~/.local/share are conditional + * these are only packed if app is installed */ + + path = g_build_filename (g_get_user_data_dir (), "tomboy", NULL); + child = add_application ("tomboy", _("Tomboy application"), path); + if (child) + gtk_container_add (GTK_CONTAINER (priv->box), child->overlay); + + + path = g_build_filename (g_get_user_data_dir (), "gnote", NULL); + child = add_application ("gnote", _("Gnote application"), path); + if (child) + gtk_container_add (GTK_CONTAINER (priv->box), child->overlay); + + + /* User decides path */ + + child = priv->custom = add_custom (self); + gtk_container_add (GTK_CONTAINER (priv->box), child->overlay); + + + gtk_widget_show_all (GTK_WIDGET (self)); +} + + +static void +bjb_import_dialog_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BjbImportDialog *self = BJB_IMPORT_DIALOG (object); + + switch (property_id) + { + case PROP_APPLICATION: + g_value_set_object (value, self->priv->bijiben); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +bjb_import_dialog_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BjbImportDialog *self = BJB_IMPORT_DIALOG (object); + + switch (property_id) + { + case PROP_APPLICATION: + self->priv->bijiben = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + + +static void +bjb_import_dialog_finalize (GObject *o) +{ + BjbImportDialog *self = BJB_IMPORT_DIALOG (o); + g_hash_table_destroy (self->priv->locations); + + G_OBJECT_CLASS (bjb_import_dialog_parent_class)->finalize (o); +} + + +static void +bjb_import_dialog_class_init (BjbImportDialogClass *klass) +{ + GObjectClass* object_class = G_OBJECT_CLASS (klass); + g_type_class_add_private (klass, sizeof (BjbImportDialogPrivate)); + + + object_class->get_property = bjb_import_dialog_get_property; + object_class->set_property = bjb_import_dialog_set_property; + object_class->constructed = bjb_import_dialog_constructed; + object_class->finalize = bjb_import_dialog_finalize; + + properties[PROP_APPLICATION] = + g_param_spec_object ("application", + "Application", + "Bijiben Application", + GTK_TYPE_APPLICATION, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); +} + + +static void +bjb_import_dialog_init (BjbImportDialog *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_IMPORT_DIALOG, BjbImportDialogPrivate); +} + + +GtkDialog * +bjb_import_dialog_new (GtkApplication *bijiben) +{ + return g_object_new (BJB_TYPE_IMPORT_DIALOG, + "application", + bijiben, + NULL); +} + + +GList * +bjb_import_dialog_get_paths (BjbImportDialog *dialog) +{ + return g_hash_table_get_values (dialog->priv->locations); +} diff -Nru bijiben-3.8.4/src/bjb-import-dialog.h bijiben-3.10.2/src/bjb-import-dialog.h --- bijiben-3.8.4/src/bjb-import-dialog.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-import-dialog.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * bjb-import-dialog.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see .*/ + + + + +#ifndef BJB_IMPORT_DIALOG_H_ +#define BJB_IMPORT_DIALOG_H_ 1 + +#include + +G_BEGIN_DECLS + + +#define BJB_TYPE_IMPORT_DIALOG (bjb_import_dialog_get_type ()) +#define BJB_IMPORT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BJB_TYPE_IMPORT_DIALOG, BjbImportDialog)) +#define BJB_IMPORT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BJB_TYPE_IMPORT_DIALOG, BjbImportDialogClass)) +#define BJB_IS_IMPORT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BJB_TYPE_IMPORT_DIALOG)) +#define BJB_IS_IMPORT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BJB_TYPE_IMPORT_DIALOG)) +#define BJB_IMPORT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BJB_TYPE_IMPORT_DIALOG, BjbImportDialogClass)) + +typedef struct BjbImportDialog_ BjbImportDialog; +typedef struct BjbImportDialogClass_ BjbImportDialogClass; +typedef struct BjbImportDialogPrivate_ BjbImportDialogPrivate; + + +struct BjbImportDialog_ +{ + GtkDialog parent; + BjbImportDialogPrivate *priv; +}; + + +struct BjbImportDialogClass_ +{ + GtkDialogClass parent_class; +}; + + +GType bjb_import_dialog_get_type (void); + + +GtkDialog * bjb_import_dialog_new (GtkApplication *bijiben); + + +GList * bjb_import_dialog_get_paths (BjbImportDialog *dialog); + + +G_END_DECLS + +#endif /* BJB_IMPORT_DIALOG_H_ */ diff -Nru bijiben-3.8.4/src/bjb-load-more-button.c bijiben-3.10.2/src/bjb-load-more-button.c --- bijiben-3.8.4/src/bjb-load-more-button.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-load-more-button.c 2013-11-03 16:42:43.000000000 +0000 @@ -0,0 +1,235 @@ +/* + * Bjb - access, organize and share your bjb on GNOME + * Copyright © 2013 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/* Chained based on Photos, Documents */ + +#include "config.h" + +#include +#include +#include + + +#include "bjb-load-more-button.h" + +struct _BjbLoadMoreButtonPrivate +{ + GtkWidget *revealer; + GtkWidget *label; + GtkWidget *spinner; + + BjbController *controller; +}; + + + +enum +{ + PROP_0, + PROP_BJB_CONTROLLER, + NUM_PROPERTIES +}; + +static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; + + +G_DEFINE_TYPE (BjbLoadMoreButton, bjb_load_more_button, GTK_TYPE_BUTTON); + + +static void +on_displayed_items_changed (BjbController *controller, + gboolean some_is_shown, + gboolean remaining, + BjbLoadMoreButton *self) +{ + BjbLoadMoreButtonPrivate *priv; + + priv = self->priv; + gtk_spinner_stop (GTK_SPINNER (priv->spinner)); + gtk_widget_hide (priv->spinner); + gtk_label_set_label (GTK_LABEL (priv->label), _("Load More")); + + gtk_revealer_set_reveal_child (GTK_REVEALER (priv->revealer), remaining); +} + + +static void +bjb_load_more_button_clicked (GtkButton *button) +{ + BjbLoadMoreButton *self; + BjbLoadMoreButtonPrivate *priv; + + self = BJB_LOAD_MORE_BUTTON (button); + priv = self->priv; + + gtk_label_set_label (GTK_LABEL (priv->label), _("Loading...")); + gtk_widget_show (priv->spinner); + gtk_spinner_start (GTK_SPINNER (priv->spinner)); + + bjb_controller_show_more (self->priv->controller); +} + + +static void +bjb_load_more_button_constructed (GObject *object) +{ + BjbLoadMoreButton *self; + BjbLoadMoreButtonPrivate *priv; + + self = BJB_LOAD_MORE_BUTTON (object); + priv = self->priv; + + g_signal_connect (priv->controller, "display-items-changed", + G_CALLBACK (on_displayed_items_changed), self); + + G_OBJECT_CLASS (bjb_load_more_button_parent_class)->constructed (object); +} + + +static void +bjb_load_more_button_finalize (GObject *object) +{ + BjbLoadMoreButton *self; + BjbLoadMoreButtonPrivate *priv; + + self = BJB_LOAD_MORE_BUTTON (object); + priv = self->priv; + + if (priv->controller && BJB_IS_CONTROLLER (priv->controller)) + g_signal_handlers_disconnect_by_func + (priv->controller, on_displayed_items_changed, self); +} + + +static void +bjb_load_more_button_dispose (GObject *object) +{ + G_OBJECT_CLASS (bjb_load_more_button_parent_class)->dispose (object); +} + + +static void +bjb_load_more_button_init (BjbLoadMoreButton *self) +{ + BjbLoadMoreButtonPrivate *priv; + GtkStyleContext *context; + GtkWidget *child; + + priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButtonPrivate); + + context = gtk_widget_get_style_context (GTK_WIDGET (self)); + gtk_style_context_add_class (context, "documents-load-more"); + + child = gtk_grid_new (); + gtk_widget_set_halign (child, GTK_ALIGN_CENTER); + gtk_widget_set_hexpand (child, TRUE); + gtk_widget_set_visible (child, TRUE); + gtk_grid_set_column_spacing (GTK_GRID (child), 10); + gtk_container_add (GTK_CONTAINER (self), child); + + priv->spinner = gtk_spinner_new (); + gtk_widget_set_halign (priv->spinner, GTK_ALIGN_CENTER); + gtk_widget_set_no_show_all (priv->spinner, TRUE); + gtk_widget_set_size_request (priv->spinner, 16, 16); + gtk_container_add (GTK_CONTAINER (child), priv->spinner); + + priv->label = gtk_label_new (_("Load More")); + gtk_widget_set_visible (priv->label, TRUE); + gtk_container_add (GTK_CONTAINER (child), priv->label); + + priv->revealer = gtk_revealer_new (); + gtk_container_add (GTK_CONTAINER (priv->revealer), GTK_WIDGET (self)); +} + + +static void +bjb_load_more_button_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + BjbLoadMoreButton *self = BJB_LOAD_MORE_BUTTON (object); + + switch (prop_id) + { + case PROP_BJB_CONTROLLER: + g_value_set_object (value, self->priv->controller); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +bjb_load_more_button_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + BjbLoadMoreButton *self = BJB_LOAD_MORE_BUTTON (object); + + switch (prop_id) + { + case PROP_BJB_CONTROLLER: + self->priv->controller = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + +static void +bjb_load_more_button_class_init (BjbLoadMoreButtonClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkButtonClass *button_class = GTK_BUTTON_CLASS (class); + + object_class->constructed = bjb_load_more_button_constructed; + object_class->dispose = bjb_load_more_button_dispose; + object_class->finalize = bjb_load_more_button_finalize; + object_class->get_property = bjb_load_more_button_get_property; + object_class->set_property = bjb_load_more_button_set_property; + button_class->clicked = bjb_load_more_button_clicked; + + g_type_class_add_private (class, sizeof (BjbLoadMoreButtonPrivate)); + + properties[PROP_BJB_CONTROLLER] = g_param_spec_object ("controller", + "Controller", + "BjbController", + BJB_TYPE_CONTROLLER, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); +} + + +GtkWidget * +bjb_load_more_button_new (BjbController *controller) +{ + BjbLoadMoreButton *button; + + button = g_object_new (BJB_TYPE_LOAD_MORE_BUTTON, "controller", controller, NULL); + return button->priv->revealer; +} diff -Nru bijiben-3.8.4/src/bjb-load-more-button.h bijiben-3.10.2/src/bjb-load-more-button.h --- bijiben-3.8.4/src/bjb-load-more-button.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-load-more-button.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * Bjb - access, organize and share your bjb on GNOME + * Copyright © 2013 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/* Chained based on Photos, Documents */ + +#ifndef BJB_LOAD_MORE_BUTTON_H +#define BJB_LOAD_MORE_BUTTON_H + +#include + +#include "bjb-controller.h" + +G_BEGIN_DECLS + +#define BJB_TYPE_LOAD_MORE_BUTTON (bjb_load_more_button_get_type ()) + +#define BJB_LOAD_MORE_BUTTON(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButton)) + +#define BJB_LOAD_MORE_BUTTON_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButtonClass)) + +#define BJB_IS_LOAD_MORE_BUTTON(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + BJB_TYPE_LOAD_MORE_BUTTON)) + +#define BJB_IS_LOAD_MORE_BUTTON_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + BJB_TYPE_LOAD_MORE_BUTTON)) + +#define BJB_LOAD_MORE_BUTTON_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + BJB_TYPE_LOAD_MORE_BUTTON, BjbLoadMoreButtonClass)) + +typedef struct _BjbLoadMoreButton BjbLoadMoreButton; +typedef struct _BjbLoadMoreButtonClass BjbLoadMoreButtonClass; +typedef struct _BjbLoadMoreButtonPrivate BjbLoadMoreButtonPrivate; + +struct _BjbLoadMoreButton +{ + GtkButton parent_instance; + BjbLoadMoreButtonPrivate *priv; +}; + +struct _BjbLoadMoreButtonClass +{ + GtkButtonClass parent_class; +}; + +GType bjb_load_more_button_get_type (void) G_GNUC_CONST; + + + /* Does not return self, but its revealer */ + +GtkWidget *bjb_load_more_button_new (BjbController *controller); + +G_END_DECLS + +#endif /* BJB_LOAD_MORE_BUTTON_H */ diff -Nru bijiben-3.8.4/src/bjb-main-toolbar.c bijiben-3.10.2/src/bjb-main-toolbar.c --- bijiben-3.8.4/src/bjb-main-toolbar.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-main-toolbar.c 2013-11-11 20:52:06.000000000 +0000 @@ -16,47 +16,65 @@ */ #include +#include +#include "bjb-bijiben.h" +#include "bjb-color-button.h" #include "bjb-main-toolbar.h" +#include "bjb-note-tag-dialog.h" #include "bjb-rename-note.h" +#include "bjb-share.h" #include "bjb-window-base.h" -/* select_mode + two different standard mode */ +/* All needed toolbars */ typedef enum { BJB_TOOLBAR_0, BJB_TOOLBAR_STD_LIST, BJB_TOOLBAR_STD_ICON, BJB_TOOLBAR_SELECT, + BJB_TOOLBAR_NOTE_VIEW, BJB_TOOLBAR_NUM -} BjbToolbarType ; +} BjbToolbarType; + +/* Color Button */ +#define COLOR_SIZE 24 struct _BjbMainToolbarPrivate { /* Controllers */ - GdMainView *view; - BjbToolbarType type; - BjbMainView *parent; - BjbController *controller; - - /* Buttons */ - GtkWidget *new; - GtkWidget *list; - GtkWidget *grid; - GtkWidget *select; - - /* Signal Handlers */ - gulong finish_sig; - gulong update_selection; - gulong search_handler; - gulong display_notes; + BjbToolbarType type; + BjbMainView *parent; + BjbController *controller; + GtkWindow *window; + GtkWidget *back; + + /* Main View */ + GtkWidget *new; + GtkWidget *list; + GtkWidget *grid; + GtkWidget *select; + GtkWidget *search; + gulong finish_sig; + gulong update_selection; + gulong search_handler; + gulong display_notes; + gulong view_selection_changed; + + /* When note view */ + BijiNoteObj *note; + GtkWidget *color; + GtkWidget *share; + GtkWidget *menu; + gulong note_renamed; + gulong note_color_changed; + GtkAccelGroup *accel; }; /* GObject properties */ enum { PROP_0, - PROP_VIEW, PROP_PARENT, PROP_CONTROLLER, NUM_PROPERTIES @@ -66,73 +84,127 @@ #define BJB_MAIN_TOOLBAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BJB_TYPE_MAIN_TOOLBAR, BjbMainToolbarPrivate)) -G_DEFINE_TYPE (BjbMainToolbar, bjb_main_toolbar, GD_TYPE_MAIN_TOOLBAR); +G_DEFINE_TYPE (BjbMainToolbar, bjb_main_toolbar, GTK_TYPE_HEADER_BAR); + + +static void +bjb_main_toolbar_clear (BjbMainToolbar *self) +{ + g_clear_pointer (&self->priv->back ,gtk_widget_destroy); + g_clear_pointer (&self->priv->color ,gtk_widget_destroy); + g_clear_pointer (&self->priv->grid ,gtk_widget_destroy); + g_clear_pointer (&self->priv->list ,gtk_widget_destroy); + g_clear_pointer (&self->priv->menu ,gtk_widget_destroy); + g_clear_pointer (&self->priv->new ,gtk_widget_destroy); + g_clear_pointer (&self->priv->search ,gtk_widget_destroy); + g_clear_pointer (&self->priv->select ,gtk_widget_destroy); + g_clear_pointer (&self->priv->share ,gtk_widget_destroy); +} /* Callbacks */ static void on_new_note_clicked (GtkWidget *but, BjbMainView *view) { - BijiNoteObj *result ; - BijiNoteBook *book ; + BijiNoteObj *result; + BijiNoteBook *book; + BjbSettings *settings; /* append note to collection */ - book = bjb_window_base_get_book(bjb_main_view_get_window(view)); - result = biji_note_book_get_new_note_from_string (book, ""); + book = bjb_window_base_get_book (bjb_main_view_get_window (view)); + settings = bjb_app_get_settings (g_application_get_default ()); + result = biji_note_book_note_new (book, + NULL, + bjb_settings_get_default_location (settings)); /* Go to that note */ switch_to_note_view(view,result); } -static void populate_main_toolbar(BjbMainToolbar *self); +static void populate_main_toolbar (BjbMainToolbar *self); + +static gboolean +update_selection_label (BjbMainToolbar *self) +{ + GList *selected; + gint length; + gchar *label; + + selected = bjb_main_view_get_selected_items (self->priv->parent); + length = g_list_length (selected); + g_list_free (selected); + + if (length == 0) + label = g_strdup(_("Click on items to select them")); + else + label = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, "%d selected", "%d selected", length),length); + + + gtk_header_bar_set_title (GTK_HEADER_BAR (self), label); + gtk_header_bar_set_subtitle (GTK_HEADER_BAR (self), NULL); + g_free (label); + + return TRUE; +} void -on_selection_mode_changed (BjbMainToolbar *self) +on_view_selection_changed_cb (BjbMainToolbar *self) { GtkStyleContext *context; - GdMainView *view = self->priv->view; - GtkWidget *widget = GTK_WIDGET(self); + GtkWidget *widget = GTK_WIDGET (self); context = gtk_widget_get_style_context (widget); - if (!gd_main_view_get_selection_mode (view)) + g_return_if_fail (BJB_IS_MAIN_TOOLBAR (self)); + + if (!bjb_main_view_get_selection_mode (self->priv->parent)) gtk_style_context_remove_class (context, "selection-mode"); else gtk_style_context_add_class (context, "selection-mode"); gtk_widget_reset_style (widget); - populate_main_toolbar(self); - return ; + populate_main_toolbar (self); + + /* If we were already on selection mode, + * the bar is not totaly refreshed. just udpate label */ + if (self->priv->type == BJB_TOOLBAR_SELECT) + update_selection_label (self); + + return; } static void on_selection_mode_clicked (GtkWidget *button, BjbMainToolbar *self) { - if (gd_main_view_get_selection_mode (self->priv->view)) - gd_main_view_set_selection_mode (self->priv->view, FALSE); + if (bjb_main_view_get_selection_mode (self->priv->parent)) + { + bjb_main_view_set_selection_mode (self->priv->parent, FALSE); + } + /* Force refresh. We go to selection mode but nothing yet selected + * Thus no signal emited */ else - gd_main_view_set_selection_mode (self->priv->view, TRUE); - - on_selection_mode_changed (self); + { + bjb_main_view_set_selection_mode (self->priv->parent, TRUE); + on_view_selection_changed_cb (self); + } } static gboolean on_view_mode_clicked (GtkWidget *button, BjbMainToolbar *self) { - GdMainView *view = self->priv->view ; - GdMainViewType current = gd_main_view_get_view_type(view); + GdMainViewType current = bjb_main_view_get_view_type (self->priv->parent); switch ( current ) { case GD_MAIN_VIEW_ICON : - gd_main_view_set_view_type ( view ,GD_MAIN_VIEW_LIST ); + bjb_main_view_set_view_type (self->priv->parent ,GD_MAIN_VIEW_LIST ); break ; case GD_MAIN_VIEW_LIST : - gd_main_view_set_view_type ( view ,GD_MAIN_VIEW_ICON ); + bjb_main_view_set_view_type (self->priv->parent, GD_MAIN_VIEW_ICON ); break ; default: - gd_main_view_set_view_type ( view ,GD_MAIN_VIEW_ICON ); + bjb_main_view_set_view_type (self->priv->parent, GD_MAIN_VIEW_ICON ); } bjb_main_view_update_model (self->priv->parent); @@ -162,136 +234,233 @@ } static void -update_selection_buttons (BjbMainToolbarPrivate *priv) +on_search_button_clicked (BjbMainToolbarPrivate *priv) { - gboolean some_note_is_visible = bjb_controller_shows_notes (priv->controller); - - if (priv->grid) - gtk_widget_set_sensitive (priv->grid, some_note_is_visible); + gboolean show_bar; - if (priv->list) - gtk_widget_set_sensitive (priv->list, some_note_is_visible); - - gtk_widget_set_sensitive (priv->select, some_note_is_visible); + show_bar = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->search)); + bjb_window_base_set_show_search_bar (BJB_WINDOW_BASE (priv->window), show_bar); } -static gboolean -update_selection_label (GdMainView *view, BjbMainToolbar *self) +static void +add_search_button (BjbMainToolbar *self) { - GList *selected; - gint length; - gchar *label; + BjbMainToolbarPrivate *priv = self->priv; + GtkWidget *search_image; + gboolean active; - selected = gd_main_view_get_selection(view); - length = g_list_length (selected); - g_list_free (selected); + priv->search = gtk_toggle_button_new (); + search_image = gtk_image_new_from_icon_name ("edit-find-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->search), search_image); + gtk_widget_set_valign (priv->search, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->search), + "image-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->search); + gtk_widget_set_tooltip_text (priv->search, + _("Search note titles, content and collections")); - if (length == 0) - label = g_strdup(_("Click on items to select them")); - else - label = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, "%d selected", "%d selected", length),length); + active = bjb_window_base_get_show_search_bar (BJB_WINDOW_BASE (self->priv->window)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->search), active); - gd_main_toolbar_set_labels (GD_MAIN_TOOLBAR (self), NULL, label); - g_free (label); + g_signal_connect_swapped (priv->search, "clicked", + G_CALLBACK (on_search_button_clicked), priv); +} - return TRUE; +static void +update_selection_buttons (BjbController *controller, + gboolean some_item_is_visible, + gboolean remaining, + BjbMainToolbarPrivate *priv) +{ + if (priv->grid) + gtk_widget_set_sensitive (priv->grid, some_item_is_visible); + + if (priv->list) + gtk_widget_set_sensitive (priv->list, some_item_is_visible); + + gtk_widget_set_sensitive (priv->select, some_item_is_visible); } + static void populate_bar_for_selection (BjbMainToolbar *self) { - BjbMainToolbarPrivate *priv = self->priv; - GtkStyleContext *context; + BjbMainToolbarPrivate *priv; + GtkSizeGroup *size; + + priv = self->priv; + + /* Hide close button */ + gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self), FALSE); + + size = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); + + /* Search button */ + add_search_button (self); - priv->select = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self), - NULL,"Done", FALSE); - context = gtk_widget_get_style_context (priv->select); - gtk_style_context_add_class (context, "suggested-action"); + /* Select */ + priv->select = gtk_button_new_with_mnemonic (_("Cancel")); + gtk_widget_set_valign (priv->select, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->select), + "text-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->select); + + gtk_size_group_add_widget (GTK_SIZE_GROUP (size), priv->search); + gtk_size_group_add_widget (GTK_SIZE_GROUP (size), priv->select); + + g_object_unref (size); + + gtk_widget_set_tooltip_text (priv->select, _("Exit selection mode")); gtk_widget_reset_style (priv->select); g_signal_connect (priv->select, "clicked", G_CALLBACK (on_selection_mode_clicked), self); - priv->update_selection = g_signal_connect(priv->view, - "view-selection-changed", - G_CALLBACK(update_selection_label), - self); + if (priv->view_selection_changed == 0) + { + priv->view_selection_changed = g_signal_connect_swapped ( + self->priv->parent, "view-selection-changed", + G_CALLBACK (on_view_selection_changed_cb), self); + } - update_selection_label(priv->view,self); + update_selection_label (self); } static void update_label_for_standard (BjbMainToolbar *self) { BjbMainToolbarPrivate *priv = self->priv; - gchar *needle = bjb_controller_get_needle (priv->controller); - gchar *label ; - - if (needle && g_strcmp0 (needle, "") !=0) + BijiCollection *coll; + gchar *needle, *label; + + coll = bjb_controller_get_collection (priv->controller); + needle = bjb_controller_get_needle (priv->controller); + + if (coll) + label = g_strdup_printf ("%s", biji_item_get_title (BIJI_ITEM (coll))); + + else if (needle && g_strcmp0 (needle, "") !=0) label = g_strdup_printf (_("Results for %s"), needle); else label = g_strdup (_("New and Recent")); - gd_main_toolbar_set_labels (GD_MAIN_TOOLBAR (self), label, NULL); + + gtk_header_bar_set_title (GTK_HEADER_BAR (self), label); + gtk_header_bar_set_subtitle (GTK_HEADER_BAR (self), NULL); g_free (label); - self->priv->display_notes = g_signal_connect_swapped (self->priv->controller, - "display-notes-changed", - G_CALLBACK (update_selection_buttons), - self->priv); + self->priv->display_notes = g_signal_connect (self->priv->controller, + "display-items-changed", + G_CALLBACK (update_selection_buttons), + self->priv); +} + +static void +connect_main_view_handlers (BjbMainToolbar *self) +{ + BjbMainToolbarPrivate *priv = self->priv; + + if (priv->view_selection_changed == 0) + { + priv->view_selection_changed = g_signal_connect_swapped ( + self->priv->parent, "view-selection-changed", + G_CALLBACK (on_view_selection_changed_cb), self); + } +} + +static void +on_back_button_clicked (BjbMainToolbar *self) +{ + bjb_controller_set_collection (self->priv->controller, NULL); } static void populate_bar_for_standard(BjbMainToolbar *self) { BjbMainToolbarPrivate *priv = self->priv; - GtkWidget *bin = NULL; + BijiCollection *coll; + GtkWidget *select_image; + gboolean rtl; + GtkSizeGroup *size; + + rtl = (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL); /* Label */ update_label_for_standard (self); priv->search_handler = g_signal_connect_swapped (priv->controller, "search-changed", G_CALLBACK(update_label_for_standard), self); - /* New Note button */ - priv->new = gd_main_toolbar_add_button(GD_MAIN_TOOLBAR (self), - NULL, - _("New"), - TRUE); - gtk_widget_set_size_request (priv->new, 70, -1); - bin = gtk_bin_get_child (GTK_BIN (priv->new)); - - if (bin) - { - gint y_padding = 0; - gtk_misc_get_padding (GTK_MISC (bin), NULL, &y_padding); - gtk_misc_set_padding (GTK_MISC (bin), 12, y_padding); + /* Go back to all notes */ + coll = bjb_controller_get_collection (priv->controller); + + if (coll != NULL) + { + priv->back = gtk_button_new_from_icon_name (rtl ? "go-previous-rtl-symbolic" : "go-previous-symbolic", + GTK_ICON_SIZE_MENU); + gtk_widget_set_valign (priv->back, GTK_ALIGN_CENTER); + gtk_header_bar_pack_start (GTK_HEADER_BAR (self), priv->back); + + g_signal_connect_swapped (priv->back, "clicked", + G_CALLBACK (on_back_button_clicked), self); } - g_signal_connect(priv->new,"clicked", - G_CALLBACK(on_new_note_clicked),priv->parent); + /* New Note button */ + else + { + priv->new = gtk_button_new_with_label (_("New")); + gtk_widget_set_valign (priv->new, GTK_ALIGN_CENTER); + + gtk_header_bar_pack_start (GTK_HEADER_BAR (self), priv->new); + gtk_widget_set_size_request (priv->new, 70, -1); + + g_signal_connect(priv->new,"clicked", + G_CALLBACK(on_new_note_clicked),priv->parent); + } /* Go to selection mode */ - priv->select = gd_main_toolbar_add_button(GD_MAIN_TOOLBAR (self), - "object-select-symbolic", - NULL, - FALSE); + priv->select = gtk_button_new (); + select_image = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->select), select_image); + gtk_widget_set_valign (priv->select, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->select), + "image-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->select); + gtk_widget_set_tooltip_text (priv->select, _("Selection mode")); g_signal_connect (priv->select,"clicked", G_CALLBACK(on_selection_mode_clicked),self); + + /* Align buttons */ + size = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); + gtk_size_group_add_widget (GTK_SIZE_GROUP (size), priv->select); + gtk_size_group_add_widget (GTK_SIZE_GROUP (size), priv->new); + g_object_unref (size); + + /* Show close button */ + gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self), TRUE); + + /* Watch for main view changing */ + connect_main_view_handlers (self); } static void populate_bar_for_icon_view(BjbMainToolbar *self) { BjbMainToolbarPrivate *priv = self->priv; + GtkWidget *list_image; /* Switch to list */ priv->grid = NULL; - priv->list= gd_main_toolbar_add_button(GD_MAIN_TOOLBAR (self), - "view-list-symbolic", - NULL, - FALSE); + priv->list = gtk_button_new (); + list_image = gtk_image_new_from_icon_name ("view-list-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->list), list_image); + gtk_widget_set_valign (priv->list, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->list), + "image-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->list); + gtk_widget_set_tooltip_text (priv->list, + _("View notes and collections in a list")); g_signal_connect (priv->list, "clicked", G_CALLBACK(on_view_mode_clicked),self); @@ -303,13 +472,19 @@ populate_bar_for_list_view(BjbMainToolbar *self) { BjbMainToolbarPrivate *priv = self->priv; + GtkWidget *grid_image; /* Switch to icon view */ priv->list = NULL; - priv->grid = gd_main_toolbar_add_button(GD_MAIN_TOOLBAR (self), - "view-grid-symbolic", - NULL, - FALSE); + priv->grid = gtk_button_new (); + grid_image = gtk_image_new_from_icon_name ("view-grid-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->grid), grid_image); + gtk_widget_set_valign (priv->grid, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->grid), + "image-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->grid); + gtk_widget_set_tooltip_text (priv->grid, + _("View notes and collections in a grid")); g_signal_connect (priv->grid, "clicked", G_CALLBACK(on_view_mode_clicked),self); @@ -317,28 +492,338 @@ populate_bar_for_standard(self); } + +static void +disconnect_note_handlers (BjbMainToolbarPrivate *priv) +{ + if (priv->note_renamed != 0) + { + g_signal_handler_disconnect (priv->note, priv->note_renamed); + priv->note_renamed = 0; + } + + if (priv->note_color_changed != 0) + { + g_signal_handler_disconnect (priv->note, priv->note_color_changed); + priv->note_color_changed = 0; + } + + priv->note = NULL; +} + +static void +just_switch_to_main_view (BjbMainToolbar *self) +{ + disconnect_note_handlers (self->priv); + bjb_window_base_switch_to (BJB_WINDOW_BASE (self->priv->window), + BJB_WINDOW_BASE_MAIN_VIEW); +} + +static void +on_note_renamed (BijiNoteObj *note, + BjbMainToolbar *self) +{ + gtk_header_bar_set_title (GTK_HEADER_BAR (self), + biji_item_get_title (BIJI_ITEM (note))); + gtk_header_bar_set_subtitle (GTK_HEADER_BAR (self), NULL); +} + +static void +on_color_button_clicked (GtkColorButton *button, + BjbMainToolbar *bar) +{ + GdkRGBA color; + + if (!bar->priv->note) + return; + + gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), &color); + biji_note_obj_set_rgba (bar->priv->note, &color); +} + +static void +on_note_color_changed (BijiNoteObj *note, GtkColorButton *button) +{ + GdkRGBA color; + + if (biji_note_obj_get_rgba (note, &color)) + gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (button), &color); +} + +static void +on_note_content_changed (BjbMainToolbar *self) +{ + const gchar *str = NULL; + gboolean sensitive = TRUE; + + if (self->priv->note) + str = biji_note_obj_get_raw_text (self->priv->note); + + if (!str || g_strcmp0 (str, "") == 0 || g_strcmp0 (str, "\n") == 0) + sensitive = FALSE; + + gtk_widget_set_sensitive (self->priv->share, sensitive); +} + +static void +bjb_toggle_bullets (BijiWebkitEditor *editor) +{ + biji_webkit_editor_apply_format (editor, BIJI_BULLET_LIST); +} + +static void +bjb_toggle_list (BijiWebkitEditor *editor) +{ + biji_webkit_editor_apply_format (editor, BIJI_ORDER_LIST); +} + +static void +action_view_tags_callback (GtkWidget *item, gpointer user_data) +{ + BjbMainToolbar *self = BJB_MAIN_TOOLBAR (user_data); + GList *list = NULL; + + list = g_list_append (list, self->priv->note); + bjb_note_tag_dialog_new (self->priv->window, list); + g_list_free (list); +} + +static void +delete_item_callback (GtkWidget *item, gpointer user_data) +{ + BjbMainToolbar *self = BJB_MAIN_TOOLBAR (user_data); + + /* Delete the note from collection + * The deleted note will emit a signal. */ + biji_note_book_remove_item ( + bjb_window_base_get_book (GTK_WIDGET (self->priv->window)), + BIJI_ITEM (self->priv->note)); +} + + +GtkWidget * +bjb_note_menu_new (BjbMainToolbar *self) +{ + BjbMainToolbarPrivate *priv = self->priv; + GtkWidget *result, *item; + BijiWebkitEditor *editor; + + result = gtk_menu_new(); + editor = BIJI_WEBKIT_EDITOR (biji_note_obj_get_editor (priv->note)); + + /* Undo Redo separator */ + item = gtk_menu_item_new_with_label (_("Undo")); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (webkit_web_view_undo), editor); + gtk_widget_add_accelerator (item, "activate", priv->accel, GDK_KEY_u, + GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + + + item = gtk_menu_item_new_with_label (_("Redo")); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (webkit_web_view_redo), editor); + gtk_widget_add_accelerator (item, "activate", priv->accel, GDK_KEY_r, + GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + + if (biji_note_obj_can_format (priv->note)) + { + + /* Bullets, ordered list, separator */ + /* Bullets : unordered list format */ + item = gtk_menu_item_new_with_label (_("Bullets")); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (bjb_toggle_bullets), editor); + + + /* Ordered list as 1.mouse 2.cats 3.dogs */ + item = gtk_menu_item_new_with_label (_("Numbered List")); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (bjb_toggle_list), editor); + + + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (result), item); + + } + + + if (biji_item_is_collectable (BIJI_ITEM (priv->note))) + { + item = gtk_menu_item_new_with_label(_("Collections")); + gtk_menu_shell_append(GTK_MENU_SHELL(result),item); + g_signal_connect(item,"activate", + G_CALLBACK(action_view_tags_callback),self); + + } + + /* Delete Note */ + item = gtk_menu_item_new_with_label(_("Delete this Note")); + gtk_menu_shell_append(GTK_MENU_SHELL(result),item); + g_signal_connect(item,"activate", + G_CALLBACK(delete_item_callback),self); + + gtk_widget_show_all (result); + return result; +} + static void -populate_bar_switch(BjbMainToolbar *self) +populate_bar_for_note_view (BjbMainToolbar *self) { - switch (self->priv->type) + BjbMainToolbarPrivate *priv = self->priv; + GtkHeaderBar *bar = GTK_HEADER_BAR (self); + BjbSettings *settings; + GdkRGBA color; + BijiItem *item; + GtkWidget *share_image; + GtkWidget *menu_image; + gboolean rtl; + + priv->note = bjb_window_base_get_note (BJB_WINDOW_BASE (self->priv->window)); + item = BIJI_ITEM (priv->note); + + rtl = (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL); + + if (!priv->note) /* no reason this would happen */ + return; + + settings = bjb_app_get_settings (g_application_get_default()); + + /* Go to main view basically means closing note */ + priv->back = gtk_button_new_from_icon_name (rtl ? "go-previous-rtl-symbolic" : "go-previous-symbolic", + GTK_ICON_SIZE_MENU); + gtk_widget_set_valign (priv->back, GTK_ALIGN_CENTER); + gtk_header_bar_pack_start (bar, priv->back); + + g_signal_connect_swapped (priv->back, "clicked", + G_CALLBACK (just_switch_to_main_view), self); + gtk_widget_add_accelerator (priv->back, "activate", self->priv->accel, + GDK_KEY_w, GDK_CONTROL_MASK, GTK_ACCEL_MASK); + + /* Note Title */ + + gtk_header_bar_set_title (bar, biji_item_get_title (item)); + gtk_header_bar_set_subtitle (bar, NULL); + + self->priv->note_renamed = g_signal_connect (priv->note,"renamed", + G_CALLBACK (on_note_renamed), self); + + + /* Note Color */ + if (biji_item_has_color (BIJI_ITEM (priv->note))) + { + if (!biji_note_obj_get_rgba (priv->note, &color)) + { + gchar *default_color; + + g_object_get (G_OBJECT(settings),"color", &default_color, NULL); + gdk_rgba_parse (&color, default_color); + g_free (default_color); + } + + priv->color = bjb_color_button_new (); + gtk_widget_set_tooltip_text (priv->color, _("Note color")); + gtk_widget_set_valign (priv->color, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->color), + "button"); + gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (priv->color), &color); + + + gtk_header_bar_pack_end (bar, priv->color); + gtk_widget_set_size_request (gtk_bin_get_child (GTK_BIN (priv->color)), + COLOR_SIZE, COLOR_SIZE); + gtk_widget_show (priv->color); + + g_signal_connect (priv->color, "color-set", + G_CALLBACK (on_color_button_clicked), self); + priv->note_color_changed = g_signal_connect (priv->note, "color-changed", + G_CALLBACK (on_note_color_changed), priv->color); + } + + /* Sharing */ + + priv->share = gtk_button_new (); + share_image = gtk_image_new_from_icon_name ("send-to-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->share), share_image); + gtk_widget_set_valign (priv->share, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->share), + "image-button"); + gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->share); + gtk_widget_set_tooltip_text (priv->share, _("Share note")); + + g_signal_connect (priv->share, "clicked", + G_CALLBACK (on_email_note_callback), priv->note); + + g_signal_connect_swapped (biji_note_obj_get_editor (priv->note), + "user-changed-contents", + G_CALLBACK (on_note_content_changed), + self); + + on_note_content_changed (self); + + /* Menu */ + + priv->menu = gtk_menu_button_new (); + menu_image = gtk_image_new_from_icon_name ("emblem-system-symbolic", GTK_ICON_SIZE_MENU); + gtk_button_set_image (GTK_BUTTON (priv->menu), menu_image); + gtk_widget_set_valign (priv->menu, GTK_ALIGN_CENTER); + gtk_style_context_add_class (gtk_widget_get_style_context (priv->menu), + "image-button"); + gtk_header_bar_pack_end (bar, priv->menu); + gtk_widget_set_tooltip_text (priv->menu, _("More options…")); + + /* Show close button */ + gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self), TRUE); + + gtk_menu_button_set_popup (GTK_MENU_BUTTON (priv->menu), + bjb_note_menu_new (self)); +} + +static void +populate_bar_switch (BjbMainToolbar *self) +{ + BjbMainToolbarPrivate *priv; + + priv = self->priv; + + switch (priv->type) { case BJB_TOOLBAR_SELECT: populate_bar_for_selection (self); break; case BJB_TOOLBAR_STD_ICON: + add_search_button (self); populate_bar_for_icon_view(self); - update_selection_buttons (self->priv); + update_selection_buttons (priv->controller, + bjb_controller_shows_item (priv->controller), + TRUE, + self->priv); break; case BJB_TOOLBAR_STD_LIST: + add_search_button (self); populate_bar_for_list_view(self); - update_selection_buttons (self->priv); + update_selection_buttons (priv->controller, + bjb_controller_shows_item (priv->controller), + TRUE, + self->priv); + break; + + case BJB_TOOLBAR_NOTE_VIEW: + populate_bar_for_note_view (self); break; + /* Spinner, Empty Results */ default: - g_warning("Main Toolbar implementation is erroneous.\ - Please fill in a bug report"); + gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self), TRUE); + break; } gtk_widget_show_all (GTK_WIDGET (self)); @@ -349,21 +834,47 @@ { BjbMainToolbarPrivate *priv = self->priv; BjbToolbarType to_be = BJB_TOOLBAR_0 ; + BjbWindowViewType view_type; + + view_type = bjb_window_base_get_view_type (BJB_WINDOW_BASE (priv->window)); + + switch (view_type) + { + case BJB_WINDOW_BASE_NOTE_VIEW: + to_be = BJB_TOOLBAR_NOTE_VIEW; + break; + + case BJB_WINDOW_BASE_NO_NOTE: + case BJB_WINDOW_BASE_NO_RESULT: + case BJB_WINDOW_BASE_MAIN_VIEW: + + if (bjb_main_view_get_selection_mode (priv->parent) == TRUE) + to_be = BJB_TOOLBAR_SELECT; + + else if (bjb_main_view_get_view_type (priv->parent) == GD_MAIN_VIEW_ICON) + to_be = BJB_TOOLBAR_STD_ICON; - if (gd_main_view_get_selection_mode(priv->view) == TRUE) - to_be = BJB_TOOLBAR_SELECT; + else if (bjb_main_view_get_view_type (priv->parent) == GD_MAIN_VIEW_LIST) + to_be = BJB_TOOLBAR_STD_LIST; - else if (gd_main_view_get_view_type(priv->view) == GD_MAIN_VIEW_ICON) - to_be = BJB_TOOLBAR_STD_ICON; + break; + + /* Not really a toolbar, + * still used for Spinner */ + default: + to_be = BJB_TOOLBAR_0; + } - else if (gd_main_view_get_view_type(priv->view) == GD_MAIN_VIEW_LIST) - to_be = BJB_TOOLBAR_STD_LIST; - /* Simply clear then populate */ if (to_be != priv->type) { + /* If we leave a note view */ + if (priv->type == BJB_TOOLBAR_NOTE_VIEW) + disconnect_note_handlers (priv); + priv->type = to_be; - gd_main_toolbar_clear (GD_MAIN_TOOLBAR (self)); + bjb_main_toolbar_clear (self); + if (priv->search_handler != 0) { @@ -377,6 +888,12 @@ priv->display_notes = 0; } + if (priv->view_selection_changed != 0) + { + g_signal_handler_disconnect (priv->parent, priv->view_selection_changed); + priv->view_selection_changed = 0; + } + populate_bar_switch (self); } } @@ -384,6 +901,13 @@ static void bjb_main_toolbar_constructed (GObject *obj) { + BjbMainToolbar *self = BJB_MAIN_TOOLBAR (obj); + + self->priv->accel = gtk_accel_group_new (); + gtk_window_add_accel_group (self->priv->window, self->priv->accel); + g_signal_connect_swapped (self->priv->window, "view-changed", + G_CALLBACK (populate_main_toolbar), self); + G_OBJECT_CLASS(bjb_main_toolbar_parent_class)->constructed(obj); } @@ -391,9 +915,27 @@ bjb_main_toolbar_init (BjbMainToolbar *self) { self->priv = BJB_MAIN_TOOLBAR_GET_PRIVATE(self); - self->priv->type = BJB_TOOLBAR_0 ; - self->priv->grid = NULL; - self->priv->list = NULL; + BjbMainToolbarPrivate *priv = self->priv; + + priv->type = BJB_TOOLBAR_0 ; + + priv->back = NULL; + priv->grid = NULL; + priv->list = NULL; + priv->search = NULL; + priv->search_handler = 0; + priv->display_notes = 0; + priv->view_selection_changed = 0; + + priv->accel = NULL; + priv->note = NULL; + priv->back = NULL; + priv->color = NULL; + priv->menu = NULL; + priv->share = NULL; + priv->note_renamed = 0; + priv->note_color_changed = 0; + g_signal_connect (self, "button-press-event", G_CALLBACK (on_button_press), NULL); } @@ -409,6 +951,9 @@ priv->search_handler = 0; } + gtk_window_remove_accel_group (priv->window, priv->accel); + disconnect_note_handlers (priv); + /* chain up */ G_OBJECT_CLASS (bjb_main_toolbar_parent_class)->finalize (object); } @@ -422,16 +967,13 @@ BjbMainToolbar *self = BJB_MAIN_TOOLBAR (object); switch (property_id) - { - case PROP_VIEW: - g_value_set_object (value, self->priv->view); - break; + { case PROP_PARENT: g_value_set_object (value, self->priv->parent); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; - } + } } static void @@ -443,12 +985,11 @@ BjbMainToolbar *self = BJB_MAIN_TOOLBAR (object); switch (property_id) - { - case PROP_VIEW: - bjb_main_toolbar_set_view(self,g_value_get_object(value)); - break; + { case PROP_PARENT: self->priv->parent = g_value_get_object(value); + self->priv->window = GTK_WINDOW ( + bjb_main_view_get_window (self->priv->parent)); break; case PROP_CONTROLLER: self->priv->controller = g_value_get_object (value); @@ -456,7 +997,7 @@ default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; - } + } } static void @@ -471,14 +1012,6 @@ object_class->constructed = bjb_main_toolbar_constructed; object_class->finalize = bjb_main_toolbar_finalize; - properties[PROP_VIEW] = g_param_spec_object ("view", - "View", - "View", - GD_TYPE_MAIN_VIEW, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS); - properties[PROP_PARENT] = g_param_spec_object ("parent", "Parent", "Parent", @@ -499,17 +1032,14 @@ } BjbMainToolbar * -bjb_main_toolbar_new (GdMainView *view, - BjbMainView *parent, +bjb_main_toolbar_new (BjbMainView *parent, BjbController *controller) { - /* Since heriting GdMainToolbar, we populate bar _after_ construct */ BjbMainToolbar *self; self = BJB_MAIN_TOOLBAR (g_object_new (BJB_TYPE_MAIN_TOOLBAR, "controller", controller, "parent", parent, - "view", view, NULL)); populate_main_toolbar(self); @@ -517,7 +1047,11 @@ } void -bjb_main_toolbar_set_view (BjbMainToolbar *self, GdMainView *view) +bjb_main_toolbar_set_search_toggle_state (BjbMainToolbar *self, + gboolean active) { - self->priv->view = view ; + g_return_if_fail (BJB_IS_MAIN_TOOLBAR (self)); + + if (self->priv->search) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->search), active); } diff -Nru bijiben-3.8.4/src/bjb-main-toolbar.h bijiben-3.10.2/src/bjb-main-toolbar.h --- bijiben-3.8.4/src/bjb-main-toolbar.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-main-toolbar.h 2013-10-31 22:53:14.000000000 +0000 @@ -1,6 +1,6 @@ /* * bijiben - * Copyright (C) Pierre-Yves Luyten 2012 + * Copyright (C) Pierre-Yves Luyten 2012, 2013 * bijiben is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -21,7 +21,6 @@ #include #include -#include #include "bjb-main-view.h" @@ -40,24 +39,25 @@ struct _BjbMainToolbarClass { - GdMainToolbarClass parent_class; + GtkHeaderBarClass parent_class; }; struct _BjbMainToolbar { - GdMainToolbar parent_instance; + GtkHeaderBar parent_instance; BjbMainToolbarPrivate *priv; }; -GType bjb_main_toolbar_get_type (void) G_GNUC_CONST; -BjbMainToolbar * bjb_main_toolbar_new (GdMainView *view, - BjbMainView *parent, - BjbController *controller); +GType bjb_main_toolbar_get_type (void) G_GNUC_CONST; -void on_selection_mode_changed (BjbMainToolbar *self); -void bjb_main_toolbar_set_view (BjbMainToolbar *self, GdMainView *view); +BjbMainToolbar *bjb_main_toolbar_new (BjbMainView *parent, + BjbController *controller); + + +void bjb_main_toolbar_set_search_toggle_state (BjbMainToolbar *self, + gboolean active); G_END_DECLS diff -Nru bijiben-3.8.4/src/bjb-main-view.c bijiben-3.10.2/src/bjb-main-view.c --- bijiben-3.8.4/src/bjb-main-view.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-main-view.c 2013-11-11 20:52:06.000000000 +0000 @@ -20,11 +20,10 @@ #include #include -#include "utils/bjb-icons-colors.h" - #include "bjb-app-menu.h" #include "bjb-bijiben.h" #include "bjb-controller.h" +#include "bjb-load-more-button.h" #include "bjb-main-toolbar.h" #include "bjb-main-view.h" #include "bjb-note-tag-dialog.h" @@ -46,6 +45,13 @@ static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; +enum { + VIEW_SELECTION_CHANGED, + BJB_MAIN_VIEW_SIGNALS +}; + +static guint bjb_main_view_signals [BJB_MAIN_VIEW_SIGNALS] = { 0 }; + /************************** Gobject ***************************/ struct _BjbMainViewPriv { @@ -58,18 +64,16 @@ /* Selection Mode */ BjbSelectionToolbar *select_bar; - /* Search Entry */ - BjbSearchToolbar *search_bar; - /* View Notes , model */ - GdMainView *view ; - BjbController *controller ; + GdMainView *view ; + BjbController *controller; + GtkWidget *load_more; /* Signals */ gulong key; - gulong button; gulong activated; gulong data; + gulong view_selection_changed; }; G_DEFINE_TYPE (BjbMainView, bjb_main_view, GTK_TYPE_BOX); @@ -79,6 +83,11 @@ { object->priv = G_TYPE_INSTANCE_GET_PRIVATE(object,BJB_TYPE_MAIN_VIEW,BjbMainViewPriv); + + object->priv->key = 0; + object->priv->activated = 0; + object->priv->data = 0; + object->priv->view_selection_changed =0; } static void @@ -93,9 +102,14 @@ BjbMainViewPriv *priv = self->priv; g_signal_handler_disconnect (priv->window, priv->key); - g_signal_handler_disconnect (priv->view, priv->button); g_signal_handler_disconnect (priv->view, priv->activated); g_signal_handler_disconnect (priv->view, priv->data); + g_signal_handler_disconnect (priv->view, priv->view_selection_changed); + + priv->key = 0; + priv->activated = 0; + priv->data = 0; + priv->view_selection_changed =0; } static void @@ -165,7 +179,6 @@ void switch_to_note_view (BjbMainView *self, BijiNoteObj *note) { - bjb_search_toolbar_disconnect (self->priv->search_bar); bjb_main_view_disconnect_handlers (self); bjb_window_base_switch_to_note (BJB_WINDOW_BASE (self->priv->window), note); } @@ -184,20 +197,31 @@ } static void -switch_to_note (BjbMainView *view, BijiNoteObj *to_open) +switch_to_item (BjbMainView *view, BijiItem *to_open) { - /* If the note is already opened in another window, just show it. */ - if (biji_note_obj_is_opened (to_open)) + if (BIJI_IS_NOTE_OBJ (to_open)) { - GList *notes ; + /* If the note is already opened in another window, just show it. */ + if (biji_note_obj_is_opened (BIJI_NOTE_OBJ (to_open))) + { + GList *notes ; - notes = gtk_application_get_windows(GTK_APPLICATION(g_application_get_default())); - g_list_foreach (notes, show_window_if_note, to_open); - return ; + notes = gtk_application_get_windows(GTK_APPLICATION(g_application_get_default())); + g_list_foreach (notes, show_window_if_note, to_open); + return ; + } + + /* Otherwise, leave main view */ + switch_to_note_view (view, BIJI_NOTE_OBJ (to_open)); } - /* Otherwise, leave main view */ - switch_to_note_view(view,to_open); + /* Collection + * TODO : check if already opened (same as above) */ + else if (BIJI_IS_COLLECTION (to_open)) + { + bjb_controller_set_collection (view->priv->controller, + BIJI_COLLECTION (to_open)); + } } static GList * @@ -220,101 +244,53 @@ return note_path ; } -void -action_tag_selected_notes (GtkWidget *w, BjbMainView *view) -{ - GList *notes = NULL; - GList *paths, *l; - - /* GtkTreePath */ - paths = get_selected_paths(view); - - for (l=paths ; l != NULL ; l=l->next) - { - gchar *url = get_note_url_from_tree_path (l->data, view) ; - notes = g_list_prepend (notes, note_book_get_note_at_path - (bjb_window_base_get_book(view->priv->window),url)); - g_free (url); - } - - g_list_free_full (paths, (GDestroyNotify) gtk_tree_path_free); - bjb_note_tag_dialog_new (GTK_WINDOW (view->priv->window), notes); - g_list_free (notes); -} -gboolean -bjb_main_view_get_selected_notes_color (BjbMainView *view, GdkRGBA *color) +GList * +bjb_main_view_get_selected_items (BjbMainView *view) { - GList *paths; + GList *l, *paths, *result = NULL; gchar *url; - BijiNoteObj *note; + BijiItem *item; /* GtkTreePath */ - paths = get_selected_paths(view); - url = get_note_url_from_tree_path (paths->data, view) ; - note = note_book_get_note_at_path (bjb_window_base_get_book(view->priv->window), url); - g_free (url); - g_list_free_full (paths, (GDestroyNotify) gtk_tree_path_free); + paths = get_selected_paths (view); - return biji_note_obj_get_rgba (note, color); -} -void -action_color_selected_notes (GtkWidget *w, BjbMainView *view) -{ - GList *notes = NULL ; - GList *paths, *l; - - GdkRGBA color; - gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (w), &color); - - /* GtkTreePath */ - paths = get_selected_paths(view); - - for (l=paths ; l != NULL ; l=l->next) + for (l=paths; l!= NULL; l=l->next) { - gchar *url = get_note_url_from_tree_path (l->data, view) ; - notes = g_list_prepend (notes, note_book_get_note_at_path - (bjb_window_base_get_book(view->priv->window),url)); + url = get_note_url_from_tree_path (l->data, view); + item = biji_note_book_get_item_at_path ( + bjb_window_base_get_book (view->priv->window), url); + if (BIJI_IS_ITEM (item)) + result = g_list_prepend (result, item); + g_free (url); } g_list_free_full (paths, (GDestroyNotify) gtk_tree_path_free); - - for (l=notes ; l != NULL ; l=l->next) - { - biji_note_obj_set_rgba (BIJI_NOTE_OBJ (l->data), &color); - } - - g_list_free (notes); + return result; } -void -action_delete_selected_notes(GtkWidget *w,BjbMainView *view) -{ - GList *notes = NULL; - GList *paths, *l; - /* GtkTreePath */ - paths = get_selected_paths(view); - for (l=paths ; l != NULL ; l=l->next) - { - gchar *url = get_note_url_from_tree_path (l->data, view) ; - notes = g_list_prepend (notes, note_book_get_note_at_path - (bjb_window_base_get_book(view->priv->window),url)); - g_free (url); - } - g_list_free_full (paths, (GDestroyNotify) gtk_tree_path_free); +static void +on_selection_mode_changed_cb (BjbMainView *self) +{ + GList *select; - for (l=notes ; l != NULL ; l=l->next) + /* Workaround if items are selected + * but selection mode not really active (?) */ + select = gd_main_view_get_selection (self->priv->view); + if (select) { - biji_note_book_remove_note (bjb_window_base_get_book (view->priv->window), - BIJI_NOTE_OBJ (l->data)); + g_list_free (select); + gd_main_view_set_selection_mode (self->priv->view, TRUE); } - g_list_free (notes); + /* Any case, tell */ + g_signal_emit (G_OBJECT (self), + bjb_main_view_signals[VIEW_SELECTION_CHANGED],0); } /* Select all, escape */ @@ -341,7 +317,6 @@ if (gd_main_view_get_selection_mode (priv->view)) { gd_main_view_set_selection_mode (priv->view, FALSE); - on_selection_mode_changed (priv->main_toolbar); return TRUE; } @@ -352,54 +327,30 @@ return FALSE; } -/* Go to selection mode with right-click */ -static gboolean -on_button_press_event_cb (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - BjbMainView *self = BJB_MAIN_VIEW (user_data); - BjbMainViewPriv *priv = self->priv; - - switch (event->button.button) - { - /* Right click */ - case 3: - if (!gd_main_view_get_selection_mode (priv->view)) - { - gd_main_view_set_selection_mode (priv->view, TRUE); - on_selection_mode_changed (priv->main_toolbar); - } - - return TRUE; - - default: - return FALSE; - } -} - static gboolean -on_item_activated(GdMainView * gd, - const gchar * id, - const GtkTreePath * path, - BjbMainView * view) +on_item_activated (GdMainView * gd, + const gchar * id, + const GtkTreePath * path, + BjbMainView * view) { BijiNoteBook * book ; - BijiNoteObj * to_open ; + BijiItem * to_open ; GtkTreeIter iter ; - gchar * note_path ; + gchar * item_path ; GtkTreeModel * model ; - /* Get Note Path */ + /* Get Item Path */ model = gd_main_view_get_model (gd); gtk_tree_model_get_iter (model, &iter, (GtkTreePath*) path); - gtk_tree_model_get (model, &iter, GD_MAIN_COLUMN_URI, ¬e_path,-1); + gtk_tree_model_get (model, &iter, GD_MAIN_COLUMN_URI, &item_path,-1); - /* Switch to that note */ + /* Switch to that item */ book = bjb_window_base_get_book (view->priv->window); - to_open = note_book_get_note_at_path (book, note_path); - g_free (note_path); - switch_to_note (view, to_open); + to_open = biji_note_book_get_item_at_path (book, item_path); + g_free (item_path); + + if (to_open) + switch_to_item (view, to_open); return FALSE ; } @@ -429,10 +380,14 @@ BijiNoteBook *book; BijiNoteObj *ret; BjbMainView *self = BJB_MAIN_VIEW (user_data); + BjbSettings *settings; /* FIXME Text is guchar utf 8, conversion to perform */ - book = bjb_window_base_get_book (self->priv->window); - ret = biji_note_book_new_note_with_text (book, (gchar*) text); + book = bjb_window_base_get_book (self->priv->window); + settings = bjb_app_get_settings (g_application_get_default ()); + ret = biji_note_book_note_new (book, + (gchar*) text, + bjb_settings_get_default_location (settings)); switch_to_note_view (self, ret); // maybe AFTER drag finish? g_free (text); @@ -444,21 +399,29 @@ gtk_drag_finish (context, FALSE, FALSE, time); } + void bjb_main_view_connect_signals (BjbMainView *self) { BjbMainViewPriv *priv = self->priv; - bjb_controller_connect (priv->controller); - bjb_search_toolbar_connect (priv->search_bar); + if (priv->view_selection_changed == 0) + priv->view_selection_changed = g_signal_connect_swapped + (priv->view, + "view-selection-changed", + G_CALLBACK (on_selection_mode_changed_cb), + self); - priv->key = g_signal_connect (priv->window, "key-press-event", + if (priv->key == 0) + priv->key = g_signal_connect (priv->window, "key-press-event", G_CALLBACK (on_key_press_event_cb), self); - priv->button = g_signal_connect (priv->view, "button-press-event", - G_CALLBACK (on_button_press_event_cb), self); - priv->activated = g_signal_connect(priv->view,"item-activated", + + if (priv->activated == 0) + priv->activated = g_signal_connect(priv->view,"item-activated", G_CALLBACK(on_item_activated),self); - priv->data = g_signal_connect (priv->view, "drag-data-received", + + if (priv->data == 0) + priv->data = g_signal_connect (priv->view, "drag-data-received", G_CALLBACK (on_drag_data_received), self); } @@ -468,8 +431,6 @@ BjbMainView *self; GtkBox *vbox; //self, too BjbMainViewPriv *priv; - GtkOverlay *overlay; - GdRevealer *revealer; G_OBJECT_CLASS (bjb_main_view_parent_class)->constructed(G_OBJECT(o)); @@ -482,29 +443,19 @@ gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL); priv->view = gd_main_view_new (DEFAULT_VIEW); - bjb_controller_set_main_view (priv->controller, priv->view); - - /* main Toolbar */ - priv->main_toolbar = bjb_main_toolbar_new (priv->view, self, priv->controller); - gtk_box_pack_start (vbox, GTK_WIDGET (priv->main_toolbar), FALSE, FALSE, 0); - - /* Search entry toolbar */ - priv->search_bar = bjb_search_toolbar_new (priv->window, priv->controller); - revealer = bjb_search_toolbar_get_revealer (priv->search_bar); - gtk_box_pack_start (vbox, GTK_WIDGET (revealer), FALSE, FALSE, 0); /* Main view */ - overlay = GTK_OVERLAY (gtk_overlay_new ()); - gd_main_view_set_selection_mode (priv->view, FALSE); gd_main_view_set_model (priv->view, bjb_controller_get_model(priv->controller)); + gtk_box_pack_start (vbox, GTK_WIDGET (priv->view), TRUE, TRUE, 0); - gtk_container_add (GTK_CONTAINER (overlay), GTK_WIDGET (priv->view)); - gtk_box_pack_start (vbox, GTK_WIDGET (overlay), TRUE, TRUE, 0); + /* Load more */ + priv->load_more = bjb_load_more_button_new (priv->controller); + gtk_box_pack_start (vbox, priv->load_more, FALSE, FALSE, 0); /* Selection Panel */ priv->select_bar = bjb_selection_toolbar_new (priv->view, self); - gtk_overlay_add_overlay (overlay, GTK_WIDGET (priv->select_bar)); + gtk_box_pack_start (vbox, GTK_WIDGET (priv->select_bar), FALSE, FALSE, 0); /* Drag n drop */ gtk_drag_dest_set (GTK_WIDGET (priv->view), GTK_DEST_DEFAULT_ALL, @@ -544,6 +495,17 @@ G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); + + bjb_main_view_signals[VIEW_SELECTION_CHANGED] = g_signal_new ( "view-selection-changed" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + } BjbMainView * @@ -566,7 +528,35 @@ bjb_main_view_update_model (BjbMainView *self) { BjbMainViewPriv *priv = self->priv; - - bjb_controller_set_main_view (priv->controller,priv->view); - gd_main_view_set_model(priv->view,bjb_controller_get_model(priv->controller)); + + bjb_controller_update_view (priv->controller); + gd_main_view_set_model (priv->view, bjb_controller_get_model (priv->controller)); } + +/* interface for notes view (GdMainView) + * TODO - BjbMainView should rather be a GdMainView */ + +gboolean +bjb_main_view_get_selection_mode (BjbMainView *self) +{ + return gd_main_view_get_selection_mode (self->priv->view); +} + +void +bjb_main_view_set_selection_mode (BjbMainView *self, gboolean mode) +{ + gd_main_view_set_selection_mode (self->priv->view, mode); +} + +GdMainViewType +bjb_main_view_get_view_type (BjbMainView *view) +{ + return gd_main_view_get_view_type (view->priv->view); +} + +void +bjb_main_view_set_view_type (BjbMainView *view, GdMainViewType type) +{ + gd_main_view_set_view_type (view->priv->view, type); +} + diff -Nru bijiben-3.8.4/src/bjb-main-view.h bijiben-3.10.2/src/bjb-main-view.h --- bijiben-3.8.4/src/bjb-main-view.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-main-view.h 2013-11-11 20:52:06.000000000 +0000 @@ -23,6 +23,7 @@ #include #include "bjb-controller.h" +#include "bjb-search-toolbar.h" G_BEGIN_DECLS @@ -59,15 +60,10 @@ void action_new_window_callback(GtkAction *action, gpointer bjb_main_view); -/* Currently it simply looks for first selected note found. Maybe most common color? - * Or use default color when several ones including at least one default color?*/ -gboolean bjb_main_view_get_selected_notes_color (BjbMainView *view, GdkRGBA *color); -void action_color_selected_notes (GtkWidget *w,BjbMainView *view); -void action_tag_selected_notes (GtkWidget *w, BjbMainView *view); +GList *bjb_main_view_get_selected_items (BjbMainView *view); -void action_delete_selected_notes(GtkWidget *w,BjbMainView *view); gboolean bjb_main_view_get_iter_at_note (BjbMainView *view, BijiNoteObj *note, @@ -81,6 +77,19 @@ void bjb_main_view_update_model (BjbMainView *view); +/* bridge for notes view (GdMainView) + * TODO : get rid of this it's a bit idiot */ + +gboolean bjb_main_view_get_selection_mode (BjbMainView *view); + +void bjb_main_view_set_selection_mode (BjbMainView *view, gboolean mode); + +GdMainViewType bjb_main_view_get_view_type (BjbMainView *view); + +void bjb_main_view_set_view_type (BjbMainView *view, GdMainViewType type); + + + G_END_DECLS #endif /* _MAIN_VIEW_H_ */ diff -Nru bijiben-3.8.4/src/bjb-note-tag-dialog.c bijiben-3.10.2/src/bjb-note-tag-dialog.c --- bijiben-3.8.4/src/bjb-note-tag-dialog.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-note-tag-dialog.c 2013-11-11 20:52:06.000000000 +0000 @@ -26,6 +26,7 @@ /* Model for tree view */ enum { COL_SELECTION, + COL_URN, COL_TAG_NAME, N_COLUMNS }; @@ -41,7 +42,7 @@ { PROP_0, PROP_WINDOW, - PROP_NOTES, + PROP_ITEMS, NUM_PROPERTIES }; @@ -57,16 +58,17 @@ GtkTreeView * view; // data - GList *notes; + GList *items; GtkListStore *store; GHashTable *collections; - + // tmp when a new tag added gchar *tag_to_scroll_to; - // tmp for convenience, when a tag is toggled + // for convenience, when a tag is toggled + // stores the collection urn gchar *toggled_collection; - + }; #define BJB_NOTE_TAG_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BJB_TYPE_NOTE_TAG_DIALOG, BjbNoteTagDialogPrivate)) @@ -74,40 +76,45 @@ G_DEFINE_TYPE (BjbNoteTagDialog, bjb_note_tag_dialog, GTK_TYPE_DIALOG); static void -append_tag (gchar *tag, BjbNoteTagDialog *self) +append_collection (BijiInfoSet *set, BjbNoteTagDialog *self) { BjbNoteTagDialogPrivate *priv = self->priv; GtkTreeIter iter; - gint note_has_tag; + gint item_has_tag; GList *l; gtk_list_store_append (priv->store, &iter); - note_has_tag = biji_note_obj_has_collection (priv->notes->data, tag); + item_has_tag = biji_item_has_collection (priv->items->data, set->title); /* Check if other notes have the same */ - for (l = priv->notes; l != NULL; l = l->next) + for (l = priv->items; l != NULL; l = l->next) { - if (biji_note_obj_has_collection (l->data, tag) != note_has_tag) + if (biji_item_has_collection (l->data, set->title) != item_has_tag) { - note_has_tag = SELECTION_INCONSISTENT; + item_has_tag = SELECTION_INCONSISTENT; break; } } gtk_list_store_set (priv->store, &iter, - COL_SELECTION, note_has_tag, - COL_TAG_NAME , tag, -1); + COL_SELECTION, item_has_tag, + COL_URN, set->tracker_urn, + COL_TAG_NAME , set->title, -1); } static gint -bjb_compare_tag (gconstpointer a, gconstpointer b) +bjb_compare_collection (gconstpointer a, gconstpointer b) { + gchar *up_a, *up_b; + BijiInfoSet *set_a, *set_b; gint retval; + set_a = (BijiInfoSet *) a; + set_b = (BijiInfoSet *) b; - up_a = g_utf8_strup (a, -1); - up_b = g_utf8_strup (b, -1); + up_a = g_utf8_strup (set_a->title, -1); + up_b = g_utf8_strup (set_b->title, -1); retval = g_strcmp0 (up_a, up_b); g_free (up_a); @@ -153,24 +160,21 @@ } static void -bjb_note_tag_dialog_handle_tags (GObject *source_object, - GAsyncResult *res, - gpointer user_data) +bjb_note_tag_dialog_handle_tags (GHashTable *result, gpointer user_data) { BjbNoteTagDialog *self = BJB_NOTE_TAG_DIALOG (user_data); BjbNoteTagDialogPrivate *priv = self->priv; - GList *collections; + GList *tracker_info; if (priv->collections) g_hash_table_destroy (priv->collections); - priv->collections = biji_get_all_collections_finish (source_object, res); - - collections = g_hash_table_get_keys (priv->collections); - collections = g_list_sort (collections, bjb_compare_tag); + priv->collections = result; - g_list_foreach (collections, (GFunc) append_tag, self); - g_list_free (collections); + tracker_info = g_hash_table_get_values (priv->collections); + tracker_info = g_list_sort (tracker_info, bjb_compare_collection); + g_list_foreach (tracker_info, (GFunc) append_collection, self); + g_list_free (tracker_info); /* If a new tag was added, scroll & free */ if (priv->tag_to_scroll_to) @@ -191,29 +195,27 @@ static void update_collections_model_async (BjbNoteTagDialog *self) { + BijiNoteBook *book; + + book = bjb_window_base_get_book (GTK_WIDGET (self->priv->window)); gtk_list_store_clear (self->priv->store); - biji_get_all_collections_async (bjb_note_tag_dialog_handle_tags, self); + biji_get_all_collections_async (book, bjb_note_tag_dialog_handle_tags, self); } /* Libbiji handles tracker & saving */ static void -note_dialog_add_tag (gpointer iter, gpointer collection) +note_dialog_add_collection (gpointer iter, gpointer user_data) { - BijiNoteObj *note = BIJI_NOTE_OBJ (iter); - gchar *title = (gchar*) collection; - - biji_note_obj_add_collection (note, title, TRUE); + g_return_if_fail (BIJI_IS_COLLECTION (user_data)); + biji_item_add_collection (iter, user_data, NULL); } + static void -note_dialog_remove_tag (gpointer iter, gpointer user_data) +note_dialog_remove_collection (gpointer iter, gpointer user_data) { - BijiNoteObj *note = BIJI_NOTE_OBJ (iter); - BjbNoteTagDialog *self = user_data; - gchar *urn = g_hash_table_lookup (self->priv->collections, - self->priv->toggled_collection); - - biji_note_obj_remove_collection (note, self->priv->toggled_collection, urn); + g_return_if_fail (BIJI_IS_COLLECTION (user_data)); + biji_item_remove_collection (iter, user_data); } static void @@ -229,23 +231,31 @@ gint toggle_item; gint *column; gchar *tag; + BijiNoteBook *book; + BijiItem *collection; column = g_object_get_data (G_OBJECT (cell), "column"); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, column, &toggle_item, -1); - gtk_tree_model_get (model, &iter,COL_TAG_NAME, &tag,-1); + gtk_tree_model_get (model, &iter, COL_URN, &tag, -1); priv->toggled_collection = tag; + book = bjb_window_base_get_book (GTK_WIDGET (self->priv->window)); + collection = biji_note_book_get_item_at_path (book, tag); - if (toggle_item == SELECTION_INCONSISTENT || toggle_item == SELECTION_FALSE) + if (BIJI_IS_COLLECTION (collection)) { - g_list_foreach (priv->notes, note_dialog_add_tag, tag); - toggle_item = SELECTION_TRUE; - } - else - { - g_list_foreach (priv->notes, note_dialog_remove_tag, self); - toggle_item = SELECTION_FALSE; + if (toggle_item == SELECTION_INCONSISTENT || toggle_item == SELECTION_FALSE) + { + g_list_foreach (priv->items, note_dialog_add_collection, collection); + toggle_item = SELECTION_TRUE; + } + + else + { + g_list_foreach (priv->items, note_dialog_remove_collection, collection); + toggle_item = SELECTION_FALSE; + } } priv->toggled_collection = NULL; @@ -253,26 +263,34 @@ gtk_tree_path_free (path); } + +/* If the collection with same title already existed, + * libbiji has to avoid creating a new one + * and also check before tagging items */ static void -on_new_collection_created_cb (gpointer user_data) +on_new_collection_created_cb (BijiItem *coll, gpointer user_data) { BjbNoteTagDialog *self = user_data; BjbNoteTagDialogPrivate *priv = self->priv; priv->tag_to_scroll_to = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry))); - g_list_foreach (priv->notes, note_dialog_add_tag, priv->tag_to_scroll_to); + g_list_foreach (priv->items, note_dialog_add_collection, coll); update_collections_model_async (self); gtk_entry_set_text (GTK_ENTRY (priv->entry), ""); } +/* Gives the title and book : + * the collection is created & book updated. + * afterward, our callback comes */ static void add_new_tag (BjbNoteTagDialog *self) { - const gchar *collection = gtk_entry_get_text (GTK_ENTRY (self->priv->entry)); + BijiNoteBook *book = bjb_window_base_get_book (GTK_WIDGET (self->priv->window)); + const gchar *title = gtk_entry_get_text (GTK_ENTRY (self->priv->entry)); - if (collection && g_utf8_strlen (collection, -1) > 0) - biji_create_new_collection (collection, on_new_collection_created_cb, self); + if (title && g_utf8_strlen (title, -1) > 0) + biji_create_new_collection_async (book, title, on_new_collection_created_cb, self); } static void @@ -318,7 +336,12 @@ NULL, NULL); - /* List column: tag */ + /* URN */ + column = gtk_tree_view_column_new (); + gtk_tree_view_append_column (view, column); + + + /* List column: collection title */ column = gtk_tree_view_column_new (); gtk_tree_view_append_column (view, column); @@ -335,7 +358,7 @@ BjbNoteTagDialogPrivate *priv = BJB_NOTE_TAG_DIALOG_GET_PRIVATE(self); self->priv = priv; - priv->notes = NULL; + priv->items = NULL; priv->collections = NULL; priv->window = NULL; priv->tag_to_scroll_to = NULL; @@ -344,12 +367,14 @@ gtk_window_set_default_size (GTK_WINDOW (self), BJB_NOTE_TAG_DIALOG_DEFAULT_WIDTH, BJB_NOTE_TAG_DIALOG_DEFAULT_HEIGHT); + gtk_window_set_title (GTK_WINDOW (self), _("Collections")); g_signal_connect_swapped (self, "response", G_CALLBACK (gtk_widget_destroy), self); priv->store = gtk_list_store_new (N_COLUMNS, - G_TYPE_INT, // tag active + G_TYPE_INT, // collection is active + G_TYPE_STRING, // collection urn G_TYPE_STRING); // collection title } @@ -371,7 +396,7 @@ area = gtk_dialog_get_content_area (GTK_DIALOG (self)); gtk_container_set_border_width (GTK_CONTAINER (area), 8); - label = gtk_label_new (_("Enter a name to create a tag")); + label = gtk_label_new (_("Enter a name to create a collection")); gtk_box_pack_start (GTK_BOX (area), label, FALSE, FALSE, 2); /* New Tag */ @@ -381,7 +406,7 @@ self->priv->entry = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox), self->priv->entry, TRUE, TRUE, 0); - new = gtk_button_new_with_label (_("New tag")); + new = gtk_button_new_with_label (_("New collection")); g_signal_connect_swapped (new, "clicked", G_CALLBACK (add_new_tag), self); gtk_box_pack_start (GTK_BOX (hbox), new, FALSE, FALSE, 2); @@ -409,7 +434,7 @@ gtk_box_pack_start (GTK_BOX (area), sw, TRUE, TRUE,2); /* Response */ - close = gtk_button_new_from_stock (GTK_STOCK_CLOSE); + close = gtk_button_new_with_mnemonic (_("_Close")); gtk_box_pack_start (GTK_BOX (area), close, FALSE, FALSE,2); g_signal_connect_swapped (close, "clicked", G_CALLBACK (on_closed_clicked), self); @@ -445,8 +470,8 @@ case PROP_WINDOW: g_value_set_object (value, self->priv->window); break; - case PROP_NOTES: - g_value_set_pointer (value, self->priv->notes); + case PROP_ITEMS: + g_value_set_pointer (value, self->priv->items); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -467,8 +492,8 @@ case PROP_WINDOW: self->priv->window = g_value_get_object(value); break; - case PROP_NOTES: - self->priv->notes = g_value_get_pointer (value); + case PROP_ITEMS: + self->priv->items = g_value_get_pointer (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -496,9 +521,9 @@ G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); - properties[PROP_NOTES] = g_param_spec_pointer ("notes", - "Biji Notes", - "The Notes to tag", + properties[PROP_ITEMS] = g_param_spec_pointer ("items", + "Biji Items", + "Notes and Collections to tag", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); @@ -508,11 +533,11 @@ void bjb_note_tag_dialog_new (GtkWindow *parent, - GList *biji_note_obj) + GList *biji_items) { BjbNoteTagDialog *self = g_object_new (BJB_TYPE_NOTE_TAG_DIALOG, "window", parent, - "notes", biji_note_obj, + "items", biji_items, NULL); gtk_dialog_run (GTK_DIALOG (self)); diff -Nru bijiben-3.8.4/src/bjb-note-view.c bijiben-3.10.2/src/bjb-note-view.c --- bijiben-3.8.4/src/bjb-note-view.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-note-view.c 2013-11-11 20:52:06.000000000 +0000 @@ -20,15 +20,9 @@ #include #include -#include "utils/bjb-icons-colors.h" - #include "bjb-bijiben.h" -#include "bjb-color-button.h" #include "bjb-editor-toolbar.h" -#include "bjb-rename-note.h" -#include "bjb-share.h" #include "bjb-main-view.h" -#include "bjb-note-tag-dialog.h" #include "bjb-note-view.h" #include "bjb-window-base.h" @@ -58,7 +52,6 @@ /* UI */ BijiWebkitEditor *editor; ClutterActor *embed; - GtkAccelGroup *accel; ClutterActor *edit_actor; BjbEditorToolbar *edit_bar; ClutterActor *edit_bar_actor; @@ -69,7 +62,6 @@ /* Signals */ gulong destroy ; - gulong renamed ; gulong deleted ; gulong color; }; @@ -77,9 +69,6 @@ static void bjb_note_view_disconnect (BjbNoteViewPrivate *priv) { - if (priv->renamed != 0) - g_signal_handler_disconnect (priv->note, priv->renamed); - if (priv->destroy != 0) g_signal_handler_disconnect (priv->window, priv->destroy); @@ -89,7 +78,6 @@ if (priv->color != 0) g_signal_handler_disconnect (priv->note, priv->color); - priv->renamed =0; priv->destroy = 0, priv->deleted = 0; priv->color =0; @@ -104,8 +92,6 @@ bjb_note_view_disconnect (priv); g_clear_object (&priv->view); - g_clear_object (&priv->accel); - g_clear_object (&priv->edit_bar); clutter_color_free (priv->last_date_bckgrd_clr); G_OBJECT_CLASS (bjb_note_view_parent_class)->finalize (object); @@ -167,7 +153,6 @@ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_NOTE_VIEW, BjbNoteViewPrivate); - self->priv->accel = gtk_accel_group_new (); self->priv->last_date_bckgrd_clr = NULL; } @@ -191,270 +176,8 @@ bjb_note_view_disconnect (self->priv); window = GTK_WINDOW(self->priv->window); - gtk_window_remove_accel_group (window, self->priv->accel); - - bjb_window_base_switch_to (BJB_WINDOW_BASE (window), BJB_MAIN_VIEW); -} - -static void -action_view_tags_callback (GtkWidget *item, gpointer user_data) -{ - BjbNoteView *self = BJB_NOTE_VIEW (user_data); - GtkWindow *window = GTK_WINDOW (self->priv->window); - - GList *note = NULL; - note = g_list_append (note, self->priv->note); - - bjb_note_tag_dialog_new (window, note); - g_list_free (note); -} - -static void -action_rename_note_callback (GtkWidget *item, gpointer user_data) -{ - BjbNoteView *view; - BjbNoteViewPrivate *priv; - gchar *title; - - view = BJB_NOTE_VIEW (user_data); - priv = view->priv; - - title = note_title_dialog(GTK_WINDOW(priv->window), _("Rename Note"), - biji_note_obj_get_title(priv->note)); - - if (!title) - return ; - - biji_note_obj_set_title (priv->note,title); - biji_note_obj_save_note (priv->note); -} - -static void -delete_item_callback (GtkWidget *item, gpointer user_data) -{ - BjbNoteView *view = BJB_NOTE_VIEW (user_data); - - /* Delete the note from collection - * The deleted note will emit a signal. */ - biji_note_book_remove_note(bjb_window_base_get_book(view->priv->window), - view->priv->note); -} - -static void -on_color_set(GtkColorButton *button, - BjbNoteView *view) -{ - GdkRGBA color; - - gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), &color); - biji_note_obj_set_rgba (view->priv->note,&color) ; -} - -/* just a bridge between note menu & webkit func */ -static void -bjb_toggle_bullets (BijiWebkitEditor *editor) -{ - biji_webkit_editor_apply_format (editor, BIJI_BULLET_LIST); -} - -static void -bjb_toggle_list (BijiWebkitEditor *editor) -{ - biji_webkit_editor_apply_format (editor, BIJI_ORDER_LIST); -} - - -GtkWidget * -bjb_note_menu_new (BjbNoteView *self) -{ - BjbNoteViewPrivate *priv = self->priv; - GtkWidget *result, *item; - - result = gtk_menu_new(); - priv->editor = BIJI_WEBKIT_EDITOR (biji_note_obj_get_editor (priv->note)); - - /* Undo Redo separator */ - item = gtk_menu_item_new_with_label (_("Undo")); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - g_signal_connect_swapped (item, "activate", - G_CALLBACK (webkit_web_view_undo), priv->editor); - gtk_widget_add_accelerator (item, "activate", priv->accel, GDK_KEY_u, - GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - gtk_widget_show (item); - - item = gtk_menu_item_new_with_label (_("Redo")); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - g_signal_connect_swapped (item, "activate", - G_CALLBACK (webkit_web_view_redo), priv->editor); - gtk_widget_add_accelerator (item, "activate", priv->accel, GDK_KEY_r, - GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - gtk_widget_show (item); - - item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - gtk_widget_show (item); - - /* Bullets, ordered list, separator */ - /* Bullets : unordered list format */ - item = gtk_menu_item_new_with_label (_("Bullets")); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - g_signal_connect_swapped (item, "activate", - G_CALLBACK (bjb_toggle_bullets), priv->editor); - gtk_widget_show(item); - - /* Ordered list as 1.mouse 2.cats 3.dogs */ - item = gtk_menu_item_new_with_label (_("List")); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - g_signal_connect_swapped (item, "activate", - G_CALLBACK (bjb_toggle_list), priv->editor); - gtk_widget_show(item); - - item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - gtk_widget_show (item); - - /* Rename, view tags, separtor */ - item = gtk_menu_item_new_with_label(_("Rename")); - gtk_menu_shell_append(GTK_MENU_SHELL(result),item); - g_signal_connect(item,"activate", - G_CALLBACK(action_rename_note_callback),self); - gtk_widget_show(item); - - item = gtk_menu_item_new_with_label(_("Tags")); - gtk_menu_shell_append(GTK_MENU_SHELL(result),item); - g_signal_connect(item,"activate", - G_CALLBACK(action_view_tags_callback),self); - gtk_widget_show(item); - - item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (result), item); - gtk_widget_show (item); - - /* Delete Note */ - item = gtk_menu_item_new_with_label(_("Delete this Note")); - gtk_menu_shell_append(GTK_MENU_SHELL(result),item); - g_signal_connect(item,"activate", - G_CALLBACK(delete_item_callback),self); - gtk_widget_show(item); - - return result; -} - -#define COLOR_SIZE 24 - -static void -on_note_renamed (BijiNoteObj *note, GdMainToolbar *bar) -{ - gd_main_toolbar_set_labels (bar, biji_note_obj_get_title (note), NULL); -} - -/* Just makes toolbar draggable */ -static gboolean -on_button_press (GtkWidget* widget, - GdkEventButton * event, - GdkWindowEdge edge) -{ - if (event->type == GDK_BUTTON_PRESS) - { - if (event->button == 1) { - gtk_window_begin_move_drag (GTK_WINDOW (gtk_widget_get_toplevel (widget)), - event->button, - event->x_root, - event->y_root, - event->time); - } - } - - return FALSE; -} - -static ClutterActor * -bjb_note_main_toolbar_new (BjbNoteView *self, - ClutterActor *parent, - BijiNoteObj *note) -{ - GdMainToolbar *gd; - ClutterActor *result; - GtkWidget *w,*button; - - GtkWidget *grid,*notes_label,*notes_icon; - - GtkWidget *color_button; - GdkRGBA color; - BjbSettings *settings; - gboolean rtl; - - rtl = (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL); - - w = gd_main_toolbar_new(); - gd = GD_MAIN_TOOLBAR(w); - - settings = bjb_app_get_settings (g_application_get_default()); - - result = gtk_clutter_actor_new_with_contents(w); - clutter_actor_add_child(parent,result); - gtk_widget_show_all(w); - clutter_actor_set_x_expand(result,TRUE); - - /* Go to main view basically means closing note */ - grid = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2); - notes_icon = get_icon(rtl ? "go-previous-rtl-symbolic" : "go-previous-symbolic"); - gtk_box_pack_start(GTK_BOX(grid),notes_icon,TRUE,TRUE,TRUE); - /* Button to go back to main view */ - notes_label = gtk_label_new (_("Notes")); - gtk_box_pack_start(GTK_BOX(grid),notes_label,TRUE,TRUE,TRUE); - - button = gd_main_toolbar_add_button (gd, NULL, NULL, TRUE); - - gtk_container_add(GTK_CONTAINER(button),grid); - gtk_widget_show_all(button); - gtk_widget_set_vexpand (button, TRUE); - g_signal_connect_swapped (button, "clicked", - G_CALLBACK(just_switch_to_main_view),self); - gtk_widget_add_accelerator (button, "activate", self->priv->accel, - GDK_KEY_w, GDK_CONTROL_MASK, GTK_ACCEL_MASK); - - /* Note title */ - gd_main_toolbar_set_labels (gd,biji_note_obj_get_title(note),NULL); - - self->priv->renamed = g_signal_connect(note,"renamed", - G_CALLBACK(on_note_renamed), w); - - /* Note Color */ - if (!biji_note_obj_get_rgba (note, &color)) - { - gchar *default_color; - g_object_get (G_OBJECT(settings),"color", &default_color, NULL); - gdk_rgba_parse (&color, default_color); - g_free (default_color); - } - - color_button = bjb_color_button_new (); - gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (color_button), &color); - - gd_main_toolbar_add_widget (gd, color_button, FALSE); - gtk_widget_set_size_request (gtk_bin_get_child (GTK_BIN (color_button)), - COLOR_SIZE, COLOR_SIZE); - gtk_widget_show (color_button); - - g_signal_connect (color_button,"color-set", - G_CALLBACK(on_color_set),self); - - /* Sharing */ - button = gd_main_toolbar_add_button (gd, "send-to-symbolic", - NULL, FALSE); - - g_signal_connect(button,"clicked", - G_CALLBACK(on_email_note_callback),note); - - /* Menu */ - button = gd_main_toolbar_add_menu(gd,"emblem-system-symbolic",NULL,FALSE); - - gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), - bjb_note_menu_new (self)); - - g_signal_connect (w, "button-press-event", G_CALLBACK (on_button_press), NULL); - return result; + bjb_window_base_switch_to (BJB_WINDOW_BASE (window), + BJB_WINDOW_BASE_MAIN_VIEW); } static gboolean @@ -490,7 +213,7 @@ ClutterActor * bjb_note_view_last_updated_actor_new (BjbNoteView *self) { - ClutterActor *result, *last, *value; + ClutterActor *result, *text; ClutterLayoutManager *layout; ClutterColor last_up_col = {122,122,122,255}; @@ -500,19 +223,24 @@ layout = clutter_box_layout_new (); clutter_actor_set_layout_manager (result, layout); - last = clutter_text_new (); + text = clutter_text_new (); /* "Last updated" precedes the note last updated date */ - clutter_text_set_text (CLUTTER_TEXT (last), _("Last updated ")); - clutter_text_set_font_name (CLUTTER_TEXT (last), "Arial 12px"); - clutter_text_set_color (CLUTTER_TEXT (last), &last_up_col ); - clutter_actor_add_child (result, last); - value = clutter_text_new (); + clutter_text_set_text (CLUTTER_TEXT (text), _("Last updated")); + clutter_text_set_font_name (CLUTTER_TEXT (text), "Arial 12px"); + clutter_text_set_color (CLUTTER_TEXT (text), &last_up_col ); + clutter_actor_add_child (result, text); + + text = clutter_text_new (); + clutter_text_set_text (CLUTTER_TEXT (text), " "); + clutter_actor_add_child (result, text); + + text = clutter_text_new (); last_updated_str = biji_note_obj_get_last_change_date_string ( self->priv->note); - clutter_text_set_text (CLUTTER_TEXT (value), last_updated_str); - clutter_text_set_font_name (CLUTTER_TEXT (value), "Arial 12px"); - clutter_actor_add_child (result, value); + clutter_text_set_text (CLUTTER_TEXT (text), last_updated_str); + clutter_text_set_font_name (CLUTTER_TEXT (text), "Arial 12px"); + clutter_actor_add_child (result, text); clutter_actor_show (result); return result ; @@ -525,17 +253,15 @@ BjbNoteViewPrivate *priv = self->priv; BjbSettings *settings; GtkWidget *scroll; - ClutterActor *vbox; + ClutterActor *text_actor, *overlay; ClutterConstraint *constraint; - ClutterLayoutManager *full, *box, *bin; + ClutterLayoutManager *full, *bin; gchar *default_font; /* view new from note deserializes the note-content. */ priv->view = biji_note_obj_open (priv->note); - settings = bjb_app_get_settings(g_application_get_default()); - gtk_window_add_accel_group (GTK_WINDOW (priv->window), priv->accel); - + settings = bjb_app_get_settings(g_application_get_default()); priv->deleted = g_signal_connect(priv->note,"deleted", G_CALLBACK(on_note_deleted),self); @@ -545,31 +271,20 @@ /* Start packing ui */ gtk_container_add (GTK_CONTAINER (priv->parent), GTK_WIDGET (self)); - gtk_widget_show_all (priv->parent); priv->embed = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (self)); full = clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_CENTER, CLUTTER_BIN_ALIGNMENT_CENTER); - clutter_actor_set_layout_manager (priv->embed,full); - - vbox = clutter_actor_new(); - box = clutter_box_layout_new(); - clutter_box_layout_set_orientation(CLUTTER_BOX_LAYOUT(box), - CLUTTER_ORIENTATION_VERTICAL); - clutter_actor_set_layout_manager (vbox,box); - clutter_actor_add_child (priv->embed,vbox); - - /* Main Toolbar */ - bjb_note_main_toolbar_new (self, vbox, priv->note); + clutter_actor_set_layout_manager (priv->embed, full); /* Overlay contains Text and EditToolbar */ - ClutterActor *overlay = clutter_actor_new (); + overlay = clutter_actor_new (); bin = clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_CENTER, CLUTTER_BIN_ALIGNMENT_CENTER); clutter_actor_set_layout_manager (overlay,bin); - clutter_actor_add_child (vbox,overlay); + clutter_actor_add_child (priv->embed, overlay); clutter_actor_set_x_expand (overlay,TRUE); clutter_actor_set_y_expand (overlay,TRUE); @@ -590,7 +305,7 @@ gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET(priv->view)); gtk_widget_show (GTK_WIDGET (priv->view)); - ClutterActor *text_actor = gtk_clutter_actor_new_with_contents (scroll); + text_actor = gtk_clutter_actor_new_with_contents (scroll); clutter_actor_add_child(overlay,text_actor); clutter_actor_set_x_expand(text_actor,TRUE); diff -Nru bijiben-3.8.4/src/bjb-rename-note.c bijiben-3.10.2/src/bjb-rename-note.c --- bijiben-3.8.4/src/bjb-rename-note.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-rename-note.c 2013-10-31 22:52:41.000000000 +0000 @@ -1,7 +1,9 @@ +#include + #include "bjb-rename-note.h" gchar * -note_title_dialog(GtkWindow *win, gchar *instructions, gchar *current_title) +note_title_dialog(GtkWindow *win, gchar *instructions, const gchar *current_title) { GtkWidget *dialog; GtkWidget *area; @@ -12,9 +14,9 @@ dialog = gtk_dialog_new_with_buttons(instructions, win, GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, + _("_Cancel"), GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, + _("_OK"), GTK_RESPONSE_OK, NULL); diff -Nru bijiben-3.8.4/src/bjb-rename-note.h bijiben-3.10.2/src/bjb-rename-note.h --- bijiben-3.8.4/src/bjb-rename-note.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-rename-note.h 2013-10-31 22:53:14.000000000 +0000 @@ -3,6 +3,7 @@ #include -gchar * note_title_dialog(GtkWindow *win, gchar *instructions, gchar *title); +gchar * note_title_dialog (GtkWindow *win, gchar *instructions, const gchar *title); -#endif \ No newline at end of file + +#endif diff -Nru bijiben-3.8.4/src/bjb-search-toolbar.c bijiben-3.10.2/src/bjb-search-toolbar.c --- bijiben-3.8.4/src/bjb-search-toolbar.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-search-toolbar.c 2013-11-11 20:52:06.000000000 +0000 @@ -28,9 +28,13 @@ #include #include #include +#include #include "bjb-controller.h" +#include "bjb-main-toolbar.h" +#include "bjb-main-view.h" #include "bjb-search-toolbar.h" +#include "bjb-window-base.h" enum { @@ -44,7 +48,7 @@ struct _BjbSearchToolbarPrivate { - GtkWidget *search_entry; + GdTaggedEntry *entry; gchar *needle; GtkEntryBuffer *entry_buf; GtkTreeModel *completion_model; @@ -53,12 +57,11 @@ /* Signals */ gulong key_pressed; gulong key_released; - gulong icon; gulong deleted; gulong inserted; /* Misc UI */ - GdRevealer *revealer; + GtkRevealer *revealer; GtkWidget *widget; // GTK_WIDGET (self) GtkWidget *window; }; @@ -66,26 +69,53 @@ G_DEFINE_TYPE (BjbSearchToolbar, bjb_search_toolbar, GTK_TYPE_TOOLBAR); static void +bjb_search_toolbar_toggle_search_button (BjbSearchToolbar *self, + gboolean state) +{ + bjb_window_base_toggle_search_button (BJB_WINDOW_BASE (self->priv->window), + state); +} + +void bjb_search_toolbar_fade_in (BjbSearchToolbar *self) { - if (!gd_revealer_get_child_revealed (self->priv->revealer)) + if (!gtk_revealer_get_child_revealed (self->priv->revealer)) { GdkDevice *device; - gd_revealer_set_reveal_child (self->priv->revealer, TRUE); + + /* show the search */ + gtk_revealer_set_reveal_child (self->priv->revealer, TRUE); + + /* focus */ device = gtk_get_current_event_device (); if (device) - gd_entry_focus_hack (self->priv->search_entry, device); + gd_entry_focus_hack (GTK_WIDGET (self->priv->entry), device); + + /* manually toggle search button */ + bjb_search_toolbar_toggle_search_button (self, TRUE); } } -static void +void bjb_search_toolbar_fade_out (BjbSearchToolbar *self) { - if (gd_revealer_get_child_revealed (self->priv->revealer)) - gd_revealer_set_reveal_child (self->priv->revealer, FALSE); + if (gtk_revealer_get_child_revealed (self->priv->revealer)) + { + /* clear the search before hiding */ + gtk_entry_set_text (GTK_ENTRY (self->priv->entry), ""); + bjb_controller_set_needle (self->priv->controller, ""); + + /* hide */ + gtk_revealer_set_reveal_child (self->priv->revealer, FALSE); + + /* manually toggle search button */ + bjb_search_toolbar_toggle_search_button (self, FALSE); + } } + + /* If some text has been input, handle position */ static gboolean on_key_released (GtkWidget *widget,GdkEvent *event,gpointer user_data) @@ -93,8 +123,8 @@ BjbSearchToolbar *self = BJB_SEARCH_TOOLBAR (user_data); BjbSearchToolbarPrivate *priv = self->priv; - if (gd_revealer_get_child_revealed (self->priv->revealer) == TRUE) - gtk_editable_set_position (GTK_EDITABLE (priv->search_entry), -1); + if (gtk_revealer_get_child_revealed (self->priv->revealer) == TRUE) + gtk_editable_set_position (GTK_EDITABLE (priv->entry), -1); return FALSE; } @@ -105,7 +135,7 @@ BjbSearchToolbar *self = BJB_SEARCH_TOOLBAR (user_data); /* Reveal the entry is text is input. TODO add more keys not input */ - if (gd_revealer_get_child_revealed (self->priv->revealer) == FALSE) + if (gtk_revealer_get_child_revealed (self->priv->revealer) == FALSE) { switch (event->key.keyval) { @@ -179,34 +209,32 @@ } } -static void -clear_search_entry_callback(GtkEntry *entry,GtkEntryIconPosition icon_pos, - GdkEvent *event,BjbController *controller) -{ - gtk_entry_set_text(entry,""); - bjb_controller_set_needle(controller,""); -} static void -action_search_entry(GtkEntry *entry,BjbController *controller) +action_search_entry (GtkEntry *entry, BjbController *controller) { - bjb_controller_set_needle (controller, gtk_entry_get_text(entry)); + bjb_controller_set_needle (controller, gtk_entry_get_text (entry)); } static void -action_entry_insert_callback(GtkEntryBuffer *buffer,guint position, - gchar *chars,guint n_chars,BjbSearchToolbar *self) +action_entry_insert_callback (GtkEntryBuffer *buffer, + guint position, + gchar *chars, + guint n_chars, + BjbSearchToolbar *self) { - action_search_entry(GTK_ENTRY(self->priv->search_entry), - self->priv->controller); + action_search_entry (GTK_ENTRY (self->priv->entry), + self->priv->controller); } static void -action_entry_delete_callback(GtkEntryBuffer *buffer,guint position, - guint n_chars,BjbSearchToolbar *self) +action_entry_delete_callback (GtkEntryBuffer *buffer, + guint position, + guint n_chars, + BjbSearchToolbar *self) { - action_search_entry(GTK_ENTRY(self->priv->search_entry), - self->priv->controller); + action_search_entry (GTK_ENTRY (self->priv->entry), + self->priv->controller); } void @@ -216,13 +244,11 @@ g_signal_handler_disconnect (priv->window,priv->key_pressed); g_signal_handler_disconnect (priv->window,priv->key_released); - g_signal_handler_disconnect (priv->search_entry, priv->icon); g_signal_handler_disconnect (priv->entry_buf, priv->inserted); g_signal_handler_disconnect (priv->entry_buf, priv->deleted); priv->key_released = 0; priv->key_pressed = 0; - priv->icon = 0; priv->inserted = 0; priv->deleted = 0; } @@ -247,19 +273,13 @@ priv->key_released = g_signal_connect(priv->window,"key-release-event", G_CALLBACK(on_key_released),self); - /* Connect to set the notes */ - if (priv->icon == 0) - priv->icon = g_signal_connect (priv->search_entry, "icon-press", - G_CALLBACK (clear_search_entry_callback), - self->priv->controller); - if (priv->inserted ==0) - priv->inserted = g_signal_connect(priv->entry_buf,"inserted-text", - G_CALLBACK(action_entry_insert_callback),self); + priv->inserted = g_signal_connect (priv->entry_buf, "inserted-text", + G_CALLBACK (action_entry_insert_callback), self); if (priv->deleted ==0) - priv->deleted = g_signal_connect(priv->entry_buf,"deleted-text", - G_CALLBACK(action_entry_delete_callback),self); + priv->deleted = g_signal_connect (priv->entry_buf, "deleted-text", + G_CALLBACK (action_entry_delete_callback), self); } static void @@ -272,24 +292,24 @@ G_OBJECT_CLASS (bjb_search_toolbar_parent_class)->constructed (obj); /* Get the needle from controller */ - priv->needle = bjb_controller_get_needle(priv->controller); + priv->needle = bjb_controller_get_needle (priv->controller); /* Comletion model for buffer */ completion = gtk_entry_completion_new (); - gtk_entry_set_completion (GTK_ENTRY(priv->search_entry), completion); + gtk_entry_set_completion (GTK_ENTRY (priv->entry), completion); g_object_unref (completion); - priv->completion_model = bjb_controller_get_completion(priv->controller); + priv->completion_model = bjb_controller_get_completion (priv->controller); gtk_entry_completion_set_model (completion, priv->completion_model); gtk_entry_completion_set_text_column (completion, 0); - priv->entry_buf = gtk_entry_get_buffer (GTK_ENTRY (priv->search_entry)); + priv->entry_buf = gtk_entry_get_buffer (GTK_ENTRY (priv->entry)); - if (priv->needle && g_strcmp0 (priv->needle, "") !=0) + if (priv->needle && g_strcmp0 (priv->needle, "") != 0) { - gtk_entry_set_text (GTK_ENTRY (priv->search_entry), priv->needle); + gtk_entry_set_text (GTK_ENTRY (priv->entry), priv->needle); bjb_search_toolbar_fade_in (self); - gtk_editable_set_position (GTK_EDITABLE(self->priv->search_entry),-1); + gtk_editable_set_position (GTK_EDITABLE (self->priv->entry), -1); } } @@ -298,42 +318,34 @@ { BjbSearchToolbarPrivate *priv; GtkStyleContext *context; - GtkToolItem *separator; - GtkToolItem *entry_item ; - GtkToolbar *tlbar; + GtkToolbar *tlbar; + GtkWidget *search_container; + GtkToolItem *item ; tlbar = GTK_TOOLBAR (self); self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_SEARCH_TOOLBAR, BjbSearchToolbarPrivate); priv = self->priv; priv->widget = GTK_WIDGET (self); - priv->revealer = GD_REVEALER (gd_revealer_new ()); + priv->revealer = GTK_REVEALER (gtk_revealer_new ()); gtk_container_add (GTK_CONTAINER (priv->revealer), priv->widget); gtk_toolbar_set_show_arrow (tlbar, FALSE); gtk_toolbar_set_icon_size (tlbar, GTK_ICON_SIZE_LARGE_TOOLBAR); - - separator = gtk_tool_item_new (); - gtk_tool_item_set_expand (separator,TRUE); - gtk_toolbar_insert (tlbar,separator,-1); - - priv->search_entry = gtk_search_entry_new (); - gtk_entry_set_icon_from_stock (GTK_ENTRY(priv->search_entry), - GTK_ENTRY_ICON_SECONDARY, - GTK_STOCK_CLEAR); - gtk_entry_set_text (GTK_ENTRY (priv->search_entry),""); - - entry_item = gtk_tool_item_new (); - gtk_container_add (GTK_CONTAINER (entry_item), priv->search_entry); - gtk_toolbar_insert (tlbar, entry_item,-1); - gtk_tool_item_set_expand (entry_item, TRUE); - - separator = gtk_tool_item_new (); - gtk_tool_item_set_expand (separator, TRUE); - gtk_toolbar_insert (tlbar, separator, -1); - context = gtk_widget_get_style_context (GTK_WIDGET (self)); - gtk_style_context_add_class (context,"primary-toolbar"); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR); + + /* (SELF) TOOL_BAR <- TOOL_ITEM <- BOX <- GD_TAGGED_ENTRY */ + item = gtk_tool_item_new (); + gtk_tool_item_set_expand (item, TRUE); + gtk_toolbar_insert (tlbar, item,-1); + + search_container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GTK_ALIGN_CENTER); + gtk_container_add (GTK_CONTAINER (item), search_container); + + priv->entry = gd_tagged_entry_new (); + g_object_set (priv->entry, "width_request", 500, NULL); + gtk_box_pack_start (GTK_BOX (search_container), GTK_WIDGET (priv->entry), TRUE, FALSE, 0); } static void @@ -376,8 +388,14 @@ NULL); } -GdRevealer * +GtkWidget * bjb_search_toolbar_get_revealer (BjbSearchToolbar *self) { - return self->priv->revealer; + return GTK_WIDGET (self->priv->revealer); +} + +gboolean +bjb_search_toolbar_is_shown (BjbSearchToolbar *self) +{ + return gtk_revealer_get_child_revealed (self->priv->revealer); } diff -Nru bijiben-3.8.4/src/bjb-search-toolbar.h bijiben-3.10.2/src/bjb-search-toolbar.h --- bijiben-3.8.4/src/bjb-search-toolbar.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-search-toolbar.h 2013-11-11 20:52:06.000000000 +0000 @@ -18,7 +18,7 @@ #ifndef BJB_SEARCH_TOOLBAR_H #define BJB_SEARCH_TOOLBAR_H -#include +#include G_BEGIN_DECLS @@ -53,12 +53,18 @@ BjbSearchToolbar * bjb_search_toolbar_new (GtkWidget *window, BjbController *controller); -GdRevealer * bjb_search_toolbar_get_revealer (BjbSearchToolbar *self); +void bjb_search_toolbar_fade_in (BjbSearchToolbar *self); + +void bjb_search_toolbar_fade_out (BjbSearchToolbar *self); + +GtkWidget * bjb_search_toolbar_get_revealer (BjbSearchToolbar *self); void bjb_search_toolbar_disconnect (BjbSearchToolbar *self); void bjb_search_toolbar_connect (BjbSearchToolbar *self); +gboolean bjb_search_toolbar_is_shown (BjbSearchToolbar *self); + G_END_DECLS #endif /* BJB_SEARCH_TOOLBAR_H */ diff -Nru bijiben-3.8.4/src/bjb-selection-toolbar.c bijiben-3.10.2/src/bjb-selection-toolbar.c --- bijiben-3.8.4/src/bjb-selection-toolbar.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-selection-toolbar.c 2013-11-11 20:52:06.000000000 +0000 @@ -25,8 +25,10 @@ #include #include "bjb-color-button.h" +#include "bjb-note-tag-dialog.h" #include "bjb-main-view.h" #include "bjb-selection-toolbar.h" +#include "bjb-window-base.h" enum { @@ -40,6 +42,8 @@ struct _BjbSelectionToolbarPrivate { + GtkHeaderBar *bar; + GtkWidget *toolbar_trash; GtkWidget *toolbar_color; GtkWidget *toolbar_tag; @@ -57,32 +61,140 @@ GtkWidget *right_box; }; -G_DEFINE_TYPE (BjbSelectionToolbar, bjb_selection_toolbar, GTK_TYPE_TOOLBAR); +G_DEFINE_TYPE (BjbSelectionToolbar, bjb_selection_toolbar, GTK_TYPE_REVEALER); + + +/* + * Color dialog is transient and could damage the display of self + * We do not want a modal window since the app may have several + * The fix is to hide self untill dialog has run + * + */ +static void +hide_self (GtkWidget *self) +{ + gtk_revealer_set_reveal_child (GTK_REVEALER (self), TRUE); +} + + +static void +action_color_selected_items (GtkWidget *w, BjbSelectionToolbar *self) +{ + GList *l, *selection; + GdkRGBA color = {0,0,0,0}; + + gtk_widget_set_visible (GTK_WIDGET (self), TRUE); + gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (w), &color); + selection = bjb_main_view_get_selected_items (self->priv->view); + + for (l=selection; l !=NULL; l=l->next) + { + if (BIJI_IS_NOTE_OBJ (l->data)) + biji_note_obj_set_rgba (l->data, &color); + } + + bjb_main_view_set_selection_mode (self->priv->view, FALSE); + g_list_free (selection); +} + + +static void +action_tag_selected_items (GtkWidget *w, BjbSelectionToolbar *self) +{ + GList *selection; + + selection = bjb_main_view_get_selected_items (self->priv->view); + bjb_note_tag_dialog_new + (GTK_WINDOW (bjb_main_view_get_window (self->priv->view)), selection); + + bjb_main_view_set_selection_mode (self->priv->view, FALSE); + g_list_free (selection); +} + + +static void +action_delete_selected_items (GtkWidget *w, BjbSelectionToolbar *self) +{ + GList *l, *selection; + BijiNoteBook *book; + + selection = bjb_main_view_get_selected_items (self->priv->view); + book = bjb_window_base_get_book (bjb_main_view_get_window (self->priv->view)); + + for (l=selection; l !=NULL; l=l->next) + { + biji_note_book_remove_item (book, BIJI_ITEM (l->data)); + } + + bjb_main_view_set_selection_mode (self->priv->view, FALSE); + g_list_free (selection); +} + static void bjb_selection_toolbar_fade_in (BjbSelectionToolbar *self) { - gtk_widget_set_opacity (self->priv->widget, 1); + gtk_revealer_set_reveal_child (GTK_REVEALER (self), TRUE); } static void bjb_selection_toolbar_fade_out (BjbSelectionToolbar *self) { - gtk_widget_set_opacity (self->priv->widget, 0); + gtk_revealer_set_reveal_child (GTK_REVEALER (self), FALSE); } + static void bjb_selection_toolbar_set_item_visibility (BjbSelectionToolbar *self) { - BjbSelectionToolbarPrivate *priv = self->priv; + BjbSelectionToolbarPrivate *priv; + GList *l, *selection; GdkRGBA color; - gtk_widget_set_visible (priv->toolbar_trash, TRUE); + g_return_if_fail (BJB_IS_SELECTION_TOOLBAR (self)); + + priv = self->priv; + selection = bjb_main_view_get_selected_items (priv->view); + /* Color */ - if (bjb_main_view_get_selected_notes_color (priv->view, &color)) - gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (priv->toolbar_color), &color); + gtk_widget_set_sensitive (priv->toolbar_color, FALSE); + + + for (l=selection; l !=NULL; l=l->next) + { + if (!biji_item_has_color (l->data)) + { + gtk_widget_set_sensitive (priv->toolbar_color, FALSE); + break; + } + + else if (BIJI_IS_NOTE_OBJ (l->data)) + { + if (biji_note_obj_get_rgba (BIJI_NOTE_OBJ (l->data), &color)) + { + gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (priv->toolbar_color), &color); + gtk_widget_set_sensitive (priv->toolbar_color, TRUE); + break; + } + } + } + + + /* Organize */ + gtk_widget_set_sensitive (priv->toolbar_tag, TRUE); + + for (l=selection; l!=NULL; l=l->next) + { + if (!biji_item_is_collectable (l->data)) + { + gtk_widget_set_sensitive (priv->toolbar_tag, FALSE); + break; + } + } + + g_list_free (selection); } static void @@ -115,71 +227,41 @@ bjb_selection_toolbar_init (BjbSelectionToolbar *self) { BjbSelectionToolbarPrivate *priv; - GtkWidget *image; - GtkStyleContext *context; - GdkRGBA color = {0.0, 0.0, 0.0, 0.0}; - GtkToolbar *tlbar; + GtkWidget *widget; + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_SELECTION_TOOLBAR, BjbSelectionToolbarPrivate); priv = self->priv; - priv->widget = GTK_WIDGET (self); - tlbar = GTK_TOOLBAR (self); + widget = GTK_WIDGET (self); - gtk_toolbar_set_show_arrow (tlbar, FALSE); - gtk_toolbar_set_icon_size (tlbar, GTK_ICON_SIZE_LARGE_TOOLBAR); + gtk_revealer_set_transition_type ( + GTK_REVEALER (self), GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); - gtk_widget_set_halign (priv->widget, GTK_ALIGN_CENTER); - gtk_widget_set_valign (priv->widget, GTK_ALIGN_END); - gtk_widget_set_margin_bottom (priv->widget, 40); - gtk_widget_set_opacity (priv->widget, 0); - gtk_widget_set_size_request (priv->widget, 500, -1); - - context = gtk_widget_get_style_context (priv->widget); - gtk_style_context_add_class (context, "osd"); - - gtk_widget_override_background_color (priv->widget, - GTK_STATE_FLAG_NORMAL, - &color); - - priv->left_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - priv->left_group = gtk_tool_item_new (); - gtk_container_add (GTK_CONTAINER (priv->left_group), priv->left_box); - gtk_toolbar_insert (tlbar, priv->left_group, -1); - gtk_widget_show_all (GTK_WIDGET (priv->left_group)); + priv->bar = GTK_HEADER_BAR (gtk_header_bar_new ()); + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (priv->bar)); + + /* Trash notes */ + priv->toolbar_trash = gtk_button_new_with_label (_("Delete")); + gtk_widget_set_valign (priv->toolbar_trash, GTK_ALIGN_CENTER); + gtk_header_bar_pack_start (priv->bar, priv->toolbar_trash); - /* Notes tags */ - priv->toolbar_tag = gtk_button_new (); - image = gtk_image_new_from_icon_name ("emblem-documents-symbolic", GTK_ICON_SIZE_INVALID); - gtk_image_set_pixel_size (GTK_IMAGE (image), 32); - gtk_container_add (GTK_CONTAINER (priv->toolbar_tag), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_tag), _("Tag")); - gtk_container_add (GTK_CONTAINER (priv->left_box), priv->toolbar_tag); /* Notes color */ priv->toolbar_color = bjb_color_button_new (); - gtk_container_add (GTK_CONTAINER (priv->left_box), priv->toolbar_color); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_color), + _("Note color")); + gtk_widget_set_valign (priv->toolbar_color, GTK_ALIGN_CENTER); + gtk_header_bar_pack_end (priv->bar, priv->toolbar_color); - priv->separator = gtk_separator_tool_item_new (); - gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (priv->separator), FALSE); - gtk_widget_set_visible (GTK_WIDGET (priv->separator), TRUE); - gtk_tool_item_set_expand (priv->separator, TRUE); - gtk_toolbar_insert (tlbar, priv->separator, -1); - - priv->right_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - priv->right_group = gtk_tool_item_new (); - gtk_container_add (GTK_CONTAINER (priv->right_group), priv->right_box); - gtk_toolbar_insert (tlbar, priv->right_group, -1); - gtk_widget_show_all (GTK_WIDGET (priv->right_group)); - /* Trash notes */ - priv->toolbar_trash = gtk_button_new (); - image = gtk_image_new_from_icon_name ("user-trash-symbolic", GTK_ICON_SIZE_INVALID); - gtk_image_set_pixel_size (GTK_IMAGE (image), 32); - gtk_container_add (GTK_CONTAINER (priv->toolbar_trash), image); - gtk_widget_set_tooltip_text (GTK_WIDGET (priv->toolbar_trash), _("Delete")); - gtk_container_add (GTK_CONTAINER (priv->right_box), priv->toolbar_trash); + /* Notes tags */ + priv->toolbar_tag = gtk_button_new_with_label (_("Add to Collection")); + gtk_widget_set_valign (priv->toolbar_tag, GTK_ALIGN_CENTER); + gtk_header_bar_pack_end (priv->bar, priv->toolbar_tag); + - gtk_widget_show_all (priv->widget); + gtk_widget_show_all (widget); + bjb_selection_toolbar_fade_out (self); } static void @@ -237,14 +319,17 @@ G_CALLBACK(bjb_selection_toolbar_selection_changed), self); - g_signal_connect(priv->toolbar_color,"color-set", - G_CALLBACK(action_color_selected_notes),priv->view); + g_signal_connect_swapped (priv->toolbar_color,"clicked", + G_CALLBACK (hide_self), self); + + g_signal_connect (priv->toolbar_color,"color-set", + G_CALLBACK (action_color_selected_items), self); - g_signal_connect(priv->toolbar_tag,"clicked", - G_CALLBACK(action_tag_selected_notes),priv->view); + g_signal_connect (priv->toolbar_tag,"clicked", + G_CALLBACK (action_tag_selected_items), self); - g_signal_connect(priv->toolbar_trash,"clicked", - G_CALLBACK(action_delete_selected_notes),priv->view); + g_signal_connect (priv->toolbar_trash,"clicked", + G_CALLBACK (action_delete_selected_items), self); } static void diff -Nru bijiben-3.8.4/src/bjb-selection-toolbar.h bijiben-3.10.2/src/bjb-selection-toolbar.h --- bijiben-3.8.4/src/bjb-selection-toolbar.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-selection-toolbar.h 2013-10-31 22:53:14.000000000 +0000 @@ -41,13 +41,13 @@ struct _BjbSelectionToolbar { - GtkToolbar parent_instance; + GtkRevealer parent_instance; BjbSelectionToolbarPrivate *priv; }; struct _BjbSelectionToolbarClass { - GtkToolbarClass parent_class; + GtkRevealerClass parent_class; }; GType bjb_selection_toolbar_get_type (void) G_GNUC_CONST; diff -Nru bijiben-3.8.4/src/bjb-settings.c bijiben-3.10.2/src/bjb-settings.c --- bijiben-3.8.4/src/bjb-settings.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-settings.c 2013-11-11 20:52:06.000000000 +0000 @@ -14,33 +14,39 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see .*/ +#include "config.h" + #include #include #include "bjb-bijiben.h" -#include "bjb-color-button.h" #include "bjb-settings.h" +#include "bjb-settings-dialog.h" + struct _BjbSettingsPrivate { - GSettings *settings ; + /* Note edition settings */ + gchar *font; + gchar *color; + + /* Default Provider */ + gchar *primary; }; -// Properties binded to gsettings. + enum { PROP_0, - - // Note Editor. PROP_FONT, PROP_COLOR, - + PROP_PRIMARY, N_PROPERTIES }; #define BJB_SETTINGS_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BJB_TYPE_SETTINGS, BjbSettingsPrivate)) -G_DEFINE_TYPE (BjbSettings, bjb_settings, G_TYPE_OBJECT); +G_DEFINE_TYPE (BjbSettings, bjb_settings, G_TYPE_SETTINGS); static void bjb_settings_init (BjbSettings *object) @@ -66,11 +72,15 @@ switch (prop_id) { case PROP_FONT: - g_value_set_string (value,settings->font); + g_value_set_string (value, settings->priv->font); break; case PROP_COLOR: - g_value_set_string (value,settings->color); + g_value_set_string (value, settings->priv->color); + break; + + case PROP_PRIMARY: + g_value_set_string (value, settings->priv->primary); break; default: @@ -90,11 +100,15 @@ switch (prop_id) { case PROP_FONT: - settings->font = g_value_dup_string(value) ; + settings->priv->font = g_value_dup_string(value) ; break; case PROP_COLOR: - settings->color = g_value_dup_string(value); + settings->priv->color = g_value_dup_string(value); + break; + + case PROP_PRIMARY: + settings->priv->primary = g_value_dup_string (value); break; default: @@ -103,6 +117,33 @@ } } + +static void +bjb_settings_constructed (GObject *object) +{ + BjbSettings *self; + GSettings *settings; + + G_OBJECT_CLASS (bjb_settings_parent_class)->constructed (object); + + self = BJB_SETTINGS (object); + settings = G_SETTINGS (object); + + + g_settings_bind (settings, "font", + self, "font", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind (settings, "color", + self, "color", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind (settings, "default-location", + self, "default-location", + G_SETTINGS_BIND_DEFAULT); +} + + static void bjb_settings_class_init (BjbSettingsClass *klass) { @@ -110,6 +151,7 @@ g_type_class_add_private (klass, sizeof (BjbSettingsPrivate)); + object_class->constructed = bjb_settings_constructed; object_class->finalize = bjb_settings_finalize; object_class->get_property = bjb_settings_get_property; object_class->set_property = bjb_settings_set_property; @@ -129,118 +171,54 @@ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class,PROP_PRIMARY, + g_param_spec_string("default-location", + "Primary Location", + "Default Provider for New Notes", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); } -// only init from bijiben + + BjbSettings * -initialize_settings (void) +bjb_settings_new (void) { - BjbSettings *result = g_object_new (BJB_TYPE_SETTINGS,NULL) ; - result->priv->settings= g_settings_new ("org.gnome.bijiben"); - - // Note editor settings - g_settings_bind (result->priv->settings, "font", - result,"font", - G_SETTINGS_BIND_DEFAULT); + return g_object_new (BJB_TYPE_SETTINGS, "schema-id", "org.gnome.bijiben", NULL); +} - g_settings_bind (result->priv->settings, "color", - result,"color", - G_SETTINGS_BIND_DEFAULT); - return result ; -} -static void -on_font_selected (GtkFontButton *widget, - BjbSettings *settings) +gchar * +bjb_settings_get_default_font (BjbSettings *settings) { - g_settings_set_string (settings->priv->settings, - "font", - gtk_font_button_get_font_name (widget)); + return settings->priv->font; } -static void -on_color_set (GtkColorButton *button, - BjbSettings *settings) -{ - GdkRGBA color; - gchar *color_str; - gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), &color); - color_str = gdk_rgba_to_string (&color); +gchar * +bjb_settings_get_default_color (BjbSettings *settings) +{ + return settings->priv->color; +} - g_settings_set_string (settings->priv->settings, - "color", - color_str); - g_free (color_str); +gchar * +bjb_settings_get_default_location (BjbSettings *settings) +{ + return settings->priv->primary; } + void show_bijiben_settings_window (GtkWidget *parent_window) { - GtkWidget *dialog,*area, *vbox, *hbox, *grid, *label, *picker; - GdkRGBA color; - gint width, height; - - GApplication *app = g_application_get_default(); - BjbSettings *settings = bjb_app_get_settings(app); - - /* create dialog */ - dialog = gtk_dialog_new_with_buttons (_("Preferences"), - GTK_WINDOW(parent_window), - GTK_DIALOG_MODAL| - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CLOSE, - GTK_RESPONSE_OK, - NULL); - - gtk_window_get_size (GTK_WINDOW (parent_window), &width, &height); - gtk_window_set_default_size (GTK_WINDOW (dialog), - width /2, - height /2); - - area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - gtk_container_set_border_width (GTK_CONTAINER (area), 0); - gtk_widget_set_hexpand (area, TRUE); - gtk_widget_set_vexpand (area, TRUE); - - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - gtk_widget_set_valign (vbox, GTK_ALIGN_CENTER); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER); - gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); - - grid = gtk_grid_new (); - gtk_grid_set_column_spacing (GTK_GRID (grid), 12); - gtk_grid_set_row_spacing (GTK_GRID (grid), 6); - gtk_box_pack_start (GTK_BOX (hbox), grid, TRUE, FALSE, 0); - - /* Note Font */ - label = gtk_label_new (_("Note Font")); - gtk_widget_set_halign (label, GTK_ALIGN_END); - gtk_grid_attach (GTK_GRID (grid), label, 1, 1, 1, 1); - picker = gtk_font_button_new_with_font (settings->font); - g_signal_connect(picker,"font-set", - G_CALLBACK(on_font_selected),settings); - gtk_grid_attach (GTK_GRID (grid), picker, 2, 1, 1, 1); - - /* Default Color */ - label = gtk_label_new (_("Default Color")); - gtk_widget_set_halign (label, GTK_ALIGN_END); - gtk_grid_attach (GTK_GRID (grid), label, 1, 2, 1, 1); - picker = bjb_color_button_new (); - gtk_grid_attach (GTK_GRID (grid), picker, 2, 2, 1, 1); - gdk_rgba_parse (&color, settings->color ); - gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (picker), &color); - g_signal_connect (picker, "color-set", - G_CALLBACK(on_color_set), settings); - - /* pack, show, run, kill */ - gtk_box_pack_start (GTK_BOX (area), vbox, TRUE, TRUE, 0); - gtk_widget_show_all (dialog); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + GtkDialog *dialog; + + dialog = bjb_settings_dialog_new (parent_window); + /* result = */ gtk_dialog_run (dialog); + gtk_widget_destroy (GTK_WIDGET (dialog)); } diff -Nru bijiben-3.8.4/src/bjb-settings-dialog.c bijiben-3.10.2/src/bjb-settings-dialog.c --- bijiben-3.8.4/src/bjb-settings-dialog.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-settings-dialog.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,538 @@ +/* + * bjb_settings_dialog.c + * + * Copyright © 2013 Pierre-Yves LUYTEN + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "config.h" + +#include +#include + +#include "bjb-bijiben.h" +#include "bjb-color-button.h" +#include "bjb-settings.h" +#include "bjb-settings-dialog.h" + + +enum +{ + PROP_0, + PROP_PARENT, + N_PROPERTIES +}; + + +struct BjbSettingsDialogPrivate_ +{ + GtkWidget *parent; + BjbSettings *settings; + BijiNoteBook *book; + + GtkStack *stack; + GtkStackSwitcher *switcher; + + /* Primary NoteBook page */ + + GtkListBox *box; + GList *children; +}; + + + + +G_DEFINE_TYPE (BjbSettingsDialog, bjb_settings_dialog, GTK_TYPE_DIALOG) + +/* Callbacks */ + +static void +on_font_selected (GtkFontButton *widget, + BjbSettings *settings) +{ + g_settings_set_string (G_SETTINGS (settings), + "font", + gtk_font_button_get_font_name (widget)); + +} + + + +static void +on_color_set (GtkColorButton *button, + BjbSettings *settings) +{ + GdkRGBA color; + gchar *color_str; + + gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), &color); + color_str = gdk_rgba_to_string (&color); + + g_settings_set_string (G_SETTINGS (settings), + "color", + color_str); + + g_free (color_str); +} + + + + + + +/* Primary Provider page */ + +typedef struct +{ + GtkWidget *overlay; + GtkWidget *widget; + GtkWidget *toggle; + + const gchar *id; + const char *name; + GtkWidget *icon; + + gboolean selected; + +} ProviderChild; + + +static ProviderChild * +provider_child_new () +{ + ProviderChild *retval; + + retval = g_slice_new (ProviderChild); + retval->overlay = NULL; + retval->widget = NULL; + retval->toggle = NULL; + retval->selected = FALSE; + retval->id = NULL; + retval->icon = NULL; + + return retval; +} + + +static void +provider_child_free (gpointer child) +{ + g_slice_free (ProviderChild, child); +} + + +static inline GQuark +application_quark (void) +{ + static GQuark quark; + + if (G_UNLIKELY (quark == 0)) + quark = g_quark_from_static_string ("bjb-application"); + + return quark; +} + + +static GtkWidget * +child_toggle_new () +{ + GtkWidget *w; + + w = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (w), 48); + gtk_widget_show (w); + return w; +} + + +static void +toggle_child (gpointer iter, + gpointer user_data) +{ + ProviderChild *child; + + + child = (ProviderChild*) iter; + + + if (child->selected) + { + child->toggle = child_toggle_new (); + gtk_overlay_add_overlay (GTK_OVERLAY (child->overlay), child->toggle); + } + + + else + { + if (child->toggle && GTK_IS_WIDGET (child->toggle)) + gtk_widget_destroy (child->toggle); + } +} + + + +static void +update_providers (BjbSettingsDialog *self) +{ + g_list_foreach (self->priv->children, toggle_child, self); +} + + +static void +unselect_child (gpointer data, gpointer user_data) +{ + ProviderChild *child; + + child = (ProviderChild*) data; + child->selected = FALSE; +} + + +static void +on_row_activated_cb (GtkListBox *list_box, + GtkListBoxRow *row, + gpointer user_data) +{ + BjbSettingsDialog *self; + GtkWidget *widget; + ProviderChild *child; + + + self = BJB_SETTINGS_DIALOG (user_data); + + /* Write GSettings if the provider was not the primary one */ + widget = gtk_bin_get_child (GTK_BIN (row)); + child = g_object_get_qdata (G_OBJECT (widget), application_quark ()); + + if (child->selected == TRUE) + return; + + g_object_set (bjb_app_get_settings (g_application_get_default ()), + "default-location", child->id, NULL); + + + /* Toggle everything : unselect all but this one */ + g_list_foreach (self->priv->children, unselect_child, NULL); + child->selected = TRUE; + update_providers (self); +} + + +static void +header_func (GtkListBoxRow *row, + GtkListBoxRow *before_row, + gpointer user_data) +{ + if (before_row != NULL && gtk_list_box_row_get_header (row) != NULL) + gtk_list_box_row_set_header (row, gtk_separator_new (GTK_ORIENTATION_HORIZONTAL)); + + else + gtk_list_box_row_set_header (row, NULL); +} + + +static void +add_child (gpointer provider_info, gpointer user_data) +{ + BjbSettingsDialog *self; + BjbSettingsDialogPrivate *priv; + const BijiProviderInfo *info; + ProviderChild *child; + GtkWidget *box, *w; + + self = BJB_SETTINGS_DIALOG (user_data); + priv = self->priv; + info = (const BijiProviderInfo*) provider_info; + + + child = provider_child_new (); + child->id = info->unique_id; + child->icon = info->icon; + child->name = info->name; + + + // what if (child->id != NULL && g_strcmp0 (child->id, "") != 0) + + + /* Is the provider the primary ? */ + if (g_strcmp0 (child->id, bjb_settings_get_default_location (priv->settings)) ==0) + child->selected = TRUE; + + /* Create the widget */ + + child->widget = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + child->overlay = gtk_overlay_new (); + gtk_container_add (GTK_CONTAINER (priv->box), child->overlay); + gtk_container_add (GTK_CONTAINER (child->overlay), box); + + + g_object_set_qdata_full (G_OBJECT (child->overlay), application_quark (), + child, provider_child_free); + + w = child->icon; + gtk_widget_set_margin_left (w, 12); + gtk_container_add (GTK_CONTAINER (box), w); + + + w = gtk_label_new (child->name); + gtk_widget_set_margin_right (w, 180); + gtk_container_add (GTK_CONTAINER (box), w); + gtk_widget_set_valign (w, GTK_ALIGN_CENTER); + gtk_box_pack_end (GTK_BOX (box), w, FALSE, FALSE, 0); + + self->priv->children = g_list_prepend (priv->children, child); + gtk_widget_show_all (box); +} + + +GtkWidget * +create_page_primary (BjbSettingsDialog *self) +{ + BjbSettingsDialogPrivate *priv; + GList *providers_info; + + priv = self->priv; + priv->box = GTK_LIST_BOX (gtk_list_box_new ()); + + /* Create the list */ + + gtk_list_box_set_selection_mode (priv->box, GTK_SELECTION_NONE); + gtk_list_box_set_header_func (priv->box, header_func, NULL, NULL); + + g_signal_connect (priv->box, "row-activated", + G_CALLBACK (on_row_activated_cb), self); + + + /* Add providers */ + + providers_info = biji_note_book_get_providers (priv->book); + g_list_foreach (providers_info, add_child, self); + g_list_free (providers_info); + + + /* Check GSettings : toggle the actual default provider */ + update_providers (self); + + return GTK_WIDGET (priv->box); +} + + + + +/* Edition page (font, color) */ + + +GtkWidget * +create_page_edition (BjbSettings *settings) +{ + GtkWidget *grid, *label, *picker, *box; + GdkRGBA color; + + grid = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (grid), 36); + gtk_grid_set_row_spacing (GTK_GRID (grid), 6); + gtk_widget_set_halign (grid, GTK_ALIGN_CENTER); + + + /* Default font */ + label = gtk_label_new (_("Note Font")); + gtk_widget_set_halign (label, GTK_ALIGN_END); + gtk_grid_attach (GTK_GRID (grid), label, 1, 1, 1, 1); + picker = gtk_font_button_new_with_font (bjb_settings_get_default_font (settings)); + g_signal_connect (picker, "font-set", + G_CALLBACK (on_font_selected), settings); + gtk_grid_attach (GTK_GRID (grid), picker, 2, 1, 1, 1); + + + + /* Default color */ + label = gtk_label_new (_("Default Color")); + gtk_widget_set_halign (label, GTK_ALIGN_END); + gtk_grid_attach (GTK_GRID (grid), label, 1, 2, 1, 1); + + picker = bjb_color_button_new (); + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (box), picker, FALSE, FALSE, 0); + gdk_rgba_parse (&color, bjb_settings_get_default_color (settings)); + gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (picker), &color); + g_signal_connect (picker, "color-set", + G_CALLBACK (on_color_set), settings); + gtk_grid_attach (GTK_GRID (grid), box, 2, 2, 1, 1); + + return grid; +} + + + +/* Packaging */ + +static void +bjb_settings_dialog_constructed (GObject *object) +{ + BjbSettingsDialog *self; + GtkDialog *dialog; //also self + BjbSettingsDialogPrivate *priv; + GtkWidget *area, *grid, *hbox, *page; + GtkWindow *window; + GApplication *app; + + + G_OBJECT_CLASS (bjb_settings_dialog_parent_class)->constructed (object); + + self = BJB_SETTINGS_DIALOG (object); + dialog = GTK_DIALOG (self); + window = GTK_WINDOW (self); + priv = self->priv; + + + app = g_application_get_default (); + priv->book = bijiben_get_book (BIJIBEN_APPLICATION (app)); + priv->settings = bjb_app_get_settings (app); + + + gtk_window_set_default_size (window, 500, 300); + gtk_window_set_modal (window, TRUE); + gtk_dialog_add_button (dialog, _("_Close"), GTK_RESPONSE_CLOSE); + + + /* Dialog Area */ + area = gtk_dialog_get_content_area (dialog); + gtk_container_set_border_width (GTK_CONTAINER (area), 38); + + priv->stack = GTK_STACK (gtk_stack_new ()); + gtk_widget_set_hexpand (GTK_WIDGET (priv->stack), TRUE); + gtk_widget_set_vexpand (GTK_WIDGET (priv->stack), TRUE); + + priv->switcher = GTK_STACK_SWITCHER (gtk_stack_switcher_new ()); + hbox = gtk_grid_new (); + gtk_widget_set_vexpand (hbox, TRUE); + gtk_grid_attach (GTK_GRID (hbox), GTK_WIDGET (priv->switcher), 1, 1, 1, 1); + gtk_widget_set_halign (hbox, GTK_ALIGN_CENTER); + gtk_widget_set_valign (hbox, GTK_ALIGN_CENTER); + gtk_stack_switcher_set_stack (priv->switcher, priv->stack); + + grid = gtk_grid_new (); + gtk_container_add (GTK_CONTAINER (area),grid); + gtk_grid_attach (GTK_GRID (grid), hbox, 1, 1, 1, 1); + gtk_widget_set_valign (GTK_WIDGET (priv->switcher), GTK_ALIGN_START); + gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET (priv->stack), 1, 2, 1, 1); + gtk_widget_set_valign (GTK_WIDGET (priv->stack), GTK_ALIGN_CENTER); + + + /* Dialog Pages */ + page = create_page_edition (priv->settings); + gtk_widget_set_vexpand (page, TRUE); + gtk_stack_add_titled (priv->stack, page, "edition", _("Note Edition")); + + page = create_page_primary (self); + gtk_stack_add_titled (priv->stack, page, "provider", _("Primary Book")); + + gtk_widget_show_all (area); +} + + + +static void +bjb_settings_dialog_finalize (GObject *object) +{ + BjbSettingsDialog *self; + + g_return_if_fail (BJB_IS_SETTINGS_DIALOG (object)); + + self = BJB_SETTINGS_DIALOG (object); + //g_list_free_full (self->priv->children, provider_child_free); uh? + g_list_free (self->priv->children); + + G_OBJECT_CLASS (bjb_settings_dialog_parent_class)->finalize (object); +} + + +static void +bjb_settings_dialog_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + BjbSettingsDialog *self = BJB_SETTINGS_DIALOG (object); + + switch (prop_id) + { + case PROP_PARENT: + g_value_set_object (value, self->priv->parent); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +bjb_settings_dialog_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + BjbSettingsDialog *self = BJB_SETTINGS_DIALOG (object); + + switch (prop_id) + { + case PROP_PARENT: + self->priv->parent = g_value_get_object (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +bjb_settings_dialog_init (BjbSettingsDialog *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BJB_TYPE_SETTINGS_DIALOG, BjbSettingsDialogPrivate); +} + + + +static void +bjb_settings_dialog_class_init (BjbSettingsDialogClass *klass) +{ + GObjectClass *g_object_class; + + g_object_class = G_OBJECT_CLASS (klass); + + g_object_class->set_property = bjb_settings_dialog_set_property; + g_object_class->get_property = bjb_settings_dialog_get_property; + g_object_class->finalize = bjb_settings_dialog_finalize; + g_object_class->constructed = bjb_settings_dialog_constructed; + + g_type_class_add_private ((gpointer)klass, sizeof (BjbSettingsDialogPrivate)); + + g_object_class_install_property (g_object_class,PROP_PARENT, + g_param_spec_object ("parent", + "Parent Window", + "Parent Window Transient For", + GTK_TYPE_WINDOW, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); +} + + +GtkDialog * +bjb_settings_dialog_new (GtkWidget *parent_window) +{ + return g_object_new (BJB_TYPE_SETTINGS_DIALOG, "parent", parent_window, NULL); +} diff -Nru bijiben-3.8.4/src/bjb-settings-dialog.h bijiben-3.10.2/src/bjb-settings-dialog.h --- bijiben-3.8.4/src/bjb-settings-dialog.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/bjb-settings-dialog.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * bjb_settings_dialog.h + * + * Copyright © 2013 Pierre-Yves LUYTEN + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BJB_SETTINGS_DIALOG_H_ +#define BJB_SETTINGS_DIALOG_H_ 1 + +#include + +G_BEGIN_DECLS + + +#define BJB_TYPE_SETTINGS_DIALOG (bjb_settings_dialog_get_type ()) +#define BJB_SETTINGS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BJB_TYPE_SETTINGS_DIALOG, BjbSettingsDialog)) +#define BJB_SETTINGS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BJB_TYPE_SETTINGS_DIALOG, BjbSettingsDialogClass)) +#define BJB_IS_SETTINGS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BJB_TYPE_SETTINGS_DIALOG)) +#define BJB_IS_SETTINGS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BJB_TYPE_SETTINGS_DIALOG)) +#define BJB_SETTINGS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BJB_TYPE_SETTINGS_DIALOG, BjbSettingsDialogClass)) + +typedef struct BjbSettingsDialog_ BjbSettingsDialog; +typedef struct BjbSettingsDialogClass_ BjbSettingsDialogClass; +typedef struct BjbSettingsDialogPrivate_ BjbSettingsDialogPrivate; + +struct BjbSettingsDialog_ +{ + GtkDialog parent; + BjbSettingsDialogPrivate *priv; +}; + + +struct BjbSettingsDialogClass_ +{ + GtkDialogClass parent_class; +}; + + +GType bjb_settings_dialog_get_type (void); + + +GtkDialog *bjb_settings_dialog_new (GtkWidget *window); + + +G_END_DECLS + +#endif /* BJB_SETTINGS_DIALOG_H_ */ diff -Nru bijiben-3.8.4/src/bjb-settings.h bijiben-3.10.2/src/bjb-settings.h --- bijiben-3.8.4/src/bjb-settings.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-settings.h 2013-11-11 20:52:06.000000000 +0000 @@ -20,6 +20,8 @@ #include + + G_BEGIN_DECLS #define BJB_TYPE_SETTINGS (bjb_settings_get_type ()) @@ -36,24 +38,32 @@ struct _BjbSettingsClass { - GObjectClass parent_class; + GSettingsClass parent_class; }; struct _BjbSettings { - GObject parent_instance; - BjbSettingsPrivate *priv ; - - /* Note edition settings */ - gchar *font ; - gchar *color ; + GSettings parent_instance; + BjbSettingsPrivate *priv; }; -GType bjb_settings_get_type (void) G_GNUC_CONST; -BjbSettings * initialize_settings(void); +GType bjb_settings_get_type (void) G_GNUC_CONST; + + +BjbSettings *bjb_settings_new (void); + + +gchar *bjb_settings_get_default_font (BjbSettings *settings); + + +gchar *bjb_settings_get_default_color (BjbSettings *settings); + + +gchar *bjb_settings_get_default_location (BjbSettings *settings); + -void show_bijiben_settings_window (GtkWidget *parent_window); +void show_bijiben_settings_window (GtkWidget *parent_window); G_END_DECLS diff -Nru bijiben-3.8.4/src/bjb-share.c bijiben-3.10.2/src/bjb-share.c --- bijiben-3.8.4/src/bjb-share.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-share.c 2013-10-31 22:52:40.000000000 +0000 @@ -18,11 +18,12 @@ #include "bjb-share.h" static gchar * -mail_str ( gchar * string ) +mail_str (const gchar * string ) { if (!string) return g_strdup ("''"); - return g_strdup (g_strdelimit (string, "\n", ' ')); + + return g_strdelimit (g_strdup (string), "\n", ' '); } /* TODO find EOL for xdg-email */ @@ -33,8 +34,8 @@ error = NULL; gchar *title_mail, *text_mail; - title_mail = mail_str (biji_note_obj_get_title (note)); - text_mail = mail_str (biji_note_get_raw_text (note)); + title_mail = mail_str ((gchar*) biji_item_get_title (BIJI_ITEM (note))); + text_mail = mail_str (biji_note_obj_get_raw_text (note)); gchar *execute[7] = { "xdg-email", "--utf8", diff -Nru bijiben-3.8.4/src/bjb-window-base.c bijiben-3.10.2/src/bjb-window-base.c --- bijiben-3.8.4/src/bjb-window-base.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-window-base.c 2013-11-11 20:52:06.000000000 +0000 @@ -7,38 +7,53 @@ #include #include "bjb-bijiben.h" +#include "bjb-empty-results-box.h" #include "bjb-window-base.h" +#include "bjb-main-toolbar.h" #include "bjb-main-view.h" #include "bjb-note-view.h" -#define BJB_WIDTH 880 +#define BJB_WIDTH 780 #define BJB_HEIGHT 600 #define BIJIBEN_MAIN_WIN_TITLE N_("Notes") #define BJB_DEFAULT_FONT "Serif 10" -/* As the main window remains, it owns the data */ +enum { + BJB_WIN_BASE_VIEW_CHANGED, + BJB_WIN_BASE_ACTIVATED, + BJB_WIN_BASE_SIGNALS +}; + +static guint bjb_win_base_signals [BJB_WIN_BASE_SIGNALS] = { 0 }; + + struct _BjbWindowBasePriv { - /* To register new windows and access the data */ GtkApplication *app ; BjbController *controller; + gchar *entry; // FIXME, remove this + + + GtkWidget *vbox; + BjbMainToolbar *main_toolbar; + BjbSearchToolbar *search_bar; - /* UI - * The Notebook always has a main view. - * When editing a note, it _also_ has a note view */ - GdStack *stack; + + GtkStack *stack; BjbWindowViewType current_view; BjbMainView *view; - gchar *entry; + BjbNoteView *note_view; + GtkWidget *spinner; + GtkWidget *no_note; + /* when a note is opened */ BijiNoteObj *note; - BjbNoteView *note_view; GtkWidget *note_overlay; - /* To avoid loiding several times */ + PangoFontDescription *font ; }; @@ -89,6 +104,9 @@ GList *icons = NULL; GdkPixbuf *bjb ; GError *error = NULL; + GtkWidget *revealer; + + G_OBJECT_CLASS (bjb_window_base_parent_class)->constructed (obj); priv = self->priv; priv->note = NULL; @@ -125,24 +143,55 @@ priv->entry = NULL ; priv->font = pango_font_description_from_string (BJB_DEFAULT_FONT); - /* UI : basic notebook */ - priv->stack = GD_STACK (gd_stack_new ()); - gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (priv->stack)); - - /* Signals */ - g_signal_connect(GTK_WIDGET(self),"destroy", - G_CALLBACK(bjb_window_base_destroy),self); + priv->controller = bjb_controller_new + (bijiben_get_book (BIJIBEN_APPLICATION(g_application_get_default())), + GTK_WINDOW (obj), + priv->entry ); + + /* Shared toolbar */ + priv->view = bjb_main_view_new (GTK_WIDGET (obj), priv->controller); + priv->main_toolbar = bjb_main_toolbar_new (priv->view, priv->controller); + gtk_window_set_titlebar (GTK_WINDOW (self), GTK_WIDGET (priv->main_toolbar)); + + /* Search entry toolbar */ + priv->search_bar = bjb_search_toolbar_new (GTK_WIDGET (obj), priv->controller); + revealer = bjb_search_toolbar_get_revealer (priv->search_bar); + gtk_box_pack_start (GTK_BOX (priv->vbox), GTK_WIDGET (revealer), FALSE, FALSE, 0); + + /* UI : stack for different views */ + priv->stack = GTK_STACK (gtk_stack_new ()); + gtk_box_pack_start (GTK_BOX (priv->vbox), GTK_WIDGET (priv->stack), TRUE, TRUE, 0); + + priv->spinner = gtk_spinner_new (); + gtk_stack_add_named (priv->stack, priv->spinner, "spinner"); + gtk_stack_set_visible_child_name (priv->stack, "spinner"); + gtk_widget_show (priv->spinner); + gtk_spinner_start (GTK_SPINNER (priv->spinner)); + + priv->no_note = bjb_empty_results_box_new (); + gtk_stack_add_named (priv->stack, priv->no_note, "empty"); + + gtk_stack_add_named (priv->stack, GTK_WIDGET (priv->view), "main-view"); + + g_signal_connect ( + GTK_WIDGET (self), "destroy", G_CALLBACK (bjb_window_base_destroy), self); + } static void bjb_window_base_init (BjbWindowBase *self) { - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - BJB_TYPE_WINDOW_BASE, - BjbWindowBasePriv); + BjbWindowBasePriv *priv; + + self->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + BJB_TYPE_WINDOW_BASE, + BjbWindowBasePriv); /* Default window has no note opened */ - self->priv->note_view = NULL; + priv->note_view = NULL; + + priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add (GTK_CONTAINER (self), priv->vbox); } static void @@ -155,34 +204,39 @@ gobject_class->finalize = bjb_window_base_finalize ; g_type_class_add_private (klass, sizeof (BjbWindowBasePriv)); + + bjb_win_base_signals[BJB_WIN_BASE_VIEW_CHANGED] = g_signal_new ("view-changed" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + bjb_win_base_signals[BJB_WIN_BASE_ACTIVATED] = g_signal_new ("activated" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, + G_TYPE_BOOLEAN); } + GtkWindow * bjb_window_base_new(void) { - BjbWindowBase *retval; - BjbWindowBasePriv *priv; - - retval = g_object_new(BJB_TYPE_WINDOW_BASE, - "application", g_application_get_default(), - "hide-titlebar-when-maximized", TRUE, - NULL); - - /* Rather dirty to finish UI there. maybe bjb_w_b_set_controller */ - - priv = retval->priv; - - priv->controller = bjb_controller_new - (bijiben_get_book (BIJIBEN_APPLICATION(g_application_get_default())), - priv->entry ); - - priv->view = bjb_main_view_new (GTK_WIDGET (retval), priv->controller); - gd_stack_add_named (priv->stack, GTK_WIDGET (priv->view), "main-view"); - gtk_widget_show_all (GTK_WIDGET (retval)); - - return GTK_WINDOW (retval); + return g_object_new (BJB_TYPE_WINDOW_BASE, + "application", g_application_get_default(), + NULL); } + BjbController * bjb_window_base_get_controller ( BjbWindowBase *window ) { @@ -196,14 +250,6 @@ return b->priv->font ; } -void -bjb_window_base_set_note (BjbWindowBase *self, BijiNoteObj *note) -{ - g_return_if_fail (BJB_IS_WINDOW_BASE (self)); - - self->priv->note = note; -} - BijiNoteObj * bjb_window_base_get_note (BjbWindowBase *self) { @@ -215,34 +261,75 @@ static void destroy_note_if_needed (BjbWindowBase *bwb) { + bwb->priv->note = NULL; + if (bwb->priv->note_view && GTK_IS_WIDGET (bwb->priv->note_view)) - { g_clear_pointer (&(bwb->priv->note_overlay), gtk_widget_destroy); - } } void bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type) { BjbWindowBasePriv *priv = bwb->priv; + priv->current_view = type; - /* Precise the window does not display any specific note - * Refresh the model - * Ensure the main view receives the proper signals */ - if (type == BJB_MAIN_VIEW) - { - priv->note = NULL; - bjb_main_view_connect_signals (priv->view); - gd_stack_set_visible_child_name (priv->stack, "main-view"); - + if (type != BJB_WINDOW_BASE_NOTE_VIEW) destroy_note_if_needed (bwb); - } - else + switch (type) { - gtk_widget_show_all (GTK_WIDGET (priv->note_overlay)); - gd_stack_set_visible_child_name (priv->stack, "note-view"); + + /* Precise the window does not display any specific note + * Refresh the model + * Ensure the main view receives the proper signals */ + + case BJB_WINDOW_BASE_MAIN_VIEW: + bjb_search_toolbar_connect (priv->search_bar); + bjb_main_view_connect_signals (priv->view); + gtk_stack_set_visible_child_name (priv->stack, "main-view"); + break; + + + case BJB_WINDOW_BASE_SPINNER_VIEW: + gtk_stack_set_visible_child_name (priv->stack, "spinner"); + break; + + + case BJB_WINDOW_BASE_NO_NOTE: + bjb_empty_results_box_set_type (BJB_EMPTY_RESULTS_BOX (priv->no_note), + BJB_EMPTY_RESULTS_NO_NOTE); + gtk_widget_show (priv->no_note); + gtk_stack_set_visible_child_name (priv->stack, "empty"); + break; + + + case BJB_WINDOW_BASE_NO_RESULT: + bjb_empty_results_box_set_type (BJB_EMPTY_RESULTS_BOX (priv->no_note), + BJB_EMPTY_RESULTS_NO_RESULTS); + gtk_widget_show (priv->no_note); + gtk_stack_set_visible_child_name (priv->stack, "empty"); + break; + + + case BJB_WINDOW_BASE_ERROR_TRACKER: + bjb_empty_results_box_set_type (BJB_EMPTY_RESULTS_BOX (priv->no_note), + BJB_EMPTY_RESULTS_TRACKER); + gtk_widget_show_all (priv->no_note); + gtk_stack_set_visible_child_name (priv->stack, "empty"); + break; + + + case BJB_WINDOW_BASE_NOTE_VIEW: + gtk_widget_show_all (GTK_WIDGET (priv->note_overlay)); + gtk_stack_set_visible_child_name (priv->stack, "note-view"); + break; + + + default: + return; } + + g_signal_emit (G_OBJECT (bwb), bjb_win_base_signals[BJB_WIN_BASE_VIEW_CHANGED],0); } void @@ -251,20 +338,29 @@ BjbWindowBasePriv *priv = bwb->priv; GtkWidget *w = GTK_WIDGET (bwb); + bjb_search_toolbar_disconnect (priv->search_bar); + bjb_search_toolbar_fade_out (priv->search_bar); destroy_note_if_needed (bwb); priv->note = note; priv->note_overlay = gtk_overlay_new (); - gd_stack_add_named (priv->stack, priv->note_overlay, "note-view"); + + gtk_stack_add_named (priv->stack, priv->note_overlay, "note-view"); priv->note_view = bjb_note_view_new (w, priv->note_overlay, note); + g_object_add_weak_pointer (G_OBJECT (priv->note_view), (gpointer *) &priv->note_view); - bjb_window_base_set_note (bwb, priv->note); - bjb_window_base_switch_to (bwb, BJB_NOTE_VIEW); + bjb_window_base_switch_to (bwb, BJB_WINDOW_BASE_NOTE_VIEW); gtk_widget_show_all (w); } +BjbWindowViewType +bjb_window_base_get_view_type (BjbWindowBase *win) +{ + return win->priv->current_view; +} + BijiNoteBook * bjb_window_base_get_book(GtkWidget * win) { @@ -274,15 +370,15 @@ void bjb_window_base_set_entry(GtkWidget *win, gchar *search_entry) { - BjbWindowBase *bmw = BJB_WINDOW_BASE(win); - bmw->priv->entry = search_entry ; -} + BjbWindowBase *bmw; -void bjb_window_base_delete_entry(GtkWidget *win) -{ - BJB_WINDOW_BASE(win)->priv->entry = NULL ; + g_return_if_fail (BJB_IS_WINDOW_BASE (win)); + + bmw = BJB_WINDOW_BASE (win); + bmw->priv->entry = search_entry; } + gchar * bjb_window_base_get_entry(GtkWidget *win) { @@ -295,3 +391,54 @@ { return (gpointer) self->priv->view; } + +gboolean +bjb_window_base_get_show_search_bar (BjbWindowBase *self) +{ + /* There is no search bar at startup, + * when main toolbar is first built... */ + if (!self->priv->search_bar) + return FALSE; + + return bjb_search_toolbar_is_shown (self->priv->search_bar); +} + +gboolean +bjb_window_base_set_show_search_bar (BjbWindowBase *self, + gboolean show) +{ + if (show) + bjb_search_toolbar_fade_in (self->priv->search_bar); + + else + bjb_search_toolbar_fade_out (self->priv->search_bar); + + return TRUE; +} + +gboolean +bjb_window_base_toggle_search_button (BjbWindowBase *self, + gboolean active) +{ + bjb_main_toolbar_set_search_toggle_state (self->priv->main_toolbar, + active); + + return TRUE; +} + + +void +bjb_window_base_set_active (BjbWindowBase *self, gboolean active) +{ + gboolean available; + + available = (self->priv->current_view != BJB_WINDOW_BASE_NOTE_VIEW); + + if (active == TRUE) + { + g_signal_emit (self, + bjb_win_base_signals[BJB_WIN_BASE_ACTIVATED], + 0, + available); + } +} diff -Nru bijiben-3.8.4/src/bjb-window-base.h bijiben-3.10.2/src/bjb-window-base.h --- bijiben-3.8.4/src/bjb-window-base.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/bjb-window-base.h 2013-11-11 20:52:06.000000000 +0000 @@ -4,7 +4,6 @@ #include #include -#include "bjb-settings.h" #include "bjb-controller.h" #define BJB_TYPE_WINDOW_BASE (bjb_window_base_get_type ()) @@ -32,9 +31,13 @@ }; typedef enum { - BJB_MAIN_VIEW, - BJB_NOTE_VIEW, - BJB_NO_VIEW + BJB_WINDOW_BASE_MAIN_VIEW, + BJB_WINDOW_BASE_SPINNER_VIEW, + BJB_WINDOW_BASE_NOTE_VIEW, + BJB_WINDOW_BASE_NO_NOTE, + BJB_WINDOW_BASE_NO_RESULT, + BJB_WINDOW_BASE_ERROR_TRACKER, + BJB_WINDOW_BASE_NO_VIEW } BjbWindowViewType; GType bjb_window_base_get_type (void); @@ -45,26 +48,35 @@ BjbController * bjb_window_base_get_controller ( BjbWindowBase *window ) ; -PangoFontDescription *bjb_window_base_get_font(GtkWidget *window); void bjb_window_base_switch_to (BjbWindowBase *bwb, BjbWindowViewType type); void bjb_window_base_switch_to_note (BjbWindowBase *bwb, BijiNoteObj *note); +BjbWindowViewType bjb_window_base_get_view_type (BjbWindowBase *win); + BijiNoteBook * bjb_window_base_get_book(GtkWidget * win); -void bjb_window_base_set_entry(GtkWidget *win, gchar *search_entry) ; -void bjb_window_base_delete_entry(GtkWidget *win); +void bjb_window_base_set_entry(GtkWidget *win, gchar *search_entry) ; gchar * bjb_window_base_get_entry(GtkWidget *win) ; + gpointer bjb_window_base_get_main_view (BjbWindowBase *self); BijiNoteObj * bjb_window_base_get_note (BjbWindowBase *self); -void bjb_window_base_set_note (BjbWindowBase *self, BijiNoteObj *note); - gboolean switch_window_fullscreen(); +gboolean bjb_window_base_get_show_search_bar (BjbWindowBase *self); + +gboolean bjb_window_base_set_show_search_bar (BjbWindowBase *self, gboolean show); + +gboolean bjb_window_base_toggle_search_button (BjbWindowBase *self, + gboolean active); + + +void bjb_window_base_set_active (BjbWindowBase *self, gboolean active); + #endif /* _BJB_WINDOW_BASE_H */ diff -Nru bijiben-3.8.4/src/libbiji/biji-collection.c bijiben-3.10.2/src/libbiji/biji-collection.c --- bijiben-3.8.4/src/libbiji/biji-collection.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-collection.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,544 @@ +/* + * biji-collection.c + * + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/* + * in current implementation, one cannot add a collection + * to a collection + * but tracker would be fine with this + * given we prevent self-containment. + */ + +/* + * biji_create_collection_icon + * is adapted from Photos (photos_utils_create_collection_icon), + * which is ported from Documents + */ + +#include + +#include "biji-collection.h" +#include "biji-tracker.h" + + +static void biji_collection_update_collected (GList *result, gpointer user_data); + + +struct BijiCollectionPrivate_ +{ + + gchar *urn; + gchar *name; + gint64 mtime; + + GdkPixbuf *icon; + GdkPixbuf *emblem; + + GList *collected_items; +}; + +static void biji_collection_finalize (GObject *object); + +G_DEFINE_TYPE (BijiCollection, biji_collection, BIJI_TYPE_ITEM) + +/* Properties */ +enum { + PROP_0, + PROP_URN, + PROP_NAME, + PROP_MTIME, + BIJI_COLL_PROPERTIES +}; + + +/* Signals */ +enum { + COLLECTION_DELETED, + COLLECTION_ICON_UPDATED, + BIJI_COLLECTIONS_SIGNALS +}; + +static GParamSpec *properties[BIJI_COLL_PROPERTIES] = { NULL, }; + +static guint biji_collections_signals [BIJI_COLLECTIONS_SIGNALS] = { 0 }; + + +static const gchar * +biji_collection_get_title (BijiItem *coll) +{ + BijiCollection *collection; + + g_return_val_if_fail (BIJI_IS_COLLECTION (coll), NULL); + collection = BIJI_COLLECTION (coll); + + return collection->priv->name; +} + + +static const gchar * +biji_collection_get_uuid (BijiItem *coll) +{ + BijiCollection *collection; + + g_return_val_if_fail (BIJI_IS_COLLECTION (coll), NULL); + collection = BIJI_COLLECTION (coll); + + return collection->priv->urn; +} + + +static GdkPixbuf * +biji_create_collection_icon (gint base_size, GList *pixbufs) +{ + cairo_surface_t *surface; + cairo_t *cr; + GdkPixbuf *pix; + GdkPixbuf *ret_val; + GList *l; + GtkStyleContext *context; + GtkWidgetPath *path; + gint cur_x; + gint cur_y; + gint idx; + gint padding; + gint pix_height; + gint pix_width; + gint scale_size; + gint tile_size; + + /* TODO: use notes thumbs */ + + padding = MAX (floor (base_size / 10), 4); + tile_size = (base_size - (3 * padding)) / 2; + + context = gtk_style_context_new (); + gtk_style_context_add_class (context, "documents-collection-icon"); + + path = gtk_widget_path_new (); + gtk_widget_path_append_type (path, GTK_TYPE_ICON_VIEW); + gtk_style_context_set_path (context, path); + gtk_widget_path_unref (path); + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, base_size, base_size); + cr = cairo_create (surface); + + gtk_render_background (context, cr, 0, 0, base_size, base_size); + + l = pixbufs; + idx = 0; + cur_x = padding; + cur_y = padding; + + + while (l != NULL && idx < 4) + { + pix = l->data; + pix_width = gdk_pixbuf_get_width (pix); + pix_height = gdk_pixbuf_get_height (pix); + + scale_size = MIN (pix_width, pix_height); + + cairo_save (cr); + + cairo_translate (cr, cur_x, cur_y); + + cairo_rectangle (cr, 0, 0, + tile_size, tile_size); + cairo_clip (cr); + + cairo_scale (cr, (gdouble) tile_size / (gdouble) scale_size, (gdouble) tile_size / (gdouble) scale_size); + gdk_cairo_set_source_pixbuf (cr, pix, 0, 0); + + cairo_paint (cr); + cairo_restore (cr); + + if ((idx % 2) == 0) + { + cur_x += tile_size + padding; + } + else + { + cur_x = padding; + cur_y += tile_size + padding; + } + + idx++; + l = l->next; + } + + ret_val = gdk_pixbuf_get_from_surface (surface, 0, 0, base_size, base_size); + + cairo_surface_destroy (surface); + cairo_destroy (cr); + g_object_unref (context); + + return ret_val; +} + +static GList * +get_collected_pix (BijiCollection *self) +{ + GList *result = NULL, *l; + + for (l = self->priv->collected_items ; l != NULL; l = l->next) + { + if (BIJI_IS_ITEM (l->data)) + result = g_list_prepend ( + result, + biji_item_get_pristine (BIJI_ITEM (l->data))); + } + + return result; +} + +static GdkPixbuf * +biji_collection_get_icon (BijiItem *coll) +{ + BijiCollection *self = BIJI_COLLECTION (coll); + GList *pix; + + if (!self->priv->icon) + { + pix = get_collected_pix (self); + self->priv->icon = biji_create_collection_icon (BIJI_ICON_WIDTH, pix); + g_list_free (pix); + } + + return self->priv->icon; +} + + +static GdkPixbuf * +biji_collection_get_emblem (BijiItem *coll) +{ + BijiCollection *self = BIJI_COLLECTION (coll); + GList *pix; + + if (!self->priv->emblem) + { + pix = get_collected_pix (self); + self->priv->emblem = biji_create_collection_icon (BIJI_EMBLEM_WIDTH, + get_collected_pix (self)); + g_list_free (pix); + } + + return self->priv->emblem; +} + + + +static gint64 +biji_collection_get_mtime (BijiItem *coll) +{ + BijiCollection *self; + + g_return_val_if_fail (BIJI_IS_COLLECTION (coll), 0); + self = BIJI_COLLECTION (coll); + + return self->priv->mtime; +} + + +static gboolean +biji_collection_trash (BijiItem *item) +{ + BijiCollection *self; + g_return_val_if_fail (BIJI_IS_COLLECTION (item), FALSE); + + self = BIJI_COLLECTION (item); + + g_signal_emit (G_OBJECT (item), biji_collections_signals[COLLECTION_DELETED], 0); + biji_remove_collection_from_tracker (biji_item_get_book (item), self->priv->urn); + g_object_unref (self); + + return TRUE; +} + + +static gboolean +biji_collection_has_collection (BijiItem *item, gchar *collection) +{ + //todo + return FALSE; +} + + +static gboolean +biji_collection_add_collection (BijiItem *item, BijiItem *coll, gchar *title) +{ + g_warning ("biji collection add collection is not implemented."); + return FALSE; +} + + +static gboolean +biji_collection_remove_collection (BijiItem *item, BijiItem *collection) +{ + g_warning ("biji collection remove collection is not implemented."); + return FALSE; +} + + +static void +biji_collection_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiCollection *self = BIJI_COLLECTION (object); + + + switch (property_id) + { + case PROP_URN: + self->priv->urn = g_strdup (g_value_get_string (value)); + break; + case PROP_NAME: + self->priv->name = g_strdup (g_value_get_string (value)); + break; + case PROP_MTIME: + self->priv->mtime = g_value_get_int64 (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +biji_collection_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiCollection *self = BIJI_COLLECTION (object); + + switch (property_id) + { + case PROP_URN: + g_value_set_string (value, self->priv->urn); + break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + case PROP_MTIME: + g_value_set_int64 (value, self->priv->mtime); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +on_collected_item_change (BijiCollection *self) +{ + BijiCollectionPrivate *priv = self->priv; + BijiNoteBook *book; + GList *l; + + book = biji_item_get_book (BIJI_ITEM (self)); + + /* Diconnected any handler */ + for (l= priv->collected_items; l!= NULL; l=l->next) + { + g_signal_handlers_disconnect_by_func (l->data, on_collected_item_change, self); + } + + /* Then re-process the whole stuff */ + biji_get_items_with_collection_async (book, + self->priv->name, + biji_collection_update_collected, + self); +} + +/* For convenience, items are retrieved async. + * Thus use a signal once icon & emblem updated.*/ +static void +biji_collection_update_collected (GList *result, + gpointer user_data) +{ + BijiCollection *self = user_data; + BijiCollectionPrivate *priv = self->priv; + GList *l; + + g_clear_pointer (&priv->collected_items, g_list_free); + g_clear_pointer (&priv->icon, g_object_unref); + g_clear_pointer (&priv->emblem, g_object_unref); + + priv->collected_items = result; + + /* Connect */ + for (l = priv->collected_items; l!= NULL; l=l->next) + { + g_signal_connect_swapped (l->data, "color-changed", + G_CALLBACK (on_collected_item_change), self); + + g_signal_connect_swapped (l->data, "deleted", + G_CALLBACK (on_collected_item_change), self); + } + + g_signal_emit (self, biji_collections_signals[COLLECTION_ICON_UPDATED], 0); +} + +void +biji_collection_refresh (BijiCollection *collection) +{ + on_collected_item_change (collection); +} + +static void +biji_collection_constructed (GObject *obj) +{ + BijiCollection *self = BIJI_COLLECTION (obj); + BijiNoteBook *book; + + + book = biji_item_get_book (BIJI_ITEM (obj)); + + biji_get_items_with_collection_async (book, + self->priv->name, + biji_collection_update_collected, + self); +} + +static gboolean +say_no (BijiItem *item) +{ + return FALSE; +} + + +static void +biji_collection_class_init (BijiCollectionClass *klass) +{ + GObjectClass *g_object_class; + BijiItemClass* item_class; + + g_object_class = G_OBJECT_CLASS (klass); + item_class = BIJI_ITEM_CLASS (klass); + + g_object_class->constructed = biji_collection_constructed; + g_object_class->finalize = biji_collection_finalize; + g_object_class->set_property = biji_collection_set_property; + g_object_class->get_property = biji_collection_get_property; + + g_type_class_add_private ((gpointer)klass, sizeof (BijiCollectionPrivate)); + + + properties[PROP_URN] = + g_param_spec_string ("urn", + "Collection URN", + "Collection URN as in Tracker", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + properties[PROP_NAME] = + g_param_spec_string ("name", + "Collection label", + "The tag as a string", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + properties[PROP_MTIME] = + g_param_spec_int64 ("mtime", + "Modification time", + "Last modified time", + G_MININT64, G_MAXINT64, 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, BIJI_COLL_PROPERTIES, properties); + + biji_collections_signals[COLLECTION_ICON_UPDATED] = + g_signal_new ("icon-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + biji_collections_signals[COLLECTION_DELETED] = + g_signal_new ("deleted" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + /* Interface */ + item_class->get_title = biji_collection_get_title; + item_class->get_uuid = biji_collection_get_uuid; + item_class->get_icon = biji_collection_get_icon; + item_class->get_emblem = biji_collection_get_emblem; + item_class->get_pristine = biji_collection_get_emblem; + item_class->get_mtime = biji_collection_get_mtime; + item_class->has_color = say_no; + item_class->trash = biji_collection_trash; + item_class->is_collectable = say_no; + item_class->has_collection = biji_collection_has_collection; + item_class->add_collection = biji_collection_add_collection; + item_class->remove_collection = biji_collection_remove_collection; +} + + +static void +biji_collection_finalize (GObject *object) +{ + BijiCollection *self; + g_return_if_fail (BIJI_IS_COLLECTION (object)); + + self = BIJI_COLLECTION (object); + g_free (self->priv->name); + g_free (self->priv->urn); + + G_OBJECT_CLASS (biji_collection_parent_class)->finalize (object); +} + + +static void +biji_collection_init (BijiCollection *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_COLLECTION, BijiCollectionPrivate); + + self->priv->mtime = 0; + + self->priv->icon = NULL; + self->priv->emblem = NULL; + + self->priv->collected_items = NULL; +} + + +BijiCollection * +biji_collection_new (GObject *book, gchar *urn, gchar *name, gint64 mtime) +{ + return g_object_new (BIJI_TYPE_COLLECTION, + "note-book", book, + "name", name, + "urn", urn, + "mtime", mtime, + NULL); +} diff -Nru bijiben-3.8.4/src/libbiji/biji-collection.h bijiben-3.10.2/src/libbiji/biji-collection.h --- bijiben-3.8.4/src/libbiji/biji-collection.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-collection.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * biji-collection.h + * + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BIJI_COLLECTION_H_ +#define BIJI_COLLECTION_H_ 1 + +#include "biji-item.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_COLLECTION (biji_collection_get_type ()) +#define BIJI_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_COLLECTION, BijiCollection)) +#define BIJI_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_COLLECTION, BijiCollectionClass)) +#define BIJI_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_COLLECTION)) +#define BIJI_IS_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_COLLECTION)) +#define BIJI_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_COLLECTION, BijiCollectionClass)) + +typedef struct BijiCollection_ BijiCollection; +typedef struct BijiCollectionClass_ BijiCollectionClass; +typedef struct BijiCollectionPrivate_ BijiCollectionPrivate; + +struct BijiCollection_ +{ + BijiItem parent; + + BijiCollectionPrivate *priv; +}; + +struct BijiCollectionClass_ +{ + BijiItemClass parent_class; +}; + + +GType biji_collection_get_type (void); + +/* Exiting coll in tracker : provide urn & iso8601 date + * To create a brand new collection in tracker rather gobjectize existing one, + * see biji_create_new_collection_async */ +BijiCollection * biji_collection_new (GObject *book, gchar *urn, gchar *name, gint64 mtime); + + +/* Watching for tracker would be best. Right now manually called. */ +void biji_collection_refresh (BijiCollection *collection); + +G_END_DECLS + +#endif /* BIJI_COLLECTION_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/biji-date-time.c bijiben-3.10.2/src/libbiji/biji-date-time.c --- bijiben-3.8.4/src/libbiji/biji-date-time.c 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-date-time.c 2013-10-31 22:52:41.000000000 +0000 @@ -45,3 +45,14 @@ return _("Unknown"); } + + + +gint64 +iso8601_to_gint64 (gchar *iso8601) +{ + GTimeVal time = {0,0}; + + g_time_val_from_iso8601 (iso8601, &time); + return (gint64) time.tv_sec; +} diff -Nru bijiben-3.8.4/src/libbiji/biji-date-time.h bijiben-3.10.2/src/libbiji/biji-date-time.h --- bijiben-3.8.4/src/libbiji/biji-date-time.h 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-date-time.h 2013-10-31 22:53:14.000000000 +0000 @@ -1,5 +1,5 @@ /* biji-date-time.h - * Copyright (C) Pierre-Yves LUYTEN 2011 + * Copyright (C) Pierre-Yves LUYTEN 2011-2013 * * bijiben is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -14,7 +14,20 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see .*/ +#ifndef _BIJI_DATE_TIME_H +#define _BIJI_DATE_TIME_H + + #include #include -gchar * biji_get_time_diff_with_time (glong sec_since_epoch); + + +gchar *biji_get_time_diff_with_time (glong sec_since_epoch); + + + +gint64 iso8601_to_gint64 (gchar *iso8601); + + +#endif /* _BIJI_DATE_TIME_H */ diff -Nru bijiben-3.8.4/src/libbiji/biji-error.c bijiben-3.10.2/src/libbiji/biji-error.c --- bijiben-3.8.4/src/libbiji/biji-error.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-error.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * biji-error.c + * + * Copyright 2013 Pierre-Yves Luyten + * + * Bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "biji-error.h" + + + + +static const GDBusErrorEntry dbus_error_entries[] = +{ + {BIJI_ERROR_TRACKER, "org.gnome.Biji.Error.Tracker"} +}; + + + +GQuark +biji_error_quark (void) +{ + G_STATIC_ASSERT (G_N_ELEMENTS (dbus_error_entries) == BIJI_ERROR_NUM_ENTRIES); + + static volatile gsize quark_volatile = 0; + g_dbus_error_register_error_domain ("biji-error-quark", + &quark_volatile, + dbus_error_entries, + G_N_ELEMENTS (dbus_error_entries)); + + return (GQuark) quark_volatile; +} + + +GError * +biji_error_new (BijiErrorType type, + gchar *message) +{ + return g_error_new (BIJI_ERROR, type, message); +} diff -Nru bijiben-3.8.4/src/libbiji/biji-error.h bijiben-3.10.2/src/libbiji/biji-error.h --- bijiben-3.8.4/src/libbiji/biji-error.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-error.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * biji-error.h + * + * Copyright 2013 Pierre-Yves Luyten + * + * Bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef _BIJI_ERROR_H +#define _BIJI_ERROR_H + + +#include + + +G_BEGIN_DECLS + + +typedef enum +{ + BIJI_ERROR_TRACKER, /* org.gnome.Biji.Error.Tracker */ + BIJI_ERROR_SOURCE +} BijiErrorType; + + + +#define BIJI_ERROR_NUM_ENTRIES (BIJI_ERROR_TRACKER + 1) + + +#define BIJI_ERROR (biji_error_quark ()) + + +GQuark biji_error_quark (void); + + +GError *biji_error_new (BijiErrorType type, + gchar *message); + + +G_END_DECLS + +#endif /* _BIJI_ERROR_H */ diff -Nru bijiben-3.8.4/src/libbiji/biji-info-set.c bijiben-3.10.2/src/libbiji/biji-info-set.c --- bijiben-3.8.4/src/libbiji/biji-info-set.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-info-set.c 2013-10-31 22:52:40.000000000 +0000 @@ -0,0 +1,44 @@ +/* biji-info-set.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * libbiji is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "biji-info-set.h" + + + + +BijiInfoSet * +biji_info_set_new () +{ + BijiInfoSet *retval; + + retval = g_slice_new0 (BijiInfoSet); + retval->url = NULL; + retval->title = NULL; + retval->content = NULL; + retval->datasource_urn = NULL; + retval->tracker_urn = NULL; + retval->user_data = NULL; + + return retval; +} + + +void +biji_info_set_free (BijiInfoSet *info) +{ + g_slice_free (BijiInfoSet, info); +} diff -Nru bijiben-3.8.4/src/libbiji/biji-info-set.h bijiben-3.10.2/src/libbiji/biji-info-set.h --- bijiben-3.8.4/src/libbiji/biji-info-set.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-info-set.h 2013-10-31 22:53:14.000000000 +0000 @@ -0,0 +1,64 @@ +/* biji-info-set.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * libbiji is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* + * All fields come from tracker. + * These fields are enough to create an object. + * Ideally, this would store _all_ the serialized data + * for local notes : bz #701828 + * + * Ideally, this is also the cache system + */ + + +#ifndef _BIJI_INFO_SET_H_ +#define _BIJI_INFO_SET_H_ 1 + + +#include + + +typedef struct +{ + /* core (ie, cache). All but content are common to bijiIem. */ + gchar *url; + gchar *title; + gint64 mtime; + gchar *content; + gint64 created; + + + /* only when ensuring ressource */ + gchar *datasource_urn; + + + /* only infoset H callback when retrieving urn */ + gchar *tracker_urn; + + + /* deprecated */ + gpointer user_data; + +} BijiInfoSet; + + +BijiInfoSet * biji_info_set_new (); + +void biji_info_set_free (BijiInfoSet *info); + +#endif /* _BIJI_NOTE_ID_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/biji-item.c bijiben-3.10.2/src/libbiji/biji-item.c --- bijiben-3.8.4/src/libbiji/biji-item.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-item.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,203 @@ +/* + * biji-item.c + * + * Copyright 2013 Pierre-Yves Luyten + * + * Bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "biji-item.h" +#include "biji-note-book.h" + +/* Properties */ +enum { + PROP_0, + PROP_BOOK, + BIJI_ITEM_PROP +}; + + +static GParamSpec *properties[BIJI_ITEM_PROP] = { NULL, }; + + +struct BijiItemPrivate_ +{ + BijiNoteBook *book; +}; + +static void biji_item_finalize (GObject *object); + +G_DEFINE_TYPE (BijiItem, biji_item, G_TYPE_OBJECT) + + +static void +biji_item_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiItem *self = BIJI_ITEM (object); + + + switch (property_id) + { + case PROP_BOOK: + self->priv->book = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +biji_item_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiItem *self = BIJI_ITEM (object); + + switch (property_id) + { + case PROP_BOOK: + g_value_set_object (value, self->priv->book); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +biji_item_class_init (BijiItemClass *klass) +{ + GObjectClass *g_object_class; + + g_object_class = G_OBJECT_CLASS (klass); + + g_object_class->get_property = biji_item_get_property; + g_object_class->set_property = biji_item_set_property; + g_object_class->finalize = biji_item_finalize; + + properties[PROP_BOOK] = + g_param_spec_object("note-book", + "Note Book", + "The Note Book controlling this item", + BIJI_TYPE_NOTE_BOOK, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, BIJI_ITEM_PROP, properties); + + g_type_class_add_private ((gpointer)klass, sizeof (BijiItemPrivate)); +} + + +static void +biji_item_finalize (GObject *object) +{ + g_return_if_fail (BIJI_IS_ITEM (object)); + + G_OBJECT_CLASS (biji_item_parent_class)->finalize (object); +} + + +static void +biji_item_init (BijiItem *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_ITEM, BijiItemPrivate); + self->priv->book = NULL; +} + +const gchar * +biji_item_get_title (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_title (item); +} + +const gchar * +biji_item_get_uuid (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_uuid (item); +} + + +gpointer +biji_item_get_book (BijiItem *item) +{ + return item->priv->book; +} + + +GdkPixbuf * +biji_item_get_icon (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_icon (item); +} + +GdkPixbuf * +biji_item_get_emblem (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_emblem (item); +} + +GdkPixbuf * +biji_item_get_pristine (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_pristine (item); +} + + + +gint64 +biji_item_get_mtime (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->get_mtime (item); +} + + +gboolean +biji_item_has_color (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->has_color (item); +} + +gboolean +biji_item_trash (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->trash (item); +} + +gboolean +biji_item_is_collectable (BijiItem *item) +{ + return BIJI_ITEM_GET_CLASS (item)->is_collectable (item); +} + +gboolean +biji_item_has_collection (BijiItem *item, gchar *coll) +{ + return BIJI_ITEM_GET_CLASS (item)->has_collection (item, coll); +} + +gboolean biji_item_add_collection (BijiItem *item, BijiItem *coll, gchar *title) +{ + return BIJI_ITEM_GET_CLASS (item)->add_collection (item, coll, title); +} + +gboolean biji_item_remove_collection (BijiItem *item, BijiItem *collection) +{ + return BIJI_ITEM_GET_CLASS (item)->remove_collection (item, collection); +} diff -Nru bijiben-3.8.4/src/libbiji/biji-item.h bijiben-3.10.2/src/libbiji/biji-item.h --- bijiben-3.8.4/src/libbiji/biji-item.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-item.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,135 @@ +/* + * biji-item.h + * + * Copyright 2013 Pierre-Yves Luyten + * + * Bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BIJI_ITEM_H_ +#define BIJI_ITEM_H_ 1 + +#include +#include + +G_BEGIN_DECLS + +#define BIJI_TYPE_ITEM (biji_item_get_type ()) +#define BIJI_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_ITEM, BijiItem)) +#define BIJI_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_ITEM, BijiItemClass)) +#define BIJI_IS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_ITEM)) +#define BIJI_IS_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_ITEM)) +#define BIJI_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_ITEM, BijiItemClass)) + +typedef struct BijiItem_ BijiItem; +typedef struct BijiItemClass_ BijiItemClass; +typedef struct BijiItemPrivate_ BijiItemPrivate; + +/* Icon */ +#define BIJI_ICON_WIDTH 200 +#define BIJI_ICON_HEIGHT 200 +#define BIJI_ICON_FONT "Purusa 10" + +/* a cute baby icon without txt. squared. */ +#define BIJI_EMBLEM_WIDTH BIJI_ICON_WIDTH / 6 +#define BIJI_EMBLEM_HEIGHT BIJI_EMBLEM_WIDTH + +struct BijiItem_ +{ + GObject parent; + + BijiItemPrivate *priv; +}; + +struct BijiItemClass_ +{ + GObjectClass parent_class; + + const gchar * (*get_title) (BijiItem *item); + const gchar * (*get_uuid) (BijiItem *item); + GdkPixbuf * (*get_icon) (BijiItem *item); + GdkPixbuf * (*get_emblem) (BijiItem *item); + GdkPixbuf * (*get_pristine) (BijiItem *item); + gint64 (*get_mtime) (BijiItem *item); + gboolean (*has_color) (BijiItem *item); + + gboolean (*trash) (BijiItem *item); + + + gboolean (*is_collectable) (BijiItem *item); + gboolean (*has_collection) (BijiItem *item, gchar *coll); + gboolean (*add_collection) (BijiItem *item, BijiItem *coll, gchar *title); + gboolean (*remove_collection) (BijiItem *item, BijiItem *coll); +}; + +/* Do not create a generic items, it's rather an iface + * but i just need common stuff */ + + +GType biji_item_get_type (void); + + +/* - note uuid is a location (as in GFile) + * - collection uuid is urn */ + +const gchar * biji_item_get_title (BijiItem *item); + + +const gchar * biji_item_get_uuid (BijiItem *item); + + +gpointer biji_item_get_book (BijiItem *item); + + +gboolean biji_item_has_color (BijiItem *item); + + +GdkPixbuf * biji_item_get_icon (BijiItem *item); + + +GdkPixbuf * biji_item_get_emblem (BijiItem *item); + + +GdkPixbuf * biji_item_get_pristine (BijiItem *item); + + +gint64 biji_item_get_mtime (BijiItem *item); + + +gboolean biji_item_trash (BijiItem *item); + + +gboolean biji_item_is_collectable (BijiItem *item); + + +gboolean biji_item_has_collection (BijiItem *item, gchar *collection); + + +/* Add Collection: + * either provide an existing collection object + * or a title, in which case it's considered not on user action + * and no notifiy happens */ + +gboolean biji_item_add_collection (BijiItem *item, BijiItem *collection, gchar *title); + + +/* Remove Collection: + * always on user action. */ + +gboolean biji_item_remove_collection (BijiItem *item, BijiItem *collection); + +G_END_DECLS + +#endif /* BIJI_ITEM_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/biji-local-note.c bijiben-3.10.2/src/libbiji/biji-local-note.c --- bijiben-3.8.4/src/libbiji/biji-local-note.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-local-note.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,239 @@ +/* bjb-local-note.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "biji-local-note.h" +#include "serializer/biji-lazy-serializer.h" + + +struct BijiLocalNotePrivate_ +{ + BijiProvider *provider; + + GFile *location; + gchar *basename; + gchar *html; +}; + + +G_DEFINE_TYPE (BijiLocalNote, biji_local_note, BIJI_TYPE_NOTE_OBJ) + +/* Iface */ + +gchar * +local_note_get_html (BijiNoteObj *note) +{ + if (BIJI_IS_LOCAL_NOTE (note)) + return BIJI_LOCAL_NOTE (note)->priv->html; + + else + return NULL; +} + + +void +local_note_set_html (BijiNoteObj *note, + gchar *html) +{ + if (BIJI_LOCAL_NOTE (note)->priv->html) + g_free (BIJI_LOCAL_NOTE (note)->priv->html); + + if (html) + BIJI_LOCAL_NOTE (note)->priv->html = g_strdup (html); +} + + +void +local_note_save (BijiNoteObj *note) +{ + const BijiProviderInfo *prov_info; + BijiInfoSet *info; + BijiItem *item; + BijiLocalNote *self; + + g_return_if_fail (BIJI_IS_LOCAL_NOTE (note)); + + self = BIJI_LOCAL_NOTE (note); + item = BIJI_ITEM (note); + + /* File save */ + biji_lazy_serialize (note); + + /* Tracker */ + prov_info = biji_provider_get_info (self->priv->provider); + info = biji_info_set_new (); + + info->url = (gchar*) biji_item_get_uuid (item); + info->title = (gchar*) biji_item_get_title (item); + info->content = (gchar*) biji_note_obj_get_raw_text (note); + info->mtime = biji_item_get_mtime (item); + info->created = biji_note_obj_get_create_date (note); + info->datasource_urn = g_strdup (prov_info->datasource); + + biji_tracker_ensure_ressource_from_info (biji_item_get_book (item), + info); +} + + +/* GObj */ + +static void +biji_local_note_finalize (GObject *object) +{ + BijiLocalNote *self; + + g_return_if_fail (BIJI_IS_LOCAL_NOTE (object)); + + self = BIJI_LOCAL_NOTE (object); + + if (self->priv->html) + g_free (self->priv->html); + + G_OBJECT_CLASS (biji_local_note_parent_class)->finalize (object); +} + + +static void +biji_local_note_init (BijiLocalNote *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_LOCAL_NOTE, BijiLocalNotePrivate); + self->priv->html = NULL; +} + + +static gboolean +item_yes (BijiItem * item) +{ + return TRUE; +} + + +static gboolean +note_yes (BijiNoteObj *item) +{ + return TRUE; +} + + +static gboolean +local_note_archive (BijiNoteObj *note) +{ + BijiLocalNote *self; + GFile *parent, *trash, *archive; + gchar *parent_path, *trash_path, *backup_path; + GError *error = NULL; + gboolean result = FALSE; + + g_warning ("local note archive"); + self = BIJI_LOCAL_NOTE (note); + + /* Create the trash directory + * No matter if already exists */ + parent = g_file_get_parent (self->priv->location); + parent_path = g_file_get_path (parent); + trash_path = g_build_filename (parent_path, ".Trash", NULL); + trash = g_file_new_for_path (trash_path); + g_file_make_directory (trash, NULL, NULL); + + /* Move the note to trash */ + + backup_path = g_build_filename (trash_path, self->priv->basename, NULL); + archive = g_file_new_for_path (backup_path); + + result = g_file_move (self->priv->location, + archive, + G_FILE_COPY_OVERWRITE, + NULL, // cancellable + NULL, // progress callback + NULL, // progress_callback_data, + &error); + + if (error) + { + g_message ("%s", error->message); + g_error_free (error); + error = NULL; + } + + + g_free (parent_path); + g_object_unref (parent); + g_free (trash_path); + g_object_unref (trash); + g_free (backup_path); + g_object_unref (archive); + + return result; +} + + +static gchar* +local_note_get_basename (BijiNoteObj *note) +{ + return BIJI_LOCAL_NOTE (note)->priv->basename; +} + + +static void +biji_local_note_class_init (BijiLocalNoteClass *klass) +{ + GObjectClass *g_object_class; + BijiItemClass *item_class; + BijiNoteObjClass *note_class; + + g_object_class = G_OBJECT_CLASS (klass); + item_class = BIJI_ITEM_CLASS (klass); + note_class = BIJI_NOTE_OBJ_CLASS (klass); + + g_object_class->finalize = biji_local_note_finalize; + + item_class->is_collectable = item_yes; + item_class->has_color = item_yes; + + note_class->get_basename = local_note_get_basename; + note_class->get_html = local_note_get_html; + note_class->set_html = local_note_set_html; + note_class->save_note = local_note_save; + note_class->can_format = note_yes; + note_class->archive = local_note_archive; + + g_type_class_add_private ((gpointer)klass, sizeof (BijiLocalNotePrivate)); +} + + +BijiNoteObj * +biji_local_note_new_from_info (BijiProvider *provider, + BijiNoteBook *book, + BijiInfoSet *set) +{ + BijiNoteID *id; + BijiNoteObj *obj; + BijiLocalNote *local; + + id = biji_note_id_new_from_info (set); + + obj = g_object_new (BIJI_TYPE_LOCAL_NOTE, + "note-book", book, + "id", id, + NULL); + + local = BIJI_LOCAL_NOTE (obj); + local->priv->location = g_file_new_for_commandline_arg (set->url); + local->priv->basename = g_file_get_basename (local->priv->location); + local->priv->provider = provider; + + return obj; +} diff -Nru bijiben-3.8.4/src/libbiji/biji-local-note.h bijiben-3.10.2/src/libbiji/biji-local-note.h --- bijiben-3.8.4/src/libbiji/biji-local-note.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-local-note.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,60 @@ +/* bjb-local-note.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BIJI_LOCAL_NOTE_H_ +#define BIJI_LOCAL_NOTE_H_ 1 + +#include "biji-note-id.h" +#include "biji-note-obj.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_LOCAL_NOTE (biji_local_note_get_type ()) +#define BIJI_LOCAL_NOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_LOCAL_NOTE, BijiLocalNote)) +#define BIJI_LOCAL_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_LOCAL_NOTE, BijiLocalNoteClass)) +#define BIJI_IS_LOCAL_NOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_LOCAL_NOTE)) +#define BIJI_IS_LOCAL_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_LOCAL_NOTE)) +#define BIJI_LOCAL_NOTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_LOCAL_NOTE, BijiLocalNoteClass)) + +typedef struct BijiLocalNote_ BijiLocalNote; +typedef struct BijiLocalNoteClass_ BijiLocalNoteClass; +typedef struct BijiLocalNotePrivate_ BijiLocalNotePrivate; + +struct BijiLocalNote_ +{ + BijiNoteObj parent; + BijiLocalNotePrivate *priv; +}; + +struct BijiLocalNoteClass_ +{ + BijiNoteObjClass parent_class; +}; + + +GType biji_local_note_get_type (void); + + +BijiNoteObj *biji_local_note_new_from_info (BijiProvider *provider, + BijiNoteBook *book, + BijiInfoSet *set); + +G_END_DECLS + +#endif /* BIJI_LOCAL_NOTE_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/biji-marshalers.c bijiben-3.10.2/src/libbiji/biji-marshalers.c --- bijiben-3.8.4/src/libbiji/biji-marshalers.c 2013-08-18 23:30:08.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-marshalers.c 2013-11-11 20:55:40.000000000 +0000 @@ -87,3 +87,40 @@ data2); } +/* VOID:BOOLEAN,BOOLEAN (./biji-marshalers.list:2) */ +void +_biji_marshal_VOID__BOOLEAN_BOOLEAN (GClosure *closure, + GValue *return_value G_GNUC_UNUSED, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint G_GNUC_UNUSED, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__BOOLEAN_BOOLEAN) (gpointer data1, + gboolean arg_1, + gboolean arg_2, + gpointer data2); + register GMarshalFunc_VOID__BOOLEAN_BOOLEAN callback; + register GCClosure *cc = (GCClosure*) closure; + register gpointer data1, data2; + + g_return_if_fail (n_param_values == 3); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__BOOLEAN_BOOLEAN) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_boolean (param_values + 1), + g_marshal_value_peek_boolean (param_values + 2), + data2); +} + diff -Nru bijiben-3.8.4/src/libbiji/biji-marshalers.h bijiben-3.10.2/src/libbiji/biji-marshalers.h --- bijiben-3.8.4/src/libbiji/biji-marshalers.h 2013-08-18 23:30:08.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-marshalers.h 2013-11-11 20:55:40.000000000 +0000 @@ -14,6 +14,14 @@ gpointer invocation_hint, gpointer marshal_data); +/* VOID:BOOLEAN,BOOLEAN (./biji-marshalers.list:2) */ +extern void _biji_marshal_VOID__BOOLEAN_BOOLEAN (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); + G_END_DECLS #endif /* ___biji_marshal_MARSHAL_H__ */ diff -Nru bijiben-3.8.4/src/libbiji/biji-marshalers.list bijiben-3.10.2/src/libbiji/biji-marshalers.list --- bijiben-3.8.4/src/libbiji/biji-marshalers.list 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-marshalers.list 2013-11-11 20:52:06.000000000 +0000 @@ -1 +1,2 @@ VOID:ENUM,POINTER +VOID:BOOLEAN,BOOLEAN diff -Nru bijiben-3.8.4/src/libbiji/biji-note-book.c bijiben-3.10.2/src/libbiji/biji-note-book.c --- bijiben-3.8.4/src/libbiji/biji-note-book.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-book.c 2013-11-11 20:52:06.000000000 +0000 @@ -19,26 +19,45 @@ #include #include "libbiji.h" +#include "biji-local-note.h" // FIXME !!!! biji_provider_note_new () +#include "biji-collection.h" +#include "biji-error.h" + +#include "provider/biji-import-provider.h" +#include "provider/biji-local-provider.h" +#include "provider/biji-own-cloud-provider.h" struct _BijiNoteBookPrivate { - GHashTable *notes; + /* Notes & Collections. + * Keep a direct pointer to local provider for convenience. */ + + GHashTable *items; + GHashTable *providers; + BijiProvider *local_provider; /* Signals */ gulong note_renamed ; GFile *location; - GCancellable *load_cancellable; + GError *error; + TrackerSparqlConnection *connection; + ZeitgeistLog *log; + GdkRGBA color; }; + /* Properties */ enum { PROP_0, PROP_LOCATION, + PROP_COLOR, + PROP_ERROR, BIJI_BOOK_PROPERTIES }; + /* Signals */ enum { BOOK_AMENDED, @@ -48,38 +67,92 @@ static guint biji_book_signals[BIJI_BOOK_SIGNALS] = { 0 }; static GParamSpec *properties[BIJI_BOOK_PROPERTIES] = { NULL, }; + + #define BIJI_NOTE_BOOK_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BIJI_TYPE_NOTE_BOOK, BijiNoteBookPrivate)) G_DEFINE_TYPE (BijiNoteBook, biji_note_book, G_TYPE_OBJECT); + + + + + static void biji_note_book_init (BijiNoteBook *self) { - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_NOTE_BOOK, - BijiNoteBookPrivate); + BijiNoteBookPrivate *priv; + + priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_NOTE_BOOK, + BijiNoteBookPrivate); + + /* Item path is key for table */ + priv->items = g_hash_table_new_full (g_str_hash, + g_str_equal, + NULL, + g_object_unref); + + /* + * Providers are the different notes storage + * the hash table use an id + * + * - local files stored notes = "local" + * - own cloud notes = account_get_id + */ + + priv->providers = g_hash_table_new (g_str_hash, g_str_equal); +} + + +ZeitgeistLog * +biji_note_book_get_zg_log (BijiNoteBook *book) +{ + return book->priv->log; +} + + +TrackerSparqlConnection * +biji_note_book_get_tracker_connection (BijiNoteBook *book) +{ + return book->priv->connection; +} + + + +GList * +biji_note_book_get_providers (BijiNoteBook *book) +{ + GList *providers, *l, *retval; + + retval = NULL; + providers = g_hash_table_get_values (book->priv->providers); - /* Note path is key for table. It's freed by note itself */ - self->priv->notes = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - g_object_unref); + for (l = providers; l != NULL; l = l->next) + { + retval = g_list_prepend ( + retval, (gpointer) biji_provider_get_info (BIJI_PROVIDER (l->data))); + } + + g_list_free (providers); + return retval; } + static void biji_note_book_finalize (GObject *object) { BijiNoteBook *book = BIJI_NOTE_BOOK (object) ; - if (book->priv->load_cancellable) - g_cancellable_cancel (book->priv->load_cancellable); - g_clear_object (&book->priv->load_cancellable); g_clear_object (&book->priv->location); - g_hash_table_destroy (book->priv->notes); + g_hash_table_destroy (book->priv->items); G_OBJECT_CLASS (biji_note_book_parent_class)->finalize (object); } + + + static void biji_note_book_set_property (GObject *object, guint property_id, @@ -87,13 +160,26 @@ GParamSpec *pspec) { BijiNoteBook *self = BIJI_NOTE_BOOK (object); - + GdkRGBA *color; switch (property_id) { case PROP_LOCATION: self->priv->location = g_value_dup_object (value); break; + + case PROP_ERROR: + self->priv->error = g_value_get_pointer (value); + break; + + case PROP_COLOR: + color = g_value_get_pointer (value); + self->priv->color.red = color->red; + self->priv->color.blue = color->blue; + self->priv->color.green = color->green; + self->priv->color.alpha = color->alpha; + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -120,32 +206,35 @@ } static gboolean -title_is_unique (BijiNoteBook *book,gchar *title) +title_is_unique (BijiNoteBook *book, gchar *title) { gboolean is_unique = TRUE; - BijiNoteObj *iter; - GList *notes, *l; + BijiItem *iter; + GList *items, *l; - notes = g_hash_table_get_values (book->priv->notes); + items = g_hash_table_get_values (book->priv->items); - for ( l=notes ; l != NULL ; l = l->next) + for ( l=items ; l != NULL ; l = l->next) { - iter = BIJI_NOTE_OBJ (l->data); + if (BIJI_IS_ITEM (l->data) == FALSE) + break; + + iter = BIJI_ITEM (l->data); - if (g_strcmp0 (biji_note_obj_get_title (iter), title) == 0) + if (g_strcmp0 (biji_item_get_title (iter), title) == 0) { is_unique = FALSE; break; } } - g_list_free (notes); + g_list_free (items); return is_unique; } /* If title not unique, add sufffix "n", starting with 2, until ok */ gchar * -biji_note_book_get_unique_title (BijiNoteBook *book, gchar *title) +biji_note_book_get_unique_title (BijiNoteBook *book, const gchar *title) { if (!book) return g_strdup (title); @@ -168,166 +257,176 @@ return new_title; } -gboolean + +void biji_note_book_notify_changed (BijiNoteBook *book, BijiNoteBookChangeFlag flag, - BijiNoteObj *note) + BijiItem *item) { - g_signal_emit (G_OBJECT (book), biji_book_signals[BOOK_AMENDED], 0, flag, note); - return FALSE; + g_debug ("book: notify changed, %i", flag); + g_signal_emit (book, + biji_book_signals[BOOK_AMENDED], + 0, + flag, + item); } + +/* TODO : use the same for note, put everything there + * rather calling a func */ +static void +on_item_deleted_cb (BijiItem *item, BijiNoteBook *book) +{ + biji_note_book_remove_item (book, item); +} + + void book_on_note_changed_cb (BijiNoteObj *note, BijiNoteBook *book) { - biji_note_book_notify_changed (book, BIJI_BOOK_NOTE_AMENDED, note); + biji_note_book_notify_changed (book, BIJI_BOOK_NOTE_AMENDED, BIJI_ITEM (note)); } static void -book_on_note_color_changed_cb (BijiNoteObj *note, BijiNoteBook *book) +book_on_item_icon_changed_cb (BijiNoteObj *note, BijiNoteBook *book) { - biji_note_book_notify_changed (book, BIJI_BOOK_NOTE_COLORED, note); + biji_note_book_notify_changed (book, BIJI_BOOK_ITEM_ICON_CHANGED, BIJI_ITEM (note)); } static void -_biji_note_book_add_one_note(BijiNoteBook *book,BijiNoteObj *note) +_biji_note_book_add_one_item (BijiNoteBook *book, BijiItem *item) { - g_return_if_fail(BIJI_IS_NOTE_OBJ(note)); - - _biji_note_obj_set_book(note,(gpointer)book); + g_return_if_fail (BIJI_IS_ITEM (item)); - // Add it to the list and emit signal - g_hash_table_insert (book->priv->notes, - biji_note_obj_get_path (note), note); - - g_signal_connect (note, "changed", G_CALLBACK (book_on_note_changed_cb), book); - g_signal_connect (note, "renamed", G_CALLBACK (book_on_note_changed_cb), book); - g_signal_connect (note, "color-changed", G_CALLBACK (book_on_note_color_changed_cb), book); -} -#define ATTRIBUTES_FOR_NOTEBOOK "standard::content-type,standard::name" + /* Add it to the list */ + g_hash_table_insert (book->priv->items, + (gpointer) biji_item_get_uuid (item), item); -static void -load_location_error (GFile *location, - GError *error) -{ - gchar *path = g_file_get_path (location); - g_printerr ("Unable to load location %s: %s", path, error->message); + /* Notify */ + if (BIJI_IS_NOTE_OBJ (item)) + { + g_signal_connect (item, "changed", G_CALLBACK (book_on_note_changed_cb), book); + g_signal_connect (item, "renamed", G_CALLBACK (book_on_note_changed_cb), book); + g_signal_connect (item, "color-changed", G_CALLBACK (book_on_item_icon_changed_cb), book); + } - g_free (path); - g_error_free (error); + else if (BIJI_IS_COLLECTION (item)) + { + g_signal_connect (item, "deleted", G_CALLBACK (on_item_deleted_cb), book); + g_signal_connect (item , "icon-changed", G_CALLBACK (book_on_item_icon_changed_cb), book); + } } -static void -release_enum_cb (GObject *source, GAsyncResult *res, gpointer user_data) -{ - g_file_enumerator_close_finish (G_FILE_ENUMERATOR (source), - res, - NULL); - g_object_unref (source); -} static void -enumerate_next_files_ready_cb (GObject *source, - GAsyncResult *res, - gpointer user_data) +on_provider_loaded_cb (BijiProvider *provider, + GList *items, + BijiNoteBook *book) { - GFileEnumerator *enumerator = G_FILE_ENUMERATOR (source); - BijiNoteBook *self; - GList *files, *l; - GError *error = NULL; - gchar *base_path; - - files = g_file_enumerator_next_files_finish (enumerator, res, &error); - g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, - release_enum_cb, NULL); + BijiItem *item = NULL; + BijiNoteBookChangeFlag flag = BIJI_BOOK_CHANGE_FLAG; + GList *l; + gint i = 0; + - if (error != NULL) + for (l=items; l!=NULL; l=l->next) + { + if (BIJI_IS_ITEM (l->data)) { - load_location_error (g_file_enumerator_get_container (enumerator), error); - return; + _biji_note_book_add_one_item (book, l->data); + i++; } + } - self = user_data; - base_path = g_file_get_path (self->priv->location); - // now load the notes - for (l = files; l != NULL; l = l->next) - { - GFileInfo *info; - const gchar *name; - gchar *path; - BijiNoteObj *note; + g_debug ("on provider loaded: %i", i); - info = l->data; - name = g_file_info_get_name (info); - if (!g_str_has_suffix (name, ".note")) - continue; + /* More cautious to ask to fully rebuild the model + * because this might be the first provider. + * See #708458 + * There are more performant fixes but not worth it */ + biji_note_book_notify_changed (book, BIJI_BOOK_MASS_CHANGE, item); +} - path = g_build_filename (base_path, name, NULL); - note = biji_note_get_new_from_file (path); - _biji_note_book_add_one_note (self, note); +/* + * It should be the right place + * to stock somehow providers list + * in order to handle properly book__note_new () + * + */ +static void +_add_provider (BijiNoteBook *self, + BijiProvider *provider) +{ + g_return_if_fail (BIJI_IS_PROVIDER (provider)); - g_free (path); - } - g_free (base_path); - g_list_free_full (files, g_object_unref); + /* we can safely cast get_id from const to gpointer + * since there is no key free func */ - biji_note_book_notify_changed (self, BIJI_BOOK_MASS_CHANGE, NULL); + const BijiProviderInfo *info; + + info = biji_provider_get_info (provider); + g_hash_table_insert (self->priv->providers, (gpointer) info->unique_id, provider); + g_signal_connect (provider, "loaded", + G_CALLBACK (on_provider_loaded_cb), self); } -static void -enumerate_children_ready_cb (GObject *source, - GAsyncResult *res, - gpointer user_data) + +void +biji_note_book_add_goa_object (BijiNoteBook *self, + GoaObject *object) { - GFile *location = G_FILE (source); - GFileEnumerator *enumerator; - GError *error = NULL; - BijiNoteBook *self; + BijiProvider *provider; + GoaAccount *account; + const gchar *type; - enumerator = g_file_enumerate_children_finish (location, - res, &error); + provider = NULL; + account = goa_object_get_account (object); - if (error != NULL) - { - load_location_error (location, error); - return; - } + if (GOA_IS_ACCOUNT (account)) + { + type = goa_account_get_provider_type (account); - self = user_data; + if (g_strcmp0 (type, "owncloud") ==0) + provider = biji_own_cloud_provider_new (self, object); + } - // enumerate all files - g_file_enumerator_next_files_async (enumerator, G_MAXINT, - G_PRIORITY_DEFAULT, - self->priv->load_cancellable, - enumerate_next_files_ready_cb, - self); + _add_provider (self, provider); } -static void -note_book_load_from_location (BijiNoteBook *self) -{ - self->priv->load_cancellable = g_cancellable_new (); - g_file_enumerate_children_async (self->priv->location, - ATTRIBUTES_FOR_NOTEBOOK, 0, - G_PRIORITY_DEFAULT, - self->priv->load_cancellable, - enumerate_children_ready_cb, - self); -} static void biji_note_book_constructed (GObject *object) { - BijiNoteBook *self = BIJI_NOTE_BOOK (object); + BijiNoteBook *self; + BijiNoteBookPrivate *priv; gchar *filename; GFile *cache; + GError *error; + G_OBJECT_CLASS (biji_note_book_parent_class)->constructed (object); + self = BIJI_NOTE_BOOK (object); + priv = self->priv; + error = NULL; + + /* If tracker fails for some reason, + * do not attempt anything */ + priv->connection = tracker_sparql_connection_get (NULL, &error); + + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + priv->error = g_error_new (BIJI_ERROR, BIJI_ERROR_TRACKER, "Tracker is not available"); + return; + } + + priv->log = biji_zeitgeist_init (); /* Ensure cache directory for icons */ filename = g_build_filename (g_get_user_cache_dir (), @@ -338,9 +437,11 @@ g_file_make_directory (cache, NULL, NULL); g_object_unref (cache); - note_book_load_from_location (self); + priv->local_provider = biji_local_provider_new (self, self->priv->location); + _add_provider (self, priv->local_provider); } + static void biji_note_book_class_init (BijiNoteBookClass *klass) { @@ -358,86 +459,145 @@ G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_POINTER); properties[PROP_LOCATION] = - g_param_spec_object("location", - "The book location", - "The location where the notes are loaded and saved", - G_TYPE_FILE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + g_param_spec_object ("location", + "The book location", + "The location where the notes are loaded and saved", + G_TYPE_FILE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + + properties[PROP_COLOR] = + g_param_spec_pointer ("color", + "Default color", + "Note book default color for notes", + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); + + + properties[PROP_ERROR] = + g_param_spec_pointer ("error", + "Unrecoverable error", + "Note book unrecoverable error", + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, BIJI_BOOK_PROPERTIES, properties); g_type_class_add_private (klass, sizeof (BijiNoteBookPrivate)); } + +void +biji_note_book_get_default_color (BijiNoteBook *book, GdkRGBA *color) +{ + g_return_if_fail (BIJI_IS_NOTE_BOOK (book)); + + color->red = book->priv->color.red; + color->blue = book->priv->color.blue; + color->green = book->priv->color.green; + color->alpha = book->priv->color.alpha; +} + + gboolean -biji_note_book_remove_note (BijiNoteBook *book, BijiNoteObj *note) +biji_note_book_remove_item (BijiNoteBook *book, BijiItem *item) { g_return_val_if_fail (BIJI_IS_NOTE_BOOK (book), FALSE); - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), FALSE); + g_return_val_if_fail (BIJI_IS_ITEM (item), FALSE); - BijiNoteObj *to_delete = NULL; - gchar *path; + BijiItem *to_delete = NULL; + const gchar *path; gboolean retval = FALSE; - path = biji_note_obj_get_path (note); - to_delete = g_hash_table_lookup (book->priv->notes, path); + path = biji_item_get_uuid (item); + to_delete = g_hash_table_lookup (book->priv->items, path); if (to_delete) { /* Signal before doing anything here. So the note is still * fully available for signal receiver. */ - biji_note_book_notify_changed (book, BIJI_BOOK_NOTE_TRASHED, to_delete); - - /* Ref note first, hash_table won't finalize it & we can delete it*/ - g_object_ref (to_delete); - g_hash_table_remove (book->priv->notes, path); - biji_note_obj_trash (note); + biji_note_book_notify_changed (book, BIJI_BOOK_ITEM_TRASHED, to_delete); + biji_item_trash (item); + g_hash_table_remove (book->priv->items, path); retval = TRUE; } - g_free (path); return retval; } -/* Notes collection */ -void -biji_note_book_append_new_note (BijiNoteBook *book, BijiNoteObj *note, gboolean notify) +gboolean +biji_note_book_add_item (BijiNoteBook *book, BijiItem *item, gboolean notify) { - g_return_if_fail (BIJI_IS_NOTE_BOOK (book)); - g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); + g_return_val_if_fail (BIJI_IS_NOTE_BOOK (book), FALSE); + g_return_val_if_fail (BIJI_IS_ITEM (item), FALSE); + + const gchar *uid; + gboolean retval = TRUE; + + uid = biji_item_get_uuid (item); - _biji_note_book_add_one_note (book,note); + if (uid != NULL && + g_hash_table_lookup (book->priv->items, uid)) + retval = FALSE; - if (notify) - biji_note_book_notify_changed (book, BIJI_BOOK_NOTE_ADDED, note); + else if (BIJI_IS_NOTE_OBJ (item)) + _biji_note_book_add_one_item (book, item); + + else if (BIJI_IS_COLLECTION (item)) + { + g_hash_table_insert (book->priv->items, + (gpointer) biji_item_get_uuid (item), + item); + + g_signal_connect (item, "deleted", + G_CALLBACK (on_item_deleted_cb), book); + } + + if (retval && notify) + biji_note_book_notify_changed (book, BIJI_BOOK_ITEM_ADDED, item); + + return retval; } - + GList * -biji_note_book_get_notes (BijiNoteBook *book) +biji_note_book_get_items (BijiNoteBook *book) { - return g_hash_table_get_values (book->priv->notes); + return g_hash_table_get_values (book->priv->items); } -BijiNoteObj * -note_book_get_note_at_path (BijiNoteBook *book, gchar *path) +BijiItem * +biji_note_book_get_item_at_path (BijiNoteBook *book, const gchar *path) { - return g_hash_table_lookup (book->priv->notes, path); + return g_hash_table_lookup (book->priv->items, (gconstpointer) path); } + BijiNoteBook * -biji_note_book_new (GFile *location) +biji_note_book_new (GFile *location, GdkRGBA *color, GError **error) { - return g_object_new(BIJI_TYPE_NOTE_BOOK, - "location", location, - NULL); + BijiNoteBook *retval; + + retval = g_object_new (BIJI_TYPE_NOTE_BOOK, + "location", location, + "color", color, + "error", *error, + NULL); + + *error = retval->priv->error; + return retval; } + BijiNoteObj * -biji_note_get_new_from_file (const gchar* path) +biji_note_get_new_from_file (BijiNoteBook *book, const gchar* path) { - BijiNoteObj* ret = biji_note_obj_new_from_path (path); + BijiInfoSet set; + BijiNoteObj *ret; - /* The deserializer will handle note type */ + set.url = (gchar*) path; + set.mtime = 0; + set.title = NULL; + set.content = NULL; + + ret = biji_local_note_new_from_info (book->priv->local_provider, book, &set); biji_lazy_deserialize (ret); return ret ; @@ -460,7 +620,11 @@ { BijiNoteObj *ret = NULL; gchar * folder, *name, *path; + BijiInfoSet set; + set.title = NULL; + set.content = NULL; + set.mtime = 0; folder = g_file_get_path (book->priv->location); while (!ret) @@ -468,65 +632,120 @@ name = biji_note_book_get_uuid (); path = g_build_filename (folder, name, NULL); g_free (name); + set.url = path; - if (!g_hash_table_lookup (book->priv->notes, path)) - ret = biji_note_obj_new_from_path (path); + if (!g_hash_table_lookup (book->priv->items, path)) + ret = biji_local_note_new_from_info (book->priv->local_provider, book, &set); g_free (path); } biji_note_obj_set_all_dates_now (ret); - biji_note_obj_set_title_survives (ret, FALSE); return ret; } -/* TODO : different New notes shall call a common - * biji_note_obj_new with different properties : path mandatory, - * optional title, raw_text, html, ... */ - -BijiNoteObj* -biji_note_book_get_new_note_from_string (BijiNoteBook *book, - gchar *title) + +/* + * TODO : move this to local provider. + */ +static BijiNoteObj * +biji_note_book_local_note_new (BijiNoteBook *book, gchar *str) { BijiNoteObj *ret = get_note_skeleton (book); - /* Note will copy title - * We do NOT sanitize here because blank title is allowed ("initial") */ - if (title && g_strcmp0 (title, "") !=0) - biji_note_obj_set_title (ret, title); + if (str) + { + gchar *unique, *html; + + unique = biji_note_book_get_unique_title (book, str); + html = html_from_plain_text (str); + + biji_note_obj_set_title (ret, unique); + biji_note_obj_set_raw_text (ret, str); + biji_note_obj_set_html (ret, html); + + g_free (unique); + g_free (html); + } biji_note_obj_save_note (ret); - biji_note_book_append_new_note (book, ret, TRUE); + biji_note_book_add_item (book, BIJI_ITEM (ret), TRUE); return ret; } -static char* -wrap_note_content (char *content) -{ - return g_strdup_printf("%s", content); -} - +/* Create the importer == switch depending on the uri. + * That's all, the importer is responsible + * for emiting the signal transfering the notes + * And no need to _add_provider, it's a tmp provider. */ +void +biji_note_book_import_uri (BijiNoteBook *book, + gchar *target_provider_id, + gchar *uri) +{ + BijiProvider *ret; + + ret = biji_import_provider_new (book, target_provider_id, uri); + g_signal_connect (ret, "loaded", + G_CALLBACK (on_provider_loaded_cb), book); + +} + +/* + * Use "local" for a local note new + * Use goa_account_get_id for goa + */ BijiNoteObj * -biji_note_book_new_note_with_text (BijiNoteBook *book, - gchar *plain_text) +biji_note_book_note_new (BijiNoteBook *book, + gchar *str, + gchar *provider_id) { - BijiNoteObj *ret = get_note_skeleton (book); - gchar *unique_title = biji_note_book_get_unique_title (book, DEFAULT_NOTE_TITLE); - gchar *html; + BijiProvider *provider; + BijiNoteObj *retval; - /* Note will copy title, raw_text and html strings */ - biji_note_obj_set_title (ret, unique_title); - g_free (unique_title); - - biji_note_obj_set_raw_text (ret, plain_text); - html = wrap_note_content (plain_text); - biji_note_obj_set_html_content (ret, html); - g_free (html); + // If we move local_note_new to create_note for local provider + // we won't need this stupid switch. - biji_note_obj_save_note (ret); - biji_note_book_append_new_note (book, ret, TRUE); + if (provider_id == NULL || + g_strcmp0 (provider_id, "local") == 0) + return biji_note_book_local_note_new (book, str); - return ret; + + provider = g_hash_table_lookup (book->priv->providers, + provider_id); + + + retval = BIJI_PROVIDER_GET_CLASS (provider)->create_new_note (provider, str); + // do not save. up to the provider implementation to save it or not + // at creation. + biji_note_book_add_item (book, BIJI_ITEM (retval), TRUE); + + return retval; +} + + + + +BijiNoteObj * +biji_note_book_note_new_full (BijiNoteBook *book, + gchar *provider_id, + gchar *suggested_path, + BijiInfoSet *info, + gchar *html, + GdkRGBA *color) +{ + BijiProvider *provider; + BijiNoteObj *retval; + + provider = g_hash_table_lookup (book->priv->providers, + provider_id); + + retval = BIJI_PROVIDER_GET_CLASS (provider)->create_note_full (provider, + suggested_path, + info, + html, + color); + + return retval; } diff -Nru bijiben-3.8.4/src/libbiji/biji-note-book.h bijiben-3.10.2/src/libbiji/biji-note-book.h --- bijiben-3.8.4/src/libbiji/biji-note-book.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-book.h 2013-11-11 20:52:06.000000000 +0000 @@ -2,22 +2,26 @@ #define _BIJI_NOTE_BOOK_H_ #include +#include +#include +#include "biji-info-set.h" #include "biji-note-obj.h" -G_BEGIN_DECLS +#define GOA_API_IS_SUBJECT_TO_CHANGE +#include -#define DEFAULT_NOTE_TITLE "New Note" +G_BEGIN_DECLS /* The flag tells if view should reload the whole model or not */ typedef enum { BIJI_BOOK_CHANGE_FLAG, - BIJI_BOOK_MASS_CHANGE, // Startup, mass import.. rather rebuild the whole. - BIJI_BOOK_NOTE_ADDED, // Single note added - BIJI_BOOK_NOTE_AMENDED, // Single note amended (title, content) - BIJI_BOOK_NOTE_COLORED, // Single note color - BIJI_BOOK_NOTE_TRASHED, // Single note trashed + BIJI_BOOK_MASS_CHANGE, // Startup, mass import.. rather rebuild the whole. + BIJI_BOOK_ITEM_ADDED, // Single item added + BIJI_BOOK_ITEM_TRASHED, // Single item trashed + BIJI_BOOK_ITEM_ICON_CHANGED, // Single item icon + BIJI_BOOK_NOTE_AMENDED, // Single note amended (title, content) } BijiNoteBookChangeFlag; #define BIJI_TYPE_NOTE_BOOK (biji_note_book_get_type ()) @@ -43,34 +47,85 @@ BijiNoteBookPrivate *priv ; }; + + GType biji_note_book_get_type (void) G_GNUC_CONST; -BijiNoteBook * biji_note_book_new (GFile *location); -gchar * biji_note_book_get_unique_title (BijiNoteBook *book, gchar *title); -void _biji_note_book_add_note_to_tag_book(BijiNoteBook *book,BijiNoteObj *note,gchar *tag); +BijiNoteBook *biji_note_book_new (GFile *location, + GdkRGBA *color, + GError **error); + + +void biji_note_book_import_uri (BijiNoteBook *book, + gchar *target_provider_id, + gchar *uri); + + +void biji_note_book_add_goa_object (BijiNoteBook *book, + GoaObject *object); + +/* */ +GList *biji_note_book_get_providers (BijiNoteBook *book); + + +ZeitgeistLog *biji_note_book_get_zg_log (BijiNoteBook *book); + +TrackerSparqlConnection + *biji_note_book_get_tracker_connection (BijiNoteBook *book); + + +void biji_note_book_get_default_color (BijiNoteBook *book, + GdkRGBA *color); + + +gchar *biji_note_book_get_unique_title (BijiNoteBook *book, + const gchar *title); + + +gboolean biji_note_book_add_item (BijiNoteBook *book, + BijiItem *item, + gboolean notify); + + +void biji_note_book_notify_changed (BijiNoteBook *book, + BijiNoteBookChangeFlag flag, + BijiItem *item); + + +gboolean biji_note_book_remove_item (BijiNoteBook *book, + BijiItem *item); + + +BijiItem *biji_note_book_get_item_at_path (BijiNoteBook *book, + const gchar *path); + + +/* Get all items, either notes or collections + * Free the GList, not its content */ +GList *biji_note_book_get_items (BijiNoteBook *book); -void biji_note_book_append_new_note (BijiNoteBook *book, BijiNoteObj *note, gboolean notify); -gboolean biji_note_book_notify_changed (BijiNoteBook *book, - BijiNoteBookChangeFlag flag, - BijiNoteObj *note); -gboolean biji_note_book_remove_note (BijiNoteBook *book,BijiNoteObj *note); +// deprecated - instead we'll use new import / providers facilities +BijiNoteObj *biji_note_get_new_from_file (BijiNoteBook *book, + const gchar* tomboy_format_note_path); -BijiNoteObj * note_book_get_note_at_path(BijiNoteBook *book,gchar *path); -/* GList return values should be freed, and never the content */ -GList * biji_note_book_get_notes (BijiNoteBook *book); +BijiNoteObj *biji_note_book_note_new (BijiNoteBook *book, + gchar *str, + gchar *provider_id); -/* New Notes */ -BijiNoteObj* biji_note_get_new_from_file (const gchar* tomboy_format_note_path); -BijiNoteObj * biji_note_book_get_new_note_from_string (BijiNoteBook *book, gchar *title); +BijiNoteObj *biji_note_book_note_new_full (BijiNoteBook *book, + gchar *provider_id, + gchar *suggested_path, + BijiInfoSet *info, + gchar *html, + GdkRGBA *color); -BijiNoteObj * biji_note_book_new_note_with_text (BijiNoteBook *book, gchar *plain_text); G_END_DECLS diff -Nru bijiben-3.8.4/src/libbiji/biji-note-id.c bijiben-3.10.2/src/libbiji/biji-note-id.c --- bijiben-3.8.4/src/libbiji/biji-note-id.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-id.c 2013-11-11 20:52:06.000000000 +0000 @@ -21,33 +21,47 @@ enum { PROP_0, PROP_PATH, + PROP_TITLE, + PROP_MTIME, + PROP_CONTENT, BIJI_ID_PROPERTIES }; static GParamSpec *properties[BIJI_ID_PROPERTIES] = { NULL, }; + struct _BijiNoteIDPrivate { - GFile * location; - gchar * title ; + /* InfoSet */ + + const gchar *path; + gchar *title; + gchar *content; + gint64 mtime; + gint64 create_date ; + + + /* Not sure anymore */ + + gchar *basename; + gint64 last_metadata_change_date; - GTimeVal last_change_date; - GTimeVal last_metadata_change_date; - GTimeVal create_date ; }; #define NOTE_OBJ_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NOTE_TYPE_OBJ, NoteObjPrivate)) + G_DEFINE_TYPE (BijiNoteID, biji_note_id, G_TYPE_OBJECT); + static void biji_note_id_init (BijiNoteID *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, biji_note_id_get_type(), BijiNoteIDPrivate); - self->priv->location = NULL; self->priv->title = NULL; + self->priv->content = NULL; } static void @@ -56,7 +70,6 @@ BijiNoteID *id = BIJI_NOTE_ID (object); BijiNoteIDPrivate *priv = id->priv; - g_object_unref (priv->location); g_free (priv->title); G_OBJECT_CLASS (biji_note_id_parent_class)->finalize (object); @@ -65,12 +78,14 @@ static void biji_note_id_set_path (BijiNoteID *self, const gchar *path) { - g_warn_if_fail (!self->priv->location); - self->priv->location = g_file_new_for_path (path); + g_return_if_fail (BIJI_IS_NOTE_ID (self)); + + self->priv->path = g_strdup (path); } + static void -biji_note_id_set_property (GObject *object, +biji_note_id_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) @@ -81,7 +96,18 @@ switch (property_id) { case PROP_PATH: - biji_note_id_set_path (self,g_value_get_string (value)); + biji_note_id_set_path (self, g_value_get_string (value)); + break; + case PROP_TITLE: + biji_note_id_set_title (self, (gchar*) g_value_get_string (value)); + g_object_notify_by_pspec (object, properties[PROP_TITLE]); + break; + case PROP_MTIME: + self->priv->mtime = g_value_get_int64 (value); + break; + case PROP_CONTENT: + self->priv->content = g_strdup (g_value_get_string (value)); + g_object_notify_by_pspec (object, properties[PROP_CONTENT]); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -100,7 +126,16 @@ switch (property_id) { case PROP_PATH: - g_value_set_object (value, g_file_get_basename (self->priv->location)); + g_value_set_object (value, self->priv->basename); + break; + case PROP_TITLE: + g_value_set_string (value, self->priv->title); + break; + case PROP_MTIME: + g_value_set_int64 (value, self->priv->mtime); + break; + case PROP_CONTENT: + g_value_set_string (value, self->priv->content); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -122,7 +157,29 @@ "The note file", "The location where the note is stored and saved", NULL, - G_PARAM_READWRITE); + G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + + properties[PROP_TITLE] = + g_param_spec_string("title", + "The note title", + "Note current title", + NULL, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + + properties[PROP_MTIME] = + g_param_spec_int64 ("mtime", + "Msec since epoch", + "The note last modification time", + G_MININT64, G_MAXINT64, 0, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + + + properties[PROP_CONTENT] = + g_param_spec_string("content", + "The note content", + "Plain text note content", + NULL, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE); g_object_class_install_properties (object_class, BIJI_ID_PROPERTIES, properties); @@ -132,28 +189,21 @@ gboolean biji_note_id_equal (BijiNoteID *a, BijiNoteID *b) { - return g_file_equal (a->priv->location, b->priv->location); + if (g_strcmp0 (a->priv->path, b->priv->path) && + g_strcmp0 (a->priv->content ,b->priv->content) ==0) + return TRUE; + + return FALSE; } -gchar * +const gchar * biji_note_id_get_path (BijiNoteID* n) { g_return_val_if_fail (BIJI_IS_NOTE_ID (n), NULL); - return g_file_get_path (n->priv->location); + return n->priv->path; } -gchar * -biji_note_id_get_uuid (BijiNoteID *n) -{ - return g_file_get_basename (n->priv->location); -} - -GFile * -biji_note_id_get_file (BijiNoteID *note) -{ - return note->priv->location; -} void biji_note_id_set_title (BijiNoteID *n, gchar* title) @@ -162,93 +212,119 @@ g_free (n->priv->title); n->priv->title = g_strdup (title); + g_object_notify_by_pspec (G_OBJECT (n), properties[PROP_TITLE]); } -gchar * + +const gchar * biji_note_id_get_title (BijiNoteID* n) { return n->priv->title ; } -static gboolean -set_date_from_string (gchar *iso8601, GTimeVal *date) + +gboolean +biji_note_id_set_content (BijiNoteID *id, gchar *content) { - g_return_val_if_fail (iso8601, FALSE); - g_return_val_if_fail (date, FALSE); + g_return_val_if_fail (BIJI_IS_NOTE_ID (id), FALSE); + g_return_val_if_fail ((content != NULL), FALSE); + + if (id->priv->content != NULL && + g_strcmp0 (id->priv->content, content) !=0) + g_clear_pointer (&id->priv->content, g_free); + - if (!g_time_val_from_iso8601 (iso8601, date)) + if (id->priv->content == NULL) { - g_get_current_time (date); - return FALSE; + id->priv->content = g_strdup (content); + return TRUE; } - return TRUE; + return FALSE; } -gchar * -biji_note_id_get_last_change_date (BijiNoteID* n) + +const gchar * +biji_note_id_get_content (BijiNoteID *id) { - g_return_val_if_fail (BIJI_IS_NOTE_ID (n), NULL); + g_return_val_if_fail (BIJI_IS_NOTE_ID (id), NULL); - return g_time_val_to_iso8601 (&(n->priv->last_change_date)); + return id->priv->content; } -void -biji_note_id_set_last_change_date_now (BijiNoteID *n) -{ - g_get_current_time(&(n->priv->last_change_date)); -} -glong -biji_note_id_get_last_change_date_sec (BijiNoteID *n) + +gint64 +biji_note_id_get_mtime (BijiNoteID *n) { - g_return_val_if_fail (BIJI_IS_NOTE_ID (n), 0); - - return n->priv->last_change_date.tv_sec ; + return n->priv->mtime; } + gboolean -biji_note_id_set_last_change_date (BijiNoteID* n,gchar* date) +biji_note_id_set_mtime (BijiNoteID *n, gint64 time) { - return set_date_from_string(date,&(n->priv->last_change_date)); + if (n->priv->mtime != time) + { + n->priv->mtime = time; + return TRUE; + } + + return FALSE; } -gchar * -biji_note_id_get_last_metadata_change_date(BijiNoteID* n) + +gint64 +biji_note_id_get_last_metadata_change_date (BijiNoteID* n) { g_return_val_if_fail (BIJI_IS_NOTE_ID (n), NULL); - return g_time_val_to_iso8601 (&n->priv->last_metadata_change_date); + return n->priv->last_metadata_change_date; } + gboolean -biji_note_id_set_last_metadata_change_date (BijiNoteID* n,gchar* date) +biji_note_id_set_last_metadata_change_date (BijiNoteID* n, gint64 time) { - return set_date_from_string(date,&(n->priv->last_metadata_change_date)); -} + if (n->priv->last_metadata_change_date != time) + { + n->priv->last_metadata_change_date = time; + return TRUE; + } -void -biji_note_id_set_last_metadata_change_date_now (BijiNoteID *n) -{ - g_get_current_time(&(n->priv->last_metadata_change_date)); + return FALSE; } -gchar * -biji_note_id_get_create_date(BijiNoteID* n) + +gint64 +biji_note_id_get_create_date (BijiNoteID* n) { g_return_val_if_fail (BIJI_IS_NOTE_ID (n), NULL); - return g_time_val_to_iso8601 (&n->priv->create_date); + return n->priv->create_date; } + gboolean -biji_note_id_set_create_date (BijiNoteID* n,gchar* date) +biji_note_id_set_create_date (BijiNoteID* n, gint64 time) { - return set_date_from_string (date, &(n->priv->create_date)); + if (n->priv->create_date != time) + { + n->priv->create_date = time; + return TRUE; + } + + return FALSE; } -void -biji_note_id_set_create_date_now (BijiNoteID* n) + +BijiNoteID * +biji_note_id_new_from_info (BijiInfoSet *info) { - g_get_current_time (&(n->priv->create_date)); + return g_object_new (BIJI_TYPE_NOTE_ID, + "path", info->url, + "title", info->title, + "mtime", info->mtime, + "content", info->content, + NULL); } diff -Nru bijiben-3.8.4/src/libbiji/biji-note-id.h bijiben-3.10.2/src/libbiji/biji-note-id.h --- bijiben-3.8.4/src/libbiji/biji-note-id.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-id.h 2013-10-31 22:53:14.000000000 +0000 @@ -22,6 +22,9 @@ #include #include +#include "biji-info-set.h" +#include "biji-tracker.h" + G_BEGIN_DECLS #define BIJI_TYPE_NOTE_ID (biji_note_id_get_type ()) @@ -31,6 +34,8 @@ #define BIJI_IS_NOTE_ID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_NOTE_ID)) #define BIJI_NOTE_ID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_NOTE_ID, BijiNoteIDClass)) + + typedef struct _BijiNoteIDClass BijiNoteIDClass; typedef struct _BijiNoteID BijiNoteID; @@ -47,39 +52,47 @@ BijiNoteIDPrivate* priv; }; -GType biji_note_id_get_type (void) G_GNUC_CONST; +GType biji_note_id_get_type (void) G_GNUC_CONST; + + +gboolean biji_note_id_equal (BijiNoteID *a, BijiNoteID *b); + + +const gchar *biji_note_id_get_path (BijiNoteID *note); + + +void biji_note_id_set_title (BijiNoteID* n, gchar* title); + + +const gchar *biji_note_id_get_title (BijiNoteID* n); + + +gboolean biji_note_id_set_content (BijiNoteID *id, gchar *content); + -gboolean biji_note_id_equal (BijiNoteID *a, BijiNoteID *b); +const gchar *biji_note_id_get_content (BijiNoteID *id); -gchar * biji_note_id_get_path (BijiNoteID *note); -gchar * biji_note_id_get_uuid (BijiNoteID *note); +gint64 biji_note_id_get_mtime (BijiNoteID *n); -GFile * biji_note_id_get_file (BijiNoteID *note); -void biji_note_id_set_title (BijiNoteID* n,gchar* title); +gboolean biji_note_id_set_mtime (BijiNoteID* n, gint64 mtime); -gchar* biji_note_id_get_title (BijiNoteID* n); -gchar * biji_note_id_get_last_change_date (BijiNoteID* n); +gint64 biji_note_id_get_last_metadata_change_date (BijiNoteID* n); -glong biji_note_id_get_last_change_date_sec (BijiNoteID *n); -gboolean biji_note_id_set_last_change_date (BijiNoteID* n,gchar* date); +gboolean biji_note_id_set_last_metadata_change_date (BijiNoteID* n, gint64 mtime); -void biji_note_id_set_last_change_date_now (BijiNoteID *n); -gchar * biji_note_id_get_last_metadata_change_date (BijiNoteID* n); +gint64 biji_note_id_get_create_date (BijiNoteID* n); -gboolean biji_note_id_set_last_metadata_change_date (BijiNoteID* n,gchar* date); -void biji_note_id_set_last_metadata_change_date_now (BijiNoteID *n); +gboolean biji_note_id_set_create_date (BijiNoteID* n, gint64 mtime); -gchar * biji_note_id_get_create_date (BijiNoteID* n); -gboolean biji_note_id_set_create_date (BijiNoteID* n,gchar* date); +BijiNoteID *biji_note_id_new_from_info (BijiInfoSet *info); -void biji_note_id_set_create_date_now (BijiNoteID* n); G_END_DECLS diff -Nru bijiben-3.8.4/src/libbiji/biji-note-obj.c bijiben-3.10.2/src/libbiji/biji-note-obj.c --- bijiben-3.8.4/src/libbiji/biji-note-obj.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-obj.c 2013-11-11 20:52:06.000000000 +0000 @@ -23,53 +23,44 @@ #include "biji-tracker.h" #include "biji-zeitgeist.h" #include "editor/biji-webkit-editor.h" -#include "serializer/biji-lazy-serializer.h" -#include -/* Icon */ -#define ICON_WIDTH 200 -#define ICON_HEIGHT 240 -#define ICON_FONT "Purusa 10" +#include struct _BijiNoteObjPrivate { - /* Notebook might be null. */ - BijiNoteBook *book; - /* Metadata */ BijiNoteID *id; - GdkRGBA *color; + GdkRGBA *color; // Not yet in Tracker - /* Data */ - gchar *html; - gchar *raw_text; + /* Editing use the same widget + * for all notes provider. */ BijiWebkitEditor *editor; /* Save */ BijiTimeout *timeout; gboolean needs_save; - /* Icon might be null untill usefull */ + /* Icon might be null untill usefull + * Emblem is smaller & just shows the color */ GdkPixbuf *icon; - gboolean icon_needs_update; + GdkPixbuf *emblem; + GdkPixbuf *pristine; /* Tags * In Tomboy, templates are 'system:notebook:%s' tags.*/ GHashTable *labels; - gboolean is_template ; - gboolean does_title_survive; + gboolean is_template; /* Signals */ gulong note_renamed; gulong save; }; -/* Properties - * Actually path is just sent to note id */ +/* Properties */ enum { PROP_0, - PROP_PATH, + PROP_ID, BIJI_OBJ_PROPERTIES }; @@ -77,20 +68,28 @@ #define BIJI_NOTE_OBJ_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BIJI_TYPE_NOTE_OBJ, BijiNoteObjPrivate)) -G_DEFINE_TYPE (BijiNoteObj, biji_note_obj, G_TYPE_OBJECT); +G_DEFINE_TYPE (BijiNoteObj, biji_note_obj, BIJI_TYPE_ITEM); static void on_save_timeout (BijiNoteObj *self) { BijiNoteObjPrivate *priv = self->priv; + /* g_mutex_lock (priv->mutex); */ + if (!priv->needs_save) return; g_object_ref (self); - biji_lazy_serialize (self); - bijiben_push_note_to_tracker(self); + + + /* Each note type serializes its own way + * FIXME: common tracker would make sense */ + + + BIJI_NOTE_OBJ_GET_CLASS (self)->save_note (self); + insert_zeitgeist (self, ZEITGEIST_ZG_MODIFY_EVENT); priv->needs_save = FALSE; g_object_unref (self); @@ -104,28 +103,24 @@ priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_NOTE_OBJ, BijiNoteObjPrivate); self->priv = priv ; - - priv->id = g_object_new (BIJI_TYPE_NOTE_ID, NULL); + priv->id = NULL; priv->needs_save = FALSE; priv->timeout = biji_timeout_new (); priv->save = g_signal_connect_swapped (priv->timeout, "timeout", G_CALLBACK (on_save_timeout), self); - priv->book = NULL ; - priv->is_template = FALSE ; - /* Existing note keep their title. - * only brand new notes might see title changed */ - priv->does_title_survive = TRUE; + priv->is_template = FALSE ; /* The editor is NULL so we know it's not opened * neither fully deserialized */ - priv->html = NULL; priv->editor = NULL; /* Icon is only computed when necessary */ priv->icon = NULL; + priv->emblem = NULL; + priv->pristine = NULL; /* Keep value unitialied, so bijiben knows to assign default color */ priv->color = NULL; @@ -147,15 +142,17 @@ g_clear_object (&priv->id); - if (priv->html) - g_free (priv->html); + g_hash_table_destroy (priv->labels); - if (priv->raw_text); - g_free (priv->raw_text); + if (priv->icon) + g_object_unref (priv->icon); - g_hash_table_destroy (priv->labels); + if (priv->emblem) + g_object_unref (priv->emblem); + + if (priv->pristine) + g_object_unref (priv->pristine); - g_clear_object (&priv->icon); gdk_rgba_free (priv->color); G_OBJECT_CLASS (biji_note_obj_parent_class)->finalize (object); @@ -190,8 +187,8 @@ switch (property_id) { - case PROP_PATH: - g_object_set_property (G_OBJECT (self->priv->id), "path", value); + case PROP_ID: + self->priv->id = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -209,8 +206,8 @@ switch (property_id) { - case PROP_PATH: - g_value_set_object (value, biji_note_id_get_path (self->priv->id)); + case PROP_ID: + g_value_set_object (value, self->priv->id); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -218,271 +215,145 @@ } } -static void -biji_note_obj_class_init (BijiNoteObjClass *klass) -{ - GObjectClass* object_class = G_OBJECT_CLASS (klass); - - object_class->constructed = biji_note_obj_constructed; - object_class->finalize = biji_note_obj_finalize; - object_class->get_property = biji_note_obj_get_property; - object_class->set_property = biji_note_obj_set_property; - - properties[PROP_PATH] = - g_param_spec_string("path", - "The note file", - "The location where the note is stored and saved", - NULL, - G_PARAM_READWRITE); - - g_object_class_install_properties (object_class, BIJI_OBJ_PROPERTIES, properties); - - biji_obj_signals[NOTE_RENAMED] = g_signal_new ( "renamed" , - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - biji_obj_signals[NOTE_CHANGED] = g_signal_new ( "changed" , - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - biji_obj_signals[NOTE_COLOR_CHANGED] = g_signal_new ("color-changed" , - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - biji_obj_signals[NOTE_DELETED] = g_signal_new ( "deleted" , - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - g_type_class_add_private (klass, sizeof (BijiNoteObjPrivate)); -} - -BijiNoteObj * -biji_note_obj_new_from_path (const gchar *path) -{ - return g_object_new (BIJI_TYPE_NOTE_OBJ, - "path", path, - NULL); -} - -void -_biji_note_obj_set_book(BijiNoteObj *note, gpointer biji_note_book) -{ - if ( BIJI_IS_NOTE_BOOK(biji_note_book) ) - { - note->priv->book = biji_note_book ; - } - else - { - g_message("criticical : BIJI NOTE OBJ SET BOOK received wrong parameter"); - } -} - -gpointer -biji_note_obj_get_note_book(BijiNoteObj *note) -{ - if ( note->priv->book != NULL ) - { - return note->priv->book ; - } - g_message("biji note obj _ biji note obj get note book returns NULL"); - return NULL ; -} gboolean biji_note_obj_are_same (BijiNoteObj *a, BijiNoteObj* b) { - if (biji_note_id_equal (a->priv->id,b->priv->id) - && g_strcmp0 (a->priv->raw_text ,b->priv->raw_text) == 0) - return TRUE; - - return FALSE; + return biji_note_id_equal (a->priv->id, b->priv->id); } /* First cancel timeout * this func is most probably stupid it might exists (move file) */ gboolean -biji_note_obj_trash (BijiNoteObj *note_to_kill) +biji_note_obj_trash (BijiItem *item) { - BijiNoteObjPrivate *priv = note_to_kill->priv; - GFile *to_trash, *parent, *trash, *backup_file, *icon; - gchar *note_name, *parent_path, *trash_path, *backup_path, *icon_path; - GError *error = NULL; + BijiNoteObj *note_to_kill; + BijiNoteObjPrivate *priv; + GFile *icon; + gchar *icon_path; gboolean result = FALSE; - priv->needs_save = FALSE; - biji_timeout_cancel (priv->timeout); - - to_trash = biji_note_id_get_file (note_to_kill->priv->id); - - /* Don't try to backup a file which does not exist */ - if (to_trash) - { - note_name = g_file_get_basename (to_trash); - parent = g_file_get_parent (to_trash); + note_to_kill = BIJI_NOTE_OBJ (item); + priv = note_to_kill->priv; - /* Create the trash directory - * No matter if already exists */ - parent_path = g_file_get_path (parent); - trash_path = g_build_filename (parent_path, ".Trash", NULL); - g_free (parent_path); - g_object_unref (parent); - trash = g_file_new_for_path (trash_path); - g_file_make_directory (trash, NULL, NULL); - - /* Move the note to trash */ - backup_path = g_build_filename (trash_path, note_name, NULL); - g_free (trash_path); - backup_file = g_file_new_for_path (backup_path); - g_free (note_name); - g_free (backup_path); - result = g_file_move (to_trash, - backup_file, - G_FILE_COPY_OVERWRITE, - NULL, // cancellable - NULL, // progress callback - NULL, // progress_callback_data, - &error); + /* The event has to be logged before the note is actually deleted */ + insert_zeitgeist (note_to_kill, ZEITGEIST_ZG_DELETE_EVENT); - if (error) - { - g_message ("%s", error->message); - g_error_free (error); - error = NULL; - } + priv->needs_save = FALSE; + biji_timeout_cancel (priv->timeout); + biji_note_delete_from_tracker (note_to_kill); - /* Say goodbye however */ - g_object_unref (trash); - g_object_unref (backup_file); - } + result = BIJI_NOTE_OBJ_GET_CLASS (note_to_kill)->archive (note_to_kill); /* Delete icon file */ icon_path = biji_note_obj_get_icon_file (note_to_kill); icon = g_file_new_for_path (icon_path); - g_free (icon_path); g_file_delete (icon, NULL, NULL); - g_object_unref (icon); - /* Tracker, NoteBook, Memory. TODO : zeitgeist */ - biji_note_delete_from_tracker (note_to_kill); g_signal_emit (G_OBJECT (note_to_kill), biji_obj_signals[NOTE_DELETED], 0); - g_clear_object (¬e_to_kill); + + if (icon_path != NULL) + g_free (icon_path); + + if (icon != NULL) + g_object_unref (icon); return result; } -gchar* biji_note_obj_get_path (BijiNoteObj* n) + +static const gchar * +biji_note_obj_get_path (BijiItem *item) { - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (n), NULL); + g_return_val_if_fail (BIJI_IS_NOTE_OBJ (item), NULL); + + BijiNoteObj *note = BIJI_NOTE_OBJ (item); - return biji_note_id_get_path(n->priv->id) ; + return biji_note_id_get_path (note->priv->id); } -BijiNoteID* note_get_id(BijiNoteObj* n) + +BijiNoteID * +note_get_id(BijiNoteObj* n) { return n->priv->id; } -gchar * -biji_note_obj_get_title(BijiNoteObj *obj) + +static const gchar * +biji_note_obj_get_title (BijiItem *note) { - g_return_val_if_fail (BIJI_IS_NOTE_OBJ(obj), NULL); + g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), NULL); - return biji_note_id_get_title (obj->priv->id); + return biji_note_id_get_title (BIJI_NOTE_OBJ (note)->priv->id); } /* If already a title, then note is renamed */ gboolean -biji_note_obj_set_title (BijiNoteObj *note, gchar *proposed_title) +biji_note_obj_set_title (BijiNoteObj *note, const gchar *proposed_title) { - gboolean initial = FALSE; - note->priv->does_title_survive = TRUE; - gchar *title; + gchar *old_title, *title; + gboolean retval; - if (!biji_note_id_get_title (note->priv->id)) - initial = TRUE; + title = NULL; + old_title = g_strdup (biji_note_id_get_title (note->priv->id)); - if (g_strcmp0 (proposed_title, biji_note_id_get_title (note->priv->id))==0) - return FALSE; - /* If the note is really renamed, check the new title */ - if (!initial) + if (g_strcmp0 (proposed_title, old_title) == 0) { - title = biji_note_book_get_unique_title (note->priv->book, proposed_title); - biji_note_id_set_last_metadata_change_date_now (note->priv->id); + retval = FALSE; + goto out; } - /* Otherwise it's up to the caller to sanitize its title */ - else - { - title = g_strdup (proposed_title); - } + + title = biji_note_book_get_unique_title ( + biji_item_get_book (BIJI_ITEM (note)), proposed_title); + biji_note_id_set_last_metadata_change_date (note->priv->id, + g_get_real_time () / G_USEC_PER_SEC); + /* Emit signal even if initial title, just to let know */ biji_note_id_set_title (note->priv->id, title); - g_free (title); - g_signal_emit (G_OBJECT (note), biji_obj_signals[NOTE_RENAMED],0); - return TRUE; -} - -gboolean -biji_note_obj_title_survives (BijiNoteObj *note) -{ - return note->priv->does_title_survive; -} + g_signal_emit (G_OBJECT (note), biji_obj_signals[NOTE_RENAMED], 0); + retval = TRUE; -void -biji_note_obj_set_title_survives (BijiNoteObj *obj, gboolean value) -{ - g_return_if_fail (BIJI_IS_NOTE_OBJ(obj)); +out: + if (old_title != NULL) + g_free (old_title); + + if (title != NULL) + g_free (title); - obj->priv->does_title_survive = value; + return retval; } + gboolean -biji_note_obj_set_last_change_date (BijiNoteObj* n,gchar* date) +biji_note_obj_set_mtime (BijiNoteObj* n, gint64 mtime) { - g_return_val_if_fail (BIJI_IS_NOTE_OBJ(n), FALSE); - return biji_note_id_set_last_change_date (n->priv->id,date); + g_return_if_fail (BIJI_IS_NOTE_OBJ (n)); + + return biji_note_id_set_mtime (n->priv->id, mtime); } -glong -biji_note_obj_get_last_change_date_sec ( BijiNoteObj *n ) + +static gint64 +biji_note_obj_get_mtime (BijiItem *note) { - return biji_note_id_get_last_change_date_sec(note_get_id(n)); + g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), 0); + + return biji_note_id_get_mtime (BIJI_NOTE_OBJ (note)->priv->id); } gchar * biji_note_obj_get_last_change_date_string (BijiNoteObj *self) { return biji_get_time_diff_with_time ( - biji_note_id_get_last_change_date_sec(note_get_id(self))); + biji_note_id_get_mtime (self->priv->id)); } -gchar * + +gint64 biji_note_obj_get_last_metadata_change_date (BijiNoteObj *note) { g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), NULL); @@ -490,32 +361,39 @@ return biji_note_id_get_last_metadata_change_date (note->priv->id); } + gboolean -biji_note_obj_set_last_metadata_change_date (BijiNoteObj* n,gchar* date) +biji_note_obj_set_last_metadata_change_date (BijiNoteObj* n, gint64 time) { g_return_val_if_fail (BIJI_IS_NOTE_OBJ(n), FALSE); - return biji_note_id_set_last_metadata_change_date (n->priv->id,date); + return biji_note_id_set_last_metadata_change_date (n->priv->id, time); } gboolean -biji_note_obj_set_note_create_date (BijiNoteObj* n,gchar *date) +biji_note_obj_set_note_create_date (BijiNoteObj* n, gint64 time) { g_return_val_if_fail (BIJI_IS_NOTE_OBJ(n), FALSE); - return biji_note_id_set_create_date (n->priv->id, date); + return biji_note_id_set_create_date (n->priv->id, time); +} + +static void +biji_note_obj_clear_icons (BijiNoteObj *note) +{ + g_clear_pointer (¬e->priv->icon, g_object_unref); + g_clear_pointer (¬e->priv->emblem, g_object_unref); + g_clear_pointer (¬e->priv->pristine, g_object_unref); } static void biji_note_obj_set_rgba_internal (BijiNoteObj *n, GdkRGBA *rgba) { n->priv->color = gdk_rgba_copy(rgba); - n->priv->icon_needs_update = TRUE; g_signal_emit (G_OBJECT (n), biji_obj_signals[NOTE_COLOR_CHANGED],0); } - void biji_note_obj_set_rgba (BijiNoteObj *n, GdkRGBA *rgba) { @@ -525,9 +403,10 @@ else if (!gdk_rgba_equal (n->priv->color,rgba)) { gdk_rgba_free (n->priv->color); + biji_note_obj_clear_icons (n); biji_note_obj_set_rgba_internal (n, rgba); - biji_note_id_set_last_metadata_change_date_now (n->priv->id); + biji_note_id_set_last_metadata_change_date (n->priv->id, g_get_real_time () / G_USEC_PER_SEC); biji_note_obj_save_note (n); } } @@ -547,25 +426,21 @@ return FALSE; } -static void -biji_note_obj_clear_icon (BijiNoteObj *note) -{ - if (note->priv->icon) - { - g_clear_object (¬e->priv->icon); - note->priv->icon = NULL ; - } - g_signal_emit (G_OBJECT (note), biji_obj_signals[NOTE_CHANGED],0); +const gchar * +biji_note_obj_get_raw_text (BijiNoteObj *note) +{ + return biji_note_id_get_content (note->priv->id); } -void biji_note_obj_set_raw_text (BijiNoteObj *note, gchar *plain_text) +void +biji_note_obj_set_raw_text (BijiNoteObj *note, gchar *plain_text) { - if (note->priv->raw_text) - g_free (note->priv->raw_text); - - note->priv->raw_text = g_strdup (plain_text); - biji_note_obj_clear_icon (note); + if (biji_note_id_set_content (note->priv->id, plain_text)) + { + biji_note_obj_clear_icons (note); + g_signal_emit (note, biji_obj_signals[NOTE_CHANGED],0); + } } GList * @@ -577,44 +452,74 @@ } gboolean -biji_note_obj_has_collection (BijiNoteObj *note, gchar *label) +biji_note_obj_has_collection (BijiItem *item, gchar *label) { + BijiNoteObj *note = BIJI_NOTE_OBJ (item); + if (g_hash_table_lookup (note->priv->labels, label)) return TRUE; return FALSE; } -gboolean -biji_note_obj_add_collection (BijiNoteObj *note, gchar *label, gboolean on_user_action_cb) + +static void +_biji_collection_refresh (gboolean query_result, + gpointer coll) { - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), FALSE); - g_return_val_if_fail (label != NULL, FALSE); - g_return_val_if_fail (!biji_note_obj_has_collection (note, label), FALSE); + g_return_if_fail (BIJI_IS_COLLECTION (coll)); - gchar *tag = g_strdup (label); + if (query_result) + biji_collection_refresh (BIJI_COLLECTION (coll)); +} + + +/*static */ gboolean +biji_note_obj_add_collection (BijiItem *item, + BijiItem *collection, + gchar *title) +{ + BijiNoteObj *note; + gchar *label = title; - g_hash_table_add (note->priv->labels, tag); + g_return_val_if_fail (BIJI_IS_NOTE_OBJ (item), FALSE); + note = BIJI_NOTE_OBJ (item); - if (on_user_action_cb) + if (BIJI_IS_COLLECTION (collection)) + label = (gchar*) biji_item_get_title (collection); + + if (biji_note_obj_has_collection (item, label)) + return FALSE; + + g_hash_table_add (note->priv->labels, g_strdup (label)); + + if (BIJI_IS_COLLECTION (collection)) { - biji_push_existing_collection_to_note (note, tag); // Tracker - biji_note_id_set_last_metadata_change_date_now (note->priv->id); + biji_push_existing_collection_to_note ( + note, label, _biji_collection_refresh, collection); // Tracker + biji_note_id_set_last_metadata_change_date (note->priv->id, + g_get_real_time () / G_USEC_PER_SEC); biji_note_obj_save_note (note); } return TRUE; } + gboolean -biji_note_obj_remove_collection (BijiNoteObj *note, gchar *label, gchar *urn) +biji_note_obj_remove_collection (BijiItem *item, BijiItem *collection) { - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), FALSE); + g_return_val_if_fail (BIJI_IS_NOTE_OBJ (item), FALSE); + g_return_val_if_fail (BIJI_IS_COLLECTION (collection), FALSE); - if (g_hash_table_remove (note->priv->labels, label)) + BijiNoteObj *note = BIJI_NOTE_OBJ (item); + + if (g_hash_table_remove (note->priv->labels, biji_item_get_title (collection))) { - biji_remove_collection_from_note (note, urn); // tracker. - biji_note_id_set_last_metadata_change_date_now (note->priv->id); + biji_remove_collection_from_note ( + note, collection, _biji_collection_refresh, collection); // tracker. + biji_note_id_set_last_metadata_change_date (note->priv->id, + g_get_real_time () / G_USEC_PER_SEC); biji_note_obj_save_note (note); return TRUE; } @@ -668,19 +573,18 @@ { g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), NULL); - gchar *uuid, *basename, *filename; + const gchar *uuid; + gchar *basename, *filename; - uuid = biji_note_id_get_uuid (note->priv->id); - basename = biji_str_mass_replace (uuid, ".note", ".png", NULL); + uuid = BIJI_NOTE_OBJ_GET_CLASS (note)->get_basename (note); + basename = biji_str_mass_replace (uuid, ".note", ".png", ".txt", ".png", NULL); filename = g_build_filename (g_get_user_cache_dir (), g_get_application_name (), basename, NULL); - g_free (uuid); g_free (basename); - return filename; } @@ -696,11 +600,11 @@ g_warning ("Cannot use _set_icon_ with iconified note. This has no sense."); } -GdkPixbuf * -biji_note_obj_get_icon (BijiNoteObj *note) +static GdkPixbuf * +biji_note_obj_get_icon (BijiItem *item) { GdkRGBA note_color; - gchar *text; + const gchar *text; cairo_t *cr; PangoLayout *layout; PangoFontDescription *desc; @@ -708,24 +612,26 @@ cairo_surface_t *surface = NULL; GtkBorder frame_slice = { 4, 3, 3, 6 }; - if (note->priv->icon && !note->priv->icon_needs_update) + BijiNoteObj *note = BIJI_NOTE_OBJ (item); + + if (note->priv->icon) return note->priv->icon; - /* Create & Draw surface */ - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32 , - ICON_WIDTH, - ICON_HEIGHT) ; + /* Create & Draw surface */ + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + BIJI_ICON_WIDTH, + BIJI_ICON_HEIGHT) ; cr = cairo_create (surface); /* Background */ - cairo_rectangle (cr, 0, 0, ICON_WIDTH, ICON_HEIGHT); + cairo_rectangle (cr, 0, 0, BIJI_ICON_WIDTH, BIJI_ICON_HEIGHT); if (biji_note_obj_get_rgba (note, ¬e_color)) gdk_cairo_set_source_rgba (cr, ¬e_color); cairo_fill (cr); /* Text */ - text = biji_note_get_raw_text (note); + text = biji_note_id_get_content (note->priv->id); if (text != NULL) { cairo_translate (cr, 10, 10); @@ -736,7 +642,7 @@ pango_layout_set_height (layout, 180000 ) ; pango_layout_set_text (layout, text, -1); - desc = pango_font_description_from_string (ICON_FONT); + desc = pango_font_description_from_string (BIJI_ICON_FONT); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); @@ -751,107 +657,170 @@ ret = gdk_pixbuf_get_from_surface (surface, 0, 0, - ICON_WIDTH, - ICON_HEIGHT); + BIJI_ICON_WIDTH, + BIJI_ICON_HEIGHT); cairo_surface_destroy (surface); note->priv->icon = gd_embed_image_in_frame (ret, "resource:///org/gnome/bijiben/thumbnail-frame.png", &frame_slice, &frame_slice); g_clear_object (&ret); - note->priv->icon_needs_update = FALSE; return note->priv->icon; } +static GdkPixbuf * +biji_note_obj_get_pristine (BijiItem *item) +{ + GdkRGBA note_color; + cairo_t *cr; + cairo_surface_t *surface = NULL; + BijiNoteObj *note = BIJI_NOTE_OBJ (item); + + if (note->priv->pristine) + return note->priv->pristine; + + /* Create & Draw surface */ + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + BIJI_EMBLEM_WIDTH, + BIJI_EMBLEM_HEIGHT) ; + cr = cairo_create (surface); + + /* Background */ + cairo_rectangle (cr, 0, 0, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT); + if (biji_note_obj_get_rgba (note, ¬e_color)) + gdk_cairo_set_source_rgba (cr, ¬e_color); + + cairo_fill (cr); + cairo_destroy (cr); + + note->priv->pristine = gdk_pixbuf_get_from_surface (surface, + 0, 0, + BIJI_EMBLEM_WIDTH, + BIJI_EMBLEM_HEIGHT); + + cairo_surface_destroy (surface); + + return note->priv->pristine; +} + +static GdkPixbuf * +biji_note_obj_get_emblem (BijiItem *item) +{ + GdkRGBA note_color; + cairo_t *cr; + cairo_surface_t *surface = NULL; + BijiNoteObj *note = BIJI_NOTE_OBJ (item); + + if (note->priv->emblem) + return note->priv->emblem; + + /* Create & Draw surface */ + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + BIJI_EMBLEM_WIDTH, + BIJI_EMBLEM_HEIGHT) ; + cr = cairo_create (surface); + + /* Background */ + cairo_rectangle (cr, 0, 0, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT); + if (biji_note_obj_get_rgba (note, ¬e_color)) + gdk_cairo_set_source_rgba (cr, ¬e_color); + + cairo_fill (cr); + + /* Border */ + cairo_set_source_rgba (cr, 0.3, 0.3, 0.3, 1); + cairo_set_line_width (cr, 1); + cairo_rectangle (cr, 0, 0, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT); + cairo_stroke (cr); + + cairo_destroy (cr); + + note->priv->emblem = gdk_pixbuf_get_from_surface (surface, + 0, 0, + BIJI_EMBLEM_WIDTH, + BIJI_EMBLEM_HEIGHT); + + cairo_surface_destroy (surface); + + return note->priv->emblem; +} + /* Single Note */ -gchar * -biji_note_get_raw_text(BijiNoteObj *note) +void +biji_note_obj_set_all_dates_now (BijiNoteObj *note) { - if (note->priv->raw_text) - return note->priv->raw_text; + gint64 time; + BijiNoteID *id; + + g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); - return ""; + id = note->priv->id; + time = g_get_real_time () / G_USEC_PER_SEC; + biji_note_id_set_create_date (id, time); + biji_note_id_set_last_metadata_change_date (id, time); + biji_note_id_set_mtime (id, time); } + gboolean biji_note_obj_is_template(BijiNoteObj *note) { return note_obj_is_template(note); } -gchar * -biji_note_obj_get_last_change_date(BijiNoteObj *note) -{ - g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), NULL); - return biji_note_id_get_last_change_date (note->priv->id); -} - -gchar * -biji_note_obj_get_create_date(BijiNoteObj *note) +gint64 +biji_note_obj_get_create_date (BijiNoteObj *note) { g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), NULL); return biji_note_id_get_create_date (note->priv->id); } + gboolean -biji_note_obj_set_create_date (BijiNoteObj *note, gchar *date) +biji_note_obj_set_create_date (BijiNoteObj *note, gint64 time) { g_return_val_if_fail (BIJI_IS_NOTE_OBJ (note), FALSE); - return biji_note_id_set_create_date (note->priv->id, date); + return biji_note_id_set_create_date (note->priv->id, time); } -void -biji_note_obj_set_create_date_now (BijiNoteObj *note) -{ - g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); - biji_note_id_set_create_date_now (note->priv->id); -} +/* Webkit */ -void -biji_note_obj_set_last_change_date_now (BijiNoteObj *note) +gchar * +html_from_plain_text (gchar *content) { - g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); + gchar *escaped, *retval; - biji_note_id_set_last_change_date_now (note->priv->id); -} + escaped = biji_str_mass_replace (content, + "&", "&", + "<", "<", + ">", ">", + "\n", "
", + NULL); -void -biji_note_obj_set_all_dates_now (BijiNoteObj *note) -{ - g_return_if_fail (BIJI_IS_NOTE_OBJ (note)); - BijiNoteID *id = note->priv->id; + retval = g_strconcat ("", + "", escaped, "", NULL); - biji_note_id_set_create_date_now (id); - biji_note_id_set_last_change_date_now (id); - biji_note_id_set_last_metadata_change_date_now (id); + g_free (escaped); + return retval; } -/* Webkit */ gchar * biji_note_obj_get_html (BijiNoteObj *note) { - if (BIJI_IS_NOTE_OBJ (note)) - return note->priv->html; - - else - return NULL; + return BIJI_NOTE_OBJ_GET_CLASS (note)->get_html (note); } void -biji_note_obj_set_html_content (BijiNoteObj *note, - gchar *html) +biji_note_obj_set_html (BijiNoteObj *note, + gchar *html) { - if (html) - { - g_free (note->priv->html); - note->priv->html = g_strdup (html); - } + BIJI_NOTE_OBJ_GET_CLASS (note)->set_html (note, html); } gboolean @@ -863,45 +832,33 @@ static void _biji_note_obj_close (BijiNoteObj *note) { - BijiNoteObjPrivate *priv = note->priv; + BijiNoteObjPrivate *priv; + BijiItem *item; + BijiNoteBook *book; + + priv = note->priv; + item = BIJI_ITEM (note); + book = biji_item_get_book (BIJI_ITEM (note)); priv->editor = NULL; + insert_zeitgeist (note, ZEITGEIST_ZG_LEAVE_EVENT); + /* Delete if note is totaly blank * Actually we just need to remove it from book * since no change could trigger save */ - if (!priv->raw_text) - { - biji_note_book_remove_note (priv->book, note); - } - - /* If the note only has one row. put some title */ - else if (!biji_note_obj_title_survives (note)) - { - gchar *title = biji_note_book_get_unique_title (biji_note_obj_get_note_book (note), - priv->raw_text); - biji_note_obj_set_title (note, title); - g_free (title); - } - - /* Else the note is not empty & has more than a row. - * But the first row might still be empty.*/ - else if (!biji_note_id_get_title (priv->id) || - g_strcmp0 (biji_note_id_get_title (priv->id),"")==0) - { - biji_note_obj_set_title (note, priv->raw_text); - } + if (biji_note_id_get_content (priv->id) == NULL) + biji_note_book_remove_item (book, item); } GtkWidget * biji_note_obj_open (BijiNoteObj *note) { note->priv->editor = biji_webkit_editor_new (note); - note->priv->editor = biji_webkit_editor_new (note); g_signal_connect_swapped (note->priv->editor, "destroy", G_CALLBACK (_biji_note_obj_close), note); - insert_zeitgeist (note, ZEITGEIST_ZG_ACCESS_EVENT) ; + insert_zeitgeist (note, ZEITGEIST_ZG_ACCESS_EVENT); return GTK_WIDGET (note->priv->editor); } @@ -915,6 +872,14 @@ return GTK_WIDGET (note->priv->editor); } + +gboolean +biji_note_obj_can_format (BijiNoteObj *note) +{ + return BIJI_NOTE_OBJ_GET_CLASS (note)->can_format (note); +} + + void biji_note_obj_editor_apply_format (BijiNoteObj *note, gint format) { @@ -958,3 +923,83 @@ biji_webkit_editor_paste (note->priv->editor); } +static void +biji_note_obj_class_init (BijiNoteObjClass *klass) +{ + BijiItemClass* item_class = BIJI_ITEM_CLASS (klass); + GObjectClass* object_class = G_OBJECT_CLASS (klass); + + object_class->constructed = biji_note_obj_constructed; + object_class->finalize = biji_note_obj_finalize; + object_class->get_property = biji_note_obj_get_property; + object_class->set_property = biji_note_obj_set_property; + + properties[PROP_ID] = + g_param_spec_object("id", + "The note id", + "The basic information about the note", + BIJI_TYPE_NOTE_ID, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + + g_object_class_install_properties (object_class, BIJI_OBJ_PROPERTIES, properties); + + biji_obj_signals[NOTE_RENAMED] = + g_signal_new ("renamed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + biji_obj_signals[NOTE_CHANGED] = + g_signal_new ("changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + biji_obj_signals[NOTE_COLOR_CHANGED] = + g_signal_new ("color-changed" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + biji_obj_signals[NOTE_DELETED] = + g_signal_new ("deleted" , + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + g_type_class_add_private (klass, sizeof (BijiNoteObjPrivate)); + + /* Interface + * is_collectable is implemented at higher level, eg local_note */ + item_class->get_title = biji_note_obj_get_title; + item_class->get_uuid = biji_note_obj_get_path; + item_class->get_icon = biji_note_obj_get_icon; + item_class->get_emblem = biji_note_obj_get_emblem; + item_class->get_pristine = biji_note_obj_get_pristine; + item_class->get_mtime = biji_note_obj_get_mtime; + item_class->trash = biji_note_obj_trash; + item_class->has_collection = biji_note_obj_has_collection; + item_class->add_collection = biji_note_obj_add_collection; + item_class->remove_collection = biji_note_obj_remove_collection; +} + diff -Nru bijiben-3.8.4/src/libbiji/biji-note-obj.h bijiben-3.10.2/src/libbiji/biji-note-obj.h --- bijiben-3.8.4/src/libbiji/biji-note-obj.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-note-obj.h 2013-11-11 20:52:06.000000000 +0000 @@ -21,6 +21,8 @@ #include #include +#include "biji-item.h" + G_BEGIN_DECLS /* Available formating for biji_note_obj_editor_apply_format @@ -44,6 +46,7 @@ #define BIJI_IS_NOTE_OBJ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_NOTE_OBJ)) #define BIJI_NOTE_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_NOTE_OBJ, BijiNoteObjClass)) + typedef struct _BijiNoteObjClass BijiNoteObjClass; typedef struct _BijiNoteObj BijiNoteObj; @@ -51,127 +54,144 @@ struct _BijiNoteObjClass { - GObjectClass parent_class; + BijiItemClass parent_class; + + gchar* (*get_basename) (BijiNoteObj *note); + gchar* (*get_html) (BijiNoteObj *note); + void (*set_html) (BijiNoteObj *note, gchar *html); + void (*save_note) (BijiNoteObj *note); + gboolean (*archive) (BijiNoteObj *note); + gboolean (*can_format) (BijiNoteObj *note); }; struct _BijiNoteObj { - GObject parent_instance; + BijiItem parent_instance; BijiNoteObjPrivate* priv ; }; -GType biji_note_obj_get_type (void) G_GNUC_CONST; -BijiNoteObj * biji_note_obj_new_from_path (const gchar *path); -void biji_note_obj_fix_path (BijiNoteObj *note, gchar *path); +GType biji_note_obj_get_type (void) G_GNUC_CONST; + + +gboolean biji_note_obj_are_same (BijiNoteObj *a, + BijiNoteObj* b); + + +gboolean biji_note_obj_set_mtime (BijiNoteObj* n, + gint64 time); + + +gchar *biji_note_obj_get_last_change_date_string (BijiNoteObj *self); + + +gint64 biji_note_obj_get_last_metadata_change_date (BijiNoteObj *note); + + +gboolean biji_note_obj_set_last_metadata_change_date (BijiNoteObj* n, + gint64 time); + + +gint64 biji_note_obj_get_create_date (BijiNoteObj *note); + + +gboolean biji_note_obj_set_create_date (BijiNoteObj* n , + gint64 time); + + +void biji_note_obj_set_all_dates_now (BijiNoteObj *note); + + +int get_note_status (BijiNoteObj* n); + + +void set_note_status (BijiNoteObj* n, + int status) ; + + +gboolean biji_note_obj_get_rgba (BijiNoteObj *n, + GdkRGBA *rgba) ; -/////////////////////////////////////////////////// Relationships other notes -gpointer biji_note_obj_get_note_book(BijiNoteObj *note); -void _biji_note_obj_set_book(BijiNoteObj *note, gpointer biji_note_book); +void biji_note_obj_set_rgba (BijiNoteObj *n, GdkRGBA *rgba) ; -gboolean biji_note_obj_trash (BijiNoteObj *dead); -gboolean biji_note_obj_are_same(BijiNoteObj *a, BijiNoteObj* b); +GList *biji_note_obj_get_collections (BijiNoteObj *n); -///////////////////////////////////////////////////////////////////// Metadata -gchar * biji_note_obj_get_title (BijiNoteObj *obj); +gboolean note_obj_is_template (BijiNoteObj *n) ; -/* will enter hit make title renamed? */ -gboolean biji_note_obj_title_survives (BijiNoteObj *note); -void biji_note_obj_set_title_survives (BijiNoteObj *obj, gboolean value); -gchar* biji_note_obj_get_path (BijiNoteObj *n); +void note_obj_set_is_template (BijiNoteObj *n, + gboolean is_template); -gboolean biji_note_obj_set_last_change_date (BijiNoteObj* n,gchar* date); -void biji_note_obj_set_last_change_date_now (BijiNoteObj* n) ; +void biji_note_obj_save_note (BijiNoteObj *self); -glong biji_note_obj_get_last_change_date_sec ( BijiNoteObj *n ); -gchar * biji_note_obj_get_last_change_date_string (BijiNoteObj *self); +void biji_note_obj_set_icon (BijiNoteObj *note, + GdkPixbuf *pix); -gchar * biji_note_obj_get_last_metadata_change_date (BijiNoteObj *note); -gboolean biji_note_obj_set_last_metadata_change_date (BijiNoteObj* n,gchar* date) ; +gchar *biji_note_obj_get_icon_file (BijiNoteObj *note); -gboolean biji_note_obj_set_create_date (BijiNoteObj* n ,gchar* date); -void biji_note_obj_set_create_date_now (BijiNoteObj *note); +const gchar *biji_note_obj_get_raw_text (BijiNoteObj *note); -void biji_note_obj_set_all_dates_now (BijiNoteObj *note); -int get_note_status(BijiNoteObj* n); +void biji_note_obj_set_raw_text (BijiNoteObj *note, + gchar *plain_text); -void set_note_status(BijiNoteObj* n, int status) ; -gboolean biji_note_obj_get_rgba(BijiNoteObj *n, GdkRGBA *rgba) ; +gboolean biji_note_obj_set_title (BijiNoteObj* note_obj_ptr, + const gchar* title); -void biji_note_obj_set_rgba(BijiNoteObj *n, GdkRGBA *rgba) ; -/* Tracker Tags. Free the GList. - * Remove label always due to user action. Add label has to precise */ +gboolean biji_note_obj_is_template (BijiNoteObj *note); -GList * biji_note_obj_get_collections (BijiNoteObj *n); -gboolean biji_note_obj_has_collection (BijiNoteObj *note, gchar *label); +GtkWidget *biji_note_obj_open (BijiNoteObj *note); -gboolean biji_note_obj_add_collection (BijiNoteObj *note, gchar *label, gboolean on_user_action_cb); -gboolean biji_note_obj_remove_collection (BijiNoteObj *note, gchar *label, gchar *urn); +gboolean biji_note_obj_is_opened (BijiNoteObj *note); -/////////////////////////////////////////////////////////////////// templates -gboolean note_obj_is_template(BijiNoteObj *n) ; -void note_obj_set_is_template(BijiNoteObj *n,gboolean is_template); +GtkWidget *biji_note_obj_get_editor (BijiNoteObj *note); -/////////////////////////////////////////////////////////////////// Save -void biji_note_obj_save_note (BijiNoteObj *self); -GdkPixbuf * biji_note_obj_get_icon (BijiNoteObj *note); +gboolean biji_note_obj_can_format (BijiNoteObj *note); -void biji_note_obj_set_icon (BijiNoteObj *note, GdkPixbuf *pix); -gchar *biji_note_obj_get_icon_file (BijiNoteObj *note); +gchar *html_from_plain_text (gchar *content); -gchar *biji_note_get_raw_text(BijiNoteObj *note); -void biji_note_obj_set_raw_text (BijiNoteObj *note, gchar *plain_text); +void biji_note_obj_set_html (BijiNoteObj *note, + gchar *html); -gboolean biji_note_obj_set_title (BijiNoteObj* note_obj_ptr,gchar* title); -gboolean biji_note_obj_is_template(BijiNoteObj *note); +gchar *biji_note_obj_get_html (BijiNoteObj *note); -gchar *biji_note_obj_get_last_change_date(BijiNoteObj *note); -gchar *biji_note_obj_get_create_date(BijiNoteObj *note); +void biji_note_obj_editor_apply_format (BijiNoteObj *note, + gint format); -/* Webkit : note edition */ -GtkWidget * biji_note_obj_open (BijiNoteObj *note); +gboolean biji_note_obj_editor_has_selection (BijiNoteObj *note); -gboolean biji_note_obj_is_opened (BijiNoteObj *note); -GtkWidget * biji_note_obj_get_editor (BijiNoteObj *note); +gchar *biji_note_obj_editor_get_selection (BijiNoteObj *note); -void biji_note_obj_set_html_content (BijiNoteObj *note, gchar *html); -gchar * biji_note_obj_get_html (BijiNoteObj *note); +void biji_note_obj_editor_cut (BijiNoteObj *note); -void biji_note_obj_editor_apply_format (BijiNoteObj *note, - gint format); -gboolean biji_note_obj_editor_has_selection (BijiNoteObj *note); +void biji_note_obj_editor_copy (BijiNoteObj *note); -gchar * biji_note_obj_editor_get_selection (BijiNoteObj *note); -void biji_note_obj_editor_cut (BijiNoteObj *note); +void biji_note_obj_editor_paste (BijiNoteObj *note); -void biji_note_obj_editor_copy (BijiNoteObj *note); -void biji_note_obj_editor_paste (BijiNoteObj *note); G_END_DECLS diff -Nru bijiben-3.8.4/src/libbiji/biji-string.c bijiben-3.10.2/src/libbiji/biji-string.c --- bijiben-3.8.4/src/libbiji/biji-string.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-string.c 2013-10-31 22:52:41.000000000 +0000 @@ -19,7 +19,7 @@ #include "biji-string.h" gchar * -biji_str_replace (gchar *string, gchar *as_is, gchar *to_be) +biji_str_replace (const gchar *string, gchar *as_is, gchar *to_be) { gchar **array; gchar *result = NULL; @@ -44,7 +44,7 @@ return result; } -gchar * biji_str_mass_replace (gchar *string, +gchar * biji_str_mass_replace (const gchar *string, ...) { va_list args; @@ -62,7 +62,7 @@ if (to_be) { - tmp = biji_str_replace (result, as_is, to_be); + tmp = biji_str_replace ((const gchar*) result, as_is, to_be); if (tmp) { diff -Nru bijiben-3.8.4/src/libbiji/biji-string.h bijiben-3.10.2/src/libbiji/biji-string.h --- bijiben-3.8.4/src/libbiji/biji-string.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-string.h 2013-10-31 22:53:14.000000000 +0000 @@ -25,11 +25,11 @@ /* Replaces inside string the as_is with to_be * Returns a newly allocated string */ -gchar * biji_str_replace (gchar *string, gchar *as_is, gchar *to_be); +gchar * biji_str_replace (const gchar *string, gchar *as_is, gchar *to_be); /* Calls biji_str_replace as much as there are paired gchar* args * Returns a newly allocated string */ -gchar * biji_str_mass_replace (gchar *string, ...) G_GNUC_NULL_TERMINATED ; +gchar * biji_str_mass_replace (const gchar *string, ...) G_GNUC_NULL_TERMINATED ; G_END_DECLS diff -Nru bijiben-3.8.4/src/libbiji/biji-tracker.c bijiben-3.10.2/src/libbiji/biji-tracker.c --- bijiben-3.8.4/src/libbiji/biji-tracker.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-tracker.c 2013-11-11 20:52:06.000000000 +0000 @@ -1,5 +1,5 @@ /* biji-tracker.c - * Copyright (C) Pierre-Yves LUYTEN 2012 + * Copyright (C) Pierre-Yves LUYTEN 2012, 2013 * * bijiben is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -15,81 +15,114 @@ * with this program. If not, see . */ +#include "biji-item.h" #include "biji-tracker.h" -/* To perform something after async tracker query */ + + +typedef enum +{ + BIJI_URN_COL, + BIJI_TITLE_COL, + BIJI_MTIME_COL, + BIJI_CONTENT_COL, + BIJI_CREATED_COL, + BIJI_NO_COL + +} BijiTrackerColumns; + + + +/* To perform something after async tracker query + * TODO : implemet this with GObject */ typedef struct { - /* query, could add the cancellable */ - gchar *query; + BijiNoteBook *book; + + /* usually a query */ + + gchar *str; + BijiInfoSet *info; + + /* after the query, _one of_ the callbacks */ + + BijiBoolCallback bool_cb; + BijiInfoCallback info_cb; + BijiItemCallback item_cb; + BijiItemsListCallback list_cb; + BijiInfoSetsHCallback hash_cb; + - /* after the query */ - BijiFunc func; gpointer user_data; } BijiTrackerFinisher; -static BijiTrackerFinisher * -biji_tracker_finisher_new (gchar *query, BijiFunc f, gpointer user_data) -{ - BijiTrackerFinisher *retval = g_new (BijiTrackerFinisher, 1); - retval->query = query; - retval->func = f; +/* finisher stores _one of the possible callbacks _ + * we could cast as well */ + + +static BijiTrackerFinisher * +biji_tracker_finisher_new (BijiNoteBook *book, + gchar *str, + BijiInfoSet *info, + BijiBoolCallback bool_cb, + BijiInfoCallback info_cb, + BijiItemCallback item_cb, + BijiItemsListCallback list_cb, + BijiInfoSetsHCallback hash_cb, + gpointer user_data) +{ + BijiTrackerFinisher *retval = g_slice_new (BijiTrackerFinisher); + + retval->book = book; + retval->str = str; + retval->info = info; + retval->bool_cb = bool_cb; + retval->info_cb = info_cb; + retval->item_cb = item_cb; + retval->list_cb = list_cb; + retval->hash_cb = hash_cb; retval->user_data = user_data; return retval; } + +/* Only heap is str */ + static void biji_tracker_finisher_free (BijiTrackerFinisher *f) { - if (f->query) - g_free (f->query); - - g_free (f); + g_clear_pointer (&f->str, g_free); + g_slice_free (BijiTrackerFinisher, f); } -TrackerSparqlConnection *bjb_connection ; - -static TrackerSparqlConnection * -get_connection_singleton(void) -{ - if ( bjb_connection == NULL ) - { - GError *error = NULL ; - - g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"Getting tracker connection."); - bjb_connection = tracker_sparql_connection_get (NULL,&error); - - if ( error ) - g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"Connection errror. Tracker out."); - } - return bjb_connection ; -} - -static void -bjb_perform_query_async (gchar *query, - GAsyncReadyCallback f, - gpointer user_data) +static TrackerSparqlConnection* +get_connection (BijiNoteBook *book) { - tracker_sparql_connection_query_async (get_connection_singleton (), - query, - NULL, - f, - user_data); + return biji_note_book_get_tracker_connection (book); } + +/* TODO : populate the boolean */ + static void biji_finish_update (GObject *source_object, GAsyncResult *res, gpointer user_data) { - TrackerSparqlConnection *self = TRACKER_SPARQL_CONNECTION (source_object); - GError *error = NULL; - BijiTrackerFinisher *finisher = user_data; - gchar *query = finisher->query; + TrackerSparqlConnection *self; + BijiTrackerFinisher *finisher; + GError *error; + gchar *query; + + + self = TRACKER_SPARQL_CONNECTION (source_object); + finisher = user_data; + error = NULL; + query = finisher->str; tracker_sparql_connection_update_finish (self, res, &error); @@ -100,18 +133,24 @@ } /* See if the query has something to perform afterward */ - if (finisher->func) - finisher->func (finisher->user_data); + if (finisher->bool_cb) + finisher->bool_cb (TRUE, finisher->user_data); biji_tracker_finisher_free (finisher); } -static void -biji_perform_update_async_and_free (gchar *query, BijiFunc f, gpointer user_data) -{ - BijiTrackerFinisher *finisher = biji_tracker_finisher_new (query, f, user_data); - tracker_sparql_connection_update_async (get_connection_singleton(), +static void +biji_perform_update_async_and_free (TrackerSparqlConnection *connection, + gchar *query, + BijiBoolCallback f, + gpointer user_data) +{ + BijiTrackerFinisher *finisher; + + finisher = biji_tracker_finisher_new + (NULL, query, NULL, f, NULL, NULL, NULL, NULL, user_data); + tracker_sparql_connection_update_async (connection, query, 0, // priority NULL, @@ -119,47 +158,42 @@ finisher); } + /* Don't worry too much. We just want plain text here */ static gchar * -tracker_str ( gchar * string ) +tracker_str (const gchar * string ) { + g_return_val_if_fail (string != NULL, g_strdup ("")); + return biji_str_mass_replace (string, "\n", " ", "'", " ", NULL); } -static gchar * -to_8601_date( gchar * dot_iso_8601_date ) -{ - gchar *result = dot_iso_8601_date ; - return g_strdup_printf ( "%sZ", - g_utf8_strncpy (result ,dot_iso_8601_date, 19) ); -} + static gchar * get_note_url (BijiNoteObj *note) { - gchar *path, *retval; - - path = biji_note_obj_get_path (note); - retval = g_strdup_printf ("file://%s", path); - g_free (path); - return retval; + return g_strdup_printf ("file://%s", biji_item_get_uuid (BIJI_ITEM (note))); } -/////////////// Tags -/* This func only provides collections. - * TODO : include number of notes / files */ -GHashTable * -biji_get_all_collections_finish (GObject *source_object, - GAsyncResult *res) + +static void +biji_query_info_hash_finish (GObject *source_object, + GAsyncResult *res, + gpointer user_data) { - TrackerSparqlConnection *self = TRACKER_SPARQL_CONNECTION (source_object); + TrackerSparqlConnection *self; TrackerSparqlCursor *cursor; - GError *error = NULL; - GHashTable *result = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - g_free); + GError *error; + GHashTable *result; + BijiTrackerFinisher *finisher; + + self = TRACKER_SPARQL_CONNECTION (source_object); + finisher = (BijiTrackerFinisher*) user_data; + error = NULL; + result = g_hash_table_new_full ( + g_str_hash, g_str_equal, NULL, (GDestroyNotify) biji_info_set_free); cursor = tracker_sparql_connection_query_finish (self, res, @@ -173,39 +207,51 @@ if (cursor) { - gchar *urn, *collection; while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { - urn = g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)); - collection = g_strdup (tracker_sparql_cursor_get_string (cursor, 1, NULL)); - g_hash_table_replace (result, collection, urn); + BijiInfoSet *set = biji_info_set_new (); + GTimeVal time = {0,0}; + + set->tracker_urn = g_strdup (tracker_sparql_cursor_get_string (cursor, BIJI_URN_COL, NULL)); + set->title = g_strdup (tracker_sparql_cursor_get_string (cursor, BIJI_TITLE_COL, NULL)); + + if (g_time_val_from_iso8601 (tracker_sparql_cursor_get_string (cursor, BIJI_MTIME_COL, NULL), &time)) + set->mtime = time.tv_sec; + + else + set->mtime = 0; + + g_hash_table_replace (result, set->tracker_urn, set); } g_object_unref (cursor); } - return result; + finisher->hash_cb (result, finisher->user_data); + biji_tracker_finisher_free (finisher); + return; } - -void -biji_get_all_collections_async (GAsyncReadyCallback f, - gpointer user_data) -{ - gchar *query = "SELECT ?c ?title WHERE { ?c a nfo:DataContainer ; nie:title ?title ; nie:generator 'Bijiben'}"; - bjb_perform_query_async (query, f, user_data); -} -GList * -biji_get_notes_with_strings_or_collection_finish (GObject *source_object, - GAsyncResult *res, - BijiNoteBook *book) +static void +biji_query_items_list_finish (GObject *source_object, + GAsyncResult *res, + gpointer user_data) { - TrackerSparqlConnection *self = TRACKER_SPARQL_CONNECTION (source_object); + TrackerSparqlConnection *self; TrackerSparqlCursor *cursor; - GError *error = NULL; - GList *result = NULL; + BijiTrackerFinisher *finisher; + GError *error; + GList *result; + + self = TRACKER_SPARQL_CONNECTION (source_object); + result = NULL; + error = NULL; + finisher = (BijiTrackerFinisher *) user_data; + + if (finisher->list_cb == NULL) + return; cursor = tracker_sparql_connection_query_finish (self, res, &error); @@ -219,7 +265,7 @@ { const gchar *full_path; gchar *path; - BijiNoteObj *note = NULL; + BijiItem *item = NULL; while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { @@ -228,141 +274,644 @@ if (g_str_has_prefix (full_path, "file://")) { GString *string; + string = g_string_new (full_path); g_string_erase (string, 0, 7); path = g_string_free (string, FALSE); } + else { path = g_strdup (full_path); } - - note = note_book_get_note_at_path (book, path); - /* Sorting is done in another place */ - if (note) - result = g_list_prepend (result, note); + item = biji_note_book_get_item_at_path (finisher->book, path); - g_free (path); + /* Sorting is done in another place */ + if (item) + result = g_list_prepend (result, item); } g_object_unref (cursor); } - return result; + finisher->list_cb (result, finisher->user_data); + biji_tracker_finisher_free (finisher); } -/* FIXME : the nie:isPartOf returns file://$path, while - * union fts returns $path which leads to uggly code - * TODO : not case sensitive */ + + +static void +bjb_query_async (BijiNoteBook *book, + gchar *query, + BijiInfoSetsHCallback hash_cb, + BijiItemsListCallback list_cb, + gpointer user_data) +{ + BijiTrackerFinisher *finisher; + GAsyncReadyCallback callback = NULL; + + finisher = biji_tracker_finisher_new (book, NULL, NULL, NULL, NULL, NULL, list_cb, hash_cb, user_data); + + if (hash_cb != NULL) + callback = biji_query_info_hash_finish; + + else if (list_cb != NULL) + callback = biji_query_items_list_finish; + + if (callback) + tracker_sparql_connection_query_async ( + get_connection (book), query, NULL, callback, finisher); +} + + void -biji_get_notes_with_string_or_collection_async (gchar *needle, GAsyncReadyCallback f, gpointer user_data) +biji_get_all_collections_async (BijiNoteBook *book, + BijiInfoSetsHCallback cb, + gpointer user_data) +{ + gchar *query = g_strconcat ( + "SELECT ?c ?title ?mtime ", + "WHERE { ?c a nfo:DataContainer ;", + "nie:title ?title ; ", + "nie:contentLastModified ?mtime ;" + "nie:generator 'Bijiben'}", + NULL); + + bjb_query_async (book, query, cb, NULL, user_data); +} + + + + +/* FIXME: returns file://$PATH while we want $PATH + * workaround in biji_query_items_list_finish */ +void +biji_get_items_with_collection_async (BijiNoteBook *book, + const gchar *collection, + BijiItemsListCallback list_cb, + gpointer user_data) { gchar *query; - query = g_strdup_printf ("SELECT ?s WHERE {{?c nie:isPartOf ?s; nie:title '%s'} \ - UNION {?s fts:match '%s'. ?s nie:generator 'Bijiben'}}", - needle, needle); + query = g_strdup_printf ("SELECT ?s WHERE {?c nie:isPartOf ?s; nie:title '%s'}", + collection); - bjb_perform_query_async (query, f, user_data); + bjb_query_async (book, query, NULL, list_cb, user_data); } -void -biji_create_new_collection (const gchar *tag, BijiFunc afterward, gpointer user_data) -{ - gchar *query = g_strdup_printf ("INSERT {_:result a nfo:DataContainer;a nie:DataObject;nie:title '%s' ; nie:generator 'Bijiben'}" - ,tag); - biji_perform_update_async_and_free (query, afterward, user_data); + + +void +biji_get_items_matching_async (BijiNoteBook *book, + gchar *needle, + BijiItemsListCallback list_cb, + gpointer user_data) +{ + gchar *lower; + gchar *query; + + + lower = g_utf8_strdown (needle, -1); + + /* We want to retrieve the key that noteBook uses. + * for notes: that is url. A file path is unique. + * for collections: we have no url, directly use urn:uuid */ + + query = g_strconcat ( + "SELECT tracker:coalesce (?url, ?urn) WHERE ", + "{", + " { ?urn a nfo:Note", + " .?urn nie:title ?title", + " .?urn nie:plainTextContent ?content", + " .?urn nie:url ?url", + " .?urn nie:generator 'Bijiben'", + " .FILTER (", + " fn:contains (fn:lower-case (?content), '", lower, "' ) || ", + " fn:contains (fn:lower-case (?title) , '", lower, "'))} ", + "UNION", + " { ?urn a nfo:DataContainer", + " .?urn nie:title ?title", + " .?urn nie:generator 'Bijiben'", + " .FILTER (", + " fn:contains (fn:lower-case (?title), '", lower, "'))}", + "}", + NULL); + + g_free (lower); + bjb_query_async (book, query, NULL, list_cb, user_data); +} + + +static void +on_new_collection_query_executed (GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + BijiTrackerFinisher *finisher = user_data; + TrackerSparqlConnection *connection = TRACKER_SPARQL_CONNECTION (source_object); + GError *error; + GVariant *variant; + GVariant *child; + gchar *key = NULL; + gchar *val = NULL; + gchar *urn = NULL; + BijiCollection *collection = NULL; + + error = NULL; + variant = tracker_sparql_connection_update_blank_finish (connection, res, &error); + if (error != NULL) + { + g_warning ("Unable to create collection: %s", error->message); + g_error_free (error); + goto out; + } + + child = g_variant_get_child_value (variant, 0); /* variant is now aa{ss} */ + g_variant_unref (variant); + variant = child; + + child = g_variant_get_child_value (variant, 0); /* variant is now s{ss} */ + g_variant_unref (variant); + variant = child; + + child = g_variant_get_child_value (variant, 0); /* variant is now {ss} */ + g_variant_unref (variant); + variant = child; + + child = g_variant_get_child_value (variant, 0); + key = g_variant_dup_string (child, NULL); + g_variant_unref (child); + + child = g_variant_get_child_value (variant, 1); + val = g_variant_dup_string (child, NULL); + g_variant_unref (child); + + g_variant_unref (variant); + + if (g_strcmp0 (key, "res") == 0) + urn = val; + + /* Update the note book */ + if (urn) + { + collection = biji_collection_new ( + G_OBJECT (finisher->book), + urn, + finisher->str, + g_get_real_time () / G_USEC_PER_SEC); + biji_note_book_add_item (finisher->book, BIJI_ITEM (collection), TRUE); + } + + /* Run the callback from the caller */ + + out: + if (finisher->item_cb != NULL) + (*finisher->item_cb) (BIJI_ITEM (collection), finisher->user_data); + + g_free (val); + g_free (key); + biji_tracker_finisher_free (finisher); } -/* removes the tag EVEN if files associated. - * TODO : afterward */ + +/* This func creates the collection, + * gives the urn to the notebook, + * then run the 'afterward' callback */ void -biji_remove_collection_from_tracker (gchar *urn) +biji_create_new_collection_async (BijiNoteBook *book, + const gchar *name, + BijiItemCallback item_cb, + gpointer user_data) { - gchar *query = g_strdup_printf ("DELETE {'%s' a nfo:DataContainer}", urn); - biji_perform_update_async_and_free (query, NULL, NULL); + gchar *query; + GTimeVal tv; + gchar *time; + gint64 timestamp; + BijiTrackerFinisher *finisher; + + timestamp = g_get_real_time () / G_USEC_PER_SEC; + tv.tv_sec = timestamp; + tv.tv_usec = 0; + time = g_time_val_to_iso8601 (&tv); + + query = g_strdup_printf ("INSERT { _:res a nfo:DataContainer ; a nie:DataObject ; " + "nie:contentLastModified '%s' ; " + "nie:title '%s' ; " + "nie:generator 'Bijiben' }", + time, + name); + g_free (time); + + /* The finisher has all the pointers we want. + * And the callback will free it */ + finisher = biji_tracker_finisher_new (book, g_strdup (name), NULL, NULL, NULL, item_cb, NULL, NULL, user_data); + tracker_sparql_connection_update_blank_async (get_connection (book), + query, + G_PRIORITY_DEFAULT, + NULL, + on_new_collection_query_executed, + finisher); } + +/* removes the tag EVEN if files associated. */ + void -biji_push_existing_collection_to_note (BijiNoteObj *note, gchar *title) +biji_remove_collection_from_tracker (BijiNoteBook *book, const gchar *urn) { - gchar *url = get_note_url (note); - gchar *query = g_strdup_printf ("INSERT {?urn nie:isPartOf '%s'} WHERE {?urn a nfo:DataContainer; nie:title '%s'; nie:generator 'Bijiben'}", - url, title); + gchar *query; + + query = g_strdup_printf ("DELETE {'%s' a nfo:DataContainer}", urn); + biji_perform_update_async_and_free (get_connection (book), query, NULL, NULL); +} + + +void +biji_push_existing_collection_to_note (BijiNoteObj *note, + gchar *title, + BijiBoolCallback afterward, + gpointer user_data) +{ + gchar *url, *query; + + url = get_note_url (note); + query = g_strdup_printf ("INSERT {?urn nie:isPartOf '%s'} WHERE {?urn a nfo:DataContainer; nie:title '%s'; nie:generator 'Bijiben'}", + url, title); - biji_perform_update_async_and_free (query, NULL, NULL); + biji_perform_update_async_and_free ( + get_connection (biji_item_get_book (BIJI_ITEM (note))), query, afterward, user_data); g_free (url); } -/* This one is to be fixed */ + + void -biji_remove_collection_from_note (BijiNoteObj *note, gchar *urn) +biji_remove_collection_from_note (BijiNoteObj *note, + BijiItem *coll, + BijiBoolCallback afterward, + gpointer user_data) { - gchar *url = get_note_url (note); - gchar *query = g_strdup_printf ("DELETE {'%s' nie:isPartOf '%s'}", urn, url); + gchar *url, *query; + + url = get_note_url (note); + + query = g_strdup_printf ( + "DELETE {'%s' nie:isPartOf '%s'}", + biji_item_get_uuid (coll), url); - biji_perform_update_async_and_free (query, NULL, NULL); + + biji_perform_update_async_and_free (get_connection (biji_item_get_book (coll)), query, afterward, user_data); g_free (url); } + void biji_note_delete_from_tracker (BijiNoteObj *note) { - gchar *query, *path; + BijiItem *item; + gchar *query; + const gchar *uuid; + BijiNoteBook *book; + + item = BIJI_ITEM (note); + book = biji_item_get_book (item); + uuid = biji_item_get_uuid (item); + query = g_strdup_printf ("DELETE { <%s> a rdfs:Resource }", uuid); + biji_perform_update_async_and_free (get_connection (book), query, NULL, NULL); +} + + + +void +biji_tracker_trash_ressource (BijiNoteBook *book, + gchar *tracker_urn) +{ + gchar *query; + + query = g_strdup_printf ("DELETE { <%s> a rdfs:Resource }", tracker_urn); + biji_perform_update_async_and_free (get_connection (book), query, NULL, NULL); +} + + +static void +update_ressource (BijiTrackerFinisher *finisher, gchar *tracker_urn_uuid ) +{ + BijiNoteBook *book; + BijiInfoSet *info; + gchar *query, *created, *mtime, *content; + GTimeVal t; + + book = finisher->book; + info = finisher->info; + + t.tv_usec = 0; + t.tv_sec = info->mtime; + mtime = g_time_val_to_iso8601 (&t); + + t.tv_sec = info->created; + created = g_time_val_to_iso8601 (&t); + + + content = tracker_str (info->content); + + g_message ("Updating ressource <%s> %s", info->title, tracker_urn_uuid); + + query = g_strdup_printf ( + "INSERT OR REPLACE { <%s> a nfo:Note , nie:DataObject ; " + "nie:url '%s' ; " + "nie:contentLastModified '%s' ; " + "nie:contentCreated '%s' ; " + "nie:title '%s' ; " + "nie:plainTextContent '%s' ; " + "nie:dataSource '%s' ;" + "nie:generator 'Bijiben' . }", + tracker_urn_uuid, + info->url, + mtime, + created, + info->title, + content, + info->datasource_urn); + + biji_perform_update_async_and_free (get_connection (book), query, NULL, NULL); + + g_free (tracker_urn_uuid); + g_free (mtime); + g_free (created); + g_free (content); + biji_tracker_finisher_free (finisher); +} + + +static void +push_new_note (BijiTrackerFinisher *finisher) +{ + BijiNoteBook *book; + BijiInfoSet *info; + gchar *query, *content, *created_time, *mtime; + GTimeVal t; + + book = finisher->book; + info = finisher->info; + g_message ("Creating ressource <%s> %s", info->title, info->url); + + content = tracker_str (info->content); + t.tv_usec = 0; + t.tv_sec = info->mtime; + mtime = g_time_val_to_iso8601 (&t); + + + t.tv_sec = info->created; + created_time = g_time_val_to_iso8601 (&t); + + + query = g_strconcat ( + "INSERT { _:res a nfo:Note ; ", + " a nie:DataObject ; ", + " nie:contentLastModified '", mtime, "' ;", + " nie:contentCreated '", created_time, "' ;", + " nie:title '", info->title, "' ;", + " nie:url '", info->url, "' ;", + " nie:plainTextContent '", content, "' ;", + " nie:dataSource '", info->datasource_urn, "' ;", + " nie:generator 'Bijiben' }", + NULL); + + + g_debug ("%s", query); + + tracker_sparql_connection_update_blank_async (get_connection (book), + query, + G_PRIORITY_DEFAULT, + NULL, + NULL, // callback, + NULL); // user_data); + + + g_free (query); + g_free (content); + g_clear_pointer (&mtime, g_free); + g_clear_pointer (&created_time, g_free); + biji_tracker_finisher_free (finisher); +} + + +static void +ensure_ressource_callback (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + TrackerSparqlConnection *connection; + TrackerSparqlCursor *cursor; + BijiTrackerFinisher *finisher; + GError *error; + gchar *urn_found; + + + connection = TRACKER_SPARQL_CONNECTION (source_object); + finisher = user_data; + error = NULL; + urn_found = NULL; + cursor = tracker_sparql_connection_query_finish (connection, res, &error); + + if (error) + { + g_warning ("ENSURE RESSOURCE : error %s", error->message); + g_error_free (error); + biji_tracker_finisher_free (finisher); + return; + } + + /* Queried ressource found into tracker */ + + if (cursor) + { + + if (tracker_sparql_cursor_next (cursor, NULL, NULL)) + urn_found = g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)); + + g_object_unref (cursor); + } + + + if (urn_found != NULL) + update_ressource (finisher, urn_found); + + else + push_new_note (finisher); +} + + + +void +biji_tracker_ensure_ressource_from_info (BijiNoteBook *book, + BijiInfoSet *info) +{ + gchar *query; + BijiTrackerFinisher *finisher; + + + query = g_strconcat ( + "SELECT ?urn ?time WHERE { ?urn a nfo:Note ;", + " nie:title ?title ;", + " nie:contentLastModified ?time ;", + " nie:url '", info->url, "' }", + NULL); + + + /* No matter user callback or not, + * we'll need our own to push if needed */ + + finisher = biji_tracker_finisher_new ( + book, + NULL, + info, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL); // user_data); - path = biji_note_obj_get_path (note); - query = g_strdup_printf ("DELETE { <%s> a rdfs:Resource }", path); - g_free (path); - - biji_perform_update_async_and_free (query, NULL, NULL); + tracker_sparql_connection_query_async ( + get_connection (book), query, NULL, ensure_ressource_callback, finisher); } + + + + void -bijiben_push_note_to_tracker (BijiNoteObj *note) -{ - gchar *title,*content,*file,*date, *create_date,*last_change_date, *path; - - path = biji_note_obj_get_path (note); - title = tracker_str (biji_note_obj_get_title (note)); - file = g_strdup_printf ("file://%s", path); - - date = biji_note_obj_get_create_date (note); - create_date = to_8601_date (date); - g_free (date); - - date = biji_note_obj_get_last_change_date (note); - last_change_date = to_8601_date (date); - g_free (date); - - content = tracker_str (biji_note_get_raw_text (note)); - - /* TODO : nie:mimeType Note ; - * All these properties are unique and thus can be "updated" - * which is not the case of tags */ - gchar *query = g_strdup_printf ( - "INSERT OR REPLACE { <%s> a nfo:Note , nie:DataObject ; \ - nie:url '%s' ; \ - nie:contentLastModified '%s' ; \ - nie:contentCreated '%s' ; \ - nie:title '%s' ; \ - nie:plainTextContent '%s' ; \ - nie:generator 'Bijiben' . }", - path, - file, - last_change_date, - create_date, - title, - content) ; - - biji_perform_update_async_and_free (query, NULL, NULL); - - g_free(title); - g_free(file); - g_free(content); - g_free(create_date); - g_free(last_change_date); - g_free (path); +biji_tracker_ensure_datasource (BijiNoteBook *book, + gchar *datasource, + gchar *identifier, + BijiBoolCallback cb, + gpointer user_data) +{ + gchar *query; + + + query = g_strdup_printf ( + "INSERT OR REPLACE INTO <%s> {" + " <%s> a nie:DataSource ; nao:identifier \"%s\" }", + datasource, + datasource, + identifier); + + biji_perform_update_async_and_free ( + get_connection (book), query, cb, user_data); } + + +static void +on_info_queried (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + TrackerSparqlConnection *connection; + TrackerSparqlCursor *cursor; + BijiTrackerFinisher *finisher; + GError *error; + BijiInfoSet *retval; + GTimeVal t; + + + connection = TRACKER_SPARQL_CONNECTION (source_object); + finisher = user_data; + error = NULL; + retval = NULL; + cursor = tracker_sparql_connection_query_finish (connection, res, &error); + + if (error) + { + g_warning ("Check for Info : error %s", error->message); + g_error_free (error); + biji_tracker_finisher_free (finisher); + return; + } + + /* Queried ressource found into tracker */ + if (cursor) + { + if (tracker_sparql_cursor_next (cursor, NULL, NULL)) + { + retval = biji_info_set_new (); + + retval->url = g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)); + retval->title = g_strdup (tracker_sparql_cursor_get_string (cursor, 1, NULL)); + + if (g_time_val_from_iso8601 (tracker_sparql_cursor_get_string (cursor, 2, NULL), &t)) + retval->mtime = t.tv_sec; + + retval->content = biji_str_replace ( + tracker_sparql_cursor_get_string (cursor, 3, NULL), "b<br/>", "\n"); + + if (g_time_val_from_iso8601 (tracker_sparql_cursor_get_string (cursor, 4, NULL), &t)) + retval->created = t.tv_sec; + + + /* Check if the ressource is up to date */ + + if (finisher->info->mtime != retval->mtime) + g_clear_pointer (&retval, biji_info_set_free); + } + + g_object_unref (cursor); + } + + + /* No matter retval or not, we are supposed to callback + * (REMEMBER CALLER IS RESPONSIBLE FOR FREEING INFO SET) */ + if (finisher->info_cb != NULL) + finisher->info_cb (retval, finisher->user_data); + + + biji_tracker_finisher_free (finisher); +} + + +void +biji_tracker_check_for_info (BijiNoteBook *book, + gchar *url, + gint64 mtime, + BijiInfoCallback callback, + gpointer user_data) +{ + BijiInfoSet *info; + BijiTrackerFinisher *finisher; + gchar *query; + + query = g_strconcat ( + " SELECT ?urn ?title ?time ?content ?created", + " WHERE { ?urn a nfo:Note ;", + " nie:title ?title ;", + " nie:contentLastModified ?time ;", + " nie:plainTextContent ?content ;", + " nie:contentCreated ?created ;", + " nie:url '", url, "' }", + NULL); + + /* No matter user callback or not, + * we'll need our own to push if needed */ + info = biji_info_set_new (); + info->url = url; + info->mtime = mtime; + + finisher = biji_tracker_finisher_new ( + book, + NULL, + info, + NULL, + callback, + NULL, + NULL, + NULL, + user_data); + + tracker_sparql_connection_query_async ( + get_connection (book), query, NULL, on_info_queried, finisher); + + + g_free (query); +} diff -Nru bijiben-3.8.4/src/libbiji/biji-tracker.h bijiben-3.10.2/src/libbiji/biji-tracker.h --- bijiben-3.8.4/src/libbiji/biji-tracker.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-tracker.h 2013-11-11 20:52:06.000000000 +0000 @@ -1,5 +1,5 @@ /* biji-tracker.h - * Copyright (C) Pierre-Yves LUYTEN 2012 + * Copyright (C) Pierre-Yves LUYTEN 2012,2013 * * bijiben is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -23,39 +23,99 @@ #include #include "libbiji.h" +#include "biji-info-set.h" -/* todo : find this on glib */ -typedef void (*BijiFunc) (gpointer user_data); -/* All notes matching (either content or collections) */ -GList * biji_get_notes_with_strings_or_collection_finish (GObject *source_object, - GAsyncResult *res, - BijiNoteBook *book); +/* All possible query return + * Free the containers for list & hash */ -void biji_get_notes_with_string_or_collection_async (gchar *needle, - GAsyncReadyCallback f, - gpointer user_data); -/* Collections */ +typedef void (*BijiBoolCallback) (gboolean result, gpointer user_data); -/* The URN is the... value. Collection _title_ is the key.*/ -GHashTable * biji_get_all_collections_finish (GObject *source_object, GAsyncResult *res); -void biji_get_all_collections_async (GAsyncReadyCallback f, gpointer user_data); +typedef void (*BijiItemCallback) (BijiItem *item, gpointer user_data); -void biji_create_new_collection (const gchar *tag, BijiFunc afterward, gpointer user_data); -void biji_remove_collection_from_tracker (gchar *urn); +typedef void (*BijiItemsListCallback) (GList *items, gpointer user_data); -// when adding an existing collection, use the collection title -void biji_push_existing_collection_to_note (BijiNoteObj *note, gchar *title); -// when removing, use the urn -void biji_remove_collection_from_note (BijiNoteObj *note, gchar *urn); +typedef void (*BijiInfoSetsHCallback) (GHashTable *info_sets, gpointer user_data); -/* Insert or update */ -void bijiben_push_note_to_tracker(BijiNoteObj *note); -void biji_note_delete_from_tracker(BijiNoteObj *note); +/* CALLER IS RESPONSIBLE FOR FREEING INFO SET */ + +typedef void (*BijiInfoCallback) (BijiInfoSet *info, gpointer user_data); + + + +void biji_get_items_with_collection_async (BijiNoteBook *book, + const gchar *needle, + BijiItemsListCallback cb, + gpointer user_data); + + +void biji_get_items_matching_async (BijiNoteBook *book, + gchar *needle, + BijiItemsListCallback cb, + gpointer user_data); + + + +void biji_get_all_collections_async (BijiNoteBook *book, + BijiInfoSetsHCallback cb, + gpointer user_data); + + + +void biji_create_new_collection_async (BijiNoteBook *book, + const gchar *tag, + BijiItemCallback afterward, + gpointer user_data); + + + +void biji_remove_collection_from_tracker (BijiNoteBook *book, + const gchar *urn); + + + + +void biji_push_existing_collection_to_note (BijiNoteObj *note, + gchar *title, + BijiBoolCallback bool_cb, + gpointer user_data); + + + +void biji_remove_collection_from_note (BijiNoteObj *note, + BijiItem *coll, + BijiBoolCallback bool_cb, + gpointer user_data); + + + +void biji_note_delete_from_tracker (BijiNoteObj *note); + + +void biji_tracker_trash_ressource (BijiNoteBook *book, + gchar *tracker_urn); + + +void biji_tracker_ensure_ressource_from_info (BijiNoteBook *book, + BijiInfoSet *info); + + +void biji_tracker_ensure_datasource (BijiNoteBook *book, + gchar *datasource_id, + gchar *identifier, + BijiBoolCallback cb, + gpointer user_data); + + +void biji_tracker_check_for_info (BijiNoteBook *book, + gchar *url, + gint64 mtime, + BijiInfoCallback callback, + gpointer user_data); #endif /*_BIJI_TRACKER_H*/ diff -Nru bijiben-3.8.4/src/libbiji/biji-zeitgeist.c bijiben-3.10.2/src/libbiji/biji-zeitgeist.c --- bijiben-3.8.4/src/libbiji/biji-zeitgeist.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-zeitgeist.c 2013-11-11 20:52:06.000000000 +0000 @@ -19,44 +19,152 @@ #include #include "biji-zeitgeist.h" -static ZeitgeistLog *global_log; -static ZeitgeistLog * -get_log (void) +ZeitgeistLog * +biji_zeitgeist_init (void) { - if (global_log == NULL ) - global_log = g_object_new (ZEITGEIST_TYPE_LOG, NULL); + GPtrArray *ptr_arr; + ZeitgeistEvent *event; + ZeitgeistDataSource *ds; + ZeitgeistDataSourceRegistry *zg_dsr = NULL; + ZeitgeistLog *log; + + log = zeitgeist_log_new (); + event = zeitgeist_event_new_full ( + NULL, NULL, "application://bijiben.desktop", NULL, NULL); + + ptr_arr = g_ptr_array_new (); + g_ptr_array_add (ptr_arr, event); + + ds = zeitgeist_data_source_new_full ("org.gnome.bijiben,dataprovider", + "Notes dataprovider", + "Logs events about accessed notes", + ptr_arr), + + zg_dsr = zeitgeist_data_source_registry_new (); + zeitgeist_data_source_registry_register_data_source (zg_dsr, ds, + NULL, NULL, NULL); + g_ptr_array_set_free_func (ptr_arr, g_object_unref); + g_ptr_array_unref (ptr_arr); - return global_log ; + return log; } -void -insert_zeitgeist(BijiNoteObj *note, const char *action) + +static void +on_find_create_event (GObject *log, + GAsyncResult *res, + gpointer user_data) { - gchar *uri, *path; + GError *error; + ZeitgeistResultSet *events; + + error = NULL; + events = zeitgeist_log_find_events_finish (ZEITGEIST_LOG (log), res, &error); + + if (error) + { + g_warning ("Error reading results: %s", error->message); + g_error_free (error); + return; + } + + + if (zeitgeist_result_set_size (events) == 0) + insert_zeitgeist (BIJI_NOTE_OBJ (user_data), ZEITGEIST_ZG_CREATE_EVENT); + + g_object_unref (events); +} + + +static void +check_insert_create_zeitgeist (BijiNoteObj *note) +{ + gchar *uri; + ZeitgeistLog *log; + GPtrArray *templates; ZeitgeistEvent *event; - ZeitgeistSubject *subject ; - ZeitgeistLog *log = get_log() ; + ZeitgeistSubject *subject; + + uri = g_strdup_printf ("file://%s", biji_item_get_uuid (BIJI_ITEM (note))); + log = biji_note_book_get_zg_log (biji_item_get_book (BIJI_ITEM (note))); + + templates = g_ptr_array_new (); + event = zeitgeist_event_new_full (ZEITGEIST_ZG_CREATE_EVENT, + NULL, + "application://bijiben.desktop", + NULL, NULL); + subject = zeitgeist_subject_new (); + zeitgeist_subject_set_uri (subject, uri); + zeitgeist_event_add_subject (event, subject); + g_ptr_array_add (templates, event); + + zeitgeist_log_find_events (log, + zeitgeist_time_range_new_to_now (), + templates, + ZEITGEIST_STORAGE_STATE_ANY, + 10, + ZEITGEIST_RESULT_TYPE_LEAST_RECENT_EVENTS, + NULL, + (GAsyncReadyCallback) on_find_create_event, + note); +} - path = biji_note_obj_get_path (note); - uri = g_strdup_printf ("file://%s", path); - g_free (path); - - subject = zeitgeist_subject_new_full (uri, //URI - ZEITGEIST_NFO_DOCUMENT, //inter - ZEITGEIST_NFO_FILE_DATA_OBJECT, //mani - "application/x-note", //mime - "", //origin - biji_note_obj_get_title (note), //text - "") ; //storage - g_free (uri); +void +insert_zeitgeist (BijiNoteObj *note, + gchar *zg_interpretation) +{ + gchar *uri; + const gchar *title; + ZeitgeistEvent *event; + ZeitgeistSubject *subject; + ZeitgeistLog *log; + + /* Make sure that only notes with a title log their events. + If a note is closed without a title, it is deleted. This + section prevents the ACCESS_EVENT being called immediately + after the note is created and the note is empty */ + + title = biji_item_get_title (BIJI_ITEM (note)); + if (title == NULL || + g_utf8_strlen (title, -1) <= 0) + return; + + /* Insert requested log */ + + log = biji_note_book_get_zg_log (biji_item_get_book (BIJI_ITEM (note))); + uri = g_strdup_printf ("file://%s", biji_item_get_uuid (BIJI_ITEM (note))); + + subject = zeitgeist_subject_new_full (uri, + ZEITGEIST_NFO_DOCUMENT, + ZEITGEIST_NFO_FILE_DATA_OBJECT, + "application/x-note", + "", + title, + ""); - event = zeitgeist_event_new_full (action, + event = zeitgeist_event_new_full (zg_interpretation, ZEITGEIST_ZG_USER_ACTIVITY, "application://bijiben.desktop", + "", subject, - NULL ); + NULL); + + + if (g_strcmp0 (zg_interpretation, ZEITGEIST_ZG_CREATE_EVENT) ==0) + zeitgeist_event_set_timestamp (event, + biji_note_obj_get_create_date (note)/1000); + + zeitgeist_log_insert_event_no_reply (log, event, NULL); + g_free (uri); + + + /* + * Check if the note + * was already created into zeitgeist + */ - zeitgeist_log_insert_events_no_reply (log, event, NULL); + if (g_strcmp0 (zg_interpretation, ZEITGEIST_ZG_MODIFY_EVENT) ==0) + check_insert_create_zeitgeist (note); } diff -Nru bijiben-3.8.4/src/libbiji/biji-zeitgeist.h bijiben-3.10.2/src/libbiji/biji-zeitgeist.h --- bijiben-3.8.4/src/libbiji/biji-zeitgeist.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/biji-zeitgeist.h 2013-11-11 20:52:06.000000000 +0000 @@ -21,6 +21,11 @@ #include "biji-note-obj.h" -void insert_zeitgeist(BijiNoteObj *note,const char *action) ; + +ZeitgeistLog *biji_zeitgeist_init (void); + + +void insert_zeitgeist (BijiNoteObj *note, + gchar *zg_interpretation); #endif /* _BIJI_ZEITGEIST_H */ diff -Nru bijiben-3.8.4/src/libbiji/deserializer/biji-lazy-deserializer.c bijiben-3.10.2/src/libbiji/deserializer/biji-lazy-deserializer.c --- bijiben-3.8.4/src/libbiji/deserializer/biji-lazy-deserializer.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/deserializer/biji-lazy-deserializer.c 2013-11-11 20:52:06.000000000 +0000 @@ -23,6 +23,7 @@ #include #include "biji-lazy-deserializer.h" +#include "../biji-date-time.h" #include "../biji-note-obj.h" #include "../biji-string.h" @@ -161,6 +162,7 @@ typedef void BijiReaderFunc (BijiNoteObj *note, gchar *string); + static void biji_process_string (xmlTextReaderPtr reader, BijiReaderFunc process_xml, @@ -171,6 +173,8 @@ free (result); } + + /* Tomboy Inner XML */ static void @@ -306,7 +310,7 @@ biji_note_obj_set_raw_text (priv->note, priv->raw_text->str); revamped_html = biji_str_replace (priv->html->str, "\n", "
"); - biji_note_obj_set_html_content (priv->note, revamped_html); + biji_note_obj_set_html (priv->note, revamped_html); g_free (revamped_html); } @@ -420,7 +424,7 @@ } biji_note_obj_set_raw_text (priv->note, priv->raw_text->str); - biji_note_obj_set_html_content (priv->note, sane_html); + biji_note_obj_set_html (priv->note, sane_html); xmlFree (BAD_CAST sane_html); } @@ -458,13 +462,25 @@ } if (g_strcmp0 ((gchar*) name, "last-change-date") == 0) - biji_process_string (r, (BijiReaderFunc*) biji_note_obj_set_last_change_date, n); + { + gchar *result = (gchar*) xmlTextReaderReadString (r); + biji_note_obj_set_mtime (n, iso8601_to_gint64 (result)); + free (result); + } if (g_strcmp0 ((gchar*) name, "last-metadata-change-date") == 0) - biji_process_string (r, (BijiReaderFunc*) biji_note_obj_set_last_metadata_change_date, n); + { + gchar *result = (gchar*) xmlTextReaderReadString (r); + biji_note_obj_set_last_metadata_change_date (n, iso8601_to_gint64 (result)); + free (result); + } if (g_strcmp0 ((gchar*) name, "create-date") == 0) - biji_process_string (r, (BijiReaderFunc*) biji_note_obj_set_create_date, n); + { + gchar *result = (gchar*) xmlTextReaderReadString (r); + biji_note_obj_set_create_date (n, iso8601_to_gint64 (result)); + free (result); + } if (g_strcmp0 ((gchar*) name, "color") == 0 ) { @@ -492,7 +508,7 @@ { norm = g_string_new (tag); g_string_erase (norm,0,16); - biji_note_obj_add_collection (n, norm->str, FALSE); + biji_item_add_collection (BIJI_ITEM (n), NULL, norm->str); g_string_free (norm, TRUE); } @@ -518,14 +534,13 @@ biji_lazy_deserialize_internal (BijiLazyDeserializer *self) { BijiNoteObj* n = self->priv->note; - gchar *path; + const gchar *path; xmlDocPtr doc; xmlNodePtr cur; xmlChar *version; - path = biji_note_obj_get_path (n); + path = biji_item_get_uuid (BIJI_ITEM (n)); doc = xmlParseFile (path); - g_free (path); if (doc == NULL ) { @@ -581,9 +596,9 @@ xmlFree (version); - path = biji_note_obj_get_path (n); + path = biji_item_get_uuid (BIJI_ITEM (n)); self->priv->r = xmlNewTextReaderFilename (path); - g_free (path); + biji_parse_file (self); xmlFreeDoc (doc); diff -Nru bijiben-3.8.4/src/libbiji/deserializer/biji-tomboy-reader.c bijiben-3.10.2/src/libbiji/deserializer/biji-tomboy-reader.c --- bijiben-3.8.4/src/libbiji/deserializer/biji-tomboy-reader.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/deserializer/biji-tomboy-reader.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,535 @@ +/* + * biji-tomboy-reader.c + * + * Copyright 2013 Pierre-Yves Luyten + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* TODO escape strings to have sane html */ + +#include +#include + +#include "../biji-error.h" +#include "../biji-date-time.h" +#include "../biji-info-set.h" +#include "../biji-string.h" + +#include "biji-tomboy-reader.h" + + +#define TOMBOY_NS "http://beatniksoftware.com/tomboy" + + +/* gobject properties */ +enum { + PROP_0, + PROP_SRC_PATH, + TOMBOY_READER_PROP +}; + + + +static GParamSpec *properties[TOMBOY_READER_PROP] = { NULL, }; + + +typedef enum +{ + NO_TYPE, + TOMBOY_1, + TOMBOY_2, + TOMBOY_3, + NUM_NOTE_TYPES +} BijiTomboyType; + + +struct BijiTomboyReaderPrivate_ +{ + + /* File */ + + gchar *path; + BijiTomboyType type; + + + /* Read */ + + xmlTextReaderPtr r; + xmlTextReaderPtr inner; + GString *raw_text; + GString *html; + + + + /* Return */ + + GError *error; + BijiInfoSet *set; + gint64 metadata_mtime; + GQueue *collections; + +}; + + + + +G_DEFINE_TYPE (BijiTomboyReader, biji_tomboy_reader, G_TYPE_OBJECT) + + + + +/* Tomboy Inner XML */ + +static void +process_tomboy_start_elem (BijiTomboyReader *self) +{ + BijiTomboyReaderPrivate *priv; + const gchar *element_name; + + priv = self->priv; + element_name = (const gchar *) xmlTextReaderConstName (priv->inner); + + if (g_strcmp0 (element_name, "note-content")==0) + return; + + if (g_strcmp0 (element_name, "bold")==0) + priv->html = g_string_append (priv->html, ""); + + if (g_strcmp0 (element_name, "italic")==0) + priv->html = g_string_append (priv->html, ""); + + if (g_strcmp0 (element_name, "strikethrough")==0) + priv->html = g_string_append (priv->html, ""); + + /* Currently tomboy has unordered list */ + + if (g_strcmp0 (element_name, "list")==0) + priv->html = g_string_append (priv->html, "
    "); + + if (g_strcmp0 (element_name, "list-item")==0) + priv->html = g_string_append (priv->html, "
  • "); +} + + + +static void +process_tomboy_end_elem (BijiTomboyReader *self) +{ + BijiTomboyReaderPrivate *priv = self->priv; + const gchar *element_name; + + element_name = (const gchar *) xmlTextReaderConstName (priv->inner); + + if (g_strcmp0 (element_name, "note-content")==0) + return; + + if (g_strcmp0 (element_name, "bold")==0) + priv->html = g_string_append (priv->html, ""); + + if (g_strcmp0 (element_name, "italic")==0) + priv->html = g_string_append (priv->html, ""); + + if (g_strcmp0 (element_name, "strikethrough")==0) + priv->html = g_string_append (priv->html, ""); + + /* Currently tomboy has unordered list */ + + if (g_strcmp0 (element_name, "list")==0) + priv->html = g_string_append (priv->html, "
"); + + if (g_strcmp0 (element_name, "list-item")==0) + priv->html = g_string_append (priv->html, ""); +} + + + +static void +process_tomboy_text_elem (BijiTomboyReader *self) +{ + gchar *text, *html_txt; + BijiTomboyReaderPrivate *priv = self->priv; + + text = (gchar*) xmlTextReaderConstValue (priv->inner); + + /* Simply append the text to both raw & html + * FIXME : escape things for html */ + + priv->raw_text = g_string_append (priv->raw_text, text); + + html_txt = biji_str_mass_replace (text, + "&", "&", + "<" , "<" , + ">", ">", + NULL); + + priv->html = g_string_append (priv->html, html_txt); + g_free (html_txt); +} + + + +static void +process_tomboy_node (BijiTomboyReader *self) +{ + int type; + const xmlChar *name ; + BijiTomboyReaderPrivate *priv = self->priv; + + type = xmlTextReaderNodeType (priv->inner); + name = xmlTextReaderConstName (priv->inner); + + if (name == NULL) + name = BAD_CAST "(NULL)"; + + switch (type) + { + case XML_ELEMENT_NODE: + process_tomboy_start_elem (self); + break; + + case XML_ELEMENT_DECL: + process_tomboy_end_elem (self); + break; + + case XML_TEXT_NODE: + process_tomboy_text_elem (self); + break; + + case XML_DTD_NODE: + process_tomboy_text_elem (self); + break; + } +} + + + +static void +process_tomboy_xml_content (BijiTomboyReader *self, gchar *text) +{ + BijiTomboyReaderPrivate *priv; + gint ret; + + priv = self->priv; + priv->inner = xmlReaderForMemory (text, + strlen (text), + "", "UTF-8", 0); + + ret = xmlTextReaderRead (priv->inner); + + /* Make the GString grow as we read */ + while (ret == 1) + { + process_tomboy_node (self); + ret = xmlTextReaderRead (priv->inner); + } + + + /* Close the html and set content */ + g_string_append (priv->html, ""); + priv->set->content = g_strdup (priv->raw_text->str); +} + + + + + + +static void +processNode (BijiTomboyReader *self) +{ + BijiTomboyReaderPrivate *priv; + xmlTextReaderPtr r; + gchar *name, *result; + gchar *tag; + GString *norm; + + + priv = self->priv; + r = priv->r; + name = (gchar*) xmlTextReaderName (r); + + + if (g_strcmp0 (name, "title") == 0) + priv->set->title = (gchar*) xmlTextReaderReadString (r); + + + if (g_strcmp0(name, "text") == 0) + { + process_tomboy_xml_content (self, (gchar*) xmlTextReaderReadInnerXml (r)); + } + + + if (g_strcmp0 (name, "last-change-date") == 0) + { + result = (gchar*) xmlTextReaderReadString (r); + priv->set->mtime = iso8601_to_gint64 (result); + g_free (result); + } + + + if (g_strcmp0 (name, "last-metadata-change-date") == 0) + { + result = (gchar*) xmlTextReaderReadString (r); + priv->metadata_mtime = iso8601_to_gint64 (result); + g_free (result); + } + + + if (g_strcmp0 (name, "create-date") == 0) + { + result = (gchar*) xmlTextReaderReadString (r); + priv->set->created = iso8601_to_gint64 (result); + g_free (result); + } + + + + if (g_strcmp0 (name,"tag") == 0 ) + { + tag = (gchar*) xmlTextReaderReadString(r); + + if (g_str_has_prefix (tag,"system:template")) + { + priv->error = biji_error_new (BIJI_ERROR_SOURCE, + "Aborting import for template note."); + } + + else if (g_str_has_prefix (tag,"system:notebook:")) + { + norm = g_string_new (tag); + g_string_erase (norm,0,16); + //biji_item_add_collection (BIJI_ITEM (n), NULL, norm->str); + //g_queue_push_head (priv->collections, norm->str); + g_string_free (norm, TRUE); + } + + free (tag); + } + + + xmlFree(name); +} + +static void +biji_tomboy_reader_constructed (GObject *obj) +{ + BijiTomboyReader *self; + BijiTomboyReaderPrivate *priv; + xmlDocPtr doc; + xmlNodePtr cur; + xmlChar *version; + + self = BIJI_TOMBOY_READER (obj); + priv = self->priv; + + + doc = xmlParseFile (priv->path); + + if (doc == NULL ) + { + priv->error = biji_error_new (BIJI_ERROR_SOURCE, + "File not parsed successfully"); + return; + } + + + cur = xmlDocGetRootElement (doc); + + if (cur == NULL) + { + priv->error = biji_error_new (BIJI_ERROR_SOURCE, + "File empty"); + xmlFreeDoc(doc); + return; + } + + + if (xmlStrcmp(cur->name, (const xmlChar *) "note")) + { + priv->error = biji_error_new (BIJI_ERROR_SOURCE, + "Root node != note"); + xmlFreeDoc(doc); + return; + } + + version = xmlGetNoNsProp (cur, BAD_CAST "version"); + + if (g_strcmp0 ((const gchar*) version, "0.1") == 0) + priv->type = TOMBOY_1; + + else if (g_strcmp0 ((const gchar*) version, "0.2") == 0) + priv->type = TOMBOY_2; + + else if (g_strcmp0 ((const gchar*) version, "0.3") == 0) + priv->type = TOMBOY_3; + + priv->r = xmlNewTextReaderFilename (priv->path); + + while ( xmlTextReaderRead(self->priv->r) == 1 ) + { + if ( xmlTextReaderNodeType(self->priv->r) == 1 ) + { + processNode(self); + } + } + + xmlFree (version); + xmlFreeDoc (doc); +} + + +static void +biji_tomboy_reader_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiTomboyReader *self = BIJI_TOMBOY_READER (object); + + + switch (property_id) + { + case PROP_SRC_PATH: + self->priv->path = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + + +static void +biji_tomboy_reader_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiTomboyReader *self = BIJI_TOMBOY_READER (object); + + switch (property_id) + { + case PROP_SRC_PATH: + g_value_set_string (value, self->priv->path); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + + + +static void +biji_tomboy_reader_finalize (GObject *object) +{ + BijiTomboyReader *self; + BijiTomboyReaderPrivate *priv; + + g_return_if_fail (BIJI_IS_TOMBOY_READER (object)); + + self = BIJI_TOMBOY_READER (object); + priv = self->priv; + + g_string_free (priv->raw_text, TRUE); + g_string_free (priv->html, TRUE); + + + xmlFreeTextReader (priv->r); + xmlFreeTextReader (priv->inner); + + + G_OBJECT_CLASS (biji_tomboy_reader_parent_class)->finalize (object); +} + + +static void +biji_tomboy_reader_init (BijiTomboyReader *self) +{ + BijiTomboyReaderPrivate *priv; + + priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE + (self, BIJI_TYPE_TOMBOY_READER, BijiTomboyReaderPrivate); + + priv->raw_text = g_string_new (""); + priv->html = g_string_new (""); + + priv->set = biji_info_set_new (); +} + + + +static void +biji_tomboy_reader_class_init (BijiTomboyReaderClass *klass) +{ + GObjectClass *g_object_class; + + g_object_class = G_OBJECT_CLASS (klass); + + g_object_class->finalize = biji_tomboy_reader_finalize; + g_object_class->constructed = biji_tomboy_reader_constructed; + g_object_class->set_property = biji_tomboy_reader_set_property; + g_object_class->get_property = biji_tomboy_reader_get_property; + + properties[PROP_SRC_PATH] = + g_param_spec_string ("path", + "External note path", + "A Tomboy-formated xml note to import", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, TOMBOY_READER_PROP, properties); + + + g_type_class_add_private ((gpointer)klass, sizeof (BijiTomboyReaderPrivate)); +} + + +static BijiTomboyReader * +biji_tomboy_reader_new (gchar *source) +{ + return g_object_new (BIJI_TYPE_TOMBOY_READER, "path", source, NULL); +} + + + +gboolean +biji_tomboy_reader_read (gchar *source, + GError **error, + BijiInfoSet **set, + gchar **html, + GList **collections) +{ + BijiTomboyReader *self; + BijiTomboyReaderPrivate *priv; + gchar *html_revamped; + + self = biji_tomboy_reader_new (source); + priv = self->priv; + + html_revamped = biji_str_mass_replace (priv->html->str, + "\n", "
", + NULL); + + *error = priv->error; + *set = priv->set; + *html = html_revamped; + + g_object_unref (self); + return TRUE; +} diff -Nru bijiben-3.8.4/src/libbiji/deserializer/biji-tomboy-reader.h bijiben-3.10.2/src/libbiji/deserializer/biji-tomboy-reader.h --- bijiben-3.8.4/src/libbiji/deserializer/biji-tomboy-reader.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/deserializer/biji-tomboy-reader.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * biji-tomboy-reader.h + * + * Copyright 2013 Pierre-Yves Luyten + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BIJI_TOMBOY_READER_H_ +#define BIJI_TOMBOY_READER_H_ 1 + +#include + +G_BEGIN_DECLS + + +#define BIJI_TYPE_TOMBOY_READER (biji_tomboy_reader_get_type ()) +#define BIJI_TOMBOY_READER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_TOMBOY_READER, BijiTomboyReader)) +#define BIJI_TOMBOY_READER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_TOMBOY_READER, BijiTomboyReaderClass)) +#define BIJI_IS_TOMBOY_READER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_TOMBOY_READER)) +#define BIJI_IS_TOMBOY_READER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_TOMBOY_READER)) +#define BIJI_TOMBOY_READER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_TOMBOY_READER, BijiTomboyReaderClass)) + +typedef struct BijiTomboyReader_ BijiTomboyReader; +typedef struct BijiTomboyReaderClass_ BijiTomboyReaderClass; +typedef struct BijiTomboyReaderPrivate_ BijiTomboyReaderPrivate; + +struct BijiTomboyReader_ +{ + GObject parent; + BijiTomboyReaderPrivate *priv; +}; + +struct BijiTomboyReaderClass_ +{ + GObjectClass parent_class; +}; + + +GType biji_tomboy_reader_get_type (void); + + +gboolean biji_tomboy_reader_read (gchar *source, + GError **result, + BijiInfoSet **set, + gchar **html, + GList **collections); + + +G_END_DECLS + +#endif /* BIJI_TOMBOY_READER_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/editor/biji-webkit-editor.c bijiben-3.10.2/src/libbiji/editor/biji-webkit-editor.c --- bijiben-3.8.4/src/libbiji/editor/biji-webkit-editor.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/editor/biji-webkit-editor.c 2013-11-11 20:52:06.000000000 +0000 @@ -233,7 +233,11 @@ /* priv->spell_check is ref by webkit. probably not to unref */ g_object_unref (priv->sel); - g_signal_handler_disconnect (priv->note, priv->color_changed); + + + if (priv->note != NULL) + g_signal_handler_disconnect (priv->note, priv->color_changed); + G_OBJECT_CLASS (biji_webkit_editor_parent_class)->finalize (object); } @@ -246,6 +250,7 @@ WebKitDOMDocument *dom; WebKitDOMHTMLElement *elem; gchar *html, *text; + gchar **rows; /* First html serializing */ dom = webkit_web_view_get_dom_document (view); @@ -253,39 +258,38 @@ html = webkit_dom_html_element_get_outer_html (elem); text = webkit_dom_html_element_get_inner_text (elem); - biji_note_obj_set_html_content (note, html); + biji_note_obj_set_html (note, html); biji_note_obj_set_raw_text (note, text); - /* Now tries to update title if new note - * and several rows */ - if (!biji_note_obj_title_survives (note)) - { - gchar **rows; + /* Now tries to update title */ - rows = g_strsplit (text, "\n", 2); + rows = g_strsplit (text, "\n", 2); - /* if we have a line feed, we have a proper title */ - /* this is equivalent to g_strv_length (rows) > 1 */ - if (rows && rows[0] && rows[1]) - { - char *title; - char *unique_title; + /* if we have a line feed, we have a proper title */ + /* this is equivalent to g_strv_length (rows) > 1 */ + + if (rows && rows[0] && rows[1]) + { + gchar *title; + gchar *unique_title; + + title = rows[0]; - title = rows[0]; - unique_title = biji_note_book_get_unique_title (biji_note_obj_get_note_book (note), + if (g_strcmp0 (title, biji_item_get_title (BIJI_ITEM (note))) != 0) + { + unique_title = biji_note_book_get_unique_title (biji_item_get_book (BIJI_ITEM (note)), title); biji_note_obj_set_title (note, unique_title); g_free (unique_title); } - - g_strfreev (rows); } + g_strfreev (rows); g_free (html); g_free (text); - biji_note_obj_set_last_change_date_now (note); + biji_note_obj_set_mtime (note, g_get_real_time () / G_USEC_PER_SEC); biji_note_obj_save_note (note); } @@ -311,7 +315,14 @@ view = WEBKIT_WEB_VIEW (self); priv = self->priv; + + /* Do not segfault at finalize + * if the note died */ + g_object_add_weak_pointer (G_OBJECT (priv->note), (gpointer*) &priv->note); + + body = biji_note_obj_get_html (priv->note); + if (!body) body = ""; diff -Nru bijiben-3.8.4/src/libbiji/libbiji.h bijiben-3.10.2/src/libbiji/libbiji.h --- bijiben-3.8.4/src/libbiji/libbiji.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/libbiji.h 2013-11-11 20:52:06.000000000 +0000 @@ -20,7 +20,10 @@ #define _LIBBIJI_INSIDE_H + +#include "biji-collection.h" #include "biji-date-time.h" +#include "biji-item.h" #include "biji-marshalers.h" #include "biji-note-book.h" #include "biji-note-obj.h" @@ -29,6 +32,8 @@ #include "biji-zeitgeist.h" #include "deserializer/biji-lazy-deserializer.h" #include "editor/biji-webkit-editor.h" +#include "provider/biji-provider.h" + #undef _LIBBIJI_INSIDE_H #endif /*_LIB_BIJI_H*/ diff -Nru bijiben-3.8.4/src/libbiji/Makefile.am bijiben-3.10.2/src/libbiji/Makefile.am --- bijiben-3.8.4/src/libbiji/Makefile.am 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/Makefile.am 2013-11-11 20:52:06.000000000 +0000 @@ -9,8 +9,18 @@ libbiji_la_SOURCES = \ $(libbiji_la_built_sources) \ libbiji.h \ + biji-collection.c \ + biji-collection.h \ biji-date-time.c \ biji-date-time.h \ + biji-error.c \ + biji-error.h \ + biji-info-set.c \ + biji-info-set.h \ + biji-item.c \ + biji-item.h \ + biji-local-note.c \ + biji-local-note.h \ biji-note-id.c \ biji-note-id.h \ biji-note-obj.c \ @@ -27,12 +37,24 @@ biji-zeitgeist.h \ deserializer/biji-lazy-deserializer.c \ deserializer/biji-lazy-deserializer.h \ + deserializer/biji-tomboy-reader.c \ + deserializer/biji-tomboy-reader.h \ editor/biji-editor-selection.c \ editor/biji-editor-selection.h \ editor/biji-editor-utils.c \ editor/biji-editor-utils.h \ editor/biji-webkit-editor.c \ editor/biji-webkit-editor.h \ + provider/biji-import-provider.c \ + provider/biji-import-provider.h \ + provider/biji-local-provider.c \ + provider/biji-local-provider.h \ + provider/biji-own-cloud-note.c \ + provider/biji-own-cloud-note.h \ + provider/biji-own-cloud-provider.c \ + provider/biji-own-cloud-provider.h \ + provider/biji-provider.c \ + provider/biji-provider.h \ serializer/biji-lazy-serializer.c \ serializer/biji-lazy-serializer.h diff -Nru bijiben-3.8.4/src/libbiji/Makefile.in bijiben-3.10.2/src/libbiji/Makefile.in --- bijiben-3.8.4/src/libbiji/Makefile.in 2013-08-18 23:29:47.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -96,12 +96,16 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) libbiji_la_LIBADD = am__objects_1 = biji-marshalers.lo -am_libbiji_la_OBJECTS = $(am__objects_1) biji-date-time.lo \ - biji-note-id.lo biji-note-obj.lo biji-note-book.lo \ - biji-string.lo biji-timeout.lo biji-tracker.lo \ - biji-zeitgeist.lo biji-lazy-deserializer.lo \ - biji-editor-selection.lo biji-editor-utils.lo \ - biji-webkit-editor.lo biji-lazy-serializer.lo +am_libbiji_la_OBJECTS = $(am__objects_1) biji-collection.lo \ + biji-date-time.lo biji-error.lo biji-info-set.lo biji-item.lo \ + biji-local-note.lo biji-note-id.lo biji-note-obj.lo \ + biji-note-book.lo biji-string.lo biji-timeout.lo \ + biji-tracker.lo biji-zeitgeist.lo biji-lazy-deserializer.lo \ + biji-tomboy-reader.lo biji-editor-selection.lo \ + biji-editor-utils.lo biji-webkit-editor.lo \ + biji-import-provider.lo biji-local-provider.lo \ + biji-own-cloud-note.lo biji-own-cloud-provider.lo \ + biji-provider.lo biji-lazy-serializer.lo libbiji_la_OBJECTS = $(am_libbiji_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -271,6 +275,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -341,8 +346,18 @@ libbiji_la_SOURCES = \ $(libbiji_la_built_sources) \ libbiji.h \ + biji-collection.c \ + biji-collection.h \ biji-date-time.c \ biji-date-time.h \ + biji-error.c \ + biji-error.h \ + biji-info-set.c \ + biji-info-set.h \ + biji-item.c \ + biji-item.h \ + biji-local-note.c \ + biji-local-note.h \ biji-note-id.c \ biji-note-id.h \ biji-note-obj.c \ @@ -359,12 +374,24 @@ biji-zeitgeist.h \ deserializer/biji-lazy-deserializer.c \ deserializer/biji-lazy-deserializer.h \ + deserializer/biji-tomboy-reader.c \ + deserializer/biji-tomboy-reader.h \ editor/biji-editor-selection.c \ editor/biji-editor-selection.h \ editor/biji-editor-utils.c \ editor/biji-editor-utils.h \ editor/biji-webkit-editor.c \ editor/biji-webkit-editor.h \ + provider/biji-import-provider.c \ + provider/biji-import-provider.h \ + provider/biji-local-provider.c \ + provider/biji-local-provider.h \ + provider/biji-own-cloud-note.c \ + provider/biji-own-cloud-note.h \ + provider/biji-own-cloud-provider.c \ + provider/biji-own-cloud-provider.h \ + provider/biji-provider.c \ + provider/biji-provider.h \ serializer/biji-lazy-serializer.c \ serializer/biji-lazy-serializer.h @@ -409,9 +436,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libbiji/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libbiji/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/libbiji/Makefile + $(AUTOMAKE) --gnu src/libbiji/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -451,17 +478,28 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-collection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-date-time.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-editor-selection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-editor-utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-import-provider.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-info-set.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-item.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-lazy-deserializer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-lazy-serializer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-local-note.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-local-provider.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-marshalers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-note-book.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-note-id.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-note-obj.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-own-cloud-note.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-own-cloud-provider.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-provider.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-string.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-timeout.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-tomboy-reader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-tracker.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-webkit-editor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biji-zeitgeist.Plo@am__quote@ @@ -471,14 +509,14 @@ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -494,6 +532,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-lazy-deserializer.lo `test -f 'deserializer/biji-lazy-deserializer.c' || echo '$(srcdir)/'`deserializer/biji-lazy-deserializer.c +biji-tomboy-reader.lo: deserializer/biji-tomboy-reader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-tomboy-reader.lo -MD -MP -MF $(DEPDIR)/biji-tomboy-reader.Tpo -c -o biji-tomboy-reader.lo `test -f 'deserializer/biji-tomboy-reader.c' || echo '$(srcdir)/'`deserializer/biji-tomboy-reader.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-tomboy-reader.Tpo $(DEPDIR)/biji-tomboy-reader.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deserializer/biji-tomboy-reader.c' object='biji-tomboy-reader.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-tomboy-reader.lo `test -f 'deserializer/biji-tomboy-reader.c' || echo '$(srcdir)/'`deserializer/biji-tomboy-reader.c + biji-editor-selection.lo: editor/biji-editor-selection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-editor-selection.lo -MD -MP -MF $(DEPDIR)/biji-editor-selection.Tpo -c -o biji-editor-selection.lo `test -f 'editor/biji-editor-selection.c' || echo '$(srcdir)/'`editor/biji-editor-selection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-editor-selection.Tpo $(DEPDIR)/biji-editor-selection.Plo @@ -515,6 +560,41 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-webkit-editor.lo `test -f 'editor/biji-webkit-editor.c' || echo '$(srcdir)/'`editor/biji-webkit-editor.c +biji-import-provider.lo: provider/biji-import-provider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-import-provider.lo -MD -MP -MF $(DEPDIR)/biji-import-provider.Tpo -c -o biji-import-provider.lo `test -f 'provider/biji-import-provider.c' || echo '$(srcdir)/'`provider/biji-import-provider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-import-provider.Tpo $(DEPDIR)/biji-import-provider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='provider/biji-import-provider.c' object='biji-import-provider.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-import-provider.lo `test -f 'provider/biji-import-provider.c' || echo '$(srcdir)/'`provider/biji-import-provider.c + +biji-local-provider.lo: provider/biji-local-provider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-local-provider.lo -MD -MP -MF $(DEPDIR)/biji-local-provider.Tpo -c -o biji-local-provider.lo `test -f 'provider/biji-local-provider.c' || echo '$(srcdir)/'`provider/biji-local-provider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-local-provider.Tpo $(DEPDIR)/biji-local-provider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='provider/biji-local-provider.c' object='biji-local-provider.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-local-provider.lo `test -f 'provider/biji-local-provider.c' || echo '$(srcdir)/'`provider/biji-local-provider.c + +biji-own-cloud-note.lo: provider/biji-own-cloud-note.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-own-cloud-note.lo -MD -MP -MF $(DEPDIR)/biji-own-cloud-note.Tpo -c -o biji-own-cloud-note.lo `test -f 'provider/biji-own-cloud-note.c' || echo '$(srcdir)/'`provider/biji-own-cloud-note.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-own-cloud-note.Tpo $(DEPDIR)/biji-own-cloud-note.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='provider/biji-own-cloud-note.c' object='biji-own-cloud-note.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-own-cloud-note.lo `test -f 'provider/biji-own-cloud-note.c' || echo '$(srcdir)/'`provider/biji-own-cloud-note.c + +biji-own-cloud-provider.lo: provider/biji-own-cloud-provider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-own-cloud-provider.lo -MD -MP -MF $(DEPDIR)/biji-own-cloud-provider.Tpo -c -o biji-own-cloud-provider.lo `test -f 'provider/biji-own-cloud-provider.c' || echo '$(srcdir)/'`provider/biji-own-cloud-provider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-own-cloud-provider.Tpo $(DEPDIR)/biji-own-cloud-provider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='provider/biji-own-cloud-provider.c' object='biji-own-cloud-provider.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-own-cloud-provider.lo `test -f 'provider/biji-own-cloud-provider.c' || echo '$(srcdir)/'`provider/biji-own-cloud-provider.c + +biji-provider.lo: provider/biji-provider.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-provider.lo -MD -MP -MF $(DEPDIR)/biji-provider.Tpo -c -o biji-provider.lo `test -f 'provider/biji-provider.c' || echo '$(srcdir)/'`provider/biji-provider.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-provider.Tpo $(DEPDIR)/biji-provider.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='provider/biji-provider.c' object='biji-provider.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o biji-provider.lo `test -f 'provider/biji-provider.c' || echo '$(srcdir)/'`provider/biji-provider.c + biji-lazy-serializer.lo: serializer/biji-lazy-serializer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT biji-lazy-serializer.lo -MD -MP -MF $(DEPDIR)/biji-lazy-serializer.Tpo -c -o biji-lazy-serializer.lo `test -f 'serializer/biji-lazy-serializer.c' || echo '$(srcdir)/'`serializer/biji-lazy-serializer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/biji-lazy-serializer.Tpo $(DEPDIR)/biji-lazy-serializer.Plo diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-import-provider.c bijiben-3.10.2/src/libbiji/provider/biji-import-provider.c --- bijiben-3.8.4/src/libbiji/provider/biji-import-provider.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-import-provider.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,369 @@ +/* + * biji-import-provider.c + * + * Copyright 2013 Pierre-Yves Luyten + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + + +/* + * TODO : re-implement collections + * TODO : re-implement old imports preserving + */ + +#include "biji-import-provider.h" +#include "../deserializer/biji-tomboy-reader.h" + + +/* Properties */ +enum { + PROP_0, + PROP_URI, + PROP_TARGET, + IMPORT_PROV_PROP +}; + +static GParamSpec *properties[IMPORT_PROV_PROP] = { NULL, }; + + + + +struct BijiImportProviderPrivate_ +{ + BijiProviderInfo info; + gchar *uri; + gchar *target; // the provider to import to + GHashTable *items; // same as book, notes key=path, coll key = name. +}; + + + + + +static void biji_import_provider_finalize (GObject *object); + +G_DEFINE_TYPE (BijiImportProvider, biji_import_provider, BIJI_TYPE_PROVIDER) + + +#define ATTRIBUTES_FOR_NOTEBOOK "standard::content-type,standard::name" + + + + + +static BijiNoteObj * +instanciate_note (BijiImportProvider *self, GFileInfo *info, GFile *container) +{ + BijiNoteObj *retval = NULL; + const gchar *name; + gchar *path; + GdkRGBA *color; + BijiNoteBook *book; + + + retval = NULL; + book = biji_provider_get_book (BIJI_PROVIDER (self)); + + /* First make sure it's a note */ + name = g_file_info_get_name (info); + if (!g_str_has_suffix (name, ".note")) + return NULL; + + path = g_build_filename (g_file_get_path (container), name, NULL); + + + /* Deserialize it */ + + GError *error = NULL; + BijiInfoSet *set; + gchar *html = NULL; + GList *collections = NULL; + + + biji_tomboy_reader_read (path, + &error, + &set, + &html, + &collections); + + if (error != NULL) + { + g_warning ("Could not import %s - %s", path, error->message); + g_free (path); + g_error_free (error); + return NULL; + } + + + g_debug ("note %s:%s \n%s\n%s", path, set->title, set->content, html); + + + + /* Create the note w/ default color */ + color = g_new0 (GdkRGBA, 1); + biji_note_book_get_default_color (book, color); + retval = biji_note_book_note_new_full (book, + self->priv->target, + g_strdup (g_file_info_get_name (info)), + set, + html, + color); + + BIJI_NOTE_OBJ_GET_CLASS (retval)->save_note (retval); + + return retval; +} + + + +static void +release_enum_cb (GObject *source, GAsyncResult *res, gpointer user_data) +{ + g_file_enumerator_close_finish (G_FILE_ENUMERATOR (source), res, NULL); + g_object_unref (source); +} + + + +/* Some notes might have been added previously */ +static void +go_through_notes_cb (GObject *object, GAsyncResult *res, gpointer data) +{ + GFileEnumerator *enumerator; + GList *l, *notes_info; + GFile *container; + BijiImportProvider *self; + + + enumerator = G_FILE_ENUMERATOR (object); + self = data; + + + container = g_file_enumerator_get_container (enumerator); + notes_info = g_file_enumerator_next_files_finish (enumerator, res, NULL); + g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, + release_enum_cb, self); + + + + /* Get the GList of notes and load them */ + for ( l=notes_info; l !=NULL; l = l->next) + { + GFileInfo *info; + BijiNoteObj *iter; + + info = G_FILE_INFO (l->data); + iter = instanciate_note ( + self, + info, + container); + + if (iter != NULL) + { + g_hash_table_insert (self->priv->items, + (gpointer) biji_item_get_uuid (BIJI_ITEM (iter)), + (gpointer) iter); + } + } + + g_list_free_full (notes_info, g_object_unref); + BIJI_PROVIDER_GET_CLASS (self)->notify_loaded (BIJI_PROVIDER (self), + g_hash_table_get_values (self->priv->items)); + + + + + /* Goodbye */ + g_object_unref (self); +} + + + + +static void +list_notes_to_copy (GObject *src_obj, GAsyncResult *res, gpointer data) +{ + GFileEnumerator *enumerator; + GError *error; + BijiImportProvider *self; + + self = data; + error = NULL; + enumerator = g_file_enumerate_children_finish (G_FILE (src_obj), res, &error); + + if (error) + { + g_warning ("Enumerator failed : %s", error->message); + g_error_free (error); + g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, release_enum_cb, self); + } + + else + { + g_file_enumerator_next_files_async (enumerator, G_MAXINT, G_PRIORITY_DEFAULT, NULL, + go_through_notes_cb, self); + } +} + + + +static void +biji_import_provider_constructed (GObject *object) +{ + BijiImportProvider *self; + BijiImportProviderPrivate *priv; + GFile *to_import; + + + self = BIJI_IMPORT_PROVIDER (object); + priv = self->priv; + + + priv->info.unique_id = NULL; + priv->info.datasource = NULL; + priv->info.name = "import-provider"; + priv->info.icon = NULL; + priv->info.domain = NULL; + priv->info.user = NULL; + + + to_import = g_file_new_for_path (self->priv->uri); + + g_file_enumerate_children_async (to_import, ATTRIBUTES_FOR_NOTEBOOK, + G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, + NULL, list_notes_to_copy, self); + + g_object_unref (to_import); +} + + +const BijiProviderInfo * +biji_import_provider_get_info (BijiProvider *self) +{ + return & (BIJI_IMPORT_PROVIDER (self)->priv->info); +} + + +static void +biji_import_provider_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiImportProvider *self = BIJI_IMPORT_PROVIDER (object); + + + switch (property_id) + { + case PROP_URI: + self->priv->uri = g_value_dup_string (value); + break; + case PROP_TARGET: + self->priv->target = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +biji_import_provider_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiImportProvider *self = BIJI_IMPORT_PROVIDER (object); + + switch (property_id) + { + case PROP_URI: + g_value_set_string (value, self->priv->uri); + break; + case PROP_TARGET: + g_value_set_string (value, self->priv->target); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +biji_import_provider_class_init (BijiImportProviderClass *klass) +{ + GObjectClass *g_object_class; + BijiProviderClass *provider_class; + + g_object_class = G_OBJECT_CLASS (klass); + provider_class = BIJI_PROVIDER_CLASS (klass); + + g_object_class->set_property = biji_import_provider_set_property; + g_object_class->get_property = biji_import_provider_get_property; + g_object_class->finalize = biji_import_provider_finalize; + g_object_class->constructed = biji_import_provider_constructed; + + provider_class->get_info = biji_import_provider_get_info; + + properties[PROP_URI] = + g_param_spec_string ("uri", + "The import path", + "The folder to be imported", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + + properties[PROP_TARGET] = + g_param_spec_string ("target", + "The target storage", + "Target provider to import to", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, IMPORT_PROV_PROP, properties); + + + g_type_class_add_private ((gpointer)klass, sizeof (BijiImportProviderPrivate)); +} + + +static void +biji_import_provider_finalize (GObject *object) +{ + G_OBJECT_CLASS (biji_import_provider_parent_class)->finalize (object); +} + + +static void +biji_import_provider_init (BijiImportProvider *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_IMPORT_PROVIDER, BijiImportProviderPrivate); + self->priv->items = g_hash_table_new (g_str_hash, g_str_equal); +} + + +BijiProvider * +biji_import_provider_new (BijiNoteBook *b, gchar *target_provider, gchar *uri) +{ + return g_object_new (BIJI_TYPE_IMPORT_PROVIDER, + "book", b, + "target", target_provider, + "uri", uri, + NULL); +} + diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-import-provider.h bijiben-3.10.2/src/libbiji/provider/biji-import-provider.h --- bijiben-3.8.4/src/libbiji/provider/biji-import-provider.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-import-provider.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,75 @@ +/* + * biji-import-provider.h + * + * Copyright 2013 Pierre-Yves Luyten + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* A special case of providers : importing data. + * As the provider type is close enough + * use this : all import func should be ported to use this. + * + * Once the ImportProvider does it's job, + * it kills its own ref. + */ + +/* As of today this is the direct class to be used by notebook. + * Later on book might use different importProviders sub-classes */ + +#ifndef BIJI_IMPORT_PROVIDER_H_ +#define BIJI_IMPORT_PROVIDER_H_ 1 + + +#include "../biji-note-book.h" +#include "biji-provider.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_IMPORT_PROVIDER (biji_import_provider_get_type ()) +#define BIJI_IMPORT_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_IMPORT_PROVIDER, BijiImportProvider)) +#define BIJI_IMPORT_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_IMPORT_PROVIDER, BijiImportProviderClass)) +#define BIJI_IS_IMPORT_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_IMPORT_PROVIDER)) +#define BIJI_IS_IMPORT_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_IMPORT_PROVIDER)) +#define BIJI_IMPORT_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_IMPORT_PROVIDER, BijiImportProviderClass)) + +typedef struct BijiImportProvider_ BijiImportProvider; +typedef struct BijiImportProviderClass_ BijiImportProviderClass; +typedef struct BijiImportProviderPrivate_ BijiImportProviderPrivate; + +struct BijiImportProvider_ +{ + BijiProvider parent; + BijiImportProviderPrivate *priv; +}; + +struct BijiImportProviderClass_ +{ + BijiProviderClass parent_class; +}; + + +GType biji_import_provider_get_type (void); + + +BijiProvider *biji_import_provider_new (BijiNoteBook *book, + gchar *target_provider, + gchar *uri); + + +G_END_DECLS + +#endif /* BIJI_IMPORT_PROVIDER_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-local-provider.c bijiben-3.10.2/src/libbiji/provider/biji-local-provider.c --- bijiben-3.8.4/src/libbiji/provider/biji-local-provider.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-local-provider.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,431 @@ +/* + * biji-local-provider.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* + * as of today, local provider really go through every single + * file at startup : no cache. + * We could as well play with metadata mtime + * and read file only when really needed + */ + + +#include "biji-local-note.h" +#include "biji-local-provider.h" + + + +/* + * Items are both notes and collections + * + */ + +struct BijiLocalProviderPrivate_ +{ + BijiProviderInfo info; + + GFile *location; + GHashTable *items; + GCancellable *load_cancellable; +}; + + +G_DEFINE_TYPE (BijiLocalProvider, biji_local_provider, BIJI_TYPE_PROVIDER) + + +/* Properties */ +enum { + PROP_0, + PROP_LOCATION, + BIJI_LOCAL_PROP +}; + + + +static GParamSpec *properties[BIJI_LOCAL_PROP] = { NULL, }; + + +#define ATTRIBUTES_FOR_NOTEBOOK "standard::content-type,standard::name" + + +static void +load_location_error (GFile *location, + GError *error) +{ + gchar *path; + + + path = g_file_get_path (location); + g_printerr ("Unable to load location %s: %s", path, error->message); + g_free (path); + g_error_free (error); +} + + +static void +release_enum_cb (GObject *source, GAsyncResult *res, gpointer user_data) +{ + g_file_enumerator_close_finish (G_FILE_ENUMERATOR (source), + res, + NULL); + g_object_unref (source); +} + + +static void +create_collection_if_needed (gpointer key, + gpointer value, + gpointer user_data) +{ + BijiLocalProvider *self; + BijiInfoSet *set; + BijiCollection *collection; + BijiNoteBook *book; + + + self = user_data; + set = value; + collection = g_hash_table_lookup (self->priv->items, key); + book = biji_provider_get_book (BIJI_PROVIDER (self)); + + if (!collection) + { + collection = biji_collection_new (G_OBJECT (book), key, set->title, set->mtime); + + g_hash_table_insert (self->priv->items, + g_strdup (key), + collection); + } + + /* InfoSet are freed per g_hash_table_destroy thanks to below caller */ +} + + +static void +local_provider_finish (GHashTable *collections, + gpointer user_data) +{ + BijiLocalProvider *self; + GList *list; + + + self = user_data; + g_hash_table_foreach (collections, create_collection_if_needed, user_data); + g_hash_table_destroy (collections); + + + /* Now simply provide data to controller */ + list = g_hash_table_get_values (self->priv->items); + BIJI_PROVIDER_GET_CLASS (self)->notify_loaded (BIJI_PROVIDER (self), list); + g_list_free (list); +} + + +static void +enumerate_next_files_ready_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + GFileEnumerator *enumerator; + BijiLocalProvider *self; + GList *files, *l; + GError *error; + gchar *base_path; + + + enumerator = G_FILE_ENUMERATOR (source); + self = user_data; + error = NULL; + files = g_file_enumerator_next_files_finish (enumerator, res, &error); + g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, + release_enum_cb, NULL); + + if (error != NULL) + { + load_location_error (g_file_enumerator_get_container (enumerator), error); + return; + } + + + base_path = g_file_get_path (self->priv->location); + + for (l = files; l != NULL; l = l->next) + { + GFileInfo *file; + const gchar *name; + BijiNoteObj *note; + BijiInfoSet info; + + file = l->data; + name = g_file_info_get_name (file); + + if (!g_str_has_suffix (name, ".note")) + continue; + + info.url = g_build_filename (base_path, name, NULL); + info.title = ""; + info.content = ""; + info.mtime = 0; + + + note = biji_local_note_new_from_info (BIJI_PROVIDER (self), + biji_provider_get_book (BIJI_PROVIDER (self)), + &info); + biji_lazy_deserialize (note); + + + g_hash_table_replace (self->priv->items, + info.url, note); + + } + + g_free (base_path); + g_list_free_full (files, g_object_unref); + + /* Now we have all notes, + * load the collections and we're good to notify loading done */ + biji_get_all_collections_async (biji_provider_get_book (BIJI_PROVIDER (self)), + local_provider_finish, + self); +} + +static void +enumerate_children_ready_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + GFile *location; + GFileEnumerator *enumerator; + GError *error; + BijiLocalProvider *self; + + + location = G_FILE (source); + self = user_data; + error = NULL; + enumerator = g_file_enumerate_children_finish (location, + res, &error); + + if (error != NULL) + { + load_location_error (location, error); + return; + } + + + g_file_enumerator_next_files_async (enumerator, G_MAXINT, + G_PRIORITY_DEFAULT, + self->priv->load_cancellable, + enumerate_next_files_ready_cb, + self); +} + + + + + +static void +load_from_location (BijiLocalProvider *self) +{ + g_file_enumerate_children_async (self->priv->location, + ATTRIBUTES_FOR_NOTEBOOK, 0, + G_PRIORITY_DEFAULT, + self->priv->load_cancellable, + enumerate_children_ready_cb, + self); +} + + +static void +biji_local_provider_constructed (GObject *object) +{ + BijiLocalProvider *self; + + g_return_if_fail (BIJI_IS_LOCAL_PROVIDER (object)); + self = BIJI_LOCAL_PROVIDER (object); + + load_from_location (self); +} + + +static void +biji_local_provider_finalize (GObject *object) +{ + BijiLocalProvider *self; + + g_return_if_fail (BIJI_IS_LOCAL_PROVIDER (object)); + + self = BIJI_LOCAL_PROVIDER (object); + + if (self->priv->load_cancellable) + g_cancellable_cancel (self->priv->load_cancellable); + + g_object_unref (self->priv->load_cancellable); + g_object_unref (self->priv->info.icon); + + G_OBJECT_CLASS (biji_local_provider_parent_class)->finalize (object); +} + + +static void +biji_local_provider_init (BijiLocalProvider *self) +{ + BijiLocalProviderPrivate *priv; + + priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_LOCAL_PROVIDER, BijiLocalProviderPrivate); + priv->load_cancellable = g_cancellable_new (); + priv->items = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); + + /* Info */ + priv->info.unique_id = "local"; + priv->info.datasource = g_strdup_printf ("local:%s", + priv->info.unique_id); + priv->info.name = _("Local storage"); + priv->info.icon = + gtk_image_new_from_icon_name ("user-home", GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (priv->info.icon), 48); + g_object_ref (priv->info.icon); + +} + + +static BijiNoteObj * +local_prov_create_note_full (BijiProvider *provider, + gchar *suggested_path, + BijiInfoSet *info, + gchar *html, + GdkRGBA *color) +{ + BijiLocalProvider *self; + BijiNoteObj *retval; + gchar *folder; + + g_return_val_if_fail (BIJI_IS_LOCAL_PROVIDER (provider), NULL); + + self = BIJI_LOCAL_PROVIDER (provider); + retval = NULL; + + /* PATH */ + folder = g_file_get_path (self->priv->location); + info->url = g_build_filename (folder, suggested_path, NULL); + g_free (folder); + + /* RAW NOTE */ + retval = biji_local_note_new_from_info (provider, + biji_provider_get_book (provider), + info); + + /* EXTRAS */ + biji_note_obj_set_html (retval, html); + biji_note_obj_set_rgba (retval, color); + + + return retval; +} + + +static void +biji_local_provider_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiLocalProvider *self = BIJI_LOCAL_PROVIDER (object); + + + switch (property_id) + { + case PROP_LOCATION: + self->priv->location = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +biji_local_provider_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiLocalProvider *self = BIJI_LOCAL_PROVIDER (object); + + switch (property_id) + { + case PROP_LOCATION: + g_value_set_object (value, self->priv->location); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +const BijiProviderInfo * +local_provider_get_info (BijiProvider *provider) +{ + BijiLocalProvider *self; + + self = BIJI_LOCAL_PROVIDER (provider); + return &(self->priv->info); +} + + +static void +biji_local_provider_class_init (BijiLocalProviderClass *klass) +{ + GObjectClass *g_object_class; + BijiProviderClass *provider_class; + + g_object_class = G_OBJECT_CLASS (klass); + provider_class = BIJI_PROVIDER_CLASS (klass); + + g_object_class->constructed = biji_local_provider_constructed; + g_object_class->finalize = biji_local_provider_finalize; + g_object_class->get_property = biji_local_provider_get_property; + g_object_class->set_property = biji_local_provider_set_property; + + provider_class->get_info = local_provider_get_info; + // provider_class->create_new_note = local_prov_create_new_note; + provider_class->create_note_full = local_prov_create_note_full; + + properties[PROP_LOCATION] = + g_param_spec_object ("location", + "The book location", + "The location where the notes are loaded and saved", + G_TYPE_FILE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, BIJI_LOCAL_PROP, properties); + + g_type_class_add_private ((gpointer)klass, sizeof (BijiLocalProviderPrivate)); +} + + +BijiProvider * +biji_local_provider_new (BijiNoteBook *book, + GFile *location) +{ + return g_object_new (BIJI_TYPE_LOCAL_PROVIDER, + "book", book, + "location", location, + NULL); +} diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-local-provider.h bijiben-3.10.2/src/libbiji/provider/biji-local-provider.h --- bijiben-3.8.4/src/libbiji/provider/biji-local-provider.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-local-provider.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * biji-local-provider.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + + +#ifndef BIJI_LOCAL_PROVIDER_H_ +#define BIJI_LOCAL_PROVIDER_H_ 1 + + +#include "../biji-note-book.h" +#include "biji-provider.h" + + +G_BEGIN_DECLS + + +#define BIJI_TYPE_LOCAL_PROVIDER (biji_local_provider_get_type ()) +#define BIJI_LOCAL_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_LOCAL_PROVIDER, BijiLocalProvider)) +#define BIJI_LOCAL_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_LOCAL_PROVIDER, BijiLocalProviderClass)) +#define BIJI_IS_LOCAL_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_LOCAL_PROVIDER)) +#define BIJI_IS_LOCAL_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_LOCAL_PROVIDER)) +#define BIJI_LOCAL_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_LOCAL_PROVIDER, BijiLocalProviderClass)) + +typedef struct BijiLocalProvider_ BijiLocalProvider; +typedef struct BijiLocalProviderClass_ BijiLocalProviderClass; +typedef struct BijiLocalProviderPrivate_ BijiLocalProviderPrivate; + + +struct BijiLocalProvider_ +{ + BijiProvider parent; + BijiLocalProviderPrivate *priv; +}; + + +struct BijiLocalProviderClass_ +{ + BijiProviderClass parent_class; +}; + + +GType biji_local_provider_get_type (void); + + +BijiProvider *biji_local_provider_new (BijiNoteBook *book, + GFile *location); + + +G_END_DECLS + +#endif /* BIJI_LOCAL_PROVIDER_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-note.c bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-note.c --- bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-note.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-note.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,408 @@ +/* bjb-own-cloud-note.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include + +#include "biji-info-set.h" +#include "biji-item.h" +#include "biji-own-cloud-note.h" +#include "biji-own-cloud-provider.h" +#include "../biji-timeout.h" +#include "../serializer/biji-lazy-serializer.h" + + + +struct BijiOwnCloudNotePrivate_ +{ + BijiOwnCloudProvider *prov; + BijiNoteID *id; + + BijiTimeout *timeout; + + + GFile *location; + gchar *basename; + GCancellable *cancellable; //TODO cancel write to file +}; + + + +G_DEFINE_TYPE (BijiOwnCloudNote, biji_own_cloud_note, BIJI_TYPE_NOTE_OBJ) + + +/* Better not to keep any cache here + * We just want cache for overview, + * not for actual content + * + * TODO: this means opening a note has to a be async + * which should have been obvious from start */ + +static gchar * +ocloud_note_get_html (BijiNoteObj *note) +{ + BijiOwnCloudNote *self; + gchar *content, *html; + GError *err; + + g_return_val_if_fail (BIJI_IS_OWN_CLOUD_NOTE (note), NULL); + + err = NULL; + self = BIJI_OWN_CLOUD_NOTE (note); + + if (g_file_load_contents (self->priv->location, NULL, &content, 0, NULL, &err)) + { + html = html_from_plain_text (content); + g_free (content); + return html; + } + + + if (err != NULL) + { + g_warning ("%s", err->message); + g_error_free (err); + } + + + return NULL; +} + + +/* We don't put any html to note. We do not need this */ +static void +ocloud_note_set_html (BijiNoteObj *note, + gchar *html) +{ + +} + + +/* we definitely need to be sure we push to tracker + * the exact same mtime as reported by GFile + * the real fix is to set mtime when save happens.. */ + +static void +ocloud_note_ensure_ressource (BijiNoteObj *note) +{ + BijiInfoSet *info; + BijiItem *item; + BijiOwnCloudNote *ocnote; + GFile *file; + GFileInfo *file_info; + const BijiProviderInfo *provider; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_NOTE (note)); + g_return_if_fail (G_IS_FILE (BIJI_OWN_CLOUD_NOTE (note)->priv->location)); + + item = BIJI_ITEM (note); + ocnote = BIJI_OWN_CLOUD_NOTE (note); + file = ocnote->priv->location; + file_info = g_file_query_info (file, "time::modified", G_FILE_QUERY_INFO_NONE, NULL, NULL); + provider = biji_provider_get_info (BIJI_PROVIDER (ocnote->priv->prov)); + + info = biji_info_set_new (); + info->url = (gchar*) biji_item_get_uuid (item); + info->title = (gchar*) biji_item_get_title (item); + info->content = (gchar*) biji_note_obj_get_raw_text (note); + info->mtime = g_file_info_get_attribute_uint64 (file_info, "time::modified"); + info->created = biji_note_obj_get_create_date (note); + info->datasource_urn = g_strdup (provider->datasource); + + biji_tracker_ensure_ressource_from_info (biji_item_get_book (item), + info); +} + + +/* TODO: propagate error if any + * through generic provider -> book */ +void +on_content_replaced (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + + if (!g_file_replace_contents_finish (G_FILE (source_object), + res, + NULL, //etag + &error)) + { + if (error) + { + g_warning ("ownCloud note not saved. %s", error->message); + g_error_free (error); + } + } + + + else + { + biji_note_obj_save_icon (user_data); + ocloud_note_ensure_ressource (user_data); + } +} + + + + + +static void +ocloud_note_save (BijiNoteObj *note) +{ + BijiOwnCloudNote *self; + GString *str; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_NOTE (note)); + self = BIJI_OWN_CLOUD_NOTE (note); + str = g_string_new (biji_note_obj_get_raw_text (note)); + + + /* backup would fail for some reason. + * gfilemove for workaround? */ + g_file_replace_contents_async ( + self->priv->location, + str->str, + str->len, + NULL, // etag + FALSE, //backup + G_FILE_CREATE_REPLACE_DESTINATION, + self->priv->cancellable, + on_content_replaced, + self); + + + g_string_free (str, FALSE); +} + + + + + + + + +/* Rename the file + * when note title change + * Also handle new notes being populated + * the noteID still keep some path, which we will remove */ + +static void +create_new_file (BijiOwnCloudNote *self, const gchar *basename) +{ + GFile *folder; + BijiNoteObj *note; + gchar *key; + + note = BIJI_NOTE_OBJ (self); + folder = biji_own_cloud_provider_get_folder (self->priv->prov); + + /* TODO just free old location before, but check for no mistake */ + + self->priv->location = g_file_get_child (folder, basename); + key = g_strdup_printf ( + "%s/%s", + biji_own_cloud_provider_get_readable_path (self->priv->prov), + basename); + g_object_set (self->priv->id, "path", key, NULL); + + ocloud_note_save (note); + ocloud_note_ensure_ressource (note); + + g_free (key); +} + + +/* When the title is stable, handle io */ +static void +on_timeout (BijiOwnCloudNote *self) +{ + create_new_file (self, self->priv->basename); +} + + +static void +on_title_change (BijiOwnCloudNote *self) +{ + const gchar *new_title; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_NOTE (self)); + + g_free (self->priv->basename); + new_title = biji_note_id_get_title (self->priv->id); + self->priv->basename = g_strdup_printf ("%s.txt", new_title); + + + g_file_delete_async (self->priv->location, + G_PRIORITY_LOW, + NULL, + NULL, + NULL); + + biji_timeout_reset (self->priv->timeout, 3000); +} + + + + +static void +biji_own_cloud_note_finalize (GObject *object) +{ + BijiOwnCloudNote *self; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_NOTE (object)); + + self = BIJI_OWN_CLOUD_NOTE (object); + + g_object_unref (self->priv->cancellable); + g_object_unref (self->priv->timeout); + G_OBJECT_CLASS (biji_own_cloud_note_parent_class)->finalize (object); +} + + +static void +biji_own_cloud_note_constructed (GObject *object) +{ + g_return_if_fail (BIJI_IS_OWN_CLOUD_NOTE (object)); + + G_OBJECT_CLASS (biji_own_cloud_note_parent_class)->constructed (object); +} + + +static void +biji_own_cloud_note_init (BijiOwnCloudNote *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_OWN_CLOUD_NOTE, BijiOwnCloudNotePrivate); + self->priv->cancellable = g_cancellable_new (); + self->priv->id = NULL; + + self->priv->timeout = biji_timeout_new (); + g_signal_connect_swapped (self->priv->timeout, "timeout", + G_CALLBACK (on_timeout), self); +} + + +static gboolean +item_no (BijiItem * item) +{ + return FALSE; +} + + +static gboolean +note_no (BijiNoteObj *item) +{ + return FALSE; +} + + +static gboolean +ocloud_note_delete (BijiNoteObj *note) +{ + BijiOwnCloudNote *ocl; + + ocl = BIJI_OWN_CLOUD_NOTE (note); + return g_file_delete (ocl->priv->location, NULL, NULL); +} + +static gchar * +ocloud_note_get_basename (BijiNoteObj *note) +{ + return BIJI_OWN_CLOUD_NOTE (note)->priv->basename; +} + + +static void +biji_own_cloud_note_class_init (BijiOwnCloudNoteClass *klass) +{ + GObjectClass *g_object_class; + BijiItemClass *item_class; + BijiNoteObjClass *note_class; + + g_object_class = G_OBJECT_CLASS (klass); + item_class = BIJI_ITEM_CLASS (klass); + note_class = BIJI_NOTE_OBJ_CLASS (klass); + + g_object_class->finalize = biji_own_cloud_note_finalize; + g_object_class->constructed = biji_own_cloud_note_constructed; + + item_class->is_collectable = item_no; + item_class->has_color = item_no; + + note_class->get_basename = ocloud_note_get_basename; + note_class->get_html = ocloud_note_get_html; + note_class->set_html = ocloud_note_set_html; + note_class->save_note = ocloud_note_save; + note_class->can_format = note_no; + note_class->archive = ocloud_note_delete; + + g_type_class_add_private ((gpointer)klass, sizeof (BijiOwnCloudNotePrivate)); +} + + +BijiNoteObj *biji_own_cloud_note_new_from_info (BijiOwnCloudProvider *prov, + BijiNoteBook *book, + BijiInfoSet *info) +{ + BijiNoteID *id; + gchar *sane_title; + BijiNoteObj *retval; + BijiOwnCloudNote *ocloud; + + /* First, sanitize the title, assuming no other thread + * mess up with the InfoSet */ + sane_title = biji_str_replace (info->title, ".txt", ""); + g_free (info->title); + info->title = sane_title; + + + /* Hmm, even if the note starts blank we want some path...*/ + + if (info->url == NULL) + { + uuid_t unique; + char out[40]; + + uuid_generate (unique); + uuid_unparse_lower (unique, out); + + info->url = g_strdup_printf ("%s/%s.txt", + biji_own_cloud_provider_get_readable_path (prov), + out); + } + + /* Now actually create the stuff */ + + id = biji_note_id_new_from_info (info); + + retval = g_object_new (BIJI_TYPE_OWN_CLOUD_NOTE, + "note-book", book, + "id", id, + NULL); + + ocloud = BIJI_OWN_CLOUD_NOTE (retval); + ocloud->priv->id = id; + ocloud->priv->prov = prov; + biji_note_obj_set_create_date (retval, info->created); + g_signal_connect_swapped (id, "notify::title", + G_CALLBACK (on_title_change), retval); + + + ocloud->priv->location = g_file_new_for_commandline_arg (info->url); + ocloud->priv->basename = g_file_get_basename (ocloud->priv->location); + + return retval; +} diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-note.h bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-note.h --- bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-note.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-note.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,61 @@ +/* bjb-own-cloud-note.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef BIJI_OWN_CLOUD_NOTE_H_ +#define BIJI_OWN_CLOUD_NOTE_H_ 1 + +#include "../biji-note-obj.h" +#include "../biji-note-id.h" + +#include "biji-own-cloud-provider.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_OWN_CLOUD_NOTE (biji_own_cloud_note_get_type ()) +#define BIJI_OWN_CLOUD_NOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_OWN_CLOUD_NOTE, BijiOwnCloudNote)) +#define BIJI_OWN_CLOUD_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_OWN_CLOUD_NOTE, BijiOwnCloudNoteClass)) +#define BIJI_IS_OWN_CLOUD_NOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_OWN_CLOUD_NOTE)) +#define BIJI_IS_OWN_CLOUD_NOTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_OWN_CLOUD_NOTE)) +#define BIJI_OWN_CLOUD_NOTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_OWN_CLOUD_NOTE, BijiOwnCloudNoteClass)) + +typedef struct BijiOwnCloudNote_ BijiOwnCloudNote; +typedef struct BijiOwnCloudNoteClass_ BijiOwnCloudNoteClass; +typedef struct BijiOwnCloudNotePrivate_ BijiOwnCloudNotePrivate; + +struct BijiOwnCloudNote_ +{ + BijiNoteObj parent; + BijiOwnCloudNotePrivate *priv; +}; + +struct BijiOwnCloudNoteClass_ +{ + BijiNoteObjClass parent_class; +}; + + +GType biji_own_cloud_note_get_type (void); + + +BijiNoteObj *biji_own_cloud_note_new_from_info (BijiOwnCloudProvider *prov, + BijiNoteBook *book, + BijiInfoSet *info); + +G_END_DECLS + +#endif /* BIJI_OWN_CLOUD_NOTE_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-provider.c bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-provider.c --- bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-provider.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-provider.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,836 @@ +/* biji-own-cloud-provider.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* + * ownCloud does not have collections + * neither colors + * nor formating (but markdown could be used or even translated upstream + * on web app + */ + + + + +#include "biji-own-cloud-note.h" +#include "biji-own-cloud-provider.h" + + +#define MINER_ID "gn:ownc:miner:96df9bc8-f542-427f-aa19-77b5a2c9a5f0" + + + +static void get_mount (BijiOwnCloudProvider *self); + +/* Properties */ +enum { + PROP_0, + PROP_GOA_OBJECT, + OCLOUD_PROV_PROP +}; + + +static GParamSpec *properties[OCLOUD_PROV_PROP] = { NULL, }; + +/* + * goa : object, account, providerInfo + * gio : volume, mount, path, folder. folder get_path would return something we don't want. + * data : notes + * startup: tracker, queue + * todo: monitor, cancel monitor + */ + +struct BijiOwnCloudProviderPrivate_ +{ + BijiProviderInfo info; + + GoaObject *object; + GoaAccount *account; + + GHashTable *notes; + GHashTable *tracker; + GQueue *queue; + + GVolume *volume; + GMount *mount; + gchar *path; + GFile *folder; + + GFileMonitor *monitor; + GCancellable *cancel_monitor; +}; + + +G_DEFINE_TYPE (BijiOwnCloudProvider, biji_own_cloud_provider, BIJI_TYPE_PROVIDER) + +typedef struct +{ + GFile *file; + BijiOwnCloudProvider *self; + + BijiInfoSet set; +} BijiOCloudItem; + + +static BijiOCloudItem * +o_cloud_item_new (BijiOwnCloudProvider *self) +{ + BijiOCloudItem *item; + + item = g_slice_new (BijiOCloudItem); + item->file = NULL; + item->self = self; + item->set.content = NULL; + item->set.mtime = 0; + item->set.created= 0; + item->set.title = NULL; + item->set.url = NULL; + + return item; +} + + +static void +o_cloud_item_free (BijiOCloudItem *item) +{ + g_object_unref (item->file); + g_free (item->set.content); + g_free (item->set.url); + g_free (item->set.title); + + g_slice_free (BijiOCloudItem, item); +} + + + + +static void +biji_own_cloud_provider_finalize (GObject *object) +{ + BijiOwnCloudProvider *self; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_PROVIDER (object)); + self = BIJI_OWN_CLOUD_PROVIDER (object); + + if (self->priv->path != NULL) + g_free (self->priv->path); + + g_object_unref (self->priv->account); + g_object_unref (self->priv->object); + g_object_unref (self->priv->info.icon); + + G_OBJECT_CLASS (biji_own_cloud_provider_parent_class)->finalize (object); +} + + + +static void +release_enum_cb (GObject *source, GAsyncResult *res, gpointer user_data) +{ + g_file_enumerator_close_finish (G_FILE_ENUMERATOR (source), + res, + NULL); + g_object_unref (source); +} + + +static void handle_next_item (BijiOwnCloudProvider *self); + + +/* No color, hence we use default color */ + +static void +create_note_from_item (BijiOCloudItem *item) +{ + BijiNoteObj *note; + GdkRGBA color; + BijiNoteBook *book; + + book = biji_provider_get_book (BIJI_PROVIDER (item->self)); + + note = biji_own_cloud_note_new_from_info (item->self, + book, + &item->set); + biji_note_book_get_default_color (book, &color); + biji_note_obj_set_rgba (note, &color); + g_hash_table_replace (item->self->priv->notes, + item->set.url, + note); +} + + +static void +on_content (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + BijiOCloudItem *item; + BijiOwnCloudProvider *self; + GFile *file; + GError *error; + gboolean ok; + gchar *contents; + gsize length; + + file = G_FILE (source); + item = user_data; + self = item->self; + error = NULL; + length = 0; + + ok = g_file_load_contents_finish (file, + res, + &contents, + &length, + NULL, + &error); + + if (!ok) + { + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + o_cloud_item_free (item); + } + + /* + * File has been read, both create the note + * then update db + */ + + else + { + item->set.content = contents; + create_note_from_item (item); + biji_tracker_ensure_ressource_from_info ( + biji_provider_get_book (BIJI_PROVIDER (self)), &item->set); + + // TODO --> ensure_ressource callback.... o_cloud_item_free (item); + } + + handle_next_item (self); +} + + + +/* + * If the tracker db is up to date it provides the Info. + * Otherwise the file is more recent than tracker : + * do it the hard way + * + * but ownCloud mtime are not reliable so this does not work well. + * editing file changes mtime. Not editing from Notes... + * + */ + +static void +check_info_maybe_read_file (BijiInfoSet *info, + gpointer user_data) +{ + BijiOCloudItem *item; + BijiOwnCloudProvider *self; + + item = user_data; + self = item->self; + + + /* Create the note from cache (tracker store) + * My escape char for plainTextContent are buggy */ + + if (info != NULL) + { + item->set.content = g_strdup (info->content); + item->set.created = info->created; + create_note_from_item (item); + o_cloud_item_free (item); + biji_info_set_free (info); + handle_next_item (self); + } + + + /* Store not up to date. We need to read the file */ + + else + { + g_file_load_contents_async (item->file, NULL, on_content, item); + } + +} + + +static void +trash (gpointer urn_uuid, gpointer self) +{ + biji_tracker_trash_ressource ( + biji_provider_get_book (BIJI_PROVIDER (self)), (gchar*) urn_uuid); +} + + + +static void +handle_next_item (BijiOwnCloudProvider *self) +{ + BijiOCloudItem *item; + GList *list; + + item = g_queue_pop_head (self->priv->queue); + + if (item != NULL) + { + g_hash_table_remove (self->priv->tracker, item->set.url); + + biji_tracker_check_for_info (biji_provider_get_book (BIJI_PROVIDER (self)), + item->set.url, + item->set.mtime, + check_info_maybe_read_file, + item); + } + + + else + { + /* Post load tracker db clean-up */ + list = g_hash_table_get_values (self->priv->tracker); + g_list_foreach (list, trash, self); + g_list_free (list); + + + /* Now simply provide data to controller */ + list = g_hash_table_get_values (self->priv->notes); + BIJI_PROVIDER_GET_CLASS (self)->notify_loaded (BIJI_PROVIDER (self), list); + g_list_free (list); + } +} + + +static void +enumerate_next_files_ready_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + GFileEnumerator *enumerator; + GError *error; + BijiOwnCloudProvider *self; + GList *files, *l; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_PROVIDER (user_data)); + + enumerator = G_FILE_ENUMERATOR (source); + error = NULL; + self = BIJI_OWN_CLOUD_PROVIDER (user_data); + + files = g_file_enumerator_next_files_finish (enumerator, res, &error); + g_file_enumerator_close_async (enumerator, G_PRIORITY_DEFAULT, NULL, + release_enum_cb, NULL); + + if (error != NULL) + { + g_warning ("%s", error->message); + g_error_free (error); + return; + } + + /* Open the file, have a dedicated deserializer */ + for (l = files; l != NULL; l = l->next) + { + GFileInfo *info; + GTimeVal time = {0,0}; + BijiOCloudItem *item; + + info = l->data; + item = o_cloud_item_new (self); + item->set.title = g_strdup (g_file_info_get_name (info)); + item->set.url = g_strconcat + (g_file_get_parse_name (self->priv->folder), + "/", item->set.title, NULL); + + g_file_info_get_modification_time (info, &time); + item->set.mtime = time.tv_sec; + item->set.created = g_file_info_get_attribute_uint64 (info, "time:created"); + item->set.datasource_urn = g_strdup (self->priv->info.datasource); + item->file = g_file_new_for_uri (item->set.url); + g_queue_push_head (self->priv->queue, item); + } + + // TODO - create the dir monitor + handle_next_item (self); + g_list_free_full (files, g_object_unref); +} + + + + + +static void +enumerate_children_ready_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + GFile *location; + GFileEnumerator *enumerator; + GError *error; + BijiOwnCloudProvider *self; + + g_return_if_fail (BIJI_IS_OWN_CLOUD_PROVIDER (user_data)); + + error = NULL; + location = G_FILE (source); + self = BIJI_OWN_CLOUD_PROVIDER (user_data); + enumerator = g_file_enumerate_children_finish (location, res, &error); + + if (error != NULL) + { + g_warning ("could not enumerate... %s", error->message); + g_error_free (error); + + /* TODO : nice place to reset everything + * and start again with fresh air ? + * but we don't want to umount for the user */ + return; + } + + g_file_enumerator_next_files_async (enumerator, G_MAXINT, + G_PRIORITY_DEFAULT, + NULL, + enumerate_next_files_ready_cb, + self); +} + + +/* Stock all existing urn-uuid. Then parse files */ +static void +on_notes_mined (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + BijiOwnCloudProvider *self; + TrackerSparqlConnection *connect; + TrackerSparqlCursor *cursor; + GError *error; + + self = user_data; + connect = TRACKER_SPARQL_CONNECTION (source_object); + error = NULL; + cursor = tracker_sparql_connection_query_finish (connect, res, &error); + + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + if (cursor) + { + while (tracker_sparql_cursor_next (cursor, NULL, NULL)) + { + g_hash_table_insert (self->priv->tracker, + g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)), + g_strdup (tracker_sparql_cursor_get_string (cursor, 1, NULL))); + + } + } + + g_file_enumerate_children_async (self->priv->folder, + "standard::name,time::modified,time::created", 0, + G_PRIORITY_DEFAULT, + NULL, + enumerate_children_ready_cb, + self); +} + + +/* TODO use datasource so func is somewhat std:: */ +static void +mine_notes (gboolean result, gpointer user_data) +{ + BijiOwnCloudProvider *self; + BijiProvider *provider; + const BijiProviderInfo *info; + gchar *query; + + + self = user_data; + provider = user_data; + info = biji_provider_get_info (provider); + + /* + * We could as well use nie:url to lookup existing db + * but rather use dataSource since this might go to generic bProvider + * + * query = g_strdup_printf ("SELECT ?urn ?url WHERE {?urn a nfo:Note ; " + "nie:url ?url . FILTER (" + "fn:contains (?url,'%s'))}", + root); + * + */ + + query = g_strdup_printf ("SELECT ?url ?urn WHERE {?urn a nfo:Note; " + " nie:dataSource '%s' ; nie:url ?url}", + info->datasource); + + tracker_sparql_connection_query_async ( + biji_note_book_get_tracker_connection ( + biji_provider_get_book (provider)), + query, + NULL, + on_notes_mined, + self); + + g_free (query); +} + + + +static void +handle_mount (BijiOwnCloudProvider *self) +{ + GFile *root; + + root = NULL; + if (G_IS_MOUNT (self->priv->mount)) + root = g_mount_get_root (self->priv->mount); + + + if (G_IS_FILE (root)) + { + /* OwnCloud Notes folder is not localized. + * https://github.com/owncloud/notes/issues/7 */ + + self->priv->folder = g_file_get_child (root, "Notes"); + self->priv->monitor = g_file_monitor_directory + (self->priv->folder, G_FILE_MONITOR_NONE, NULL, NULL); // cancel, error + + + g_object_unref (root); + biji_tracker_ensure_datasource ( + biji_provider_get_book (BIJI_PROVIDER (self)), + self->priv->info.datasource, + MINER_ID, + mine_notes, + self); + } +} + + + +static void +on_owncloud_volume_mounted (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + BijiOwnCloudProvider *self; + GError *error; + + error = NULL; + self = BIJI_OWN_CLOUD_PROVIDER (user_data); + + /* bug #701021 makes this fail */ + g_volume_mount_finish (self->priv->volume, res, &error); + + if (error != NULL) + { + g_warning ("%s", error->message); + g_error_free (error); + } + + self->priv->mount = g_volume_get_mount (self->priv->volume); + + if (!G_IS_MOUNT (self->priv->mount)) + g_warning ("finish but not really finish..."); + + else + handle_mount (self); +} + + +static void +get_mount (BijiOwnCloudProvider *self) +{ + GVolumeMonitor *monitor; + GoaFiles *files; + const gchar *uri; + + monitor = g_volume_monitor_get (); + + if (!GOA_IS_OBJECT (self->priv->object)) + return; + + files = goa_object_peek_files (self->priv->object); + + if (GOA_IS_FILES (files)) + { + uri = goa_files_get_uri (files); + self->priv->path = g_strdup_printf ("%sNotes", uri); + self->priv->volume = g_volume_monitor_get_volume_for_uuid (monitor, uri); + self->priv->mount = g_volume_get_mount (self->priv->volume); + + + if (self->priv->mount != NULL && + G_IS_MOUNT (self->priv->mount)) + { + handle_mount (self); + } + + + /* not already mounted. no matter, we mount. in theory. */ + //else if (self->priv->mount == NULL) + else + { + g_volume_mount (self->priv->volume, + G_MOUNT_MOUNT_NONE, + NULL, + NULL, + on_owncloud_volume_mounted, + self); + } + } + + g_object_unref (monitor); +} + + +static void +biji_own_cloud_provider_constructed (GObject *obj) +{ + BijiOwnCloudProvider *self; + BijiOwnCloudProviderPrivate *priv; + GError *error; + GIcon *icon; + + G_OBJECT_CLASS (biji_own_cloud_provider_parent_class)->constructed (obj); + + self = BIJI_OWN_CLOUD_PROVIDER (obj); + priv = self->priv; + + + if (!GOA_IS_OBJECT (priv->object)) + return; + + priv->account = goa_object_get_account (priv->object); + + if (priv->account != NULL) + { + + priv->info.unique_id = goa_account_get_id (priv->account); + priv->info.datasource = g_strdup_printf ("gn:goa-account:%s", + priv->info.unique_id); + priv->info.name = goa_account_get_provider_name (priv->account); + + error = NULL; + icon = g_icon_new_for_string (goa_account_get_provider_icon (priv->account), + &error); + if (error) + { + g_warning ("%s", error->message); + g_error_free (error); + priv->info.icon = NULL; + } + + else + { + priv->info.icon = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_INVALID); + gtk_image_set_pixel_size (GTK_IMAGE (priv->info.icon), 48); + g_object_ref (priv->info.icon); + } + + get_mount (self); + } + + +} + + + +static void +biji_own_cloud_provider_init (BijiOwnCloudProvider *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderPrivate); + + self->priv->notes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + self->priv->tracker = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + self->priv->queue = g_queue_new (); + self->priv->path = NULL; +} + + +static void +biji_own_cloud_provider_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiOwnCloudProvider *self = BIJI_OWN_CLOUD_PROVIDER (object); + + + switch (property_id) + { + case PROP_GOA_OBJECT: + self->priv->object = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +biji_own_cloud_provider_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiOwnCloudProvider *self = BIJI_OWN_CLOUD_PROVIDER (object); + + switch (property_id) + { + case PROP_GOA_OBJECT: + g_value_set_object (value, self->priv->object); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static const BijiProviderInfo * +own_cloud_get_info (BijiProvider *provider) +{ + BijiOwnCloudProvider *self; + + self = BIJI_OWN_CLOUD_PROVIDER (provider); + return &(self->priv->info); +} + + + +/* + * Note is created from sratch, without any file or tracker metadata + * But as soon as note title changes, + * things will go right. + * Promise. */ + +BijiNoteObj * +own_cloud_create_note (BijiProvider *provider, + gchar *str) +{ + BijiInfoSet info; + + info.url = NULL; + info.title = NULL; + info.mtime = g_get_real_time (); + info.content = ""; + info.created = g_get_real_time (); + + return biji_own_cloud_note_new_from_info ( + BIJI_OWN_CLOUD_PROVIDER (provider), + biji_provider_get_book (provider), + &info); +} + + + +/* This is a dummy func. we can create a note with extra args + * but can't use path, nor color, nor html. */ + +BijiNoteObj * +own_cloud_create_full (BijiProvider *provider, + gchar *suggested_path, + BijiInfoSet *info, + gchar *html, + GdkRGBA *color) +{ + BijiOwnCloudProvider *self; + BijiNoteObj *retval; + GdkRGBA override_color; + BijiNoteBook *book; + + self = BIJI_OWN_CLOUD_PROVIDER (provider); + book = biji_provider_get_book (provider); + + retval = biji_own_cloud_note_new_from_info (self, book, info); + biji_note_obj_set_html (retval, html); + + /* We do not use suggested color. + * Rather use ook default */ + + biji_note_book_get_default_color (book, &override_color); + biji_note_obj_set_rgba (retval, &override_color); + + return retval; +} + + + +GFile * +biji_own_cloud_provider_get_folder (BijiOwnCloudProvider *provider) +{ + return provider->priv->folder; +} + + +static void +biji_own_cloud_provider_class_init (BijiOwnCloudProviderClass *klass) +{ + GObjectClass *g_object_class; + BijiProviderClass *provider_class; + + g_object_class = G_OBJECT_CLASS (klass); + provider_class = BIJI_PROVIDER_CLASS (klass); + + g_object_class->finalize = biji_own_cloud_provider_finalize; + g_object_class->get_property = biji_own_cloud_provider_get_property; + g_object_class->set_property = biji_own_cloud_provider_set_property; + g_object_class->constructed = biji_own_cloud_provider_constructed; + + provider_class->get_info = own_cloud_get_info; + provider_class->create_new_note = own_cloud_create_note; + provider_class->create_note_full = own_cloud_create_full; + + + properties[PROP_GOA_OBJECT] = + g_param_spec_object("goa", + "The Goa Object", + "The Goa Object providing notes", + GOA_TYPE_OBJECT, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (g_object_class, OCLOUD_PROV_PROP, properties); + + g_type_class_add_private ((gpointer)klass, sizeof (BijiOwnCloudProviderPrivate)); +} + + +BijiProvider * +biji_own_cloud_provider_new (BijiNoteBook *book, + GoaObject *object) +{ + return g_object_new (BIJI_TYPE_OWN_CLOUD_PROVIDER, + "book", book, + "goa", object, + NULL); +} + + +gchar * +biji_own_cloud_provider_get_readable_path (BijiOwnCloudProvider *p) +{ + return p->priv->path; +} diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-provider.h bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-provider.h --- bijiben-3.8.4/src/libbiji/provider/biji-own-cloud-provider.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-own-cloud-provider.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,67 @@ +/* bjb-own-cloud-provider.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +#ifndef BIJI_OWN_CLOUD_PROVIDER_H_ +#define BIJI_OWN_CLOUD_PROVIDER_H_ 1 + +#include "biji-provider.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_OWN_CLOUD_PROVIDER (biji_own_cloud_provider_get_type ()) +#define BIJI_OWN_CLOUD_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProvider)) +#define BIJI_OWN_CLOUD_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderClass)) +#define BIJI_IS_OWN_CLOUD_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_OWN_CLOUD_PROVIDER)) +#define BIJI_IS_OWN_CLOUD_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_OWN_CLOUD_PROVIDER)) +#define BIJI_OWN_CLOUD_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderClass)) + +typedef struct BijiOwnCloudProvider_ BijiOwnCloudProvider; +typedef struct BijiOwnCloudProviderClass_ BijiOwnCloudProviderClass; +typedef struct BijiOwnCloudProviderPrivate_ BijiOwnCloudProviderPrivate; + +struct BijiOwnCloudProvider_ +{ + BijiProvider parent; + BijiOwnCloudProviderPrivate *priv; +}; + + +struct BijiOwnCloudProviderClass_ +{ + BijiProviderClass parent_class; +}; + + +GType biji_own_cloud_provider_get_type (void); + + + +BijiProvider *biji_own_cloud_provider_new (BijiNoteBook *book, + GoaObject *object); + + +GFile *biji_own_cloud_provider_get_folder (BijiOwnCloudProvider *provider); + + +gchar *biji_own_cloud_provider_get_readable_path (BijiOwnCloudProvider *p); + + +G_END_DECLS + +#endif /* BIJI_OWN_CLOUD_PROVIDER_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-provider.c bijiben-3.10.2/src/libbiji/provider/biji-provider.c --- bijiben-3.8.4/src/libbiji/provider/biji-provider.c 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-provider.c 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,182 @@ +/* bjb-provider.c + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + + +/* + * TODO: the generic provider should at least + * be the one emiting the signals + * + * So 1. for each provider, the book connects to the same + * & provider does not reinvent anything + * 2. it might be a right place for running the approriate + * threads - or even processes. + * + */ + +#include "biji-provider.h" + + +/* Properties */ +enum { + PROP_0, + PROP_BOOK, + PROVIDER_PROP +}; + + +/* Signals */ +enum { + PROVIDER_LOADED, + PROVIDER_SIGNALS +}; + + +static guint biji_provider_signals[PROVIDER_SIGNALS] = { 0 }; +static GParamSpec *properties[PROVIDER_PROP] = { NULL, }; + + +struct BijiProviderPrivate_ +{ + BijiNoteBook *book; +}; + +G_DEFINE_TYPE (BijiProvider, biji_provider, G_TYPE_OBJECT) + + +BijiNoteBook * +biji_provider_get_book (BijiProvider *provider) +{ + return provider->priv->book; +} + + +const BijiProviderInfo * +biji_provider_get_info (BijiProvider *provider) +{ + return BIJI_PROVIDER_GET_CLASS (provider)->get_info (provider); +} + + +static void +biji_provider_finalize (GObject *object) +{ + //BijiProvider *self; + + //g_return_if_fail (BIJI_IS_PROVIDER (object)); + + //self = BIJI_PROVIDER (object); + + G_OBJECT_CLASS (biji_provider_parent_class)->finalize (object); +} + + +static void +biji_provider_init (BijiProvider *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_PROVIDER, BijiProviderPrivate); + self->priv->book = NULL; +} + + +static void +biji_provider_notify_loaded (BijiProvider *self, + GList *items) +{ + g_signal_emit (self, + biji_provider_signals[PROVIDER_LOADED], + 0, + items); +} + + +static void +biji_provider_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + BijiProvider *self = BIJI_PROVIDER (object); + + + switch (property_id) + { + case PROP_BOOK: + self->priv->book = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +biji_provider_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + BijiProvider *self = BIJI_PROVIDER (object); + + switch (property_id) + { + case PROP_BOOK: + g_value_set_object (value, self->priv->book); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + + +static void +biji_provider_class_init (BijiProviderClass *klass) +{ + GObjectClass *g_object_class; + BijiProviderClass *provider_class; + + g_object_class = G_OBJECT_CLASS (klass); + provider_class = BIJI_PROVIDER_CLASS (klass); + + g_object_class->finalize = biji_provider_finalize; + g_object_class->get_property = biji_provider_get_property; + g_object_class->set_property = biji_provider_set_property; + provider_class->notify_loaded = biji_provider_notify_loaded; + + biji_provider_signals[PROVIDER_LOADED] = + g_signal_new ("loaded", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, + 1, + G_TYPE_POINTER); + + + properties[PROP_BOOK] = + g_param_spec_object("book", + "Note Book", + "The Note Book", + BIJI_TYPE_NOTE_BOOK, + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); + + + g_object_class_install_properties (g_object_class, PROVIDER_PROP, properties); + + g_type_class_add_private ((gpointer)klass, sizeof (BijiProviderPrivate)); +} diff -Nru bijiben-3.8.4/src/libbiji/provider/biji-provider.h bijiben-3.10.2/src/libbiji/provider/biji-provider.h --- bijiben-3.8.4/src/libbiji/provider/biji-provider.h 1970-01-01 00:00:00.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/provider/biji-provider.h 2013-11-11 20:52:06.000000000 +0000 @@ -0,0 +1,132 @@ +/* bjb-provider.h + * Copyright (C) Pierre-Yves LUYTEN 2013 + * + * bijiben is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * bijiben is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef BIJI_PROVIDER_H_ +#define BIJI_PROVIDER_H_ 1 + +#include +#include // translate providers type + +#include "../biji-info-set.h" +#include "../biji-note-book.h" + +G_BEGIN_DECLS + + +#define BIJI_TYPE_PROVIDER (biji_provider_get_type ()) +#define BIJI_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BIJI_TYPE_PROVIDER, BijiProvider)) +#define BIJI_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BIJI_TYPE_PROVIDER, BijiProviderClass)) +#define BIJI_IS_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BIJI_TYPE_PROVIDER)) +#define BIJI_IS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BIJI_TYPE_PROVIDER)) +#define BIJI_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BIJI_TYPE_PROVIDER, BijiProviderClass)) + +typedef struct BijiProvider_ BijiProvider; +typedef struct BijiProviderClass_ BijiProviderClass; +typedef struct BijiProviderPrivate_ BijiProviderPrivate; + + +typedef struct +{ + const gchar *unique_id; // anything unique, eg, goa_account_get_id + const gchar *datasource; // for tracker + + gchar *name; // eg, goa_account_get_provider_name + GtkWidget *icon; + + gchar *domain; // todo - distinguish several accounts + gchar *user; // todo - distinguish several accounts + +} BijiProviderInfo; + + +struct BijiProvider_ +{ + GObject parent; + BijiProviderPrivate *priv; +}; + + +struct BijiProviderClass_ +{ + GObjectClass parent_class; + + +/* Each Provider subclass instance owns its own BijiProviderInfo + * to signal name, icon, or whatever useful info. + * datasource is only needed for actual providers, + * ie. persistent data source */ + + const BijiProviderInfo* (*get_info) (BijiProvider *provider); + + + /* When a provider is loaded, notify the book to transmit the items */ + + void (*notify_loaded) (BijiProvider *provider, + GList *loaded_items); + + + /* Create a single note and let the provider handle things. + * Only works from raw text. + * Does not allow to trick color or dates */ + + BijiNoteObj* (*create_new_note) (BijiProvider *provider, + gchar *content); + + /* Creates a single note representing some existing data, + * with title, content, dates, html, color. + * The caller should set as many fields as possible. + * The provider should ensure as much as possible to handle + * NULL values properly, if any. + * Providers will discard assigned values they do not handle. + * Local provider is supposed to handle everything. + * + * Suggested path : if possible, the provider should preserve + * the file name. If an import provider is asked to import a file, + * first check the item does not exist yet + * with same path (basename). ie. do not import twice the same note. + * + * the info set is not supposed to store any url. + * otherwise, you might expect it to be lost. + * + * TODO: rebase startup code on local provider create note full when good enough + * TODO: owncloud provider (to handle importing) */ + + BijiNoteObj* (*create_note_full) (BijiProvider *provider, + gchar *suggested_path, + BijiInfoSet *info, + gchar *html, + GdkRGBA *color); + + + /* TODO : (*create_collection). Add a flag into provider info? */ +}; + + + + + +GType biji_provider_get_type (void); + + +BijiNoteBook *biji_provider_get_book (BijiProvider *provider); + + +const BijiProviderInfo *biji_provider_get_info (BijiProvider *provider); + +G_END_DECLS + +#endif /* BIJI_PROVIDER_H_ */ diff -Nru bijiben-3.8.4/src/libbiji/serializer/biji-lazy-serializer.c bijiben-3.10.2/src/libbiji/serializer/biji-lazy-serializer.c --- bijiben-3.8.4/src/libbiji/serializer/biji-lazy-serializer.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/serializer/biji-lazy-serializer.c 2013-11-11 20:52:06.000000000 +0000 @@ -21,6 +21,7 @@ #include #include "biji-lazy-serializer.h" +#include "../biji-item.h" #include "../biji-note-obj.h" #include "../biji-string.h" @@ -167,8 +168,10 @@ BijiLazySerializerPrivate *priv = self->priv; GList *tags; GdkRGBA color; - gchar *path, *date, *color_str; + gchar *date, *color_str; gboolean retval; + const gchar *path; + GTimeVal time = {0, 0}; priv->writer = xmlNewTextWriterMemory(priv->buf, 0); @@ -188,7 +191,9 @@ BAD_CAST "http://projects.gnome.org/bijiben"); // - serialize_node (priv->writer, "title", biji_note_obj_get_title (priv->note)); + serialize_node (priv->writer, + "title", + (gchar*) biji_item_get_title (BIJI_ITEM (priv->note))); // <text> xmlTextWriterWriteRaw(priv->writer, BAD_CAST "\n "); @@ -201,17 +206,31 @@ xmlTextWriterEndElement(priv->writer); // <last-change-date> - date = biji_note_obj_get_last_change_date (priv->note); - serialize_node (priv->writer, "last-change-date", date); - g_free (date); - - date = biji_note_obj_get_last_metadata_change_date (priv->note); - serialize_node (priv->writer, "last-metadata-change-date", date); - g_free (date); - - date = biji_note_obj_get_create_date (priv->note); - serialize_node (priv->writer, "create-date", date); - g_free (date); + time.tv_sec = biji_item_get_mtime (BIJI_ITEM (priv->note)); + date = g_time_val_to_iso8601 (&time); + if (date) + { + serialize_node (priv->writer, "last-change-date", date); + g_free (date); + } + + + time.tv_sec = biji_note_obj_get_last_metadata_change_date (priv->note); + date = g_time_val_to_iso8601 (&time); + if (date) + { + serialize_node (priv->writer, "last-metadata-change-date", date); + g_free (date); + } + + + time.tv_sec = biji_note_obj_get_create_date (priv->note); + date = g_time_val_to_iso8601 (&time); + if (date) + { + serialize_node (priv->writer, "create-date", date); + g_free (date); + } serialize_node (priv->writer, "cursor-position", "0"); serialize_node (priv->writer, "selection-bound-position", "0"); @@ -244,15 +263,15 @@ xmlFreeTextWriter(priv->writer); - path = biji_note_obj_get_path (priv->note); + path = biji_item_get_uuid (BIJI_ITEM (priv->note)); retval = g_file_set_contents (path, (gchar*) priv->buf->content, -1, NULL); - g_free (path); + return retval; } /* No matter if icon is saved or not. * We just try */ -static void +void biji_note_obj_save_icon (BijiNoteObj *note) { gchar *filename; @@ -260,7 +279,7 @@ /* Png */ filename = biji_note_obj_get_icon_file (note); - gdk_pixbuf_save (biji_note_obj_get_icon (note), filename, "png", &error, NULL); + gdk_pixbuf_save (biji_item_get_icon (BIJI_ITEM (note)), filename, "png", &error, NULL); if (error) { diff -Nru bijiben-3.8.4/src/libbiji/serializer/biji-lazy-serializer.h bijiben-3.10.2/src/libbiji/serializer/biji-lazy-serializer.h --- bijiben-3.8.4/src/libbiji/serializer/biji-lazy-serializer.h 2013-06-15 15:34:33.000000000 +0000 +++ bijiben-3.10.2/src/libbiji/serializer/biji-lazy-serializer.h 2013-10-31 22:53:14.000000000 +0000 @@ -52,9 +52,17 @@ BijiLazySerializerPrivate *priv; }; -GType biji_lazy_serializer_get_type (void) G_GNUC_CONST; -gboolean biji_lazy_serialize (BijiNoteObj *note); +GType biji_lazy_serializer_get_type (void) G_GNUC_CONST; + + +gboolean biji_lazy_serialize (BijiNoteObj *note); + + +/* biji_lazy_serialize is for local notes & include icon save + * however, icon can still be saved separately */ + +void biji_note_obj_save_icon (BijiNoteObj *note); G_END_DECLS diff -Nru bijiben-3.8.4/src/Makefile.am bijiben-3.10.2/src/Makefile.am --- bijiben-3.8.4/src/Makefile.am 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/Makefile.am 2013-11-11 20:52:06.000000000 +0000 @@ -56,6 +56,12 @@ bjb-debug.h \ bjb-editor-toolbar.c \ bjb-editor-toolbar.h \ + bjb-empty-results-box.c \ + bjb-empty-results-box.h \ + bjb-import-dialog.h \ + bjb-import-dialog.c \ + bjb-load-more-button.c \ + bjb-load-more-button.h \ bjb-main.c \ bjb-main-toolbar.c \ bjb-main-toolbar.h \ @@ -73,12 +79,12 @@ bjb-selection-toolbar.h \ bjb-settings.c \ bjb-settings.h \ + bjb-settings-dialog.c \ + bjb-settings-dialog.h \ bjb-share.c \ bjb-share.h \ bjb-window-base.c \ - bjb-window-base.h \ - utils/bjb-icons-colors.c \ - utils/bjb-icons-colors.h + bjb-window-base.h dbus_shell_search_provider_built_sources = \ bijiben-shell-search-provider-generated.c \ diff -Nru bijiben-3.8.4/src/Makefile.in bijiben-3.10.2/src/Makefile.in --- bijiben-3.8.4/src/Makefile.in 2013-08-18 23:29:47.000000000 +0000 +++ bijiben-3.10.2/src/Makefile.in 2013-11-11 20:55:22.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -101,13 +101,14 @@ am_bijiben_OBJECTS = $(am__objects_1) bjb-app-menu.$(OBJEXT) \ bjb-bijiben.$(OBJEXT) bjb-color-button.$(OBJEXT) \ bjb-controller.$(OBJEXT) bjb-debug.$(OBJEXT) \ - bjb-editor-toolbar.$(OBJEXT) bjb-main.$(OBJEXT) \ - bjb-main-toolbar.$(OBJEXT) bjb-main-view.$(OBJEXT) \ - bjb-note-tag-dialog.$(OBJEXT) bjb-note-view.$(OBJEXT) \ - bjb-rename-note.$(OBJEXT) bjb-search-toolbar.$(OBJEXT) \ - bjb-selection-toolbar.$(OBJEXT) bjb-settings.$(OBJEXT) \ - bjb-share.$(OBJEXT) bjb-window-base.$(OBJEXT) \ - bjb-icons-colors.$(OBJEXT) + bjb-editor-toolbar.$(OBJEXT) bjb-empty-results-box.$(OBJEXT) \ + bjb-import-dialog.$(OBJEXT) bjb-load-more-button.$(OBJEXT) \ + bjb-main.$(OBJEXT) bjb-main-toolbar.$(OBJEXT) \ + bjb-main-view.$(OBJEXT) bjb-note-tag-dialog.$(OBJEXT) \ + bjb-note-view.$(OBJEXT) bjb-rename-note.$(OBJEXT) \ + bjb-search-toolbar.$(OBJEXT) bjb-selection-toolbar.$(OBJEXT) \ + bjb-settings.$(OBJEXT) bjb-settings-dialog.$(OBJEXT) \ + bjb-share.$(OBJEXT) bjb-window-base.$(OBJEXT) bijiben_OBJECTS = $(am_bijiben_OBJECTS) bijiben_LDADD = $(LDADD) am__DEPENDENCIES_1 = @@ -338,6 +339,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ @@ -442,6 +444,12 @@ bjb-debug.h \ bjb-editor-toolbar.c \ bjb-editor-toolbar.h \ + bjb-empty-results-box.c \ + bjb-empty-results-box.h \ + bjb-import-dialog.h \ + bjb-import-dialog.c \ + bjb-load-more-button.c \ + bjb-load-more-button.h \ bjb-main.c \ bjb-main-toolbar.c \ bjb-main-toolbar.h \ @@ -459,12 +467,12 @@ bjb-selection-toolbar.h \ bjb-settings.c \ bjb-settings.h \ + bjb-settings-dialog.c \ + bjb-settings-dialog.h \ bjb-share.c \ bjb-share.h \ bjb-window-base.c \ - bjb-window-base.h \ - utils/bjb-icons-colors.c \ - utils/bjb-icons-colors.h + bjb-window-base.h dbus_shell_search_provider_built_sources = \ bijiben-shell-search-provider-generated.c \ @@ -507,9 +515,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/Makefile + $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -649,7 +657,9 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-controller.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-debug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-editor-toolbar.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-icons-colors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-empty-results-box.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-import-dialog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-load-more-button.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-main-toolbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-main-view.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-main.Po@am__quote@ @@ -659,6 +669,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-resources.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-search-toolbar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-selection-toolbar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-settings-dialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-settings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-share.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjb-window-base.Po@am__quote@ @@ -668,14 +679,14 @@ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -684,20 +695,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -bjb-icons-colors.o: utils/bjb-icons-colors.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bjb-icons-colors.o -MD -MP -MF $(DEPDIR)/bjb-icons-colors.Tpo -c -o bjb-icons-colors.o `test -f 'utils/bjb-icons-colors.c' || echo '$(srcdir)/'`utils/bjb-icons-colors.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bjb-icons-colors.Tpo $(DEPDIR)/bjb-icons-colors.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils/bjb-icons-colors.c' object='bjb-icons-colors.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bjb-icons-colors.o `test -f 'utils/bjb-icons-colors.c' || echo '$(srcdir)/'`utils/bjb-icons-colors.c - -bjb-icons-colors.obj: utils/bjb-icons-colors.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bjb-icons-colors.obj -MD -MP -MF $(DEPDIR)/bjb-icons-colors.Tpo -c -o bjb-icons-colors.obj `if test -f 'utils/bjb-icons-colors.c'; then $(CYGPATH_W) 'utils/bjb-icons-colors.c'; else $(CYGPATH_W) '$(srcdir)/utils/bjb-icons-colors.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bjb-icons-colors.Tpo $(DEPDIR)/bjb-icons-colors.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils/bjb-icons-colors.c' object='bjb-icons-colors.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bjb-icons-colors.obj `if test -f 'utils/bjb-icons-colors.c'; then $(CYGPATH_W) 'utils/bjb-icons-colors.c'; else $(CYGPATH_W) '$(srcdir)/utils/bjb-icons-colors.c'; fi` - mostlyclean-libtool: -rm -f *.lo diff -Nru bijiben-3.8.4/src/resources/app-menu.ui bijiben-3.10.2/src/resources/app-menu.ui --- bijiben-3.8.4/src/resources/app-menu.ui 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/resources/app-menu.ui 2013-07-19 22:02:07.000000000 +0000 @@ -7,7 +7,7 @@ <attribute name="accel"><Primary>n</attribute> </item> <item> - <attribute name="label" translatable="yes">_External Notes</attribute> + <attribute name="label" translatable="yes">_Import Notes</attribute> <attribute name="action">app.external</attribute> </item> </section> diff -Nru bijiben-3.8.4/src/utils/bjb-icons-colors.c bijiben-3.10.2/src/utils/bjb-icons-colors.c --- bijiben-3.8.4/src/utils/bjb-icons-colors.c 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/utils/bjb-icons-colors.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -#include "bjb-bijiben.h" -#include "bjb-icons-colors.h" - -GtkWidget * -get_icon (gchar *icon) -{ - GIcon *gi; - GtkWidget *retval; - - gi = g_themed_icon_new_with_default_fallbacks (icon); - retval = gtk_image_new_from_gicon (gi, GTK_ICON_SIZE_BUTTON); - g_object_unref (gi); - - return retval; -} - -/* TODO - * this func will probably disappear but otherwise it has - * to handle size & directories */ -GdkPixbuf * -get_note_pixbuf() -{ - GdkPixbuf *note_pixbuf; - gchar *full_path; - GError *error = NULL ; - const gchar *icons_path = bijiben_get_bijiben_dir (); - - full_path = g_build_filename (icons_path, - "bijiben", - "icons", - "hicolor", - "16x16", - "actions", - "note.png", - NULL); - - note_pixbuf = gdk_pixbuf_new_from_file_at_size(full_path, - 16, - 16, - &error); - g_free(full_path); - - if (error) - { - g_message("Error is %s",error->message); - g_error_free (error); - return NULL ; - } - - if (!note_pixbuf) - { - g_message("Notes pixbuf error."); - return NULL ; - } - - return note_pixbuf ; -} diff -Nru bijiben-3.8.4/src/utils/bjb-icons-colors.h bijiben-3.10.2/src/utils/bjb-icons-colors.h --- bijiben-3.8.4/src/utils/bjb-icons-colors.h 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/src/utils/bjb-icons-colors.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -#ifndef BJB_ICONS_H -#define BJB_ICONS_H - -#include <gtk/gtk.h> - -GtkWidget * get_icon (gchar *icon); - -GdkPixbuf * get_note_pixbuf(); - -#endif diff -Nru bijiben-3.8.4/TODO bijiben-3.10.2/TODO --- bijiben-3.8.4/TODO 2013-08-18 23:29:28.000000000 +0000 +++ bijiben-3.10.2/TODO 2013-11-11 20:52:06.000000000 +0000 @@ -9,7 +9,6 @@ ROADMAP * gnome online account - * "collections" * being able to integrate vjournal, plain txt, html notes, html text * export (tomboy is priority)