osmo-0.2.14/000775 001750 001750 00000000000 12561325530 012527 5ustar00pasppasp000000 000000 osmo-0.2.14/Makefile.in000664 001750 001750 00000060556 12561325527 014616 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in AUTHORS COPYING ChangeLog README \ $(top_srcdir)/../../compile $(top_srcdir)/../../install-sh \ $(top_srcdir)/../../missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src data po ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = README AUTHORS TRANSLATORS COPYING ChangeLog all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @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 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(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) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am 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-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am # 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: osmo-0.2.14/configure000775 001750 001750 00000707117 12561325527 014461 0ustar00pasppasp000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Osmo 0.2.14. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and pasp@users.sf.net $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Osmo' PACKAGE_TARNAME='osmo' PACKAGE_VERSION='0.2.14' PACKAGE_STRING='Osmo 0.2.14' PACKAGE_BUGREPORT='pasp@users.sf.net' PACKAGE_URL='' ac_unique_file="src/contacts.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='WIN32_FALSE WIN32_TRUE am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS CONFIGDIR_FALSE CONFIGDIR_TRUE configdir CONFIGPATH_FALSE CONFIGPATH_TRUE configpath PANGO_1_20_LIBS PANGO_1_20_CFLAGS HAVE_LIBWEBKIT_FALSE HAVE_LIBWEBKIT_TRUE LIBWEBKIT_LIBS LIBWEBKIT_CFLAGS HAVE_LIBNOTIFY_FALSE HAVE_LIBNOTIFY_TRUE TASKS_ENABLED_FALSE TASKS_ENABLED_TRUE LIBNOTIFY_LIBS LIBNOTIFY_CFLAGS HAVE_GTKSPELL_FALSE HAVE_GTKSPELL_TRUE GTKSPELL_LIBS GTKSPELL_CFLAGS HAVE_LIBICAL_FALSE HAVE_LIBICAL_TRUE LIBICAL_LIBS LIBICAL_CFLAGS HAVE_LIBARCHIVE_FALSE HAVE_LIBARCHIVE_TRUE LIBARCHIVE_LIBS LIBARCHIVE_CFLAGS GTHREAD_LIBS GTHREAD_CFLAGS XML_LIBS XML_CPPFLAGS XML2_CONFIG GTK_LIBS GTK_CFLAGS MSGFMT LIBOBJS EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC PKG_CONFIG AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules with_contacts with_tasks with_notes enable_dependency_tracking enable_gtktest with_xml_prefix with_xml_exec_prefix enable_xmltest enable_debug enable_printing enable_backup with_config_path with_config_dir ' ac_precious_vars='build_alias host_alias target_alias PKG_CONFIG CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP GTHREAD_CFLAGS GTHREAD_LIBS LIBARCHIVE_CFLAGS LIBARCHIVE_LIBS LIBICAL_CFLAGS LIBICAL_LIBS GTKSPELL_CFLAGS GTKSPELL_LIBS LIBNOTIFY_CFLAGS LIBNOTIFY_LIBS LIBWEBKIT_CFLAGS LIBWEBKIT_LIBS PANGO_1_20_CFLAGS PANGO_1_20_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # 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 Osmo 0.2.14 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/osmo] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Osmo 0.2.14:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-gtktest do not try to compile and run a test GTK+ program --disable-xmltest Do not try to compile and run a test LIBXML program --enable-debug=yes,no compile with debugging support (default: no) --enable-printing=yes,no compile with printing support (default: yes) --enable-backup=yes,no compile with backup support (default: yes) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-contacts disable Contacts module --without-tasks disable Tasks module --without-notes disable Notes module --with-xml-prefix=PFX Prefix where libxml is installed (optional) --with-xml-exec-prefix=PFX Exec prefix where libxml is installed (optional) --with-config-path=PATH use a non-default config path --with-config-dir=DIR use a non-default config directory Some influential environment variables: PKG_CONFIG path to pkg-config utility CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config LIBARCHIVE_CFLAGS C compiler flags for LIBARCHIVE, overriding pkg-config LIBARCHIVE_LIBS linker flags for LIBARCHIVE, overriding pkg-config LIBICAL_CFLAGS C compiler flags for LIBICAL, overriding pkg-config LIBICAL_LIBS linker flags for LIBICAL, overriding pkg-config GTKSPELL_CFLAGS C compiler flags for GTKSPELL, overriding pkg-config GTKSPELL_LIBS linker flags for GTKSPELL, overriding pkg-config LIBNOTIFY_CFLAGS C compiler flags for LIBNOTIFY, overriding pkg-config LIBNOTIFY_LIBS linker flags for LIBNOTIFY, overriding pkg-config LIBWEBKIT_CFLAGS C compiler flags for LIBWEBKIT, overriding pkg-config LIBWEBKIT_LIBS linker flags for LIBWEBKIT, overriding pkg-config PANGO_1_20_CFLAGS C compiler flags for PANGO_1_20, overriding pkg-config PANGO_1_20_LIBS linker flags for PANGO_1_20, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Osmo configure 0.2.14 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------- ## ## Report this to pasp@users.sf.net ## ## -------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Osmo $as_me 0.2.14, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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 am__api_version='1.14' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else 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_prog_STRIP="${ac_tool_prefix}strip" $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 fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; 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_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else 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_prog_ac_ct_STRIP="strip" $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 fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else 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_prog_AWK="$ac_prog" $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 fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='osmo' VERSION='0.2.14' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of build" >&5 $as_echo_n "checking for type of build... " >&6; } if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; 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_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$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 ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; 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_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$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 ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Checks for enabled modules # Check whether --with-contacts was given. if test "${with_contacts+set}" = set; then : withval=$with_contacts; if test "x$withval" = "xyes" ; then contacts="yes" ; else contacts="no"; fi else contacts="yes" fi # Check whether --with-tasks was given. if test "${with_tasks+set}" = set; then : withval=$with_tasks; if test "x$withval" = "xyes" ; then tasks="yes" ; else tasks="no"; fi else tasks="yes" fi # Check whether --with-notes was given. if test "${with_notes+set}" = set; then : withval=$with_notes; if test "x$withval" = "xyes" ; then notes="yes" ; else notes="no"; fi else notes="yes" fi if test "x$notes" = "xyes"; then $as_echo "#define NOTES_ENABLED 1" >>confdefs.h fi # Checks for programs. SAVEDFLAGS=${CFLAGS} 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="${ac_tool_prefix}gcc" $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 fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; 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_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else 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_prog_ac_ct_CC="gcc" $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 fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="${ac_tool_prefix}cc" $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 fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; 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_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no 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 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $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 if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else 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_prog_CC="$ac_tool_prefix$ac_prog" $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 fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else 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_prog_ac_ct_CC="$ac_prog" $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 fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : 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 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" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi CFLAGS=${SAVEDFLAGS} # Checks for header files. 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 how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in libintl.h locale.h limits.h fcntl.h stdlib.h string.h sys/time.h unistd.h pthread.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 $as_echo_n "checking whether stat accepts an empty string... " >&6; } if ${ac_cv_func_stat_empty_string_bug+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_stat_empty_string_bug=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; return stat ("", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_stat_empty_string_bug=no else ac_cv_func_stat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 $as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } if test $ac_cv_func_stat_empty_string_bug = yes; then case " $LIBOBJS " in *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac cat >>confdefs.h <<_ACEOF #define HAVE_STAT_EMPTY_STRING_BUG 1 _ACEOF fi for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in floor memset setlocale strncasecmp strstr strtol do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Checks for msgfmt # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; 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_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # 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_MSGFMT="$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_MSGFMT" && ac_cv_path_MSGFMT="msgfmt" ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Checks for libraries. # Check whether --enable-gtktest was given. if test "${enable_gtktest+set}" = set; then : enableval=$enable_gtktest; else enable_gtktest=yes fi pkg_config_args=gtk+-2.0 for module in . do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; 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_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$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_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=2.12.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK+ - version >= $min_gtk_version" >&5 $as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" rm -f conf.gtktest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_gtk=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 $as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" as_fn_error $? "GTK+ not found or too old (version < 2.12)" "$LINENO" 5 fi rm -f conf.gtktest # Check whether --with-xml-prefix was given. if test "${with_xml_prefix+set}" = set; then : withval=$with_xml_prefix; xml_config_prefix="$withval" else xml_config_prefix="" fi # Check whether --with-xml-exec-prefix was given. if test "${with_xml_exec_prefix+set}" = set; then : withval=$with_xml_exec_prefix; xml_config_exec_prefix="$withval" else xml_config_exec_prefix="" fi # Check whether --enable-xmltest was given. if test "${enable_xmltest+set}" = set; then : enableval=$enable_xmltest; else enable_xmltest=yes fi if test x$xml_config_exec_prefix != x ; then xml_config_args="$xml_config_args" if test x${XML2_CONFIG+set} != xset ; then XML2_CONFIG=$xml_config_exec_prefix/bin/xml2-config fi fi if test x$xml_config_prefix != x ; then xml_config_args="$xml_config_args --prefix=$xml_config_prefix" if test x${XML2_CONFIG+set} != xset ; then XML2_CONFIG=$xml_config_prefix/bin/xml2-config fi fi # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; 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_XML2_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # 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_XML2_CONFIG="$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_XML2_CONFIG" && ac_cv_path_XML2_CONFIG="no" ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XML2_CONFIG" >&5 $as_echo "$XML2_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi min_xml_version=2.0.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml - version >= $min_xml_version" >&5 $as_echo_n "checking for libxml - version >= $min_xml_version... " >&6; } no_xml="" if test "$XML2_CONFIG" = "no" ; then no_xml=yes else XML_CPPFLAGS=`$XML2_CONFIG $xml_config_args --cflags` XML_LIBS=`$XML2_CONFIG $xml_config_args --libs` xml_config_major_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` xml_config_minor_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` xml_config_micro_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_xmltest" = "xyes" ; then ac_save_CPPFLAGS="$CPPFLAGS" ac_save_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS" LIBS="$XML_LIBS $LIBS" rm -f conf.xmltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main() { int xml_major_version, xml_minor_version, xml_micro_version; int major, minor, micro; char *tmp_version; system("touch conf.xmltest"); /* Capture xml2-config output via autoconf/configure variables */ /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = (char *)strdup("$min_xml_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string from xml2-config\n", "$min_xml_version"); exit(1); } free(tmp_version); /* Capture the version information from the header files */ tmp_version = (char *)strdup(LIBXML_DOTTED_VERSION); if (sscanf(tmp_version, "%d.%d.%d", &xml_major_version, &xml_minor_version, &xml_micro_version) != 3) { printf("%s, bad version string from libxml includes\n", "LIBXML_DOTTED_VERSION"); exit(1); } free(tmp_version); /* Compare xml2-config output to the libxml headers */ if ((xml_major_version != $xml_config_major_version) || (xml_minor_version != $xml_config_minor_version) || (xml_micro_version != $xml_config_micro_version)) { printf("*** libxml header files (version %d.%d.%d) do not match\n", xml_major_version, xml_minor_version, xml_micro_version); printf("*** xml2-config (version %d.%d.%d)\n", $xml_config_major_version, $xml_config_minor_version, $xml_config_micro_version); return 1; } /* Compare the headers to the library to make sure we match */ /* Less than ideal -- doesn't provide us with return value feedback, * only exits if there's a serious mismatch between header and library. */ LIBXML_TEST_VERSION; /* Test that the library is greater than our minimum version */ if ((xml_major_version > major) || ((xml_major_version == major) && (xml_minor_version > minor)) || ((xml_major_version == major) && (xml_minor_version == minor) && (xml_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of libxml (%d.%d.%d) was found.\n", xml_major_version, xml_minor_version, xml_micro_version); printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the xml2-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n"); printf("*** correct copy of xml2-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_xml=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_xml" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)" >&5 $as_echo "yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$XML2_CONFIG" = "no" ; then echo "*** The xml2-config script installed by LIBXML could not be found" echo "*** If libxml was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the XML2_CONFIG environment variable to the" echo "*** full path to xml2-config." else if test -f conf.xmltest ; then : else echo "*** Could not run libxml test program, checking why..." CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS" LIBS="$LIBS $XML_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { LIBXML_TEST_VERSION; return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding LIBXML or finding the wrong" echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means LIBXML was incorrectly installed" echo "*** or that you have moved LIBXML since it was installed. In the latter case, you" echo "*** may want to edit the xml2-config script: $XML2_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi XML_CPPFLAGS="" XML_LIBS="" as_fn_error $? "You do not appear to have libxml2 installed." "$LINENO" 5 fi rm -f conf.xmltest pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.6.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.6.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.6.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.6.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.6.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gthread-2.0 >= 2.6.0"` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gthread-2.0 >= 2.6.0"` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gthread-2.0 >= 2.6.0) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " "$LINENO" 5 elif test $pkg_failed = untried; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : fi # Checks for libgringotts { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grg_context_initialize_defaults in -lgringotts" >&5 $as_echo_n "checking for grg_context_initialize_defaults in -lgringotts... " >&6; } if ${ac_cv_lib_gringotts_grg_context_initialize_defaults+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgringotts $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char grg_context_initialize_defaults (); int main () { return grg_context_initialize_defaults (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gringotts_grg_context_initialize_defaults=yes else ac_cv_lib_gringotts_grg_context_initialize_defaults=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gringotts_grg_context_initialize_defaults" >&5 $as_echo "$ac_cv_lib_gringotts_grg_context_initialize_defaults" >&6; } if test "x$ac_cv_lib_gringotts_grg_context_initialize_defaults" = xyes; then : lib=yes else lib=no fi libgringotts="no" if test "$lib" = "yes"; then libgringotts="yes" fi if test "x$lib" = "xyes"; then gringotts_LIBS="-lgringotts" $as_echo "#define HAVE_LIBGRINGOTTS 1" >>confdefs.h fi # Checks for libarchive pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBARCHIVE" >&5 $as_echo_n "checking for LIBARCHIVE... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBARCHIVE_CFLAGS"; then pkg_cv_LIBARCHIVE_CFLAGS="$LIBARCHIVE_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libarchive >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libarchive >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBARCHIVE_CFLAGS=`$PKG_CONFIG --cflags "libarchive >= 3.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBARCHIVE_LIBS"; then pkg_cv_LIBARCHIVE_LIBS="$LIBARCHIVE_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libarchive >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libarchive >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBARCHIVE_LIBS=`$PKG_CONFIG --libs "libarchive >= 3.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBARCHIVE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libarchive >= 3.0.0"` else LIBARCHIVE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libarchive >= 3.0.0"` fi # Put the nasty error message in config.log where it belongs echo "$LIBARCHIVE_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libarchive=false elif test $pkg_failed = untried; then have_libarchive=false else LIBARCHIVE_CFLAGS=$pkg_cv_LIBARCHIVE_CFLAGS LIBARCHIVE_LIBS=$pkg_cv_LIBARCHIVE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libarchive=true fi if test "x$have_libarchive" = "xtrue"; then libarchive="yes" libarchive_LIBS="-larchive" $as_echo "#define HAVE_LIBARCHIVE 1" >>confdefs.h else libarchive="no" fi if test "x$have_libarchive" = "xtrue"; then HAVE_LIBARCHIVE_TRUE= HAVE_LIBARCHIVE_FALSE='#' else HAVE_LIBARCHIVE_TRUE='#' HAVE_LIBARCHIVE_FALSE= fi # Checks for libsqlite3 #PKG_CHECK_MODULES(LIBSQLITE3, sqlite3 >= 3.7.0, have_libsqlite3=true, # have_libsqlite3=false) #if test "x$have_libsqlite3" = "xtrue"; then # AC_DEFINE([HAVE_LIBSQLITE3], [1], [Definded to 1 if compile with libsqlite3 support]) # libsqlite3="yes" #else # libsqlite3="no" #fi #AM_CONDITIONAL([HAVE_LIBSQLITE3], test "x$have_libsqlite3" = "xtrue") # Checks for libical pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBICAL" >&5 $as_echo_n "checking for LIBICAL... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBICAL_CFLAGS"; then pkg_cv_LIBICAL_CFLAGS="$LIBICAL_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libical >= 0.33\""; } >&5 ($PKG_CONFIG --exists --print-errors "libical >= 0.33") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBICAL_CFLAGS=`$PKG_CONFIG --cflags "libical >= 0.33" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBICAL_LIBS"; then pkg_cv_LIBICAL_LIBS="$LIBICAL_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libical >= 0.33\""; } >&5 ($PKG_CONFIG --exists --print-errors "libical >= 0.33") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBICAL_LIBS=`$PKG_CONFIG --libs "libical >= 0.33" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBICAL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libical >= 0.33"` else LIBICAL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libical >= 0.33"` fi # Put the nasty error message in config.log where it belongs echo "$LIBICAL_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libical=false elif test $pkg_failed = untried; then have_libical=false else LIBICAL_CFLAGS=$pkg_cv_LIBICAL_CFLAGS LIBICAL_LIBS=$pkg_cv_LIBICAL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libical=true fi if test "x$have_libical" = "xtrue"; then $as_echo "#define HAVE_LIBICAL 1" >>confdefs.h libical="yes" else libical="no" fi if test "x$have_libical" = "xtrue"; then HAVE_LIBICAL_TRUE= HAVE_LIBICAL_FALSE='#' else HAVE_LIBICAL_TRUE='#' HAVE_LIBICAL_FALSE= fi # Checks for gtkspell pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKSPELL" >&5 $as_echo_n "checking for GTKSPELL... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$GTKSPELL_CFLAGS"; then pkg_cv_GTKSPELL_CFLAGS="$GTKSPELL_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSPELL_CFLAGS=`$PKG_CONFIG --cflags "gtkspell-2.0 >= 2.0.5" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$GTKSPELL_LIBS"; then pkg_cv_GTKSPELL_LIBS="$GTKSPELL_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0 >= 2.0.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkspell-2.0 >= 2.0.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKSPELL_LIBS=`$PKG_CONFIG --libs "gtkspell-2.0 >= 2.0.5" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtkspell-2.0 >= 2.0.5"` else GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtkspell-2.0 >= 2.0.5"` fi # Put the nasty error message in config.log where it belongs echo "$GTKSPELL_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_gtkspell=false elif test $pkg_failed = untried; then have_gtkspell=false else GTKSPELL_CFLAGS=$pkg_cv_GTKSPELL_CFLAGS GTKSPELL_LIBS=$pkg_cv_GTKSPELL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_gtkspell=true fi if test "x$have_gtkspell" = "xtrue"; then $as_echo "#define HAVE_GTKSPELL 1" >>confdefs.h gtkspell="yes" else gtkspell="no" fi if test "x$have_gtkspell" = "xtrue"; then HAVE_GTKSPELL_TRUE= HAVE_GTKSPELL_FALSE='#' else HAVE_GTKSPELL_TRUE='#' HAVE_GTKSPELL_FALSE= fi # Checks for libnotify pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNOTIFY" >&5 $as_echo_n "checking for LIBNOTIFY... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBNOTIFY_CFLAGS"; then pkg_cv_LIBNOTIFY_CFLAGS="$LIBNOTIFY_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= 0.7.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libnotify >= 0.7.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify >= 0.7.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBNOTIFY_LIBS"; then pkg_cv_LIBNOTIFY_LIBS="$LIBNOTIFY_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= 0.7.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libnotify >= 0.7.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify >= 0.7.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libnotify >= 0.7.0"` else LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libnotify >= 0.7.0"` fi # Put the nasty error message in config.log where it belongs echo "$LIBNOTIFY_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libnotify7=false elif test $pkg_failed = untried; then have_libnotify7=false else LIBNOTIFY_CFLAGS=$pkg_cv_LIBNOTIFY_CFLAGS LIBNOTIFY_LIBS=$pkg_cv_LIBNOTIFY_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libnotify7=true fi if test "x$have_libnotify7" = "xtrue"; then $as_echo "#define HAVE_LIBNOTIFY 1" >>confdefs.h $as_echo "#define HAVE_LIBNOTIFY7 1" >>confdefs.h libnotify="yes" else pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNOTIFY" >&5 $as_echo_n "checking for LIBNOTIFY... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBNOTIFY_CFLAGS"; then pkg_cv_LIBNOTIFY_CFLAGS="$LIBNOTIFY_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= 0.4.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libnotify >= 0.4.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify >= 0.4.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBNOTIFY_LIBS"; then pkg_cv_LIBNOTIFY_LIBS="$LIBNOTIFY_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= 0.4.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libnotify >= 0.4.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBNOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify >= 0.4.4" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libnotify >= 0.4.4"` else LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libnotify >= 0.4.4"` fi # Put the nasty error message in config.log where it belongs echo "$LIBNOTIFY_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libnotify=false elif test $pkg_failed = untried; then have_libnotify=false else LIBNOTIFY_CFLAGS=$pkg_cv_LIBNOTIFY_CFLAGS LIBNOTIFY_LIBS=$pkg_cv_LIBNOTIFY_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libnotify=true fi if test "x$have_libnotify" = "xtrue"; then $as_echo "#define HAVE_LIBNOTIFY 1" >>confdefs.h libnotify="yes" else libnotify="no" fi fi if test "x$tasks" = "xyes"; then TASKS_ENABLED_TRUE= TASKS_ENABLED_FALSE='#' else TASKS_ENABLED_TRUE='#' TASKS_ENABLED_FALSE= fi if test "x$have_libnotify" = "xtrue"; then HAVE_LIBNOTIFY_TRUE= HAVE_LIBNOTIFY_FALSE='#' else HAVE_LIBNOTIFY_TRUE='#' HAVE_LIBNOTIFY_FALSE= fi if test "x$tasks" = "xyes"; then $as_echo "#define TASKS_ENABLED 1" >>confdefs.h fi # Checks for libwebkit pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBWEBKIT" >&5 $as_echo_n "checking for LIBWEBKIT... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBWEBKIT_CFLAGS"; then pkg_cv_LIBWEBKIT_CFLAGS="$LIBWEBKIT_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit-1.0 >= 1.1.15.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "webkit-1.0 >= 1.1.15.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBWEBKIT_CFLAGS=`$PKG_CONFIG --cflags "webkit-1.0 >= 1.1.15.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBWEBKIT_LIBS"; then pkg_cv_LIBWEBKIT_LIBS="$LIBWEBKIT_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"webkit-1.0 >= 1.1.15.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "webkit-1.0 >= 1.1.15.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBWEBKIT_LIBS=`$PKG_CONFIG --libs "webkit-1.0 >= 1.1.15.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBWEBKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "webkit-1.0 >= 1.1.15.0"` else LIBWEBKIT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "webkit-1.0 >= 1.1.15.0"` fi # Put the nasty error message in config.log where it belongs echo "$LIBWEBKIT_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libwebkit=false elif test $pkg_failed = untried; then have_libwebkit=false else LIBWEBKIT_CFLAGS=$pkg_cv_LIBWEBKIT_CFLAGS LIBWEBKIT_LIBS=$pkg_cv_LIBWEBKIT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_libwebkit=true fi if test "x$have_libwebkit" = "xtrue"; then libwebkit="yes" else libwebkit="no" fi contacts="yes"; htmlrender="no"; if test "x$have_libwebkit" = "xfalse"; then contacts="no"; else htmlrender="webkit"; contacts="yes"; $as_echo "#define HAVE_LIBWEBKIT 1" >>confdefs.h $as_echo "#define HTMLRENDER \"webkit\"" >>confdefs.h fi if test "x$libwebkit" = "xyes"; then HAVE_LIBWEBKIT_TRUE= HAVE_LIBWEBKIT_FALSE='#' else HAVE_LIBWEBKIT_TRUE='#' HAVE_LIBWEBKIT_FALSE= fi if test "x$contacts" = "xyes"; then $as_echo "#define CONTACTS_ENABLED 1" >>confdefs.h fi # Checks for Pango 1.20 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO_1_20" >&5 $as_echo_n "checking for PANGO_1_20... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PANGO_1_20_CFLAGS"; then pkg_cv_PANGO_1_20_CFLAGS="$PANGO_1_20_CFLAGS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5 ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGO_1_20_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.20" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$PANGO_1_20_LIBS"; then pkg_cv_PANGO_1_20_LIBS="$PANGO_1_20_LIBS" else if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5 ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGO_1_20_LIBS=`$PKG_CONFIG --libs "pango >= 1.20" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGO_1_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pango >= 1.20"` else PANGO_1_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pango >= 1.20"` fi # Put the nasty error message in config.log where it belongs echo "$PANGO_1_20_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } HAVE_PANGO_1_20=no elif test $pkg_failed = untried; then HAVE_PANGO_1_20=no else PANGO_1_20_CFLAGS=$pkg_cv_PANGO_1_20_CFLAGS PANGO_1_20_LIBS=$pkg_cv_PANGO_1_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_PANGO_1_20=yes fi if test "x$HAVE_PANGO_1_20" = xyes; then $as_echo "#define HAVE_PANGO_1_20 1" >>confdefs.h fi # Checks for additional options # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; debug="$enableval" else debug="no" fi if test "x$debug" = "xyes"; then BUILD_CFLAGS="-rdynamic -ggdb -g -O0" $as_echo "#define DEBUG_BUILD 1" >>confdefs.h fi # Check whether --enable-printing was given. if test "${enable_printing+set}" = set; then : enableval=$enable_printing; printing="$enableval" else printing="yes" fi if test "x$printing" = "xyes"; then $as_echo "#define PRINTING_SUPPORT 1" >>confdefs.h fi # Check whether --enable-backup was given. if test "${enable_backup+set}" = set; then : enableval=$enable_backup; backup="$enableval" else backup="yes" fi if test "x$backup" = "xyes"; then if test "x$libarchive" = "xyes"; then if test "x$libgringotts" = "xyes"; then $as_echo "#define BACKUP_SUPPORT 1" >>confdefs.h else backup="no" fi else backup="no" fi fi # Check whether --with-config-path was given. if test "${with_config_path+set}" = set; then : withval=$with_config_path; configpath=$withval fi if test x$configpath != x; then CONFIGPATH_TRUE= CONFIGPATH_FALSE='#' else CONFIGPATH_TRUE='#' CONFIGPATH_FALSE= fi # Check whether --with-config-dir was given. if test "${with_config_dir+set}" = set; then : withval=$with_config_dir; configdir=$withval fi if test x$configdir != x; then CONFIGDIR_TRUE= CONFIGDIR_FALSE='#' else CONFIGDIR_TRUE='#' CONFIGDIR_FALSE= fi CFLAGS=${CFLAGS:="$BUILD_CFLAGS -Wall $PLATFORM_CFLAGS -D_GNU_SOURCE"} CXXFLAGS=${CXXFLAGS:="$CFLAGS"} CPPFLAGS="" LIBS="$gringotts_LIBS $libarchive_LIBS" ac_config_files="$ac_config_files Makefile src/Makefile po/Makefile data/Makefile data/icons/Makefile data/icons/16x16/Makefile data/icons/22x22/Makefile data/icons/24x24/Makefile data/icons/32x32/Makefile data/icons/48x48/Makefile data/icons/scalable/Makefile data/pixmaps/Makefile data/sounds/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBARCHIVE_TRUE}" && test -z "${HAVE_LIBARCHIVE_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBARCHIVE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBICAL_TRUE}" && test -z "${HAVE_LIBICAL_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBICAL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTKSPELL_TRUE}" && test -z "${HAVE_GTKSPELL_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTKSPELL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${TASKS_ENABLED_TRUE}" && test -z "${TASKS_ENABLED_FALSE}"; then as_fn_error $? "conditional \"TASKS_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBNOTIFY_TRUE}" && test -z "${HAVE_LIBNOTIFY_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBNOTIFY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBWEBKIT_TRUE}" && test -z "${HAVE_LIBWEBKIT_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBWEBKIT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CONFIGPATH_TRUE}" && test -z "${CONFIGPATH_FALSE}"; then as_fn_error $? "conditional \"CONFIGPATH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CONFIGDIR_TRUE}" && test -z "${CONFIGDIR_FALSE}"; then as_fn_error $? "conditional \"CONFIGDIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Osmo $as_me 0.2.14, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Osmo config.status 0.2.14 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; "data/icons/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/Makefile" ;; "data/icons/16x16/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/16x16/Makefile" ;; "data/icons/22x22/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/22x22/Makefile" ;; "data/icons/24x24/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/24x24/Makefile" ;; "data/icons/32x32/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/32x32/Makefile" ;; "data/icons/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/48x48/Makefile" ;; "data/icons/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/scalable/Makefile" ;; "data/pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES data/pixmaps/Makefile" ;; "data/sounds/Makefile") CONFIG_FILES="$CONFIG_FILES data/sounds/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # WIN32 build if test "$WIN32" = "yes"; then WIN32_TRUE= WIN32_FALSE='#' else WIN32_TRUE='#' WIN32_FALSE= fi # libsqlite3: $libsqlite3 echo " Configuration: Prefix: $prefix Debug enabled: $debug Backup support: $backup (libgringotts and libarchive are required) Printing support: $printing HTML renderer: $htmlrender Enabled modules: Calendar: yes (always) Tasks: $tasks Contacts: $contacts (HTML renderer is required) Notes: $notes Optional features: gtkspell: $gtkspell libical: $libical libnotify: $libnotify libarchive: $libarchive libgringotts: $libgringotts " osmo-0.2.14/ChangeLog000664 001750 001750 00000011676 12561325524 014317 0ustar00pasppasp000000 000000 2015-08-08: version 0.2.14 * Export contacts to vCard 4.0 format (VCF) * Multiple selection in tasks, contacts and notes * Sorting by column header (#127, #85) * Task notification dialog may be disabled * Contacts CSV export/import fixes * Option to open links in the selected text in notes * A lot of bug fixes * Added translations: sr, he * Updated translations: pt_BR, cs, lt, da, pl 2014-10-15: version 0.2.12 * Support for HTML links * Improved text searching in notes * Optional fullscreen mode * Webkit support * GUI fixes and improvements * Libtar has been replaced by Libarchive * Data backup functionality is accessible from toolbar * Added --mutt-query=STRING commandline command * Maps provider can be selected (Google, Bing, OSM) * Added translations: ur, ur_PK, pt_BR, ro, te, gl, gl_es * Updated translations: ru, uk, it, de, pt_BR, cs, en_GB, fr, nl, pt 2010-03-31: version 0.2.10 * Optional horizontal (netbook-friendly) GUI * Search capability added for tasks and notes list * Configurable date format in calendar header * Options and About tabs are moved to separate windows * Read-only mode and customizable font for notes * Statistics for selected text in notes * Many GUI improvements * Added translations: en_GB, da, bg * Updated translations: cs, es, jp, pl, it, de, fr, hu, nl, zh_cn 2009-08-21: version 0.2.8 * Encrypted data backup * Exporting tasks to iCal file * Option to ignore weekend days in date calculator * Text attributes are handled now in day notes editor * Default alarm sound for task reminder * Added new calendar marker for birthdays * Slightly improved iCal support * Locale settings are used by default * Many improvements and fixes * Added translations: uk * Updated translations: it, fr, ru, jp, tr, cs, nl, es, pl 2009-03-06: version 0.2.6 * Unencrypted notes implemented * Calendar printing improvements * Spell checker support * Showing map location of selected contact using Google Maps * The order and width of columns is configurable * System tray support improvements * Selected modules can be disabled at compilation stage * Printing support is optional * Many bug fixes * Added translations: ca, el, fi, sv * Updated translations: tr, fr, de, nl, es, cs, pl 2008-09-27: version 0.2.4 * Exporting calendar events to iCal file * Preliminary calendar and tasks list printing * Improved birthdays browser * Option to save data after every modification * Global notification command for tasks * Added --tinygui commandline option * Many bug fixes and enhancements * A temporary birthday logo * Added translations: tr, ja * Updated translations: fr, pl, es, de, nl, cs 2008-07-22: version 0.2.2 * Advanced task reminder and event checker * Importing contacts from SyncML based devices (experimental) * Day notes browser with filtering and searching capabilities * A popup menu in the calendar widget * Alternative view in full year calendar * Day category can be displayed in day info panel * Personal data in calendar can be temporary hidden * A marker for current day with distance metric added * Three new event markers in calendar widget * New commandline options * A lot of improvements and bug fixes * Added Hungarian, Italian, Russian and Chinese translations * Updated German, Czech, French, Polish, Spanish and Dutch translations 2008-02-08: version 0.2.0 * Encrypted notes editor * Selected modules can be hidden * Short statistics in full year calendar * Days in full-year calendar have assigned jump-to functionality * Added jump-to button to calendar calculator * Zodiac sign name can be displayed in day info panel * Bug fixes and many small GUI changes * Added Spanish and Lithuanian translation * Updated Dutch, Czech, Portuguese, German and Polish translations 2007-12-24: version 0.1.6 * Support for iCalendar files added * Configurable day info panel * Option to change tab bar position * A temporary holiday logo * Several usability changes * Added Dutch translation * Updated Czech and Polish translations 2007-12-04: version 0.1.4 * System tray support * Birthdays browser * Windows sizes and positions are preserved between sessions * Auxiliary calendars for the previous and next month added * Current time is displayed in the day info panel * Many bug fixes and cleanups * Updated Polish translation 2007-11-17: version 0.1.2 * Arbitrary colors can be assigned to days with notes * Date calculator * Popup menu to change month in calendar * A new type of calendar mark * Many small GUI changes and updates * A lot of code rewritten * Added French, Czech and German translations * Updated Portuguese and Polish translations 2007-10-22: version 0.1.1 * Importing contacts from CSV files is now available * Multiline fields are exported correctly in CSV files * Various minor fixes and enhancements 2007-09-27: version 0.1.0 * First public release osmo-0.2.14/README.windows000664 001750 001750 00000014304 12561325524 015105 0ustar00pasppasp000000 000000 HOW TO BUILD OSMO FOR WINDOWS ============================= Goal ---- This document explains how to build OSMO for Windows. If you just want to run OSMO you do not need to follow these instructions. Just download the installer from the project page and run it. These instructions are intended for developers, translators or anybody who wants to use the latest SVN revision of OSMO on Windows. There are various ways to build an app like Osmo for Windows. Cross-compile from Linux, or use Cygwin or MinGW from MS-Windows. The Cygwin approach is the easiest but Osmo would need an X11 server running on MS-Windows. We want to get a native app without the need of an X11 server. So, we take the MinGW approach. We will install the GNU tool-chain in MS-Windows and compile the Windows app in Windows itself. Building Osmo ------------- 1- In some steps in this procedure we will need to extract TAR and LZMA files. MS-Windows does not handle these kinds of files so additional software is needed. A good, free file archive for MS-Windows that manages tar and lzma files is 7-Zip. Grab the latest version of 7-Zip in http://www.7-zip.org/ 2- Install MinGW in C:\mingw using the Automated MinGW Installer found in https://sourceforge.net/projects/mingw/ When asked about a version select 'Candidate'. When asked about components select 'Mingw base tools' and 'g++ compile' 3- Download and install MSYS-1.0.11.exe. It is available from https://sourceforge.net/projects/mingw/, section 'MSYS Base System'-> 'Current release'. In a post-install configuration step you will be asked for the location where you installed MinGW. Write c:/mingw 4- Get OSMO source code from the project page. 0.2.8 won't work, so get the SVN revision. To get the source code you will need a SVN client. MS-Windows does not include any. TortoiseSVN is a free and good SVN client. If you need, download it from http://tortoisesvn.net/downloads 4- Download GTK+ for Windows. It can be downloaded http://www.gtk.org/download-windows.html. Download the all-in-one bundle and extract it in the folder where you installed MingGW Answer 'Yes' when asked about files being overwritten. 5- If you are building a SVN revision, a SVN command-line client is needed. You can use SlikSVN ( http://www.sliksvn.com/en/download ) 6- If you are building a SVN revision you need to install some tools from http://sourceforge.net/projects/mingw/files/. To install these packages download and uncompress them into your MinGW or MSYS directory depending on the name of the package: - automake1.11-1.11-1-mingw32-bin.tar.lzma - automake-4-1-mingw32-bin.tar.lzma - autoconf-6-1-mingw32-bin.tar.lzma - autoconf-6-1-mingw32-bin.tar.lzma - perl-5.6.1_2-1-msys-1.0.11-bin.tar.lzma - m4-1.4.13-1-msys-1.0.11-bin.tar.lzma - libcrypt-1.1_1-2-msys-1.0.11-dll-0.tar.lzma 7-Install iconv-1.9.2.win32.zip and zlib-1.2.3.win32.zip from http://www.zlatkovic.com/pub/libxml/. Just uncompress into your MSYS directory as usual. 8- Install libxml: Although there is a Windows port of libxml available at http://www.zlatkovic.com/pub/libxml/, it seems there are memory management problems when it is used from MinGW. Let's build libxml - Download libxml source code from its webpage (http://xmlsoft.org/) - Uncompress it somewhere (avoid spaces in the path) and cd to it - Run $ ./configure --prefix=/mingw && make && make install 9- Uncompress Osmo source code and cd into it 10- If you are building a SVN revision run $./autogen.sh 11-Build Osmo. Run: $ ./configure --prefix=/mingw && make && make install If everything goes fine, Osmo is now ready to use. Just run 'osmo'. BUILDING THE INSTALLER ---------------------- The OSMO build provided through the OSMO project page has an automatic Windows installer built using NSIS (Nullsoft Scriptable Installer System). To build the installer, follow these steps: 1- Install latest version of NSIS. Download it from http://nsis.sourceforge.net/Download 2- Take files from MinGW directory to make the following directory structure \ |- COPYING |- osmo-0.2.8.nsi |- osmo.ico |- src | |- locale | | |- ca | | | \- LC_MESSAGES | | | \- osmo.mo | | |- cs | | | \- LC_MESSAGES | | | \- osmo.mo | | |- de | | | \- LC_MESSAGES | | | \- osmo.mo | | |- el | | | \- LC_MESSAGES | | | \- osmo.mo | | |- es | | | \- LC_MESSAGES | | | \- osmo.mo | | |- fi | | | \- LC_MESSAGES | | | \- osmo.mo | | |- fr | | | \- LC_MESSAGES | | | \- osmo.mo | | |- hu | | | \- LC_MESSAGES | | | \- osmo.mo | | |- it | | | \- LC_MESSAGES | | | \- osmo.mo | | |- ja | | | \- LC_MESSAGES | | | \- osmo.mo | | |- lt | | | \- LC_MESSAGES | | | \- osmo.mo | | |- nl | | | \- LC_MESSAGES | | | \- osmo.mo | | |- pl | | | \- LC_MESSAGES | | | \- osmo.mo | | |- pt | | | \- LC_MESSAGES | | | \- osmo.mo | | |- ru | | | \- LC_MESSAGES | | | \- osmo.mo | | |- sv | | | \- LC_MESSAGES | | | \- osmo.mo | | |- tr | | | \- LC_MESSAGES | | | \- osmo.mo | | |- zh | | | \- LC_MESSAGES | | | \- osmo.mo | | \ | |- iconv.dll | |- libglib-2.0-0.dll | |- libpangowin32-1.0-0.dll | |- intl.dll | |- libgmodule-2.0-0.dll | |- libpng12-0.dll | |- libatk-1.0-0.dll | |- libgobject-2.0-0.dll | |- libcairo-2.dll | |- libgthread-2.0-0.dll | |- osmo.exe | |- libgdk-win32-2.0-0.dll | |- libgtk-win32-2.0-0.dll | |- zlib1.dll | |- libgdk_pixbuf-2.0-0.dll | |- libpango-1.0-0.dll | |- libgio-2.0-0.dll | \- libpangocairo-1.0-0.dll \- 3- Compile osmo.nsi with NSIS FEEDBACK -------- MinGW is sometimes a little bit tricky and problems can arise. If you find a bug in Osmo or have a suggestion about the Windows port, send an email to osmo-pim-friends@lists.sourceforge.net. Your feedback is welcome. TO-DO ----- * Add optional dependencies libraries: Backup support, encrypted notes... * Detect other OSMO instances at start-up (file locks) osmo-0.2.14/configure.ac000664 001750 001750 00000017756 12561325524 015040 0ustar00pasppasp000000 000000 # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) AC_INIT([Osmo], [0.2.14], [pasp@users.sf.net]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([-Wall foreign]) AC_CONFIG_SRCDIR([src/contacts.c]) AC_CONFIG_HEADER([config.h]) AC_MSG_CHECKING(for type of build) PKG_PROG_PKG_CONFIG # Checks for enabled modules AC_ARG_WITH(contacts, [[ --without-contacts disable Contacts module]], [if test "x$withval" = "xyes" ; then contacts="yes" ; else contacts="no"; fi], contacts="yes") AC_ARG_WITH(tasks, [[ --without-tasks disable Tasks module]], [if test "x$withval" = "xyes" ; then tasks="yes" ; else tasks="no"; fi], tasks="yes") AC_ARG_WITH(notes, [[ --without-notes disable Notes module]], [if test "x$withval" = "xyes" ; then notes="yes" ; else notes="no"; fi], notes="yes") if test "x$notes" = "xyes"; then AC_DEFINE([NOTES_ENABLED], [1], [Notes module enabled]) fi # Checks for programs. SAVEDFLAGS=${CFLAGS} AC_PROG_CC CFLAGS=${SAVEDFLAGS} # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([libintl.h locale.h limits.h fcntl.h stdlib.h string.h sys/time.h unistd.h pthread.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_STRUCT_TM AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_STAT AC_FUNC_STRFTIME AC_CHECK_FUNCS([floor memset setlocale strncasecmp strstr strtol]) # Checks for msgfmt AC_PATH_PROG(MSGFMT, msgfmt, msgfmt) # Checks for libraries. AM_PATH_GTK_2_0(2.12.0,, AC_MSG_ERROR([GTK+ not found or too old (version < 2.12)])) AM_PATH_XML2(2.0.0,, AC_MSG_ERROR([You do not appear to have libxml2 installed.])) PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.6.0) # Checks for libgringotts AC_CHECK_LIB(gringotts, grg_context_initialize_defaults, [lib=yes], [lib=no]) libgringotts="no" if test "$lib" = "yes"; then libgringotts="yes" fi if test "x$lib" = "xyes"; then gringotts_LIBS="-lgringotts" AC_DEFINE([HAVE_LIBGRINGOTTS], [1], [Defined to 1 if compile with libgringotts support]) fi # Checks for libarchive PKG_CHECK_MODULES(LIBARCHIVE, libarchive >= 3.0.0, have_libarchive=true, have_libarchive=false) if test "x$have_libarchive" = "xtrue"; then libarchive="yes" libarchive_LIBS="-larchive" AC_DEFINE([HAVE_LIBARCHIVE], [1], [Defined to 1 if compile with libarchive support]) else libarchive="no" fi AM_CONDITIONAL([HAVE_LIBARCHIVE], test "x$have_libarchive" = "xtrue") # Checks for libsqlite3 #PKG_CHECK_MODULES(LIBSQLITE3, sqlite3 >= 3.7.0, have_libsqlite3=true, # have_libsqlite3=false) #if test "x$have_libsqlite3" = "xtrue"; then # AC_DEFINE([HAVE_LIBSQLITE3], [1], [Definded to 1 if compile with libsqlite3 support]) # libsqlite3="yes" #else # libsqlite3="no" #fi #AM_CONDITIONAL([HAVE_LIBSQLITE3], test "x$have_libsqlite3" = "xtrue") # Checks for libical PKG_CHECK_MODULES(LIBICAL, libical >= 0.33, have_libical=true, have_libical=false) if test "x$have_libical" = "xtrue"; then AC_DEFINE([HAVE_LIBICAL], [1], [Definded to 1 if compile with libical support]) libical="yes" else libical="no" fi AM_CONDITIONAL([HAVE_LIBICAL], test "x$have_libical" = "xtrue") # Checks for gtkspell PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.5, have_gtkspell=true, have_gtkspell=false) if test "x$have_gtkspell" = "xtrue"; then AC_DEFINE([HAVE_GTKSPELL], [1], [Definded to 1 if compile with gtkspell support]) gtkspell="yes" else gtkspell="no" fi AM_CONDITIONAL([HAVE_GTKSPELL], test "x$have_gtkspell" = "xtrue") # Checks for libnotify PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.7.0, have_libnotify7=true, have_libnotify7=false) if test "x$have_libnotify7" = "xtrue"; then AC_DEFINE([HAVE_LIBNOTIFY], [1], [Definded to 1 if compile with libnotify support]) AC_DEFINE([HAVE_LIBNOTIFY7], [1], [Definded to 1 if compile with libnotify >= 0.7.0 support]) libnotify="yes" else PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.4.4, have_libnotify=true, have_libnotify=false) if test "x$have_libnotify" = "xtrue"; then AC_DEFINE([HAVE_LIBNOTIFY], [1], [Definded to 1 if compile with libnotify support]) libnotify="yes" else libnotify="no" fi fi AM_CONDITIONAL([TASKS_ENABLED], test "x$tasks" = "xyes") AM_CONDITIONAL([HAVE_LIBNOTIFY], test "x$have_libnotify" = "xtrue") if test "x$tasks" = "xyes"; then AC_DEFINE([TASKS_ENABLED], [1], [Tasks module enabled]) fi # Checks for libwebkit PKG_CHECK_MODULES(LIBWEBKIT, webkit-1.0 >= 1.1.15.0, have_libwebkit=true, have_libwebkit=false) if test "x$have_libwebkit" = "xtrue"; then libwebkit="yes" else libwebkit="no" fi contacts="yes"; htmlrender="no"; if test "x$have_libwebkit" = "xfalse"; then contacts="no"; else htmlrender="webkit"; contacts="yes"; AC_DEFINE([HAVE_LIBWEBKIT], [1], [Definded to 1 if compile with libwebkit support]) AC_DEFINE([HTMLRENDER], ["webkit"], [HTML render type]) fi AM_CONDITIONAL([HAVE_LIBWEBKIT], test "x$libwebkit" = "xyes") if test "x$contacts" = "xyes"; then AC_DEFINE([CONTACTS_ENABLED], [1], [Contacts module enabled]) fi # Checks for Pango 1.20 PKG_CHECK_MODULES(PANGO_1_20, pango >= 1.20, [HAVE_PANGO_1_20=yes], [HAVE_PANGO_1_20=no]) if test "x$HAVE_PANGO_1_20" = xyes; then AC_DEFINE(HAVE_PANGO_1_20, 1, [Define to 1 if you have Pango-1.20]) fi # Checks for additional options AC_ARG_ENABLE( debug, [ --enable-debug=yes,no compile with debugging support (default: no)], debug="$enableval", debug="no") if test "x$debug" = "xyes"; then BUILD_CFLAGS="-rdynamic -ggdb -g -O0" AC_DEFINE([DEBUG_BUILD], [1], [Defined if doing a debug build]) fi AC_ARG_ENABLE( printing, [ --enable-printing=yes,no compile with printing support (default: yes)], printing="$enableval", printing="yes") if test "x$printing" = "xyes"; then AC_DEFINE([PRINTING_SUPPORT], [1], [Defined if printing support is enabled]) fi AC_ARG_ENABLE( backup, [ --enable-backup=yes,no compile with backup support (default: yes)], backup="$enableval", backup="yes") if test "x$backup" = "xyes"; then if test "x$libarchive" = "xyes"; then if test "x$libgringotts" = "xyes"; then AC_DEFINE([BACKUP_SUPPORT], [1], [Defined if backup support is enabled]) else backup="no" fi else backup="no" fi fi AC_ARG_WITH([config-path], AS_HELP_STRING([--with-config-path=PATH], [use a non-default config path]), [configpath=$withval AC_SUBST([configpath])]) AM_CONDITIONAL([CONFIGPATH], [test x$configpath != x]) AC_ARG_WITH([config-dir], AS_HELP_STRING([--with-config-dir=DIR], [use a non-default config directory]), [configdir=$withval AC_SUBST([configdir])]) AM_CONDITIONAL([CONFIGDIR], [test x$configdir != x]) CFLAGS=${CFLAGS:="$BUILD_CFLAGS -Wall $PLATFORM_CFLAGS -D_GNU_SOURCE"} CXXFLAGS=${CXXFLAGS:="$CFLAGS"} CPPFLAGS="" LIBS="$gringotts_LIBS $libarchive_LIBS" AC_CONFIG_FILES([ Makefile src/Makefile po/Makefile data/Makefile data/icons/Makefile data/icons/16x16/Makefile data/icons/22x22/Makefile data/icons/24x24/Makefile data/icons/32x32/Makefile data/icons/48x48/Makefile data/icons/scalable/Makefile data/pixmaps/Makefile data/sounds/Makefile ]) AC_OUTPUT # WIN32 build AM_CONDITIONAL([WIN32], test "$WIN32" = "yes") # libsqlite3: $libsqlite3 echo " Configuration: Prefix: $prefix Debug enabled: $debug Backup support: $backup (libgringotts and libarchive are required) Printing support: $printing HTML renderer: $htmlrender Enabled modules: Calendar: yes (always) Tasks: $tasks Contacts: $contacts (HTML renderer is required) Notes: $notes Optional features: gtkspell: $gtkspell libical: $libical libnotify: $libnotify libarchive: $libarchive libgringotts: $libgringotts " osmo-0.2.14/data/000775 001750 001750 00000000000 12561325527 013446 5ustar00pasppasp000000 000000 osmo-0.2.14/data/Makefile.in000664 001750 001750 00000053755 12561325527 015532 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(applicationsdir)" NROFF = nroff MANS = $(man_MANS) DATA = $(applications_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = icons pixmaps sounds applicationsdir = $(datadir)/applications applications_DATA = osmo.desktop man_MANS = osmo.1 EXTRA_DIST = $(applications_DATA) $(man_MANS) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-applicationsDATA: $(applications_DATA) @$(NORMAL_INSTALL) @list='$(applications_DATA)'; test -n "$(applicationsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(applicationsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(applicationsdir)" || 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)$(applicationsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(applicationsdir)" || exit $$?; \ done uninstall-applicationsDATA: @$(NORMAL_UNINSTALL) @list='$(applications_DATA)'; test -n "$(applicationsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(applicationsdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(MANS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(applicationsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-applicationsDATA install-man @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-applicationsDATA uninstall-man @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook uninstall-man: uninstall-man1 .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 cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am \ install-applicationsDATA install-data install-data-am \ install-data-hook install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-applicationsDATA uninstall-hook \ uninstall-man uninstall-man1 install-data-hook: uninstall-hook: # 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: osmo-0.2.14/data/utils/000775 001750 001750 00000000000 12561325524 014603 5ustar00pasppasp000000 000000 osmo-0.2.14/data/utils/osmo.vim000664 001750 001750 00000036357 12561325524 016313 0ustar00pasppasp000000 000000 " Vim syntax file " Language: C osmo extension (for version 0.2.6) " Maintainer: Piotr MÄ…ka (Sill) " Last Change: 2008-12-13 " Options: " Deprecated declarations are not highlighted by default. " let osmo_enable_deprecated = 1 " highlights deprecated declarations too (like normal declarations) " let osmo_deprecated_errors = 1 " highlights deprecated declarations as Errors syn keyword osmoFunction utl_date_get_julian_today utl_get_current_day utl_get_current_month utl_get_current_year utl_get_day_name utl_get_julian_day_name utl_get_date_name utl_get_weekend_days_in_month utl_get_weekend_days_in_month_my utl_get_days_per_year utl_gdate_to_dmy utl_julian_to_dmy utl_subtract_from_date utl_dmy_to_julian utl_calc_moon_phase utl_get_moon_phase_name utl_xml_get_int utl_xml_get_uint utl_xml_get_char utl_xml_get_str utl_xml_get_strn utl_xml_put_int utl_xml_put_uint utl_xml_put_char utl_xml_put_str utl_xml_put_strn utl_name_strcat utl_run_helper utl_run_command utl_is_valid_command utl_get_link_type utl_cairo_set_color utl_cairo_draw utl_draw_rounded_rectangle utl_draw_left_arrow syn keyword osmoFunction gui_scrolled_window_move_position gui_calendar_get_type gui_calendar_new gui_calendar_select_month gui_calendar_select_day gui_calendar_mark_day gui_calendar_tc_mark_day gui_calendar_mark_day_color gui_calendar_unmark_day gui_calendar_tc_unmark_day gui_calendar_clear_marks gui_calendar_tc_clear_marks gui_calendar_set_display_options gui_calendar_get_gdate gui_calendar_set_header_color gui_calendar_set_weekend_color gui_calendar_set_selector_color gui_calendar_set_selector_alpha gui_calendar_set_event_marker_color gui_calendar_set_today_marker_color gui_calendar_set_today_marker_alpha gui_calendar_enable_cursor gui_calendar_set_cursor_type gui_calendar_set_frame_cursor_thickness gui_calendar_set_day_note_marker_type gui_calendar_set_event_marker_type gui_calendar_set_today_marker_type gui_create_calendar syn keyword osmoFunction cal_jump_to_date calendar_set_today calendar_update_date calendar_update_note calendar_clear_text_cb enable_disable_note_buttons get_marker_symbol calendar_get_note_text calendar_create_color_selector_window calendar_create_popup_menu cal_set_day_info mark_events cal_refresh_marks update_clock update_aux_calendars calendar_store_note calendar_btn_prev_day calendar_btn_next_day calendar_btn_prev_week calendar_btn_next_week calendar_btn_prev_month calendar_btn_next_month calendar_btn_prev_year calendar_btn_next_year calendar_create_calc_window calendar_create_fullyear_window syn keyword osmoFunction calendar_display_ics ics_initialize_timezone ics_check_if_valid ics_calendar_refresh ical_events_browser ical_export read_ical_entries write_ical_entries calendar_create_jumpto_window cal_read_notes cal_write_notes cal_free_notes_list cal_add_note cal_get_note cal_remove_note cal_check_note cal_get_note_color cal_replace_note_color cal_notes_browser cal_note_remove_empty_lines calendar_create_insert_timeline_window get_seconds_for_today time_to_seconds seconds_to_time get_tm_struct current_time_to_str time_to_str get_current_hour get_current_minute get_current_second is_date_in_the_past calculate_date_time_diff get_day_of_week current_date_text calendar_get_date_name julian_to_str str_to_julian julian_to_year month_name_to_number get_current_date_distance_str get_date_time_str get_date_time_full_str parse_numeric_date utl_get_zodiac_name get_chinese_year_name free_notifications_list time_handler syn keyword osmoFunction check_contacts check_tasks_contacts create_event_checker_window gui_create_contacts show_contacts_desc_panel set_export_active contacts_select_first_position_in_list insert_photo contacts_selection_activate contacts_create_birthdays_window read_contacts_entries write_contacts_entries contacts_remove_dialog_show contacts_add_edit_dialog_show csv_get_field csv_get_line get_number_of_records export_contacts_to_file contacts_create_export_window import_contacts_show_dialog import_contacts_from_csv_file add_csv_records notes_show_selector_editor gui_create_notes update_notes_items notes_add_entry notes_edit_dialog_show notes_remove_dialog_show notes_enter_password notes_cleanup_files notes_get_filename read_notes_entries write_notes_entries syn keyword osmoFunction gui_create_window gui_add_to_notebook gui_create_about gui_save_all_data gui_save_data_and_run_command gui_quit_osmo gui_systray_initialize gui_systray_update_icon gui_systray_tooltip_update about_switch_buttons about_set_first_page gui_create_options options_switch_buttons gui_create_calendar_options_page calendar_cursor_settings_enable_disable get_visible_tabs gui_create_general_options_page get_enc_algorithm_value get_enc_hashing_value get_comp_algorithm_value get_comp_ratio_value gui_create_notes_options_page gui_create_contacts_options_page gui_create_tasks_options_page gui_create_tasks update_tasks_number task_calculate_new_date tasks_repeat_done show_tasks_desc_panel tasks_select_first_position_in_list apply_task_attributes refresh_tasks add_item_to_list get_date_color tasks_selection_activate read_tasks_entries write_tasks_entries tasks_remove_dialog_show tasks_add_edit_dialog_show tasks_print osmo_register_stock_icons prefs_get_config_filename prefs_read_config prefs_write_config calendar_create_print_window store_task_columns_info " tasks_utils.[ch] syn keyword osmoFunction tsk_set_next_cycle tsk_set_prev_cycle tsk_set_current_cycle tsk_get_next_cycle tsk_get_prev_cycle tsk_get_tasks_num tsk_get_tasks_str tsk_get_category_state tsk_get_priority_text tsk_get_priority_index tsk_get_iter tsk_get_item tsk_item_free syn keyword osmoConstant STATE_NONE STATE_CALENDAR STATE_TASKS TC_COLUMN_NAME TC_COLUMN_CALENDAR TC_COLUMN_TASKS " utils_date.[ch] syn keyword osmoFunction utl_date_get_current_julian utl_date_get_days_in_month utl_date_set_nearest_weekday " utils_date_time.[ch] syn keyword osmoFunction utl_date_time_compare " utils_gui.[ch] syn keyword osmoFunction utl_gui_font_select_cb utl_gui_get_sw_vscrollbar_width utl_gui_sw_vscrollbar_move_position utl_gui_get_column_position utl_gui_get_combobox_items utl_gui_create_category_combobox utl_gui_text_buffer_get_text_with_tags utl_gui_text_buffer_set_text_with_tags utl_gui_clear_text_buffer utl_gui_change_bg_widget_state utl_gui_create_color_swatch utl_gui_fill_iconlabel utl_gui_update_command_status utl_gui_create_dialog utl_gui_check_overwrite_file utl_gui_list_store_get_text_index utl_gui_stock_button utl_gui_stock_name_button utl_gui_stock_label_radio_button utl_gui_image_label_radio_button utl_gui_url_initialize utl_gui_url_setup utl_gui_url_insert_link utl_gui_url_remove_links " utils_time.[ch] syn keyword osmoFunction utl_time_new utl_time_new_hms utl_time_new_seconds utl_time_new_now utl_time_set_hms utl_time_set_hour utl_time_set_minute utl_time_set_second utl_time_set_seconds utl_time_get_hms utl_time_get_hour utl_time_get_minute utl_time_get_second utl_time_get_seconds utl_time_get_current_seconds utl_time_add utl_time_add_hours utl_time_add_minutes utl_time_add_seconds utl_time_subtract utl_time_subtract_hours utl_time_subtract_minutes utl_time_subtract_seconds utl_time_clamp utl_time_compare utl_time_seconds_between utl_time_print utl_time_valid utl_time_valid_hms utl_time_valid_hour utl_time_valid_minute utl_time_valid_second utl_time_valid_seconds utl_time_free syn keyword osmoTypedef GuiCalendar GuiCalendarClass GuiCalendarPrivate GuiCalendarDisplayOptions TASK_NTF CALENDAR TASKS CONTACTS NOTES OPTIONS GUI MESSAGE TASK_ITEM syn keyword osmoConstant TAG_CHAR UNKNOWN EMAIL WWW SW_MOVE_UP SW_MOVE_DOWN CURSOR_BLOCK CURSOR_FRAME EVENT_MARKER_CIRCLE EVENT_MARKER_ELLIPSE EVENT_MARKER_WAVE TODAY_MARKER_ARROW TODAY_MARKER_FREEHAND_CIRCLE GUI_CALENDAR_SHOW_HEADING GUI_CALENDAR_SHOW_DAY_NAMES GUI_CALENDAR_NO_MONTH_CHANGE GUI_CALENDAR_SHOW_WEEK_NUMBERS GUI_CALENDAR_WEEK_START_MONDAY I_COLUMN_DATE I_COLUMN_DATE_JULIAN I_COLUMN_SUMMARY I_COLUMN_FONT_WEIGHT ICAL_EVENTS_NUM_COLUMNS IE_COLUMN_DATE IE_COLUMN_DATE_JULIAN IE_COLUMN_SUMMARY IE_COLUMN_DESCRIPTION ICAL_EXPORT_NUM_COLUMNS DN_FILTER_CURRENT_MONTH DN_FILTER_SELECTED_MONTH DN_FILTER_CURRENT_YEAR DN_FILTER_SELECTED_YEAR DN_FILTER_SELECTED_MONTH_YEAR DN_FILTER_ALL_NOTES DN_COLUMN_DATE DN_COLUMN_DATE_JULIAN DN_COLUMN_NOTE_LINE DN_COLUMN_DONE DAY_NOTES_NUM_COLUMNS DATE_DD_MM_YYYY DATE_MM_DD_YYYY DATE_YYYY_MM_DD DATE_YYYY_DD_MM DATE_NAME_DAY DATE_DAY_OF_WEEK_NAME DATE_FULL TIME_HH_MM TIME_HH_MM_AMPM TIME_HH_MM_SS TIME_HH_MM_SS_AMPM TIME_TIMEZONE TIME_24 TIME_12 CE_COLUMN_DATE CE_COLUMN_DATE_JULIAN CE_COLUMN_EVENT_TYPE CE_COLUMN_EVENT_LINE CHECK_EVENTS_NUM_COLUMNS CONTACTS_FF_FIRST_NAME CONTACTS_FF_LAST_NAME CONTACTS_FF_ALL_FIELDS B_COLUMN_NAME B_COLUMN_DAYS_NUM B_COLUMN_DAYS B_COLUMN_AGE B_COLUMN_DATE B_COLUMN_ZODIAC B_COLUMN_ID BIRTHDAYS_NUM_COLUMNS EXPORT_TO_CSV EXPORT_TO_XHTML IMPORT_TYPE_FILE SELECT_ALL SELECT_NONE SELECT_INVERT N_COLUMN_NAME N_COLUMN_CATEGORY N_COLUMN_LAST_CHANGES_DATE N_COLUMN_LAST_CHANGES_DATE_JULIAN N_COLUMN_LAST_CHANGES_TIME N_COLUMN_CREATE_DATE N_COLUMN_CREATE_DATE_JULIAN N_COLUMN_CREATE_TIME N_COLUMN_EDITOR_LINE N_COLUMN_FILENAME NOTES_NUM_COLUMNS SELECTOR EDITOR PAGE_CALENDAR PAGE_TASKS PAGE_CONTACTS PAGE_NOTES PAGE_OPTIONS PAGE_ABOUT NUMBER_OF_TABS syn keyword osmoConstant TA_COLUMN_DONE TA_COLUMN_TYPE TA_COLUMN_DUE_DATE TA_COLUMN_DUE_DATE_JULIAN TA_COLUMN_DUE_TIME TA_COLUMN_START_DATE_JULIAN TA_COLUMN_DONE_DATE_JULIAN TA_COLUMN_PRIORITY TA_COLUMN_CATEGORY TA_COLUMN_SUMMARY TA_COLUMN_DESCRIPTION TA_COLUMN_COLOR TA_COLUMN_BOLD TA_COLUMN_ACTIVE TA_COLUMN_ACTIVE_WARNING TA_COLUMN_OFFLINE_IGNORE TA_COLUMN_REPEAT TA_COLUMN_REPEAT_DAY TA_COLUMN_REPEAT_MONTH_INTERVAL TA_COLUMN_REPEAT_DAY_INTERVAL TA_COLUMN_REPEAT_START_DAY TA_COLUMN_REPEAT_TIME_START TA_COLUMN_REPEAT_TIME_END TA_COLUMN_REPEAT_TIME_INTERVAL TA_COLUMN_REPEAT_COUNTER TA_COLUMN_ALARM_COMMAND TA_COLUMN_WARNING_DAYS TA_COLUMN_WARNING_TIME TA_COLUMN_POSTPONE_TIME TA_COLUMN_ID TASKS_NUM_COLUMNS COLUMN_GROUP COLUMN_FIRST_NAME COLUMN_SECOND_NAME COLUMN_LAST_NAME COLUMN_NICK_NAME COLUMN_BIRTH_DAY_DATE COLUMN_NAME_DAY_DATE COLUMN_HOME_ADDRESS COLUMN_HOME_POST_CODE COLUMN_HOME_CITY COLUMN_HOME_STATE COLUMN_HOME_COUNTRY COLUMN_WORK_ORGANIZATION COLUMN_WORK_DEPARTMENT COLUMN_WORK_ADDRESS COLUMN_WORK_POST_CODE COLUMN_WORK_CITY COLUMN_WORK_STATE COLUMN_WORK_COUNTRY COLUMN_WORK_FAX COLUMN_HOME_PHONE_1 COLUMN_HOME_PHONE_2 COLUMN_HOME_PHONE_3 COLUMN_HOME_PHONE_4 COLUMN_WORK_PHONE_1 COLUMN_WORK_PHONE_2 COLUMN_WORK_PHONE_3 COLUMN_WORK_PHONE_4 COLUMN_CELL_PHONE_1 COLUMN_CELL_PHONE_2 COLUMN_CELL_PHONE_3 COLUMN_CELL_PHONE_4 COLUMN_EMAIL_1 COLUMN_EMAIL_2 COLUMN_EMAIL_3 COLUMN_EMAIL_4 COLUMN_WWW_1 COLUMN_WWW_2 COLUMN_WWW_3 COLUMN_WWW_4 COLUMN_IM_GG COLUMN_IM_YAHOO COLUMN_IM_MSN COLUMN_IM_ICQ COLUMN_IM_AOL COLUMN_IM_JABBER COLUMN_IM_SKYPE COLUMN_IM_TLEN COLUMN_BLOG COLUMN_PHOTO COLUMN_INFO COLUMN_ID CONTACTS_NUM_COLUMNS WRT_CALENDAR_NOTES WRT_TASKS WRT_CONTACTS WRT_NOTES ICAL_COLUMN_VALID_ICON ICAL_COLUMN_NAME ICAL_COLUMN_FILENAME ICAL_COLUMN_VALID_FLAG ICAL_COLUMN_ENABLE_DESC ICAL_COLUMN_USE_YEAR OPT_PAGE_CALENDAR OPT_PAGE_TASKS OPT_PAGE_CONTACTS OPT_PAGE_NOTES OPT_PAGE_GENERAL OPT_NUMBER_OF_PAGES PORTRAIT LANDSCAPE syn keyword osmoStruct _GuiCalendar _GuiCalendarClass _GuiCalendarPrivate ics_entry ics_file note TIME osmo_prefs "syn keyword osmoMacro syn keyword osmoEnum helpers notebook_page syn keyword osmoVariable appGUI syn keyword osmoDefine COLOR_BG_OK COLOR_BG_FAIL CALENDAR_NOTES_NAME CALENDAR_DAY_CATEGORIES_NAME CALENDAR_NOTES_FILENAME JULIAN_GREGORIAN_YEAR CONTACTS_NAME CONTACTS_ENTRIES_NAME CONTACTS_GROUP_ENTRIES_NAME CONTACTS_ENTRIES_FILENAME PHOTO_SMALL PHOTO_MEDIUM PHOTO_LARGE MAX_LINE_LENGTH MAX_FIELD_LENGTH FIELD_SEPARATOR NOTES_NAME NOTES_ENTRIES_NAME NOTES_CATEGORY_ENTRIES_NAME NOTES_DIRNAME NOTES_ENTRIES_FILENAME TRANSLATION_DOMAIN MAX_MONTHS MAX_WEEKS DAYS_PER_WEEK FULL_YEAR_COLS OPAQUE BUFFER_SIZE TASKS_NAME TASKS_ENTRIES_NAME TASKS_CATEGORY_ENTRIES_NAME TASKS_ENTRIES_FILENAME MAX_SUMMARY_SIZE MAX_DATE_SIZE WHOLE_WEEK CONFIG_DIRNAME CONFIG_FILENAME CONFIG_NAME MAXNAME MAXFONTNAME MAXCOLORNAME MAXHELPERCMD MAXCONTACTFIELDS MAXADDRESS OSMO_STOCK_BUTTON_ADD OSMO_STOCK_BUTTON_CLEAR OSMO_STOCK_BUTTON_CLOSE OSMO_STOCK_BUTTON_CANCEL OSMO_STOCK_BUTTON_JUMPTO OSMO_STOCK_BUTTON_CONTACTS_EXPORT OSMO_STOCK_BUTTON_CONTACTS_IMPORT OSMO_STOCK_BUTTON_EDIT OSMO_STOCK_BUTTON_DOWN OSMO_STOCK_BUTTON_INFO OSMO_STOCK_BUTTON_INSERT_TIMELINE OSMO_STOCK_BUTTON_NEXT_YEAR OSMO_STOCK_BUTTON_NO OSMO_STOCK_BUTTON_OK OSMO_STOCK_BUTTON_OPEN OSMO_STOCK_BUTTON_PREV_YEAR OSMO_STOCK_BUTTON_REMOVE OSMO_STOCK_BUTTON_SELECT_COLOR OSMO_STOCK_BUTTON_SELECT_DATE OSMO_STOCK_BUTTON_SELECT_FONT OSMO_STOCK_BUTTON_TODAY OSMO_STOCK_BUTTON_YES OSMO_STOCK_SYSTRAY_BIRTHDAY OSMO_STOCK_SYSTRAY_NORMAL OSMO_STOCK_SYSTRAY_TASK OSMO_STOCK_ABOUT OSMO_STOCK_CALENDAR OSMO_STOCK_CLOSE OSMO_STOCK_CALCULATOR OSMO_STOCK_CONTACTS_ADD OSMO_STOCK_CONTACTS_BIRTHDAYS OSMO_STOCK_CONTACTS_EDIT OSMO_STOCK_CONTACTS_EXPORT OSMO_STOCK_CONTACTS_IMPORT OSMO_STOCK_CONTACTS_REMOVE OSMO_STOCK_CONTACTS OSMO_STOCK_EDIT_NOTE OSMO_STOCK_EDITOR_BOLD OSMO_STOCK_EDITOR_CLEAR OSMO_STOCK_EDITOR_FIND OSMO_STOCK_EDITOR_HIGHLIGHT OSMO_STOCK_EDITOR_INFO OSMO_STOCK_EDITOR_INSERT_DATE_TIME OSMO_STOCK_EDITOR_INSERT_SEPARATOR OSMO_STOCK_EDITOR_ITALIC OSMO_STOCK_EDITOR_SAVE OSMO_STOCK_EDITOR_SPELL_CHECKER OSMO_STOCK_EDITOR_STRIKETHROUGH OSMO_STOCK_EDITOR_UNDERLINE OSMO_STOCK_FULLYEAR OSMO_STOCK_HELP OSMO_STOCK_INFO_HELP OSMO_STOCK_JUMPTO OSMO_STOCK_LICENSE OSMO_STOCK_LIST_INVALID OSMO_STOCK_LIST_VALID OSMO_STOCK_NEXT_DAY OSMO_STOCK_NEXT_MONTH OSMO_STOCK_NEXT_YEAR OSMO_STOCK_NOTES_ADD OSMO_STOCK_NOTES_EDIT OSMO_STOCK_NOTES_REMOVE OSMO_STOCK_NOTES OSMO_STOCK_PREFERENCES OSMO_STOCK_PREV_DAY OSMO_STOCK_PREV_MONTH OSMO_STOCK_PREV_YEAR OSMO_STOCK_TASKS_ADD OSMO_STOCK_TASKS_EDIT OSMO_STOCK_TASKS_REMOVE OSMO_STOCK_TASKS_PREV_DAY OSMO_STOCK_TASKS_NEXT_DAY OSMO_STOCK_TASKS_TYPE_NORMAL OSMO_STOCK_TASKS_TYPE_RECURRENT OSMO_STOCK_TASKS OSMO_STOCK_TODAY OSMO_STOCK_PRINT syn keyword osmoDeprecatedFunction weeks_in_year week_number day_of_week gui_calendar_get_date get_selected_date check_note get_note get_color julian_to_date sync_cal_date_with_gdate utl_get_current_julian "syn keyword osmoDeprecatedTypedef "syn keyword osmoDeprecatedConstant syn keyword osmoDeprecatedStruct DATE "syn keyword osmoDeprecatedMacro "syn keyword osmoDeprecatedEnum "syn keyword osmoDeprecatedDefine " Default highlighting if version >= 508 || !exists("did_osmo_syntax_inits") if version < 508 let did_osmo_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink osmoFunction Function HiLink osmoTypedef Type HiLink osmoConstant Constant HiLink osmoStruct Type " HiLink osmoMacro Macro HiLink osmoEnum Type HiLink osmoVariable Identifier HiLink osmoDefine Constant if exists("osmo_deprecated_errors") HiLink osmoDeprecatedFunction Error " HiLink osmoDeprecatedTypedef Error " HiLink osmoDeprecatedConstant Error HiLink osmoDeprecatedStruct Error " HiLink osmoDeprecatedMacro Error " HiLink osmoDeprecatedEnum Error " HiLink osmoDeprecatedDefine Error elseif exists("osmo_enable_deprecated") HiLink osmoDeprecatedFunction Function " HiLink osmoDeprecatedTypedef Type " HiLink osmoDeprecatedConstant Constant HiLink osmoDeprecatedStruct Type " HiLink osmoDeprecatedMacro Macro " HiLink osmoDeprecatedEnum Type " HiLink osmoDeprecatedDefine Constant endif delcommand HiLink endif osmo-0.2.14/data/utils/README000664 001750 001750 00000000261 12561325524 015462 0ustar00pasppasp000000 000000 osmo.vim Osmo syntax for VIM editor w2o.pl Perl script to convert the wammu files to .csv osmo.nsi NSIS script to build the MS-Windows installer of Osmo osmo-0.2.14/data/utils/w2o.pl000664 001750 001750 00000002736 12561325524 015657 0ustar00pasppasp000000 000000 #!/usr/bin/perl # File: w2o.pl # Author: (c) joakim@bildrulle.nu, 2009, Mutual none-obligatory as-is license # Usage: iconv -t UTF-8 -f UTF-16 wammu-back-file | w2o.pl > imports.csv @text = ; chop @text; $text = join(' ',@text); @db = split(/\[/,$text); foreach $line (@db ) { ($id, $ln) = split(/\]/,$line); $ln =~ s/ = /=/g; $ln =~ s/"//g; $ln =~ s/\r//g; $ln =~ s/ Entry/\n/g; # print "$id - $ln\n"; %fields = (); foreach $f (split(/\n/, $ln)){ ($key, $val) = split(/=/, $f); $fields{$key} = $val; if ($val ne ""){ $key =~ s/Type/Text/g; $fields{$val} = $key; } } #DEBUG # foreach $f (keys(%fields)){ # print " $f - $fields{$f}\n"; # } # For Wammu SIM card backup print "\"$fields{$fields{'Name'}}\","; print "\"$fields{$fields{'NumberGeneral'}}\""; # For Wammu PHONE memory backup # print "\"$fields{$fields{'FirstName'}}\","; # print "\"$fields{$fields{'Company'}}\","; # print "\"$fields{$fields{'NumberWork'}}\","; # print "\"$fields{$fields{'NumberMobile'}}\","; # print "\"$fields{$fields{'NumberGeneral'}}\","; # print "\"$fields{$fields{'Email'}}\","; # print "\"$fields{$fields{'Jobtitle'}}\","; # print "\"$fields{$fields{'LUID'}}\","; # print "\"$fields{$fields{'Country'}}\","; # print "\"$fields{$fields{'Zip'}}\","; # print "\"$fields{$fields{'State'}}\","; # print "\"$fields{$fields{'Note'}}\","; # print "\"$fields{$fields{'City'}}\""; print "\n"; } osmo-0.2.14/data/utils/osmo.nsi000664 001750 001750 00000010306 12561325524 016273 0ustar00pasppasp000000 000000 # NSIS (Nullsoft Scriptable Install System) script to build the MS-Windows # installer of OSMO (http://clayo.org/osmo/) # # 2009, Nacho Alonso Gonzalez # # Script based on an example written by Joost Verburg !include "MUI2.nsh" ;General ;Name and file Name "OSMO" OutFile "osmo-0.2.8.exe" ;Default installation folder InstallDir "$PROGRAMFILES\Osmo" ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\Osmo" "" ;Request application privileges for Windows Vista RequestExecutionLevel user ;Application Icon !define MUI_ICON "osmo.ico" !define MUI_ABORTWARNING ;Pages !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "COPYING" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !define MUI_FINISHPAGE_RUN "$INSTDIR\osmo.exe" !insertmacro MUI_PAGE_FINISH ;Languages !insertmacro MUI_LANGUAGE "English" ;Default language !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "SpanishInternational" !insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "TradChinese" !insertmacro MUI_LANGUAGE "Japanese" !insertmacro MUI_LANGUAGE "Korean" !insertmacro MUI_LANGUAGE "Italian" !insertmacro MUI_LANGUAGE "Dutch" !insertmacro MUI_LANGUAGE "Danish" !insertmacro MUI_LANGUAGE "Swedish" !insertmacro MUI_LANGUAGE "Norwegian" !insertmacro MUI_LANGUAGE "NorwegianNynorsk" !insertmacro MUI_LANGUAGE "Finnish" !insertmacro MUI_LANGUAGE "Greek" !insertmacro MUI_LANGUAGE "Russian" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_LANGUAGE "PortugueseBR" !insertmacro MUI_LANGUAGE "Polish" !insertmacro MUI_LANGUAGE "Ukrainian" !insertmacro MUI_LANGUAGE "Czech" !insertmacro MUI_LANGUAGE "Slovak" !insertmacro MUI_LANGUAGE "Croatian" !insertmacro MUI_LANGUAGE "Bulgarian" !insertmacro MUI_LANGUAGE "Hungarian" !insertmacro MUI_LANGUAGE "Thai" !insertmacro MUI_LANGUAGE "Romanian" !insertmacro MUI_LANGUAGE "Latvian" !insertmacro MUI_LANGUAGE "Macedonian" !insertmacro MUI_LANGUAGE "Estonian" !insertmacro MUI_LANGUAGE "Turkish" !insertmacro MUI_LANGUAGE "Lithuanian" !insertmacro MUI_LANGUAGE "Slovenian" !insertmacro MUI_LANGUAGE "Serbian" !insertmacro MUI_LANGUAGE "SerbianLatin" !insertmacro MUI_LANGUAGE "Arabic" !insertmacro MUI_LANGUAGE "Farsi" !insertmacro MUI_LANGUAGE "Hebrew" !insertmacro MUI_LANGUAGE "Indonesian" !insertmacro MUI_LANGUAGE "Mongolian" !insertmacro MUI_LANGUAGE "Luxembourgish" !insertmacro MUI_LANGUAGE "Albanian" !insertmacro MUI_LANGUAGE "Breton" !insertmacro MUI_LANGUAGE "Belarusian" !insertmacro MUI_LANGUAGE "Icelandic" !insertmacro MUI_LANGUAGE "Malay" !insertmacro MUI_LANGUAGE "Bosnian" !insertmacro MUI_LANGUAGE "Kurdish" !insertmacro MUI_LANGUAGE "Irish" !insertmacro MUI_LANGUAGE "Uzbek" !insertmacro MUI_LANGUAGE "Galician" !insertmacro MUI_LANGUAGE "Afrikaans" !insertmacro MUI_LANGUAGE "Catalan" !insertmacro MUI_LANGUAGE "Esperanto" Section "Osmo" SecOsmo SetOutPath "$INSTDIR" File /a "osmo.ico" File /r "src\*" ;Program shortcut ; Group CreateDirectory "$SMPROGRAMS\Osmo" ; Application CreateShortCut "$SMPROGRAMS\Osmo\Osmo.lnk" "$INSTDIR\osmo.exe" "" "$INSTDIR\osmo.ico" ; Uninstaller CreateShortCut "$SMPROGRAMS\Osmo\Uninstall.lnk" "$INSTDIR\Uninstall.exe" ; Quick launch shortcut CreateShortCut "$QUICKLAUNCH\osmo.lnk" "$INSTDIR\osmo.exe" "" "$INSTDIR\osmo.ico" ;Store installation folder WriteRegStr HKCU "Software\Osmo" "" "$INSTDIR" ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;Uninstaller Section Section "Uninstall" ; Delete shortcuts Delete "$SMPROGRAMS\Osmo\Osmo.lnk" Delete "$SMPROGRAMS\Osmo\Uninstall.lnk" RMDir "$SMPROGRAMS\Osmo" ;Quick launch bar shortcut Delete "$QUICKLAUNCH\osmo.lnk" ; Delete application itself RMDir /r "$INSTDIR" DeleteRegKey /ifempty HKCU "Software\Osmo" SectionEndosmo-0.2.14/data/icons/000775 001750 001750 00000000000 12561325530 014553 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/scalable/000775 001750 001750 00000000000 12561325530 016321 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/scalable/Makefile.in000664 001750 001750 00000033220 12561325530 020366 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/scalable DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = scalable context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.svg EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/scalable/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/scalable/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/scalable/osmo.svg000664 001750 001750 00000074427 12561325524 020040 0ustar00pasppasp000000 000000 image/svg+xml osmo icon 01.09.2007 Maja Kocon http://ironya.ll.pl icon for osmo osmo-0.2.14/data/icons/scalable/Makefile.am000664 001750 001750 00000000242 12561325524 020356 0ustar00pasppasp000000 000000 themedir = $(datadir)/icons/hicolor size = scalable context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.svg EXTRA_DIST = $(icons_DATA) osmo-0.2.14/data/icons/Makefile.in000664 001750 001750 00000044241 12561325530 016625 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: @$(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 cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-data-hook 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-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-hook install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # 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: osmo-0.2.14/data/icons/22x22/000775 001750 001750 00000000000 12561325527 015340 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/22x22/Makefile.in000664 001750 001750 00000033204 12561325527 017407 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/22x22 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = 22x22 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/22x22/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/22x22/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/22x22/osmo.png000664 001750 001750 00000002311 12561325524 017015 0ustar00pasppasp000000 000000 ‰PNG  IHDRÄ´l;sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<FIDAT8Ë•ÓyL“gp–Ìÿœ‹n1q8WJéEËQ ”£PËÑÃr”£RZÎÊÑ"P‡œå Ô0`LÇ„EΨÁ¡ Ì1;ˆB•átY25š%[ÂdlJ¿{Ú%,Ôâßä}Ïû|ò{O'Nö.Üå,Pnúz³þà{1VyôU¾mI´ûÊÞ ç=/ÚkwÁ߇ÒáÅe[T J4Ö×ÁT] cA!’“!ÁƒÍ°ˆK_ öÛäÏçÁ ×£ÎTCÐ*¤§¦B&‘"$8ê$5232áëã… ß=›‚ý¼)>”I‡°/9œÈðpòë)ˆƒ¡K ‡R‚Ø( ˆ‹G0é\£N&ïyÈHK‡7—¶ìöp§Y¤"_ÈÄ> óçFL^*Co³¡~HPFC«Ñ Z¡@°@]f&8,Âi‰;–šÀ|¡‹£Gñóä'xx§÷Ç;0=h± òRÂm¹Ü©ƒ<,žîn‡p®ö±ÅÑ*Ì™pw´÷¿>ÇÚqï«ãXiÂܵL]*ÁwŸå`¬GžÚ@Pïwë’¶Õ|qJýì§oZ1{µ ×ë±0Ô€ùëu˜¬Ä4A'ûõïM×ÝJ4¸­X÷8„ÓU[·e«·?™¹aÂ÷Ãu6húr)é²·/äcâ\¶ ½ùQνBº}ý‰uϦ.HFJÔÙC7ܾZ……Gpç¢ÑšÏèðmß¿h®v'´É±·6uA\˜²÷#9Ïä29Œ\ÐÓ²C½Yï7bätÎ6…¡±ˆÝ;¨8l„_àþU*Svò…°+=2”É‹_No€Pš…ÆÆcè=y å"ÒvÙb}¶Ö®€ËS"4¯ t¾êwW†$cC˜ [©ì}ÕõçPz [Å`{FÃ|k?Ü]üOæfg!&Ã#¡ÜœNè»@sW<%}LFÐmì|[wN •pНÀNa:âÔÆup–Þ~¤<}7œ5màät[þœÊ”6o?Ö¿†×4u6ÔšW”‡AºX[kÒ’^øXamÞÒ¶‚ŸÝ*K~oXúk~û¶¨ª×`kìÁò²3kðvUü ?¶Õ×ÁT†ô©±c¯ªª^~SÝ¿;09Õ¿b*?…®ma}àü”¬¶uðìÜ‚­¦¬ê‡˜Œ#ÀØCºí{j«˜E†ÿ 7(e90¹f%,ï¤Åݶ'¦f053‚ŽŒOý?„(½ IÁ •½DöþFêZ»„,2I²© I³ K~‘Œè KöÀ•!]¡1¥2ÜÜXòGtNÔ )k'ßêIØÿwþÒX™rõ·µIEND®B`‚osmo-0.2.14/data/icons/22x22/Makefile.am000664 001750 001750 00000000236 12561325524 017372 0ustar00pasppasp000000 000000 themedir = $(datadir)/icons/hicolor size = 22x22 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) osmo-0.2.14/data/icons/windows/000775 001750 001750 00000000000 12561325524 016250 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/windows/osmo.ico000664 001750 001750 00000010276 12561325524 017727 0ustar00pasppasp000000 000000   ¨( @ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#FF&#MF&#gF&#I)!¤H'"ÝJ)"ÜI(#ñG'#üJ)$ñM,'ßJ*&ßM,'©H'$‡F&#mF&#TFF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#,H'"†J)!ÐJ*$øeC0òwS8ô]:øŠe=þ“mBÿF&#ÿ¾­˜ÿŵ¢ÿɹªÿɼ¯ÿʾ´ÿF&#ÿ›sXÿgLþY@ùqK6ô^;,òI)$ùK)"×I("”FÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH'"xL,#ô‹f@ý¨‚Xÿµgÿ«„Tÿ xAÿšr6ÿ“l,ÿg"ÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ²‡dÿ¬€Yÿ§|Oÿ¤vEÿ¡s@ÿp<ÿŽc5ÿxO+ýM+$ôI("–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿG'"ù°‰aÿ¦Lÿ‰bÿ|UÿzSÿzSÿzSÿzSÿzSÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ¯ƒ_ÿ§zPÿŸqAÿ˜h1ÿ_"ÿˆWÿŒ\ÿ–g+ÿ–i2ÿF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH("ò»“oÿ{TÿzSÿzSÿzSÿzSÿzSÿzSÿzSÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ¯ƒ_ÿ§zPÿŸq@ÿ˜h1ÿ_"ÿˆVÿˆVÿˆVÿœn6ÿF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿI(!븑lÿ}VÿzSÿzSÿzSÿzSÿzSÿzSÿzSÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ®ƒ_ÿ§zPÿŸq@ÿ—h1ÿ_!ÿˆVÿˆVÿˆVÿn7ÿF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿI)!âµiÿ€Y ÿzSÿzSÿzSÿzSÿzSÿzSÿzSÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ®ƒ_ÿ§zPÿŸq@ÿ—h1ÿ_!ÿˆVÿˆVÿˆVÿœo7ÿF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJ)!Ù²Œeÿƒ\ÿzSÿzSÿzSÿzSÿzSÿzSÿzSÿF&#ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿF&#ÿ®ƒ_ÿ§zPÿŸq@ÿ—h1ÿ_!ÿˆVÿˆVÿŽ]ÿŽd3ÿJ)"ÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJ)!Á©ƒ\ÿ”m,ÿzSÿzSÿzSÿzSÿzSÿzSÿfB ÿX;3ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿcIFÿ‚`Oÿ§zPÿŸq@ÿ—h1ÿ_!ÿˆVÿˆVÿ–g+ÿrK-úG'#}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#A^<-õ¶hÿ‰aÿzSÿzSÿzSÿzSÿqKÿM.'ÿ¾¾ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿËÉÊÿX;8ÿ‡aFÿŸq@ÿ—h1ÿ_!ÿˆVÿ‹Zÿœo8ÿP.&öF&#*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿI)!ÂyU-ûµŽfÿ‚Z ÿzSÿzSÿwQÿP/#ÿ¤™–ÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÚÛÜÿÁ¼½ÿR30ÿŠ`:ÿ—h0ÿ_!ÿŠXÿœo7ÿsK-ùJ)"¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#H(!æŒf8þ¯‰\ÿ~XÿzSÿX6ÿ}h`ÿ¶ÄÇÿ„£¨ÿU†Žÿ*juÿYcÿ*juÿU†Žÿ„£¨ÿ¶ÄÇÿ´¬¬ÿP1-ÿŠ].ÿ`"ÿ›m5ÿ…[0þI("äF&#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#'H(!ñ–p?ÿ±Š^ÿhDÿ[C:ÿ`Œ“ÿ'kwÿG†˜ÿW”«ÿe »ÿh¥ÄÿR”±ÿ<›ÿ,r…ÿ`lÿbŽ–ÿ••ÿS3,ÿ™nAÿ‘e4ÿJ)"óF&#+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#=H(!ñxT2ýB;9ÿ$fqÿU’¤ÿ‚¸Ôÿr­Îÿg¦Éÿ[žÄÿXÃÿZÃÿYÃÿXœÂÿM”ºÿ,r†ÿ$fqÿpuuÿU5,ÿI("ôF&#LÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF&#!932í#gsÿz²Ëÿ€¹×ÿe¥Éÿb£Çÿa£Çÿ`¢Æÿ^ Åÿ[žÄÿW›ÂÿS˜ÀÿR˜ÀÿP—¿ÿ<„£ÿ^iÿSSSúF&#Xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ V` Zeæ|·Ñÿ{·Õÿi¨Ëÿk©Ìÿk©Ìÿk©Ìÿj¨Ëÿg¦Êÿd¤Èÿ_¡ÆÿZžÄÿTšÁÿP—¿ÿP—¿ÿ<„£ÿYdæ V` ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZe˜U—¬øˆÂßÿo¬Îÿr®Ïÿt¯Ðÿu°Ñÿu°Ðÿs¯Ðÿp­ÎÿlªÌÿh§Êÿb£Çÿ\ŸÄÿUšÁÿP—¿ÿP—¿ÿ%nƒõYe—ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ V`,!ivõÈäÿw²Òÿx²Òÿ|´Ôÿ~¶Õÿ¶Õÿ~¶Õÿ}µÔÿy³Óÿu°Ñÿp¬Îÿj¨Ëÿc¤Èÿ\ŸÄÿTšÁÿP—¿ÿM”ºÿ[gô V`,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ V`kS—®ù¾Úÿz³Óÿ¸Öÿ…ºØÿ‡¼Ùÿ‰½Úÿˆ½Úÿ†»Ùÿ‚¹×ÿ}¶Õÿx²Òÿq­Ïÿj¨Ëÿb£ÇÿZžÄÿR˜¿ÿP—¿ÿ#lö V`kÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[f¨m±Ëÿz·Ôÿ|³Ñÿ‰½ÚÿŽÁÝÿ‘ÃÞÿ’Äßÿ’ÃÞÿÁÝÿ‹¿Ûÿ…»Øÿ¶Õÿw±Òÿp¬Îÿg§Êÿa¢ÆÿV›ÂÿP—¿ÿ3{–ÿZe¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[gßÃàÿw²Ðÿq«ÈÿÀÜÿ–ÆáÿšÉãÿœÊãÿ›Êãÿ˜ÈâÿÁÝÿ€¶Óÿs­Ëÿi¢¾ÿ[ˆŸÿ]‹£ÿk¤Âÿm§Æÿ`˜µÿ,6=ÿ 5:õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$+/ÿkž¶ÿp§Ãÿe™´ÿn¨ÇÿµÑÿŽ¿Úÿ›ÉâÿÁÛÿ|²Ïÿn¨ÇÿhžºÿAWeÿ(),ÿ*-1ÿ*-1ÿ09@ÿ\‰ ÿ.39ÿ224ÿ')-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%(,þ7EMÿ-16ÿ-27ÿd˜²ÿm¨Æÿm¨Æÿm¨Æÿm¨Æÿl¦ÄÿNoÿ),1ÿ..1ÿGEGÿNLNÿNMOÿ..0ÿ'(,ÿ::<ÿcbcÿ(,0þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%)-ø**-ÿNMOÿEEGÿ-16ÿ_ާÿm¨Æÿj£ÀÿW€–ÿ07=ÿ147ÿLJMÿjijÿUTVÿJHJÿPNPÿedfÿLKLÿhhhÿa_aÿ$04íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#.2ÓCBDÿSQTÿjjlÿVVYÿ*+/ÿ.27ÿ*+/ÿ7:>ÿ\\^ÿtstÿYWYÿ202ÿ(&(ÿ(&(ÿ(&(ÿ;9;ÿMLMÿMKMÿSRTÿ27¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ27r:=?ÿ.,.ÿ(&(ÿ-+-ÿVTVÿcbdÿ148ÿ7ADÿ'*-ÿ!27Û49ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@GG$37Ç)04ó'*-þ&(+ÿ&-1ü#15é:@ MU4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿøðààààààððøüþ?ÿÿþ?þ?þ?üüüüüüþ?þ?ÿÿ€ÿÿ€ÿÿàÿÿøÿosmo-0.2.14/data/icons/48x48/000775 001750 001750 00000000000 12561325530 015352 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/48x48/Makefile.in000664 001750 001750 00000033204 12561325530 017421 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/48x48 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = 48x48 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/48x48/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/48x48/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/48x48/osmo.png000664 001750 001750 00000006420 12561325524 017042 0ustar00pasppasp000000 000000 ‰PNG  IHDR00Wù‡bKGDÿÿÿ ½§“ ÅIDAThÞÅZytTåÿ½7óÞl™ÉF a_"‹)ŠKå—j+G{ܶ¶¶Zõø‡ÇsZ,TÊ©ËñXŽ– ¢®„(ŠÈ¦@B²ÎL2û[{¿7ïM&d,Mô˹ç{û»¿{wùÞ„ÓuC9ª«çˆ4])Øí+4]_HÛq’ ½'@ÒIrœö_Ý»÷³ÃCñ>n¨â3m<ÿ=íj¯7K©]áÍÉÉætU‡¬*ˆD¢èééF Ø­Ò¶ÇOr÷Wºu# ý¨HùÛH™Š‹ œ#‹‹¹ÂÂ8œDÂatw÷"ËŠq-ÏÛàpˆ° š››c]þG‡C ^øÁâËãrz(` jØl¼! „¥p¯h¦¨©0ï744ààבíó:òórÓ±ÝÂ6¬èyôö§l<—e)̬n ½ÖWûXŸ;{D£Q9r·Ûîv9'Ò¡{†YéϤ¤Œ¥8k?“å- s yý‰zCNŠ…?“‘r‡=˜Yh™®©®t«Û‰FeQ %™µÓ­olÄâq#c¹É ôŒUÃåëdIz–O)‹'‰Æátº‘““K³Ó°|:s®®.¢’ËÎóÜmd¬ÑC€,3†&!ÝúñDß:Œhà‚­G±cçv=v щòò äåç›qqnª¢"A†pÑÍÓÇç3ìçᱬq\’óŒÒmmm¸ÿ¦q(+ö˜Šêøê;?¶Õ ‚åĈ‚bL›>MMMhnj¦ªé÷P—Ûex1Ž Lç].à̠ÝÉŠP<Ã-WŒJ)Ï†ÍÆáâ‰ù˜9!_ë–šz¨GJy ÈES1kiiA"!^¡Ö*~’$êº:ý°û셵àÀ!¨òc¿š.lþ¨¥.̘gœDDâ¿,Å!'¢Œp˜I@¦Óù/Žváƒ}gðí±|¤paQ!tM‡BñÅÑ "ËmCB²£°¸¨d´‡À;£ ÂKÆ”e ÷Üè¡ÀUHq¢IÑ(¸<¹àí"x[ò±±H‘žNDCÌ™*`Öätãä?×áïI@’5ŒÈ±|Ñ(É屿ßM衺àtºˆ¦\î ‡>12·û&A´ÓËFäŽ(%J‰D™lNšbôB"ñßž[Œ,_>4E¢\/Q<Ä1¶‚m' ÊqcVhVÍù®kòñìÛÔ/é,at y¢f«Þ)ꚦóàxޏ›Ë:BRP6”H*b)—TŒ)¯ÒydõÚk’¥WÝ-5»Dw]MÏÔºYÅÛ2,•ØÎÛü’¬u¨-¦€fŠ©†’’ ²,‰’0,Ïαë aÊ«Iå-š ‚ ‡ ã²Im­ûöí¹s8b€±£1ŠŒt»}D…ñŠÜT@£V‚hfc9–×L«'ʆ·’`”¤hI°kØ¡ºB÷7[/$+Ê[ͧ$‡ÃaZžY]2­mZ_Ч¶ ¯°k˜Øõ ˆ)Io(©6›Žî®¸¢ªo zøÛß?¢ñÔB@W Š(J"-â)õÎRRLªi–'ÙŒ‰$ZG£5à×Ù;† ÀŸ^j?žHÄwÖÕV\>ŸéËâ™”7ÛôBJ¬˜ ±Æ‰æF‰”ú€½ã{Åãy/gT}eÍÞ—”Vd 'ѰÑJSjJÆ@²q2Óª–°IÊXY‰ÍÖè¡gœîlÙtnå°¯ÈÖQ]°ë»rnÇÇïÂéeõFëµ¾d ³º”r2#)iTbÕÚÀJUù›ÆS¨U»^ÛwIÕy-ê×>yõM×.!óîÕ4nY“x¨^KïØDF½–Ð~üÀÓÜ<ö¢¥K4žÛ 8DÏ/æv j´S&ÏF$ØŽD(hd ÎRÍÌD©,e¬Ìz9ÏRóÐ·Í èóðægÅÔ#É1U’žªÿúíUú9¾:pxäáW¨‰ZÁvʳŽaFÕÅØ`/ÆWTà»S (̲£-"£Øç¤àŠ¡!6Ù¨¾*ïD‹}~¸7Íñ£ÈÆÜYW°pçi3«ÕÔ«X©VE'±¡;Ä‘¦Fȶ ñϽù'΃ƒÚˆÎ¯?‹J=]kN|¹ùƒRˆ)¿jÕ_°ú™Õ°SãÉ.€”(,‘¸]R>N‡å㪩ϱá™U«1yÒd”ÌG™\ǘ ¬ß5-úl¼³sNž>oÑhdå•Bôä-†®«Œ#ƶàÌ‚àð€³;pâLœ: ä_‡ µEÐ*g# ëh E‘3µÚmw¸dÞ>g v È£ïÙó‘A ¿ø8©X1~&û ½½‹]i|ß¹õÖe¸®\DÙÔ2l|¿±Â;Ñ cëŽ8ôÝWðwwAáD¸|#áðBÖxtuûq´±Ÿü G>q­]½©›–¦"µÝYffõþbû”)7O9tèÍð€’œLÊ´ùË 9ulÖn@å”E¨?ò&_¼ÔX³QUU…­[þƒñ& '7³ãgP;élØ´ƒ¬Á᎖¡ªzÙÀ=ùÎÏñÒëïbÔ¬Ÿ@&jÑj¦ß5á0Fæäpî +‹Ã§O°OË2`A–À’Ñ“ bÂ<⮀©Õ7³5ŠŠŠ±`ÁBƒ\ãà{k¡ØŠìÇwô³øyÑ3iË E?W!ËÄýD[ÚŸ]Q‹¡ø‰m}ÎÿàC×ϽX»v .(-1zz›¿eµ”V«ªQòÐ+àEg?€ƒñy‘&ƒmxzÏí¤å‡68…ØðîÝ ŸÃ襷#úÍ&Ä<ù(ýÝ:ŠÏ?ÿ:;;Ó Yî½÷¾ó3æ äáàj 8ØWo‡XO7buuqÞf;<(…y¿ Øá¦ÇØ©Ëu:DøTtoˆŽ:u%Ø:횦ù9Eþ{ÂßñÝÇ¥¯úxÀæñbÜ¢þå§Q¹ävœLd¥À}úé'øä“Oú)³páB#¥ZÃÙíW=§Mt:ÐÄ2[ JÝ® "YR°%û¨¤x”ýЧEzJ4Rc‘'Ç#vE’yC“’ˆïQ¡Ý‘@˾ÿ©3t[Âtž›ô‘Hg¹_ °´¹‡Yvñ}舳4Ú”:·`Á冢–¬¦.ùkL/?O×l[oœÅ°‰Å¢],¿ýî'Y[NUˆÓi޳š­o4©R¼CJD;hMìWÔx‡šˆ¶ËR¨5øÍ_÷¦H¦žª)Æ6é 0OôðÀ¿îC“t%Ó)òôŒ:sâ³õ4±ÆIH›)Ý5SŦ¤lÎRÚ¾%ÖuÖ=ªE#»õËINNÎùål®4¥íæÌ›Êsiq¬e¢œ¥¸œ \ŸEñÕÇtÅTRŽ{“¦¶4‹óirv’ÔÒ€¨i¢d4ÐâžêÿVáØB ¯ò\Úç›tègyBK¶=ºö£ü·Ê5þ ZbZbÊ—|ËIEND®B`‚osmo-0.2.14/data/icons/48x48/Makefile.am000664 001750 001750 00000000236 12561325524 017412 0ustar00pasppasp000000 000000 themedir = $(datadir)/icons/hicolor size = 48x48 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) osmo-0.2.14/data/icons/16x16/000775 001750 001750 00000000000 12561325527 015346 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/16x16/Makefile.in000664 001750 001750 00000033204 12561325527 017415 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/16x16 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = 16x16 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/16x16/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/16x16/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/16x16/osmo.png000664 001750 001750 00000001523 12561325524 017027 0ustar00pasppasp000000 000000 ‰PNG  IHDRóÿasBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<ÐIDAT8m’ÍoTeÆï{;sç“)­#µLKkÉŒ–bkkM5FƒÊJ°r£ º`A‚’¸ñP7. dc”Ä®¸ )•E º0@?¦8tÚNç³C{ï;÷ãu#µƒsÖÏóœçür„RŠ'gj<5…\²½/Žh®Ût¥¨/(_}47Ÿ›Û«OLŽõízñ3ψt&Ãf¡€aZììló`%«”_üòÖüßçëå^ó‹#‡O™–~æØ c"ó\š­­Ù•ÌÎÞ¤Tª0:6!¤öô'£ýo?öt´¬â«ä^!,-.@)(•JX ‹ƒ‡Rby±úpà Wö ¨f•©!T¢Âù߉†ƒd2iêµ ‰ÎŽ£%Û6*sîƒÓØ–ƒ®‡Ñ#q^/róvŽåÕÏö„¨ÔWéIþgk ˆEd.vBûE:R#¬GxëÕ¶µƒëÚÔªE~š)äÚBô•ÿ[6—ó"±Övk»Bè¡Ü&¸6žYç¯ì][JïzÛ³!>ÿñêϪ\)¢Gc4mƒ†Q£ÙØÆ± ò›yîç7ƒ7“_´=áÖÝ—Î<$Å7ßËkSôõö¡kÊk,æ–¸—ßàáÖ¤ZY÷?>„=4xäødwªÿÆÑ7ßÑç~¸À{opŒ,•ê:Ý]½èÑ®ÌJ¢ã'¨Þž1­réýå…«Ó» |©]:vü„þëýÊÉ._ÏóËåi¤¼{ò<Áá—Y{d²ÿÈHÄܺñ)0½Ë@ ž C¬×ëX±}ø¦¹k0 “@¢ £Ù¤#Þ‰ðÜñVˆJ…¼>4Dª«‹vèIÄñ ”Ö „üãÚÅ µUÿèSÝ<²lÇÃv<Bމ¿‘ój3W %µ¥ˆÿ‚L+)?ö…•¾ŸFJE¥¦(å ;îyž{GøÞÅå…kühOD ÊUYŒIEND®B`‚osmo-0.2.14/data/icons/16x16/Makefile.am000664 001750 001750 00000000236 12561325524 017400 0ustar00pasppasp000000 000000 themedir = $(datadir)/icons/hicolor size = 16x16 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) osmo-0.2.14/data/icons/24x24/000775 001750 001750 00000000000 12561325527 015344 5ustar00pasppasp000000 000000 osmo-0.2.14/data/icons/24x24/Makefile.in000664 001750 001750 00000033204 12561325527 017413 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/24x24 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = 24x24 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/24x24/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/24x24/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/24x24/osmo.png000664 001750 001750 00000002621 12561325524 017025 0ustar00pasppasp000000 000000 ‰PNG  IHDRàw=øsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<IDATHÇUkh[e~Î-ç¤IÓfËÒ6i›ÚKÚÚq³sæ@enDTü1æÿ ý¥ ^DÄ âðφúÉ7†ÊÜFíÊVYY×A·e+a›éšdIÓ´9ÍÉ9'çâ›Zt½‹¼|œï{Ïó¼÷±më­Ç÷÷*ÅŠOK¦ÐÆ2Ëú¦eªn§zÑ)•Þ=õ{rp½ÿ™µº; N§ý /xzz{#5… —JÈçeär9ÌLgpï^ °f.ò¼¹çüŸþŸ êm©äy)Ýj“š›[á©ö@)(H$Èf³åªª«ͤÿózAÓÌæ±ñXz9»«Ãá© 6I.7æ 2L£„bQ¦i(Q&“ÁÄÍ \8LäÑÙõˆK˜¡Õ°VôGš¸Ü¾ŽáÛìCKK+‚õõëQSS–å`YÖ‚n‰B6>~ª¦£.ØÖ¾c[Ó+ËñøådÉ‹ #Àï÷#™Jâá!T8pˆj èî醿ƿ.–aÐÚÚ^à!ŠLMroÄÑu Ti/()èº [Âk‡ûÈbSéy|ö %Ú†ws y$Ñh”¼bÐÃ0¸À†Iî´‡Ÿîç®D38t §T¶KFâøi ö~™Üë‘0¯Ú(* îK°ÇNÈöšôuÎ(Ïîï®ÜÑ›¥/.Ïf¸IX–E~6ƒý{$ìŠqãv–r`¡n‹‹ÄO¾E2«Øæ€ç¸ñÜl~§C’ ‰'Ì’“¼D'¯Ÿ¼’±ÉS£¤Ã0u˜ºŒç÷J¼š;úµl¯[EÔLƒñdÂr»+aèEèêü¢È‹{¶A=e´«°èÌ(摘™¶ ÓÚ°L-Û:vrà”Êp\9CЋò)ió$Ê‚” 0J* ªŠèÝIÕ´¬/6$ Å4ÝxïÛŸ¿3ÝžMåüþKPö H¢þ& ÐÙ–‰s×®ZIøŒþnXE­íûü6Ëžîï¸Ñé¬Å½©|4hÊ UeRhl ¦YœœÃðD ¹¢ˆó—›å¢ªwÅnþ6¹&3Ë ·>öd?««¬ÿáÀ]lëŠ`Kµ&…%™žBb:…X2 ý>üxFÔÒeN_¹ÍXf‘(«V‘Í0¯‡"Û"uMì‰Ë£ðÎ4ÁÚÃÅb46†dò&)µuaCbwO>øø$ŒÎípú|\UX©Ÿ›¸ú%A=·Â²¾gSChdëSÏHߌŽb¶XghŒ]Ç;o½Œ][;—„2žÁ«G>‚оy±3ŠŠ|Õ˜¿tn^ͦ_ /~]’d‹ãŽõsv–öÙ’’š*jÓ‘<¸C·/­×ÉÚv“&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/icons/32x32 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iconsdir)" DATA = $(icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(datadir)/icons/hicolor size = 32x32 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/icons/32x32/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/icons/32x32/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-iconsDATA: $(icons_DATA) @$(NORMAL_INSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || 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)$(iconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ done uninstall-iconsDATA: @$(NORMAL_UNINSTALL) @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-iconsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-iconsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-iconsDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-iconsDATA # 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: osmo-0.2.14/data/icons/32x32/osmo.png000664 001750 001750 00000003746 12561325524 017034 0ustar00pasppasp000000 000000 ‰PNG  IHDR szzôsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<cIDATXõWil\WþÞ2Ë›}ñ’ñïû$v™:ŽT’¶  ©¢(H”JP!ñ‡ªU‹$ •€‚¨ÑüˆÚ ¨h„å*‘œ4‰‰ãâØiÜx‰—ÌØÏ>ófæ­œ7^h;ØÐ^éè½ysïý¾sî½ß9—Ñu;i=8žH;Nªª)X4»¦éŒÙ•çÕ¨]È÷•úÅß¼ó·ØõíÎÇl—@wW}Ðdbÿ Ö׸gïTWïÇóÈåòˆÇˆF—Y aqq6«4Á²êÑþ93ó¹èÞWÿG–ó<ÛÒÜÊÔ5ÔÃn³AÌå°´A,ƒ(æ ( \n7|/—09qK+ó§¿÷Á‡¡?ý_Žôì~Ag¿njm‡‰<¶Ùø|^¤Ri#¯>$ &“ mmmp¹œ¹ž[~qàêì©­ægÿ‹çSþ«ÒòÒ©TUO$ Ò†ÇÍh²,cddSÓÓØß}Ù÷Ëžu;&ÐÞÒbÕuëe·§„Éd²à8N§n 3ÇñDFý ¸ MÓîºÂÔÄÚƒeîüŽ ¸…:œ^—,+vjkëàõú(¤ìvjjkQQYI!7¯{¿±Ý¹ •Èy¼Õ5‡ÙýÌf}ø­È ÿŒÓ,0n—»嘥ÉnÂjá‘/( 'jë›ÐÜÒR$4>>N›Q\ï÷ûáóûL¦àòø‘LL‡>ŸÞ>™mZ\ÓävܹsñåüäÙnÔT¸ É*nMFq¶oã·ÇPVV‰žƒ=XŽD`,—Ùl¦o¥…誮B!W€ª™:wt ö´5kuÕ>fqYÃ/}ÿ”x„ûúáµY¼wá-¦ e´Y-K±ÿ EL‘ ðøühimÃÐàe}øæ'ì¶ t›ôWŸ?§`B2•…ß-ÀæôB°¹aµ9QÈg‘I.#/¦%¼Û?Ž+#a:ª+n‡ßýFxg²ÎS²¹u›Ù6çNø§_|îGµ‰xžÖ\BIiLf,0ˆ]S!r³Iäsi¤³"fB)Ú¨,j®â3žLãԛסêñòà´}Û{€h]‹Äbµ‚Ù ±C# Pä<•£30x4M)Š ,¤›…ú‘2Ê"òÚ¦Kxú« OÏ¿¿£c(ÉÒÀ\($™iMYhEpÃ[¹ ŸŠDR®h*ý§*´ÑiÕdhÆouåxF’‰œ¬(;U‹WGn(6›ƒ¼U×Á [!A¶þ-¿brá>""È$X¡xÌP©‹;"púíôh<?suøjÁI ¦,­Þ¯€¯<‹ïr~Õˆ™¶êýµOo‹tZÎóí8PØ~Ü?p>–Êf`!±ùl”µ¥(¬E`u)È4U.ŽŸ§=YJʪòüÿ”Œ>î-oµ¼õÞYˆ²‡·¼Zy-ÒÆe(PÔµuð>@\:ZBó<¹ãtÜØrü°Æ²ç¼Á.‡%<ÈötÌâ@pºš÷@Ê&Èû,ä|¦¸?VüЋY2Oúp}j‘L¼ûëèûðÄt&Ëhê·&ÆûÏm‹·øàîÇžtÕTT¢ÿƒ>4èi<ý¸ óÓWPWY ¿ËÃÁÄ!_ÂR”,™@8EûÞÇ¡[áõ7ÿŽÒCǦª)v©?èJ‘{(/!ð‘ò#Gw5640ïSNWP17…cû›ðƒ13}¡¹!g–©2Né™TJ KDµ|,bÑÀNQ¦º@Jxzr¼h[wC"c¡‡q®*ÖŒ”²Ñôƒ`Y—Ò¤v†å²tsŠ%½ª²<¥ëZˆú‡ÄHö1Éo~3ŒøéCÒaIEND®B`‚osmo-0.2.14/data/icons/32x32/Makefile.am000664 001750 001750 00000000236 12561325524 017374 0ustar00pasppasp000000 000000 themedir = $(datadir)/icons/hicolor size = 32x32 context = apps iconsdir = $(themedir)/$(size)/$(context) icons_DATA = osmo.png EXTRA_DIST = $(icons_DATA) osmo-0.2.14/data/icons/Makefile.am000664 001750 001750 00000000675 12561325524 016622 0ustar00pasppasp000000 000000 SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi osmo-0.2.14/data/pixmaps/000775 001750 001750 00000000000 12561325530 015121 5ustar00pasppasp000000 000000 osmo-0.2.14/data/pixmaps/Makefile.in000664 001750 001750 00000033103 12561325530 017166 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/pixmaps DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pixmapdir)" DATA = $(pixmap_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pixmapdir = $(datadir)/pixmaps pixmap_DATA = osmo.png EXTRA_DIST = $(pixmap_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/pixmaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pixmapDATA: $(pixmap_DATA) @$(NORMAL_INSTALL) @list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pixmapdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pixmapdir)" || 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)$(pixmapdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapdir)" || exit $$?; \ done uninstall-pixmapDATA: @$(NORMAL_UNINSTALL) @list='$(pixmap_DATA)'; test -n "$(pixmapdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pixmapdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pixmapdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pixmapDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pixmapDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am 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-pdf-am \ install-pixmapDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-pixmapDATA # 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: osmo-0.2.14/data/pixmaps/osmo.png000664 001750 001750 00000006420 12561325524 016611 0ustar00pasppasp000000 000000 ‰PNG  IHDR00Wù‡bKGDÿÿÿ ½§“ ÅIDAThÞÅZytTåÿ½7óÞl™ÉF a_"‹)ŠKå—j+G{ܶ¶¶Zõø‡ÇsZ,TÊ©ËñXŽ– ¢®„(ŠÈ¦@B²ÎL2û[{¿7ïM&d,Mô˹ç{û»¿{wùÞ„ÓuC9ª«çˆ4])Øí+4]_HÛq’ ½'@ÒIrœö_Ý»÷³ÃCñ>n¨â3m<ÿ=íj¯7K©]áÍÉÉætU‡¬*ˆD¢èééF Ø­Ò¶ÇOr÷Wºu# ý¨HùÛH™Š‹ œ#‹‹¹ÂÂ8œDÂatw÷"ËŠq-ÏÛàpˆ° š››c]þG‡C ^øÁâËãrz(` jØl¼! „¥p¯h¦¨©0ï744ààבíó:òórÓ±ÝÂ6¬èyôö§l<—e)̬n ½ÖWûXŸ;{D£Q9r·Ûîv9'Ò¡{†YéϤ¤Œ¥8k?“å- s yý‰zCNŠ…?“‘r‡=˜Yh™®©®t«Û‰FeQ %™µÓ­olÄâq#c¹É ôŒUÃåëdIz–O)‹'‰Æátº‘““K³Ó°|:s®®.¢’ËÎóÜmd¬ÑC€,3†&!ÝúñDß:Œhà‚­G±cçv=v щòò äåç›qqnª¢"A†pÑÍÓÇç3ìçᱬq\’óŒÒmmm¸ÿ¦q(+ö˜Šêøê;?¶Õ ‚åĈ‚bL›>MMMhnj¦ªé÷P—Ûex1Ž Lç].à̠ÝÉŠP<Ã-WŒJ)Ï†ÍÆáâ‰ù˜9!_ë–šz¨GJy ÈES1kiiA"!^¡Ö*~’$êº:ý°û셵àÀ!¨òc¿š.lþ¨¥.̘gœDDâ¿,Å!'¢Œp˜I@¦Óù/Žváƒ}gðí±|¤paQ!tM‡BñÅÑ "ËmCB²£°¸¨d´‡À;£ ÂKÆ”e ÷Üè¡ÀUHq¢IÑ(¸<¹àí"x[ò±±H‘žNDCÌ™*`Öätãä?×áïI@’5ŒÈ±|Ñ(É屿ßM衺àtºˆ¦\î ‡>12·û&A´ÓËFäŽ(%J‰D™lNšbôB"ñßž[Œ,_>4E¢\/Q<Ä1¶‚m' ÊqcVhVÍù®kòñìÛÔ/é,at y¢f«Þ)ꚦóàxޏ›Ë:BRP6”H*b)—TŒ)¯ÒydõÚk’¥WÝ-5»Dw]MÏÔºYÅÛ2,•ØÎÛü’¬u¨-¦€fŠ©†’’ ²,‰’0,Ïαë aÊ«Iå-š ‚ ‡ ã²Im­ûöí¹s8b€±£1ŠŒt»}D…ñŠÜT@£V‚hfc9–×L«'ʆ·’`”¤hI°kØ¡ºB÷7[/$+Ê[ͧ$‡ÃaZžY]2­mZ_Ч¶ ¯°k˜Øõ ˆ)Io(©6›Žî®¸¢ªo zøÛß?¢ñÔB@W Š(J"-â)õÎRRLªi–'ÙŒ‰$ZG£5à×Ù;† ÀŸ^j?žHÄwÖÕV\>ŸéËâ™”7ÛôBJ¬˜ ±Æ‰æF‰”ú€½ã{Åãy/gT}eÍÞ—”Vd 'ѰÑJSjJÆ@²q2Óª–°IÊXY‰ÍÖè¡gœîlÙtnå°¯ÈÖQ]°ë»rnÇÇïÂéeõFëµ¾d ³º”r2#)iTbÕÚÀJUù›ÆS¨U»^ÛwIÕy-ê×>yõM×.!óîÕ4nY“x¨^KïØDF½–Ð~üÀÓÜ<ö¢¥K4žÛ 8DÏ/æv j´S&ÏF$ØŽD(hd ÎRÍÌD©,e¬Ìz9ÏRóÐ·Í èóðægÅÔ#É1U’žªÿúíUú9¾:pxäáW¨‰ZÁvʳŽaFÕÅØ`/ÆWTà»S (̲£-"£Øç¤àŠ¡!6Ù¨¾*ïD‹}~¸7Íñ£ÈÆÜYW°pçi3«ÕÔ«X©VE'±¡;Ä‘¦Fȶ ñϽù'΃ƒÚˆÎ¯?‹J=]kN|¹ùƒRˆ)¿jÕ_°ú™Õ°SãÉ.€”(,‘¸]R>N‡å㪩ϱá™U«1yÒd”ÌG™\ǘ ¬ß5-úl¼³sNž>oÑhdå•Bôä-†®«Œ#ƶàÌ‚àð€³;pâLœ: ä_‡ µEÐ*g# ëh E‘3µÚmw¸dÞ>g v È£ïÙó‘A ¿ø8©X1~&û ½½‹]i|ß¹õÖe¸®\DÙÔ2l|¿±Â;Ñ cëŽ8ôÝWðwwAáD¸|#áðBÖxtuûq´±Ÿü G>q­]½©›–¦"µÝYffõþbû”)7O9tèÍð€’œLÊ´ùË 9ulÖn@å”E¨?ò&_¼ÔX³QUU…­[þƒñ& '7³ãgP;élØ´ƒ¬Á᎖¡ªzÙÀ=ùÎÏñÒëïbÔ¬Ÿ@&jÑj¦ß5á0Fæäpî +‹Ã§O°OË2`A–À’Ñ“ bÂ<⮀©Õ7³5ŠŠŠ±`ÁBƒ\ãà{k¡ØŠìÇwô³øyÑ3iË E?W!ËÄýD[ÚŸ]Q‹¡ø‰m}ÎÿàC×ϽX»v .(-1zz›¿eµ”V«ªQòÐ+àEg?€ƒñy‘&ƒmxzÏí¤å‡68…ØðîÝ ŸÃ襷#úÍ&Ä<ù(ýÝ:ŠÏ?ÿ:;;Ó Yî½÷¾ó3æ äáàj 8ØWo‡XO7buuqÞf;<(…y¿ Øá¦ÇØ©Ëu:DøTtoˆŽ:u%Ø:횦ù9Eþ{ÂßñÝÇ¥¯úxÀæñbÜ¢þå§Q¹ävœLd¥À}úé'øä“Oú)³páB#¥ZÃÙíW=§Mt:ÐÄ2[ JÝ® "YR°%û¨¤x”ýЧEzJ4Rc‘'Ç#vE’yC“’ˆïQ¡Ý‘@˾ÿ©3t[Âtž›ô‘Hg¹_ °´¹‡Yvñ}舳4Ú”:·`Á冢–¬¦.ùkL/?O×l[oœÅ°‰Å¢],¿ýî'Y[NUˆÓi޳š­o4©R¼CJD;hMìWÔx‡šˆ¶ËR¨5øÍ_÷¦H¦žª)Æ6é 0OôðÀ¿îC“t%Ó)òôŒ:sâ³õ4±ÆIH›)Ý5SŦ¤lÎRÚ¾%ÖuÖ=ªE#»õËINNÎùål®4¥íæÌ›Êsiq¬e¢œ¥¸œ \ŸEñÕÇtÅTRŽ{“¦¶4‹óirv’ÔÒ€¨i¢d4ÐâžêÿVáØB ¯ò\Úç›tègyBK¶=ºö£ü·Ê5þ ZbZbÊ—|ËIEND®B`‚osmo-0.2.14/data/pixmaps/Makefile.am000664 001750 001750 00000000127 12561325524 017160 0ustar00pasppasp000000 000000 pixmapdir = $(datadir)/pixmaps pixmap_DATA = osmo.png EXTRA_DIST = $(pixmap_DATA) osmo-0.2.14/data/osmo.1000664 001750 001750 00000003446 12561325524 014511 0ustar00pasppasp000000 000000 .TH "Osmo" "1" "0.2.12" "Tomasz Maka " "" .SH "NAME" .LP Osmo \- a handy personal organizer .SH "SYNTAX" .LP osmo [\fIoption\fP] .SH "DESCRIPTION" .LP Osmo is a handy personal organizer, which includes calendar, tasks manager, address book and notes modules. It was designed to be a small, easy to use and good looking PIM tool to help to manage personal information. .SH "OPTIONS" .LP .TP \fB\-c, \-\-calendar\fR Show small calendar window .TP \fB\-e, \-\-check\fR Check for events since last run .TP \fB\-d, \-\-days\fR Number of days to check forward for events (default: 0) .TP \fB\-s, \-\-config=PATH\fR Set absolute path for settings and data files .TP \fB\-q, \-\-mutt-query=STRING\fR Match contacts with given string .TP \fB\-?, \-\-help\fR Output help information and exit. .SH "FILES" .LP \fI$HOME/.osmo/calendar_notes.xml\fP \- calendar groups and notes .br \fI$HOME/.osmo/config.xml\fP \- configuration .br \fI$HOME/.osmo/contacts_records.xml\fP \- contacts data .br \fI$HOME/.osmo/ical_files.xml\fP \- active iCalendar files .br \fI$HOME/.osmo/notes_entries.xml\fP \- notes list .br \fI$HOME/.osmo/notes/*.osm\fP \- notes data files .br \fI$HOME/.osmo/tasks_entries.xml\fP \- tasks data .SH "EXAMPLES" .LP To run this program the standard way type: .LP osmo .LP To run small calendar type: .LP osmo \-c .LP To check events for two days since today type: .LP osmo \-e \-d 2 .SH "HOMEPAGE" .LP \fIhttp://clayo.org/osmo\fP .SH "AUTHORS" .LP Tomasz Maka (programming) .br Piotr Maka (programming) .br Maja Kocon (http://pinky-babble.org) (graphics) .SH "CONTRIBUTORS" .LP Markus Dahms (LibSyncML support) .br Nacho Alonso González (Windows port) osmo-0.2.14/data/sounds/000775 001750 001750 00000000000 12561325530 014753 5ustar00pasppasp000000 000000 osmo-0.2.14/data/sounds/alarm.wav000664 001750 001750 00000074742 12561325524 016607 0ustar00pasppasp000000 000000 RIFFÚyWAVEfmt "VD¬data¶y÷ÿÿÿÞÿáÿÙÿâÿ$KC¿ÿÿÿÿ3|§‰lÄÿ_ÿCÿÿ°ÿÝÿ¢ÿ†Ö0†ÿ(ÿ=ÿ¶¿ýˆëµ’­\ÿ©ý;ü6ûíùùpø÷Ûõõ°õ¨ôróó™òmòòòòñó–ýÞ ºò¸ æüúåêÒî€×ü ö Ru )÷Šíôò^ðoñ ð“ðCññ9ñ¥ðñ›ñGñÔð‰ññíñŠñ€òíñ"òD3› •,XÊw¡¡8¶ÍÀ*îQÔ ¡ƒ ÉÈäï°ñ)ñGñ¡ñÙñNò¾ð½ðQñÎñ{ñ‰ñƒñ!ñ»ñÄñ>òÓð=ó'ñWøø äúÒ n`ÕÅž9BÔa › 0 © ¼½ ×i ¤÷'ï´ñð7ò¤ñwòïñlñ†ñ—ñ²ñQñNñ@ñÔñÏñ¶òWòšñœóYñ°Dgg­‘8  ¸ŽS<·uþ ¥% <Ëò]ñ òUñ†òMñÊð|ñsñåðñ¯ñìñMò&òmò¥ñIò™ññòò°óöÀ¹ Rß ÿ IȨIaº  >Ø ” »óþ”ï—òùðäñïñ1ògò¢ñùññ+ñ†ñíñGòkòdòÌñÿñ®ðéò{ðÇù#q&xé .f_y ›jzŒ:¥ !¬ ÖE @÷^ðòíðàñõðfñ|ñÓñàñûñòñÍñ×ñJñôñWñßñÞñÖñŠòºð X 3ⶉ€ÀÃWç _Æ {’¨¹œ ¹ê 횈ñRñbñ‹ðxñ%ñqñdñÄñŒñüñ”ñ•ñÁññjòžñòiñò-ñ ôò Yàt%Ä×]Ô3«Qy« ì N¡ pýmïGòƒð^ñ÷ðñvñLñ–ñ×ð®ñÏñòKò5òòÁñšò‰ñ5óóïôú“I·­`¢ ´*ö q É Ô sš œ y ö×ðeò×ð¹ññÑñ:ñdññ‹ñÑñËñDòýñ[òò~òãñò*ò`ðL4¤ J•‹k²ju`¬(!ò þ ü “ ž —tñÐñSñùðgñ ñäñ‹ñÆñ¬ñ½ñpñ†ñèñÔñìñoñ‹òJñ†ò¼ðsõ ‹ñ ¾\$…™„m—uª_ŒE»`t ˆ8û7ï3òLð€ñ-ñ4ñ[ññ›ñŽñ°ñlñ€ñgñµñßñðñhòUñ»ò×ïöüÜÑ4•øKÔyeOÆá¥‡Ù Pq Ä} ¶ ô7ð»ñžðµñÍðñNñŸñ¨ñ¯ñ…ñ+ñ‚ñ^ñ7òÁñ9ò²ñéñÄñ‚ñ¹©à ‘b àíÏu¹´T’ô Ü 6ÏG oAáï½ñâðñmñ8ñˆñÛð<ññTñEñ–ñ¹ñ»ñJò²ñCòñÆò9ðPö‰ ²Sš‘2DðõÜÄý5TÞ xÚ ˆü 4Q°ùWïAòfð˜ñððjñ9ññHñ#ñˆñhñìñ¦ñò¼ñ¡ñòoñùòðÙþ6!Gé¨Á}ævÿ€v8^ß ›º Íâ °ðò°ðiñsðƒññöñXñ¹ñ9ññ¸ñ³ñ/ò…ñþñañòtñTòÆñ$òbÿ µg@…x“¨“WMŠ]AÆ[ .jÁïÀñ”ðHñIñLñŒñ=ñññËñžñ¤ñ¬ñ{ñ´ñVñòñÌðÇòÒïø‡ O©W˜/{ükÁwKŠ_¿D½É ™ ,øšï òhðyñ«ðVññNñwñlñÃñ\ñ¡ñ`ñ®ñjñ«ñˆñEñ‡òÏïmg^¹ý ¼íƒ±M¥‹}MŸò )F R?üñóðSñ·ð{ñºð[ñññSñ|ñlñ=ñwñJñÞñIñòñ@ò ñîòºdò °~EÈõ¸”°•ݘÎL–Lk—— ¤þOïüñˆð(ññûð:ñ ñvñ>ñ`ñ ñUñHñuñ¨ñQñòìðÚò¹ï¹ù¬#Òx¨?¦ŸÄ±ÐË›Ì3Ðù é¢ Z MöiïÐñðbñºðMñ ñ2ñ[ñ=ñLñ ñtññ²ñVñ­ñŒññGòJða0²çë¸ùɜܒǙeÃU pŠ ñéðýðð0ñ¸ðdñßð[ñ2ñSñBñBñgññ¹ññØñëð+òŒðûó Udȳx¶Õ»Ç‘Îwë^½uœš±ý+ïÂñ8ð/ñ·ð ñ/ñúðgñ%ñ‰ñHñ}ñFñZñŽñ/ñÊñÝðƒòiï&û8í-CÎ0ˆ‡Í€‚¤€ÝLõ* Ç ¢} 6õÒï ñ@ð†ñºð‡ñ ñ[ñ[ñOñ­ñ>ñ’ññ’ñ.ññLñkñÍñvðæéӨ¼ë„èVšÈÀ˜èT5z ¦Jð:ñ´ð¶ðBñØðeñÞðqñ ñpñ\ñ'ñ[ññ…ñêð¼ñºðGòCðõœ -‰ó™k·/ÊÝ܈œ‹õ‚܉:M3ûÌîÎñ×ï%ñ ðñðêðåðAñóðrññFñ-ñIñZñ-ñ¤ñÍð¤òcïÄüDÞ‰ ‚íY¹°ÎßžÒeôMƒ Àl ¦ó±ïGñÕï2ñKðñ¬ðñññXññtñ6ñ¨ñ4ñ¾ñ*ñ¤ñÌñöðm<>õ…8 &À¡äœ¯s…LI ’¡Zï6ñoð‚ðîðzðñ·ðDññ>ñ<ñ>ñsñYñ¹ñ;ñúñ¹ðò-ðöõØ @‘¿¡ã:â×ï¯Ý‰¿N¹1äVKíæù~îúñëï-ñ‘ðîðúðäðMñòðOññ]ñIñzñtñrñ™ñÞðŸò[ïÒýð£hdeËG±ÔËÍŸÆlÔ.c‚ Ï §òÊï‹ñðEñkð>ñ»ð%ñ"ññLññmñ!ñ~ñ-ññúðŸñññ«´õ !â|'»¶î«Ã½¨¿Š(k Ѹ•îeñtððØð“ð)ñ™ðEñìð1ñ*ñ,ñgññyññ³ñ ð‹òÙïdöÿ MŒ)ݺÃlèñô²õyò„ñn?‚õ¹øîò±ïñ[ðñ×ðÑð<ñððfñ ñ|ñ?ñSñWñ5ñ’ñêð¢òï¥þÙ|¥|2hÌc·¨Ö±Œßn4bƒ Fˆ ˜ñÃï€ñÚï:ñPðSñªð)ññ.ñHññ‡ññŽñèð€ñéðcñRñþðŒë oé«$/賘ù°Ô†™¸ ç'ßí[ñðZð·ðhðñðñ¾ð2ñíð-ñ8ññŒñ¾ðÏñ^ðòÙïºöÎ’ºtåîên 8 þ©W&cÿÁŒ¶øvíòoïÿðLð¾ðØð¹ðñð´ð ñºðEññðhñ@ñ&ñ¸ñ•ðwòZïÿŸª§²èhû[ Aýõôs/j© ó2 áðFïÀñ ïVñ$ðñ¦ðãð¾ð·ð×ð¿ð ñÎðñÉðŒññ€ñŸñbñÕ‡ >Ø{[+Zk'kFÎùZ3| ‚Ïí‡ñÄðkðñ?ðóð[ðÖð›ð´ðð¹ðÎð»ð0ñ˜ð¸ñ¼ðkò)ð ÷oòì NÄû;«†jmOz'väoÄèWth®÷¨ìlòÀï×ðDðHðqð!ðyðiðÎð‹ðÇðŽðÆð¶ð”ð_ñÙðLò`ïEÿjìT: €ªÎA;76œ@̳‹ó +) ]ðVîÌñ4ïÓðüïjðòï.ð9ðƒð×ð¡ðâðIððð·ð`ðßð;ñLñYV™ÅÂÞé.и L%†¢âóm 8ÌëÌïˆðoïtðåïjðæï7ðð§ðÔð·ð¤ðPðMð‚ïyð•ïpñöï°ö9‡—¡èÙ¾ÃAY`Õ§~ ?·ïÛ÷žê$ñjïëïRð"ðZðïïWðð]ð‚ðŸð.ðð³ï‡ïðŒïƒñhï¶þ¬ô‡Ñ¢=¡úøó¾£˜Ï¢€‰ ÕïüëPñõî+ð¸ïðèï£ïêïððóïEðóï ð»ï3ðÍï6ðRðàðT¨‘ÿ,s:,çÿÛÝøfœþêEî3ð¼îðŸïºïyïðÏïÓïíï ð!ððjðíïðùîiðÅî¾õÆÎZKG[Œt\z"ì,ã,ó§l$§øaé~ï5ïïqïïÍï)ïfïVïÊïÉï ð ððºïï»ïïvðµîþ!ïý?n·?ø½—PX9¼¾® Þ !ðEê0ðèî§ïZïšïHï5ïsï`ïíï(ð%ðtï˜ïBï³ïšïÜïð9ñ£É”la…ÞŠv,qš°‚ù™=‹Bëríéðtïžï/ïRïÜîï“ïñïïhï¦ïdïLïFï„ð¥ï´ðpï÷¹öáXÉØ1ø¥j›¥9†s¿Þ €œ;8øûé;ð˜ðï÷îÍîîöî`ïLï‚ï®ïÍïï”ïð ðð ð"ñ7ïþvb«¢Òç¿Øz)—Ú)s>dö¿ ñÐêÑð÷ïxï-ïïÍîóî+ï˜ï¢ïzïÝïcï4ïþîvï…ïêïµïñ9‚!³S¢$V¹|Ör”@/´F²‚&ëÏëð”ï¨ïPï&ï“î¤î}îÈî5ïtïgïùîï¹îï"ï"ñõïÁöÚ{n+«¤jFÓ¡v8¢9ã^¢ÝÆsÕùXéOí-ðJïï¶ï±ïpïtï·îJîííòímîÊî î(ðñåïŸïÈîjüàÆ=Ì‚ùÿ¤^q]žÎ{6À¬±­£ ‰ô×ê^ïðrïîëí¢í0íÉí]îÌîìîî‘ícïðäïZð9ñhðbð}¦'¸Ð,ŽãnârxÞˆî(Ç˳#å"‚ï„êÉí&î‹îõîØî¤îïüî²îï}ï¶îRîæî„îäîïðÉïëõO ¢´Þ¤P–ÇG·£xàoæÀ•âç‚Âý™ëƒêêíÚîgîlîºî©î ïïVïáîEîËíõì’ícîóíîEïÏï3û•iö ­ÛèH·Ý£¶^øÝ(¹ $øêwë1ïµïVíyì¨ìüìÂíìí6î%ïðÌïÞïÑïÃïÊï/ð‡ïôï_ç^ ¹Õ›+Ö<NÉØ¥¼ùuÙs©‰ñ‡éåëaî&ï”îCîîéíçíGîÅî ïkî¬íœíqíîIî1îîÜô Kÿä=¿÷Èw”B*>2VÚ©–K†îøé~ìeîMî^ííÈíeî9î'îÿíCîàîhïÚïûï*ïÃíÓíïîNù Àr 6roJ˜­KÆaT,RnžÆ xù?ëëDî‡î0í;íÂí·íãìÑìˆíþíeî}î_î«íîÔî†ï¦ï¶ðâþÒÃÏmU ˜hw#¥rÜåCÑ É >K¶ô¥ê`ë›íïíÞìÕë^ë³ìjîåî¥î/îÜí“î³ïŠïiïï¹î íÙò)àÊ ‚$ß3õnMU!Ž{Ë2aÒTlNñåê¥ë'í„ííWìSìPíñíªîeï{ï9ïïÝîgî\îßîñïÜð ùp ÇÖXxC4½;S+ŠJD5¬ „  Ì Oáú&ð\ïíòõjõ…ô:ôaô½ô õýô+õ€õ*õ3õgõ€õÔõ·ö#÷÷÷¨þ‚ï ' Å  6 *  ùµ˜”W½:õ­iA ÄûøFøÇù±úÃúqú*ú'úNúúßúû+û&ûû)ûeû}û‡û”ûý_á7Ûü ܇S?%Á‘u‹‘PöϤ@`þ§ýÎýþ5þ.þ/þBþdþ“þ°þÇþºþšþŠþŽþ±þÍþØþÖþìþÿ|þÔ¼¿Ã¾´Ÿ’“xcaY[WQ5õÿÌÿ¾ÿÀÿÊÿÃÿÄÿÂÿÙÿÖÿÜÿåÿïÿ÷ÿøÿÄÿ×ÿÜÿ¦ÿ×ÿõÿêÿðÿ"ls5îÿÎÿŒÿ[ÿ‘ÿïÿK¸ÿËÿ\%ÿ¶ÿÙØ›F…Xnšñ\ < Ä R è  “  è õ  8Sô‡îoñVò(òôñDòOò€ñ­ñ òòïòôò÷òò–ñòvñ™óûð¦ý= × "¤ å \PJê Å  sΰ ä$ ñí}òòõñzñ§ñ¨ñØñ.ñzñšðñîðññ­ðÔñ4ñ òÕðqò‚ñô ¡Ï hsêeH: Ÿ(pK²† h—ü„ï<ò.ñòJñ¦ñ?ñ‰ðñ[ñòÁñò=òûñ2ò²ñ ò&ñËòðnúCeÙ lû œ·G„O”Kð Ì ^c Ó( â |ö¯ðrò·ðýñ%ñ¯ñ™ñ÷ñ¿ñ”ñ×ñ®ñ‰ññòAñ(òcñ_ñGò§ðÃÉ< 9{ø¾ÄFó ¶ ã ¦ jFCzýv šÊ?ñ§ññÖðCñ˜ðAñ¦ðZñÿñ¥òmòiò9ò ñ ò,ñÝñ#ñiò8ðCôO ˜ñ ®ÝPæ:› ò ¢ ƒ Ô T ‚uz’ü˜ï|ò ð>ñ’ðÚðñßð—ñ]ñjòNò`òòåñìñÕñEò.ñöò¼ïÔû–ï½BŠn­Cé º È <· 2j ˜ÿ F Ïô×ð3ò´ðéñåð{ñ ññ>ñ|ñªñ­ñçñ{ñ=òò„òæñZòiò‹ñÒG A!Ç’ì¸csú *µ ¨ Ò sÁ ŠðßñBñlñ®ñIñ­ññwñPññ”ñûñÁñ¯ñtòäñ¯ò]ñóžðíõ \ì Öœ 4Í Óºÿѧy;Ý· ø  ÷ ª æ Z ú¡ï„òñpòò÷ñHñ'ññÿð$ñÅðeñGñûñòlò§òÎñ<óîï9þò#©9è O‘£ Ì!â´§5P ø ò pý8òIïŽð¡ï³ððï—ðìï ðÄïžïÞïøïûï ð^òó-ô‡ó9ôôô›ŠÛ‰é‹ý+' x6-Ïø > V Ô û ¿ ‹þ«íãï¯îˆïäïÙïCðÈïÞï°ïÞï}ï°ïÑïò¬óæòô ó õtòÄù /iÚ›ÚMA`7r +JS ¿ ê ¾ î Z ° “öYí,ð³îðQïéïÔïÔïàï®ïœïÇï ðšïÃòóZóÆóóšôõñÍ&ç&v8EðRn5lÃN²?  ü 9 g ü ÉðâîcïºîÊï,ïÛïïÌïŸïïïÑïðFð$ðêòóóíò×óZó•ôî uì¢að0>íÝÈú['zÜ Å ³ ö † ¯ý³í,ð¸îVï]ï¢ïðÞï5ð¸ïðÇï9ðÏïðò#ó˜óò˜ô ñµú´µN"JÓXÿ8  Çb€ü U ` ÷ < " }õêíJðuîªïï‘ï¬ï¼ïåïÁïåï–ïòïœïEðTò‹óóJó*ôèñ?UÀY¸°»5s,E#Q<î%€ª , % D ˆ|ØïWï~ïåî¨ïïÕïyï¡ï¯ï¾ïÄïµï%ðØïœð‹òôÄò<ô~òAõ* Ü©l2Zy|JV"BÿžY Ó © %æû¾íoð¡î†ï:ïQï¥ïXï·ï‘ïÛïÍïÇïëïáïRð§òÍó¥òœô(ñPüŸk©÷ZHÆOX* D&Ô e Å ± 0 âóBî ðˆîÐïÒî ïSï‹ï·ïªïÞïÇïÏïµïñï ðó;óQóêóò,`³ƒP»Jr2l M•5 a Z åÈþî»ïï+ï‡ïûî·ï%ï¸ïˆïÓï¹ïÌï®ï­ïòïíïWóÀò?ô8ònöÍ Ž h8;Oà€€sDmб “ / ž êùí0ðmî¢ïìîvïbï>ïœï[ïÈïvïð™ïðÛïIðMóÿòô[ñAþ—xÞšÀ6ÏGžDk- Z­™à  Ÿ Ø ·gò4îÍïî´ïïéïEï ï~ï‡ï»ï‘ïð‰ïAðï­ð©ò­óóÅòð®ÝƒsäaŠ›i¥DOb Ÿ Ïú6î—ïíîï[ï2ï›ï4ïžïNï¡ï‘ï¾ïâï™ï*ðSïãð2ò|ôÄñá÷­LŒroÉ{–‚Wcpìvë£4 ¸ õ JøYí"ð[îqïï_ïTïeïˆïiï²ï’ïÞïšïäïÐïªï¯ðzò‹ôñéÿüJ#ýªà¼f¢Rs:[N}³ø^ YVñ‡î²ïŠî‘ïñîwï0ï‘ïcï—ï”ï¤ï·ïï ðwï!ððVó^ó=ó’•Ř~ °Ë–Œˆ^8™f*¿i êZÿ°íöïÏî"ï'ïïRï0ïŒï[ï¬ïtï¼ï{ï¹ïßïvï*ðšïôªñÚøY>UeŽI•÷u¥fupVõ½Öæç » µ Ãö[ígðXî†ï­îIïïVï{ïkïªïfï¹ïTïçïgï¶ï‰ïÌïüóñ¶Ç@Öÿ©ñp½\žtH×ön |ðØî¹ïˆîoï–îvïíîvï=ïnïyïMï”ï6ïÕïïùïÄîÉð¸òkóµ ã„Õxj¸ñÜ¢ãpÖsÆ`­‡dô á‡þÒì&ðŒî ïüîàîPïÜîhïúîuïEï\ïwïRï·ïïð”îÏññ†ùds{¼ŒrŒ3µðȇÍ[Ç0ØßÛSA ¹õÍì<ðæí{ï¦îLïïï=ïïï7ïžï_ïïïoïËïï”ñÂðj³í«&¤ …«o¦Dé @KQï}îKï îyï–îtïÌîBïï9ïqï9ïžï5ï²ïï ïï¤ïðkó¿ ,ñGŸkÍ á—ç̃¾Ð”"§emýgì×ïî¿îØî°î%ïµî&ïÍîDï ïIïIï=ï„ïêî°ïžîgðŠîÓùY’ì ÓºÍXì+ëæë”æKM žl Šô{ì+ð°íLï\îïðîõîïïî2ïòîhïï˜ï=ïTïzïïŠð€î’UçÄ/3cÈ%È"źɳk(b6# ÷ígîuïüíGï>îKïÛîBïùî)ï ïïjïïÇïçî½ïÞîþï>ïjñ‡ ˆsŧöîÍýÊ„ÙZ¶oGþëð/îˆî×îŽîIïòîZïøîJïïmï^ïiï«ïïÝï€î©ðœíð÷5odÉÆ« °óÔÃÉsÊ.ûK=Gãj7õmë‡ðfíûîgîÿîïÿî&ïýîaïïƒï=ï®ï^ï=ïOï±îSðgí«5±ÙCœò]é<Òѳ¦Xc˜¢d ›îníÃïyíïîâî‡îÞî¥îÄîæîÚîKïï¢ïßî]ïºî‰ï8ïLð¦ ø°Š?ÉŠe…Q‰Pñ–®þÔfÄXKRëFï~îüíÕî.îÜîHî­îeî»î°îÁîñîøîTï³îBïJîð½ítöOïk»óÐ9»z˜]ˆ_îWÝoá>Ñ¥÷uëóïwí®î®î{î}î(îî>îpîLîîWîˆî’î»îâîKî“ï“íÿµ »]BÒeå¶Ô¾¿˜³Ãn±×Ü:V_ Kðí-ïí´î&î‚îîîPîVîCî"îFîî‡îèí»î8îïÄîð„q®ï·ºº¢ÇV‡žÚ†¤hàÈ~ÐafƒGì²îÔí’íUîÓíuî)î¦îVîUîXîƒîîDîQîßíšî“í;ïí“ö¿Ãñ±d›Å”ÀÝ’Á¨ê ®Fy®´Œ÷ýëëïöìí’íÿíSî$î6îî{î'îîÔí#îïíÒíî¦í+ïOíÿsbÜ4>‹ú¬æyƒ¬Ú#u«ª3Ù aðòí-ðjì±íYíüíÈíî6îFî…îQîqîî îpíîíîÔíéï щÛ}cDž.%°ºíÚ&HiYæw‹ì<ð€ïoìoí.í|íùì^í}íãí÷íÍíííî>î¯íî”í±îêìöivåÔýãWnYZêýÒháò„7°øTëÃñïîuì*ííYíríísí¶íòíFî!î.îî-înîùí‚î{íéþàà`)¦E`=¼’½Âu®’IªC ˆðTíÓò¹îþì.ícíÅíÂí„ímíáí&î[î@î î¨í»íiížî î¿ðýy AVn0w™†’Œ¤2ÞóPB%Yaæë[ïiòÆî/íÓíÓíJí/íéìí#í„íÙí¼í¶íhíûíŽíîí=÷ÎÞÜ ÁмØUTþ«yßð¨)ÚCŠø•ê½ïáð/îíÒí+íví¤ííçíí™ííîjî7î(îqí›îÍíÚý*ÜVŒ#s“±(y*ÌÏÎ'½Sh%„ òìÂñ#ñ1î<ì—í{í‚í©ííîéí¿íríƒíîòí¼ìåí%íþïk÷C1Z©s=‚®#Dÿç°ÎÆô÷7îcí€ð½ð§î¦ìNíçìúì ìÊëZíYîîí%ì ìîÉíÔíÇìxõ .'c¢Ú¨Ê˜n^ ÀòråØ˜8Uûâë¾î×ðÝð¥îìëOìí¹í«íèì'ìàëìÝëWìgíî/ïöïœïÏûìÌ)Uòßæ0Mþî“fï©NÇè¯ õSëVðPòÃñûí«êåêeëìÛìGíyícíÊìåì8í™í.í íÍìÜïäc$›ññCF0.úbѸ u»‘…”¹»dðîêèí|ï;ðéîÚì³ìòìŒìèì©í&îèí²ìaëPë¨ì_íáíXìMóB Æß_f^~Û™xø–y‘»#Ýåþ#í™ëÛîIðóïî<ì`ìŒì^ì†ì‹ì°ì í/í¦ìBìñë ì8íŽíùR ;ßþÝïܸüÑ$|ŠÊ([Ñ5K A÷¶éðëðððDð™îØë—ë9ìbì+ìÚëŸëÄê"ë˜ìíYììµëwïÖ¬Lê ê<^”•TäcÊk Hi9mçÌò3ëÔìïîßï”ðAïììiëë¢ëìeí†íFìãêÅê ëtìOì$óš¹i«T½õ«CnDÁ¤‡.) &ó¼Ê%ðEìÿíUïêîï1îMì!ì²ëCë“ëìfìkìsìMìñëïë+íMî·ùÀ =¢b:pÖÌ{Ø'ܶкk@Ö̽ .ú5ìkëÃî¾ðyðað©îGìgì`ìKë¸êóê¨ë–ìTíÑí°í”íGíËïcþÄßrè¦òûH[X&ÓºW­gAönîPïyñ&òò òóï€íÄíhî îîÀîïÎï ðàð^ñòò²öR[ à ò ‰o ¼ K ú Æ  ­ ^ 4 º # L ïîúCùöùÃúæúœú×úHú¸ø§ø9ùrù€ù{ù’ù­ùÕùúcúÕúûšýeFû!!`§‚Eˬ†U$øë×½íÊþ¯þ ÿWÿuÿlÿvÿÿ7þþNþTþ\þcþiþrþ€þ‘þ©þäÿðÿÜÿ@ÿäþËþ®þ¬þ¤þ’þŽþÄþÿ_ÿ¦ÿ®ÿBÿzþôüûøúJúŽùMùÞøIù^ú<ú%úù„øžø)ø¨÷¾öòõP÷]¾1¶  ?l¥ "Nï ‘ S † f ‡ è c  ú vóßìóPñŒò òÞñ×ñ¨ñlñÙðþòô@ôáôJõ£õ-ö”õVõOô†ó¹‡AˆÚ÷NymoY O  • Î 0 ™ 2 3 Ù‰î‡ïâïXðÕðððùïöð.ññ¾òMõ0õÆôÇô°ópôóôô#óÁø†nÍáHf¨µBºÎE i §  9 t µ Î ­ ­ AøèìIð»î»ïžïôïœðÖðþð¢ðqðÿñ¢ôqô"ôýó×ó+ô¤óñô‡òÍÿEOŒŠ HÞ •¡«  : R f · ¹ Å V QïñDïlð‹ï°ðþïØðð^ð÷ïyð¨ïüðó4óÓó?ó$ôÄójôgô"ôå‹,ë°Wôqß –Mæ F  Ê í Z $ 3 × ÞÿÍîŸðSï^ïŸï~ï ð(ð´ðKðbð2ðùñºóÛóòópóô›òzô8òºø—FÛå§ÑR"亪qÄ â Ü Y Ñ Á  – ¨ ¼÷Çíïðóî:ð`ï*ðíðvðÈð•ð¬ðð-ò\ôkô4ôMôLô¯óÞôàñ*ÿvëo{ö„‚÷ÅU¿ Ó á c z ¯ } õâðBïÕï"ï;ðuï¾ðð¶ðlð^ðÂðjðòõó˜ô;ôõôKõOôÑôŽ aæ\ÝÛz&Yz޶ |  n ‡ š j ‚ Øý÷í_ðDï²ïÁïªï‰ðñðñuðÁð#ñéð\òsôYôôõôÈõòõú…û"žÃ6rYˤ B 7 ? è û P Û âõîˆðÚîð¤ïäïËï™ðÝð²ðôðññ0ò®ô;ô}ô¢ôIô1õò$KÆXue9¿êg>HÍs ° - L ” ‰ É 9¥ïCï“ï(ïðïeïôï³ïçðïðñúðüðàð;òyô¹óµôuóÏômó°õ“ 6ï‹Ï.yú)÷ ;a ñ º  b h Ì øûcíð¦î¬ïWïjïÃïïvðèðäð‘ð ñxð6òkôô”ôTóLõ'ò=üŒÇÃö…:—®‘nqNB â I B 7 À Û ôßíóï«îÕïìî·ïïÑï­ïŸðíðZðëðð_ò1ô…ô]ô^ôºô®òÍ—uö‰pa[ Ãw¬K ¸ Y Ž Êüî}ï4ïýî^ïï¼ïkïßï“ï¹ðÝðîð+ñlð‹òïóÇô ó+õ+ó³ö~ ÐÒJB qºmy*Jì¼ì i  Ü – 1 oúˆí€ðÉî›ïWïyï–ïfïsï]ï@ðÆðÛðªð ð$òûóZô„ó7õÛñþMj¹hõŠÇ˜°‡Ê0$n²ú „ Ñ Ò < ¤äò=îöï…î´ï ïqï;ïLïXï\ïŒïŒðüðªðÓðáñnô˜ó<ô]ôGóÒÉ ’§ýÇÎéϹ‘$"B0Ÿ ‰ ¢ ¡ ,ó1îGï¿îÍî"ïøîNïýîMïCï•ïŠïaðàðõðòðòñ·ôVó:õÆòøô‹³µb¦¿¶‰‡:E.è ô »   ” aøíÚï.îZï®î4ï2ïïfïjï¦ï\ïHð•ð!ñ¥ð3ò”ôŒó1õúñÅÿF£ö8%ª»P¤N¸5Vï c R d=ñ$îTï@îjï~îaïáîAï9ï…ï„ï\ïþïEðYñAðòôHôôÛóýÿžaÜþ¾È`Æ7<ï5' 4 ÿ ï PÿjíïzîðîïÚî6ïÇîUïïïJï’ï¨ï8ðbñFðÍòóõòoùg쬬k¦SÇóÀ—³C‹Ý{šÊ n 3 ¢ –öîìÐïîIïî/ïçîþî>ï ïyï8ï¼ïVï?ðóðŸðcòÖóûô%òØð©Ð;!Ě쎭bmH‡~H Ÿ Ì îï#îâîî:ï•îVïëîJï#ïHïaïqï³ïCï ðMðúð–ñªô§óÆôh ”Cáuèýùà뢳T°p&eù Ò ÷ ýþìFïèí¯î³î»î ïÏîïêîXï=ïšïsïcïïüïððWñ|õ(ò5ûœ´qó šÉIï É«]±g¦6†Ó % ¸ Ÿô í;ï™íïNîïÖîéîïùîwïHï·ïPïï0ïðmðò-õeòàG³EKu2âHÐ"ž¯w†šˆ·€¢- Ÿ Çî^îzîîëîqîQïªî)ïýî!ïjïMï•ï7ï§ïï&ð¹ïöòšóÔõ Àcú±Ù.Û ¨Ì‚ËrÌn2AÎ A ûVìEï¹í«î{î¸îþîºî/ïìî;ï%ï_ïBï\ï‚ï+ïðQïNó6ò¡ü³Ö–þ:²]é ßàÊžàBúï©V ” _ó˜ì+ïwíåî#îÊîŸîðîÿîï.ïïuïï¤ïDïŽï›ïzï“òÏòEöÙd˜šFKį̈ΫhçöK‚¨¡Üí îXîÖíÀîîÁîîïØîïïï]ïï¶ï÷îåï÷îðáð›öc Yæ¨)ðWm1!õ¤öqᔊà\1Ëùìë8ïcí~îGî\îÁî“îæî½îøîàî?ï$ïQï`ïþî¾ï½î|ð6ï¼ýР:b Ž1R-%ìÀàr4JCß, ƒñ¼ìæîíÊî³íÀîŽî“î·î¦î×îåîTïï”ïéî\ïïSïÞïg¦&š!Ê3¬B{69Äì§¿tuPÓ®-ì[î·ísíVîíçî=î¡îŠî£îÅîÿî6ï ï‡ï®î¨ïgîCð-îýòwïYw«j–ŸZ€84Â$°õüKûê=ïÓìî¨íûí¤î.î«îyî¼î¶îïõî4ïAïÜî¥ïIî³ðâìAúp1ÄÅyAÝWxFE àrI/yø„ô óÓë ï½ì‹î§íŸîhîŠî½î«îßîÀî1ïÉînïìîOï?ïßîðÇí[˜¼ëÓêÄa¬4p^ÿ+úÃ?V­¬æ„7îLî*î\íîÌí­îî³îuîÃî©î®îñî©îYï›îƒïŒî²ïQîîñ` ¥*†U•회ƒ<ŽqÚ2éúStýâìÎï;íìíÞí÷í:îî€î6îÄîtî¶î¶îÈîïºî`ï^î@ðíqùŠÓ…Éäq³5žézm‚8nòn¢£(ËÕ <õîØïüì(î_í,îÖíî%î*î¡îbîÀî„îçî‘îïÅîëî³ïÿí¡q‰‚@ø4Òƒ©[tRMoÅ̧ñ:Ýï@ð¬îfíðí*í$î–íîÆí(îOîhî¥îfîÑî2î=ï)îÊï2îDò Þ˜•])"6»ÚX·MÄFdLf ý9îÇñPí,î˜í:íëíyíî•íîîlî_î`îwî'îëî÷íðÝì®ù`‹¨à^#')S;ò™åB±%Ûô„ïò³ìÀî€í^í…íxíÑí‡íæíÎí<îüíUîúíLîBîEîï—í¡× Â]~Ù‹ÓL†SJ úÓ"nUŒ`¸eï¶ñ#ñÃì¢îœíVííìsíií€í í³ííí¿íDî¹í‚îÄíæî›íÊñ "¦ u)ëg/ñ˜·`w[åÝÈå8W‰ý7í;óåï(íîóí9íšì]í"í‹í…í½í¿íÈí"îÉíqî­íïªì6ùø#• qYdúÑ·ew&líRÂX_ 4óôåí™ó"ïŒí‚íGî\í©ì&íí†íqí¾í‘íÐí±íÏíÊíËíVî‹íHSf ¸ ¬(Ù#±¯zqtW™/Øc¬öòîöïïòÿî‘í4í@î‡íÞìªìí2í6íƒíUí í+í®íí îüì®ñÿ ÌÈ “ÅGºjhï£ÎtΗ¬ ý‚©ýFìëñâñ=ïDííìí£ííGìàìÉìí6í\í{í%íÄíýìhîFì9ùD…ñ ¤@NDOcŒ><ãìqNì0Þôíìó`ñ¿ï%í2í¦íÄíUíTì‡ììêìÔì_ííJí`íIíÒí”íUæu³ \Ÿ9~x6*«AJù¹r%ЦÓÀîÄîÕòñÝïí*íeí¬í|í—ì/ì‹ì·ì®ìMíÛìhíàìÃííìâñÅ Ä– s$µ¼“HÐ¥ËDzïäëìOSDþøë¢ð+ò3ñØïRííDí£í”íëìì|ì’ì»ìíÏì/íìáíXì£ø³!† ºôødkÛ{€(]é€NxDöÝë¼ñ¼ñGñßïµíÞì7íˆírí í:ì%ì_ìžì‹ìÈì°ì½ìQík혞J¿ ®9:ûDœ°¨Aë••;­ŒæQzð%íò„ññåïÓí}ìíCí$ííFì×ë ìxì/ì›ì;ì íQìúð;N<Æ`÷(tÙãCB¶ÜÄ¿|'˶í—îòkñìðøïÍíAìÔìøìííŠìÀëàë,ìïë*ììíæëïöO‹šFåu÷S! .Õ}ëEûcùÒëÉïÖñJñ½ð ðÅí_ì¬ìâìôìÔì¯ì»ë–ëçëøëàëìrìûìPþ6Oqkhõ6œGó š}e<(u“c Æòìð¹ñ-ñÊð1ðÍícìoìØìáì·ì¯ì¾ë@ëUëÊë[ëìµëMðà:i}$MFÎs >0£páV[Hç8»žîíÿðÈññÁðð¹í?ì8ìœì¹ì¼ì™ì"ì=ë$ë£ëAëìQëqõû )[qÁxh@ÿ«K.M{%Ÿ¹4•=‚ûìõíýðWñrð~ðêïÅí4ììì°ì£ìyìjìZëëGëcë­ënìü;‹½Z·Ÿ&Ó…YxbÐÌÓ6ÃK ’õåëpîÚðùðð>ð®ïÓíRì ìwìÊìÐìÃìÙì ìyë ëÌë‚ëï f=:"?Ö©[þËìÑ»p/Ô{hð<ëIîaððQïˆï"ïøíúìÞìPí~íƒísí‘í)í_ìÒë‡ì ììôÕ ßa‚ê¼Ó×m@¹‰NGN2H¾Â{¹ÃTýùìë,îÐïPïÆîËî»îJîÇí¨íÓíêíáíîííÏíÿìyìŸì±íxû)Èná¤eŠflÑýÙáÅÑù*1?LÉ ¶öãê6ë(îEïªîGîdî†îGîîüí î+î7î`î0î@îFí˜ìqìÃðuý.¯Äþ¾Ú*?Ú ç\ð…è êÄìdíÚìjì]ìmìdìŠìeìnì^ìEìqì™ìÒìWìwíŸîÚö Mò‘›ß®¥~ˆ¦Š°‡‰;”ÁZ_ ÚüZì^èÁê(í9íªì7ìDì[ìaìnìMìsìhìrìbì„ìì¤ì[îNðBü0…•º·$”Ç¢ž‰yˆwŽ9˜}Î^ ÷öíécè ë í í˜ìFìuìˆì{ì‚ìnìpìMì{ìiì¡ì€ìŸì@îÞò6àÿ4…ã?¶˜djl³Ë°Š‘^š³‰îò¹èÐè¡ë íÙìaì?ì‡ì¨ì®ìì[ìAì9ìkì`ìììžì‚î÷î¬N.æV¹ªnZXp‡¢²§»¢›  þŠîrèºé=ì2íéìeì<ìaì•ì¢ì²ìŸì|ìHì=ìHì2ìrì?ìï)ü» UšütÅ¿¥Œˆk{‰§¡Ê©³©ìkø*ìËè®ê©ì?ííµì¯ìÍìùìíMí|í¸íæíöíîþíNî%îÔóÖ÷Öåç>Q3ùƤv4Ï«v“OŒ’ N‹öÂð}ðsòó¶ózóXó{ó óÝóçó÷óônô¯ôßôðôüô2õ9õûó¦ Ñ t N   / !  òãÚÊ­n\µð²Vþíø~÷øQùžù¼ù›ù˜ù ù«ùÊùßùÿùôùúú0úLúxú©úâúZÿpàÏÎK8;TK?$ ëöýóÅ܉¼õ£ýùûü‡ü:ýAýBýýý,ýFýWý[ýhýcýzýuý„ýkýlýŽý¬ýΰñÑåúíëýó๨¹ÆÈìÙyþ*þeþþ½þ§þ§þ¦þ¼þÇþ¿þºþ¾þÙþùþ ÿÿýþ×þáþðþøþ)÷Ê̽Á¾²¦˜ž¢£š€~}{~go8Ãÿosmo-0.2.14/data/sounds/Makefile.in000664 001750 001750 00000033105 12561325530 017022 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = data/sounds DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(soundsdir)" DATA = $(sounds_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ soundsdir = $(datadir)/sounds/osmo sounds_DATA = alarm.wav EXTRA_DIST = $(sounds_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/sounds/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign data/sounds/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-soundsDATA: $(sounds_DATA) @$(NORMAL_INSTALL) @list='$(sounds_DATA)'; test -n "$(soundsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(soundsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(soundsdir)" || 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)$(soundsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(soundsdir)" || exit $$?; \ done uninstall-soundsDATA: @$(NORMAL_UNINSTALL) @list='$(sounds_DATA)'; test -n "$(soundsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(soundsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(soundsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-soundsDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-soundsDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am 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-pdf-am \ install-ps install-ps-am install-soundsDATA install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-soundsDATA # 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: osmo-0.2.14/data/sounds/Makefile.am000664 001750 001750 00000000134 12561325524 017010 0ustar00pasppasp000000 000000 soundsdir = $(datadir)/sounds/osmo sounds_DATA = alarm.wav EXTRA_DIST = $(sounds_DATA) osmo-0.2.14/data/osmo.desktop000664 001750 001750 00000000624 12561325524 016015 0ustar00pasppasp000000 000000 [Desktop Entry] Version=1.0 Type=Application Name=Osmo Name[tr]=Osmo Comment=Personal Organizer Comment[fr]=Agenda Personnel Comment[pl]=Organizer osobisty Comment[tr]=KiÅŸisel Düzenleyici Comment[de]=Persönlicher Zeitplaner GenericName=Osmo Exec=osmo Icon=osmo Categories=GTK;Office;Calendar;ContactManagement; Terminal=false Keywords=calendar;office;pim;contacts;management;schedule;notes;organizer; osmo-0.2.14/data/Makefile.am000664 001750 001750 00000000323 12561325524 015475 0ustar00pasppasp000000 000000 SUBDIRS = icons pixmaps sounds applicationsdir = $(datadir)/applications applications_DATA = osmo.desktop man_MANS = osmo.1 EXTRA_DIST = $(applications_DATA) $(man_MANS) install-data-hook: uninstall-hook: osmo-0.2.14/m4/000775 001750 001750 00000000000 12561325523 013051 5ustar00pasppasp000000 000000 osmo-0.2.14/m4/pkg.m4000664 001750 001750 00000012145 12561325523 014077 0ustar00pasppasp000000 000000 # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES osmo-0.2.14/m4/libxml2.m4000664 001750 001750 00000017310 12561325523 014666 0ustar00pasppasp000000 000000 # Configure paths for LIBXML2 # Mike Hommey 2004-06-19 # use CPPFLAGS instead of CFLAGS # Toshio Kuratomi 2001-04-21 # Adapted from: # Configure paths for GLIB # Owen Taylor 97-11-3 dnl AM_PATH_XML2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for XML, and define XML_CPPFLAGS and XML_LIBS dnl AC_DEFUN([AM_PATH_XML2],[ AC_ARG_WITH(xml-prefix, [ --with-xml-prefix=PFX Prefix where libxml is installed (optional)], xml_config_prefix="$withval", xml_config_prefix="") AC_ARG_WITH(xml-exec-prefix, [ --with-xml-exec-prefix=PFX Exec prefix where libxml is installed (optional)], xml_config_exec_prefix="$withval", xml_config_exec_prefix="") AC_ARG_ENABLE(xmltest, [ --disable-xmltest Do not try to compile and run a test LIBXML program],, enable_xmltest=yes) if test x$xml_config_exec_prefix != x ; then xml_config_args="$xml_config_args" if test x${XML2_CONFIG+set} != xset ; then XML2_CONFIG=$xml_config_exec_prefix/bin/xml2-config fi fi if test x$xml_config_prefix != x ; then xml_config_args="$xml_config_args --prefix=$xml_config_prefix" if test x${XML2_CONFIG+set} != xset ; then XML2_CONFIG=$xml_config_prefix/bin/xml2-config fi fi AC_PATH_PROG(XML2_CONFIG, xml2-config, no) min_xml_version=ifelse([$1], ,2.0.0,[$1]) AC_MSG_CHECKING(for libxml - version >= $min_xml_version) no_xml="" if test "$XML2_CONFIG" = "no" ; then no_xml=yes else XML_CPPFLAGS=`$XML2_CONFIG $xml_config_args --cflags` XML_LIBS=`$XML2_CONFIG $xml_config_args --libs` xml_config_major_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` xml_config_minor_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` xml_config_micro_version=`$XML2_CONFIG $xml_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_xmltest" = "xyes" ; then ac_save_CPPFLAGS="$CPPFLAGS" ac_save_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS" LIBS="$XML_LIBS $LIBS" dnl dnl Now check if the installed libxml is sufficiently new. dnl (Also sanity checks the results of xml2-config to some extent) dnl rm -f conf.xmltest AC_TRY_RUN([ #include #include #include #include int main() { int xml_major_version, xml_minor_version, xml_micro_version; int major, minor, micro; char *tmp_version; system("touch conf.xmltest"); /* Capture xml2-config output via autoconf/configure variables */ /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = (char *)strdup("$min_xml_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string from xml2-config\n", "$min_xml_version"); exit(1); } free(tmp_version); /* Capture the version information from the header files */ tmp_version = (char *)strdup(LIBXML_DOTTED_VERSION); if (sscanf(tmp_version, "%d.%d.%d", &xml_major_version, &xml_minor_version, &xml_micro_version) != 3) { printf("%s, bad version string from libxml includes\n", "LIBXML_DOTTED_VERSION"); exit(1); } free(tmp_version); /* Compare xml2-config output to the libxml headers */ if ((xml_major_version != $xml_config_major_version) || (xml_minor_version != $xml_config_minor_version) || (xml_micro_version != $xml_config_micro_version)) { printf("*** libxml header files (version %d.%d.%d) do not match\n", xml_major_version, xml_minor_version, xml_micro_version); printf("*** xml2-config (version %d.%d.%d)\n", $xml_config_major_version, $xml_config_minor_version, $xml_config_micro_version); return 1; } /* Compare the headers to the library to make sure we match */ /* Less than ideal -- doesn't provide us with return value feedback, * only exits if there's a serious mismatch between header and library. */ LIBXML_TEST_VERSION; /* Test that the library is greater than our minimum version */ if ((xml_major_version > major) || ((xml_major_version == major) && (xml_minor_version > minor)) || ((xml_major_version == major) && (xml_minor_version == minor) && (xml_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of libxml (%d.%d.%d) was found.\n", xml_major_version, xml_minor_version, xml_micro_version); printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the xml2-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n"); printf("*** correct copy of xml2-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } return 1; } ],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_xml" = x ; then AC_MSG_RESULT(yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$XML2_CONFIG" = "no" ; then echo "*** The xml2-config script installed by LIBXML could not be found" echo "*** If libxml was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the XML2_CONFIG environment variable to the" echo "*** full path to xml2-config." else if test -f conf.xmltest ; then : else echo "*** Could not run libxml test program, checking why..." CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS" LIBS="$LIBS $XML_LIBS" AC_TRY_LINK([ #include #include ], [ LIBXML_TEST_VERSION; return 0;], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding LIBXML or finding the wrong" echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means LIBXML was incorrectly installed" echo "*** or that you have moved LIBXML since it was installed. In the latter case, you" echo "*** may want to edit the xml2-config script: $XML2_CONFIG" ]) CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" fi fi XML_CPPFLAGS="" XML_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(XML_CPPFLAGS) AC_SUBST(XML_LIBS) rm -f conf.xmltest ]) osmo-0.2.14/m4/gtk-2.0.m4000664 001750 001750 00000016554 12561325523 014410 0ustar00pasppasp000000 000000 # Configure paths for GTK+ # Owen Taylor 1997-2001 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, dnl pass to pkg-config dnl AC_DEFUN([AM_PATH_GTK_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], , enable_gtktest=yes) pkg_config_args=gtk+-2.0 for module in . $4 do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK+ is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.gtktest AC_TRY_RUN([ #include #include #include int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" AC_TRY_LINK([ #include #include ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) rm -f conf.gtktest ]) osmo-0.2.14/install-sh000755 001750 001750 00000033255 12561325530 014541 0ustar00pasppasp000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # 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: osmo-0.2.14/missing000755 001750 001750 00000015330 12561325530 014126 0ustar00pasppasp000000 000000 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # 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. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # 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: osmo-0.2.14/README000664 001750 001750 00000006347 12561325647 013432 0ustar00pasppasp000000 000000 ----------------------------------------------------------------------------- ----- O S M O (handy personal organizer) ----- ----- ----- ----- version 0.2.14 ----- ----------------------------------------------------------------------------- -----> WHAT ? Osmo is a handy personal organizer, which includes calendar, tasks manager, address book and notes modules. It was designed to be a small, easy to use and good looking PIM tool to help to manage personal information. In its current state the organizer is quite convenient to use - for example, the user can perform nearly all operations using the keyboard. Also, a lot of parameters are configurable to meet the user's preferences. On the technical side, Osmo is GTK+ based tool which uses a plain XML database to store all personal data. Currently, Osmo has the following features: * General: o compact interface o configurable GUI layout (horizontal/vertical) o encrypted private data backup * Calendar: o day notes with text attributes (italic, bold, underline, etc.) o date calculator o built-in full year calendar o compact mode o auxiliary calendars for next and previous month o basic iCalendar support (import/export) o integration with Tasks and Contacts modules * Tasks: o advanced reminder o alarm actions per task (commands, sounds, etc.) o tasks list printing o category filter o due date modification on the fly o basic iCalendar support (export) o date dependent task coloring * Contacts: o robust search functionality o birthdays browser o addresses location on the map o basic import/export filters (csv, xhtml) * Notes: o handy notes selector o category filter o optional encryption using user-defined password o text attributes (italic, bold, underline, etc.) -----> WHERE ? Homepage: http://clayo.org/osmo -----> WHO ? Programming: Tomasz Maka Piotr Maka Graphics: Maja Kocon (http://pinky-babble.org) Contributors: Markus Dahms Nacho Alonso González Maxim Gordienko -----> DEPENDENCIES ? Required packages: * GTK+ - The GIMP Toolkit library, version >= 2.12 * LibXML 2 library Optional packages: * Libnotify library, version >= 0.4.4 * Libwebkit library, version >= 1.1.15.0 * Libical library, version >= 0.33 * Libarchive library, version >= 3.0.0 * Libgringotts library, version >= 1.2.1 -----> FEEDBACK ? Please subscribe to our osmo-pim-friends mailing list here: http://sourceforge.net/p/osmo-pim/mailman Also, please use following trackers to help us to improve the Osmo: Bugs - http://sourceforge.net/p/osmo-pim/bugs Feature requests - http://sourceforge.net/p/osmo-pim/feature-requests Any suggestions, patches, criticism are kindly welcome. osmo-0.2.14/AUTHORS000664 001750 001750 00000002700 12561325524 013601 0ustar00pasppasp000000 000000 Authors ------- Tomasz Maka (Programming) Piotr Maka (Programming) Maja Kocon (http://pinky-babble.org) (Graphics) Contributors ------------ LibSyncML support, fixes: Markus Dahms Windows port: Nacho Alonso González Mutt query command: Maarten Faddegon GUI fixes and updates: Maxim Gordienko Borrowed code ------------- - The calendar widget is slighty modified version of standard GTK+ calendar widget developed by GTK+ Development Team - Routines to get and put text with tags into text view widget have been written by Michael Terry, the author of xpad (http://xpad.sf.net) - Case insensitive text find routine (gtksourceiter.[ch]) by Paolo Maggi and Jeroen Zwartepoorte Bug reports and patches ------------------------ Bruno Miguel Andrea Antolini Nacho Alonso González Pierre-Emmanuel André W. Goesgens Tiger!P Eike Nicklas Omair Eshkenazi Lylliann Essandre Michael Pusterhofer Norm Pierce Christoph Wickert Markus Koschany osmo-0.2.14/depcomp000755 001750 001750 00000056016 12561325530 014112 0ustar00pasppasp000000 000000 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, 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, 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. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # 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: osmo-0.2.14/FAQ000664 001750 001750 00000002571 12561325524 013071 0ustar00pasppasp000000 000000 =============================================================================== Q: Does Osmo support data synchronization with online services? A: Unfortunately no. Because of lack of our interest in such feature we do not plan to work on it. Any patches related to data synchronization functionality are welcome. =============================================================================== Q: I get the following message on console when I run Osmo: java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode Does Osmo require Java? A: No, this message is generated by Java plugin for Webkit. Because Osmo uses Webkit for HTML rendering such output is generated during initialization. =============================================================================== Q: Osmo looks as ugly as Windows 3.x application. What's wrong with the GUI? A: Osmo uses Gtk+ v2 Toolkit for the GUI. Currently, many applications use Gtk+ v3 with dedicated themes ignored by Gtk+ v2 applications. To get the consistent look of Osmo with other Gtk+ v3 applications you have to use the theme dedicated for both versions of Gtk+. For example, try to use the clearlooks-phenix-theme. =============================================================================== osmo-0.2.14/aclocal.m4000664 001750 001750 00000122027 12561325526 014400 0ustar00pasppasp000000 000000 # generated automatically by aclocal 1.14.1 -*- Autoconf -*- # Copyright (C) 1996-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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-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_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # 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.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.14.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # 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.14.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-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_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # 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. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # 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_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-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. # 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]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. 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 dnl mangled by Autoconf and run in a shell conditional statement. 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. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # 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_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-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. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # 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_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-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_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # 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_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. 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. # # 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_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-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_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # 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_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-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_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-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_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gtk-2.0.m4]) m4_include([m4/libxml2.m4]) m4_include([m4/pkg.m4]) osmo-0.2.14/COPYING000664 001750 001750 00000043076 12561325524 013577 0ustar00pasppasp000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. osmo-0.2.14/po/000775 001750 001750 00000000000 12561325530 013145 5ustar00pasppasp000000 000000 osmo-0.2.14/po/ur.po000664 001750 001750 00000126424 12561325524 014147 0ustar00pasppasp000000 000000 # Urdu translation of Osmo # This file is distributed under the same license as the Osmo package. # Muhammad Ali Makki , 2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-04-07 00:59+0500\n" "Last-Translator: Muhammad Ali Makki \n" "Language-Team: urducoder.com \n" "Language: ur\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" msgid "About" msgstr "بابت" msgid "Close" msgstr "بند کریں" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "Ø³Ø§Ø¨Ù‚Û Ù¹ÛŒØ¨ پر منتقل ÛÙˆÚº" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "اگلے ٹیب پر منتقل ÛÙˆÚº" msgid "switch to selected page" msgstr "منتخب Ú©Ø±Ø¯Û ØµÙØ­Û پر منتقل ÛÙˆÚº" msgid "show options window" msgstr "اختیارات کا Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "show about window" msgstr "بابت کا Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "اختیارات اور بابت ٹیب میں ØµÙØ­Û Ú©Ùˆ بدلیں" msgid "exit" msgstr "برخاست" msgid "Space" msgstr "خلاء" msgid "select current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® منتخب کریں" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "ذاتی ڈیٹا روئیت معکوس کریں" msgid "Arrows" msgstr "تیر" msgid "change day" msgstr "دن تبدیل کریں" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "دن Ú©Û’ معلوماتی پینل Ú©Û’ مواد Ú©Ùˆ سکرول کریں" msgid "change month" msgstr "Ù…Ø§Û ØªØ¨Ø¯ÛŒÙ„ کریں" msgid "Home/End" msgstr "گھر/آخر" msgid "change year" msgstr "سال تبدیل کریں" msgid "toggle calendars for the previous and next month" msgstr "Ú¯Ø²Ø´ØªÛ Ø§ÙˆØ± Ø¢Ø¦Ù†Ø¯Û Ù…Ø§Û Ú©ÛŒ تقویم Ú©Ùˆ Ø¸Ø§ÛØ± یا غائب کریں" msgid "day notes browser" msgstr "دن نوٹس براؤزر" msgid "assign background color to day note" msgstr "دن نوٹ Ú©Ùˆ پس منظر رنگ دیں" msgid "date calculator" msgstr "تاریخ شمار کنندÛ" msgid "show full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم دکھائیں" msgid "jump to date" msgstr "تاریخ پر جائیں" msgid "Delete" msgstr "حذÙ" msgid "remove day note" msgstr "دن کا نوٹ حذ٠کریں" msgid "Alt+Arrows" msgstr "Alt+Arrows" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "مدون بند کریں" msgid "toggle bold" msgstr "چوڑائی معکوس کریں" msgid "toggle italic" msgstr "ٹیڑھا معکوس کریں" msgid "toggle underline" msgstr "خط Ú©Ø´ÛŒØ¯Û Ù…Ø¹Ú©ÙˆØ³ کریں" msgid "toggle strikethrough" msgstr "خط مقطوع منعکس کریں" msgid "toggle highlight" msgstr "نشان زدگی معکوس کریں" msgid "Arrows Up/Down" msgstr "تیر اوپر/نیچے" msgid "toggle alternative view" msgstr "متبادل منظر معکوس کریں" msgid "year info" msgstr "سال Ú©ÛŒ معلومات" msgid "set current year" msgstr "Ø­Ø§Ù„ÛŒÛ Ø³Ø§Ù„ مرتب کریں" msgid "close full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم بند کریں" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "Ù…ÛÙ… شامل کریں" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "Ù…ÛÙ… مدون کریں" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "Ù…ÛÙ… حذ٠کریں" msgid "toggle hidden tasks" msgstr "Ù¾ÙˆØ´ÛŒØ¯Û Ù…Ûمیں معکوس کریں" msgid "activate search field" msgstr "تلاش Ú©Û’ حلقے ÙØ¹Ø§Ù„ کریں" msgid "Left, Right" msgstr "بائیں، دائیں" msgid "change category filter" msgstr "Ø²Ù…Ø±Û Ùلٹر تبدیل کریں" msgid "close task info panel" msgstr "Ù…ÛÙ… کا معلوماتی پینل بند کریں" msgid "Insert" msgstr "داخل کریں" msgid "add contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کریں" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "Ø±Ø§Ø¨Ø·Û Ù…Ø¯ÙˆÙ† کریں" msgid "remove contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±ÛŒÚº" msgid "change search mode" msgstr "تلاش کا انداز تبدیل کریں" msgid "close contact details panel" msgstr "رابطے Ú©ÛŒ ØªÙØµÛŒÙ„ات کا پینل بند کریں" msgid "Enter" msgstr "انٹر" msgid "open note" msgstr "نوٹ کھولیں" msgid "add note" msgstr "نوٹ شامل کریں" msgid "remove note" msgstr "نوٹ حذ٠کریں" msgid "edit note name and category" msgstr "نوٹ کا نام اور Ø²Ù…Ø±Û Ù…Ø¯ÙˆÙ† کریں" msgid "close note editor" msgstr "نوٹ مدون بند کریں" msgid "save note" msgstr "نوٹ محÙوظ کریں" msgid "find text" msgstr "متن تلاش کریں" msgid "clear selection attributes" msgstr "انتخاب Ú©Û’ خواص صا٠کریں" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "اوسمو صار٠کی سÛولت Ú©Ùˆ مد٠نظر رکھ کر تیار کیا گیا ÛÛ’ØŒ Ú†Ù†Ø§Ù†Ú†Û Ø§Ø³ Ú©Û’ Ø¨ÛØª سارے " "کلیدی اختصارات (شارٹ Ú©Ù¹) Ûیں. ذیل میں ان اختصارات Ú©ÛŒ پوری ÙÛØ±Ø³Øª ÛÛ’:" msgid "General" msgstr "عام" msgid "Calendar" msgstr "تقویم" msgid "Note editor" msgstr "نوٹ مدون" msgid "Full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم" msgid "Tasks" msgstr "Ù…ÛÙ…" msgid "Contacts" msgstr "رابطے" msgid "Notes" msgstr "نوٹس" msgid "Selector" msgstr "منتخب کار" msgid "Editor" msgstr "مدون" msgid "A handy personal organizer" msgstr "آسان ذاتی منظم" msgid "compiled on" msgstr "تالی٠کیا گیا" msgid "Programming" msgstr "پروگرامنگ" msgid "Graphics" msgstr "ترسیمیات" msgid "Contributors" msgstr "معاونین" msgid "Translators" msgstr "مترجمین" msgid "Mailing lists" msgstr "میلنگ لسٹ" msgid "Bug tracker" msgstr "بگ ٹریکر" msgid "Feature requests" msgstr "خوبیوں Ú©ÛŒ درخواستیں" msgid "Available modules" msgstr "دستیاب ماڈیول" msgid "Compiled-in features" msgstr "تالیÙÛŒ خوبیاں" msgid "iCalendar support" msgstr "آئی کیلینڈر معاونت" msgid "Encrypted notes support" msgstr "رمز Ø´Ø¯Û Ù†ÙˆÙ¹Ø³ معاونت" msgid "Backup support" msgstr "بیک اپ معاونت" msgid "Printing support" msgstr "طباعت Ú©ÛŒ معاونت" msgid "Spell checker support" msgstr "املاء Ú©ÛŒ پڑتال Ú©ÛŒ معاونت" msgid "version" msgstr "نسخÛ" msgid "SVN revision" msgstr "SVN نظر٠ثانی" msgid "Key shortcuts" msgstr "کلید اختصار" msgid "License" msgstr "اجازÛ" msgid "Save backup" msgstr "بیک اپ محÙوظ کریں" msgid "Password protection" msgstr "پاس ورڈ ØªØ­ÙØ¸" msgid "Enter password" msgstr "پاس ورڈ داخل کریں" msgid "Re-enter password" msgstr "پاس ورڈ Ø¯ÙˆØ¨Ø§Ø±Û Ø¯Ø§Ø®Ù„ کریں" msgid "Please enter the password" msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ پاس ورڈ داخل کریں" msgid "Passwords do not match!" msgstr "پاس ورڈ مطابقت Ù†Ûیں رکھتا!" msgid "Cannot create backup!" msgstr "بیک اپ Ù†Ûیں بنایا جاسکتا!" msgid "Backup file saved successfully!" msgstr "بیک اپ Ú©ÛŒ ÙØ§Ø¦Ù„ کامیابی سے محÙوظ کردی گئی!" msgid "Open backup file" msgstr "بیک اپ ÙØ§Ø¦Ù„ کھولیں" msgid "Osmo backup files (*.bck)" msgstr "اوسمو بیک اپ ÙØ§Ø¦Ù„یں (*.bck)" msgid "This is not Osmo backup file" msgstr "ÛŒÛ Ø§ÙˆØ³Ù…Ùˆ بیک اپ ÙØ§Ø¦Ù„ Ù†Ûیں ÛÛ’" msgid "Incorrect password!" msgstr "غلط پاس ورڈ!" msgid "All your data will be replaced with backup file content." msgstr "آپ کا تمام ڈیٹا بیک اپ ÙØ§Ø¦Ù„ Ú©Û’ مواد سے بدل دیا جائے گا." msgid "Are you sure?" msgstr "کیا آپ Ù¾ÙØ±ÛŒÙ‚ین Ûیں؟" msgid "Osmo has to be restarted now..." msgstr "اوسمو Ú©Ùˆ پھر سے چلانے Ú©ÛŒ ضرورت ÛÛ’..." msgid "was born" msgstr "تاریخ پیدائش" msgid "year old" msgid_plural "years old" msgstr[0] "سال پرانا" msgstr[1] "سال پرانے" msgid "Current time" msgstr "Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª" msgid "Day number" msgstr "دن کا عدد" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "دن سال Ú©Û’ ختم Ûونے میں باقی ÛÛ’" msgstr[1] "دن سال Ú©Û’ ختم Ûونے میں باقی Ûیں" msgid "the last day of the year" msgstr "سال کا آخری دن" msgid "Today distance" msgstr "آج کا ÙØ§ØµÙ„Û" msgid "Week number" msgstr "ÛÙØªÛ’ کا عدد" msgid "Marked days" msgstr "نشان زد دن" msgid "Weekend days" msgstr "آخر ÛÙØªÛ Ú©Û’ دن" msgid "Moon phase" msgstr "چاند کا دورانیÛ" msgid "Zodiac sign" msgstr "Ø¹Ù„Ø§Ù‚Û Ø¨Ø±ÙˆØ¬ Ú©ÛŒ علامت" msgid "Day notes" msgstr "دن Ú©Û’ نوٹس" msgid "Day tasks" msgstr "دن Ú©ÛŒ Ù…ÛÙ…" msgid "Birthday" msgstr "سالگرÛ" msgid "Day category" msgstr "دن کا زمرÛ" msgid "Selected day note will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ø¯Ù† کا نوٹ حذ٠کردیا جائے گا." msgid "Continue?" msgstr "جاری رÛیں؟" msgid "Previous year" msgstr "Ø³Ø§Ø¨Ù‚Û Ø³Ø§Ù„" msgid "Previous month" msgstr "Ø³Ø§Ø¨Ù‚Û Ù…Ø§Û" msgid "Previous day" msgstr "Ø³Ø§Ø¨Ù‚Û Ø¯Ù†" msgid "Today" msgstr "آج" msgid "Next day" msgstr "اگلا دن" msgid "Next month" msgstr "اگلا ماÛ" msgid "Next year" msgstr "اگلا سال" msgid "Jump to date" msgstr "تاریخ پر جائیں" msgid "Print calendar" msgstr "تقویم طبع کریں" msgid "Date calculator" msgstr "تاریخ Ø´Ùمار Ú©ÙنندÛ" #, fuzzy msgid "Backup data" msgstr "بیک اپ" #, fuzzy msgid "Restore data" msgstr "بحال کریں" msgid "Preferences" msgstr "ترجیحات" msgid "Quit" msgstr "برخاست" msgid "Toggle day note panel" msgstr "دن نوٹ پینل معکوس کریں" msgid "Add task" msgstr "Ù…ÛÙ… شامل کریں" msgid "Select day color" msgstr "دن کا رنگ منتخب کریں" msgid "Browse notes" msgstr "نوٹس دیکھیں" msgid "Browse iCal events" msgstr "iCal واقعات دیکھیں" msgid "Export to iCal file" msgstr "iCal ÙØ§Ø¦Ù„ میں برآمد کریں" msgid "Previous and next month" msgstr "Ø³Ø§Ø¨Ù‚Û Ø§ÙˆØ± اگلا ماÛ" msgid "Close note panel" msgstr "نوٹ پینل بند کریں" msgid "Highlight" msgstr "نشان زدÛ" msgid "Strikethrough" msgstr "خط مقطوع" msgid "Underline" msgstr "خد کشیدÛ" msgid "Italic" msgstr "ٹیڑھا" msgid "Bold" msgstr "چوڑا" msgid "Insert timeline" msgstr "ٹائم لائن شامل کریں" msgid "Clear text" msgstr "متن صا٠کریں" msgid "Info" msgstr "معلومات" msgid "Select color" msgstr "رنگ منتخب کریں" msgid "None" msgstr "Ú©Ú†Ú¾ Ù†Ûیں" msgid "Cancel" msgstr "ملتوی" msgid "OK" msgstr "ٹھیک ÛÛ’" msgid "year" msgid_plural "years" msgstr[0] "سال" msgstr[1] "سال" msgid "month" msgid_plural "months" msgstr[0] "ماÛ" msgstr[1] "Ù…Ûینے" msgid "day" msgid_plural "days" msgstr[0] "دن" msgstr[1] "دن" msgid "hour" msgid_plural "hours" msgstr[0] "گھنٹÛ" msgstr[1] "گھنٹے" msgid "minute" msgid_plural "minutes" msgstr[0] "منٹ" msgstr[1] "منٹ" msgid "second" msgid_plural "seconds" msgstr[0] "سیکنڈ" msgstr[1] "سیکنڈ" msgid "or" msgstr "یا" msgid "rounded down" msgstr "راؤنڈ کردیے گئے" msgid "week" msgid_plural "weeks" msgstr[0] "ÛÙØªÛ" msgstr[1] "ÛÙØªÛ’" msgid "working day" msgid_plural "working days" msgstr[0] "کام کرنے کا دن" msgstr[1] "کام کرنے Ú©Û’ دن" msgid "time is ignored" msgstr "وقت نظر انداز کردیا گیا" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "اختتام ÛÙØªÛ کا دن" msgstr[1] "اختتام ÛÙØªÛ’ Ú©Û’ دن" msgid "This calculator only supports dates after year 1." msgstr "ÛŒÛ Ø´Ùمار Ú©ÙÙ†Ù†Ø¯Û ØµØ±Ù 1 سال بعد Ú©ÛŒ تاریخوں Ú©ÛŒ معاونت رکھتا ÛÛ’." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "آخر٠ÛÙØªÛ کا دن نظر انداز کردیا گیا" msgstr[1] "آخر٠ÛÙØªÛ Ú©Û’ دن نظر انداز کردیے گئے" msgid "Year" msgstr "سال" msgid "Month" msgstr "Ù…ÛینÛ" msgid "Day" msgstr "دن" msgid "Current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ®" msgid "Set current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® مرتب کریں" msgid "Hour" msgstr "گھنٹÛ" msgid "Minute" msgstr "منٹ" msgid "Second" msgstr "سیکنڈ" msgid "Set current time" msgstr "Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª مرتب کریں" msgid "Reset time" msgstr "وقت صا٠کریں" msgid "First date and time" msgstr "Ù¾ÛÙ„ÛŒ تاریخ اور وقت" msgid "Second date and time" msgstr "دوسری تاریخ اور وقت" msgid "Alternative time units" msgstr "متبادل وقت Ú©ÛŒ اکائیاں" msgid "Result" msgstr "نتیجÛ" msgid "Duration between two dates" msgstr "دو تاریخوں Ú©Û’ درمیان مدت" msgid "Operation" msgstr "عمل" msgid "add" msgstr "شامل کریں" msgid "subtract" msgstr "ØªÙØ±ÛŒÙ‚" msgid "Date and time to add or subtract from" msgstr "تاریخ اور وقت Ú©ÛŒ شمولیت یا اس سے حصول" msgid "Years" msgstr "سال" msgid "Months" msgstr "Ù…Ûینے" msgid "Days" msgstr "دن" msgid "Weeks" msgstr "ÛÙØªÛ’" msgid "Hours" msgstr "گھنٹے" msgid "Minutes" msgstr "منٹ" msgid "Seconds" msgstr "سیکنڈ" msgid "Ignore weekend days" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں Ú©Ùˆ نظر انداز کریں" msgid "Reset fields" msgstr "حلقے صا٠کریں" msgid "Time to add or subtract" msgstr "وقت برائے اضاÙÛ ÛŒØ§ حصول" msgid "Jump to" msgstr "منتقلی تا" msgid "Add to or subtract from a date" msgstr "تاریخ میں شامل یا حاصل کریں" msgid "Leap year" msgstr "لیپ کا سال" msgid "Yes" msgstr "ÛØ§Úº" msgid "No" msgstr "Ù†Ûیں" msgid "Chinese year animal" msgstr "چینی سال جانور" msgid "Number of days" msgstr "دنوں Ú©ÛŒ تعداد" msgid "Number of weeks" msgstr "ÛÙØªÙˆÚº Ú©ÛŒ تعداد" msgid "Number of weekend days" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں Ú©ÛŒ تعداد" msgid "Year info" msgstr "سال Ú©ÛŒ ØªÙØµÛŒÙ„ات" msgid "Current year" msgstr "Ø­Ø§Ù„ÛŒÛ Ø³Ø§Ù„" msgid "Alternative view" msgstr "متبادل منظر" msgid "event" msgid_plural "events" msgstr[0] "واقعÛ" msgstr[1] "واقعات" msgid "No valid calendars defined" msgstr "کوئی موزوں تقویم متعین Ù†Ûیں ÛÛ’" msgid "iCalendar events" msgstr "آئی کیلینڈر واقعات" msgid "Date" msgstr "تاریخ" msgid "Time" msgstr "وقت" msgid "Summary" msgstr "خلاصÛ" msgid "Select output file" msgstr "ماحاصل ÙØ§Ø¦Ù„ منتخب کریں" msgid "The list will be cleared and all entries will be lost." msgstr "ÙÛØ±Ø³Øª صا٠کردی جائے Ú¯ÛŒ اور تمام اندراجات ضائع Ûوجائیں Ú¯Û’." msgid "Done!" msgstr "Ûوگیا!" msgid "event exported" msgid_plural "events exported" msgstr[0] "ÙˆØ§Ù‚Ø¹Û Ø¨Ø±Ø¢Ù…Ø¯ کردیا گیا" msgstr[1] "واقعات برآمد کردیے گئے" msgid "iCalendar export" msgstr "آئی کلینڈر برآمد" msgid "Day Selector" msgstr "دن منتخب کار" msgid "Use date period" msgstr "تاریخ Ú©ÛŒ مدت استعمال کریں" msgid "Add" msgstr "شامل کریں" msgid "Clear" msgstr "صاÙ" msgid "Remove" msgstr "حذÙ" msgid "Output filename" msgstr "ماحاصل ÙØ§Ø¦Ù„ نام" msgid "Browse" msgstr "انتخاب" msgid "Export" msgstr "برآمد" msgid "no entries" msgstr "کوئی اندارجات Ù†Ûیں" msgid "entry" msgid_plural "entries" msgstr[0] "اندراج" msgstr[1] "اندراجات" msgid "Calendar notes" msgstr "تقویم نوٹس" msgid "Search" msgstr "تلاش" msgid "Filter" msgstr "Ùلٹر" msgid "Current month" msgstr "Ø­Ø§Ù„ÛŒÛ Ù…Ø§Û" msgid "Selected month" msgstr "منتخب Ú©Ø±Ø¯Û Ù…Ø§Û" msgid "Selected year" msgstr "منتخب Ú©Ø±Ø¯Û Ø³Ø§Ù„" msgid "Selected month and year" msgstr "Ù…Ø§Û Ø§ÙˆØ± سال منتخب کریں" msgid "All notes" msgstr "تمام نوٹس" msgid "Case sensitive" msgstr "حساس" msgid "Strikethrough past day notes" msgstr "Ú¯Ø²Ø´ØªÛ Ø¯Ù† اور نوٹس خط مقطوع کریں" msgid "Note" msgstr "نوٹ" msgid "Syntax" msgstr "نحو" msgid "abbreviated weekday name" msgstr "مختصر ÛÙØªÛ’ Ú©Û’ دن کا نام" msgid "full weekday name" msgstr "مکمل ÛÙØªÛ’ Ú©Û’ دن کا نام" msgid "abbreviated month name" msgstr "مختصر Ù…Ø§Û Ú©Ø§ نام" msgid "full month name" msgstr "Ù…Ø§Û Ú©Ø§ پورا نام" msgid "day of the month" msgstr "Ù…Ø§Û Ú©Ø§ دن" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "Ù…Ûینے کا دن ابتدائی ØµÙØ±ÙˆÚº Ú©Û’ بغیر" msgid "year without century" msgstr "سال بغیر صدی" msgid "year with century" msgstr "سال بمع صدی" msgid "Date header format" msgstr "تاریخ سرساز Ûیئت" msgid "Set default format" msgstr "Ø·Û’ Ø´Ø¯Û Ûیئت مرتب کریں" msgid "Date format syntax" msgstr "تاریخ Ûیئت ساخت" msgid "Day note marker" msgstr "دن نوٹ مارکر" msgid "Event marker" msgstr "ÙˆØ§Ù‚Ø¹Û Ù…Ø§Ø±Ú©Ø±" msgid "Circle" msgstr "دائری" msgid "Ellipse" msgstr "بیضوی" msgid "Wave" msgstr "Ù„ÛØ±" msgid "Current day marker" msgstr "Ø­Ø§Ù„ÛŒÛ Ø¯Ù† مارکر" msgid "Arrow" msgstr "تیر" msgid "Free-hand circle" msgstr "آزاد-دستی حلقÛ" msgid "Colors" msgstr "رنگ" msgid "Header color" msgstr "سرساز کا رنگ" msgid "Weekend days color" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں کا رنگ" msgid "Cursor color" msgstr "کرسر کا رنگ" msgid "Event marker color" msgstr "واقعات مارکر رنگ" msgid "Current day marker color" msgstr "Ø­Ø§Ù„ÛŒÛ Ø¯Ù† مارکر رنگ" msgid "Birthday marker color" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ù…Ø§Ø±Ú©Ø± رنگ" msgid "Date font" msgstr "تاریخ Ùونٹ" msgid "Calendar font" msgstr "تقویم Ùونٹ" msgid "Note font" msgstr "نوٹ کا Ùونٹ" msgid "Enable block cursor" msgstr "بلاک کرسر ÙØ¹Ø§Ù„ کریں" msgid "Cursor thickness" msgstr "کرسر Ú©ÛŒ Ú©Ø«Ø§ÙØª" msgid "Thin" msgstr "پتلا" msgid "Thick" msgstr "گھنا" msgid "Edit category" msgstr "Ø²Ù…Ø±Û Ù…Ø¯ÙˆÙ† کریں" msgid "Color" msgstr "رنگ" msgid "Name" msgstr "نام" msgid "Select ICS file" msgstr "ICS ÙØ§Ø¦Ù„ منتخب کریں" msgid "All Files" msgstr "تمام ÙØ§Ø¦Ù„یں" msgid "Calendar files (*.ics)" msgstr "تقویم ÙØ§Ø¦Ù„یں (*.ics)" msgid "Modify ICAL parameters" msgstr "ICAL پیرامیٹر تبدیل کریں" msgid "Filename" msgstr "ÙØ§Ø¦Ù„ کا نام" msgid "Options" msgstr "اختیارات" msgid "Disabled" msgstr "معطل" msgid "Valid" msgstr "موزوں" msgid "Description" msgstr "ØªÙØµÛŒÙ„" msgid "Full date" msgstr "پوری تاریخ" msgid "Mark" msgstr "نشان" msgid "Week start on Monday" msgstr "ÛÙØªÛ پیر Ú©Ùˆ شروع ÛÙˆ" msgid "Show day names" msgstr "دنوں Ú©Û’ نام دکھائیں" msgid "No month change" msgstr "کوئی Ù…Ø§Û Ú©ÛŒ تبدیلی Ù†Ûیں" msgid "Show week numbers" msgstr "ÛÙØªÛ’ Ú©Û’ اعداد Ø¸Ø§ÛØ± کریں" msgid "Simple view in full-year calendar" msgstr "مکمل-سال تقویم میں Ø³Ø§Ø¯Û Ù…Ù†Ø¸Ø±" msgid "Enable auxilary calendars" msgstr "اضاÙÛŒ تقویمیں ÙØ¹Ø§Ù„ کریں" msgid "Ascending sorting in day notes browser" msgstr "دن نوٹس براؤزر میں صعودی ترتیب" msgid "Enable spell checker in day notes" msgstr "دن Ú©Û’ نوٹس میں املاء Ú©ÛŒ پڑتال ÙØ¹Ø§Ù„ کریں" #, fuzzy msgid "Show seconds" msgstr "سیکنڈ" msgid "Appearance" msgstr "مواجÛ" msgid "Day categories" msgstr "دن Ø²Ù…Ø±Û Ø¬Ø§Øª" msgid "iCalendar files" msgstr "آئی کلینڈر ÙØ§Ø¦Ù„یں" msgid "Show in day info panel" msgstr "دن Ú©Û’ معلوماتی پینل میں دکھائیں" msgid "Name day" msgstr "دن نام" msgid "Error printing" msgstr "طباعت Ú©ÛŒ غلطی" msgid "Printing properties" msgstr "طباعت خصوصیات" msgid "Month name" msgstr "Ù…Ø§Û Ù†Ø§Ù…" msgid "Day name" msgstr "دن کا نام" msgid "Events" msgstr "واقعات" msgid "Fonts" msgstr "Ùونٹ" msgid "Birthdays" msgstr "سالگرÛیں" msgid "Namedays" msgstr "دنوں Ú©Û’ نام" msgid "Visible events" msgstr "مرئی واقعات" msgid "Padding" msgstr "پیڈنگ" msgid "Event maximum length" msgstr "ÙˆØ§Ù‚Ø¹Û Ú©Ø§ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²Ø§Ø¯Û Ø·ÙˆÙ„" msgid "Page orientation:" msgstr "ØµÙØ­Û Ú©ÛŒ Ø±ÙØ® بندی" msgid "Portrait" msgstr "پورٹریٹ" msgid "Landscape" msgstr "لینڈسکیپ" msgid "Timeline" msgstr "خط٠وقت" msgid "From (hour)" msgstr "از (گھنٹÛ)" msgid "Step (minutes)" msgstr "Ù…Ø±Ø­Ù„Û (منٹ)" msgid "To (hour)" msgstr "تا (گھنٹÛ)" msgid "No date" msgstr "بلا تاریخ" msgid "Rat" msgstr "Ú†ÙˆÛØ§" msgid "Ox" msgstr "بیل" msgid "Tiger" msgstr "شیر" msgid "Hare" msgstr "خرگوش" msgid "Dragon" msgstr "Ø§Ú˜Ø¯ÛØ§" msgid "Snake" msgstr "سانپ" msgid "Horse" msgstr "گھوڑا" msgid "Sheep" msgstr "بھیڑ" msgid "Monkey" msgstr "بندر" msgid "Fowl" msgstr "پرندÛ" msgid "Dog" msgstr "Ú©ÙØªØ§" msgid "Pig" msgstr "خنزیر" msgid "Unknown" msgstr "نامعلوم" msgid "Aquarius" msgstr "برج دلو" msgid "Pisces" msgstr "برج حوت" msgid "Aries" msgstr "برج حمل" msgid "Taurus" msgstr "برج ثور" msgid "Gemini" msgstr "برج جوزا" msgid "Cancer" msgstr "برج سرطان" msgid "Leo" msgstr "برج اسد" msgid "Virgo" msgstr "برج عذراء" msgid "Libra" msgstr "برج میزان" msgid "Scorpio" msgstr "برج عقرب" msgid "Sagittarius" msgstr "برج قوس" msgid "Capricorn" msgstr "برج جدی" msgid "Cannot perform selected operation." msgstr "منتخب Ú©Ø±Ø¯Û Ø¹Ù…Ù„ ادا Ù†Ûیں کیا جاسکتا." msgid "Task has been modified or removed." msgstr "Ù…ÛÙ… تبدیل یا حذ٠کردی گئی." msgid "Remind me later" msgstr "بعد میں یاد دلائیں" msgid "Done" msgstr "تکمیل شدÛ" msgid "postponed" msgstr "مؤخر کردÛ" msgid "Show task" msgstr "Ù…ÛÙ… دکھائیں" msgid "Alarm warning!" msgstr "الارم انتباÛ!" msgid "Day note" msgstr "دن نوٹ" msgid "Type" msgstr "نوعیت" msgid "Event" msgstr "واقعÛ" msgid "Task" msgstr "Ù…ÛÙ…" msgid "Show Osmo" msgstr "اوسمو Ú©Ùˆ Ø¸Ø§ÛØ± کریں" msgid "No birthdays defined" msgstr "کوئی Ø³Ø§Ù„Ú¯Ø±Û Ù…ØªØ¹ÛŒÙ† Ù†Ûیں" msgid "Birthdays list" msgstr "سالگرÛیں ÙÛØ±Ø³Øª" msgid "Days to birthday" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ù…ÛŒÚº دن" msgid "Age" msgstr "عمر" msgid "Birthday date" msgstr "Ø³Ø§Ù„Ú¯Ø±Û ØªØ§Ø±ÛŒØ®" msgid "today" msgstr "آج" msgid "Please select address" msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ù¾ØªÛ Ù…Ù†ØªØ®Ø¨ کریں" msgid "Information" msgstr "معلومات" msgid "Work" msgstr "کام" msgid "Home" msgstr "گھر" msgid "Group" msgstr "گروپ" msgid "First name" msgstr "Ù¾Ûلا نام" msgid "Last name" msgstr "آخری نام" msgid "Second name" msgstr "دوسرا نام" msgid "Nickname" msgstr "عرÙیت" msgid "Tags" msgstr "ٹیگ" msgid "Name day date" msgstr "نام دن تاریخ" msgid "Home address" msgstr "گھر کا پتÛ" msgid "Home postcode" msgstr "گھر کا پوسٹ Ú©ÙˆÚˆ" msgid "Home city" msgstr "Ø´ÛØ±" msgid "Home state" msgstr "صوبÛ" msgid "Home country" msgstr "ملک" msgid "Organization" msgstr "ادارÛ" msgid "Department" msgstr "محکمÛ" msgid "Work address" msgstr "کام کا پتÛ" msgid "Work postcode" msgstr "کام کا پوسٹ Ú©ÙˆÚˆ" msgid "Work city" msgstr "کام کا Ø´ÛØ±" msgid "Work state" msgstr "کام کا صوبÛ" msgid "Work country" msgstr "کام کا ملک" msgid "Fax" msgstr "Ùیکس" msgid "Home phone" msgstr "گھر کا Ùون" msgid "Home phone 2" msgstr "گھر کا Ùون 2" msgid "Home phone 3" msgstr "گھر کا Ùون 3" msgid "Home phone 4" msgstr "گھر کا Ùون 4" msgid "Work phone" msgstr "کام کا Ùون" msgid "Work phone 2" msgstr "کام کا Ùون 2" msgid "Work phone 3" msgstr "کام کا Ùون 3" msgid "Work phone 4" msgstr "کام کا Ùون 4" msgid "Cell phone" msgstr "سیل Ùون" msgid "Cell phone 2" msgstr "سیل Ùون 2" msgid "Cell phone 3" msgstr "سیل Ùون 3" msgid "Cell phone 4" msgstr "سیل Ùون 4" msgid "E-Mail" msgstr "برقی پتÛ" msgid "E-Mail 2" msgstr "برقی Ù¾ØªÛ 2" msgid "E-Mail 3" msgstr "برقی Ù¾ØªÛ 3" msgid "E-Mail 4" msgstr "برقی Ù¾ØªÛ 4" msgid "WWW" msgstr "ویب سائٹ" msgid "WWW 2" msgstr "ویب سائٹ 2" msgid "WWW 3" msgstr "ویب سائٹ 3" msgid "WWW 4" msgstr "ویب سائٹ 4" msgid "IM Gadu-Gadu" msgstr "گاڈو-گادو پیغام رساں" msgid "IM Yahoo" msgstr "یاÛÙˆ پیغام رساں" msgid "IM MSN" msgstr "ایم ایس این پیغام رساں" msgid "IM ICQ" msgstr "آئی سی کیو پیغام رساں" msgid "IM AOL" msgstr "اے او ایل پیغام رساں" msgid "IM Jabber" msgstr "جبر پیغام رساں" msgid "IM Skype" msgstr "سکائپی پیغام رساں" msgid "IM Tlen" msgstr "ٹلن پیغام رساں" msgid "Blog" msgstr "بلاگ" msgid "Photo" msgstr "تصویر" msgid "Additional info" msgstr "اضاÙÛŒ معلومات" msgid "New contact" msgstr "نیا رابطÛ" msgid "Remove contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±ÛŒÚº" msgid "Edit contact" msgstr "Ø±Ø§Ø¨Ø·Û Ù…Ø¯ÙˆÙ† کریں" msgid "Show birthdays" msgstr "سالگرÛیں دکھائیں" msgid "Show contact location on the map" msgstr "نقشے پر Ø±Ø§Ø¨Ø·Û Ú©Ø§ مقام Ø¸Ø§ÛØ± کریں" msgid "Import contacts" msgstr "رابطے درآمد کریں" msgid "Export contacts" msgstr "رابطے برآمد کریں" msgid "First Name" msgstr "Ù¾Ûلا نام" msgid "Last Name" msgstr "آخری نام" msgid "All fields" msgstr "تمام حلقے" msgid "Contact details" msgstr "رابطے Ú©ÛŒ ØªÙØµÛŒÙ„ات" msgid "Close contact panel" msgstr "رابطے کا پینل بند کریں" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "Ø±Ø§Ø¨Ø·Û Ø¨Ø±Ø¢Ù…Ø¯ کردیا گیا" msgstr[1] "رابطے برآمد کردیے گئے" msgid "Cannot create file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں بنائی جاسکتی." msgid "Output format" msgstr "ماحاصل Ûیئت" msgid "Add header" msgstr "سرساز شامل کریں" msgid "Fields to export" msgstr "حلقے برائے برآمد" msgid "All" msgstr "تمام" msgid "Invert" msgstr "پلٹیں" msgid "Select fields" msgstr "حلقے منتخب کریں" msgid "Select CSV file" msgstr "CSV ÙØ§Ø¦Ù„ منتخب کریں" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (کوما-مقسم قدر) ÙØ§Ø¦Ù„یں (*.csv)" msgid "Please select file first." msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ù¾ÛÙ„Û’ ÙØ§Ø¦Ù„ منتخب کریں." msgid "Import type" msgstr "درآمد نوعیت" msgid "File" msgstr "ÙØ§Ø¦Ù„" msgid "Input filename" msgstr "ماداخل ÙØ§Ø¦Ù„ نام" msgid "Import" msgstr "درآمد" msgid "Nothing to import." msgstr "درآمد کرنے Ú©Û’ لیے Ú©Ú†Ú¾ Ù†Ûیں ÛÛ’." msgid "contact added" msgid_plural "contacts added" msgstr[0] "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کردیا گیا" msgstr[1] "رابطے شامل کردیے گئے" msgid "of" msgstr "برائے" msgid "Record" msgstr "ریکارڈ" msgid "Number fields per record" msgstr "ÙÛŒ اندراج حلقوں Ú©ÛŒ تعداد" msgid "Use first record as header" msgstr "Ûیڈر Ú©Û’ طور پر Ù¾Ûلا ریکارڈ استعمال کریں" msgid "Field type" msgstr "Ø­Ù„Ù‚Û Ù†ÙˆØ¹ÛŒØª" msgid "Value" msgstr "قدر" msgid "No records found in selected file." msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ میں کوئی ریکارڈ Ù†Ûیں پایا گیا." msgid "Cannot read file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں Ù¾Ú‘Ú¾ÛŒ جاسکتی." msgid "Cannot open file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں کھولی جاسکتی." msgid "Selected contact will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±Ø¯ÛŒØ§ جائے گا." msgid "Select photo" msgstr "تصویر منتخب کریں" msgid "Address" msgstr "پتÛ" msgid "Postcode" msgstr "پوسٹ Ú©ÙˆÚˆ" msgid "City" msgstr "Ø´ÛØ±" msgid "State" msgstr "حالت" msgid "Country" msgstr "Ù…ÙÙ„Ú©" msgid "Add contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کریں" msgid "Personal" msgstr "ذاتی" msgid "Phones" msgstr "Ùون" msgid "Internet" msgstr "انٹرنیٹ" msgid "Color of contact tags" msgstr "رابطے Ú©Û’ ٹیگ کا رنگ" msgid "Color of links" msgstr "روابط Ú©Û’ رنگ" msgid "Font size" msgstr "Ùونٹ حجم" msgid "Name font size" msgstr "Ùونٹ حجم نام" msgid "Item font size" msgstr "عنصر کا Ùونٹ حجم" msgid "Photo size" msgstr "تصویر کا حجم" msgid "Small" msgstr "چھوٹا" msgid "Medium" msgstr "درمیانÛ" msgid "Large" msgstr "بڑا" msgid "Hide group column" msgstr "گروپ کالم چھپائیں" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Ù…ØªÙØ±Ù‚" msgid "Groups" msgstr "گروپ" msgid "Visible columns in birthday browser" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ø¨Ø±Ø§Ø¤Ø²Ø± میں مرئی کالم" msgid "Show calendar" msgstr "تقویم دکھائیں" msgid "Show tasks" msgstr "Ù…ÛÙ… دکھائیں" msgid "Show contacts" msgstr "رابطے دکھائیں" msgid "Show notes" msgstr "نوٹس دکھائیں" msgid "Show options" msgstr "اختیارات دکھائیں" msgid "Show small calendar window" msgstr "چوٹی تقویم Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "Check for events since last run" msgstr "آخری بار چلانے سے واقعات چیک کریں" msgid "Number of days to check forward for events (default: 0)" msgstr "Ø¢Ø¦Ù†Ø¯Û ÙˆØ§Ù‚Ø¹Ø§Øª Ú©Ùˆ چیک کرنے Ú©Û’ لیے دنوں Ú©ÛŒ تعداد (Ø·Û’ شدÛ: 0)" msgid "Set absolute path for settings and data files" msgstr "ترتیبات اور ڈیٹا ÙØ§Ø¦Ù„ÙˆÚº Ú©Û’ لیے مطلق پاتھ مرتب کریں" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "آسان ذاتی منظم" msgid "ERROR: Cannot create config files" msgstr "غلطی: کانÙÚ¯ (config) ÙØ§Ø¦Ù„ Ù†Ûیں بنائی جاسکتی" msgid "Another copy of OSMO is already running." msgstr "اوسمو کا دوسرا Ù†Ø³Ø®Û Ù¾ÛÙ„Û’ ÛÛŒ Ú†Ù„ Ø±ÛØ§ ÛÛ’." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "ایک ÛÛŒ وقت میں اوسمو Ú©Û’ دو نسخوں Ú©Û’ استعمال سے ڈیٹا کا نقصان Ûوسکتا ÛÛ’." msgid "Do you really want to continue?" msgstr "کیا آپ واقعی Ø¢Ú¯Û’ بڑھنا Ú†Ø§ÛØªÛ’ Ûیں؟" msgid "Warning" msgstr "انتباÛ" msgid "The note has changed." msgstr "نوٹ تبدیل کردیا گیا." msgid "Do you want to save it?" msgstr "کیا آپ اسے محÙوظ کرنا Ú†Ø§ÛØªÛ’ Ûیں؟" #, fuzzy msgid "No URLs found in the selection..." msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ میں کوئی ریکارڈ Ù†Ûیں پایا گیا." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "کیا آپ واقعی Ø¢Ú¯Û’ بڑھنا Ú†Ø§ÛØªÛ’ Ûیں؟" msgid "Question" msgstr "سوال" msgid "Words" msgstr "Ø§Ù„ÙØ§Ø¸" msgid "Lines" msgstr "لکیریں" msgid "Characters" msgstr "کیریکٹرز" msgid "White characters" msgstr "سÙید کیریکٹرز" msgid "Bytes" msgstr "بائٹس" msgid "Document" msgstr "دستاویز" msgid "Selection" msgstr "انتخاب" msgid "Created" msgstr "بنایا گیا" msgid "Modified" msgstr "تبدیل شدÛ" msgid "New note" msgstr "نیا نوٹ" msgid "Add note" msgstr "نوٹ شامل کریں" msgid "Edit note" msgstr "نوٹ مدون کریں" msgid "Delete note" msgstr "نوٹ حذ٠کریں" msgid "Remove note" msgstr "نوٹ صا٠کریں" msgid "Find" msgstr "تلاش" msgid "Clear attributes" msgstr "اوصا٠صا٠کریں" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "نوٹ محÙوظ کریں" msgid "Insert current date and time" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® اور وقت شامل کریں" msgid "Insert separator" msgstr "جداگار شامل کریں" msgid "Statistics" msgstr "Ø´Ùماریات" msgid "Close editor" msgstr "مدون بند کریں" msgid "Toggle spell checker" msgstr "املاء Ú©ÛŒ پڑتال معکوس کریں" msgid "Category" msgstr "زمرÛ" msgid "Note name" msgstr "نوٹ کا نام" msgid "Last changes" msgstr "آخری تبدیلیاں" msgid "Read-only" msgstr "Ùقط-برائے-پڑھائی" msgid "Line" msgstr "لکیر" msgid "Column" msgstr "کالم" msgid "case sensitive" msgstr "حساس" msgid "Close find entry" msgstr "اندراج تلاش بند کریں" msgid "Edit entry" msgstr "اندراج مدون کریں" msgid "Remember cursor position" msgstr "کرسر Ú©ÛŒ Ø¬Ú¯Û ÛŒØ§Ø¯ رکھیں" msgid "Selected note will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ù†ÙˆÙ¹ حذ٠کردیا جائے گا." msgid "No further data recovery will be possible." msgstr "مزید ڈیٹا Ú©ÛŒ Ø¨Ø§Ø²ÛŒØ§ÙØªÚ¯ÛŒ ممکن Ù†Ûیں ÛÙˆÚ¯ÛŒ." msgid "Plain" msgstr "سادÛ" msgid "Encrypted" msgstr "رمز شدÛ" msgid "Note type" msgstr "نوٹ Ú©ÛŒ نوعیت" msgid "Cannot open the note." msgstr "نوٹ Ù†Ûیں کھولا جاسکتا." msgid "encryption support is disabled" msgstr "رمز نگاری Ú©ÛŒ معاونت معطل ÛÛ’" msgid "Authorization" msgstr "منظوری" msgid "Algorithm" msgstr "الگورتھم" msgid "Hashing" msgstr "Ûیشنگ" msgid "Compression" msgstr "دباؤ" msgid "Ratio" msgstr "قدر" msgid "Fast" msgstr "تیز" msgid "Good" msgstr "اچھا" msgid "Best" msgstr "Ø¨ÛØªØ±ÛŒÙ†" msgid "Remember the last selected category" msgstr "آخری منتخب Ú©Ø±Ø¯Û Ø²Ù…Ø±Û’ Ú©Ùˆ یاد رکھیں" msgid "Use system format for date and time" msgstr "تاریخ اور وقت Ú©Û’ لیے نظام Ú©ÛŒ Ûیئت استعمال کریں" msgid "Encryption" msgstr "رمز نگاری" msgid "Visible columns" msgstr "مرئی کالم" msgid "Categories" msgstr "زمرے" msgid "Notes options" msgstr "نوٹس اختیارات" msgid "Osmo has to be restarted to take effect." msgstr "تبدیلیوں Ú©ÛŒ اثر پذیری Ú©Û’ لیے اوسمو Ú©Ùˆ Ø¯ÙˆØ¨Ø§Ø±Û Ú†Ù„Ø§Ù†Ø§ Ûوگا." msgid "Layout" msgstr "خاکÛ" msgid "Vertical" msgstr "عمودی" msgid "Horizontal" msgstr "اÙÙ‚ÛŒ" msgid "Tabs position" msgstr "ٹیبز کا مقام" msgid "Left" msgstr "بائیں" msgid "Right" msgstr "دائیں" msgid "Top" msgstr "اوپر" msgid "Bottom" msgstr "نیچے" #, fuzzy msgid "Use default stock icons" msgstr "Ø·Û’ Ø´Ø¯Û Ø°Ø®ÛŒØ±Û Ø¢Ø¦Ú©Ù† استعمال کریں (Ø¯ÙˆØ¨Ø§Ø±Û Ú†Ù„Ø§Ù†Û’ Ú©ÛŒ ضرورت ÛÙˆÚ¯ÛŒ)" msgid "Disable underline in links" msgstr "روابط میں خط کشیدگی معطل کریں" msgid "Draw rows in alternating colors" msgstr "قطاریں متبادل رنگوں میں بنائیں" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Ú©Ù… سے Ú©Ù… ایک ماڈیول Ø¸Ø§ÛØ± Ûونا چاÛیے." msgid "Override locale settings" msgstr "لوکل ترتیاب پر ÙØ§Ø¦Ù‚ ÛÙˆÚº" msgid "Date format" msgstr "تاریخ Ûیئت" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "وقت Ú©ÛŒ Ûیئت" msgid "hours" msgstr "گھنٹے" msgid "Spell checker language" msgstr "املاء پڑتال زبان" msgid "Enable tooltips" msgstr "ٹول Ù¹ÙÙ¾ ÙØ¹Ø§Ù„ کریں" msgid "Remember last selected page" msgstr "آخری منتخب Ú©Ø±Ø¯Û ØµÙØ­Û یاد رکھیں" msgid "Save data after every modification" msgstr "ÛØ± تبدیلی پر تاریخ محÙوظ کریں" msgid "Web browser" msgstr "ویب براؤزر" msgid "E-mail client" msgstr "ای میل موکل" msgid "Sound player" msgstr "موسیقی سازندÛ" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s Ù†Ù…ÙˆÙ†Û ÙˆÛŒØ¨ Ù¾ØªÛ Ø³Û’ بدل دیا جائے گا" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s Ù†Ù…ÙˆÙ†Û Ø§ÛŒ میل Ù¾ØªÛ Ø³Û’ بدل دیا جائے گا" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s Ù†Ù…ÙˆÙ†Û ØµÙˆØªÛŒ ÙØ§Ø¦Ù„ نام سے بدل دیا جائے گا" msgid "Enable system tray" msgstr "نظام ٹرے ÙØ¹Ø§Ù„ کریں" msgid "Start minimised" msgstr "منمائز شروع کریں" msgid "Blink on events" msgstr "واقعات پر بلنک کریں" msgid "Ignore day note events" msgstr "دن نوٹ واقعات نظر انداز کریں" msgid "Hide" msgstr "چھپائیں" msgid "Helpers" msgstr "معاون" msgid "System tray" msgstr "نظام ٹرے" msgid "Edit" msgstr "تدوین" msgid "Go Down" msgstr "نیچے جائیں" msgid "Select date" msgstr "تاریخ منتخب کریں" msgid "Select font" msgstr "Ùونٹ منتخب کریں" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Ø´Ùمار Ú©ÙنندÛ" msgid "Edit day note" msgstr "دن کا نوٹ مدون کریں" msgid "Save" msgstr "محÙوظ کریں" msgid "Display full-year calendar" msgstr "مکمل-سال تقویم Ø¸Ø§ÛØ± کریں" msgid "Help" msgstr "ÛØ¯Ø§ÛŒØ§Øª" msgid "Invalid item" msgstr "غیر موزوں عنصر" msgid "Valid item" msgstr "موزوں عنصر" msgid "Edit task" msgstr "Ù…ÛÙ… مدون کریں" msgid "Remove task" msgstr "Ù…ÛÙ… حذ٠کریں" msgid "Import tasks" msgstr "Ù…ÛÙ… درآمد کریں" msgid "Export tasks" msgstr "Ù…ÛÙ… برآمد کریں" msgid "Change to previous date" msgstr "Ø³Ø§Ø¨Ù‚Û ØªØ§Ø±ÛŒØ® پر بدل دیں" msgid "Change to next date" msgstr "اگلی تاریخ پر بدل دیں" msgid "Print" msgstr "طباعت" msgid "Normal" msgstr "سادÛ" msgid "Recurrent" msgstr "باز گرد" msgid "Started" msgstr "شروع کردÛ" msgid "Finished" msgstr "تکمیل ÛŒØ§ÙØªÛ" msgid "All items" msgstr "تمام عناصر" msgid "New task" msgstr "نئی Ù…ÛÙ…" msgid "Change due date to previous date" msgstr "باقی تاریخ Ú©Ùˆ Ø³Ø§Ø¨Ù‚Û ØªØ§Ø±ÛŒØ® پر تبدیل کریں" msgid "Change due date to next date" msgstr "باقی تاریخ Ú©Ùˆ اگلی تاریخ پر تبدیل کریں" msgid "Print visible tasks list" msgstr "مرئی Ù…ÛÙ… Ú©ÛŒ ÙÛØ±Ø³Øª طبع کریں" msgid "Due date" msgstr "باقی تاریخ" msgid "Priority" msgstr "اÛمیت" msgid "Task details" msgstr "Ù…ÛÙ… ØªÙØµÛŒÙ„ات" msgid "Close description panel" msgstr "ØªÙØµÛŒÙ„ات پینل بند کریں" msgid "No tasks with defined date found." msgstr "متعین Ú©Ø±Ø¯Û ØªØ§Ø±ÛŒØ® میں کوئی Ù…Ûمیں Ù†Ûیں پائی گئیں." msgid "Save tasks" msgstr "Ù…ÛÙ… محÙوظ کریں" msgid "tasks exported" msgstr "Ù…Ûمیں برآمد کردی گئیں" msgid "Please select at least one day when recurrency is enabled." msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ú©Ù… سے Ú©Ù… ایک دن منتخب کریں جب ری کرنسی ÙØ¹Ø§Ù„ ÛÙˆ." msgid "Set time" msgstr "وقت متعین کریں" msgid "Tomorrow" msgstr "Ú©Ù„" msgid "Selected task will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ù…ÛÙ… حذ٠کردی جائے Ú¯ÛŒ." msgid "Basic" msgstr "بنیادی" msgid "Select date and time" msgstr "تاریخ اور وقت منتخب کریں" msgid "Low" msgstr "پست" msgid "High" msgstr "بالا" msgid "Enable sound notification" msgstr "صوتی اطلاع ÙØ¹Ø§Ù„ کریں" #, fuzzy msgid "Enable notification dialog" msgstr "صوتی اطلاع ÙØ¹Ø§Ù„ کریں" msgid "Advanced" msgstr "اعلی" msgid "Alarm warning" msgstr "الارم انتباÛ" msgid "Postpone time" msgstr "موخر کرنے کا وقت" msgid "Alarm command" msgstr "الارم کمانڈ" msgid "Recurrent task" msgstr "باز گرد Ù…ÛÙ…" msgid "Enable" msgstr "ÙØ¹Ø§Ù„ کریں" msgid "Start" msgstr "ابتداء" msgid "End" msgstr "آخر" msgid "Interval" msgstr "وقÙÛ" msgid "Time period" msgstr "وقت مدت" msgid "Date period" msgstr "تاریخ مدت" msgid "Repeat" msgstr "Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "Repeat in the following days" msgstr "Ù…Ù†Ø¯Ø±Ø¬Û Ø°ÛŒÙ„ دنوں میں Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "Ignore alarm when task expired offline" msgstr "جب Ù…ÛÙ… آ٠لائن اختتام پذیر ÛÙˆ الارم نظر انداز کریں" msgid "Select a font..." msgstr "Ùونٹ منتخب کریں..." msgid "Color of items that are due today" msgstr "ان عناصر کا رنگ جو آج Ú©Û’ لیے باقی Ûیں" msgid "Color of items that are due in the next 7 days" msgstr "ان عناصر کا رنگ جو اگلے 7 دنوں تک باقی Ûیں" msgid "Color of items that are past due" msgstr "ان عناصر کا رنگ جن کا وقت گزر گیا" msgid "Task info font" msgstr "Ù…ÛÙ… معلومات Ùونٹ" msgid "Show in bold tasks with high priority" msgstr "Ú†ÙˆÚ‘ÛŒ Ù…Ûموں میں Ø²ÛŒØ§Ø¯Û Ø§Ûمیت Ú©Û’ ساتھ دکھائیں" msgid "Hide completed tasks" msgstr "تکمیل Ø´Ø¯Û Ù…ÛÙ… چھپائیں" msgid "Delete completed tasks without confirmation" msgstr "تکمیل Ø´Ø¯Û Ù…Ûمیں بغیر تصدیق Ú©Û’ حذ٠کردیں" msgid "Add new task when double clicked on tasks list" msgstr "Ù…ÛÙ… ÙÛØ±Ø³Øª میں Ø¯ÛØ±Û’ Ú©Ù„Ú© پر نئی Ù…ÛÙ… شامل کریں" msgid "minutes" msgstr "منٹ" msgid "0 for disable" msgstr "0 برائے معطلی" msgid "Repeat sound alarm" msgstr "الارم Ú©ÛŒ آواز Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "times" msgstr "اوقات" msgid "Global notification command" msgstr "عالمگیر اطلاعی کمانڈ" msgid "Tasks options" msgstr "Ù…ÛÙ… Ú©Û’ اختیارات" msgid "Reminder options" msgstr "یاد Ø¯ÛØ§Ù†ÛŒ اختیارات" msgid "Tasks list" msgstr "Ù…ÛÙ… ÙÛØ±Ø³Øª" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Ù†Ûیں." msgid "New Moon" msgstr "نیا چاند" msgid "Waxing Crescent Moon" msgstr "بڑھتا Ûلال چاند" msgid "Quarter Moon" msgstr "چوتھائی چاند" msgid "Waxing Gibbous Moon" msgstr "بڑھتا ابھرا چاند" msgid "Full Moon" msgstr "مکمل چاند" msgid "Waning Gibbous Moon" msgstr "ماند ابھرا چاند" msgid "Last Quarter Moon" msgstr "آخری چوتھائی چاند" msgid "Waning Crescent Moon" msgstr "ماند Ûلال چاند" msgid "Error" msgstr "غلطی" msgid "Selected file exist! Overwrite?" msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ Ù¾ÛÙ„Û’ ÛÛŒ موجود ÛÛ’! کیا اس Ú©Û’ اوپر Ù„Ú©Ú¾ دیا جائے؟" #~ msgid "Select and show first item after search" #~ msgstr "تلاش Ú©Û’ بعد Ù¾Ûلا عنصر منتخب کریں اور دکھائیں" #~ msgid "Order" #~ msgstr "ترتیب" #~ msgid "Mode" #~ msgstr "انداز" #~ msgid "Ascending" #~ msgstr "صعودی" #~ msgid "Descending" #~ msgstr "نزولی" #~ msgid "Sorting" #~ msgstr "ترتیب" #~ msgid "Contact map location" #~ msgstr "رابطے کا Ù†Ù‚Ø´Û Ù¾Ø± مقام" osmo-0.2.14/po/ja.po000664 001750 001750 00000114677 12561325524 014122 0ustar00pasppasp000000 000000 # Japanese translation of Osmo. # This file is distributed under the same license as the Osmo package. # Norihiro YONEDA , 2008-2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-03-25 17:44+0900\n" "Last-Translator: YoN \n" "Language-Team: Japanese Puppy Linux Team\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=2; plural=0;\n" msgid "About" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±" msgid "Close" msgstr "é–‰ã˜ã‚‹" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "å‰ã®ã‚¿ãƒ–ã«åˆ‡æ›¿ãˆ" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "次ã®ã‚¿ãƒ–ã«åˆ‡æ›¿ãˆ" msgid "switch to selected page" msgstr "é¸æŠžãƒšãƒ¼ã‚¸ã«åˆ‡æ›¿ãˆ" msgid "show options window" msgstr "オプションウィンドウを表示" msgid "show about window" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報ウィンドウを表示" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "オプションタブã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報タブã§ãƒšãƒ¼ã‚¸ã‚’切替ãˆ" msgid "exit" msgstr "終了" msgid "Space" msgstr "スペース" msgid "select current date" msgstr "ç¾åœ¨ã®æ—¥ä»˜ã‚’é¸æŠž" msgid "Ctrl+Space" msgstr "Ctrl+スペース" msgid "toggle personal data visibility" msgstr "å¯è¦–個人データを切替ãˆ" msgid "Arrows" msgstr "矢å°" msgid "change day" msgstr "日を変更" msgid "Ctrl+Up/Down" msgstr "Ctrl+上/下キー" msgid "scroll the contents in the day info panel" msgstr "日毎情報パãƒãƒ«ã®å†…容をスクロール" msgid "change month" msgstr "月を変更" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "年を変更" msgid "toggle calendars for the previous and next month" msgstr "剿œˆã¨ç¿Œæœˆã®ã‚«ãƒ¬ãƒ³ãƒ€ã‚’切替ãˆ" msgid "day notes browser" msgstr "一日ã®ãƒ¡ãƒ¢ãƒ–ラウザ" msgid "assign background color to day note" msgstr "一日ã®ãƒ¡ãƒ¢ã®èƒŒæ™¯è‰²ã‚’指定" msgid "date calculator" msgstr "日付電å“" msgid "show full-year calendar" msgstr "年間カレンダを表示" msgid "jump to date" msgstr "日付ã«ã‚¸ãƒ£ãƒ³ãƒ—" msgid "Delete" msgstr "削除" msgid "remove day note" msgstr "一日ã®ãƒ¡ãƒ¢ã‚’削除" msgid "Alt+Arrows" msgstr "Alt+矢å°" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "エディタを閉ã˜ã‚‹" msgid "toggle bold" msgstr "太字を切替ãˆ" msgid "toggle italic" msgstr "斜体を切替ãˆ" msgid "toggle underline" msgstr "下線を切替ãˆ" msgid "toggle strikethrough" msgstr "å–æ¶ˆç·šã‚’切替ãˆ" msgid "toggle highlight" msgstr "ãƒã‚¤ãƒ©ã‚¤ãƒˆã‚’切替ãˆ" msgid "Arrows Up/Down" msgstr "上/下矢å°ã‚­ãƒ¼" msgid "toggle alternative view" msgstr "表示方å¼ã‚’切替ãˆ" msgid "year info" msgstr "年情報" msgid "set current year" msgstr "ç¾åœ¨ã®å¹´ã‚’設定" msgid "close full-year calendar" msgstr "年間カレンダを閉ã˜ã‚‹" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "仕事を追加" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "仕事を編集" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "仕事を削除" msgid "toggle hidden tasks" msgstr "éš ã•れãŸä»•事を切替ãˆ" msgid "activate search field" msgstr "検索フィールドをアクティブã«ã™ã‚‹" msgid "Left, Right" msgstr "å·¦,å³" msgid "change category filter" msgstr "カテゴリフィルタを変更" msgid "close task info panel" msgstr "仕事情報パãƒãƒ«ã‚’é–‰ã˜ã‚‹" msgid "Insert" msgstr "挿入" msgid "add contact" msgstr "コンタクトを追加" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "コンタクトを編集" msgid "remove contact" msgstr "コンタクトを削除" msgid "change search mode" msgstr "検索モードを変更" msgid "close contact details panel" msgstr "コンタクト詳細パãƒãƒ«ã‚’é–‰ã˜ã‚‹" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "メモを開ã" msgid "add note" msgstr "メモを追加" msgid "remove note" msgstr "メモを削除" msgid "edit note name and category" msgstr "メモåã¨ã‚«ãƒ†ã‚´ãƒªãƒ¼ã‚’編集" msgid "close note editor" msgstr "メモエディタを閉ã˜ã‚‹" msgid "save note" msgstr "メモをä¿å­˜" msgid "find text" msgstr "テキストを見ã¤ã‘ã‚‹" msgid "clear selection attributes" msgstr "é¸æŠžå±žæ€§ã‚’ã‚¯ãƒªã‚¢ã™ã‚‹" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMOã¯ãƒ¦ãƒ¼ã‚¶ã®åˆ©ä¾¿æ€§ã‚’考慮ã—ã¦ä½œã‚‰ã‚Œã€ãŸãã•ã‚“ã®ã‚­ãƒ¼ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆãŒã‚りã¾" "ã™ã€‚以下ã¯å…¨ãƒªã‚¹ãƒˆã§ã™ï¼š" msgid "General" msgstr "一般" msgid "Calendar" msgstr "カレンダー" msgid "Note editor" msgstr "メモエディタ" msgid "Full-year calendar" msgstr "年間カレンダ" msgid "Tasks" msgstr "仕事" msgid "Contacts" msgstr "コンタクト" msgid "Notes" msgstr "メモ" msgid "Selector" msgstr "セレクタ" msgid "Editor" msgstr "エディタ" msgid "A handy personal organizer" msgstr "ã‹ã‚“ãŸã‚“個人管ç†ãƒ„ール" msgid "compiled on" msgstr "コンパイル" msgid "Programming" msgstr "プログラミング" msgid "Graphics" msgstr "グラフィック" msgid "Contributors" msgstr "貢献者" msgid "Translators" msgstr "翻訳者" msgid "Mailing lists" msgstr "メーリングリスト" msgid "Bug tracker" msgstr "ãƒã‚°ãƒˆãƒ©ãƒƒã‚«" msgid "Feature requests" msgstr "æ©Ÿèƒ½è¦æ±‚" msgid "Available modules" msgstr "利用å¯èƒ½ãªãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«" msgid "Compiled-in features" msgstr "ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«æ¸ˆã¿æ©Ÿèƒ½" msgid "iCalendar support" msgstr "iCalendar サãƒãƒ¼ãƒˆ" msgid "Encrypted notes support" msgstr "æš—å·åŒ–メモサãƒãƒ¼ãƒˆ" msgid "Backup support" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—サãƒãƒ¼ãƒˆ" msgid "Printing support" msgstr "å°åˆ·ã‚µãƒãƒ¼ãƒˆ" msgid "Spell checker support" msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼ã‚µãƒãƒ¼ãƒˆ" msgid "version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" msgid "SVN revision" msgstr "SVN リビジョン" msgid "Key shortcuts" msgstr "キーショートカット" msgid "License" msgstr "ライセンス" msgid "Save backup" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’ä¿å­˜" msgid "Password protection" msgstr "パスワードä¿è­·" msgid "Enter password" msgstr "パスワードを入力" msgid "Re-enter password" msgstr "パスワードをå†å…¥åŠ›" msgid "Please enter the password" msgstr "パスワードを入力ã—ã¦ä¸‹ã•ã„" msgid "Passwords do not match!" msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“ï¼" msgid "Cannot create backup!" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—を作æˆã§ãã¾ã›ã‚“ï¼" msgid "Backup file saved successfully!" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルã®ä¿å­˜ã«æˆåŠŸã—ã¾ã—ãŸï¼" msgid "Open backup file" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルを開ã" msgid "Osmo backup files (*.bck)" msgstr "Osmo ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイル (*.bck)" msgid "This is not Osmo backup file" msgstr "ã“れ㯠Osmo ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルã§ã¯ã‚りã¾ã›ã‚“" msgid "Incorrect password!" msgstr "é–“é•ã£ãŸãƒ‘スワードã§ã™ï¼" msgid "All your data will be replaced with backup file content." msgstr "å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã¯ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイルã®å†…容ã«ç½®æ›ã•れã¾ã™ã€‚" msgid "Are you sure?" msgstr "よã‚ã—ã„ã§ã™ã‹ï¼Ÿ" msgid "Osmo has to be restarted now..." msgstr "今ã™ã Osmo ã‚’å†èµ·å‹•ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“..." msgid "was born" msgstr "誕生" msgid "year old" msgid_plural "years old" msgstr[0] "æ‰" msgstr[1] "æ‰" msgid "Current time" msgstr "ç¾åœ¨æ™‚刻" msgid "Day number" msgstr "日数" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "年末ã¾ã§ã®æ—¥æ•°" msgstr[1] "年末ã¾ã§ã®æ—¥æ•°" msgid "the last day of the year" msgstr "大晦日" msgid "Today distance" msgstr "今日ã‹ã‚‰ã®æ—¥æ•°" msgid "Week number" msgstr "週数" msgid "Marked days" msgstr "マークã—ãŸæ—¥" msgid "Weekend days" msgstr "週末日" msgid "Moon phase" msgstr "月齢" msgid "Zodiac sign" msgstr "å二宮" msgid "Day notes" msgstr "一日ã®ãƒ¡ãƒ¢" msgid "Day tasks" msgstr "一日ã®ä»•事" msgid "Birthday" msgstr "誕生日" msgid "Day category" msgstr "日カテゴリー" msgid "Selected day note will be removed." msgstr "é¸æŠžã—ãŸä¸€æ—¥ã®ãƒ¡ãƒ¢ã¯å‰Šé™¤ã•れã¾ã™ã€‚" msgid "Continue?" msgstr "ç¶šã‘ã¾ã™ã‹ï¼Ÿ" msgid "Previous year" msgstr "å‰å¹´" msgid "Previous month" msgstr "剿œˆ" msgid "Previous day" msgstr "剿—¥" msgid "Today" msgstr "今日" msgid "Next day" msgstr "明日" msgid "Next month" msgstr "æ¥æœˆ" msgid "Next year" msgstr "æ¥å¹´" msgid "Jump to date" msgstr "ãã®æ—¥ã«ã‚¸ãƒ£ãƒ³ãƒ—" msgid "Print calendar" msgstr "カレンダーをå°åˆ·" msgid "Date calculator" msgstr "日付電å“" #, fuzzy msgid "Backup data" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—" #, fuzzy msgid "Restore data" msgstr "復元" msgid "Preferences" msgstr "設定" msgid "Quit" msgstr "終了" msgid "Toggle day note panel" msgstr "一日ã®ãƒ¡ãƒ¢ãƒ‘ãƒãƒ«ã‚’切替ãˆ" msgid "Add task" msgstr "仕事を追加" msgid "Select day color" msgstr "日付ã®è‰²ã‚’é¸æŠž" msgid "Browse notes" msgstr "メモをブラウズ" msgid "Browse iCal events" msgstr "iCal イベントをブラウズ" msgid "Export to iCal file" msgstr "iCal ファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" msgid "Previous and next month" msgstr "剿œˆã¨ç¿Œæœˆ" msgid "Close note panel" msgstr "メモパãƒãƒ«ã‚’é–‰ã˜ã‚‹" msgid "Highlight" msgstr "ãƒã‚¤ãƒ©ã‚¤ãƒˆ" msgid "Strikethrough" msgstr "å–æ¶ˆç·š" msgid "Underline" msgstr "下線" msgid "Italic" msgstr "斜体" msgid "Bold" msgstr "太字" msgid "Insert timeline" msgstr "時刻ラインを挿入" msgid "Clear text" msgstr "テキストをクリア" msgid "Info" msgstr "情報" msgid "Select color" msgstr "è‰²ã‚’é¸æŠž" msgid "None" msgstr "ãªã—" msgid "Cancel" msgstr "キャンセル" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "å¹´" msgstr[1] "å¹´" msgid "month" msgid_plural "months" msgstr[0] "月" msgstr[1] "月" msgid "day" msgid_plural "days" msgstr[0] "æ—¥" msgstr[1] "æ—¥" msgid "hour" msgid_plural "hours" msgstr[0] "時" msgstr[1] "時" msgid "minute" msgid_plural "minutes" msgstr[0] "分" msgstr[1] "分" msgid "second" msgid_plural "seconds" msgstr[0] "ç§’" msgstr[1] "ç§’" msgid "or" msgstr "ã¾ãŸã¯" msgid "rounded down" msgstr "å››æ¨äº”å…¥" msgid "week" msgid_plural "weeks" msgstr[0] "週" msgstr[1] "週" msgid "working day" msgid_plural "working days" msgstr[0] "稼動日" msgstr[1] "稼動日" msgid "time is ignored" msgstr "時間ã¯ç„¡è¦–ã•れã¾ã™" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "週末" msgstr[1] "週末" msgid "This calculator only supports dates after year 1." msgstr "ã“ã®é›»å“ã¯1年目以é™ã®æ—¥ä»˜ã ã‘をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "無視ã•れãŸé€±æœ«" msgstr[1] "週末を無視" msgid "Year" msgstr "å¹´" msgid "Month" msgstr "月" msgid "Day" msgstr "æ—¥" msgid "Current date" msgstr "ç¾åœ¨ã®æ—¥ä»˜" msgid "Set current date" msgstr "ç¾åœ¨ã®æ—¥ä»˜ã‚’セット" msgid "Hour" msgstr "時" msgid "Minute" msgstr "分" msgid "Second" msgstr "ç§’" msgid "Set current time" msgstr "ç¾åœ¨ã®æ™‚刻をセット" msgid "Reset time" msgstr "時刻をリセット" msgid "First date and time" msgstr "最åˆã®æ—¥ä»˜ã¨æ™‚刻" msgid "Second date and time" msgstr "2ç•ªç›®ã®æ—¥ä»˜ã¨æ™‚刻" msgid "Alternative time units" msgstr "åˆ¥ã®æ™‚é–“å˜ä½" msgid "Result" msgstr "çµæžœ" msgid "Duration between two dates" msgstr "2ã¤ã®æ—¥ä»˜ã®æœŸé–“" msgid "Operation" msgstr "演算" msgid "add" msgstr "è¶³ã™" msgid "subtract" msgstr "引ã" msgid "Date and time to add or subtract from" msgstr "æ—¥ä»˜ã¨æ™‚刻を足ã™ã€ã‚ã‚‹ã„ã¯å¼•ã" msgid "Years" msgstr "å¹´" msgid "Months" msgstr "月" msgid "Days" msgstr "æ—¥" msgid "Weeks" msgstr "週" msgid "Hours" msgstr "時" msgid "Minutes" msgstr "分" msgid "Seconds" msgstr "ç§’" msgid "Ignore weekend days" msgstr "週末を無視" msgid "Reset fields" msgstr "フィールドをリセット" msgid "Time to add or subtract" msgstr "è¶³ã™ã€ã‚ã‚‹ã„ã¯å¼•ãæ™‚é–“" msgid "Jump to" msgstr "ジャンプ" msgid "Add to or subtract from a date" msgstr "日付ã‹ã‚‰è¶³ã™ã€ã‚ã‚‹ã„ã¯å¼•ã" msgid "Leap year" msgstr "ã†ã‚‹ã†å¹´" msgid "Yes" msgstr "ã¯ã„" msgid "No" msgstr "ã„ã„ãˆ" msgid "Chinese year animal" msgstr "干支" msgid "Number of days" msgstr "日数" msgid "Number of weeks" msgstr "週数" msgid "Number of weekend days" msgstr "週末日数" msgid "Year info" msgstr "年情報" msgid "Current year" msgstr "ç¾åœ¨ã®å¹´" msgid "Alternative view" msgstr "表示方å¼" msgid "event" msgid_plural "events" msgstr[0] "イベント" msgstr[1] "行事" msgid "No valid calendars defined" msgstr "有効ãªã‚«ãƒ¬ãƒ³ãƒ€ãƒ¼ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“" msgid "iCalendar events" msgstr "iCalendar イベント" msgid "Date" msgstr "日付" msgid "Time" msgstr "時間" msgid "Summary" msgstr "概è¦" msgid "Select output file" msgstr "å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" msgid "The list will be cleared and all entries will be lost." msgstr "リストã¯ã‚¯ãƒªã‚¢ã•れã€å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã¯å¤±ã‚れã¾ã™ã€‚" msgid "Done!" msgstr "完了ï¼" msgid "event exported" msgid_plural "events exported" msgstr[0] "エクスãƒãƒ¼ãƒˆã—ãŸã‚¤ãƒ™ãƒ³ãƒˆ" msgstr[1] "エクスãƒãƒ¼ãƒˆã—ãŸè¡Œäº‹" msgid "iCalendar export" msgstr "iCalendar ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" msgid "Day Selector" msgstr "日付セレクタ" msgid "Use date period" msgstr "日付ピリオドを使ã†" msgid "Add" msgstr "追加" msgid "Clear" msgstr "クリア" msgid "Remove" msgstr "削除" msgid "Output filename" msgstr "出力ファイルå" msgid "Browse" msgstr "ブラウズ" msgid "Export" msgstr "エクスãƒãƒ¼ãƒˆ" msgid "no entries" msgstr "エントリーã¯ã‚りã¾ã›ã‚“" msgid "entry" msgid_plural "entries" msgstr[0] "エントリー" msgstr[1] "エントリー" msgid "Calendar notes" msgstr "カレンダーメモ" msgid "Search" msgstr "検索" msgid "Filter" msgstr "フィルタ" msgid "Current month" msgstr "ç¾åœ¨ã®æœˆ" msgid "Selected month" msgstr "é¸æŠžã•ã‚ŒãŸæœˆ" msgid "Selected year" msgstr "é¸æŠžã•れãŸå¹´" msgid "Selected month and year" msgstr "é¸æŠžã•ã‚ŒãŸæœˆã¨å¹´" msgid "All notes" msgstr "å…¨ã¦ã®ãƒ¡ãƒ¢" msgid "Case sensitive" msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別ã™ã‚‹" msgid "Strikethrough past day notes" msgstr "以å‰ã®æ—¥ã®ãƒ¡ãƒ¢ã«å–消線" msgid "Note" msgstr "メモ" msgid "Syntax" msgstr "æ§‹æ–‡" msgid "abbreviated weekday name" msgstr "çœç•¥ã—ãŸæ›œæ—¥å" msgid "full weekday name" msgstr "å®Œå…¨ãªæ›œæ—¥å" msgid "abbreviated month name" msgstr "çœç•¥ã—ãŸæœˆã®åå‰" msgid "full month name" msgstr "å®Œå…¨ãªæœˆã®åå‰" msgid "day of the month" msgstr "æ—¥" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "ゼロをå‰ã«ç½®ã‹ãªã„æ—¥" msgid "year without century" msgstr "世紀ã®ãªã„å¹´" msgid "year with century" msgstr "世紀ã®ã‚ã‚‹å¹´" msgid "Date header format" msgstr "日付ヘッダ形å¼" msgid "Set default format" msgstr "デフォルトã®å½¢å¼ã‚’セット" msgid "Date format syntax" msgstr "æ—¥ä»˜å½¢å¼æ§‹æ–‡" msgid "Day note marker" msgstr "æ—¥ã®ãƒ¡ãƒ¢ãƒžãƒ¼ã‚«" msgid "Event marker" msgstr "イベントマーカ" msgid "Circle" msgstr "円" msgid "Ellipse" msgstr "楕円" msgid "Wave" msgstr "æ³¢" msgid "Current day marker" msgstr "ç¾åœ¨æ—¥ãƒžãƒ¼ã‚«" msgid "Arrow" msgstr "矢å°" msgid "Free-hand circle" msgstr "フリーãƒãƒ³ãƒ‰å††" msgid "Colors" msgstr "色" msgid "Header color" msgstr "ヘッダã®è‰²" msgid "Weekend days color" msgstr "週末日ã®è‰²" msgid "Cursor color" msgstr "カーソルã®è‰²" msgid "Event marker color" msgstr "イベントマーカã®è‰²" msgid "Current day marker color" msgstr "ç¾åœ¨æ—¥ãƒžãƒ¼ã‚«ã®è‰²" msgid "Birthday marker color" msgstr "誕生日マーカã®è‰²" msgid "Date font" msgstr "日付ã®ãƒ•ォント" msgid "Calendar font" msgstr "カレンダã®ãƒ•ォント" msgid "Note font" msgstr "メモã®ãƒ•ォント" msgid "Enable block cursor" msgstr "ブロックカーソルを有効" msgid "Cursor thickness" msgstr "カーソルã®å¹…" msgid "Thin" msgstr "ç´°ã" msgid "Thick" msgstr "太ã" msgid "Edit category" msgstr "カテゴリーを編集" msgid "Color" msgstr "色" msgid "Name" msgstr "åå‰" msgid "Select ICS file" msgstr "ICS ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" msgid "All Files" msgstr "全ファイル" msgid "Calendar files (*.ics)" msgstr "Calendar ファイル (*.ics)" msgid "Modify ICAL parameters" msgstr "ICAL パラメータを修正" msgid "Filename" msgstr "ファイルå" msgid "Options" msgstr "オプション" msgid "Disabled" msgstr "無効" msgid "Valid" msgstr "有効" msgid "Description" msgstr "説明" msgid "Full date" msgstr "å®Œå…¨ãªæ—¥ä»˜" msgid "Mark" msgstr "マーク" msgid "Week start on Monday" msgstr "週を月曜日ã‹ã‚‰å§‹ã‚ã‚‹" msgid "Show day names" msgstr "誕生日åを表示" msgid "No month change" msgstr "月ã¯å¤‰æ›´ã—ãªã„" msgid "Show week numbers" msgstr "週数を表示" msgid "Simple view in full-year calendar" msgstr "年間カレンダã«ç°¡å˜è¡¨ç¤º" msgid "Enable auxilary calendars" msgstr "補助カレンダを有効" msgid "Ascending sorting in day notes browser" msgstr "一日ã®ãƒ¡ãƒ¢ãƒ–ãƒ©ã‚¦ã‚¶ã§æ˜‡é †ã‚½ãƒ¼ãƒˆ" msgid "Enable spell checker in day notes" msgstr "一日ã®ãƒ¡ãƒ¢ã®ã‚¹ãƒšãƒ«ãƒã‚§ãƒƒã‚«ãƒ¼ã‚’有効ã«ã™ã‚‹" #, fuzzy msgid "Show seconds" msgstr "ç§’" msgid "Appearance" msgstr "外観" msgid "Day categories" msgstr "æ—¥ã®ã‚«ãƒ†ã‚´ãƒª" msgid "iCalendar files" msgstr "iCalendar ファイル" msgid "Show in day info panel" msgstr "ä¸€æ—¥ã®æƒ…報パãƒãƒ«ã«è¡¨ç¤º" msgid "Name day" msgstr "è–åç¥æ—¥" msgid "Error printing" msgstr "å°åˆ·ã‚¨ãƒ©ãƒ¼" msgid "Printing properties" msgstr "å°åˆ·ãƒ—ロパティ" msgid "Month name" msgstr "月ã®åå‰" msgid "Day name" msgstr "æ—¥ã®åå‰" msgid "Events" msgstr "イベント" msgid "Fonts" msgstr "フォント" msgid "Birthdays" msgstr "誕生日" msgid "Namedays" msgstr "è–åç¥æ—¥" msgid "Visible events" msgstr "表示イベント" msgid "Padding" msgstr "é–“éš”" msgid "Event maximum length" msgstr "イベント最大長" msgid "Page orientation:" msgstr "å°åˆ·ã®å‘ã:" msgid "Portrait" msgstr "縦長" msgid "Landscape" msgstr "横長" msgid "Timeline" msgstr "タイムライン" msgid "From (hour)" msgstr "(時) ã‹ã‚‰" msgid "Step (minutes)" msgstr "(分) 進ã‚ã¦" msgid "To (hour)" msgstr "(時) ã¾ã§" msgid "No date" msgstr "日付ãªã—" msgid "Rat" msgstr "å­" msgid "Ox" msgstr "丑" msgid "Tiger" msgstr "寅" msgid "Hare" msgstr "å¯" msgid "Dragon" msgstr "è¾°" msgid "Snake" msgstr "å·³" msgid "Horse" msgstr "åˆ" msgid "Sheep" msgstr "未" msgid "Monkey" msgstr "申" msgid "Fowl" msgstr "é…‰" msgid "Dog" msgstr "戌" msgid "Pig" msgstr "亥" msgid "Unknown" msgstr "䏿˜Ž" msgid "Aquarius" msgstr "水瓶座" msgid "Pisces" msgstr "魚座" msgid "Aries" msgstr "牡羊座" msgid "Taurus" msgstr "牡牛座" msgid "Gemini" msgstr "åŒå­åº§" msgid "Cancer" msgstr "カニ座" msgid "Leo" msgstr "ç…å­åº§" msgid "Virgo" msgstr "乙女座" msgid "Libra" msgstr "ã¦ã‚“ã³ã‚“座" msgid "Scorpio" msgstr "è åº§" msgid "Sagittarius" msgstr "射手座" msgid "Capricorn" msgstr "山羊座" msgid "Cannot perform selected operation." msgstr "é¸æŠžã—ãŸæ“作ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。" msgid "Task has been modified or removed." msgstr "仕事ã¯ã€å¤‰æ›´ã‚ã‚‹ã„ã¯å‰Šé™¤ã•れã¾ã—ãŸã€‚" msgid "Remind me later" msgstr "後ã§é€šçŸ¥ã™ã‚‹" msgid "Done" msgstr "終了" msgid "postponed" msgstr "延期" msgid "Show task" msgstr "仕事を表示" msgid "Alarm warning!" msgstr "アラーム警告ï¼" msgid "Day note" msgstr "一日ã®ãƒ¡ãƒ¢" msgid "Type" msgstr "タイプ" msgid "Event" msgstr "イベント" msgid "Task" msgstr "仕事" msgid "Show Osmo" msgstr "Osmo を表示" msgid "No birthdays defined" msgstr "誕生日ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“" msgid "Birthdays list" msgstr "誕生日リスト" msgid "Days to birthday" msgstr "誕生日ã¾ã§ã®æ—¥æ•°" msgid "Age" msgstr "å¹´é½¢" msgid "Birthday date" msgstr "誕生日" msgid "today" msgstr "今日" msgid "Please select address" msgstr "使‰€ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。" msgid "Information" msgstr "情報" msgid "Work" msgstr "勤務先" msgid "Home" msgstr "自宅" msgid "Group" msgstr "グループ" msgid "First name" msgstr "å (ファーストãƒãƒ¼ãƒ )" msgid "Last name" msgstr "å§“ (ラストãƒãƒ¼ãƒ )" msgid "Second name" msgstr "å§“ (セカンドãƒãƒ¼ãƒ )" msgid "Nickname" msgstr "ニックãƒãƒ¼ãƒ " msgid "Tags" msgstr "ã‚¿ã‚°" msgid "Name day date" msgstr "è–åç¥æ—¥ã®æ—¥ä»˜" msgid "Home address" msgstr "使‰€ (個人)" msgid "Home postcode" msgstr "éƒµä¾¿ç•ªå· (個人)" msgid "Home city" msgstr "å¸‚ç”ºæ‘ (個人)" msgid "Home state" msgstr "都é“府県 (個人)" msgid "Home country" msgstr "国 (個人)" msgid "Organization" msgstr "組織" msgid "Department" msgstr "部署" msgid "Work address" msgstr "使‰€ (勤務先)" msgid "Work postcode" msgstr "éƒµä¾¿ç•ªå· (勤務先)" msgid "Work city" msgstr "å¸‚ç”ºæ‘ (勤務先)" msgid "Work state" msgstr "都é“府県 (勤務先)" msgid "Work country" msgstr "国 (勤務先)" msgid "Fax" msgstr "FAX" msgid "Home phone" msgstr "é›»è©±ç•ªå· (個人)" msgid "Home phone 2" msgstr "é›»è©±ç•ªå· 2 (個人)" msgid "Home phone 3" msgstr "é›»è©±ç•ªå· 3 (個人)" msgid "Home phone 4" msgstr "é›»è©±ç•ªå· 4 (個人)" msgid "Work phone" msgstr "é›»è©±ç•ªå· (勤務先)" msgid "Work phone 2" msgstr "é›»è©±ç•ªå· 2 (勤務先)" msgid "Work phone 3" msgstr "é›»è©±ç•ªå· 3 (勤務先)" msgid "Work phone 4" msgstr "é›»è©±ç•ªå· 4 (勤務先)" msgid "Cell phone" msgstr "æºå¸¯é›»è©±" msgid "Cell phone 2" msgstr "æºå¸¯é›»è©± 2" msgid "Cell phone 3" msgstr "æºå¸¯é›»è©± 3" msgid "Cell phone 4" msgstr "æºå¸¯é›»è©± 4" msgid "E-Mail" msgstr "Eメールアドレス" msgid "E-Mail 2" msgstr "Eメールアドレス 2" msgid "E-Mail 3" msgstr "Eメールアドレス 3" msgid "E-Mail 4" msgstr "Eメールアドレス 4" msgid "WWW" msgstr "ホームページ" msgid "WWW 2" msgstr "ホームページ 2" msgid "WWW 3" msgstr "ホームページ 3" msgid "WWW 4" msgstr "ホームページ 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "ブログ" msgid "Photo" msgstr "写真" msgid "Additional info" msgstr "追加情報" msgid "New contact" msgstr "æ–°ã—ã„コンタクト" msgid "Remove contact" msgstr "コンタクトを削除" msgid "Edit contact" msgstr "コンタクトを編集" msgid "Show birthdays" msgstr "誕生日を表示" msgid "Show contact location on the map" msgstr "地図ã§ã‚³ãƒ³ã‚¿ã‚¯ãƒˆå ´æ‰€ã‚’表示" msgid "Import contacts" msgstr "コンタクトをインãƒãƒ¼ãƒˆ" msgid "Export contacts" msgstr "コンタクトをエクスãƒãƒ¼ãƒˆ" msgid "First Name" msgstr "å (ファーストãƒãƒ¼ãƒ )" msgid "Last Name" msgstr "å§“ (ラストãƒãƒ¼ãƒ )" msgid "All fields" msgstr "全フィールド" msgid "Contact details" msgstr "コンタクトã®è©³ç´°" msgid "Close contact panel" msgstr "コンタクトパãƒãƒ«ã‚’é–‰ã˜ã‚‹" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "エクスãƒãƒ¼ãƒˆã—ãŸã‚³ãƒ³ã‚¿ã‚¯ãƒˆ" msgstr[1] "エクスãƒãƒ¼ãƒˆã—ãŸã‚³ãƒ³ã‚¿ã‚¯ãƒˆ" msgid "Cannot create file." msgstr "ファイルを作æˆã§ãã¾ã›ã‚“。" msgid "Output format" msgstr "出力形å¼" msgid "Add header" msgstr "ヘッダを追加" msgid "Fields to export" msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ•ィールド" msgid "All" msgstr "å…¨ã¦" msgid "Invert" msgstr "å転" msgid "Select fields" msgstr "ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’é¸æŠž" msgid "Select CSV file" msgstr "CSVãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSVファイル (カンマ区切りã®å€¤) (*.csv)" msgid "Please select file first." msgstr "最åˆã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。" msgid "Import type" msgstr "インãƒãƒ¼ãƒˆå½¢å¼" msgid "File" msgstr "ファイル" msgid "Input filename" msgstr "入力ファイルå" msgid "Import" msgstr "インãƒãƒ¼ãƒˆ" msgid "Nothing to import." msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚‚ã®ã¯ã‚りã¾ã›ã‚“。" msgid "contact added" msgid_plural "contacts added" msgstr[0] "追加ã—ãŸã‚³ãƒ³ã‚¿ã‚¯ãƒˆ" msgstr[1] "コンタクトã®è¿½åŠ " msgid "of" msgstr "ã®" msgid "Record" msgstr "記録" msgid "Number fields per record" msgstr "記録毎ã®ç•ªå·ãƒ•ィールド" msgid "Use first record as header" msgstr "最åˆã®è¨˜éŒ²ã‚’ヘッダã¨ã—ã¦ä½¿ã†" msgid "Field type" msgstr "フィールド形å¼" msgid "Value" msgstr "値" msgid "No records found in selected file." msgstr "é¸æŠžãƒ•ã‚¡ã‚¤ãƒ«ã«è¨˜éŒ²ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" msgid "Cannot read file." msgstr "ファイルを読ã‚ã¾ã›ã‚“。" msgid "Cannot open file." msgstr "ファイルを開ã‘ã¾ã›ã‚“。" msgid "Selected contact will be removed." msgstr "é¸æŠžã—ãŸã‚³ãƒ³ã‚¿ã‚¯ãƒˆã¯å‰Šé™¤ã•れã¾ã™ã€‚" msgid "Select photo" msgstr "å†™çœŸã‚’é¸æŠž" msgid "Address" msgstr "使‰€" msgid "Postcode" msgstr "郵便番å·" msgid "City" msgstr "市町æ‘" msgid "State" msgstr "都é“府県" msgid "Country" msgstr "国" msgid "Add contact" msgstr "コンタクトを追加" msgid "Personal" msgstr "パーソナル" msgid "Phones" msgstr "電話番å·" msgid "Internet" msgstr "インターãƒãƒƒãƒˆ" msgid "Color of contact tags" msgstr "コンタクトタグã®è‰²" msgid "Color of links" msgstr "リンクã®è‰²" msgid "Font size" msgstr "フォントサイズ" msgid "Name font size" msgstr "åå‰ã®ãƒ•ォントサイズ" msgid "Item font size" msgstr "アイテムã®ãƒ•ォントサイズ" msgid "Photo size" msgstr "写真ã®ã‚µã‚¤ã‚º" msgid "Small" msgstr "å°" msgid "Medium" msgstr "中" msgid "Large" msgstr "大" msgid "Hide group column" msgstr "グループコラムを隠ã™" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "ãã®ä»–" msgid "Groups" msgstr "グループ" msgid "Visible columns in birthday browser" msgstr "誕生日ブラウザã§ã‚³ãƒ©ãƒ ã‚’表示" msgid "Show calendar" msgstr "カレンダーを表示" msgid "Show tasks" msgstr "仕事を表示" msgid "Show contacts" msgstr "コンタクトを表示" msgid "Show notes" msgstr "メモを表示" msgid "Show options" msgstr "オプションを表示" msgid "Show small calendar window" msgstr "å°ã•ã„カレンダーウィンドウを表示" msgid "Check for events since last run" msgstr "最後ã®å®Ÿè¡Œã‹ã‚‰ã‚¤ãƒ™ãƒ³ãƒˆã‚’ãƒã‚§ãƒƒã‚¯" msgid "Number of days to check forward for events (default: 0)" msgstr "å…ˆã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹æ—¥æ•°(åˆæœŸå€¤ï¼š 0)" msgid "Set absolute path for settings and data files" msgstr "設定ã¨ãƒ‡ãƒ¼ã‚¿ãƒ•ァイルã«çµ¶å¯¾ãƒ‘スをセット" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "ã‹ã‚“ãŸã‚“個人管ç†ãƒ„ール" msgid "ERROR: Cannot create config files" msgstr "エラー:設定ファイルを作æˆã§ãã¾ã›ã‚“" msgid "Another copy of OSMO is already running." msgstr "ã‚‚ã†1ã¤ã® OSMO ã®ã‚³ãƒ”ãƒ¼ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "2ã¤ä»¥ä¸Šã® OSMO ã®ã‚³ãƒ”ãƒ¼ã‚’åŒæ™‚ã«ä½¿ã†ã¨ãƒ‡ãƒ¼ã‚¿æå¤±ã®åŽŸå› ã¨ãªã‚Šã¾ã™ã€‚" msgid "Do you really want to continue?" msgstr "本当ã«ç¶šã‘ã¾ã™ã‹ï¼Ÿ" msgid "Warning" msgstr "警告" msgid "The note has changed." msgstr "メモã¯å¤‰æ›´ã•れã¾ã—ãŸã€‚" msgid "Do you want to save it?" msgstr "ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ" #, fuzzy msgid "No URLs found in the selection..." msgstr "é¸æŠžãƒ•ã‚¡ã‚¤ãƒ«ã«è¨˜éŒ²ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "本当ã«ç¶šã‘ã¾ã™ã‹ï¼Ÿ" msgid "Question" msgstr "質å•" msgid "Words" msgstr "å˜èªž" msgid "Lines" msgstr "行" msgid "Characters" msgstr "文字" msgid "White characters" msgstr "空白文字" msgid "Bytes" msgstr "ãƒã‚¤ãƒˆ" msgid "Document" msgstr "ドキュメント" msgid "Selection" msgstr "é¸æŠž" msgid "Created" msgstr "作æˆ" msgid "Modified" msgstr "修正" msgid "New note" msgstr "æ–°è¦ãƒ¡ãƒ¢" msgid "Add note" msgstr "メモを追加" msgid "Edit note" msgstr "メモを編集" msgid "Delete note" msgstr "メモを削除" msgid "Remove note" msgstr "メモを除去" msgid "Find" msgstr "見ã¤ã‘ã‚‹" msgid "Clear attributes" msgstr "属性をクリア" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "メモをä¿å­˜" msgid "Insert current date and time" msgstr "ç¾åœ¨ã®æ—¥ä»˜ã¨æ™‚刻を挿入" msgid "Insert separator" msgstr "セパレータを挿入" msgid "Statistics" msgstr "統計" msgid "Close editor" msgstr "エディタを閉ã˜ã‚‹" msgid "Toggle spell checker" msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼ã‚’切替ãˆ" msgid "Category" msgstr "カテゴリ" msgid "Note name" msgstr "メモå" msgid "Last changes" msgstr "最近ã®å¤‰æ›´" msgid "Read-only" msgstr "読ã¿è¾¼ã¿å°‚用" msgid "Line" msgstr "行" msgid "Column" msgstr "コラム" msgid "case sensitive" msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別" msgid "Close find entry" msgstr "見ã¤ã‘るエントリを閉ã˜ã‚‹" msgid "Edit entry" msgstr "エントリを編集" msgid "Remember cursor position" msgstr "カーソルä½ç½®ã‚’記憶" msgid "Selected note will be removed." msgstr "é¸æŠžã—ãŸãƒ¡ãƒ¢ã¯å‰Šé™¤ã•れã¾ã™ã€‚" msgid "No further data recovery will be possible." msgstr "ã“れ以上ã€ãƒ‡ãƒ¼ã‚¿ã®ãƒªã‚«ãƒãƒªãƒ¼ã¯ã§ãã¾ã›ã‚“。" msgid "Plain" msgstr "平文" msgid "Encrypted" msgstr "æš—å·åŒ–" msgid "Note type" msgstr "メモ形å¼" msgid "Cannot open the note." msgstr "メモを開ã‘ã¾ã›ã‚“。" msgid "encryption support is disabled" msgstr "æš—å·åŒ–サãƒãƒ¼ãƒˆã¯ç„¡åйã§ã™" msgid "Authorization" msgstr "承èª" msgid "Algorithm" msgstr "アルゴリズム" msgid "Hashing" msgstr "ãƒãƒƒã‚·ãƒ¥æ³•" msgid "Compression" msgstr "圧縮" msgid "Ratio" msgstr "比率" msgid "Fast" msgstr "æ—©ã„" msgid "Good" msgstr "良" msgid "Best" msgstr "最高" msgid "Remember the last selected category" msgstr "最後ã®é¸æŠžã‚«ãƒ†ã‚´ãƒªã‚’記憶" msgid "Use system format for date and time" msgstr "æ—¥ä»˜ã¨æ™‚é–“ã«ã‚·ã‚¹ãƒ†ãƒ å½¢å¼ã‚’使ã†" msgid "Encryption" msgstr "æš—å·åŒ–" msgid "Visible columns" msgstr "ç›®ã«è¦‹ãˆã‚‹ã‚³ãƒ©ãƒ " msgid "Categories" msgstr "カテゴリ" msgid "Notes options" msgstr "メモオプション" msgid "Osmo has to be restarted to take effect." msgstr "有効ã«ã™ã‚‹ã«ã¯ Osmo ã‚’å†èµ·å‹•ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“..." msgid "Layout" msgstr "レイアウト" msgid "Vertical" msgstr "縦" msgid "Horizontal" msgstr "横" msgid "Tabs position" msgstr "タブä½ç½®" msgid "Left" msgstr "å·¦" msgid "Right" msgstr "å³" msgid "Top" msgstr "上" msgid "Bottom" msgstr "下" #, fuzzy msgid "Use default stock icons" msgstr "デフォルトã®ã‚¹ãƒˆãƒƒã‚¯ã‚¢ã‚¤ã‚³ãƒ³ã‚’使ã†(å†èµ·å‹•ãŒå¿…è¦)" msgid "Disable underline in links" msgstr "リンクã®ä¸‹ç·šã‚’無効" msgid "Draw rows in alternating colors" msgstr "交互ã®è‰²ã§è¡Œã‚’æã" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "å°‘ãªãã¨ã‚‚1ã¤ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒè¦‹ãˆãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。" msgid "Override locale settings" msgstr "ロケール設定を上書ã" msgid "Date format" msgstr "日付形å¼" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "時間形å¼" msgid "hours" msgstr "時" msgid "Spell checker language" msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼è¨€èªž" msgid "Enable tooltips" msgstr "ツールãƒãƒƒãƒ—を有効" msgid "Remember last selected page" msgstr "最後ã®é¸æŠžãƒšãƒ¼ã‚¸ã‚’記憶" msgid "Save data after every modification" msgstr "修正ã”ã¨ã«ãƒ‡ãƒ¼ã‚¿ã‚’ä¿å­˜" msgid "Web browser" msgstr "ウェブブラウザ" msgid "E-mail client" msgstr "Eメールクライアント" msgid "Sound player" msgstr "サウンドプレーヤ" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "「%sã€ãƒ‘ターンã¯ã‚¦ã‚§ãƒ–アドレスã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "「%sã€ãƒ‘ターンã¯Eメールアドレスã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "「%sã€ãƒ‘ターンã¯éŸ³å£°ãƒ•ァイルåã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™" msgid "Enable system tray" msgstr "システムトレイを有効" msgid "Start minimised" msgstr "アイコン化ã§é–‹å§‹" msgid "Blink on events" msgstr "イベントã§ç‚¹æ»…" msgid "Ignore day note events" msgstr "一日ã®ãƒ¡ãƒ¢ã‚¤ãƒ™ãƒ³ãƒˆã‚’無視ã™ã‚‹" msgid "Hide" msgstr "éš ã™" msgid "Helpers" msgstr "ヘルパ" msgid "System tray" msgstr "システムトレイ" msgid "Edit" msgstr "編集" msgid "Go Down" msgstr "下ã¸è¡Œã" msgid "Select date" msgstr "æ—¥ä»˜ã‚’é¸æŠž" msgid "Select font" msgstr "ãƒ•ã‚©ãƒ³ãƒˆã‚’é¸æŠž" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "é›»å“" msgid "Edit day note" msgstr "一日ã®ãƒ¡ãƒ¢ã‚’編集" msgid "Save" msgstr "ä¿å­˜" msgid "Display full-year calendar" msgstr "年間カレンダを表示" msgid "Help" msgstr "ヘルプ" msgid "Invalid item" msgstr "無効ãªã‚¢ã‚¤ãƒ†ãƒ " msgid "Valid item" msgstr "有効ãªã‚¢ã‚¤ãƒ†ãƒ " msgid "Edit task" msgstr "仕事を編集" msgid "Remove task" msgstr "仕事を削除" msgid "Import tasks" msgstr "タスクをインãƒãƒ¼ãƒˆ" msgid "Export tasks" msgstr "タスクをエクスãƒãƒ¼ãƒˆ" msgid "Change to previous date" msgstr "å‰ã®æ—¥ä»˜ã«å¤‰æ›´" msgid "Change to next date" msgstr "æ¬¡ã®æ—¥ä»˜ã«å¤‰æ›´" msgid "Print" msgstr "å°åˆ·" msgid "Normal" msgstr "標準" msgid "Recurrent" msgstr "循環" msgid "Started" msgstr "é–‹å§‹" msgid "Finished" msgstr "終了" msgid "All items" msgstr "å…¨ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ " msgid "New task" msgstr "æ–°ã—ã„仕事" msgid "Change due date to previous date" msgstr "期日をå‰ã®æ—¥ä»˜ã«å¤‰æ›´" msgid "Change due date to next date" msgstr "æœŸæ—¥ã‚’æ¬¡ã®æ—¥ä»˜ã«å¤‰æ›´" msgid "Print visible tasks list" msgstr "見ãˆã‚‹ä»•事リストをå°åˆ·" msgid "Due date" msgstr "期日" msgid "Priority" msgstr "é‡è¦åº¦" msgid "Task details" msgstr "仕事ã®è©³ç´°" msgid "Close description panel" msgstr "説明パãƒãƒ«ã‚’é–‰ã˜ã‚‹" msgid "No tasks with defined date found." msgstr "定義データ付ãタスクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" msgid "Save tasks" msgstr "タスクをä¿å­˜" msgid "tasks exported" msgstr "エクスãƒãƒ¼ãƒˆã—ãŸã‚¿ã‚¹ã‚¯" msgid "Please select at least one day when recurrency is enabled." msgstr "åå¾©ãŒæœ‰åŠ¹ãªæ™‚ã¯å°‘ãªãã¨ã‚‚1æ—¥ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。" msgid "Set time" msgstr "時間セット" msgid "Tomorrow" msgstr "明日" msgid "Selected task will be removed." msgstr "é¸æŠžã—ãŸä»•事ã¯å‰Šé™¤ã•れã¾ã™ã€‚" msgid "Basic" msgstr "基本" msgid "Select date and time" msgstr "æ—¥ä»˜ã¨æ™‚åˆ»ã‚’é¸æŠž" msgid "Low" msgstr "低" msgid "High" msgstr "高" msgid "Enable sound notification" msgstr "音声通知を有効" #, fuzzy msgid "Enable notification dialog" msgstr "音声通知を有効" msgid "Advanced" msgstr "詳細設定" msgid "Alarm warning" msgstr "アラーム警告" msgid "Postpone time" msgstr "延期時間" msgid "Alarm command" msgstr "アラームコマンド" msgid "Recurrent task" msgstr "å復ã™ã‚‹ä»•事" msgid "Enable" msgstr "有効" msgid "Start" msgstr "é–‹å§‹" msgid "End" msgstr "終ã‚り" msgid "Interval" msgstr "é–“éš”" msgid "Time period" msgstr "期間" msgid "Date period" msgstr "最終日" msgid "Repeat" msgstr "繰り返ã™" msgid "Repeat in the following days" msgstr "æ¬¡ã®æ—¥ã§ç¹°ã‚Šè¿”ã™" msgid "Ignore alarm when task expired offline" msgstr "仕事ãŒã‚ªãƒ•ラインã§çµ‚了ã—ãŸã‚‰ã‚¢ãƒ©ãƒ¼ãƒ ã‚’無視ã™ã‚‹" msgid "Select a font..." msgstr "ãƒ•ã‚©ãƒ³ãƒˆã‚’é¸æŠž..." msgid "Color of items that are due today" msgstr "今日ã™ã‚‹äºˆå®šã®ã‚¢ã‚¤ãƒ†ãƒ ã®è‰²" msgid "Color of items that are due in the next 7 days" msgstr "今後7日間ã«ã™ã‚‹äºˆå®šã®ã‚¢ã‚¤ãƒ†ãƒ ã®è‰²" msgid "Color of items that are past due" msgstr "éŽåŽ»ã®äºˆå®šã®ã‚¢ã‚¤ãƒ†ãƒ ã®è‰²" msgid "Task info font" msgstr "仕事情報ã®ãƒ•ォント" msgid "Show in bold tasks with high priority" msgstr "é‡è¦åº¦ã®é«˜ã„仕事を太字ã§è¡¨ç¤º" msgid "Hide completed tasks" msgstr "完了ã—ãŸä»•事を隠ã™" msgid "Delete completed tasks without confirmation" msgstr "完了ã—ãŸä»•事を確èªã—ãªã„ã§å‰Šé™¤" msgid "Add new task when double clicked on tasks list" msgstr "仕事リストã§ãƒ€ãƒ–ルクリックã—ã¦æ–°ã—ã„仕事を追加" msgid "minutes" msgstr "分" msgid "0 for disable" msgstr "0 ã¯ã§ãã¾ã›ã‚“" msgid "Repeat sound alarm" msgstr "音声アラームを繰り返ã™" msgid "times" msgstr "時間" msgid "Global notification command" msgstr "全体的ãªé€šçŸ¥ã‚³ãƒžãƒ³ãƒ‰" msgid "Tasks options" msgstr "仕事オプション" msgid "Reminder options" msgstr "ãŠçŸ¥ã‚‰ã›ã‚ªãƒ—ション" msgid "Tasks list" msgstr "仕事リスト" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "No." msgid "New Moon" msgstr "新月" msgid "Waxing Crescent Moon" msgstr "満ã¡ã¦ã„ã三日月" msgid "Quarter Moon" msgstr "ä¸Šå¼¦ã®æœˆ" msgid "Waxing Gibbous Moon" msgstr "満ã¡ã¦ã„ã凸月" msgid "Full Moon" msgstr "満月" msgid "Waning Gibbous Moon" msgstr "欠ã‘ã¦ã„ã凸月" msgid "Last Quarter Moon" msgstr "ä¸‹å¼¦ã®æœˆ" msgid "Waning Crescent Moon" msgstr "欠ã‘ã¦ã„ã三日月" msgid "Error" msgstr "エラー" msgid "Selected file exist! Overwrite?" msgstr "é¸æŠžã•れãŸãƒ•ァイルã¯å­˜åœ¨ã—ã¾ã™ï¼ä¸Šæ›¸ãã—ã¾ã™ã‹ï¼Ÿ" #~ msgid "Select and show first item after search" #~ msgstr "æ¤œç´¢å¾Œã€æœ€åˆã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦è¡¨ç¤º" #~ msgid "Order" #~ msgstr "é †åº" #~ msgid "Mode" #~ msgstr "モード" #~ msgid "Ascending" #~ msgstr "昇順" #~ msgid "Descending" #~ msgstr "é™é †" #~ msgid "Sorting" #~ msgstr "ä¸¦ã³æ›¿ãˆ" #~ msgid "Contact map location" #~ msgstr "コンタクト地図ã®å ´æ‰€" osmo-0.2.14/po/Makefile.in000664 001750 001750 00000031266 12561325530 015222 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = po DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = msgfmt OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = -Wno-portability DOMAIN = osmo POTFILES = $(wildcard ../src/*.c ../src/*.h) XGETTEXT = xgettext MSGMERGE = msgmerge XGETTEXT_OPTS = --keyword=_ --keyword=N_ --keyword=X_ --add-comments=TRANSLATORS: --no-location POFILES = bg.po ca.po cs.po da.po de.po el.po en_GB.po es.po fi.po fr.po gl.po gl_ES.po he.po hu.po \ it.po ja.po lt.po nl.po pl.po pt.po pt_BR.po ro.po ru.po sr.po sv.po te.po tr.po uk.po \ ur.po ur_PK.po zh_CN.po MOFILES = $(POFILES:.po=.mo) EXTRA_DIST = $(POFILES) $(MOFILES) LOCALEDIR = $(datadir)/locale all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign po/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ cscopelist-am ctags-am distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local 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-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local all: $(MOFILES) update-po: $(DOMAIN).pot $(POFILES) $(MOFILES) %.mo: skip @po=$(@:.mo=.po); if test $$po -nt $@ ; then $(MSGFMT) -c --statistics $$po -o $@; echo "$@ updated."; fi %.po: $(DOMAIN).pot $(MSGMERGE) $@ $< -o $@.in && mv $@.in $@ $(DOMAIN).pot: $(POTFILES) @$(XGETTEXT) $(XGETTEXT_OPTS) $(POTFILES) -o $(DOMAIN).pot install-data-local: $(MOFILES) for i in $(MOFILES); do \ lang=`echo $$i | sed 's/\.mo$$//'`; \ $(mkinstalldirs) ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES; \ $(INSTALL_DATA) $$i ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done uninstall-local: for i in $(MOFILES); do \ lang=`echo $$i | sed 's/\.mo$$//'`; \ rm -f ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done clean-local: rm -rf *.mo skip: # 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: osmo-0.2.14/po/fi.po000664 001750 001750 00000110542 12561325524 014111 0ustar00pasppasp000000 000000 # Finnish translation of Osmo. # This file is distributed under the same license as the Osmo package. # Toivo Miettinen , 2009. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2009-01-04 16:32+0200\n" "Last-Translator: Toivo Miettinen \n" "Language-Team: Finnish \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" msgid "About" msgstr "Tietoja OSMOsta" msgid "Close" msgstr "Sulje" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "siirry edelliseen välilehti" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "siirry seuraavaan välilehteen" msgid "switch to selected page" msgstr "siirry valitulle sivulle" #, fuzzy msgid "show options window" msgstr "Näytä valinnat" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "vaihda sivua valinnat- ja tietoja välilehdissä" msgid "exit" msgstr "poistu" #, fuzzy msgid "Space" msgstr "Tallenna" msgid "select current date" msgstr "valitse nykyinen päiväys" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "vaihda henkilököhtaisten tietojen näkyminen" #, fuzzy msgid "Arrows" msgstr "Nuoli" msgid "change day" msgstr "vaihda päivä" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "vieritä sisältöä päiväinfo -paneelissa" msgid "change month" msgstr "vaihda kuukausi" #, fuzzy msgid "Home/End" msgstr "Koti" msgid "change year" msgstr "vaihda vuosi" msgid "toggle calendars for the previous and next month" msgstr "vaihda kalentereissa edellinen ja seuraava kuukausi" msgid "day notes browser" msgstr "päivämerkintöjen selain" msgid "assign background color to day note" msgstr "lisää taustaväri päivämerkintään" msgid "date calculator" msgstr "aikalaskin" msgid "show full-year calendar" msgstr "näytä koko vuoden kalenteri" msgid "jump to date" msgstr "hypähdä päivään" #, fuzzy msgid "Delete" msgstr "Poista merkintä" msgid "remove day note" msgstr "poista päivämerkintä" #, fuzzy msgid "Alt+Arrows" msgstr "Nuoli" msgid "Esc" msgstr "" #, fuzzy msgid "close editor" msgstr "Sulje muokkain" msgid "toggle bold" msgstr "" #, fuzzy msgid "toggle italic" msgstr "vaihda piilotetut tehtävät" #, fuzzy msgid "toggle underline" msgstr "Alleviivattu" #, fuzzy msgid "toggle strikethrough" msgstr "Yliviivattu" #, fuzzy msgid "toggle highlight" msgstr "Korostettu" msgid "Arrows Up/Down" msgstr "" #, fuzzy msgid "toggle alternative view" msgstr "Vaihtoehtoinen näkymä" #, fuzzy msgid "year info" msgstr "Vuosi-info" #, fuzzy msgid "set current year" msgstr "Kuluva vuosi" #, fuzzy msgid "close full-year calendar" msgstr "näytä koko vuoden kalenteri" #, fuzzy msgid "Alt+a, Insert" msgstr "Lisää" msgid "add task" msgstr "lisää tehtävä" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "muokkaa tehtävää" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "poista tehtävä" msgid "toggle hidden tasks" msgstr "vaihda piilotetut tehtävät" msgid "activate search field" msgstr "ota käyttöön hakukenttä" #, fuzzy msgid "Left, Right" msgstr "Oikealla" msgid "change category filter" msgstr "vaihda kategoriasuodatin" msgid "close task info panel" msgstr "sulje tehtäväinfo-paneeli" msgid "Insert" msgstr "Lisää" msgid "add contact" msgstr "lisää yhteystieto" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "muokkaa yhteystieto" msgid "remove contact" msgstr "poista yhteystieto" msgid "change search mode" msgstr "vaihda hakutapaa" msgid "close contact details panel" msgstr "sulje yhteystiedon yksityiskohtien paneeli" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "avaa merkintä" msgid "add note" msgstr "lisää merkintä" msgid "remove note" msgstr "poista merkintä" msgid "edit note name and category" msgstr "muokkaa merkinnän nimeä ja kategoriaa" msgid "close note editor" msgstr "sulje merkintäeditori" msgid "save note" msgstr "tallenna merkintä" msgid "find text" msgstr "etsi teksti" msgid "clear selection attributes" msgstr "tyhjennä valinta määritteet" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO suunniteltiin käyttömukavuutta silmälläpitäen, niinpä siinä on monta " "näppäinoikotietä.Tässä luettelo niistä:" msgid "General" msgstr "Yleiset" msgid "Calendar" msgstr "Kalenteri" #, fuzzy msgid "Note editor" msgstr "Sulje muokkain" msgid "Full-year calendar" msgstr "Koko-vuoden kalenteri" msgid "Tasks" msgstr "Tehtävät" msgid "Contacts" msgstr "Yhteystiedot" msgid "Notes" msgstr "Merkinnät" msgid "Selector" msgstr "Valitsin" msgid "Editor" msgstr "Muokkain" msgid "A handy personal organizer" msgstr "Kätevä henkilökohtainen järjestelijä" msgid "compiled on" msgstr "Koostettu" msgid "Programming" msgstr "Ohjelmointi" msgid "Graphics" msgstr "Grafiikka" msgid "Contributors" msgstr "Avustajat" msgid "Translators" msgstr "Kääntäjät" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "" msgid "Compiled-in features" msgstr "Sisällytetyt ominaisuudet" msgid "iCalendar support" msgstr "iCalendar tuki" #, fuzzy msgid "Encrypted notes support" msgstr "Merkintöjen salaus" msgid "Backup support" msgstr "" #, fuzzy msgid "Printing support" msgstr "iCalendar tuki" #, fuzzy msgid "Spell checker support" msgstr "SyncML yhteensopivien laitteiden tuki" msgid "version" msgstr "versio" msgid "SVN revision" msgstr "SVN revision" msgid "Key shortcuts" msgstr "Näppäinoikotiet" msgid "License" msgstr "Lisenssi" msgid "Save backup" msgstr "" msgid "Password protection" msgstr "" msgid "Enter password" msgstr "Anna salasana" msgid "Re-enter password" msgstr "Anna salasana uudelleen" #, fuzzy msgid "Please enter the password" msgstr "Anna salasana uudelleen" msgid "Passwords do not match!" msgstr "Salasanat eivät täsmää!" #, fuzzy msgid "Cannot create backup!" msgstr "En voi luoda tiedostoa." msgid "Backup file saved successfully!" msgstr "" msgid "Open backup file" msgstr "" msgid "Osmo backup files (*.bck)" msgstr "" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "Virheellinen salasana!" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "Oletko varma?" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "syntynyt" msgid "year old" msgid_plural "years old" msgstr[0] "vuotta " msgstr[1] "vuotta" msgid "Current time" msgstr "Kellonaika nyt" msgid "Day number" msgstr "Päivä numero" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "päivä vuoden loppuun" msgstr[1] "päivää vuoden loppuun" msgid "the last day of the year" msgstr "vuoden viimeinen päivä" msgid "Today distance" msgstr "Tämän päivän etäisyys" msgid "Week number" msgstr "Viikon numero" msgid "Marked days" msgstr "Merkityt päivät" msgid "Weekend days" msgstr "Viikonlopun päivät" msgid "Moon phase" msgstr "Kuun vaihe" msgid "Zodiac sign" msgstr "Horoskooppitunnus" msgid "Day notes" msgstr "Päivämerkinnät" msgid "Day tasks" msgstr "Päivätehtävät" msgid "Birthday" msgstr "Syntymäpäivä" msgid "Day category" msgstr "Päivä kategoria" msgid "Selected day note will be removed." msgstr "Valitun päivän merkintä poistetaan." msgid "Continue?" msgstr "Jatketaanko?" msgid "Previous year" msgstr "Edellinen vuosi" msgid "Previous month" msgstr "Edellinen kuukausi" msgid "Previous day" msgstr "Edellinen päivä" msgid "Today" msgstr "Tämä päivä" msgid "Next day" msgstr "Seuraava päivä" msgid "Next month" msgstr "Seuraava kuukausi" msgid "Next year" msgstr "Seuraava vuosi" msgid "Jump to date" msgstr "Hyppää päivään" msgid "Print calendar" msgstr "Tulosta kalenteri" msgid "Date calculator" msgstr "Aikalaskin" msgid "Backup data" msgstr "" #, fuzzy msgid "Restore data" msgstr "Tulos" msgid "Preferences" msgstr "Asetukset" msgid "Quit" msgstr "Lopeta" msgid "Toggle day note panel" msgstr "Vaihda päivämerkintä-paneeli" msgid "Add task" msgstr "Lisää tehtävä" msgid "Select day color" msgstr "Valitse päivän väri" msgid "Browse notes" msgstr "Selaa merkintöjä" msgid "Browse iCal events" msgstr "Selaa iCal tapahtumia" msgid "Export to iCal file" msgstr "Vie iCal tiedostoon" msgid "Previous and next month" msgstr "Edellinen ja seuraava kuukausi" msgid "Close note panel" msgstr "Sulje merkintä-paneeli" msgid "Highlight" msgstr "Korostettu" msgid "Strikethrough" msgstr "Yliviivattu" msgid "Underline" msgstr "Alleviivattu" msgid "Italic" msgstr "Kursivoitu" msgid "Bold" msgstr "Lihavoitu" msgid "Insert timeline" msgstr "Lisää aikajana" msgid "Clear text" msgstr "Tyhjennä teksti" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Valitse väri" msgid "None" msgstr "Ei mikään" msgid "Cancel" msgstr "Peruuta" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "vuosi" msgstr[1] "vuotta" msgid "month" msgid_plural "months" msgstr[0] "kuukausi" msgstr[1] "kuukautta" msgid "day" msgid_plural "days" msgstr[0] "päivä" msgstr[1] "päivää" msgid "hour" msgid_plural "hours" msgstr[0] "tunti" msgstr[1] "tuntia" msgid "minute" msgid_plural "minutes" msgstr[0] "minuutti" msgstr[1] "minuuttia" msgid "second" msgid_plural "seconds" msgstr[0] "sekunti" msgstr[1] "sekuntia" msgid "or" msgstr "tai" msgid "rounded down" msgstr "pyöristetty pienempään" msgid "week" msgid_plural "weeks" msgstr[0] "viikko" msgstr[1] "viikkoa" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" #, fuzzy msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Viikonlopun päivät" msgstr[1] "Viikonlopun päivät" msgid "This calculator only supports dates after year 1." msgstr "Laskin käsittelee vain vuoden 1 jälkeen olevia ajankohtia." #, fuzzy msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Viikonlopun päivien väri" msgstr[1] "Viikonlopun päivien väri" msgid "Year" msgstr "Vuosi" msgid "Month" msgstr "Kuukausi" msgid "Day" msgstr "Päivä" msgid "Current date" msgstr "Nykyinen päiväys" msgid "Set current date" msgstr "Aseta päiväys" msgid "Hour" msgstr "Tunti" msgid "Minute" msgstr "Minuutti" msgid "Second" msgstr "Sekunti" msgid "Set current time" msgstr "Aseta aika" msgid "Reset time" msgstr "Palauta oletusaika" msgid "First date and time" msgstr "Ensimmäinen päiväys ja aika" msgid "Second date and time" msgstr "Toinen päiväys ja aika" msgid "Alternative time units" msgstr "Vaihtoehtoiset aikayksiköt" msgid "Result" msgstr "Tulos" msgid "Duration between two dates" msgstr "Aika kahden ajankohdan välillä" msgid "Operation" msgstr "Toiminto" msgid "add" msgstr "lisää" msgid "subtract" msgstr "vähennä" msgid "Date and time to add or subtract from" msgstr "Ajankohta ja aika johon lisätään tai josta vähennetään" msgid "Years" msgstr "Vuotta" msgid "Months" msgstr "Kuukautta" msgid "Days" msgstr "Päivää" msgid "Weeks" msgstr "Viikkoa" msgid "Hours" msgstr "Tuntia" msgid "Minutes" msgstr "Minuuttia" msgid "Seconds" msgstr "Sekuntia" #, fuzzy msgid "Ignore weekend days" msgstr "Viikonlopun päivät" msgid "Reset fields" msgstr "Palauta oletusarvot kenttiin" msgid "Time to add or subtract" msgstr "Aika joka lisätään tai vähennetään" msgid "Jump to" msgstr "Hyppää " msgid "Add to or subtract from a date" msgstr "Lisää tai vähennä ajankohtaan/ajankohdasta" msgid "Leap year" msgstr "Karkausvuosi" msgid "Yes" msgstr "Kyllä" msgid "No" msgstr "Ei" msgid "Chinese year animal" msgstr "Kiinalaisen vuoden eläin" msgid "Number of days" msgstr "Päiviä" msgid "Number of weeks" msgstr "Viikkoja" msgid "Number of weekend days" msgstr "Viikonlopuksi osuvia päiviä" msgid "Year info" msgstr "Vuosi-info" msgid "Current year" msgstr "Kuluva vuosi" msgid "Alternative view" msgstr "Vaihtoehtoinen näkymä" msgid "event" msgid_plural "events" msgstr[0] "tapahtuma" msgstr[1] "tapahtumaa" #, fuzzy msgid "No valid calendars defined" msgstr "Ei määriteltyjä kalentereita" msgid "iCalendar events" msgstr "iCalendar-tapahtumat" msgid "Date" msgstr "Ajankohta" #, fuzzy msgid "Time" msgstr "Aikajana" msgid "Summary" msgstr "Kooste" msgid "Select output file" msgstr "Valitse kohdetiedosto" msgid "The list will be cleared and all entries will be lost." msgstr "Luettelo tyhjennetään ja kaikki merkinnät menetetään." msgid "Done!" msgstr "Valmis!" msgid "event exported" msgid_plural "events exported" msgstr[0] "tapahtuma viety" msgstr[1] "tapahtumaa viety" msgid "iCalendar export" msgstr "iCalendar viety" msgid "Day Selector" msgstr "Päivä Valitsin" msgid "Use date period" msgstr "Käytä aikaperiodia" msgid "Add" msgstr "Lisää" msgid "Clear" msgstr "Tyhjennä" msgid "Remove" msgstr "Poista" msgid "Output filename" msgstr "Kohdetiedoston nimi" msgid "Browse" msgstr "Selaa" msgid "Export" msgstr "Vie" msgid "no entries" msgstr "ei kirjauksia" msgid "entry" msgid_plural "entries" msgstr[0] "kirjaus" msgstr[1] "kirjausta" msgid "Calendar notes" msgstr "Kalenteri merkinnät" msgid "Search" msgstr "Haku" msgid "Filter" msgstr "Suodatin" msgid "Current month" msgstr "Nykyinen kuukausi" msgid "Selected month" msgstr "Valittu kuukausi" msgid "Selected year" msgstr "Valittu vuosi" msgid "Selected month and year" msgstr "Valittu kuukausi ja vuosi" msgid "All notes" msgstr "Kaikki merkinnät" msgid "Case sensitive" msgstr "Sama kirjainkoko" msgid "Strikethrough past day notes" msgstr "Yliviivaa menneet päivämerkinnät" msgid "Note" msgstr "Merkintä" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Merkinnän nimi" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "MM-DD-YYYY" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Ajan muoto" #, fuzzy msgid "Set default format" msgstr "Kohdeformaatti" #, fuzzy msgid "Date format syntax" msgstr "Ajan muoto" msgid "Day note marker" msgstr "Päivämerkinnän tunnus" msgid "Event marker" msgstr "Tapahtumatunnus" msgid "Circle" msgstr "Pallukka" msgid "Ellipse" msgstr "Soikio" msgid "Wave" msgstr "Aalto" msgid "Current day marker" msgstr "Tämän päivän tunnus" msgid "Arrow" msgstr "Nuoli" msgid "Free-hand circle" msgstr "Kaunokirjoituspallukka" msgid "Colors" msgstr "Värit" msgid "Header color" msgstr "Otsikon väri" msgid "Weekend days color" msgstr "Viikonlopun päivien väri" msgid "Cursor color" msgstr "Kohdistimen väri" msgid "Event marker color" msgstr "Tapahtumatunnuksen väri" msgid "Current day marker color" msgstr "Tämän päivän tunnusväri" #, fuzzy msgid "Birthday marker color" msgstr "Tämän päivän tunnusväri" msgid "Date font" msgstr "Ajankohdan fontti" msgid "Calendar font" msgstr "Kalenterin fontti" msgid "Note font" msgstr "Merkinnän fontti" msgid "Enable block cursor" msgstr "Ota käyttöön lohkokohdistin" msgid "Cursor thickness" msgstr "Kohdistimen paksuus" msgid "Thin" msgstr "Ohut" msgid "Thick" msgstr "Paksu" #, fuzzy msgid "Edit category" msgstr "Päivä kategoria" msgid "Color" msgstr "Väri" msgid "Name" msgstr "Nimi" msgid "Select ICS file" msgstr "Valitse ICS tiedosto" msgid "All Files" msgstr "Kaikki tiedostot" msgid "Calendar files (*.ics)" msgstr "Kalenteri tiedostot (*.ics)" msgid "Modify ICAL parameters" msgstr "Määritä ICAL parametrit" msgid "Filename" msgstr "Tiedostonimi" msgid "Options" msgstr "Valinnat" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Kelvollinen" msgid "Description" msgstr "Kuvaus" #, fuzzy msgid "Full date" msgstr "Eräpäivä" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "Viikon 1. päivä on maanantai" msgid "Show day names" msgstr "Näytä päivien nimet" msgid "No month change" msgstr "Älä vaihda kuukautta" msgid "Show week numbers" msgstr "Näytä viikon numero" msgid "Simple view in full-year calendar" msgstr "Yksinkertainen näkymä koko vuoden kalenterissa" msgid "Enable auxilary calendars" msgstr "Ota käyttöön apukalenterit" msgid "Ascending sorting in day notes browser" msgstr "Nouseva järjestys päivämerkintäselaimessa" msgid "Enable spell checker in day notes" msgstr "" #, fuzzy msgid "Show seconds" msgstr "Sekuntia" msgid "Appearance" msgstr "Ulkoasu" msgid "Day categories" msgstr "Päiväkategoriat" msgid "iCalendar files" msgstr "iCalendar tiedostot" msgid "Show in day info panel" msgstr "Näytä päiväinfo-paneelissa" #, fuzzy msgid "Name day" msgstr "Nimipäivä" msgid "Error printing" msgstr "Virhe tulostettaessa" msgid "Printing properties" msgstr "" #, fuzzy msgid "Month name" msgstr "Merkinnän nimi" #, fuzzy msgid "Day name" msgstr "Päivä numero" msgid "Events" msgstr "Tapahtumat" #, fuzzy msgid "Fonts" msgstr "Kuukautta" #, fuzzy msgid "Birthdays" msgstr "Syntymäpäivä" #, fuzzy msgid "Namedays" msgstr "Nimi" #, fuzzy msgid "Visible events" msgstr "Näkyvät sarakkeet" #, fuzzy msgid "Padding" msgstr "lisää" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" #, fuzzy msgid "Portrait" msgstr "Prioriteetti" msgid "Landscape" msgstr "" msgid "Timeline" msgstr "Aikajana" msgid "From (hour)" msgstr "Alkaen (tunti)" msgid "Step (minutes)" msgstr "Askel (minuuttia)" msgid "To (hour)" msgstr "Saakka (tunti)" msgid "No date" msgstr "Ei ajankohtaa" msgid "Rat" msgstr "Rotta" msgid "Ox" msgstr "Härkä" msgid "Tiger" msgstr "Tiikeri" msgid "Hare" msgstr "Jänis" msgid "Dragon" msgstr "Lohikäärme" msgid "Snake" msgstr "Käärme" msgid "Horse" msgstr "Hevonen" msgid "Sheep" msgstr "Lammas" msgid "Monkey" msgstr "Apina" msgid "Fowl" msgstr "Kukko" msgid "Dog" msgstr "Koira" msgid "Pig" msgstr "Sika" msgid "Unknown" msgstr "Tuntematon" msgid "Aquarius" msgstr "Vesimies" msgid "Pisces" msgstr "Kalat" msgid "Aries" msgstr "Oinas" msgid "Taurus" msgstr "Härkä" msgid "Gemini" msgstr "Kaksoset" msgid "Cancer" msgstr "Rapu" msgid "Leo" msgstr "Leijona" msgid "Virgo" msgstr "Neitsyt" msgid "Libra" msgstr "Vaaka" msgid "Scorpio" msgstr "Skorpioni" msgid "Sagittarius" msgstr "Jousimies" msgid "Capricorn" msgstr "Kauris" msgid "Cannot perform selected operation." msgstr "En voi suorittaa valittua tehtävää." msgid "Task has been modified or removed." msgstr "Tehtävää on muutettu tai se on poistettu." msgid "Remind me later" msgstr "Muistuta myöhemmin" msgid "Done" msgstr "Valmis" msgid "postponed" msgstr "lykätty" msgid "Show task" msgstr "Näytä tehtävä" msgid "Alarm warning!" msgstr "Hälytys varoitus!" msgid "Day note" msgstr "Päivämerkintä" msgid "Type" msgstr "Tyyppi" msgid "Event" msgstr "Tapahtuma" msgid "Task" msgstr "Tehtävä" msgid "Show Osmo" msgstr "Näytä Osmo" msgid "No birthdays defined" msgstr "Ei määritettyjä syntymäpäiviä " msgid "Birthdays list" msgstr "Syntymäpäiväluettelo" msgid "Days to birthday" msgstr "Päivää syntymäpäivään" msgid "Age" msgstr "Ikä" msgid "Birthday date" msgstr "Syntymäpäivän ajankohta" msgid "today" msgstr "tänään" #, fuzzy msgid "Please select address" msgstr "Valitse tiedosto ensin." msgid "Information" msgstr "Tiedot" msgid "Work" msgstr "Työpaikan " msgid "Home" msgstr "Koti" msgid "Group" msgstr "Ryhmä" msgid "First name" msgstr "Etunimi" msgid "Last name" msgstr "Sukunimi" msgid "Second name" msgstr "Toinen nimi" msgid "Nickname" msgstr "Lempinimi" #, fuzzy msgid "Tags" msgstr "Tehtävä" msgid "Name day date" msgstr "Nimipäivä" msgid "Home address" msgstr "Kotiosoite" msgid "Home postcode" msgstr "Postinumero " msgid "Home city" msgstr "Postitoimipaikka" msgid "Home state" msgstr "Lääni t. osavaltio" msgid "Home country" msgstr "Kotimaa" msgid "Organization" msgstr "Organisaatio" msgid "Department" msgstr "Osasto" msgid "Work address" msgstr "Työpaikan osoite" msgid "Work postcode" msgstr "Työpaikan postinumero" msgid "Work city" msgstr "Työpaikan postitoimipaikka" msgid "Work state" msgstr "Työpaikan osavaltio t. lääni" msgid "Work country" msgstr "Työpaikan maa" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Kotipuhelin" msgid "Home phone 2" msgstr "Koti puhelin 2" msgid "Home phone 3" msgstr "Koti puhelin 3" msgid "Home phone 4" msgstr "Koti puhelin 4" msgid "Work phone" msgstr "Työpuhelin" msgid "Work phone 2" msgstr "Työpuhelin 2" msgid "Work phone 3" msgstr "Työpuhelin 3" msgid "Work phone 4" msgstr "Työpuhelin 4" msgid "Cell phone" msgstr "Matkapuhelin" msgid "Cell phone 2" msgstr "Matkapuhelin 2" msgid "Cell phone 3" msgstr "Matkapuhelin 3" msgid "Cell phone 4" msgstr "Matkapuhelin 4" msgid "E-Mail" msgstr "S-posti" msgid "E-Mail 2" msgstr "S-posti 2" msgid "E-Mail 3" msgstr "S-posti 3" msgid "E-Mail 4" msgstr "S-posti 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Kuva" msgid "Additional info" msgstr "Lisätietoja" msgid "New contact" msgstr "Uusi yhteystieto" msgid "Remove contact" msgstr "Poista yhteystieto" msgid "Edit contact" msgstr "Muokkaa yhteystieto" msgid "Show birthdays" msgstr "Näytä syntymäpäivät" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "Imptait yhteystiedot" msgid "Export contacts" msgstr "Vie yhteystiedot" msgid "First Name" msgstr "Etunimi" msgid "Last Name" msgstr "Sukunimi" msgid "All fields" msgstr "Kaikki kentät" msgid "Contact details" msgstr "Yhteystietojen yksityiskohdat" msgid "Close contact panel" msgstr "Sulje yhteystietopaneeli" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "yhteystieto viety" msgstr[1] "yhteystietoa viety" msgid "Cannot create file." msgstr "En voi luoda tiedostoa." msgid "Output format" msgstr "Kohdeformaatti" msgid "Add header" msgstr "Lisää otsikko" msgid "Fields to export" msgstr "Vietävät kentät" msgid "All" msgstr "Kaikki" msgid "Invert" msgstr "Käänteinen" msgid "Select fields" msgstr "Valitse kentät" msgid "Select CSV file" msgstr "Valitse CSV tiedosto" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (comma-separated values) tiedostot (*.csv)" msgid "Please select file first." msgstr "Valitse tiedosto ensin." msgid "Import type" msgstr "Nouda tyyppi" msgid "File" msgstr "Tiedosto" msgid "Input filename" msgstr "Anna tiedostonimi" msgid "Import" msgstr "Nouda" msgid "Nothing to import." msgstr "Ei noudettavaa." msgid "contact added" msgid_plural "contacts added" msgstr[0] "yhteystieto lisätty" msgstr[1] "yhteystietoa lisätty" msgid "of" msgstr " / " msgid "Record" msgstr "Merkintä" msgid "Number fields per record" msgstr "Numerokenttää per merkintä" msgid "Use first record as header" msgstr "Käytä ensimmäistä merkintää otsikkona" msgid "Field type" msgstr "Kentän tyyppi" msgid "Value" msgstr "Arvo" msgid "No records found in selected file." msgstr "Valitussa tiedostossa ei ole merkintöjä." msgid "Cannot read file." msgstr "En voi lukea tiedosto." msgid "Cannot open file." msgstr "En voi avaa tiedosto." msgid "Selected contact will be removed." msgstr "Valittu yhteystieto poistetaan." msgid "Select photo" msgstr "Valitse kuva" msgid "Address" msgstr "Osoite" msgid "Postcode" msgstr "Postinumero" msgid "City" msgstr "Postitoimipaikka" msgid "State" msgstr "Lääni t. osavaltio" msgid "Country" msgstr "Country" msgid "Add contact" msgstr "Lisää yhteystieto" msgid "Personal" msgstr "Henkilökohtaista" msgid "Phones" msgstr "Puhelimet" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Yhteystietotagien väri" msgid "Color of links" msgstr "Linkkien väri" #, fuzzy msgid "Font size" msgstr "Kuvan koko" msgid "Name font size" msgstr "Nimifontin koko" #, fuzzy msgid "Item font size" msgstr "Nimifontin koko" msgid "Photo size" msgstr "Kuvan koko" msgid "Small" msgstr "Pieni" msgid "Medium" msgstr "Keskikokoinen" msgid "Large" msgstr "Iso" msgid "Hide group column" msgstr "Piilota ryhmäsarake" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Sekalaista" msgid "Groups" msgstr "Ryhmät" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Näkyvät sarakkeet syntymäpäiväselaimessa" msgid "Show calendar" msgstr "Näytä kalenteri" msgid "Show tasks" msgstr "Näytä tehtävät" msgid "Show contacts" msgstr "Näytä yhteystiedot" msgid "Show notes" msgstr "Näytä merkinnät" msgid "Show options" msgstr "Näytä valinnat" msgid "Show small calendar window" msgstr "Näytä pieni kalenteri-ikkuna" msgid "Check for events since last run" msgstr "Tarkista edellisen käytön jälk. tapahtumat" msgid "Number of days to check forward for events (default: 0)" msgstr "Etsi tapahtumia eteenpäin pv (oletus: 0)" msgid "Set absolute path for settings and data files" msgstr "Aseta absoluuttinen polku asetuksille ja datatiedostoille" msgid "Match contacts with given string" msgstr "" #, fuzzy msgid "handy personal organizer" msgstr "Kätevä henkilökohtainen järjestelijä" msgid "ERROR: Cannot create config files" msgstr "VIRHE: En voi luoda configurointitiedostostoja" msgid "Another copy of OSMO is already running." msgstr "Toinenkin Osmo on jo käynnissä." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Useamman kuin yhden OSMOn samanaikainen käyttö voi aiheuttaa tietojen " "menetyksen." msgid "Do you really want to continue?" msgstr "Haluatko varmasti jatkaa?" msgid "Warning" msgstr "Varoitus" msgid "The note has changed." msgstr "Merkintä on muuttunut." msgid "Do you want to save it?" msgstr "Haluatko tallentaa sen?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Valitussa tiedostossa ei ole merkintöjä." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Haluatko varmasti jatkaa?" msgid "Question" msgstr "Kysymys" msgid "Words" msgstr "Sanat" msgid "Lines" msgstr "Viivat" msgid "Characters" msgstr "Merkit" msgid "White characters" msgstr "Tyhjät merkit" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Valitsin" msgid "Created" msgstr "Luotu" msgid "Modified" msgstr "Muutettu" msgid "New note" msgstr "Uusi merkintä" msgid "Add note" msgstr "Lisää merkintä" msgid "Edit note" msgstr "Muokkaa merkintää" msgid "Delete note" msgstr "Poista merkintä" msgid "Remove note" msgstr "Poista merkintä" msgid "Find" msgstr "Etsi" msgid "Clear attributes" msgstr "Tyhjennä määritteet" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Tallenna merkintä" msgid "Insert current date and time" msgstr "Lisää nykyinen päiväys ja aika" msgid "Insert separator" msgstr "Lisää erotin" msgid "Statistics" msgstr "Tilastot" msgid "Close editor" msgstr "Sulje muokkain" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "Kategoria" msgid "Note name" msgstr "Merkinnän nimi" msgid "Last changes" msgstr "Uusimmat muutokset" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Viivat" #, fuzzy msgid "Column" msgstr "Country" msgid "case sensitive" msgstr "aakkoskoosta riippuva" msgid "Close find entry" msgstr "Sulje hakusyöte" msgid "Edit entry" msgstr "Muokkaa kirjaus" #, fuzzy msgid "Remember cursor position" msgstr "Muistuttajan valinnat" msgid "Selected note will be removed." msgstr "Valittu merkintä poistetaan." msgid "No further data recovery will be possible." msgstr "Tämän jälkeen tietoja ei voida palauttaa." #, fuzzy msgid "Plain" msgstr "lisää" #, fuzzy msgid "Encrypted" msgstr "Merkintöjen salaus" #, fuzzy msgid "Note type" msgstr "Nouda tyyppi" #, fuzzy msgid "Cannot open the note." msgstr "En voi avaa tiedosto." msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "Käyttövaltuudet" msgid "Algorithm" msgstr "Algoritmi" msgid "Hashing" msgstr "Hajauttaminen" msgid "Compression" msgstr "Tiivistäminen" msgid "Ratio" msgstr "Suhde" msgid "Fast" msgstr "Nopea" msgid "Good" msgstr "Hyvä" msgid "Best" msgstr "Paras" msgid "Remember the last selected category" msgstr "Muista viimeksi valittu kategoria" msgid "Use system format for date and time" msgstr "Näytä päiväys ja aika järjestelmän muodossa" msgid "Encryption" msgstr "Salaus" msgid "Visible columns" msgstr "Näkyvät sarakkeet" msgid "Categories" msgstr "Kategoriat" msgid "Notes options" msgstr "Merkintöjen valinnat" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" #, fuzzy msgid "Vertical" msgstr "Pystyviiva" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Välilehtien paikka" msgid "Left" msgstr "Vasemmalla" msgid "Right" msgstr "Oikealla" msgid "Top" msgstr "Yläreunassa" msgid "Bottom" msgstr "Alareunassa" #, fuzzy msgid "Use default stock icons" msgstr "Käytä oletusikoneja (vaatii uudelleenkäynnistyksen)" msgid "Disable underline in links" msgstr "Älä alleviivaa linkkejä" msgid "Draw rows in alternating colors" msgstr "Piirrä rivit vuorottelevin värein" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Ainakin yhden moduulin tulee olla näkyvä." msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "Ajan muoto" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "Ajan muoto" msgid "hours" msgstr "tunnit" msgid "Spell checker language" msgstr "" msgid "Enable tooltips" msgstr "Ota työkaluvihjeet käyttöön" msgid "Remember last selected page" msgstr "Muista viimeksi valittu sivu" msgid "Save data after every modification" msgstr "Tallenna data jokaisen muutoksen jälkeen" msgid "Web browser" msgstr "Web selain" msgid "E-mail client" msgstr "Sähköpostiohjelma" #, fuzzy msgid "Sound player" msgstr "Toinen nimi" #, fuzzy, c-format msgid "The %s pattern will be replaced with web address" msgstr "Tämä %s kuvio korvautuu www- tai s-postiosoitteella" #, fuzzy, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Tämä %s kuvio korvautuu www- tai s-postiosoitteella" #, fuzzy, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Tämä %s kuvio korvautuu www- tai s-postiosoitteella" msgid "Enable system tray" msgstr "Ota käyttöön ilmaisinalue" msgid "Start minimised" msgstr "Käynnistä pienennettynä" msgid "Blink on events" msgstr "" #, fuzzy msgid "Ignore day note events" msgstr "sulje päivämerkintäpaneeli" msgid "Hide" msgstr "Piilota" msgid "Helpers" msgstr "Apurit" msgid "System tray" msgstr "Ilmaisinalue" msgid "Edit" msgstr "Muokkaa" msgid "Go Down" msgstr "" msgid "Select date" msgstr "Valitse päiväys" msgid "Select font" msgstr "Valitse fontti" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Laskin" msgid "Edit day note" msgstr "Muokkaa päivämerkintää" msgid "Save" msgstr "Tallenna" msgid "Display full-year calendar" msgstr "Näytä vuosikalenteri" msgid "Help" msgstr "Ohje" msgid "Invalid item" msgstr "Umpeutunut aihe" msgid "Valid item" msgstr "Kelvollinen aihe" msgid "Edit task" msgstr "Muokkaa tehtävää" msgid "Remove task" msgstr "Poista tehtävä" #, fuzzy msgid "Import tasks" msgstr "Imptait yhteystiedot" #, fuzzy msgid "Export tasks" msgstr "Vie yhteystiedot" #, fuzzy msgid "Change to previous date" msgstr "Muuta eräpäivä edelliseen päivään" #, fuzzy msgid "Change to next date" msgstr "Muuta eräpäivä seuraavaan päivään" msgid "Print" msgstr "Tulosta" #, fuzzy msgid "Normal" msgstr "Normaali tehtävä" #, fuzzy msgid "Recurrent" msgstr "Toistuva tehtävä" msgid "Started" msgstr "Aloitettu" msgid "Finished" msgstr "Valmis" msgid "All items" msgstr "Kaikki aiheet" msgid "New task" msgstr "Uusi tehtävä" #, fuzzy msgid "Change due date to previous date" msgstr "Muuta eräpäivä edelliseen päivään" #, fuzzy msgid "Change due date to next date" msgstr "Muuta eräpäivä seuraavaan päivään" msgid "Print visible tasks list" msgstr "Tulosta näkyvien tehtävien luettelo" msgid "Due date" msgstr "Eräpäivä" msgid "Priority" msgstr "Prioriteetti" msgid "Task details" msgstr "Tehtävän yksityiskohdat" msgid "Close description panel" msgstr "Sulje kuvauspaneeli" msgid "No tasks with defined date found." msgstr "" #, fuzzy msgid "Save tasks" msgstr "Päivätehtävät" #, fuzzy msgid "tasks exported" msgstr "yhteystieto viety" msgid "Please select at least one day when recurrency is enabled." msgstr "Valitse ainakin yksi päivä kun toistuminen on käytössä." msgid "Set time" msgstr "Aseta aika" msgid "Tomorrow" msgstr "Huominen" msgid "Selected task will be removed." msgstr "Valittu tehtävä poistetaan." msgid "Basic" msgstr "" #, fuzzy msgid "Select date and time" msgstr "Toinen päiväys ja aika" msgid "Low" msgstr "Matala" msgid "High" msgstr "Korkea" msgid "Enable sound notification" msgstr "" #, fuzzy msgid "Enable notification dialog" msgstr "Globaali ilmoituskäsky" msgid "Advanced" msgstr "" msgid "Alarm warning" msgstr "Herätysvaroitus" msgid "Postpone time" msgstr "Lykkäämisaika" msgid "Alarm command" msgstr "Herätyskomento" msgid "Recurrent task" msgstr "Toistuva tehtävä" msgid "Enable" msgstr "Ota käyttöön" msgid "Start" msgstr "Aloita" msgid "End" msgstr "Lopeta" msgid "Interval" msgstr "Väli" msgid "Time period" msgstr "Aikaperiodi" msgid "Date period" msgstr "Ajankohtaperiodi" msgid "Repeat" msgstr "Toista" msgid "Repeat in the following days" msgstr "Toista seuraavina päivinä" msgid "Ignore alarm when task expired offline" msgstr "Hylkää herätys kun tehtävä vanhentunut yhteydettömänä" msgid "Select a font..." msgstr "Valitsefontti..." msgid "Color of items that are due today" msgstr "Tämän päivän aiheiden väri" msgid "Color of items that are due in the next 7 days" msgstr "Seuraavien 7 päivän aiheiden väri" msgid "Color of items that are past due" msgstr "Menneiden aiheiden väri" msgid "Task info font" msgstr "Tehtäväinfon fontti" msgid "Show in bold tasks with high priority" msgstr "Näytä lihavoinnilla tehtävät joilla korkea prioriteetti" msgid "Hide completed tasks" msgstr "Piilota suoritetut tehtävät" msgid "Delete completed tasks without confirmation" msgstr "Poista valmiit tehtävät kysymättä" msgid "Add new task when double clicked on tasks list" msgstr "Lisää uusi tehtävä kaksoisnapsauttamalla tehtäväluettelossa" msgid "minutes" msgstr "minuuttia" msgid "0 for disable" msgstr "0 älä käytä" msgid "Repeat sound alarm" msgstr "" #, fuzzy msgid "times" msgstr "Aseta aika" msgid "Global notification command" msgstr "Globaali ilmoituskäsky" msgid "Tasks options" msgstr "Tehtävien valinnat" msgid "Reminder options" msgstr "Muistuttajan valinnat" #, fuzzy msgid "Tasks list" msgstr "Tehtävien valinnat" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "N:o" msgid "New Moon" msgstr "Uusi kuu " msgid "Waxing Crescent Moon" msgstr "Uusi kuu" msgid "Quarter Moon" msgstr "Kasvava sirppi" msgid "Waxing Gibbous Moon" msgstr "Ensimmäinen neljännes" msgid "Full Moon" msgstr "Täysi kuu " msgid "Waning Gibbous Moon" msgstr "Vähenevä kupera kuu" msgid "Last Quarter Moon" msgstr "Viimeinen neljännes" msgid "Waning Crescent Moon" msgstr "Vähenevä sirppi" msgid "Error" msgstr "Virhe" msgid "Selected file exist! Overwrite?" msgstr "Valittu tiedosto on olemassa! Korvataanko se?" #~ msgid "Select and show first item after search" #~ msgstr "Valitse ja näytä haun jälkeen ensimmäinen tietue" #~ msgid "Order" #~ msgstr "Järjestys" #~ msgid "Mode" #~ msgstr "Käytäntö" #~ msgid "Ascending" #~ msgstr "Nouseva" #~ msgid "Descending" #~ msgstr "Laskeva" #~ msgid "Sorting" #~ msgstr "Lajittelu" osmo-0.2.14/po/cs.po000664 001750 001750 00000112010 12561325524 014110 0ustar00pasppasp000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Jaroslav Lichtblau , 2015 # Jaroslav Lichtblau , 2014 msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-07-30 18:10+0000\n" "Last-Translator: Jaroslav Lichtblau \n" "Language-Team: Czech (http://www.transifex.com/projects/p/osmo/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" msgid "About" msgstr "O programu" msgid "Close" msgstr "Zavřít" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "pÅ™ejít na pÅ™edeÅ¡lou záložku" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "pÅ™ejít na další záložku" msgid "switch to selected page" msgstr "pÅ™ejít na vybranou stranu" msgid "show options window" msgstr "zobrazit okno nastavení" msgid "show about window" msgstr "zobrazit okno o programu" msgid "toggle fullscreen mode" msgstr "pÅ™epnout náhled" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "zmÄ›nit stranu na záložce o programu a nastavení" msgid "exit" msgstr "ukonÄit" msgid "Space" msgstr "Mezerník" msgid "select current date" msgstr "vybrat aktuální datum" msgid "Ctrl+Space" msgstr "Ctrl+Mezerník" msgid "toggle personal data visibility" msgstr "pÅ™epnout viditelnost osobních dat" msgid "Arrows" msgstr "SmÄ›rové klávesy" msgid "change day" msgstr "zmÄ›nit den" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "posunovat obsahy v panelu informací pro den" msgid "change month" msgstr "zmÄ›nit mÄ›síc" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "zmÄ›nit rok" msgid "toggle calendars for the previous and next month" msgstr "prohodit kalendáře na minulý a příští mÄ›síc" msgid "day notes browser" msgstr "prohlížeÄ denních poznámek" msgid "assign background color to day note" msgstr "pÅ™iÅ™aÄ barvu pozadí pro denní poznámky" msgid "date calculator" msgstr "kalkulátor data" msgid "show full-year calendar" msgstr "zobrazit kalendář na celý rok" msgid "jump to date" msgstr "jít na datum" msgid "Delete" msgstr "Smazat" msgid "remove day note" msgstr "odstranit poznámku" msgid "Alt+Arrows" msgstr "Alt+SmÄ›rové klávesy" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "zavřít editor" msgid "toggle bold" msgstr "pÅ™epnout tuÄný text" msgid "toggle italic" msgstr "pÅ™epnout kurzivu" msgid "toggle underline" msgstr "pÅ™epnout podtržení" msgid "toggle strikethrough" msgstr "pÅ™epnout proÅ¡krtnutí" msgid "toggle highlight" msgstr "pÅ™epnout zvýraznÄ›ní" msgid "Arrows Up/Down" msgstr "Å ipka nahoru/dolů" msgid "toggle alternative view" msgstr "pÅ™epnout alternativní náhled" msgid "year info" msgstr "roÄní info" msgid "set current year" msgstr "nastav aktuální rok" msgid "close full-year calendar" msgstr "zavřít kalendář na celý rok" msgid "Alt+a, Insert" msgstr "Alt+A, Vložit" msgid "add task" msgstr "pÅ™idat úkol" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+E, Ctrl+Enter" msgid "edit task" msgstr "upravit úkol" msgid "Alt+r, Delete" msgstr "Alt+R, Smazat" msgid "remove task" msgstr "odstranit úkol" msgid "toggle hidden tasks" msgstr "zobrazit skryté úkoly" msgid "activate search field" msgstr "aktivovat vyhledávací pole" msgid "Left, Right" msgstr "Vlevo, Vpravo" msgid "change category filter" msgstr "zmÄ›nit filtr kategorií" msgid "close task info panel" msgstr "zavřít panel informací o úkolu" msgid "Insert" msgstr "Vložit" msgid "add contact" msgstr "pÅ™idat kontakt" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "upravit kontakt" msgid "remove contact" msgstr "odstranit kontakt" msgid "change search mode" msgstr "zmÄ›nit mód vyhledávání" msgid "close contact details panel" msgstr "zavřít panel poznámek" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "otevřít poznámku" msgid "add note" msgstr "pÅ™idat poznámku" msgid "remove note" msgstr "odstranit poznámku" msgid "edit note name and category" msgstr "upravit jméno a kategorii poznámky" msgid "close note editor" msgstr "zavřít editor poznámek" msgid "save note" msgstr "uložit poznámku" msgid "find text" msgstr "najít text" msgid "clear selection attributes" msgstr "smazat vlastnosti výbÄ›ru" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "Program OSMO byl vytvoÅ™en s důrazem na uživatelskou přívÄ›tivost. Proto obsahuje plno klávesových zkratek. Zde je jejich kompletní seznam:" msgid "General" msgstr "Nastavení" msgid "Calendar" msgstr "Kalendář" msgid "Note editor" msgstr "Editor poznámek" msgid "Full-year calendar" msgstr "Zobrazit kalendář na celý rok" msgid "Tasks" msgstr "Úkoly" msgid "Contacts" msgstr "Kontakty" msgid "Notes" msgstr "Poznámky" msgid "Selector" msgstr "PÅ™epínaÄ" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Å ikovný osobní organizér" msgid "compiled on" msgstr "sestaveno" msgid "Programming" msgstr "Naprogramoval" msgid "Graphics" msgstr "Grafická úprava" msgid "Contributors" msgstr "PříspÄ›vky od" msgid "Translators" msgstr "PÅ™ekladatelé" msgid "Mailing lists" msgstr "Konference" msgid "Bug tracker" msgstr "Bug tracker" msgid "Feature requests" msgstr "Žádat nové funkce" msgid "Available modules" msgstr "Dostupné moduly" msgid "Compiled-in features" msgstr "Zkompilováno s" msgid "iCalendar support" msgstr "Podpora pro iCalendar" msgid "Encrypted notes support" msgstr "Podpora Å¡ifrovaných poznámek" msgid "Backup support" msgstr "Podpora zálohování" msgid "Printing support" msgstr "Podpora tisku" msgid "Spell checker support" msgstr "Podpora kontroly jazyka" msgid "version" msgstr "verze" msgid "SVN revision" msgstr "SVN revize" msgid "Key shortcuts" msgstr "Klávesové zkratky" msgid "License" msgstr "Licence" msgid "Save backup" msgstr "Uložit zálohu" msgid "Password protection" msgstr "Chránit heslem" msgid "Enter password" msgstr "Vlož heslo" msgid "Re-enter password" msgstr "Znovu vlož heslo" msgid "Please enter the password" msgstr "Prosím vložte heslo" msgid "Passwords do not match!" msgstr "Hesla se neshodují!" msgid "Cannot create backup!" msgstr "Nelze vytvoÅ™it zálohu!" msgid "Backup file saved successfully!" msgstr "Záložní soubor úspěšnÄ› uložen!" msgid "Open backup file" msgstr "Otevřít zálohu" msgid "Osmo backup files (*.bck)" msgstr "Záložní soubor programu Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Toto není záložní soubor programu Osmo" msgid "Incorrect password!" msgstr "Nesprávné heslo!" msgid "All your data will be replaced with backup file content." msgstr "VÅ¡echna data budou nahrazena obsahem ze záložního souboru." msgid "Are you sure?" msgstr "Opravdu pokraÄovat?" msgid "Osmo has to be restarted now..." msgstr "Je tÅ™eba restartovat Osmo..." msgid "was born" msgstr "narozen" msgid "year old" msgid_plural "years old" msgstr[0] "rok starý" msgstr[1] "roky starý" msgstr[2] "let starý" msgid "Current time" msgstr "Aktuální Äas" msgid "Day number" msgstr "Číslo dne" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "den do konce roku" msgstr[1] "dny do konce roku" msgstr[2] "dní do konce roku" msgid "the last day of the year" msgstr "poslední den roku" msgid "Today distance" msgstr "Od dneÅ¡ního dne" msgid "Week number" msgstr "Číslo týdne" msgid "Marked days" msgstr "OznaÄených dní" msgid "Weekend days" msgstr "Víkendových dnů" msgid "Moon phase" msgstr "Fáze mÄ›síce" msgid "Zodiac sign" msgstr "Znamení zvÄ›rokruhu" msgid "Day notes" msgstr "Poznámky na den" msgid "Day tasks" msgstr "Denní úkoly" msgid "Birthday" msgstr "Narozeniny" msgid "Day category" msgstr "Kategorie dne" msgid "Selected day note will be removed." msgstr "Vybraná poznámka dne bude odstranÄ›na." msgid "Continue?" msgstr "PokraÄovat?" msgid "Previous year" msgstr "Minulý rok" msgid "Previous month" msgstr "Minulý mÄ›síc" msgid "Previous day" msgstr "VÄera" msgid "Today" msgstr "Dnes" msgid "Next day" msgstr "Zítra" msgid "Next month" msgstr "Příští mÄ›síc" msgid "Next year" msgstr "Příští rok" msgid "Jump to date" msgstr "Jít na datum" msgid "Print calendar" msgstr "Vytisknout kalendář" msgid "Date calculator" msgstr "Kalkulátor data" msgid "Backup data" msgstr "Zálohovat data" msgid "Restore data" msgstr "Obnovit data" msgid "Preferences" msgstr "Nastavení" msgid "Quit" msgstr "UkonÄit" msgid "Toggle day note panel" msgstr "Zobrazit/skrýt panel poznámek" msgid "Add task" msgstr "PÅ™idat úkol" msgid "Select day color" msgstr "Barva vybraného dne" msgid "Browse notes" msgstr "Procházet poznámky" msgid "Browse iCal events" msgstr "Procházet události iCal" msgid "Export to iCal file" msgstr "Exportovat do souboru iCal" msgid "Previous and next month" msgstr "PÅ™edeÅ¡lý a příští mÄ›síc" msgid "Close note panel" msgstr "Zavřít panel poznámek" msgid "Highlight" msgstr "Zvýraznit" msgid "Strikethrough" msgstr "PÅ™eÅ¡krtnuté" msgid "Underline" msgstr "Podtržené" msgid "Italic" msgstr "Kurzíva" msgid "Bold" msgstr "TuÄné" msgid "Insert timeline" msgstr "Vložit Äasy" msgid "Clear text" msgstr "Smazat text" msgid "Info" msgstr "Informace" msgid "Select color" msgstr "Vybrat barvu" msgid "None" msgstr "Není" msgid "Cancel" msgstr "ZruÅ¡it" msgid "OK" msgstr "Budiž" msgid "year" msgid_plural "years" msgstr[0] "rok" msgstr[1] "roků" msgstr[2] "let" msgid "month" msgid_plural "months" msgstr[0] "mÄ›síc" msgstr[1] "mÄ›síce" msgstr[2] "mÄ›síců" msgid "day" msgid_plural "days" msgstr[0] "den" msgstr[1] "dny" msgstr[2] "dnů" msgid "hour" msgid_plural "hours" msgstr[0] "hodina" msgstr[1] "hodiny" msgstr[2] "hodin" msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minuty" msgstr[2] "minut" msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" msgid "or" msgstr "nebo" msgid "rounded down" msgstr "zaokrouhleno dolů" msgid "week" msgid_plural "weeks" msgstr[0] "týden" msgstr[1] "týdny" msgstr[2] "týdnů" msgid "working day" msgid_plural "working days" msgstr[0] "pracovní den" msgstr[1] "pracovní dny" msgstr[2] "pracovních dnů" msgid "time is ignored" msgstr "ignorovat Äas" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "víkendový den" msgstr[1] "víkendové dny" msgstr[2] "víkendových dnů" msgid "This calculator only supports dates after year 1." msgstr "KalkulaÄka podporuje pouze data po roce 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "víkendový den ignorován" msgstr[1] "víkendové dny ignorovány" msgstr[2] "víkendových dnů ignorováno" msgid "Year" msgstr "Rok" msgid "Month" msgstr "MÄ›síc" msgid "Day" msgstr "Den" msgid "Current date" msgstr "Aktuální datum" msgid "Set current date" msgstr "Nastavit aktuální datum" msgid "Hour" msgstr "Hodina" msgid "Minute" msgstr "Minuta" msgid "Second" msgstr "Sekunda" msgid "Set current time" msgstr "Nastavit aktuální Äas" msgid "Reset time" msgstr "Vymazat Äas" msgid "First date and time" msgstr "PoÄáteÄní datum a Äas" msgid "Second date and time" msgstr "KoneÄné datum a Äas" msgid "Alternative time units" msgstr "Lze říci i takto" msgid "Result" msgstr "Výsledek" msgid "Duration between two dates" msgstr "Délka mezi dvÄ›ma daty" msgid "Operation" msgstr "Operace" msgid "add" msgstr "pÅ™idat" msgid "subtract" msgstr "odebrat" msgid "Date and time to add or subtract from" msgstr "Datum a Äas od kterého ubírat nebo pÅ™idávat" msgid "Years" msgstr "Roky" msgid "Months" msgstr "MÄ›síce" msgid "Days" msgstr "Dny" msgid "Weeks" msgstr "Týdnů" msgid "Hours" msgstr "Hodiny" msgid "Minutes" msgstr "Minuty" msgid "Seconds" msgstr "Sekundy" msgid "Ignore weekend days" msgstr "Ignorovat dny víkendu" msgid "Reset fields" msgstr "VyÄistit pole" msgid "Time to add or subtract" msgstr "PÅ™idat nebo odebrat Äas" msgid "Jump to" msgstr "Jít na" msgid "Add to or subtract from a date" msgstr "PÅ™idat nebo odebrat od data" msgid "Leap year" msgstr "PÅ™estupný rok" msgid "Yes" msgstr "Ano" msgid "No" msgstr "Ne" msgid "Chinese year animal" msgstr "Zvíře podle Äínského kalendáře" msgid "Number of days" msgstr "PoÄet dní" msgid "Number of weeks" msgstr "PoÄet týdnů" msgid "Number of weekend days" msgstr "PoÄet víkendových dní" msgid "Year info" msgstr "Informace o roce" msgid "Current year" msgstr "Příští rok" msgid "Alternative view" msgstr "Náhradní zobrazení" msgid "event" msgid_plural "events" msgstr[0] "událost" msgstr[1] "události" msgstr[2] "událostí" msgid "No valid calendars defined" msgstr "Nejsou definovány platné kalendáře" msgid "iCalendar events" msgstr "Události iCalendar" msgid "Date" msgstr "Datum" msgid "Time" msgstr "ÄŒas" msgid "Summary" msgstr "Popis" msgid "Select output file" msgstr "Vybrat výstupní soubor" msgid "The list will be cleared and all entries will be lost." msgstr "Tento seznam bude smazán a vÅ¡echny záznamy zmizí." msgid "Done!" msgstr "Hotovo!" msgid "event exported" msgid_plural "events exported" msgstr[0] "událost exportována" msgstr[1] "události exportovány" msgstr[2] "událostí exportováno" msgid "iCalendar export" msgstr "export jako iCalendar" msgid "Day Selector" msgstr "VýbÄ›r dne" msgid "Use date period" msgstr "Použít opakované datum" msgid "Add" msgstr "PÅ™idat" msgid "Clear" msgstr "Smazat" msgid "Remove" msgstr "Odstranit" msgid "Output filename" msgstr "Jméno výstupního souboru" msgid "Browse" msgstr "Procházet" msgid "Export" msgstr "Exportovat" msgid "no entries" msgstr "žádné záznamy" msgid "entry" msgid_plural "entries" msgstr[0] "záznam" msgstr[1] "záznamy" msgstr[2] "záznamů" msgid "Calendar notes" msgstr "Poznámky kalendáře" msgid "Search" msgstr "Vyhledávání" msgid "Filter" msgstr "Filtr" msgid "Current month" msgstr "Aktuální mÄ›síc" msgid "Selected month" msgstr "Vybraný mÄ›síc" msgid "Selected year" msgstr "Vybraný rok" msgid "Selected month and year" msgstr "Vybraný rok a mÄ›síc" msgid "All notes" msgstr "VÅ¡echny poznámky" msgid "Case sensitive" msgstr "RozliÅ¡uje velikost písmen" msgid "Strikethrough past day notes" msgstr "PÅ™eÅ¡krtnout proÅ¡lé poznámky" msgid "Note" msgstr "Poznámka" msgid "Syntax" msgstr "Syntax" msgid "abbreviated weekday name" msgstr "zkrácený název dne" msgid "full weekday name" msgstr "plný název dne" msgid "abbreviated month name" msgstr "zkrácený název mÄ›síce" msgid "full month name" msgstr "plný název mÄ›síce" msgid "day of the month" msgstr "den v mÄ›síci" msgid "MM/DD/YY" msgstr "mm/dd/rr" msgid "day of the month without leading zeros" msgstr "den mÄ›síce bez poÄáteÄní nuly" msgid "year without century" msgstr "rok bez století" msgid "year with century" msgstr "rok se stoletím" msgid "Date header format" msgstr "Formát hlaviÄky data" msgid "Set default format" msgstr "Nastavit výchozí formát" msgid "Date format syntax" msgstr "Formát data" msgid "Day note marker" msgstr "ZnaÄení události dne" msgid "Event marker" msgstr "OznaÄení událostí" msgid "Circle" msgstr "Kruh" msgid "Ellipse" msgstr "Elipsa" msgid "Wave" msgstr "Vlnka" msgid "Current day marker" msgstr "ZnaÄení dneÅ¡ního dne" msgid "Arrow" msgstr "Å ipka" msgid "Free-hand circle" msgstr "RuÄnÄ› kreslený kruh" msgid "Colors" msgstr "Barvy" msgid "Header color" msgstr "Barva záhlaví" msgid "Weekend days color" msgstr "Barva dní víkendu" msgid "Cursor color" msgstr "Barva kurzoru" msgid "Event marker color" msgstr "Barva událostí" msgid "Current day marker color" msgstr "Barva aktuálního dne" msgid "Birthday marker color" msgstr "Barva oznaÄení narozenin" msgid "Date font" msgstr "Písmo data" msgid "Calendar font" msgstr "Písmo kalendáře" msgid "Note font" msgstr "Písmo poznámek" msgid "Enable block cursor" msgstr "Podbarvení vybraného dne v kalendáři" msgid "Cursor thickness" msgstr "Tloušťka ohraniÄení vybraného dne" msgid "Thin" msgstr "slabé" msgid "Thick" msgstr "silné" msgid "Edit category" msgstr "Upravit kategorii" msgid "Color" msgstr "Barva" msgid "Name" msgstr "Jméno" msgid "Select ICS file" msgstr "Vybrat ICS soubor" msgid "All Files" msgstr "VÅ¡echny soubory" msgid "Calendar files (*.ics)" msgstr "Soubory kalendáře (*.ics)" msgid "Modify ICAL parameters" msgstr "Upravit ICAL parametry" msgid "Filename" msgstr "Jméno souboru" msgid "Options" msgstr "Nastavení" msgid "Disabled" msgstr "Vypnuto" msgid "Valid" msgstr "Platný" msgid "Description" msgstr "Popis" msgid "Full date" msgstr "Plné datum" msgid "Mark" msgstr "OznaÄit" msgid "Week start on Monday" msgstr "Týden zaÄíná v pondÄ›lí" msgid "Show day names" msgstr "Zobrazit jména dní" msgid "No month change" msgstr "NemÄ›nit mÄ›síc" msgid "Show week numbers" msgstr "Zobrazit Äíslo týdne" msgid "Simple view in full-year calendar" msgstr "Krátké popisy roÄního kalendáře" msgid "Enable auxilary calendars" msgstr "Zapnout malé kalendáře" msgid "Ascending sorting in day notes browser" msgstr "Vzestupné Å™azení pÅ™i prohlížeÄi denních poznámek" msgid "Enable spell checker in day notes" msgstr "Zapnout kontrolu jazyka u denních poznámek" msgid "Show seconds" msgstr "Zobrazit sekundy" msgid "Appearance" msgstr "Vzhled" msgid "Day categories" msgstr "Kategorie dní" msgid "iCalendar files" msgstr "Soubory iCalendar" msgid "Show in day info panel" msgstr "Zobrazit v panelu informací" msgid "Name day" msgstr "Jmeniny" msgid "Error printing" msgstr "Chyba tisku" msgid "Printing properties" msgstr "Nastavení tisku" msgid "Month name" msgstr "Jméno mÄ›síce" msgid "Day name" msgstr "Jméno dne" msgid "Events" msgstr "Události" msgid "Fonts" msgstr "Fonty" msgid "Birthdays" msgstr "Narozeniny" msgid "Namedays" msgstr "Jmeniny" msgid "Visible events" msgstr "Viditelné události" msgid "Padding" msgstr "Bloky" msgid "Event maximum length" msgstr "Maximální délka události" msgid "Page orientation:" msgstr "Orientace strany:" msgid "Portrait" msgstr "Na výšku" msgid "Landscape" msgstr "Na šířku" msgid "Timeline" msgstr "ÄŒasová linie" msgid "From (hour)" msgstr "Od (hodina)" msgid "Step (minutes)" msgstr "Kroky (minuty)" msgid "To (hour)" msgstr "Do (hodina)" msgid "No date" msgstr "Žádné datum" msgid "Rat" msgstr "Krysa" msgid "Ox" msgstr "Buvol" msgid "Tiger" msgstr "Tygr" msgid "Hare" msgstr "Zajíc" msgid "Dragon" msgstr "Drak" msgid "Snake" msgstr "Had" msgid "Horse" msgstr "Kůň" msgid "Sheep" msgstr "Ovce" msgid "Monkey" msgstr "Opice" msgid "Fowl" msgstr "Kohout" msgid "Dog" msgstr "Pes" msgid "Pig" msgstr "VepÅ™" msgid "Unknown" msgstr "Neznámý" msgid "Aquarius" msgstr "Vodnář" msgid "Pisces" msgstr "Ryba" msgid "Aries" msgstr "Beran" msgid "Taurus" msgstr "Býk" msgid "Gemini" msgstr "Blíženci" msgid "Cancer" msgstr "Rak" msgid "Leo" msgstr "Lev" msgid "Virgo" msgstr "Panna" msgid "Libra" msgstr "Váhy" msgid "Scorpio" msgstr "Å tír" msgid "Sagittarius" msgstr "StÅ™elec" msgid "Capricorn" msgstr "Kozoroh" msgid "Cannot perform selected operation." msgstr "Nelze provést vybranou operaci." msgid "Task has been modified or removed." msgstr "Úloha byla upravena nebo odstranÄ›na." msgid "Remind me later" msgstr "Upozorni mÄ› pozdÄ›ji" msgid "Done" msgstr "Hotovo" msgid "postponed" msgstr "pozdrženo" msgid "Show task" msgstr "Zobrazit úkol" msgid "Alarm warning!" msgstr "Varování alarmu!" msgid "Day note" msgstr "Poznámka na den" msgid "Type" msgstr "Typ" msgid "Event" msgstr "Událost" msgid "Task" msgstr "Úkol" msgid "Show Osmo" msgstr "Zobrazit Osmo" msgid "No birthdays defined" msgstr "Narozeniny nejsou urÄeny" msgid "Birthdays list" msgstr "Seznam narozenin" msgid "Days to birthday" msgstr "Dnů do narozenin" msgid "Age" msgstr "VÄ›k" msgid "Birthday date" msgstr "Datum narození" msgid "today" msgstr "dnes" msgid "Please select address" msgstr "Vybrat adresu" msgid "Information" msgstr "Informace" msgid "Work" msgstr "ZamÄ›stnání" msgid "Home" msgstr "Domov" msgid "Group" msgstr "Skupina" msgid "First name" msgstr "Jméno" msgid "Last name" msgstr "Příjmení" msgid "Second name" msgstr "Druhé jméno" msgid "Nickname" msgstr "PÅ™ezdívka" msgid "Tags" msgstr "Tagy" msgid "Name day date" msgstr "Jmeniny" msgid "Home address" msgstr "Adresa domů" msgid "Home postcode" msgstr "PSÄŒ" msgid "Home city" msgstr "MÄ›sto" msgid "Home state" msgstr "Kraj" msgid "Home country" msgstr "ZemÄ›" msgid "Organization" msgstr "Organizace" msgid "Department" msgstr "OddÄ›lení" msgid "Work address" msgstr "Adresa domů" msgid "Work postcode" msgstr "PSÄŒ" msgid "Work city" msgstr "MÄ›sto zamÄ›stnání" msgid "Work state" msgstr "Stát zamÄ›stnání" msgid "Work country" msgstr "ZemÄ› zamÄ›stnání" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefon domů" msgid "Home phone 2" msgstr "Telefon domů 2" msgid "Home phone 3" msgstr "Telefon domů 3" msgid "Home phone 4" msgstr "Telefon domů 4" msgid "Work phone" msgstr "Telefon do zamÄ›stnání" msgid "Work phone 2" msgstr "Telefon do zamÄ›stnání 2" msgid "Work phone 3" msgstr "Telefon do zamÄ›stnání 3" msgid "Work phone 4" msgstr "Telefon do zamÄ›stnání 4" msgid "Cell phone" msgstr "Mobilní telefon" msgid "Cell phone 2" msgstr "Mobilní telefon 2" msgid "Cell phone 3" msgstr "Mobilní telefon 3" msgid "Cell phone 4" msgstr "Mobilní telefon 4" msgid "E-Mail" msgstr "E-mail" msgid "E-Mail 2" msgstr "E-mail 2" msgid "E-Mail 3" msgstr "E-mail 3" msgid "E-Mail 4" msgstr "E-mail 4" msgid "WWW" msgstr "Web" msgid "WWW 2" msgstr "Web 2" msgid "WWW 3" msgstr "Web 3" msgid "WWW 4" msgstr "Web 4" msgid "IM Gadu-Gadu" msgstr "Gadu-Gadu" msgid "IM Yahoo" msgstr "Yahoo" msgid "IM MSN" msgstr "MSN" msgid "IM ICQ" msgstr "ICQ" msgid "IM AOL" msgstr "AOL" msgid "IM Jabber" msgstr "Jabber" msgid "IM Skype" msgstr "Skype" msgid "IM Tlen" msgstr "Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Fotografie" msgid "Additional info" msgstr "Další informace" msgid "New contact" msgstr "PÅ™idat kontakt" msgid "Remove contact" msgstr "Odstranit kontakt" msgid "Edit contact" msgstr "Upravit kontakt" msgid "Show birthdays" msgstr "Zobrazit narozeniny" msgid "Show contact location on the map" msgstr "Zobrazit umístÄ›ní kontaktu na mapÄ›" msgid "Import contacts" msgstr "Importovat kontakty" msgid "Export contacts" msgstr "Exportovat kontakty" msgid "First Name" msgstr "Jméno" msgid "Last Name" msgstr "Příjmení" msgid "All fields" msgstr "VÅ¡echna pole" msgid "Contact details" msgstr "Detaily kontaktu" msgid "Close contact panel" msgstr "Zavřít detaily kontaktu" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kontakt exportován" msgstr[1] "kontakty exportovány" msgstr[2] "kontaktů exportováno" msgid "Cannot create file." msgstr "Nelze vytvoÅ™it soubor." msgid "Output format" msgstr "Výstupní formát" msgid "Add header" msgstr "PÅ™idat hlaviÄku" msgid "Fields to export" msgstr "Pole pro export" msgid "All" msgstr "VÅ¡e" msgid "Invert" msgstr "Prohodit" msgid "Select fields" msgstr "Vybrat pole" msgid "Select CSV file" msgstr "Vybrat CSV soubor" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CVS (hodnoty oddÄ›lené Äárkou) soubor (*.csv)" msgid "Please select file first." msgstr "Nejprve je tÅ™eba vybrat soubor." msgid "Import type" msgstr "Typ pro import" msgid "File" msgstr "Soubor" msgid "Input filename" msgstr "Jméno vstupního souboru" msgid "Import" msgstr "Importovat" msgid "Nothing to import." msgstr "Není co importovat." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kontakt pÅ™idán" msgstr[1] "kontakty pÅ™idány" msgstr[2] "kontaktů pÅ™idáno" msgid "of" msgstr "z" msgid "Record" msgstr "Záznam" msgid "Number fields per record" msgstr "PoÄet polí na záznam" msgid "Use first record as header" msgstr "Použít první záznam jako hlaviÄku" msgid "Field type" msgstr "Typ pole" msgid "Value" msgstr "Hodnota" msgid "No records found in selected file." msgstr "Ve vybraném souboru nebyly nalezeny žádné hodnoty." msgid "Cannot read file." msgstr "Nelze Äíst soubor." msgid "Cannot open file." msgstr "Nelze otevřít soubor." msgid "Selected contact will be removed." msgstr "Vybraný kontakt bude odstranÄ›n." msgid "Select photo" msgstr "Vybrat fotografii" msgid "Address" msgstr "Adresa" msgid "Postcode" msgstr "PSÄŒ" msgid "City" msgstr "MÄ›sto" msgid "State" msgstr "Stát" msgid "Country" msgstr "ZemÄ›" msgid "Add contact" msgstr "PÅ™idat kontakt" msgid "Personal" msgstr "Osobní" msgid "Phones" msgstr "Telefony" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Barva popisku u kontaktů" msgid "Color of links" msgstr "Barva odkazů" msgid "Font size" msgstr "Velikost písma" msgid "Name font size" msgstr "Velikost písma jmen" msgid "Item font size" msgstr "Písmo položky" msgid "Photo size" msgstr "Velikost fotografie" msgid "Small" msgstr "malá" msgid "Medium" msgstr "stÅ™ední" msgid "Large" msgstr "velká" msgid "Hide group column" msgstr "Skrýt sloupec skupiny" msgid "Maps provider" msgstr "Poskytovatel mapových podkladů" msgid "Miscellaneous" msgstr "Ostatní" msgid "Groups" msgstr "Skupiny" msgid "Visible columns in birthday browser" msgstr "Viditelné sloupce v prohlížeÄi narozenin" msgid "Show calendar" msgstr "Zobrazit kalendář" msgid "Show tasks" msgstr "Zobrazit úkoly" msgid "Show contacts" msgstr "Zobrazit kontakty" msgid "Show notes" msgstr "Zobrazit poznámky" msgid "Show options" msgstr "Zobrazit nastavení" msgid "Show small calendar window" msgstr "Zobrazit malé okno kalendáře" msgid "Check for events since last run" msgstr "Zkontrolovat události od posledního spuÅ¡tÄ›ní" msgid "Number of days to check forward for events (default: 0)" msgstr "V kolika nadcházejících dnech hledat události (pÅ™ednastaveno: 0)" msgid "Set absolute path for settings and data files" msgstr "Nastavit absolutní cestu ke konfiguraÄním a datovým souborům" msgid "Match contacts with given string" msgstr "Vyhledat kontakty podle zadaného výrazu" msgid "handy personal organizer" msgstr "Å¡ikovný osobní organizér" msgid "ERROR: Cannot create config files" msgstr "CHYBA: Nelze zapsat konfiguraÄní soubory" msgid "Another copy of OSMO is already running." msgstr "Již běží jiná kopie programu OSMO." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "SouÄasné používání dvou a více spuÅ¡tÄ›ných kopií programu OSMO může zapříÄinit ztrátu dat." msgid "Do you really want to continue?" msgstr "Opravdu si pÅ™ejete pokraÄovat?" msgid "Warning" msgstr "Varování" msgid "The note has changed." msgstr "Poznámka byla zmÄ›nÄ›na." msgid "Do you want to save it?" msgstr "Mám zmÄ›ny opravdu uložit?" msgid "No URLs found in the selection..." msgstr "Ve výbÄ›ru nebyly nalezeny žádné URL adresy..." msgid "URLs will be opened in the default browser." msgstr "Adresy URL budou otevÅ™eny ve výchozím prohlížeÄi." msgid "Do you want to continue?" msgstr "PÅ™ejete si pokraÄovat?" msgid "Question" msgstr "Dotaz" msgid "Words" msgstr "Slov" msgid "Lines" msgstr "Řádek" msgid "Characters" msgstr "Znaků" msgid "White characters" msgstr "Bílých znaků" msgid "Bytes" msgstr "Bytů" msgid "Document" msgstr "Dokument" msgid "Selection" msgstr "VýbÄ›r" msgid "Created" msgstr "VytvoÅ™eno" msgid "Modified" msgstr "Upraveno" msgid "New note" msgstr "Nová poznámka" msgid "Add note" msgstr "PÅ™idat poznámku" msgid "Edit note" msgstr "Upravit poznámku" msgid "Delete note" msgstr "Smazat poznámku" msgid "Remove note" msgstr "Odstranit poznámku" msgid "Find" msgstr "Najít" msgid "Clear attributes" msgstr "ZruÅ¡it formátování" msgid "Open URL links" msgstr "Otevřít URL odkazy" msgid "Save note" msgstr "Uložit poznámku" msgid "Insert current date and time" msgstr "Vložit aktuální datum a Äas" msgid "Insert separator" msgstr "Vložit oddÄ›lovaÄ" msgid "Statistics" msgstr "Statistiky" msgid "Close editor" msgstr "Zavřít editor" msgid "Toggle spell checker" msgstr "PÅ™epnout kontrolu jazyka" msgid "Category" msgstr "Kategorie" msgid "Note name" msgstr "Jméno poznámky" msgid "Last changes" msgstr "Poslední zmÄ›ny" msgid "Read-only" msgstr "Pouze pro Ätení" msgid "Line" msgstr "Řádka" msgid "Column" msgstr "Sloupec" msgid "case sensitive" msgstr "rozliÅ¡ovat velikost písmen" msgid "Close find entry" msgstr "Zavřít hledání" msgid "Edit entry" msgstr "Upravit záznam" msgid "Remember cursor position" msgstr "Zapamatovat pozici kurzoru" msgid "Selected note will be removed." msgstr "Vybraná poznámka bude odstranÄ›na." msgid "No further data recovery will be possible." msgstr "Nebude možné žádné obnovení dat" msgid "Plain" msgstr "Normální" msgid "Encrypted" msgstr "Å ifrované" msgid "Note type" msgstr "Typ poznámky" msgid "Cannot open the note." msgstr "Nelze otevřít poznámku." msgid "encryption support is disabled" msgstr "podpora Å¡ifrování vypnuta" msgid "Authorization" msgstr "Autorizace" msgid "Algorithm" msgstr "Algoritmus" msgid "Hashing" msgstr "Hash" msgid "Compression" msgstr "Komprese" msgid "Ratio" msgstr "PomÄ›r" msgid "Fast" msgstr "Rychlá" msgid "Good" msgstr "StÅ™ední" msgid "Best" msgstr "Nejlepší" msgid "Remember the last selected category" msgstr "Zapamatovat si poslední vybranou kategorii" msgid "Use system format for date and time" msgstr "Formát data a Äasu stejný jako v systému" msgid "Encryption" msgstr "Å ifrování" msgid "Visible columns" msgstr "Viditelné sloupce" msgid "Categories" msgstr "Kategorie" msgid "Notes options" msgstr "Nastavení poznámek" msgid "Osmo has to be restarted to take effect." msgstr "Je tÅ™eba restartovat Osmo k provedení zmÄ›ny." msgid "Layout" msgstr "Vzhled" msgid "Vertical" msgstr "Svisle" msgid "Horizontal" msgstr "VodorovnÄ›" msgid "Tabs position" msgstr "Pozice záložek" msgid "Left" msgstr "Vlevo" msgid "Right" msgstr "Vpravo" msgid "Top" msgstr "NahoÅ™e" msgid "Bottom" msgstr "Dole" msgid "Use default stock icons" msgstr "Použít výchozí ikony" msgid "Disable underline in links" msgstr "Vypnout podtrhávání odkazů" msgid "Draw rows in alternating colors" msgstr "Vykreslovat řádky v rozdílných barvách" msgid "Show exit button in toolbar" msgstr "Zobrazit tlaÄítko ukonÄení v panelu" msgid "At least one module must be visible." msgstr "MinimálnÄ› jeden modul musí být viditelný." msgid "Override locale settings" msgstr "PotlaÄit nastavení jazyka" msgid "Date format" msgstr "Formát data" msgid "DD-MM-YYYY" msgstr "dd-mm-rrrr" msgid "MM-DD-YYYY" msgstr "mm-dd-rrrr" msgid "YYYY-MM-DD" msgstr "rrrr-mm-dd" msgid "YYYY-DD-MM" msgstr "rrrr-dd-mm" msgid "Time format" msgstr "Formát Äasu" msgid "hours" msgstr "hodin" msgid "Spell checker language" msgstr "Slovník kontroly jazyka" msgid "Enable tooltips" msgstr "Zobrazovat tipy" msgid "Remember last selected page" msgstr "Pamatovat si poslední vybranou stranu" msgid "Save data after every modification" msgstr "Uložit data po každé zmÄ›nÄ›" msgid "Web browser" msgstr "Webový prohlížeÄ" msgid "E-mail client" msgstr "E-mailový klient" msgid "Sound player" msgstr "PÅ™ehrávaÄ zvuku" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Výraz %s bude nahrazen webovou adresou" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Výraz %s bude nahrazen emailovou adresou" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Výraz %s bude nahrazen zvukovým souborem" msgid "Enable system tray" msgstr "Zobrazovat ikonu v liÅ¡tÄ›" msgid "Start minimised" msgstr "Skrýt po startu" msgid "Blink on events" msgstr "Blikat pÅ™i událostech" msgid "Ignore day note events" msgstr "Ignorovat události v denních poznámkách" msgid "Hide" msgstr "Skrýt" msgid "Helpers" msgstr "Pomocníci" msgid "System tray" msgstr "Systémová liÅ¡ta" msgid "Edit" msgstr "Upravit" msgid "Go Down" msgstr "Jít níže" msgid "Select date" msgstr "Vybrat datum" msgid "Select font" msgstr "Vybrat písmo" msgid "Open URL" msgstr "Otevřít URL" msgid "Calculator" msgstr "KalkulaÄka" msgid "Edit day note" msgstr "Upravit poznámku" msgid "Save" msgstr "Uložit" msgid "Display full-year calendar" msgstr "Zobrazit celoroÄní kalendář" msgid "Help" msgstr "Pomoc" msgid "Invalid item" msgstr "Neplatná položka" msgid "Valid item" msgstr "Platná položka" msgid "Edit task" msgstr "Upravit úkol" msgid "Remove task" msgstr "Odstranit úkol" msgid "Import tasks" msgstr "Importovat úkoly" msgid "Export tasks" msgstr "Exportovat úkoly" msgid "Change to previous date" msgstr "ZmÄ›nit na pÅ™edchozí datum" msgid "Change to next date" msgstr "ZmÄ›nit na následující datum" msgid "Print" msgstr "Tisk" msgid "Normal" msgstr "Normální" msgid "Recurrent" msgstr "Opakující" msgid "Started" msgstr "ZapoÄato" msgid "Finished" msgstr "UkonÄeno" msgid "All items" msgstr "VÅ¡echny soubory" msgid "New task" msgstr "Nový úkol" msgid "Change due date to previous date" msgstr "ZmÄ›nit datum vyprÅ¡ení na pÅ™edeÅ¡lé datum" msgid "Change due date to next date" msgstr "ZmÄ›nit datum vyprÅ¡ení na následující datum" msgid "Print visible tasks list" msgstr "Vytisknout viditelný seznam úkolů" msgid "Due date" msgstr "Datum" msgid "Priority" msgstr "Priorita" msgid "Task details" msgstr "Detaily úkolu" msgid "Close description panel" msgstr "Zavřít detaily úkolu" msgid "No tasks with defined date found." msgstr "Nenalezeny žádné úkoly s daty vyprÅ¡ení." msgid "Save tasks" msgstr "Uložit úkoly" msgid "tasks exported" msgstr "úkoly exportovány" msgid "Please select at least one day when recurrency is enabled." msgstr "PÅ™i zapnutém opakování je tÅ™eba vybrat alespoň jeden den." msgid "Set time" msgstr "Nastavit Äas" msgid "Tomorrow" msgstr "Zítra" msgid "Selected task will be removed." msgstr "Vybraný úkol bude odstranÄ›n." msgid "Basic" msgstr "Základní" msgid "Select date and time" msgstr "Vybrat datum a Äas" msgid "Low" msgstr "Nízká" msgid "High" msgstr "Vysoká" msgid "Enable sound notification" msgstr "Zapnout zvukové upozornÄ›ní" msgid "Enable notification dialog" msgstr "Povolit upozornÄ›ní" msgid "Advanced" msgstr "Rozšířené" msgid "Alarm warning" msgstr "Varování alarmu" msgid "Postpone time" msgstr "Pozdržet Äas" msgid "Alarm command" msgstr "Příkaz pro varování" msgid "Recurrent task" msgstr "Opakovaný úkol" msgid "Enable" msgstr "Povolit" msgid "Start" msgstr "ZaÄátek" msgid "End" msgstr "Konec" msgid "Interval" msgstr "Interval" msgid "Time period" msgstr "Podle Äasu" msgid "Date period" msgstr "Podle data" msgid "Repeat" msgstr "Opakovat" msgid "Repeat in the following days" msgstr "Opakovat v následujících dnech" msgid "Ignore alarm when task expired offline" msgstr "Ignorovat alarm pokud úkol probÄ›hne offline" msgid "Select a font..." msgstr "Vybrat písmo ..." msgid "Color of items that are due today" msgstr "Barva záznamů na dneÅ¡ní den" msgid "Color of items that are due in the next 7 days" msgstr "Barva záznamů na příštích 7 dní" msgid "Color of items that are past due" msgstr "Barva záznamů v minulosti" msgid "Task info font" msgstr "Písmo detailů úkolu" msgid "Show in bold tasks with high priority" msgstr "Úkoly s vysokou prioritou zobrazit tuÄnÄ›" msgid "Hide completed tasks" msgstr "Skrýt splnÄ›né úkoly" msgid "Delete completed tasks without confirmation" msgstr "Mazat splnÄ›né úkoly bez potvrzení" msgid "Add new task when double clicked on tasks list" msgstr "PÅ™idat nový úkol po dvojkliku na seznam úkolů" msgid "minutes" msgstr "minuty" msgid "0 for disable" msgstr "0 pro vypnutí" msgid "Repeat sound alarm" msgstr "Opakovat zvukový alarm" msgid "times" msgstr "Äasy" msgid "Global notification command" msgstr "VÅ¡eobecný příkaz pro oznamování" msgid "Tasks options" msgstr "Nastavení úkolů" msgid "Reminder options" msgstr "Možnosti upomínek" msgid "Tasks list" msgstr "Seznam úkolů" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Ä." msgid "New Moon" msgstr "nov" msgid "Waxing Crescent Moon" msgstr "dorůstající srpek" msgid "Quarter Moon" msgstr "první ÄtvrÅ¥" msgid "Waxing Gibbous Moon" msgstr "dorůstající mÄ›síc" msgid "Full Moon" msgstr "úplnÄ›k" msgid "Waning Gibbous Moon" msgstr "couvající mÄ›síc" msgid "Last Quarter Moon" msgstr "poslední ÄtvrÅ¥" msgid "Waning Crescent Moon" msgstr "ubývající srpek" msgid "Error" msgstr "Chyba" msgid "Selected file exist! Overwrite?" msgstr "Vybraný soubor existuje! PÅ™epsat?" osmo-0.2.14/po/gl_ES.po000664 001750 001750 00000113405 12561325524 014505 0ustar00pasppasp000000 000000 # Galician (Spain) translation of Osmo # This file is distributed under the same license as the Osmo package. # Miguel Anxo Bouzada , 2012 # xesusmosquera , 2012 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-06 09:53+0000\n" "Last-Translator: xesusmosquera \n" "Language-Team: Galician (Spain)\n" "Language: gl_ES\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" msgid "About" msgstr "Sobre" msgid "Close" msgstr "Pechar" msgid "Ctrl+PageUp" msgstr "Ctrl+Re.Páx." msgid "switch to previous tab" msgstr "Ir á lapela anterior" msgid "Ctrl+PageDn" msgstr "Ctrl+Av.Páx." msgid "switch to next tab" msgstr "Ir á lapela seguinte" msgid "switch to selected page" msgstr "Ir á lapela seleccionada" msgid "show options window" msgstr "Amosar a xanela de opcións" msgid "show about window" msgstr "Amosar a xanela «Sobre»" msgid "toggle fullscreen mode" msgstr "Cambiar o modo de pantalla completa" msgid "PageUp/PageDn" msgstr "Re.Páx./Av.Páx." msgid "switch page in options and about tab" msgstr "Cambiar de páxina nas lapelas «Opcións» e «Sobre»" msgid "exit" msgstr "Saír" msgid "Space" msgstr "Espazo" msgid "select current date" msgstr "Seleccionar a data actual" msgid "Ctrl+Space" msgstr "Ctrl+Espazo" msgid "toggle personal data visibility" msgstr "Cambiar a visibilidade dos datos persoais" msgid "Arrows" msgstr "Frechas" msgid "change day" msgstr "Cambiar o día" msgid "Ctrl+Up/Down" msgstr "Ctrl+Arriba/Abaixo" msgid "scroll the contents in the day info panel" msgstr "Desprazar o contido do panel de información do día" msgid "change month" msgstr "Cambiar o mes" msgid "Home/End" msgstr "Inicio/Fin" msgid "change year" msgstr "Cambiar o ano" msgid "toggle calendars for the previous and next month" msgstr "Amosar/agochar os calendarios para os meses anterior e seguinte" msgid "day notes browser" msgstr "Examinador das notas do día" msgid "assign background color to day note" msgstr "Asignar a cor do fondo ás notas do día" msgid "date calculator" msgstr "Calculadora de datas" msgid "show full-year calendar" msgstr "Amosar o calendario do ano completo" msgid "jump to date" msgstr "Ir á data" msgid "Delete" msgstr "Eliminar" msgid "remove day note" msgstr "Retirar as notas do día" msgid "Alt+Arrows" msgstr "Alt+Frechas" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "Pechar o editor" msgid "toggle bold" msgstr "Activar/desactivar negriña" msgid "toggle italic" msgstr "Activar/desactivar itálica" msgid "toggle underline" msgstr "Activar/desactivar subliñado" msgid "toggle strikethrough" msgstr "Activar/desactivar tachado" msgid "toggle highlight" msgstr "Activar/desactivar resaltado" msgid "Arrows Up/Down" msgstr "Frechas arriba/abaixo" msgid "toggle alternative view" msgstr "Cambiar o tipo de vista" msgid "year info" msgstr "Información do ano" msgid "set current year" msgstr "Estabelecer o ano actual" msgid "close full-year calendar" msgstr "Pechar o calendario do ano completo" msgid "Alt+a, Insert" msgstr "Alt+A, Inserir" msgid "add task" msgstr "Engadir unha tarefa" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+E, Ctrl+Intro" msgid "edit task" msgstr "Editar a tarefa" msgid "Alt+r, Delete" msgstr "Alt+R, Supr." msgid "remove task" msgstr "Eliminar a/unha tarea" msgid "toggle hidden tasks" msgstr "Amosar/agochar as tarefas agochadas" msgid "activate search field" msgstr "Activar o campo de buscas" msgid "Left, Right" msgstr "Esquerda, dereita" msgid "change category filter" msgstr "Cambiar o filtro de categorías" msgid "close task info panel" msgstr "Pechar a información da tarefa" msgid "Insert" msgstr "Inserir" msgid "add contact" msgstr "Engadir un contacto" msgid "Ctrl+Enter" msgstr "Ctrl+Intro" msgid "edit contact" msgstr "Editar o contacto" msgid "remove contact" msgstr "Retirar o contacto" msgid "change search mode" msgstr "Cambiar o modo de busca" msgid "close contact details panel" msgstr "Pechar os detalles do contacto" msgid "Enter" msgstr "Intro" msgid "open note" msgstr "Abrir unha nota" msgid "add note" msgstr "Engadir unha nota" msgid "remove note" msgstr "Retirar unha nota" msgid "edit note name and category" msgstr "Editar o nome e a categoría da nota" msgid "close note editor" msgstr "Pechar o editor de notas" msgid "save note" msgstr "Gardar a nota" msgid "find text" msgstr "Buscar por texto" msgid "clear selection attributes" msgstr "Limpar os atributos da selección" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO foi deseñado para seren de uso moi doado, por iso existen multitude de " "atallos de teclado. Esta é a lista completa:" msgid "General" msgstr "Xeral" msgid "Calendar" msgstr "Calendario" msgid "Note editor" msgstr "Editor de notas" msgid "Full-year calendar" msgstr "Calendario de ano completo" msgid "Tasks" msgstr "Tarefas" msgid "Contacts" msgstr "Contactos" msgid "Notes" msgstr "Notas" msgid "Selector" msgstr "Seleccionar" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Un organizador persoal moi práctico" msgid "compiled on" msgstr "Compilado o" msgid "Programming" msgstr "Desenvolvemento" msgid "Graphics" msgstr "Gráficos" msgid "Contributors" msgstr "Colaboradores" msgid "Translators" msgstr "Tradutores" msgid "Mailing lists" msgstr "Roldas de correo" msgid "Bug tracker" msgstr "Sistema de seguimento de fallos" msgid "Feature requests" msgstr "Peticións de características" msgid "Available modules" msgstr "Módulos dispoñíbeis" msgid "Compiled-in features" msgstr "Características compiladas" msgid "iCalendar support" msgstr "Compatibilidade con iCalendar" msgid "Encrypted notes support" msgstr "Compatibilidade con notas cifradas" msgid "Backup support" msgstr "Compatibilidade con copia de seguranza" msgid "Printing support" msgstr "Compatibilidade con impresión" msgid "Spell checker support" msgstr "Compatibilidade con verificación ortográfica" msgid "version" msgstr "Versión" msgid "SVN revision" msgstr "Revisión SVN" msgid "Key shortcuts" msgstr "Atallos de teclado" msgid "License" msgstr "Licenza" msgid "Save backup" msgstr "Gardar copia de seguranza" msgid "Password protection" msgstr "Protección con contrasinal" msgid "Enter password" msgstr "Escriba un contrasinal" msgid "Re-enter password" msgstr "Escriba, outra vez, o contrasinal" msgid "Please enter the password" msgstr "Escriba o contrasinal" msgid "Passwords do not match!" msgstr "Os contrasinais non coinciden!" msgid "Cannot create backup!" msgstr "Non é posíbel crear a copia de seguranza!" msgid "Backup file saved successfully!" msgstr "A copia de seguranza foi gardada correctamente!" msgid "Open backup file" msgstr "Abrir o ficheiro da copia de seguranza" msgid "Osmo backup files (*.bck)" msgstr "Ficheiros de copia de seguranza de Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Isto non é un ficheiro de copia de seguranza de Osmo" msgid "Incorrect password!" msgstr "Contrasinal incorrecto!" msgid "All your data will be replaced with backup file content." msgstr "" "Todos os datos van seren substituídos cos do ficheiro da copia de seguranza." msgid "Are you sure?" msgstr "Está seguro?" msgid "Osmo has to be restarted now..." msgstr "Osmo debe ser reiniciado agora..." msgid "was born" msgstr "Nado o" msgid "year old" msgid_plural "years old" msgstr[0] "ano de idade" msgstr[1] "anos de idade" msgid "Current time" msgstr "Hora actual" msgid "Day number" msgstr "Número do día" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "día ata fin de ano" msgstr[1] "días ata fin de ano" msgid "the last day of the year" msgstr "Último día do ano" msgid "Today distance" msgstr "Días ata o día de hoxe" msgid "Week number" msgstr "Número da semana" msgid "Marked days" msgstr "Días marcados" msgid "Weekend days" msgstr "Días en fin de semana" msgid "Moon phase" msgstr "Fase luar" msgid "Zodiac sign" msgstr "Signo do zodíaco" msgid "Day notes" msgstr "Notas do día" msgid "Day tasks" msgstr "Tarefas do día" msgid "Birthday" msgstr "Aniversario" msgid "Day category" msgstr "Categoría de días" msgid "Selected day note will be removed." msgstr "A nota do día seleccionado será eliminada." msgid "Continue?" msgstr "Continuar?" msgid "Previous year" msgstr "Ano anterior" msgid "Previous month" msgstr "Mes anterior" msgid "Previous day" msgstr "Día anterior" msgid "Today" msgstr "Hoxe" msgid "Next day" msgstr "Día seguinte" msgid "Next month" msgstr "Mes seguinte" msgid "Next year" msgstr "Ano seguinte" msgid "Jump to date" msgstr "Ir á data" msgid "Print calendar" msgstr "Imprimir calendario" msgid "Date calculator" msgstr "Calculadora de datas" msgid "Backup data" msgstr "" msgid "Restore data" msgstr "" msgid "Preferences" msgstr "Preferencias" msgid "Quit" msgstr "Saír" msgid "Toggle day note panel" msgstr "Amosar/agochar notas do día" msgid "Add task" msgstr "Engadir unha tarefa" msgid "Select day color" msgstr "Seleccionar a cor do día" msgid "Browse notes" msgstr "Examinar notas" msgid "Browse iCal events" msgstr "Examinar actividades de iCalendar" msgid "Export to iCal file" msgstr "Exportar a ficheiro iCal" msgid "Previous and next month" msgstr "Mes anterior e seguinte" msgid "Close note panel" msgstr "Pechar o panel de notas" msgid "Highlight" msgstr "Resaltado" msgid "Strikethrough" msgstr "Tachado" msgid "Underline" msgstr "Subliñado" msgid "Italic" msgstr "Cursiva" msgid "Bold" msgstr "Negriña" msgid "Insert timeline" msgstr "Inserir liña de tempo" msgid "Clear text" msgstr "Limpar texto" msgid "Info" msgstr "Información" msgid "Select color" msgstr "Seleccionar cor" msgid "None" msgstr "Ningún" msgid "Cancel" msgstr "Cancelar" msgid "OK" msgstr "Aceptar" msgid "year" msgid_plural "years" msgstr[0] "ano" msgstr[1] "anos" msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "meses" msgid "day" msgid_plural "days" msgstr[0] "día" msgstr[1] "días" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" msgid "or" msgstr "ou" msgid "rounded down" msgstr "redondeado cara abaixo" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "working day" msgid_plural "working days" msgstr[0] "día laborábel" msgstr[1] "días laborábeis" msgid "time is ignored" msgstr "ignorase a hora" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "día en fin de semana" msgstr[1] "días en fin de semana" msgid "This calculator only supports dates after year 1." msgstr "Esta calculadora só admite datas posteriores ao ano 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "día de fin de semana ignorado" msgstr[1] "días de fin de semana ignorados" msgid "Year" msgstr "Ano" msgid "Month" msgstr "Mes" msgid "Day" msgstr "Día" msgid "Current date" msgstr "Data actual" msgid "Set current date" msgstr "Estabelecer a data actual" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minuto" msgid "Second" msgstr "Segundo" msgid "Set current time" msgstr "Estabelecer a hora actual" msgid "Reset time" msgstr "Restabelecer a hora" msgid "First date and time" msgstr "Data e hora de inicio" msgid "Second date and time" msgstr "Data e hora de fin" msgid "Alternative time units" msgstr "Unidades alternativas de tempo" msgid "Result" msgstr "Resultado" msgid "Duration between two dates" msgstr "Tempo entre dúas datas" msgid "Operation" msgstr "Operación" msgid "add" msgstr "sumar" msgid "subtract" msgstr "restar" msgid "Date and time to add or subtract from" msgstr "Data e hora da que sumar ou restar" msgid "Years" msgstr "Anos" msgid "Months" msgstr "Meses" msgid "Days" msgstr "Días" msgid "Weeks" msgstr "Semanas" msgid "Hours" msgstr "Horas" msgid "Minutes" msgstr "Minutos" msgid "Seconds" msgstr "Segundos" msgid "Ignore weekend days" msgstr "Ignorar días en fin de semana" msgid "Reset fields" msgstr "Restabelecer os campos" msgid "Time to add or subtract" msgstr "Hora que sumar ou restar" msgid "Jump to" msgstr "Ir a" msgid "Add to or subtract from a date" msgstr "Sumar ou restar dunha data" msgid "Leap year" msgstr "Ano bisesto" msgid "Yes" msgstr "Si" msgid "No" msgstr "Non" msgid "Chinese year animal" msgstr "Animal do calendario chino" msgid "Number of days" msgstr "Número de días" msgid "Number of weeks" msgstr "Número de semanas" msgid "Number of weekend days" msgstr "Días en fin de semana" msgid "Year info" msgstr "Información do ano" msgid "Current year" msgstr "Ano actual" msgid "Alternative view" msgstr "Vista alternativa" msgid "event" msgid_plural "events" msgstr[0] "actividade" msgstr[1] "actividades" msgid "No valid calendars defined" msgstr "Non se definiron calendarios válidos" msgid "iCalendar events" msgstr "actividades de iCalendar" msgid "Date" msgstr "Data" msgid "Time" msgstr "Hora" msgid "Summary" msgstr "Resumo" msgid "Select output file" msgstr "Seleccione o ficheiro de saída" msgid "The list will be cleared and all entries will be lost." msgstr "Vaise a baleirar a lista, perderanse todas as entradas." msgid "Done!" msgstr "Feito!" msgid "event exported" msgid_plural "events exported" msgstr[0] "actividade exportada" msgstr[1] "actividades exportadas" msgid "iCalendar export" msgstr "Exportación de iCalendar" msgid "Day Selector" msgstr "Seleccionar día" msgid "Use date period" msgstr "Usar un período de datas" msgid "Add" msgstr "Engadir" msgid "Clear" msgstr "Limpar" msgid "Remove" msgstr "Retirar" msgid "Output filename" msgstr "Nome do ficheiro de saída" msgid "Browse" msgstr "Examinar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sen entradas" msgid "entry" msgid_plural "entries" msgstr[0] "entrada" msgstr[1] "entradas" msgid "Calendar notes" msgstr "Notas do calendario" msgid "Search" msgstr "Buscar" msgid "Filter" msgstr "Filtro" msgid "Current month" msgstr "Mes actual" msgid "Selected month" msgstr "Mes seleccionado" msgid "Selected year" msgstr "Ano seleccionado" msgid "Selected month and year" msgstr "Mes e ano seleccionado" msgid "All notes" msgstr "Todos as notas" msgid "Case sensitive" msgstr "Sensíbel a maiúsculas/minúsculas" msgid "Strikethrough past day notes" msgstr "Tachar notas de días pasados" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "Sintaxe" msgid "abbreviated weekday name" msgstr "nome abreviado do día da semana" msgid "full weekday name" msgstr "nome do día da semana" msgid "abbreviated month name" msgstr "nome abreviado do mes" msgid "full month name" msgstr "nome do mes" msgid "day of the month" msgstr "día do mes" msgid "MM/DD/YY" msgstr "MM/DD/AA" msgid "day of the month without leading zeros" msgstr "día do mes sen ceros á esquerda" msgid "year without century" msgstr "ano sen século" msgid "year with century" msgstr "ano con século" msgid "Date header format" msgstr "Formato da cabeceira de data" msgid "Set default format" msgstr "Estabelecer o formato predeterminado" msgid "Date format syntax" msgstr "Sintaxe do formato da data" msgid "Day note marker" msgstr "Marca para nota do día" msgid "Event marker" msgstr "Marca de actividades" msgid "Circle" msgstr "Círculo" msgid "Ellipse" msgstr "Elipse" msgid "Wave" msgstr "Onda" msgid "Current day marker" msgstr "Marca de data actual" msgid "Arrow" msgstr "Frecha" msgid "Free-hand circle" msgstr "Círculo a man alzada" msgid "Colors" msgstr "Cores" msgid "Header color" msgstr "Cor da cabeceira" msgid "Weekend days color" msgstr "Cor dos días de fin de semana" msgid "Cursor color" msgstr "Cor do cursor" msgid "Event marker color" msgstr "Cor da marca de actividades" msgid "Current day marker color" msgstr "Cor da marca de data actual" msgid "Birthday marker color" msgstr "Cor da marca de aniversario" msgid "Date font" msgstr "Tipo de letra da data" msgid "Calendar font" msgstr "Tipo de letra do calendario" msgid "Note font" msgstr "Tipo de letra das notas" msgid "Enable block cursor" msgstr "Activar o cursor de bloque" msgid "Cursor thickness" msgstr "Groso do cursor" msgid "Thin" msgstr "Delgado" msgid "Thick" msgstr "Groso" msgid "Edit category" msgstr "Editar a categoría" msgid "Color" msgstr "Cor" msgid "Name" msgstr "Nome" msgid "Select ICS file" msgstr "Seleccionar ficheiro ICS" msgid "All Files" msgstr "Todos os ficheiros" msgid "Calendar files (*.ics)" msgstr "Ficheiros de calendario (*.ics)" msgid "Modify ICAL parameters" msgstr "Modificar parámetros de ICAL" msgid "Filename" msgstr "Nome de ficheiro" msgid "Options" msgstr "Opcións" msgid "Disabled" msgstr "Desactivado" msgid "Valid" msgstr "Válido" msgid "Description" msgstr "Descrición" msgid "Full date" msgstr "Data completa" msgid "Mark" msgstr "Marca" msgid "Week start on Monday" msgstr "A semana comeza o luns" msgid "Show day names" msgstr "Amosar o nome do día" msgid "No month change" msgstr "Non cambiar de mes" msgid "Show week numbers" msgstr "Amosar o número de semana" msgid "Simple view in full-year calendar" msgstr "Vista simple do calendario anual" msgid "Enable auxilary calendars" msgstr "Amosar calendarios auxiliares" msgid "Ascending sorting in day notes browser" msgstr "Ordenación ascendente en notas do día" msgid "Enable spell checker in day notes" msgstr "Activar o corrector ortográfico nas notas do día" msgid "Show seconds" msgstr "Amosar os segundos" msgid "Appearance" msgstr "Aparencia" msgid "Day categories" msgstr "Categorías de días" msgid "iCalendar files" msgstr "Ficheiros de iCalendar" msgid "Show in day info panel" msgstr "Amosar no calendario" msgid "Name day" msgstr "Día do santo" msgid "Error printing" msgstr "Produciuse un erro de impresión" msgid "Printing properties" msgstr "Propiedades da impresión" msgid "Month name" msgstr "Nome do mes" msgid "Day name" msgstr "Nome do día" msgid "Events" msgstr "Actividades" msgid "Fonts" msgstr "Tipos de letra" msgid "Birthdays" msgstr "Aniversarios" msgid "Namedays" msgstr "Santoral" msgid "Visible events" msgstr "Actividades visíbeis" msgid "Padding" msgstr "Espazado" msgid "Event maximum length" msgstr "Lonxitude máxima das actividades" msgid "Page orientation:" msgstr "Orientación da páxina:" msgid "Portrait" msgstr "Vertical" msgid "Landscape" msgstr "Horizontal" msgid "Timeline" msgstr "Liña de tempo" msgid "From (hour)" msgstr "Desde (hora)" msgid "Step (minutes)" msgstr "Salto (minutos)" msgid "To (hour)" msgstr "Ata (hora)" msgid "No date" msgstr "Sen data" msgid "Rat" msgstr "Rata" msgid "Ox" msgstr "Boi" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lebre" msgid "Dragon" msgstr "Dragón" msgid "Snake" msgstr "Serpe" msgid "Horse" msgstr "Cabalo" msgid "Sheep" msgstr "Ovella" msgid "Monkey" msgstr "Mono" msgid "Fowl" msgstr "Galo" msgid "Dog" msgstr "Can" msgid "Pig" msgstr "Porco" msgid "Unknown" msgstr "Descoñecido" msgid "Aquarius" msgstr "Acuario" msgid "Pisces" msgstr "Peixes" msgid "Aries" msgstr "Aries" msgid "Taurus" msgstr "Tauro" msgid "Gemini" msgstr "Xemelgos" msgid "Cancer" msgstr "Cancro" msgid "Leo" msgstr "Leo" msgid "Virgo" msgstr "Virgo" msgid "Libra" msgstr "Libra" msgid "Scorpio" msgstr "Escorpion" msgid "Sagittarius" msgstr "Saxitario" msgid "Capricorn" msgstr "Capricornio" msgid "Cannot perform selected operation." msgstr "Non é posíbel realizar a operación seleccionada." msgid "Task has been modified or removed." msgstr "A tarefa foi modificada ou retirada." msgid "Remind me later" msgstr "Lembrarmo máis adiante" msgid "Done" msgstr "Feito" msgid "postponed" msgstr "Posposto" msgid "Show task" msgstr "Amosar a tarefa" msgid "Alarm warning!" msgstr "Alarma de aviso!" msgid "Day note" msgstr "Nota do día" msgid "Type" msgstr "Tipo" msgid "Event" msgstr "Actividade" msgid "Task" msgstr "Tarefa" msgid "Show Osmo" msgstr "Amosar Osmo" msgid "No birthdays defined" msgstr "Non se definiron aniversarios" msgid "Birthdays list" msgstr "Lista de aniversarios" msgid "Days to birthday" msgstr "Días ata o aniversario" msgid "Age" msgstr "Idade" msgid "Birthday date" msgstr "Data de nacemento" msgid "today" msgstr "hoxe" msgid "Please select address" msgstr "Escolla o enderezo." msgid "Information" msgstr "Información" msgid "Work" msgstr "Traballo" msgid "Home" msgstr "Particular" msgid "Group" msgstr "Grupo" msgid "First name" msgstr "Nome" msgid "Last name" msgstr "Apelidos" msgid "Second name" msgstr "Segundo nome" msgid "Nickname" msgstr "Alcume" msgid "Tags" msgstr "Etiquetas" msgid "Name day date" msgstr "Data do día do santo" msgid "Home address" msgstr "Enderezo particular" msgid "Home postcode" msgstr "Código postal particular" msgid "Home city" msgstr "Cidade de residencia" msgid "Home state" msgstr "Estado de residencia" msgid "Home country" msgstr "País de residencia" msgid "Organization" msgstr "Organización" msgid "Department" msgstr "Departamento" msgid "Work address" msgstr "Enderezo do traballo" msgid "Work postcode" msgstr "Código postal do traballo" msgid "Work city" msgstr "Cidade do traballo" msgid "Work state" msgstr "Estado do traballo" msgid "Work country" msgstr "País do traballo" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Teléfono particular" msgid "Home phone 2" msgstr "Teléfono particular 2" msgid "Home phone 3" msgstr "Teléfono particular 3" msgid "Home phone 4" msgstr "Teléfono particular 4" msgid "Work phone" msgstr "Teléfono do traballo" msgid "Work phone 2" msgstr "Teléfono do traballo 2" msgid "Work phone 3" msgstr "Teléfono do traballo 3" msgid "Work phone 4" msgstr "Teléfono do traballo 4" msgid "Cell phone" msgstr "Teléfono móbil" msgid "Cell phone 2" msgstr "Teléfono móbil 2" msgid "Cell phone 3" msgstr "Teléfono móbil 3" msgid "Cell phone 4" msgstr "Teléfono móbil 4" msgid "E-Mail" msgstr "Correo-e" msgid "E-Mail 2" msgstr "Correo-e 2" msgid "E-Mail 3" msgstr "Correo-e 3" msgid "E-Mail 4" msgstr "Correo-e 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "MI Gadu-Gadu" msgid "IM Yahoo" msgstr "MI Yahoo" msgid "IM MSN" msgstr "MI MSN" msgid "IM ICQ" msgstr "MI ICQ" msgid "IM AOL" msgstr "MI AOL" msgid "IM Jabber" msgstr "MI Jabber" msgid "IM Skype" msgstr "MI Skype" msgid "IM Tlen" msgstr "MI Tlen" msgid "Blog" msgstr "Blogue" msgid "Photo" msgstr "Fotografía" msgid "Additional info" msgstr "Información adicional" msgid "New contact" msgstr "Novo contacto" msgid "Remove contact" msgstr "Retirar o contacto" msgid "Edit contact" msgstr "Editar o contacto" msgid "Show birthdays" msgstr "Amosar aniversarios" msgid "Show contact location on the map" msgstr "Amosar a localización dos contactos no mapa" msgid "Import contacts" msgstr "Importar contactos" msgid "Export contacts" msgstr "Exportar contactos" msgid "First Name" msgstr "Nome" msgid "Last Name" msgstr "Apelidos" msgid "All fields" msgstr "Todos os campos" msgid "Contact details" msgstr "Detalles do contacto" msgid "Close contact panel" msgstr "Pechar os detalles do contacto" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contacto exportado" msgstr[1] "contactos exportados" msgid "Cannot create file." msgstr "Non foi posíbel crear o ficheiro." msgid "Output format" msgstr "Formato de saída" msgid "Add header" msgstr "Engadir cabeceira" msgid "Fields to export" msgstr "Campos a exportar" msgid "All" msgstr "Todo" msgid "Invert" msgstr "Inverter" msgid "Select fields" msgstr "Seleccione campos" msgid "Select CSV file" msgstr "Seleccione ficheiro CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Archivos CSV (valores separados por comas) (*.csv)" msgid "Please select file first." msgstr "Seleccione antes o ficheiro." msgid "Import type" msgstr "Tipo de importación" msgid "File" msgstr "Ficheiro" msgid "Input filename" msgstr "Nome do ficheiro de entrada" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Nada para importar." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contacto engadido" msgstr[1] "contactos engadidos" msgid "of" msgstr "de" msgid "Record" msgstr "Rexistro" msgid "Number fields per record" msgstr "Numero de campos por rexistro" msgid "Use first record as header" msgstr "Usar o primeiro rexistro como cabeceira" msgid "Field type" msgstr "Tipo de campo" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Non se atopou ningún rexistro no ficheiro seleccionado." msgid "Cannot read file." msgstr "Non é posíbel ler o ficheiro." msgid "Cannot open file." msgstr "Non é posíbel abrir o ficheiro." msgid "Selected contact will be removed." msgstr "O contacto seleccionado vai seren retirado." msgid "Select photo" msgstr "Seleccione unha foto" msgid "Address" msgstr "Enderezo" msgid "Postcode" msgstr "Código postal" msgid "City" msgstr "Cidade" msgid "State" msgstr "Estado" msgid "Country" msgstr "País" msgid "Add contact" msgstr "Novo contacto" msgid "Personal" msgstr "Persoal" msgid "Phones" msgstr "Teléfonos" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Cor das etiquetas dos contactos" msgid "Color of links" msgstr "Cor das ligazóns" msgid "Font size" msgstr "Tamaño da letra" msgid "Name font size" msgstr "Tamaño da letra dos nomes" msgid "Item font size" msgstr "Tamaño da letra dos elementos" msgid "Photo size" msgstr "Tamaño da foto" msgid "Small" msgstr "Pequena" msgid "Medium" msgstr "Mediana" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Agochar a columna de grupos" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Varios" msgid "Groups" msgstr "Grupos" msgid "Visible columns in birthday browser" msgstr "Columnas visíbeis na lista de aniversarios" msgid "Show calendar" msgstr "Amosar o calendario" msgid "Show tasks" msgstr "Amosar as tarefas" msgid "Show contacts" msgstr "Amosar os contactos" msgid "Show notes" msgstr "Amosar as notas" msgid "Show options" msgstr "Amosar as opcións" msgid "Show small calendar window" msgstr "Amosar unha xanela pequena co calendario" msgid "Check for events since last run" msgstr "Comprobar as actividades desde a última execución" msgid "Number of days to check forward for events (default: 0)" msgstr "" "Número de días para comprobar actividades cara adiante (o predeterminado é: " "0)" msgid "Set absolute path for settings and data files" msgstr "Estabeleza a ruta absoluta para os ficheiros de datos e configuración" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "práctico organizador persoal" msgid "ERROR: Cannot create config files" msgstr "ERRO: Non foi posíbel crear o ficheiro de configuración." msgid "Another copy of OSMO is already running." msgstr "Xa está a executarse outra instancia de OSMO." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Usar simultaneamente dúas ou máis instancias de OSMO pode provocar a perda " "de datos." msgid "Do you really want to continue?" msgstr "Quere continuar?" msgid "Warning" msgstr "Aviso" msgid "The note has changed." msgstr "A nota cambiou." msgid "Do you want to save it?" msgstr "Quere gardala?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Non se atopou ningún rexistro no ficheiro seleccionado." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Quere continuar?" msgid "Question" msgstr "Pregunta" msgid "Words" msgstr "Palabras" msgid "Lines" msgstr "Liñas" msgid "Characters" msgstr "Caracteres" msgid "White characters" msgstr "Espazos" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Documento" msgid "Selection" msgstr "Selección" msgid "Created" msgstr "Creado" msgid "Modified" msgstr "Modificado" msgid "New note" msgstr "Nova nota" msgid "Add note" msgstr "Engadir nota" msgid "Edit note" msgstr "Editar nota" msgid "Delete note" msgstr "Eliminar nota" msgid "Remove note" msgstr "Retirar nota" msgid "Find" msgstr "Buscar" msgid "Clear attributes" msgstr "Limpar formato" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Gardar nota" msgid "Insert current date and time" msgstr "Inserir a data e a hora actual" msgid "Insert separator" msgstr "Inserir separador" msgid "Statistics" msgstr "Estatísticas" msgid "Close editor" msgstr "Pechar o editor" msgid "Toggle spell checker" msgstr "Activar o corrector ortográfico" msgid "Category" msgstr "Categoría" msgid "Note name" msgstr "Nome da nota" msgid "Last changes" msgstr "Último cambio" msgid "Read-only" msgstr "Só lectura" msgid "Line" msgstr "Liña" msgid "Column" msgstr "Columna" msgid "case sensitive" msgstr "Coincidencia de maiúsculas / minúsculas" msgid "Close find entry" msgstr "Pechar a barra de buscas" msgid "Edit entry" msgstr "Editar a entrada" msgid "Remember cursor position" msgstr "Lembrar a posición do cursor" msgid "Selected note will be removed." msgstr "A nota seleccionada vai seren retirada." msgid "No further data recovery will be possible." msgstr "Despois non se poderá recuperar os datos." msgid "Plain" msgstr "Sinxelo" msgid "Encrypted" msgstr "Cifrado" msgid "Note type" msgstr "Tipo de nota" msgid "Cannot open the note." msgstr "Non é posíbel abrir a nota." msgid "encryption support is disabled" msgstr "A compatibilidade para notas cifradas está desactivada" msgid "Authorization" msgstr "Autorización" msgid "Algorithm" msgstr "Algoritmo" msgid "Hashing" msgstr "Resumo" msgid "Compression" msgstr "Compresión" msgid "Ratio" msgstr "Relación" msgid "Fast" msgstr "Rápido" msgid "Good" msgstr "Bo" msgid "Best" msgstr "Mellor" msgid "Remember the last selected category" msgstr "Lembrar a última categoría seleccionada" msgid "Use system format for date and time" msgstr "Usar formato de data e hora do sistema" msgid "Encryption" msgstr "Cifrado" msgid "Visible columns" msgstr "Columnas visíbeis" msgid "Categories" msgstr "Categorías" msgid "Notes options" msgstr "Opcións das notas" msgid "Osmo has to be restarted to take effect." msgstr "Osmo debe ser reiniciado para que tena efecto." msgid "Layout" msgstr "Deseño" msgid "Vertical" msgstr "Vertical" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Posición das lapelas" msgid "Left" msgstr "Esquerda" msgid "Right" msgstr "Dereita" msgid "Top" msgstr "Arriba" msgid "Bottom" msgstr "Abaixo" msgid "Use default stock icons" msgstr "Empregar as iconas predeterminadas" msgid "Disable underline in links" msgstr "Desactivar o subliñado nas ligazóns" msgid "Draw rows in alternating colors" msgstr "Debuxar filas en cores alternativos" msgid "Show exit button in toolbar" msgstr "Amosar o botón de saída na barra de ferramentas" msgid "At least one module must be visible." msgstr "Polo menos un módulo debe ser visíbel." msgid "Override locale settings" msgstr "Ignorar a configuración do sistema" msgid "Date format" msgstr "Formato da data" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Formato da hora" msgid "hours" msgstr "horas" msgid "Spell checker language" msgstr "Idioma do corrector ortográfico" msgid "Enable tooltips" msgstr "Amosar consellos" msgid "Remember last selected page" msgstr "Lembrar a última páxina seleccionada" msgid "Save data after every modification" msgstr "Gardar os datos despois de cada modificación" msgid "Web browser" msgstr "Navegador" msgid "E-mail client" msgstr "Cliente de correo-e" msgid "Sound player" msgstr "Reprodutor de son" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "O patrón %s vai seren substituído polo enderezo web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "O patrón %s vai seren substituído polo correo-e" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "O patrón %s vai seren substituído polo nome do ficheiro de son" msgid "Enable system tray" msgstr "Amosar a icona na área de notificación" msgid "Start minimised" msgstr "Iniciar minimizado" msgid "Blink on events" msgstr "Escintilar en actividades" msgid "Ignore day note events" msgstr "Ignorar eventos de nota del día" msgid "Hide" msgstr "Agochar" msgid "Helpers" msgstr "Axudantes" msgid "System tray" msgstr "Ãrea de notificación" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "Ir cara abaixo" msgid "Select date" msgstr "Seleccionar a data" msgid "Select font" msgstr "Seleccionar o tipo de letra" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar a nota do día" msgid "Save" msgstr "Gardar" msgid "Display full-year calendar" msgstr "Amosar o calendario de todo o ano" msgid "Help" msgstr "Axuda" msgid "Invalid item" msgstr "Elemento incorrecto" msgid "Valid item" msgstr "Elemento correcto" msgid "Edit task" msgstr "Editar tarefa" msgid "Remove task" msgstr "Retirar tarefa" msgid "Import tasks" msgstr "Importar tarefas" msgid "Export tasks" msgstr "Exportar tarefas" msgid "Change to previous date" msgstr "Cambiar ao día anterior" msgid "Change to next date" msgstr "Cambiar ao día seguinte" msgid "Print" msgstr "Imprimir" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Repetitiva" msgid "Started" msgstr "Iniciado" msgid "Finished" msgstr "Terminado" msgid "All items" msgstr "Todos os elementos" msgid "New task" msgstr "Nova tarefa" msgid "Change due date to previous date" msgstr "Cambiar a data de caducidade ao día anterior" msgid "Change due date to next date" msgstr "Cambiar a data de caducidade ao día seguinte" msgid "Print visible tasks list" msgstr "Imprimir a lista de tarefas visíbeis" msgid "Due date" msgstr "Data de caducidade" msgid "Priority" msgstr "Prioridade" msgid "Task details" msgstr "Detalles da tarefa" msgid "Close description panel" msgstr "Pechar o panel de descrición" msgid "No tasks with defined date found." msgstr "Non hai tarefas con data definida." msgid "Save tasks" msgstr "Gardar as tarefas" msgid "tasks exported" msgstr "tarefas exportadas" msgid "Please select at least one day when recurrency is enabled." msgstr "Seleccione polo menos un día se a tarefa é repetitiva." msgid "Set time" msgstr "Estabelecer a hora" msgid "Tomorrow" msgstr "Mañá" msgid "Selected task will be removed." msgstr "As tarefas seleccionadas van seren retiradas." msgid "Basic" msgstr "Básico" msgid "Select date and time" msgstr "Seleccione data e hora" msgid "Low" msgstr "Baixa" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "Activar a notificación sonora" #, fuzzy msgid "Enable notification dialog" msgstr "Activar a notificación sonora" msgid "Advanced" msgstr "Avanzado" msgid "Alarm warning" msgstr "Alarma de aviso" msgid "Postpone time" msgstr "Atraso de aviso posposto" msgid "Alarm command" msgstr "Orde da alarma" msgid "Recurrent task" msgstr "Tarefa repetitiva" msgid "Enable" msgstr "Activar" msgid "Start" msgstr "Inicio" msgid "End" msgstr "Fin" msgid "Interval" msgstr "Intervalo" msgid "Time period" msgstr "Período de tempo" msgid "Date period" msgstr "Período de datas" msgid "Repeat" msgstr "Repetir" msgid "Repeat in the following days" msgstr "Repetir nos días seguintes" msgid "Ignore alarm when task expired offline" msgstr "Ignorar as alarmas cando a tarefa caduca sen conexión" msgid "Select a font..." msgstr "Seleccione un tipo de letra..." msgid "Color of items that are due today" msgstr "Cor dos elementos que caducan hoxe" msgid "Color of items that are due in the next 7 days" msgstr "Cor dos elementos que caducan nos próximos 7 días" msgid "Color of items that are past due" msgstr "Cor dos elementos que xa caducaron" msgid "Task info font" msgstr "Tipo de letra para os detalles" msgid "Show in bold tasks with high priority" msgstr "Amosar en negriña as tarefas con prioridade alta" msgid "Hide completed tasks" msgstr "Agochar as tarefas completadas" msgid "Delete completed tasks without confirmation" msgstr "Eliminar as tarefas completadas sen confirmación" msgid "Add new task when double clicked on tasks list" msgstr "Engadir unha nova tarefa ao premer dúas veces na lista de tarefas" msgid "minutes" msgstr "minutos" msgid "0 for disable" msgstr "0 para desactivar" msgid "Repeat sound alarm" msgstr "Repetir a alarma sonora" msgid "times" msgstr "veces" msgid "Global notification command" msgstr "Orde global de notificación" msgid "Tasks options" msgstr "Opcións das tarefas" msgid "Reminder options" msgstr "Opcións de lembranzas" msgid "Tasks list" msgstr "Lista de tarefas" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Núm." msgid "New Moon" msgstr "Lúa nova" msgid "Waxing Crescent Moon" msgstr "Crecente" msgid "Quarter Moon" msgstr "Cuarto crecente" msgid "Waxing Gibbous Moon" msgstr "Crecente" msgid "Full Moon" msgstr "Lúa chea" msgid "Waning Gibbous Moon" msgstr "Minguante" msgid "Last Quarter Moon" msgstr "Cuarto minguante" msgid "Waning Crescent Moon" msgstr "Minguante" msgid "Error" msgstr "Produciuse un erro" msgid "Selected file exist! Overwrite?" msgstr "O ficheiro seleccionado xa existe. Quere sobrescribilo?" #~ msgid "Select and show first item after search" #~ msgstr "Seleccionar e amosar o primeiro elemento despois da busca" #~ msgid "Order" #~ msgstr "Orden" #~ msgid "Mode" #~ msgstr "Modo" #~ msgid "Ascending" #~ msgstr "Ascendente" #~ msgid "Descending" #~ msgstr "Descendente" #~ msgid "Sorting" #~ msgstr "Ordenación" #~ msgid "Contact map location" #~ msgstr "Localización do contacto no mapa" osmo-0.2.14/po/ur_PK.po000664 001750 001750 00000126427 12561325524 014544 0ustar00pasppasp000000 000000 # Urdu translation of Osmo # This file is distributed under the same license as the Osmo package. # Muhammad Ali Makki , 2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-04-07 00:59+0500\n" "Last-Translator: Muhammad Ali Makki \n" "Language-Team: urducoder.com \n" "Language: ur_PK\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" msgid "About" msgstr "بابت" msgid "Close" msgstr "بند کریں" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "Ø³Ø§Ø¨Ù‚Û Ù¹ÛŒØ¨ پر منتقل ÛÙˆÚº" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "اگلے ٹیب پر منتقل ÛÙˆÚº" msgid "switch to selected page" msgstr "منتخب Ú©Ø±Ø¯Û ØµÙØ­Û پر منتقل ÛÙˆÚº" msgid "show options window" msgstr "اختیارات کا Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "show about window" msgstr "بابت کا Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "اختیارات اور بابت ٹیب میں ØµÙØ­Û Ú©Ùˆ بدلیں" msgid "exit" msgstr "برخاست" msgid "Space" msgstr "خلاء" msgid "select current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® منتخب کریں" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "ذاتی ڈیٹا روئیت معکوس کریں" msgid "Arrows" msgstr "تیر" msgid "change day" msgstr "دن تبدیل کریں" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "دن Ú©Û’ معلوماتی پینل Ú©Û’ مواد Ú©Ùˆ سکرول کریں" msgid "change month" msgstr "Ù…Ø§Û ØªØ¨Ø¯ÛŒÙ„ کریں" msgid "Home/End" msgstr "گھر/آخر" msgid "change year" msgstr "سال تبدیل کریں" msgid "toggle calendars for the previous and next month" msgstr "Ú¯Ø²Ø´ØªÛ Ø§ÙˆØ± Ø¢Ø¦Ù†Ø¯Û Ù…Ø§Û Ú©ÛŒ تقویم Ú©Ùˆ Ø¸Ø§ÛØ± یا غائب کریں" msgid "day notes browser" msgstr "دن نوٹس براؤزر" msgid "assign background color to day note" msgstr "دن نوٹ Ú©Ùˆ پس منظر رنگ دیں" msgid "date calculator" msgstr "تاریخ شمار کنندÛ" msgid "show full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم دکھائیں" msgid "jump to date" msgstr "تاریخ پر جائیں" msgid "Delete" msgstr "حذÙ" msgid "remove day note" msgstr "دن کا نوٹ حذ٠کریں" msgid "Alt+Arrows" msgstr "Alt+Arrows" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "مدون بند کریں" msgid "toggle bold" msgstr "چوڑائی معکوس کریں" msgid "toggle italic" msgstr "ٹیڑھا معکوس کریں" msgid "toggle underline" msgstr "خط Ú©Ø´ÛŒØ¯Û Ù…Ø¹Ú©ÙˆØ³ کریں" msgid "toggle strikethrough" msgstr "خط مقطوع منعکس کریں" msgid "toggle highlight" msgstr "نشان زدگی معکوس کریں" msgid "Arrows Up/Down" msgstr "تیر اوپر/نیچے" msgid "toggle alternative view" msgstr "متبادل منظر معکوس کریں" msgid "year info" msgstr "سال Ú©ÛŒ معلومات" msgid "set current year" msgstr "Ø­Ø§Ù„ÛŒÛ Ø³Ø§Ù„ مرتب کریں" msgid "close full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم بند کریں" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "Ù…ÛÙ… شامل کریں" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "Ù…ÛÙ… مدون کریں" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "Ù…ÛÙ… حذ٠کریں" msgid "toggle hidden tasks" msgstr "Ù¾ÙˆØ´ÛŒØ¯Û Ù…Ûمیں معکوس کریں" msgid "activate search field" msgstr "تلاش Ú©Û’ حلقے ÙØ¹Ø§Ù„ کریں" msgid "Left, Right" msgstr "بائیں، دائیں" msgid "change category filter" msgstr "Ø²Ù…Ø±Û Ùلٹر تبدیل کریں" msgid "close task info panel" msgstr "Ù…ÛÙ… کا معلوماتی پینل بند کریں" msgid "Insert" msgstr "داخل کریں" msgid "add contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کریں" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "Ø±Ø§Ø¨Ø·Û Ù…Ø¯ÙˆÙ† کریں" msgid "remove contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±ÛŒÚº" msgid "change search mode" msgstr "تلاش کا انداز تبدیل کریں" msgid "close contact details panel" msgstr "رابطے Ú©ÛŒ ØªÙØµÛŒÙ„ات کا پینل بند کریں" msgid "Enter" msgstr "انٹر" msgid "open note" msgstr "نوٹ کھولیں" msgid "add note" msgstr "نوٹ شامل کریں" msgid "remove note" msgstr "نوٹ حذ٠کریں" msgid "edit note name and category" msgstr "نوٹ کا نام اور Ø²Ù…Ø±Û Ù…Ø¯ÙˆÙ† کریں" msgid "close note editor" msgstr "نوٹ مدون بند کریں" msgid "save note" msgstr "نوٹ محÙوظ کریں" msgid "find text" msgstr "متن تلاش کریں" msgid "clear selection attributes" msgstr "انتخاب Ú©Û’ خواص صا٠کریں" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "اوسمو صار٠کی سÛولت Ú©Ùˆ مد٠نظر رکھ کر تیار کیا گیا ÛÛ’ØŒ Ú†Ù†Ø§Ù†Ú†Û Ø§Ø³ Ú©Û’ Ø¨ÛØª سارے " "کلیدی اختصارات (شارٹ Ú©Ù¹) Ûیں. ذیل میں ان اختصارات Ú©ÛŒ پوری ÙÛØ±Ø³Øª ÛÛ’:" msgid "General" msgstr "عام" msgid "Calendar" msgstr "تقویم" msgid "Note editor" msgstr "نوٹ مدون" msgid "Full-year calendar" msgstr "پورے سال Ú©ÛŒ تقویم" msgid "Tasks" msgstr "Ù…ÛÙ…" msgid "Contacts" msgstr "رابطے" msgid "Notes" msgstr "نوٹس" msgid "Selector" msgstr "منتخب کار" msgid "Editor" msgstr "مدون" msgid "A handy personal organizer" msgstr "آسان ذاتی منظم" msgid "compiled on" msgstr "تالی٠کیا گیا" msgid "Programming" msgstr "پروگرامنگ" msgid "Graphics" msgstr "ترسیمیات" msgid "Contributors" msgstr "معاونین" msgid "Translators" msgstr "مترجمین" msgid "Mailing lists" msgstr "میلنگ لسٹ" msgid "Bug tracker" msgstr "بگ ٹریکر" msgid "Feature requests" msgstr "خوبیوں Ú©ÛŒ درخواستیں" msgid "Available modules" msgstr "دستیاب ماڈیول" msgid "Compiled-in features" msgstr "تالیÙÛŒ خوبیاں" msgid "iCalendar support" msgstr "آئی کیلینڈر معاونت" msgid "Encrypted notes support" msgstr "رمز Ø´Ø¯Û Ù†ÙˆÙ¹Ø³ معاونت" msgid "Backup support" msgstr "بیک اپ معاونت" msgid "Printing support" msgstr "طباعت Ú©ÛŒ معاونت" msgid "Spell checker support" msgstr "املاء Ú©ÛŒ پڑتال Ú©ÛŒ معاونت" msgid "version" msgstr "نسخÛ" msgid "SVN revision" msgstr "SVN نظر٠ثانی" msgid "Key shortcuts" msgstr "کلید اختصار" msgid "License" msgstr "اجازÛ" msgid "Save backup" msgstr "بیک اپ محÙوظ کریں" msgid "Password protection" msgstr "پاس ورڈ ØªØ­ÙØ¸" msgid "Enter password" msgstr "پاس ورڈ داخل کریں" msgid "Re-enter password" msgstr "پاس ورڈ Ø¯ÙˆØ¨Ø§Ø±Û Ø¯Ø§Ø®Ù„ کریں" msgid "Please enter the password" msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ پاس ورڈ داخل کریں" msgid "Passwords do not match!" msgstr "پاس ورڈ مطابقت Ù†Ûیں رکھتا!" msgid "Cannot create backup!" msgstr "بیک اپ Ù†Ûیں بنایا جاسکتا!" msgid "Backup file saved successfully!" msgstr "بیک اپ Ú©ÛŒ ÙØ§Ø¦Ù„ کامیابی سے محÙوظ کردی گئی!" msgid "Open backup file" msgstr "بیک اپ ÙØ§Ø¦Ù„ کھولیں" msgid "Osmo backup files (*.bck)" msgstr "اوسمو بیک اپ ÙØ§Ø¦Ù„یں (*.bck)" msgid "This is not Osmo backup file" msgstr "ÛŒÛ Ø§ÙˆØ³Ù…Ùˆ بیک اپ ÙØ§Ø¦Ù„ Ù†Ûیں ÛÛ’" msgid "Incorrect password!" msgstr "غلط پاس ورڈ!" msgid "All your data will be replaced with backup file content." msgstr "آپ کا تمام ڈیٹا بیک اپ ÙØ§Ø¦Ù„ Ú©Û’ مواد سے بدل دیا جائے گا." msgid "Are you sure?" msgstr "کیا آپ Ù¾ÙØ±ÛŒÙ‚ین Ûیں؟" msgid "Osmo has to be restarted now..." msgstr "اوسمو Ú©Ùˆ پھر سے چلانے Ú©ÛŒ ضرورت ÛÛ’..." msgid "was born" msgstr "تاریخ پیدائش" msgid "year old" msgid_plural "years old" msgstr[0] "سال پرانا" msgstr[1] "سال پرانے" msgid "Current time" msgstr "Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª" msgid "Day number" msgstr "دن کا عدد" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "دن سال Ú©Û’ ختم Ûونے میں باقی ÛÛ’" msgstr[1] "دن سال Ú©Û’ ختم Ûونے میں باقی Ûیں" msgid "the last day of the year" msgstr "سال کا آخری دن" msgid "Today distance" msgstr "آج کا ÙØ§ØµÙ„Û" msgid "Week number" msgstr "ÛÙØªÛ’ کا عدد" msgid "Marked days" msgstr "نشان زد دن" msgid "Weekend days" msgstr "آخر ÛÙØªÛ Ú©Û’ دن" msgid "Moon phase" msgstr "چاند کا دورانیÛ" msgid "Zodiac sign" msgstr "Ø¹Ù„Ø§Ù‚Û Ø¨Ø±ÙˆØ¬ Ú©ÛŒ علامت" msgid "Day notes" msgstr "دن Ú©Û’ نوٹس" msgid "Day tasks" msgstr "دن Ú©ÛŒ Ù…ÛÙ…" msgid "Birthday" msgstr "سالگرÛ" msgid "Day category" msgstr "دن کا زمرÛ" msgid "Selected day note will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ø¯Ù† کا نوٹ حذ٠کردیا جائے گا." msgid "Continue?" msgstr "جاری رÛیں؟" msgid "Previous year" msgstr "Ø³Ø§Ø¨Ù‚Û Ø³Ø§Ù„" msgid "Previous month" msgstr "Ø³Ø§Ø¨Ù‚Û Ù…Ø§Û" msgid "Previous day" msgstr "Ø³Ø§Ø¨Ù‚Û Ø¯Ù†" msgid "Today" msgstr "آج" msgid "Next day" msgstr "اگلا دن" msgid "Next month" msgstr "اگلا ماÛ" msgid "Next year" msgstr "اگلا سال" msgid "Jump to date" msgstr "تاریخ پر جائیں" msgid "Print calendar" msgstr "تقویم طبع کریں" msgid "Date calculator" msgstr "تاریخ Ø´Ùمار Ú©ÙنندÛ" #, fuzzy msgid "Backup data" msgstr "بیک اپ" #, fuzzy msgid "Restore data" msgstr "بحال کریں" msgid "Preferences" msgstr "ترجیحات" msgid "Quit" msgstr "برخاست" msgid "Toggle day note panel" msgstr "دن نوٹ پینل معکوس کریں" msgid "Add task" msgstr "Ù…ÛÙ… شامل کریں" msgid "Select day color" msgstr "دن کا رنگ منتخب کریں" msgid "Browse notes" msgstr "نوٹس دیکھیں" msgid "Browse iCal events" msgstr "iCal واقعات دیکھیں" msgid "Export to iCal file" msgstr "iCal ÙØ§Ø¦Ù„ میں برآمد کریں" msgid "Previous and next month" msgstr "Ø³Ø§Ø¨Ù‚Û Ø§ÙˆØ± اگلا ماÛ" msgid "Close note panel" msgstr "نوٹ پینل بند کریں" msgid "Highlight" msgstr "نشان زدÛ" msgid "Strikethrough" msgstr "خط مقطوع" msgid "Underline" msgstr "خد کشیدÛ" msgid "Italic" msgstr "ٹیڑھا" msgid "Bold" msgstr "چوڑا" msgid "Insert timeline" msgstr "ٹائم لائن شامل کریں" msgid "Clear text" msgstr "متن صا٠کریں" msgid "Info" msgstr "معلومات" msgid "Select color" msgstr "رنگ منتخب کریں" msgid "None" msgstr "Ú©Ú†Ú¾ Ù†Ûیں" msgid "Cancel" msgstr "ملتوی" msgid "OK" msgstr "ٹھیک ÛÛ’" msgid "year" msgid_plural "years" msgstr[0] "سال" msgstr[1] "سال" msgid "month" msgid_plural "months" msgstr[0] "ماÛ" msgstr[1] "Ù…Ûینے" msgid "day" msgid_plural "days" msgstr[0] "دن" msgstr[1] "دن" msgid "hour" msgid_plural "hours" msgstr[0] "گھنٹÛ" msgstr[1] "گھنٹے" msgid "minute" msgid_plural "minutes" msgstr[0] "منٹ" msgstr[1] "منٹ" msgid "second" msgid_plural "seconds" msgstr[0] "سیکنڈ" msgstr[1] "سیکنڈ" msgid "or" msgstr "یا" msgid "rounded down" msgstr "راؤنڈ کردیے گئے" msgid "week" msgid_plural "weeks" msgstr[0] "ÛÙØªÛ" msgstr[1] "ÛÙØªÛ’" msgid "working day" msgid_plural "working days" msgstr[0] "کام کرنے کا دن" msgstr[1] "کام کرنے Ú©Û’ دن" msgid "time is ignored" msgstr "وقت نظر انداز کردیا گیا" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "اختتام ÛÙØªÛ کا دن" msgstr[1] "اختتام ÛÙØªÛ’ Ú©Û’ دن" msgid "This calculator only supports dates after year 1." msgstr "ÛŒÛ Ø´Ùمار Ú©ÙÙ†Ù†Ø¯Û ØµØ±Ù 1 سال بعد Ú©ÛŒ تاریخوں Ú©ÛŒ معاونت رکھتا ÛÛ’." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "آخر٠ÛÙØªÛ کا دن نظر انداز کردیا گیا" msgstr[1] "آخر٠ÛÙØªÛ Ú©Û’ دن نظر انداز کردیے گئے" msgid "Year" msgstr "سال" msgid "Month" msgstr "Ù…ÛینÛ" msgid "Day" msgstr "دن" msgid "Current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ®" msgid "Set current date" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® مرتب کریں" msgid "Hour" msgstr "گھنٹÛ" msgid "Minute" msgstr "منٹ" msgid "Second" msgstr "سیکنڈ" msgid "Set current time" msgstr "Ø­Ø§Ù„ÛŒÛ ÙˆÙ‚Øª مرتب کریں" msgid "Reset time" msgstr "وقت صا٠کریں" msgid "First date and time" msgstr "Ù¾ÛÙ„ÛŒ تاریخ اور وقت" msgid "Second date and time" msgstr "دوسری تاریخ اور وقت" msgid "Alternative time units" msgstr "متبادل وقت Ú©ÛŒ اکائیاں" msgid "Result" msgstr "نتیجÛ" msgid "Duration between two dates" msgstr "دو تاریخوں Ú©Û’ درمیان مدت" msgid "Operation" msgstr "عمل" msgid "add" msgstr "شامل کریں" msgid "subtract" msgstr "ØªÙØ±ÛŒÙ‚" msgid "Date and time to add or subtract from" msgstr "تاریخ اور وقت Ú©ÛŒ شمولیت یا اس سے حصول" msgid "Years" msgstr "سال" msgid "Months" msgstr "Ù…Ûینے" msgid "Days" msgstr "دن" msgid "Weeks" msgstr "ÛÙØªÛ’" msgid "Hours" msgstr "گھنٹے" msgid "Minutes" msgstr "منٹ" msgid "Seconds" msgstr "سیکنڈ" msgid "Ignore weekend days" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں Ú©Ùˆ نظر انداز کریں" msgid "Reset fields" msgstr "حلقے صا٠کریں" msgid "Time to add or subtract" msgstr "وقت برائے اضاÙÛ ÛŒØ§ حصول" msgid "Jump to" msgstr "منتقلی تا" msgid "Add to or subtract from a date" msgstr "تاریخ میں شامل یا حاصل کریں" msgid "Leap year" msgstr "لیپ کا سال" msgid "Yes" msgstr "ÛØ§Úº" msgid "No" msgstr "Ù†Ûیں" msgid "Chinese year animal" msgstr "چینی سال جانور" msgid "Number of days" msgstr "دنوں Ú©ÛŒ تعداد" msgid "Number of weeks" msgstr "ÛÙØªÙˆÚº Ú©ÛŒ تعداد" msgid "Number of weekend days" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں Ú©ÛŒ تعداد" msgid "Year info" msgstr "سال Ú©ÛŒ ØªÙØµÛŒÙ„ات" msgid "Current year" msgstr "Ø­Ø§Ù„ÛŒÛ Ø³Ø§Ù„" msgid "Alternative view" msgstr "متبادل منظر" msgid "event" msgid_plural "events" msgstr[0] "واقعÛ" msgstr[1] "واقعات" msgid "No valid calendars defined" msgstr "کوئی موزوں تقویم متعین Ù†Ûیں ÛÛ’" msgid "iCalendar events" msgstr "آئی کیلینڈر واقعات" msgid "Date" msgstr "تاریخ" msgid "Time" msgstr "وقت" msgid "Summary" msgstr "خلاصÛ" msgid "Select output file" msgstr "ماحاصل ÙØ§Ø¦Ù„ منتخب کریں" msgid "The list will be cleared and all entries will be lost." msgstr "ÙÛØ±Ø³Øª صا٠کردی جائے Ú¯ÛŒ اور تمام اندراجات ضائع Ûوجائیں Ú¯Û’." msgid "Done!" msgstr "Ûوگیا!" msgid "event exported" msgid_plural "events exported" msgstr[0] "ÙˆØ§Ù‚Ø¹Û Ø¨Ø±Ø¢Ù…Ø¯ کردیا گیا" msgstr[1] "واقعات برآمد کردیے گئے" msgid "iCalendar export" msgstr "آئی کلینڈر برآمد" msgid "Day Selector" msgstr "دن منتخب کار" msgid "Use date period" msgstr "تاریخ Ú©ÛŒ مدت استعمال کریں" msgid "Add" msgstr "شامل کریں" msgid "Clear" msgstr "صاÙ" msgid "Remove" msgstr "حذÙ" msgid "Output filename" msgstr "ماحاصل ÙØ§Ø¦Ù„ نام" msgid "Browse" msgstr "انتخاب" msgid "Export" msgstr "برآمد" msgid "no entries" msgstr "کوئی اندارجات Ù†Ûیں" msgid "entry" msgid_plural "entries" msgstr[0] "اندراج" msgstr[1] "اندراجات" msgid "Calendar notes" msgstr "تقویم نوٹس" msgid "Search" msgstr "تلاش" msgid "Filter" msgstr "Ùلٹر" msgid "Current month" msgstr "Ø­Ø§Ù„ÛŒÛ Ù…Ø§Û" msgid "Selected month" msgstr "منتخب Ú©Ø±Ø¯Û Ù…Ø§Û" msgid "Selected year" msgstr "منتخب Ú©Ø±Ø¯Û Ø³Ø§Ù„" msgid "Selected month and year" msgstr "Ù…Ø§Û Ø§ÙˆØ± سال منتخب کریں" msgid "All notes" msgstr "تمام نوٹس" msgid "Case sensitive" msgstr "حساس" msgid "Strikethrough past day notes" msgstr "Ú¯Ø²Ø´ØªÛ Ø¯Ù† اور نوٹس خط مقطوع کریں" msgid "Note" msgstr "نوٹ" msgid "Syntax" msgstr "نحو" msgid "abbreviated weekday name" msgstr "مختصر ÛÙØªÛ’ Ú©Û’ دن کا نام" msgid "full weekday name" msgstr "مکمل ÛÙØªÛ’ Ú©Û’ دن کا نام" msgid "abbreviated month name" msgstr "مختصر Ù…Ø§Û Ú©Ø§ نام" msgid "full month name" msgstr "Ù…Ø§Û Ú©Ø§ پورا نام" msgid "day of the month" msgstr "Ù…Ø§Û Ú©Ø§ دن" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "Ù…Ûینے کا دن ابتدائی ØµÙØ±ÙˆÚº Ú©Û’ بغیر" msgid "year without century" msgstr "سال بغیر صدی" msgid "year with century" msgstr "سال بمع صدی" msgid "Date header format" msgstr "تاریخ سرساز Ûیئت" msgid "Set default format" msgstr "Ø·Û’ Ø´Ø¯Û Ûیئت مرتب کریں" msgid "Date format syntax" msgstr "تاریخ Ûیئت ساخت" msgid "Day note marker" msgstr "دن نوٹ مارکر" msgid "Event marker" msgstr "ÙˆØ§Ù‚Ø¹Û Ù…Ø§Ø±Ú©Ø±" msgid "Circle" msgstr "دائری" msgid "Ellipse" msgstr "بیضوی" msgid "Wave" msgstr "Ù„ÛØ±" msgid "Current day marker" msgstr "Ø­Ø§Ù„ÛŒÛ Ø¯Ù† مارکر" msgid "Arrow" msgstr "تیر" msgid "Free-hand circle" msgstr "آزاد-دستی حلقÛ" msgid "Colors" msgstr "رنگ" msgid "Header color" msgstr "سرساز کا رنگ" msgid "Weekend days color" msgstr "آخر٠ÛÙØªÛ Ú©Û’ دنوں کا رنگ" msgid "Cursor color" msgstr "کرسر کا رنگ" msgid "Event marker color" msgstr "واقعات مارکر رنگ" msgid "Current day marker color" msgstr "Ø­Ø§Ù„ÛŒÛ Ø¯Ù† مارکر رنگ" msgid "Birthday marker color" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ù…Ø§Ø±Ú©Ø± رنگ" msgid "Date font" msgstr "تاریخ Ùونٹ" msgid "Calendar font" msgstr "تقویم Ùونٹ" msgid "Note font" msgstr "نوٹ کا Ùونٹ" msgid "Enable block cursor" msgstr "بلاک کرسر ÙØ¹Ø§Ù„ کریں" msgid "Cursor thickness" msgstr "کرسر Ú©ÛŒ Ú©Ø«Ø§ÙØª" msgid "Thin" msgstr "پتلا" msgid "Thick" msgstr "گھنا" msgid "Edit category" msgstr "Ø²Ù…Ø±Û Ù…Ø¯ÙˆÙ† کریں" msgid "Color" msgstr "رنگ" msgid "Name" msgstr "نام" msgid "Select ICS file" msgstr "ICS ÙØ§Ø¦Ù„ منتخب کریں" msgid "All Files" msgstr "تمام ÙØ§Ø¦Ù„یں" msgid "Calendar files (*.ics)" msgstr "تقویم ÙØ§Ø¦Ù„یں (*.ics)" msgid "Modify ICAL parameters" msgstr "ICAL پیرامیٹر تبدیل کریں" msgid "Filename" msgstr "ÙØ§Ø¦Ù„ کا نام" msgid "Options" msgstr "اختیارات" msgid "Disabled" msgstr "معطل" msgid "Valid" msgstr "موزوں" msgid "Description" msgstr "ØªÙØµÛŒÙ„" msgid "Full date" msgstr "پوری تاریخ" msgid "Mark" msgstr "نشان" msgid "Week start on Monday" msgstr "ÛÙØªÛ پیر Ú©Ùˆ شروع ÛÙˆ" msgid "Show day names" msgstr "دنوں Ú©Û’ نام دکھائیں" msgid "No month change" msgstr "کوئی Ù…Ø§Û Ú©ÛŒ تبدیلی Ù†Ûیں" msgid "Show week numbers" msgstr "ÛÙØªÛ’ Ú©Û’ اعداد Ø¸Ø§ÛØ± کریں" msgid "Simple view in full-year calendar" msgstr "مکمل-سال تقویم میں Ø³Ø§Ø¯Û Ù…Ù†Ø¸Ø±" msgid "Enable auxilary calendars" msgstr "اضاÙÛŒ تقویمیں ÙØ¹Ø§Ù„ کریں" msgid "Ascending sorting in day notes browser" msgstr "دن نوٹس براؤزر میں صعودی ترتیب" msgid "Enable spell checker in day notes" msgstr "دن Ú©Û’ نوٹس میں املاء Ú©ÛŒ پڑتال ÙØ¹Ø§Ù„ کریں" #, fuzzy msgid "Show seconds" msgstr "سیکنڈ" msgid "Appearance" msgstr "مواجÛ" msgid "Day categories" msgstr "دن Ø²Ù…Ø±Û Ø¬Ø§Øª" msgid "iCalendar files" msgstr "آئی کلینڈر ÙØ§Ø¦Ù„یں" msgid "Show in day info panel" msgstr "دن Ú©Û’ معلوماتی پینل میں دکھائیں" msgid "Name day" msgstr "دن نام" msgid "Error printing" msgstr "طباعت Ú©ÛŒ غلطی" msgid "Printing properties" msgstr "طباعت خصوصیات" msgid "Month name" msgstr "Ù…Ø§Û Ù†Ø§Ù…" msgid "Day name" msgstr "دن کا نام" msgid "Events" msgstr "واقعات" msgid "Fonts" msgstr "Ùونٹ" msgid "Birthdays" msgstr "سالگرÛیں" msgid "Namedays" msgstr "دنوں Ú©Û’ نام" msgid "Visible events" msgstr "مرئی واقعات" msgid "Padding" msgstr "پیڈنگ" msgid "Event maximum length" msgstr "ÙˆØ§Ù‚Ø¹Û Ú©Ø§ Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²Ø§Ø¯Û Ø·ÙˆÙ„" msgid "Page orientation:" msgstr "ØµÙØ­Û Ú©ÛŒ Ø±ÙØ® بندی" msgid "Portrait" msgstr "پورٹریٹ" msgid "Landscape" msgstr "لینڈسکیپ" msgid "Timeline" msgstr "خط٠وقت" msgid "From (hour)" msgstr "از (گھنٹÛ)" msgid "Step (minutes)" msgstr "Ù…Ø±Ø­Ù„Û (منٹ)" msgid "To (hour)" msgstr "تا (گھنٹÛ)" msgid "No date" msgstr "بلا تاریخ" msgid "Rat" msgstr "Ú†ÙˆÛØ§" msgid "Ox" msgstr "بیل" msgid "Tiger" msgstr "شیر" msgid "Hare" msgstr "خرگوش" msgid "Dragon" msgstr "Ø§Ú˜Ø¯ÛØ§" msgid "Snake" msgstr "سانپ" msgid "Horse" msgstr "گھوڑا" msgid "Sheep" msgstr "بھیڑ" msgid "Monkey" msgstr "بندر" msgid "Fowl" msgstr "پرندÛ" msgid "Dog" msgstr "Ú©ÙØªØ§" msgid "Pig" msgstr "خنزیر" msgid "Unknown" msgstr "نامعلوم" msgid "Aquarius" msgstr "برج دلو" msgid "Pisces" msgstr "برج حوت" msgid "Aries" msgstr "برج حمل" msgid "Taurus" msgstr "برج ثور" msgid "Gemini" msgstr "برج جوزا" msgid "Cancer" msgstr "برج سرطان" msgid "Leo" msgstr "برج اسد" msgid "Virgo" msgstr "برج عذراء" msgid "Libra" msgstr "برج میزان" msgid "Scorpio" msgstr "برج عقرب" msgid "Sagittarius" msgstr "برج قوس" msgid "Capricorn" msgstr "برج جدی" msgid "Cannot perform selected operation." msgstr "منتخب Ú©Ø±Ø¯Û Ø¹Ù…Ù„ ادا Ù†Ûیں کیا جاسکتا." msgid "Task has been modified or removed." msgstr "Ù…ÛÙ… تبدیل یا حذ٠کردی گئی." msgid "Remind me later" msgstr "بعد میں یاد دلائیں" msgid "Done" msgstr "تکمیل شدÛ" msgid "postponed" msgstr "مؤخر کردÛ" msgid "Show task" msgstr "Ù…ÛÙ… دکھائیں" msgid "Alarm warning!" msgstr "الارم انتباÛ!" msgid "Day note" msgstr "دن نوٹ" msgid "Type" msgstr "نوعیت" msgid "Event" msgstr "واقعÛ" msgid "Task" msgstr "Ù…ÛÙ…" msgid "Show Osmo" msgstr "اوسمو Ú©Ùˆ Ø¸Ø§ÛØ± کریں" msgid "No birthdays defined" msgstr "کوئی Ø³Ø§Ù„Ú¯Ø±Û Ù…ØªØ¹ÛŒÙ† Ù†Ûیں" msgid "Birthdays list" msgstr "سالگرÛیں ÙÛØ±Ø³Øª" msgid "Days to birthday" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ù…ÛŒÚº دن" msgid "Age" msgstr "عمر" msgid "Birthday date" msgstr "Ø³Ø§Ù„Ú¯Ø±Û ØªØ§Ø±ÛŒØ®" msgid "today" msgstr "آج" msgid "Please select address" msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ù¾ØªÛ Ù…Ù†ØªØ®Ø¨ کریں" msgid "Information" msgstr "معلومات" msgid "Work" msgstr "کام" msgid "Home" msgstr "گھر" msgid "Group" msgstr "گروپ" msgid "First name" msgstr "Ù¾Ûلا نام" msgid "Last name" msgstr "آخری نام" msgid "Second name" msgstr "دوسرا نام" msgid "Nickname" msgstr "عرÙیت" msgid "Tags" msgstr "ٹیگ" msgid "Name day date" msgstr "نام دن تاریخ" msgid "Home address" msgstr "گھر کا پتÛ" msgid "Home postcode" msgstr "گھر کا پوسٹ Ú©ÙˆÚˆ" msgid "Home city" msgstr "Ø´ÛØ±" msgid "Home state" msgstr "صوبÛ" msgid "Home country" msgstr "ملک" msgid "Organization" msgstr "ادارÛ" msgid "Department" msgstr "محکمÛ" msgid "Work address" msgstr "کام کا پتÛ" msgid "Work postcode" msgstr "کام کا پوسٹ Ú©ÙˆÚˆ" msgid "Work city" msgstr "کام کا Ø´ÛØ±" msgid "Work state" msgstr "کام کا صوبÛ" msgid "Work country" msgstr "کام کا ملک" msgid "Fax" msgstr "Ùیکس" msgid "Home phone" msgstr "گھر کا Ùون" msgid "Home phone 2" msgstr "گھر کا Ùون 2" msgid "Home phone 3" msgstr "گھر کا Ùون 3" msgid "Home phone 4" msgstr "گھر کا Ùون 4" msgid "Work phone" msgstr "کام کا Ùون" msgid "Work phone 2" msgstr "کام کا Ùون 2" msgid "Work phone 3" msgstr "کام کا Ùون 3" msgid "Work phone 4" msgstr "کام کا Ùون 4" msgid "Cell phone" msgstr "سیل Ùون" msgid "Cell phone 2" msgstr "سیل Ùون 2" msgid "Cell phone 3" msgstr "سیل Ùون 3" msgid "Cell phone 4" msgstr "سیل Ùون 4" msgid "E-Mail" msgstr "برقی پتÛ" msgid "E-Mail 2" msgstr "برقی Ù¾ØªÛ 2" msgid "E-Mail 3" msgstr "برقی Ù¾ØªÛ 3" msgid "E-Mail 4" msgstr "برقی Ù¾ØªÛ 4" msgid "WWW" msgstr "ویب سائٹ" msgid "WWW 2" msgstr "ویب سائٹ 2" msgid "WWW 3" msgstr "ویب سائٹ 3" msgid "WWW 4" msgstr "ویب سائٹ 4" msgid "IM Gadu-Gadu" msgstr "گاڈو-گادو پیغام رساں" msgid "IM Yahoo" msgstr "یاÛÙˆ پیغام رساں" msgid "IM MSN" msgstr "ایم ایس این پیغام رساں" msgid "IM ICQ" msgstr "آئی سی کیو پیغام رساں" msgid "IM AOL" msgstr "اے او ایل پیغام رساں" msgid "IM Jabber" msgstr "جبر پیغام رساں" msgid "IM Skype" msgstr "سکائپی پیغام رساں" msgid "IM Tlen" msgstr "ٹلن پیغام رساں" msgid "Blog" msgstr "بلاگ" msgid "Photo" msgstr "تصویر" msgid "Additional info" msgstr "اضاÙÛŒ معلومات" msgid "New contact" msgstr "نیا رابطÛ" msgid "Remove contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±ÛŒÚº" msgid "Edit contact" msgstr "Ø±Ø§Ø¨Ø·Û Ù…Ø¯ÙˆÙ† کریں" msgid "Show birthdays" msgstr "سالگرÛیں دکھائیں" msgid "Show contact location on the map" msgstr "نقشے پر Ø±Ø§Ø¨Ø·Û Ú©Ø§ مقام Ø¸Ø§ÛØ± کریں" msgid "Import contacts" msgstr "رابطے درآمد کریں" msgid "Export contacts" msgstr "رابطے برآمد کریں" msgid "First Name" msgstr "Ù¾Ûلا نام" msgid "Last Name" msgstr "آخری نام" msgid "All fields" msgstr "تمام حلقے" msgid "Contact details" msgstr "رابطے Ú©ÛŒ ØªÙØµÛŒÙ„ات" msgid "Close contact panel" msgstr "رابطے کا پینل بند کریں" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "Ø±Ø§Ø¨Ø·Û Ø¨Ø±Ø¢Ù…Ø¯ کردیا گیا" msgstr[1] "رابطے برآمد کردیے گئے" msgid "Cannot create file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں بنائی جاسکتی." msgid "Output format" msgstr "ماحاصل Ûیئت" msgid "Add header" msgstr "سرساز شامل کریں" msgid "Fields to export" msgstr "حلقے برائے برآمد" msgid "All" msgstr "تمام" msgid "Invert" msgstr "پلٹیں" msgid "Select fields" msgstr "حلقے منتخب کریں" msgid "Select CSV file" msgstr "CSV ÙØ§Ø¦Ù„ منتخب کریں" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (کوما-مقسم قدر) ÙØ§Ø¦Ù„یں (*.csv)" msgid "Please select file first." msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ù¾ÛÙ„Û’ ÙØ§Ø¦Ù„ منتخب کریں." msgid "Import type" msgstr "درآمد نوعیت" msgid "File" msgstr "ÙØ§Ø¦Ù„" msgid "Input filename" msgstr "ماداخل ÙØ§Ø¦Ù„ نام" msgid "Import" msgstr "درآمد" msgid "Nothing to import." msgstr "درآمد کرنے Ú©Û’ لیے Ú©Ú†Ú¾ Ù†Ûیں ÛÛ’." msgid "contact added" msgid_plural "contacts added" msgstr[0] "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کردیا گیا" msgstr[1] "رابطے شامل کردیے گئے" msgid "of" msgstr "برائے" msgid "Record" msgstr "ریکارڈ" msgid "Number fields per record" msgstr "ÙÛŒ اندراج حلقوں Ú©ÛŒ تعداد" msgid "Use first record as header" msgstr "Ûیڈر Ú©Û’ طور پر Ù¾Ûلا ریکارڈ استعمال کریں" msgid "Field type" msgstr "Ø­Ù„Ù‚Û Ù†ÙˆØ¹ÛŒØª" msgid "Value" msgstr "قدر" msgid "No records found in selected file." msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ میں کوئی ریکارڈ Ù†Ûیں پایا گیا." msgid "Cannot read file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں Ù¾Ú‘Ú¾ÛŒ جاسکتی." msgid "Cannot open file." msgstr "ÙØ§Ø¦Ù„ Ù†Ûیں کھولی جاسکتی." msgid "Selected contact will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ø±Ø§Ø¨Ø·Û Ø­Ø°Ù Ú©Ø±Ø¯ÛŒØ§ جائے گا." msgid "Select photo" msgstr "تصویر منتخب کریں" msgid "Address" msgstr "پتÛ" msgid "Postcode" msgstr "پوسٹ Ú©ÙˆÚˆ" msgid "City" msgstr "Ø´ÛØ±" msgid "State" msgstr "حالت" msgid "Country" msgstr "Ù…ÙÙ„Ú©" msgid "Add contact" msgstr "Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù…Ù„ کریں" msgid "Personal" msgstr "ذاتی" msgid "Phones" msgstr "Ùون" msgid "Internet" msgstr "انٹرنیٹ" msgid "Color of contact tags" msgstr "رابطے Ú©Û’ ٹیگ کا رنگ" msgid "Color of links" msgstr "روابط Ú©Û’ رنگ" msgid "Font size" msgstr "Ùونٹ حجم" msgid "Name font size" msgstr "Ùونٹ حجم نام" msgid "Item font size" msgstr "عنصر کا Ùونٹ حجم" msgid "Photo size" msgstr "تصویر کا حجم" msgid "Small" msgstr "چھوٹا" msgid "Medium" msgstr "درمیانÛ" msgid "Large" msgstr "بڑا" msgid "Hide group column" msgstr "گروپ کالم چھپائیں" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Ù…ØªÙØ±Ù‚" msgid "Groups" msgstr "گروپ" msgid "Visible columns in birthday browser" msgstr "Ø³Ø§Ù„Ú¯Ø±Û Ø¨Ø±Ø§Ø¤Ø²Ø± میں مرئی کالم" msgid "Show calendar" msgstr "تقویم دکھائیں" msgid "Show tasks" msgstr "Ù…ÛÙ… دکھائیں" msgid "Show contacts" msgstr "رابطے دکھائیں" msgid "Show notes" msgstr "نوٹس دکھائیں" msgid "Show options" msgstr "اختیارات دکھائیں" msgid "Show small calendar window" msgstr "چوٹی تقویم Ø¯Ø±ÛŒÚ†Û Ø¯Ú©Ú¾Ø§Ø¦ÛŒÚº" msgid "Check for events since last run" msgstr "آخری بار چلانے سے واقعات چیک کریں" msgid "Number of days to check forward for events (default: 0)" msgstr "Ø¢Ø¦Ù†Ø¯Û ÙˆØ§Ù‚Ø¹Ø§Øª Ú©Ùˆ چیک کرنے Ú©Û’ لیے دنوں Ú©ÛŒ تعداد (Ø·Û’ شدÛ: 0)" msgid "Set absolute path for settings and data files" msgstr "ترتیبات اور ڈیٹا ÙØ§Ø¦Ù„ÙˆÚº Ú©Û’ لیے مطلق پاتھ مرتب کریں" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "آسان ذاتی منظم" msgid "ERROR: Cannot create config files" msgstr "غلطی: کانÙÚ¯ (config) ÙØ§Ø¦Ù„ Ù†Ûیں بنائی جاسکتی" msgid "Another copy of OSMO is already running." msgstr "اوسمو کا دوسرا Ù†Ø³Ø®Û Ù¾ÛÙ„Û’ ÛÛŒ Ú†Ù„ Ø±ÛØ§ ÛÛ’." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "ایک ÛÛŒ وقت میں اوسمو Ú©Û’ دو نسخوں Ú©Û’ استعمال سے ڈیٹا کا نقصان Ûوسکتا ÛÛ’." msgid "Do you really want to continue?" msgstr "کیا آپ واقعی Ø¢Ú¯Û’ بڑھنا Ú†Ø§ÛØªÛ’ Ûیں؟" msgid "Warning" msgstr "انتباÛ" msgid "The note has changed." msgstr "نوٹ تبدیل کردیا گیا." msgid "Do you want to save it?" msgstr "کیا آپ اسے محÙوظ کرنا Ú†Ø§ÛØªÛ’ Ûیں؟" #, fuzzy msgid "No URLs found in the selection..." msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ میں کوئی ریکارڈ Ù†Ûیں پایا گیا." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "کیا آپ واقعی Ø¢Ú¯Û’ بڑھنا Ú†Ø§ÛØªÛ’ Ûیں؟" msgid "Question" msgstr "سوال" msgid "Words" msgstr "Ø§Ù„ÙØ§Ø¸" msgid "Lines" msgstr "لکیریں" msgid "Characters" msgstr "کیریکٹرز" msgid "White characters" msgstr "سÙید کیریکٹرز" msgid "Bytes" msgstr "بائٹس" msgid "Document" msgstr "دستاویز" msgid "Selection" msgstr "انتخاب" msgid "Created" msgstr "بنایا گیا" msgid "Modified" msgstr "تبدیل شدÛ" msgid "New note" msgstr "نیا نوٹ" msgid "Add note" msgstr "نوٹ شامل کریں" msgid "Edit note" msgstr "نوٹ مدون کریں" msgid "Delete note" msgstr "نوٹ حذ٠کریں" msgid "Remove note" msgstr "نوٹ صا٠کریں" msgid "Find" msgstr "تلاش" msgid "Clear attributes" msgstr "اوصا٠صا٠کریں" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "نوٹ محÙوظ کریں" msgid "Insert current date and time" msgstr "Ø­Ø§Ù„ÛŒÛ ØªØ§Ø±ÛŒØ® اور وقت شامل کریں" msgid "Insert separator" msgstr "جداگار شامل کریں" msgid "Statistics" msgstr "Ø´Ùماریات" msgid "Close editor" msgstr "مدون بند کریں" msgid "Toggle spell checker" msgstr "املاء Ú©ÛŒ پڑتال معکوس کریں" msgid "Category" msgstr "زمرÛ" msgid "Note name" msgstr "نوٹ کا نام" msgid "Last changes" msgstr "آخری تبدیلیاں" msgid "Read-only" msgstr "Ùقط-برائے-پڑھائی" msgid "Line" msgstr "لکیر" msgid "Column" msgstr "کالم" msgid "case sensitive" msgstr "حساس" msgid "Close find entry" msgstr "اندراج تلاش بند کریں" msgid "Edit entry" msgstr "اندراج مدون کریں" msgid "Remember cursor position" msgstr "کرسر Ú©ÛŒ Ø¬Ú¯Û ÛŒØ§Ø¯ رکھیں" msgid "Selected note will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ù†ÙˆÙ¹ حذ٠کردیا جائے گا." msgid "No further data recovery will be possible." msgstr "مزید ڈیٹا Ú©ÛŒ Ø¨Ø§Ø²ÛŒØ§ÙØªÚ¯ÛŒ ممکن Ù†Ûیں ÛÙˆÚ¯ÛŒ." msgid "Plain" msgstr "سادÛ" msgid "Encrypted" msgstr "رمز شدÛ" msgid "Note type" msgstr "نوٹ Ú©ÛŒ نوعیت" msgid "Cannot open the note." msgstr "نوٹ Ù†Ûیں کھولا جاسکتا." msgid "encryption support is disabled" msgstr "رمز نگاری Ú©ÛŒ معاونت معطل ÛÛ’" msgid "Authorization" msgstr "منظوری" msgid "Algorithm" msgstr "الگورتھم" msgid "Hashing" msgstr "Ûیشنگ" msgid "Compression" msgstr "دباؤ" msgid "Ratio" msgstr "قدر" msgid "Fast" msgstr "تیز" msgid "Good" msgstr "اچھا" msgid "Best" msgstr "Ø¨ÛØªØ±ÛŒÙ†" msgid "Remember the last selected category" msgstr "آخری منتخب Ú©Ø±Ø¯Û Ø²Ù…Ø±Û’ Ú©Ùˆ یاد رکھیں" msgid "Use system format for date and time" msgstr "تاریخ اور وقت Ú©Û’ لیے نظام Ú©ÛŒ Ûیئت استعمال کریں" msgid "Encryption" msgstr "رمز نگاری" msgid "Visible columns" msgstr "مرئی کالم" msgid "Categories" msgstr "زمرے" msgid "Notes options" msgstr "نوٹس اختیارات" msgid "Osmo has to be restarted to take effect." msgstr "تبدیلیوں Ú©ÛŒ اثر پذیری Ú©Û’ لیے اوسمو Ú©Ùˆ Ø¯ÙˆØ¨Ø§Ø±Û Ú†Ù„Ø§Ù†Ø§ Ûوگا." msgid "Layout" msgstr "خاکÛ" msgid "Vertical" msgstr "عمودی" msgid "Horizontal" msgstr "اÙÙ‚ÛŒ" msgid "Tabs position" msgstr "ٹیبز کا مقام" msgid "Left" msgstr "بائیں" msgid "Right" msgstr "دائیں" msgid "Top" msgstr "اوپر" msgid "Bottom" msgstr "نیچے" #, fuzzy msgid "Use default stock icons" msgstr "Ø·Û’ Ø´Ø¯Û Ø°Ø®ÛŒØ±Û Ø¢Ø¦Ú©Ù† استعمال کریں (Ø¯ÙˆØ¨Ø§Ø±Û Ú†Ù„Ø§Ù†Û’ Ú©ÛŒ ضرورت ÛÙˆÚ¯ÛŒ)" msgid "Disable underline in links" msgstr "روابط میں خط کشیدگی معطل کریں" msgid "Draw rows in alternating colors" msgstr "قطاریں متبادل رنگوں میں بنائیں" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Ú©Ù… سے Ú©Ù… ایک ماڈیول Ø¸Ø§ÛØ± Ûونا چاÛیے." msgid "Override locale settings" msgstr "لوکل ترتیاب پر ÙØ§Ø¦Ù‚ ÛÙˆÚº" msgid "Date format" msgstr "تاریخ Ûیئت" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "وقت Ú©ÛŒ Ûیئت" msgid "hours" msgstr "گھنٹے" msgid "Spell checker language" msgstr "املاء پڑتال زبان" msgid "Enable tooltips" msgstr "ٹول Ù¹ÙÙ¾ ÙØ¹Ø§Ù„ کریں" msgid "Remember last selected page" msgstr "آخری منتخب Ú©Ø±Ø¯Û ØµÙØ­Û یاد رکھیں" msgid "Save data after every modification" msgstr "ÛØ± تبدیلی پر تاریخ محÙوظ کریں" msgid "Web browser" msgstr "ویب براؤزر" msgid "E-mail client" msgstr "ای میل موکل" msgid "Sound player" msgstr "موسیقی سازندÛ" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s Ù†Ù…ÙˆÙ†Û ÙˆÛŒØ¨ Ù¾ØªÛ Ø³Û’ بدل دیا جائے گا" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s Ù†Ù…ÙˆÙ†Û Ø§ÛŒ میل Ù¾ØªÛ Ø³Û’ بدل دیا جائے گا" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s Ù†Ù…ÙˆÙ†Û ØµÙˆØªÛŒ ÙØ§Ø¦Ù„ نام سے بدل دیا جائے گا" msgid "Enable system tray" msgstr "نظام ٹرے ÙØ¹Ø§Ù„ کریں" msgid "Start minimised" msgstr "منمائز شروع کریں" msgid "Blink on events" msgstr "واقعات پر بلنک کریں" msgid "Ignore day note events" msgstr "دن نوٹ واقعات نظر انداز کریں" msgid "Hide" msgstr "چھپائیں" msgid "Helpers" msgstr "معاون" msgid "System tray" msgstr "نظام ٹرے" msgid "Edit" msgstr "تدوین" msgid "Go Down" msgstr "نیچے جائیں" msgid "Select date" msgstr "تاریخ منتخب کریں" msgid "Select font" msgstr "Ùونٹ منتخب کریں" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Ø´Ùمار Ú©ÙنندÛ" msgid "Edit day note" msgstr "دن کا نوٹ مدون کریں" msgid "Save" msgstr "محÙوظ کریں" msgid "Display full-year calendar" msgstr "مکمل-سال تقویم Ø¸Ø§ÛØ± کریں" msgid "Help" msgstr "ÛØ¯Ø§ÛŒØ§Øª" msgid "Invalid item" msgstr "غیر موزوں عنصر" msgid "Valid item" msgstr "موزوں عنصر" msgid "Edit task" msgstr "Ù…ÛÙ… مدون کریں" msgid "Remove task" msgstr "Ù…ÛÙ… حذ٠کریں" msgid "Import tasks" msgstr "Ù…ÛÙ… درآمد کریں" msgid "Export tasks" msgstr "Ù…ÛÙ… برآمد کریں" msgid "Change to previous date" msgstr "Ø³Ø§Ø¨Ù‚Û ØªØ§Ø±ÛŒØ® پر بدل دیں" msgid "Change to next date" msgstr "اگلی تاریخ پر بدل دیں" msgid "Print" msgstr "طباعت" msgid "Normal" msgstr "سادÛ" msgid "Recurrent" msgstr "باز گرد" msgid "Started" msgstr "شروع کردÛ" msgid "Finished" msgstr "تکمیل ÛŒØ§ÙØªÛ" msgid "All items" msgstr "تمام عناصر" msgid "New task" msgstr "نئی Ù…ÛÙ…" msgid "Change due date to previous date" msgstr "باقی تاریخ Ú©Ùˆ Ø³Ø§Ø¨Ù‚Û ØªØ§Ø±ÛŒØ® پر تبدیل کریں" msgid "Change due date to next date" msgstr "باقی تاریخ Ú©Ùˆ اگلی تاریخ پر تبدیل کریں" msgid "Print visible tasks list" msgstr "مرئی Ù…ÛÙ… Ú©ÛŒ ÙÛØ±Ø³Øª طبع کریں" msgid "Due date" msgstr "باقی تاریخ" msgid "Priority" msgstr "اÛمیت" msgid "Task details" msgstr "Ù…ÛÙ… ØªÙØµÛŒÙ„ات" msgid "Close description panel" msgstr "ØªÙØµÛŒÙ„ات پینل بند کریں" msgid "No tasks with defined date found." msgstr "متعین Ú©Ø±Ø¯Û ØªØ§Ø±ÛŒØ® میں کوئی Ù…Ûمیں Ù†Ûیں پائی گئیں." msgid "Save tasks" msgstr "Ù…ÛÙ… محÙوظ کریں" msgid "tasks exported" msgstr "Ù…Ûمیں برآمد کردی گئیں" msgid "Please select at least one day when recurrency is enabled." msgstr "Ø¨Ø±Ø§Û Ù…ÛØ±Ø¨Ø§Ù†ÛŒ Ú©Ù… سے Ú©Ù… ایک دن منتخب کریں جب ری کرنسی ÙØ¹Ø§Ù„ ÛÙˆ." msgid "Set time" msgstr "وقت متعین کریں" msgid "Tomorrow" msgstr "Ú©Ù„" msgid "Selected task will be removed." msgstr "منتخب Ú©Ø±Ø¯Û Ù…ÛÙ… حذ٠کردی جائے Ú¯ÛŒ." msgid "Basic" msgstr "بنیادی" msgid "Select date and time" msgstr "تاریخ اور وقت منتخب کریں" msgid "Low" msgstr "پست" msgid "High" msgstr "بالا" msgid "Enable sound notification" msgstr "صوتی اطلاع ÙØ¹Ø§Ù„ کریں" #, fuzzy msgid "Enable notification dialog" msgstr "صوتی اطلاع ÙØ¹Ø§Ù„ کریں" msgid "Advanced" msgstr "اعلی" msgid "Alarm warning" msgstr "الارم انتباÛ" msgid "Postpone time" msgstr "موخر کرنے کا وقت" msgid "Alarm command" msgstr "الارم کمانڈ" msgid "Recurrent task" msgstr "باز گرد Ù…ÛÙ…" msgid "Enable" msgstr "ÙØ¹Ø§Ù„ کریں" msgid "Start" msgstr "ابتداء" msgid "End" msgstr "آخر" msgid "Interval" msgstr "وقÙÛ" msgid "Time period" msgstr "وقت مدت" msgid "Date period" msgstr "تاریخ مدت" msgid "Repeat" msgstr "Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "Repeat in the following days" msgstr "Ù…Ù†Ø¯Ø±Ø¬Û Ø°ÛŒÙ„ دنوں میں Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "Ignore alarm when task expired offline" msgstr "جب Ù…ÛÙ… آ٠لائن اختتام پذیر ÛÙˆ الارم نظر انداز کریں" msgid "Select a font..." msgstr "Ùونٹ منتخب کریں..." msgid "Color of items that are due today" msgstr "ان عناصر کا رنگ جو آج Ú©Û’ لیے باقی Ûیں" msgid "Color of items that are due in the next 7 days" msgstr "ان عناصر کا رنگ جو اگلے 7 دنوں تک باقی Ûیں" msgid "Color of items that are past due" msgstr "ان عناصر کا رنگ جن کا وقت گزر گیا" msgid "Task info font" msgstr "Ù…ÛÙ… معلومات Ùونٹ" msgid "Show in bold tasks with high priority" msgstr "Ú†ÙˆÚ‘ÛŒ Ù…Ûموں میں Ø²ÛŒØ§Ø¯Û Ø§Ûمیت Ú©Û’ ساتھ دکھائیں" msgid "Hide completed tasks" msgstr "تکمیل Ø´Ø¯Û Ù…ÛÙ… چھپائیں" msgid "Delete completed tasks without confirmation" msgstr "تکمیل Ø´Ø¯Û Ù…Ûمیں بغیر تصدیق Ú©Û’ حذ٠کردیں" msgid "Add new task when double clicked on tasks list" msgstr "Ù…ÛÙ… ÙÛØ±Ø³Øª میں Ø¯ÛØ±Û’ Ú©Ù„Ú© پر نئی Ù…ÛÙ… شامل کریں" msgid "minutes" msgstr "منٹ" msgid "0 for disable" msgstr "0 برائے معطلی" msgid "Repeat sound alarm" msgstr "الارم Ú©ÛŒ آواز Ø¯ÛØ±Ø§Ø¦ÛŒÚº" msgid "times" msgstr "اوقات" msgid "Global notification command" msgstr "عالمگیر اطلاعی کمانڈ" msgid "Tasks options" msgstr "Ù…ÛÙ… Ú©Û’ اختیارات" msgid "Reminder options" msgstr "یاد Ø¯ÛØ§Ù†ÛŒ اختیارات" msgid "Tasks list" msgstr "Ù…ÛÙ… ÙÛØ±Ø³Øª" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Ù†Ûیں." msgid "New Moon" msgstr "نیا چاند" msgid "Waxing Crescent Moon" msgstr "بڑھتا Ûلال چاند" msgid "Quarter Moon" msgstr "چوتھائی چاند" msgid "Waxing Gibbous Moon" msgstr "بڑھتا ابھرا چاند" msgid "Full Moon" msgstr "مکمل چاند" msgid "Waning Gibbous Moon" msgstr "ماند ابھرا چاند" msgid "Last Quarter Moon" msgstr "آخری چوتھائی چاند" msgid "Waning Crescent Moon" msgstr "ماند Ûلال چاند" msgid "Error" msgstr "غلطی" msgid "Selected file exist! Overwrite?" msgstr "منتخب Ú©Ø±Ø¯Û ÙØ§Ø¦Ù„ Ù¾ÛÙ„Û’ ÛÛŒ موجود ÛÛ’! کیا اس Ú©Û’ اوپر Ù„Ú©Ú¾ دیا جائے؟" #~ msgid "Select and show first item after search" #~ msgstr "تلاش Ú©Û’ بعد Ù¾Ûلا عنصر منتخب کریں اور دکھائیں" #~ msgid "Order" #~ msgstr "ترتیب" #~ msgid "Mode" #~ msgstr "انداز" #~ msgid "Ascending" #~ msgstr "صعودی" #~ msgid "Descending" #~ msgstr "نزولی" #~ msgid "Sorting" #~ msgstr "ترتیب" #~ msgid "Contact map location" #~ msgstr "رابطے کا Ù†Ù‚Ø´Û Ù¾Ø± مقام" osmo-0.2.14/po/ro.po000664 001750 001750 00000112555 12561325524 014141 0ustar00pasppasp000000 000000 # Romanian traslation of Osmo # This file is distributed under the same license as the Osmo package. # Alexandru GAVRIȘ , 2013. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2011-04-08 23:20+0200\n" "Last-Translator: Alexandru GavriÈ™ \n" "Language-Team: Romanian ro \n" "Language: ro\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" msgid "About" msgstr "Despre" msgid "Close" msgstr "ÃŽnchide" msgid "Ctrl+PageUp" msgstr "Ctrl+PaginăSus" msgid "switch to previous tab" msgstr "mută la fila precedentă" msgid "Ctrl+PageDn" msgstr "Ctrl+PaginăJos" #, fuzzy msgid "switch to next tab" msgstr "mută la următoarea filă" msgid "switch to selected page" msgstr "mută la pagina aleasă" msgid "show options window" msgstr "arată fereastra de opÈ›iuni" msgid "show about window" msgstr "arată fereastra despre" msgid "toggle fullscreen mode" msgstr "comută în modul complet" msgid "PageUp/PageDn" msgstr "PaginăSus/PaginăJos" msgid "switch page in options and about tab" msgstr "mută pagina la fila de opÈ›iuni si despre" msgid "exit" msgstr "termină" msgid "Space" msgstr "SpaÈ›iu" msgid "select current date" msgstr "alege data curentă" msgid "Ctrl+Space" msgstr "Ctrl+SpaÈ›iu" msgid "toggle personal data visibility" msgstr "comută vizibilitatea datelor personale" msgid "Arrows" msgstr "SăgeÈ›i" msgid "change day" msgstr "modifică ziua" msgid "Ctrl+Up/Down" msgstr "Ctrl+Sus/Jos" msgid "scroll the contents in the day info panel" msgstr "derulează conÈ›inutul din secÈ›iunea info" msgid "change month" msgstr "modifică luna" msgid "Home/End" msgstr "Acasă/Final" msgid "change year" msgstr "modifică anul" msgid "toggle calendars for the previous and next month" msgstr "comută calendare pentru luna precedentă È™i cea următoare" msgid "day notes browser" msgstr "inspectarea notiÈ›elor zilnice " msgid "assign background color to day note" msgstr "alocă culoare de fundal pentru notiÈ›a zilei" msgid "date calculator" msgstr "calculator de zile" msgid "show full-year calendar" msgstr "redă calendarul pe tot anul" msgid "jump to date" msgstr "treci la zi" msgid "Delete" msgstr "Șterge" msgid "remove day note" msgstr "elimină notiÈ›a zilei" msgid "Alt+Arrows" msgstr "Alt+SăgeÈ›i" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "închide editorul" msgid "toggle bold" msgstr "comută accentuat/bold" msgid "toggle italic" msgstr "comută cursiv" msgid "toggle underline" msgstr "comută subliniere" msgid "toggle strikethrough" msgstr "comută tăiat" msgid "toggle highlight" msgstr "comută evidenÈ›iere" msgid "Arrows Up/Down" msgstr "Săgeată Sus/Jos" msgid "toggle alternative view" msgstr "comută vizualizare alternativă" msgid "year info" msgstr "informaÈ›ii anuale" msgid "set current year" msgstr "stabilieÈ™te anul curent" msgid "close full-year calendar" msgstr "închide calendarul pe un an complet" msgid "Alt+a, Insert" msgstr "Alt+a, Introdu" msgid "add task" msgstr "adaugă sarcină" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "modifică sarcina" msgid "Alt+r, Delete" msgstr "Atl+r, Șterge/Delete" msgid "remove task" msgstr "elimină sarcina" msgid "toggle hidden tasks" msgstr "alternează sarcinile ascunse" msgid "activate search field" msgstr "activează cîmpul de căutare" msgid "Left, Right" msgstr "Left, Right" msgid "change category filter" msgstr "schimbă filtrul de categorii" msgid "close task info panel" msgstr "închide secÈ›iunea de informaÈ›ii cu sarcini" msgid "Insert" msgstr "Introdu" msgid "add contact" msgstr "adaugă contact" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "modifică contactul" msgid "remove contact" msgstr "elimină contactul" msgid "change search mode" msgstr "schimbă modul de căutare" msgid "close contact details panel" msgstr "închide secÈ›iunea de detalii de contact" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "deschide însemnare" msgid "add note" msgstr "adaugă însemnare" msgid "remove note" msgstr "elimină însemnare" msgid "edit note name and category" msgstr "modifică numele însemnării È™i categoria" msgid "close note editor" msgstr "închide editorul de însemnări" msgid "save note" msgstr "salvează însemnarea" msgid "find text" msgstr "caută text" msgid "clear selection attributes" msgstr "È™terge atributele selecÈ›iei" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO a fost proiectat pentru a se mula preferinÈ›elor utilizatorului, a.î. " "sunt multe scurtături de taste. Lista completă:" msgid "General" msgstr "Generalități" msgid "Calendar" msgstr "Calendar" msgid "Note editor" msgstr "Editor de însemnări" msgid "Full-year calendar" msgstr "Calendar anual complet" msgid "Tasks" msgstr "Sarcini" msgid "Contacts" msgstr "Contacte" msgid "Notes" msgstr "ÃŽnsemnări" msgid "Selector" msgstr "Selector" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Organizator personal" msgid "compiled on" msgstr "compilat pe" msgid "Programming" msgstr "Programare" msgid "Graphics" msgstr "Grafică" msgid "Contributors" msgstr "Contributori" msgid "Translators" msgstr "Traducători" msgid "Mailing lists" msgstr "Liste de mesaje" msgid "Bug tracker" msgstr "Vînător de erori" msgid "Feature requests" msgstr "Solicită funcÈ›ii" msgid "Available modules" msgstr "Module disponibile" msgid "Compiled-in features" msgstr "FuncÈ›ii procesate" msgid "iCalendar support" msgstr "suport de iCalendar" msgid "Encrypted notes support" msgstr "Suport de însemnări encriptate" msgid "Backup support" msgstr "Suport de sigurantă" msgid "Printing support" msgstr "Suport de printare" msgid "Spell checker support" msgstr "Suport gramatical" msgid "version" msgstr "versiune" msgid "SVN revision" msgstr "SVN revizuire" msgid "Key shortcuts" msgstr "Scurtături de taste" msgid "License" msgstr "LicenÈ›a" msgid "Save backup" msgstr "Salvează copia" msgid "Password protection" msgstr "ProtecÈ›ia parolei" msgid "Enter password" msgstr "Scrie parola" msgid "Re-enter password" msgstr "Rescrie parola" msgid "Please enter the password" msgstr "Scrie parola, te rog!" msgid "Passwords do not match!" msgstr "Parole nepotrivite!" msgid "Cannot create backup!" msgstr "Crearea siguranÈ›ei imposibilă" msgid "Backup file saved successfully!" msgstr "Documentul de siguranță a fost salvat!" msgid "Open backup file" msgstr "Deschide documentul de siguranță" msgid "Osmo backup files (*.bck)" msgstr "Documentele de siguranță Osmo (*.bkp)" msgid "This is not Osmo backup file" msgstr "Nu este copia de siguranță OSMO" msgid "Incorrect password!" msgstr "Parolă greÈ™ită" msgid "All your data will be replaced with backup file content." msgstr "Toate datele vor fi înlocuite de copia de siguranță." msgid "Are you sure?" msgstr "Sigur?" msgid "Osmo has to be restarted now..." msgstr "Osmo necesită reiniÈ›ializare..." msgid "was born" msgstr "a fost născut" msgid "year old" msgid_plural "years old" msgstr[0] "ani" msgstr[1] "ani" msgid "Current time" msgstr "Timp curent" msgid "Day number" msgstr "Numarul zilei" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "zi pînă la finalul anului" msgstr[1] "zile pînă la finalul anului" msgid "the last day of the year" msgstr "ultima zi din an" msgid "Today distance" msgstr "DistanÈ›a totală" msgid "Week number" msgstr "Numărul săptămînii" msgid "Marked days" msgstr "Zilele însemnate" msgid "Weekend days" msgstr "Zilele de final de saptămînă" msgid "Moon phase" msgstr "Faza lunii" msgid "Zodiac sign" msgstr "Semnul zodiacal" msgid "Day notes" msgstr "ÃŽnsemnările zilei" msgid "Day tasks" msgstr "Sarcinile zilei" msgid "Birthday" msgstr "Zi de naÈ™tere" msgid "Day category" msgstr "Categoria zilei" msgid "Selected day note will be removed." msgstr "Zilele selectate vor fi eliminate" msgid "Continue?" msgstr "Continuă?" msgid "Previous year" msgstr "Anul precedent" msgid "Previous month" msgstr "Luna precendtă" msgid "Previous day" msgstr "Ziua precedentă" msgid "Today" msgstr "Azi" msgid "Next day" msgstr "Ziua următoare" msgid "Next month" msgstr "Luna următoare" msgid "Next year" msgstr "Anul următor" msgid "Jump to date" msgstr "Sări la dată" msgid "Print calendar" msgstr "Imprimă calendarul" msgid "Date calculator" msgstr "Calculator de date" #, fuzzy msgid "Backup data" msgstr "de Rezervă" #, fuzzy msgid "Restore data" msgstr "Refă" msgid "Preferences" msgstr "PreferinÈ›e" msgid "Quit" msgstr "Renunță" msgid "Toggle day note panel" msgstr "Alternează secÈ›iunea cu însemnările zilei" msgid "Add task" msgstr "Adaugă sarcină" msgid "Select day color" msgstr "Selecteaza culoarea zilei" msgid "Browse notes" msgstr "RăsfoieÈ™te însemnările" msgid "Browse iCal events" msgstr "RăsfoieÈ™te evenimente iCal" msgid "Export to iCal file" msgstr "Exportă către documentul iCal" msgid "Previous and next month" msgstr "Luna precedentă È™i următoare" msgid "Close note panel" msgstr "ÃŽnchide secÈ›iunea de însemnări" msgid "Highlight" msgstr "EvidenÈ›iere" msgid "Strikethrough" msgstr "Tăiere" msgid "Underline" msgstr "Subliniere" msgid "Italic" msgstr "Cursiv" msgid "Bold" msgstr "Accentuat/Bold" msgid "Insert timeline" msgstr "Inserează linie de timp" msgid "Clear text" msgstr "Curăță text" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Alege culoare" msgid "None" msgstr "Niciuna" msgid "Cancel" msgstr "Anulează" msgid "OK" msgstr "Bine" msgid "year" msgid_plural "years" msgstr[0] "an" msgstr[1] "ani" msgid "month" msgid_plural "months" msgstr[0] "lună" msgstr[1] "luni" msgid "day" msgid_plural "days" msgstr[0] "zi" msgstr[1] "zile" msgid "hour" msgid_plural "hours" msgstr[0] "oră" msgstr[1] "ore" msgid "minute" msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minute" msgid "second" msgid_plural "seconds" msgstr[0] "secundă" msgstr[1] "secunde" msgid "or" msgstr "sau" msgid "rounded down" msgstr "rotunjire" msgid "week" msgid_plural "weeks" msgstr[0] "săptămînă" msgstr[1] "săptamîni" msgid "working day" msgid_plural "working days" msgstr[0] "zi de lucru" msgstr[1] "zile de lucru" msgid "time is ignored" msgstr "timpul este ignorat" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "zi de sfîrÈ™it de săptămînă (sds)" msgstr[1] "zile de sds" msgid "This calculator only supports dates after year 1." msgstr "Acest calculator suportă doar datele de după anul 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "ziua sfs e ignorată" msgstr[1] "zilele sfs sunt ignorate" msgid "Year" msgstr "An" msgid "Month" msgstr "Lună" msgid "Day" msgstr "Zi" msgid "Current date" msgstr "Data curentă" msgid "Set current date" msgstr "PotriveÈ™te data curentă" msgid "Hour" msgstr "Ora" msgid "Minute" msgstr "Minut" msgid "Second" msgstr "Secundă" msgid "Set current time" msgstr "PotriveÈ™te timpul curent" msgid "Reset time" msgstr "Anulează timpul" msgid "First date and time" msgstr "Prima data È™i timpul" msgid "Second date and time" msgstr "A doua dată È™i timpul" msgid "Alternative time units" msgstr "Unități de timp alternative" msgid "Result" msgstr "Rezultat" msgid "Duration between two dates" msgstr "Durata dintre 2 date" msgid "Operation" msgstr "OperaÈ›iune" msgid "add" msgstr "adaugă" msgid "subtract" msgstr "scade" msgid "Date and time to add or subtract from" msgstr "Data È™i timpul adăugat sau scăzut din" msgid "Years" msgstr "Ani" msgid "Months" msgstr "Luni" msgid "Days" msgstr "Zile" msgid "Weeks" msgstr "Săptămîni" msgid "Hours" msgstr "Zile" msgid "Minutes" msgstr "Minute" msgid "Seconds" msgstr "Secunde" msgid "Ignore weekend days" msgstr "Ignoră zilele sfd" msgid "Reset fields" msgstr "Anulează cîmpurile" msgid "Time to add or subtract" msgstr "Timpul de adăugat sau scăzut" msgid "Jump to" msgstr "Sări la" msgid "Add to or subtract from a date" msgstr "Adaugă sau scade dintr-o dată" msgid "Leap year" msgstr "An bisect" msgid "Yes" msgstr "Da" msgid "No" msgstr "Nu" msgid "Chinese year animal" msgstr "Animal din anul chinez" msgid "Number of days" msgstr "Număr de zile" msgid "Number of weeks" msgstr "Număr de săptămîni" msgid "Number of weekend days" msgstr "Număr de zile de sfs" msgid "Year info" msgstr "InformaÈ›ii anuale" msgid "Current year" msgstr "Anul curent" msgid "Alternative view" msgstr "Vedere alternativă" msgid "event" msgid_plural "events" msgstr[0] "eveniment" msgstr[1] "evenimente" msgid "No valid calendars defined" msgstr "Nici un calendar valid definit" msgid "iCalendar events" msgstr "evenimente iCalendar" msgid "Date" msgstr "Data" msgid "Time" msgstr "Timpul" msgid "Summary" msgstr "Sumar" msgid "Select output file" msgstr "Selectează fila de ieÈ™ire" msgid "The list will be cleared and all entries will be lost." msgstr "Lista va fi curățată È™i toate informaÈ›iile vor fi pierdute." msgid "Done!" msgstr "Gata!" msgid "event exported" msgid_plural "events exported" msgstr[0] "eveniment exportat" msgstr[1] "evenimente exportate" msgid "iCalendar export" msgstr "export de iCalendar" msgid "Day Selector" msgstr "Selectorul zilei" msgid "Use date period" msgstr "FoloseÈ™te perioada" msgid "Add" msgstr "Adaugă" msgid "Clear" msgstr "Curăță" msgid "Remove" msgstr "Elimină" msgid "Output filename" msgstr "Numele filei de ieÈ™ire" msgid "Browse" msgstr "RăsfoieÈ™te" msgid "Export" msgstr "Exportă" msgid "no entries" msgstr "nici o intrare" msgid "entry" msgid_plural "entries" msgstr[0] "intrare" msgstr[1] "intrări" msgid "Calendar notes" msgstr "NotiÈ›e din calendar" msgid "Search" msgstr "Caută" msgid "Filter" msgstr "Filtru" msgid "Current month" msgstr "Luna curentă" msgid "Selected month" msgstr "Selectează luna" msgid "Selected year" msgstr "Selectează anual" msgid "Selected month and year" msgstr "Selectează luna È™i anul" msgid "All notes" msgstr "Toate însemnările" msgid "Case sensitive" msgstr "Caractere sensibile " msgid "Strikethrough past day notes" msgstr "Taie însemnările din ultima zi" msgid "Note" msgstr "Notiță" msgid "Syntax" msgstr "Syntaxa" msgid "abbreviated weekday name" msgstr "numele abreviat al sf.d.s" msgid "full weekday name" msgstr "numele complet al sf.d.s" msgid "abbreviated month name" msgstr "numele abreviat al lunii" msgid "full month name" msgstr "numele complet al lunii" msgid "day of the month" msgstr "ziua lunii" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "ziua lunii fără zero" msgid "year without century" msgstr "an fără secol" msgid "year with century" msgstr "an cu secol" msgid "Date header format" msgstr "Formatul de antet al zilei" msgid "Set default format" msgstr "PotriveÈ™te formatul implicit" msgid "Date format syntax" msgstr "Syntaxa formatului zilei" msgid "Day note marker" msgstr "Semnal al însemnării zilnice" msgid "Event marker" msgstr "Semnal de eveniment" msgid "Circle" msgstr "Cerc" msgid "Ellipse" msgstr "Elipsă" msgid "Wave" msgstr "Val" msgid "Current day marker" msgstr "Semnalul zilei curente" msgid "Arrow" msgstr "Săgeată" msgid "Free-hand circle" msgstr "Cercuri manuale" msgid "Colors" msgstr "Culori" msgid "Header color" msgstr "Culoarea antetului" msgid "Weekend days color" msgstr "Culoarea zilelor de sds" msgid "Cursor color" msgstr "Culoare cursorului" msgid "Event marker color" msgstr "Culoarea semnalului de eveniment" msgid "Current day marker color" msgstr "Culoarea semnalului pentru ziua curentă" msgid "Birthday marker color" msgstr "Culoare semnalui zilei de naÈ™tere" msgid "Date font" msgstr "Typefaceul datei" msgid "Calendar font" msgstr "Typefaceul calendarului" msgid "Note font" msgstr "Typefaceul însemnării" msgid "Enable block cursor" msgstr "Activează cursorul de tip bloc" msgid "Cursor thickness" msgstr "Grosimea cursorului" msgid "Thin" msgstr "SubÈ›ire" msgid "Thick" msgstr "Grosime" msgid "Edit category" msgstr "Editează categoria" msgid "Color" msgstr "Culoare" msgid "Name" msgstr "Nume" msgid "Select ICS file" msgstr "Alege fila ICS" msgid "All Files" msgstr "Toate filele" msgid "Calendar files (*.ics)" msgstr "Filele calendarului (*.ics)" msgid "Modify ICAL parameters" msgstr "Modifică parametri ICAL" msgid "Filename" msgstr "Numele filei" msgid "Options" msgstr "OpÈ›iuni" msgid "Disabled" msgstr "Dezactivate" msgid "Valid" msgstr "Valid" msgid "Description" msgstr "Descriere" msgid "Full date" msgstr "Data completă" msgid "Mark" msgstr "Semnal" msgid "Week start on Monday" msgstr "Săptămîna începe luni" msgid "Show day names" msgstr "Arată numele zilei" msgid "No month change" msgstr "Nici o schimbare a lunii" msgid "Show week numbers" msgstr "Arată numerele de saptămînă" msgid "Simple view in full-year calendar" msgstr "Vedere simplă in modul de calendar pe an" msgid "Enable auxilary calendars" msgstr "Activează calendare auxiliare" msgid "Ascending sorting in day notes browser" msgstr "Sortare ascendentă in însemnările zilei" msgid "Enable spell checker in day notes" msgstr "Activează corectorul gramatical în însemnările zilei" msgid "Show seconds" msgstr "Arată secunde" msgid "Appearance" msgstr "ÃŽnfățiÈ™are" msgid "Day categories" msgstr "Categorii de zile" msgid "iCalendar files" msgstr "Filele iCalendar" msgid "Show in day info panel" msgstr "Arată în secÈ›iunea de informaÈ›ii ale zilei" msgid "Name day" msgstr "Nume zi" msgid "Error printing" msgstr "Eroare de printare" msgid "Printing properties" msgstr "Proprietăți de printare" msgid "Month name" msgstr "Numele lunii" msgid "Day name" msgstr "Numele zi" msgid "Events" msgstr "Evenimente" msgid "Fonts" msgstr "Typefaceuri" msgid "Birthdays" msgstr "Zile de naÈ™tere" msgid "Namedays" msgstr "Numele zilelor" msgid "Visible events" msgstr "Evenimente vizibile" msgid "Padding" msgstr "CăptuÈ™eală" msgid "Event maximum length" msgstr "Lungimea maximă a evenimentului" msgid "Page orientation:" msgstr "Orientarea paginii:" msgid "Portrait" msgstr "Portret" msgid "Landscape" msgstr "Orizontal" msgid "Timeline" msgstr "Cronologie" msgid "From (hour)" msgstr "De la (ora)" msgid "Step (minutes)" msgstr "Pas (minute)" msgid "To (hour)" msgstr "La (ora)" msgid "No date" msgstr "Fără dată" msgid "Rat" msgstr "Șobolan" msgid "Ox" msgstr "Bivol" msgid "Tiger" msgstr "Tigru" msgid "Hare" msgstr "Iepure" msgid "Dragon" msgstr "Dragon" msgid "Snake" msgstr "Șarpe" msgid "Horse" msgstr "Cal" msgid "Sheep" msgstr "Oaie" msgid "Monkey" msgstr "Maimuță" msgid "Fowl" msgstr "Găină" msgid "Dog" msgstr "Cîine" msgid "Pig" msgstr "Porc" msgid "Unknown" msgstr "Necunoscut" msgid "Aquarius" msgstr "Vărsător" msgid "Pisces" msgstr "PeÈ™ti" msgid "Aries" msgstr "Berbec" msgid "Taurus" msgstr "Taur" msgid "Gemini" msgstr "Gemeni" msgid "Cancer" msgstr "Rac" msgid "Leo" msgstr "Leu" msgid "Virgo" msgstr "Fecioră" msgid "Libra" msgstr "Balanță" msgid "Scorpio" msgstr "Scorpion" msgid "Sagittarius" msgstr "Săgetător" msgid "Capricorn" msgstr "Capricorn" msgid "Cannot perform selected operation." msgstr "Nu se poate opera acÈ›iunea aleasă" msgid "Task has been modified or removed." msgstr "Sarcina a fost modificată sau eliminată" msgid "Remind me later" msgstr "AminteÈ™te-mi mai tîrziu" msgid "Done" msgstr "Gata" msgid "postponed" msgstr "amînat" msgid "Show task" msgstr "Arată sarcina" msgid "Alarm warning!" msgstr "Alertă!" msgid "Day note" msgstr "ÃŽnsemnarea zilei" msgid "Type" msgstr "Tip" msgid "Event" msgstr "Eveniment" msgid "Task" msgstr "Sarcină" msgid "Show Osmo" msgstr "Arată Osmo" msgid "No birthdays defined" msgstr "Nici o zi de naÈ™tere definită" msgid "Birthdays list" msgstr "Lista cu zile de naÈ™tere" msgid "Days to birthday" msgstr "Zile pînă la ziua de naÈ™tere" msgid "Age" msgstr "Vîrsta" msgid "Birthday date" msgstr "Data datei de naÈ™tere" msgid "today" msgstr "azi" msgid "Please select address" msgstr "Selectează adresa" msgid "Information" msgstr "InformaÈ›ii" msgid "Work" msgstr "Lucru" msgid "Home" msgstr "Acasă" msgid "Group" msgstr "Grup" msgid "First name" msgstr "Nume" msgid "Last name" msgstr "Prenume" msgid "Second name" msgstr "Al doilea nume" msgid "Nickname" msgstr "Poreclă" msgid "Tags" msgstr "Etichete" msgid "Name day date" msgstr "NumeÈ™te ziua datei" msgid "Home address" msgstr "Adresa de acasă" msgid "Home postcode" msgstr "Codul poÈ™tal de acasă" msgid "Home city" msgstr "OraÈ™ul natal" msgid "Home state" msgstr "JudeÈ›ul natal" msgid "Home country" msgstr "Èšara de origine" msgid "Organization" msgstr "OrganizaÈ›ia" msgid "Department" msgstr "Departament" msgid "Work address" msgstr "Adresa de serviciu" msgid "Work postcode" msgstr "Codul poÈ™tal de la serviciu" msgid "Work city" msgstr "OraÈ™ul serviciului" msgid "Work state" msgstr "JudeÈ›ul serviciului" msgid "Work country" msgstr "Èšara serviciului" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefonul de acasă" msgid "Home phone 2" msgstr "Telefonul de acasă 2" msgid "Home phone 3" msgstr "Telefonul de acasă 3" msgid "Home phone 4" msgstr "Telefonul de acasă 4" msgid "Work phone" msgstr "Telefonul de serviciu" msgid "Work phone 2" msgstr "Telefonul de serviciu 2" msgid "Work phone 3" msgstr "Telefonul de serviciu 3" msgid "Work phone 4" msgstr "Telefonul de serviciu 4" msgid "Cell phone" msgstr "Telefon mobil" msgid "Cell phone 2" msgstr "Telefon mobil 2" msgid "Cell phone 3" msgstr "Telefon mobil 3" msgid "Cell phone 4" msgstr "Telefon mobil 4" msgid "E-Mail" msgstr "E-mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WwW" msgid "WWW 2" msgstr "WwW 2" msgid "WWW 3" msgstr "WwW 3" msgid "WWW 4" msgstr "WwW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Fotografie" msgid "Additional info" msgstr "InformaÈ›ii suplimentare" msgid "New contact" msgstr "Contact nou" msgid "Remove contact" msgstr "Elimină contact" msgid "Edit contact" msgstr "Editează contact" msgid "Show birthdays" msgstr "Arată zile de naÈ™tere" msgid "Show contact location on the map" msgstr "Arată amplasarea contactului pe hartă" msgid "Import contacts" msgstr "Importa contacte" msgid "Export contacts" msgstr "Exportă contacte" msgid "First Name" msgstr "Nume" msgid "Last Name" msgstr "Prenume" msgid "All fields" msgstr "Toate cîmpurile" msgid "Contact details" msgstr "Detaliile de contact" msgid "Close contact panel" msgstr "ÃŽnchide panoul" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contact exportat" msgstr[1] "contacte exportate" msgid "Cannot create file." msgstr "Nu se poate crea document." msgid "Output format" msgstr "Format rezultat" msgid "Add header" msgstr "Adaugă antet" msgid "Fields to export" msgstr "Cîmpuri de export" msgid "All" msgstr "Toate" msgid "Invert" msgstr "Inversează" msgid "Select fields" msgstr "Selectează cîmpurile" msgid "Select CSV file" msgstr "Selectează document CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "documente CSV (valori delimitate de virgulă) (*.csv)" msgid "Please select file first." msgstr "Selectează documentul mai întîi" msgid "Import type" msgstr "Importa tipul" msgid "File" msgstr "Document" msgid "Input filename" msgstr "Introdu numele documentului" msgid "Import" msgstr "Importă" msgid "Nothing to import." msgstr "Nimic de importat" msgid "contact added" msgid_plural "contacts added" msgstr[0] "contact adăugat" msgstr[1] "contacte adăugate" msgid "of" msgstr "din" msgid "Record" msgstr "ÃŽnregistrare" msgid "Number fields per record" msgstr "Numărul de cîmpuri/înregistrare" msgid "Use first record as header" msgstr "Utilizează prima înregistrare ca antet" msgid "Field type" msgstr "Tipul cîmpului" msgid "Value" msgstr "Valoare" msgid "No records found in selected file." msgstr "Nici o înregistrare în fiÈ™ierul selectat." msgid "Cannot read file." msgstr "Nu se poate citi fiÈ™ierul." msgid "Cannot open file." msgstr "Nu se poate deschide fiÈ™ierul." msgid "Selected contact will be removed." msgstr "Contactele selectate vor fi eliminate." msgid "Select photo" msgstr "Alege poza" msgid "Address" msgstr "Adresa" msgid "Postcode" msgstr "Nr. poÈ™tal" msgid "City" msgstr "OraÈ™ul" msgid "State" msgstr "JudeÈ›ul" msgid "Country" msgstr "Èšara" msgid "Add contact" msgstr "Adaugă contact" msgid "Personal" msgstr "Personal" msgid "Phones" msgstr "Telefoane" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Culoarea etichetelor de contact" msgid "Color of links" msgstr "Culoarea legăturilor" msgid "Font size" msgstr "Dimensiune font" msgid "Name font size" msgstr "Dimensiunea fontului pentru nume" msgid "Item font size" msgstr "Dimensiuneaa fontului pentru obiect" msgid "Photo size" msgstr "Dimensiunea pozei" msgid "Small" msgstr "Mică" msgid "Medium" msgstr "Medie" msgid "Large" msgstr "Mare" msgid "Hide group column" msgstr "Ascunde grupul de coloane" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Diverse" msgid "Groups" msgstr "Grupuri" msgid "Visible columns in birthday browser" msgstr "Coloanele vizibile în răsfoitorul zilei de naÈ™tere" msgid "Show calendar" msgstr "Arată calendar" msgid "Show tasks" msgstr "Arată sarcini" msgid "Show contacts" msgstr "Arată contacte" msgid "Show notes" msgstr "Arată notiÈ›e" msgid "Show options" msgstr "Arată opÈ›iuni" msgid "Show small calendar window" msgstr "Arată calendar în fereastră mică" msgid "Check for events since last run" msgstr "Verifică evenimente noi" msgid "Number of days to check forward for events (default: 0)" msgstr "Nr. de zile de verificat înainte pentru evenimente (default: 0" msgid "Set absolute path for settings and data files" msgstr "StabileÈ™te calea implicită pentru setări È™i fiÈ™ierele cu date" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "organizator personal comod" msgid "ERROR: Cannot create config files" msgstr "EROARE: Nu se pot crea fiÈ™ierele de configure" msgid "Another copy of OSMO is already running." msgstr "Altă copie de OSMO rulează deja" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Utilizarea simultană a 2 sau mai multe copii de OSMO poate determina " "pierderi de date." msgid "Do you really want to continue?" msgstr "DoreÈ™ti să continui?" msgid "Warning" msgstr "AtenÈ›ionare" msgid "The note has changed." msgstr "ÃŽnsemnarea s-a modificat." msgid "Do you want to save it?" msgstr "DoreÈ™ti salvarea ei?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Nici o înregistrare în fiÈ™ierul selectat." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "DoreÈ™ti să continui?" msgid "Question" msgstr "ÃŽntrebări" msgid "Words" msgstr "Cuvinte" msgid "Lines" msgstr "Rînduri" msgid "Characters" msgstr "Caractere" msgid "White characters" msgstr "Caractere goale" msgid "Bytes" msgstr "BiÈ›i" msgid "Document" msgstr "Document" msgid "Selection" msgstr "SelecÈ›ie" msgid "Created" msgstr "Creat" msgid "Modified" msgstr "Modificat" msgid "New note" msgstr "ÃŽnsemnare nouă" msgid "Add note" msgstr "Adaugă însemnare" msgid "Edit note" msgstr "Editează" msgid "Delete note" msgstr "Șterge însemnare" msgid "Remove note" msgstr "Elimină însemnare" msgid "Find" msgstr "Caută" msgid "Clear attributes" msgstr "Anulează atributele" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Salveză însemnare" msgid "Insert current date and time" msgstr "Introdu data È™i timpul curent" msgid "Insert separator" msgstr "Introdu separator" msgid "Statistics" msgstr "Statistici" msgid "Close editor" msgstr "ÃŽnchide editor" msgid "Toggle spell checker" msgstr "Alterneză corector lingvistic" msgid "Category" msgstr "Categorie" msgid "Note name" msgstr "Nume însemnare" msgid "Last changes" msgstr "Ultimele schimbări" msgid "Read-only" msgstr "Doar-citire" msgid "Line" msgstr "Rînd" msgid "Column" msgstr "Coloană" msgid "case sensitive" msgstr "caractere sensibile" msgid "Close find entry" msgstr "ÃŽnchide cîmpul căutării" msgid "Edit entry" msgstr "Editează cîmpul" msgid "Remember cursor position" msgstr "ReÈ›ine poziÈ›ia cursorului" msgid "Selected note will be removed." msgstr "ÃŽnsemnarea selectată va fi eliminată." msgid "No further data recovery will be possible." msgstr "Recuperarea datelor va fi imposibilă." msgid "Plain" msgstr "Simplu" msgid "Encrypted" msgstr "Encriptat" msgid "Note type" msgstr "Tipul însemnării" msgid "Cannot open the note." msgstr "Nu se poate deschide însemnarea." msgid "encryption support is disabled" msgstr "suportul de encriptare e dezactivat." msgid "Authorization" msgstr "Autorizare" msgid "Algorithm" msgstr "Algoritm" msgid "Hashing" msgstr "Amestec/Hashing" msgid "Compression" msgstr "Compresie" msgid "Ratio" msgstr "Rata" msgid "Fast" msgstr "Rapidă" msgid "Good" msgstr "Bună" msgid "Best" msgstr "Excelentă" msgid "Remember the last selected category" msgstr "ReÈ›ine ultima categorie selectată" msgid "Use system format for date and time" msgstr "Utilizează formatul sistemului pentru dată, timp" msgid "Encryption" msgstr "Encriptare" msgid "Visible columns" msgstr "Coloane vizibile" msgid "Categories" msgstr "Categorii" msgid "Notes options" msgstr "OpÈ›iunile însemnărilor" msgid "Osmo has to be restarted to take effect." msgstr "Osmo trebuie repornit pentru reiniÈ›ializare." msgid "Layout" msgstr "Schemă" msgid "Vertical" msgstr "Verticală" msgid "Horizontal" msgstr "Orizontală" msgid "Tabs position" msgstr "PoziÈ›ia tabului" msgid "Left" msgstr "Stînga" msgid "Right" msgstr "Dreapta" msgid "Top" msgstr "Sus" msgid "Bottom" msgstr "Jos" msgid "Use default stock icons" msgstr "Utilizează simbolurile grafice implicite" msgid "Disable underline in links" msgstr "Dezactiveză sublinierea din legături" msgid "Draw rows in alternating colors" msgstr "Trasează rînduri colorate alternativ" msgid "Show exit button in toolbar" msgstr "Arată butonul de ieÈ™ire în bara de unelte" msgid "At least one module must be visible." msgstr "Măcar 1 modul trebuie să fie vizibil." msgid "Override locale settings" msgstr "Suprascrie reglajele locale" msgid "Date format" msgstr "Formatul datei" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "Formatul timpului" msgid "hours" msgstr "ore" msgid "Spell checker language" msgstr "Corector lingvistic" msgid "Enable tooltips" msgstr "Activează ponturi" msgid "Remember last selected page" msgstr "ReÈ›ine ultima pagină selectată" msgid "Save data after every modification" msgstr "Salvează datele după fiecare modificare" msgid "Web browser" msgstr "WWW" msgid "E-mail client" msgstr "Client de e-mail" msgid "Sound player" msgstr "Player de sunet" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Tiparul %s va fi înlocuit cu adresa web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Tiparul %s va fi înlocuit cu adresa e-mail" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Tiparul %s va fi înlocuit cu fiÈ™ierul de sunet" msgid "Enable system tray" msgstr "Activeză 'system tray'" msgid "Start minimised" msgstr "PorneÈ™te minimizat" msgid "Blink on events" msgstr "ClipeÈ™te la evenimente" msgid "Ignore day note events" msgstr "Ignoră evenimentele cu însemnări zilnice" msgid "Hide" msgstr "Ascunde" msgid "Helpers" msgstr "Ajutoare" msgid "System tray" msgstr "'System tray'" msgid "Edit" msgstr "Editează" msgid "Go Down" msgstr "ÃŽn jos" msgid "Select date" msgstr "Alege data" msgid "Select font" msgstr "Alege font" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculator" msgid "Edit day note" msgstr "Editează însemnarea zi" msgid "Save" msgstr "Salvează" msgid "Display full-year calendar" msgstr "AfiÈ™ează calendarul pe tot anul" msgid "Help" msgstr "Ajutor" msgid "Invalid item" msgstr "Termen incorect" msgid "Valid item" msgstr "Termen corect" msgid "Edit task" msgstr "Editează sarcina" msgid "Remove task" msgstr "ÃŽndepărtează sarcina" msgid "Import tasks" msgstr "Importă sarcini" msgid "Export tasks" msgstr "Exportă sarcini" msgid "Change to previous date" msgstr "Modifică cu data anterioară" msgid "Change to next date" msgstr "Modifică cu data următoare" msgid "Print" msgstr "Printează" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Recurent" msgid "Started" msgstr "Pornit" msgid "Finished" msgstr "Terminat" msgid "All items" msgstr "Toate obiectele" msgid "New task" msgstr "Sarcină nouă" msgid "Change due date to previous date" msgstr "Modifică data scadentă cu data anterioară" msgid "Change due date to next date" msgstr "Modifică data scadentă cu data următoare" msgid "Print visible tasks list" msgstr "Printează lista sarcinilor vizibile" msgid "Due date" msgstr "Data scadentă" msgid "Priority" msgstr "Prioritate" msgid "Task details" msgstr "Detaliile sarcinii" msgid "Close description panel" msgstr "ÃŽnchide panoul descriptiv" msgid "No tasks with defined date found." msgstr "Nici o sarcină cu dată definită gasită" msgid "Save tasks" msgstr "Salvează sarcini" msgid "tasks exported" msgstr "sarcini exportate" msgid "Please select at least one day when recurrency is enabled." msgstr "Selectează măcar 1 zi cînd recurenÈ›a e activată." msgid "Set time" msgstr "PotriveÈ™te timpul" msgid "Tomorrow" msgstr "Mîine" msgid "Selected task will be removed." msgstr "Sarcina selectată va fi îndepărtată." msgid "Basic" msgstr "Primar" msgid "Select date and time" msgstr "Alege data È™i timpul" msgid "Low" msgstr "Mic" msgid "High" msgstr "Mare" msgid "Enable sound notification" msgstr "Activează semnal sonor" #, fuzzy msgid "Enable notification dialog" msgstr "Activează semnal sonor" msgid "Advanced" msgstr "Avansat" msgid "Alarm warning" msgstr "Avertizare de alarmă" msgid "Postpone time" msgstr "Timp amînat" msgid "Alarm command" msgstr "Comandă de alarmă" msgid "Recurrent task" msgstr "Sarcină recurentă" msgid "Enable" msgstr "Activează" msgid "Start" msgstr "ÃŽnceput" msgid "End" msgstr "SfîrÈ™it" msgid "Interval" msgstr "Intervat" msgid "Time period" msgstr "Perioada orei" msgid "Date period" msgstr "Perioda zilei" msgid "Repeat" msgstr "Repetă" msgid "Repeat in the following days" msgstr "Repetă în zilele următoare" msgid "Ignore alarm when task expired offline" msgstr "Ignoră alarma cînd sarcinile au expirat" msgid "Select a font..." msgstr "Alege un font..." msgid "Color of items that are due today" msgstr "Culoarea obiectelor scadente azi" msgid "Color of items that are due in the next 7 days" msgstr "Culoarea obiectelor scadente în 7 zile" msgid "Color of items that are past due" msgstr "Culoarea obiectelor scadente în..." msgid "Task info font" msgstr "Fontul sarcinii info" msgid "Show in bold tasks with high priority" msgstr "Arată boldat sarcinile cu prioritate mare" msgid "Hide completed tasks" msgstr "Ascunde sarcinile completate" msgid "Delete completed tasks without confirmation" msgstr "Șterge sarcinile completate fără confirmare" msgid "Add new task when double clicked on tasks list" msgstr "Adaugă noi sarcini cînd se dă 2click pe lista cu sarcini" msgid "minutes" msgstr "minute" msgid "0 for disable" msgstr "0 pentru dezactivare" msgid "Repeat sound alarm" msgstr "Repetă sunetul de alarmă" msgid "times" msgstr "ori" msgid "Global notification command" msgstr "Comanda de nofificare globală" msgid "Tasks options" msgstr "OpÈ›iunile sarcinilor" msgid "Reminder options" msgstr "OpÈ›iuni de amintire" msgid "Tasks list" msgstr "Lista de sarcini" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr." # pentru traducerea fazelor lunii am folosit http://good-years.net/gythh/fazele-lunii # nu garantez corectitudinea denumirilor msgid "New Moon" msgstr "Lună nouă" msgid "Waxing Crescent Moon" msgstr "Lună crescătoare" msgid "Quarter Moon" msgstr "Lună la 1 pătrar" msgid "Waxing Gibbous Moon" msgstr "Lună convexă" msgid "Full Moon" msgstr "Lună plină" msgid "Waning Gibbous Moon" msgstr "Lună difuză" msgid "Last Quarter Moon" msgstr "Luna la ultimul pătrar" msgid "Waning Crescent Moon" msgstr "Lună calmă" msgid "Error" msgstr "Eroare" msgid "Selected file exist! Overwrite?" msgstr "FiÈ™ierul ales există! Suprascrie?" #~ msgid "Select and show first item after search" #~ msgstr "Alege È™i arată primul obiect după căutare" #~ msgid "Order" #~ msgstr "Sortează" #~ msgid "Mode" #~ msgstr "Tip" #~ msgid "Ascending" #~ msgstr "Crescător" #~ msgid "Descending" #~ msgstr "Descrescător" #~ msgid "Sorting" #~ msgstr "Triere" #~ msgid "Contact map location" #~ msgstr "Contactează localizarea hărÈ›ii" osmo-0.2.14/po/en_GB.po000664 001750 001750 00000105307 12561325524 014470 0ustar00pasppasp000000 000000 # English UK translation of Osmo # This file is distributed under the same license as the Osmo package. # Steve Cook # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: \n" "Last-Translator: Steve Cook (Yorvyk) \n" "Language-Team: English UK en_GB \n" "Language: en_GB\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" msgid "About" msgstr "About" msgid "Close" msgstr "Close" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "switch to previous tab" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDown" msgid "switch to next tab" msgstr "switch to next tab" msgid "switch to selected page" msgstr "switch to selected page" msgid "show options window" msgstr "show options window" msgid "show about window" msgstr "show about window" msgid "toggle fullscreen mode" msgstr "toggle fullscreen mode" msgid "PageUp/PageDn" msgstr "PageUp/PageDown" msgid "switch page in options and about tab" msgstr "switch page in options and about tab" msgid "exit" msgstr "exit" msgid "Space" msgstr "Space" msgid "select current date" msgstr "select current date" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "toggle personal data visibility" msgid "Arrows" msgstr "Arrows" msgid "change day" msgstr "change day" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "scroll the contents in the day info panel" msgid "change month" msgstr "change month" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "change year" msgid "toggle calendars for the previous and next month" msgstr "toggle calendars for the previous and next month" msgid "day notes browser" msgstr "day notes browser" msgid "assign background color to day note" msgstr "assign background colour to day note" msgid "date calculator" msgstr "date calculator" msgid "show full-year calendar" msgstr "show full-year calendar" msgid "jump to date" msgstr "jump to date" msgid "Delete" msgstr "Delete" msgid "remove day note" msgstr "remove day note" msgid "Alt+Arrows" msgstr "Alt+Arrows" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "close editor" msgid "toggle bold" msgstr "toggle bold" msgid "toggle italic" msgstr "toggle italic" msgid "toggle underline" msgstr "toggle underline" msgid "toggle strikethrough" msgstr "toggle strike-through" msgid "toggle highlight" msgstr "toggle highlight" msgid "Arrows Up/Down" msgstr "Arrows Up/Down" msgid "toggle alternative view" msgstr "toggle alternative view" msgid "year info" msgstr "year info" msgid "set current year" msgstr "set current year" msgid "close full-year calendar" msgstr "close full-year calendar" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "add task" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "edit task" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "remove task" msgid "toggle hidden tasks" msgstr "toggle hidden tasks" msgid "activate search field" msgstr "activate search field" msgid "Left, Right" msgstr "Left, Right" msgid "change category filter" msgstr "change category filter" msgid "close task info panel" msgstr "close task info panel" msgid "Insert" msgstr "Insert" msgid "add contact" msgstr "add contact" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "edit contact" msgid "remove contact" msgstr "remove contact" msgid "change search mode" msgstr "change search mode" msgid "close contact details panel" msgstr "close contact details panel" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "open note" msgid "add note" msgstr "add note" msgid "remove note" msgstr "remove note" msgid "edit note name and category" msgstr "edit note name and category" msgid "close note editor" msgstr "close note editor" msgid "save note" msgstr "save note" msgid "find text" msgstr "find text" msgid "clear selection attributes" msgstr "clear selection attributes" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgid "General" msgstr "General" msgid "Calendar" msgstr "Calendar" msgid "Note editor" msgstr "Note editor" msgid "Full-year calendar" msgstr "Full-year calendar" msgid "Tasks" msgstr "Tasks" msgid "Contacts" msgstr "Contacts" msgid "Notes" msgstr "Notes" msgid "Selector" msgstr "Selector" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "A handy personal organiser" msgid "compiled on" msgstr "compiled on" msgid "Programming" msgstr "Programming" msgid "Graphics" msgstr "Graphics" msgid "Contributors" msgstr "Contributors" msgid "Translators" msgstr "Translators" msgid "Mailing lists" msgstr "Mailing lists" msgid "Bug tracker" msgstr "Bug tracker" msgid "Feature requests" msgstr "Feature requests" msgid "Available modules" msgstr "Available modules" msgid "Compiled-in features" msgstr "Compiled-in features" msgid "iCalendar support" msgstr "iCalendar support" msgid "Encrypted notes support" msgstr "Encrypted notes support" msgid "Backup support" msgstr "Backup support" msgid "Printing support" msgstr "Printing support" msgid "Spell checker support" msgstr "Spell checker support" msgid "version" msgstr "version" msgid "SVN revision" msgstr "SVN revision" msgid "Key shortcuts" msgstr "Key shortcuts" msgid "License" msgstr "Licence" msgid "Save backup" msgstr "Save backup" msgid "Password protection" msgstr "Password protection" msgid "Enter password" msgstr "Enter password" msgid "Re-enter password" msgstr "Re-enter password" msgid "Please enter the password" msgstr "Please enter the password" msgid "Passwords do not match!" msgstr "Passwords do not match!" msgid "Cannot create backup!" msgstr "Cannot create backup!" msgid "Backup file saved successfully!" msgstr "Backup file saved successfully!" msgid "Open backup file" msgstr "Open backup file" msgid "Osmo backup files (*.bck)" msgstr "Osmo backup files (*.bck)" msgid "This is not Osmo backup file" msgstr "This is not Osmo backup file" msgid "Incorrect password!" msgstr "Incorrect password!" msgid "All your data will be replaced with backup file content." msgstr "All your data will be replaced with backup file content." msgid "Are you sure?" msgstr "Are you sure?" msgid "Osmo has to be restarted now..." msgstr "Osmo has to be restarted now..." msgid "was born" msgstr "was born" msgid "year old" msgid_plural "years old" msgstr[0] "year old" msgstr[1] "years old" msgid "Current time" msgstr "Current time" msgid "Day number" msgstr "Day number" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "day till end of year" msgstr[1] "days until end of year" msgid "the last day of the year" msgstr "the last day of the year" msgid "Today distance" msgstr "Today distance" msgid "Week number" msgstr "Week number" msgid "Marked days" msgstr "Marked days" msgid "Weekend days" msgstr "Weekend days" msgid "Moon phase" msgstr "Moon phase" msgid "Zodiac sign" msgstr "Zodiac sign" msgid "Day notes" msgstr "Day notes" msgid "Day tasks" msgstr "Day tasks" msgid "Birthday" msgstr "Birthday" msgid "Day category" msgstr "Day category" msgid "Selected day note will be removed." msgstr "Selected day note will be removed." msgid "Continue?" msgstr "Continue?" msgid "Previous year" msgstr "Previous year" msgid "Previous month" msgstr "Previous month" msgid "Previous day" msgstr "Previous day" msgid "Today" msgstr "Today" msgid "Next day" msgstr "Next day" msgid "Next month" msgstr "Next month" msgid "Next year" msgstr "Next year" msgid "Jump to date" msgstr "Jump to date" msgid "Print calendar" msgstr "Print calendar" msgid "Date calculator" msgstr "Date calculator" #, fuzzy msgid "Backup data" msgstr "Backup" #, fuzzy msgid "Restore data" msgstr "Restore" msgid "Preferences" msgstr "Preferences" msgid "Quit" msgstr "Quit" msgid "Toggle day note panel" msgstr "Toggle day note panel" msgid "Add task" msgstr "Add task" msgid "Select day color" msgstr "Select day colour" msgid "Browse notes" msgstr "Browse notes" msgid "Browse iCal events" msgstr "Browse iCal events" msgid "Export to iCal file" msgstr "Export to iCal file" msgid "Previous and next month" msgstr "Previous and next month" msgid "Close note panel" msgstr "Close note panel" msgid "Highlight" msgstr "Highlight" msgid "Strikethrough" msgstr "Strike-through" msgid "Underline" msgstr "Underline" msgid "Italic" msgstr "Italic" msgid "Bold" msgstr "Bold" msgid "Insert timeline" msgstr "Insert timeline" msgid "Clear text" msgstr "Clear text" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Select colour" msgid "None" msgstr "None" msgid "Cancel" msgstr "Cancel" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "year" msgstr[1] "years" msgid "month" msgid_plural "months" msgstr[0] "month" msgstr[1] "months" msgid "day" msgid_plural "days" msgstr[0] "day" msgstr[1] "days" msgid "hour" msgid_plural "hours" msgstr[0] "hour" msgstr[1] "hours" msgid "minute" msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" msgid "or" msgstr "or" msgid "rounded down" msgstr "rounded down" msgid "week" msgid_plural "weeks" msgstr[0] "week" msgstr[1] "weeks" msgid "working day" msgid_plural "working days" msgstr[0] "working day" msgstr[1] "working days" msgid "time is ignored" msgstr "time is ignored" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "weekend day" msgstr[1] "weekend days" msgid "This calculator only supports dates after year 1." msgstr "This calculator only supports dates after year 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "weekend day ignored" msgstr[1] "weekend days ignored" msgid "Year" msgstr "Year" msgid "Month" msgstr "Month" msgid "Day" msgstr "Day" msgid "Current date" msgstr "Current date" msgid "Set current date" msgstr "Set current date" msgid "Hour" msgstr "Hour" msgid "Minute" msgstr "Minute" msgid "Second" msgstr "Second" msgid "Set current time" msgstr "Set current time" msgid "Reset time" msgstr "Reset time" msgid "First date and time" msgstr "First date and time" msgid "Second date and time" msgstr "Second date and time" msgid "Alternative time units" msgstr "Alternative time units" msgid "Result" msgstr "Result" msgid "Duration between two dates" msgstr "Duration between two dates" msgid "Operation" msgstr "Operation" msgid "add" msgstr "add" msgid "subtract" msgstr "subtract" msgid "Date and time to add or subtract from" msgstr "Date and time to add or subtract from" msgid "Years" msgstr "Years" msgid "Months" msgstr "Months" msgid "Days" msgstr "Days" msgid "Weeks" msgstr "Weeks" msgid "Hours" msgstr "Hours" msgid "Minutes" msgstr "Minutes" msgid "Seconds" msgstr "Seconds" msgid "Ignore weekend days" msgstr "Ignore weekend days" msgid "Reset fields" msgstr "Reset fields" msgid "Time to add or subtract" msgstr "Time to add or subtract" msgid "Jump to" msgstr "Jump to" msgid "Add to or subtract from a date" msgstr "Add to or subtract from a date" msgid "Leap year" msgstr "Leap year" msgid "Yes" msgstr "Yes" msgid "No" msgstr "No" msgid "Chinese year animal" msgstr "Chinese year animal" msgid "Number of days" msgstr "Number of days" msgid "Number of weeks" msgstr "Number of weeks" msgid "Number of weekend days" msgstr "Number of weekend days" msgid "Year info" msgstr "Year info" msgid "Current year" msgstr "Current year" msgid "Alternative view" msgstr "Alternative view" msgid "event" msgid_plural "events" msgstr[0] "event" msgstr[1] "events" msgid "No valid calendars defined" msgstr "No valid calendars defined" msgid "iCalendar events" msgstr "iCalendar events" msgid "Date" msgstr "Date" msgid "Time" msgstr "Time" msgid "Summary" msgstr "Summary" msgid "Select output file" msgstr "Select output file" msgid "The list will be cleared and all entries will be lost." msgstr "The list will be cleared and all entries will be lost." msgid "Done!" msgstr "Done!" msgid "event exported" msgid_plural "events exported" msgstr[0] "event exported" msgstr[1] "events exported" msgid "iCalendar export" msgstr "iCalendar export" msgid "Day Selector" msgstr "Day Selector" msgid "Use date period" msgstr "Use date period" msgid "Add" msgstr "Add" msgid "Clear" msgstr "Clear" msgid "Remove" msgstr "Remove" msgid "Output filename" msgstr "Output filename" msgid "Browse" msgstr "Browse" msgid "Export" msgstr "Export" msgid "no entries" msgstr "no entries" msgid "entry" msgid_plural "entries" msgstr[0] "entry" msgstr[1] "entries" msgid "Calendar notes" msgstr "Calendar notes" msgid "Search" msgstr "Search" msgid "Filter" msgstr "Filter" msgid "Current month" msgstr "Current month" msgid "Selected month" msgstr "Selected month" msgid "Selected year" msgstr "Selected year" msgid "Selected month and year" msgstr "Selected month and year" msgid "All notes" msgstr "All notes" msgid "Case sensitive" msgstr "Case sensitive" msgid "Strikethrough past day notes" msgstr "Strike-through past day notes" msgid "Note" msgstr "Note" msgid "Syntax" msgstr "Syntax" msgid "abbreviated weekday name" msgstr "abbreviated weekday name" msgid "full weekday name" msgstr "full weekday name" msgid "abbreviated month name" msgstr "abbreviated month name" msgid "full month name" msgstr "full month name" msgid "day of the month" msgstr "day of the month" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "day of the month without leading zeros" msgid "year without century" msgstr "year without century" msgid "year with century" msgstr "year with century" msgid "Date header format" msgstr "Date header format" msgid "Set default format" msgstr "Set default format" msgid "Date format syntax" msgstr "Date format syntax" msgid "Day note marker" msgstr "Day note marker" msgid "Event marker" msgstr "Event marker" msgid "Circle" msgstr "Circle" msgid "Ellipse" msgstr "Ellipse" msgid "Wave" msgstr "Wave" msgid "Current day marker" msgstr "Current day marker" msgid "Arrow" msgstr "Arrow" msgid "Free-hand circle" msgstr "Free-hand circle" msgid "Colors" msgstr "Colours" msgid "Header color" msgstr "Header colour" msgid "Weekend days color" msgstr "Weekend days colour" msgid "Cursor color" msgstr "Cursor colour" msgid "Event marker color" msgstr "Event marker colour" msgid "Current day marker color" msgstr "Current day marker colour" msgid "Birthday marker color" msgstr "Birthday marker colour" msgid "Date font" msgstr "Date font" msgid "Calendar font" msgstr "Calendar font" msgid "Note font" msgstr "Note font" msgid "Enable block cursor" msgstr "Enable block cursor" msgid "Cursor thickness" msgstr "Cursor thickness" msgid "Thin" msgstr "Thin" msgid "Thick" msgstr "Thick" msgid "Edit category" msgstr "Edit category" msgid "Color" msgstr "Colour" msgid "Name" msgstr "Name" msgid "Select ICS file" msgstr "Select ICS file" msgid "All Files" msgstr "All Files" msgid "Calendar files (*.ics)" msgstr "Calendar files (*.ics)" msgid "Modify ICAL parameters" msgstr "Modify ICAL parameters" msgid "Filename" msgstr "Filename" msgid "Options" msgstr "Options" msgid "Disabled" msgstr "Disabled" msgid "Valid" msgstr "Valid" msgid "Description" msgstr "Description" msgid "Full date" msgstr "Full date" msgid "Mark" msgstr "Mark" msgid "Week start on Monday" msgstr "Week start on Monday" msgid "Show day names" msgstr "Show day names" msgid "No month change" msgstr "No month change" msgid "Show week numbers" msgstr "Show week numbers" msgid "Simple view in full-year calendar" msgstr "Simple view in full-year calendar" msgid "Enable auxilary calendars" msgstr "Enable auxilary calendars" msgid "Ascending sorting in day notes browser" msgstr "Ascending sorting in day notes browser" msgid "Enable spell checker in day notes" msgstr "Enable spell checker in day notes" msgid "Show seconds" msgstr "Show seconds" msgid "Appearance" msgstr "Appearance" msgid "Day categories" msgstr "Day categories" msgid "iCalendar files" msgstr "iCalendar files" msgid "Show in day info panel" msgstr "Show in day info panel" msgid "Name day" msgstr "Name day" msgid "Error printing" msgstr "Error printing" msgid "Printing properties" msgstr "Printing properties" msgid "Month name" msgstr "Month name" msgid "Day name" msgstr "Day name" msgid "Events" msgstr "Events" msgid "Fonts" msgstr "Fonts" msgid "Birthdays" msgstr "Birthdays" msgid "Namedays" msgstr "Name-days" msgid "Visible events" msgstr "Visible events" msgid "Padding" msgstr "Padding" msgid "Event maximum length" msgstr "Event maximum length" msgid "Page orientation:" msgstr "Page orientation:" msgid "Portrait" msgstr "Portrait" msgid "Landscape" msgstr "Landscape" msgid "Timeline" msgstr "Time-line" msgid "From (hour)" msgstr "From (hour)" msgid "Step (minutes)" msgstr "Step (minutes)" msgid "To (hour)" msgstr "To (hour)" msgid "No date" msgstr "No date" msgid "Rat" msgstr "Rat" msgid "Ox" msgstr "Ox" msgid "Tiger" msgstr "Tiger" msgid "Hare" msgstr "Rabbit" msgid "Dragon" msgstr "Dragon" msgid "Snake" msgstr "Snake" msgid "Horse" msgstr "Horse" msgid "Sheep" msgstr "Goat" msgid "Monkey" msgstr "Monkey" msgid "Fowl" msgstr "Fowl" msgid "Dog" msgstr "Dog" msgid "Pig" msgstr "Boar" msgid "Unknown" msgstr "Unknown" msgid "Aquarius" msgstr "Aquarius" msgid "Pisces" msgstr "Pisces" msgid "Aries" msgstr "Aries" msgid "Taurus" msgstr "Taurus" msgid "Gemini" msgstr "Gemini" msgid "Cancer" msgstr "Cancer" msgid "Leo" msgstr "Leo" msgid "Virgo" msgstr "Virgo" msgid "Libra" msgstr "Libra" msgid "Scorpio" msgstr "Scorpio" msgid "Sagittarius" msgstr "Sagittarius" msgid "Capricorn" msgstr "Capricorn" msgid "Cannot perform selected operation." msgstr "Cannot perform selected operation." msgid "Task has been modified or removed." msgstr "Task has been modified or removed." msgid "Remind me later" msgstr "Remind me later" msgid "Done" msgstr "Done" msgid "postponed" msgstr "postponed" msgid "Show task" msgstr "Show task" msgid "Alarm warning!" msgstr "Alarm warning!" msgid "Day note" msgstr "Day note" msgid "Type" msgstr "Type" msgid "Event" msgstr "Event" msgid "Task" msgstr "Task" msgid "Show Osmo" msgstr "Show Osmo" msgid "No birthdays defined" msgstr "No birthdays defined" msgid "Birthdays list" msgstr "Birthdays list" msgid "Days to birthday" msgstr "Days to birthday" msgid "Age" msgstr "Age" msgid "Birthday date" msgstr "Birthday date" msgid "today" msgstr "today" msgid "Please select address" msgstr "Please select address" msgid "Information" msgstr "Information" msgid "Work" msgstr "Work" msgid "Home" msgstr "Home" msgid "Group" msgstr "Group" msgid "First name" msgstr "First name" msgid "Last name" msgstr "Last name" msgid "Second name" msgstr "Second name" msgid "Nickname" msgstr "Nickname" msgid "Tags" msgstr "Tags" msgid "Name day date" msgstr "Name day date" msgid "Home address" msgstr "Home address" msgid "Home postcode" msgstr "Home postcode" msgid "Home city" msgstr "Home city" msgid "Home state" msgstr "Home county" msgid "Home country" msgstr "Home country" msgid "Organization" msgstr "Organisation" msgid "Department" msgstr "Department" msgid "Work address" msgstr "Work address" msgid "Work postcode" msgstr "Work postcode" msgid "Work city" msgstr "Work city" msgid "Work state" msgstr "Work county" msgid "Work country" msgstr "Work country" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Home phone" msgid "Home phone 2" msgstr "Home phone 2" msgid "Home phone 3" msgstr "Home phone 3" msgid "Home phone 4" msgstr "Home phone 4" msgid "Work phone" msgstr "Work phone" msgid "Work phone 2" msgstr "Work phone 2" msgid "Work phone 3" msgstr "Work phone 3" msgid "Work phone 4" msgstr "Work phone 4" msgid "Cell phone" msgstr "Mobile phone" msgid "Cell phone 2" msgstr "Mobile phone 2" msgid "Cell phone 3" msgstr "Mobile phone 3" msgid "Cell phone 4" msgstr "Mobile phone 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Photo" msgid "Additional info" msgstr "Additional info" msgid "New contact" msgstr "New contact" msgid "Remove contact" msgstr "Remove contact" msgid "Edit contact" msgstr "Edit contact" msgid "Show birthdays" msgstr "Show birthdays" msgid "Show contact location on the map" msgstr "Show contact location on the map" msgid "Import contacts" msgstr "Import contacts" msgid "Export contacts" msgstr "Export contacts" msgid "First Name" msgstr "First Name" msgid "Last Name" msgstr "Last Name" msgid "All fields" msgstr "All fields" msgid "Contact details" msgstr "Contact details" msgid "Close contact panel" msgstr "Close contact panel" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contact exported" msgstr[1] "contacts exported" msgid "Cannot create file." msgstr "Cannot create file." msgid "Output format" msgstr "Output format" msgid "Add header" msgstr "Add header" msgid "Fields to export" msgstr "Fields to export" msgid "All" msgstr "All" msgid "Invert" msgstr "Invert" msgid "Select fields" msgstr "Select fields" msgid "Select CSV file" msgstr "Select CSV file" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (comma-separated values) files (*.csv)" msgid "Please select file first." msgstr "Please select file first." msgid "Import type" msgstr "Import type" msgid "File" msgstr "File" msgid "Input filename" msgstr "Input filename" msgid "Import" msgstr "Import" msgid "Nothing to import." msgstr "Nothing to import." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contact added" msgstr[1] "contacts added" msgid "of" msgstr "of" msgid "Record" msgstr "Record" msgid "Number fields per record" msgstr "Number fields per record" msgid "Use first record as header" msgstr "Use first record as header" msgid "Field type" msgstr "Field type" msgid "Value" msgstr "Value" msgid "No records found in selected file." msgstr "No records found in selected file." msgid "Cannot read file." msgstr "Cannot read file." msgid "Cannot open file." msgstr "Cannot open file." msgid "Selected contact will be removed." msgstr "Selected contact will be removed." msgid "Select photo" msgstr "Select photo" msgid "Address" msgstr "Address" msgid "Postcode" msgstr "Postcode" msgid "City" msgstr "City" msgid "State" msgstr "County" msgid "Country" msgstr "Country" msgid "Add contact" msgstr "Add contact" msgid "Personal" msgstr "Personal" msgid "Phones" msgstr "Phones" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Colour of contact tags" msgid "Color of links" msgstr "Colour of links" msgid "Font size" msgstr "Font size" msgid "Name font size" msgstr "Name font size" msgid "Item font size" msgstr "Item font size" msgid "Photo size" msgstr "Photo size" msgid "Small" msgstr "Small" msgid "Medium" msgstr "Medium" msgid "Large" msgstr "Large" msgid "Hide group column" msgstr "Hide group column" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Miscellaneous" msgid "Groups" msgstr "Groups" msgid "Visible columns in birthday browser" msgstr "Visible columns in birthday browser" msgid "Show calendar" msgstr "Show calendar" msgid "Show tasks" msgstr "Show tasks" msgid "Show contacts" msgstr "Show contacts" msgid "Show notes" msgstr "Show notes" msgid "Show options" msgstr "Show options" msgid "Show small calendar window" msgstr "Show small calendar window" msgid "Check for events since last run" msgstr "Check for events since last run" msgid "Number of days to check forward for events (default: 0)" msgstr "Number of days to check forward for events (default: 0)" msgid "Set absolute path for settings and data files" msgstr "Set absolute path for settings and data files" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "handy personal organiser" msgid "ERROR: Cannot create config files" msgstr "ERROR: Cannot create config files" msgid "Another copy of OSMO is already running." msgstr "Another copy of OSMO is already running." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Simultaneous use two or more copies of OSMO can be a cause of data loss." msgid "Do you really want to continue?" msgstr "Do you really want to continue?" msgid "Warning" msgstr "Warning" msgid "The note has changed." msgstr "The note has changed." msgid "Do you want to save it?" msgstr "Do you want to save it?" #, fuzzy msgid "No URLs found in the selection..." msgstr "No records found in selected file." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Do you really want to continue?" msgid "Question" msgstr "Question" msgid "Words" msgstr "Words" msgid "Lines" msgstr "Lines" msgid "Characters" msgstr "Characters" msgid "White characters" msgstr "White characters" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Document" msgid "Selection" msgstr "Selection" msgid "Created" msgstr "Created" msgid "Modified" msgstr "Modified" msgid "New note" msgstr "New note" msgid "Add note" msgstr "Add note" msgid "Edit note" msgstr "Edit note" msgid "Delete note" msgstr "Delete note" msgid "Remove note" msgstr "Remove note" msgid "Find" msgstr "Find" msgid "Clear attributes" msgstr "Clear attributes" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Save note" msgid "Insert current date and time" msgstr "Insert current date and time" msgid "Insert separator" msgstr "Insert separator" msgid "Statistics" msgstr "Statistics" msgid "Close editor" msgstr "Close editor" msgid "Toggle spell checker" msgstr "Toggle spell checker" msgid "Category" msgstr "Category" msgid "Note name" msgstr "Note name" msgid "Last changes" msgstr "Last changes" msgid "Read-only" msgstr "Read-only" msgid "Line" msgstr "Line" msgid "Column" msgstr "Column" msgid "case sensitive" msgstr "case sensitive" msgid "Close find entry" msgstr "Close find entry" msgid "Edit entry" msgstr "Edit entry" msgid "Remember cursor position" msgstr "Remember cursor position" msgid "Selected note will be removed." msgstr "Selected note will be removed." msgid "No further data recovery will be possible." msgstr "No further data recovery will be possible." msgid "Plain" msgstr "Plain" msgid "Encrypted" msgstr "Encrypted" msgid "Note type" msgstr "Note type" msgid "Cannot open the note." msgstr "Cannot open the note." msgid "encryption support is disabled" msgstr "encryption support is disabled" msgid "Authorization" msgstr "Authorisation" msgid "Algorithm" msgstr "Algorithm" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Compression" msgid "Ratio" msgstr "Ratio" msgid "Fast" msgstr "Fast" msgid "Good" msgstr "Good" msgid "Best" msgstr "Best" msgid "Remember the last selected category" msgstr "Remember the last selected category" msgid "Use system format for date and time" msgstr "Use system format for date and time" msgid "Encryption" msgstr "Encryption" msgid "Visible columns" msgstr "Visible columns" msgid "Categories" msgstr "Categories" msgid "Notes options" msgstr "Notes options" msgid "Osmo has to be restarted to take effect." msgstr "Osmo has to be restarted to take effect." msgid "Layout" msgstr "Layout" msgid "Vertical" msgstr "Vertical" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Tabs position" msgid "Left" msgstr "Left" msgid "Right" msgstr "Right" msgid "Top" msgstr "Top" msgid "Bottom" msgstr "Bottom" msgid "Use default stock icons" msgstr "Use default stock icons" msgid "Disable underline in links" msgstr "Disable underline in links" msgid "Draw rows in alternating colors" msgstr "Draw rows in alternating colours" msgid "Show exit button in toolbar" msgstr "Show exit button in toolbar" msgid "At least one module must be visible." msgstr "At least one module must be visible." msgid "Override locale settings" msgstr "Override locale settings" msgid "Date format" msgstr "Date format" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "Time format" msgid "hours" msgstr "hours" msgid "Spell checker language" msgstr "Spell checker language" msgid "Enable tooltips" msgstr "Enable tooltips" msgid "Remember last selected page" msgstr "Remember last selected page" msgid "Save data after every modification" msgstr "Save data after every modification" msgid "Web browser" msgstr "Web browser" msgid "E-mail client" msgstr "E-mail client" msgid "Sound player" msgstr "Sound player" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "The %s pattern will be replaced with web address" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "The %s pattern will be replaced with e-mail address" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "The %s pattern will be replaced with sound filename" msgid "Enable system tray" msgstr "Enable system tray" msgid "Start minimised" msgstr "Start minimised" msgid "Blink on events" msgstr "Blink on events" msgid "Ignore day note events" msgstr "Ignore day note events" msgid "Hide" msgstr "Hide" msgid "Helpers" msgstr "Helpers" msgid "System tray" msgstr "System tray" msgid "Edit" msgstr "Edit" msgid "Go Down" msgstr "Go Down" msgid "Select date" msgstr "Select date" msgid "Select font" msgstr "Select font" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculator" msgid "Edit day note" msgstr "Edit day note" msgid "Save" msgstr "Save" msgid "Display full-year calendar" msgstr "Display full-year calendar" msgid "Help" msgstr "Help" msgid "Invalid item" msgstr "Invalid item" msgid "Valid item" msgstr "Valid item" msgid "Edit task" msgstr "Edit task" msgid "Remove task" msgstr "Remove task" msgid "Import tasks" msgstr "Import tasks" msgid "Export tasks" msgstr "Export tasks" msgid "Change to previous date" msgstr "Change to previous date" msgid "Change to next date" msgstr "Change to next date" msgid "Print" msgstr "Print" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Recurrent" msgid "Started" msgstr "Started" msgid "Finished" msgstr "Finished" msgid "All items" msgstr "All items" msgid "New task" msgstr "New task" msgid "Change due date to previous date" msgstr "Change due date to previous date" msgid "Change due date to next date" msgstr "Change due date to next date" msgid "Print visible tasks list" msgstr "Print visible tasks list" msgid "Due date" msgstr "Due date" msgid "Priority" msgstr "Priority" msgid "Task details" msgstr "Task details" msgid "Close description panel" msgstr "Close description panel" msgid "No tasks with defined date found." msgstr "No tasks with defined date found." msgid "Save tasks" msgstr "Save tasks" msgid "tasks exported" msgstr "tasks exported" msgid "Please select at least one day when recurrency is enabled." msgstr "Please select at least one day when recurrency is enabled." msgid "Set time" msgstr "Set time" msgid "Tomorrow" msgstr "Tomorrow" msgid "Selected task will be removed." msgstr "Selected task will be removed." msgid "Basic" msgstr "Basic" msgid "Select date and time" msgstr "Select date and time" msgid "Low" msgstr "Low" msgid "High" msgstr "High" msgid "Enable sound notification" msgstr "Enable sound notification" #, fuzzy msgid "Enable notification dialog" msgstr "Enable sound notification" msgid "Advanced" msgstr "Advanced" msgid "Alarm warning" msgstr "Alarm warning" msgid "Postpone time" msgstr "Postpone time" msgid "Alarm command" msgstr "Alarm command" msgid "Recurrent task" msgstr "Recurrent task" msgid "Enable" msgstr "Enable" msgid "Start" msgstr "Start" msgid "End" msgstr "End" msgid "Interval" msgstr "Interval" msgid "Time period" msgstr "Time period" msgid "Date period" msgstr "Date period" msgid "Repeat" msgstr "Repeat" msgid "Repeat in the following days" msgstr "Repeat in the following days" msgid "Ignore alarm when task expired offline" msgstr "Ignore alarm when task expired offline" msgid "Select a font..." msgstr "Select a font..." msgid "Color of items that are due today" msgstr "Colour of items that are due today" msgid "Color of items that are due in the next 7 days" msgstr "Colour of items that are due in the next 7 days" msgid "Color of items that are past due" msgstr "Colour of items that are past due" msgid "Task info font" msgstr "Task info font" msgid "Show in bold tasks with high priority" msgstr "Show in bold, tasks with high priority" msgid "Hide completed tasks" msgstr "Hide completed tasks" msgid "Delete completed tasks without confirmation" msgstr "Delete completed tasks without confirmation" msgid "Add new task when double clicked on tasks list" msgstr "Add new task when double clicked on tasks list" msgid "minutes" msgstr "minutes" msgid "0 for disable" msgstr "0 for disable" msgid "Repeat sound alarm" msgstr "Repeat sound alarm" msgid "times" msgstr "times" msgid "Global notification command" msgstr "Global notification command" msgid "Tasks options" msgstr "Tasks options" msgid "Reminder options" msgstr "Reminder options" msgid "Tasks list" msgstr "Tasks list" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "No." msgid "New Moon" msgstr "New Moon" msgid "Waxing Crescent Moon" msgstr "Waxing Crescent Moon" msgid "Quarter Moon" msgstr "Quarter Moon" msgid "Waxing Gibbous Moon" msgstr "Waxing Gibbous Moon" msgid "Full Moon" msgstr "Full Moon" msgid "Waning Gibbous Moon" msgstr "Waning Gibbous Moon" msgid "Last Quarter Moon" msgstr "Last Quarter Moon" msgid "Waning Crescent Moon" msgstr "Waning Crescent Moon" msgid "Error" msgstr "Error" msgid "Selected file exist! Overwrite?" msgstr "Selected file exist! Overwrite?" #~ msgid "Select and show first item after search" #~ msgstr "Select and show first item after search" #~ msgid "Order" #~ msgstr "Order" #~ msgid "Mode" #~ msgstr "Mode" #~ msgid "Ascending" #~ msgstr "Ascending" #~ msgid "Descending" #~ msgstr "Descending" #~ msgid "Sorting" #~ msgstr "Sorting" #~ msgid "Contact map location" #~ msgstr "Contact map location" osmo-0.2.14/po/pl.po000664 001750 001750 00000112507 12561325524 014131 0ustar00pasppasp000000 000000 # Polish translation of Osmo # This file is distributed under the same license as the Osmo package. # Piotr MÄ…ka , 2007-2014. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-05 12:45+0100\n" "Last-Translator: Piotr MÄ…ka \n" "Language-Team: Polish\n" "Language: pl\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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" msgid "About" msgstr "O programie" msgid "Close" msgstr "Zamknij" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "przełącz do poprzedniej zakÅ‚adki" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "przełącz do nastÄ™pnej zakÅ‚adki" msgid "switch to selected page" msgstr "przełącz do wybranej zakÅ‚adki" msgid "show options window" msgstr "pokaż opcje" msgid "show about window" msgstr "pokaż informacje o programie" msgid "toggle fullscreen mode" msgstr "przełącz tryb peÅ‚noekranowy" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "zmienia stronÄ™ w zakÅ‚adkach opcji i o programie" msgid "exit" msgstr "wyjÅ›cie" msgid "Space" msgstr "Spacja" msgid "select current date" msgstr "zaznacz aktualnÄ… datÄ™" msgid "Ctrl+Space" msgstr "Ctrl+Spacja" msgid "toggle personal data visibility" msgstr "pokaż/ukryj osobiste dane" msgid "Arrows" msgstr "StrzaÅ‚ki" msgid "change day" msgstr "zmieÅ„ dzieÅ„" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "przewiÅ„ tekst w panelu informacyjnym" msgid "change month" msgstr "zmieÅ„ miesiÄ…c" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "zmieÅ„ rok" msgid "toggle calendars for the previous and next month" msgstr "przełącz widok kalendarza dla poprzedniego i nastÄ™pnego miesiÄ…ca" msgid "day notes browser" msgstr "przeglÄ…darka notatek" msgid "assign background color to day note" msgstr "przypisz kolor tÅ‚a do notatki dnia" msgid "date calculator" msgstr "kalkulator dat" msgid "show full-year calendar" msgstr "pokaż kalendarz caÅ‚oroczny" msgid "jump to date" msgstr "idź do dnia" msgid "Delete" msgstr "Delete" msgid "remove day note" msgstr "usuÅ„ notkÄ™" msgid "Alt+Arrows" msgstr "Alt+StrzaÅ‚ki" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "zamknij edytor" msgid "toggle bold" msgstr "przełącz pogrubienie" msgid "toggle italic" msgstr "przełącz kursywÄ™" msgid "toggle underline" msgstr "przełącz podkreÅ›lenie" msgid "toggle strikethrough" msgstr "przełącz przekreÅ›lenie" msgid "toggle highlight" msgstr "przełącz wyróżnienie" msgid "Arrows Up/Down" msgstr "StrzaÅ‚ki Góra/Dół" msgid "toggle alternative view" msgstr "przełącz wyglÄ…d alternatywny" msgid "year info" msgstr "informacje na temat roku" msgid "set current year" msgstr "ustaw rok bieżący" msgid "close full-year calendar" msgstr "zamknij kalendarz caÅ‚oroczny" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "dodaj zadanie" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "edytuj zadanie" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "usuÅ„ zadanie" msgid "toggle hidden tasks" msgstr "pokaż/ukryj schowane wpisy" msgid "activate search field" msgstr "aktywuj pole wyszukiwania" msgid "Left, Right" msgstr "Lewo, Prawo" msgid "change category filter" msgstr "zmieÅ„ filtr kategorii" msgid "close task info panel" msgstr "zamknij panel informacyjny" msgid "Insert" msgstr "Insert" msgid "add contact" msgstr "dodaj kontakt" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "edytuj kontakt" msgid "remove contact" msgstr "usuÅ„ kontakt" msgid "change search mode" msgstr "zmieÅ„ tryb wyszukiwania" msgid "close contact details panel" msgstr "zamknij panel z informacjami o kontakcie" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "otwórz notatkÄ™" msgid "add note" msgstr "dodaj notatkÄ™" msgid "remove note" msgstr "usuÅ„ notatkÄ™" msgid "edit note name and category" msgstr "edytuj nazwÄ™ notatki i kategorii" msgid "close note editor" msgstr "zamknij edytor notatki" msgid "save note" msgstr "zapisz notatkÄ™" msgid "find text" msgstr "znajdź tekst" msgid "clear selection attributes" msgstr "usuÅ„ atrybuty tekstu" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO zostaÅ‚ stworzony z myÅ›lÄ… o wygodzie obsÅ‚ugi, dlatego posiada wiele " "skrótów klawiszowych. Oto peÅ‚na lista:" msgid "General" msgstr "Ogólne" msgid "Calendar" msgstr "Kalendarz" msgid "Note editor" msgstr "Edytor notatek" msgid "Full-year calendar" msgstr "Kalendarz caÅ‚oroczny" msgid "Tasks" msgstr "Zadania" msgid "Contacts" msgstr "Kontakty" msgid "Notes" msgstr "Notatki" msgid "Selector" msgstr "Przełącznik" msgid "Editor" msgstr "Edytor" msgid "A handy personal organizer" msgstr "PodrÄ™czny osobisty organizer" msgid "compiled on" msgstr "skompilowany w dniu" msgid "Programming" msgstr "Programowanie" msgid "Graphics" msgstr "Grafika" msgid "Contributors" msgstr "Współpraca" msgid "Translators" msgstr "TÅ‚umaczenia" msgid "Mailing lists" msgstr "Lista dyskusyjna" msgid "Bug tracker" msgstr "ZgÅ‚aszanie błędów" msgid "Feature requests" msgstr "Propozycje nowej funkcjonalnoÅ›ci" msgid "Available modules" msgstr "DostÄ™pne moduÅ‚y" msgid "Compiled-in features" msgstr "Wkompilowana obsÅ‚uga" msgid "iCalendar support" msgstr "ObsÅ‚uga iCalendar" msgid "Encrypted notes support" msgstr "ObsÅ‚uga szyfrowanych notatek" msgid "Backup support" msgstr "ObsÅ‚uga kopii zapasowych" msgid "Printing support" msgstr "ObsÅ‚uga drukowania" msgid "Spell checker support" msgstr "ObsÅ‚uga sprawdzania pisowni" msgid "version" msgstr "wersja" msgid "SVN revision" msgstr "rewizja SVN" msgid "Key shortcuts" msgstr "Skróty klawiszowe" msgid "License" msgstr "Licencja" msgid "Save backup" msgstr "Zapisz kopiÄ™ zapasowÄ…" msgid "Password protection" msgstr "Ochrona hasÅ‚em" msgid "Enter password" msgstr "Wprowadź hasÅ‚o" msgid "Re-enter password" msgstr "Wprowadź ponownie hasÅ‚o" msgid "Please enter the password" msgstr "ProszÄ™ wprowadzić hasÅ‚o" msgid "Passwords do not match!" msgstr "HasÅ‚a nie sÄ… takie same!" msgid "Cannot create backup!" msgstr "Nie można utworzyć kopii zapasowej!" msgid "Backup file saved successfully!" msgstr "Zapisywanie kopii zapasowej powiodÅ‚o siÄ™!" msgid "Open backup file" msgstr "Otwórz plik kopii zapasowej" msgid "Osmo backup files (*.bck)" msgstr "Kopia zapasowa Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Plik nie jest kopiÄ… zapasowÄ… Osmo" msgid "Incorrect password!" msgstr "NieprawidÅ‚owe hasÅ‚o!" msgid "All your data will be replaced with backup file content." msgstr "Twoje dane zostanÄ… zastÄ…pione zawartoÅ›ciÄ… kopii zapasowej" msgid "Are you sure?" msgstr "Czy jesteÅ› pewny?" msgid "Osmo has to be restarted now..." msgstr "Osmo musi być uruchomione ponownie..." msgid "was born" msgstr "urodziÅ‚ siÄ™" msgid "year old" msgid_plural "years old" msgstr[0] "rok" msgstr[1] "lata" msgstr[2] "lat" msgid "Current time" msgstr "Aktualny czas" msgid "Day number" msgstr "Numer dnia" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dzieÅ„ do koÅ„ca roku" msgstr[1] "dni do koÅ„ca roku" msgstr[2] "dni do koÅ„ca roku" msgid "the last day of the year" msgstr "ostatni dzieÅ„ roku" msgid "Today distance" msgstr "Ilość dni do dziÅ›" msgid "Week number" msgstr "Numer tygodnia" msgid "Marked days" msgstr "Zaznaczone dni" msgid "Weekend days" msgstr "Dni weekendu" msgid "Moon phase" msgstr "Faza księżyca" msgid "Zodiac sign" msgstr "Znak zodiaku" msgid "Day notes" msgstr "Notatka" msgid "Day tasks" msgstr "Dzisiejsze zadania" msgid "Birthday" msgstr "Urodziny" msgid "Day category" msgstr "Kategoria dnia" msgid "Selected day note will be removed." msgstr "Wybrana notatka zostanie usuniÄ™ta." msgid "Continue?" msgstr "Kontynuować?" msgid "Previous year" msgstr "Poprzedni rok" msgid "Previous month" msgstr "Poprzedni miesiÄ…c" msgid "Previous day" msgstr "Poprzedni dzieÅ„" msgid "Today" msgstr "Dzisiaj" msgid "Next day" msgstr "NastÄ™pny dzieÅ„" msgid "Next month" msgstr "NastÄ™pny miesiÄ…c" msgid "Next year" msgstr "NastÄ™pny rok" msgid "Jump to date" msgstr "Idź do dnia" msgid "Print calendar" msgstr "Drukuj kalendarz" msgid "Date calculator" msgstr "Kalkulator dat" msgid "Backup data" msgstr "Utwórz kopiÄ™ zapasowÄ…" msgid "Restore data" msgstr "Odtwórz z kopii zapasowej" msgid "Preferences" msgstr "Ustawienia" msgid "Quit" msgstr "WyjÅ›cie" msgid "Toggle day note panel" msgstr "Pokaż/ukryj panel notatek" msgid "Add task" msgstr "Dodaj zadanie" msgid "Select day color" msgstr "Wybierz kolor dnia" msgid "Browse notes" msgstr "PrzeglÄ…daj notatki" msgid "Browse iCal events" msgstr "PrzeglÄ…daj wydarzenia iCal" msgid "Export to iCal file" msgstr "Eksport do pliku iCal" msgid "Previous and next month" msgstr "Poprzedni i nastÄ™pny miesiÄ…c" msgid "Close note panel" msgstr "Zamknij panel notatek" msgid "Highlight" msgstr "PodÅ›wietlenie" msgid "Strikethrough" msgstr "PrzekreÅ›lenie" msgid "Underline" msgstr "PodkreÅ›lenie" msgid "Italic" msgstr "Kursywa" msgid "Bold" msgstr "Pogrubienie" msgid "Insert timeline" msgstr "Wstaw przedziaÅ‚y czasowe" msgid "Clear text" msgstr "UsuÅ„ notatkÄ™" msgid "Info" msgstr "Informacje" msgid "Select color" msgstr "Wybierz kolor" msgid "None" msgstr "Brak" msgid "Cancel" msgstr "Anuluj" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "rok" msgstr[1] "lata" msgstr[2] "lat" msgid "month" msgid_plural "months" msgstr[0] "miesiÄ…c" msgstr[1] "miesiÄ…ce" msgstr[2] "miesiÄ™cy" msgid "day" msgid_plural "days" msgstr[0] "dzieÅ„" msgstr[1] "dni" msgstr[2] "dni" msgid "hour" msgid_plural "hours" msgstr[0] "godzina" msgstr[1] "godziny" msgstr[2] "godzin" msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minuty" msgstr[2] "minut" msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" msgid "or" msgstr "lub" msgid "rounded down" msgstr "zaokrÄ…glone w dół" msgid "week" msgid_plural "weeks" msgstr[0] "tydzieÅ„" msgstr[1] "tygodnie" msgstr[2] "tygodni" msgid "working day" msgid_plural "working days" msgstr[0] "dzieÅ„ roboczy" msgstr[1] "dni robocze" msgstr[2] "dni roboczych" msgid "time is ignored" msgstr "czas jest ignorowany" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "DzieÅ„ weekendu" msgstr[1] "Dni weekendu" msgstr[2] "Dni weekendu" msgid "This calculator only supports dates after year 1." msgstr "Kalkulator obsÅ‚uguje tylko daty po roku 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "zignorowany dzieÅ„ weekendowy" msgstr[1] "zignorowane dni robocze" msgstr[2] "zignorowanych dni roboczych" msgid "Year" msgstr "Rok" msgid "Month" msgstr "MiesiÄ…c" msgid "Day" msgstr "DzieÅ„" msgid "Current date" msgstr "Aktualna data" msgid "Set current date" msgstr "Ustaw aktualnÄ… datÄ™" msgid "Hour" msgstr "Godzina" msgid "Minute" msgstr "Minuta" msgid "Second" msgstr "Sekunda" msgid "Set current time" msgstr "Ustaw aktualny czas" msgid "Reset time" msgstr "Wyzeruj czas" msgid "First date and time" msgstr "Pierwsza data i czas" msgid "Second date and time" msgstr "Druga data i czas" msgid "Alternative time units" msgstr "Alternatywne jednostki czasu" msgid "Result" msgstr "Wynik" msgid "Duration between two dates" msgstr "Różnica pomiÄ™dzy datami" msgid "Operation" msgstr "DziaÅ‚anie" msgid "add" msgstr "dodaj" msgid "subtract" msgstr "odejmij" msgid "Date and time to add or subtract from" msgstr "Data i czas na której wykonujemy dziaÅ‚anie" msgid "Years" msgstr "Lata" msgid "Months" msgstr "MiesiÄ…ce" msgid "Days" msgstr "Dni" msgid "Weeks" msgstr "Tygodnie" msgid "Hours" msgstr "Godziny" msgid "Minutes" msgstr "Minuty" msgid "Seconds" msgstr "Sekundy" msgid "Ignore weekend days" msgstr "Zignoruj dni weekendowe" msgid "Reset fields" msgstr "Wyzeruj pola" msgid "Time to add or subtract" msgstr "Czas do dodania lub odjÄ™cia" msgid "Jump to" msgstr "Idź do" msgid "Add to or subtract from a date" msgstr "Dodaj do lub odejmij od daty" msgid "Leap year" msgstr "Rok przestÄ™pny" msgid "Yes" msgstr "Tak" msgid "No" msgstr "Nie" msgid "Chinese year animal" msgstr "ChiÅ„ski rok" msgid "Number of days" msgstr "Liczba dni" msgid "Number of weeks" msgstr "Liczba tygodni" msgid "Number of weekend days" msgstr "Liczba dni weekendowych" msgid "Year info" msgstr "Informacje na temat roku" msgid "Current year" msgstr "Rok bieżący" msgid "Alternative view" msgstr "Alternatywny wyglÄ…d" msgid "event" msgid_plural "events" msgstr[0] "wydarzenie" msgstr[1] "wydarzenia" msgstr[2] "wydarzeÅ„" msgid "No valid calendars defined" msgstr "Nie zdefiniowano poprawnych kalendarzy" msgid "iCalendar events" msgstr "Wydarzenia iCal" msgid "Date" msgstr "Data" msgid "Time" msgstr "Czas" msgid "Summary" msgstr "Zadanie" msgid "Select output file" msgstr "Wybierz plik do zapisu" msgid "The list will be cleared and all entries will be lost." msgstr "Lista zostanie usuniÄ™ta i wszystkie wpisy zostanÄ… utracone." msgid "Done!" msgstr "Zrobione!" msgid "event exported" msgid_plural "events exported" msgstr[0] "zdarzenie wyeksportowane" msgstr[1] "zdarzenia wyeksportowane" msgstr[2] "zdarzeÅ„ wyeksportowano" msgid "iCalendar export" msgstr "Eksport iCalendar" msgid "Day Selector" msgstr "Wybór dnia" msgid "Use date period" msgstr "Użyj zakresu dni" msgid "Add" msgstr "Dodaj" msgid "Clear" msgstr "Wyczyść" msgid "Remove" msgstr "UsuÅ„" msgid "Output filename" msgstr "Nazwa pliku" msgid "Browse" msgstr "PrzeglÄ…daj" msgid "Export" msgstr "Eksportuj" msgid "no entries" msgstr "brak wpisów" msgid "entry" msgid_plural "entries" msgstr[0] "wpis" msgstr[1] "wpisy" msgstr[2] "wpisów" msgid "Calendar notes" msgstr "Notatki kalendarzowe" msgid "Search" msgstr "Szukaj" msgid "Filter" msgstr "Filtr" msgid "Current month" msgstr "Aktualny miesiÄ…c" msgid "Selected month" msgstr "Zaznaczony miesiÄ…c" msgid "Selected year" msgstr "Zaznaczony rok" msgid "Selected month and year" msgstr "Zaznaczony miesiÄ…c i rok" msgid "All notes" msgstr "Wszystkie notatki" msgid "Case sensitive" msgstr "Rozróżniaj wielkość znaków" msgid "Strikethrough past day notes" msgstr "PrzekreÅ›l notatki minionych dni" msgid "Note" msgstr "Notatka" msgid "Syntax" msgstr "SkÅ‚adnia" msgid "abbreviated weekday name" msgstr "skrócona nazwa dnia" msgid "full weekday name" msgstr "peÅ‚na nazwa dnia" msgid "abbreviated month name" msgstr "skrócona nazwa miesiÄ…ca" msgid "full month name" msgstr "peÅ‚na nazwa miesiÄ…ca" msgid "day of the month" msgstr "dzieÅ„ miesiÄ…ca" msgid "MM/DD/YY" msgstr "MM/DD/RR" msgid "day of the month without leading zeros" msgstr "dzieÅ„ miesiÄ…ca bez zer wiodÄ…cych" msgid "year without century" msgstr "rok (dwie cyfry)" msgid "year with century" msgstr "rok (cztery cyfry)" msgid "Date header format" msgstr "Format daty w nagłówku" msgid "Set default format" msgstr "Ustaw domyÅ›lny format" msgid "Date format syntax" msgstr "SkÅ‚adnia formatu daty" msgid "Day note marker" msgstr "Oznaczenie notatek" msgid "Event marker" msgstr "Oznaczenie wydarzenia" msgid "Circle" msgstr "Kółko" msgid "Ellipse" msgstr "Elipsa" msgid "Wave" msgstr "Fala" msgid "Current day marker" msgstr "Oznaczenie aktualnego dnia" msgid "Arrow" msgstr "StrzaÅ‚ka" msgid "Free-hand circle" msgstr "OdrÄ™czne kółko" msgid "Colors" msgstr "Kolory" msgid "Header color" msgstr "Kolor nagłówka" msgid "Weekend days color" msgstr "Kolor dni weekendowych" msgid "Cursor color" msgstr "Kolor kursora" msgid "Event marker color" msgstr "Kolor oznaczenia wydarzeÅ„" msgid "Current day marker color" msgstr "Kolor oznaczenia aktualnego dnia" msgid "Birthday marker color" msgstr "Kolor oznaczenia urodzin" msgid "Date font" msgstr "Czcionka daty" msgid "Calendar font" msgstr "Czcionka kalendarza" msgid "Note font" msgstr "Czcionka notatki" msgid "Enable block cursor" msgstr "WypeÅ‚niony kursor" msgid "Cursor thickness" msgstr "Grubość kursora" msgid "Thin" msgstr "Cienki" msgid "Thick" msgstr "Gruby" msgid "Edit category" msgstr "Edycja kategorii" msgid "Color" msgstr "Kolor" msgid "Name" msgstr "Nazwa" msgid "Select ICS file" msgstr "Wybierz plik ICS" msgid "All Files" msgstr "Wszystkie pliki" msgid "Calendar files (*.ics)" msgstr "Pliki kalendarza (*.ics)" msgid "Modify ICAL parameters" msgstr "ZmieÅ„ ustawienia ICAL" msgid "Filename" msgstr "Nazwa pliku" msgid "Options" msgstr "Opcje" msgid "Disabled" msgstr "Nieaktywne" msgid "Valid" msgstr "Poprawność" msgid "Description" msgstr "Opis" msgid "Full date" msgstr "PeÅ‚na data" msgid "Mark" msgstr "Zaznaczenie" msgid "Week start on Monday" msgstr "TydzieÅ„ zaczyna siÄ™ od poniedziaÅ‚ku" msgid "Show day names" msgstr "Pokaż nazwy dni" msgid "No month change" msgstr "Nie zmieniaj miesiÄ…ca" msgid "Show week numbers" msgstr "Pokaż numer tygodnia" msgid "Simple view in full-year calendar" msgstr "Uproszczony wyglÄ…d kalendarza caÅ‚orocznego" msgid "Enable auxilary calendars" msgstr "Pokaż dodatkowe miesiÄ…ce" msgid "Ascending sorting in day notes browser" msgstr "Sortuj rosnÄ…co w przeglÄ…darce notatek" msgid "Enable spell checker in day notes" msgstr "Sprawdzanie pisowni w notatkach" msgid "Show seconds" msgstr "Pokaż sekundy" msgid "Appearance" msgstr "WyglÄ…d" msgid "Day categories" msgstr "Kategoria dnia" msgid "iCalendar files" msgstr "Pliki iCal" msgid "Show in day info panel" msgstr "Pokaż w panelu informacyjnym" msgid "Name day" msgstr "Imieniny" msgid "Error printing" msgstr "Błąd druku" msgid "Printing properties" msgstr "Ustawienia drukowania" msgid "Month name" msgstr "Nazwa miesiÄ…ca" msgid "Day name" msgstr "Nazwa dnia" msgid "Events" msgstr "Wydarzenia" msgid "Fonts" msgstr "Czcionki" msgid "Birthdays" msgstr "Urodziny" msgid "Namedays" msgstr "Imieniny" msgid "Visible events" msgstr "Widoczne wydarzenia" msgid "Padding" msgstr "WciÄ™cie" msgid "Event maximum length" msgstr "Maksymalna dlugość napisów" msgid "Page orientation:" msgstr "Orientacja strony" msgid "Portrait" msgstr "Portret" msgid "Landscape" msgstr "Krajobraz" msgid "Timeline" msgstr "PrzedziaÅ‚y" msgid "From (hour)" msgstr "Od (godzina)" msgid "Step (minutes)" msgstr "Krok (w minutach)" msgid "To (hour)" msgstr "Do (godzina)" msgid "No date" msgstr "Brak daty" msgid "Rat" msgstr "Szczur" msgid "Ox" msgstr "Wół" msgid "Tiger" msgstr "Tygrys" msgid "Hare" msgstr "ZajÄ…c" msgid "Dragon" msgstr "Smok" msgid "Snake" msgstr "Wąż" msgid "Horse" msgstr "KoÅ„" msgid "Sheep" msgstr "Owca" msgid "Monkey" msgstr "MaÅ‚pa" msgid "Fowl" msgstr "Ptak" msgid "Dog" msgstr "Pies" msgid "Pig" msgstr "Åšwinia" msgid "Unknown" msgstr "Nieznany" msgid "Aquarius" msgstr "Wodnik" msgid "Pisces" msgstr "Ryba" msgid "Aries" msgstr "Baran" msgid "Taurus" msgstr "Byk" msgid "Gemini" msgstr "BliźniÄ™ta" msgid "Cancer" msgstr "Rak" msgid "Leo" msgstr "Lew" msgid "Virgo" msgstr "Panna" msgid "Libra" msgstr "Waga" msgid "Scorpio" msgstr "Skorpion" msgid "Sagittarius" msgstr "Strzelec" msgid "Capricorn" msgstr "Koziorożec" msgid "Cannot perform selected operation." msgstr "Nie można wykonać wybranej operacji." msgid "Task has been modified or removed." msgstr "Zadanie zostaÅ‚o zmienione lub usuniÄ™te." msgid "Remind me later" msgstr "Później" msgid "Done" msgstr "Wykonane" msgid "postponed" msgstr "opóźniony" msgid "Show task" msgstr "Pokaż zadanie" msgid "Alarm warning!" msgstr "Przypomnienie!" msgid "Day note" msgstr "Notatka" msgid "Type" msgstr "Typ" msgid "Event" msgstr "Wydarzenie" msgid "Task" msgstr "Zadanie" msgid "Show Osmo" msgstr "Pokaż Osmo" msgid "No birthdays defined" msgstr "Nie zdefiniowano żadnych urodzin" msgid "Birthdays list" msgstr "Lista urodzin" msgid "Days to birthday" msgstr "Dni do urodzin" msgid "Age" msgstr "Wiek" msgid "Birthday date" msgstr "Data urodzin" msgid "today" msgstr "dzisiaj" msgid "Please select address" msgstr "ProszÄ™ wybrać adres" msgid "Information" msgstr "Informacje" msgid "Work" msgstr "Praca" msgid "Home" msgstr "Dom" msgid "Group" msgstr "Grupa" msgid "First name" msgstr "ImiÄ™" msgid "Last name" msgstr "Nazwisko" msgid "Second name" msgstr "Drugie imiÄ™" msgid "Nickname" msgstr "Przezwisko" msgid "Tags" msgstr "Tagi" msgid "Name day date" msgstr "Data imienin" msgid "Home address" msgstr "Adres (dom)" msgid "Home postcode" msgstr "Kod pocztowy (dom)" msgid "Home city" msgstr "Miasto (dom)" msgid "Home state" msgstr "Województwo (dom)" msgid "Home country" msgstr "Kraj (dom)" msgid "Organization" msgstr "Firma" msgid "Department" msgstr "OddziaÅ‚" msgid "Work address" msgstr "Adres (praca)" msgid "Work postcode" msgstr "Kod pocztowy (praca)" msgid "Work city" msgstr "Miasto (praca)" msgid "Work state" msgstr "Województwo (praca)" msgid "Work country" msgstr "Kraj (praca)" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefon domowy" msgid "Home phone 2" msgstr "Telefon domowy 2" msgid "Home phone 3" msgstr "Telefon domowy 3" msgid "Home phone 4" msgstr "Telefon domowy 4" msgid "Work phone" msgstr "Telefon sÅ‚użbowy" msgid "Work phone 2" msgstr "Telefon sÅ‚użbowy 2" msgid "Work phone 3" msgstr "Telefon sÅ‚użbowy 3" msgid "Work phone 4" msgstr "Telefon sÅ‚użbowy 4" msgid "Cell phone" msgstr "Telefon komórkowy" msgid "Cell phone 2" msgstr "Telefon komórkowy 2" msgid "Cell phone 3" msgstr "Telefon komórkowy 3" msgid "Cell phone 4" msgstr "Telefon komórkowy 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "Gadu-Gadu" msgid "IM Yahoo" msgstr "Yahoo" msgid "IM MSN" msgstr "MSN" msgid "IM ICQ" msgstr "ICQ" msgid "IM AOL" msgstr "AOL" msgid "IM Jabber" msgstr "Jabber" msgid "IM Skype" msgstr "Skype" msgid "IM Tlen" msgstr "Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "ZdjÄ™cie" msgid "Additional info" msgstr "Dodatkowe informacje" msgid "New contact" msgstr "Utwórz nowy kontakt" msgid "Remove contact" msgstr "UsuÅ„ kontakt" msgid "Edit contact" msgstr "Edytuj kontakt" msgid "Show birthdays" msgstr "Pokaż urodziny" msgid "Show contact location on the map" msgstr "Pokaż adres kontaktu na mapie" msgid "Import contacts" msgstr "Importuj kontakty" msgid "Export contacts" msgstr "Eksportuj kontakty" msgid "First Name" msgstr "ImiÄ™" msgid "Last Name" msgstr "Nazwisko" msgid "All fields" msgstr "Wszystkie pola" msgid "Contact details" msgstr "Szczegóły wpisu" msgid "Close contact panel" msgstr "Zamknij panel kontaktu" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kontakt wyeksportowany" msgstr[1] "kontakty wyeksportowane" msgstr[2] "kontaktów wyeksportowano" msgid "Cannot create file." msgstr "Nie można utworzyć pliku." msgid "Output format" msgstr "Format wyjÅ›ciowy" msgid "Add header" msgstr "Dodaj nagłówek" msgid "Fields to export" msgstr "Pola do wyeksportowania" msgid "All" msgstr "Wszystkie" msgid "Invert" msgstr "Odwróć zaznaczenie" msgid "Select fields" msgstr "Wybierz pola" msgid "Select CSV file" msgstr "Wybierz plik do zapisu (CSV)" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Pliki CSV (pola rozdzielone przecinkiem) (*.csv)" msgid "Please select file first." msgstr "ProszÄ™ wybrać plik." msgid "Import type" msgstr "Rodzaj importu" msgid "File" msgstr "Plik" msgid "Input filename" msgstr "Nazwa pliku" msgid "Import" msgstr "Importuj" msgid "Nothing to import." msgstr "Brak danych do zaimportowania." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kontakt dodany" msgstr[1] "kontakty dodane" msgstr[2] "kontaktów dodanych" msgid "of" msgstr "z" msgid "Record" msgstr "Wpis" msgid "Number fields per record" msgstr "Ilość pól na wpis" msgid "Use first record as header" msgstr "Użyj pierwszego wpisu jako nagłówek" msgid "Field type" msgstr "Typ pola" msgid "Value" msgstr "Wartość" msgid "No records found in selected file." msgstr "Nie znaleziono wpisów w wybranym pliku." msgid "Cannot read file." msgstr "Nie można odczytać pliku." msgid "Cannot open file." msgstr "Nie można otworzyć pliku." msgid "Selected contact will be removed." msgstr "Zaznaczony kontakt zostanie usuniÄ™ty." msgid "Select photo" msgstr "Wybierz zdjÄ™cie" msgid "Address" msgstr "Adres" msgid "Postcode" msgstr "Kod pocztowy" msgid "City" msgstr "Miasto" msgid "State" msgstr "Województwo" msgid "Country" msgstr "Kraj" msgid "Add contact" msgstr "Dodaj kontakt" msgid "Personal" msgstr "Osobiste" msgid "Phones" msgstr "Telefony" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Kolor tagów w kontaktach" msgid "Color of links" msgstr "Kolor odnoÅ›ników" msgid "Font size" msgstr "Rozmiar czcionki" msgid "Name font size" msgstr "Rozmiar czcionki imienia i nazwiska" msgid "Item font size" msgstr "Rozmiar czcionki danych personalnych" msgid "Photo size" msgstr "Rozmiar zdjÄ™cia" msgid "Small" msgstr "MaÅ‚y" msgid "Medium" msgstr "Åšredni" msgid "Large" msgstr "Duży" msgid "Hide group column" msgstr "Ukryj kolumnÄ™ grup" msgid "Maps provider" msgstr "Dostawca map" msgid "Miscellaneous" msgstr "Różne" msgid "Groups" msgstr "Grupy" msgid "Visible columns in birthday browser" msgstr "Widoczne kolumny w przeglÄ…darce urodzin" msgid "Show calendar" msgstr "Pokaż kalendarz" msgid "Show tasks" msgstr "Pokaż zadania" msgid "Show contacts" msgstr "Pokaż kontakty" msgid "Show notes" msgstr "Pokaż notatki" msgid "Show options" msgstr "Pokaż opcje" msgid "Show small calendar window" msgstr "Pokaż okno z maÅ‚ym kalendarzem" msgid "Check for events since last run" msgstr "Sprawdź wydarzenia od ostatniego użycia programu" msgid "Number of days to check forward for events (default: 0)" msgstr "" "Liczba dni uwzglÄ™dniona do sprawdzenia przyszÅ‚ych zdarzeÅ„ (domyÅ›lnie: 0)" msgid "Set absolute path for settings and data files" msgstr "Ustaw peÅ‚nÄ… scieżkÄ™ dla konfiguracji i plików z danymi" msgid "Match contacts with given string" msgstr "WyÅ›wietla kontakty zawierajÄ…ce podany ciÄ…g znaków" msgid "handy personal organizer" msgstr "podrÄ™czny osobisty organizer" msgid "ERROR: Cannot create config files" msgstr "BÅÄ„D: Nie można utworzyć pliku konfiguracyjnego." msgid "Another copy of OSMO is already running." msgstr "OSMO jest już uruchomione." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Jednoczesne używanie dwóch lub wiÄ™cej kopii OSMO może spowodować utratÄ™ " "danych." msgid "Do you really want to continue?" msgstr "Czy na pewno chcesz kontynuować?" msgid "Warning" msgstr "Ostrzeżenie" msgid "The note has changed." msgstr "Notatka zostaÅ‚a zmieniona." msgid "Do you want to save it?" msgstr "Czy chcesz zapisać?" msgid "No URLs found in the selection..." msgstr "Nie znaleziono odnoÅ›ników w zaznaczeniu..." msgid "URLs will be opened in the default browser." msgstr "OdnoÅ›niki bÄ™dÄ… otwarte w domyÅ›lnej przeglÄ…darce." msgid "Do you want to continue?" msgstr "Czy chcesz kontynuować?" msgid "Question" msgstr "Pytanie" msgid "Words" msgstr "SÅ‚owa" msgid "Lines" msgstr "Linie" msgid "Characters" msgstr "Znaki" msgid "White characters" msgstr "BiaÅ‚e znaki" msgid "Bytes" msgstr "Bajty" msgid "Document" msgstr "Dokument" msgid "Selection" msgstr "Zaznaczenie" msgid "Created" msgstr "Utworzony" msgid "Modified" msgstr "Zmodyfikowany" msgid "New note" msgstr "Nowa notatka" msgid "Add note" msgstr "Dodaj notatkÄ™" msgid "Edit note" msgstr "Edytuj notatkÄ™" msgid "Delete note" msgstr "UsuÅ„ notatkÄ™" msgid "Remove note" msgstr "UsuÅ„ notatkÄ™" msgid "Find" msgstr "Szukaj" msgid "Clear attributes" msgstr "UsuÅ„ atrybuty" msgid "Open URL links" msgstr "Otwórz odnoÅ›niki" msgid "Save note" msgstr "Zapisz notatkÄ™" msgid "Insert current date and time" msgstr "Wstaw aktualnÄ… datÄ™ i czas" msgid "Insert separator" msgstr "Wstaw separator" msgid "Statistics" msgstr "Statystyki" msgid "Close editor" msgstr "Zamknij edytor" msgid "Toggle spell checker" msgstr "Sprawdzanie pisowni" msgid "Category" msgstr "Kategoria" msgid "Note name" msgstr "Nazwa notatki" msgid "Last changes" msgstr "Ostatnia zmiana" msgid "Read-only" msgstr "Tylko do odczytu" msgid "Line" msgstr "Linia" msgid "Column" msgstr "Kolumna" msgid "case sensitive" msgstr "rozróżnianie wielkoÅ›ci znaków" msgid "Close find entry" msgstr "Zamknij wyszukiwarkÄ™ tekstu" msgid "Edit entry" msgstr "Edytuj wpis" msgid "Remember cursor position" msgstr "PamiÄ™taj pozycjÄ™ kursora" msgid "Selected note will be removed." msgstr "Wybrana notatka zostanie usuniÄ™ta." msgid "No further data recovery will be possible." msgstr "Odzyskanie danych nie bÄ™dzie możliwe" msgid "Plain" msgstr "ZwykÅ‚a" msgid "Encrypted" msgstr "Szyfrowana" msgid "Note type" msgstr "Rodzaj notatki" msgid "Cannot open the note." msgstr "Nie można otworzyć notatki." msgid "encryption support is disabled" msgstr "obsÅ‚uga szyfrowania jest wyłączona" msgid "Authorization" msgstr "Uwierzytelnianie" msgid "Algorithm" msgstr "Algorytm" msgid "Hashing" msgstr "Haszowanie" msgid "Compression" msgstr "Kompresja" msgid "Ratio" msgstr "Współczynnik" msgid "Fast" msgstr "Szybki" msgid "Good" msgstr "Dobry" msgid "Best" msgstr "Najlepszy" msgid "Remember the last selected category" msgstr "ZapamiÄ™taj ostatnio wybranÄ… kategoriÄ™" msgid "Use system format for date and time" msgstr "Użyj formatu systemowego dla daty i czasu" msgid "Encryption" msgstr "Szyfrowanie" msgid "Visible columns" msgstr "Widoczne kolumny" msgid "Categories" msgstr "Kategorie" msgid "Notes options" msgstr "Opcje notatek" msgid "Osmo has to be restarted to take effect." msgstr "Osmo musi być uruchomione ponownie..." msgid "Layout" msgstr "UkÅ‚ad" msgid "Vertical" msgstr "Pionowy" msgid "Horizontal" msgstr "Poziomy" msgid "Tabs position" msgstr "Pozycja zakÅ‚adek" msgid "Left" msgstr "Lewa" msgid "Right" msgstr "Prawa" msgid "Top" msgstr "Górna" msgid "Bottom" msgstr "Dolna" msgid "Use default stock icons" msgstr "Użyj standardowych ikon" msgid "Disable underline in links" msgstr "Wyłącz podkreÅ›lenia w odnoÅ›nikach" msgid "Draw rows in alternating colors" msgstr "Naprzemienne kolorowane wierszy" msgid "Show exit button in toolbar" msgstr "Pokaż przycisk wyjÅ›cia w pasku narzÄ™dzi" msgid "At least one module must be visible." msgstr "Przynajmniej jeden moduÅ‚ musi być widoczny." msgid "Override locale settings" msgstr "Modyfikuj ustawnienia jÄ™zykowe" msgid "Date format" msgstr "Format daty" msgid "DD-MM-YYYY" msgstr "DD-MM-RRRR" msgid "MM-DD-YYYY" msgstr "MM-DD-RRRR" msgid "YYYY-MM-DD" msgstr "RRRR-MM-DD" msgid "YYYY-DD-MM" msgstr "RRRR-DD-MM" msgid "Time format" msgstr "Format czasu" msgid "hours" msgstr "godziny" msgid "Spell checker language" msgstr "JÄ™zyk sprawdzania pisowni" msgid "Enable tooltips" msgstr "Włącz dymki" msgid "Remember last selected page" msgstr "ZapamiÄ™taj ostatnio wybranÄ… zakÅ‚adkÄ™" msgid "Save data after every modification" msgstr "Zapisuj dane po każdej modyfikacji" msgid "Web browser" msgstr "PrzeglÄ…darka internetowa" msgid "E-mail client" msgstr "Klient poczty" msgid "Sound player" msgstr "Odtwarzacz dźwiÄ™ku" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s zostanie zastÄ…piony przez adres strony www" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s zostanie zastÄ…piony przez adres e-mail" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s zostanie zastÄ…piony przez nazwÄ™ pliku dźwiÄ™kowego" msgid "Enable system tray" msgstr "Włącz obsÅ‚ugÄ™ zasobnika systemowego" msgid "Start minimised" msgstr "Uruchom zminimalizowane" msgid "Blink on events" msgstr "Migaj w przypadku zdarzeÅ„" msgid "Ignore day note events" msgstr "Ignoruj notatki kalendarza" msgid "Hide" msgstr "Ukryj" msgid "Helpers" msgstr "Programy zewnÄ™trzne" msgid "System tray" msgstr "Zasobnik systemowy" msgid "Edit" msgstr "Edycja" msgid "Go Down" msgstr "Przejdź niżej" msgid "Select date" msgstr "Wybierz datÄ™" msgid "Select font" msgstr "Wybierz czcionkÄ™" msgid "Open URL" msgstr "Otwórz odnoÅ›nik" msgid "Calculator" msgstr "Kalkulator" msgid "Edit day note" msgstr "Edytuj notatkÄ™" msgid "Save" msgstr "Zapisz" msgid "Display full-year calendar" msgstr "Pokaż kalendarz caÅ‚oroczny" msgid "Help" msgstr "Pomoc" msgid "Invalid item" msgstr "Niepoprawny plik" msgid "Valid item" msgstr "Poprawny plik" msgid "Edit task" msgstr "Edytuj zadanie" msgid "Remove task" msgstr "UsuÅ„ zadanie" msgid "Import tasks" msgstr "Importuj zadania" msgid "Export tasks" msgstr "Eksportuj zadania" msgid "Change to previous date" msgstr "ZmieÅ„ datÄ™ na poprzedniÄ…" msgid "Change to next date" msgstr "ZmieÅ„ datÄ™ na nastÄ™pnÄ…" msgid "Print" msgstr "Drukuj" msgid "Normal" msgstr "ZwykÅ‚e" msgid "Recurrent" msgstr "Powtarzalne" msgid "Started" msgstr "RozpoczÄ™te" msgid "Finished" msgstr "ZakoÅ„czone" msgid "All items" msgstr "Wszystkie zadania" msgid "New task" msgstr "Nowe zadanie" msgid "Change due date to previous date" msgstr "ZmieÅ„ datÄ™ na poprzedniÄ…" msgid "Change due date to next date" msgstr "ZmieÅ„ datÄ™ na nastÄ™pnÄ…" msgid "Print visible tasks list" msgstr "Drukuj listÄ™ widocznych zadaÅ„" msgid "Due date" msgstr "Data" msgid "Priority" msgstr "Priorytet" msgid "Task details" msgstr "Szczegóły zadania" msgid "Close description panel" msgstr "Zamknij panel opisu." msgid "No tasks with defined date found." msgstr "Nie znaleziono zadaÅ„ ze zdefiniowanÄ… datÄ…" msgid "Save tasks" msgstr "Zapisz zadania" msgid "tasks exported" msgstr "zadania wyeksportowane" msgid "Please select at least one day when recurrency is enabled." msgstr "" "ProszÄ™ wybrać przynajmniej jeden dzieÅ„ tygodnia gdy powtarzalność zadania " "jest włączona." msgid "Set time" msgstr "Ustaw czas" msgid "Tomorrow" msgstr "Jutro" msgid "Selected task will be removed." msgstr "Zaznaczone zadanie zostanie usuniÄ™te." msgid "Basic" msgstr "Proste" msgid "Select date and time" msgstr "Wybierz datÄ™ i czas" msgid "Low" msgstr "Niski" msgid "High" msgstr "Wysoki" msgid "Enable sound notification" msgstr "Włącz powiadomienie dźwiÄ™kowe" msgid "Enable notification dialog" msgstr "Włącz powiadomienie" msgid "Advanced" msgstr "Zaawansowane" msgid "Alarm warning" msgstr "Przypomnienie o zadaniu" msgid "Postpone time" msgstr "Czas opóźnienia" msgid "Alarm command" msgstr "Komenda do wykonania" msgid "Recurrent task" msgstr "Powtarzalne zadanie" msgid "Enable" msgstr "Aktywuj" msgid "Start" msgstr "PoczÄ…tek" msgid "End" msgstr "Koniec" msgid "Interval" msgstr "OdstÄ™p" msgid "Time period" msgstr "Okres czasu" msgid "Date period" msgstr "Okres dni" msgid "Repeat" msgstr "Powtórz" msgid "Repeat in the following days" msgstr "Powtórz w nastÄ™pujÄ…cych dniach" msgid "Ignore alarm when task expired offline" msgstr "Ignoruj alarm kiedy zadanie wygasÅ‚o przy wyłączonym programie" msgid "Select a font..." msgstr "Wybierz czcionkÄ™..." msgid "Color of items that are due today" msgstr "Kolor zadania którego ważność upÅ‚ywa dziÅ›" msgid "Color of items that are due in the next 7 days" msgstr "Kolor zadania którego ważność upÅ‚ywa w ciÄ…gu 7 dni" msgid "Color of items that are past due" msgstr "Kolor zadaÅ„ których ważność upÅ‚ynęła" msgid "Task info font" msgstr "Czcionka opisu zadaÅ„" msgid "Show in bold tasks with high priority" msgstr "Zadania z wysokim priorytetem wyÅ›wietlaj czcionkÄ… pogrubionÄ…" msgid "Hide completed tasks" msgstr "Ukryj wykonane zadania" msgid "Delete completed tasks without confirmation" msgstr "Wykonane zadania usuÅ„ bez potwierdzania" msgid "Add new task when double clicked on tasks list" msgstr "Dodaj nowe zadanie poprzed dwukrotne klikniÄ™cie na liÅ›cie zadaÅ„" msgid "minutes" msgstr "minuty" msgid "0 for disable" msgstr "0 aby wyłączyć" msgid "Repeat sound alarm" msgstr "Powtórz alarm dźwiÄ™kowy" msgid "times" msgstr "razy" msgid "Global notification command" msgstr "Komenda wywoÅ‚ywana przy każdym wydarzeniu" msgid "Tasks options" msgstr "Opcje zadaÅ„" msgid "Reminder options" msgstr "Opcje przypominacza" msgid "Tasks list" msgstr "Lista zadaÅ„" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr" msgid "New Moon" msgstr "Nów" msgid "Waxing Crescent Moon" msgstr "MÅ‚ody Księżyc" msgid "Quarter Moon" msgstr "Pierwsza Kwadra" msgid "Waxing Gibbous Moon" msgstr "Księżyc Garbaty" msgid "Full Moon" msgstr "PeÅ‚nia" msgid "Waning Gibbous Moon" msgstr "Księżyc Garbaty" msgid "Last Quarter Moon" msgstr "Ostatnia Kwadra" msgid "Waning Crescent Moon" msgstr "Stary Księżyc" msgid "Error" msgstr "Błąd" msgid "Selected file exist! Overwrite?" msgstr "Zaznaczony plik istnieje! Nadpisać?" #~ msgid "Select and show first item after search" #~ msgstr "Zaznacz i pokaż pierwszy wpis po wyszukaniu" #~ msgid "Order" #~ msgstr "Tryb" #~ msgid "Mode" #~ msgstr "Kolejność" #~ msgid "Ascending" #~ msgstr "RosnÄ…co" #~ msgid "Descending" #~ msgstr "MalejÄ…co" #~ msgid "Sorting" #~ msgstr "Sortowanie" #~ msgid "Contact map location" #~ msgstr "Lokalizacja kontaktu na mapie" osmo-0.2.14/po/uk.po000664 001750 001750 00000135407 12561325524 014141 0ustar00pasppasp000000 000000 # Ukrainian translation of Osmo # This file is distributed under the same license as the Osmo package. # Sergey Panasenko , 2009. # Yury Bulka , 2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2011-02-03 23:41+0200\n" "Last-Translator: Yury Bulka \n" "Language-Team: Ukrainian \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" msgid "About" msgstr "Про" msgid "Close" msgstr "Закрити" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "перейти на попередню вкладку" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "перейти на наÑтупну вкладку" msgid "switch to selected page" msgstr "перейти на обрану Ñторінку" msgid "show options window" msgstr "показати вікно параметрів" msgid "show about window" msgstr "про програму" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "перемкнути Ñторінку у вікні параметрів Ñ– вікні про osmo" msgid "exit" msgstr "вихід" msgid "Space" msgstr "Пробіл" msgid "select current date" msgstr "обрати поточну дату" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "зробити оÑобиÑті дані наÑвними" msgid "Arrows" msgstr "Стрілки" msgid "change day" msgstr "змінити день" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "Ñмужка прокрутки на панелі інформації днÑ" msgid "change month" msgstr "змінити міÑÑць" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "змінити рік" msgid "toggle calendars for the previous and next month" msgstr "показати календарі попереднього та наÑтупного міÑÑцÑ" msgid "day notes browser" msgstr "навігатор приміток днÑ" msgid "assign background color to day note" msgstr "призначити колір тла Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼Ñ–Ñ‚Ð¾Ðº днÑ" msgid "date calculator" msgstr "калькулÑтор дати" msgid "show full-year calendar" msgstr "показати календар вÑього року" msgid "jump to date" msgstr "перейти до дати" msgid "Delete" msgstr "Видалити" msgid "remove day note" msgstr "знищити примітки днÑ" msgid "Alt+Arrows" msgstr "Alt+Arrows" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "закрити редактор" msgid "toggle bold" msgstr "жирний" msgid "toggle italic" msgstr "курÑив" msgid "toggle underline" msgstr "підкреÑлений" msgid "toggle strikethrough" msgstr "закреÑлений" msgid "toggle highlight" msgstr "підÑвічений" msgid "Arrows Up/Down" msgstr "Стрілки Up/Down" msgid "toggle alternative view" msgstr "альтернативний виглÑд" msgid "year info" msgstr "Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ рік" msgid "set current year" msgstr "Ð’Ñтановити поточний рік" msgid "close full-year calendar" msgstr "закрити календар вÑього року" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "додати Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ " msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "редагувати завданнÑ" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "вилучити завданнÑ" msgid "toggle hidden tasks" msgstr "відобразити приховані завданнÑ" msgid "activate search field" msgstr "активувати поле пошуку" msgid "Left, Right" msgstr "Left, Right" msgid "change category filter" msgstr "змінити фільтр категоріі" msgid "close task info panel" msgstr "закрити панель інформації завдань" msgid "Insert" msgstr "Ð’Ñтавити" msgid "add contact" msgstr "додати контакт" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "редагувати контакт" msgid "remove contact" msgstr "вилучити контакт" msgid "change search mode" msgstr "змінити режим пошуку" msgid "close contact details panel" msgstr "закрити панель з деталÑми контакту" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "відкрити примітку" msgid "add note" msgstr "додати примітку" msgid "remove note" msgstr "знищити примітку" msgid "edit note name and category" msgstr "редагувати назву та категорію примітки" msgid "close note editor" msgstr "закрити редактор приміток" msgid "save note" msgstr "зберегти примітку" msgid "find text" msgstr "знайти текÑÑ‚" msgid "clear selection attributes" msgstr "прибрати уÑÑ– атрибути" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO було розроблено Ð´Ð»Ñ Ð·Ñ€ÑƒÑ‡Ð½Ð¾Ñті кориÑтувачів, тому він має багато " "комбінацій клавіш. ОÑÑŒ повний ÑпиÑок:" msgid "General" msgstr "ОÑновні" msgid "Calendar" msgstr "Календар" msgid "Note editor" msgstr "Редактор приміток" msgid "Full-year calendar" msgstr "Показати веÑÑŒ рік" msgid "Tasks" msgstr "ЗавданнÑ" msgid "Contacts" msgstr "Контакти" msgid "Notes" msgstr "Примітки" msgid "Selector" msgstr "ПереглÑдач" msgid "Editor" msgstr "Редактор" msgid "A handy personal organizer" msgstr "Легкий оÑобиÑтий органайзер" msgid "compiled on" msgstr "зібрано" msgid "Programming" msgstr "ПрограмуваннÑ" msgid "Graphics" msgstr "Графіка" msgid "Contributors" msgstr "Вклад" msgid "Translators" msgstr "Перекладачі" msgid "Mailing lists" msgstr "СпиÑки розÑиланнÑ" msgid "Bug tracker" msgstr "ВідÑÐ»Ñ–Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº" msgid "Feature requests" msgstr "Запити на нові функції" msgid "Available modules" msgstr "ДоÑтупні модулі" msgid "Compiled-in features" msgstr "Включені функції (під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції)" msgid "iCalendar support" msgstr "Підтримка iCalendar" msgid "Encrypted notes support" msgstr "Підтримка шифрованих приміток" msgid "Backup support" msgstr "Підтримка резервного копіюваннÑ" msgid "Printing support" msgstr "Підтримка друку" msgid "Spell checker support" msgstr "Підтримка Ñловників" msgid "version" msgstr "верÑÑ–Ñ" msgid "SVN revision" msgstr "Ð ÐµÐ´Ð°ÐºÑ†Ñ–Ñ SVN" msgid "Key shortcuts" msgstr "Комбінації клавіш" msgid "License" msgstr "ЛіцензіÑ" msgid "Save backup" msgstr "Зберегти резервну копію" msgid "Password protection" msgstr "ЗахиÑÑ‚ паролем" msgid "Enter password" msgstr "Введіть пароль" msgid "Re-enter password" msgstr "Введіть пароль ще раз" msgid "Please enter the password" msgstr "Будь лаÑка, введіть пароль" msgid "Passwords do not match!" msgstr "Паролі не збігаютьÑÑ!" msgid "Cannot create backup!" msgstr "Ðе можу Ñтворити резервну копію!" msgid "Backup file saved successfully!" msgstr "Резервне ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ ÑƒÑпішно завершено!" msgid "Open backup file" msgstr "Відкрити файл резервної копії" msgid "Osmo backup files (*.bck)" msgstr "Файли резервних копій osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Це — не файл резервної копії Osmo" msgid "Incorrect password!" msgstr "ÐеприпуÑтимий пароль!" msgid "All your data will be replaced with backup file content." msgstr "Ð’ÑÑ– ваші оÑобиÑті дані будуть замінені на вміÑÑ‚ файлу резервної копії." msgid "Are you sure?" msgstr "Ви впевнені?" msgid "Osmo has to be restarted now..." msgstr "Osmo необхідно перезавантажити зараз..." msgid "was born" msgstr "народивÑÑ" msgid "year old" msgid_plural "years old" msgstr[0] "рік" msgstr[1] "роки" msgstr[2] "років" msgid "Current time" msgstr "Поточний чаÑ" msgid "Day number" msgstr "Ðомер днÑ" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "день до ÐºÑ–Ð½Ñ†Ñ Ñ€Ð¾ÐºÑƒ" msgstr[1] "дні до ÐºÑ–Ð½Ñ†Ñ Ñ€Ð¾ÐºÑƒ" msgstr[2] "днів до ÐºÑ–Ð½Ñ†Ñ Ñ€Ð¾ÐºÑƒ" msgid "the last day of the year" msgstr "оÑтанній день року" msgid "Today distance" msgstr "ВідÑтань до Ñьогодні" msgid "Week number" msgstr "Ðомер тижнÑ" msgid "Marked days" msgstr "Відзначені дні" msgid "Weekend days" msgstr "Вихідні" msgid "Moon phase" msgstr "Фаза міÑÑцÑ" msgid "Zodiac sign" msgstr "Знак Зодіаку" msgid "Day notes" msgstr "Примітки днÑ" msgid "Day tasks" msgstr "Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð´Ð½Ñ" msgid "Birthday" msgstr "День народженнÑ" msgid "Day category" msgstr "Категорії днÑ" msgid "Selected day note will be removed." msgstr "Обрана примітка буде знищена." msgid "Continue?" msgstr "Продовжити?" msgid "Previous year" msgstr "Попередній рік" msgid "Previous month" msgstr "Попередній міÑÑць" msgid "Previous day" msgstr "Попередній день" msgid "Today" msgstr "Сьогодні" msgid "Next day" msgstr "ÐаÑтупний день" msgid "Next month" msgstr "ÐаÑтупний міÑÑць" msgid "Next year" msgstr "ÐаÑтупний рік" msgid "Jump to date" msgstr "Перейти до дати" msgid "Print calendar" msgstr "Ðадрукувати календар" msgid "Date calculator" msgstr "КалькулÑтор дат" #, fuzzy msgid "Backup data" msgstr "Резервна копіÑ" #, fuzzy msgid "Restore data" msgstr "Відновити" msgid "Preferences" msgstr "Параметри" msgid "Quit" msgstr "Вихід" msgid "Toggle day note panel" msgstr "Панель приміток на Ñьогодні" msgid "Add task" msgstr "Додати завданнÑ" msgid "Select day color" msgstr "Вибрати колір днÑ" msgid "Browse notes" msgstr "ПереглÑд приміток" msgid "Browse iCal events" msgstr "ПереглÑд подій iCal" msgid "Export to iCal file" msgstr "ЕкÑпорт у файл iCal " msgid "Previous and next month" msgstr "Попередній та наÑтупний міÑÑці" msgid "Close note panel" msgstr "Закрити панель приміток" msgid "Highlight" msgstr "ПідÑвічений" msgid "Strikethrough" msgstr "ЗакреÑлений" msgid "Underline" msgstr "ПідкреÑлений" msgid "Italic" msgstr "КурÑив" msgid "Bold" msgstr "Жирний" msgid "Insert timeline" msgstr "Додати графік" msgid "Clear text" msgstr "Стерти текÑÑ‚" msgid "Info" msgstr "ІнформаціÑ" msgid "Select color" msgstr "Обрати колір" msgid "None" msgstr "Ðічого" msgid "Cancel" msgstr "СкаÑувати" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "рік" msgstr[1] "роки" msgstr[2] "років" msgid "month" msgid_plural "months" msgstr[0] "міÑÑць" msgstr[1] "міÑÑці" msgstr[2] "міÑÑців" msgid "day" msgid_plural "days" msgstr[0] "день" msgstr[1] "дні" msgstr[2] "днів" msgid "hour" msgid_plural "hours" msgstr[0] "година" msgstr[1] "години" msgstr[2] "годин" msgid "minute" msgid_plural "minutes" msgstr[0] "хвилина" msgstr[1] "хвилини" msgstr[2] "хвилин" msgid "second" msgid_plural "seconds" msgstr[0] "Ñекунда" msgstr[1] "Ñекунди" msgstr[2] "Ñекунд" msgid "or" msgstr "чи" msgid "rounded down" msgstr "заокруглено до зменшеннÑ" msgid "week" msgid_plural "weeks" msgstr[0] "тиждень" msgstr[1] "тижні" msgstr[2] "тижнів" msgid "working day" msgid_plural "working days" msgstr[0] "робочий день" msgstr[1] "робочі дні" msgstr[2] "робочих днів" msgid "time is ignored" msgstr "Ñ‡Ð°Ñ Ð½Ðµ враховано" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "вихідний день" msgstr[1] "вихідні дні" msgstr[2] "вихідних днів" msgid "This calculator only supports dates after year 1." msgstr "Цей калькулÑтор підтримує лише дати піÑÐ»Ñ 1 року." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "вихідний день не враховано" msgstr[1] "вихідні дні не враховано" msgstr[2] "вихідні дні не враховано" msgid "Year" msgstr "Рік" msgid "Month" msgstr "МіÑÑць" msgid "Day" msgstr "День" msgid "Current date" msgstr "Поточна дата" msgid "Set current date" msgstr "Ð’Ñтановити поточну дату" msgid "Hour" msgstr "Година" msgid "Minute" msgstr "Хвилина" msgid "Second" msgstr "Секунда" msgid "Set current time" msgstr "Ð’Ñтановити поточний чаÑ" msgid "Reset time" msgstr "Скинути чаÑ" msgid "First date and time" msgstr "Перші дата та чаÑ" msgid "Second date and time" msgstr "Другі дата та чаÑ" msgid "Alternative time units" msgstr "У інших одиницÑÑ… чаÑу" msgid "Result" msgstr "Результат" msgid "Duration between two dates" msgstr "ТриваліÑть між двома датами" msgid "Operation" msgstr "ДіÑ" msgid "add" msgstr "додати" msgid "subtract" msgstr "віднÑти" msgid "Date and time to add or subtract from" msgstr "Початкові дата та чаÑ" msgid "Years" msgstr "Роки" msgid "Months" msgstr "МіÑÑці" msgid "Days" msgstr "Дні" msgid "Weeks" msgstr "Ðеділі" msgid "Hours" msgstr "Години" msgid "Minutes" msgstr "Хвилини" msgid "Seconds" msgstr "Секунди" msgid "Ignore weekend days" msgstr "Ігнорувати вихідні дні" msgid "Reset fields" msgstr "ОчиÑтити полÑ" msgid "Time to add or subtract" msgstr "Ð§Ð°Ñ Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ‡Ð¸ відніманнÑ" msgid "Jump to" msgstr "Перейти до" msgid "Add to or subtract from a date" msgstr "Додати/віднÑти чаÑ" msgid "Leap year" msgstr "ВиÑокоÑний рік" msgid "Yes" msgstr "Так" msgid "No" msgstr "ÐÑ–" msgid "Chinese year animal" msgstr "За китайÑьким календарем" msgid "Number of days" msgstr "КількіÑть днів" msgid "Number of weeks" msgstr "КількіÑть тижнів" msgid "Number of weekend days" msgstr "КількіÑть вихідних днів" msgid "Year info" msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ рік" msgid "Current year" msgstr "Поточний рік" msgid "Alternative view" msgstr "Ðльтернативний виглÑд" msgid "event" msgid_plural "events" msgstr[0] "подіÑ" msgstr[1] "події" msgstr[2] "подій" msgid "No valid calendars defined" msgstr "Календарі не визначено" msgid "iCalendar events" msgstr "Події iCalendar" msgid "Date" msgstr "Дата" msgid "Time" msgstr "ЧаÑ" msgid "Summary" msgstr "СтиÑло" msgid "Select output file" msgstr "Обрати вихідний файл" msgid "The list will be cleared and all entries will be lost." msgstr "СпиÑок буде очищений Ñ– вÑÑ– запиÑи будуть втрачені." msgid "Done!" msgstr "Зроблено!" msgid "event exported" msgid_plural "events exported" msgstr[0] "Ð·Ð°Ð¿Ð¸Ñ ÐµÐºÑпортовано " msgstr[1] "запиÑи екÑпортовано" msgstr[2] "запиÑів екÑпортовано" msgid "iCalendar export" msgstr "ЕкÑпорт у iCalendar" msgid "Day Selector" msgstr "Обрати день" msgid "Use date period" msgstr "ВикориÑтовувати період дат" msgid "Add" msgstr "Додати" msgid "Clear" msgstr "ОчиÑтити" msgid "Remove" msgstr "Знищити" msgid "Output filename" msgstr "Ðазва вихідного файлу" msgid "Browse" msgstr "ПереглÑнути" msgid "Export" msgstr "Екпорт" msgid "no entries" msgstr "немає запиÑів" msgid "entry" msgid_plural "entries" msgstr[0] "запиÑ" msgstr[1] "запиÑи" msgstr[2] "запиÑів" msgid "Calendar notes" msgstr "Примітки календарÑ" msgid "Search" msgstr "Пошук" msgid "Filter" msgstr "Фільтр" msgid "Current month" msgstr "Поточний міÑÑць" msgid "Selected month" msgstr "Обраний міÑÑць" msgid "Selected year" msgstr "Обраний рік" msgid "Selected month and year" msgstr "Обраний міÑÑць та рік" msgid "All notes" msgstr "УÑÑ– примітки" msgid "Case sensitive" msgstr "З урахуваннÑм регіÑтру" msgid "Strikethrough past day notes" msgstr "ЗакреÑлювати примітки минулих днів" msgid "Note" msgstr "Примітка" msgid "Syntax" msgstr "СинтакÑиÑ" msgid "abbreviated weekday name" msgstr "Ñкорочена назва Ð´Ð½Ñ Ñ‚Ð¸Ð¶Ð½Ñ" msgid "full weekday name" msgstr "повна назва Ð´Ð½Ñ Ñ‚Ð¸Ð¶Ð½Ñ" msgid "abbreviated month name" msgstr "Ñкорочена назва міÑÑцÑ" msgid "full month name" msgstr "повна назва міÑÑцÑ" msgid "day of the month" msgstr "день міÑÑцÑ" msgid "MM/DD/YY" msgstr "ММ/ДД/РРРР" msgid "day of the month without leading zeros" msgstr "день міÑÑÑ†Ñ Ð±ÐµÐ· попередніх нулів" msgid "year without century" msgstr "рік без ÑтоліттÑ" msgid "year with century" msgstr "рік з ÑтоліттÑм" msgid "Date header format" msgstr "Формат дати заголовка" msgid "Set default format" msgstr "Типовий вихідний формат" msgid "Date format syntax" msgstr "Формат дати" msgid "Day note marker" msgstr "Позначка примітки на день" msgid "Event marker" msgstr "Позначка події" msgid "Circle" msgstr "Круг" msgid "Ellipse" msgstr "ЕліпÑ" msgid "Wave" msgstr "ХвилÑ" msgid "Current day marker" msgstr "Позначка поточного днÑ" msgid "Arrow" msgstr "Стрілка" msgid "Free-hand circle" msgstr "Круг (від руки)" msgid "Colors" msgstr "Кольори" msgid "Header color" msgstr "Колір заголовку" msgid "Weekend days color" msgstr "Колір вихідних днів" msgid "Cursor color" msgstr "Колір курÑору" msgid "Event marker color" msgstr "Колір днів з подіÑми" msgid "Current day marker color" msgstr "Колір поточного днÑ" msgid "Birthday marker color" msgstr "Колір Ð´Ð½Ñ Ð½Ð°Ñ€Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ" msgid "Date font" msgstr "Шрифт дати" msgid "Calendar font" msgstr "Шрифт календарÑ" msgid "Note font" msgstr "Шрифт примітки" msgid "Enable block cursor" msgstr "КурÑор у виглÑді прÑмокутника" msgid "Cursor thickness" msgstr "Ширина курÑору" msgid "Thin" msgstr "Тонкий" msgid "Thick" msgstr "ТовÑтий" msgid "Edit category" msgstr "Редагувати категорію" msgid "Color" msgstr "Колір" msgid "Name" msgstr "Ім'Ñ" msgid "Select ICS file" msgstr "Обрати ICS-файл" msgid "All Files" msgstr "УÑÑ– файли" msgid "Calendar files (*.ics)" msgstr "Файл ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ (*.ics)" msgid "Modify ICAL parameters" msgstr "Змінити параметри ICAL" msgid "Filename" msgstr "Ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ" msgid "Options" msgstr "Опції" msgid "Disabled" msgstr "Вимкнено" msgid "Valid" msgstr "ПрийнÑтий" msgid "Description" msgstr "ОпиÑ" msgid "Full date" msgstr "Повна дата" msgid "Mark" msgstr "Мітка" msgid "Week start on Monday" msgstr "Тиждень починаетьÑÑ Ð· понеділка" msgid "Show day names" msgstr "Показувати назви днів" msgid "No month change" msgstr "Ðе змінювати міÑÑць" msgid "Show week numbers" msgstr "Показувати номери тижнів" msgid "Simple view in full-year calendar" msgstr "ПроÑтий виглÑд у календарі року " msgid "Enable auxilary calendars" msgstr "Включити додаткові календарі" msgid "Ascending sorting in day notes browser" msgstr "Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð² порÑдку зроÑÑ‚Ð°Ð½Ð½Ñ Ñƒ навігаторі приміток днÑ" msgid "Enable spell checker in day notes" msgstr "Ввімкнути перевірку орфографії у примітках днÑ" msgid "Show seconds" msgstr "Показати Ñекунди" msgid "Appearance" msgstr "Зовнішний виглÑд" msgid "Day categories" msgstr "Категорії днÑ" msgid "iCalendar files" msgstr "Файли iCalendar" msgid "Show in day info panel" msgstr "Показувати на панелі інформації про день" msgid "Name day" msgstr "Іменини" msgid "Error printing" msgstr "Помилка друку" msgid "Printing properties" msgstr "Параметри друку" msgid "Month name" msgstr "Ðазва міÑÑцÑ" msgid "Day name" msgstr "Ðазва днÑ" msgid "Events" msgstr "Події" msgid "Fonts" msgstr "Шрифти" msgid "Birthdays" msgstr "Дні народженнÑ" msgid "Namedays" msgstr "Іменини" msgid "Visible events" msgstr "Видимі події" msgid "Padding" msgstr "ВідÑтупи" msgid "Event maximum length" msgstr "МакÑимальна довжина події" msgid "Page orientation:" msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñторінки" msgid "Portrait" msgstr "Портрет" msgid "Landscape" msgstr "Ландшафт" msgid "Timeline" msgstr "Графік чаÑу" msgid "From (hour)" msgstr "Від (години)" msgid "Step (minutes)" msgstr "Крок (хвилини)" msgid "To (hour)" msgstr "До (години)" msgid "No date" msgstr "Ðема дати" msgid "Rat" msgstr "Пацюк" msgid "Ox" msgstr "Бик" msgid "Tiger" msgstr "Тигр" msgid "Hare" msgstr "Заєць" msgid "Dragon" msgstr "Дракон" msgid "Snake" msgstr "Змій" msgid "Horse" msgstr "Кінь" msgid "Sheep" msgstr "ВівцÑ" msgid "Monkey" msgstr "Мавпа" msgid "Fowl" msgstr "Півень" msgid "Dog" msgstr "Собака" msgid "Pig" msgstr "СвинÑ" msgid "Unknown" msgstr "Ðевідомо" msgid "Aquarius" msgstr "Водолій" msgid "Pisces" msgstr "Риби" msgid "Aries" msgstr "Овен" msgid "Taurus" msgstr "Телець" msgid "Gemini" msgstr "Близнюки" msgid "Cancer" msgstr "Рак" msgid "Leo" msgstr "Лев" msgid "Virgo" msgstr "Діва" msgid "Libra" msgstr "Ваги" msgid "Scorpio" msgstr "Скорпіон" msgid "Sagittarius" msgstr "Стрілець" msgid "Capricorn" msgstr "Козеріг" msgid "Cannot perform selected operation." msgstr "Ðе вдаєтьÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ обрану операцію." msgid "Task has been modified or removed." msgstr "Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ змінено або вилучено." msgid "Remind me later" msgstr "Ðагадати пізніше" msgid "Done" msgstr "Зроблено" msgid "postponed" msgstr "відкладено" msgid "Show task" msgstr "Показати завданнÑ" msgid "Alarm warning!" msgstr "ÐагадуваннÑ!" msgid "Day note" msgstr "Примітка днÑ" msgid "Type" msgstr "Тип" msgid "Event" msgstr "ПодіÑ" msgid "Task" msgstr "ЗавданнÑ" msgid "Show Osmo" msgstr "Показати Osmo" msgid "No birthdays defined" msgstr "Жодного Ð´Ð½Ñ Ð½Ð°Ñ€Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ" msgid "Birthdays list" msgstr "СпиÑок днів народженнÑ" msgid "Days to birthday" msgstr "Дні народженнÑ" msgid "Age" msgstr "Вік" msgid "Birthday date" msgstr "День народженнÑ" msgid "today" msgstr "Ñьогодні" msgid "Please select address" msgstr "Будь лаÑка, оберіть адреÑу" msgid "Information" msgstr "ІнформаціÑ" msgid "Work" msgstr "Робота" msgid "Home" msgstr "Дім" msgid "Group" msgstr "Група" msgid "First name" msgstr "Ім'Ñ" msgid "Last name" msgstr "Прізвище" msgid "Second name" msgstr "По-батькові" msgid "Nickname" msgstr "ПÑевдо" msgid "Tags" msgstr "Теґи" msgid "Name day date" msgstr "Іменини" msgid "Home address" msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ð°Ð´Ñ€ÐµÑа" msgid "Home postcode" msgstr "Дом. ІндекÑ" msgid "Home city" msgstr "Дом. МіÑто" msgid "Home state" msgstr "Дом. Регіон" msgid "Home country" msgstr "Дом. Країна" msgid "Organization" msgstr "ОрганізаціÑ" msgid "Department" msgstr "Підрозділ" msgid "Work address" msgstr "Робоча адреÑа" msgid "Work postcode" msgstr "Роб. ІндекÑ" msgid "Work city" msgstr "Роб. МіÑто" msgid "Work state" msgstr "Роб. Регіон" msgid "Work country" msgstr "Роб. Країна" msgid "Fax" msgstr "ФакÑ" msgid "Home phone" msgstr "Дом. телефон" msgid "Home phone 2" msgstr "Дом. телефон 2" msgid "Home phone 3" msgstr "Дом. телефон 3" msgid "Home phone 4" msgstr "Дом. телефон 4" msgid "Work phone" msgstr "Роб. телефон" msgid "Work phone 2" msgstr "Роб. телефон 2" msgid "Work phone 3" msgstr "Роб. телефон 3" msgid "Work phone 4" msgstr "Роб. телефон 4" msgid "Cell phone" msgstr "Моб. телефон" msgid "Cell phone 2" msgstr "Моб. телефон 2" msgid "Cell phone 3" msgstr "Моб. телефон 3" msgid "Cell phone 4" msgstr "Моб. телефон 4" msgid "E-Mail" msgstr "Електронна пошта" msgid "E-Mail 2" msgstr "Електронна пошта 2" msgid "E-Mail 3" msgstr "Електронна пошта 3" msgid "E-Mail 4" msgstr "Електронна пошта 4" msgid "WWW" msgstr "ВебÑайт" msgid "WWW 2" msgstr "ВебÑайт 2" msgid "WWW 3" msgstr "ВебÑайт 3" msgid "WWW 4" msgstr "ВебÑайт 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Блоґ" msgid "Photo" msgstr "ФотографіÑ" msgid "Additional info" msgstr "Додаткова інформаціÑ" msgid "New contact" msgstr "Ðовий контакт" msgid "Remove contact" msgstr "Вилучити контакт" msgid "Edit contact" msgstr "Редагувати контакт" msgid "Show birthdays" msgstr "Показати дні народженнÑ" msgid "Show contact location on the map" msgstr "Показати Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ на карті" msgid "Import contacts" msgstr "Імпортувати контакти" msgid "Export contacts" msgstr "ЕкÑпортувати контакти" msgid "First Name" msgstr "Ім'Ñ" msgid "Last Name" msgstr "Прізвище" msgid "All fields" msgstr "Ð’ÑÑ– полÑ" msgid "Contact details" msgstr "Підробиці контакту" msgid "Close contact panel" msgstr "Закрити панель контактів" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "контакт екÑпортовано" msgstr[1] "контакти екÑпортовано" msgstr[2] "контактів екÑпортовано" msgid "Cannot create file." msgstr "Ðеможливо Ñтворити файл" msgid "Output format" msgstr "Вихідний формат" msgid "Add header" msgstr "Додати заголовок" msgid "Fields to export" msgstr "ÐŸÐ¾Ð»Ñ Ð´Ð¾ екÑпорту" msgid "All" msgstr "УÑÑ–" msgid "Invert" msgstr "Інвертувати" msgid "Select fields" msgstr "Обрані полÑ" msgid "Select CSV file" msgstr "Обрати CSV-файл" msgid "CSV (comma-separated values) files (*.csv)" msgstr "файли CSV (дані-через-Ñому) (*.csv)" msgid "Please select file first." msgstr "Будь лаÑка, Ñпершу виберіть файл" msgid "Import type" msgstr "Тип імпорту" msgid "File" msgstr "Файл" msgid "Input filename" msgstr "Введіть Ñ–Ð¼Ñ Ñ„Ð°Ð¹Ð»Ñƒ" msgid "Import" msgstr "Імпорт" msgid "Nothing to import." msgstr "Ðема чого імпортувати" msgid "contact added" msgid_plural "contacts added" msgstr[0] "контакт додано" msgstr[1] "контакти додано" msgstr[2] "контактів додано" msgid "of" msgstr "з" msgid "Record" msgstr "ЗапиÑ" msgid "Number fields per record" msgstr "ЧиÑло полів у запиÑÑ–" msgid "Use first record as header" msgstr "ВикориÑтовувати перший Ð·Ð°Ð¿Ð¸Ñ Ñк заголовок" msgid "Field type" msgstr "Тип полÑ" msgid "Value" msgstr "ЗначеннÑ" msgid "No records found in selected file." msgstr "Ðема запиÑів у обраному файлі." msgid "Cannot read file." msgstr "Ðеможливо прочитати файл." msgid "Cannot open file." msgstr "Ðеможливо відкрити файл." msgid "Selected contact will be removed." msgstr "Обраний контакт буде вилучено." msgid "Select photo" msgstr "Оберіть фото" msgid "Address" msgstr "ÐдреÑа" msgid "Postcode" msgstr "ІндекÑ" msgid "City" msgstr "МіÑто" msgid "State" msgstr "Регіон" msgid "Country" msgstr "Країна" msgid "Add contact" msgstr "Додати контакт" msgid "Personal" msgstr "ОÑобиÑті" msgid "Phones" msgstr "Телефони" msgid "Internet" msgstr "Інтернет" msgid "Color of contact tags" msgstr "Колір тегів контакту" msgid "Color of links" msgstr "Колір поÑилань" msgid "Font size" msgstr "Розмір шрифту" msgid "Name font size" msgstr "Розмір шрифту імені" msgid "Item font size" msgstr "Розмір шрифту пункту" msgid "Photo size" msgstr "Розмір фото" msgid "Small" msgstr "Маленький" msgid "Medium" msgstr "Середній" msgid "Large" msgstr "Великий" msgid "Hide group column" msgstr "Сховати Ñтовпець групи" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Різне" msgid "Groups" msgstr "Групи" msgid "Visible columns in birthday browser" msgstr "Видимі Ñтовпці у навігаторі днів народженнÑ" msgid "Show calendar" msgstr "Показати календар" msgid "Show tasks" msgstr "Показати завданнÑ" msgid "Show contacts" msgstr "Показати контакти" msgid "Show notes" msgstr "Показати примітки" msgid "Show options" msgstr "Показати параметри" msgid "Show small calendar window" msgstr "Показати вікно маленького календарика" msgid "Check for events since last run" msgstr "Перевірка подій, Ñкі ÑталиÑÑ Ð· моменту оÑтаннього запуÑку" msgid "Number of days to check forward for events (default: 0)" msgstr "ПеревірÑти події на таке чиÑло днів вперед (за замовчуваннÑм: 0)" msgid "Set absolute path for settings and data files" msgstr "Ð’Ñтановити абÑолютний шлÑÑ… до файлів налаштувань та даних" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "кориÑний оÑобиÑтий органайзер" msgid "ERROR: Cannot create config files" msgstr "ПОМИЛКÐ: Ðеможливо Ñтворити файл конфігурації" msgid "Another copy of OSMO is already running." msgstr "Інша ÐºÐ¾Ð¿Ñ–Ñ OSMO уже запущена." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Паралельна робота кількох копій Osmo може Ñпричинити втрату даних." msgid "Do you really want to continue?" msgstr "Ви Ñправді бажаєте продовжити?" msgid "Warning" msgstr "ПопередженнÑ" msgid "The note has changed." msgstr "Примітка була змінена." msgid "Do you want to save it?" msgstr "Ви бажаете зберегти Ñ—Ñ—?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Ðема запиÑів у обраному файлі." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Ви Ñправді бажаєте продовжити?" msgid "Question" msgstr "ПитаннÑ" msgid "Words" msgstr "Слова" msgid "Lines" msgstr "РÑдки" msgid "Characters" msgstr "Символи" msgid "White characters" msgstr "Пробіли" msgid "Bytes" msgstr "Байти" msgid "Document" msgstr "Документ" msgid "Selection" msgstr "Вибір" msgid "Created" msgstr "Створено" msgid "Modified" msgstr "Змінено" msgid "New note" msgstr "Ðова примітка" msgid "Add note" msgstr "Додати примітку" msgid "Edit note" msgstr "Редагувати примітку" msgid "Delete note" msgstr "Видалити примітку" msgid "Remove note" msgstr "Вилучити примітку" msgid "Find" msgstr "Знайти" msgid "Clear attributes" msgstr "Стерти атрибути" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Зберегти примітку" msgid "Insert current date and time" msgstr "Ð’Ñтавити поточні дату та чаÑ" msgid "Insert separator" msgstr "Ð’Ñтавити розділювач" msgid "Statistics" msgstr "СтатиÑтика" msgid "Close editor" msgstr "Закрити редактор" msgid "Toggle spell checker" msgstr "Перевірити орфографію" msgid "Category" msgstr "КатегоріÑ" msgid "Note name" msgstr "Ім'Ñ Ð¿Ñ€Ð¸Ð¼Ñ–Ñ‚ÐºÐ¸" msgid "Last changes" msgstr "ОÑтанні зміни" msgid "Read-only" msgstr "Тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" msgid "Line" msgstr "ЛініÑ" msgid "Column" msgstr "Стовпець" msgid "case sensitive" msgstr "чутливіÑть до регіÑтру" msgid "Close find entry" msgstr "Закрити поле пошуку" msgid "Edit entry" msgstr "Редагувати поле" msgid "Remember cursor position" msgstr "ЗапамÑтати позицію курÑора" msgid "Selected note will be removed." msgstr "Обрана примітка буде знищена." msgid "No further data recovery will be possible." msgstr "Відновити дані буде неможливо." msgid "Plain" msgstr "Без шифруваннÑ" msgid "Encrypted" msgstr "Шифрована" msgid "Note type" msgstr "Тип примітки" msgid "Cannot open the note." msgstr "Ðеможливо відкрити примітку." msgid "encryption support is disabled" msgstr "підтримку ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾" msgid "Authorization" msgstr "ÐвторизаціÑ" msgid "Algorithm" msgstr "Ðлгоритм" msgid "Hashing" msgstr "Геш-функціÑ" msgid "Compression" msgstr "СтиÑканнÑ" msgid "Ratio" msgstr "ЯкіÑть ÑтиÑтканнÑ" msgid "Fast" msgstr "Швидко" msgid "Good" msgstr "Добре" msgid "Best" msgstr "Ðайкраще" msgid "Remember the last selected category" msgstr "Запам'Ñтовувати оÑтанню обрану категорію" msgid "Use system format for date and time" msgstr "ВикориÑтовувати ÑиÑтемний формат дати та чаÑу" msgid "Encryption" msgstr "ШифруваннÑ" msgid "Visible columns" msgstr "Видимі Ñтовпчики" msgid "Categories" msgstr "Категорії" msgid "Notes options" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð¼Ñ–Ñ‚Ð¾Ðº" msgid "Osmo has to be restarted to take effect." msgstr "Ð”Ð»Ñ Ð·Ð°ÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ необхідно перезавантажити програму." msgid "Layout" msgstr "Макет" msgid "Vertical" msgstr "Вертикальний" msgid "Horizontal" msgstr "Горизонтальний" msgid "Tabs position" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº" msgid "Left" msgstr "Ліворуч" msgid "Right" msgstr "Праворуч" msgid "Top" msgstr "Зверху" msgid "Bottom" msgstr "Знизу" msgid "Use default stock icons" msgstr "ВикориÑтовувати типові значки ÑиÑтеми" msgid "Disable underline in links" msgstr "Вимкнути підкреÑÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñилань" msgid "Draw rows in alternating colors" msgstr "Розфарбовувати Ñ€Ñдки" msgid "Show exit button in toolbar" msgstr "Показувати кнопку виходу на панелі інÑтрументів" msgid "At least one module must be visible." msgstr "Хоча б один модуль повинен бути видимий." msgid "Override locale settings" msgstr "Перекрити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñ–" msgid "Date format" msgstr "Формат дати" msgid "DD-MM-YYYY" msgstr "ДД-ММ-РРРР" msgid "MM-DD-YYYY" msgstr "ММ-ДД-РРРР" msgid "YYYY-MM-DD" msgstr "РРРР-ММ-ДД" msgid "YYYY-DD-MM" msgstr "РРРР-ДД-ММ" msgid "Time format" msgstr "Формат чаÑу" msgid "hours" msgstr "години" msgid "Spell checker language" msgstr "Мова перевірки орфографії" msgid "Enable tooltips" msgstr "Ввімкнути підказки" msgid "Remember last selected page" msgstr "Запам'Ñтовувати оÑтанню обрану Ñторінку" msgid "Save data after every modification" msgstr "Зберігати дані піÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— зміни" msgid "Web browser" msgstr "Ðавігатор інтернету" msgid "E-mail client" msgstr "Клієнт електронної пошти" msgid "Sound player" msgstr "Програвач звуку" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Шаблон %s буде змінено на адреÑу поÑиланнÑ" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Шаблон %s буде змінено на e-mail адреÑу" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Шаблон %s буде змінено на назву аудіо файлу" msgid "Enable system tray" msgstr "Ввімкнути іконку у треї" msgid "Start minimised" msgstr "ЗапуÑкати згорнутим" msgid "Blink on events" msgstr "Мерехтіти при події" msgid "Ignore day note events" msgstr "Ігнорувати події приміток днÑ" msgid "Hide" msgstr "Сховати" msgid "Helpers" msgstr "Помічники" msgid "System tray" msgstr "СиÑтемний лоток" msgid "Edit" msgstr "Редагувати" msgid "Go Down" msgstr "Йти вниз" msgid "Select date" msgstr "Обрати дату" msgid "Select font" msgstr "Обрати шрифт" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "КалькулÑтор" msgid "Edit day note" msgstr "Редагувати примітку днÑ" msgid "Save" msgstr "Зберегти" msgid "Display full-year calendar" msgstr "Показати веÑÑŒ рік" msgid "Help" msgstr "Допомога" msgid "Invalid item" msgstr "ÐедійÑний пункт" msgid "Valid item" msgstr "ДійÑний пункт" msgid "Edit task" msgstr "Редагувати завданнÑ" msgid "Remove task" msgstr "Вилучити завданнÑ" msgid "Import tasks" msgstr "Імпорт завдань" msgid "Export tasks" msgstr "ЕкÑпорт завдань" msgid "Change to previous date" msgstr "Змінити на попередню дату" msgid "Change to next date" msgstr "Змінити на наÑтупну дату" msgid "Print" msgstr "Друкувати" msgid "Normal" msgstr "Звичайний" msgid "Recurrent" msgstr "Періодичний" msgid "Started" msgstr "ПочалоÑÑ" msgid "Finished" msgstr "ЗакінчилоÑÑ" msgid "All items" msgstr "Ð’ÑÑ–" msgid "New task" msgstr "Ðове завданнÑ" msgid "Change due date to previous date" msgstr "Зміна терміну на попередню дату" msgid "Change due date to next date" msgstr "Зміна терміну на наÑтупну дату" msgid "Print visible tasks list" msgstr "Друкувати видимий ÑпиÑок завдань" msgid "Due date" msgstr "Термін" msgid "Priority" msgstr "Пріоритет " msgid "Task details" msgstr "Деталі завданнÑ" msgid "Close description panel" msgstr "Закрити панель опиÑу" msgid "No tasks with defined date found." msgstr "Ðемає завдань зі визначеними термінами." msgid "Save tasks" msgstr "Зберегти завданнÑ" msgid "tasks exported" msgstr "Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ÐµÐºÑпортовано" msgid "Please select at least one day when recurrency is enabled." msgstr "Будь лаÑка, оберіть принаймні один день, коли увімкнена періодичніÑть." msgid "Set time" msgstr "Ð’Ñтановити чаÑ" msgid "Tomorrow" msgstr "Завтра" msgid "Selected task will be removed." msgstr "Обране Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ вилучено." msgid "Basic" msgstr "ОÑновне" msgid "Select date and time" msgstr "Оберіть дату та чаÑ" msgid "Low" msgstr "Ðизький" msgid "High" msgstr "ВиÑокий" msgid "Enable sound notification" msgstr "Включити звукове ÑповіщеннÑ" #, fuzzy msgid "Enable notification dialog" msgstr "Включити звукове ÑповіщеннÑ" msgid "Advanced" msgstr "Додатково" msgid "Alarm warning" msgstr "Ðагадати" msgid "Postpone time" msgstr "Ð§Ð°Ñ Ð²Ñ–Ð´Ñ‚ÐµÑ€Ð¼Ñ–Ð½ÑƒÐ²Ð°Ð½Ð½Ñ" msgid "Alarm command" msgstr "Команда Ð´Ð»Ñ Ð½Ð°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ" msgid "Recurrent task" msgstr "Періодичне завданнÑ" msgid "Enable" msgstr "Ввімкнути" msgid "Start" msgstr "Початок" msgid "End" msgstr "Кінець" msgid "Interval" msgstr "Інтервал" msgid "Time period" msgstr "Період чаÑу" msgid "Date period" msgstr "Період дати" msgid "Repeat" msgstr "Повтор" msgid "Repeat in the following days" msgstr "Повторювати протÑгом наÑтупних днів" msgid "Ignore alarm when task expired offline" msgstr "Ігнорувати Ð½Ð°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ, Ñкі вже протермінованÑ" msgid "Select a font..." msgstr "Обрати шрифт..." msgid "Color of items that are due today" msgstr "Колір елементів, Ñкі мають відбутиÑÑ Ñьогодні" msgid "Color of items that are due in the next 7 days" msgstr "Колір елементів, Ñкі мають відбутиÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом наÑтупних 7 днів" msgid "Color of items that are past due" msgstr "Колір протермінованих подій" msgid "Task info font" msgstr "Шрифт інформації про завданнÑ" msgid "Show in bold tasks with high priority" msgstr "ВиділÑти жирним шрифтом Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ð¸Ñокого пріоритету" msgid "Hide completed tasks" msgstr "Сховати завершені завданнÑ" msgid "Delete completed tasks without confirmation" msgstr "Знищувати завершені Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð±ÐµÐ· перепитуваннÑ" msgid "Add new task when double clicked on tasks list" msgstr "Додавати нове Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ подвійному клацанні на ÑпиÑок завдань" msgid "minutes" msgstr "хвилини" msgid "0 for disable" msgstr "0 Ð´Ð»Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ" msgid "Repeat sound alarm" msgstr "Повторювати звукове оповіщеннÑ" msgid "times" msgstr "разів" msgid "Global notification command" msgstr "Глобальна команда ÑповідомленнÑ" msgid "Tasks options" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ" msgid "Reminder options" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ" msgid "Tasks list" msgstr "СпиÑок завдань" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "â„–" msgid "New Moon" msgstr "Ðовий міÑÑць" msgid "Waxing Crescent Moon" msgstr "Між новим міÑÑцем та першою чвертю" msgid "Quarter Moon" msgstr "Перша чверть" msgid "Waxing Gibbous Moon" msgstr "Між першою чвертю та повним міÑÑцем" msgid "Full Moon" msgstr "Повний міÑÑць" msgid "Waning Gibbous Moon" msgstr "Між повним міÑÑцем та оÑтанньою чвертью " msgid "Last Quarter Moon" msgstr "ОÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð²ÐµÑ€Ñ‚ÑŒ" msgid "Waning Crescent Moon" msgstr "Переходить в півміÑÑць" msgid "Error" msgstr "Помилка" msgid "Selected file exist! Overwrite?" msgstr "Такий файл Ñ–Ñнує! ПерезапиÑати?" #~ msgid "Select and show first item after search" #~ msgstr "Виділити та показати перший елемент піÑÐ»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ" #~ msgid "Order" #~ msgstr "ПорÑдок" #~ msgid "Mode" #~ msgstr "Режим" #~ msgid "Ascending" #~ msgstr "ЗбільшеннÑ" #~ msgid "Descending" #~ msgstr "ЗменшеннÑ" #~ msgid "Sorting" #~ msgstr "СортуваннÑ" #~ msgid "Contact map location" #~ msgstr "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ на карті" osmo-0.2.14/po/te.po000664 001750 001750 00000107006 12561325524 014124 0ustar00pasppasp000000 000000 # Telugu translation of Osmo # This file is distributed under the same license as the Osmo package. # à°ªà±à°°à°µà±€à°£à± ఇళà±à°³ , 2011 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-06 09:53+0000\n" "Last-Translator: à°ªà±à°°à°µà±€à°£à± ఇళà±à°³ \n" "Language-Team: Telugu\n" "Language: te\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" msgid "About" msgstr "à°—à±à°°à°¿à°‚à°šà°¿" msgid "Close" msgstr "మూసివేయి" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ à°Ÿà±à°¯à°¾à°¬à±à°•ౠమారà±" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "తరà±à°µà°¾à°¤à°¿ à°Ÿà±à°¯à°¾à°¬à±à°•ౠమారà±" msgid "switch to selected page" msgstr "à°Žà°‚à°šà±à°•à±à°¨à±à°¨ పేజీకి మారà±" msgid "show options window" msgstr "à°à°šà±à°›à°¿à°•ాల విండోనౠచూపించà±" msgid "show about window" msgstr "విండో à°—à±à°°à°¿à°‚à°šà°¿ చూపించà±" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "" msgid "exit" msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±" msgid "Space" msgstr "" msgid "select current date" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ తేదీని à°Žà°‚à°šà±à°•ొనà±" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "" msgid "Arrows" msgstr "" msgid "change day" msgstr "" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "" msgid "change month" msgstr "నెల మారà±à°šà±" msgid "Home/End" msgstr "" msgid "change year" msgstr "సంవతà±à°¸à°°à°‚ మారà±à°šà±" msgid "toggle calendars for the previous and next month" msgstr "" msgid "day notes browser" msgstr "" msgid "assign background color to day note" msgstr "" msgid "date calculator" msgstr "తేదీ లెకà±à°•ింపరి" msgid "show full-year calendar" msgstr "" msgid "jump to date" msgstr "" msgid "Delete" msgstr "తొలగించà±" msgid "remove day note" msgstr "" msgid "Alt+Arrows" msgstr "" msgid "Esc" msgstr "" msgid "close editor" msgstr "కూరà±à°ªà°•ానà±à°¨à°¿ మూసివేయి" msgid "toggle bold" msgstr "" msgid "toggle italic" msgstr "" msgid "toggle underline" msgstr "" msgid "toggle strikethrough" msgstr "" msgid "toggle highlight" msgstr "" msgid "Arrows Up/Down" msgstr "" msgid "toggle alternative view" msgstr "" msgid "year info" msgstr "సంవతà±à°¸à°°à°‚ సమాచారం" msgid "set current year" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ సంవతà±à°¸à°°à°¾à°¨à±à°¨à°¿ అమరà±à°šà±" msgid "close full-year calendar" msgstr "" msgid "Alt+a, Insert" msgstr "" msgid "add task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°¨à±à°¨à°¿ జతచేయి" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°¨à±à°¨à°¿ సవరించà±" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°¨à±à°¨à°¿ తీసివేయి" msgid "toggle hidden tasks" msgstr "" msgid "activate search field" msgstr "" msgid "Left, Right" msgstr "" msgid "change category filter" msgstr "" msgid "close task info panel" msgstr "" msgid "Insert" msgstr "చొపà±à°ªà°¿à°‚à°šà±" msgid "add contact" msgstr "పరిచయానà±à°¨à°¿ జతచేయి" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "పరిచయానà±à°¨à°¿ సవరించà±" msgid "remove contact" msgstr "పరిచయానà±à°¨à°¿ తీసివేయి" msgid "change search mode" msgstr "శోధన విధానà±à°¨à°¿ మారà±à°šà±" msgid "close contact details panel" msgstr "" msgid "Enter" msgstr "à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà±" msgid "open note" msgstr "" msgid "add note" msgstr "" msgid "remove note" msgstr "" msgid "edit note name and category" msgstr "" msgid "close note editor" msgstr "" msgid "save note" msgstr "" msgid "find text" msgstr "పాఠà±à°¯à°¾à°¨à±à°¨à°¿ వెతà±à°•à±" msgid "clear selection attributes" msgstr "" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" msgid "General" msgstr "సాధారణం" msgid "Calendar" msgstr "à°•à±à°¯à°¾à°²à±†à°‚à°¡à°°à±" msgid "Note editor" msgstr "" msgid "Full-year calendar" msgstr "" msgid "Tasks" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°²à±" msgid "Contacts" msgstr "పరిచయాలà±" msgid "Notes" msgstr "" msgid "Selector" msgstr "ఎంపికరి" msgid "Editor" msgstr "కూరà±à°ªà°•à°‚" msgid "A handy personal organizer" msgstr "" msgid "compiled on" msgstr "" msgid "Programming" msgstr "à°ªà±à°°à±‹à°—à±à°°à°¾à°®à°¿à°‚à°—à±" msgid "Graphics" msgstr "à°—à±à°°à°¾à°«à°¿à°•à±à°¸à±" msgid "Contributors" msgstr "సహాయకà±à°²à±" msgid "Translators" msgstr "à°…à°¨à±à°µà°¾à°¦à°•à±à°²à±" msgid "Mailing lists" msgstr "మెయిలింగౠజాబితాలà±" msgid "Bug tracker" msgstr "బగౠజాడకం" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹à°µà±à°¨à±à°¨ పరà±à°µà°¿à°•ాలà±" msgid "Compiled-in features" msgstr "" msgid "iCalendar support" msgstr "" msgid "Encrypted notes support" msgstr "" msgid "Backup support" msgstr "à°¬à±à°¯à°¾à°•à±à°…పౠమదà±à°§à°¤à±" msgid "Printing support" msgstr "à°®à±à°¦à±à°°à°£ సహకారం" msgid "Spell checker support" msgstr "" msgid "version" msgstr "రూపాంతరం" msgid "SVN revision" msgstr "SVN రివిజనà±" msgid "Key shortcuts" msgstr "" msgid "License" msgstr "లైసెనà±à°¸à±" msgid "Save backup" msgstr "à°¬à±à°¯à°¾à°•à±à°…పౠభదà±à°°à°ªà°°à±à°šà±" msgid "Password protection" msgstr "సంకేతపదం à°°à°•à±à°·à°£" msgid "Enter password" msgstr "సంకేతపదానà±à°¨à°¿ à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà°‚à°¡à°¿" msgid "Re-enter password" msgstr "సంకేతపదానà±à°¨à°¿ మరలా à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà°‚à°¡à°¿" msgid "Please enter the password" msgstr "దయచేసి సంకేతపదానà±à°¨à°¿ à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà°‚à°¡à°¿" msgid "Passwords do not match!" msgstr "సంకేతపదాలౠసరిపోలలేదà±!" msgid "Cannot create backup!" msgstr "à°¬à±à°¯à°¾à°•à±à°…పౠసృషà±à°Ÿà°¿à°‚à°šà±à°Ÿ వీలà±à°•ాదà±!" msgid "Backup file saved successfully!" msgstr "à°¬à±à°¯à°¾à°•à±à°…పౠఫైలౠవిజయవంతంగా à°­à°¦à±à°°à°ªà°°à±à°šà°¬à°¡à°¿à°‚ది!" msgid "Open backup file" msgstr "à°¬à±à°¯à°¾à°•à±à°…పౠఫైలà±à°¨à± తెరà±à°µà±" msgid "Osmo backup files (*.bck)" msgstr "Osmo à°¬à±à°¯à°¾à°•à±à°…పౠఫైళà±à°³à± (*.bck)" msgid "This is not Osmo backup file" msgstr "ఇది Osmo à°¬à±à°¯à°¾à°•à±à°…పౠఫైలౠకాదà±" msgid "Incorrect password!" msgstr "సంకేతపదం తపà±à°ªà±!" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "" msgid "year old" msgid_plural "years old" msgstr[0] "" msgstr[1] "" msgid "Current time" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ సమయం" msgid "Day number" msgstr "రోజౠసంఖà±à°¯" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "" msgstr[1] "" msgid "the last day of the year" msgstr "" msgid "Today distance" msgstr "" msgid "Week number" msgstr "వార సంఖà±à°¯" msgid "Marked days" msgstr "" msgid "Weekend days" msgstr "వారాంతపౠరోజà±à°²à±" msgid "Moon phase" msgstr "" msgid "Zodiac sign" msgstr "" msgid "Day notes" msgstr "" msgid "Day tasks" msgstr "" msgid "Birthday" msgstr "à°ªà±à°Ÿà±à°Ÿà°¿à°¨à°°à±‹à°œà±" msgid "Day category" msgstr "" msgid "Selected day note will be removed." msgstr "" msgid "Continue?" msgstr "కొనసాగాలా?" msgid "Previous year" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ సంవతà±à°¸à°°à°‚" msgid "Previous month" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ నెల" msgid "Previous day" msgstr "à°®à±à°¨à±à°ªà°Ÿà°¿ రోజà±" msgid "Today" msgstr "నేడà±" msgid "Next day" msgstr "తరà±à°µà°¾à°¤ రోజà±" msgid "Next month" msgstr "తరà±à°µà°¾à°¤à°¿ నెల" msgid "Next year" msgstr "తరà±à°µà°¾à°¤à°¿ సంవతà±à°¸à°°à°‚" msgid "Jump to date" msgstr "" msgid "Print calendar" msgstr "à°•à±à°¯à°¾à°²à±†à°‚à°¡à°°à±à°¨à± à°®à±à°¦à±à°°à°¿à°‚à°šà±" msgid "Date calculator" msgstr "" msgid "Backup data" msgstr "" msgid "Restore data" msgstr "" msgid "Preferences" msgstr "à°ªà±à°°à°¾à°§à°¾à°¨à±à°¯à°¤à°²à±" msgid "Quit" msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±" msgid "Toggle day note panel" msgstr "" msgid "Add task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°¨à±à°¨à°¿ జతచేయి" msgid "Select day color" msgstr "రోజౠరంగà±à°¨à°¿ à°Žà°‚à°šà±à°•ొనà±" msgid "Browse notes" msgstr "" msgid "Browse iCal events" msgstr "" msgid "Export to iCal file" msgstr "" msgid "Previous and next month" msgstr "" msgid "Close note panel" msgstr "" msgid "Highlight" msgstr "" msgid "Strikethrough" msgstr "కొటà±à°Ÿà°¿à°µà±‡à°¤" msgid "Underline" msgstr "à°•à±à°°à°¿à°‚దగీత" msgid "Italic" msgstr "ఇటాలికà±" msgid "Bold" msgstr "బొదà±à°¦à±" msgid "Insert timeline" msgstr "" msgid "Clear text" msgstr "పాఠà±à°¯à°¾à°¨à±à°¨à°¿ à°¤à±à°¡à°¿à°šà°¿à°µà±‡à°¯à°¿" msgid "Info" msgstr "సమాచారం" msgid "Select color" msgstr "à°°à°‚à°—à±à°¨à°¿ à°Žà°‚à°šà±à°•ొనà±" msgid "None" msgstr "à°à°¦à±€à°•ాదà±" msgid "Cancel" msgstr "à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿" msgid "OK" msgstr "సరే" msgid "year" msgid_plural "years" msgstr[0] "సంవతà±à°¸à°°à°‚" msgstr[1] "సంవతà±à°¸à°°à°¾à°²à±" msgid "month" msgid_plural "months" msgstr[0] "నెల" msgstr[1] "నెలలà±" msgid "day" msgid_plural "days" msgstr[0] "రోజà±" msgstr[1] "రోజà±à°²à±" msgid "hour" msgid_plural "hours" msgstr[0] "à°—à°‚à°Ÿ" msgstr[1] "à°—à°‚à°Ÿà°²à±" msgid "minute" msgid_plural "minutes" msgstr[0] "నిమిషం" msgstr[1] "నిమిషాలà±" msgid "second" msgid_plural "seconds" msgstr[0] "సెకనà±" msgstr[1] "సెకనà±à°²à±" msgid "or" msgstr "లేదా" msgid "rounded down" msgstr "" msgid "week" msgid_plural "weeks" msgstr[0] "వారం" msgstr[1] "వారాలà±" msgid "working day" msgid_plural "working days" msgstr[0] "పని దినం" msgstr[1] "పని దినాలà±" msgid "time is ignored" msgstr "" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "వారాంతపౠదినం" msgstr[1] "వారాంతపౠదినాలà±" msgid "This calculator only supports dates after year 1." msgstr "" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "" msgstr[1] "" msgid "Year" msgstr "సంవతà±à°¸à°°à°‚" msgid "Month" msgstr "నెల" msgid "Day" msgstr "రోజà±" msgid "Current date" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ తేదీ" msgid "Set current date" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ తేదీని అమరà±à°šà±" msgid "Hour" msgstr "à°—à°‚à°Ÿ" msgid "Minute" msgstr "నిమిషం" msgid "Second" msgstr "సెకనà±" msgid "Set current time" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ సమయానà±à°¨à°¿ అమరà±à°šà±" msgid "Reset time" msgstr "" msgid "First date and time" msgstr "మొదటి తేదీ మరియౠసమయం" msgid "Second date and time" msgstr "" msgid "Alternative time units" msgstr "" msgid "Result" msgstr "ఫలితం" msgid "Duration between two dates" msgstr "" msgid "Operation" msgstr "" msgid "add" msgstr "à°•à°²à±à°ªà±" msgid "subtract" msgstr "తీసివేయి" msgid "Date and time to add or subtract from" msgstr "" msgid "Years" msgstr "సంవతà±à°¸à°°à°¾à°²à±" msgid "Months" msgstr "నెలలà±" msgid "Days" msgstr "రోజà±à°²à±" msgid "Weeks" msgstr "వారాలà±" msgid "Hours" msgstr "à°—à°‚à°Ÿà°²à±" msgid "Minutes" msgstr "నిమిషాలà±" msgid "Seconds" msgstr "సెకనà±à°²à±" msgid "Ignore weekend days" msgstr "వారాంతపౠదినాలనౠవదిలివేయి" msgid "Reset fields" msgstr "à°•à±à°·à±‡à°¤à±à°°à°¾à°²à°¨à± మరలఅమరà±à°šà±" msgid "Time to add or subtract" msgstr "" msgid "Jump to" msgstr "" msgid "Add to or subtract from a date" msgstr "" msgid "Leap year" msgstr "లీపౠసంవతà±à°¸à°°à°‚" msgid "Yes" msgstr "à°…à°µà±à°¨à±" msgid "No" msgstr "కాదà±" msgid "Chinese year animal" msgstr "" msgid "Number of days" msgstr "మొతà±à°¤à°‚ రోజà±à°² సంఖà±à°¯" msgid "Number of weeks" msgstr "మొతà±à°¤à°‚ వారాల సంఖà±à°¯" msgid "Number of weekend days" msgstr "మొతà±à°¤à°‚ వారాంతపౠదినాల సంఖà±à°¯" msgid "Year info" msgstr "సంవతà±à°¸à°° సమాచారం" msgid "Current year" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ సంవతà±à°¸à°°à°‚" msgid "Alternative view" msgstr "à°ªà±à°°à°¤à±à°¯à°¾à°®à±à°¨à°¾à°¯ వీకà±à°·à°£à°‚" msgid "event" msgid_plural "events" msgstr[0] "కారà±à°¯à°•à±à°°à°®à°‚" msgstr[1] "కారà±à°¯à°•à±à°°à°®à°¾à°²à±" msgid "No valid calendars defined" msgstr "" msgid "iCalendar events" msgstr "" msgid "Date" msgstr "తేదీ" msgid "Time" msgstr "సమయం" msgid "Summary" msgstr "సారాంశం" msgid "Select output file" msgstr "" msgid "The list will be cleared and all entries will be lost." msgstr "" msgid "Done!" msgstr "అయినది!" msgid "event exported" msgid_plural "events exported" msgstr[0] "" msgstr[1] "" msgid "iCalendar export" msgstr "" msgid "Day Selector" msgstr "రోజౠఎంపికరి" msgid "Use date period" msgstr "" msgid "Add" msgstr "జతచేయి" msgid "Clear" msgstr "à°¶à±à°­à±à°°à°ªà°°à±à°šà±" msgid "Remove" msgstr "తీసివేయి" msgid "Output filename" msgstr "" msgid "Browse" msgstr "విహరించà±" msgid "Export" msgstr "à°Žà°—à±à°®à°¤à°¿à°šà±‡à°¯à°¿" msgid "no entries" msgstr "à° à°ªà±à°°à°µà±‡à°¶à°¾à°²à± లేవà±" msgid "entry" msgid_plural "entries" msgstr[0] "à°ªà±à°°à°µà±‡à°¶à°‚" msgstr[1] "à°ªà±à°°à°µà±‡à°¶à°¾à°²à±" msgid "Calendar notes" msgstr "" msgid "Search" msgstr "శోధించà±" msgid "Filter" msgstr "వడపోతకం" msgid "Current month" msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤ మాసం" msgid "Selected month" msgstr "" msgid "Selected year" msgstr "ఎంపికచేసిన సంవతà±à°¸à°°à°‚" msgid "Selected month and year" msgstr "" msgid "All notes" msgstr "" msgid "Case sensitive" msgstr "" msgid "Strikethrough past day notes" msgstr "" msgid "Note" msgstr "" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" msgid "full month name" msgstr "" msgid "day of the month" msgstr "" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" msgid "Date header format" msgstr "" msgid "Set default format" msgstr "" msgid "Date format syntax" msgstr "" msgid "Day note marker" msgstr "" msgid "Event marker" msgstr "" msgid "Circle" msgstr "వృతà±à°¤à°‚" msgid "Ellipse" msgstr "" msgid "Wave" msgstr "à°…à°²" msgid "Current day marker" msgstr "" msgid "Arrow" msgstr "బాణం" msgid "Free-hand circle" msgstr "" msgid "Colors" msgstr "à°°à°‚à°—à±à°²à±" msgid "Header color" msgstr "పీఠిక à°°à°‚à°—à±" msgid "Weekend days color" msgstr "" msgid "Cursor color" msgstr "à°•à°°à±à°¸à°°à± à°°à°‚à°—à±" msgid "Event marker color" msgstr "" msgid "Current day marker color" msgstr "" msgid "Birthday marker color" msgstr "" msgid "Date font" msgstr "తేదీ ఫాంటà±" msgid "Calendar font" msgstr "à°•à±à°¯à°¾à°²à±†à°‚డరౠఫాంటà±" msgid "Note font" msgstr "" msgid "Enable block cursor" msgstr "" msgid "Cursor thickness" msgstr "" msgid "Thin" msgstr "" msgid "Thick" msgstr "" msgid "Edit category" msgstr "వరà±à°—ానà±à°¨à°¿ సవరించà±" msgid "Color" msgstr "à°°à°‚à°—à±" msgid "Name" msgstr "పేరà±" msgid "Select ICS file" msgstr "" msgid "All Files" msgstr "à°…à°¨à±à°¨à°¿ ఫైళà±à°³à±" msgid "Calendar files (*.ics)" msgstr "à°•à±à°¯à°¾à°²à±†à°‚డరౠఫైళà±à°³à± (*.ics)" msgid "Modify ICAL parameters" msgstr "" msgid "Filename" msgstr "ఫైలà±à°ªà±‡à°°à±" msgid "Options" msgstr "à°à°šà±à°›à°¿à°•ాలà±" msgid "Disabled" msgstr "అచేతనపరచివà±à°‚ది" msgid "Valid" msgstr "" msgid "Description" msgstr "వివరణ" msgid "Full date" msgstr "పూరà±à°¤à°¿ తేదీ" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "" msgid "Show day names" msgstr "రోజౠపేరà±à°²à°¨à± చూపించà±" msgid "No month change" msgstr "" msgid "Show week numbers" msgstr "" msgid "Simple view in full-year calendar" msgstr "" msgid "Enable auxilary calendars" msgstr "" msgid "Ascending sorting in day notes browser" msgstr "" msgid "Enable spell checker in day notes" msgstr "" msgid "Show seconds" msgstr "" msgid "Appearance" msgstr "కనిపించà±à°µà°¿à°§à°‚" msgid "Day categories" msgstr "రోజౠవరà±à°—ాలà±" msgid "iCalendar files" msgstr "" msgid "Show in day info panel" msgstr "" msgid "Name day" msgstr "రోజౠపేరà±" msgid "Error printing" msgstr "" msgid "Printing properties" msgstr "à°®à±à°¦à±à°°à°£à°¾ లకà±à°·à°£à°¾à°²à±" msgid "Month name" msgstr "నెల పేరà±" msgid "Day name" msgstr "రోజౠపేరà±" msgid "Events" msgstr "కారà±à°¯à°•à±à°°à°®à°¾à°²à±" msgid "Fonts" msgstr "ఫాంటà±à°²à±" msgid "Birthdays" msgstr "à°ªà±à°Ÿà±à°Ÿà°¿à°¨à°°à±‹à°œà±à°²à±" msgid "Namedays" msgstr "" msgid "Visible events" msgstr "" msgid "Padding" msgstr "" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" msgid "Portrait" msgstr "నిలà±à°µà±à°šà°¿à°¤à±à°°à°‚" msgid "Landscape" msgstr "à°…à°¡à±à°¡à°šà°¿à°¤à±à°°à°‚" msgid "Timeline" msgstr "సమయరేఖ" msgid "From (hour)" msgstr "" msgid "Step (minutes)" msgstr "" msgid "To (hour)" msgstr "" msgid "No date" msgstr "తేదీ లేదà±" msgid "Rat" msgstr "" msgid "Ox" msgstr "" msgid "Tiger" msgstr "" msgid "Hare" msgstr "" msgid "Dragon" msgstr "" msgid "Snake" msgstr "" msgid "Horse" msgstr "" msgid "Sheep" msgstr "" msgid "Monkey" msgstr "" msgid "Fowl" msgstr "" msgid "Dog" msgstr "" msgid "Pig" msgstr "" msgid "Unknown" msgstr "తెలియదà±" msgid "Aquarius" msgstr "" msgid "Pisces" msgstr "" msgid "Aries" msgstr "" msgid "Taurus" msgstr "" msgid "Gemini" msgstr "" msgid "Cancer" msgstr "" msgid "Leo" msgstr "మృగసిర" msgid "Virgo" msgstr "" msgid "Libra" msgstr "" msgid "Scorpio" msgstr "వృశà±à°šà°¿à°•à°‚" msgid "Sagittarius" msgstr "" msgid "Capricorn" msgstr "" msgid "Cannot perform selected operation." msgstr "" msgid "Task has been modified or removed." msgstr "" msgid "Remind me later" msgstr "" msgid "Done" msgstr "అయినది" msgid "postponed" msgstr "వాయిదావేయబడిందిది" msgid "Show task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°¨à±à°¨à°¿ చూపించà±" msgid "Alarm warning!" msgstr "అలారం హెచà±à°šà°°à°¿à°•!" msgid "Day note" msgstr "" msgid "Type" msgstr "à°°à°•à°‚" msgid "Event" msgstr "కారà±à°¯à°•à±à°°à°®à°‚" msgid "Task" msgstr "à°•à°°à±à°¤à°µà±à°¯à°‚" msgid "Show Osmo" msgstr "" msgid "No birthdays defined" msgstr "" msgid "Birthdays list" msgstr "à°ªà±à°Ÿà±à°Ÿà°¿à°¨à°°à±‹à°œà±à°² జాబితా" msgid "Days to birthday" msgstr "" msgid "Age" msgstr "వయసà±à°¸à±" msgid "Birthday date" msgstr "à°ªà±à°Ÿà±à°Ÿà°¿à°¨à°°à±‹à°œà± తేదీ" msgid "today" msgstr "నేడà±" msgid "Please select address" msgstr "" msgid "Information" msgstr "సంవతà±à°¸à°°à°‚" msgid "Work" msgstr "పని" msgid "Home" msgstr "నివాసం" msgid "Group" msgstr "à°—à±à°‚à°ªà±" msgid "First name" msgstr "మొదటి పేరà±" msgid "Last name" msgstr "చివరి పేరà±" msgid "Second name" msgstr "రెండవ పేరà±" msgid "Nickname" msgstr "à°®à±à°¦à±à°¦à±à°ªà±‡à°°à±" msgid "Tags" msgstr "à°Ÿà±à°¯à°¾à°—à±à°²à±" msgid "Name day date" msgstr "" msgid "Home address" msgstr "ఇంటి à°šà°¿à°°à±à°¨à°¾à°®à°¾" msgid "Home postcode" msgstr "" msgid "Home city" msgstr "నివాస పటà±à°Ÿà°£à°‚" msgid "Home state" msgstr "" msgid "Home country" msgstr "" msgid "Organization" msgstr "" msgid "Department" msgstr "" msgid "Work address" msgstr "" msgid "Work postcode" msgstr "" msgid "Work city" msgstr "" msgid "Work state" msgstr "" msgid "Work country" msgstr "" msgid "Fax" msgstr "" msgid "Home phone" msgstr "" msgid "Home phone 2" msgstr "" msgid "Home phone 3" msgstr "" msgid "Home phone 4" msgstr "" msgid "Work phone" msgstr "" msgid "Work phone 2" msgstr "" msgid "Work phone 3" msgstr "" msgid "Work phone 4" msgstr "" msgid "Cell phone" msgstr "" msgid "Cell phone 2" msgstr "" msgid "Cell phone 3" msgstr "" msgid "Cell phone 4" msgstr "" msgid "E-Mail" msgstr "à°ˆ-మెయిలà±" msgid "E-Mail 2" msgstr "" msgid "E-Mail 3" msgstr "" msgid "E-Mail 4" msgstr "" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "" msgid "WWW 3" msgstr "" msgid "WWW 4" msgstr "" msgid "IM Gadu-Gadu" msgstr "" msgid "IM Yahoo" msgstr "" msgid "IM MSN" msgstr "" msgid "IM ICQ" msgstr "" msgid "IM AOL" msgstr "" msgid "IM Jabber" msgstr "" msgid "IM Skype" msgstr "" msgid "IM Tlen" msgstr "" msgid "Blog" msgstr "à°¬à±à°²à°¾à°—à±" msgid "Photo" msgstr "ఫోటో" msgid "Additional info" msgstr "అదనపౠసమాచారం" msgid "New contact" msgstr "కొతà±à°¤ పరిచయం" msgid "Remove contact" msgstr "పరిచయానà±à°¨à°¿ తీసివేయి" msgid "Edit contact" msgstr "పరిచయానà±à°¨à°¿ సవరించà±" msgid "Show birthdays" msgstr "à°ªà±à°Ÿà±à°Ÿà°¿à°¨à°°à±‹à°œà±à°²à°¨à± చూపించà±" msgid "Show contact location on the map" msgstr "పరిచయం à°¸à±à°¥à°¾à°¨à°¾à°¨à±à°¨à°¿ పటమà±à°ªà±ˆ చూపించà±" msgid "Import contacts" msgstr "పరిచయాలనౠదిగà±à°®à°¤à°¿à°šà±‡à°¯à°¿" msgid "Export contacts" msgstr "పరిచయాలనౠఎగà±à°®à°¤à°¿à°šà±‡à°¯à°¿" msgid "First Name" msgstr "మొదటి పేరà±" msgid "Last Name" msgstr "చివరి పేరà±" msgid "All fields" msgstr "à°…à°¨à±à°¨à°¿ à°•à±à°·à±‡à°¤à±à°°à°¾à°²à±" msgid "Contact details" msgstr "పరిచయం వివరాలà±" msgid "Close contact panel" msgstr "పరిచయం à°ªà±à°¯à°¾à°¨à°²à±à°¨à± మూసివేయి" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "పరిచయం à°Žà°—à±à°®à°¤à°¿à°šà±‡à°¯à°¬à°¡à°¿à°‚ది" msgstr[1] "పరిచయాలౠఎగà±à°®à°¤à°¿à°šà±‡à°¯à°¬à°¡à±à°¡à°¾à°¯à°¿" msgid "Cannot create file." msgstr "ఫైలà±à°¨à± సృషà±à°Ÿà°¿à°‚à°šà±à°Ÿ వీలà±à°•ాదà±." msgid "Output format" msgstr "" msgid "Add header" msgstr "పీఠికనౠజతచేయి" msgid "Fields to export" msgstr "à°Žà°—à±à°®à°¤à°¿à°šà±‡à°¯à°¾à°²à±à°¸à°¿à°¨ à°•à±à°·à±‡à°¤à±à°°à°¾à°²à±" msgid "All" msgstr "à°…à°¨à±à°¨à±€" msgid "Invert" msgstr "" msgid "Select fields" msgstr "à°•à±à°·à±‡à°¤à±à°°à°¾à°²à°¨à± à°Žà°‚à°šà±à°•ొనà±" msgid "Select CSV file" msgstr "" msgid "CSV (comma-separated values) files (*.csv)" msgstr "" msgid "Please select file first." msgstr "" msgid "Import type" msgstr "" msgid "File" msgstr "" msgid "Input filename" msgstr "" msgid "Import" msgstr "" msgid "Nothing to import." msgstr "" msgid "contact added" msgid_plural "contacts added" msgstr[0] "" msgstr[1] "" msgid "of" msgstr "" msgid "Record" msgstr "" msgid "Number fields per record" msgstr "" msgid "Use first record as header" msgstr "" msgid "Field type" msgstr "" msgid "Value" msgstr "" msgid "No records found in selected file." msgstr "" msgid "Cannot read file." msgstr "" msgid "Cannot open file." msgstr "" msgid "Selected contact will be removed." msgstr "" msgid "Select photo" msgstr "ఫోటోనౠఎంచà±à°•ొనà±" msgid "Address" msgstr "" msgid "Postcode" msgstr "తపాలాకోడà±" msgid "City" msgstr "నగరం" msgid "State" msgstr "రాషà±à°Ÿà±à°°à°‚" msgid "Country" msgstr "దేశం" msgid "Add contact" msgstr "పరిచయానà±à°¨à°¿ జతచేయి" msgid "Personal" msgstr "à°µà±à°¯à°•à±à°¤à°¿à°—తం" msgid "Phones" msgstr "ఫోనà±à°²à±" msgid "Internet" msgstr "అంతరà±à°œà°¾à°²à°‚" msgid "Color of contact tags" msgstr "పరిచయం à°Ÿà±à°¯à°¾à°—à±à°² యొకà±à°• à°°à°‚à°—à±" msgid "Color of links" msgstr "లింకà±à°² యొకà±à°• à°°à°‚à°—à±" msgid "Font size" msgstr "ఫాంటౠపరిమాణం" msgid "Name font size" msgstr "" msgid "Item font size" msgstr "" msgid "Photo size" msgstr "ఫొటో పరిమాణం" msgid "Small" msgstr "à°šà°¿à°¨à±à°¨à°¦à°¿" msgid "Medium" msgstr "మధà±à°¯à°¸à±à°¥à°‚" msgid "Large" msgstr "పెదà±à°¦à°¦à°¿" msgid "Hide group column" msgstr "" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "ఇతర" msgid "Groups" msgstr "à°—à±à°‚à°ªà±à°²à±" msgid "Visible columns in birthday browser" msgstr "" msgid "Show calendar" msgstr "à°•à±à°¯à°¾à°²à±†à°‚డరౠచూపించà±" msgid "Show tasks" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°²à°¨à± చూపించà±" msgid "Show contacts" msgstr "పరిచయాలనౠచూపించà±" msgid "Show notes" msgstr "" msgid "Show options" msgstr "à°à°šà±à°›à°¿à°•ాలనౠచూపించà±" msgid "Show small calendar window" msgstr "" msgid "Check for events since last run" msgstr "" msgid "Number of days to check forward for events (default: 0)" msgstr "" msgid "Set absolute path for settings and data files" msgstr "" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "" msgid "ERROR: Cannot create config files" msgstr "" msgid "Another copy of OSMO is already running." msgstr "" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" msgid "Do you really want to continue?" msgstr "మీరౠనిజంగానే కొనసాగాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?" msgid "Warning" msgstr "హెచà±à°šà°°à°¿à°•" msgid "The note has changed." msgstr "" msgid "Do you want to save it?" msgstr "" msgid "No URLs found in the selection..." msgstr "" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "మీరౠనిజంగానే కొనసాగాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?" msgid "Question" msgstr "" msgid "Words" msgstr "పదాలà±" msgid "Lines" msgstr "వరà±à°¸à°²à±" msgid "Characters" msgstr "à°…à°•à±à°·à°°à°¾à°²à±" msgid "White characters" msgstr "తెలà±à°²à°¨à°¿ à°…à°•à±à°·à°°à°¾à°²à±" msgid "Bytes" msgstr "" msgid "Document" msgstr "" msgid "Selection" msgstr "" msgid "Created" msgstr "" msgid "Modified" msgstr "" msgid "New note" msgstr "" msgid "Add note" msgstr "" msgid "Edit note" msgstr "" msgid "Delete note" msgstr "" msgid "Remove note" msgstr "" msgid "Find" msgstr "" msgid "Clear attributes" msgstr "" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "" msgid "Insert current date and time" msgstr "" msgid "Insert separator" msgstr "" msgid "Statistics" msgstr "" msgid "Close editor" msgstr "" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "" msgid "Note name" msgstr "" msgid "Last changes" msgstr "" msgid "Read-only" msgstr "" msgid "Line" msgstr "" msgid "Column" msgstr "" msgid "case sensitive" msgstr "" msgid "Close find entry" msgstr "" msgid "Edit entry" msgstr "" msgid "Remember cursor position" msgstr "" msgid "Selected note will be removed." msgstr "" msgid "No further data recovery will be possible." msgstr "" msgid "Plain" msgstr "" msgid "Encrypted" msgstr "" msgid "Note type" msgstr "" msgid "Cannot open the note." msgstr "" msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "" msgid "Algorithm" msgstr "" msgid "Hashing" msgstr "" msgid "Compression" msgstr "" msgid "Ratio" msgstr "నిషà±à°ªà°¤à±à°¤à°¿" msgid "Fast" msgstr "వేగం" msgid "Good" msgstr "మంచిది" msgid "Best" msgstr "ఉతà±à°¤à°®à°‚" msgid "Remember the last selected category" msgstr "" msgid "Use system format for date and time" msgstr "" msgid "Encryption" msgstr "à°Žà°¨à±à°•à±à°°à°¿à°ªà±à°·à°¨à±" msgid "Visible columns" msgstr "" msgid "Categories" msgstr "వరà±à°—ాలà±" msgid "Notes options" msgstr "" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "నమూనా" msgid "Vertical" msgstr "నిలà±à°µà±" msgid "Horizontal" msgstr "à°…à°¡à±à°¡à°‚" msgid "Tabs position" msgstr "à°Ÿà±à°¯à°¾à°¬à±à°² à°¸à±à°¥à°¾à°¨à°‚" msgid "Left" msgstr "à°Žà°¡à°®" msgid "Right" msgstr "à°•à±à°¡à°¿" msgid "Top" msgstr "పైన" msgid "Bottom" msgstr "à°•à±à°°à°¿à°‚à°¦" msgid "Use default stock icons" msgstr "" msgid "Disable underline in links" msgstr "" msgid "Draw rows in alternating colors" msgstr "" msgid "Show exit button in toolbar" msgstr "సాధనపటà±à°Ÿà±€à°²à±‹ నిషà±à°•à±à°°à°®à°£ బొతà±à°¤à°¾à°‚ చూపించà±" msgid "At least one module must be visible." msgstr "" msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "తేదీ ఫారà±à°®à±‡à°Ÿà±" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "సమయం ఫారà±à°®à±‡à°Ÿà±" msgid "hours" msgstr "à°—à°‚à°Ÿà°²à±" msgid "Spell checker language" msgstr "à°…à°•à±à°·à°° తనిఖీ భాష" msgid "Enable tooltips" msgstr "సాధనచిటà±à°•ాలనౠచేతనపరà±à°šà±" msgid "Remember last selected page" msgstr "" msgid "Save data after every modification" msgstr "" msgid "Web browser" msgstr "జాల విహారకం" msgid "E-mail client" msgstr "à°ˆ-మెయిలౠకà±à°²à°¯à°¿à°‚à°Ÿà±" msgid "Sound player" msgstr "à°¶à°¬à±à°¦ ఆటకం" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "" msgid "Enable system tray" msgstr "à°µà±à°¯à°µà°¸à±à°¥ పళà±à°³à°¾à°¨à±à°¨à°¿ చేతనపరà±à°šà±" msgid "Start minimised" msgstr "" msgid "Blink on events" msgstr "" msgid "Ignore day note events" msgstr "" msgid "Hide" msgstr "" msgid "Helpers" msgstr "" msgid "System tray" msgstr "" msgid "Edit" msgstr "" msgid "Go Down" msgstr "" msgid "Select date" msgstr "" msgid "Select font" msgstr "" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "" msgid "Edit day note" msgstr "" msgid "Save" msgstr "" msgid "Display full-year calendar" msgstr "" msgid "Help" msgstr "" msgid "Invalid item" msgstr "" msgid "Valid item" msgstr "" msgid "Edit task" msgstr "" msgid "Remove task" msgstr "" msgid "Import tasks" msgstr "" msgid "Export tasks" msgstr "" msgid "Change to previous date" msgstr "" msgid "Change to next date" msgstr "" msgid "Print" msgstr "" msgid "Normal" msgstr "" msgid "Recurrent" msgstr "" msgid "Started" msgstr "" msgid "Finished" msgstr "" msgid "All items" msgstr "" msgid "New task" msgstr "కొతà±à°¤ à°•à°°à±à°¤à°µà±à°¯à°‚" msgid "Change due date to previous date" msgstr "" msgid "Change due date to next date" msgstr "" msgid "Print visible tasks list" msgstr "" msgid "Due date" msgstr "" msgid "Priority" msgstr "à°ªà±à°°à°¾à°®à±à°–à±à°¯à°¤" msgid "Task details" msgstr "à°•à°°à±à°¤à°µà±à°¯à°‚ వివరాలà±" msgid "Close description panel" msgstr "వివరణ à°ªà±à°¯à°¾à°¨à°²à±à°¨à± మూసివేయి" msgid "No tasks with defined date found." msgstr "" msgid "Save tasks" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°²à°¨à± à°­à°¦à±à°°à°ªà°°à±à°šà±" msgid "tasks exported" msgstr "" msgid "Please select at least one day when recurrency is enabled." msgstr "" msgid "Set time" msgstr "" msgid "Tomorrow" msgstr "రేపà±" msgid "Selected task will be removed." msgstr "" msgid "Basic" msgstr "" msgid "Select date and time" msgstr "" msgid "Low" msgstr "" msgid "High" msgstr "" msgid "Enable sound notification" msgstr "à°¶à°¬à±à°¦ à°ªà±à°°à°•టనలనౠచేతనపరà±à°šà±" #, fuzzy msgid "Enable notification dialog" msgstr "à°¶à°¬à±à°¦ à°ªà±à°°à°•టనలనౠచేతనపరà±à°šà±" msgid "Advanced" msgstr "ఉనà±à°¨à°¤à°‚" msgid "Alarm warning" msgstr "" msgid "Postpone time" msgstr "" msgid "Alarm command" msgstr "" msgid "Recurrent task" msgstr "" msgid "Enable" msgstr "చేతనపరà±à°šà±" msgid "Start" msgstr "à°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±" msgid "End" msgstr "à°®à±à°—à°¿à°‚à°šà±" msgid "Interval" msgstr "విరామం" msgid "Time period" msgstr "" msgid "Date period" msgstr "" msgid "Repeat" msgstr "à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°‚" msgid "Repeat in the following days" msgstr "" msgid "Ignore alarm when task expired offline" msgstr "" msgid "Select a font..." msgstr "" msgid "Color of items that are due today" msgstr "" msgid "Color of items that are due in the next 7 days" msgstr "" msgid "Color of items that are past due" msgstr "" msgid "Task info font" msgstr "" msgid "Show in bold tasks with high priority" msgstr "" msgid "Hide completed tasks" msgstr "" msgid "Delete completed tasks without confirmation" msgstr "" msgid "Add new task when double clicked on tasks list" msgstr "" msgid "minutes" msgstr "నిమిషాలà±" msgid "0 for disable" msgstr "" msgid "Repeat sound alarm" msgstr "" msgid "times" msgstr "" msgid "Global notification command" msgstr "" msgid "Tasks options" msgstr "à°•à°°à±à°¤à°µà±à°¯à°¾à°² à°à°šà±à°›à°¿à°•ాలà±" msgid "Reminder options" msgstr "" msgid "Tasks list" msgstr "" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "" msgid "New Moon" msgstr "" msgid "Waxing Crescent Moon" msgstr "" msgid "Quarter Moon" msgstr "" msgid "Waxing Gibbous Moon" msgstr "" msgid "Full Moon" msgstr "" msgid "Waning Gibbous Moon" msgstr "" msgid "Last Quarter Moon" msgstr "" msgid "Waning Crescent Moon" msgstr "" msgid "Error" msgstr "" msgid "Selected file exist! Overwrite?" msgstr "" #~ msgid "Order" #~ msgstr "à°•à±à°°à°®à°‚" #~ msgid "Mode" #~ msgstr "విధం" #~ msgid "Ascending" #~ msgstr "ఆరోహణ" #~ msgid "Descending" #~ msgstr "అవరోహణ" #~ msgid "Sorting" #~ msgstr "à°•à±à°°à°®à°¬à°¦à±à°§à±€à°•à°°à°£" osmo-0.2.14/po/hu.po000664 001750 001750 00000113120 12561325524 014122 0ustar00pasppasp000000 000000 # Hungarian translation of Osmo. # This file is distributed under the same license as the Osmo package. # Peter Polonkai , 2009. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2009-09-24 10:10+0100\n" "Last-Translator: Peter Polonkai \n" "Language-Team: Nedudu Team \n" "Language: hu\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" msgid "About" msgstr "Névjegy" msgid "Close" msgstr "Bezár" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "váltás az elÅ‘zÅ‘ fülre" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "váltás a következÅ‘ fülre" msgid "switch to selected page" msgstr "váltás a következÅ‘ lapra" #, fuzzy msgid "show options window" msgstr "Opciók megjelenítése" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "váltás a beállítások és névjegy fülek között is" msgid "exit" msgstr "kilépés" #, fuzzy msgid "Space" msgstr "Mentés" msgid "select current date" msgstr "aktuális dátum kiválasztása" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "személyi adatok rejtése/mutatása" #, fuzzy msgid "Arrows" msgstr "Nyíl" msgid "change day" msgstr "nap cseréje" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "tartalom görgetése a nap információs panelen" msgid "change month" msgstr "hónap cseréje" #, fuzzy msgid "Home/End" msgstr "Otthoni" msgid "change year" msgstr "év cseréje" msgid "toggle calendars for the previous and next month" msgstr "elÅ‘zÅ‘ és következÅ‘ hónap naptár váltása" msgid "day notes browser" msgstr "napi bejegyzés böngészÅ‘" msgid "assign background color to day note" msgstr "háttérszín kijelölése a napi jegyzethez" msgid "date calculator" msgstr "dátum kalkulátor" msgid "show full-year calendar" msgstr "Egész éves naptár mutatása" msgid "jump to date" msgstr "ugrás dátumra" #, fuzzy msgid "Delete" msgstr "Jegyzet törlése" msgid "remove day note" msgstr "napi jegyzet eltávolítása" #, fuzzy msgid "Alt+Arrows" msgstr "Nyíl" msgid "Esc" msgstr "" msgid "close editor" msgstr "szerkesztÅ‘ bezárása" msgid "toggle bold" msgstr "félkövér" msgid "toggle italic" msgstr "dÅ‘lt" msgid "toggle underline" msgstr "aláhúzott" msgid "toggle strikethrough" msgstr "áthúzott" msgid "toggle highlight" msgstr "kiemelés" msgid "Arrows Up/Down" msgstr "" msgid "toggle alternative view" msgstr "alternatív nézet" msgid "year info" msgstr "év információ" msgid "set current year" msgstr "legyen az aktuális év" msgid "close full-year calendar" msgstr "egész éves naptár bezárása" #, fuzzy msgid "Alt+a, Insert" msgstr "Beszúr" msgid "add task" msgstr "feladat hozzáadása" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "feladat szerkesztése" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "feladat törlése" msgid "toggle hidden tasks" msgstr "rejtett feladatok váltása" msgid "activate search field" msgstr "aktív keresÅ‘ mezÅ‘" #, fuzzy msgid "Left, Right" msgstr "Jobboldalt" msgid "change category filter" msgstr "kategória szűrÅ‘ váltása" msgid "close task info panel" msgstr "feladat információs panel bezárása" msgid "Insert" msgstr "Beszúr" msgid "add contact" msgstr "kapcsolat hozzáadása" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "kapcsolat szerkesztése" msgid "remove contact" msgstr "kapcsolat törlése" msgid "change search mode" msgstr "keresési mód váltása" msgid "close contact details panel" msgstr "kapcsolat tulajdonságai panel bezárása" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "jegyzet megnyitása" msgid "add note" msgstr "jegyzet hozzáadása" msgid "remove note" msgstr "jegyzet törlése" msgid "edit note name and category" msgstr "jegyzet név és kategória szerkesztése" msgid "close note editor" msgstr "jegyzet szerkesztÅ‘ bezárása" msgid "save note" msgstr "jegyzet mentése" msgid "find text" msgstr "szöveg keresése" msgid "clear selection attributes" msgstr "kijelölés formázásának törlése" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "Az OSMO tervezésekor elsÅ‘dleges a felhasználói kényelem, sok a " "kulcsfontosságú billentyű kombináció. A teljes lista:" msgid "General" msgstr "Ãltalános" msgid "Calendar" msgstr "Naptár" msgid "Note editor" msgstr "Jegyzet szerkesztÅ‘" msgid "Full-year calendar" msgstr "Egész éves naptár" msgid "Tasks" msgstr "Feladatok" msgid "Contacts" msgstr "Kapcsolatok" msgid "Notes" msgstr "Jegyzetek" msgid "Selector" msgstr "Elválasztó" msgid "Editor" msgstr "SzerkesztÅ‘" msgid "A handy personal organizer" msgstr "A kényelmes személyi szervezÅ‘" msgid "compiled on" msgstr "fordítás ideje" msgid "Programming" msgstr "Programozó" msgid "Graphics" msgstr "Grafika" msgid "Contributors" msgstr "KözreműködÅ‘k" msgid "Translators" msgstr "Fordítók" msgid "Mailing lists" msgstr "LevelezÅ‘ listák" msgid "Bug tracker" msgstr "Hiba követÅ‘" msgid "Feature requests" msgstr "Funkciók kérése" msgid "Available modules" msgstr "ElérhetÅ‘ modulok" msgid "Compiled-in features" msgstr "Támogatott lehetÅ‘ségek" msgid "iCalendar support" msgstr "iCalendar támogatása" msgid "Encrypted notes support" msgstr "Titkosított jegyzetek támogatása" msgid "Backup support" msgstr "Biztonsági mentés támogatása" msgid "Printing support" msgstr "Nyomtatás támogatása" msgid "Spell checker support" msgstr "Helyesírás ellenÅ‘rzés támogatása" msgid "version" msgstr "verzió" msgid "SVN revision" msgstr "SVN revízió" msgid "Key shortcuts" msgstr "Billentyű kombinációk" msgid "License" msgstr "Licenc" msgid "Save backup" msgstr "Biztonsági másolat mentése" msgid "Password protection" msgstr "Jelszó védett" msgid "Enter password" msgstr "Jelszó megadása" msgid "Re-enter password" msgstr "Jelszó mé gegyszer" msgid "Please enter the password" msgstr "Jelszó még egyszer" msgid "Passwords do not match!" msgstr "A jelszavak nem egyeznek!" msgid "Cannot create backup!" msgstr "Biztonsági másolat létrehozása sikertelen!" msgid "Backup file saved successfully!" msgstr "Biztonsági másolat mentése sikeres!" msgid "Open backup file" msgstr "Biztonsági másolat megnyitása" msgid "Osmo backup files (*.bck)" msgstr "Osmo biztonsági másolat fájlok (*.bck)" msgid "This is not Osmo backup file" msgstr "Ez nem Osmo biztonsági másolat fájl" msgid "Incorrect password!" msgstr "Érvénytelen jelszó!" msgid "All your data will be replaced with backup file content." msgstr "Minden adat cserélve lesz a biztonsági másolatban lévÅ‘ tartalommal." msgid "Are you sure?" msgstr "Biztos benne?" msgid "Osmo has to be restarted now..." msgstr "Az Osmo most újra indul..." msgid "was born" msgstr "született" msgid "year old" msgid_plural "years old" msgstr[0] "éves" msgstr[1] "éves" msgid "Current time" msgstr "Jelenlegi idÅ‘" msgid "Day number" msgstr "Napok száma" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "nap telt el az évbÅ‘l" msgstr[1] "nap telt el az évbÅ‘l" msgid "the last day of the year" msgstr "hátralévÅ‘ napok száma az évben" msgid "Today distance" msgstr "Mai teendÅ‘k" msgid "Week number" msgstr "Hetek száma" msgid "Marked days" msgstr "Megjelölt napok" msgid "Weekend days" msgstr "Hétvégi napok" msgid "Moon phase" msgstr "Hold fázis" msgid "Zodiac sign" msgstr "Zodiákus jel" msgid "Day notes" msgstr "Napi jegyezetek" msgid "Day tasks" msgstr "Napi feladatok" msgid "Birthday" msgstr "Születésnap" msgid "Day category" msgstr "Nap kategória" msgid "Selected day note will be removed." msgstr "A kiválasztott nap jegyzetei törölve lesznek." msgid "Continue?" msgstr "Folytatja?" msgid "Previous year" msgstr "ElÅ‘zÅ‘ év" msgid "Previous month" msgstr "ElÅ‘zÅ‘ hónap" msgid "Previous day" msgstr "ElÅ‘zÅ‘ nap" msgid "Today" msgstr "Ma" msgid "Next day" msgstr "KövetkezÅ‘ nap" msgid "Next month" msgstr "KövetkezÅ‘ hónap" msgid "Next year" msgstr "KövetkezÅ‘ év" msgid "Jump to date" msgstr "Ugrás dátumra" msgid "Print calendar" msgstr "Naptár nyomtatása" msgid "Date calculator" msgstr "Dátum kalkulátor" #, fuzzy msgid "Backup data" msgstr "Biztonsági másolat" #, fuzzy msgid "Restore data" msgstr "Visszaállítás" msgid "Preferences" msgstr "Beállítások" msgid "Quit" msgstr "Kilépés" msgid "Toggle day note panel" msgstr "Váltás a nap jegyzet panelra" msgid "Add task" msgstr "Feladat hozzáadása" msgid "Select day color" msgstr "Nap színének kiválasztása" msgid "Browse notes" msgstr "Jegyzetek keresése" msgid "Browse iCal events" msgstr "iCal esemény tallózás" msgid "Export to iCal file" msgstr "iCal fájl exportálása" msgid "Previous and next month" msgstr "ElÅ‘zÅ‘ és következÅ‘ hónap" msgid "Close note panel" msgstr "Jegyzet panel bezárása" msgid "Highlight" msgstr "Kiemelés" msgid "Strikethrough" msgstr "Ãthúzott" msgid "Underline" msgstr "Aláhúzott" msgid "Italic" msgstr "DÅ‘lt" msgid "Bold" msgstr "Vastag" msgid "Insert timeline" msgstr "idÅ‘vonal beszúrása" msgid "Clear text" msgstr "Szöveg törlése" msgid "Info" msgstr "Információ" msgid "Select color" msgstr "Szín kiválasztása" msgid "None" msgstr "Nincs" msgid "Cancel" msgstr "Mégsem" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "év" msgstr[1] "év" msgid "month" msgid_plural "months" msgstr[0] "hónap" msgstr[1] "hónap" msgid "day" msgid_plural "days" msgstr[0] "nap" msgstr[1] "nap" msgid "hour" msgid_plural "hours" msgstr[0] "óra" msgstr[1] "óra" msgid "minute" msgid_plural "minutes" msgstr[0] "perc" msgstr[1] "perc" msgid "second" msgid_plural "seconds" msgstr[0] "másodperc" msgstr[1] "másodperc" msgid "or" msgstr "vagy" msgid "rounded down" msgstr "lefelé kerekítve" msgid "week" msgid_plural "weeks" msgstr[0] "hét" msgstr[1] "hét" msgid "working day" msgid_plural "working days" msgstr[0] "munkanap" msgstr[1] "munkanapok" msgid "time is ignored" msgstr "idÅ‘ kihagyva" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Hétvégi nap" msgstr[1] "Hétvégi napok" msgid "This calculator only supports dates after year 1." msgstr "A kalkulátor csak az 1. év utántól támogatja a dátumokat" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Hétvégi nap kihagyása" msgstr[1] "Hétvégi napok kihagyása" msgid "Year" msgstr "Év" msgid "Month" msgstr "Hónap" msgid "Day" msgstr "Nap" msgid "Current date" msgstr "Jelenlegi dátum" msgid "Set current date" msgstr "Jelenlegi dátum beállítása" msgid "Hour" msgstr "Óra" msgid "Minute" msgstr "Perc" msgid "Second" msgstr "Másodperc" msgid "Set current time" msgstr "Jelenlegi idÅ‘ beállítása" msgid "Reset time" msgstr "IdÅ‘ törlése" msgid "First date and time" msgstr "ElsÅ‘ dátum és idÅ‘" msgid "Second date and time" msgstr "Második dátum és idÅ‘" msgid "Alternative time units" msgstr "Alternatív idÅ‘egység" msgid "Result" msgstr "Eredmény" msgid "Duration between two dates" msgstr "Dátumok közötti idÅ‘" msgid "Operation" msgstr "Művelet" msgid "add" msgstr "növelés" msgid "subtract" msgstr "csökkentés" msgid "Date and time to add or subtract from" msgstr "Dátum és idÅ‘ növelése vagy csökkentése innentÅ‘l" msgid "Years" msgstr "Évek" msgid "Months" msgstr "Hónapok" msgid "Days" msgstr "Napok" msgid "Weeks" msgstr "Hetek" msgid "Hours" msgstr "Órák" msgid "Minutes" msgstr "Percek" msgid "Seconds" msgstr "Másodpercek" msgid "Ignore weekend days" msgstr "Hétvégi napok kihagyása" msgid "Reset fields" msgstr "MezÅ‘k alaphelyzetbe" msgid "Time to add or subtract" msgstr "IdÅ‘ növelése vagy csökkentése" msgid "Jump to" msgstr "Ugrás ide" msgid "Add to or subtract from a date" msgstr "Növelés vagy csökkentés a dátumhoz képest" msgid "Leap year" msgstr "Szökőév" msgid "Yes" msgstr "Igen" msgid "No" msgstr "Nem" msgid "Chinese year animal" msgstr "Kínai állat naptár" msgid "Number of days" msgstr "Napok száma" msgid "Number of weeks" msgstr "Hetek száma" msgid "Number of weekend days" msgstr "Hétvégek napjainak száma" msgid "Year info" msgstr "Év információ" msgid "Current year" msgstr "Aktuális év" msgid "Alternative view" msgstr "Alternatív nézet" msgid "event" msgid_plural "events" msgstr[0] "esemény" msgstr[1] "esemény" msgid "No valid calendars defined" msgstr "Nincsenek valós naptárak meghatározva" msgid "iCalendar events" msgstr "iCalendar események" msgid "Date" msgstr "Dátum" msgid "Time" msgstr "IdÅ‘" msgid "Summary" msgstr "Összegzés" msgid "Select output file" msgstr "Válasszon kimeneti fájlt" msgid "The list will be cleared and all entries will be lost." msgstr "A lista törölve lesz és minden elem el fog veszni." msgid "Done!" msgstr "Kész!" msgid "event exported" msgid_plural "events exported" msgstr[0] "esemény exportálva" msgstr[1] "események exportálva" msgid "iCalendar export" msgstr "iCalendar export" msgid "Day Selector" msgstr "Nap választó" msgid "Use date period" msgstr "Dátum periódus használata" msgid "Add" msgstr "Hozzáad" msgid "Clear" msgstr "Töröl" msgid "Remove" msgstr "Törlés" msgid "Output filename" msgstr "Kimeneti fájlnév megadása" msgid "Browse" msgstr "Tallózás" msgid "Export" msgstr "Exportálás" msgid "no entries" msgstr "nincs bejegyzés" msgid "entry" msgid_plural "entries" msgstr[0] "bejegyzés" msgstr[1] "bejegyzés" msgid "Calendar notes" msgstr "Naptár bejegyzések" msgid "Search" msgstr "Keresés" msgid "Filter" msgstr "SzűrÅ‘" msgid "Current month" msgstr "Aktuális hónap" msgid "Selected month" msgstr "Kiválasztott hónap" msgid "Selected year" msgstr "Kiválasztott év" msgid "Selected month and year" msgstr "Kiválasztott hónap és év" msgid "All notes" msgstr "Minden jegyzet" msgid "Case sensitive" msgstr "kis/nagybetű érzékeny" msgid "Strikethrough past day notes" msgstr "A már elmúlt napok jegyzetének áthúzása" msgid "Note" msgstr "Jegyzet" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Hónap neve" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "HH-NN-ÉÉÉÉ" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Dátum formátum" #, fuzzy msgid "Set default format" msgstr "Kimenet formátuma" #, fuzzy msgid "Date format syntax" msgstr "Dátum formátum" msgid "Day note marker" msgstr "Napi bejegyzés megjelölése" msgid "Event marker" msgstr "Esemény jelölése" msgid "Circle" msgstr "Kör" msgid "Ellipse" msgstr "Elipszis" msgid "Wave" msgstr "Hullám" msgid "Current day marker" msgstr "Aktuális nap megjelölése" msgid "Arrow" msgstr "Nyíl" msgid "Free-hand circle" msgstr "Szabadkézi kör" msgid "Colors" msgstr "Színek" msgid "Header color" msgstr "Fejléc színe" msgid "Weekend days color" msgstr "Hétvégi napok színe" msgid "Cursor color" msgstr "Kurzor színe" msgid "Event marker color" msgstr "Esemény jelölÅ‘ szín" msgid "Current day marker color" msgstr "Aktuális nap jelölÅ‘ szín" msgid "Birthday marker color" msgstr "Születésnap jelölÅ‘ szín" msgid "Date font" msgstr "Dátum betűtípus" msgid "Calendar font" msgstr "Naptár betűtípus" msgid "Note font" msgstr "Jegyzet betűtípus" msgid "Enable block cursor" msgstr "Tömb kurzor engedélyezése" msgid "Cursor thickness" msgstr "Kurzor vastagsága" msgid "Thin" msgstr "Vékony" msgid "Thick" msgstr "Vastag" #, fuzzy msgid "Edit category" msgstr "Nap kategória" msgid "Color" msgstr "Szín" msgid "Name" msgstr "Név" msgid "Select ICS file" msgstr "Válasszon ICS fájlt" msgid "All Files" msgstr "Minden fájl" msgid "Calendar files (*.ics)" msgstr "Naptár fájlok (*.ics)" msgid "Modify ICAL parameters" msgstr "ICAL paraméterek módosítása" msgid "Filename" msgstr "Fájlnév" msgid "Options" msgstr "Beállítások" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Érvényes" msgid "Description" msgstr "Leírás" msgid "Full date" msgstr "Teljes dátum" msgid "Mark" msgstr "Megjelölt" msgid "Week start on Monday" msgstr "A hét kezdÅ‘napja a HétfÅ‘" msgid "Show day names" msgstr "Nap nevének mutatása" msgid "No month change" msgstr "Nincs hónap váltás" msgid "Show week numbers" msgstr "Hetek számának mutatása" msgid "Simple view in full-year calendar" msgstr "Egyszerű nézet a teljes évi naptárban" msgid "Enable auxilary calendars" msgstr "KülsÅ‘ naptárak engedélyezése" msgid "Ascending sorting in day notes browser" msgstr "EmelkedÅ‘ sorrend a napi bejegyzések böngészÅ‘ben" msgid "Enable spell checker in day notes" msgstr "Alárírás ellenÅ‘rzése a napi jegyzeteknél" #, fuzzy msgid "Show seconds" msgstr "Másodpercek" msgid "Appearance" msgstr "Megjelenés" msgid "Day categories" msgstr "Nap kategóriák" msgid "iCalendar files" msgstr "iCalendar fájlok" msgid "Show in day info panel" msgstr "Napi információs panel megjelenítése" msgid "Name day" msgstr "Névnap" msgid "Error printing" msgstr "Hiba a nyomtatáskor" msgid "Printing properties" msgstr "Nyomtatási beállítások" msgid "Month name" msgstr "Hónap neve" msgid "Day name" msgstr "Nap neve" msgid "Events" msgstr "Események" msgid "Fonts" msgstr "Betűtípusok" msgid "Birthdays" msgstr "Születésnapok" msgid "Namedays" msgstr "Névnapok" msgid "Visible events" msgstr "Látható események" msgid "Padding" msgstr "Helykitöltés" msgid "Event maximum length" msgstr "Esemény maximális hossza" msgid "Page orientation:" msgstr "Lap tájolása:" msgid "Portrait" msgstr "Ãlló" msgid "Landscape" msgstr "FekvÅ‘" msgid "Timeline" msgstr "IdÅ‘vonal" msgid "From (hour)" msgstr "Kezdete (óra)" msgid "Step (minutes)" msgstr "Lépés (perc)" msgid "To (hour)" msgstr "Vége (óra)" msgid "No date" msgstr "Nincs dátum" msgid "Rat" msgstr "Patkány" msgid "Ox" msgstr "Ökör" msgid "Tiger" msgstr "Tigris" msgid "Hare" msgstr "Nyúl" msgid "Dragon" msgstr "Sárkány" msgid "Snake" msgstr "Kígyó" msgid "Horse" msgstr "Ló" msgid "Sheep" msgstr "Bárány" msgid "Monkey" msgstr "Majom" msgid "Fowl" msgstr "Kakas" msgid "Dog" msgstr "Kutya" msgid "Pig" msgstr "Disznó" msgid "Unknown" msgstr "Ismeretlen" msgid "Aquarius" msgstr "VízöntÅ‘" msgid "Pisces" msgstr "Halak" msgid "Aries" msgstr "Kos" msgid "Taurus" msgstr "Bika" msgid "Gemini" msgstr "Ikrek" msgid "Cancer" msgstr "Rák" msgid "Leo" msgstr "Oroszlán" msgid "Virgo" msgstr "Szűz" msgid "Libra" msgstr "Mérleg" msgid "Scorpio" msgstr "Skorpió" msgid "Sagittarius" msgstr "Nyilas" msgid "Capricorn" msgstr "Bak" msgid "Cannot perform selected operation." msgstr "A kiválasztott művelet nem hajtható végre." msgid "Task has been modified or removed." msgstr "A feladat módosítva vagy törölve." msgid "Remind me later" msgstr "Jegyezze meg" msgid "Done" msgstr "Kész" msgid "postponed" msgstr "halasztott" msgid "Show task" msgstr "Feladat megjelenítése" msgid "Alarm warning!" msgstr "Riasztó figyelmeztetés!" msgid "Day note" msgstr "Napi jegyzet" msgid "Type" msgstr "Típus" msgid "Event" msgstr "Esemény" msgid "Task" msgstr "Feladat" msgid "Show Osmo" msgstr "Osmo megjelenítése" msgid "No birthdays defined" msgstr "Nincsenek születésnapok meghatározva" msgid "Birthdays list" msgstr "Születésnapok listája" msgid "Days to birthday" msgstr "Születésnapig hátralévÅ‘ napok" msgid "Age" msgstr "Kor" msgid "Birthday date" msgstr "Születési idÅ‘" msgid "today" msgstr "ma" msgid "Please select address" msgstr "Kérem adja meg a címet" msgid "Information" msgstr "Információ" msgid "Work" msgstr "Munkahely" msgid "Home" msgstr "Otthoni" msgid "Group" msgstr "Csoport" msgid "First name" msgstr "Utónév" msgid "Last name" msgstr "Vezetéknév" msgid "Second name" msgstr "KözépsÅ‘ név" msgid "Nickname" msgstr "Becenév" msgid "Tags" msgstr "Tagek" msgid "Name day date" msgstr "Névnap" msgid "Home address" msgstr "Otthoni cím" msgid "Home postcode" msgstr "Otthoni irányítószám" msgid "Home city" msgstr "Otthoni város" msgid "Home state" msgstr "Otthoni állam" msgid "Home country" msgstr "Otthoni ország/terület" msgid "Organization" msgstr "Szervezet" msgid "Department" msgstr "Részleg" msgid "Work address" msgstr "Munkahelyi cím" msgid "Work postcode" msgstr "Munkahelyi irányítószám" msgid "Work city" msgstr "Munkahelyi város" msgid "Work state" msgstr "Munkahelyi állam" msgid "Work country" msgstr "Munkahelyi ország/terület" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Otthoni telefon" msgid "Home phone 2" msgstr "Otthoni telefon 2" msgid "Home phone 3" msgstr "Otthoni telefon 3" msgid "Home phone 4" msgstr "Otthoni telefon 4" msgid "Work phone" msgstr "Munkahelyi telefon" msgid "Work phone 2" msgstr "Munkahelyi telefon 2" msgid "Work phone 3" msgstr "Munkahelyi telefon 3" msgid "Work phone 4" msgstr "Munkahelyi telefon 4" msgid "Cell phone" msgstr "Mobiltelefon" msgid "Cell phone 2" msgstr "Mobiltelefon 2" msgid "Cell phone 3" msgstr "Mobiltelefon 3" msgid "Cell phone 4" msgstr "Mobiltelefon 4" msgid "E-Mail" msgstr "Email" msgid "E-Mail 2" msgstr "Email 2" msgid "E-Mail 3" msgstr "Email 3" msgid "E-Mail 4" msgstr "Email 4" msgid "WWW" msgstr "Honlap" msgid "WWW 2" msgstr "Honlap 2" msgid "WWW 3" msgstr "Honlap 3" msgid "WWW 4" msgstr "Honlap 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Fotó" msgid "Additional info" msgstr "További Információ" msgid "New contact" msgstr "Új kapcsolat" msgid "Remove contact" msgstr "Kapcsolat eltávolítása" msgid "Edit contact" msgstr "Kapcsolat szerkesztése" msgid "Show birthdays" msgstr "Születésnapok mutatása" msgid "Show contact location on the map" msgstr "A kapcsolat helyének mutatása a térképen" msgid "Import contacts" msgstr "Kapcsolatok importálása" msgid "Export contacts" msgstr "Kapcsolatok exportálása" msgid "First Name" msgstr "Keresztnév" msgid "Last Name" msgstr "Vezetéknév" msgid "All fields" msgstr "Összes mezÅ‘" msgid "Contact details" msgstr "Kapcsolat tulajdonságai" msgid "Close contact panel" msgstr "Kapcsolat panel bezárása" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kapcsolat exportálva" msgstr[1] "kapcsolatok exportálva" msgid "Cannot create file." msgstr "Fájl létrehozása sikertelen." msgid "Output format" msgstr "Kimenet formátuma" msgid "Add header" msgstr "Fejléc hozzáadása" msgid "Fields to export" msgstr "MezÅ‘k exportálása" msgid "All" msgstr "Mind" msgid "Invert" msgstr "Megfordítás" msgid "Select fields" msgstr "MezÅ‘k választása" msgid "Select CSV file" msgstr "CSV fájl kiválasztása" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (vesszÅ‘vel elválasztott értékek) fájlok (*.csv)" msgid "Please select file first." msgstr "Kérem elÅ‘bb válasszon fájlt." msgid "Import type" msgstr "Importálás típusa" msgid "File" msgstr "Fájl" msgid "Input filename" msgstr "Fájnév megadása" msgid "Import" msgstr "Importálás" msgid "Nothing to import." msgstr "Nincs mit importálni." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kapcsolat hozzáadva" msgstr[1] "kapcsolatok hozzáadva" msgid "of" msgstr "/" msgid "Record" msgstr "Rekord" msgid "Number fields per record" msgstr "MezÅ‘k száma rekordonként" msgid "Use first record as header" msgstr "Az elsÅ‘ rekord legyen a fejléc" msgid "Field type" msgstr "MezÅ‘ típusa" msgid "Value" msgstr "Érték" msgid "No records found in selected file." msgstr "Nincs egyetlen rekord sem a kiválasztott fájlban." msgid "Cannot read file." msgstr "A fájl nem olvasható." msgid "Cannot open file." msgstr "A fájl nem nyitható meg." msgid "Selected contact will be removed." msgstr "A kiválasztott kapcsolat törölve lesz." msgid "Select photo" msgstr "Fotó kiválasztása" msgid "Address" msgstr "Cím" msgid "Postcode" msgstr "Irányító szám" msgid "City" msgstr "Város" msgid "State" msgstr "Ãllam" msgid "Country" msgstr "Ország" msgid "Add contact" msgstr "Kapcsolat hozzáadása" msgid "Personal" msgstr "Személyes" msgid "Phones" msgstr "Telefonok" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "kapcsolat címkék színe" msgid "Color of links" msgstr "Linkek színe" #, fuzzy msgid "Font size" msgstr "Fotó mérete" #, fuzzy msgid "Name font size" msgstr "Név betűtípus" #, fuzzy msgid "Item font size" msgstr "Elem betűtípus" msgid "Photo size" msgstr "Fotó mérete" msgid "Small" msgstr "Kicsi" msgid "Medium" msgstr "Közepes" msgid "Large" msgstr "Nagy" msgid "Hide group column" msgstr "Csoport oszlop elrejtése" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Egyéb" msgid "Groups" msgstr "Csoportok" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Látható oszlopok a születésnap keresÅ‘ben" msgid "Show calendar" msgstr "Naptár megjelenítése" msgid "Show tasks" msgstr "Feladatok megjelenítése" msgid "Show contacts" msgstr "Kapcsolatok megjelenítése" msgid "Show notes" msgstr "Jegyzetek megjelenítése" msgid "Show options" msgstr "Opciók megjelenítése" msgid "Show small calendar window" msgstr "Kis naptár ablak mutatása" msgid "Check for events since last run" msgstr "Események ellenÅ‘rzése a legutóbbi indítás óta" msgid "Number of days to check forward for events (default: 0)" msgstr "Események ellenÅ‘rzése napokban (alapértelmezett: 0)" msgid "Set absolute path for settings and data files" msgstr "Legyen teljes elérési út a beállításokhoz és az adatfájlokhoz" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "a kényelmes személyi szervezÅ‘" msgid "ERROR: Cannot create config files" msgstr "HIBA: A konfigurációs fájlok létrehozása sikertelen" msgid "Another copy of OSMO is already running." msgstr "Már fut egy másik OSMO példány." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Egyszerre kettÅ‘ vagy több példány használata az OSMO programból " "adatvesztéshez vezethez." msgid "Do you really want to continue?" msgstr "Biztosan folytatni kívánja?" msgid "Warning" msgstr "Figyelmeztetés" msgid "The note has changed." msgstr "A jegyzet módosult." msgid "Do you want to save it?" msgstr "El szeretné menteni?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Nincs egyetlen rekord sem a kiválasztott fájlban." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Biztosan folytatni kívánja?" msgid "Question" msgstr "Kérdés" msgid "Words" msgstr "Szavak" msgid "Lines" msgstr "Sorok" msgid "Characters" msgstr "Karakterek" msgid "White characters" msgstr "Fehér karaktereke" msgid "Bytes" msgstr "Bájtok" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Elválasztó" msgid "Created" msgstr "Létrehozva" msgid "Modified" msgstr "Módosítva" msgid "New note" msgstr "Új jegyzet" msgid "Add note" msgstr "Jegyzet hozzáadása" msgid "Edit note" msgstr "Jegyzet szerkesztése" msgid "Delete note" msgstr "Jegyzet törlése" msgid "Remove note" msgstr "Jegyzet törlése" msgid "Find" msgstr "Keresés" msgid "Clear attributes" msgstr "Formázások törlése" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Jegyzet mentése" msgid "Insert current date and time" msgstr "Aktuális dátum és idÅ‘ beszúrása" msgid "Insert separator" msgstr "Elválasztó beszúrása" msgid "Statistics" msgstr "Statisztikák" msgid "Close editor" msgstr "SzerkesztÅ‘ bezárása" msgid "Toggle spell checker" msgstr "aláírásellenÅ‘rzés váltása" msgid "Category" msgstr "Kategória" msgid "Note name" msgstr "Jegyzet neve" msgid "Last changes" msgstr "Utolsó módosítás" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Sorok" #, fuzzy msgid "Column" msgstr "Ország" msgid "case sensitive" msgstr "kis/nagybetűre érzékeny" msgid "Close find entry" msgstr "KeresÅ‘ sáv bezárása" msgid "Edit entry" msgstr "Bejegyzés szerkesztése" msgid "Remember cursor position" msgstr "Kurzor pozíció megjegyzése" msgid "Selected note will be removed." msgstr "A kiválasztott jegyzet törölve lesz." msgid "No further data recovery will be possible." msgstr "Az adatok visszaállítása nem lehetséges." msgid "Plain" msgstr "Sima" msgid "Encrypted" msgstr "Titkosított" msgid "Note type" msgstr "Jegyzet típusa" msgid "Cannot open the note." msgstr "A jegyzet nem nyitható meg." msgid "encryption support is disabled" msgstr "titkosítási támogatás letiltva" msgid "Authorization" msgstr "Azonosítás" msgid "Algorithm" msgstr "Algoritmus" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Tömörítés" msgid "Ratio" msgstr "Arány" msgid "Fast" msgstr "Gyors" msgid "Good" msgstr "Jó" msgid "Best" msgstr "Legjobb" msgid "Remember the last selected category" msgstr "Utoljára kiválasztott kategória megjegyzése" msgid "Use system format for date and time" msgstr "A rendszer dátum és idÅ‘ formátum használata" msgid "Encryption" msgstr "Titkosítás" msgid "Visible columns" msgstr "Látható oszlopok" msgid "Categories" msgstr "Kategóriák" msgid "Notes options" msgstr "Jegyzet opciók" #, fuzzy msgid "Osmo has to be restarted to take effect." msgstr "Az Osmo most újra indul..." msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Fülek pozíciója" msgid "Left" msgstr "Baloldalt" msgid "Right" msgstr "Jobboldalt" msgid "Top" msgstr "Fent" msgid "Bottom" msgstr "Lent" #, fuzzy msgid "Use default stock icons" msgstr "Használjon alapértelmezett témaikonokat (újraindítás szükséges)" msgid "Disable underline in links" msgstr "Ne húzza alá a linkeket" msgid "Draw rows in alternating colors" msgstr "Sorok rajzolása váltakozó színnel" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Legalább egy modulnak láthatónak kell lennie." msgid "Override locale settings" msgstr "Helyi beállítások felülírása" msgid "Date format" msgstr "Dátum formátum" msgid "DD-MM-YYYY" msgstr "NN-HH-ÉÉÉÉ" msgid "MM-DD-YYYY" msgstr "HH-NN-ÉÉÉÉ" msgid "YYYY-MM-DD" msgstr "ÉÉÉÉÉ-NN-HH" msgid "YYYY-DD-MM" msgstr "ÉÉÉÉ-HH-NN" msgid "Time format" msgstr "IdÅ‘ formátum" msgid "hours" msgstr "óra" msgid "Spell checker language" msgstr "Helyesírás ellenÅ‘rzés nyelve" msgid "Enable tooltips" msgstr "Buboréktippek engedélyezése" msgid "Remember last selected page" msgstr "Utoljára kiválasztott lap megjegyzése" msgid "Save data after every modification" msgstr "Adatok mentése minden egyes módosításkor" msgid "Web browser" msgstr "Web böngészÅ‘" msgid "E-mail client" msgstr "LevelezÅ‘ program" msgid "Sound player" msgstr "Zenelejátszó" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "A %s minta le lesz cserélve a web címre" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "A %s minta le lesz cserélve az email címre" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "A %s minta le lesz cserélve a zene fájl nevére" msgid "Enable system tray" msgstr "Tálcaikon engedélyezése" msgid "Start minimised" msgstr "Indítás kis méretben" msgid "Blink on events" msgstr "Eseményeknél villog" msgid "Ignore day note events" msgstr "Napi jegyzetek kihagyása" msgid "Hide" msgstr "Elrejtés" msgid "Helpers" msgstr "Segédalkalmazások" msgid "System tray" msgstr "Tálcaikon" msgid "Edit" msgstr "Szerkeszt" msgid "Go Down" msgstr "Lefelé" msgid "Select date" msgstr "Dátum választás" msgid "Select font" msgstr "Betűtípus választás" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Számológép" msgid "Edit day note" msgstr "Napi jegyzet szerkesztése" msgid "Save" msgstr "Mentés" msgid "Display full-year calendar" msgstr "Egész éves naptár megjelenítése" msgid "Help" msgstr "Súgó" msgid "Invalid item" msgstr "Érvénytelen elem" msgid "Valid item" msgstr "Érvényes elem" msgid "Edit task" msgstr "Feladat szerkesztése" msgid "Remove task" msgstr "Feladat törlése" msgid "Import tasks" msgstr "Feladatok importálása" msgid "Export tasks" msgstr "Feladatok exportálása" msgid "Change to previous date" msgstr "Váltás az elÅ‘zÅ‘ dátumra" msgid "Change to next date" msgstr "Váltás a következÅ‘ dátumra" msgid "Print" msgstr "Nyomtatás" msgid "Normal" msgstr "Normál" msgid "Recurrent" msgstr "IsmétlÅ‘dÅ‘" msgid "Started" msgstr "Kezdete" msgid "Finished" msgstr "Befejezett" msgid "All items" msgstr "Minden elem" msgid "New task" msgstr "Új feladat" msgid "Change due date to previous date" msgstr "Esedékesség váltása az elÅ‘zÅ‘ dátumra" msgid "Change due date to next date" msgstr "Esedékesség váltása a következÅ‘ dátumra" msgid "Print visible tasks list" msgstr "Látható feladatok listájának nyomtatása" msgid "Due date" msgstr "Lejárat napja" msgid "Priority" msgstr "Prioritás" msgid "Task details" msgstr "Feladat részletei" msgid "Close description panel" msgstr "Leírás panel bezárása" msgid "No tasks with defined date found." msgstr "Nincsenek feladatok a meghatározott dátumban." msgid "Save tasks" msgstr "Feladatok mentése" msgid "tasks exported" msgstr "feladatok exportálva" msgid "Please select at least one day when recurrency is enabled." msgstr "Kérem válasszon legalább egy napot az ismétlés engedélyezéséhez." msgid "Set time" msgstr "IdÅ‘ beállítása" msgid "Tomorrow" msgstr "Holnap" msgid "Selected task will be removed." msgstr "A kijelölt feladat törölve lesz." msgid "Basic" msgstr "Alapértelmezett" msgid "Select date and time" msgstr "Válasszon dátumot és idÅ‘t" msgid "Low" msgstr "Alacsony" msgid "High" msgstr "Magas" msgid "Enable sound notification" msgstr "Hangjelzés engedélyezése" #, fuzzy msgid "Enable notification dialog" msgstr "Hangjelzés engedélyezése" msgid "Advanced" msgstr "BÅ‘vített" msgid "Alarm warning" msgstr "FigyelmeztetÅ‘ jelzés" msgid "Postpone time" msgstr "halasztási idÅ‘" msgid "Alarm command" msgstr "FigyelmeztetÅ‘ parancs" msgid "Recurrent task" msgstr "IsmétlÅ‘dÅ‘ feladat" msgid "Enable" msgstr "Engedélyezve" msgid "Start" msgstr "Kezdés" msgid "End" msgstr "Vége" msgid "Interval" msgstr "Intervallum" msgid "Time period" msgstr "IdÅ‘ periódus" msgid "Date period" msgstr "Dátum periódus" msgid "Repeat" msgstr "Ismétlés" msgid "Repeat in the following days" msgstr "Ismétlés a következÅ‘ napokban" msgid "Ignore alarm when task expired offline" msgstr "Figyelmen kivül hagyja ha a feladat már lejárt" msgid "Select a font..." msgstr "Betűtípus választása..." msgid "Color of items that are due today" msgstr "Ma esedékes elemek színe" msgid "Color of items that are due in the next 7 days" msgstr "A következÅ‘ 7 napban esedékes elemek színe" msgid "Color of items that are past due" msgstr "A már elmúlt tételek színe" msgid "Task info font" msgstr "Feladatok információ betűtípus" msgid "Show in bold tasks with high priority" msgstr "Mutassa vastaggal a magas prioritású feladatokat" msgid "Hide completed tasks" msgstr "Kész feladatok elrejtése" msgid "Delete completed tasks without confirmation" msgstr "A kész feladatok törlése megerÅ‘sítés nélkül" msgid "Add new task when double clicked on tasks list" msgstr "Új feladat hozzáadás dupla kattintással a feladatok listában" msgid "minutes" msgstr "perc" msgid "0 for disable" msgstr "0 - letiltva" msgid "Repeat sound alarm" msgstr "Hang figyelmeztetés ismétlése" msgid "times" msgstr "idÅ‘" msgid "Global notification command" msgstr "Globális figyelmeztetÅ‘ parancs" msgid "Tasks options" msgstr "Feladatok beállításai" msgid "Reminder options" msgstr "EmlékeztetÅ‘ opciók" msgid "Tasks list" msgstr "Feladatok lista" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "No." msgid "New Moon" msgstr "Új Hold" msgid "Waxing Crescent Moon" msgstr "NövekvÅ‘ elsÅ‘ negyed" msgid "Quarter Moon" msgstr "ElsÅ‘ negyed" msgid "Waxing Gibbous Moon" msgstr "NövekvÅ‘ három negyed" msgid "Full Moon" msgstr "Telihold" msgid "Waning Gibbous Moon" msgstr "CsökkenÅ‘ három negyed" msgid "Last Quarter Moon" msgstr "Utolsó negyed" msgid "Waning Crescent Moon" msgstr "CsökkenÅ‘ elsÅ‘ negyed" msgid "Error" msgstr "Hiba" msgid "Selected file exist! Overwrite?" msgstr "A kiválasztott fájl már létezik! Felülírja?" #~ msgid "Select and show first item after search" #~ msgstr "Az elsÅ‘ megtalált elem kiválasztása és mutatása keresés után" #~ msgid "Order" #~ msgstr "Sorrend" #~ msgid "Mode" #~ msgstr "Mód" #~ msgid "Ascending" #~ msgstr "NövekvÅ‘" #~ msgid "Descending" #~ msgstr "CsökkenÅ‘" #~ msgid "Sorting" #~ msgstr "Rendezés" #~ msgid "Contact map location" #~ msgstr "Kapcsolat helye a térképen" osmo-0.2.14/po/ru.po000664 001750 001750 00000136121 12561325524 014142 0ustar00pasppasp000000 000000 # Russian translation of Osmo # This file is distributed under the same license as the Osmo package. # Vyacheslav A. Trishkin , 2008. # Sergey Panasenko , 2009-2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-04-07 10:49+0300\n" "Last-Translator: Sergey Panasenko \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" msgid "About" msgstr "О программе" msgid "Close" msgstr "Закрыть" msgid "Ctrl+PageUp" msgstr "Ctrl+СтрВверх" msgid "switch to previous tab" msgstr "перейти на предыдущую вкладку" msgid "Ctrl+PageDn" msgstr "Ctrl+СтрВниз" msgid "switch to next tab" msgstr "перейти на Ñледующую вкладку" msgid "switch to selected page" msgstr "перейти на выбранную Ñтраницу" msgid "show options window" msgstr "показать окно наÑтроек" msgid "show about window" msgstr "показать окно \"О программе\"" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "СтрВверх/СтрВниз" msgid "switch page in options and about tab" msgstr "перейти на Ñтраницу наÑтроек и опиÑаниÑ" msgid "exit" msgstr "выход" msgid "Space" msgstr "Пробел" msgid "select current date" msgstr "выбрать текущую дату" msgid "Ctrl+Space" msgstr "Ctrl+Пробел" msgid "toggle personal data visibility" msgstr "Ñделать личные данные видимыми" msgid "Arrows" msgstr "Стрелки" msgid "change day" msgstr "изменить день" msgid "Ctrl+Up/Down" msgstr "Ctrl+Вверх/Вниз" msgid "scroll the contents in the day info panel" msgstr "прокрутить Ñодержимое в панели информации днÑ" msgid "change month" msgstr "изменить меÑÑц" msgid "Home/End" msgstr "Ðачало/конец Ñтроки" msgid "change year" msgstr "изменить год" msgid "toggle calendars for the previous and next month" msgstr "показать календари предыдущего и Ñледующего меÑÑца" msgid "day notes browser" msgstr "навигатор заметок днÑ" msgid "assign background color to day note" msgstr "назначить цвет фона Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¸ на день" msgid "date calculator" msgstr "калькулÑтор даты" msgid "show full-year calendar" msgstr "показать календать вÑего года" msgid "jump to date" msgstr "перейти к дате" msgid "Delete" msgstr "Стереть" msgid "remove day note" msgstr "удалить заметки на день" msgid "Alt+Arrows" msgstr "Alt+Стрелка" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "закрыть редактор" msgid "toggle bold" msgstr "Вкл/выкл жирный" msgid "toggle italic" msgstr "вкл/выкл наклон" msgid "toggle underline" msgstr "вкл/выкл подчеркнутый" msgid "toggle strikethrough" msgstr "зачеркнутый" msgid "toggle highlight" msgstr "выделение цветом" msgid "Arrows Up/Down" msgstr "Стрелки вверх/вниз" msgid "toggle alternative view" msgstr "альтернативный вид" msgid "year info" msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ годе" msgid "set current year" msgstr "текущий год" msgid "close full-year calendar" msgstr "закрыть календать вÑего года" msgid "Alt+a, Insert" msgstr "Alt+a, Ð’Ñтавка" msgid "add task" msgstr "добавить задачу" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Ввод" msgid "edit task" msgstr "редактирование задачи" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "удалить задачу" msgid "toggle hidden tasks" msgstr "показать Ñкрытые задачи" msgid "activate search field" msgstr "активизировать поле поиÑка" msgid "Left, Right" msgstr "Влево, Вправо" msgid "change category filter" msgstr "изменить фильтр категории" msgid "close task info panel" msgstr "закрыть панель информации о задаче" msgid "Insert" msgstr "Ð’Ñтавка" msgid "add contact" msgstr "добавить контакт" msgid "Ctrl+Enter" msgstr "Ctrl+Ввод" msgid "edit contact" msgstr "редактировать контакт" msgid "remove contact" msgstr "удалить контакт" msgid "change search mode" msgstr "изменить ÑпоÑоб поиÑка" msgid "close contact details panel" msgstr "закрыть панель деталей контакта" msgid "Enter" msgstr "Ввод" msgid "open note" msgstr "открыть заметку" msgid "add note" msgstr "добавить заметку" msgid "remove note" msgstr "удалить заметку" msgid "edit note name and category" msgstr "редактировать Ð¸Ð¼Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¸ и категорию" msgid "close note editor" msgstr "закрыть редактор заметки" msgid "save note" msgstr "Ñохранить заметку" msgid "find text" msgstr "найти текÑÑ‚" msgid "clear selection attributes" msgstr "убрать вÑе атрибуты" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO был разработан, Ð´Ð»Ñ ÑƒÐ´Ð¾Ð±Ñтва пользователей, поÑтому имеет много " "комбинаций клавиш. Вот полный ÑпиÑок:" msgid "General" msgstr "ОÑновные" msgid "Calendar" msgstr "Календарь" msgid "Note editor" msgstr "Редактор заметок" msgid "Full-year calendar" msgstr "Годичный календарь" msgid "Tasks" msgstr "Задачи" msgid "Contacts" msgstr "Контакты" msgid "Notes" msgstr "Заметки" msgid "Selector" msgstr "Выбор" msgid "Editor" msgstr "Редактор" msgid "A handy personal organizer" msgstr "Лёгкий перÑональный органайзер" msgid "compiled on" msgstr "Ñобрано" msgid "Programming" msgstr "Программирование" msgid "Graphics" msgstr "Графика" msgid "Contributors" msgstr "Вклад" msgid "Translators" msgstr "Переводчики" msgid "Mailing lists" msgstr "СпиÑки раÑÑылки" msgid "Bug tracker" msgstr "Трекер Ошибок" msgid "Feature requests" msgstr "ПроÑьбы о новых возможноÑÑ‚ÑÑ…" msgid "Available modules" msgstr "ДоÑтупные модули" msgid "Compiled-in features" msgstr "Ðовые возможноÑти" msgid "iCalendar support" msgstr "Поддержка iCalendar" msgid "Encrypted notes support" msgstr "Шифрование заметок" msgid "Backup support" msgstr "Поддержка резервного копированиÑ" msgid "Printing support" msgstr "Поддержка печати" msgid "Spell checker support" msgstr "Поддержка Ñловарей" msgid "version" msgstr "верÑиÑ" msgid "SVN revision" msgstr "иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ SVN" msgid "Key shortcuts" msgstr "Комбинации клавиш" msgid "License" msgstr "ЛицензиÑ" msgid "Save backup" msgstr "Сохранить резервную копию" msgid "Password protection" msgstr "Защита паролем" msgid "Enter password" msgstr "Введите пароль" msgid "Re-enter password" msgstr "Повторите пароль" msgid "Please enter the password" msgstr "Повторите пароль" msgid "Passwords do not match!" msgstr "Пароли не Ñовпадают!" msgid "Cannot create backup!" msgstr "Ðевозможно Ñоздать файл резервной копии!" msgid "Backup file saved successfully!" msgstr "Файл резервной копии уÑпешно Ñохранен!" msgid "Open backup file" msgstr "Открыть файл резервной копии" msgid "Osmo backup files (*.bck)" msgstr "Файлы резервных копий Osmo(*.bck)" msgid "This is not Osmo backup file" msgstr "Это не файл резервной копии Osmo" msgid "Incorrect password!" msgstr "Ðеверный пароль!" msgid "All your data will be replaced with backup file content." msgstr "Ð’Ñе ваши данные будут заменены Ñодержимым файла резервной копии." msgid "Are you sure?" msgstr "Ð’Ñ‹ уверены?" msgid "Osmo has to be restarted now..." msgstr "Osmo будет перезагружен ÑейчаÑ..." msgid "was born" msgstr "родилÑÑ" msgid "year old" msgid_plural "years old" msgstr[0] "год" msgstr[1] "года" msgstr[2] "лет" msgid "Current time" msgstr "Текущее времÑ" msgid "Day number" msgstr "Ðомер днÑ" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "день до конца года" msgstr[1] "Ð´Ð½Ñ Ð´Ð¾ конца года" msgstr[2] "дней до конца года" msgid "the last day of the year" msgstr "поÑледний день года" msgid "Today distance" msgstr "ДиÑÑ‚Ð°Ð½Ñ†Ð¸Ñ Ð´Ð¾ ÑегоднÑ" msgid "Week number" msgstr "Ðомер недели" msgid "Marked days" msgstr "Дни Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñми" msgid "Weekend days" msgstr "Выходные" msgid "Moon phase" msgstr "Фаза Луны" msgid "Zodiac sign" msgstr "Знак Зодиака" msgid "Day notes" msgstr "Заметки на день" msgid "Day tasks" msgstr "Задачи на день" msgid "Birthday" msgstr "День рождениÑ" msgid "Day category" msgstr "Категории днÑ" msgid "Selected day note will be removed." msgstr "Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° будет удалена." msgid "Continue?" msgstr "Продолжить?" msgid "Previous year" msgstr "Предыдущий год" msgid "Previous month" msgstr "Предыдущий меÑÑц" msgid "Previous day" msgstr "Предыдущий день" msgid "Today" msgstr "СегоднÑ" msgid "Next day" msgstr "Следующий день" msgid "Next month" msgstr "Следующий меÑÑц" msgid "Next year" msgstr "Следующий год" msgid "Jump to date" msgstr "Перейти к дате" msgid "Print calendar" msgstr "Ðапечатать календарь" msgid "Date calculator" msgstr "КалькулÑтор даты" #, fuzzy msgid "Backup data" msgstr "Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" #, fuzzy msgid "Restore data" msgstr "ВоÑÑтановить" msgid "Preferences" msgstr "Параметры" msgid "Quit" msgstr "Выход" msgid "Toggle day note panel" msgstr "Панель заметок на день" msgid "Add task" msgstr "Добавление задачи" msgid "Select day color" msgstr "Выбрать цвет днÑ" msgid "Browse notes" msgstr "Показать заметки" msgid "Browse iCal events" msgstr "Показать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ iCal" msgid "Export to iCal file" msgstr "ЭкÑпорт в файл iCal" msgid "Previous and next month" msgstr "Предыдущий и Ñледующий меÑÑц" msgid "Close note panel" msgstr "Закрыть панель заметок" msgid "Highlight" msgstr "Выделение цветом" msgid "Strikethrough" msgstr "Зачеркнутый" msgid "Underline" msgstr "Подчеркнутый" msgid "Italic" msgstr "КурÑив" msgid "Bold" msgstr "Жирный" msgid "Insert timeline" msgstr "Ð’Ñтавить график" msgid "Clear text" msgstr "ОчиÑтить текÑÑ‚" msgid "Info" msgstr "ИнформациÑ" msgid "Select color" msgstr "Выбрать цвет" msgid "None" msgstr "Ðет" msgid "Cancel" msgstr "Отмена" msgid "OK" msgstr "ОК" msgid "year" msgid_plural "years" msgstr[0] "год" msgstr[1] "года" msgstr[2] "лет" msgid "month" msgid_plural "months" msgstr[0] "меÑÑц" msgstr[1] "меÑÑца" msgstr[2] "меÑÑцев" msgid "day" msgid_plural "days" msgstr[0] "день" msgstr[1] "днÑ" msgstr[2] "дней" msgid "hour" msgid_plural "hours" msgstr[0] "чаÑ" msgstr[1] "чаÑа" msgstr[2] "чаÑов" msgid "minute" msgid_plural "minutes" msgstr[0] "минута" msgstr[1] "минуты" msgstr[2] "минут" msgid "second" msgid_plural "seconds" msgstr[0] "Ñекунда" msgstr[1] "Ñекунды" msgstr[2] "Ñекунд" msgid "or" msgstr "или" msgid "rounded down" msgstr "округлено в меньшую Ñторону" msgid "week" msgid_plural "weeks" msgstr[0] "неделÑ" msgstr[1] "недели" msgstr[2] "недель" msgid "working day" msgid_plural "working days" msgstr[0] "рабочий день" msgstr[1] "рабочих днÑ" msgstr[2] "рабочих дней" msgid "time is ignored" msgstr "Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚ÑÑ" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "выходной" msgstr[1] "выходных" msgstr[2] "выходных" msgid "This calculator only supports dates after year 1." msgstr "Этот калькулÑтор поддерживает только даты позже 1 года." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Цвет выходных дней" msgstr[1] "Цвет выходных дней" msgstr[2] "выходные пропуÑкаютÑÑ" msgid "Year" msgstr "Год" msgid "Month" msgstr "МеÑÑц" msgid "Day" msgstr "День" msgid "Current date" msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð´Ð°Ñ‚Ð°" msgid "Set current date" msgstr "УÑтановить текущую дату" msgid "Hour" msgstr "ЧаÑ" msgid "Minute" msgstr "Минута" msgid "Second" msgstr "Секунда" msgid "Set current time" msgstr "УÑтановить текущее времÑ" msgid "Reset time" msgstr "СброÑить времÑ" msgid "First date and time" msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" msgid "Second date and time" msgstr "Ð’Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" msgid "Alternative time units" msgstr "Ð’ других единицах времени" msgid "Result" msgstr "Результат" msgid "Duration between two dates" msgstr "Срок между Ð´Ð²ÑƒÐ¼Ñ Ð´Ð°Ñ‚Ð°Ð¼Ð¸" msgid "Operation" msgstr "ДейÑтвие" msgid "add" msgstr "добавить" msgid "subtract" msgstr "вычеÑть" msgid "Date and time to add or subtract from" msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" msgid "Years" msgstr "Годы" msgid "Months" msgstr "МеÑÑцы" msgid "Days" msgstr "Дни" msgid "Weeks" msgstr "Ðедели" msgid "Hours" msgstr "ЧаÑÑ‹" msgid "Minutes" msgstr "Минуты" msgid "Seconds" msgstr "Секунды" msgid "Ignore weekend days" msgstr "ПропуÑтить выходные" msgid "Reset fields" msgstr "ОчиÑтить полÑ" msgid "Time to add or subtract" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ вычитаниÑ" msgid "Jump to" msgstr "Перейти к" msgid "Add to or subtract from a date" msgstr "Добавление/вычитание даты и времени" msgid "Leap year" msgstr "ВиÑокоÑный год" msgid "Yes" msgstr "Да" msgid "No" msgstr "Ðет" msgid "Chinese year animal" msgstr "По китайÑкому календарю" msgid "Number of days" msgstr "КоличеÑтво дней" msgid "Number of weeks" msgstr "КоличеÑтво недель" msgid "Number of weekend days" msgstr "КоличеÑтво выходных дней" msgid "Year info" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ годе" msgid "Current year" msgstr "Текущий год" msgid "Alternative view" msgstr "Ðльтернативный вид" msgid "event" msgid_plural "events" msgstr[0] "Ñобытие" msgstr[1] "ÑобытиÑ" msgstr[2] "Ñобытий" msgid "No valid calendars defined" msgstr "Ðет календарей" msgid "iCalendar events" msgstr "iCalendar ÑобытиÑ" msgid "Date" msgstr "Дата" msgid "Time" msgstr "ВремÑ" msgid "Summary" msgstr "Кратко" msgid "Select output file" msgstr "Создать файл" msgid "The list will be cleared and all entries will be lost." msgstr "СпиÑок будет очищен и вÑе запиÑи будут утрачены." msgid "Done!" msgstr "Готово!" msgid "event exported" msgid_plural "events exported" msgstr[0] "Ñобытие ÑкÑпортировано" msgstr[1] "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÑкÑпортировано" msgstr[2] "Ñобытий ÑкÑпортировано" msgid "iCalendar export" msgstr "ЭкÑпорт в iCalendar" msgid "Day Selector" msgstr "Указатель днÑ" msgid "Use date period" msgstr "ИÑпользовать период дат" msgid "Add" msgstr "Добавить" msgid "Clear" msgstr "ОчиÑтить" msgid "Remove" msgstr "Удалить" msgid "Output filename" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°" msgid "Browse" msgstr "Обзор" msgid "Export" msgstr "ЭкÑпорт" msgid "no entries" msgstr "нет запиÑей" msgid "entry" msgid_plural "entries" msgstr[0] "запиÑÑŒ" msgstr[1] "запиÑи" msgstr[2] "запиÑей" msgid "Calendar notes" msgstr "Заметки календарÑ" msgid "Search" msgstr "ПоиÑк" msgid "Filter" msgstr "Фильтр" msgid "Current month" msgstr "Текущий меÑÑц" msgid "Selected month" msgstr "Выбранный меÑÑц" msgid "Selected year" msgstr "Выбранный год" msgid "Selected month and year" msgstr "Выбранный меÑÑц и год" msgid "All notes" msgstr "Ð’Ñе заметки" msgid "Case sensitive" msgstr "С учетом региÑтра" msgid "Strikethrough past day notes" msgstr "Зачеркивать заметки прошедших дней" msgid "Note" msgstr "Заметка" msgid "Syntax" msgstr "СинтакÑиÑ" msgid "abbreviated weekday name" msgstr "Ñокращенное название Ð´Ð½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸" msgid "full weekday name" msgstr "полное название Ð´Ð½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸" msgid "abbreviated month name" msgstr "Ñокращенное название меÑÑца" msgid "full month name" msgstr "Полное название меÑÑца" msgid "day of the month" msgstr "день меÑÑца" msgid "MM/DD/YY" msgstr "ММ/ДД/ГГГГ" msgid "day of the month without leading zeros" msgstr "день меÑÑца без нулей впереди" msgid "year without century" msgstr "год без Ñтолетий" msgid "year with century" msgstr "год Ñо ÑтолетиÑми" msgid "Date header format" msgstr "Формат заголовка даты" msgid "Set default format" msgstr "УÑтановить формат по умолчанию" msgid "Date format syntax" msgstr "СинтакÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° даты" msgid "Day note marker" msgstr "Указатель заметок на день" msgid "Event marker" msgstr "Указатель ÑобытиÑ" msgid "Circle" msgstr "Круг" msgid "Ellipse" msgstr "ЭллипÑ" msgid "Wave" msgstr "Волна" msgid "Current day marker" msgstr "Указатель на текущий день" msgid "Arrow" msgstr "Стрелка" msgid "Free-hand circle" msgstr "Круг (от руки)" msgid "Colors" msgstr "Цвета" msgid "Header color" msgstr "Цвет заголовка" msgid "Weekend days color" msgstr "Цвет выходных дней" msgid "Cursor color" msgstr "Цвет курÑора" msgid "Event marker color" msgstr "Цвет дней Ñ ÑобытиÑми" msgid "Current day marker color" msgstr "Цвет ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ днÑ" msgid "Birthday marker color" msgstr "Цвет ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð´Ð½ÐµÐ¹ рожденьÑ" msgid "Date font" msgstr "Шрифт даты" msgid "Calendar font" msgstr "Шрифт календарÑ" msgid "Note font" msgstr "Шрифт заметок" msgid "Enable block cursor" msgstr "КурÑор в виде прÑмоугольника" msgid "Cursor thickness" msgstr "Толщина курÑора" msgid "Thin" msgstr "Тонкий" msgid "Thick" msgstr "ТолÑтый" msgid "Edit category" msgstr "Редактировать категории" msgid "Color" msgstr "Цвет" msgid "Name" msgstr "ИмÑ" msgid "Select ICS file" msgstr "Выбрать ICS файл" msgid "All Files" msgstr "Ð’Ñе файлы" msgid "Calendar files (*.ics)" msgstr "Файлы ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ (*.ics)" msgid "Modify ICAL parameters" msgstr "Изменить ICAL параметры" msgid "Filename" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" msgid "Options" msgstr "ÐаÑтройки" msgid "Disabled" msgstr "Отключено" msgid "Valid" msgstr "ЗадейÑтвован" msgid "Description" msgstr "ОпиÑание" msgid "Full date" msgstr "Срок" msgid "Mark" msgstr "Пометка" msgid "Week start on Monday" msgstr "ÐÐµÐ´ÐµÐ»Ñ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚ÑÑ Ñ Ð¿Ð¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸ÐºÐ°" msgid "Show day names" msgstr "Показывать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð½ÐµÐ¹ недели" msgid "No month change" msgstr "Ðет изменений меÑÑца" msgid "Show week numbers" msgstr "Показывать номера недель" msgid "Simple view in full-year calendar" msgstr "ПроÑтой вид годичного календарÑ" msgid "Enable auxilary calendars" msgstr "Отображать календари других меÑÑцев" msgid "Ascending sorting in day notes browser" msgstr "Сортировать по уменьшению в навигаторе заметок на день" msgid "Enable spell checker in day notes" msgstr "Включить проверку орфографии в заметках" #, fuzzy msgid "Show seconds" msgstr "Секунды" msgid "Appearance" msgstr "Внешний вид" msgid "Day categories" msgstr "Категории днÑ" msgid "iCalendar files" msgstr "Файлы iCalendar" msgid "Show in day info panel" msgstr "Ð’ инфо панели Ð´Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ" msgid "Name day" msgstr "Именины" msgid "Error printing" msgstr "Ошибка печати" msgid "Printing properties" msgstr "ÐаÑтройка печати" msgid "Month name" msgstr "Ðазвание меÑÑца" msgid "Day name" msgstr "Ðазвание днÑ" msgid "Events" msgstr "СобытиÑ" msgid "Fonts" msgstr "Шрифты" msgid "Birthdays" msgstr "День рождениÑ" msgid "Namedays" msgstr "Именины" msgid "Visible events" msgstr "Видимые ÑобытиÑ" msgid "Padding" msgstr "Заполнить" msgid "Event maximum length" msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð½Ð° ÑобытиÑ" msgid "Page orientation:" msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñтраницы" msgid "Portrait" msgstr "Портрет" msgid "Landscape" msgstr "Ланшафт" msgid "Timeline" msgstr "График" msgid "From (hour)" msgstr "С (чаÑа)" msgid "Step (minutes)" msgstr "Шаг (минут)" msgid "To (hour)" msgstr "До (чаÑа)" msgid "No date" msgstr "Ðет даты" msgid "Rat" msgstr "КрыÑа" msgid "Ox" msgstr "Бык" msgid "Tiger" msgstr "Тигр" msgid "Hare" msgstr "ЗаÑц" msgid "Dragon" msgstr "Дракон" msgid "Snake" msgstr "ЗмеÑ" msgid "Horse" msgstr "Лошадь" msgid "Sheep" msgstr "Овца" msgid "Monkey" msgstr "ОбезьÑна" msgid "Fowl" msgstr "Петух" msgid "Dog" msgstr "Собака" msgid "Pig" msgstr "СвиньÑ" msgid "Unknown" msgstr "ÐеизвеÑтно" msgid "Aquarius" msgstr "Водолей" msgid "Pisces" msgstr "Рыбы" msgid "Aries" msgstr "Овен" msgid "Taurus" msgstr "Телец" msgid "Gemini" msgstr "Близнецы" msgid "Cancer" msgstr "Рак" msgid "Leo" msgstr "Лев" msgid "Virgo" msgstr "Дева" msgid "Libra" msgstr "ВеÑÑ‹" msgid "Scorpio" msgstr "Скорпион" msgid "Sagittarius" msgstr "Стрелец" msgid "Capricorn" msgstr "Козерог" msgid "Cannot perform selected operation." msgstr "Ðе удаетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ выбранную операцию." msgid "Task has been modified or removed." msgstr "Задача была изменена или удалена." msgid "Remind me later" msgstr "Ðапомнить позже" msgid "Done" msgstr "ЗавершенноÑть" msgid "postponed" msgstr "отложено" msgid "Show task" msgstr "Показать задачи" msgid "Alarm warning!" msgstr "Ðапоминание!" msgid "Day note" msgstr "Заметки на день" msgid "Type" msgstr "Тип" msgid "Event" msgstr "Событие" msgid "Task" msgstr "Задача" msgid "Show Osmo" msgstr "Показать Osmo" msgid "No birthdays defined" msgstr "Ðи одного Ð´Ð½Ñ Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ" msgid "Birthdays list" msgstr "СпиÑок дней рождениÑ" msgid "Days to birthday" msgstr "Дней до Ð´Ð½Ñ Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ" msgid "Age" msgstr "ВозраÑÑ‚" msgid "Birthday date" msgstr "День рождениÑ" msgid "today" msgstr "ÑегоднÑ" msgid "Please select address" msgstr "ПожалуйÑта, выберите адреÑ" msgid "Information" msgstr "ИнформациÑ" msgid "Work" msgstr "Работа" msgid "Home" msgstr "Дом" msgid "Group" msgstr "Группа" msgid "First name" msgstr "ИмÑ" msgid "Last name" msgstr "ФамилиÑ" msgid "Second name" msgstr "ОтчеÑтво" msgid "Nickname" msgstr "Прозвище" msgid "Tags" msgstr "Теги" msgid "Name day date" msgstr "Именины" msgid "Home address" msgstr "Домашний адреÑ" msgid "Home postcode" msgstr "Дом. ИндекÑ" msgid "Home city" msgstr "Дом. Город" msgid "Home state" msgstr "Дом. Регион" msgid "Home country" msgstr "Дом. Страна" msgid "Organization" msgstr "ОрганизациÑ" msgid "Department" msgstr "Подразделение" msgid "Work address" msgstr "Рабочий адреÑ" msgid "Work postcode" msgstr "Раб. ИндекÑ" msgid "Work city" msgstr "Раб. Город" msgid "Work state" msgstr "Раб. Регион" msgid "Work country" msgstr "Раб. Страна" msgid "Fax" msgstr "ФакÑ" msgid "Home phone" msgstr "Домашний телефон" msgid "Home phone 2" msgstr "Домашний телефон 2" msgid "Home phone 3" msgstr "Домашний телефон 3" msgid "Home phone 4" msgstr "Домашний телефон 4" msgid "Work phone" msgstr "Рабочий телефон" msgid "Work phone 2" msgstr "Рабочий телефон 2" msgid "Work phone 3" msgstr "Рабочий телефон 3" msgid "Work phone 4" msgstr "Рабочий телефон 4" msgid "Cell phone" msgstr "Сотовый телефон" msgid "Cell phone 2" msgstr "Сотовый телефон 2" msgid "Cell phone 3" msgstr "Сотовый телефон 3" msgid "Cell phone 4" msgstr "Сотовый телефон 4" msgid "E-Mail" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°" msgid "E-Mail 2" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° 2" msgid "E-Mail 3" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° 3" msgid "E-Mail 4" msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° 4" msgid "WWW" msgstr "Веб-Ñтраница" msgid "WWW 2" msgstr "Веб-Ñтраница 2" msgid "WWW 3" msgstr "Веб-Ñтраница 3" msgid "WWW 4" msgstr "Веб-Ñтраница 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Блог" msgid "Photo" msgstr "ФотографиÑ" msgid "Additional info" msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" msgid "New contact" msgstr "Ðовый контакт" msgid "Remove contact" msgstr "Удалить контакт" msgid "Edit contact" msgstr "Редактирование контакта" msgid "Show birthdays" msgstr "Показать дни рождениÑ" msgid "Show contact location on the map" msgstr "Показать раÑположение контакта на карте" msgid "Import contacts" msgstr "Импорт контактов" msgid "Export contacts" msgstr "ЭкÑпорт контактов" msgid "First Name" msgstr "ИмÑ" msgid "Last Name" msgstr "ФамилиÑ" msgid "All fields" msgstr "Ð’Ñе полÑ" msgid "Contact details" msgstr "ПодробноÑти контакта" msgid "Close contact panel" msgstr "Закрыть панель контактов" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "контакт ÑкÑпортировано" msgstr[1] "контакта ÑкÑпортировано" msgstr[2] "контактов ÑкÑпортировано" msgid "Cannot create file." msgstr "Ðевозможно Ñоздать файл." msgid "Output format" msgstr "ВывеÑти в формате" msgid "Add header" msgstr "Добавить заголовок" msgid "Fields to export" msgstr "ЭкÑпортируемые полÑ" msgid "All" msgstr "Ð’Ñе" msgid "Invert" msgstr "Обратить" msgid "Select fields" msgstr "Выбранные полÑ" msgid "Select CSV file" msgstr "Выбрать CSV файл" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· запÑтую) файлы (*.csv)" msgid "Please select file first." msgstr "ПожалуйÑта, выберите Ñначала файл." msgid "Import type" msgstr "Тип импорта" msgid "File" msgstr "Файл" msgid "Input filename" msgstr "Введите Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" msgid "Import" msgstr "Импорт" msgid "Nothing to import." msgstr "Ðечего импортировать." msgid "contact added" msgid_plural "contacts added" msgstr[0] "контакт добавлен" msgstr[1] "контакта добавлено" msgstr[2] "контактів добавлено" msgid "of" msgstr "из" msgid "Record" msgstr "ЗапиÑÑŒ" msgid "Number fields per record" msgstr "ЧиÑло полей в запиÑи" msgid "Use first record as header" msgstr "ИÑпользовать первую запиÑÑŒ как заголовок" msgid "Field type" msgstr "Тип полÑ" msgid "Value" msgstr "Значение" msgid "No records found in selected file." msgstr "Ðет запиÑей в выбранном файле." msgid "Cannot read file." msgstr "Ðевозможно прочеÑть файл." msgid "Cannot open file." msgstr "Ðевозможно открыть файл." msgid "Selected contact will be removed." msgstr "Выбранный контакт будет удален." msgid "Select photo" msgstr "Выбрать фотографию" msgid "Address" msgstr "ÐдреÑ" msgid "Postcode" msgstr "ИндекÑ" msgid "City" msgstr "Город" msgid "State" msgstr "Регион" msgid "Country" msgstr "Страна" msgid "Add contact" msgstr "Добавить контакт" msgid "Personal" msgstr "Личные" msgid "Phones" msgstr "Телефоны" msgid "Internet" msgstr "Интернет" msgid "Color of contact tags" msgstr "Цвет тегов контакта" msgid "Color of links" msgstr "Цвет ÑÑылки" msgid "Font size" msgstr "Шрифт" msgid "Name font size" msgstr "Гарнитура" msgid "Item font size" msgstr "Размер шрифта" msgid "Photo size" msgstr "Размер фотографии" msgid "Small" msgstr "Маленький" msgid "Medium" msgstr "Средний" msgid "Large" msgstr "Большой" msgid "Hide group column" msgstr "Скрыть Ñтолбец группы" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Разное" msgid "Groups" msgstr "Группы" msgid "Visible columns in birthday browser" msgstr "Показать Ñтолбики в навигаторе дней рождениÑ" msgid "Show calendar" msgstr "Календарь" msgid "Show tasks" msgstr "Задачи" msgid "Show contacts" msgstr "Контакты" msgid "Show notes" msgstr "Заметки" msgid "Show options" msgstr "ÐаÑтройки" msgid "Show small calendar window" msgstr "показывать маленькое окно календарÑ" msgid "Check for events since last run" msgstr "Проверка Ñобытий, которые произошли Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑледнего запуÑка." msgid "Number of days to check forward for events (default: 0)" msgstr "ПроверÑть ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð½Ð° такое чиÑло дней вперед (по умолчанию 0)" msgid "Set absolute path for settings and data files" msgstr "УÑтановить абÑолютный путь до файлов наÑтроек и данных" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "Лёгкий перÑональный органайзер" msgid "ERROR: Cannot create config files" msgstr "ОШИБКÐ: Ðевозможно Ñоздать файл конфигурации." msgid "Another copy of OSMO is already running." msgstr "Ð”Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ OSMO уже запущена." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Одновременно иÑпользуютÑÑ Ð´Ð²Ðµ или больше копии OSMO, Ñто может привеÑти к " "потере данных." msgid "Do you really want to continue?" msgstr "Ð’Ñ‹ дейÑтвительно хотите продолжить?" msgid "Warning" msgstr "Предупреждение" msgid "The note has changed." msgstr "Заметка изменилаÑÑŒ." msgid "Do you want to save it?" msgstr "Ð’Ñ‹ хотите Ñохранить?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Ðет запиÑей в выбранном файле." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Ð’Ñ‹ дейÑтвительно хотите продолжить?" msgid "Question" msgstr "Подтверждение" msgid "Words" msgstr "Слова" msgid "Lines" msgstr "Строки" msgid "Characters" msgstr "Символы" msgid "White characters" msgstr "Пробелы" msgid "Bytes" msgstr "Байты" msgid "Document" msgstr "Документ" msgid "Selection" msgstr "Выбор" msgid "Created" msgstr "Создано" msgid "Modified" msgstr "Изменено" msgid "New note" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ°" msgid "Add note" msgstr "Добавление заметки" msgid "Edit note" msgstr "Редактирование заметки" msgid "Delete note" msgstr "Стереть заметку" msgid "Remove note" msgstr "Удалить заметку" msgid "Find" msgstr "Ðайти" msgid "Clear attributes" msgstr "Убрать атрибуты" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Сохранить заметку" msgid "Insert current date and time" msgstr "Ð’Ñтавить текущие дату и времÑ" msgid "Insert separator" msgstr "Ð’Ñтавить разделитель" msgid "Statistics" msgstr "СтатиÑтика" msgid "Close editor" msgstr "Закрыть редактор" msgid "Toggle spell checker" msgstr "Проверить орфографию" msgid "Category" msgstr "КатегориÑ" msgid "Note name" msgstr "Ð˜Ð¼Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ¸" msgid "Last changes" msgstr "ПоÑледние изменениÑ" msgid "Read-only" msgstr "Только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" msgid "Line" msgstr "Строки" msgid "Column" msgstr "Столбец" msgid "case sensitive" msgstr "Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра" msgid "Close find entry" msgstr "Закрыть поиÑк запиÑи" msgid "Edit entry" msgstr "Редактирование запиÑи" msgid "Remember cursor position" msgstr "Запомнить позицию курÑора" msgid "Selected note will be removed." msgstr "Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° будет удалена." msgid "No further data recovery will be possible." msgstr "ВоÑÑтановить данные будет невозможно." msgid "Plain" msgstr "Без шифрованиÑ" msgid "Encrypted" msgstr "Зашифровано" msgid "Note type" msgstr "Тип заметки" msgid "Cannot open the note." msgstr "Ðевозможно открыть заметку." msgid "encryption support is disabled" msgstr "поддержка ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°" msgid "Authorization" msgstr "ÐвторизациÑ" msgid "Algorithm" msgstr "Ðлгоритм" msgid "Hashing" msgstr "Ð¥Ñширование" msgid "Compression" msgstr "Сжатие" msgid "Ratio" msgstr "Степень ÑжатиÑ" msgid "Fast" msgstr "БыÑтраÑ" msgid "Good" msgstr "ХорошаÑ" msgid "Best" msgstr "ЛучшаÑ" msgid "Remember the last selected category" msgstr "Помнить поÑледнюю выбранную категорию" msgid "Use system format for date and time" msgstr "ИÑпользовать ÑиÑтемный формат времени и даты" msgid "Encryption" msgstr "Шифрование" msgid "Visible columns" msgstr "Видимые Ñтолбцы" msgid "Categories" msgstr "Категории" msgid "Notes options" msgstr "ÐаÑтройки заметок" msgid "Osmo has to be restarted to take effect." msgstr "" "Osmo должен быть перезагружен Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñтупили в Ñилу." msgid "Layout" msgstr "Слой" msgid "Vertical" msgstr "Вертикальный" msgid "Horizontal" msgstr "Горизонтальный" msgid "Tabs position" msgstr "Положение вкладок" msgid "Left" msgstr "Слева" msgid "Right" msgstr "Справа" msgid "Top" msgstr "Вверху" msgid "Bottom" msgstr "Внизу" #, fuzzy msgid "Use default stock icons" msgstr "ИÑпользовать иконки по-умолчанию (необходим перезапуÑк)" msgid "Disable underline in links" msgstr "Отключить подчеркивание в ÑÑылках" msgid "Draw rows in alternating colors" msgstr "РиÑовать Ñтроки" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "По крайней мере один модуль должен быть видимым." msgid "Override locale settings" msgstr "Перекрыть локальные наÑтройки" msgid "Date format" msgstr "Формат даты" msgid "DD-MM-YYYY" msgstr "ДД-ММ-ГГГГ" msgid "MM-DD-YYYY" msgstr "ММ-ДД-ГГГГ" msgid "YYYY-MM-DD" msgstr "ГГГГ-ММ-ДД" msgid "YYYY-DD-MM" msgstr "ГГГГ-ДД-ММ" msgid "Time format" msgstr "Формат времени" msgid "hours" msgstr "чаÑовой" msgid "Spell checker language" msgstr "Язык ÑловарÑ" msgid "Enable tooltips" msgstr "Включить подÑказки" msgid "Remember last selected page" msgstr "Помнить поÑледнюю открытую Ñтраницу" msgid "Save data after every modification" msgstr "СохранÑть данные поÑле каждого изменениÑ" msgid "Web browser" msgstr "Веб-браузер" msgid "E-mail client" msgstr "Почтовый клиент" msgid "Sound player" msgstr "Проигрыватель" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Образец %s - будет заменен на гиперÑÑылку" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Образец %s - будет заменен на Ð°Ð´Ñ€ÐµÑ Ñлектронной почты" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Образец %s - будет заменен на Ð¸Ð¼Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ð¾Ð³Ð¾ файла" msgid "Enable system tray" msgstr "ПомеÑтить иконку в ÑиÑтемный трей" msgid "Start minimised" msgstr "ЗапуÑкать Ñвернутым" msgid "Blink on events" msgstr "Мигать при Ñобытии" msgid "Ignore day note events" msgstr "Игнорировать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº днÑ" msgid "Hide" msgstr "Скрыть" msgid "Helpers" msgstr "Помощники" msgid "System tray" msgstr "СиÑтемный трей" msgid "Edit" msgstr "Редактировать" msgid "Go Down" msgstr "Идти вниз" msgid "Select date" msgstr "Выбрать дату" msgid "Select font" msgstr "Выбрать шрифт" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "КалькулÑтор" msgid "Edit day note" msgstr "Редактирование заметок на день" msgid "Save" msgstr "Сохранить" msgid "Display full-year calendar" msgstr "Показать календарь вÑего года" msgid "Help" msgstr "Помощь" msgid "Invalid item" msgstr "Ðеправильный пункт" msgid "Valid item" msgstr "Правильный пункт" msgid "Edit task" msgstr "Редактирование задачи" msgid "Remove task" msgstr "Удалить задачу" msgid "Import tasks" msgstr "Импорт задач" msgid "Export tasks" msgstr "ЭкÑпорт задач" msgid "Change to previous date" msgstr "УÑтановить Ñрок на предыдущий день" msgid "Change to next date" msgstr "УÑтановить Ñрок на Ñледующий день" msgid "Print" msgstr "Печать" msgid "Normal" msgstr "Обычный" msgid "Recurrent" msgstr "ПриодичеÑкий" msgid "Started" msgstr "ÐачалоÑÑŒ" msgid "Finished" msgstr "ЗакончилоÑÑŒ" msgid "All items" msgstr "Ð’Ñе" msgid "New task" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°" msgid "Change due date to previous date" msgstr "УÑтановить граничный Ñрок на предыдущий день" msgid "Change due date to next date" msgstr "УÑтановить граничный Ñрок на Ñледующий день" msgid "Print visible tasks list" msgstr "Ðапечатать видимый ÑпиÑок задач" msgid "Due date" msgstr "Срок" msgid "Priority" msgstr "Приоритет" msgid "Task details" msgstr "Детали задачи" msgid "Close description panel" msgstr "Закрыть панель опиÑаниÑ" msgid "No tasks with defined date found." msgstr "Ðе найдено задач Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¾Ð¹ даты." msgid "Save tasks" msgstr "Сохранить задачи" msgid "tasks exported" msgstr "задачи ÑкÑпортировано" msgid "Please select at least one day when recurrency is enabled." msgstr "ПожалуйÑта, выберите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один день, когда периодичноÑть включена." msgid "Set time" msgstr "УÑтановить времÑ" msgid "Tomorrow" msgstr "Завтра" msgid "Selected task will be removed." msgstr "Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° будет удалена." msgid "Basic" msgstr "ОÑновное" msgid "Select date and time" msgstr "Выберите дату и времÑ" msgid "Low" msgstr "Ðизкий" msgid "High" msgstr "Ð’Ñ‹Ñокий" msgid "Enable sound notification" msgstr "Включить звуковое уведомление" #, fuzzy msgid "Enable notification dialog" msgstr "Включить звуковое уведомление" msgid "Advanced" msgstr "Дополнительно" msgid "Alarm warning" msgstr "Ðапомнить" msgid "Postpone time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ñрочки" msgid "Alarm command" msgstr "Команда Ð´Ð»Ñ Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ" msgid "Recurrent task" msgstr "ПовторÑющаÑÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð°" msgid "Enable" msgstr "Включить" msgid "Start" msgstr "Ðачало" msgid "End" msgstr "Конец" msgid "Interval" msgstr "Интервал" msgid "Time period" msgstr "Период времени" msgid "Date period" msgstr "Период даты" msgid "Repeat" msgstr "Повтор" msgid "Repeat in the following days" msgstr "ПовторÑть в течении Ñледующих дней" msgid "Ignore alarm when task expired offline" msgstr "Игнорировать Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡, которые проÑрочены" msgid "Select a font..." msgstr "Выбрать шрифт..." msgid "Color of items that are due today" msgstr "Цвет пунктов, Ñрок которых наÑтупает ÑегоднÑ" msgid "Color of items that are due in the next 7 days" msgstr "Цвет пунктов, Ñрок которых наÑтупает в Ñледующие 7 дней" msgid "Color of items that are past due" msgstr "Цвет пунктов, которые проÑрочены" msgid "Task info font" msgstr "Шрифт задачи" msgid "Show in bold tasks with high priority" msgstr "Жирный шрифт Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡ Ñ Ð²Ñ‹Ñшим приоритетом" msgid "Hide completed tasks" msgstr "Скрывать завершенные задачи" msgid "Delete completed tasks without confirmation" msgstr "УдалÑть завершенные задачи без подтверждениÑ" msgid "Add new task when double clicked on tasks list" msgstr "ДобавлÑть новую задачу при двойном клике на ÑпиÑок задач" msgid "minutes" msgstr "минуты" msgid "0 for disable" msgstr "0 чтобы отключить" msgid "Repeat sound alarm" msgstr "Повторить звуковое предупреждение." msgid "times" msgstr "УÑтановить времÑ" msgid "Global notification command" msgstr "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° оповещениÑ" msgid "Tasks options" msgstr "Параметры задач" msgid "Reminder options" msgstr "ÐаÑтройки напоминаниÑ" msgid "Tasks list" msgstr "СпиÑок задач" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "â„–" msgid "New Moon" msgstr "Ðоволунье" msgid "Waxing Crescent Moon" msgstr "Прибывает в полумеÑÑце" msgid "Quarter Moon" msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ñ‡ÐµÑ‚Ð²ÐµÑ€Ñ‚ÑŒ" msgid "Waxing Gibbous Moon" msgstr "Между первой четвертью и полнолунием" msgid "Full Moon" msgstr "Полнолуние" msgid "Waning Gibbous Moon" msgstr "Между полнолунием и поÑледней четвертью" msgid "Last Quarter Moon" msgstr "ПоÑледнÑÑ Ñ‡ÐµÑ‚Ð²ÐµÑ€Ñ‚ÑŒ" msgid "Waning Crescent Moon" msgstr "Убывает в полумеÑÑце" msgid "Error" msgstr "Ошибка" msgid "Selected file exist! Overwrite?" msgstr "Указанный файл ÑущеÑтвует! ПерезапиÑать?" #~ msgid "Select and show first item after search" #~ msgstr "Выбрать и показать первый пункт поÑле поиÑка" #~ msgid "Order" #~ msgstr "ПорÑдок" #~ msgid "Mode" #~ msgstr "Режим" #~ msgid "Ascending" #~ msgstr "ВозраÑтание" #~ msgid "Descending" #~ msgstr "Убывание" #~ msgid "Sorting" #~ msgstr "Сортировка" #~ msgid "Contact map location" #~ msgstr "Положение контакта на карте" osmo-0.2.14/po/README000664 001750 001750 00000000335 12561325524 014031 0ustar00pasppasp000000 000000 Please perform following steps to update translation: 1. Type 'make update-po' 2. Edit your .po file, fill empty and adjust fuzzy strings to be correct 3. Send updated .po file to osmo-pim-friends@lists.sourceforge.net osmo-0.2.14/po/nl.po000664 001750 001750 00000111757 12561325524 014135 0ustar00pasppasp000000 000000 # Dutch translation of Osmo. # This file is distributed under the same license as the Osmo package. # Tiger!P , 2010. # fonske777 , 2012 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-06 09:53+0000\n" "Last-Translator: fonske777 \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" msgid "About" msgstr "Over" msgid "Close" msgstr "Sluiten" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "schakel naar vorige tab" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "schakel naar volgende tab" msgid "switch to selected page" msgstr "schakel naar geselecteerde pagina" msgid "show options window" msgstr "laat optievenster zien" msgid "show about window" msgstr "laat het 'over'-venster zien" msgid "toggle fullscreen mode" msgstr "Schermvullende modus omschakelen" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "schakel pagina in opties en 'over'-tabblad" msgid "exit" msgstr "sluit af" msgid "Space" msgstr "Spatiebalk" msgid "select current date" msgstr "selecteer huidige datum" msgid "Ctrl+Space" msgstr "Ctrl+spatiebalk" msgid "toggle personal data visibility" msgstr "zichtbaarheid persoonlijke gegevens omschakelen" msgid "Arrows" msgstr "Pijltjestoetsen" msgid "change day" msgstr "verander dag" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "blader door de inhoud van het daginformatiepaneel" msgid "change month" msgstr "verander maand" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "verander jaar" msgid "toggle calendars for the previous and next month" msgstr "schakel kalenders voor de vorige en volgende maand" msgid "day notes browser" msgstr "dagnotities-bladeraar" msgid "assign background color to day note" msgstr "ken achtergrondkleur toe aan dagnotitie" msgid "date calculator" msgstr "datum-rekenmachine" msgid "show full-year calendar" msgstr "laat volledig-jaar-kalender zien" msgid "jump to date" msgstr "Spring naar datum" msgid "Delete" msgstr "Verwijderen" msgid "remove day note" msgstr "verwijder dagnotitie" msgid "Alt+Arrows" msgstr "Alt+pijltjestoetsen" msgid "Esc" msgstr "Escape" msgid "close editor" msgstr "sluit bewerker" msgid "toggle bold" msgstr "schakel vet" msgid "toggle italic" msgstr "schakel schuingedrukt" msgid "toggle underline" msgstr "schakel onderstreept" msgid "toggle strikethrough" msgstr "schakel doorgestreept" msgid "toggle highlight" msgstr "schakel accentueren" msgid "Arrows Up/Down" msgstr "Pijl omhoog/naar beneden" msgid "toggle alternative view" msgstr "schakel alternatieve weergave" msgid "year info" msgstr "jaarinformatie" msgid "set current year" msgstr "stel huidig jaar in" msgid "close full-year calendar" msgstr "sluit volledig-jaar-kalender" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "taak toevoegen" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "taak bewerken" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "taak verwijderen" msgid "toggle hidden tasks" msgstr "schakel verborgen taken" msgid "activate search field" msgstr "activeer zoekveld" msgid "Left, Right" msgstr "Links, Rechts" msgid "change category filter" msgstr "verander categoriefilter" msgid "close task info panel" msgstr "sluit taakinformatiepaneel" msgid "Insert" msgstr "Invoegen" msgid "add contact" msgstr "contactpersoon toevoegen" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "contactpersoon bewerken" msgid "remove contact" msgstr "contactpersoon verwijderen" msgid "change search mode" msgstr "verander zoekmodus" msgid "close contact details panel" msgstr "sluit paneel voor contactpersoondetails" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "notitie openen" msgid "add note" msgstr "notitie toevoegen" msgid "remove note" msgstr "notitie verwijderen" msgid "edit note name and category" msgstr "bewerk notitienaam en -categorie" msgid "close note editor" msgstr "sluit notitiebewerker" msgid "save note" msgstr "notitie opslaan" msgid "find text" msgstr "zoek tekst" msgid "clear selection attributes" msgstr "selectie-attributen wissen" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO is ontworpen met het oog op gebruiksgemak, dus er zijn veel " "sneltoetsen. Hier is de volledige lijst:" msgid "General" msgstr "Algemeen" msgid "Calendar" msgstr "Kalender" msgid "Note editor" msgstr "Notitiebewerker" msgid "Full-year calendar" msgstr "Volledig-jaar-kalender" msgid "Tasks" msgstr "Taken" msgid "Contacts" msgstr "Contactpersonen" msgid "Notes" msgstr "Notities" msgid "Selector" msgstr "Kiezer" msgid "Editor" msgstr "Bewerker" msgid "A handy personal organizer" msgstr "Een handige persoonlijke agenda" msgid "compiled on" msgstr "gecompileerd op" msgid "Programming" msgstr "Programmeren" msgid "Graphics" msgstr "Plaatjes" msgid "Contributors" msgstr "Medewerkers" msgid "Translators" msgstr "Vertalers" msgid "Mailing lists" msgstr "E-mail-lijsten" msgid "Bug tracker" msgstr "Foutopspoorder" msgid "Feature requests" msgstr "Functieverzoeken" msgid "Available modules" msgstr "Beschikbare modules" msgid "Compiled-in features" msgstr "Meegecompileerde functies" msgid "iCalendar support" msgstr "iCalendar-ondersteuning" msgid "Encrypted notes support" msgstr "Ondersteuning voor versleutelde notities" msgid "Backup support" msgstr "Ondersteuning voor reservekopieën" msgid "Printing support" msgstr "Printerondersteuning" msgid "Spell checker support" msgstr "Ondersteuning voor spellingcontrole" msgid "version" msgstr "versie" msgid "SVN revision" msgstr "SVN-revisie" msgid "Key shortcuts" msgstr "Sneltoetsen" msgid "License" msgstr "Licentie" msgid "Save backup" msgstr "Reservekopie opslaan" msgid "Password protection" msgstr "Wachtwoordbeveiliging" msgid "Enter password" msgstr "Vul wachtwoord in" msgid "Re-enter password" msgstr "Vul wachtwoord nogmaals in" msgid "Please enter the password" msgstr "Vul alstublieft het wachtwoord in" msgid "Passwords do not match!" msgstr "Wachtwoorden komen niet overeen." msgid "Cannot create backup!" msgstr "Kan reservekopie niet maken." msgid "Backup file saved successfully!" msgstr "Reservekopiebestand succesvol opgeslagen." msgid "Open backup file" msgstr "Open reservekopiebestand" msgid "Osmo backup files (*.bck)" msgstr "Osmo reservekopiebestanden (*.bck)" msgid "This is not Osmo backup file" msgstr "Dit is geen Osmo reservekopiebestand" msgid "Incorrect password!" msgstr "Verkeerd wachtwoord." msgid "All your data will be replaced with backup file content." msgstr "" "Al uw gegevens zullen worden vervangen door de inhoud van het " "reservekopiebestand." msgid "Are you sure?" msgstr "Weet u het zeker?" msgid "Osmo has to be restarted now..." msgstr "Osmo moet nu opnieuw opgestart worden..." msgid "was born" msgstr "werd geboren" msgid "year old" msgid_plural "years old" msgstr[0] "jaar oud" msgstr[1] "jaren oud" msgid "Current time" msgstr "Huidige tijd" msgid "Day number" msgstr "Dagnummer" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dag tot einde van jaar" msgstr[1] "dagen tot einde van jaar" msgid "the last day of the year" msgstr "de laatste dag van het jaar" msgid "Today distance" msgstr "Afstand tot vandaag" msgid "Week number" msgstr "Weeknummer" msgid "Marked days" msgstr "Gemarkeerde dagen" msgid "Weekend days" msgstr "Weekeindedagen" msgid "Moon phase" msgstr "Schijngestalte van maan" msgid "Zodiac sign" msgstr "Dierenriemteken" msgid "Day notes" msgstr "Dagnotities" msgid "Day tasks" msgstr "Dagtaken" msgid "Birthday" msgstr "Verjaardag" msgid "Day category" msgstr "Dagcategorie" msgid "Selected day note will be removed." msgstr "Geselecteerde dagnotitie zal worden verwijderd." msgid "Continue?" msgstr "Doorgaan?" msgid "Previous year" msgstr "Vorig jaar" msgid "Previous month" msgstr "Vorige maand" msgid "Previous day" msgstr "Vorige dag" msgid "Today" msgstr "Vandaag" msgid "Next day" msgstr "Volgende dag" msgid "Next month" msgstr "Volgende maand" msgid "Next year" msgstr "Volgend jaar" msgid "Jump to date" msgstr "Spring naar datum" msgid "Print calendar" msgstr "Druk kalender af" msgid "Date calculator" msgstr "Datumrekenmachine" msgid "Backup data" msgstr "" msgid "Restore data" msgstr "" msgid "Preferences" msgstr "Voorkeuren" msgid "Quit" msgstr "Afsluiten" msgid "Toggle day note panel" msgstr "Schakel dagnotitiepaneel" msgid "Add task" msgstr "Voeg taak toe" msgid "Select day color" msgstr "Selecteer dagkleur" msgid "Browse notes" msgstr "Blader door notities" msgid "Browse iCal events" msgstr "Blader door iCal-gebeurtenissen" msgid "Export to iCal file" msgstr "Exporteer naar iCal-bestand" msgid "Previous and next month" msgstr "Vorige en volgende maand" msgid "Close note panel" msgstr "Sluit notitiepaneel" msgid "Highlight" msgstr "Accentueren" msgid "Strikethrough" msgstr "Doorgestreept" msgid "Underline" msgstr "Onderstreept" msgid "Italic" msgstr "Schuingedrukt" msgid "Bold" msgstr "Vet" msgid "Insert timeline" msgstr "Voeg tijdlijn in" msgid "Clear text" msgstr "Tekst wissen" msgid "Info" msgstr "Informatie" msgid "Select color" msgstr "Selecteer kleur" msgid "None" msgstr "Geen" msgid "Cancel" msgstr "Annuleren" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "jaar" msgstr[1] "jaren" msgid "month" msgid_plural "months" msgstr[0] "maand" msgstr[1] "maanden" msgid "day" msgid_plural "days" msgstr[0] "dag" msgstr[1] "dagen" msgid "hour" msgid_plural "hours" msgstr[0] "uur" msgstr[1] "uren" msgid "minute" msgid_plural "minutes" msgstr[0] "minuut" msgstr[1] "minuten" msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "seconden" msgid "or" msgstr "of" msgid "rounded down" msgstr "naar beneden afgerond" msgid "week" msgid_plural "weeks" msgstr[0] "week" msgstr[1] "weken" msgid "working day" msgid_plural "working days" msgstr[0] "werkdag" msgstr[1] "werkdagen" msgid "time is ignored" msgstr "tijd wordt genegeerd" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "weekeindedag" msgstr[1] "weekeindedagen" msgid "This calculator only supports dates after year 1." msgstr "Deze rekenmachine ondersteunt alleen data na jaar 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "weekeindedag genegeerd" msgstr[1] "weekeindedagen genegeerd" msgid "Year" msgstr "Jaar" msgid "Month" msgstr "Maand" msgid "Day" msgstr "Dag" msgid "Current date" msgstr "Huidige datum" msgid "Set current date" msgstr "Stel huidige datum in" msgid "Hour" msgstr "Uur" msgid "Minute" msgstr "Minuut" msgid "Second" msgstr "Seconde" msgid "Set current time" msgstr "Stel huidige tijd in" msgid "Reset time" msgstr "Zet tijd terug op de standaardwaarde" msgid "First date and time" msgstr "Eerste datum en tijd" msgid "Second date and time" msgstr "Tweede datum en tijd" msgid "Alternative time units" msgstr "Alternatieve tijdeenheden" msgid "Result" msgstr "Resultaat" msgid "Duration between two dates" msgstr "Tijdsduur tussen twee data" msgid "Operation" msgstr "Bewerking" msgid "add" msgstr "optellen" msgid "subtract" msgstr "aftrekken" msgid "Date and time to add or subtract from" msgstr "Datum en tijd om vanaf op te tellen of af te trekken" msgid "Years" msgstr "Jaren" msgid "Months" msgstr "Maanden" msgid "Days" msgstr "Dagen" msgid "Weeks" msgstr "Weken" msgid "Hours" msgstr "Uren" msgid "Minutes" msgstr "Minuten" msgid "Seconds" msgstr "Seconden" msgid "Ignore weekend days" msgstr "Negeer weekeindedagen" msgid "Reset fields" msgstr "Zet velden terug op standaardwaarden" msgid "Time to add or subtract" msgstr "Tijd om op te tellen of af te trekken" msgid "Jump to" msgstr "Spring naar" msgid "Add to or subtract from a date" msgstr "Optellen bij of aftrekken van een datum" msgid "Leap year" msgstr "Schrikkeljaar" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nee" msgid "Chinese year animal" msgstr "Chinese dierenriem" msgid "Number of days" msgstr "Aantal dagen" msgid "Number of weeks" msgstr "Aantal weken" msgid "Number of weekend days" msgstr "Aantal weekeindedagen" msgid "Year info" msgstr "Jaarinformatie" msgid "Current year" msgstr "Huidig jaar" msgid "Alternative view" msgstr "Alternatieve weergave" msgid "event" msgid_plural "events" msgstr[0] "gebeurtenis" msgstr[1] "gebeurtenissen" msgid "No valid calendars defined" msgstr "Geen geldige kalenders gedefinieerd" msgid "iCalendar events" msgstr "iCalender-gebeurtenissen" msgid "Date" msgstr "Datum" msgid "Time" msgstr "Tijd" msgid "Summary" msgstr "Samenvatting" msgid "Select output file" msgstr "Selecteer uitvoerbestand" msgid "The list will be cleared and all entries will be lost." msgstr "" "De lijst zal worden leeggemaakt en alle ingevulde elementen zullen verloren " "gaan." msgid "Done!" msgstr "Klaar!" msgid "event exported" msgid_plural "events exported" msgstr[0] "gebeurtenis geëxporteerd" msgstr[1] "gebeurtenissen geëxporteerd" msgid "iCalendar export" msgstr "iCalendar-uitvoer" msgid "Day Selector" msgstr "Dagkiezer" msgid "Use date period" msgstr "Gebruik datumperiode" msgid "Add" msgstr "Toevoegen" msgid "Clear" msgstr "Wissen" msgid "Remove" msgstr "Verwijderen" msgid "Output filename" msgstr "Naam van uitvoerbestand" msgid "Browse" msgstr "Bladeren" msgid "Export" msgstr "Uitvoeren" msgid "no entries" msgstr "Geen ingevulde elementen" msgid "entry" msgid_plural "entries" msgstr[0] "ingevuld element" msgstr[1] "ingevulde elementen" msgid "Calendar notes" msgstr "Kalendernotities" msgid "Search" msgstr "Zoeken" msgid "Filter" msgstr "Filter" msgid "Current month" msgstr "Huidige maand" msgid "Selected month" msgstr "Geselecteerde maand" msgid "Selected year" msgstr "Geselecteerd jaar" msgid "Selected month and year" msgstr "Geselecteerde maand en jaar" msgid "All notes" msgstr "Alle notities" msgid "Case sensitive" msgstr "Hoofdlettergevoelig" msgid "Strikethrough past day notes" msgstr "Doorhalen van verlopen dagnotities" msgid "Note" msgstr "Notitie" msgid "Syntax" msgstr "Syntaxis" msgid "abbreviated weekday name" msgstr "afgekorte naam van weekdag" msgid "full weekday name" msgstr "volledige naam van weekdag" msgid "abbreviated month name" msgstr "afgekorte naam van maand" msgid "full month name" msgstr "volledige naam van maand" msgid "day of the month" msgstr "dag van de maand" msgid "MM/DD/YY" msgstr "MM/DD/JJ" msgid "day of the month without leading zeros" msgstr "dag van de maand zonder voorloopnullen" msgid "year without century" msgstr "jaar zonder eeuw" msgid "year with century" msgstr "jaar met eeuw" msgid "Date header format" msgstr "Opmaak van datumkop" msgid "Set default format" msgstr "Stel standaardopmaak in" msgid "Date format syntax" msgstr "Syntaxis van datumopmaak" msgid "Day note marker" msgstr "Dagnotitiemarkeerder" msgid "Event marker" msgstr "Gebeurtenismarkeerder" msgid "Circle" msgstr "Cirkel" msgid "Ellipse" msgstr "Ellips" msgid "Wave" msgstr "Golf" msgid "Current day marker" msgstr "Huidige-dag-markeerder" msgid "Arrow" msgstr "Pijl" msgid "Free-hand circle" msgstr "Vrije-hand-cirkel" msgid "Colors" msgstr "Kleuren" msgid "Header color" msgstr "Kopkleur" msgid "Weekend days color" msgstr "Kleur van weekeindedagen" msgid "Cursor color" msgstr "Cursorkleur" msgid "Event marker color" msgstr "Kleur van gebeurtenismarkeerder" msgid "Current day marker color" msgstr "Kleur van huidige-dag-markeerder" msgid "Birthday marker color" msgstr "Kleur van verjaardagmarkeerder" msgid "Date font" msgstr "Datumlettertype" msgid "Calendar font" msgstr "Kalenderlettertype" msgid "Note font" msgstr "Notitielettertype" msgid "Enable block cursor" msgstr "Zet blokcursor aan" msgid "Cursor thickness" msgstr "Cursordikte" msgid "Thin" msgstr "Dun" msgid "Thick" msgstr "Dik" msgid "Edit category" msgstr "Bewerk categorie" msgid "Color" msgstr "Kleur" msgid "Name" msgstr "Naam" msgid "Select ICS file" msgstr "Selecteer ICS-bestand" msgid "All Files" msgstr "Alle bestanden" msgid "Calendar files (*.ics)" msgstr "Kalenderbestanden (*.ics)" msgid "Modify ICAL parameters" msgstr "Wijzig ICAL-parameters" msgid "Filename" msgstr "Bestandnaam" msgid "Options" msgstr "Opties" msgid "Disabled" msgstr "Uitgeschakeld" msgid "Valid" msgstr "Geldig" msgid "Description" msgstr "Beschrijving" msgid "Full date" msgstr "Volledige datum" msgid "Mark" msgstr "Markeer" msgid "Week start on Monday" msgstr "Week begint op maandag" msgid "Show day names" msgstr "Laat dagnamen zien" msgid "No month change" msgstr "Geen maandverandering" msgid "Show week numbers" msgstr "Laat weeknummers zien" msgid "Simple view in full-year calendar" msgstr "Eenvoudige weergave in volledig-jaar-kalender" msgid "Enable auxilary calendars" msgstr "Zet hulpkalenders aan" msgid "Ascending sorting in day notes browser" msgstr "Oplopend sorteren in de dagnotiebladeraar" msgid "Enable spell checker in day notes" msgstr "Zet spellingcontrole in dagnotities aan" msgid "Show seconds" msgstr "Seconden tonen" msgid "Appearance" msgstr "Uiterlijk" msgid "Day categories" msgstr "Dagcategorieën" msgid "iCalendar files" msgstr "iCalendar-bestanden" msgid "Show in day info panel" msgstr "Laat zien in het daginformatiepaneel" msgid "Name day" msgstr "Naamdag" msgid "Error printing" msgstr "Afdrukprobleem" msgid "Printing properties" msgstr "Printereigenschappen" msgid "Month name" msgstr "Maandnaam" msgid "Day name" msgstr "Dagnaam" msgid "Events" msgstr "Gebeurtenissen" msgid "Fonts" msgstr "Lettertypen" msgid "Birthdays" msgstr "Verjaardagen" msgid "Namedays" msgstr "Naamdagen" msgid "Visible events" msgstr "Zichtbare gebeurtenissen" msgid "Padding" msgstr "Opvulling" msgid "Event maximum length" msgstr "Maximale gebeurtenislengte" msgid "Page orientation:" msgstr "Paginarichting:" msgid "Portrait" msgstr "Staand" msgid "Landscape" msgstr "Liggend" msgid "Timeline" msgstr "Tijdlijn" msgid "From (hour)" msgstr "Van (uur)" msgid "Step (minutes)" msgstr "Stap (minuten)" msgid "To (hour)" msgstr "Naar (uur)" msgid "No date" msgstr "Geen datum" msgid "Rat" msgstr "Rat" msgid "Ox" msgstr "Os" msgid "Tiger" msgstr "Tijger" msgid "Hare" msgstr "Haas" msgid "Dragon" msgstr "Draak" msgid "Snake" msgstr "Slang" msgid "Horse" msgstr "Paard" msgid "Sheep" msgstr "Schaap" msgid "Monkey" msgstr "Aap" msgid "Fowl" msgstr "Haan" msgid "Dog" msgstr "Hond" msgid "Pig" msgstr "Varken" msgid "Unknown" msgstr "Onbekend" msgid "Aquarius" msgstr "Waterman" msgid "Pisces" msgstr "Vissen" msgid "Aries" msgstr "Ram" msgid "Taurus" msgstr "Stier" msgid "Gemini" msgstr "Tweelingen" msgid "Cancer" msgstr "Kreeft" msgid "Leo" msgstr "Leeuw" msgid "Virgo" msgstr "Maagd" msgid "Libra" msgstr "Weegschaal" msgid "Scorpio" msgstr "Schorpioen" msgid "Sagittarius" msgstr "Boogschutter" msgid "Capricorn" msgstr "Steenbok" msgid "Cannot perform selected operation." msgstr "Kan geselecteerde actie niet uitvoeren." msgid "Task has been modified or removed." msgstr "Taak is aangepast of verwijderd." msgid "Remind me later" msgstr "Herinner me er later aan" msgid "Done" msgstr "Gedaan" msgid "postponed" msgstr "uitgesteld" msgid "Show task" msgstr "Laat taak zien" msgid "Alarm warning!" msgstr "Alarmwaarschuwing!" msgid "Day note" msgstr "Dagnotitie" msgid "Type" msgstr "Type" msgid "Event" msgstr "Gebeurtenis" msgid "Task" msgstr "Taak" msgid "Show Osmo" msgstr "Laat Osmo zien" msgid "No birthdays defined" msgstr "Geen verjaardagen gedefinieerd" msgid "Birthdays list" msgstr "Verjaardagenlijst" msgid "Days to birthday" msgstr "Dagen tot verjaardag" msgid "Age" msgstr "Leeftijd" msgid "Birthday date" msgstr "Verjaardagdatum" msgid "today" msgstr "vandaag" msgid "Please select address" msgstr "Selecteer a.u.b. een adres" msgid "Information" msgstr "Informatie" msgid "Work" msgstr "Werk" msgid "Home" msgstr "Thuis" msgid "Group" msgstr "Groep" msgid "First name" msgstr "Voornaam" msgid "Last name" msgstr "Achternaam" msgid "Second name" msgstr "Tweede naam" msgid "Nickname" msgstr "Bijnaam" msgid "Tags" msgstr "Etiketten" msgid "Name day date" msgstr "Naamdagdatum" msgid "Home address" msgstr "Woonadres" msgid "Home postcode" msgstr "Postcode woonadres" msgid "Home city" msgstr "Woonplaats" msgid "Home state" msgstr "Woonprovincie" msgid "Home country" msgstr "Woonland" msgid "Organization" msgstr "Organisatie" msgid "Department" msgstr "Afdeling" msgid "Work address" msgstr "Werkadres" msgid "Work postcode" msgstr "Postcode werkadres" msgid "Work city" msgstr "Plaats werk" msgid "Work state" msgstr "Werkprovincie" msgid "Work country" msgstr "Werkland" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefoon thuis" msgid "Home phone 2" msgstr "Thuistelefoon 2" msgid "Home phone 3" msgstr "Thuistelefoon 3" msgid "Home phone 4" msgstr "Thuistelefoon 4" msgid "Work phone" msgstr "Telefoon werk" msgid "Work phone 2" msgstr "Werktelefoon 2" msgid "Work phone 3" msgstr "Werktelefoon 3" msgid "Work phone 4" msgstr "Werktelefoon 4" msgid "Cell phone" msgstr "Mobiele telefoon" msgid "Cell phone 2" msgstr "Mobiele telefoon 2" msgid "Cell phone 3" msgstr "Mobiele telefoon 3" msgid "Cell phone 4" msgstr "Mobiele telefoon 4" msgid "E-Mail" msgstr "E-mail" msgid "E-Mail 2" msgstr "E-mail 2" msgid "E-Mail 3" msgstr "E-mail 3" msgid "E-Mail 4" msgstr "E-mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Foto" msgid "Additional info" msgstr "Extra informatie" msgid "New contact" msgstr "Nieuwe contactpersoon" msgid "Remove contact" msgstr "Verwijder contactpersoon" msgid "Edit contact" msgstr "Bewerk contactpersoon" msgid "Show birthdays" msgstr "Laat verjaardagen zien" msgid "Show contact location on the map" msgstr "Laat de locatie van de contactpersoon op de kaart zien" msgid "Import contacts" msgstr "Importeer contactpersonen" msgid "Export contacts" msgstr "Exporteer contactpersonen" msgid "First Name" msgstr "Voornaam" msgid "Last Name" msgstr "Achternaam" msgid "All fields" msgstr "Alle velden" msgid "Contact details" msgstr "Contactpersoondetails" msgid "Close contact panel" msgstr "Sluit contactpersoonpaneel" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contactpersoon geëxporteerd" msgstr[1] "contactpersonen geëxporteerd" msgid "Cannot create file." msgstr "Kan bestand niet maken." msgid "Output format" msgstr "Uitvoer-opmaak" msgid "Add header" msgstr "Voeg kop toe" msgid "Fields to export" msgstr "Velden om te exporteren" msgid "All" msgstr "Alle" msgid "Invert" msgstr "Omdraaien" msgid "Select fields" msgstr "Selecteer velden" msgid "Select CSV file" msgstr "Selecteer CSV-bestand" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (kommagescheiden waarden)-bestanden (*.csv)" msgid "Please select file first." msgstr "Selecteer eerst een bestand a.u.b." msgid "Import type" msgstr "Invoertype" msgid "File" msgstr "Bestand" msgid "Input filename" msgstr "Invoer bestandnaam" msgid "Import" msgstr "Invoer" msgid "Nothing to import." msgstr "Niets om in te voeren." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contactpersoon toegevoegd" msgstr[1] "contactpersonen toegevoegd" msgid "of" msgstr "van" msgid "Record" msgstr "Dossier" msgid "Number fields per record" msgstr "Aantal velden per dossier" msgid "Use first record as header" msgstr "Gebruik het eerste dossierveld als kop" msgid "Field type" msgstr "Veldtype" msgid "Value" msgstr "Waarde" msgid "No records found in selected file." msgstr "Geen dossiers gevonden in het geselecteerde bestand." msgid "Cannot read file." msgstr "Kan het bestand niet lezen." msgid "Cannot open file." msgstr "Kan het bestand niet openen." msgid "Selected contact will be removed." msgstr "Geselecteerde contactpersoon zal worden verwijderd." msgid "Select photo" msgstr "Selecteer foto" msgid "Address" msgstr "Adres" msgid "Postcode" msgstr "Postcode" msgid "City" msgstr "Plaats" msgid "State" msgstr "Provincie" msgid "Country" msgstr "Land" msgid "Add contact" msgstr "Contactpersoon toevoegen" msgid "Personal" msgstr "Persoonlijk" msgid "Phones" msgstr "Telefoons" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Kleur van contactpersoonmarkeringen" msgid "Color of links" msgstr "Kleur van koppelingen" msgid "Font size" msgstr "Grootte van lettertype" msgid "Name font size" msgstr "Grootte van naamlettertype" msgid "Item font size" msgstr "Grootte van elementlettertype" msgid "Photo size" msgstr "Fotogrootte" msgid "Small" msgstr "Klein" msgid "Medium" msgstr "Gemiddeld" msgid "Large" msgstr "Groot" msgid "Hide group column" msgstr "Verberg groepkolom" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Overig" msgid "Groups" msgstr "Groepen" msgid "Visible columns in birthday browser" msgstr "Zichtbare kolommen in verjaardagenbladeraar" msgid "Show calendar" msgstr "Laat kalender zien" msgid "Show tasks" msgstr "Laat taken zien" msgid "Show contacts" msgstr "Laat contactpersonen zien" msgid "Show notes" msgstr "Laat notities zien" msgid "Show options" msgstr "Laat opties zien" msgid "Show small calendar window" msgstr "Laat klein kalendervenster zien" msgid "Check for events since last run" msgstr "Controleer op gebeurtenissen sinds de laatste keer" msgid "Number of days to check forward for events (default: 0)" msgstr "Aantal dagen voorwaarts controleren op gebeurtenissen (standaard: 0)" msgid "Set absolute path for settings and data files" msgstr "Zet absoluut pad voor instellingen en gegevensbestanden" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "Een handige persoonlijke agenda" msgid "ERROR: Cannot create config files" msgstr "Fout: Kan configuratiebestanden niet maken" msgid "Another copy of OSMO is already running." msgstr "OSMO draait al." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Meervoudig draaien van OSMO kan een oorzaak zijn van gegevensverlies." msgid "Do you really want to continue?" msgstr "Weet u zeker dat u door wilt gaan?" msgid "Warning" msgstr "Waarschuwing" msgid "The note has changed." msgstr "De notitie is veranderd." msgid "Do you want to save it?" msgstr "Wilt u hem opslaan?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Geen dossiers gevonden in het geselecteerde bestand." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Weet u zeker dat u door wilt gaan?" msgid "Question" msgstr "Vraag" msgid "Words" msgstr "Woorden" msgid "Lines" msgstr "Regels" msgid "Characters" msgstr "Tekens" msgid "White characters" msgstr "Witte tekens" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Document" msgid "Selection" msgstr "Selectie" msgid "Created" msgstr "Gemaakt" msgid "Modified" msgstr "Gewijzigd" msgid "New note" msgstr "Nieuwe notitie" msgid "Add note" msgstr "Notitie toevoegen" msgid "Edit note" msgstr "Bewerk notitie" msgid "Delete note" msgstr "Verwijder notitie" msgid "Remove note" msgstr "Verwijder notitie" msgid "Find" msgstr "Zoek" msgid "Clear attributes" msgstr "Eigenschappen wissen" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Notitie opslaan" msgid "Insert current date and time" msgstr "Voeg huidige datum en tijd in" msgid "Insert separator" msgstr "Voeg scheiding in" msgid "Statistics" msgstr "Statistieken" msgid "Close editor" msgstr "Sluit bewerker" msgid "Toggle spell checker" msgstr "Schakel spellingcontrole om" msgid "Category" msgstr "Categorie" msgid "Note name" msgstr "Notitienaam" msgid "Last changes" msgstr "Laatste wijzigingen" msgid "Read-only" msgstr "Alleen-lezen" msgid "Line" msgstr "Regel" msgid "Column" msgstr "Kolom" msgid "case sensitive" msgstr "hoofdlettergevoelig" msgid "Close find entry" msgstr "Sluit zoek element" msgid "Edit entry" msgstr "Bewerk element" msgid "Remember cursor position" msgstr "Onthoud cursorpositie" msgid "Selected note will be removed." msgstr "Geselecteerde notitie zal worden verwijderd." msgid "No further data recovery will be possible." msgstr "Meer gegevensherstel zal niet mogelijk zijn." msgid "Plain" msgstr "Eenvoudig" msgid "Encrypted" msgstr "Versleuteld" msgid "Note type" msgstr "Notitietype" msgid "Cannot open the note." msgstr "Kan de notitie niet openen." msgid "encryption support is disabled" msgstr "ondersteuning voor versleuteling staat uit" msgid "Authorization" msgstr "Machtiging" msgid "Algorithm" msgstr "Algoritme" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Compressie" msgid "Ratio" msgstr "Verhouding" msgid "Fast" msgstr "Snel" msgid "Good" msgstr "Goed" msgid "Best" msgstr "Beste" msgid "Remember the last selected category" msgstr "Onthoud de laatst geselecteerde categorie" msgid "Use system format for date and time" msgstr "Gebruik systeemopmaak voor datum en tijd" msgid "Encryption" msgstr "Versleuteling" msgid "Visible columns" msgstr "Zichtbare kolommen" msgid "Categories" msgstr "Categorieën" msgid "Notes options" msgstr "Notitie-opties" msgid "Osmo has to be restarted to take effect." msgstr "Osmo moet nu opnieuw opgestart worden om veranderingen door te voeren." msgid "Layout" msgstr "Vormgeving" msgid "Vertical" msgstr "Verticaal" msgid "Horizontal" msgstr "Horizontaal" msgid "Tabs position" msgstr "Tabspositie" msgid "Left" msgstr "Links" msgid "Right" msgstr "Rechts" msgid "Top" msgstr "Boven" msgid "Bottom" msgstr "Onder" msgid "Use default stock icons" msgstr "Gebruik standaardpictogrammen" msgid "Disable underline in links" msgstr "Zet onderstrepen in koppelingen uit" msgid "Draw rows in alternating colors" msgstr "Geef rijen verschillende kleuren" msgid "Show exit button in toolbar" msgstr "Toon afsluitknop in werkbalk" msgid "At least one module must be visible." msgstr "Minimaal één module moet zichtbaar zijn." msgid "Override locale settings" msgstr "Negeer lokalisatie-instellingen" msgid "Date format" msgstr "Datumopmaak" msgid "DD-MM-YYYY" msgstr "DD-MM-JJJJ" msgid "MM-DD-YYYY" msgstr "MM-DD-JJJJ" msgid "YYYY-MM-DD" msgstr "JJJJ-MM-DD" msgid "YYYY-DD-MM" msgstr "JJJJ-DD-MM" msgid "Time format" msgstr "Tijdopmaak" msgid "hours" msgstr "uren" msgid "Spell checker language" msgstr "Taal voor spellingcontrole" msgid "Enable tooltips" msgstr "Zet gereedschaptips aan" msgid "Remember last selected page" msgstr "Onthoud laatst geselecteerde pagina" msgid "Save data after every modification" msgstr "Sla gegevens op na elke wijziging" msgid "Web browser" msgstr "Webbladeraar" msgid "E-mail client" msgstr "E-mailprogramma" msgid "Sound player" msgstr "Geluidspeler" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Het tekenpatroon %s zal worden vervangen door het webadres" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Het tekenpatroon %s zal worden vervangen door het e-mailadres" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "" "Het tekenpatroon %s zal worden vervangen door de naam van het geluidbestand" msgid "Enable system tray" msgstr "Gebruik systeemvak" msgid "Start minimised" msgstr "Start geminimalizeerd" msgid "Blink on events" msgstr "Knipper bij gebeurtenissen" msgid "Ignore day note events" msgstr "Negeer dagnotitiegebeurtenissen" msgid "Hide" msgstr "Verbergen" msgid "Helpers" msgstr "Helpers" msgid "System tray" msgstr "Systeemvak" msgid "Edit" msgstr "Wijzigen" msgid "Go Down" msgstr "Ga naar beneden" msgid "Select date" msgstr "Selecteer datum" msgid "Select font" msgstr "Selecteer lettertype" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Rekenmachine" msgid "Edit day note" msgstr "Bewerk dagnotitie" msgid "Save" msgstr "Opslaan" msgid "Display full-year calendar" msgstr "Laat volledig-jaar-kalender zien" msgid "Help" msgstr "Hulp" msgid "Invalid item" msgstr "Ongeldig element" msgid "Valid item" msgstr "Geldig element" msgid "Edit task" msgstr "Bewerk taak" msgid "Remove task" msgstr "Verwijder taak" msgid "Import tasks" msgstr "Importeer taken" msgid "Export tasks" msgstr "Exporteer taken" msgid "Change to previous date" msgstr "Verander naar de vorige datum" msgid "Change to next date" msgstr "Verander naar de volgende datum" msgid "Print" msgstr "Afdrukken" msgid "Normal" msgstr "Normaal" msgid "Recurrent" msgstr "Herhaaldelijk" msgid "Started" msgstr "Gestart" msgid "Finished" msgstr "Klaar" msgid "All items" msgstr "Alle elementen" msgid "New task" msgstr "Nieuwe taak" msgid "Change due date to previous date" msgstr "Verander de vervaldatum naar de vorige datum" msgid "Change due date to next date" msgstr "Verander de vervaldatum naar de volgende datum" msgid "Print visible tasks list" msgstr "Druk lijst af van zichtbare taken" msgid "Due date" msgstr "Vervaldatum" msgid "Priority" msgstr "Prioriteit" msgid "Task details" msgstr "Taakdetails" msgid "Close description panel" msgstr "Sluit beschrijvingspaneel" msgid "No tasks with defined date found." msgstr "Geen taken met opgegeven datum gevonden." msgid "Save tasks" msgstr "Taken opslaan" msgid "tasks exported" msgstr "taken geëxporteerd" msgid "Please select at least one day when recurrency is enabled." msgstr "Selecteer a.u.b. minimaal één dag wanneer herhalingen aanstaan." msgid "Set time" msgstr "Stel tijd in" msgid "Tomorrow" msgstr "Morgen" msgid "Selected task will be removed." msgstr "Geselecteerde taak zal worden verwijderd." msgid "Basic" msgstr "Eenvoudig" msgid "Select date and time" msgstr "Selecteer datum en tijd" msgid "Low" msgstr "Laag" msgid "High" msgstr "Hoog" msgid "Enable sound notification" msgstr "Zet geluidmeldingen aan" #, fuzzy msgid "Enable notification dialog" msgstr "Zet geluidmeldingen aan" msgid "Advanced" msgstr "Geavanceerd" msgid "Alarm warning" msgstr "Alarmwaarschuwing" msgid "Postpone time" msgstr "Uitsteltijd" msgid "Alarm command" msgstr "Alarmopdracht" msgid "Recurrent task" msgstr "Herhaaldelijke taak" msgid "Enable" msgstr "Zet aan" msgid "Start" msgstr "Start" msgid "End" msgstr "Einde" msgid "Interval" msgstr "Interval" msgid "Time period" msgstr "Tijdperiode" msgid "Date period" msgstr "Datumperiode" msgid "Repeat" msgstr "Herhaal" msgid "Repeat in the following days" msgstr "Herhaal op de volgende dagen" msgid "Ignore alarm when task expired offline" msgstr "Negeer alarm wanneer de taak zonder internetverbinding verliep" msgid "Select a font..." msgstr "Selecteer een lettertype..." msgid "Color of items that are due today" msgstr "Kleur van dingen die vandaag verwacht worden" msgid "Color of items that are due in the next 7 days" msgstr "Kleur van dingen die de komende 7 dagen verwacht worden" msgid "Color of items that are past due" msgstr "Kleur van dingen die zijn vervallen" msgid "Task info font" msgstr "Lettertype van taakinformatie" msgid "Show in bold tasks with high priority" msgstr "Laat in vet taken met hoge prioriteit zien" msgid "Hide completed tasks" msgstr "Verberg taken die voltooid zijn" msgid "Delete completed tasks without confirmation" msgstr "Verwijder voltooide taken zonder bevestiging" msgid "Add new task when double clicked on tasks list" msgstr "" "Voeg een nieuwe taak toe wanneer er dubbel wordt geklikt op de takenlijst" msgid "minutes" msgstr "minuten" msgid "0 for disable" msgstr "0 voor uitschakelen" msgid "Repeat sound alarm" msgstr "Herhaal geluidalarm" msgid "times" msgstr "keren" msgid "Global notification command" msgstr "Globale opdracht voor melding" msgid "Tasks options" msgstr "Taakopties" msgid "Reminder options" msgstr "Herinneringsopties" msgid "Tasks list" msgstr "Takenlijst" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr." msgid "New Moon" msgstr "Nieuwe maan" msgid "Waxing Crescent Moon" msgstr "Wassende maan" msgid "Quarter Moon" msgstr "Halve maan" msgid "Waxing Gibbous Moon" msgstr "Wassende maan" msgid "Full Moon" msgstr "Volle maan" msgid "Waning Gibbous Moon" msgstr "Afnemende maan" msgid "Last Quarter Moon" msgstr "Laatste kwartier" msgid "Waning Crescent Moon" msgstr "Afnemende maan" msgid "Error" msgstr "Fout" msgid "Selected file exist! Overwrite?" msgstr "Geselecteerd bestand bestaat al. Overschrijven?" #~ msgid "Select and show first item after search" #~ msgstr "Selecteer en toon eerste element na zoeken" #~ msgid "Order" #~ msgstr "Rang" #~ msgid "Mode" #~ msgstr "Manier" #~ msgid "Ascending" #~ msgstr "Oplopend" #~ msgid "Descending" #~ msgstr "Aflopend" #~ msgid "Sorting" #~ msgstr "Sorteren" #~ msgid "Contact map location" #~ msgstr "Kaartlocatie van de contactpersoon" osmo-0.2.14/po/it.po000664 001750 001750 00000110763 12561325524 014134 0ustar00pasppasp000000 000000 # Italian translation of Osmo. # This file is distributed under the same license as the Osmo package. # bautz , 2008-2010. # spawned76 , 2012 # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-04-01 21:28+0100\n" "Last-Translator: spawned76 \n" "Language-Team: Italian\n" "Language: it\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" msgid "About" msgstr "Informazioni" msgid "Close" msgstr "Chiudi" msgid "Ctrl+PageUp" msgstr "Ctrl+PagSu" msgid "switch to previous tab" msgstr "passa alla scheda precedente" msgid "Ctrl+PageDn" msgstr "Ctrl+PagGiù" msgid "switch to next tab" msgstr "passa alla scheda successiva" msgid "switch to selected page" msgstr "passa alla pagina successiva" msgid "show options window" msgstr "mostra finestra opzioni" msgid "show about window" msgstr "mostra finestra info" msgid "toggle fullscreen mode" msgstr "Abilita modalità tutto schermo" msgid "PageUp/PageDn" msgstr "PagSu/PagGiù" msgid "switch page in options and about tab" msgstr "cambiare pagina in opzioni e informazioni" msgid "exit" msgstr "esci" msgid "Space" msgstr "Spazio" msgid "select current date" msgstr "seleziona data corrente" msgid "Ctrl+Space" msgstr "Ctrl+Spazio" msgid "toggle personal data visibility" msgstr "alterna visibilità dati personali" msgid "Arrows" msgstr "Frecce" msgid "change day" msgstr "cambia giorno" msgid "Ctrl+Up/Down" msgstr "Gtrl+Su/Giù" msgid "scroll the contents in the day info panel" msgstr "Scorri il contenuto del pannello informazioni del giorno" msgid "change month" msgstr "cambia mese" msgid "Home/End" msgstr "Inizio/Fine" msgid "change year" msgstr "cambia anno" msgid "toggle calendars for the previous and next month" msgstr "alterna calendari del mese precedente e successivo" msgid "day notes browser" msgstr "Browser note del giorno" msgid "assign background color to day note" msgstr "assegna sfondo colorato alla nota del giorno" msgid "date calculator" msgstr "Calcola-date" msgid "show full-year calendar" msgstr "mostra calendario dell'anno intero" msgid "jump to date" msgstr "salta alla data" msgid "Delete" msgstr "Cancella" msgid "remove day note" msgstr "rimuovi nota del giorno" msgid "Alt+Arrows" msgstr "Alt+Frecce" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "chiudi editor" msgid "toggle bold" msgstr "grassetto" msgid "toggle italic" msgstr "corsivo" msgid "toggle underline" msgstr "sottolineato" msgid "toggle strikethrough" msgstr "barrato" msgid "toggle highlight" msgstr "evidenziato" msgid "Arrows Up/Down" msgstr "Frecce Su/Giù" msgid "toggle alternative view" msgstr "vista alternativa" msgid "year info" msgstr "informazioni sull'anno" msgid "set current year" msgstr "imposta anno corrente" msgid "close full-year calendar" msgstr "chiudi calendario dell'anno intero" msgid "Alt+a, Insert" msgstr "Alt+a, Inserisci" msgid "add task" msgstr "aggiungi impegno" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Invio" msgid "edit task" msgstr "modifica impegno" msgid "Alt+r, Delete" msgstr "Alt+r, Cancella" msgid "remove task" msgstr "rimuovi impegno" msgid "toggle hidden tasks" msgstr "mostra/nascondi impegni nascosti" msgid "activate search field" msgstr "attiva campo di ricerca" msgid "Left, Right" msgstr "Sinistra, Destra" msgid "change category filter" msgstr "cambia filtro categoria" msgid "close task info panel" msgstr "chiudi pannello informazion impegno" msgid "Insert" msgstr "Inserisci" msgid "add contact" msgstr "aggiungi contatto" msgid "Ctrl+Enter" msgstr "Ctrl+Invio" msgid "edit contact" msgstr "modifica contatto" msgid "remove contact" msgstr "rimuovi contatto" msgid "change search mode" msgstr "cambia modalità di ricerca" msgid "close contact details panel" msgstr "chiudi pannello dettagli contatto" msgid "Enter" msgstr "Invio" msgid "open note" msgstr "apri nota" msgid "add note" msgstr "aggiungi nota" msgid "remove note" msgstr "rimuovi nota" msgid "edit note name and category" msgstr "modifica nome e categoria nota" msgid "close note editor" msgstr "chiudi editor nota" msgid "save note" msgstr "salva nota" msgid "find text" msgstr "cerca testo" msgid "clear selection attributes" msgstr "pulisci attributi selezione" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO è stato creato per essere pratico; per questo motivo ci sono molte " "scorciatoie da tastiera. Ecco la lista completa:" msgid "General" msgstr "Generale" msgid "Calendar" msgstr "Calendario" msgid "Note editor" msgstr "editor delle note" msgid "Full-year calendar" msgstr "Calendario dell'intero anno" msgid "Tasks" msgstr "Impegni" msgid "Contacts" msgstr "Contatti" msgid "Notes" msgstr "Note" msgid "Selector" msgstr "Selettore" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Un'agenda personale" msgid "compiled on" msgstr "compilato su" msgid "Programming" msgstr "Programmato" msgid "Graphics" msgstr "Grafica" msgid "Contributors" msgstr "Hanno contribuito" msgid "Translators" msgstr "Traduttori" msgid "Mailing lists" msgstr "Elenco indirizzi" msgid "Bug tracker" msgstr "Ricerca bug" msgid "Feature requests" msgstr "Richiesta funzionalità" msgid "Available modules" msgstr "Moduli disponibili" msgid "Compiled-in features" msgstr "Features compilate" msgid "iCalendar support" msgstr "Supporto iCalender" msgid "Encrypted notes support" msgstr "Supporto note crittate" msgid "Backup support" msgstr "Support obackup" msgid "Printing support" msgstr "Supporto alla stampa" msgid "Spell checker support" msgstr "Supporto controllo ortografico" msgid "version" msgstr "versione" msgid "SVN revision" msgstr "Revisione SVN" msgid "Key shortcuts" msgstr "Scorciatoie" msgid "License" msgstr "Licenza" msgid "Save backup" msgstr "Salva backup" msgid "Password protection" msgstr "Protezione password" msgid "Enter password" msgstr "Inserisci password" msgid "Re-enter password" msgstr "Reinserisci password" msgid "Please enter the password" msgstr "Inserisci password" msgid "Passwords do not match!" msgstr "Le password non coincidono!" msgid "Cannot create backup!" msgstr "Impossibile creare backup!" msgid "Backup file saved successfully!" msgstr "File di backup salvato correttamente!" msgid "Open backup file" msgstr "Apri file di backup" msgid "Osmo backup files (*.bck)" msgstr "File di backup di Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Non è un file di backup di Osmo" msgid "Incorrect password!" msgstr "Password sbagliata!" msgid "All your data will be replaced with backup file content." msgstr "" "Tutte le informazioni saranno sostituite con il contenuto del file di backup." msgid "Are you sure?" msgstr "Sei sicuro?" msgid "Osmo has to be restarted now..." msgstr "Osmo deve essere riavviato ora..." msgid "was born" msgstr "nato" msgid "year old" msgid_plural "years old" msgstr[0] "anno" msgstr[1] "anni" msgid "Current time" msgstr "Ora corrente" msgid "Day number" msgstr "Giorno dell'anno" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "giorno alla fine dell'anno" msgstr[1] "giorni alla fine dell'anno" msgid "the last day of the year" msgstr "l'ultimo dell'anno" msgid "Today distance" msgstr "Distante da oggi" msgid "Week number" msgstr "Settimana" msgid "Marked days" msgstr "Giorni con impegni" msgid "Weekend days" msgstr "Giorni del weekend" msgid "Moon phase" msgstr "Fase lunare" msgid "Zodiac sign" msgstr "Segno zodiacale" msgid "Day notes" msgstr "Note del giorno" msgid "Day tasks" msgstr "Impegni del giorno" msgid "Birthday" msgstr "Compleanno" msgid "Day category" msgstr "Categoria del giorno" msgid "Selected day note will be removed." msgstr "La nota del giorno sarà eliminata." msgid "Continue?" msgstr "Continuare?" msgid "Previous year" msgstr "Anno precedente" msgid "Previous month" msgstr "Mese precedente" msgid "Previous day" msgstr "Giorno precedente" msgid "Today" msgstr "Oggi" msgid "Next day" msgstr "Giorno seguente" msgid "Next month" msgstr "Mese seguente" msgid "Next year" msgstr "Anno seguente" msgid "Jump to date" msgstr "Salta alla data" msgid "Print calendar" msgstr "Stampa calendario" msgid "Date calculator" msgstr "Calcola-date" #, fuzzy msgid "Backup data" msgstr "Backup" #, fuzzy msgid "Restore data" msgstr "Ripristina" msgid "Preferences" msgstr "Preferenze" msgid "Quit" msgstr "Esci" msgid "Toggle day note panel" msgstr "Alterna note/informazioni" msgid "Add task" msgstr "Aggiungi impegno" msgid "Select day color" msgstr "Seleziona colore del giorno" msgid "Browse notes" msgstr "Mostra note" msgid "Browse iCal events" msgstr "Sfoglia eventi di iCal" msgid "Export to iCal file" msgstr "Esporta calendario iCal" msgid "Previous and next month" msgstr "Mese precedente e successivo" msgid "Close note panel" msgstr "Chiudi pannello note" msgid "Highlight" msgstr "Evidenziato" msgid "Strikethrough" msgstr "Barrato" msgid "Underline" msgstr "Sottolineato" msgid "Italic" msgstr "Corsivo" msgid "Bold" msgstr "Grassetto" msgid "Insert timeline" msgstr "Inserisci timeline" msgid "Clear text" msgstr "Elimina testo" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Seleziona colore" msgid "None" msgstr "Niente" msgid "Cancel" msgstr "Annulla" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "anno" msgstr[1] "anni" msgid "month" msgid_plural "months" msgstr[0] "mese" msgstr[1] "mesi" msgid "day" msgid_plural "days" msgstr[0] "giorno" msgstr[1] "giorni" msgid "hour" msgid_plural "hours" msgstr[0] "ora" msgstr[1] "ore" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minuti" msgid "second" msgid_plural "seconds" msgstr[0] "secondo" msgstr[1] "secondi" msgid "or" msgstr "o" msgid "rounded down" msgstr "arrotondato per difetto" msgid "week" msgid_plural "weeks" msgstr[0] "settimana" msgstr[1] "settimane" msgid "working day" msgid_plural "working days" msgstr[0] "Giorno lavorativo" msgstr[1] "Giorni lavorativi" msgid "time is ignored" msgstr "l'ora è ignorata" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "giorno del weekend" msgstr[1] "giorni del weekend" msgid "This calculator only supports dates after year 1." msgstr "Questa calcolatrice supporta soltanto le date successive all'anno 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "giorno del weekend ignorato" msgstr[1] "giorni del weekend ignorati" msgid "Year" msgstr "Anno" msgid "Month" msgstr "Mese" msgid "Day" msgstr "Giorno" msgid "Current date" msgstr "Data corrente" msgid "Set current date" msgstr "Imposta data corrente" msgid "Hour" msgstr "Ore" msgid "Minute" msgstr "Minuti" msgid "Second" msgstr "Secondi" msgid "Set current time" msgstr "Imposta ora corrente" msgid "Reset time" msgstr "Azzera ora" msgid "First date and time" msgstr "Prima data e ora" msgid "Second date and time" msgstr "Seconda data e ora" msgid "Alternative time units" msgstr "Unità alternative" msgid "Result" msgstr "Risultato" msgid "Duration between two dates" msgstr "Distanza tra due date" msgid "Operation" msgstr "Operazione" msgid "add" msgstr "aggiungi" msgid "subtract" msgstr "sottrai" msgid "Date and time to add or subtract from" msgstr "Aggiungere giorni e ore" msgid "Years" msgstr "Anni" msgid "Months" msgstr "Mesi" msgid "Days" msgstr "Giorni" msgid "Weeks" msgstr "Settimane" msgid "Hours" msgstr "Ore" msgid "Minutes" msgstr "Minuti" msgid "Seconds" msgstr "Secondi" msgid "Ignore weekend days" msgstr "Ignora giorni del weekend" msgid "Reset fields" msgstr "Azzera campi" msgid "Time to add or subtract" msgstr "Tempo da aggiungere o sottrarre" msgid "Jump to" msgstr "Salta a " msgid "Add to or subtract from a date" msgstr "Aggiungi o sottrai da una data" msgid "Leap year" msgstr "Anno bisestile" msgid "Yes" msgstr "Si" msgid "No" msgstr "No" msgid "Chinese year animal" msgstr "Animale dell'anno cinese" msgid "Number of days" msgstr "Numero di giorni" msgid "Number of weeks" msgstr "Numero di settimane" msgid "Number of weekend days" msgstr "Numero di giorni dei weekends" msgid "Year info" msgstr "Informazioni sull'anno" msgid "Current year" msgstr "Anno corrente" msgid "Alternative view" msgstr "Vista alternativa" msgid "event" msgid_plural "events" msgstr[0] "evento" msgstr[1] "eventi" msgid "No valid calendars defined" msgstr "Nessun calendario valido definito" msgid "iCalendar events" msgstr "Eventi di iCalendar" msgid "Date" msgstr "Data" msgid "Time" msgstr "Ora" msgid "Summary" msgstr "Riepilogo" msgid "Select output file" msgstr "Seleziona file di destinazione" msgid "The list will be cleared and all entries will be lost." msgstr "L'elenco verrà cancellato e tutte le voci andranno perdute." msgid "Done!" msgstr "Fatto!" msgid "event exported" msgid_plural "events exported" msgstr[0] "Evento esportato" msgstr[1] "Eventi esportati" msgid "iCalendar export" msgstr "Esportazione iCalendar" msgid "Day Selector" msgstr "Selettore giorno" msgid "Use date period" msgstr "Usa intervallo data" msgid "Add" msgstr "Aggiungi" msgid "Clear" msgstr "Pulisci" msgid "Remove" msgstr "Rimuovi" msgid "Output filename" msgstr "Nome file destinazione" msgid "Browse" msgstr "Browse" msgid "Export" msgstr "Esporta" msgid "no entries" msgstr "nessun valore" msgid "entry" msgid_plural "entries" msgstr[0] "valore" msgstr[1] "valori" msgid "Calendar notes" msgstr "Note calendario" msgid "Search" msgstr "Cerca" msgid "Filter" msgstr "Filtro" msgid "Current month" msgstr "Mese corrente" msgid "Selected month" msgstr "Mese selezionato" msgid "Selected year" msgstr "Anno selezionato" msgid "Selected month and year" msgstr "Mese e anno selezionati" msgid "All notes" msgstr "Tutte le note" msgid "Case sensitive" msgstr "distingui MAIUSCOLE/minuscole" msgid "Strikethrough past day notes" msgstr "Barra le note dei giorni passati" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "Sintassi" msgid "abbreviated weekday name" msgstr "giorno della settimana abbreviato" msgid "full weekday name" msgstr "giorno della settimana per esteso" msgid "abbreviated month name" msgstr "nome del mese abbreviato" msgid "full month name" msgstr "Nome mese completo" msgid "day of the month" msgstr "giorno del mese" msgid "MM/DD/YY" msgstr "MM/GG/AA" msgid "day of the month without leading zeros" msgstr "giorno del mese senza eventuali zeri davanti" msgid "year without century" msgstr "anno senza il secolo" msgid "year with century" msgstr "anno con il secolo" msgid "Date header format" msgstr "Fotmato data intestazione" msgid "Set default format" msgstr "Imposta formato predefinito" msgid "Date format syntax" msgstr "Sintassi formato data" msgid "Day note marker" msgstr "Marcatore note del giorno" msgid "Event marker" msgstr "Marcatore evento" msgid "Circle" msgstr "Cerchio" msgid "Ellipse" msgstr "Ellisse" msgid "Wave" msgstr "Onda" msgid "Current day marker" msgstr "Marcatore giorno corrente" msgid "Arrow" msgstr "Freccia" msgid "Free-hand circle" msgstr "Cerchio mano libera" msgid "Colors" msgstr "Colori" msgid "Header color" msgstr "Colore intestazione" msgid "Weekend days color" msgstr "Colore giorni weekend" msgid "Cursor color" msgstr "Colore cursore" msgid "Event marker color" msgstr "Colore mercatore evento" msgid "Current day marker color" msgstr "Colore marcatore giorno corrente" msgid "Birthday marker color" msgstr "Colore marcatore giorno compleanno" msgid "Date font" msgstr "Carattere data" msgid "Calendar font" msgstr "Carattere calendario" msgid "Note font" msgstr "Carattere nota" msgid "Enable block cursor" msgstr "Abilita blocco cursore" msgid "Cursor thickness" msgstr "Spessore cursore" msgid "Thin" msgstr "Sottile" msgid "Thick" msgstr "Spesso" msgid "Edit category" msgstr "Modifica categoria" msgid "Color" msgstr "Colore" msgid "Name" msgstr "Nome" msgid "Select ICS file" msgstr "Seleziona file ICS" msgid "All Files" msgstr "Tutti i file" msgid "Calendar files (*.ics)" msgstr "File calendario (*.ics)" msgid "Modify ICAL parameters" msgstr "Modifica parametri iCal" msgid "Filename" msgstr "Nome file" msgid "Options" msgstr "Opzioni" msgid "Disabled" msgstr "Disattivato" msgid "Valid" msgstr "Valido" msgid "Description" msgstr "Descrizione" msgid "Full date" msgstr "Data completa" msgid "Mark" msgstr "Segna" msgid "Week start on Monday" msgstr "La settimana comincia da Lunedì" msgid "Show day names" msgstr "Mostra nome del giorno" msgid "No month change" msgstr "Non cambiare mese" msgid "Show week numbers" msgstr "Mostra numero settimane" msgid "Simple view in full-year calendar" msgstr "Vista semplice nella modalità anno intero" msgid "Enable auxilary calendars" msgstr "Abilita calendari supplementari" msgid "Ascending sorting in day notes browser" msgstr "Note del giorno in ordine ascendente" msgid "Enable spell checker in day notes" msgstr "Abilita controllo ortografico nelle note giornaliere" msgid "Show seconds" msgstr "Visualizza secondi" msgid "Appearance" msgstr "Aspetto" msgid "Day categories" msgstr "Categorie del giorno" msgid "iCalendar files" msgstr "File iCalendar" msgid "Show in day info panel" msgstr "Mostra il pannello informazioni sul giorno" msgid "Name day" msgstr "Onomastico" msgid "Error printing" msgstr "Errore di stampa" msgid "Printing properties" msgstr "Proprietà di stampa" msgid "Month name" msgstr "Nome mese" msgid "Day name" msgstr "Nome giorno" msgid "Events" msgstr "Eventi" msgid "Fonts" msgstr "Carattere" msgid "Birthdays" msgstr "Compleanni" msgid "Namedays" msgstr "Onomastici" msgid "Visible events" msgstr "Eventi visibili" msgid "Padding" msgstr "Padding" msgid "Event maximum length" msgstr "Lunghezza massima evento" msgid "Page orientation:" msgstr "Orientamento pagina:" msgid "Portrait" msgstr "Verticale" msgid "Landscape" msgstr "Orizzontale" msgid "Timeline" msgstr "Timeline" msgid "From (hour)" msgstr "Dalle ore" msgid "Step (minutes)" msgstr "Intervallo (minuti)" msgid "To (hour)" msgstr "Alle ore" msgid "No date" msgstr "Nessuna data" msgid "Rat" msgstr "Ratto" msgid "Ox" msgstr "Bue" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lepre" msgid "Dragon" msgstr "Drago" msgid "Snake" msgstr "Serpente" msgid "Horse" msgstr "Cavallo" msgid "Sheep" msgstr "Pecora" msgid "Monkey" msgstr "Scimmia" msgid "Fowl" msgstr "Pollo" msgid "Dog" msgstr "Cane" msgid "Pig" msgstr "Maiale" msgid "Unknown" msgstr "Sconosciuto" msgid "Aquarius" msgstr "Acquario" msgid "Pisces" msgstr "Pesci" msgid "Aries" msgstr "Ariete" msgid "Taurus" msgstr "Toro" msgid "Gemini" msgstr "Gemelli" msgid "Cancer" msgstr "Cancro" msgid "Leo" msgstr "Leone" msgid "Virgo" msgstr "Vergine" msgid "Libra" msgstr "Bilancia" msgid "Scorpio" msgstr "Scorpione" msgid "Sagittarius" msgstr "Sagittario" msgid "Capricorn" msgstr "Capricorno" msgid "Cannot perform selected operation." msgstr "Non posso eseguire la seguente operazione." msgid "Task has been modified or removed." msgstr "L'impegno è stato modificato o rimosso." msgid "Remind me later" msgstr "Ricordamelo dopo" msgid "Done" msgstr "Fatto" msgid "postponed" msgstr "rinviato" msgid "Show task" msgstr "Mostra impegni" msgid "Alarm warning!" msgstr "Avviso allarme!" msgid "Day note" msgstr "Nota del giorno" msgid "Type" msgstr "Tipo" msgid "Event" msgstr "Evento" msgid "Task" msgstr "Impegno" msgid "Show Osmo" msgstr "Mostra Osmo" msgid "No birthdays defined" msgstr "Nessun compleanno inserito" msgid "Birthdays list" msgstr "Elenco compleanni" msgid "Days to birthday" msgstr "Giorni al compleanno" msgid "Age" msgstr "Età" msgid "Birthday date" msgstr "Data di nascita" msgid "today" msgstr "oggi" msgid "Please select address" msgstr "Seleziona indirizzo" msgid "Information" msgstr "Informazioni" msgid "Work" msgstr "Lavoro" msgid "Home" msgstr "Casa" msgid "Group" msgstr "Gruppo" msgid "First name" msgstr "Nome" msgid "Last name" msgstr "Cognome" msgid "Second name" msgstr "Secondo nome" msgid "Nickname" msgstr "Soprannome" msgid "Tags" msgstr "Etichette" msgid "Name day date" msgstr "Battesimo" msgid "Home address" msgstr "Indirizzo di casa" msgid "Home postcode" msgstr "CAP" msgid "Home city" msgstr "Città" msgid "Home state" msgstr "Stato" msgid "Home country" msgstr "Provincia" msgid "Organization" msgstr "Organizzazione" msgid "Department" msgstr "Campo di lavoro" msgid "Work address" msgstr "Indirizzo lavoro" msgid "Work postcode" msgstr "CAP lavoro" msgid "Work city" msgstr "Città in cui lavora" msgid "Work state" msgstr "Stato in cui lavora" msgid "Work country" msgstr "Provincia in cui lavora" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefono abitazione" msgid "Home phone 2" msgstr "Telefono abitazione 2" msgid "Home phone 3" msgstr "Telefono abitazione 3" msgid "Home phone 4" msgstr "Telefono abitazione 4" msgid "Work phone" msgstr "Telefono lavoro" msgid "Work phone 2" msgstr "Telefono lavoro 2" msgid "Work phone 3" msgstr "Telefono lavoro 3" msgid "Work phone 4" msgstr "Telefono lavoro 4" msgid "Cell phone" msgstr "Cellulare" msgid "Cell phone 2" msgstr "Cellulare 2" msgid "Cell phone 3" msgstr "Cellulare 3" msgid "Cell phone 4" msgstr "Cellulare 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "Sito Internet" msgid "WWW 2" msgstr "Sito Internet 2" msgid "WWW 3" msgstr "Sito Internet 3" msgid "WWW 4" msgstr "Sito Internet 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Foto" msgid "Additional info" msgstr "Informazioni aggiuntive" msgid "New contact" msgstr "Nuovo contatto" msgid "Remove contact" msgstr "Rimuovi contatto" msgid "Edit contact" msgstr "Modifica contatto" msgid "Show birthdays" msgstr "Mostra compleanni" msgid "Show contact location on the map" msgstr "Mostra posizione contatti sulla mappa" msgid "Import contacts" msgstr "Importa contatti" msgid "Export contacts" msgstr "Esporta contatti" msgid "First Name" msgstr "Nome" msgid "Last Name" msgstr "Cognome" msgid "All fields" msgstr "Tutti i campi" msgid "Contact details" msgstr "Dettagli contatto" msgid "Close contact panel" msgstr "Chiudi pannello contatto" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "Contatto esportato" msgstr[1] "Contatti esportati" msgid "Cannot create file." msgstr "Impossibile creare file." msgid "Output format" msgstr "Formato destinazione" msgid "Add header" msgstr "Aggiungi intestazione" msgid "Fields to export" msgstr "Camppi da esportare" msgid "All" msgstr "Tutto" msgid "Invert" msgstr "Inverti" msgid "Select fields" msgstr "Seleziona campi" msgid "Select CSV file" msgstr "Seleziona file CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (valori separati dalla virgola) files (*.csv)" msgid "Please select file first." msgstr "Seleziona prima il file." msgid "Import type" msgstr "Importa tipo" msgid "File" msgstr "File" msgid "Input filename" msgstr "Nome file d'origine" msgid "Import" msgstr "Importa" msgid "Nothing to import." msgstr "Niente da importare" msgid "contact added" msgid_plural "contacts added" msgstr[0] "contatto aggiunto" msgstr[1] "contatti aggiunti" msgid "of" msgstr "di" msgid "Record" msgstr "Elemento" msgid "Number fields per record" msgstr "Numero campi per elemento" msgid "Use first record as header" msgstr "Usa primo elemento come intestazione" msgid "Field type" msgstr "Tipo di campo" msgid "Value" msgstr "Valore" msgid "No records found in selected file." msgstr "Nessun elemento trovato nel file selezionato." msgid "Cannot read file." msgstr "Impossibile leggere il file." msgid "Cannot open file." msgstr "Impossibile aprire il file." msgid "Selected contact will be removed." msgstr "Il contatto selezionato sarà rimosso." msgid "Select photo" msgstr "Seleziona foto" msgid "Address" msgstr "Indirizzo" msgid "Postcode" msgstr "CAP" msgid "City" msgstr "Città" msgid "State" msgstr "Stato" msgid "Country" msgstr "Provincia" msgid "Add contact" msgstr "Aggiungi contatto" msgid "Personal" msgstr "Personale" msgid "Phones" msgstr "Telefoni" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Colore etichette contatti" msgid "Color of links" msgstr "Colore links" msgid "Font size" msgstr "Dimensione carattere" msgid "Name font size" msgstr "Dimensione carattere nome" msgid "Item font size" msgstr "Dimensione carattere elemento" msgid "Photo size" msgstr "Dimensione foto" msgid "Small" msgstr "Piccola" msgid "Medium" msgstr "Media" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Nascondi colonna gruppi" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Varie" msgid "Groups" msgstr "Gruppi" msgid "Visible columns in birthday browser" msgstr "Colonne visibili nella ricerca compleanni" msgid "Show calendar" msgstr "Mostra calendario" msgid "Show tasks" msgstr "Mostra impegni" msgid "Show contacts" msgstr "Mostra contatti" msgid "Show notes" msgstr "Mostra note" msgid "Show options" msgstr "Mostra opzioni" msgid "Show small calendar window" msgstr "Mostra finestra mini-calendario" msgid "Check for events since last run" msgstr "Controlla eventi dall'ultimo avvio" msgid "Number of days to check forward for events (default: 0)" msgstr "Numero di giorni futuri da controllare (predefinito: 0)" msgid "Set absolute path for settings and data files" msgstr "Imposta percorso assoluto per i file di impostazioni e dati" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "pratica agenda personale" msgid "ERROR: Cannot create config files" msgstr "ERRORE:Impossibile creare i file di configurazione" msgid "Another copy of OSMO is already running." msgstr "Un'altra copia di OSMO è in esecuzione." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Utilizzare due o più istanze di OSMO può causare una perdita di dati." msgid "Do you really want to continue?" msgstr "Vuoi davvero continuare?" msgid "Warning" msgstr "Attenzione" msgid "The note has changed." msgstr "La nota è cambiata." msgid "Do you want to save it?" msgstr "Vuoi salvarlo?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Nessun elemento trovato nel file selezionato." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Vuoi davvero continuare?" msgid "Question" msgstr "Domanda" msgid "Words" msgstr "Parole" msgid "Lines" msgstr "Linee" msgid "Characters" msgstr "Lettere" msgid "White characters" msgstr "Caratteri bianchi" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Documento" msgid "Selection" msgstr "Selezione" msgid "Created" msgstr "Creato" msgid "Modified" msgstr "Modificato" msgid "New note" msgstr "Nuova nota" msgid "Add note" msgstr "Aggiungi nota" msgid "Edit note" msgstr "Modifica nota" msgid "Delete note" msgstr "Elimina nota" msgid "Remove note" msgstr "Rimuovi nota" msgid "Find" msgstr "Cerca" msgid "Clear attributes" msgstr "Pulisci attributi" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Salva nota" msgid "Insert current date and time" msgstr "Inserisci data e ora attuale" msgid "Insert separator" msgstr "Inserisci separatore" msgid "Statistics" msgstr "Statistiche" msgid "Close editor" msgstr "Chiudi editor" msgid "Toggle spell checker" msgstr "Controllo ortografico" msgid "Category" msgstr "Categoria" msgid "Note name" msgstr "Nome nota" msgid "Last changes" msgstr "Ultime modifiche" msgid "Read-only" msgstr "Sola lettura" msgid "Line" msgstr "Linea" msgid "Column" msgstr "Colonna" msgid "case sensitive" msgstr "distingui MAIUSCOLE/minuscole" msgid "Close find entry" msgstr "Chiudi ricerca" msgid "Edit entry" msgstr "Modifica dato" msgid "Remember cursor position" msgstr "Ricorda posizione cursore" msgid "Selected note will be removed." msgstr "La nota selezionata sarà rimossa." msgid "No further data recovery will be possible." msgstr "Non sarà più posibile recuperare i dati." msgid "Plain" msgstr "Per esteso" msgid "Encrypted" msgstr "Crittato" msgid "Note type" msgstr "Tipo di nota" msgid "Cannot open the note." msgstr "Impossibile aprire la nota." msgid "encryption support is disabled" msgstr "Supporto alla crittatura non è attivo" msgid "Authorization" msgstr "Autorizzazione" msgid "Algorithm" msgstr "Algoritmo" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Compressione" msgid "Ratio" msgstr "Ratio" msgid "Fast" msgstr "Veloce" msgid "Good" msgstr "Buono" msgid "Best" msgstr "Migliore" msgid "Remember the last selected category" msgstr "Ricorda ultima categoria selezionata" msgid "Use system format for date and time" msgstr "Utilizza formato di sistema per data e ora" msgid "Encryption" msgstr "Crittatura" msgid "Visible columns" msgstr "Colonne visibili" msgid "Categories" msgstr "Categorie" msgid "Notes options" msgstr "Opzioni note" msgid "Osmo has to be restarted to take effect." msgstr "Osmo deve essere riavviato per applicare le modifiche." msgid "Layout" msgstr "Disposizione" msgid "Vertical" msgstr "Verticale" msgid "Horizontal" msgstr "Orizzontale" msgid "Tabs position" msgstr "Posizione schede" msgid "Left" msgstr "Sinistra" msgid "Right" msgstr "Destra" msgid "Top" msgstr "Sopra" msgid "Bottom" msgstr "Sotto" msgid "Use default stock icons" msgstr "Usa le icone di default" msgid "Disable underline in links" msgstr "Disabilita sottolineatura nei links" msgid "Draw rows in alternating colors" msgstr "Disegna righe a colori alterni" msgid "Show exit button in toolbar" msgstr "Visualizza pulsante di uscita nella barra degli strumenti" msgid "At least one module must be visible." msgstr "Almeno un modulo dev'essere visibile." msgid "Override locale settings" msgstr "Ignora impostazioni lingua sistema" msgid "Date format" msgstr "Formato data" msgid "DD-MM-YYYY" msgstr "GG-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-GG-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-GG" msgid "YYYY-DD-MM" msgstr "AAAA-GG-MM" msgid "Time format" msgstr "Formato ora" msgid "hours" msgstr "ore" msgid "Spell checker language" msgstr "Lingua controllo ortografico" msgid "Enable tooltips" msgstr "Abilita suggerimenti" msgid "Remember last selected page" msgstr "Ricorda ultima scheda visualizzata" msgid "Save data after every modification" msgstr "Salva i dati dopo ogni modifica" msgid "Web browser" msgstr "Browser internet" msgid "E-mail client" msgstr "Programma E-Mail" msgid "Sound player" msgstr "Riproduttore audio" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s sarà sostituito con l'indirizzo web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s sarà sostituito con l'indirizzo e-mail" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s sarà sostituito col nome del file audio" msgid "Enable system tray" msgstr "Abilita icona nella barra di stato" msgid "Start minimised" msgstr "Parti minimizzato" msgid "Blink on events" msgstr "Lampeggia agli eventi" msgid "Ignore day note events" msgstr "Ignore eventi note del giorno" msgid "Hide" msgstr "Nascondi" msgid "Helpers" msgstr "Aiuti" msgid "System tray" msgstr "Icona nella barra di stato" msgid "Edit" msgstr "Modifica" msgid "Go Down" msgstr "Vai giù" msgid "Select date" msgstr "Seleziona data" msgid "Select font" msgstr "Seleziona carattere" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calcolatore" msgid "Edit day note" msgstr "Modifica nota giornaliera" msgid "Save" msgstr "Salva" msgid "Display full-year calendar" msgstr "Mostra calendario intero anno" msgid "Help" msgstr "Aiuto" msgid "Invalid item" msgstr "Oggetto non valido" msgid "Valid item" msgstr "Oggetto valido" msgid "Edit task" msgstr "Modifica impegno" msgid "Remove task" msgstr "Rimuovi impegno" msgid "Import tasks" msgstr "Importa impegni" msgid "Export tasks" msgstr "Esporta impegni" msgid "Change to previous date" msgstr "Sposta al giorno precedente" msgid "Change to next date" msgstr "Sposta al giorno successivo" msgid "Print" msgstr "Stampa" msgid "Normal" msgstr "Normale" msgid "Recurrent" msgstr "Ripetitivo" msgid "Started" msgstr "Cominciato" msgid "Finished" msgstr "Finito" msgid "All items" msgstr "Tutti gli elementi" msgid "New task" msgstr "Nuovo impegno" msgid "Change due date to previous date" msgstr "Sposta scadenza al giorno precedente" msgid "Change due date to next date" msgstr "Sposta scadenza al giorno successivo" msgid "Print visible tasks list" msgstr "Stampa elenco compiti visibili" msgid "Due date" msgstr "Data impegno" msgid "Priority" msgstr "Priorità" msgid "Task details" msgstr "Dettagli impegno" msgid "Close description panel" msgstr "Chiudi pannello descrizione" msgid "No tasks with defined date found." msgstr "Nessun impegno trovato col giorno indicato." msgid "Save tasks" msgstr "Salva impegni" msgid "tasks exported" msgstr "Impegni esportati" msgid "Please select at least one day when recurrency is enabled." msgstr "Seleziona almeno un giorno in cui si verifica l'evento." msgid "Set time" msgstr "Imposta ora" msgid "Tomorrow" msgstr "Domani" msgid "Selected task will be removed." msgstr "L'impegno selezionato sarà rimosso." msgid "Basic" msgstr "Base" msgid "Select date and time" msgstr "Seleziona data e ora" msgid "Low" msgstr "Basso" msgid "High" msgstr "Alto" msgid "Enable sound notification" msgstr "Abilita notifica sonora" #, fuzzy msgid "Enable notification dialog" msgstr "Abilita notifica sonora" msgid "Advanced" msgstr "Avanzato" msgid "Alarm warning" msgstr "Avviso allarme" msgid "Postpone time" msgstr "Tempo postposizione" msgid "Alarm command" msgstr "Comando allarme" msgid "Recurrent task" msgstr "Impegno ricorrente" msgid "Enable" msgstr "Attiva" msgid "Start" msgstr "Comincia" msgid "End" msgstr "Fine" msgid "Interval" msgstr "Intervallo" msgid "Time period" msgstr "Durata" msgid "Date period" msgstr "Periodo data" msgid "Repeat" msgstr "Ripeti" msgid "Repeat in the following days" msgstr "Ripeti i giorni successivi" msgid "Ignore alarm when task expired offline" msgstr "Ignora allarme quando l'impegno scade offline" msgid "Select a font..." msgstr "Seleziona carattere..." msgid "Color of items that are due today" msgstr "Colore degli impegni da fare oggi" msgid "Color of items that are due in the next 7 days" msgstr "Colore degli impegni da fare nei prossimi 7 giorni" msgid "Color of items that are past due" msgstr "Colore degli impegni che sono stati fatti" msgid "Task info font" msgstr "Carattere informazioni impegno" msgid "Show in bold tasks with high priority" msgstr "Mostra in grassetto gli impegni con priorità alta" msgid "Hide completed tasks" msgstr "Nascondi impegni completati" msgid "Delete completed tasks without confirmation" msgstr "Elimina automaticamente impegni completati" msgid "Add new task when double clicked on tasks list" msgstr "Aggiungi nuovo impegno con doppio clic su lista impegni" msgid "minutes" msgstr "minuti" msgid "0 for disable" msgstr "(0 per disabilitare)" msgid "Repeat sound alarm" msgstr "Ripeti suono allarme" msgid "times" msgstr "volte" msgid "Global notification command" msgstr "Comando di notifica globale" msgid "Tasks options" msgstr "Opzioni impegni" msgid "Reminder options" msgstr "Opzioni promemoria" msgid "Tasks list" msgstr "Elenco impegni" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Num." msgid "New Moon" msgstr "Luna nuova" msgid "Waxing Crescent Moon" msgstr "Luna Crescente" msgid "Quarter Moon" msgstr "Primo quarto" msgid "Waxing Gibbous Moon" msgstr "Luna Gibbosa Crescente" msgid "Full Moon" msgstr "Luna piena" msgid "Waning Gibbous Moon" msgstr "Luna Gibbosa Calante" msgid "Last Quarter Moon" msgstr "Ultimo quarto" msgid "Waning Crescent Moon" msgstr "Luna Calante" msgid "Error" msgstr "Errore" msgid "Selected file exist! Overwrite?" msgstr "Il file selezionato esiste già! Sovrascrivere?" #~ msgid "Select and show first item after search" #~ msgstr "Seleziona e mostra primo elemento dopo la ricerca" #~ msgid "Order" #~ msgstr "Ordina" #~ msgid "Mode" #~ msgstr "Modalità" #~ msgid "Ascending" #~ msgstr "Crescente" #~ msgid "Descending" #~ msgstr "Decrescente" #~ msgid "Sorting" #~ msgstr "Disposizione" #~ msgid "Contact map location" #~ msgstr "Posizione mappa contatti" osmo-0.2.14/po/ca.po000664 001750 001750 00000110435 12561325524 014077 0ustar00pasppasp000000 000000 # Spanish translation of Osmo # This file is distributed under the same license as the Osmo package. # Roger Adell , 2008. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2008-02-03 20:09+100\n" "Last-Translator: Roger Adell \n" "Language-Team: Català\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" msgid "About" msgstr "Sobre..." msgid "Close" msgstr "Tancar" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "anar a la pestanya anterior" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "anar a la pestanya següent" msgid "switch to selected page" msgstr "anar a la pestanya sel·leccionada" #, fuzzy msgid "show options window" msgstr "Mostrar opcions" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "canviar de pàgina a les pestanyes \"Opcions\" i \"Sobre...\"" msgid "exit" msgstr "sortir" #, fuzzy msgid "Space" msgstr "Guardar" msgid "select current date" msgstr "sel·leccionar data actual" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "canviar visibilitat de dades personals" #, fuzzy msgid "Arrows" msgstr "Fletxa" msgid "change day" msgstr "canviar dia" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "desplaçar el contigut del panell d'informació del dia" msgid "change month" msgstr "canviar mes" #, fuzzy msgid "Home/End" msgstr "Casa" msgid "change year" msgstr "canviar any" msgid "toggle calendars for the previous and next month" msgstr "mostrar / ocultar calendaris pel mes anterior i següent" msgid "day notes browser" msgstr "Explorador de notes del dia" msgid "assign background color to day note" msgstr "asignar color de fons a nota del dia" msgid "date calculator" msgstr "calculadora de dates" msgid "show full-year calendar" msgstr "mostrar calendario d'any complert" msgid "jump to date" msgstr "anar a la data" #, fuzzy msgid "Delete" msgstr "Esborrar nota" msgid "remove day note" msgstr "eliminar nota del dia" #, fuzzy msgid "Alt+Arrows" msgstr "Fletxa" msgid "Esc" msgstr "" #, fuzzy msgid "close editor" msgstr "Tancar editor" msgid "toggle bold" msgstr "" #, fuzzy msgid "toggle italic" msgstr "mostrar / ocultar tasques amagades" #, fuzzy msgid "toggle underline" msgstr "Subratllat" #, fuzzy msgid "toggle strikethrough" msgstr "Tatxat" #, fuzzy msgid "toggle highlight" msgstr "Destacat" msgid "Arrows Up/Down" msgstr "" #, fuzzy msgid "toggle alternative view" msgstr "Vista alternativa" #, fuzzy msgid "year info" msgstr "Nota del'any" #, fuzzy msgid "set current year" msgstr "Any actual" #, fuzzy msgid "close full-year calendar" msgstr "mostrar calendario d'any complert" #, fuzzy msgid "Alt+a, Insert" msgstr "Inserir" msgid "add task" msgstr "afegir tasca" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "editar tasca" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "eliminar tasca" msgid "toggle hidden tasks" msgstr "mostrar / ocultar tasques amagades" msgid "activate search field" msgstr "activar el camp de búsqueda" #, fuzzy msgid "Left, Right" msgstr "Dreta" msgid "change category filter" msgstr "canviar filtre de categories" msgid "close task info panel" msgstr "tancar informació de la tasca" msgid "Insert" msgstr "Inserir" msgid "add contact" msgstr "nou contacte" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "editar contacte" msgid "remove contact" msgstr "eliminar contacte" msgid "change search mode" msgstr "canviar el mode de búsqueda" msgid "close contact details panel" msgstr "tancar detalls del contacte" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "obrir nota" msgid "add note" msgstr "afegir nota" msgid "remove note" msgstr "eliminar nota" msgid "edit note name and category" msgstr "editar nom de la nota y categoria" msgid "close note editor" msgstr "tancar notes" msgid "save note" msgstr "guardar nota" msgid "find text" msgstr "buscar" msgid "clear selection attributes" msgstr "eliminar atributs de la sel·lecció" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO ha estat dissenyat per ser còmode per a l'usuaro, per això " "existeixenmoltes dreceres de teclat. Aquesta n'és la llista complerta:" msgid "General" msgstr "General" msgid "Calendar" msgstr "Calendari" #, fuzzy msgid "Note editor" msgstr "Tancar editor" msgid "Full-year calendar" msgstr "Calendario d'Any complert" msgid "Tasks" msgstr "Tasques" msgid "Contacts" msgstr "Contactes" msgid "Notes" msgstr "Notes" msgid "Selector" msgstr "SelL·leccionar" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Un pràctic organizador personal" msgid "compiled on" msgstr "compilat el" msgid "Programming" msgstr "Desarrollament" msgid "Graphics" msgstr "Gràfics" msgid "Contributors" msgstr "Contribucions" msgid "Translators" msgstr "Traductors" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "" msgid "Compiled-in features" msgstr "Característiques complertes" msgid "iCalendar support" msgstr "Soport d'iCalendar" #, fuzzy msgid "Encrypted notes support" msgstr "Notes xifrades" msgid "Backup support" msgstr "" #, fuzzy msgid "Printing support" msgstr "Soport d'iCalendar" #, fuzzy msgid "Spell checker support" msgstr "Soport de dispositius SyncML" msgid "version" msgstr "versió" msgid "SVN revision" msgstr "Revisió SVN" msgid "Key shortcuts" msgstr "Dreceres del teclat" msgid "License" msgstr "Llicència" msgid "Save backup" msgstr "" msgid "Password protection" msgstr "" msgid "Enter password" msgstr "Entrea la contrassenya" msgid "Re-enter password" msgstr "Escriu la contrasesenya de nou" #, fuzzy msgid "Please enter the password" msgstr "Escriu la contrasesenya de nou" msgid "Passwords do not match!" msgstr "Les contrassenyes no coincideixen!" #, fuzzy msgid "Cannot create backup!" msgstr "No s'ha pogut crear el fitxer." msgid "Backup file saved successfully!" msgstr "" msgid "Open backup file" msgstr "" msgid "Osmo backup files (*.bck)" msgstr "" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "Contrassenya incorrecta!" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "Esteu segurs?" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "naixé" msgid "year old" msgid_plural "years old" msgstr[0] "edat" msgstr[1] "edat" msgid "Current time" msgstr "Hora actual" msgid "Day number" msgstr "Número de dia" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dies fins a fi d'any" msgstr[1] "dies fins a fi d'any" msgid "the last day of the year" msgstr "Últim dia de l'any" msgid "Today distance" msgstr "Distància al di­a d'avui" msgid "Week number" msgstr "Número de setmana" msgid "Marked days" msgstr "Dies assenyalats" msgid "Weekend days" msgstr "Dies en cap de setmana" msgid "Moon phase" msgstr "Fase lunar" msgid "Zodiac sign" msgstr "Signe del zodiac" msgid "Day notes" msgstr "Notes del dia" msgid "Day tasks" msgstr "Tasques del dia" msgid "Birthday" msgstr "Data de naixement" msgid "Day category" msgstr "Categoria de dies" msgid "Selected day note will be removed." msgstr "La nota del di­a sel·leccionat serà eliminada." msgid "Continue?" msgstr "Continuar?" msgid "Previous year" msgstr "Any anterior" msgid "Previous month" msgstr "Mes anterior" msgid "Previous day" msgstr "Dia anterior" msgid "Today" msgstr "Avui" msgid "Next day" msgstr "Di­a següent" msgid "Next month" msgstr "Mes següent" msgid "Next year" msgstr "Any següent" msgid "Jump to date" msgstr "Anar a la data" msgid "Print calendar" msgstr "Imprimir calendari" msgid "Date calculator" msgstr "Calculadora de dates" msgid "Backup data" msgstr "" #, fuzzy msgid "Restore data" msgstr "Resultat" msgid "Preferences" msgstr "Preferències" msgid "Quit" msgstr "Salir" msgid "Toggle day note panel" msgstr "Mostrar / ocultar notes del di­a" msgid "Add task" msgstr "Nova tasca" msgid "Select day color" msgstr "Sel·leccionar color del di­a" msgid "Browse notes" msgstr "Explorar notes" msgid "Browse iCal events" msgstr "Explorar events d'iCalendar" msgid "Export to iCal file" msgstr "Exportar a fitxer iCal" msgid "Previous and next month" msgstr "Mes sigüent i anterior" msgid "Close note panel" msgstr "Tancar notes" msgid "Highlight" msgstr "Destacat" msgid "Strikethrough" msgstr "Tatxat" msgid "Underline" msgstr "Subratllat" msgid "Italic" msgstr "Cursiva" msgid "Bold" msgstr "Negreta" msgid "Insert timeline" msgstr "Insertar franja de temps" msgid "Clear text" msgstr "Esborrar text" msgid "Info" msgstr "Informació" msgid "Select color" msgstr "Sel·leccionar color" msgid "None" msgstr "Cap" msgid "Cancel" msgstr "Cancel·lar" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "anys" msgstr[1] "anys" msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "mesos" msgid "day" msgid_plural "days" msgstr[0] "dia" msgstr[1] "dies" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "hores" msgid "minute" msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minuts" msgid "second" msgid_plural "seconds" msgstr[0] "segon" msgstr[1] "segons" msgid "or" msgstr "o" msgid "rounded down" msgstr "arrodonit cap a baix" msgid "week" msgid_plural "weeks" msgstr[0] "setmana" msgstr[1] "setmanes" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" #, fuzzy msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Dies en cap de setmana" msgstr[1] "Dies en cap de setmana" msgid "This calculator only supports dates after year 1." msgstr "Aquesta calculadora només afmet dates posteriors a l'any 1." #, fuzzy msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Color dels dies de cap de setmana" msgstr[1] "Color dels dies de cap de setmana" msgid "Year" msgstr "Any" msgid "Month" msgstr "Mes" msgid "Day" msgstr "Dia" msgid "Current date" msgstr "Data actual" msgid "Set current date" msgstr "Fixar data actual" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minut" msgid "Second" msgstr "Segon" msgid "Set current time" msgstr "Fixar hora actual" msgid "Reset time" msgstr "Reiniciar hora" msgid "First date and time" msgstr "Data i hora d'inici" msgid "Second date and time" msgstr "Data i hora de fi" msgid "Alternative time units" msgstr "Unitats de temps alternatives" msgid "Result" msgstr "Resultat" msgid "Duration between two dates" msgstr "Temps entre dues dates" msgid "Operation" msgstr "Operació" msgid "add" msgstr "sumar" msgid "subtract" msgstr "restar" msgid "Date and time to add or subtract from" msgstr "Data i hora de la que sumar o restar" msgid "Years" msgstr "Anys" msgid "Months" msgstr "Mesos" msgid "Days" msgstr "Dies" msgid "Weeks" msgstr "Setmanes" msgid "Hours" msgstr "Hores" msgid "Minutes" msgstr "Minuts" msgid "Seconds" msgstr "Segons" #, fuzzy msgid "Ignore weekend days" msgstr "Dies en cap de setmana" msgid "Reset fields" msgstr "Reiniciar camps" msgid "Time to add or subtract" msgstr "Hora a sumar o restar" msgid "Jump to" msgstr "Anar a " msgid "Add to or subtract from a date" msgstr "Sumar o restar d'una data" msgid "Leap year" msgstr "Any de canvi" msgid "Yes" msgstr "Si" msgid "No" msgstr "No" msgid "Chinese year animal" msgstr "Animal del calendario xinès" msgid "Number of days" msgstr "Número de dies" msgid "Number of weeks" msgstr "Número de setmanes" msgid "Number of weekend days" msgstr "Dies de cap de setmana" msgid "Year info" msgstr "Nota del'any" msgid "Current year" msgstr "Any actual" msgid "Alternative view" msgstr "Vista alternativa" msgid "event" msgid_plural "events" msgstr[0] "esdeveniment" msgstr[1] "esdeveniments" #, fuzzy msgid "No valid calendars defined" msgstr "No s'han definit calendaris" msgid "iCalendar events" msgstr "esdeveniments d'iCalendar" msgid "Date" msgstr "Data" #, fuzzy msgid "Time" msgstr "Franges de temps" msgid "Summary" msgstr "Resum" msgid "Select output file" msgstr "Sel·leccioni el fitxer de sortida" msgid "The list will be cleared and all entries will be lost." msgstr "La llista serà buidada, totes les entrades es perderan." msgid "Done!" msgstr "Fet!" msgid "event exported" msgid_plural "events exported" msgstr[0] "esdeveniment exportat" msgstr[1] "esdeveniments exportats" msgid "iCalendar export" msgstr "Exportació d'iCalendar" msgid "Day Selector" msgstr "Sel·leccionar dia" msgid "Use date period" msgstr "Període de dates" msgid "Add" msgstr "Nova" msgid "Clear" msgstr "Esborrar" msgid "Remove" msgstr "Eliminar" msgid "Output filename" msgstr "Fitxer de sortida" msgid "Browse" msgstr "Explorar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sense entrades" msgid "entry" msgid_plural "entries" msgstr[0] "element" msgstr[1] "elements" msgid "Calendar notes" msgstr "Notes del calendari" msgid "Search" msgstr "Buscar" msgid "Filter" msgstr "Filtre" msgid "Current month" msgstr "Mes actual" msgid "Selected month" msgstr "Mes sel·leccionat" msgid "Selected year" msgstr "Any sel·leccionat" msgid "Selected month and year" msgstr "Mes i any sel·leccionat" msgid "All notes" msgstr "Totes les notes" msgid "Case sensitive" msgstr "Coincidència de majúscules / minúscules" msgid "Strikethrough past day notes" msgstr "Tatxar notes de dies passats" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Nombre de la nota" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "MM-DD-AAAA" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Format data" #, fuzzy msgid "Set default format" msgstr "Format de sortida" #, fuzzy msgid "Date format syntax" msgstr "Format data" msgid "Day note marker" msgstr "Marca per a nota del dia" msgid "Event marker" msgstr "Marca d'esdeveniments" msgid "Circle" msgstr "Cercle" msgid "Ellipse" msgstr "Elipse" msgid "Wave" msgstr "Ona" msgid "Current day marker" msgstr "Marca de data actual" msgid "Arrow" msgstr "Fletxa" msgid "Free-hand circle" msgstr "Cercle" msgid "Colors" msgstr "Colors" msgid "Header color" msgstr "Color de la capçalera" msgid "Weekend days color" msgstr "Color dels dies de cap de setmana" msgid "Cursor color" msgstr "Color del cursor" msgid "Event marker color" msgstr "Color de marca d'esdeveniments" msgid "Current day marker color" msgstr "Color de marca de data actual" #, fuzzy msgid "Birthday marker color" msgstr "Color de marca de data actual" msgid "Date font" msgstr "Font de la data" msgid "Calendar font" msgstr "Font del calendari" msgid "Note font" msgstr "Font de les notes" msgid "Enable block cursor" msgstr "Usar cursor de bloc" msgid "Cursor thickness" msgstr "Gruix del cursor" msgid "Thin" msgstr "Prim" msgid "Thick" msgstr "Gruixut" #, fuzzy msgid "Edit category" msgstr "Categoria de dies" msgid "Color" msgstr "Color" msgid "Name" msgstr "Nom" msgid "Select ICS file" msgstr "Seleccioni fitxer ICS" msgid "All Files" msgstr "Tots els fitxers" msgid "Calendar files (*.ics)" msgstr "Fitxers de calendari (*.ics)" msgid "Modify ICAL parameters" msgstr "Modificar paràmetres d'ICAL" msgid "Filename" msgstr "Nom de l'arxiu" msgid "Options" msgstr "Opcions" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Vàlid" msgid "Description" msgstr "Descripció" #, fuzzy msgid "Full date" msgstr "Data de finalització" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "La setmana comença dilluns" msgid "Show day names" msgstr "Mostrar nom del dia" msgid "No month change" msgstr "No canviar de mes" msgid "Show week numbers" msgstr "Mostrar número de setmana" msgid "Simple view in full-year calendar" msgstr "Vista simple del calendari anual" msgid "Enable auxilary calendars" msgstr "Mostrar calendaris auxiliars" msgid "Ascending sorting in day notes browser" msgstr "Ordrn ascendent en notes del dia" msgid "Enable spell checker in day notes" msgstr "" #, fuzzy msgid "Show seconds" msgstr "Segons" msgid "Appearance" msgstr "Aparença" msgid "Day categories" msgstr "Categories de dies" msgid "iCalendar files" msgstr "Arxius d'iCalendar" msgid "Show in day info panel" msgstr "Mostrar al panell d'informació del dia" #, fuzzy msgid "Name day" msgstr "Sant" msgid "Error printing" msgstr "Error imprimint" msgid "Printing properties" msgstr "" #, fuzzy msgid "Month name" msgstr "Nombre de la nota" #, fuzzy msgid "Day name" msgstr "Número de dia" msgid "Events" msgstr "Esdeveniments" #, fuzzy msgid "Fonts" msgstr "Mesos" #, fuzzy msgid "Birthdays" msgstr "Data de naixement" #, fuzzy msgid "Namedays" msgstr "Nom" #, fuzzy msgid "Visible events" msgstr "Columnes visibles" #, fuzzy msgid "Padding" msgstr "sumar" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" #, fuzzy msgid "Portrait" msgstr "Prioritat" msgid "Landscape" msgstr "" msgid "Timeline" msgstr "Franges de temps" msgid "From (hour)" msgstr "Desde (hora)" msgid "Step (minutes)" msgstr "Salt (minuts)" msgid "To (hour)" msgstr "Fins (hora)" msgid "No date" msgstr "Sense data" msgid "Rat" msgstr "Rata" msgid "Ox" msgstr "Bou" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Llebre" msgid "Dragon" msgstr "Drac" msgid "Snake" msgstr "Serp" msgid "Horse" msgstr "Cavall" msgid "Sheep" msgstr "Ovella" msgid "Monkey" msgstr "Mono" msgid "Fowl" msgstr "Gall" msgid "Dog" msgstr "gos" msgid "Pig" msgstr "Porc" msgid "Unknown" msgstr "Desconegut" msgid "Aquarius" msgstr "Aquari" msgid "Pisces" msgstr "Peixos" msgid "Aries" msgstr "Àries" msgid "Taurus" msgstr "Taure" msgid "Gemini" msgstr "Gèminis" msgid "Cancer" msgstr "Cranc" msgid "Leo" msgstr "Lleó" msgid "Virgo" msgstr "Verge" msgid "Libra" msgstr "Balança" msgid "Scorpio" msgstr "Escorpí" msgid "Sagittarius" msgstr "Sagitari" msgid "Capricorn" msgstr "Capricorn" msgid "Cannot perform selected operation." msgstr "No es pot dur a terme la operació sel·leccionada." msgid "Task has been modified or removed." msgstr "La tasca ha estat editada o esborrada" msgid "Remind me later" msgstr "Recordar-m'ho més tard" msgid "Done" msgstr "Fet" msgid "postponed" msgstr "Posposat" msgid "Show task" msgstr "Mostrar tasca" msgid "Alarm warning!" msgstr "!Avís d'alarma!" msgid "Day note" msgstr "Nota del dia" msgid "Type" msgstr "Tipus" msgid "Event" msgstr "Esdeveniment" msgid "Task" msgstr "Tasca" msgid "Show Osmo" msgstr "Mostrar Osmo" msgid "No birthdays defined" msgstr "No s'han definit aniversaris" msgid "Birthdays list" msgstr "Lista d'aniversaris" msgid "Days to birthday" msgstr "Dies fins l'aniversari" msgid "Age" msgstr "Edat" msgid "Birthday date" msgstr "Data de naixement" msgid "today" msgstr "Avui" #, fuzzy msgid "Please select address" msgstr "Si us plau, sel·leccioni el fitxer abans" msgid "Information" msgstr "Informació" msgid "Work" msgstr "Feina" msgid "Home" msgstr "Casa" msgid "Group" msgstr "Grup" msgid "First name" msgstr "Nom" msgid "Last name" msgstr "Cognom" msgid "Second name" msgstr "Segon nom" msgid "Nickname" msgstr "Pseudònim" #, fuzzy msgid "Tags" msgstr "Tasca" msgid "Name day date" msgstr "Sant" msgid "Home address" msgstr "Adreça de recidència" msgid "Home postcode" msgstr "Còdi postal" msgid "Home city" msgstr "Ciutat de residència" msgid "Home state" msgstr "Regió de residència" msgid "Home country" msgstr "País de residència" msgid "Organization" msgstr "Organizació" msgid "Department" msgstr "Departament" msgid "Work address" msgstr "Adreça de la feina" msgid "Work postcode" msgstr "Còdi postal de la feina" msgid "Work city" msgstr "Ciutat de la feina" msgid "Work state" msgstr "Regió de la feina" msgid "Work country" msgstr "País de la feina" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telèfon" msgid "Home phone 2" msgstr "Telèfon 2" msgid "Home phone 3" msgstr "Telèfon 3" msgid "Home phone 4" msgstr "Telèfon 4" msgid "Work phone" msgstr "Telèfon de la feina" msgid "Work phone 2" msgstr "Telèfon de la feina 2" msgid "Work phone 3" msgstr "Telèfon de la feina 3" msgid "Work phone 4" msgstr "Telèfon de la feina 4" msgid "Cell phone" msgstr "Telèfon mòbil" msgid "Cell phone 2" msgstr "Telèfon mòbil 2" msgid "Cell phone 3" msgstr "Telèfon mòbil 3" msgid "Cell phone 4" msgstr "Telèfon mòbil 4" msgid "E-Mail" msgstr "Correu electrònic" msgid "E-Mail 2" msgstr "Correu electrònic 2" msgid "E-Mail 3" msgstr "Correu electrònic 3" msgid "E-Mail 4" msgstr "Correu electrònic 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Fotografia" msgid "Additional info" msgstr "Informació addicional" msgid "New contact" msgstr "Nou contacte" msgid "Remove contact" msgstr "Eliminar contacte" msgid "Edit contact" msgstr "Editar contacte" msgid "Show birthdays" msgstr "Mostrar aniversari" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "Importar contactes" msgid "Export contacts" msgstr "Exportar contactes" msgid "First Name" msgstr "Nom" msgid "Last Name" msgstr "Cognoms" msgid "All fields" msgstr "Tots els camps" msgid "Contact details" msgstr "Detalls del contacte" msgid "Close contact panel" msgstr "Tancar detalls del contacte" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contacte exportat" msgstr[1] "contactes exportats" msgid "Cannot create file." msgstr "No s'ha pogut crear el fitxer." msgid "Output format" msgstr "Format de sortida" msgid "Add header" msgstr "Afegir capçalera" msgid "Fields to export" msgstr "Camps a exportar" msgid "All" msgstr "Tot" msgid "Invert" msgstr "Invertir" msgid "Select fields" msgstr "Sel·leccioni camps" msgid "Select CSV file" msgstr "Sel·lecioni fitxer CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Arxius CSV (valors separats per comes) (*.csv)" msgid "Please select file first." msgstr "Si us plau, sel·leccioni el fitxer abans" msgid "Import type" msgstr "Tipus d'importació" msgid "File" msgstr "Fitxer" msgid "Input filename" msgstr "Fitxer d'entrada" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Res per importar." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contacte afegit" msgstr[1] "contactes afegits" msgid "of" msgstr "de" msgid "Record" msgstr "Registre" msgid "Number fields per record" msgstr "Número de camps per registre" msgid "Use first record as header" msgstr "Usar primer registe com a capçalera" msgid "Field type" msgstr "Tipus de camp" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Cap registre trobat al fitxer sel·leccionat." msgid "Cannot read file." msgstr "El fitxer no es pot llegir." msgid "Cannot open file." msgstr "El fitxer no es pot obrir." msgid "Selected contact will be removed." msgstr "El contacte sel·leccionat serà esborrat." msgid "Select photo" msgstr "Sel·leccioni fotografia" msgid "Address" msgstr "Direcció" msgid "Postcode" msgstr "Codi postal" msgid "City" msgstr "Ciutat" msgid "State" msgstr "Regió" msgid "Country" msgstr "País" msgid "Add contact" msgstr "Nou contacte" msgid "Personal" msgstr "Personal" msgid "Phones" msgstr "Telèfons" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Color de les etiquetes de contactes" msgid "Color of links" msgstr "Color d'enllaços" #, fuzzy msgid "Font size" msgstr "Tamany de la foto" #, fuzzy msgid "Name font size" msgstr "Nome de la font" #, fuzzy msgid "Item font size" msgstr "Font dels elements" msgid "Photo size" msgstr "Tamany de la foto" msgid "Small" msgstr "Petita" msgid "Medium" msgstr "Mitjana" msgid "Large" msgstr "Gran" msgid "Hide group column" msgstr "Ocultar columna de grups" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Miscel·lània" msgid "Groups" msgstr "Grups" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Columnes visibles a la llista d'aniversaris" msgid "Show calendar" msgstr "Mostrar calendari" msgid "Show tasks" msgstr "Mostrar tasques" msgid "Show contacts" msgstr "Mostrar contactes" msgid "Show notes" msgstr "Mostrar notes" msgid "Show options" msgstr "Mostrar opcions" msgid "Show small calendar window" msgstr "Mostrar petita finestra del calendario" msgid "Check for events since last run" msgstr "Comprovar els esdeveniments des de l'última execució" msgid "Number of days to check forward for events (default: 0)" msgstr "" "Número de dies per comprovar esdeveniments cap endavant (por defecto: 0)" msgid "Set absolute path for settings and data files" msgstr "Estableixi la ruta absoluta per als fitxers de dades i configutació" msgid "Match contacts with given string" msgstr "" #, fuzzy msgid "handy personal organizer" msgstr "Un pràctic organizador personal" msgid "ERROR: Cannot create config files" msgstr "ERROR: No s'ha pogut crear el fitxer de configuració." msgid "Another copy of OSMO is already running." msgstr "Una altra còpis d'OSMO s'està executant." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Usar simultàniament dos o més còpies d'OSMO pot causar pèrdua de dades." msgid "Do you really want to continue?" msgstr "Desitja continuar?" msgid "Warning" msgstr "Avís" msgid "The note has changed." msgstr "La nota ha canviat." msgid "Do you want to save it?" msgstr "Desitja guardar-la?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Cap registre trobat al fitxer sel·leccionat." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Desitja continuar?" msgid "Question" msgstr "Pregunta" msgid "Words" msgstr "Paraules" msgid "Lines" msgstr "Línies" msgid "Characters" msgstr "Caràcters" msgid "White characters" msgstr "Espais" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "SelL·leccionar" msgid "Created" msgstr "Creat" msgid "Modified" msgstr "Modificat" msgid "New note" msgstr "Nova nota" msgid "Add note" msgstr "Afegir nota" msgid "Edit note" msgstr "Editar nota" msgid "Delete note" msgstr "Esborrar nota" msgid "Remove note" msgstr "Eliminar nota" msgid "Find" msgstr "Buscar" msgid "Clear attributes" msgstr "Esborrar format" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Guardar nota" msgid "Insert current date and time" msgstr "Inserir data i hora actual" msgid "Insert separator" msgstr "Inserir separador" msgid "Statistics" msgstr "Estadístiques" msgid "Close editor" msgstr "Tancar editor" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "Categoria" msgid "Note name" msgstr "Nombre de la nota" msgid "Last changes" msgstr "Última canvis" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Línies" #, fuzzy msgid "Column" msgstr "País" msgid "case sensitive" msgstr "Coincidència de majúscules / minúscules" msgid "Close find entry" msgstr "Tancar barra de búsqueda" msgid "Edit entry" msgstr "Editar element" #, fuzzy msgid "Remember cursor position" msgstr "Opcions d'avisos" msgid "Selected note will be removed." msgstr "La nota sel·leccionada serà eliminada." msgid "No further data recovery will be possible." msgstr "No es podran recuperar les dades després." #, fuzzy msgid "Plain" msgstr "sumar" #, fuzzy msgid "Encrypted" msgstr "Notes xifrades" #, fuzzy msgid "Note type" msgstr "Tipus d'importació" #, fuzzy msgid "Cannot open the note." msgstr "El fitxer no es pot obrir." msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "Autorizació" msgid "Algorithm" msgstr "Algoritme" msgid "Hashing" msgstr "Resum" msgid "Compression" msgstr "Compressió" msgid "Ratio" msgstr "Rati" msgid "Fast" msgstr "Ràpida" msgid "Good" msgstr "Bona" msgid "Best" msgstr "Millor" msgid "Remember the last selected category" msgstr "Recordar l'última categoria sel·leccionada" msgid "Use system format for date and time" msgstr "Usar format de data i hora del sistema" msgid "Encryption" msgstr "Xifrado" msgid "Visible columns" msgstr "Columnes visibles" msgid "Categories" msgstr "Categories" msgid "Notes options" msgstr "Opcions de notes" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Posició de les pestanyes" msgid "Left" msgstr "Esquerra" msgid "Right" msgstr "Dreta" msgid "Top" msgstr "Amunt" msgid "Bottom" msgstr "Avall" #, fuzzy msgid "Use default stock icons" msgstr "Usar icones per defecte (requereix reiniciar)" msgid "Disable underline in links" msgstr "Deshabilitar subratllat dels enllaços" msgid "Draw rows in alternating colors" msgstr "Dibuixar files en colors alternatius" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Com a mínim un mòdul ha de ser visivle." msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "Format data" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Format d'hora" msgid "hours" msgstr "hores" msgid "Spell checker language" msgstr "" msgid "Enable tooltips" msgstr "Mostrar sugerències" msgid "Remember last selected page" msgstr "Recordar última pàgina sel·leccionada" msgid "Save data after every modification" msgstr "Guardar dades després de cada modificació" msgid "Web browser" msgstr "Navegador" msgid "E-mail client" msgstr "Client de correu electrònic" #, fuzzy msgid "Sound player" msgstr "Segon nom" #, fuzzy, c-format msgid "The %s pattern will be replaced with web address" msgstr "El patró %s serà reemplaçat per l'adreça web o de correu electrònic" #, fuzzy, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "El patró %s serà reemplaçat per l'adreça web o de correu electrònic" #, fuzzy, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "El patró %s serà reemplaçat per l'adreça web o de correu electrònic" msgid "Enable system tray" msgstr "Mostrar icona a la safata de sistema" msgid "Start minimised" msgstr "Iniciar minimitzat" msgid "Blink on events" msgstr "" #, fuzzy msgid "Ignore day note events" msgstr "tancar nota pel dia" msgid "Hide" msgstr "Ocultar" msgid "Helpers" msgstr "Ajudes" msgid "System tray" msgstr "Safata de sistema" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "" msgid "Select date" msgstr "Sel·leccionar data" msgid "Select font" msgstr "Sel·leccionar font" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar nota del dia" msgid "Save" msgstr "Guardar" msgid "Display full-year calendar" msgstr "Mostrar calendari d'any complert" msgid "Help" msgstr "Ajuda" msgid "Invalid item" msgstr "Element invàlid" msgid "Valid item" msgstr "Element vàlid" msgid "Edit task" msgstr "Editar tasca" msgid "Remove task" msgstr "Eliminar tasca" #, fuzzy msgid "Import tasks" msgstr "Importar contactes" #, fuzzy msgid "Export tasks" msgstr "Exportar contactes" #, fuzzy msgid "Change to previous date" msgstr "Canviar dia de final al dia anterior" #, fuzzy msgid "Change to next date" msgstr "Canviar dia de final al dia següent" msgid "Print" msgstr "Imprimir" #, fuzzy msgid "Normal" msgstr "Tasca normal" #, fuzzy msgid "Recurrent" msgstr "Tasca repetitiva" msgid "Started" msgstr "Inici" msgid "Finished" msgstr "Acabat" msgid "All items" msgstr "Tots els elements" msgid "New task" msgstr "Nova tasca" #, fuzzy msgid "Change due date to previous date" msgstr "Canviar dia de final al dia anterior" #, fuzzy msgid "Change due date to next date" msgstr "Canviar dia de final al dia següent" msgid "Print visible tasks list" msgstr "Imprimir llista de tasques visibles" msgid "Due date" msgstr "Data de finalització" msgid "Priority" msgstr "Prioritat" msgid "Task details" msgstr "Detalls de la vista" msgid "Close description panel" msgstr "Tancar descripció" msgid "No tasks with defined date found." msgstr "" #, fuzzy msgid "Save tasks" msgstr "Tasques del dia" #, fuzzy msgid "tasks exported" msgstr "contacte exportat" msgid "Please select at least one day when recurrency is enabled." msgstr "Sel·leccioni com am mínim un dia si la tasca és repetitiva." msgid "Set time" msgstr "Fixar hora" msgid "Tomorrow" msgstr "Demà" msgid "Selected task will be removed." msgstr "Les tasques sel·leccionades s'eliminaran." msgid "Basic" msgstr "" #, fuzzy msgid "Select date and time" msgstr "Data i hora de fi" msgid "Low" msgstr "Baixa" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "" #, fuzzy msgid "Enable notification dialog" msgstr "Comanda global de notificació" msgid "Advanced" msgstr "" msgid "Alarm warning" msgstr "Alarma d'avís" msgid "Postpone time" msgstr "Retardament d'avís posposat" msgid "Alarm command" msgstr "Comanda d'alarma" msgid "Recurrent task" msgstr "Tasca repetitiva" msgid "Enable" msgstr "Habilitar" msgid "Start" msgstr "Inici" msgid "End" msgstr "Fi" msgid "Interval" msgstr "Intèrval" msgid "Time period" msgstr "Període de temps" msgid "Date period" msgstr "Període de dates" msgid "Repeat" msgstr "Repetir" msgid "Repeat in the following days" msgstr "Repetir els dies següents" msgid "Ignore alarm when task expired offline" msgstr "Ignorar alarmes quan la tasca expira sense connexió" msgid "Select a font..." msgstr "Seleccioni una font..." msgid "Color of items that are due today" msgstr "Color dels elements que finalitzen avui" msgid "Color of items that are due in the next 7 days" msgstr "Color dels elements que finalitzaran durant els pròxims 7 dies" msgid "Color of items that are past due" msgstr "Color dels elements que ja han vençut" msgid "Task info font" msgstr "Cons per als detalls" msgid "Show in bold tasks with high priority" msgstr "Mostrar en negreta tasques amb prioritat alta" msgid "Hide completed tasks" msgstr "Ocultar tasques determinades" msgid "Delete completed tasks without confirmation" msgstr "Eliminar las tasques determinades sense confirmació" msgid "Add new task when double clicked on tasks list" msgstr "Crear nova tasca al fer doble click a la llista de tasques" msgid "minutes" msgstr "minuts" msgid "0 for disable" msgstr "0 per a deshabilitar" msgid "Repeat sound alarm" msgstr "" #, fuzzy msgid "times" msgstr "Fixar hora" msgid "Global notification command" msgstr "Comanda global de notificació" msgid "Tasks options" msgstr "Opcions de les tasques" msgid "Reminder options" msgstr "Opcions d'avisos" #, fuzzy msgid "Tasks list" msgstr "Opcions de les tasques" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "No." msgid "New Moon" msgstr "Lluna nova" msgid "Waxing Crescent Moon" msgstr "Creixent" msgid "Quarter Moon" msgstr "Quart creixent" msgid "Waxing Gibbous Moon" msgstr "Creixent" msgid "Full Moon" msgstr "Lluna plena" msgid "Waning Gibbous Moon" msgstr "Minvant" msgid "Last Quarter Moon" msgstr "Quart minvant" msgid "Waning Crescent Moon" msgstr "Minvant" msgid "Error" msgstr "Error" msgid "Selected file exist! Overwrite?" msgstr "El fitxer sel·leccionat existeix. Sobreesciure?" #~ msgid "Select and show first item after search" #~ msgstr "Sel·leccionar i mostrar el primer element després de la búsqueda" #~ msgid "Order" #~ msgstr "Ordre" #~ msgid "Mode" #~ msgstr "Mode" #~ msgid "Ascending" #~ msgstr "Ascendent" #~ msgid "Descending" #~ msgstr "Descendent" #~ msgid "Sorting" #~ msgstr "Ordenació" osmo-0.2.14/po/gl.po000664 001750 001750 00000113362 12561325524 014120 0ustar00pasppasp000000 000000 # Galician translation of Osmo # This file is distributed under the same license as the Osmo package. # Miguel Anxo Bouzada , 2012 # xesusmosquera , 2012 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-06 09:53+0000\n" "Last-Translator: xesusmosquera \n" "Language-Team: Galician\n" "Language: gl\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" msgid "About" msgstr "Sobre" msgid "Close" msgstr "Pechar" msgid "Ctrl+PageUp" msgstr "Ctrl+Re.Páx." msgid "switch to previous tab" msgstr "Ir á lapela anterior" msgid "Ctrl+PageDn" msgstr "Ctrl+Av.Páx." msgid "switch to next tab" msgstr "Ir á lapela seguinte" msgid "switch to selected page" msgstr "Ir á lapela seleccionada" msgid "show options window" msgstr "Amosar a xanela de opcións" msgid "show about window" msgstr "Amosar a xanela «Sobre»" msgid "toggle fullscreen mode" msgstr "Cambiar o modo de pantalla completa" msgid "PageUp/PageDn" msgstr "Re.Páx./Av.Páx." msgid "switch page in options and about tab" msgstr "Cambiar de páxina nas lapelas «Opcións» e «Sobre»" msgid "exit" msgstr "Saír" msgid "Space" msgstr "Espazo" msgid "select current date" msgstr "Seleccionar a data actual" msgid "Ctrl+Space" msgstr "Ctrl+Espazo" msgid "toggle personal data visibility" msgstr "Cambiar a visibilidade dos datos persoais" msgid "Arrows" msgstr "Frechas" msgid "change day" msgstr "Cambiar o día" msgid "Ctrl+Up/Down" msgstr "Ctrl+Arriba/Abaixo" msgid "scroll the contents in the day info panel" msgstr "Desprazar o contido do panel de información do día" msgid "change month" msgstr "Cambiar o mes" msgid "Home/End" msgstr "Inicio/Fin" msgid "change year" msgstr "Cambiar o ano" msgid "toggle calendars for the previous and next month" msgstr "Amosar/agochar os calendarios para os meses anterior e seguinte" msgid "day notes browser" msgstr "Examinador das notas do día" msgid "assign background color to day note" msgstr "Asignar a cor do fondo ás notas do día" msgid "date calculator" msgstr "Calculadora de datas" msgid "show full-year calendar" msgstr "Amosar o calendario do ano completo" msgid "jump to date" msgstr "Ir á data" msgid "Delete" msgstr "Eliminar" msgid "remove day note" msgstr "Retirar as notas do día" msgid "Alt+Arrows" msgstr "Alt+Frechas" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "Pechar o editor" msgid "toggle bold" msgstr "Activar/desactivar negriña" msgid "toggle italic" msgstr "Activar/desactivar itálica" msgid "toggle underline" msgstr "Activar/desactivar subliñado" msgid "toggle strikethrough" msgstr "Activar/desactivar tachado" msgid "toggle highlight" msgstr "Activar/desactivar resaltado" msgid "Arrows Up/Down" msgstr "Frechas arriba/abaixo" msgid "toggle alternative view" msgstr "Cambiar o tipo de vista" msgid "year info" msgstr "Información do ano" msgid "set current year" msgstr "Estabelecer o ano actual" msgid "close full-year calendar" msgstr "Pechar o calendario do ano completo" msgid "Alt+a, Insert" msgstr "Alt+A, Inserir" msgid "add task" msgstr "Engadir unha tarefa" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+E, Ctrl+Intro" msgid "edit task" msgstr "Editar a tarefa" msgid "Alt+r, Delete" msgstr "Alt+R, Supr." msgid "remove task" msgstr "Eliminar a/unha tarea" msgid "toggle hidden tasks" msgstr "Amosar/agochar as tarefas agochadas" msgid "activate search field" msgstr "Activar o campo de buscas" msgid "Left, Right" msgstr "Esquerda, dereita" msgid "change category filter" msgstr "Cambiar o filtro de categorías" msgid "close task info panel" msgstr "Pechar a información da tarefa" msgid "Insert" msgstr "Inserir" msgid "add contact" msgstr "Engadir un contacto" msgid "Ctrl+Enter" msgstr "Ctrl+Intro" msgid "edit contact" msgstr "Editar o contacto" msgid "remove contact" msgstr "Retirar o contacto" msgid "change search mode" msgstr "Cambiar o modo de busca" msgid "close contact details panel" msgstr "Pechar os detalles do contacto" msgid "Enter" msgstr "Intro" msgid "open note" msgstr "Abrir unha nota" msgid "add note" msgstr "Engadir unha nota" msgid "remove note" msgstr "Retirar unha nota" msgid "edit note name and category" msgstr "Editar o nome e a categoría da nota" msgid "close note editor" msgstr "Pechar o editor de notas" msgid "save note" msgstr "Gardar a nota" msgid "find text" msgstr "Buscar por texto" msgid "clear selection attributes" msgstr "Limpar os atributos da selección" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO foi deseñado para seren de uso moi doado, por iso existen multitude de " "atallos de teclado. Esta é a lista completa:" msgid "General" msgstr "Xeral" msgid "Calendar" msgstr "Calendario" msgid "Note editor" msgstr "Editor de notas" msgid "Full-year calendar" msgstr "Calendario de ano completo" msgid "Tasks" msgstr "Tarefas" msgid "Contacts" msgstr "Contactos" msgid "Notes" msgstr "Notas" msgid "Selector" msgstr "Seleccionar" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Un organizador persoal moi práctico" msgid "compiled on" msgstr "Compilado o" msgid "Programming" msgstr "Desenvolvemento" msgid "Graphics" msgstr "Gráficos" msgid "Contributors" msgstr "Colaboradores" msgid "Translators" msgstr "Tradutores" msgid "Mailing lists" msgstr "Roldas de correo" msgid "Bug tracker" msgstr "Sistema de seguimento de fallos" msgid "Feature requests" msgstr "Peticións de características" msgid "Available modules" msgstr "Módulos dispoñíbeis" msgid "Compiled-in features" msgstr "Características compiladas" msgid "iCalendar support" msgstr "Compatibilidade con iCalendar" msgid "Encrypted notes support" msgstr "Compatibilidade con notas cifradas" msgid "Backup support" msgstr "Compatibilidade con copia de seguranza" msgid "Printing support" msgstr "Compatibilidade con impresión" msgid "Spell checker support" msgstr "Compatibilidade con verificación ortográfica" msgid "version" msgstr "Versión" msgid "SVN revision" msgstr "Revisión SVN" msgid "Key shortcuts" msgstr "Atallos de teclado" msgid "License" msgstr "Licenza" msgid "Save backup" msgstr "Gardar copia de seguranza" msgid "Password protection" msgstr "Protección con contrasinal" msgid "Enter password" msgstr "Escriba un contrasinal" msgid "Re-enter password" msgstr "Escriba, outra vez, o contrasinal" msgid "Please enter the password" msgstr "Escriba o contrasinal" msgid "Passwords do not match!" msgstr "Os contrasinais non coinciden!" msgid "Cannot create backup!" msgstr "Non é posíbel crear a copia de seguranza!" msgid "Backup file saved successfully!" msgstr "A copia de seguranza foi gardada correctamente!" msgid "Open backup file" msgstr "Abrir o ficheiro da copia de seguranza" msgid "Osmo backup files (*.bck)" msgstr "Ficheiros de copia de seguranza de Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Isto non é un ficheiro de copia de seguranza de Osmo" msgid "Incorrect password!" msgstr "Contrasinal incorrecto!" msgid "All your data will be replaced with backup file content." msgstr "" "Todos os datos van seren substituídos cos do ficheiro da copia de seguranza." msgid "Are you sure?" msgstr "Está seguro?" msgid "Osmo has to be restarted now..." msgstr "Osmo debe ser reiniciado agora..." msgid "was born" msgstr "Nado o" msgid "year old" msgid_plural "years old" msgstr[0] "ano de idade" msgstr[1] "anos de idade" msgid "Current time" msgstr "Hora actual" msgid "Day number" msgstr "Número do día" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "día ata fin de ano" msgstr[1] "días ata fin de ano" msgid "the last day of the year" msgstr "Último día do ano" msgid "Today distance" msgstr "Días ata o día de hoxe" msgid "Week number" msgstr "Número da semana" msgid "Marked days" msgstr "Días marcados" msgid "Weekend days" msgstr "Días en fin de semana" msgid "Moon phase" msgstr "Fase luar" msgid "Zodiac sign" msgstr "Signo do zodíaco" msgid "Day notes" msgstr "Notas do día" msgid "Day tasks" msgstr "Tarefas do día" msgid "Birthday" msgstr "Aniversario" msgid "Day category" msgstr "Categoría de días" msgid "Selected day note will be removed." msgstr "A nota do día seleccionado será eliminada." msgid "Continue?" msgstr "Continuar?" msgid "Previous year" msgstr "Ano anterior" msgid "Previous month" msgstr "Mes anterior" msgid "Previous day" msgstr "Día anterior" msgid "Today" msgstr "Hoxe" msgid "Next day" msgstr "Día seguinte" msgid "Next month" msgstr "Mes seguinte" msgid "Next year" msgstr "Ano seguinte" msgid "Jump to date" msgstr "Ir á data" msgid "Print calendar" msgstr "Imprimir calendario" msgid "Date calculator" msgstr "Calculadora de datas" msgid "Backup data" msgstr "" msgid "Restore data" msgstr "" msgid "Preferences" msgstr "Preferencias" msgid "Quit" msgstr "Saír" msgid "Toggle day note panel" msgstr "Amosar/agochar notas do día" msgid "Add task" msgstr "Engadir unha tarefa" msgid "Select day color" msgstr "Seleccionar a cor do día" msgid "Browse notes" msgstr "Examinar notas" msgid "Browse iCal events" msgstr "Examinar actividades de iCalendar" msgid "Export to iCal file" msgstr "Exportar a ficheiro iCal" msgid "Previous and next month" msgstr "Mes anterior e seguinte" msgid "Close note panel" msgstr "Pechar o panel de notas" msgid "Highlight" msgstr "Resaltado" msgid "Strikethrough" msgstr "Tachado" msgid "Underline" msgstr "Subliñado" msgid "Italic" msgstr "Cursiva" msgid "Bold" msgstr "Negriña" msgid "Insert timeline" msgstr "Inserir liña de tempo" msgid "Clear text" msgstr "Limpar texto" msgid "Info" msgstr "Información" msgid "Select color" msgstr "Seleccionar cor" msgid "None" msgstr "Ningún" msgid "Cancel" msgstr "Cancelar" msgid "OK" msgstr "Aceptar" msgid "year" msgid_plural "years" msgstr[0] "ano" msgstr[1] "anos" msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "meses" msgid "day" msgid_plural "days" msgstr[0] "día" msgstr[1] "días" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" msgid "or" msgstr "ou" msgid "rounded down" msgstr "redondeado cara abaixo" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "working day" msgid_plural "working days" msgstr[0] "día laborábel" msgstr[1] "días laborábeis" msgid "time is ignored" msgstr "ignorase a hora" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "día en fin de semana" msgstr[1] "días en fin de semana" msgid "This calculator only supports dates after year 1." msgstr "Esta calculadora só admite datas posteriores ao ano 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "día de fin de semana ignorado" msgstr[1] "días de fin de semana ignorados" msgid "Year" msgstr "Ano" msgid "Month" msgstr "Mes" msgid "Day" msgstr "Día" msgid "Current date" msgstr "Data actual" msgid "Set current date" msgstr "Estabelecer a data actual" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minuto" msgid "Second" msgstr "Segundo" msgid "Set current time" msgstr "Estabelecer a hora actual" msgid "Reset time" msgstr "Restabelecer a hora" msgid "First date and time" msgstr "Data e hora de inicio" msgid "Second date and time" msgstr "Data e hora de fin" msgid "Alternative time units" msgstr "Unidades alternativas de tempo" msgid "Result" msgstr "Resultado" msgid "Duration between two dates" msgstr "Tempo entre dúas datas" msgid "Operation" msgstr "Operación" msgid "add" msgstr "sumar" msgid "subtract" msgstr "restar" msgid "Date and time to add or subtract from" msgstr "Data e hora da que sumar ou restar" msgid "Years" msgstr "Anos" msgid "Months" msgstr "Meses" msgid "Days" msgstr "Días" msgid "Weeks" msgstr "Semanas" msgid "Hours" msgstr "Horas" msgid "Minutes" msgstr "Minutos" msgid "Seconds" msgstr "Segundos" msgid "Ignore weekend days" msgstr "Ignorar días en fin de semana" msgid "Reset fields" msgstr "Restabelecer os campos" msgid "Time to add or subtract" msgstr "Hora que sumar ou restar" msgid "Jump to" msgstr "Ir a" msgid "Add to or subtract from a date" msgstr "Sumar ou restar dunha data" msgid "Leap year" msgstr "Ano bisesto" msgid "Yes" msgstr "Si" msgid "No" msgstr "Non" msgid "Chinese year animal" msgstr "Animal do calendario chino" msgid "Number of days" msgstr "Número de días" msgid "Number of weeks" msgstr "Número de semanas" msgid "Number of weekend days" msgstr "Días en fin de semana" msgid "Year info" msgstr "Información do ano" msgid "Current year" msgstr "Ano actual" msgid "Alternative view" msgstr "Vista alternativa" msgid "event" msgid_plural "events" msgstr[0] "actividade" msgstr[1] "actividades" msgid "No valid calendars defined" msgstr "Non se definiron calendarios válidos" msgid "iCalendar events" msgstr "actividades de iCalendar" msgid "Date" msgstr "Data" msgid "Time" msgstr "Hora" msgid "Summary" msgstr "Resumo" msgid "Select output file" msgstr "Seleccione o ficheiro de saída" msgid "The list will be cleared and all entries will be lost." msgstr "Vaise a baleirar a lista, perderanse todas as entradas." msgid "Done!" msgstr "Feito!" msgid "event exported" msgid_plural "events exported" msgstr[0] "actividade exportada" msgstr[1] "actividades exportadas" msgid "iCalendar export" msgstr "Exportación de iCalendar" msgid "Day Selector" msgstr "Seleccionar día" msgid "Use date period" msgstr "Usar un período de datas" msgid "Add" msgstr "Engadir" msgid "Clear" msgstr "Limpar" msgid "Remove" msgstr "Retirar" msgid "Output filename" msgstr "Nome do ficheiro de saída" msgid "Browse" msgstr "Examinar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sen entradas" msgid "entry" msgid_plural "entries" msgstr[0] "entrada" msgstr[1] "entradas" msgid "Calendar notes" msgstr "Notas do calendario" msgid "Search" msgstr "Buscar" msgid "Filter" msgstr "Filtro" msgid "Current month" msgstr "Mes actual" msgid "Selected month" msgstr "Mes seleccionado" msgid "Selected year" msgstr "Ano seleccionado" msgid "Selected month and year" msgstr "Mes e ano seleccionado" msgid "All notes" msgstr "Todos as notas" msgid "Case sensitive" msgstr "Sensíbel a maiúsculas/minúsculas" msgid "Strikethrough past day notes" msgstr "Tachar notas de días pasados" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "Sintaxe" msgid "abbreviated weekday name" msgstr "nome abreviado do día da semana" msgid "full weekday name" msgstr "nome do día da semana" msgid "abbreviated month name" msgstr "nome abreviado do mes" msgid "full month name" msgstr "nome do mes" msgid "day of the month" msgstr "día do mes" msgid "MM/DD/YY" msgstr "MM/DD/AA" msgid "day of the month without leading zeros" msgstr "día do mes sen ceros á esquerda" msgid "year without century" msgstr "ano sen século" msgid "year with century" msgstr "ano con século" msgid "Date header format" msgstr "Formato da cabeceira de data" msgid "Set default format" msgstr "Estabelecer o formato predeterminado" msgid "Date format syntax" msgstr "Sintaxe do formato da data" msgid "Day note marker" msgstr "Marca para nota do día" msgid "Event marker" msgstr "Marca de actividades" msgid "Circle" msgstr "Círculo" msgid "Ellipse" msgstr "Elipse" msgid "Wave" msgstr "Onda" msgid "Current day marker" msgstr "Marca de data actual" msgid "Arrow" msgstr "Frecha" msgid "Free-hand circle" msgstr "Círculo a man alzada" msgid "Colors" msgstr "Cores" msgid "Header color" msgstr "Cor da cabeceira" msgid "Weekend days color" msgstr "Cor dos días de fin de semana" msgid "Cursor color" msgstr "Cor do cursor" msgid "Event marker color" msgstr "Cor da marca de actividades" msgid "Current day marker color" msgstr "Cor da marca de data actual" msgid "Birthday marker color" msgstr "Cor da marca de aniversario" msgid "Date font" msgstr "Tipo de letra da data" msgid "Calendar font" msgstr "Tipo de letra do calendario" msgid "Note font" msgstr "Tipo de letra das notas" msgid "Enable block cursor" msgstr "Activar o cursor de bloque" msgid "Cursor thickness" msgstr "Groso do cursor" msgid "Thin" msgstr "Delgado" msgid "Thick" msgstr "Groso" msgid "Edit category" msgstr "Editar a categoría" msgid "Color" msgstr "Cor" msgid "Name" msgstr "Nome" msgid "Select ICS file" msgstr "Seleccionar ficheiro ICS" msgid "All Files" msgstr "Todos os ficheiros" msgid "Calendar files (*.ics)" msgstr "Ficheiros de calendario (*.ics)" msgid "Modify ICAL parameters" msgstr "Modificar parámetros de ICAL" msgid "Filename" msgstr "Nome de ficheiro" msgid "Options" msgstr "Opcións" msgid "Disabled" msgstr "Desactivado" msgid "Valid" msgstr "Válido" msgid "Description" msgstr "Descrición" msgid "Full date" msgstr "Data completa" msgid "Mark" msgstr "Marca" msgid "Week start on Monday" msgstr "A semana comeza o luns" msgid "Show day names" msgstr "Amosar o nome do día" msgid "No month change" msgstr "Non cambiar de mes" msgid "Show week numbers" msgstr "Amosar o número de semana" msgid "Simple view in full-year calendar" msgstr "Vista simple do calendario anual" msgid "Enable auxilary calendars" msgstr "Amosar calendarios auxiliares" msgid "Ascending sorting in day notes browser" msgstr "Ordenación ascendente en notas do día" msgid "Enable spell checker in day notes" msgstr "Activar o corrector ortográfico nas notas do día" msgid "Show seconds" msgstr "Amosar os segundos" msgid "Appearance" msgstr "Aparencia" msgid "Day categories" msgstr "Categorías de días" msgid "iCalendar files" msgstr "Ficheiros de iCalendar" msgid "Show in day info panel" msgstr "Amosar no calendario" msgid "Name day" msgstr "Día do santo" msgid "Error printing" msgstr "Produciuse un erro de impresión" msgid "Printing properties" msgstr "Propiedades da impresión" msgid "Month name" msgstr "Nome do mes" msgid "Day name" msgstr "Nome do día" msgid "Events" msgstr "Actividades" msgid "Fonts" msgstr "Tipos de letra" msgid "Birthdays" msgstr "Aniversarios" msgid "Namedays" msgstr "Santoral" msgid "Visible events" msgstr "Actividades visíbeis" msgid "Padding" msgstr "Espazado" msgid "Event maximum length" msgstr "Lonxitude máxima das actividades" msgid "Page orientation:" msgstr "Orientación da páxina:" msgid "Portrait" msgstr "Vertical" msgid "Landscape" msgstr "Horizontal" msgid "Timeline" msgstr "Liña de tempo" msgid "From (hour)" msgstr "Desde (hora)" msgid "Step (minutes)" msgstr "Salto (minutos)" msgid "To (hour)" msgstr "Ata (hora)" msgid "No date" msgstr "Sen data" msgid "Rat" msgstr "Rata" msgid "Ox" msgstr "Boi" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lebre" msgid "Dragon" msgstr "Dragón" msgid "Snake" msgstr "Serpe" msgid "Horse" msgstr "Cabalo" msgid "Sheep" msgstr "Ovella" msgid "Monkey" msgstr "Mono" msgid "Fowl" msgstr "Galo" msgid "Dog" msgstr "Can" msgid "Pig" msgstr "Porco" msgid "Unknown" msgstr "Descoñecido" msgid "Aquarius" msgstr "Acuario" msgid "Pisces" msgstr "Peixes" msgid "Aries" msgstr "Aries" msgid "Taurus" msgstr "Tauro" msgid "Gemini" msgstr "Xemelgos" msgid "Cancer" msgstr "Cancro" msgid "Leo" msgstr "Leo" msgid "Virgo" msgstr "Virgo" msgid "Libra" msgstr "Libra" msgid "Scorpio" msgstr "Escorpion" msgid "Sagittarius" msgstr "Saxitario" msgid "Capricorn" msgstr "Capricornio" msgid "Cannot perform selected operation." msgstr "Non é posíbel realizar a operación seleccionada." msgid "Task has been modified or removed." msgstr "A tarefa foi modificada ou retirada." msgid "Remind me later" msgstr "Lembrarmo máis adiante" msgid "Done" msgstr "Feito" msgid "postponed" msgstr "Posposto" msgid "Show task" msgstr "Amosar a tarefa" msgid "Alarm warning!" msgstr "Alarma de aviso!" msgid "Day note" msgstr "Nota do día" msgid "Type" msgstr "Tipo" msgid "Event" msgstr "Actividade" msgid "Task" msgstr "Tarefa" msgid "Show Osmo" msgstr "Amosar Osmo" msgid "No birthdays defined" msgstr "Non se definiron aniversarios" msgid "Birthdays list" msgstr "Lista de aniversarios" msgid "Days to birthday" msgstr "Días ata o aniversario" msgid "Age" msgstr "Idade" msgid "Birthday date" msgstr "Data de nacemento" msgid "today" msgstr "hoxe" msgid "Please select address" msgstr "Escolla o enderezo." msgid "Information" msgstr "Información" msgid "Work" msgstr "Traballo" msgid "Home" msgstr "Particular" msgid "Group" msgstr "Grupo" msgid "First name" msgstr "Nome" msgid "Last name" msgstr "Apelidos" msgid "Second name" msgstr "Segundo nome" msgid "Nickname" msgstr "Alcume" msgid "Tags" msgstr "Etiquetas" msgid "Name day date" msgstr "Data do día do santo" msgid "Home address" msgstr "Enderezo particular" msgid "Home postcode" msgstr "Código postal particular" msgid "Home city" msgstr "Cidade de residencia" msgid "Home state" msgstr "Estado de residencia" msgid "Home country" msgstr "País de residencia" msgid "Organization" msgstr "Organización" msgid "Department" msgstr "Departamento" msgid "Work address" msgstr "Enderezo do traballo" msgid "Work postcode" msgstr "Código postal do traballo" msgid "Work city" msgstr "Cidade do traballo" msgid "Work state" msgstr "Estado do traballo" msgid "Work country" msgstr "País do traballo" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Teléfono particular" msgid "Home phone 2" msgstr "Teléfono particular 2" msgid "Home phone 3" msgstr "Teléfono particular 3" msgid "Home phone 4" msgstr "Teléfono particular 4" msgid "Work phone" msgstr "Teléfono do traballo" msgid "Work phone 2" msgstr "Teléfono do traballo 2" msgid "Work phone 3" msgstr "Teléfono do traballo 3" msgid "Work phone 4" msgstr "Teléfono do traballo 4" msgid "Cell phone" msgstr "Teléfono móbil" msgid "Cell phone 2" msgstr "Teléfono móbil 2" msgid "Cell phone 3" msgstr "Teléfono móbil 3" msgid "Cell phone 4" msgstr "Teléfono móbil 4" msgid "E-Mail" msgstr "Correo-e" msgid "E-Mail 2" msgstr "Correo-e 2" msgid "E-Mail 3" msgstr "Correo-e 3" msgid "E-Mail 4" msgstr "Correo-e 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "MI Gadu-Gadu" msgid "IM Yahoo" msgstr "MI Yahoo" msgid "IM MSN" msgstr "MI MSN" msgid "IM ICQ" msgstr "MI ICQ" msgid "IM AOL" msgstr "MI AOL" msgid "IM Jabber" msgstr "MI Jabber" msgid "IM Skype" msgstr "MI Skype" msgid "IM Tlen" msgstr "MI Tlen" msgid "Blog" msgstr "Blogue" msgid "Photo" msgstr "Fotografía" msgid "Additional info" msgstr "Información adicional" msgid "New contact" msgstr "Novo contacto" msgid "Remove contact" msgstr "Retirar o contacto" msgid "Edit contact" msgstr "Editar o contacto" msgid "Show birthdays" msgstr "Amosar aniversarios" msgid "Show contact location on the map" msgstr "Amosar a localización dos contactos no mapa" msgid "Import contacts" msgstr "Importar contactos" msgid "Export contacts" msgstr "Exportar contactos" msgid "First Name" msgstr "Nome" msgid "Last Name" msgstr "Apelidos" msgid "All fields" msgstr "Todos os campos" msgid "Contact details" msgstr "Detalles do contacto" msgid "Close contact panel" msgstr "Pechar os detalles do contacto" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contacto exportado" msgstr[1] "contactos exportados" msgid "Cannot create file." msgstr "Non foi posíbel crear o ficheiro." msgid "Output format" msgstr "Formato de saída" msgid "Add header" msgstr "Engadir cabeceira" msgid "Fields to export" msgstr "Campos a exportar" msgid "All" msgstr "Todo" msgid "Invert" msgstr "Inverter" msgid "Select fields" msgstr "Seleccione campos" msgid "Select CSV file" msgstr "Seleccione ficheiro CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Archivos CSV (valores separados por comas) (*.csv)" msgid "Please select file first." msgstr "Seleccione antes o ficheiro." msgid "Import type" msgstr "Tipo de importación" msgid "File" msgstr "Ficheiro" msgid "Input filename" msgstr "Nome do ficheiro de entrada" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Nada para importar." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contacto engadido" msgstr[1] "contactos engadidos" msgid "of" msgstr "de" msgid "Record" msgstr "Rexistro" msgid "Number fields per record" msgstr "Numero de campos por rexistro" msgid "Use first record as header" msgstr "Usar o primeiro rexistro como cabeceira" msgid "Field type" msgstr "Tipo de campo" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Non se atopou ningún rexistro no ficheiro seleccionado." msgid "Cannot read file." msgstr "Non é posíbel ler o ficheiro." msgid "Cannot open file." msgstr "Non é posíbel abrir o ficheiro." msgid "Selected contact will be removed." msgstr "O contacto seleccionado vai seren retirado." msgid "Select photo" msgstr "Seleccione unha foto" msgid "Address" msgstr "Enderezo" msgid "Postcode" msgstr "Código postal" msgid "City" msgstr "Cidade" msgid "State" msgstr "Estado" msgid "Country" msgstr "País" msgid "Add contact" msgstr "Novo contacto" msgid "Personal" msgstr "Persoal" msgid "Phones" msgstr "Teléfonos" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Cor das etiquetas dos contactos" msgid "Color of links" msgstr "Cor das ligazóns" msgid "Font size" msgstr "Tamaño da letra" msgid "Name font size" msgstr "Tamaño da letra dos nomes" msgid "Item font size" msgstr "Tamaño da letra dos elementos" msgid "Photo size" msgstr "Tamaño da foto" msgid "Small" msgstr "Pequena" msgid "Medium" msgstr "Mediana" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Agochar a columna de grupos" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Varios" msgid "Groups" msgstr "Grupos" msgid "Visible columns in birthday browser" msgstr "Columnas visíbeis na lista de aniversarios" msgid "Show calendar" msgstr "Amosar o calendario" msgid "Show tasks" msgstr "Amosar as tarefas" msgid "Show contacts" msgstr "Amosar os contactos" msgid "Show notes" msgstr "Amosar as notas" msgid "Show options" msgstr "Amosar as opcións" msgid "Show small calendar window" msgstr "Amosar unha xanela pequena co calendario" msgid "Check for events since last run" msgstr "Comprobar as actividades desde a última execución" msgid "Number of days to check forward for events (default: 0)" msgstr "" "Número de días para comprobar actividades cara adiante (o predeterminado é: " "0)" msgid "Set absolute path for settings and data files" msgstr "Estabeleza a ruta absoluta para os ficheiros de datos e configuración" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "práctico organizador persoal" msgid "ERROR: Cannot create config files" msgstr "ERRO: Non foi posíbel crear o ficheiro de configuración." msgid "Another copy of OSMO is already running." msgstr "Xa está a executarse outra instancia de OSMO." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Usar simultaneamente dúas ou máis instancias de OSMO pode provocar a perda " "de datos." msgid "Do you really want to continue?" msgstr "Quere continuar?" msgid "Warning" msgstr "Aviso" msgid "The note has changed." msgstr "A nota cambiou." msgid "Do you want to save it?" msgstr "Quere gardala?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Non se atopou ningún rexistro no ficheiro seleccionado." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Quere continuar?" msgid "Question" msgstr "Pregunta" msgid "Words" msgstr "Palabras" msgid "Lines" msgstr "Liñas" msgid "Characters" msgstr "Caracteres" msgid "White characters" msgstr "Espazos" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Documento" msgid "Selection" msgstr "Selección" msgid "Created" msgstr "Creado" msgid "Modified" msgstr "Modificado" msgid "New note" msgstr "Nova nota" msgid "Add note" msgstr "Engadir nota" msgid "Edit note" msgstr "Editar nota" msgid "Delete note" msgstr "Eliminar nota" msgid "Remove note" msgstr "Retirar nota" msgid "Find" msgstr "Buscar" msgid "Clear attributes" msgstr "Limpar formato" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Gardar nota" msgid "Insert current date and time" msgstr "Inserir a data e a hora actual" msgid "Insert separator" msgstr "Inserir separador" msgid "Statistics" msgstr "Estatísticas" msgid "Close editor" msgstr "Pechar o editor" msgid "Toggle spell checker" msgstr "Activar o corrector ortográfico" msgid "Category" msgstr "Categoría" msgid "Note name" msgstr "Nome da nota" msgid "Last changes" msgstr "Último cambio" msgid "Read-only" msgstr "Só lectura" msgid "Line" msgstr "Liña" msgid "Column" msgstr "Columna" msgid "case sensitive" msgstr "Coincidencia de maiúsculas / minúsculas" msgid "Close find entry" msgstr "Pechar a barra de buscas" msgid "Edit entry" msgstr "Editar a entrada" msgid "Remember cursor position" msgstr "Lembrar a posición do cursor" msgid "Selected note will be removed." msgstr "A nota seleccionada vai seren retirada." msgid "No further data recovery will be possible." msgstr "Despois non se poderá recuperar os datos." msgid "Plain" msgstr "Sinxelo" msgid "Encrypted" msgstr "Cifrado" msgid "Note type" msgstr "Tipo de nota" msgid "Cannot open the note." msgstr "Non é posíbel abrir a nota." msgid "encryption support is disabled" msgstr "A compatibilidade para notas cifradas está desactivada" msgid "Authorization" msgstr "Autorización" msgid "Algorithm" msgstr "Algoritmo" msgid "Hashing" msgstr "Resumo" msgid "Compression" msgstr "Compresión" msgid "Ratio" msgstr "Relación" msgid "Fast" msgstr "Rápido" msgid "Good" msgstr "Bo" msgid "Best" msgstr "Mellor" msgid "Remember the last selected category" msgstr "Lembrar a última categoría seleccionada" msgid "Use system format for date and time" msgstr "Usar formato de data e hora do sistema" msgid "Encryption" msgstr "Cifrado" msgid "Visible columns" msgstr "Columnas visíbeis" msgid "Categories" msgstr "Categorías" msgid "Notes options" msgstr "Opcións das notas" msgid "Osmo has to be restarted to take effect." msgstr "Osmo debe ser reiniciado para que tena efecto." msgid "Layout" msgstr "Deseño" msgid "Vertical" msgstr "Vertical" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Posición das lapelas" msgid "Left" msgstr "Esquerda" msgid "Right" msgstr "Dereita" msgid "Top" msgstr "Arriba" msgid "Bottom" msgstr "Abaixo" msgid "Use default stock icons" msgstr "Empregar as iconas predeterminadas" msgid "Disable underline in links" msgstr "Desactivar o subliñado nas ligazóns" msgid "Draw rows in alternating colors" msgstr "Debuxar filas en cores alternativos" msgid "Show exit button in toolbar" msgstr "Amosar o botón de saída na barra de ferramentas" msgid "At least one module must be visible." msgstr "Polo menos un módulo debe ser visíbel." msgid "Override locale settings" msgstr "Ignorar a configuración do sistema" msgid "Date format" msgstr "Formato da data" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Formato da hora" msgid "hours" msgstr "horas" msgid "Spell checker language" msgstr "Idioma do corrector ortográfico" msgid "Enable tooltips" msgstr "Amosar consellos" msgid "Remember last selected page" msgstr "Lembrar a última páxina seleccionada" msgid "Save data after every modification" msgstr "Gardar os datos despois de cada modificación" msgid "Web browser" msgstr "Navegador" msgid "E-mail client" msgstr "Cliente de correo-e" msgid "Sound player" msgstr "Reprodutor de son" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "O patrón %s vai seren substituído polo enderezo web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "O patrón %s vai seren substituído polo correo-e" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "O patrón %s vai seren substituído polo nome do ficheiro de son" msgid "Enable system tray" msgstr "Amosar a icona na área de notificación" msgid "Start minimised" msgstr "Iniciar minimizado" msgid "Blink on events" msgstr "Escintilar en actividades" msgid "Ignore day note events" msgstr "Ignorar eventos de nota del día" msgid "Hide" msgstr "Agochar" msgid "Helpers" msgstr "Axudantes" msgid "System tray" msgstr "Ãrea de notificación" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "Ir cara abaixo" msgid "Select date" msgstr "Seleccionar a data" msgid "Select font" msgstr "Seleccionar o tipo de letra" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar a nota do día" msgid "Save" msgstr "Gardar" msgid "Display full-year calendar" msgstr "Amosar o calendario de todo o ano" msgid "Help" msgstr "Axuda" msgid "Invalid item" msgstr "Elemento incorrecto" msgid "Valid item" msgstr "Elemento correcto" msgid "Edit task" msgstr "Editar tarefa" msgid "Remove task" msgstr "Retirar tarefa" msgid "Import tasks" msgstr "Importar tarefas" msgid "Export tasks" msgstr "Exportar tarefas" msgid "Change to previous date" msgstr "Cambiar ao día anterior" msgid "Change to next date" msgstr "Cambiar ao día seguinte" msgid "Print" msgstr "Imprimir" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Repetitiva" msgid "Started" msgstr "Iniciado" msgid "Finished" msgstr "Terminado" msgid "All items" msgstr "Todos os elementos" msgid "New task" msgstr "Nova tarefa" msgid "Change due date to previous date" msgstr "Cambiar a data de caducidade ao día anterior" msgid "Change due date to next date" msgstr "Cambiar a data de caducidade ao día seguinte" msgid "Print visible tasks list" msgstr "Imprimir a lista de tarefas visíbeis" msgid "Due date" msgstr "Data de caducidade" msgid "Priority" msgstr "Prioridade" msgid "Task details" msgstr "Detalles da tarefa" msgid "Close description panel" msgstr "Pechar o panel de descrición" msgid "No tasks with defined date found." msgstr "Non hai tarefas con data definida." msgid "Save tasks" msgstr "Gardar as tarefas" msgid "tasks exported" msgstr "tarefas exportadas" msgid "Please select at least one day when recurrency is enabled." msgstr "Seleccione polo menos un día se a tarefa é repetitiva." msgid "Set time" msgstr "Estabelecer a hora" msgid "Tomorrow" msgstr "Mañá" msgid "Selected task will be removed." msgstr "As tarefas seleccionadas van seren retiradas." msgid "Basic" msgstr "Básico" msgid "Select date and time" msgstr "Seleccione data e hora" msgid "Low" msgstr "Baixa" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "Activar a notificación sonora" #, fuzzy msgid "Enable notification dialog" msgstr "Activar a notificación sonora" msgid "Advanced" msgstr "Avanzado" msgid "Alarm warning" msgstr "Alarma de aviso" msgid "Postpone time" msgstr "Atraso de aviso posposto" msgid "Alarm command" msgstr "Orde da alarma" msgid "Recurrent task" msgstr "Tarefa repetitiva" msgid "Enable" msgstr "Activar" msgid "Start" msgstr "Inicio" msgid "End" msgstr "Fin" msgid "Interval" msgstr "Intervalo" msgid "Time period" msgstr "Período de tempo" msgid "Date period" msgstr "Período de datas" msgid "Repeat" msgstr "Repetir" msgid "Repeat in the following days" msgstr "Repetir nos días seguintes" msgid "Ignore alarm when task expired offline" msgstr "Ignorar as alarmas cando a tarefa caduca sen conexión" msgid "Select a font..." msgstr "Seleccione un tipo de letra..." msgid "Color of items that are due today" msgstr "Cor dos elementos que caducan hoxe" msgid "Color of items that are due in the next 7 days" msgstr "Cor dos elementos que caducan nos próximos 7 días" msgid "Color of items that are past due" msgstr "Cor dos elementos que xa caducaron" msgid "Task info font" msgstr "Tipo de letra para os detalles" msgid "Show in bold tasks with high priority" msgstr "Amosar en negriña as tarefas con prioridade alta" msgid "Hide completed tasks" msgstr "Agochar as tarefas completadas" msgid "Delete completed tasks without confirmation" msgstr "Eliminar as tarefas completadas sen confirmación" msgid "Add new task when double clicked on tasks list" msgstr "Engadir unha nova tarefa ao premer dúas veces na lista de tarefas" msgid "minutes" msgstr "minutos" msgid "0 for disable" msgstr "0 para desactivar" msgid "Repeat sound alarm" msgstr "Repetir a alarma sonora" msgid "times" msgstr "veces" msgid "Global notification command" msgstr "Orde global de notificación" msgid "Tasks options" msgstr "Opcións das tarefas" msgid "Reminder options" msgstr "Opcións de lembranzas" msgid "Tasks list" msgstr "Lista de tarefas" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Núm." msgid "New Moon" msgstr "Lúa nova" msgid "Waxing Crescent Moon" msgstr "Crecente" msgid "Quarter Moon" msgstr "Cuarto crecente" msgid "Waxing Gibbous Moon" msgstr "Crecente" msgid "Full Moon" msgstr "Lúa chea" msgid "Waning Gibbous Moon" msgstr "Minguante" msgid "Last Quarter Moon" msgstr "Cuarto minguante" msgid "Waning Crescent Moon" msgstr "Minguante" msgid "Error" msgstr "Produciuse un erro" msgid "Selected file exist! Overwrite?" msgstr "O ficheiro seleccionado xa existe. Quere sobrescribilo?" #~ msgid "Select and show first item after search" #~ msgstr "Seleccionar e amosar o primeiro elemento despois da busca" #~ msgid "Order" #~ msgstr "Orden" #~ msgid "Mode" #~ msgstr "Modo" #~ msgid "Ascending" #~ msgstr "Ascendente" #~ msgid "Descending" #~ msgstr "Descendente" #~ msgid "Sorting" #~ msgstr "Ordenación" #~ msgid "Contact map location" #~ msgstr "Localización do contacto no mapa" osmo-0.2.14/po/osmo.pot000664 001750 001750 00000061255 12561325524 014662 0ustar00pasppasp000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "About" msgstr "" msgid "Close" msgstr "" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "" msgid "switch to selected page" msgstr "" msgid "show options window" msgstr "" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "" msgid "exit" msgstr "" msgid "Space" msgstr "" msgid "select current date" msgstr "" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "" msgid "Arrows" msgstr "" msgid "change day" msgstr "" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "" msgid "change month" msgstr "" msgid "Home/End" msgstr "" msgid "change year" msgstr "" msgid "toggle calendars for the previous and next month" msgstr "" msgid "day notes browser" msgstr "" msgid "assign background color to day note" msgstr "" msgid "date calculator" msgstr "" msgid "show full-year calendar" msgstr "" msgid "jump to date" msgstr "" msgid "Delete" msgstr "" msgid "remove day note" msgstr "" msgid "Alt+Arrows" msgstr "" msgid "Esc" msgstr "" msgid "close editor" msgstr "" msgid "toggle bold" msgstr "" msgid "toggle italic" msgstr "" msgid "toggle underline" msgstr "" msgid "toggle strikethrough" msgstr "" msgid "toggle highlight" msgstr "" msgid "Arrows Up/Down" msgstr "" msgid "toggle alternative view" msgstr "" msgid "year info" msgstr "" msgid "set current year" msgstr "" msgid "close full-year calendar" msgstr "" msgid "Alt+a, Insert" msgstr "" msgid "add task" msgstr "" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "" msgid "toggle hidden tasks" msgstr "" msgid "activate search field" msgstr "" msgid "Left, Right" msgstr "" msgid "change category filter" msgstr "" msgid "close task info panel" msgstr "" msgid "Insert" msgstr "" msgid "add contact" msgstr "" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "" msgid "remove contact" msgstr "" msgid "change search mode" msgstr "" msgid "close contact details panel" msgstr "" msgid "Enter" msgstr "" msgid "open note" msgstr "" msgid "add note" msgstr "" msgid "remove note" msgstr "" msgid "edit note name and category" msgstr "" msgid "close note editor" msgstr "" msgid "save note" msgstr "" msgid "find text" msgstr "" msgid "clear selection attributes" msgstr "" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" msgid "General" msgstr "" msgid "Calendar" msgstr "" msgid "Note editor" msgstr "" msgid "Full-year calendar" msgstr "" msgid "Tasks" msgstr "" msgid "Contacts" msgstr "" msgid "Notes" msgstr "" msgid "Selector" msgstr "" msgid "Editor" msgstr "" msgid "A handy personal organizer" msgstr "" msgid "compiled on" msgstr "" msgid "Programming" msgstr "" msgid "Graphics" msgstr "" msgid "Contributors" msgstr "" msgid "Translators" msgstr "" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "" msgid "Compiled-in features" msgstr "" msgid "iCalendar support" msgstr "" msgid "Encrypted notes support" msgstr "" msgid "Backup support" msgstr "" msgid "Printing support" msgstr "" msgid "Spell checker support" msgstr "" msgid "version" msgstr "" msgid "SVN revision" msgstr "" msgid "Key shortcuts" msgstr "" msgid "License" msgstr "" msgid "Save backup" msgstr "" msgid "Password protection" msgstr "" msgid "Enter password" msgstr "" msgid "Re-enter password" msgstr "" msgid "Please enter the password" msgstr "" msgid "Passwords do not match!" msgstr "" msgid "Cannot create backup!" msgstr "" msgid "Backup file saved successfully!" msgstr "" msgid "Open backup file" msgstr "" msgid "Osmo backup files (*.bck)" msgstr "" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "" msgid "year old" msgid_plural "years old" msgstr[0] "" msgstr[1] "" msgid "Current time" msgstr "" msgid "Day number" msgstr "" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "" msgstr[1] "" msgid "the last day of the year" msgstr "" msgid "Today distance" msgstr "" msgid "Week number" msgstr "" msgid "Marked days" msgstr "" msgid "Weekend days" msgstr "" msgid "Moon phase" msgstr "" msgid "Zodiac sign" msgstr "" msgid "Day notes" msgstr "" msgid "Day tasks" msgstr "" msgid "Birthday" msgstr "" msgid "Day category" msgstr "" msgid "Selected day note will be removed." msgstr "" msgid "Continue?" msgstr "" msgid "Previous year" msgstr "" msgid "Previous month" msgstr "" msgid "Previous day" msgstr "" msgid "Today" msgstr "" msgid "Next day" msgstr "" msgid "Next month" msgstr "" msgid "Next year" msgstr "" msgid "Jump to date" msgstr "" msgid "Print calendar" msgstr "" msgid "Date calculator" msgstr "" msgid "Backup data" msgstr "" msgid "Restore data" msgstr "" msgid "Preferences" msgstr "" msgid "Quit" msgstr "" msgid "Toggle day note panel" msgstr "" msgid "Add task" msgstr "" msgid "Select day color" msgstr "" msgid "Browse notes" msgstr "" msgid "Browse iCal events" msgstr "" msgid "Export to iCal file" msgstr "" msgid "Previous and next month" msgstr "" msgid "Close note panel" msgstr "" msgid "Highlight" msgstr "" msgid "Strikethrough" msgstr "" msgid "Underline" msgstr "" msgid "Italic" msgstr "" msgid "Bold" msgstr "" msgid "Insert timeline" msgstr "" msgid "Clear text" msgstr "" msgid "Info" msgstr "" msgid "Select color" msgstr "" msgid "None" msgstr "" msgid "Cancel" msgstr "" msgid "OK" msgstr "" msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" msgid "hour" msgid_plural "hours" msgstr[0] "" msgstr[1] "" msgid "minute" msgid_plural "minutes" msgstr[0] "" msgstr[1] "" msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" msgid "or" msgstr "" msgid "rounded down" msgstr "" msgid "week" msgid_plural "weeks" msgstr[0] "" msgstr[1] "" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "" msgstr[1] "" msgid "This calculator only supports dates after year 1." msgstr "" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "" msgstr[1] "" msgid "Year" msgstr "" msgid "Month" msgstr "" msgid "Day" msgstr "" msgid "Current date" msgstr "" msgid "Set current date" msgstr "" msgid "Hour" msgstr "" msgid "Minute" msgstr "" msgid "Second" msgstr "" msgid "Set current time" msgstr "" msgid "Reset time" msgstr "" msgid "First date and time" msgstr "" msgid "Second date and time" msgstr "" msgid "Alternative time units" msgstr "" msgid "Result" msgstr "" msgid "Duration between two dates" msgstr "" msgid "Operation" msgstr "" msgid "add" msgstr "" msgid "subtract" msgstr "" msgid "Date and time to add or subtract from" msgstr "" msgid "Years" msgstr "" msgid "Months" msgstr "" msgid "Days" msgstr "" msgid "Weeks" msgstr "" msgid "Hours" msgstr "" msgid "Minutes" msgstr "" msgid "Seconds" msgstr "" msgid "Ignore weekend days" msgstr "" msgid "Reset fields" msgstr "" msgid "Time to add or subtract" msgstr "" msgid "Jump to" msgstr "" msgid "Add to or subtract from a date" msgstr "" msgid "Leap year" msgstr "" msgid "Yes" msgstr "" msgid "No" msgstr "" msgid "Chinese year animal" msgstr "" msgid "Number of days" msgstr "" msgid "Number of weeks" msgstr "" msgid "Number of weekend days" msgstr "" msgid "Year info" msgstr "" msgid "Current year" msgstr "" msgid "Alternative view" msgstr "" msgid "event" msgid_plural "events" msgstr[0] "" msgstr[1] "" msgid "No valid calendars defined" msgstr "" msgid "iCalendar events" msgstr "" msgid "Date" msgstr "" msgid "Time" msgstr "" msgid "Summary" msgstr "" msgid "Select output file" msgstr "" msgid "The list will be cleared and all entries will be lost." msgstr "" msgid "Done!" msgstr "" msgid "event exported" msgid_plural "events exported" msgstr[0] "" msgstr[1] "" msgid "iCalendar export" msgstr "" msgid "Day Selector" msgstr "" msgid "Use date period" msgstr "" msgid "Add" msgstr "" msgid "Clear" msgstr "" msgid "Remove" msgstr "" msgid "Output filename" msgstr "" msgid "Browse" msgstr "" msgid "Export" msgstr "" msgid "no entries" msgstr "" msgid "entry" msgid_plural "entries" msgstr[0] "" msgstr[1] "" msgid "Calendar notes" msgstr "" msgid "Search" msgstr "" msgid "Filter" msgstr "" msgid "Current month" msgstr "" msgid "Selected month" msgstr "" msgid "Selected year" msgstr "" msgid "Selected month and year" msgstr "" msgid "All notes" msgstr "" msgid "Case sensitive" msgstr "" msgid "Strikethrough past day notes" msgstr "" msgid "Note" msgstr "" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" msgid "full month name" msgstr "" msgid "day of the month" msgstr "" msgid "MM/DD/YY" msgstr "" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" msgid "Date header format" msgstr "" msgid "Set default format" msgstr "" msgid "Date format syntax" msgstr "" msgid "Day note marker" msgstr "" msgid "Event marker" msgstr "" msgid "Circle" msgstr "" msgid "Ellipse" msgstr "" msgid "Wave" msgstr "" msgid "Current day marker" msgstr "" msgid "Arrow" msgstr "" msgid "Free-hand circle" msgstr "" msgid "Colors" msgstr "" msgid "Header color" msgstr "" msgid "Weekend days color" msgstr "" msgid "Cursor color" msgstr "" msgid "Event marker color" msgstr "" msgid "Current day marker color" msgstr "" msgid "Birthday marker color" msgstr "" msgid "Date font" msgstr "" msgid "Calendar font" msgstr "" msgid "Note font" msgstr "" msgid "Enable block cursor" msgstr "" msgid "Cursor thickness" msgstr "" msgid "Thin" msgstr "" msgid "Thick" msgstr "" msgid "Edit category" msgstr "" msgid "Color" msgstr "" msgid "Name" msgstr "" msgid "Select ICS file" msgstr "" msgid "All Files" msgstr "" msgid "Calendar files (*.ics)" msgstr "" msgid "Modify ICAL parameters" msgstr "" msgid "Filename" msgstr "" msgid "Options" msgstr "" msgid "Disabled" msgstr "" msgid "Valid" msgstr "" msgid "Description" msgstr "" msgid "Full date" msgstr "" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "" msgid "Show day names" msgstr "" msgid "No month change" msgstr "" msgid "Show week numbers" msgstr "" msgid "Simple view in full-year calendar" msgstr "" msgid "Enable auxilary calendars" msgstr "" msgid "Ascending sorting in day notes browser" msgstr "" msgid "Enable spell checker in day notes" msgstr "" msgid "Show seconds" msgstr "" msgid "Appearance" msgstr "" msgid "Day categories" msgstr "" msgid "iCalendar files" msgstr "" msgid "Show in day info panel" msgstr "" msgid "Name day" msgstr "" msgid "Error printing" msgstr "" msgid "Printing properties" msgstr "" msgid "Month name" msgstr "" msgid "Day name" msgstr "" msgid "Events" msgstr "" msgid "Fonts" msgstr "" msgid "Birthdays" msgstr "" msgid "Namedays" msgstr "" msgid "Visible events" msgstr "" msgid "Padding" msgstr "" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" msgid "Portrait" msgstr "" msgid "Landscape" msgstr "" msgid "Timeline" msgstr "" msgid "From (hour)" msgstr "" msgid "Step (minutes)" msgstr "" msgid "To (hour)" msgstr "" msgid "No date" msgstr "" msgid "Rat" msgstr "" msgid "Ox" msgstr "" msgid "Tiger" msgstr "" msgid "Hare" msgstr "" msgid "Dragon" msgstr "" msgid "Snake" msgstr "" msgid "Horse" msgstr "" msgid "Sheep" msgstr "" msgid "Monkey" msgstr "" msgid "Fowl" msgstr "" msgid "Dog" msgstr "" msgid "Pig" msgstr "" msgid "Unknown" msgstr "" msgid "Aquarius" msgstr "" msgid "Pisces" msgstr "" msgid "Aries" msgstr "" msgid "Taurus" msgstr "" msgid "Gemini" msgstr "" msgid "Cancer" msgstr "" msgid "Leo" msgstr "" msgid "Virgo" msgstr "" msgid "Libra" msgstr "" msgid "Scorpio" msgstr "" msgid "Sagittarius" msgstr "" msgid "Capricorn" msgstr "" msgid "Cannot perform selected operation." msgstr "" msgid "Task has been modified or removed." msgstr "" msgid "Remind me later" msgstr "" msgid "Done" msgstr "" msgid "postponed" msgstr "" msgid "Show task" msgstr "" msgid "Alarm warning!" msgstr "" msgid "Day note" msgstr "" msgid "Type" msgstr "" msgid "Event" msgstr "" msgid "Task" msgstr "" msgid "Show Osmo" msgstr "" msgid "No birthdays defined" msgstr "" msgid "Birthdays list" msgstr "" msgid "Days to birthday" msgstr "" msgid "Age" msgstr "" msgid "Birthday date" msgstr "" msgid "today" msgstr "" msgid "Please select address" msgstr "" msgid "Information" msgstr "" msgid "Work" msgstr "" msgid "Home" msgstr "" msgid "Group" msgstr "" msgid "First name" msgstr "" msgid "Last name" msgstr "" msgid "Second name" msgstr "" msgid "Nickname" msgstr "" msgid "Tags" msgstr "" msgid "Name day date" msgstr "" msgid "Home address" msgstr "" msgid "Home postcode" msgstr "" msgid "Home city" msgstr "" msgid "Home state" msgstr "" msgid "Home country" msgstr "" msgid "Organization" msgstr "" msgid "Department" msgstr "" msgid "Work address" msgstr "" msgid "Work postcode" msgstr "" msgid "Work city" msgstr "" msgid "Work state" msgstr "" msgid "Work country" msgstr "" msgid "Fax" msgstr "" msgid "Home phone" msgstr "" msgid "Home phone 2" msgstr "" msgid "Home phone 3" msgstr "" msgid "Home phone 4" msgstr "" msgid "Work phone" msgstr "" msgid "Work phone 2" msgstr "" msgid "Work phone 3" msgstr "" msgid "Work phone 4" msgstr "" msgid "Cell phone" msgstr "" msgid "Cell phone 2" msgstr "" msgid "Cell phone 3" msgstr "" msgid "Cell phone 4" msgstr "" msgid "E-Mail" msgstr "" msgid "E-Mail 2" msgstr "" msgid "E-Mail 3" msgstr "" msgid "E-Mail 4" msgstr "" msgid "WWW" msgstr "" msgid "WWW 2" msgstr "" msgid "WWW 3" msgstr "" msgid "WWW 4" msgstr "" msgid "IM Gadu-Gadu" msgstr "" msgid "IM Yahoo" msgstr "" msgid "IM MSN" msgstr "" msgid "IM ICQ" msgstr "" msgid "IM AOL" msgstr "" msgid "IM Jabber" msgstr "" msgid "IM Skype" msgstr "" msgid "IM Tlen" msgstr "" msgid "Blog" msgstr "" msgid "Photo" msgstr "" msgid "Additional info" msgstr "" msgid "New contact" msgstr "" msgid "Remove contact" msgstr "" msgid "Edit contact" msgstr "" msgid "Show birthdays" msgstr "" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "" msgid "Export contacts" msgstr "" msgid "First Name" msgstr "" msgid "Last Name" msgstr "" msgid "All fields" msgstr "" msgid "Contact details" msgstr "" msgid "Close contact panel" msgstr "" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "" msgstr[1] "" msgid "Cannot create file." msgstr "" msgid "Output format" msgstr "" msgid "Add header" msgstr "" msgid "Fields to export" msgstr "" msgid "All" msgstr "" msgid "Invert" msgstr "" msgid "Select fields" msgstr "" msgid "Select CSV file" msgstr "" msgid "CSV (comma-separated values) files (*.csv)" msgstr "" msgid "Please select file first." msgstr "" msgid "Import type" msgstr "" msgid "File" msgstr "" msgid "Input filename" msgstr "" msgid "Import" msgstr "" msgid "Nothing to import." msgstr "" msgid "contact added" msgid_plural "contacts added" msgstr[0] "" msgstr[1] "" msgid "of" msgstr "" msgid "Record" msgstr "" msgid "Number fields per record" msgstr "" msgid "Use first record as header" msgstr "" msgid "Field type" msgstr "" msgid "Value" msgstr "" msgid "No records found in selected file." msgstr "" msgid "Cannot read file." msgstr "" msgid "Cannot open file." msgstr "" msgid "Selected contact will be removed." msgstr "" msgid "Select photo" msgstr "" msgid "Address" msgstr "" msgid "Postcode" msgstr "" msgid "City" msgstr "" msgid "State" msgstr "" msgid "Country" msgstr "" msgid "Add contact" msgstr "" msgid "Personal" msgstr "" msgid "Phones" msgstr "" msgid "Internet" msgstr "" msgid "Color of contact tags" msgstr "" msgid "Color of links" msgstr "" msgid "Font size" msgstr "" msgid "Name font size" msgstr "" msgid "Item font size" msgstr "" msgid "Photo size" msgstr "" msgid "Small" msgstr "" msgid "Medium" msgstr "" msgid "Large" msgstr "" msgid "Hide group column" msgstr "" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "" msgid "Groups" msgstr "" msgid "Visible columns in birthday browser" msgstr "" msgid "Show calendar" msgstr "" msgid "Show tasks" msgstr "" msgid "Show contacts" msgstr "" msgid "Show notes" msgstr "" msgid "Show options" msgstr "" msgid "Show small calendar window" msgstr "" msgid "Check for events since last run" msgstr "" msgid "Number of days to check forward for events (default: 0)" msgstr "" msgid "Set absolute path for settings and data files" msgstr "" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "" msgid "ERROR: Cannot create config files" msgstr "" msgid "Another copy of OSMO is already running." msgstr "" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" msgid "Do you really want to continue?" msgstr "" msgid "Warning" msgstr "" msgid "The note has changed." msgstr "" msgid "Do you want to save it?" msgstr "" msgid "No URLs found in the selection..." msgstr "" msgid "URLs will be opened in the default browser." msgstr "" msgid "Do you want to continue?" msgstr "" msgid "Question" msgstr "" msgid "Words" msgstr "" msgid "Lines" msgstr "" msgid "Characters" msgstr "" msgid "White characters" msgstr "" msgid "Bytes" msgstr "" msgid "Document" msgstr "" msgid "Selection" msgstr "" msgid "Created" msgstr "" msgid "Modified" msgstr "" msgid "New note" msgstr "" msgid "Add note" msgstr "" msgid "Edit note" msgstr "" msgid "Delete note" msgstr "" msgid "Remove note" msgstr "" msgid "Find" msgstr "" msgid "Clear attributes" msgstr "" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "" msgid "Insert current date and time" msgstr "" msgid "Insert separator" msgstr "" msgid "Statistics" msgstr "" msgid "Close editor" msgstr "" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "" msgid "Note name" msgstr "" msgid "Last changes" msgstr "" msgid "Read-only" msgstr "" msgid "Line" msgstr "" msgid "Column" msgstr "" msgid "case sensitive" msgstr "" msgid "Close find entry" msgstr "" msgid "Edit entry" msgstr "" msgid "Remember cursor position" msgstr "" msgid "Selected note will be removed." msgstr "" msgid "No further data recovery will be possible." msgstr "" msgid "Plain" msgstr "" msgid "Encrypted" msgstr "" msgid "Note type" msgstr "" msgid "Cannot open the note." msgstr "" msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "" msgid "Algorithm" msgstr "" msgid "Hashing" msgstr "" msgid "Compression" msgstr "" msgid "Ratio" msgstr "" msgid "Fast" msgstr "" msgid "Good" msgstr "" msgid "Best" msgstr "" msgid "Remember the last selected category" msgstr "" msgid "Use system format for date and time" msgstr "" msgid "Encryption" msgstr "" msgid "Visible columns" msgstr "" msgid "Categories" msgstr "" msgid "Notes options" msgstr "" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "" msgid "Left" msgstr "" msgid "Right" msgstr "" msgid "Top" msgstr "" msgid "Bottom" msgstr "" msgid "Use default stock icons" msgstr "" msgid "Disable underline in links" msgstr "" msgid "Draw rows in alternating colors" msgstr "" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "" msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "" msgid "DD-MM-YYYY" msgstr "" msgid "MM-DD-YYYY" msgstr "" msgid "YYYY-MM-DD" msgstr "" msgid "YYYY-DD-MM" msgstr "" msgid "Time format" msgstr "" msgid "hours" msgstr "" msgid "Spell checker language" msgstr "" msgid "Enable tooltips" msgstr "" msgid "Remember last selected page" msgstr "" msgid "Save data after every modification" msgstr "" msgid "Web browser" msgstr "" msgid "E-mail client" msgstr "" msgid "Sound player" msgstr "" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "" msgid "Enable system tray" msgstr "" msgid "Start minimised" msgstr "" msgid "Blink on events" msgstr "" msgid "Ignore day note events" msgstr "" msgid "Hide" msgstr "" msgid "Helpers" msgstr "" msgid "System tray" msgstr "" msgid "Edit" msgstr "" msgid "Go Down" msgstr "" msgid "Select date" msgstr "" msgid "Select font" msgstr "" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "" msgid "Edit day note" msgstr "" msgid "Save" msgstr "" msgid "Display full-year calendar" msgstr "" msgid "Help" msgstr "" msgid "Invalid item" msgstr "" msgid "Valid item" msgstr "" msgid "Edit task" msgstr "" msgid "Remove task" msgstr "" msgid "Import tasks" msgstr "" msgid "Export tasks" msgstr "" msgid "Change to previous date" msgstr "" msgid "Change to next date" msgstr "" msgid "Print" msgstr "" msgid "Normal" msgstr "" msgid "Recurrent" msgstr "" msgid "Started" msgstr "" msgid "Finished" msgstr "" msgid "All items" msgstr "" msgid "New task" msgstr "" msgid "Change due date to previous date" msgstr "" msgid "Change due date to next date" msgstr "" msgid "Print visible tasks list" msgstr "" msgid "Due date" msgstr "" msgid "Priority" msgstr "" msgid "Task details" msgstr "" msgid "Close description panel" msgstr "" msgid "No tasks with defined date found." msgstr "" msgid "Save tasks" msgstr "" msgid "tasks exported" msgstr "" msgid "Please select at least one day when recurrency is enabled." msgstr "" msgid "Set time" msgstr "" msgid "Tomorrow" msgstr "" msgid "Selected task will be removed." msgstr "" msgid "Basic" msgstr "" msgid "Select date and time" msgstr "" msgid "Low" msgstr "" msgid "High" msgstr "" msgid "Enable sound notification" msgstr "" msgid "Enable notification dialog" msgstr "" msgid "Advanced" msgstr "" msgid "Alarm warning" msgstr "" msgid "Postpone time" msgstr "" msgid "Alarm command" msgstr "" msgid "Recurrent task" msgstr "" msgid "Enable" msgstr "" msgid "Start" msgstr "" msgid "End" msgstr "" msgid "Interval" msgstr "" msgid "Time period" msgstr "" msgid "Date period" msgstr "" msgid "Repeat" msgstr "" msgid "Repeat in the following days" msgstr "" msgid "Ignore alarm when task expired offline" msgstr "" msgid "Select a font..." msgstr "" msgid "Color of items that are due today" msgstr "" msgid "Color of items that are due in the next 7 days" msgstr "" msgid "Color of items that are past due" msgstr "" msgid "Task info font" msgstr "" msgid "Show in bold tasks with high priority" msgstr "" msgid "Hide completed tasks" msgstr "" msgid "Delete completed tasks without confirmation" msgstr "" msgid "Add new task when double clicked on tasks list" msgstr "" msgid "minutes" msgstr "" msgid "0 for disable" msgstr "" msgid "Repeat sound alarm" msgstr "" msgid "times" msgstr "" msgid "Global notification command" msgstr "" msgid "Tasks options" msgstr "" msgid "Reminder options" msgstr "" msgid "Tasks list" msgstr "" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "" msgid "New Moon" msgstr "" msgid "Waxing Crescent Moon" msgstr "" msgid "Quarter Moon" msgstr "" msgid "Waxing Gibbous Moon" msgstr "" msgid "Full Moon" msgstr "" msgid "Waning Gibbous Moon" msgstr "" msgid "Last Quarter Moon" msgstr "" msgid "Waning Crescent Moon" msgstr "" msgid "Error" msgstr "" msgid "Selected file exist! Overwrite?" msgstr "" osmo-0.2.14/po/pt.po000664 001750 001750 00000110253 12561325524 014135 0ustar00pasppasp000000 000000 # Portuguese translation of Osmo # This file is distributed under the same license as the Osmo package. # Bruno Miguel , 2007-2008. # Bruno Castro Alves , 2012 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2014-08-06 09:53+0000\n" "Last-Translator: Bruno Castro Alves \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" msgid "About" msgstr "Sobre" msgid "Close" msgstr "Fechar" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "mudar para o separador anterior" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "mudar para o próximo separador" msgid "switch to selected page" msgstr "mudar para a página selecionada" msgid "show options window" msgstr "mostrar janela de opções" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "mudar a página nos separadores Configurações e Sobre" msgid "exit" msgstr "sair" #, fuzzy msgid "Space" msgstr "Guardar" msgid "select current date" msgstr "seleccionar a data actual" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "" #, fuzzy msgid "Arrows" msgstr "Amanhã" msgid "change day" msgstr "mudar o dia" msgid "Ctrl+Up/Down" msgstr "" #, fuzzy msgid "scroll the contents in the day info panel" msgstr "navegar nos conteúdos no painel de informação" msgid "change month" msgstr "mudar o mês" #, fuzzy msgid "Home/End" msgstr "Morada" msgid "change year" msgstr "mudar o ano" msgid "toggle calendars for the previous and next month" msgstr "alternar calendários para os anterior e próximo meses" #, fuzzy msgid "day notes browser" msgstr "Navegador web" msgid "assign background color to day note" msgstr "definir uma cor de fundo para a nota do dia" msgid "date calculator" msgstr "calculadora de datas" msgid "show full-year calendar" msgstr "seleccionar o calendário anual" msgid "jump to date" msgstr "mudar para outra data" #, fuzzy msgid "Delete" msgstr "Apagar a nota" msgid "remove day note" msgstr "apagar a nota do dia" #, fuzzy msgid "Alt+Arrows" msgstr "Amanhã" msgid "Esc" msgstr "" msgid "close editor" msgstr "fechar o editor" msgid "toggle bold" msgstr "" #, fuzzy msgid "toggle italic" msgstr "mostrar/esconder tarefas ocultas " #, fuzzy msgid "toggle underline" msgstr "Sublinhado" #, fuzzy msgid "toggle strikethrough" msgstr "Riscado" #, fuzzy msgid "toggle highlight" msgstr "Destacar" msgid "Arrows Up/Down" msgstr "" #, fuzzy msgid "toggle alternative view" msgstr "Unidades de tempo alternativas" #, fuzzy msgid "year info" msgstr "Informação do ano" msgid "set current year" msgstr "definir o ano atual" #, fuzzy msgid "close full-year calendar" msgstr "seleccionar o calendário anual" #, fuzzy msgid "Alt+a, Insert" msgstr "Inserir" msgid "add task" msgstr "adicionar tarefa" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "editar tarefa" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "remover tarefa" msgid "toggle hidden tasks" msgstr "mostrar/esconder tarefas ocultas " msgid "activate search field" msgstr "activar o campo de pesquisa" #, fuzzy msgid "Left, Right" msgstr "Right" msgid "change category filter" msgstr "mudar o filtro das categorias" msgid "close task info panel" msgstr "fechar o painel de informação de tarefa" msgid "Insert" msgstr "Inserir" msgid "add contact" msgstr "adicionar contacto" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "editar contacto" msgid "remove contact" msgstr "remover contacto" msgid "change search mode" msgstr "mudar o modo de pesquisa" msgid "close contact details panel" msgstr "fechar o painel de detalhe do contacto" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "abrir nota" msgid "add note" msgstr "adicionar nota" msgid "remove note" msgstr "remover a nota" msgid "edit note name and category" msgstr "editar o nome e categoria da nota" msgid "close note editor" msgstr "Fechar editor de notas" msgid "save note" msgstr "guardar contacto" msgid "find text" msgstr "pesquisar texto" msgid "clear selection attributes" msgstr "limpar atributos da selecção" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "O OSMO foi desenvolvido tendo em mente a conveniência do usuário, por isso " "existem muitos atalhos de teclado. Aqui está a lista completa:" msgid "General" msgstr "Geral" msgid "Calendar" msgstr "Calendário" #, fuzzy msgid "Note editor" msgstr "Fechar o editor" msgid "Full-year calendar" msgstr "Calendário anual" msgid "Tasks" msgstr "Tarefas" msgid "Contacts" msgstr "Contactos" msgid "Notes" msgstr "Notas" #, fuzzy msgid "Selector" msgstr "Escolher" #, fuzzy msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Uma pequena grande agenda!" msgid "compiled on" msgstr "compilado em" msgid "Programming" msgstr "Programação" msgid "Graphics" msgstr "Gráficos" msgid "Contributors" msgstr "Contribuidores" msgid "Translators" msgstr "Tradutores" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "" msgid "Compiled-in features" msgstr "Funcionalidades escolhidas na compilação" #, fuzzy msgid "iCalendar support" msgstr "Tipo de letra do calendário" #, fuzzy msgid "Encrypted notes support" msgstr "Encriptação" msgid "Backup support" msgstr "" #, fuzzy msgid "Printing support" msgstr "Tipo de letra do calendário" msgid "Spell checker support" msgstr "" msgid "version" msgstr "versão" msgid "SVN revision" msgstr "Revisão de SVN" msgid "Key shortcuts" msgstr "Teclas de atalho" msgid "License" msgstr "Licença" msgid "Save backup" msgstr "Salvar backup" msgid "Password protection" msgstr "Proteção por senha" msgid "Enter password" msgstr "Insira a palavra-passe" msgid "Re-enter password" msgstr "Reinsira a palavra-passe" msgid "Please enter the password" msgstr "Por favor, insira a senha" msgid "Passwords do not match!" msgstr "Palavras-passe não coincidem!" #, fuzzy msgid "Cannot create backup!" msgstr "Não é possível criar o ficheiro" msgid "Backup file saved successfully!" msgstr "Arquivo de backup salvado com sucesso!" msgid "Open backup file" msgstr "Abrir arquivo de backup" msgid "Osmo backup files (*.bck)" msgstr "Arquivo de backup do Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "Palavra-passe incorrecta" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "Tem a certeza?" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "nasceu a" msgid "year old" msgid_plural "years old" msgstr[0] "ano de idade" msgstr[1] "anos de idade" msgid "Current time" msgstr "Data actual" msgid "Day number" msgstr "Dia número" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dia até ao final do ano" msgstr[1] "dias até ao final do ano" msgid "the last day of the year" msgstr "o último dia do ano" msgid "Today distance" msgstr "" msgid "Week number" msgstr "Semana número" msgid "Marked days" msgstr "Dias marcados" msgid "Weekend days" msgstr "Fim-de-semana número" msgid "Moon phase" msgstr "Fase da lua" msgid "Zodiac sign" msgstr "Signo do zodíaco" msgid "Day notes" msgstr "Notas do dia" msgid "Day tasks" msgstr "Tarefas do dia" msgid "Birthday" msgstr "Aniversário" #, fuzzy msgid "Day category" msgstr "Categorias do dia" #, fuzzy msgid "Selected day note will be removed." msgstr "A nota do dia seleccionada será removida" msgid "Continue?" msgstr "Continuar?" msgid "Previous year" msgstr "Ano anterior" msgid "Previous month" msgstr "Mês anterior" msgid "Previous day" msgstr "Dia anterior" msgid "Today" msgstr "Hoje" msgid "Next day" msgstr "Próximo dia" msgid "Next month" msgstr "Próximo mês" msgid "Next year" msgstr "Próximo ano" msgid "Jump to date" msgstr "Ir para a data" #, fuzzy msgid "Print calendar" msgstr "Mostrar calendário" msgid "Date calculator" msgstr "Calculadora de datas" msgid "Backup data" msgstr "" #, fuzzy msgid "Restore data" msgstr "Resultado" msgid "Preferences" msgstr "Configurações" msgid "Quit" msgstr "Sair" msgid "Toggle day note panel" msgstr "Mudar para painel Notas do Dia" msgid "Add task" msgstr "Adicionar Tarefa" #, fuzzy msgid "Select day color" msgstr "Escolher cor para o dia" #, fuzzy msgid "Browse notes" msgstr "Mostrar notas" #, fuzzy msgid "Browse iCal events" msgstr "Ver entradas iCal" msgid "Export to iCal file" msgstr "" #, fuzzy msgid "Previous and next month" msgstr "Mês anterior e próximo" msgid "Close note panel" msgstr "Fechar painel de notas" msgid "Highlight" msgstr "Destacar" msgid "Strikethrough" msgstr "Riscado" msgid "Underline" msgstr "Sublinhado" msgid "Italic" msgstr "Itálico" msgid "Bold" msgstr "Negrito" msgid "Insert timeline" msgstr "Inserir cronograma" msgid "Clear text" msgstr "Limpar texto" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Escolher cor" msgid "None" msgstr "Nada" msgid "Cancel" msgstr "Cancelar" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "ano" msgstr[1] "anos" msgid "month" msgid_plural "months" msgstr[0] "mês" msgstr[1] "meses" msgid "day" msgid_plural "days" msgstr[0] "dia" msgstr[1] "dias" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" msgid "or" msgstr "ou" msgid "rounded down" msgstr "arredondado por defeito" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" #, fuzzy msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Fim-de-semana número" msgstr[1] "Fim-de-semana número" msgid "This calculator only supports dates after year 1." msgstr "Esta calculadora permite apenas datas a partir do ano 1." #, fuzzy msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Cor dos dias de fim-de-semana" msgstr[1] "Cor dos dias de fim-de-semana" msgid "Year" msgstr "Ano" msgid "Month" msgstr "Mês" msgid "Day" msgstr "Dia" msgid "Current date" msgstr "Data actual" msgid "Set current date" msgstr "Definir a data actual" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minuto" msgid "Second" msgstr "Segundo" msgid "Set current time" msgstr "Definir hora actual" msgid "Reset time" msgstr "Reiniciar a hora" msgid "First date and time" msgstr "Data e hora de início" msgid "Second date and time" msgstr "Data e hora de término" msgid "Alternative time units" msgstr "Unidades de tempo alternativas" msgid "Result" msgstr "Resultado" msgid "Duration between two dates" msgstr "Duração entre duas datas" msgid "Operation" msgstr "Operações" msgid "add" msgstr "adicionar" msgid "subtract" msgstr "subtrair" msgid "Date and time to add or subtract from" msgstr "Data e hora de onde subtrair ou adicionar" msgid "Years" msgstr "Anos" msgid "Months" msgstr "Meses" msgid "Days" msgstr "Dias" msgid "Weeks" msgstr "Semanas" msgid "Hours" msgstr "Horas" msgid "Minutes" msgstr "Minutos" msgid "Seconds" msgstr "Segundos" #, fuzzy msgid "Ignore weekend days" msgstr "Fim-de-semana número" msgid "Reset fields" msgstr "Reiniciar os campos" msgid "Time to add or subtract" msgstr "Tempo a adicionar ou subtrair" msgid "Jump to" msgstr "Ir para" msgid "Add to or subtract from a date" msgstr "Adicionar ou subtrair de uma data" #, fuzzy msgid "Leap year" msgstr "Saltar ano" msgid "Yes" msgstr "Sim" msgid "No" msgstr "Não" #, fuzzy msgid "Chinese year animal" msgstr "Animal do ano chinês" msgid "Number of days" msgstr "Número de dias" #, fuzzy msgid "Number of weeks" msgstr "Número de fins-de-semana" msgid "Number of weekend days" msgstr "Fim-de-semana número" msgid "Year info" msgstr "Informação do ano" msgid "Current year" msgstr "Corrente ano" #, fuzzy msgid "Alternative view" msgstr "Unidades de tempo alternativas" #, fuzzy msgid "event" msgid_plural "events" msgstr[0] "entrada" msgstr[1] "entradas" #, fuzzy msgid "No valid calendars defined" msgstr "Sem calendários definidos" #, fuzzy msgid "iCalendar events" msgstr "Entradas iCalendar" msgid "Date" msgstr "Data" #, fuzzy msgid "Time" msgstr "Cronograma" msgid "Summary" msgstr "Resumo" msgid "Select output file" msgstr "Seleccione o ficheiro de destino" msgid "The list will be cleared and all entries will be lost." msgstr "" msgid "Done!" msgstr "Feito!" #, fuzzy msgid "event exported" msgid_plural "events exported" msgstr[0] "contacto exportado" msgstr[1] "Contactos exportados" #, fuzzy msgid "iCalendar export" msgstr "Tipo de letra do calendário" #, fuzzy msgid "Day Selector" msgstr "Escolher" #, fuzzy msgid "Use date period" msgstr "Tipo de letra da data" msgid "Add" msgstr "Adicionar" msgid "Clear" msgstr "Limpar" msgid "Remove" msgstr "Apagar" msgid "Output filename" msgstr "Nome do destino" msgid "Browse" msgstr "Explorar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sem entradas" msgid "entry" msgid_plural "entries" msgstr[0] "entrada" msgstr[1] "entradas" #, fuzzy msgid "Calendar notes" msgstr "Tipo de letra do calendário" msgid "Search" msgstr "Pesquisar" #, fuzzy msgid "Filter" msgstr "Tipo de campo" #, fuzzy msgid "Current month" msgstr "Data actual" #, fuzzy msgid "Selected month" msgstr "Seleccionar tipo de letra" #, fuzzy msgid "Selected year" msgstr "Escolher" #, fuzzy msgid "Selected month and year" msgstr "Escolher" #, fuzzy msgid "All notes" msgstr "Todos os itens" #, fuzzy msgid "Case sensitive" msgstr "sensível ao tamanho da letra" msgid "Strikethrough past day notes" msgstr "Riscar notas do dia passadas" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Nome da nota" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "MM-DD-AAAA" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Formato da data" #, fuzzy msgid "Set default format" msgstr "Formato de destino" #, fuzzy msgid "Date format syntax" msgstr "Formato da data" #, fuzzy msgid "Day note marker" msgstr "Notas do dia" msgid "Event marker" msgstr "" msgid "Circle" msgstr "" msgid "Ellipse" msgstr "" #, fuzzy msgid "Wave" msgstr "Guardar" #, fuzzy msgid "Current day marker" msgstr "Data actual" #, fuzzy msgid "Arrow" msgstr "Amanhã" msgid "Free-hand circle" msgstr "" msgid "Colors" msgstr "Cores" msgid "Header color" msgstr "Cor do cabeçalho" msgid "Weekend days color" msgstr "Cor dos dias de fim-de-semana" msgid "Cursor color" msgstr "Cor do dia seleccionado" #, fuzzy msgid "Event marker color" msgstr "Data actual" #, fuzzy msgid "Current day marker color" msgstr "Data actual" #, fuzzy msgid "Birthday marker color" msgstr "Data actual" msgid "Date font" msgstr "Tipo de letra da data" msgid "Calendar font" msgstr "Tipo de letra do calendário" msgid "Note font" msgstr "Tipo de letra das notas" msgid "Enable block cursor" msgstr "Activar preenchimento" msgid "Cursor thickness" msgstr "Espessura do contorno" msgid "Thin" msgstr "Fino" msgid "Thick" msgstr "Grosso" #, fuzzy msgid "Edit category" msgstr "Categorias do dia" msgid "Color" msgstr "Cor" msgid "Name" msgstr "Nome" msgid "Select ICS file" msgstr "Seleccione o ficheiro ICS" msgid "All Files" msgstr "Todos os ficheiros" msgid "Calendar files (*.ics)" msgstr "Ficheiros de calendário (*.ics)" msgid "Modify ICAL parameters" msgstr "Alterar os parâmetros ICAL" msgid "Filename" msgstr "Nome do ficheiro" msgid "Options" msgstr "Configurações" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Válido" msgid "Description" msgstr "Descrição" #, fuzzy msgid "Full date" msgstr "Data de término" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "Semana começa na Segunda-Feira" msgid "Show day names" msgstr "Mostrar o nome dos dias" msgid "No month change" msgstr "Sem mudança do mês" msgid "Show week numbers" msgstr "Mostrar o número das semanas" msgid "Simple view in full-year calendar" msgstr "Vista simples no calendário anual" #, fuzzy msgid "Enable auxilary calendars" msgstr "Activar calendários auxiliares" msgid "Ascending sorting in day notes browser" msgstr "" msgid "Enable spell checker in day notes" msgstr "" #, fuzzy msgid "Show seconds" msgstr "Segundos" msgid "Appearance" msgstr "Aparência" msgid "Day categories" msgstr "Categorias do dia" msgid "iCalendar files" msgstr "Ficheiros iCalendar" msgid "Show in day info panel" msgstr "Mostrar no painel de informação do dia" #, fuzzy msgid "Name day" msgstr "Dia do nome" msgid "Error printing" msgstr "" msgid "Printing properties" msgstr "" #, fuzzy msgid "Month name" msgstr "Nome da nota" #, fuzzy msgid "Day name" msgstr "Dia número" #, fuzzy msgid "Events" msgstr "entrada" #, fuzzy msgid "Fonts" msgstr "Meses" #, fuzzy msgid "Birthdays" msgstr "Aniversário" #, fuzzy msgid "Namedays" msgstr "Nome" #, fuzzy msgid "Visible events" msgstr "Colunas visíveis" #, fuzzy msgid "Padding" msgstr "adicionar" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" #, fuzzy msgid "Portrait" msgstr "Prioridade" msgid "Landscape" msgstr "" msgid "Timeline" msgstr "Cronograma" msgid "From (hour)" msgstr "De (hora)" msgid "Step (minutes)" msgstr "Intervalo (em minutos)" msgid "To (hour)" msgstr "Para (hora)" msgid "No date" msgstr "Sem data" msgid "Rat" msgstr "Rato" msgid "Ox" msgstr "Boi" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lebre" msgid "Dragon" msgstr "Dragão" msgid "Snake" msgstr "Cobra" msgid "Horse" msgstr "Cavalo" msgid "Sheep" msgstr "Ovelha" msgid "Monkey" msgstr "Macaco" msgid "Fowl" msgstr "Galinha" msgid "Dog" msgstr "Cão" msgid "Pig" msgstr "Porco" msgid "Unknown" msgstr "Desconhecido" msgid "Aquarius" msgstr "Aquário" msgid "Pisces" msgstr "Peixes" msgid "Aries" msgstr "Carneiro" msgid "Taurus" msgstr "Touro" msgid "Gemini" msgstr "Gémeos" msgid "Cancer" msgstr "Caranguejo" msgid "Leo" msgstr "Leão" msgid "Virgo" msgstr "Virgem" msgid "Libra" msgstr "Balança" msgid "Scorpio" msgstr "Escorpião" msgid "Sagittarius" msgstr "Sagitário" msgid "Capricorn" msgstr "Capricórnio" msgid "Cannot perform selected operation." msgstr "" msgid "Task has been modified or removed." msgstr "" msgid "Remind me later" msgstr "" msgid "Done" msgstr "Feito" #, fuzzy msgid "postponed" msgstr "Código Postal" #, fuzzy msgid "Show task" msgstr "Mostrar tarefas" msgid "Alarm warning!" msgstr "" #, fuzzy msgid "Day note" msgstr "Notas do dia" msgid "Type" msgstr "" #, fuzzy msgid "Event" msgstr "entrada" msgid "Task" msgstr "Tarefa" #, fuzzy msgid "Show Osmo" msgstr "Mostrar tarefas" msgid "No birthdays defined" msgstr "Sem datas de aniversário" msgid "Birthdays list" msgstr "Lista de aniversários" msgid "Days to birthday" msgstr "Dias até ao aniversário" msgid "Age" msgstr "Idade" msgid "Birthday date" msgstr "Data de aniversário" #, fuzzy msgid "today" msgstr "Hoje" #, fuzzy msgid "Please select address" msgstr "limpar atributos da selecção" msgid "Information" msgstr "Informação" msgid "Work" msgstr "Empresa" msgid "Home" msgstr "Morada" msgid "Group" msgstr "Grupo" msgid "First name" msgstr "Nome" msgid "Last name" msgstr "Apelido" msgid "Second name" msgstr "Nome do meio" msgid "Nickname" msgstr "Alcunha" #, fuzzy msgid "Tags" msgstr "Tarefa" msgid "Name day date" msgstr "Dia do nome" msgid "Home address" msgstr "Morada de residência" msgid "Home postcode" msgstr "Código-postal de residência" msgid "Home city" msgstr "Cidade de residência" msgid "Home state" msgstr "Distrito de residência" msgid "Home country" msgstr "País de residência" msgid "Organization" msgstr "Organização" msgid "Department" msgstr "Departamento" msgid "Work address" msgstr "Morada do local de trabalho" msgid "Work postcode" msgstr "Código-postal do local de trabalho" msgid "Work city" msgstr "Cidade do local de trabalho" msgid "Work state" msgstr "Distrito do local de trabalho" msgid "Work country" msgstr "País local de trabalho" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefone de casa" msgid "Home phone 2" msgstr "Telefone de casa 2" msgid "Home phone 3" msgstr "Telefone de casa 3" msgid "Home phone 4" msgstr "Telefone de casa 4" msgid "Work phone" msgstr "Telefone do trabalho" msgid "Work phone 2" msgstr "Telefone do trabalho n.º 2" msgid "Work phone 3" msgstr "Telefone do trabalho n.º 3" msgid "Work phone 4" msgstr "Telefone do trabalho n.º 4" msgid "Cell phone" msgstr "Telemóvel" msgid "Cell phone 2" msgstr "Telemóvel n.º 2" msgid "Cell phone 3" msgstr "Telemóvel n.º 3" msgid "Cell phone 4" msgstr "Telemóvel n.º 4" msgid "E-Mail" msgstr "Email" msgid "E-Mail 2" msgstr "Email n.º 2" msgid "E-Mail 3" msgstr "Email n.º 3" msgid "E-Mail 4" msgstr "Email n.º 4" msgid "WWW" msgstr "Website" msgid "WWW 2" msgstr "Website n.º 2" msgid "WWW 3" msgstr "Website n.º 3" msgid "WWW 4" msgstr "Website n.º 4" msgid "IM Gadu-Gadu" msgstr "Contacto da rede Gadu-Gadu" msgid "IM Yahoo" msgstr "Contacto da rede Yahoo" msgid "IM MSN" msgstr "Contacto da rede MSN Messenger" msgid "IM ICQ" msgstr "Contacto da rede ICQ" msgid "IM AOL" msgstr "Contacto da rede AOL" msgid "IM Jabber" msgstr "Contacto da rede Jabber" msgid "IM Skype" msgstr "Contacto da rede Skype" msgid "IM Tlen" msgstr "Contacto da rede Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Foto" msgid "Additional info" msgstr "Informação adicional" msgid "New contact" msgstr "Novo contacto" msgid "Remove contact" msgstr "Apagar contacto" msgid "Edit contact" msgstr "Editar contacto" msgid "Show birthdays" msgstr "Mostrar aniversários" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "Importar contactos" msgid "Export contacts" msgstr "Exportar contactos" msgid "First Name" msgstr "Nome" msgid "Last Name" msgstr "Apelido" msgid "All fields" msgstr "Todos os campos" msgid "Contact details" msgstr "Detalhos do contacto" msgid "Close contact panel" msgstr "Fechar o painel Contactos" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contacto exportado" msgstr[1] "Contactos exportados" msgid "Cannot create file." msgstr "Não é possível criar o ficheiro" msgid "Output format" msgstr "Formato de destino" msgid "Add header" msgstr "Adicionar cabeçalho" msgid "Fields to export" msgstr "Campos a exportar" msgid "All" msgstr "Todos" msgid "Invert" msgstr "Inverter" msgid "Select fields" msgstr "Seleccione os campos" msgid "Select CSV file" msgstr "Seleccione o ficheiro CVS" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Ficheiro CVS (*.cvs)" msgid "Please select file first." msgstr "" #, fuzzy msgid "Import type" msgstr "Importar" #, fuzzy msgid "File" msgstr "Tipo de campo" #, fuzzy msgid "Input filename" msgstr "Nome do destino" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Nada a importar" msgid "contact added" msgid_plural "contacts added" msgstr[0] "contacto adicionado" msgstr[1] "contactos adicionados" msgid "of" msgstr "de" msgid "Record" msgstr "Registo" msgid "Number fields per record" msgstr "Número de campos por registo" msgid "Use first record as header" msgstr "Usar o primeiro registo como cabeçalho" msgid "Field type" msgstr "Tipo de campo" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Ficheiro sem entradas." msgid "Cannot read file." msgstr "Não é possível ler o ficheiro" msgid "Cannot open file." msgstr "Não é possível abrir o ficheiro" msgid "Selected contact will be removed." msgstr "Os contactos seleccionados serão removidos." msgid "Select photo" msgstr "Seleccione a foto" msgid "Address" msgstr "Morada" msgid "Postcode" msgstr "Código Postal" msgid "City" msgstr "Cidade" msgid "State" msgstr "Concelho" msgid "Country" msgstr "País" msgid "Add contact" msgstr "Adicionar contacto" msgid "Personal" msgstr "Pessoal" msgid "Phones" msgstr "Telefones" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Cor das tags dos contactos" msgid "Color of links" msgstr "Cor das hiperligações" #, fuzzy msgid "Font size" msgstr "Tamanho da foto" #, fuzzy msgid "Name font size" msgstr "Tamanho do tipo de letra do nome" #, fuzzy msgid "Item font size" msgstr "Tipo de letra da data" msgid "Photo size" msgstr "Tamanho da foto" msgid "Small" msgstr "Pequena" msgid "Medium" msgstr "Média" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Ocultar a coluna Grupos" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Outras" msgid "Groups" msgstr "Grupos" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Colunas visíveis" msgid "Show calendar" msgstr "Mostrar calendário" msgid "Show tasks" msgstr "Mostrar tarefas" msgid "Show contacts" msgstr "Mostrar contactos" msgid "Show notes" msgstr "Mostrar notas" msgid "Show options" msgstr "Mostrar opções" #, fuzzy msgid "Show small calendar window" msgstr "mostrar a widget do calendário" msgid "Check for events since last run" msgstr "" msgid "Number of days to check forward for events (default: 0)" msgstr "" msgid "Set absolute path for settings and data files" msgstr "" msgid "Match contacts with given string" msgstr "" #, fuzzy msgid "handy personal organizer" msgstr "Uma pequena grande agenda!" #, fuzzy msgid "ERROR: Cannot create config files" msgstr "Não é possível criar o ficheiro" msgid "Another copy of OSMO is already running." msgstr "O OSMO já está a ser executado." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "A execução simultânea de duas ou mais cópias do OSMO pode originar perda de " "dados." msgid "Do you really want to continue?" msgstr "Deseja continuar?" msgid "Warning" msgstr "Aviso" msgid "The note has changed." msgstr "A nota foi alterada" msgid "Do you want to save it?" msgstr "Deseja guardar?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Ficheiro sem entradas." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Deseja continuar?" msgid "Question" msgstr "Pergunta" #, fuzzy msgid "Words" msgstr "Empresa" #, fuzzy msgid "Lines" msgstr "Minutos" #, fuzzy msgid "Characters" msgstr "Caranguejo" msgid "White characters" msgstr "" #, fuzzy msgid "Bytes" msgstr "Óptimo" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Escolher" #, fuzzy msgid "Created" msgstr "Data actual" #, fuzzy msgid "Modified" msgstr "Modo" msgid "New note" msgstr "Nova nota" msgid "Add note" msgstr "Adicionar a nota" msgid "Edit note" msgstr "Editar a nota" msgid "Delete note" msgstr "Apagar a nota" msgid "Remove note" msgstr "Remover a nota" msgid "Find" msgstr "Pesquisar" msgid "Clear attributes" msgstr "Limpar os atributos" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Guardar a nota" #, fuzzy msgid "Insert current date and time" msgstr "Data e hora de término" msgid "Insert separator" msgstr "" msgid "Statistics" msgstr "" msgid "Close editor" msgstr "Fechar o editor" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "Categoria" msgid "Note name" msgstr "Nome da nota" msgid "Last changes" msgstr "Últimas alterações" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Minutos" #, fuzzy msgid "Column" msgstr "País" #, fuzzy msgid "case sensitive" msgstr "sensível ao tamanho da letra" #, fuzzy msgid "Close find entry" msgstr "Fechar entrada de pesquisa" msgid "Edit entry" msgstr "Editar entrada" #, fuzzy msgid "Remember cursor position" msgstr "configurações" msgid "Selected note will be removed." msgstr "A nota seleccionada será removida." msgid "No further data recovery will be possible." msgstr "Não será possível recuperar mais dados." #, fuzzy msgid "Plain" msgstr "adicionar" #, fuzzy msgid "Encrypted" msgstr "Encriptação" #, fuzzy msgid "Note type" msgstr "Importar" #, fuzzy msgid "Cannot open the note." msgstr "Não é possível abrir o ficheiro" msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "Organização" msgid "Algorithm" msgstr "Algoritmo" msgid "Hashing" msgstr "Tipo de encriptação" msgid "Compression" msgstr "Compressão" msgid "Ratio" msgstr "Rácio" msgid "Fast" msgstr "Rápido" msgid "Good" msgstr "Bom" msgid "Best" msgstr "Óptimo" #, fuzzy msgid "Remember the last selected category" msgstr "Recordar a última página seleccionada" #, fuzzy msgid "Use system format for date and time" msgstr "Data e hora de término" msgid "Encryption" msgstr "Encriptação" msgid "Visible columns" msgstr "Colunas visíveis" msgid "Categories" msgstr "Categorias" #, fuzzy msgid "Notes options" msgstr "Mostrar opções" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Posição dos separadores" msgid "Left" msgstr "Esquerda" msgid "Right" msgstr "Right" msgid "Top" msgstr "Topo" msgid "Bottom" msgstr "Fundo" #, fuzzy msgid "Use default stock icons" msgstr "Usar ícones padrão (é necessário reiniciar)" msgid "Disable underline in links" msgstr "Desactivar o sublinhado nas hiperligações" #, fuzzy msgid "Draw rows in alternating colors" msgstr "Mostrar fileiras em cores alternadas" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Pelo menos um módulo tem que estar activo." msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "Formato da data" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Formato da data" msgid "hours" msgstr "hora" msgid "Spell checker language" msgstr "" msgid "Enable tooltips" msgstr "Activar balões de sugestões" msgid "Remember last selected page" msgstr "Recordar a última página seleccionada" msgid "Save data after every modification" msgstr "" msgid "Web browser" msgstr "Navegador web" msgid "E-mail client" msgstr "Cliente de email" #, fuzzy msgid "Sound player" msgstr "Nome do meio" #, fuzzy, c-format msgid "The %s pattern will be replaced with web address" msgstr "O padrão %s será substituido por www ou endereço de email" #, fuzzy, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "O padrão %s será substituido por www ou endereço de email" #, fuzzy, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "O padrão %s será substituido por www ou endereço de email" msgid "Enable system tray" msgstr "Activar área de notificação" msgid "Start minimised" msgstr "Iniciar minimizado" msgid "Blink on events" msgstr "" #, fuzzy msgid "Ignore day note events" msgstr "fechar o painel Nota do Dia" msgid "Hide" msgstr "Esconder" msgid "Helpers" msgstr "Programas externos" msgid "System tray" msgstr "Ãrea de notificação" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "" msgid "Select date" msgstr "Seleccionar data" msgid "Select font" msgstr "Seleccionar tipo de letra" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar nota do dia" msgid "Save" msgstr "Guardar" msgid "Display full-year calendar" msgstr "Mostrar o calendário anual" msgid "Help" msgstr "Ajuda" msgid "Invalid item" msgstr "Item inválido" msgid "Valid item" msgstr "Item válido" msgid "Edit task" msgstr "Editar Tarefa" msgid "Remove task" msgstr "Apagar tarefa" #, fuzzy msgid "Import tasks" msgstr "Importar contactos" #, fuzzy msgid "Export tasks" msgstr "Exportar contactos" #, fuzzy msgid "Change to previous date" msgstr "mudar para o separador anterior" msgid "Change to next date" msgstr "" #, fuzzy msgid "Print" msgstr "Prioridade" #, fuzzy msgid "Normal" msgstr "remover tarefa" #, fuzzy msgid "Recurrent" msgstr "Definir a data actual" msgid "Started" msgstr "Iniciada" #, fuzzy msgid "Finished" msgstr "Pesquisar" msgid "All items" msgstr "Todos os itens" msgid "New task" msgstr "Nova tarefa" msgid "Change due date to previous date" msgstr "" msgid "Change due date to next date" msgstr "" msgid "Print visible tasks list" msgstr "" msgid "Due date" msgstr "Data de término" msgid "Priority" msgstr "Prioridade" msgid "Task details" msgstr "Detalhes da tarefa" msgid "Close description panel" msgstr "Fechar painel informativo" msgid "No tasks with defined date found." msgstr "" #, fuzzy msgid "Save tasks" msgstr "Tarefas do dia" #, fuzzy msgid "tasks exported" msgstr "contacto exportado" msgid "Please select at least one day when recurrency is enabled." msgstr "" #, fuzzy msgid "Set time" msgstr "Reiniciar a hora" msgid "Tomorrow" msgstr "Amanhã" msgid "Selected task will be removed." msgstr "As tarefas seleccionadas serão removidas" msgid "Basic" msgstr "" #, fuzzy msgid "Select date and time" msgstr "Data e hora de término" msgid "Low" msgstr "Baixa" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "" msgid "Enable notification dialog" msgstr "" msgid "Advanced" msgstr "" #, fuzzy msgid "Alarm warning" msgstr "Aviso" #, fuzzy msgid "Postpone time" msgstr "Código Postal" msgid "Alarm command" msgstr "" #, fuzzy msgid "Recurrent task" msgstr "Definir a data actual" msgid "Enable" msgstr "" #, fuzzy msgid "Start" msgstr "Iniciada" msgid "End" msgstr "" #, fuzzy msgid "Interval" msgstr "Geral" msgid "Time period" msgstr "" #, fuzzy msgid "Date period" msgstr "Tipo de letra da data" #, fuzzy msgid "Repeat" msgstr "Rato" msgid "Repeat in the following days" msgstr "" msgid "Ignore alarm when task expired offline" msgstr "" msgid "Select a font..." msgstr "Seleccione o tipo de letra" msgid "Color of items that are due today" msgstr "Cor dos itens que expiram hoje" msgid "Color of items that are due in the next 7 days" msgstr "Cor dos itens que expiram nos próximos 7 dias" msgid "Color of items that are past due" msgstr "Cor dos itens que expiraram" msgid "Task info font" msgstr "Tipo de letra da informação da tarefa" msgid "Show in bold tasks with high priority" msgstr "Mostrar tarefas com prioridade alta em negrito" msgid "Hide completed tasks" msgstr "Ocultar tarefas completas" msgid "Delete completed tasks without confirmation" msgstr "Apagar tarefas completas sem pedir confirmação" msgid "Add new task when double clicked on tasks list" msgstr "" #, fuzzy msgid "minutes" msgstr "minuto" msgid "0 for disable" msgstr "" msgid "Repeat sound alarm" msgstr "" #, fuzzy msgid "times" msgstr "Reiniciar a hora" msgid "Global notification command" msgstr "" msgid "Tasks options" msgstr "Configurações das tarefas" #, fuzzy msgid "Reminder options" msgstr "configurações" #, fuzzy msgid "Tasks list" msgstr "Configurações das tarefas" #. TRANSLATORS: "No." is an abbreviation of word "number" #, fuzzy msgid "No." msgstr "Não" msgid "New Moon" msgstr "Lua Nova" msgid "Waxing Crescent Moon" msgstr "" msgid "Quarter Moon" msgstr "Quarto Crescente" msgid "Waxing Gibbous Moon" msgstr "" msgid "Full Moon" msgstr "Lua Cheia" msgid "Waning Gibbous Moon" msgstr "" msgid "Last Quarter Moon" msgstr "Última lua em quarto-crescente" msgid "Waning Crescent Moon" msgstr "" msgid "Error" msgstr "Erro" msgid "Selected file exist! Overwrite?" msgstr "O ficheiro seleccionado já existe. Deseja substituir?" #~ msgid "Select and show first item after search" #~ msgstr "Seleccionar e mostrar o primeiro nome após a pesquisa" #~ msgid "Order" #~ msgstr "Ordenação" #~ msgid "Mode" #~ msgstr "Modo" #~ msgid "Ascending" #~ msgstr "Ascendente" #~ msgid "Descending" #~ msgstr "Descendente" #~ msgid "Sorting" #~ msgstr "Ordenação da apresentação" osmo-0.2.14/po/he.po000664 001750 001750 00000111336 12561325524 014111 0ustar00pasppasp000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-07-30 08:37+0000\n" "Last-Translator: pasp \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/osmo/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "About" msgstr " ×ודות" msgid "Close" msgstr "סגור" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "כרטיסייה קודמת" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "כרטיסייה הב××”" msgid "switch to selected page" msgstr "החלף לעמוד נבחר" msgid "show options window" msgstr "הצג חלון ×פשרויות" msgid "show about window" msgstr "הצג חלון ×ודות" msgid "toggle fullscreen mode" msgstr "החלף מצב מסך מל×" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "החלף עמוד בתוך כרטיסיית ×פשרויות ו×ודות" msgid "exit" msgstr "יצי××”" msgid "Space" msgstr "‎רווח" msgid "select current date" msgstr "‎בחר ת×ריך נוכחי" msgid "Ctrl+Space" msgstr "Ctrl+רווח‎" msgid "toggle personal data visibility" msgstr "החלף ר×ות מידע ×ישי" msgid "Arrows" msgstr "‎חצי×‎" msgid "change day" msgstr "החלף יו×" msgid "Ctrl+Up/Down" msgstr "Ctrl+מעלה/מטה‎" msgid "scroll the contents in the day info panel" msgstr "" msgid "change month" msgstr "החלף חודש" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "החלף שנה" msgid "toggle calendars for the previous and next month" msgstr "" msgid "day notes browser" msgstr "דפדפן פתקי יו×" msgid "assign background color to day note" msgstr "הקצה צבע רקע לפתק יו×" msgid "date calculator" msgstr "מחשבון ת×ריך" msgid "show full-year calendar" msgstr "הצג לוח שנה מל×" msgid "jump to date" msgstr "קפוץ ×ל ת×ריך" msgid "Delete" msgstr "Delete" msgid "remove day note" msgstr "הסר פתק יו×" msgid "Alt+Arrows" msgstr "Alt+חצי×‎" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "סגור עורך" msgid "toggle bold" msgstr "מודגש" msgid "toggle italic" msgstr "נטוי" msgid "toggle underline" msgstr "קו תחתון" msgid "toggle strikethrough" msgstr "קו חוצה" msgid "toggle highlight" msgstr "הדגש" msgid "Arrows Up/Down" msgstr "â€Ž×—×¦×™× ×ž×¢×œ×”/מטה‎" msgid "toggle alternative view" msgstr "החלף תצוגה חלופית" msgid "year info" msgstr "מידע שנה" msgid "set current year" msgstr "קבע שנה נוכחית" msgid "close full-year calendar" msgstr "סגור לוח שנה מל×" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "הוסף מטלה" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "ערוך מטלה" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "הסר מטלה" msgid "toggle hidden tasks" msgstr "החלף משימות נסתרות" msgid "activate search field" msgstr "הפעל שדה חיפוש" msgid "Left, Right" msgstr "‎שמ×ל, ימין‎" msgid "change category filter" msgstr "החלף מסנן קטגוריה" msgid "close task info panel" msgstr "סגור לוח מידע מטלה" msgid "Insert" msgstr "Insert" msgid "add contact" msgstr "הוסף ×יש קשר" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "ערוך ×יש קשר" msgid "remove contact" msgstr "הסר ×יש קשר" msgid "change search mode" msgstr "החלף מצב חיפוש" msgid "close contact details panel" msgstr "סגור לוח פרטי ×יש קשר" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "פתח פתק" msgid "add note" msgstr "הוסף פתק" msgid "remove note" msgstr "הסר פתק" msgid "edit note name and category" msgstr "ערוך ×©× ×¤×ª×§ וקטגוריה" msgid "close note editor" msgstr "סגור עורך פתק" msgid "save note" msgstr "שמור פתק" msgid "find text" msgstr "×ž×¦× ×ª×ž×œ×™×œ" msgid "clear selection attributes" msgstr "טהר עיצוב בחירה" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "â€OSMO תוכנן ×‘×©×™× ×œ×‘ לנוחיות המשתמש, כך שיש קיצורי דרך מקש רבי×. הרי הרשימה המל××”:" msgid "General" msgstr "‎כללי" msgid "Calendar" msgstr "‎לוח שנה" msgid "Note editor" msgstr "‎עורך פתקי×" msgid "Full-year calendar" msgstr "‎לוח שנה מל×" msgid "Tasks" msgstr "‎מטלות" msgid "Contacts" msgstr "‎×נשי קשר" msgid "Notes" msgstr "‎פתקי×" msgid "Selector" msgstr "‎בורר" msgid "Editor" msgstr "‎עורך" msgid "A handy personal organizer" msgstr "מ×רגן ×ישי שימושי" msgid "compiled on" msgstr "הודר בת×ריך" msgid "Programming" msgstr "‎תכנות" msgid "Graphics" msgstr "‎מת×ר ציורי" msgid "Contributors" msgstr "‎תורמי×" msgid "Translators" msgstr "‎מתרגמי×" msgid "Mailing lists" msgstr "‎רשימות תפוצה" msgid "Bug tracker" msgstr "Bug tracker (מעקב בעיות)" msgid "Feature requests" msgstr "‎בקשת תכונות" msgid "Available modules" msgstr "×ž×•×“×•×œ×™× ×–×ž×™× ×™×" msgid "Compiled-in features" msgstr "תכונות Compiled-in" msgid "iCalendar support" msgstr "תמיכת iCalendar‭â€" msgid "Encrypted notes support" msgstr "תמיכת ×¤×ª×§×™× ×ž×•×¦×¤× ×™×" msgid "Backup support" msgstr "תמיכת גיבוי" msgid "Printing support" msgstr "תמיכת הדפסה" msgid "Spell checker support" msgstr "תמיכת בודק ×יות" msgid "version" msgstr "גרס×" msgid "SVN revision" msgstr "רביזיה SVN" msgid "Key shortcuts" msgstr " מקשי קיצור" msgid "License" msgstr " רשיון" msgid "Save backup" msgstr "שמירת גיבוי" msgid "Password protection" msgstr "הגנת סיסמה" msgid "Enter password" msgstr "הזן סיסמה" msgid "Re-enter password" msgstr "הזן סיסמה שוב" msgid "Please enter the password" msgstr "× × ×œ×”×–×™×Ÿ ×ת הסיסמה" msgid "Passwords do not match!" msgstr "סיסמ×ות ×œ× ×ª×•×מות!" msgid "Cannot create backup!" msgstr "×œ× ×ž×¡×•×’×œ ליצור גיבוי!" msgid "Backup file saved successfully!" msgstr "קובץ גיבוי נשמר בהצלחה!" msgid "Open backup file" msgstr "פתיחת קובץ גיבוי" msgid "Osmo backup files (*.bck)" msgstr "קבצי גיבוי Osmo â€(‎*.bck)" msgid "This is not Osmo backup file" msgstr "קובץ ×–×” ×ינו קובץ גיבוי OSMO" msgid "Incorrect password!" msgstr "סיסמה שגויה!" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "×”×× ×“×¢×ª×š גמורה?" msgid "Osmo has to be restarted now..." msgstr "על Osmo להת×תחל כעת..." msgid "was born" msgstr "נולד/×”" msgid "year old" msgid_plural "years old" msgstr[0] "שנה" msgstr[1] "שני×" msgid "Current time" msgstr "זמן נוכחי" msgid "Day number" msgstr "×™×•× ×ž×¡×¤×¨" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "×™×•× ×¢×“ סוף השנה" msgstr[1] "×™×ž×™× ×¢×“ סוף השנה" msgid "the last day of the year" msgstr "×”×™×•× ×”×חרון שבשנה" msgid "Today distance" msgstr "" msgid "Week number" msgstr "שבוע מספר" msgid "Marked days" msgstr "×™×ž×™× ×ž×¡×•×ž× ×™×" msgid "Weekend days" msgstr "ימי סופ״ש" msgid "Moon phase" msgstr "פ××–×” ירחית" msgid "Zodiac sign" msgstr "מזל ×סטרולוגי" msgid "Day notes" msgstr "פתקי יו×" msgid "Day tasks" msgstr "מטלות היו×" msgid "Birthday" msgstr "×™×•× ×”×•×œ×“×ª" msgid "Day category" msgstr "קטגוריית יו×" msgid "Selected day note will be removed." msgstr "פתק ×™×•× × ×‘×—×¨ יוסר." msgid "Continue?" msgstr "להמשיך?" msgid "Previous year" msgstr "שנה קודמת" msgid "Previous month" msgstr "חודש קוד×" msgid "Previous day" msgstr "×™×•× ×§×•×“×" msgid "Today" msgstr "היו×" msgid "Next day" msgstr "×™×•× ×”×‘×" msgid "Next month" msgstr "חודש הב×" msgid "Next year" msgstr "שנה הב××”" msgid "Jump to date" msgstr "קפוץ ×ל ת×ריך" msgid "Print calendar" msgstr "הדפס לוח שנה" msgid "Date calculator" msgstr "מחשבון ת×ריך" msgid "Backup data" msgstr "גבה מידע" msgid "Restore data" msgstr "שחזר מידע" msgid "Preferences" msgstr "העדפות" msgid "Quit" msgstr "יצי××”" msgid "Toggle day note panel" msgstr "החלף לוח פתק יו×" msgid "Add task" msgstr "הוסף מטלה" msgid "Select day color" msgstr "בחר צבע יו×" msgid "Browse notes" msgstr "עיין בפתקי×" msgid "Browse iCal events" msgstr "עיין ב×ירועי iCal" msgid "Export to iCal file" msgstr "×™×¦×•× ×œ×§×•×‘×¥ iCal" msgid "Previous and next month" msgstr "חודש ×§×•×“× ×•×‘×" msgid "Close note panel" msgstr "סגור לוח פתק" msgid "Highlight" msgstr "הדגש" msgid "Strikethrough" msgstr "קו חוצה" msgid "Underline" msgstr "קו תחתון" msgid "Italic" msgstr "נטוי" msgid "Bold" msgstr "בולט" msgid "Insert timeline" msgstr "הכנס ציר זמן" msgid "Clear text" msgstr "טהר תמליל" msgid "Info" msgstr "מידע" msgid "Select color" msgstr "בחר צבע" msgid "None" msgstr "לל×" msgid "Cancel" msgstr "ביטול" msgid "OK" msgstr "×ישור" msgid "year" msgid_plural "years" msgstr[0] "שנה" msgstr[1] "שני×" msgid "month" msgid_plural "months" msgstr[0] "חודש" msgstr[1] "חודשי×" msgid "day" msgid_plural "days" msgstr[0] "יו×" msgstr[1] "ימי×" msgid "hour" msgid_plural "hours" msgstr[0] "שעה" msgstr[1] "שעות" msgid "minute" msgid_plural "minutes" msgstr[0] "דקה" msgstr[1] "דקות" msgid "second" msgid_plural "seconds" msgstr[0] "שניה" msgstr[1] "שניות" msgid "or" msgstr "×ו" msgid "rounded down" msgstr "מתעגלות" msgid "week" msgid_plural "weeks" msgstr[0] "שבוע" msgstr[1] "שבועות" msgid "working day" msgid_plural "working days" msgstr[0] "×™×•× ×¢×‘×•×“×”" msgstr[1] "ימי עבודה" msgid "time is ignored" msgstr "זמן ×ינו מוחשב" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "×™×•× ×¡×•×¤×´×©" msgstr[1] "ימי סופ״ש" msgid "This calculator only supports dates after year 1." msgstr "" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "×™×•× ×¡×•×¤×´×© ×œ× ×ž×•×—×©×‘" msgstr[1] "ימי סופ״ש ×œ× ×ž×•×—×©×‘×™×" msgid "Year" msgstr "שנה" msgid "Month" msgstr "חודש" msgid "Day" msgstr "יו×" msgid "Current date" msgstr "ת×ריך נוכחי" msgid "Set current date" msgstr "קבע ת×ריך נוכחי" msgid "Hour" msgstr "שעה" msgid "Minute" msgstr "דקה" msgid "Second" msgstr "שניה" msgid "Set current time" msgstr "קבע זמן נוכחי" msgid "Reset time" msgstr "×פס זמן" msgid "First date and time" msgstr "ת×ריך ושעה ר×שוני×" msgid "Second date and time" msgstr "ת×ריך ושעה ×חרוני×" msgid "Alternative time units" msgstr "יחידות זמן חלופיות" msgid "Result" msgstr "תוצ××”" msgid "Duration between two dates" msgstr "פרק זמן בין שני ת×ריכי×" msgid "Operation" msgstr "פעולה" msgid "add" msgstr "הוסף" msgid "subtract" msgstr "הפחת" msgid "Date and time to add or subtract from" msgstr "ת×ריך וזמן להפחית ×ו להוסיף מתוך" msgid "Years" msgstr "שני×" msgid "Months" msgstr "חודשי×" msgid "Days" msgstr "ימי×" msgid "Weeks" msgstr "שבועות" msgid "Hours" msgstr "שעות" msgid "Minutes" msgstr "דקות" msgid "Seconds" msgstr "שניה" msgid "Ignore weekend days" msgstr "×”×ª×¢×œ× ×ž×™×ž×™ סופ״ש" msgid "Reset fields" msgstr "×פס שדות" msgid "Time to add or subtract" msgstr "זמן להוספה ×ו להחסרה" msgid "Jump to" msgstr "קפוץ ×ל" msgid "Add to or subtract from a date" msgstr "הוסף ×ו הסר מתוך ת×ריך" msgid "Leap year" msgstr "שנה מעוברת" msgid "Yes" msgstr "כן" msgid "No" msgstr "ל×" msgid "Chinese year animal" msgstr "שנת ×—×™×” סינית" msgid "Number of days" msgstr "מספר ימי×" msgid "Number of weeks" msgstr "מספר שבועות" msgid "Number of weekend days" msgstr "מספר ימי סופ״ש" msgid "Year info" msgstr "מידע שנה" msgid "Current year" msgstr "שנה נוכחית" msgid "Alternative view" msgstr "תצוגה חלופית" msgid "event" msgid_plural "events" msgstr[0] "×ירוע" msgstr[1] "×ירועי×" msgid "No valid calendars defined" msgstr "" msgid "iCalendar events" msgstr "×ירועי iCalendar" msgid "Date" msgstr "ת×ריך" msgid "Time" msgstr "זמן" msgid "Summary" msgstr "תמצית" msgid "Select output file" msgstr "בחר קובץ פלט" msgid "The list will be cleared and all entries will be lost." msgstr "" msgid "Done!" msgstr "סוי×!" msgid "event exported" msgid_plural "events exported" msgstr[0] "" msgstr[1] "" msgid "iCalendar export" msgstr "×™×™×¦×•× iCalendar" msgid "Day Selector" msgstr "בורר יו×" msgid "Use date period" msgstr "" msgid "Add" msgstr "הוסף" msgid "Clear" msgstr "טהר" msgid "Remove" msgstr "הסרה" msgid "Output filename" msgstr "×©× ×§×•×‘×¥ פלט" msgid "Browse" msgstr "עיין" msgid "Export" msgstr "ייצו×" msgid "no entries" msgstr "×ין רשומות" msgid "entry" msgid_plural "entries" msgstr[0] "‪רשומה" msgstr[1] "רשומות" msgid "Calendar notes" msgstr "פתקי לוח שנה" msgid "Search" msgstr "חיפוש" msgid "Filter" msgstr "מסנן" msgid "Current month" msgstr "חודש נוכחי" msgid "Selected month" msgstr "חודש נבחר" msgid "Selected year" msgstr "שנה נבחרת" msgid "Selected month and year" msgstr "חודש ושנה נבחרי×" msgid "All notes" msgstr "כל הפתקי×" msgid "Case sensitive" msgstr "תלוי רישיות" msgid "Strikethrough past day notes" msgstr "סמן בקו חוצה פתקי ימי עבר" msgid "Note" msgstr "פתק" msgid "Syntax" msgstr "תחביר" msgid "abbreviated weekday name" msgstr "×©× ×™×•× ×—×•×œ מקוצר" msgid "full weekday name" msgstr "×©× ×™×•× ×—×•×œ מל×" msgid "abbreviated month name" msgstr "×©× ×—×•×“×© מקוצר" msgid "full month name" msgstr "×©× ×—×•×“×© מל×" msgid "day of the month" msgstr "×™×•× ×©×œ חודש" msgid "MM/DD/YY" msgstr "" msgid "day of the month without leading zeros" msgstr "×™×•× ×©×œ חודש ×œ×œ× ××¤×¡×™× ×ž×•×‘×™×œ×™×" msgid "year without century" msgstr "שנה בלי מ××”" msgid "year with century" msgstr "שנה ×¢× ×ž××”" msgid "Date header format" msgstr "פורמט תקורת ת×ריך" msgid "Set default format" msgstr "×פס ×ל פורמט משתמט" msgid "Date format syntax" msgstr "תחביר פורמט ת×ריך" msgid "Day note marker" msgstr "" msgid "Event marker" msgstr "סמן ×ירוע" msgid "Circle" msgstr "עיגול" msgid "Ellipse" msgstr "×ליפסה" msgid "Wave" msgstr "גל" msgid "Current day marker" msgstr "" msgid "Arrow" msgstr "×—×¥" msgid "Free-hand circle" msgstr "עיגול כתב-יד" msgid "Colors" msgstr "צבעי×" msgid "Header color" msgstr "צבע תקורה" msgid "Weekend days color" msgstr "צבע ימי סופ״ש" msgid "Cursor color" msgstr "צבע סמן" msgid "Event marker color" msgstr "צבע סמן ×ירוע" msgid "Current day marker color" msgstr "" msgid "Birthday marker color" msgstr "" msgid "Date font" msgstr "גופן ת×ריך" msgid "Calendar font" msgstr "גופן לוח שנה" msgid "Note font" msgstr "גופן פתק" msgid "Enable block cursor" msgstr "" msgid "Cursor thickness" msgstr "עובי סמן" msgid "Thin" msgstr "דק" msgid "Thick" msgstr "עבה" msgid "Edit category" msgstr "ערוך קטגוריה" msgid "Color" msgstr "צבע" msgid "Name" msgstr "ש×" msgid "Select ICS file" msgstr "בחר קובץ ICS" msgid "All Files" msgstr "כל הקבצי×" msgid "Calendar files (*.ics)" msgstr "קבצי לוח שנה (‎*.ics)" msgid "Modify ICAL parameters" msgstr "הת×מת פרמטרי ICAL" msgid "Filename" msgstr "×©× ×§×•×‘×¥" msgid "Options" msgstr "×פשרויות" msgid "Disabled" msgstr "מנוטרל" msgid "Valid" msgstr "תקף" msgid "Description" msgstr "תי×ור" msgid "Full date" msgstr "ת×ריך מל×" msgid "Mark" msgstr "סימן" msgid "Week start on Monday" msgstr "שבוע מתחיל ×‘×™×•× ×©× ×™" msgid "Show day names" msgstr "הצג שמות יו×" msgid "No month change" msgstr "" msgid "Show week numbers" msgstr "הצג מספרי שבוע" msgid "Simple view in full-year calendar" msgstr "תצוגה פשוטה בלוח שנה מל×" msgid "Enable auxilary calendars" msgstr "" msgid "Ascending sorting in day notes browser" msgstr "" msgid "Enable spell checker in day notes" msgstr "×פשר בדיקת ×יות בפתקי יו×" msgid "Show seconds" msgstr "הצג שניות" msgid "Appearance" msgstr "מר××”" msgid "Day categories" msgstr "קטגוריות יו×" msgid "iCalendar files" msgstr "קבצי iCalendar" msgid "Show in day info panel" msgstr "הצג בלוח מידע יו×" msgid "Name day" msgstr "×©× ×™×•×" msgid "Error printing" msgstr "שגי××” בהדפסה" msgid "Printing properties" msgstr "מ×פייני הדפסה" msgid "Month name" msgstr "×©× ×—×•×“×©" msgid "Day name" msgstr "×©× ×™×•×" msgid "Events" msgstr "×ירועי×" msgid "Fonts" msgstr "גופני×" msgid "Birthdays" msgstr "ימי הולדת" msgid "Namedays" msgstr "שמות ימי×" msgid "Visible events" msgstr "××™×¨×•×¢×™× × ×¨××™×" msgid "Padding" msgstr "" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "כיוון עמוד:" msgid "Portrait" msgstr "ל×ורך" msgid "Landscape" msgstr "לרוחב" msgid "Timeline" msgstr "ציר זמן" msgid "From (hour)" msgstr "מן (שעה)" msgid "Step (minutes)" msgstr "צעד (דקות)" msgid "To (hour)" msgstr "עד (שעה)" msgid "No date" msgstr "×ין ת×ריך" msgid "Rat" msgstr "עכברוש" msgid "Ox" msgstr "שור" msgid "Tiger" msgstr "טיגריס" msgid "Hare" msgstr "×רנבת" msgid "Dragon" msgstr "דרקון" msgid "Snake" msgstr "נחש" msgid "Horse" msgstr "סוס" msgid "Sheep" msgstr "כבשה" msgid "Monkey" msgstr "קוף" msgid "Fowl" msgstr "עוף" msgid "Dog" msgstr "כלב" msgid "Pig" msgstr "חזיר" msgid "Unknown" msgstr "×œ× ×™×“×•×¢" msgid "Aquarius" msgstr "דלי" msgid "Pisces" msgstr "דגי×" msgid "Aries" msgstr "טלה" msgid "Taurus" msgstr "שור" msgid "Gemini" msgstr "ת×ומי×" msgid "Cancer" msgstr "סרטן" msgid "Leo" msgstr "×ריה" msgid "Virgo" msgstr "בתולה" msgid "Libra" msgstr "מ×וזניי×" msgid "Scorpio" msgstr "עקרב" msgid "Sagittarius" msgstr "קשת" msgid "Capricorn" msgstr "גדי" msgid "Cannot perform selected operation." msgstr "" msgid "Task has been modified or removed." msgstr "" msgid "Remind me later" msgstr "הזכר לי מ×וחר יותר" msgid "Done" msgstr "הושלמה" msgid "postponed" msgstr "" msgid "Show task" msgstr "הצג מטלה" msgid "Alarm warning!" msgstr "" msgid "Day note" msgstr "פתק יו×" msgid "Type" msgstr "טיפוס" msgid "Event" msgstr "×ירוע" msgid "Task" msgstr "מטלה" msgid "Show Osmo" msgstr "הצג ×ת Osmo" msgid "No birthdays defined" msgstr "×ין ת×ריך לידה מוגדר" msgid "Birthdays list" msgstr "רשימת ×™×•× ×”×•×œ×“×ª" msgid "Days to birthday" msgstr "×™×ž×™× ×¢×“ ×œ×™×•× ×”×•×œ×“×ª" msgid "Age" msgstr "גיל" msgid "Birthday date" msgstr "ת×ריך לידה" msgid "today" msgstr "היו×" msgid "Please select address" msgstr "× × ×œ×‘×—×•×¨ כתובת" msgid "Information" msgstr "מידע" msgid "Work" msgstr "עבודה" msgid "Home" msgstr "בית" msgid "Group" msgstr "קבוצה" msgid "First name" msgstr "×©× ×¤×¨×˜×™" msgid "Last name" msgstr "×©× ×ž×©×¤×—×”" msgid "Second name" msgstr "×©× ×מצעי" msgid "Nickname" msgstr "כינוי" msgid "Tags" msgstr "תוויות" msgid "Name day date" msgstr "" msgid "Home address" msgstr "כתובת מגורי×" msgid "Home postcode" msgstr "מיקוד מגורי×" msgid "Home city" msgstr "עיר מגורי×" msgid "Home state" msgstr "מחוז מגורי×" msgid "Home country" msgstr "מדינת מגורי×" msgid "Organization" msgstr "×רגון" msgid "Department" msgstr "מחלקה" msgid "Work address" msgstr "כתובת עבודה" msgid "Work postcode" msgstr "מיקוד עבודה" msgid "Work city" msgstr "עיר עבודה" msgid "Work state" msgstr "מחוז עבודה" msgid "Work country" msgstr "מדינת עבודה" msgid "Fax" msgstr "פקס" msgid "Home phone" msgstr "טלפון בבית" msgid "Home phone 2" msgstr "טלפון בבית 2" msgid "Home phone 3" msgstr "טלפון בבית 3" msgid "Home phone 4" msgstr "טלפון בבית 4" msgid "Work phone" msgstr "טלפון בעבודה" msgid "Work phone 2" msgstr "טלפון בעבודה 2" msgid "Work phone 3" msgstr "טלפון בעבודה 3" msgid "Work phone 4" msgstr "טלפון בעבודה 4" msgid "Cell phone" msgstr "טלפון נייד" msgid "Cell phone 2" msgstr "טלפון נייד 2" msgid "Cell phone 3" msgstr "טלפון נייד 3" msgid "Cell phone 4" msgstr "טלפון נייד 4" msgid "E-Mail" msgstr "דו×״ל" msgid "E-Mail 2" msgstr "דו×״ל 2" msgid "E-Mail 3" msgstr "דו×״ל 3" msgid "E-Mail 4" msgstr "דו×״ל 4" msgid "WWW" msgstr "מרשתת" msgid "WWW 2" msgstr "מרשתת 2" msgid "WWW 3" msgstr "מרשתת 3" msgid "WWW 4" msgstr "מרשתת 4" msgid "IM Gadu-Gadu" msgstr "Gadu-Gadu" msgid "IM Yahoo" msgstr "YIM!" msgid "IM MSN" msgstr "MSN" msgid "IM ICQ" msgstr "ICQ" msgid "IM AOL" msgstr "AIM" msgid "IM Jabber" msgstr "JID" msgid "IM Skype" msgstr "Skype" msgid "IM Tlen" msgstr "Tlen" msgid "Blog" msgstr "בלוג" msgid "Photo" msgstr "תצלו×" msgid "Additional info" msgstr "מידע נוסף" msgid "New contact" msgstr "×יש קשר חדש" msgid "Remove contact" msgstr "הסר ×יש קשר" msgid "Edit contact" msgstr "ערוך ×יש קשר" msgid "Show birthdays" msgstr "הצג ימי הולדת" msgid "Show contact location on the map" msgstr "הצג ×ž×™×§×•× ×יש קשר על המפה" msgid "Import contacts" msgstr "×™×‘× ×נשי קשר" msgid "Export contacts" msgstr "×™×¦× ×נשי קשר" msgid "First Name" msgstr "×©× ×¤×¨×˜×™" msgid "Last Name" msgstr "×©× ×ž×©×¤×—×”" msgid "All fields" msgstr "כל השדות" msgid "Contact details" msgstr "פרטי ×יש קשר" msgid "Close contact panel" msgstr "סגור לוח ×יש קשר" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "×יש קשר יוצ×" msgstr[1] "×נשי קשר יוצ×ו" msgid "Cannot create file." msgstr "×œ× ×ž×¡×•×’×œ ליצור קובץ." msgid "Output format" msgstr "פורמט פלט" msgid "Add header" msgstr "הוסף תקורה" msgid "Fields to export" msgstr "שדות לייצו×" msgid "All" msgstr "הכל" msgid "Invert" msgstr "הפוך" msgid "Select fields" msgstr "בחר שדות" msgid "Select CSV file" msgstr "בחר קובץ CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "" msgid "Please select file first." msgstr "× × ×œ×‘×—×•×¨ קובץ ר×שון." msgid "Import type" msgstr "טיפוס ייבו×" msgid "File" msgstr "קובץ" msgid "Input filename" msgstr "קלט ×©× ×§×•×‘×¥" msgid "Import" msgstr "ייבו×" msgid "Nothing to import." msgstr "×ין מה לייב×." msgid "contact added" msgid_plural "contacts added" msgstr[0] "התווסף ×יש קשר" msgstr[1] "התווספו ×נשי קשר" msgid "of" msgstr "" msgid "Record" msgstr "רישו×" msgid "Number fields per record" msgstr "" msgid "Use first record as header" msgstr "" msgid "Field type" msgstr "טיפוס שדה" msgid "Value" msgstr "ערך" msgid "No records found in selected file." msgstr "×œ× × ×ž×¦×ו רשומות בקובץ נוכחי." msgid "Cannot read file." msgstr "×œ× ×ž×¡×•×’×œ ×œ×§×¨×•× ×§×•×‘×¥." msgid "Cannot open file." msgstr "×œ× ×ž×¡×•×’×œ לפתוח קובץ." msgid "Selected contact will be removed." msgstr "×יש קשר נבחר יוסר." msgid "Select photo" msgstr "בחר תצלו×" msgid "Address" msgstr "כתובת" msgid "Postcode" msgstr "מיקוד" msgid "City" msgstr "עיר" msgid "State" msgstr "מחוז" msgid "Country" msgstr "מדינה" msgid "Add contact" msgstr "הוסף ×יש קשר" msgid "Personal" msgstr "×ישי" msgid "Phones" msgstr "טלפוני×" msgid "Internet" msgstr "מרשתת" msgid "Color of contact tags" msgstr "צבע תגיות של ×יש קשר" msgid "Color of links" msgstr "צבע קישורי×" msgid "Font size" msgstr "גודל גופן" msgid "Name font size" msgstr "" msgid "Item font size" msgstr "גודל גופן פריט" msgid "Photo size" msgstr "גודל תצלו×" msgid "Small" msgstr "קטן" msgid "Medium" msgstr "בינוני" msgid "Large" msgstr "גדול" msgid "Hide group column" msgstr "הסתר טור קבוצה" msgid "Maps provider" msgstr "ספק מפות" msgid "Miscellaneous" msgstr "שונות" msgid "Groups" msgstr "קבוצות" msgid "Visible columns in birthday browser" msgstr "" msgid "Show calendar" msgstr "הצג לוח שנה" msgid "Show tasks" msgstr "הצג מטלות" msgid "Show contacts" msgstr "הצג ×נשי קשר" msgid "Show notes" msgstr "הצג פתקי×" msgid "Show options" msgstr "הצג ×פשרויות" msgid "Show small calendar window" msgstr "ןטק הנש חול ןולח גצה" msgid "Check for events since last run" msgstr "×”× ×•×¨×—× ×”×¦×¨×” ×–×מ ××™×¢×•×¨×™× ×¨×•×‘×¢ קודב" msgid "Number of days to check forward for events (default: 0)" msgstr "(0: לדחמ תרירב) ××™×¢×•×¨×™× ×¨×•×‘×¢ ×”×לה הקידבל ×ימי רפסמ" msgid "Set absolute path for settings and data files" msgstr "עדימו תורדגה יצבק רובע טלחומ ביתנ עבק" msgid "Match contacts with given string" msgstr "הנותנ תזורחמ תרזעב רשק ×™×©× × ××תה" msgid "handy personal organizer" msgstr "ישומיש ×™×©×™× ×Ÿ×’×¨×מ" msgid "ERROR: Cannot create config files" msgstr "שגי××”: ×œ× ×ž×¡×•×’×œ ליצור קבצי תצורה" msgid "Another copy of OSMO is already running." msgstr "עותק ×חר של OSMO כבר מורץ כעת." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "שימוש סימולטני בשני ×¢×•×ª×§×™× ×ו יותר של OSMO עלול ×œ×’×¨×•× ×œ×יבוד מידע." msgid "Do you really want to continue?" msgstr "×”×× ×תה ב×מת רוצה להמשיך?" msgid "Warning" msgstr "×זהרה" msgid "The note has changed." msgstr "הפתק שונה." msgid "Do you want to save it?" msgstr "×”×× ×‘×¨×¦×•× ×š לשמור ×ותו?" msgid "No URLs found in the selection..." msgstr "" msgid "URLs will be opened in the default browser." msgstr "" msgid "Do you want to continue?" msgstr "" msgid "Question" msgstr "ש×לה" msgid "Words" msgstr "מילי×" msgid "Lines" msgstr "שורות" msgid "Characters" msgstr "תווי×" msgid "White characters" msgstr "×ª×•×•×™× ×œ×‘× ×™×" msgid "Bytes" msgstr "בתי×" msgid "Document" msgstr "מסמך" msgid "Selection" msgstr "בחירה" msgid "Created" msgstr "נוצר" msgid "Modified" msgstr "שונה" msgid "New note" msgstr "פתק חדש" msgid "Add note" msgstr "הוסף פתק" msgid "Edit note" msgstr "ערוך פתק" msgid "Delete note" msgstr "מחק פתק" msgid "Remove note" msgstr "הסר פתק" msgid "Find" msgstr "מצ×" msgid "Clear attributes" msgstr "טהר ×פיוני×" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "שמור פתק" msgid "Insert current date and time" msgstr "הכנס ת×ריך וזמן נוכחיי×" msgid "Insert separator" msgstr "הכנס חוצץ" msgid "Statistics" msgstr "סטטיסטיקות" msgid "Close editor" msgstr "סגור עורך" msgid "Toggle spell checker" msgstr "בודק ×יות" msgid "Category" msgstr "קטגוריה" msgid "Note name" msgstr "×©× ×¤×ª×§" msgid "Last changes" msgstr "×©×™× ×•×™×™× ×חרוני×" msgid "Read-only" msgstr "קרי××”-בלבד" msgid "Line" msgstr "שורה" msgid "Column" msgstr "טור" msgid "case sensitive" msgstr "הת×× ×ותיות גדולות/קטנות" msgid "Close find entry" msgstr "סגור רשומת מצי××”" msgid "Edit entry" msgstr "ערוך רשומה" msgid "Remember cursor position" msgstr "זכור ×ž×™×§×•× ×¡×ž×Ÿ" msgid "Selected note will be removed." msgstr "פתק נבחר יוסר." msgid "No further data recovery will be possible." msgstr "×©×•× ×©×—×–×•×¨ מידע ×œ× ×™×”×™×” ×פשרי." msgid "Plain" msgstr "גלוי" msgid "Encrypted" msgstr "מוצפן" msgid "Note type" msgstr "טיפוס פתק" msgid "Cannot open the note." msgstr "×œ× ×ž×¡×•×’×œ לפתוח ×ת הפתק." msgid "encryption support is disabled" msgstr "תמיכת הצפנה ×”×™× ×” מנוטרלת" msgid "Authorization" msgstr "הרש××”" msgid "Algorithm" msgstr "×לגורית×" msgid "Hashing" msgstr "ערבוב" msgid "Compression" msgstr "דחיסה" msgid "Ratio" msgstr "יחס" msgid "Fast" msgstr "מהיר" msgid "Good" msgstr "טוב" msgid "Best" msgstr "מיטבי" msgid "Remember the last selected category" msgstr "זכור ×ת הקטגוריה ×”×חרונה שנבחרה" msgid "Use system format for date and time" msgstr "השתמש בפורמט מערכת עבור ת×ריך וזמן" msgid "Encryption" msgstr "הצפנה" msgid "Visible columns" msgstr "×˜×•×¨×™× × ×¨××™×" msgid "Categories" msgstr "קטגוריות" msgid "Notes options" msgstr "×פשרויות פתקי×" msgid "Osmo has to be restarted to take effect." msgstr "עליך ל×תחל ×ת Osmo על מנת ×©×”×©×™× ×•×™×™× ×™×™×›× ×¡×• לתוקף." msgid "Layout" msgstr "מערך" msgid "Vertical" msgstr "×× ×›×™" msgid "Horizontal" msgstr "×ופקי" msgid "Tabs position" msgstr "×ž×™×§×•× ×›×¨×˜×™×¡×™×•×ª" msgid "Left" msgstr "שמ×ל" msgid "Right" msgstr "ימין" msgid "Top" msgstr "עליון" msgid "Bottom" msgstr "תחתון" msgid "Use default stock icons" msgstr "" msgid "Disable underline in links" msgstr "" msgid "Draw rows in alternating colors" msgstr "" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "" msgid "Override locale settings" msgstr "החלף הגדרות של מקומיות" msgid "Date format" msgstr "פורמט ת×ריך" msgid "DD-MM-YYYY" msgstr "" msgid "MM-DD-YYYY" msgstr "" msgid "YYYY-MM-DD" msgstr "" msgid "YYYY-DD-MM" msgstr "" msgid "Time format" msgstr "פורמט זמן" msgid "hours" msgstr "שעות" msgid "Spell checker language" msgstr "שפת בודק ×יות" msgid "Enable tooltips" msgstr "×פשר תיבות צצות" msgid "Remember last selected page" msgstr "זכור עמוד נבחר ×חרון" msgid "Save data after every modification" msgstr "שמור × ×ª×•× ×™× ×œ×חר כל שינוי" msgid "Web browser" msgstr "דפדפן רשת" msgid "E-mail client" msgstr "לקוח דו×״ל" msgid "Sound player" msgstr "נגן קול" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "התבנית %s תוחלף ×¢× ×›×ª×•×‘×ª רשת" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "התבנית %s תוחלף ×¢× ×›×ª×•×‘×ª דו×״ל" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "התבנית %s תוחלף ×¢× ×©× ×§×•×‘×¥ של צליל" msgid "Enable system tray" msgstr "×פשר מגש מערכת" msgid "Start minimised" msgstr "התחל ממוזער" msgid "Blink on events" msgstr "הבהב בעת ×ירוע" msgid "Ignore day note events" msgstr "×”×ª×¢×œ× ×ž×ירועי פתקי יו×" msgid "Hide" msgstr "הסתרה" msgid "Helpers" msgstr "יישומי עזר" msgid "System tray" msgstr "מגש מערכת" msgid "Edit" msgstr "ערוך" msgid "Go Down" msgstr "" msgid "Select date" msgstr "בחר ת×ריך" msgid "Select font" msgstr "בחר ת×ריך" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "מחשבון" msgid "Edit day note" msgstr "ערוך פתק יו×" msgid "Save" msgstr "שמור" msgid "Display full-year calendar" msgstr "הצג לוח שנה מל×" msgid "Help" msgstr "עזרה" msgid "Invalid item" msgstr "פריט ×œ× ×ª×§×£" msgid "Valid item" msgstr "פריט תקף" msgid "Edit task" msgstr "ערוך מטלה" msgid "Remove task" msgstr "הסר מטלה" msgid "Import tasks" msgstr "×™×‘× ×ž×˜×œ×•×ª" msgid "Export tasks" msgstr "×™×¦× ×ž×˜×œ×•×ª" msgid "Change to previous date" msgstr "" msgid "Change to next date" msgstr "" msgid "Print" msgstr "הדפס" msgid "Normal" msgstr "רגיל" msgid "Recurrent" msgstr "חוזר" msgid "Started" msgstr "התחילה" msgid "Finished" msgstr "הסתיימה" msgid "All items" msgstr "כל הפריטי×" msgid "New task" msgstr "מטלה חדשה" msgid "Change due date to previous date" msgstr "" msgid "Change due date to next date" msgstr "" msgid "Print visible tasks list" msgstr "" msgid "Due date" msgstr "מועד יעד" msgid "Priority" msgstr "עדיפות" msgid "Task details" msgstr "פירטי מטלה" msgid "Close description panel" msgstr "סגור לוח תי×ור" msgid "No tasks with defined date found." msgstr "" msgid "Save tasks" msgstr "שמור מטלות" msgid "tasks exported" msgstr "מטלות יוצ×ו" msgid "Please select at least one day when recurrency is enabled." msgstr "" msgid "Set time" msgstr "קבע זמן" msgid "Tomorrow" msgstr "מחר" msgid "Selected task will be removed." msgstr "מטלות נבחרות יימחקו." msgid "Basic" msgstr "בסיס" msgid "Select date and time" msgstr "בחר זמן ות×ריך" msgid "Low" msgstr "נמוכה" msgid "High" msgstr "גבוהה" msgid "Enable sound notification" msgstr "×פשר התר×ות קול" msgid "Enable notification dialog" msgstr "" msgid "Advanced" msgstr "מתקד×" msgid "Alarm warning" msgstr "×זעקת ×זהרה" msgid "Postpone time" msgstr "זמן שהייה" msgid "Alarm command" msgstr "פקודת ××–×¢×§×”" msgid "Recurrent task" msgstr "מטלה חוזרת" msgid "Enable" msgstr "×פשר" msgid "Start" msgstr "תחילה" msgid "End" msgstr "סוף" msgid "Interval" msgstr "תדירות" msgid "Time period" msgstr "תקופת זמן" msgid "Date period" msgstr "" msgid "Repeat" msgstr "חזרה" msgid "Repeat in the following days" msgstr "חזור ×‘×™×ž×™× ×”×‘××™×" msgid "Ignore alarm when task expired offline" msgstr "" msgid "Select a font..." msgstr "בחר גופן..." msgid "Color of items that are due today" msgstr "" msgid "Color of items that are due in the next 7 days" msgstr "" msgid "Color of items that are past due" msgstr "" msgid "Task info font" msgstr "גופן מידע מטלה" msgid "Show in bold tasks with high priority" msgstr "" msgid "Hide completed tasks" msgstr "" msgid "Delete completed tasks without confirmation" msgstr "" msgid "Add new task when double clicked on tasks list" msgstr "" msgid "minutes" msgstr "דקות" msgid "0 for disable" msgstr "0 לנטרול" msgid "Repeat sound alarm" msgstr "" msgid "times" msgstr "פעמי×" msgid "Global notification command" msgstr "" msgid "Tasks options" msgstr "×פשרויות מטלות" msgid "Reminder options" msgstr "×פשרויות תזכורת" msgid "Tasks list" msgstr "רשימת מטלות" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "מס׳" msgid "New Moon" msgstr "מופע ירח" msgid "Waxing Crescent Moon" msgstr "ירח ×ž×ª×ž×œ× ×§×©×ª×™" msgid "Quarter Moon" msgstr "רבעון ירחי" msgid "Waxing Gibbous Moon" msgstr "ירח ×ž×ª×ž×œ× ×ž×§×•×ž×¨" msgid "Full Moon" msgstr "ירח מל×" msgid "Waning Gibbous Moon" msgstr "ירח מתמעט מקומר" msgid "Last Quarter Moon" msgstr "רבעון ירחי ×חרון" msgid "Waning Crescent Moon" msgstr "ירח מתמעט קשתי" msgid "Error" msgstr "שגי××”" msgid "Selected file exist! Overwrite?" msgstr "קובץ נבחר ×§×™×™×! להחליף?" osmo-0.2.14/po/sr.po000664 001750 001750 00000136227 12561325524 014147 0ustar00pasppasp000000 000000 # 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. # Саша Петровић , 2014, 2015. # msgid "" msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-01-03 15:58+0100\n" "Last-Translator: Саша Петровић \n" "Language-Team: ÑрпÑки \n" "Language: sr\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: Gtranslator 2.91.6\n" msgid "About" msgstr "О програму" msgid "Close" msgstr "Затвори" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "пређи на претходни лиÑÑ‚" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "пређи на Ñледећи лиÑÑ‚" msgid "switch to selected page" msgstr "пређи на изабрану Ñтрану" msgid "show options window" msgstr "прикажи прозор могућноÑти" msgid "show about window" msgstr "прикажи прозор о програму" msgid "toggle fullscreen mode" msgstr "Прекидач приказа преко целог екрана" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "окрени Ñтрану у могућноÑтима и површи О програму" msgid "exit" msgstr "излаз" msgid "Space" msgstr "Размак" msgid "select current date" msgstr "&изабери тренутни датум" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "прекидач видљивоÑти личних података" msgid "Arrows" msgstr "Стрелице" msgid "change day" msgstr "промени дан" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "клизни Ñадржај у површи података дана" msgid "change month" msgstr "промени меÑец" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "промени годину" msgid "toggle calendars for the previous and next month" msgstr "прекидач прегледа претходног и Ñледећег меÑеца календара" msgid "day notes browser" msgstr "прегледник дневних белешки" msgid "assign background color to day note" msgstr "додели позадинÑку боју дневној белешци" msgid "date calculator" msgstr "дневни рачунар" msgid "show full-year calendar" msgstr "прикажи годишњи календар" msgid "jump to date" msgstr "Ñкочи на дан" msgid "Delete" msgstr "Избриши" msgid "remove day note" msgstr "уклони дневну белешку" msgid "Alt+Arrows" msgstr "Alt+Arrows" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "затвори уређивач" msgid "toggle bold" msgstr "прекидач подебљања" msgid "toggle italic" msgstr "прекидач иÑкошења" msgid "toggle underline" msgstr "прекидач подвученог" msgid "toggle strikethrough" msgstr "прекидач прецртаног" msgid "toggle highlight" msgstr "прекидач иÑтакнутог" msgid "Arrows Up/Down" msgstr "Стрелице горе/доле" msgid "toggle alternative view" msgstr "прекидач заменÑког начина прегледа" msgid "year info" msgstr "подаци о години" msgid "set current year" msgstr "поÑтави тренутну годину" msgid "close full-year calendar" msgstr "затвори целогодишњи календар" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "додај задатак" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "уреди задатак" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "уклони задатак" msgid "toggle hidden tasks" msgstr "прекидач Ñкривања задатака" msgid "activate search field" msgstr "покрени поље претраге" msgid "Left, Right" msgstr "Лево, деÑно" msgid "change category filter" msgstr "измени уÑлове врÑта" msgid "close task info panel" msgstr "затвори полицу података о задацима" msgid "Insert" msgstr "Уметни" msgid "add contact" msgstr "додај познаника" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "уреди познаника" msgid "remove contact" msgstr "уклони познаника" msgid "change search mode" msgstr "измени начин претраге" msgid "close contact details panel" msgstr "затвори површ о појединоÑтима познаника" msgid "Enter" msgstr "УнеÑи" msgid "open note" msgstr "отвори белешку" msgid "add note" msgstr "додај белешку" msgid "remove note" msgstr "уклони белешку" msgid "edit note name and category" msgstr "уреди име и врÑту белешке" msgid "close note editor" msgstr "затвори уређивач белешке" msgid "save note" msgstr "Ñачувај белешку" msgid "find text" msgstr "пронађи текÑÑ‚" msgid "clear selection attributes" msgstr "очиÑти оÑобине избора" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "ОСМО је замишљен да буде кориÑнику удобан, тако да има много пречица. Овде " "је потпуни ÑпиÑак:" msgid "General" msgstr "Опште" msgid "Calendar" msgstr "Календар" msgid "Note editor" msgstr "Уређивач белешки" msgid "Full-year calendar" msgstr "Годишњи календар" msgid "Tasks" msgstr "Задаци" msgid "Contacts" msgstr "Познаници" msgid "Notes" msgstr "Белешке" msgid "Selector" msgstr "Изабирач" msgid "Editor" msgstr "Уређивач" msgid "A handy personal organizer" msgstr "Згодан лични уÑтројилац" msgid "compiled on" msgstr "превођен" msgid "Programming" msgstr "Програмирање" msgid "Graphics" msgstr "Графика" msgid "Contributors" msgstr "ДоприноÑиоци" msgid "Translators" msgstr "Преводиоци" msgid "Mailing lists" msgstr "ДопиÑни ÑпиÑкови" msgid "Bug tracker" msgstr "Пратилац грешака" msgid "Feature requests" msgstr "Захтеви за новим могућноÑтима" msgid "Available modules" msgstr "ДоÑтупне јединице" msgid "Compiled-in features" msgstr "Преведене могућноÑти" msgid "iCalendar support" msgstr "Подршка за iCalendar" msgid "Encrypted notes support" msgstr "Подршка шифрованих белешки" msgid "Backup support" msgstr "Подршка за оÑтаву" msgid "Printing support" msgstr "Подршка за штампање" msgid "Spell checker support" msgstr "Подршка правопиÑара" msgid "version" msgstr "издање" msgid "SVN revision" msgstr "СВРпреправка" msgid "Key shortcuts" msgstr "Пречице дугмади" msgid "License" msgstr "Дозвола" msgid "Save backup" msgstr "Сачувај у оÑтаву" msgid "Password protection" msgstr "Заштита лозинком" msgid "Enter password" msgstr "УнеÑите лозинку" msgid "Re-enter password" msgstr "Поновите лозинку" msgid "Please enter the password" msgstr "Молим, унеÑите Ñвоју лозинку" msgid "Passwords do not match!" msgstr "Лозинке Ñе не подударају!" msgid "Cannot create backup!" msgstr "ÐиÑам уÑпео да направим оÑтаву!" msgid "Backup file saved successfully!" msgstr "Датотека је уÑпешно Ñачувана у оÑтаву!" msgid "Open backup file" msgstr "Отвори датотеку из оÑтаве" msgid "Osmo backup files (*.bck)" msgstr "ОÑмове датотеке оÑтаве (*.bck)" msgid "This is not Osmo backup file" msgstr "Ово није датотека оÑтаве ОÑма" msgid "Incorrect password!" msgstr "ÐеиÑправна лозинка" msgid "All your data will be replaced with backup file content." msgstr "Сви подаци ће бити замењени Ñадржајем датотека из оÑтаве." msgid "Are you sure?" msgstr "Да ли Ñте Ñигурни?" msgid "Osmo has to be restarted now..." msgstr "Сада је потребно поновно покретање ОÑма..." msgid "was born" msgstr "је рођен" msgid "year old" msgid_plural "years old" msgstr[0] "годину ÑтароÑÑ‚" msgstr[1] "године ÑтароÑти" msgstr[2] "година ÑтароÑти" msgid "Current time" msgstr "Тренутно време" msgid "Day number" msgstr "Број дана" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "дан до краја године" msgstr[1] "дана до краја године" msgstr[2] "дана до краја године" msgid "the last day of the year" msgstr "поÑледњи дан у години" msgid "Today distance" msgstr "ВременÑки размак у одноÑу на данашњи дан" msgid "Week number" msgstr "Број Ñедмица" msgid "Marked days" msgstr "Означени дани" msgid "Weekend days" msgstr "Ðерадни дани" msgid "Moon phase" msgstr "МеÑечева мена" msgid "Zodiac sign" msgstr "Знак зодијака" msgid "Day notes" msgstr "Дневне белешке" msgid "Day tasks" msgstr "Дневни задаци" msgid "Birthday" msgstr "Рођендан" msgid "Day category" msgstr "Ð’Ñ€Ñта дана" msgid "Selected day note will be removed." msgstr "Означена белешка дана ће бити уклоњена." msgid "Continue?" msgstr "ÐаÑтавити?" msgid "Previous year" msgstr "Претходна година" msgid "Previous month" msgstr "Претходни меÑец" msgid "Previous day" msgstr "Претходни дан" msgid "Today" msgstr "ДанаÑ" msgid "Next day" msgstr "Сутра" msgid "Next month" msgstr "Следећи меÑец" msgid "Next year" msgstr "Следећа година" msgid "Jump to date" msgstr "Пређи на датум" msgid "Print calendar" msgstr "Штампај календар" msgid "Date calculator" msgstr "Рачунар дана" msgid "Backup data" msgstr "Ðаправи оÑтаву података" msgid "Restore data" msgstr "Поврати податке из оÑтаве" msgid "Preferences" msgstr "ПоÑтавке" msgid "Quit" msgstr "Изађи" msgid "Toggle day note panel" msgstr "Прекидач површи дневне белешке" msgid "Add task" msgstr "Додај задатак" msgid "Select day color" msgstr "Одабери боју дана" msgid "Browse notes" msgstr "Преглед белешки" msgid "Browse iCal events" msgstr "Преглед догађаја iCal-a" msgid "Export to iCal file" msgstr "Извези у iCal датотеку" msgid "Previous and next month" msgstr "Претходни и Ñледећи меÑец" msgid "Close note panel" msgstr "Затвори површ белешки" msgid "Highlight" msgstr "Ðаглашено" msgid "Strikethrough" msgstr "Прецртано" msgid "Underline" msgstr "Подвучено" msgid "Italic" msgstr "Укошено" msgid "Bold" msgstr "Подебљано" msgid "Insert timeline" msgstr "УнеÑи временÑку линију" msgid "Clear text" msgstr "Избриши текÑÑ‚" msgid "Info" msgstr "Подаци" msgid "Select color" msgstr "Изаберите боју" msgid "None" msgstr "Без" msgid "Cancel" msgstr "Откажи" msgid "OK" msgstr "У реду" msgid "year" msgid_plural "years" msgstr[0] "година" msgstr[1] "године" msgstr[2] "година" msgid "month" msgid_plural "months" msgstr[0] "меÑец" msgstr[1] "меÑеца" msgstr[2] "меÑеци" msgid "day" msgid_plural "days" msgstr[0] "дан" msgstr[1] "дана" msgstr[2] "дана" msgid "hour" msgid_plural "hours" msgstr[0] "Ñат" msgstr[1] "Ñата" msgstr[2] "Ñати" msgid "minute" msgid_plural "minutes" msgstr[0] "минут" msgstr[1] "минута" msgstr[2] "минута" msgid "second" msgid_plural "seconds" msgstr[0] "Ñекунда" msgstr[1] "Ñекунде" msgstr[2] "Ñекунди" msgid "or" msgstr "или" msgid "rounded down" msgstr "заокружено" msgid "week" msgid_plural "weeks" msgstr[0] "Ñедмица" msgstr[1] "Ñедмице" msgstr[2] "Ñедмица" msgid "working day" msgid_plural "working days" msgstr[0] "радни дан" msgstr[1] "радна дана" msgstr[2] "радних дана" msgid "time is ignored" msgstr "време је занемарено" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "нерадни дан" msgstr[1] "нерадна дана" msgstr[2] "нерадних дана" msgid "This calculator only supports dates after year 1." msgstr "Овај рачунар подржава Ñамо датуме поÑле прве године." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "занемарен радни дан" msgstr[1] "занемарена радна дана" msgstr[2] "занемарених радних дана" msgid "Year" msgstr "Година" msgid "Month" msgstr "МеÑец" msgid "Day" msgstr "Дан" msgid "Current date" msgstr "Тренутни _датум" msgid "Set current date" msgstr "ПоÑтави тренутни датум" msgid "Hour" msgstr "Сат" msgid "Minute" msgstr "Минут" msgid "Second" msgstr "Секунда" msgid "Set current time" msgstr "ПоÑтави тренутно време" msgid "Reset time" msgstr "Поништи поÑтавке времена" msgid "First date and time" msgstr "Почетни датум и време" msgid "Second date and time" msgstr "Следећи датум и време" msgid "Alternative time units" msgstr "ЗаменÑке временÑке јединице" msgid "Result" msgstr "Излаз" msgid "Duration between two dates" msgstr "Трајање између два датума" msgid "Operation" msgstr "Радња" msgid "add" msgstr "додај" msgid "subtract" msgstr "одузми" msgid "Date and time to add or subtract from" msgstr "Датум и време којем Ñе додаје или од кога Ñе одузима" msgid "Years" msgstr "Година" msgid "Months" msgstr "МеÑеци" msgid "Days" msgstr "Дани" msgid "Weeks" msgstr "Седмице" msgid "Hours" msgstr "Сати" msgid "Minutes" msgstr "Минути" msgid "Seconds" msgstr "Секунде" msgid "Ignore weekend days" msgstr "Занемари нерадне дане" msgid "Reset fields" msgstr "Поништи поља на подразумевано" msgid "Time to add or subtract" msgstr "Време које Ñе додаје или одузимања" msgid "Jump to" msgstr "Пређи на" msgid "Add to or subtract from a date" msgstr "Додај или одузми од датума" msgid "Leap year" msgstr "ПреÑтупна година" msgid "Yes" msgstr "Да" msgid "No" msgstr "Ðе" msgid "Chinese year animal" msgstr "КинеÑка животињÑка година" msgid "Number of days" msgstr "Број дана" msgid "Number of weeks" msgstr "Број Ñедмица" msgid "Number of weekend days" msgstr "Број нерадних дана" msgid "Year info" msgstr "Подаци године" msgid "Current year" msgstr "Тренутна година" msgid "Alternative view" msgstr "ЗаменÑки преглед" msgid "event" msgid_plural "events" msgstr[0] "догађај" msgstr[1] "догађаја" msgstr[2] "догађаја" msgid "No valid calendars defined" msgstr "Ðема одређених ваљаних календара" msgid "iCalendar events" msgstr "догађаји из iCalendar-а" msgid "Date" msgstr "Датум" msgid "Time" msgstr "Време" msgid "Summary" msgstr "Сажетак" msgid "Select output file" msgstr "Изаберите излазну датотеку" msgid "The list will be cleared and all entries will be lost." msgstr "Овај ÑпиÑак ће бити очишћен и Ñви уноÑи ће бити изгубљени." msgid "Done!" msgstr "Готово!" msgid "event exported" msgid_plural "events exported" msgstr[0] "догађај је извежен" msgstr[1] "догађаја Ñу извежена" msgstr[2] "догађаја је извежено" msgid "iCalendar export" msgstr "извоз у iCal" msgid "Day Selector" msgstr "Одабир дана" msgid "Use date period" msgstr "КориÑти раÑпон датума" msgid "Add" msgstr "Додај" msgid "Clear" msgstr "ОчиÑти" msgid "Remove" msgstr "Уклони" msgid "Output filename" msgstr "Име излазне датотеке" msgid "Browse" msgstr "Разгледај" msgid "Export" msgstr "Извези" msgid "no entries" msgstr "нема уноÑа" msgid "entry" msgid_plural "entries" msgstr[0] "уноÑ" msgstr[1] "уноÑа" msgstr[2] "уноÑа" msgid "Calendar notes" msgstr "Белешке календара" msgid "Search" msgstr "Претрага" msgid "Filter" msgstr "УÑлов" msgid "Current month" msgstr "Тренутни меÑец" msgid "Selected month" msgstr "Изаберите меÑец" msgid "Selected year" msgstr "Изаберите годину" msgid "Selected month and year" msgstr "Изаберите меÑец и годину" msgid "All notes" msgstr "Све белешке" msgid "Case sensitive" msgstr "ОÑетљиво на величину знакова" msgid "Strikethrough past day notes" msgstr "Прецртај белешке дана Ñа иÑтеклим временом" msgid "Note" msgstr "Белешка" msgid "Syntax" msgstr "СинтакÑа" msgid "abbreviated weekday name" msgstr "Скраћени назив дана Ñедмице" msgid "full weekday name" msgstr "Потпуни назив дана Ñедмице" msgid "abbreviated month name" msgstr "Ñкраћен назив меÑеца" msgid "full month name" msgstr "потпуни назив меÑеца" msgid "day of the month" msgstr "Дан у меÑецу" msgid "MM/DD/YY" msgstr "MM/DD/YY" msgid "day of the month without leading zeros" msgstr "дан меÑеца без водеће нуле" msgid "year without century" msgstr "година без века" msgid "year with century" msgstr "година Ñа веком" msgid "Date header format" msgstr "Облик заглавља датума" msgid "Set default format" msgstr "ПоÑтави подразумевани облик" msgid "Date format syntax" msgstr "Облик датума" msgid "Day note marker" msgstr "Ознака дневне белешке" msgid "Event marker" msgstr "Ознака догађаја" msgid "Circle" msgstr "Круг" msgid "Ellipse" msgstr "ЕлипÑа" msgid "Wave" msgstr "ТалаÑ" msgid "Current day marker" msgstr "Ознака тренутног дана" msgid "Arrow" msgstr "Стрелица" msgid "Free-hand circle" msgstr "Ручно иÑцртана кружић" msgid "Colors" msgstr "Боје" msgid "Header color" msgstr "Боја заглавља" msgid "Weekend days color" msgstr "Боја нерадних дана" msgid "Cursor color" msgstr "Боја показивача" msgid "Event marker color" msgstr "боја ознаке догађаја" msgid "Current day marker color" msgstr "Боја тренутне ознаке дана" msgid "Birthday marker color" msgstr "Боја ознаке рођендана" msgid "Date font" msgstr "Словолик датума" msgid "Calendar font" msgstr "Словолик календара" msgid "Note font" msgstr "Словолик белешке" msgid "Enable block cursor" msgstr "Омогући пуни показивач" msgid "Cursor thickness" msgstr "Дебљина показивача" msgid "Thin" msgstr "Танко" msgid "Thick" msgstr "Дебело" msgid "Edit category" msgstr "Уреди врÑту" msgid "Color" msgstr "Боја" msgid "Name" msgstr "Име" msgid "Select ICS file" msgstr "Изаберите датотеку ИЦС" msgid "All Files" msgstr "Све датотеке" msgid "Calendar files (*.ics)" msgstr "Датотеке календара (*.ics)" msgid "Modify ICAL parameters" msgstr "Измените одреднице ИЦÐЛ-а" msgid "Filename" msgstr "Име датотеке" msgid "Options" msgstr "МогућноÑти" msgid "Disabled" msgstr "Онемогућено" msgid "Valid" msgstr "Ваљано" msgid "Description" msgstr "ОпиÑ" msgid "Full date" msgstr "Потпуни датум" msgid "Mark" msgstr "Ознака" msgid "Week start on Monday" msgstr "Седмица почиње Понедељком" msgid "Show day names" msgstr "Прикажи имена дана" msgid "No month change" msgstr "Без промена меÑеца" msgid "Show week numbers" msgstr "Приказуј бројеве Ñедмица" msgid "Simple view in full-year calendar" msgstr "ЈедноÑтаван преглед годишњег календара" msgid "Enable auxilary calendars" msgstr "Омогући помоћне календаре" msgid "Ascending sorting in day notes browser" msgstr "Силазни приказ дневних белешки" msgid "Enable spell checker in day notes" msgstr "Омогући правопиÑара у дневним белешкама" msgid "Show seconds" msgstr "Прикажи Ñекунде" msgid "Appearance" msgstr "Приказ" msgid "Day categories" msgstr "Дневне врÑте" msgid "iCalendar files" msgstr "Датотеке iCalendar-а" msgid "Show in day info panel" msgstr "Приказуј дневну обавештајну површ" msgid "Name day" msgstr "Име дана" msgid "Error printing" msgstr "Грешка штампања" msgid "Printing properties" msgstr "СвојÑтва штампе" msgid "Month name" msgstr "Име меÑеца" msgid "Day name" msgstr "Име дана" msgid "Events" msgstr "Догађаји" msgid "Fonts" msgstr "Словни ликови" msgid "Birthdays" msgstr "Рођендани" msgid "Namedays" msgstr "Имена дана" msgid "Visible events" msgstr "Видљиви догађаји" msgid "Padding" msgstr "Попуна" msgid "Event maximum length" msgstr "Ðајвећа прихватљива дужина догађаја" msgid "Page orientation:" msgstr "УÑмерење Ñтранице:" msgid "Portrait" msgstr "УÑправно" msgid "Landscape" msgstr "Положено" msgid "Timeline" msgstr "ВременÑки ток" msgid "From (hour)" msgstr "Од (у чаÑовима)" msgid "Step (minutes)" msgstr "Корак (у минутима)" msgid "To (hour)" msgstr "До (у чаÑовима)" msgid "No date" msgstr "Ðема датума" msgid "Rat" msgstr "Пацов" msgid "Ox" msgstr "Бик" msgid "Tiger" msgstr "Тигар" msgid "Hare" msgstr "Зец" msgid "Dragon" msgstr "Змај" msgid "Snake" msgstr "Змија" msgid "Horse" msgstr "Коњ" msgid "Sheep" msgstr "Овца" msgid "Monkey" msgstr "Мајмун" msgid "Fowl" msgstr "Кокош" msgid "Dog" msgstr "ПаÑ" msgid "Pig" msgstr "Свиња" msgid "Unknown" msgstr "Ðепознато" msgid "Aquarius" msgstr "Водолија" msgid "Pisces" msgstr "Рибе" msgid "Aries" msgstr "Ован" msgid "Taurus" msgstr "Бик" msgid "Gemini" msgstr "Близанци" msgid "Cancer" msgstr "Рак" msgid "Leo" msgstr "Лав" msgid "Virgo" msgstr "Девица" msgid "Libra" msgstr "Вага" msgid "Scorpio" msgstr "Шкорпија" msgid "Sagittarius" msgstr "Стрелац" msgid "Capricorn" msgstr "Јарац" msgid "Cannot perform selected operation." msgstr "ÐиÑам уÑпео да изведем изабрану радњу." msgid "Task has been modified or removed." msgstr "Задатак је измењен и уклоњен." msgid "Remind me later" msgstr "ПодÑети ме каÑније" msgid "Done" msgstr "Готово" msgid "postponed" msgstr "одложено" msgid "Show task" msgstr "Прикажи задатак" msgid "Alarm warning!" msgstr "Упозорење узбуне" msgid "Day note" msgstr "Дневна белешка" msgid "Type" msgstr "Ð’Ñ€Ñта" msgid "Event" msgstr "Догађај" msgid "Task" msgstr "Задатак" msgid "Show Osmo" msgstr "Прикажи ОÑма" msgid "No birthdays defined" msgstr "Ðема одређених рођендана" msgid "Birthdays list" msgstr "СпиÑак рођендана" msgid "Days to birthday" msgstr "Број дана до рођендана" msgid "Age" msgstr "СтароÑÑ‚" msgid "Birthday date" msgstr "Датум рођендана" msgid "today" msgstr "данаÑ" msgid "Please select address" msgstr "Изаберите адреÑу" msgid "Information" msgstr "Податак" msgid "Work" msgstr "ПоÑао" msgid "Home" msgstr "Кућа" msgid "Group" msgstr "Скуп" msgid "First name" msgstr "Име" msgid "Last name" msgstr "Презиме" msgid "Second name" msgstr "Име родитеља" msgid "Nickname" msgstr "Ðадимак" msgid "Tags" msgstr "Ознаке" msgid "Name day date" msgstr "Име дана" msgid "Home address" msgstr "Кућна адреÑа" msgid "Home postcode" msgstr "Кућни број" msgid "Home city" msgstr "Град Ñтановања" msgid "Home state" msgstr "Република" msgid "Home country" msgstr "Држава Ñтановања" msgid "Organization" msgstr "Удружење" msgid "Department" msgstr "Одељење" msgid "Work address" msgstr "ÐдреÑа на поÑлу" msgid "Work postcode" msgstr "ПоштанÑки број на поÑлу" msgid "Work city" msgstr "Град радног меÑта" msgid "Work state" msgstr "Република радног меÑта" msgid "Work country" msgstr "Држава радног меÑта" msgid "Fax" msgstr "ФакÑ" msgid "Home phone" msgstr "Кућни телефон" msgid "Home phone 2" msgstr "Кућни телефон 2" msgid "Home phone 3" msgstr "Кућни телефон 3" msgid "Home phone 4" msgstr "Кућни телефон 4" msgid "Work phone" msgstr "Телефон на поÑлу" msgid "Work phone 2" msgstr "Телефон на поÑлу 2" msgid "Work phone 3" msgstr "Телефон на поÑлу 3" msgid "Work phone 4" msgstr "Телефон на поÑлу 4" msgid "Cell phone" msgstr "Мобилни телефон" msgid "Cell phone 2" msgstr "Мобилни телефон 2" msgid "Cell phone 3" msgstr "Мобилни телефон 3" msgid "Cell phone 4" msgstr "Мобилни телефон 4" msgid "E-Mail" msgstr "ÐдреÑа електронÑке поште" msgid "E-Mail 2" msgstr "ÐдреÑа е-поште 2" msgid "E-Mail 3" msgstr "ÐдреÑа е-поште 3" msgid "E-Mail 4" msgstr "ÐдреÑа е-поште 4" msgid "WWW" msgstr "Веб" msgid "WWW 2" msgstr "Веб 2" msgid "WWW 3" msgstr "Веб 3" msgid "WWW 4" msgstr "Веб 4" msgid "IM Gadu-Gadu" msgstr "Брзе поруке Гаду-гадуа" msgid "IM Yahoo" msgstr "Брзе поруке Јахуа" msgid "IM MSN" msgstr "Брзе поруке МСÐ-а" msgid "IM ICQ" msgstr "Брзе поруке ИЦКу-а" msgid "IM AOL" msgstr "Брзе поруке ÐОЛ-а" msgid "IM Jabber" msgstr "Брзе поруке Ðабера" msgid "IM Skype" msgstr "Брзе поруке Скајпа" msgid "IM Tlen" msgstr "Брзе поруке Тлена" msgid "Blog" msgstr "Блог" msgid "Photo" msgstr "Слика" msgid "Additional info" msgstr "Додатни подаци" msgid "New contact" msgstr "Ðови познаник" msgid "Remove contact" msgstr "Уклони познаника" msgid "Edit contact" msgstr "Уреди познаника" msgid "Show birthdays" msgstr "Прикажи рођендане" msgid "Show contact location on the map" msgstr "Прикажи положај познаника на карти" msgid "Import contacts" msgstr "Увоз познаника" msgid "Export contacts" msgstr "Извоз познаника" msgid "First Name" msgstr "Име" msgid "Last Name" msgstr "Презиме" msgid "All fields" msgstr "Сва поља" msgid "Contact details" msgstr "Подаци познаника" msgid "Close contact panel" msgstr "Затвори површ познаника" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "познаник је извезен" msgstr[1] "познаника Ñу извезена" msgstr[2] "познаника је извезено" msgid "Cannot create file." msgstr "ÐиÑам уÑпео да образујем датотеку" msgid "Output format" msgstr "Излазни облик" msgid "Add header" msgstr "Додај заглавље" msgid "Fields to export" msgstr "Поља за извоз" msgid "All" msgstr "Све" msgid "Invert" msgstr "Преокрени" msgid "Select fields" msgstr "Означите поља" msgid "Select CSV file" msgstr "Изаберите ЦСВ датотеку" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Датотеке ЦСВ-а (вредноÑти раздвојене зарезом) (*.csv)" msgid "Please select file first." msgstr "Молим, претходно изаберите датотеку." msgid "Import type" msgstr "Ð’Ñ€Ñта увоза" msgid "File" msgstr "Датотека" msgid "Input filename" msgstr "Име улазне датотеке" msgid "Import" msgstr "Увези" msgid "Nothing to import." msgstr "Ðема ничега за увоз." msgid "contact added" msgid_plural "contacts added" msgstr[0] "додати познаник" msgstr[1] "додата познаника" msgstr[2] "додатих познаника" msgid "of" msgstr "од" msgid "Record" msgstr "ЗапиÑ" msgid "Number fields per record" msgstr "Број поља по запиÑу" msgid "Use first record as header" msgstr "КориÑти први Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ð¾ заглавље" msgid "Field type" msgstr "Ð’Ñ€Ñта поља" msgid "Value" msgstr "ВредноÑÑ‚" msgid "No records found in selected file." msgstr "Ðема запиÑа у изабраној датотеци." msgid "Cannot read file." msgstr "ÐиÑам уÑпео да прочитам датотеку." msgid "Cannot open file." msgstr "ÐиÑам уÑпео да отворим датотеку." msgid "Selected contact will be removed." msgstr "Подаци изабраног познаника ће бити уклоњени" msgid "Select photo" msgstr "Изаберите Ñлику" msgid "Address" msgstr "ÐдреÑа" msgid "Postcode" msgstr "ПоштанÑки број" msgid "City" msgstr "Град" msgid "State" msgstr "Република" msgid "Country" msgstr "Држава" msgid "Add contact" msgstr "Додај познаника" msgid "Personal" msgstr "Лично" msgid "Phones" msgstr "Телефони" msgid "Internet" msgstr "Интернет" msgid "Color of contact tags" msgstr "Боја ознака познаника" msgid "Color of links" msgstr "Боја веза" msgid "Font size" msgstr "Величина Ñловног лика" msgid "Name font size" msgstr "Величина Ñловног лика имена" msgid "Item font size" msgstr "Величина Ñловног лика Ñтавке" msgid "Photo size" msgstr "Величина Ñлике" msgid "Small" msgstr "Малa" msgid "Medium" msgstr "ОÑредњи" msgid "Large" msgstr "Великa" msgid "Hide group column" msgstr "Сакриј Ñтубац Ñкупа" msgid "Maps provider" msgstr "Добављач карти" msgid "Miscellaneous" msgstr "Разно" msgid "Groups" msgstr "Скупови" msgid "Visible columns in birthday browser" msgstr "Видљиви Ñтупци у прегледнику рођендана" msgid "Show calendar" msgstr "Приказуј календар" msgid "Show tasks" msgstr "Прикажи задатке" msgid "Show contacts" msgstr "Прикажи познанике" msgid "Show notes" msgstr "Прикажи белешке" msgid "Show options" msgstr "Прикажи могућноÑти" msgid "Show small calendar window" msgstr "Прикажи умањени прозор календара" msgid "Check for events since last run" msgstr "Провери протекле догађаје од поÑледњег покретања" msgid "Number of days to check forward for events (default: 0)" msgstr "Број дана за проверу предÑтојећих догађаја (подразумевано: 0)" msgid "Set absolute path for settings and data files" msgstr "ПоÑтави потпуну путању поÑтавки и датотека података" msgid "Match contacts with given string" msgstr "Упореди податке познаника Ñа задатом ниÑком" msgid "handy personal organizer" msgstr "згодан лични уÑтројилац" msgid "ERROR: Cannot create config files" msgstr "Грешка: ÐиÑам уÑпео да образујем датотеке поÑтавки" msgid "Another copy of OSMO is already running." msgstr "Ðеки други примерак ОÑма је у погону" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "ИÑтовремено коришћење два или више примерка ОÑма може довеÑти до губитка " "података." msgid "Do you really want to continue?" msgstr "Желите ли заиÑта да наÑтавите?" msgid "Warning" msgstr "Упозорење" msgid "The note has changed." msgstr "Белешка је промењена" msgid "Do you want to save it?" msgstr "Да ли желите да је Ñачувате?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Ðема запиÑа у изабраној датотеци." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Желите ли заиÑта да наÑтавите?" msgid "Question" msgstr "Питање" msgid "Words" msgstr "Речи" msgid "Lines" msgstr "Линије" msgid "Characters" msgstr "Знаци" msgid "White characters" msgstr "Знаци празнина" msgid "Bytes" msgstr "Бајтова" msgid "Document" msgstr "Документ" msgid "Selection" msgstr "Избор" msgid "Created" msgstr "Створен" msgid "Modified" msgstr "Измењен" msgid "New note" msgstr "Ðова белешка" msgid "Add note" msgstr "Додај белешку" msgid "Edit note" msgstr "Уреди белешку" msgid "Delete note" msgstr "Избриши белешку" msgid "Remove note" msgstr "Уклони белешку" msgid "Find" msgstr "Потражи" msgid "Clear attributes" msgstr "ОчиÑти оÑобине" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Сачувај белешку" msgid "Insert current date and time" msgstr "Уметни тренутни датум и време" msgid "Insert separator" msgstr "Уметни раздвајач" msgid "Statistics" msgstr "СтатиÑтика" msgid "Close editor" msgstr "Затвори уређивач" msgid "Toggle spell checker" msgstr "Прекидач правопиÑара" msgid "Category" msgstr "Ð’Ñ€Ñта" msgid "Note name" msgstr "Ðазив белешке" msgid "Last changes" msgstr "ПоÑледња измена" msgid "Read-only" msgstr "Ñамо за читање" msgid "Line" msgstr "Црта" msgid "Column" msgstr "Стубац" msgid "case sensitive" msgstr "оÑетљиво на величину Ñлова" msgid "Close find entry" msgstr "Затвори ÑƒÐ½Ð¾Ñ Ð¿Ñ€ÐµÑ‚Ñ€Ð°Ð³Ðµ" msgid "Edit entry" msgstr "Уреди уноÑ" msgid "Remember cursor position" msgstr "Запамти положај показивача" msgid "Selected note will be removed." msgstr "Изабрана белешка ће бити уклоњена." msgid "No further data recovery will be possible." msgstr "Даљи опоравак података неће бити могућ" msgid "Plain" msgstr "једноÑтавно" msgid "Encrypted" msgstr "Шифровано" msgid "Note type" msgstr "Ð’Ñ€Ñта белешке" msgid "Cannot open the note." msgstr "ÐиÑам уÑпео да отворим белешку." msgid "encryption support is disabled" msgstr "подршка за шифровање је онемогућена" msgid "Authorization" msgstr "Овлашћење" msgid "Algorithm" msgstr "Ðлгоритам" msgid "Hashing" msgstr "Шифовање" msgid "Compression" msgstr "Сажимање" msgid "Ratio" msgstr "ОпÑег" msgid "Fast" msgstr "Брзо" msgid "Good" msgstr "Добро" msgid "Best" msgstr "Ðајбоље" msgid "Remember the last selected category" msgstr "Запамти поÑледњу обележену врÑту" msgid "Use system format for date and time" msgstr "КориÑти ÑиÑтемÑки облик датума и времена" msgid "Encryption" msgstr "Шифровање" msgid "Visible columns" msgstr "Видљиви Ñтупци" msgid "Categories" msgstr "Ð’Ñ€Ñте" msgid "Notes options" msgstr "МогућноÑти белешки" msgid "Osmo has to be restarted to take effect." msgstr "Морате поново да покренете ОÑма како би применили измене." msgid "Layout" msgstr "РаÑпоред" msgid "Vertical" msgstr "УÑправно" msgid "Horizontal" msgstr "Положено" msgid "Tabs position" msgstr "Положај лиÑтова" msgid "Left" msgstr "Лево" msgid "Right" msgstr "ДеÑно" msgid "Top" msgstr "Ðа врху" msgid "Bottom" msgstr "Ðа дну" msgid "Use default stock icons" msgstr "КориÑти подразумеване иконице" msgid "Disable underline in links" msgstr "Онемогући подвлачење адреÑа веза" msgid "Draw rows in alternating colors" msgstr "Цртај редове заменÑким бојама" msgid "Show exit button in toolbar" msgstr "Приказуј дугме излаза у траци алата" msgid "At least one module must be visible." msgstr "Барем једна јединица мора да оÑтане видљива." msgid "Override locale settings" msgstr "Занемари меÑне поÑтавке" msgid "Date format" msgstr "Облик датума" msgid "DD-MM-YYYY" msgstr "ДД-ММ-ГГГ" msgid "MM-DD-YYYY" msgstr "ММ-ДД-ГГГ" msgid "YYYY-MM-DD" msgstr "ГГГ-ММ-ДД" msgid "YYYY-DD-MM" msgstr "ГГГ-ДД-ММ" msgid "Time format" msgstr "Облик времена" msgid "hours" msgstr "Ñати" msgid "Spell checker language" msgstr "Језик провере правопиÑа" msgid "Enable tooltips" msgstr "Укључи облачиће упутÑтва" msgid "Remember last selected page" msgstr "Запамти поÑледњу обележену Ñтрану" msgid "Save data after every modification" msgstr "Сачувај податке поÑле Ñваке измене" msgid "Web browser" msgstr "Веб прегледник" msgid "E-mail client" msgstr "Клијент е-поште" msgid "Sound player" msgstr "Извођач звука" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Образац %s ће бити замењен адреÑом Веба" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Образац %s ће бити замењен адреÑом е-поште" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Образац %s ће бити замењен именом звучне датотеке" msgid "Enable system tray" msgstr "Омогући обавештајну облаÑÑ‚" msgid "Start minimised" msgstr "Покрећи умањено" msgid "Blink on events" msgstr "Трепћи на догађаје" msgid "Ignore day note events" msgstr "Занемари догађаје дневне белешке" msgid "Hide" msgstr "Сакриј" msgid "Helpers" msgstr "Помоћници" msgid "System tray" msgstr "Обавештајна облаÑÑ‚" msgid "Edit" msgstr "Уреди" msgid "Go Down" msgstr "Иди наниже" msgid "Select date" msgstr "Изаберите датум" msgid "Select font" msgstr "Изаберите Ñловни лик" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Рачунар" msgid "Edit day note" msgstr "Уреди дневну белешку" msgid "Save" msgstr "Сачувај" msgid "Display full-year calendar" msgstr "Прикажи потпуни годишњи календар" msgid "Help" msgstr "Помоћ" msgid "Invalid item" msgstr "ÐеиÑправна Ñтавка" msgid "Valid item" msgstr "Ваљана Ñтавка" msgid "Edit task" msgstr "Уреди задатак" msgid "Remove task" msgstr "Уклони задатак" msgid "Import tasks" msgstr "Увези задатке" msgid "Export tasks" msgstr "Извези задатке" msgid "Change to previous date" msgstr "Иди на претходни дан" msgid "Change to next date" msgstr "Иди Ñледећи дан" msgid "Print" msgstr "Штампај" msgid "Normal" msgstr "Обично" msgid "Recurrent" msgstr "Понављајуће" msgid "Started" msgstr "Започето" msgid "Finished" msgstr "Завршено" msgid "All items" msgstr "Све Ñтавке" msgid "New task" msgstr "Ðови задатак" msgid "Change due date to previous date" msgstr "Промени крајњи рок на претходни датум" msgid "Change due date to next date" msgstr "Промени крајњи рок на Ñледећи дан" msgid "Print visible tasks list" msgstr "Одштампај ÑпиÑак видљивих задатака" msgid "Due date" msgstr "Крајњи рок" msgid "Priority" msgstr "Значај" msgid "Task details" msgstr "ПојединоÑти задатка" msgid "Close description panel" msgstr "Затвори површ Ñа опиÑом" msgid "No tasks with defined date found." msgstr "Ðема задатака у одређеном дану." msgid "Save tasks" msgstr "Сачувај задатке" msgid "tasks exported" msgstr "подаци Ñу извезени" msgid "Please select at least one day when recurrency is enabled." msgstr "Молим, изаберите бар један дан када је омогућено понављање" msgid "Set time" msgstr "ПодеÑи време" msgid "Tomorrow" msgstr "Сутра" msgid "Selected task will be removed." msgstr "Изабрани задатак ће бити уклоњен." msgid "Basic" msgstr "ОÑновно" msgid "Select date and time" msgstr "Изаберите датум и време" msgid "Low" msgstr "Ðизак" msgid "High" msgstr "ВиÑок" msgid "Enable sound notification" msgstr "Омогући звучна обавештења" #, fuzzy msgid "Enable notification dialog" msgstr "Омогући звучна обавештења" msgid "Advanced" msgstr "Ðапредно" msgid "Alarm warning" msgstr "Упозорење узбуном" msgid "Postpone time" msgstr "Време одгоде" msgid "Alarm command" msgstr "Ðаредба узбуне" msgid "Recurrent task" msgstr "Задатак Ñа понавањем" msgid "Enable" msgstr "Омогући" msgid "Start" msgstr "Почетак" msgid "End" msgstr "Крај" msgid "Interval" msgstr "Међувреме" msgid "Time period" msgstr "ВременÑко трајање" msgid "Date period" msgstr "Трајање у данима" msgid "Repeat" msgstr "Понови" msgid "Repeat in the following days" msgstr "Понови у Ñледећим данима" msgid "Ignore alarm when task expired offline" msgstr "Занемари узбуну када задатак иÑтекне ван мреже" msgid "Select a font..." msgstr "Изаберите Ñловни лик..." msgid "Color of items that are due today" msgstr "Боја Ñтавки којима је крајњи рок данаÑ" msgid "Color of items that are due in the next 7 days" msgstr "Боја Ñтавки којима је крајњи рок кроз 7 дана" msgid "Color of items that are past due" msgstr "Боја Ñтавки којима је крајњи рок прошао" msgid "Task info font" msgstr "Словни лик обавештења о задатку" msgid "Show in bold tasks with high priority" msgstr "Подебљај задатке Ñа виÑоким значајем" msgid "Hide completed tasks" msgstr "Сакриј завршене задатке" msgid "Delete completed tasks without confirmation" msgstr "Бриши извршене задатке без захтева за потврдом" msgid "Add new task when double clicked on tasks list" msgstr "Додај нови задатак при двоклику на ÑпиÑак задатака" msgid "minutes" msgstr "минута" msgid "0 for disable" msgstr "0 за онемогућавање" msgid "Repeat sound alarm" msgstr "Понављај звук узбуне" msgid "times" msgstr "пута" msgid "Global notification command" msgstr "Општа наредба обавештења" msgid "Tasks options" msgstr "МогућноÑти задатака" msgid "Reminder options" msgstr "МогућноÑти подÑетника" msgid "Tasks list" msgstr "СпиÑак задатака" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Ðе." msgid "New Moon" msgstr "Ðови меÑец" msgid "Waxing Crescent Moon" msgstr "Млад меÑец" msgid "Quarter Moon" msgstr "Прва четврт меÑеца" msgid "Waxing Gibbous Moon" msgstr "РаÑтућа прва половина меÑеца" msgid "Full Moon" msgstr "Пуни меÑец" msgid "Waning Gibbous Moon" msgstr "Смањујући пун меÑец" msgid "Last Quarter Moon" msgstr "ПоÑледња четврт меÑеца" msgid "Waning Crescent Moon" msgstr "Смањујућа задња четврт" msgid "Error" msgstr "Грешка" msgid "Selected file exist! Overwrite?" msgstr "Изабрана датотека већ поÑтоји. Да је препишем?" #~ msgid "Select and show first item after search" #~ msgstr "Изабери и прикажи прву Ñтавку поÑле претраге" #~ msgid "Order" #~ msgstr "РаÑпоред" #~ msgid "Mode" #~ msgstr "Ðачин" #~ msgid "Ascending" #~ msgstr "РаÑтуће" #~ msgid "Descending" #~ msgstr "Опадајуће" #~ msgid "Sorting" #~ msgstr "РаÑпоред" #~ msgid "Contact map location" #~ msgstr "Положај познаника на карти" osmo-0.2.14/po/el.po000664 001750 001750 00000133035 12561325524 014115 0ustar00pasppasp000000 000000 # Greek translation of Osmo # This file is distributed under the same license as the Osmo package. # tsakf , 2008 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2008-11-08 19:10+0200\n" "Last-Translator: tsakf \n" "Language-Team: Greek\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" msgid "About" msgstr "ΠεÏί" msgid "Close" msgstr "Κλείσιμο" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "Μετάβαση στην Ï€ÏοηγοÏμενη καÏτέλα" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "Μετάβαση στην επόμενη καÏτέλα" msgid "switch to selected page" msgstr "Μετάβαση στο επιλεγμένο πακέτο" #, fuzzy msgid "show options window" msgstr "Εμφάνιση επιλογών" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "switch page in options and about tab" msgid "exit" msgstr "έξοδος" #, fuzzy msgid "Space" msgstr "Αποθήκευση" msgid "select current date" msgstr "Επιλογή Ï„Ïέχουσας ημεÏομηνίας" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "toggle personal data visibility" #, fuzzy msgid "Arrows" msgstr "Βέλος" msgid "change day" msgstr "αλλαγή ημέÏας" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "εμφάνιση των πεÏιεχομένων της ημέÏας στο πλαίσιο πληÏοφοÏιών ημέÏας" msgid "change month" msgstr "αλλαγή μήνα" #, fuzzy msgid "Home/End" msgstr "ΣπιτιοÏ" msgid "change year" msgstr "αλλαγή έτους" msgid "toggle calendars for the previous and next month" msgstr "εναλλαγή ημεÏολογίου για Ï€ÏοηγοÏμενο/επόμενο μήνα" msgid "day notes browser" msgstr "πλοηγητής σημειώσεων" msgid "assign background color to day note" msgstr "Ï€Ïοσθήκη χÏώματος φόντου στην σημείωση" msgid "date calculator" msgstr "υπολογιστής ημεÏών" msgid "show full-year calendar" msgstr "Εμφάνιση ετήσιου ημεÏολογίου" msgid "jump to date" msgstr "μετάβαση σε ημέÏα" #, fuzzy msgid "Delete" msgstr "Διαγαφή σημείωσης" msgid "remove day note" msgstr "διαγÏαφή σημείωσης" #, fuzzy msgid "Alt+Arrows" msgstr "Βέλος" msgid "Esc" msgstr "" #, fuzzy msgid "close editor" msgstr "Κλείσιμο κειμενογÏάφου" msgid "toggle bold" msgstr "" #, fuzzy msgid "toggle italic" msgstr "εναλλαγή εÏγασιών σε απόκÏυψη" #, fuzzy msgid "toggle underline" msgstr "ΥπογÏάμμιση" #, fuzzy msgid "toggle strikethrough" msgstr "Strikethrough" #, fuzzy msgid "toggle highlight" msgstr "Έντονα" msgid "Arrows Up/Down" msgstr "" #, fuzzy msgid "toggle alternative view" msgstr "Εναλλακτική εμφάνιση" #, fuzzy msgid "year info" msgstr "ΠληÏοφοÏίες έτους" #, fuzzy msgid "set current year" msgstr "ΤÏέχον έτος" #, fuzzy msgid "close full-year calendar" msgstr "Εμφάνιση ετήσιου ημεÏολογίου" #, fuzzy msgid "Alt+a, Insert" msgstr "Εισαγωγή" msgid "add task" msgstr "Ï€Ïοσθήκη εÏγασίας" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "Ï„Ïοποποίηση εÏγασίας" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "διαγÏαφή εÏγασίας" msgid "toggle hidden tasks" msgstr "εναλλαγή εÏγασιών σε απόκÏυψη" msgid "activate search field" msgstr "ενεÏγοποίηση πεδίου αναζήτησης" #, fuzzy msgid "Left, Right" msgstr "Δεξιά" msgid "change category filter" msgstr "αλλαγή φίλτÏου κατηγοÏίας" msgid "close task info panel" msgstr "κλείσιμο πλαισίου εÏγασιών" msgid "Insert" msgstr "Εισαγωγή" msgid "add contact" msgstr "Ï€Ïοσθήκη επαφής" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "διόÏθωση επαφής" msgid "remove contact" msgstr "διαγÏαφή επαφής" msgid "change search mode" msgstr "αλλαγή Ï„Ïόπου αναζήτησης" msgid "close contact details panel" msgstr "κλείσιμο πλαισίου επαφών" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "άνοιγα σημείωσης" msgid "add note" msgstr "Ï€Ïοσθήκη σημείωσης" msgid "remove note" msgstr "διαγÏαφή σημείωσης" msgid "edit note name and category" msgstr "διόÏθωση ονόματος σημείωσης και κατηγοÏίας" msgid "close note editor" msgstr "κλείσιμο κειμενογÏάφου σημειώσεων" msgid "save note" msgstr "αποθήκευση σημείωσης" msgid "find text" msgstr "αναζήτηση κειμένου" msgid "clear selection attributes" msgstr "καθαÏισμός ιδιοτήτων επιλογής" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "Το OSMO σχεδιάστηκε με σκοό την ευκολία χÏήσης, έτσι υπάÏχουν πολλές εντολές " "που ενεÏγοποιοÏνται από το πληκτÏολόγιο. Εδώ είναι ο πλήÏης κατάλογος:" msgid "General" msgstr "Γενικά" msgid "Calendar" msgstr "ΗμεÏολόγιο" #, fuzzy msgid "Note editor" msgstr "Κλείσιμο κειμενογÏάφου" msgid "Full-year calendar" msgstr "ΗμεÏολόγιο Έτους" msgid "Tasks" msgstr "ΕÏγασίες" msgid "Contacts" msgstr "Επαφές" msgid "Notes" msgstr "Σημειώσεις" msgid "Selector" msgstr "Επιλογέας" msgid "Editor" msgstr "ΚειμενογÏάφος" msgid "A handy personal organizer" msgstr "Ένα βολικό Organizer" msgid "compiled on" msgstr "compiled on" msgid "Programming" msgstr "ΠÏογÏαμματισμός" msgid "Graphics" msgstr "ΓÏαφικά" msgid "Contributors" msgstr "Συντελεστές" msgid "Translators" msgstr "ΜεταφÏαστές" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "" msgid "Compiled-in features" msgstr "Ενσωματωμένες δυνατότητες" msgid "iCalendar support" msgstr "ΥποστήÏιξη iCalendar" #, fuzzy msgid "Encrypted notes support" msgstr "ΚÏυπτογÏαφημένες σημειώσεις" msgid "Backup support" msgstr "" #, fuzzy msgid "Printing support" msgstr "ΥποστήÏιξη iCalendar" #, fuzzy msgid "Spell checker support" msgstr "ΥποστήÏιξη συσκευών με SyncML" msgid "version" msgstr "Έκδοση" msgid "SVN revision" msgstr "SNV έκδοση" msgid "Key shortcuts" msgstr "ΣυντομεÏσεις" msgid "License" msgstr "Άδεια χÏήσης" msgid "Save backup" msgstr "" msgid "Password protection" msgstr "" msgid "Enter password" msgstr "Εισαγωγή λέξης κλειδί" msgid "Re-enter password" msgstr "Επανεισαγωγή λέξης κλειδί" #, fuzzy msgid "Please enter the password" msgstr "Επανεισαγωγή λέξης κλειδί" msgid "Passwords do not match!" msgstr "Οι λέξεις κλειδιά δεν ταιÏιάζουν" #, fuzzy msgid "Cannot create backup!" msgstr "Αδυναμία δημιουÏγίας αÏχείου." msgid "Backup file saved successfully!" msgstr "" msgid "Open backup file" msgstr "" msgid "Osmo backup files (*.bck)" msgstr "" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "Λάθος λάξη κλειδί" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "ΣίγουÏα;" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "Γεννήθηκε" msgid "year old" msgid_plural "years old" msgstr[0] "ετών" msgstr[1] "ετών" msgid "Current time" msgstr "ΤÏέχουσα ÏŽÏα" msgid "Day number" msgstr "ΑÏθμός ημέÏας" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "ΗμέÏα μέχÏι τέλος του έτους" msgstr[1] "ΗμέÏες μέχÏι τέλος του έτους" msgid "the last day of the year" msgstr "η τελευταία ημέÏα του έτους" msgid "Today distance" msgstr "ΧÏονική απόσταση από σήμεÏα" msgid "Week number" msgstr "ΑÏιθμός εβδομάδας" msgid "Marked days" msgstr "Επιλεγείσες ημέÏες" msgid "Weekend days" msgstr "ΣαββατοκÏÏιακα" msgid "Moon phase" msgstr "Φάση σελήνης" msgid "Zodiac sign" msgstr "ΩÏοσκόπιο" msgid "Day notes" msgstr "ΗμεÏήσιες σημειώσεις" msgid "Day tasks" msgstr "ΗμεÏήσιες εÏγασίες" msgid "Birthday" msgstr "Γενέθλια" msgid "Day category" msgstr "ΚατηγοÏία ημέÏας" msgid "Selected day note will be removed." msgstr "Η επιλεχθείσα σημείωση θα διαγÏαφεί." msgid "Continue?" msgstr "Συνέχεια;" msgid "Previous year" msgstr "ΠÏοηγοÏμενο έτος" msgid "Previous month" msgstr "ΠÏοηγοÏμενος μήνας" msgid "Previous day" msgstr "ΠÏοηγοÏμενη ημέÏα" msgid "Today" msgstr "ΣήμεÏα" msgid "Next day" msgstr "Επόμενη ημέÏα" msgid "Next month" msgstr "Επόμενος μήνας" msgid "Next year" msgstr "Επόμενο έτος" msgid "Jump to date" msgstr "Μετάβαση στην ημεÏομηνία" msgid "Print calendar" msgstr "ΕκτÏπωση ημεÏολογίου" msgid "Date calculator" msgstr "Υπολογιστής ημεÏών" msgid "Backup data" msgstr "" #, fuzzy msgid "Restore data" msgstr "Αποτέλεσμα" msgid "Preferences" msgstr "ΠÏοτιμήσεις" msgid "Quit" msgstr "Έξοδος" msgid "Toggle day note panel" msgstr "Εναλλάξιμο πλαίσιο σημειώσεων ημέÏας" msgid "Add task" msgstr "ΠÏοσθήκη εÏγασίας" msgid "Select day color" msgstr "Επιλογή χÏώματος ημέÏας" msgid "Browse notes" msgstr "Πλοήγηση στις σημειώσεις" msgid "Browse iCal events" msgstr "ΠΛοήγηση στα συμβάντα iCal" msgid "Export to iCal file" msgstr "Εξαγωγή σε αÏχείο iCal" msgid "Previous and next month" msgstr "ΠÏοηγοÏμενος και επόμενος μήνας" msgid "Close note panel" msgstr "Κλείσιμο πλαισίου σημειώσεων" msgid "Highlight" msgstr "Έντονα" msgid "Strikethrough" msgstr "Strikethrough" msgid "Underline" msgstr "ΥπογÏάμμιση" msgid "Italic" msgstr "Λοξά" msgid "Bold" msgstr "Έντονα" msgid "Insert timeline" msgstr "Εισαγωγή ημεÏομηνίας/ÏŽÏας" msgid "Clear text" msgstr "ΚαθαÏισμός κειμένου" msgid "Info" msgstr "ΠληÏοφοÏίες" msgid "Select color" msgstr "Επιλογή χÏώματος" msgid "None" msgstr "Κανένα" msgid "Cancel" msgstr "ΑκÏÏωση" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "έτος" msgstr[1] "έτη" msgid "month" msgid_plural "months" msgstr[0] "μήνας" msgstr[1] "μήνες" msgid "day" msgid_plural "days" msgstr[0] "ημέÏα" msgstr[1] "ημέÏες" msgid "hour" msgid_plural "hours" msgstr[0] "ÏŽÏα" msgstr[1] "ÏŽÏες" msgid "minute" msgid_plural "minutes" msgstr[0] "λεπτό" msgstr[1] "λεπτά" msgid "second" msgid_plural "seconds" msgstr[0] "δευτεÏόλεπτο" msgstr[1] "δευτεÏόλεπτα" msgid "or" msgstr "ή" msgid "rounded down" msgstr "στÏογγÏλευση σε" msgid "week" msgid_plural "weeks" msgstr[0] "εβδομάδα" msgstr[1] "εβδομάδες" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" #, fuzzy msgid "weekend day" msgid_plural "weekend days" msgstr[0] "ΣαββατοκÏÏιακα" msgstr[1] "ΣαββατοκÏÏιακα" msgid "This calculator only supports dates after year 1." msgstr "Αυτός ο υπολογιστής υπολογίζει ημεÏομηνίες μετά το έτος 1" #, fuzzy msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "ΧÏώμα ΣαββατοκÏÏιακα" msgstr[1] "ΧÏώμα ΣαββατοκÏÏιακα" msgid "Year" msgstr "Έτος" msgid "Month" msgstr "Μήνας" msgid "Day" msgstr "ΗμέÏα" msgid "Current date" msgstr "ΗμεÏομηνία" msgid "Set current date" msgstr "ΤÏέχουσα ημεÏομηνία" msgid "Hour" msgstr "ÎÏα" msgid "Minute" msgstr "Λεπτά" msgid "Second" msgstr "ΔευτεÏόλεπτα" msgid "Set current time" msgstr "ΡÏθμιση ÏŽÏας" msgid "Reset time" msgstr "ΕπανακαθοÏισμός ÏŽÏας" msgid "First date and time" msgstr "ΑÏχική ημεÏομηνία/ÏŽÏα" msgid "Second date and time" msgstr "Τελική ημεÏομηνία/ÏŽÏα" msgid "Alternative time units" msgstr "Εναλλακτικές μονάδες ÏŽÏες" msgid "Result" msgstr "Αποτέλεσμα" msgid "Duration between two dates" msgstr "ΔιάÏκεια Î¼ÎµÏ„Î±Î¾Ï Ï„Ï‰Î½ δÏο ημεÏομηνιών" msgid "Operation" msgstr "ΛειτουÏγία" msgid "add" msgstr "Ï€Ïόσθεση" msgid "subtract" msgstr "αφαίÏεση" msgid "Date and time to add or subtract from" msgstr "ΗμεÏομηνία και ÏŽÏα για Ï€Ïόσθεση ή αφαίÏεση" msgid "Years" msgstr "Έτη" msgid "Months" msgstr "Μήνες" msgid "Days" msgstr "ΗμέÏες" msgid "Weeks" msgstr "Εβδομάδες" msgid "Hours" msgstr "'ΩÏες" msgid "Minutes" msgstr "Λεπτά" msgid "Seconds" msgstr "ΔευτεÏόλεπτα" #, fuzzy msgid "Ignore weekend days" msgstr "ΣαββατοκÏÏιακα" msgid "Reset fields" msgstr "ΚαθαÏισμός πεδίων" msgid "Time to add or subtract" msgstr "ÎÏα για Ï€Ïόσθεση ή αφαίÏεση" msgid "Jump to" msgstr "Μετάβαση σε" msgid "Add to or subtract from a date" msgstr "ΠÏόσθεση με/ΑφαίÏεση από ημεÏομηνία" msgid "Leap year" msgstr "Leap year" msgid "Yes" msgstr "Îαι" msgid "No" msgstr "Οχι" msgid "Chinese year animal" msgstr "Κινέζικο ωÏοσκόπιο" msgid "Number of days" msgstr "ΑÏιθμός ημεÏών" msgid "Number of weeks" msgstr "ΑÏιθμός εβδομάδων" msgid "Number of weekend days" msgstr "ΑÏιθμός ΣαββατοκÏÏιακα" msgid "Year info" msgstr "ΠληÏοφοÏίες έτους" msgid "Current year" msgstr "ΤÏέχον έτος" msgid "Alternative view" msgstr "Εναλλακτική εμφάνιση" msgid "event" msgid_plural "events" msgstr[0] "Συμβάν" msgstr[1] "Συμβάντα" #, fuzzy msgid "No valid calendars defined" msgstr "Δεν έχουν οÏισθεί ημεÏολόγια" msgid "iCalendar events" msgstr "Συμβάντα iCalendar" msgid "Date" msgstr "ΗμεÏομηνία" #, fuzzy msgid "Time" msgstr "Timeline" msgid "Summary" msgstr "ΠεÏίληψη" msgid "Select output file" msgstr "Επιλογή αÏχείου" msgid "The list will be cleared and all entries will be lost." msgstr "Η λίστα θα διαγÏαφεί." msgid "Done!" msgstr "ΟλοκληÏώθηκε!" msgid "event exported" msgid_plural "events exported" msgstr[0] "Γεγονός εξήχθη" msgstr[1] "Γεγονότα εξήχθησαν" msgid "iCalendar export" msgstr "Εξαγωγή iCalendar" msgid "Day Selector" msgstr "Επιλογέας ημέÏας" msgid "Use date period" msgstr "ΠεÏίοδος ημεÏομηνίας" msgid "Add" msgstr "ΠÏοσθήκη" msgid "Clear" msgstr "ΚαθαÏισμός" msgid "Remove" msgstr "ΑφαίÏεση" msgid "Output filename" msgstr "Όνομα ΑÏχείου" msgid "Browse" msgstr "Πλοήγηση" msgid "Export" msgstr "Εξαγωγή" msgid "no entries" msgstr "δεν υπάÏχουν καταχωÏήσεις" msgid "entry" msgid_plural "entries" msgstr[0] "καταχώÏηση" msgstr[1] "καταχωÏήσεις" msgid "Calendar notes" msgstr "Σημειώσεις ημεÏολογίου" msgid "Search" msgstr "Αναζήτηση" msgid "Filter" msgstr "ΦίλτÏο" msgid "Current month" msgstr "ΤÏέχων μήνας" msgid "Selected month" msgstr "Επιλεγμένος μήνας" msgid "Selected year" msgstr "Επιλεγμένο έτος" msgid "Selected month and year" msgstr "Επιλογή: μήνας και έτος" msgid "All notes" msgstr "Όλες οι σημειώσεις" msgid "Case sensitive" msgstr "Κεφαλαία/πεζά" msgid "Strikethrough past day notes" msgstr "Strikethrough past day notes" msgid "Note" msgstr "Σημείωση" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Όνομα σημείωσης" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "ΜΜ-ΗΗ-ΕΕΕΕ" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "ΜοÏφή ημεÏομηνίας" #, fuzzy msgid "Set default format" msgstr "ΜοÏφή αÏχείου" #, fuzzy msgid "Date format syntax" msgstr "ΜοÏφή ημεÏομηνίας" msgid "Day note marker" msgstr "Επιλογέας σημειώσειων" msgid "Event marker" msgstr "Επιλογέας συμβάντων" msgid "Circle" msgstr "ΚÏκλος" msgid "Ellipse" msgstr "Έλλειψη" msgid "Wave" msgstr "ΚÏμα" msgid "Current day marker" msgstr "Δείκτης σημεÏινής ημεÏομηνίας" msgid "Arrow" msgstr "Βέλος" msgid "Free-hand circle" msgstr "ΚÏκλος " msgid "Colors" msgstr "ΧÏώματα" msgid "Header color" msgstr "ΧÏώμα κεφαλίδας" msgid "Weekend days color" msgstr "ΧÏώμα ΣαββατοκÏÏιακα" msgid "Cursor color" msgstr "ΧÏώμα δείκτη" msgid "Event marker color" msgstr "ΧÏώμα επιλογέα συμβάντων" msgid "Current day marker color" msgstr "ΧÏώμα επιλογέα Ï„Ïέχουσας ημέÏας" #, fuzzy msgid "Birthday marker color" msgstr "ΧÏώμα επιλογέα Ï„Ïέχουσας ημέÏας" msgid "Date font" msgstr "ΓÏαμματοσειÏά ημέÏας" msgid "Calendar font" msgstr "ΓÏαμματοσειÏά ημεÏολογίου" msgid "Note font" msgstr "ΓÏαμματοσειÏά σημειώσεων" msgid "Enable block cursor" msgstr "ΕνεÏγοποίηση δείκτη block" msgid "Cursor thickness" msgstr "Πάχος δείκτη" msgid "Thin" msgstr "Λεπτός" msgid "Thick" msgstr "ΠαχÏÏ‚" #, fuzzy msgid "Edit category" msgstr "ΚατηγοÏία ημέÏας" msgid "Color" msgstr "ΧÏώμα" msgid "Name" msgstr "Όνομα" msgid "Select ICS file" msgstr "Επιλογή αÏχείου ICS" msgid "All Files" msgstr "Όλα τα αÏχεία" msgid "Calendar files (*.ics)" msgstr "ΑÏχεία ημεÏολογίου (*.ics)" msgid "Modify ICAL parameters" msgstr "ΤÏοποποίηση παÏαμέτÏων ICAL" msgid "Filename" msgstr "Όνομα ΑÏχείου" msgid "Options" msgstr "Επιλογές" msgid "Disabled" msgstr "" msgid "Valid" msgstr "ΈγκυÏο" msgid "Description" msgstr "ΠεÏιγÏαφή" #, fuzzy msgid "Full date" msgstr "ΗμεÏομηνία εφαÏμογής" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "ΠÏώτη ημέÏα της εβδομάδας ΔευτέÏα" msgid "Show day names" msgstr "Εμφάνιση ονομάτων ημέÏας" msgid "No month change" msgstr "Όχι αλλαγή μηνός" msgid "Show week numbers" msgstr "Εμφάνιση αÏÎ¹Î¸Î¼Î¿Ï ÎµÎ²Î´Î¿Î¼Î¬Î´Î±Ï‚" msgid "Simple view in full-year calendar" msgstr "Εμφάνιση πλήÏους ημεÏολογίου" msgid "Enable auxilary calendars" msgstr "ΕνεÏγοποίηση εξωτεÏικών ημεÏολογίων" msgid "Ascending sorting in day notes browser" msgstr "ΑÏξουσα ταξινόμιση στον πλοηγητή σημειώσεων" msgid "Enable spell checker in day notes" msgstr "" #, fuzzy msgid "Show seconds" msgstr "ΔευτεÏόλεπτα" msgid "Appearance" msgstr "Εμφάνιση" msgid "Day categories" msgstr "ΚατηγοÏίες ημεÏών" msgid "iCalendar files" msgstr "ΑÏχεία iCalendar" msgid "Show in day info panel" msgstr "Εμφάνιση ημέÏας στο πλάισιο πληÏοφοÏιών" #, fuzzy msgid "Name day" msgstr "Ονομαστική εοÏτή" msgid "Error printing" msgstr "ΕκτÏπωση λαθών" msgid "Printing properties" msgstr "" #, fuzzy msgid "Month name" msgstr "Όνομα σημείωσης" #, fuzzy msgid "Day name" msgstr "ΑÏθμός ημέÏας" msgid "Events" msgstr "Συμβάντα" #, fuzzy msgid "Fonts" msgstr "Μήνες" #, fuzzy msgid "Birthdays" msgstr "Γενέθλια" #, fuzzy msgid "Namedays" msgstr "Όνομα" #, fuzzy msgid "Visible events" msgstr "Εμφανείς στήλες" #, fuzzy msgid "Padding" msgstr "Ï€Ïόσθεση" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "" #, fuzzy msgid "Portrait" msgstr "ΠÏοτεÏαιότητα" msgid "Landscape" msgstr "" msgid "Timeline" msgstr "Timeline" msgid "From (hour)" msgstr "Από (ÏŽÏα)" msgid "Step (minutes)" msgstr "Βήμα (λεπτά)" msgid "To (hour)" msgstr "Έως (ÏŽÏα)" msgid "No date" msgstr "ΧωÏίς ΗμεÏομηνία" msgid "Rat" msgstr "Ποντίκι" msgid "Ox" msgstr "Βουβάλι" msgid "Tiger" msgstr "ΤίγÏης" msgid "Hare" msgstr "Λαγός" msgid "Dragon" msgstr "ΔÏάκος" msgid "Snake" msgstr "Φίδι" msgid "Horse" msgstr "Άλογο" msgid "Sheep" msgstr "ΠÏόβατο" msgid "Monkey" msgstr "Πίθηκος" msgid "Fowl" msgstr "ΚόκοÏας" msgid "Dog" msgstr "ΣκÏλος" msgid "Pig" msgstr "ΓουÏοÏνι" msgid "Unknown" msgstr "Άγνωστο" msgid "Aquarius" msgstr "ΥδÏοχόος" msgid "Pisces" msgstr "Ιχθείς" msgid "Aries" msgstr "ΚÏιός" msgid "Taurus" msgstr "ΤαÏÏος" msgid "Gemini" msgstr "Δίδυμοι" msgid "Cancer" msgstr "ΚαÏκίνος" msgid "Leo" msgstr "Λέων" msgid "Virgo" msgstr "ΠαÏθένος" msgid "Libra" msgstr "Ζυγός" msgid "Scorpio" msgstr "ΣκοÏπιός" msgid "Sagittarius" msgstr "Τοξότης" msgid "Capricorn" msgstr "ΑιγόκεÏως" msgid "Cannot perform selected operation." msgstr "Αδυναμία εκτέλεσης λειτουÏγίας." msgid "Task has been modified or removed." msgstr "Η εÏγασία έχει Ï„Ïοποποιηθεί ή διαγÏαφεί." msgid "Remind me later" msgstr "ΥπενθÏμιση αÏγότεÏα" msgid "Done" msgstr "ΟλοκληÏώθηκε" msgid "postponed" msgstr "Αναβλήθηκε" msgid "Show task" msgstr "Εμφάνιση εÏγασίας" msgid "Alarm warning!" msgstr "ΥπενθÏμιση!" msgid "Day note" msgstr "Σημείωση ημέÏας" msgid "Type" msgstr "ΤÏπος" msgid "Event" msgstr "Συμβάν" msgid "Task" msgstr "ΕÏγασία" msgid "Show Osmo" msgstr "Εμφάνιση Osmo" msgid "No birthdays defined" msgstr "Δεν έχουν εισαχθεί γενέθλια" msgid "Birthdays list" msgstr "Κατάλογος γενεθλίων" msgid "Days to birthday" msgstr "ΗμέÏες μέχÏι γενέθλια" msgid "Age" msgstr "Ηλικία" msgid "Birthday date" msgstr "ΗμέÏα γενεθλίων" msgid "today" msgstr "σήμεÏα" #, fuzzy msgid "Please select address" msgstr "ΠαÏακαλώ επιλογή αÏχείου" msgid "Information" msgstr "ΠκηÏοφοÏίες" msgid "Work" msgstr "ΕÏγασίας" msgid "Home" msgstr "ΣπιτιοÏ" msgid "Group" msgstr "Ομάδα" msgid "First name" msgstr "Όνομα" msgid "Last name" msgstr "Επώνυμο" msgid "Second name" msgstr "ΠατÏώνυμο" msgid "Nickname" msgstr "Χαϊδευτικό" #, fuzzy msgid "Tags" msgstr "ΕÏγασία" msgid "Name day date" msgstr "Ονομαστική εοÏτή" msgid "Home address" msgstr "ΔιεÏθυνση διαμονής" msgid "Home postcode" msgstr "Ταχ. κώδικας διαμονής" msgid "Home city" msgstr "Πόλη διαμονής" msgid "Home state" msgstr "Îομός διαμονής" msgid "Home country" msgstr "ΧώÏα διαμονής" msgid "Organization" msgstr "ΟÏγανισμός" msgid "Department" msgstr "Τμήμα" msgid "Work address" msgstr "ΔιεÏθυνση εÏγασίας" msgid "Work postcode" msgstr "Ταχ. Κώδικας εÏγασίας" msgid "Work city" msgstr "Πόλη εÏγασίας" msgid "Work state" msgstr "Îομός εÏγασίας" msgid "Work country" msgstr "ΧώÏα εÏγασίας" msgid "Fax" msgstr "ΦΑΞ" msgid "Home phone" msgstr "Τηλέφωνο διαμονής" msgid "Home phone 2" msgstr "Τηλέφωνο διαμονής 2" msgid "Home phone 3" msgstr "Τηλέφωνο διαμονής 3" msgid "Home phone 4" msgstr "Τηλέφωνο διαμονής 4" msgid "Work phone" msgstr "Τηλέφωνο εÏγασίας" msgid "Work phone 2" msgstr "Τηλέφωνο εÏγασίας 2" msgid "Work phone 3" msgstr "Τηλέφωνο εÏγασίας 3" msgid "Work phone 4" msgstr "Τηλέφωνο εÏγασίας 4" msgid "Cell phone" msgstr "Κινητό τηλέφωνο" msgid "Cell phone 2" msgstr "Κινητό τηλέφωνο 2" msgid "Cell phone 3" msgstr "Κινητό τηλέφωνο 3" msgid "Cell phone 4" msgstr "Κινητό τηλέφωνο 4" msgid "E-Mail" msgstr "E-mail" msgid "E-Mail 2" msgstr "E-mail 2" msgid "E-Mail 3" msgstr "E-mail 3" msgid "E-Mail 4" msgstr "E-mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "ΦωτογÏαφία" msgid "Additional info" msgstr "ΠεÏισσότεÏες πληÏοφοÏίες" msgid "New contact" msgstr "Îέα επαφή" msgid "Remove contact" msgstr "ΔιαγÏαφή επαφής" msgid "Edit contact" msgstr "ΔιόÏθωση επαφής" msgid "Show birthdays" msgstr "Εμφάνιση γενεθλίων" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "Εισαγωγή επαφών" msgid "Export contacts" msgstr "Εξαγωγή επαφών" msgid "First Name" msgstr "Όνομα" msgid "Last Name" msgstr "Επίθετο " msgid "All fields" msgstr "Όλα τα πεδία" msgid "Contact details" msgstr "ΛεπτομέÏεις επαφής" msgid "Close contact panel" msgstr "Κλείσιμο πλαισίου επαφών" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "Επαφή εξήχθη" msgstr[1] "Επαφές εξήχθησαν" msgid "Cannot create file." msgstr "Αδυναμία δημιουÏγίας αÏχείου." msgid "Output format" msgstr "ΜοÏφή αÏχείου" msgid "Add header" msgstr "ΠÏοσθήκη κεφαλίδας" msgid "Fields to export" msgstr "Πεδία για εξαγωγή" msgid "All" msgstr "Όλα" msgid "Invert" msgstr "ΑντιστÏοφή" msgid "Select fields" msgstr "Επιλογή πεδίων" msgid "Select CSV file" msgstr "Επιλογή αÏχείου CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (τιμές διαχωÏισμένες με κόμμα) (*.csv)" msgid "Please select file first." msgstr "ΠαÏακαλώ επιλογή αÏχείου" msgid "Import type" msgstr "Εϊδος εισαγωγής" msgid "File" msgstr "ΑÏχείο" msgid "Input filename" msgstr "Όνομα αÏχείου εισόδου" msgid "Import" msgstr "Εισαγωγή" msgid "Nothing to import." msgstr "Καμμία εισαγωγή." msgid "contact added" msgid_plural "contacts added" msgstr[0] "επαφή Ï€Ïοστέθηκε" msgstr[1] "επαφές Ï€Ïοστέθηκαν" msgid "of" msgstr "από " msgid "Record" msgstr "ΕγγÏαφή" msgid "Number fields per record" msgstr "ΑÏιθμός πεδίων εγγÏαφής" msgid "Use first record as header" msgstr "ΧÏήση Ï€Ïώτης καταχώÏησης ως κεφαλίδα" msgid "Field type" msgstr "ΤÏπος πεδίου" msgid "Value" msgstr "Τιμή" msgid "No records found in selected file." msgstr "Δεν υπάÏχουν εγγÏαφές στο επιλεγμένο αÏχείο" msgid "Cannot read file." msgstr "Αδυναμία ανάγνωσης αÏχείου." msgid "Cannot open file." msgstr "Αδυναμία Ï€Ïόσβασης στο αÏχείο." msgid "Selected contact will be removed." msgstr "Η επιλεγμένη επαφή θα διαγÏαφεί." msgid "Select photo" msgstr "Επιλεγμένη φωτογÏαφία" msgid "Address" msgstr "ΔιεÏθυνση" msgid "Postcode" msgstr "Ταχ. Κώδικας" msgid "City" msgstr "Πόλη" msgid "State" msgstr "Îομός" msgid "Country" msgstr "ΧώÏα" msgid "Add contact" msgstr "Contact toevoegen" msgid "Personal" msgstr "ΠÏοσωπικά" msgid "Phones" msgstr "Τηλέφωνα" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "ΧÏώμα των ετικετών επαφών" msgid "Color of links" msgstr "ΧÏώμα συνδέσμων" #, fuzzy msgid "Font size" msgstr "Μέγεθος φωτογÏαφίας" #, fuzzy msgid "Name font size" msgstr "ΓÏαμματοσειÏά ονόματος" #, fuzzy msgid "Item font size" msgstr "ΓÏαμματοσειÏά αντικειμένου" msgid "Photo size" msgstr "Μέγεθος φωτογÏαφίας" msgid "Small" msgstr "ΜικÏÏŒ " msgid "Medium" msgstr "Μεσαίο" msgid "Large" msgstr "Μεγάλο" msgid "Hide group column" msgstr "ΑπόκÏυψη στήλης ομάδων" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "ΔιάφοÏα" msgid "Groups" msgstr "Ομάδες" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Εμφανείς στήλες στον πεÏιηγητή γενεθλίων" msgid "Show calendar" msgstr "Εμφάνιση ημεÏολογίου" msgid "Show tasks" msgstr "Εμφάνιση εÏγασιών" msgid "Show contacts" msgstr "Εμφάνιση επαφών" msgid "Show notes" msgstr "Εμφάνιση σημειώσεων" msgid "Show options" msgstr "Εμφάνιση επιλογών" msgid "Show small calendar window" msgstr "Εμφάνιση μικÏÎ¿Ï Î·Î¼ÎµÏολογίου" msgid "Check for events since last run" msgstr "Έλεγχος για συμβάντα από την τελευταία χÏήση" msgid "Number of days to check forward for events (default: 0)" msgstr "ΑÏιθμός ημεÏών στο μέλλον για συμβάντα (Ï€ÏοκαθοÏισμένο:0)" msgid "Set absolute path for settings and data files" msgstr "Επιλογή διαδÏομής για Ïυθμίσεις και αÏχεία" msgid "Match contacts with given string" msgstr "" #, fuzzy msgid "handy personal organizer" msgstr "Ένα βολικό Organizer" msgid "ERROR: Cannot create config files" msgstr "Λαθος: Αδυναμία δημιουÏγίας αÏχείων Ïυθμίσεων" msgid "Another copy of OSMO is already running." msgstr "To OSMO ήδη εκτελείται." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Η ταυτόχÏονη χÏήση δÏο ή πεÏισσοτέÏων OSMO, μποÏεί να οδηγήσει σε απώλεια " "δεδομένων." msgid "Do you really want to continue?" msgstr "Συνέχεια;" msgid "Warning" msgstr "ΠÏοσοχή" msgid "The note has changed." msgstr "Η σημείωση έχει Ï„Ïοποποιηθεί" msgid "Do you want to save it?" msgstr "Αποθήκευση;" #, fuzzy msgid "No URLs found in the selection..." msgstr "Δεν υπάÏχουν εγγÏαφές στο επιλεγμένο αÏχείο" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Συνέχεια;" msgid "Question" msgstr "ΕÏώτηση" msgid "Words" msgstr "Λέξεις" msgid "Lines" msgstr "ΓÏαμμές" msgid "Characters" msgstr "ΧαÏακτήÏες" msgid "White characters" msgstr "Κενά" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Επιλογέας" msgid "Created" msgstr "ΔημιουÏγήθηκε" msgid "Modified" msgstr "ΤÏοποποιημένο" msgid "New note" msgstr "Îέα σημείωση" msgid "Add note" msgstr "ΠÏοσθήση σημείωσης" msgid "Edit note" msgstr "ΔιόÏθωση σημείωσης" msgid "Delete note" msgstr "Διαγαφή σημείωσης" msgid "Remove note" msgstr "ΑφαίÏεση σημείωσης" msgid "Find" msgstr "Αναζήτηση" msgid "Clear attributes" msgstr "ΚαθαÏισμός ιδιοτήτων" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Αποθήκευση σημείωσης" msgid "Insert current date and time" msgstr "ΤÏέχουσα ΗμεÏομηνία/ΩÏα" msgid "Insert separator" msgstr "Εισαγωγή διαχωÏιστικοÏ" msgid "Statistics" msgstr "Στατιστικά" msgid "Close editor" msgstr "Κλείσιμο κειμενογÏάφου" msgid "Toggle spell checker" msgstr "" msgid "Category" msgstr "ΚατηγοÏία" msgid "Note name" msgstr "Όνομα σημείωσης" msgid "Last changes" msgstr "Τελευταίες αλλαγές" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "ΓÏαμμές" #, fuzzy msgid "Column" msgstr "ΧώÏα" msgid "case sensitive" msgstr "case sensitive" msgid "Close find entry" msgstr "Κλείσιμο στην εÏÏεση" msgid "Edit entry" msgstr "ΔιόÏθωση καταχώÏησης" #, fuzzy msgid "Remember cursor position" msgstr "Επιλογές υπενθÏμισης" msgid "Selected note will be removed." msgstr "Η επιλεγμένη σημείωση θα διαγÏαφεί" msgid "No further data recovery will be possible." msgstr "Αδυναμία ανάκτησης πεÏισσότεÏων δεδομένων" #, fuzzy msgid "Plain" msgstr "Ï€Ïόσθεση" #, fuzzy msgid "Encrypted" msgstr "ΚÏυπτογÏαφημένες σημειώσεις" #, fuzzy msgid "Note type" msgstr "Εϊδος εισαγωγής" #, fuzzy msgid "Cannot open the note." msgstr "Αδυναμία Ï€Ïόσβασης στο αÏχείο." msgid "encryption support is disabled" msgstr "" msgid "Authorization" msgstr "Authorization" msgid "Algorithm" msgstr "ΑλγόÏιθμος" #, fuzzy msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Συμπίεση" msgid "Ratio" msgstr "Σχέση" msgid "Fast" msgstr "ΓÏήγοÏη" msgid "Good" msgstr "Καλή" msgid "Best" msgstr "ΚαλÏτεÏη" msgid "Remember the last selected category" msgstr "Επανάληψη επιλογής Ï€ÏοηγοÏμενης κατηγοÏίας" msgid "Use system format for date and time" msgstr "ΧÏήση της μοÏφής ΗμεÏομηνίας/ÎÏας συστήματος" msgid "Encryption" msgstr "ΚÏυπτογÏάφηση" msgid "Visible columns" msgstr "Εμφανείς στήλες" msgid "Categories" msgstr "ΚατηγοÏίες" msgid "Notes options" msgstr "Επιλογές σημειώσειων" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Θέσεις στηλοθέτη" msgid "Left" msgstr "ΑÏιστεÏά" msgid "Right" msgstr "Δεξιά" msgid "Top" msgstr "Πάνω " msgid "Bottom" msgstr "Κάτω" #, fuzzy msgid "Use default stock icons" msgstr "ΧÏήση Ï€Ïοεπιλεγμένων εικονιδίων (χÏειάζεται επιανακκίνηση)" msgid "Disable underline in links" msgstr "ΑπενεÏγοποίηση υπογÏαμμισης στους συνδέσμους" msgid "Draw rows in alternating colors" msgstr "Εμφάνιση γÏαμμών με διαφοÏετικό χÏώμα" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Τουλάχιστον μια επιλογή Ï€Ïέπει να είναι εμφανής." msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "ΜοÏφή ημεÏομηνίας" msgid "DD-MM-YYYY" msgstr "ΗΗ-ΜΜ-ΕΕΕΕ" msgid "MM-DD-YYYY" msgstr "ΜΜ-ΗΗ-ΕΕΕΕ" msgid "YYYY-MM-DD" msgstr "ΕΕΕΕ-ΜΜ-ΗΗ" msgid "YYYY-DD-MM" msgstr "ΕΕΕΕ-ΗΗ-ΜΜ" msgid "Time format" msgstr "ΜοÏφή ÏŽÏας" msgid "hours" msgstr "ÏŽÏες" msgid "Spell checker language" msgstr "" msgid "Enable tooltips" msgstr "ΕνεÏγοποίηση συμβουλών (αναδυόμενο)" msgid "Remember last selected page" msgstr "ΥπενθÏμιση τελευταίας επιλεγμένης σελίδας" msgid "Save data after every modification" msgstr "Αποθήκευση δεδομένων μετά από κάθε αλλαγή" msgid "Web browser" msgstr "Πλοηγητής διαδικτÏου" msgid "E-mail client" msgstr "E-mail Ï€ÏόγÏαμμα" #, fuzzy msgid "Sound player" msgstr "ΠατÏώνυμο" #, fuzzy, c-format msgid "The %s pattern will be replaced with web address" msgstr "Το %s σχήμα θα αντικατασταθεί με το www ή το E-mail " #, fuzzy, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Το %s σχήμα θα αντικατασταθεί με το www ή το E-mail " #, fuzzy, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Το %s σχήμα θα αντικατασταθεί με το www ή το E-mail " msgid "Enable system tray" msgstr "Enable system tray" msgid "Start minimised" msgstr "Εκκίνηση σε ελαχιστοποιημένο παÏάθυÏο" msgid "Blink on events" msgstr "" #, fuzzy msgid "Ignore day note events" msgstr "κλείσιμο πλαισίου σημειώσεων" msgid "Hide" msgstr "ΑποκÏυψη" msgid "Helpers" msgstr "Βοηθήματα" msgid "System tray" msgstr "System tray" msgid "Edit" msgstr "ΔιόÏθωση" msgid "Go Down" msgstr "" msgid "Select date" msgstr "Επιλογή ημεÏομηνίας" msgid "Select font" msgstr "Επιλογή γÏαματοσειÏάς" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Υποογιστής" msgid "Edit day note" msgstr "ΔιόÏθωση σημείωσης" msgid "Save" msgstr "Αποθήκευση" msgid "Display full-year calendar" msgstr "Εμφάνιση πλήÏους ημεÏολογίου" msgid "Help" msgstr "Βοήθεια" msgid "Invalid item" msgstr "ΆκυÏο αντικείμενο" msgid "Valid item" msgstr "ΈγκυÏο αντικείμενο" msgid "Edit task" msgstr "ΔιόÏθωση εÏγασίας" msgid "Remove task" msgstr "ΑφαίÏεση εÏγασίας" #, fuzzy msgid "Import tasks" msgstr "Εισαγωγή επαφών" #, fuzzy msgid "Export tasks" msgstr "Εξαγωγή επαφών" #, fuzzy msgid "Change to previous date" msgstr "Αλλαγή ημεÏομηνίας ενέÏγειας στην Ï€ÏοηγοÏμενη ημέÏα" #, fuzzy msgid "Change to next date" msgstr "Αλλαγή ημεÏομηνίας ενέÏγειας στην επόμενη ημέÏα" msgid "Print" msgstr "ΕκτÏπωση" #, fuzzy msgid "Normal" msgstr "Απλή εÏγασία" #, fuzzy msgid "Recurrent" msgstr "Επαναλαμβανόμενη εÏγασία" msgid "Started" msgstr "ΆÏχισε" msgid "Finished" msgstr "Τελείωσε" msgid "All items" msgstr "Όλα τα αντικείμενα" msgid "New task" msgstr "Îέα εÏγασία" #, fuzzy msgid "Change due date to previous date" msgstr "Αλλαγή ημεÏομηνίας ενέÏγειας στην Ï€ÏοηγοÏμενη ημέÏα" #, fuzzy msgid "Change due date to next date" msgstr "Αλλαγή ημεÏομηνίας ενέÏγειας στην επόμενη ημέÏα" msgid "Print visible tasks list" msgstr "ΕκτÏπωση καταλόγου εμφανών εÏγασιών" msgid "Due date" msgstr "ΗμεÏομηνία εφαÏμογής" msgid "Priority" msgstr "ΠÏοτεÏαιότητα" msgid "Task details" msgstr "ΛεπτομέÏειες εÏγασίας" msgid "Close description panel" msgstr "Κλείσιμο πλαισίου πεÏιγÏαφής" msgid "No tasks with defined date found." msgstr "" #, fuzzy msgid "Save tasks" msgstr "ΗμεÏήσιες εÏγασίες" #, fuzzy msgid "tasks exported" msgstr "Επαφή εξήχθη" msgid "Please select at least one day when recurrency is enabled." msgstr "Please select at least one day when recurrency is enabled." msgid "Set time" msgstr "ΡÏθμιση ÏŽÏας" msgid "Tomorrow" msgstr "ΑÏÏιο" msgid "Selected task will be removed." msgstr "Η επιλεγμένη εÏγασία θα αφαιÏεθεί." msgid "Basic" msgstr "" #, fuzzy msgid "Select date and time" msgstr "Τελική ημεÏομηνία/ÏŽÏα" msgid "Low" msgstr "Χαμηλή" msgid "High" msgstr "Υψηλή" msgid "Enable sound notification" msgstr "" #, fuzzy msgid "Enable notification dialog" msgstr "Γενική εντολή πληÏοφόÏησης" msgid "Advanced" msgstr "" msgid "Alarm warning" msgstr "Alarm warning" msgid "Postpone time" msgstr "Αναβολή για" msgid "Alarm command" msgstr "Alarm command" msgid "Recurrent task" msgstr "Επαναλαμβανόμενη εÏγασία" msgid "Enable" msgstr "ΕνεÏγοποίηση" msgid "Start" msgstr "ΑÏχή " msgid "End" msgstr "Τέλος" msgid "Interval" msgstr "Διάστημα μεταξÏ" msgid "Time period" msgstr "ΠεÏίοδος ÏŽÏας" msgid "Date period" msgstr "ΠεÏίοδος ημεÏομηνίας" msgid "Repeat" msgstr "Επανάληψη" msgid "Repeat in the following days" msgstr "Επανάληψη στις επόμενες ημέÏες" msgid "Ignore alarm when task expired offline" msgstr "Ανγόηση υπενθÏμισης όταν η εÏγασία έληξε offline" msgid "Select a font..." msgstr "Επιλογή γÏαμματοσειÏάς" msgid "Color of items that are due today" msgstr "ΧÏώμα αντικειμένων που Ï€Ïέπει να γίνουν σήμεÏα" msgid "Color of items that are due in the next 7 days" msgstr "ΧÏώμα αντικειμένων που Ï€Ïέπει να γίνουν στις επόμενες 7 ημέÏες" msgid "Color of items that are past due" msgstr "ΧÏώμα αντικειμένων που έχει παÏέλθει η ημεÏομηνία τους" msgid "Task info font" msgstr "ΓÏαμματοσεÏά λεπτομεÏειών εÏγασιών" msgid "Show in bold tasks with high priority" msgstr "Εμφάνιση εÏγασιών Ï€ÏοτεÏαιότητας με έντονα" msgid "Hide completed tasks" msgstr "ΑπόκÏυψη ολοκληÏωμένων εÏγασιών" msgid "Delete completed tasks without confirmation" msgstr "ΔιαγÏαφή ολοκληÏωμένων εÏγασιών χωÏίς επιβεβαίωση" msgid "Add new task when double clicked on tasks list" msgstr "ΠÏοσθήκη νέας εÏγασίας με διπλό κλικ στην λίστα εÏγασιών" msgid "minutes" msgstr "λεπτά" msgid "0 for disable" msgstr "0 για απενεÏγοποίηση" msgid "Repeat sound alarm" msgstr "" #, fuzzy msgid "times" msgstr "ΡÏθμιση ÏŽÏας" msgid "Global notification command" msgstr "Γενική εντολή πληÏοφόÏησης" msgid "Tasks options" msgstr "Επιλογές εÏγασιών" msgid "Reminder options" msgstr "Επιλογές υπενθÏμισης" #, fuzzy msgid "Tasks list" msgstr "Επιλογές εÏγασιών" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "ΑÏ." msgid "New Moon" msgstr "Îέα Σελήνη" msgid "Waxing Crescent Moon" msgstr "ΑÏξων Μηνίσκος" msgid "Quarter Moon" msgstr "ΑÏξουσα Ημισέληνος" msgid "Waxing Gibbous Moon" msgstr "ΑÏξων ΑμφίκυÏτος" msgid "Full Moon" msgstr "Πανσέληνος" msgid "Waning Gibbous Moon" msgstr "Φθίνων ΑμφίκυÏτος " msgid "Last Quarter Moon" msgstr "Φθίνουσα Ημισέλινος" msgid "Waning Crescent Moon" msgstr "Φθίνων Μηνίσκος" msgid "Error" msgstr "Λάθος" msgid "Selected file exist! Overwrite?" msgstr "Το επιλεγμένο αÏχείο υπάÏχει! ΕπανεγγÏαφή;" #~ msgid "Select and show first item after search" #~ msgstr "Επιλογή και εμφάνιση Ï€Ïώτου αντικειμένου μετά την αναζήτηση" #~ msgid "Order" #~ msgstr "ΣειÏά" #~ msgid "Mode" #~ msgstr "Mode" #~ msgid "Ascending" #~ msgstr "ΑÏξουσα" #~ msgid "Descending" #~ msgstr "Φθίνουσα" #~ msgid "Sorting" #~ msgstr "Ταξινόμιση" osmo-0.2.14/po/sv.po000664 001750 001750 00000105700 12561325524 014143 0ustar00pasppasp000000 000000 # Swedish translation of Osmo # This file is distributed under the same license as the Osmo package. # # msgid "" msgstr "" "Project-Id-Version: osmo svn version 664\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2009-01-23 02:04+0100\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv\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" msgid "About" msgstr "Om" msgid "Close" msgstr "Stäng" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "växla till föregÃ¥ende flik" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "växla till nästa flik" msgid "switch to selected page" msgstr "växla till markerad sida" #, fuzzy msgid "show options window" msgstr "Visa alternativ" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "" msgid "exit" msgstr "avsluta" #, fuzzy msgid "Space" msgstr "Spara" msgid "select current date" msgstr "välj aktuellt datum" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "växla synlighet för personliga data" #, fuzzy msgid "Arrows" msgstr "Pil" msgid "change day" msgstr "byt dag" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "rulla innehÃ¥llet i panelen för information om dag" msgid "change month" msgstr "byt mÃ¥nad" #, fuzzy msgid "Home/End" msgstr "Hem" msgid "change year" msgstr "byt Ã¥r" msgid "toggle calendars for the previous and next month" msgstr "växla kalendarier för den föregÃ¥ende mÃ¥naden och nästa mÃ¥nad" msgid "day notes browser" msgstr "daganteckningsbläddrare" msgid "assign background color to day note" msgstr "överlÃ¥t bakgrundsfärg till daganteckning" msgid "date calculator" msgstr "datumberäknare" msgid "show full-year calendar" msgstr "visa helÃ¥rskalender" msgid "jump to date" msgstr "hoppa till datum" #, fuzzy msgid "Delete" msgstr "Radera anteckning" msgid "remove day note" msgstr "ta bort daganteckning" #, fuzzy msgid "Alt+Arrows" msgstr "Pil" msgid "Esc" msgstr "" #, fuzzy msgid "close editor" msgstr "Stäng redigerare" msgid "toggle bold" msgstr "" #, fuzzy msgid "toggle italic" msgstr "växla dolda uppgifter" #, fuzzy msgid "toggle underline" msgstr "Understreck" #, fuzzy msgid "toggle strikethrough" msgstr "Genomstrykning" #, fuzzy msgid "toggle highlight" msgstr "Färgmarkera" msgid "Arrows Up/Down" msgstr "" #, fuzzy msgid "toggle alternative view" msgstr "Alternativ vy" #, fuzzy msgid "year info" msgstr "Information om Ã¥r" #, fuzzy msgid "set current year" msgstr "Aktuellt Ã¥r" #, fuzzy msgid "close full-year calendar" msgstr "visa helÃ¥rskalender" #, fuzzy msgid "Alt+a, Insert" msgstr "Infoga" msgid "add task" msgstr "lägg till uppgift" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "redigera uppgift" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "ta bort uppgift" msgid "toggle hidden tasks" msgstr "växla dolda uppgifter" msgid "activate search field" msgstr "aktivera sökfält" #, fuzzy msgid "Left, Right" msgstr "Höger" msgid "change category filter" msgstr "byt kategorifilter" msgid "close task info panel" msgstr "stäng panel för uppgiftsinformation" msgid "Insert" msgstr "Infoga" msgid "add contact" msgstr "lägg till kontakt" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "redigera kontakt" msgid "remove contact" msgstr "ta bort kontakt" msgid "change search mode" msgstr "byt sökläge" msgid "close contact details panel" msgstr "stäng panelen för kontaktdetaljer" #, fuzzy msgid "Enter" msgstr "Internet" msgid "open note" msgstr "öppna anteckning" msgid "add note" msgstr "lägg till anteckning" msgid "remove note" msgstr "ta bort anteckning" msgid "edit note name and category" msgstr "redigera namn och kategori" msgid "close note editor" msgstr "stäng anteckningsredigerare" msgid "save note" msgstr "spara anteckning" msgid "find text" msgstr "hitta nästa" msgid "clear selection attributes" msgstr "" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO utformades med användarens bekvämlighet i Ã¥tanke, sÃ¥ det finns mÃ¥nga " "snabbtangenter. Här är hela listan:" msgid "General" msgstr "Allmänt" msgid "Calendar" msgstr "Kalender" #, fuzzy msgid "Note editor" msgstr "Stäng redigerare" msgid "Full-year calendar" msgstr "HelÃ¥rskalender" msgid "Tasks" msgstr "Uppgifter" msgid "Contacts" msgstr "Kontakter" msgid "Notes" msgstr "Anteckningar" msgid "Selector" msgstr "" msgid "Editor" msgstr "Redigerare" msgid "A handy personal organizer" msgstr "En praktisk dagplanerare" msgid "compiled on" msgstr "kompilerat" msgid "Programming" msgstr "Programmering" msgid "Graphics" msgstr "Grafik" msgid "Contributors" msgstr "Medarbetare" msgid "Translators" msgstr "Översättare" msgid "Mailing lists" msgstr "" msgid "Bug tracker" msgstr "" msgid "Feature requests" msgstr "" msgid "Available modules" msgstr "Tillgängliga moduler" msgid "Compiled-in features" msgstr "Kompilerat med följande funktioner" msgid "iCalendar support" msgstr "Stöd för iCalendar" msgid "Encrypted notes support" msgstr "Stöd för krypterade anteckningar" msgid "Backup support" msgstr "" msgid "Printing support" msgstr "Stöd för utskrivning" msgid "Spell checker support" msgstr "Stöd för stavningskontrollerare" msgid "version" msgstr "Version" msgid "SVN revision" msgstr "SVN-version" msgid "Key shortcuts" msgstr "Snabbtangenter" msgid "License" msgstr "Licens" msgid "Save backup" msgstr "" msgid "Password protection" msgstr "" msgid "Enter password" msgstr "Skriv in lösenord" msgid "Re-enter password" msgstr "Skriv in lösenordet igen" #, fuzzy msgid "Please enter the password" msgstr "Skriv in lösenordet igen" msgid "Passwords do not match!" msgstr "Lösenord stämmer inte!" #, fuzzy msgid "Cannot create backup!" msgstr "Kan inte skapa fil." msgid "Backup file saved successfully!" msgstr "" msgid "Open backup file" msgstr "" msgid "Osmo backup files (*.bck)" msgstr "" msgid "This is not Osmo backup file" msgstr "" msgid "Incorrect password!" msgstr "Fel lösenord!" msgid "All your data will be replaced with backup file content." msgstr "" msgid "Are you sure?" msgstr "Är du säker?" msgid "Osmo has to be restarted now..." msgstr "" msgid "was born" msgstr "föddes" msgid "year old" msgid_plural "years old" msgstr[0] "Ã¥r gammal" msgstr[1] "Ã¥r gammal" msgid "Current time" msgstr "Aktuell tid" msgid "Day number" msgstr "Dagnummer" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dag kvar till Ã¥rets slut" msgstr[1] "dagar kvar till Ã¥rets slut" msgid "the last day of the year" msgstr "Ã…rets sista dag" msgid "Today distance" msgstr "" msgid "Week number" msgstr "Veckonummer" msgid "Marked days" msgstr "Märkta dagar" msgid "Weekend days" msgstr "Helgdagar" msgid "Moon phase" msgstr "MÃ¥nfas" msgid "Zodiac sign" msgstr "Stjärntecken" msgid "Day notes" msgstr "Daganteckningar" msgid "Day tasks" msgstr "Daguppgifter" msgid "Birthday" msgstr "Födelsedag" msgid "Day category" msgstr "Dagkategori" msgid "Selected day note will be removed." msgstr "Markerad " msgid "Continue?" msgstr "Fortsätt?" msgid "Previous year" msgstr "FöregÃ¥ende Ã¥r" msgid "Previous month" msgstr "FöregÃ¥ende mÃ¥nad" msgid "Previous day" msgstr "FöregÃ¥ende dag" msgid "Today" msgstr "Idag" msgid "Next day" msgstr "Nästa dag" msgid "Next month" msgstr "Nästa mÃ¥nad" msgid "Next year" msgstr "Nästa Ã¥r" msgid "Jump to date" msgstr "Hoppa till datum" msgid "Print calendar" msgstr "Skriv ut kalender" msgid "Date calculator" msgstr "Datumberäknare" msgid "Backup data" msgstr "" #, fuzzy msgid "Restore data" msgstr "Resultat" msgid "Preferences" msgstr "Inställningar" msgid "Quit" msgstr "Avsluta" msgid "Toggle day note panel" msgstr "Växla panel för daganteckning" msgid "Add task" msgstr "Lägg till uppgift" msgid "Select day color" msgstr "Välj dagfärg" msgid "Browse notes" msgstr "Bläddra bland anteckningar" msgid "Browse iCal events" msgstr "Bläddra bland iCal-händelser" msgid "Export to iCal file" msgstr "Exportera till iCal-fil" msgid "Previous and next month" msgstr "FöregÃ¥ende och nästa mÃ¥nad" msgid "Close note panel" msgstr "Stäng anteckningspanel" msgid "Highlight" msgstr "Färgmarkera" msgid "Strikethrough" msgstr "Genomstrykning" msgid "Underline" msgstr "Understreck" msgid "Italic" msgstr "Kursiv" msgid "Bold" msgstr "Fetstil" msgid "Insert timeline" msgstr "Infoga tidslinje" msgid "Clear text" msgstr "Rensa text" msgid "Info" msgstr "Information" msgid "Select color" msgstr "Välj färg" msgid "None" msgstr "Inget" msgid "Cancel" msgstr "Avbryt" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "Ã¥r" msgstr[1] "Ã¥r" msgid "month" msgid_plural "months" msgstr[0] "mÃ¥nad" msgstr[1] "mÃ¥nader" msgid "day" msgid_plural "days" msgstr[0] "dag" msgstr[1] "dagar" msgid "hour" msgid_plural "hours" msgstr[0] "timme" msgstr[1] "timmar" msgid "minute" msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minuter" msgid "second" msgid_plural "seconds" msgstr[0] "sekund" msgstr[1] "sekunder" msgid "or" msgstr "eller" msgid "rounded down" msgstr "avrundat nedÃ¥t" msgid "week" msgid_plural "weeks" msgstr[0] "vecka" msgstr[1] "veckor" msgid "working day" msgid_plural "working days" msgstr[0] "" msgstr[1] "" msgid "time is ignored" msgstr "" #, fuzzy msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Helgdagar" msgstr[1] "Helgdagar" msgid "This calculator only supports dates after year 1." msgstr "Denna beräknare stöder bara datum efter Ã¥r ett." #, fuzzy msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Färg för helgdagar" msgstr[1] "Färg för helgdagar" msgid "Year" msgstr "Ã…r" msgid "Month" msgstr "MÃ¥nad" msgid "Day" msgstr "Dag" msgid "Current date" msgstr "Aktuellt datum" msgid "Set current date" msgstr "Ställ in aktuellt datum" msgid "Hour" msgstr "Timme" msgid "Minute" msgstr "Minut" msgid "Second" msgstr "Sekund" msgid "Set current time" msgstr "Ställ in aktuell tid" msgid "Reset time" msgstr "Ställ om tid" msgid "First date and time" msgstr "Första datum och tid" msgid "Second date and time" msgstr "Andra datum och tid" msgid "Alternative time units" msgstr "Alternativa tidsenheter" msgid "Result" msgstr "Resultat" msgid "Duration between two dates" msgstr "Varaktighet mellan tvÃ¥ datum" msgid "Operation" msgstr "Ã…tgärd" msgid "add" msgstr "lägg till" msgid "subtract" msgstr "dra ifrÃ¥n" msgid "Date and time to add or subtract from" msgstr "Datum och tid att lägga till eller dra ifrÃ¥n frÃ¥n" msgid "Years" msgstr "Ã…r" msgid "Months" msgstr "MÃ¥nader" msgid "Days" msgstr "Dagar" msgid "Weeks" msgstr "Veckor" msgid "Hours" msgstr "Timmar" msgid "Minutes" msgstr "Minuter" msgid "Seconds" msgstr "Sekunder" #, fuzzy msgid "Ignore weekend days" msgstr "Helgdagar" msgid "Reset fields" msgstr "Ställ om fält" msgid "Time to add or subtract" msgstr "Tid att lägga till eller dra ifrÃ¥n" msgid "Jump to" msgstr "Hoppa till" msgid "Add to or subtract from a date" msgstr "Lägg till eller dra ifrÃ¥n frÃ¥n ett datum " msgid "Leap year" msgstr "SkottÃ¥r" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nej" msgid "Chinese year animal" msgstr "Kinesiska kalenderÃ¥rets djur" msgid "Number of days" msgstr "Antal dagar" msgid "Number of weeks" msgstr "Antal veckor" msgid "Number of weekend days" msgstr "Antal helgdagar" msgid "Year info" msgstr "Information om Ã¥r" msgid "Current year" msgstr "Aktuellt Ã¥r" msgid "Alternative view" msgstr "Alternativ vy" msgid "event" msgid_plural "events" msgstr[0] "händelse" msgstr[1] "händelser" #, fuzzy msgid "No valid calendars defined" msgstr "Inga kalendarier angivna" msgid "iCalendar events" msgstr "iCalendar-händelser" msgid "Date" msgstr "Datum" #, fuzzy msgid "Time" msgstr "Tidslinje" msgid "Summary" msgstr "Summering" msgid "Select output file" msgstr "Markera utdatafil" msgid "The list will be cleared and all entries will be lost." msgstr "Listan kommer att tömmas och alla poster kommer att gÃ¥ förlorade." msgid "Done!" msgstr "Klart!" msgid "event exported" msgid_plural "events exported" msgstr[0] "händelse exporterad" msgstr[1] "händelser exporterade" msgid "iCalendar export" msgstr "iCalendar-exportering" msgid "Day Selector" msgstr "Dagväljare" msgid "Use date period" msgstr "Använd datumperiod" msgid "Add" msgstr "Lägg till" msgid "Clear" msgstr "Töm" msgid "Remove" msgstr "Ta bort" msgid "Output filename" msgstr "Filnamn för utdata" msgid "Browse" msgstr "Bläddra" msgid "Export" msgstr "Exportera" msgid "no entries" msgstr "inga poster" msgid "entry" msgid_plural "entries" msgstr[0] "post" msgstr[1] "poster" msgid "Calendar notes" msgstr "Kalenderanteckningar" msgid "Search" msgstr "Sök" msgid "Filter" msgstr "Filter" msgid "Current month" msgstr "Aktuell mÃ¥nad" msgid "Selected month" msgstr "Vald mÃ¥nad" msgid "Selected year" msgstr "Valt Ã¥r" msgid "Selected month and year" msgstr "Vald mÃ¥nad och Ã¥r" msgid "All notes" msgstr "Alla anteckningar" msgid "Case sensitive" msgstr "Skiftlägeskänslig" msgid "Strikethrough past day notes" msgstr "Genomstryk föregÃ¥ende dags anteckningar" msgid "Note" msgstr "Anteckning" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "MÃ¥nadens namn" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "MM-DD-Ã…Ã…Ã…Ã…" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Datumformat" #, fuzzy msgid "Set default format" msgstr "Utdataformat" #, fuzzy msgid "Date format syntax" msgstr "Datumformat" msgid "Day note marker" msgstr "" msgid "Event marker" msgstr "" msgid "Circle" msgstr "Cirkel" msgid "Ellipse" msgstr "Ellips" msgid "Wave" msgstr "VÃ¥g" msgid "Current day marker" msgstr "" msgid "Arrow" msgstr "Pil" msgid "Free-hand circle" msgstr "" msgid "Colors" msgstr "Färger" msgid "Header color" msgstr "Rubrikfärg" msgid "Weekend days color" msgstr "Färg för helgdagar" msgid "Cursor color" msgstr "Markörfärg" msgid "Event marker color" msgstr "Färg för händelsemarkör" msgid "Current day marker color" msgstr "" #, fuzzy msgid "Birthday marker color" msgstr "Färg för händelsemarkör" msgid "Date font" msgstr "Typsnitt för datum" msgid "Calendar font" msgstr "Typsnitt för kalender" msgid "Note font" msgstr "Typsnitt för anteckning" msgid "Enable block cursor" msgstr "" msgid "Cursor thickness" msgstr "Markörtjockhet" msgid "Thin" msgstr "Tunn" msgid "Thick" msgstr "Tjock" #, fuzzy msgid "Edit category" msgstr "Dagkategori" msgid "Color" msgstr "Färg" msgid "Name" msgstr "Namn" msgid "Select ICS file" msgstr "Markera ICS-fil" msgid "All Files" msgstr "Alla filer" msgid "Calendar files (*.ics)" msgstr "Kalendarierfiler (*.ics)" msgid "Modify ICAL parameters" msgstr "Modifiera ICAL-parametrar" msgid "Filename" msgstr "Filnamn" msgid "Options" msgstr "Alternativ" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Giltig" msgid "Description" msgstr "Beskrivning" #, fuzzy msgid "Full date" msgstr "Förfallodag" msgid "Mark" msgstr "" msgid "Week start on Monday" msgstr "Veckan börjar pÃ¥ mÃ¥ndag" msgid "Show day names" msgstr "Visa namnsdagar" msgid "No month change" msgstr "Inget mÃ¥nadsbyte" msgid "Show week numbers" msgstr "Visa veckonummer" msgid "Simple view in full-year calendar" msgstr "Enkel vy i helÃ¥rskalender" msgid "Enable auxilary calendars" msgstr "" msgid "Ascending sorting in day notes browser" msgstr "UppÃ¥tgÃ¥ende ordning i bläddrare för daganteckningar" msgid "Enable spell checker in day notes" msgstr "Aktivera stavninskontrollerare i daganteckningar" #, fuzzy msgid "Show seconds" msgstr "Sekunder" msgid "Appearance" msgstr "Utseende" msgid "Day categories" msgstr "Dagkategorier" msgid "iCalendar files" msgstr "iCalendar-filer" msgid "Show in day info panel" msgstr "" msgid "Name day" msgstr "Namnsdag" msgid "Error printing" msgstr "Felutskrivning" msgid "Printing properties" msgstr "Egenskaper för utskrivning" msgid "Month name" msgstr "MÃ¥nadens namn" msgid "Day name" msgstr "Dagens namn" msgid "Events" msgstr "Händelser" msgid "Fonts" msgstr "Typsnitt" msgid "Birthdays" msgstr "Födelsedagar" msgid "Namedays" msgstr "Namnsdagar" msgid "Visible events" msgstr "Synliga händelser" msgid "Padding" msgstr "" msgid "Event maximum length" msgstr "" msgid "Page orientation:" msgstr "Sidorientering:" msgid "Portrait" msgstr "Porträtt" msgid "Landscape" msgstr "Landskap" msgid "Timeline" msgstr "Tidslinje" msgid "From (hour)" msgstr "FrÃ¥n (timme)" msgid "Step (minutes)" msgstr "Step (minuter)" msgid "To (hour)" msgstr "Till (timme)" msgid "No date" msgstr "Inget datum" msgid "Rat" msgstr "RÃ¥tta" msgid "Ox" msgstr "Oxe" msgid "Tiger" msgstr "Tiger" msgid "Hare" msgstr "Hare" msgid "Dragon" msgstr "Drake" msgid "Snake" msgstr "Orm" msgid "Horse" msgstr "Häst" msgid "Sheep" msgstr "FÃ¥r" msgid "Monkey" msgstr "Apa" msgid "Fowl" msgstr "Höna" msgid "Dog" msgstr "Hund" msgid "Pig" msgstr "Gris" msgid "Unknown" msgstr "Okänt" msgid "Aquarius" msgstr "Vattuman" msgid "Pisces" msgstr "Fisk" msgid "Aries" msgstr "Vädur" msgid "Taurus" msgstr "Oxe" msgid "Gemini" msgstr "Tvilling" msgid "Cancer" msgstr "Kräfta" msgid "Leo" msgstr "Lejon" msgid "Virgo" msgstr "Jungfru" msgid "Libra" msgstr "VÃ¥g" msgid "Scorpio" msgstr "Scorpion" msgid "Sagittarius" msgstr "Skytt" msgid "Capricorn" msgstr "Stenbock" msgid "Cannot perform selected operation." msgstr "Kan inte utföra vald Ã¥tgärd." msgid "Task has been modified or removed." msgstr "Uppgiften har modifierats eller tagits bort." msgid "Remind me later" msgstr "PÃ¥minn mig senare" msgid "Done" msgstr "Klar" msgid "postponed" msgstr "Uppskjuten" msgid "Show task" msgstr "Visa uppgift" msgid "Alarm warning!" msgstr "Alarmvarning!" msgid "Day note" msgstr "Daganteckning" msgid "Type" msgstr "Typ" msgid "Event" msgstr "Händelse" msgid "Task" msgstr "Uppgift" msgid "Show Osmo" msgstr "Visa Osmo" msgid "No birthdays defined" msgstr "Inga födelsedagar angivna" msgid "Birthdays list" msgstr "Födelsedagslista" msgid "Days to birthday" msgstr "Dagar kvar till födelsedag" msgid "Age" msgstr "Ã…lder" msgid "Birthday date" msgstr "Födelsedagsdatum" msgid "today" msgstr "idag" #, fuzzy msgid "Please select address" msgstr "Var god markera fil först." msgid "Information" msgstr "Information" msgid "Work" msgstr "Arbete" msgid "Home" msgstr "Hem" msgid "Group" msgstr "Grupp" msgid "First name" msgstr "Förnamn" msgid "Last name" msgstr "Efternamn" msgid "Second name" msgstr "Mellannamn" msgid "Nickname" msgstr "Smeknamn" msgid "Tags" msgstr "Taggar" msgid "Name day date" msgstr "Namnsdagsdatum" msgid "Home address" msgstr "Hemadress" msgid "Home postcode" msgstr "Postnummer för hem" msgid "Home city" msgstr "Hemstad" msgid "Home state" msgstr "Hemkommun/hemstat" msgid "Home country" msgstr "Hemland" msgid "Organization" msgstr "Organisation" msgid "Department" msgstr "Avdelning" msgid "Work address" msgstr "Arbetsplatsadress" msgid "Work postcode" msgstr "Postnummer för arbetsplats" msgid "Work city" msgstr "Arbetsstad" msgid "Work state" msgstr "Arbetskommun/arbetsstat" msgid "Work country" msgstr "Arbetsland" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Hemtelefon " msgid "Home phone 2" msgstr "Hemtelefon 2" msgid "Home phone 3" msgstr "Hemtelefon 3" msgid "Home phone 4" msgstr "Hemtelefon 4" msgid "Work phone" msgstr "Arbetstelefon" msgid "Work phone 2" msgstr "Arbetstelefon 2" msgid "Work phone 3" msgstr "Arbetstelefon 3" msgid "Work phone 4" msgstr "Arbetstelefon 4" msgid "Cell phone" msgstr "Mobiltelefon" msgid "Cell phone 2" msgstr "Mobiltelefon 2" msgid "Cell phone 3" msgstr "Mobiltelefon 3" msgid "Cell phone 4" msgstr "Mobiltelefon 4" msgid "E-Mail" msgstr "E-postadress" msgid "E-Mail 2" msgstr "E-postadress 2" msgid "E-Mail 3" msgstr "E-postadress 3" msgid "E-Mail 4" msgstr "E-postadress 4" msgid "WWW" msgstr "Webbsida" msgid "WWW 2" msgstr "Webbsida 2" msgid "WWW 3" msgstr "Webbsida 3" msgid "WWW 4" msgstr "Webbsida 4" msgid "IM Gadu-Gadu" msgstr "" msgid "IM Yahoo" msgstr "" msgid "IM MSN" msgstr "" msgid "IM ICQ" msgstr "" msgid "IM AOL" msgstr "" msgid "IM Jabber" msgstr "" msgid "IM Skype" msgstr "" msgid "IM Tlen" msgstr "" msgid "Blog" msgstr "Blogg" msgid "Photo" msgstr "Fotografi" msgid "Additional info" msgstr "Kompletterande information" msgid "New contact" msgstr "Ny kontakt" msgid "Remove contact" msgstr "Ta bort kontakt" msgid "Edit contact" msgstr "Redigera kontakt" msgid "Show birthdays" msgstr "Visa födelsedagar" msgid "Show contact location on the map" msgstr "" msgid "Import contacts" msgstr "Importera kontakter" msgid "Export contacts" msgstr "Exportera kontakter" msgid "First Name" msgstr "Förnamn" msgid "Last Name" msgstr "Efternamn" msgid "All fields" msgstr "Alla fält" msgid "Contact details" msgstr "Kontaktdetaljer" msgid "Close contact panel" msgstr "Stäng kontaktpanel" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kontakt exporterad" msgstr[1] "kontakter exporterade" msgid "Cannot create file." msgstr "Kan inte skapa fil." msgid "Output format" msgstr "Utdataformat" msgid "Add header" msgstr "Lägg till rubrik" msgid "Fields to export" msgstr "Fält att exportera" msgid "All" msgstr "Alla" msgid "Invert" msgstr "Invertera" msgid "Select fields" msgstr "Markera fält" msgid "Select CSV file" msgstr "Markera CSV-fil" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (comma-separated values)-filer (*.csv)" msgid "Please select file first." msgstr "Var god markera fil först." msgid "Import type" msgstr "Importtyp" msgid "File" msgstr "Filnamn" msgid "Input filename" msgstr "Infoga filnamn" msgid "Import" msgstr "Importera" msgid "Nothing to import." msgstr "Inget att importera." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kontakt tillagd" msgstr[1] "kontakter tillagda" msgid "of" msgstr "" msgid "Record" msgstr "Post" msgid "Number fields per record" msgstr "Nummerfält per post" msgid "Use first record as header" msgstr "Använd första posten som rubrik" msgid "Field type" msgstr "Fälttyp" msgid "Value" msgstr "Värde" msgid "No records found in selected file." msgstr "Inga poster hittades i markerad fil." msgid "Cannot read file." msgstr "Kan inte läsa in fil." msgid "Cannot open file." msgstr "Kan inte öppna fil" msgid "Selected contact will be removed." msgstr "Markerad kontakt kommer att tas bort." msgid "Select photo" msgstr "Välj fotografi" msgid "Address" msgstr "Adress" msgid "Postcode" msgstr "Postnummer" msgid "City" msgstr "Stad" msgid "State" msgstr "Kommun" msgid "Country" msgstr "Land" msgid "Add contact" msgstr "Lägg till kontakt" msgid "Personal" msgstr "Personligt" msgid "Phones" msgstr "Telefoner" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Kontakttaggarnas färg" msgid "Color of links" msgstr "Länkarnas färg" #, fuzzy msgid "Font size" msgstr "Fotografistorlek" #, fuzzy msgid "Name font size" msgstr "Typsnitt för namn" #, fuzzy msgid "Item font size" msgstr "Typsnitt för objekt" msgid "Photo size" msgstr "Fotografistorlek" msgid "Small" msgstr "Liten" msgid "Medium" msgstr "Mellan" msgid "Large" msgstr "Stor" msgid "Hide group column" msgstr "Dölj gruppkolumn" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Diverse" msgid "Groups" msgstr "Grupper" #, fuzzy msgid "Visible columns in birthday browser" msgstr "Synliga kolumner i födelsedagsbläddrare" msgid "Show calendar" msgstr "Visa kalender" msgid "Show tasks" msgstr "Visa uppgifter" msgid "Show contacts" msgstr "Visa kontakter" msgid "Show notes" msgstr "Visa anteckningar" msgid "Show options" msgstr "Visa alternativ" msgid "Show small calendar window" msgstr "Visa litet kalenderfönster" msgid "Check for events since last run" msgstr "Leta efter händelser sedan förra gÃ¥ngen programmet kördes" msgid "Number of days to check forward for events (default: 0)" msgstr "Antalet dagar att leta framÃ¥t efter händelser (standard: 0)" msgid "Set absolute path for settings and data files" msgstr "" msgid "Match contacts with given string" msgstr "" #, fuzzy msgid "handy personal organizer" msgstr "En praktisk dagplanerare" msgid "ERROR: Cannot create config files" msgstr "FEL: Kan inte skapa konfigurationsfiler" msgid "Another copy of OSMO is already running." msgstr "En annat exemplar av OSMO körs redan." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Att använda tvÃ¥ eller fler exemplar av OSMO samtidigt kan orsaka dataförlust." msgid "Do you really want to continue?" msgstr "Vill du verkligen fortsätta?" msgid "Warning" msgstr "Varning" msgid "The note has changed." msgstr "Anteckningen har ändrats." msgid "Do you want to save it?" msgstr "Vill du spara den?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Inga poster hittades i markerad fil." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Vill du verkligen fortsätta?" msgid "Question" msgstr "FrÃ¥ga" msgid "Words" msgstr "Ord" msgid "Lines" msgstr "Rader" msgid "Characters" msgstr "Tecken" msgid "White characters" msgstr "Vita tecken" msgid "Bytes" msgstr "Byte" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Välj typsnitt" msgid "Created" msgstr "Skapad" msgid "Modified" msgstr "Modifierad" msgid "New note" msgstr "Ny anteckning" msgid "Add note" msgstr "Lägg till anteckning" msgid "Edit note" msgstr "Redigera anteckning" msgid "Delete note" msgstr "Radera anteckning" msgid "Remove note" msgstr "Ta bort anteckning" msgid "Find" msgstr "Hitta" msgid "Clear attributes" msgstr "" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Spara anteckning" msgid "Insert current date and time" msgstr "Infoga aktuellt datum och tid" msgid "Insert separator" msgstr "" msgid "Statistics" msgstr "Statistik" msgid "Close editor" msgstr "Stäng redigerare" msgid "Toggle spell checker" msgstr "Växla stavningskontrollerare" msgid "Category" msgstr "Kategori" msgid "Note name" msgstr "Anteckningsnamn" msgid "Last changes" msgstr "Senaste ändringar" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Rader" #, fuzzy msgid "Column" msgstr "Land" msgid "case sensitive" msgstr "skiftlägeskänslig" msgid "Close find entry" msgstr "Stäng hitta-post" msgid "Edit entry" msgstr "Redigera post" msgid "Remember cursor position" msgstr "Kom ihÃ¥g markörposition" msgid "Selected note will be removed." msgstr "Markerad anteckning kommer att tas bort." msgid "No further data recovery will be possible." msgstr "Inga ytterligare dataÃ¥terställningar kommer att vara möjligt." #, fuzzy msgid "Plain" msgstr "Skriv ut" msgid "Encrypted" msgstr "Krypterad" msgid "Note type" msgstr "Anteckningstyp" msgid "Cannot open the note." msgstr "Kan inte öppna anteckning" msgid "encryption support is disabled" msgstr "Stöd för kryptering inaktiverat" msgid "Authorization" msgstr "Befogenhet" msgid "Algorithm" msgstr "Algoritm" msgid "Hashing" msgstr "Hashning" msgid "Compression" msgstr "Komprimering" msgid "Ratio" msgstr "FörhÃ¥llande" msgid "Fast" msgstr "Snabb" msgid "Good" msgstr "Bra" msgid "Best" msgstr "Bäst" msgid "Remember the last selected category" msgstr "Kom ihÃ¥g senast valda kategori" msgid "Use system format for date and time" msgstr "Använd systemformatets datum och tid" msgid "Encryption" msgstr "Kryptering" msgid "Visible columns" msgstr "Synliga kolumner" msgid "Categories" msgstr "Kategorier" msgid "Notes options" msgstr "Inställningar för anteckningar" msgid "Osmo has to be restarted to take effect." msgstr "" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Positioner för flikar" msgid "Left" msgstr "Vänster" msgid "Right" msgstr "Höger" msgid "Top" msgstr "Överkant" msgid "Bottom" msgstr "Nederkant" msgid "Use default stock icons" msgstr "" msgid "Disable underline in links" msgstr "Inaktivera understreck i länkar" msgid "Draw rows in alternating colors" msgstr "" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Minst en modul mÃ¥ste vara synlig." msgid "Override locale settings" msgstr "" msgid "Date format" msgstr "Datumformat" msgid "DD-MM-YYYY" msgstr "DD-MM-Ã…Ã…Ã…Ã…" msgid "MM-DD-YYYY" msgstr "MM-DD-Ã…Ã…Ã…Ã…" msgid "YYYY-MM-DD" msgstr "Ã…Ã…Ã…Ã…-MM-DD" msgid "YYYY-DD-MM" msgstr "Ã…Ã…Ã…Ã…-DD-MM" msgid "Time format" msgstr "Tidsformat" msgid "hours" msgstr "timmar" msgid "Spell checker language" msgstr "SprÃ¥k för stavningskontrollerare" msgid "Enable tooltips" msgstr "Aktivera verktygstips" msgid "Remember last selected page" msgstr "Kom ihÃ¥g senast valda sida" msgid "Save data after every modification" msgstr "Spara data efter varje modifiering" msgid "Web browser" msgstr "Webbläsare" msgid "E-mail client" msgstr "E-postklient" #, fuzzy msgid "Sound player" msgstr "Mellannamn" #, fuzzy, c-format msgid "The %s pattern will be replaced with web address" msgstr "Mönstret %s kommer att ersättas med en länk eller e-postadress" #, fuzzy, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Mönstret %s kommer att ersättas med en länk eller e-postadress" #, fuzzy, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Mönstret %s kommer att ersättas med en länk eller e-postadress" msgid "Enable system tray" msgstr "Aktivera ikon i aktivitetsfält" msgid "Start minimised" msgstr "Starta i minimerat läge" msgid "Blink on events" msgstr "Blinka vid händelser" msgid "Ignore day note events" msgstr "Ignorera daganteckningshändelser" msgid "Hide" msgstr "Dölj" msgid "Helpers" msgstr "Hjälpmedel" msgid "System tray" msgstr "Aktivitetsfält" msgid "Edit" msgstr "Redigera" msgid "Go Down" msgstr "GÃ¥ ned" msgid "Select date" msgstr "Välj datum" msgid "Select font" msgstr "Välj typsnitt" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Beräknare" msgid "Edit day note" msgstr "Redigera daganteckning" msgid "Save" msgstr "Spara" msgid "Display full-year calendar" msgstr "Visa helÃ¥rskalender" msgid "Help" msgstr "Hjälp" msgid "Invalid item" msgstr "Ogiltigt objekt" msgid "Valid item" msgstr "Giltigt objekt" msgid "Edit task" msgstr "Redigera uppgift" msgid "Remove task" msgstr "Ta bort uppgift" #, fuzzy msgid "Import tasks" msgstr "Importera kontakter" #, fuzzy msgid "Export tasks" msgstr "Exportera kontakter" #, fuzzy msgid "Change to previous date" msgstr "Byt förfallodag till föregÃ¥ende dag" #, fuzzy msgid "Change to next date" msgstr "Byt förfallodag till nästa dag" msgid "Print" msgstr "Skriv ut" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "" msgid "Started" msgstr "Började med uppgift" msgid "Finished" msgstr "Färdigställde uppgift" msgid "All items" msgstr "Alla objekt" msgid "New task" msgstr "Ny uppgift" #, fuzzy msgid "Change due date to previous date" msgstr "Byt förfallodag till föregÃ¥ende dag" #, fuzzy msgid "Change due date to next date" msgstr "Byt förfallodag till nästa dag" msgid "Print visible tasks list" msgstr "Skriv ut synlig uppgiftslista" msgid "Due date" msgstr "Förfallodag" msgid "Priority" msgstr "Prioritet" msgid "Task details" msgstr "Uppgiftsdetaljer" msgid "Close description panel" msgstr "Stäng beskrivningspanel" msgid "No tasks with defined date found." msgstr "" #, fuzzy msgid "Save tasks" msgstr "Daguppgifter" #, fuzzy msgid "tasks exported" msgstr "kontakt exporterad" msgid "Please select at least one day when recurrency is enabled." msgstr "" msgid "Set time" msgstr "Ställ in tid" msgid "Tomorrow" msgstr "Imorgon" msgid "Selected task will be removed." msgstr "Markerad uppgift kommer att tas bort." msgid "Basic" msgstr "" #, fuzzy msgid "Select date and time" msgstr "Andra datum och tid" msgid "Low" msgstr "LÃ¥g" msgid "High" msgstr "Hög" msgid "Enable sound notification" msgstr "" #, fuzzy msgid "Enable notification dialog" msgstr "Allmänt notifieringskommando" msgid "Advanced" msgstr "" msgid "Alarm warning" msgstr "Alarmvarning" msgid "Postpone time" msgstr "Skjut upp tid" msgid "Alarm command" msgstr "Alarmkommando" msgid "Recurrent task" msgstr "" msgid "Enable" msgstr "Aktivera" msgid "Start" msgstr "Start" msgid "End" msgstr "Slut" msgid "Interval" msgstr "Intervall" msgid "Time period" msgstr "Tidsperiod" msgid "Date period" msgstr "Datumperiod" msgid "Repeat" msgstr "Upprepa" msgid "Repeat in the following days" msgstr "Upprepa de följande dagarna" msgid "Ignore alarm when task expired offline" msgstr "" msgid "Select a font..." msgstr "Välj ett typsnitt..." msgid "Color of items that are due today" msgstr "" msgid "Color of items that are due in the next 7 days" msgstr "" msgid "Color of items that are past due" msgstr "" msgid "Task info font" msgstr "Typsnitt för uppgiftsinformation" msgid "Show in bold tasks with high priority" msgstr "Visa högprioriterade uppgifter i fetstil" msgid "Hide completed tasks" msgstr "Dölj färdigställda uppgifter" msgid "Delete completed tasks without confirmation" msgstr "Radera färdigställda uppgifter utan bekräftelse" msgid "Add new task when double clicked on tasks list" msgstr "Lägg till en ny uppgift dÃ¥ uppgiftslistan dubbelklickas" msgid "minutes" msgstr "minuter" msgid "0 for disable" msgstr "0 för inaktivering" msgid "Repeat sound alarm" msgstr "" #, fuzzy msgid "times" msgstr "Ställ in tid" msgid "Global notification command" msgstr "Allmänt notifieringskommando" msgid "Tasks options" msgstr "Inställningar för uppgifter" msgid "Reminder options" msgstr "Kom ihÃ¥g-inställningar" msgid "Tasks list" msgstr "Uppgiftslista" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr" msgid "New Moon" msgstr "NymÃ¥ne" msgid "Waxing Crescent Moon" msgstr "HalvmÃ¥ne i första kvarteret" msgid "Quarter Moon" msgstr "HalvmÃ¥ne" msgid "Waxing Gibbous Moon" msgstr "Tilltagande halvmÃ¥ne" msgid "Full Moon" msgstr "FullmÃ¥ne" msgid "Waning Gibbous Moon" msgstr "Avtagande HalvmÃ¥ne" msgid "Last Quarter Moon" msgstr "Avtagande halvmÃ¥ne" msgid "Waning Crescent Moon" msgstr "HalvmÃ¥ne i sista kvarteret" msgid "Error" msgstr "Fel" msgid "Selected file exist! Overwrite?" msgstr "Markerad fil existerar! Skriv över?" #~ msgid "Select and show first item after search" #~ msgstr "Markera och visa första objekt efter sökning" #~ msgid "Order" #~ msgstr "Ordning" #~ msgid "Mode" #~ msgstr "Läge" #~ msgid "Ascending" #~ msgstr "UppÃ¥tgÃ¥ende" #~ msgid "Descending" #~ msgstr "NedÃ¥tgÃ¥ende" #~ msgid "Sorting" #~ msgstr "Sortering" osmo-0.2.14/po/es.po000664 001750 001750 00000112675 12561325524 014133 0ustar00pasppasp000000 000000 # Spanish translation of Osmo # This file is distributed under the same license as the Osmo package. # Nacho Alonso González , 2009. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.8 \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-03-29 16:059+100\n" "Last-Translator: Nacho Alonso González \n" "Language-Team: Spanish\n" "Language: es\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" msgid "About" msgstr "Acerca de" msgid "Close" msgstr "Cerrar" msgid "Ctrl+PageUp" msgstr "Ctrl+Re.Pág." msgid "switch to previous tab" msgstr "ir a la pestaña anterior" msgid "Ctrl+PageDn" msgstr "Ctrl+Av.Pág." msgid "switch to next tab" msgstr "ir a la pestaña siguiente" msgid "switch to selected page" msgstr "ir a la pestaña seleccionada" msgid "show options window" msgstr "Mostrar ventana de opciones" msgid "show about window" msgstr "Mostrar ventana \"Acerca de\"" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "Re.Pág./Av.Pág." msgid "switch page in options and about tab" msgstr "cambiar de página en las pestañas \"Opciones\" y \"Acerca de\"" msgid "exit" msgstr "salir" msgid "Space" msgstr "Espacio" msgid "select current date" msgstr "seleccionar fecha actual" msgid "Ctrl+Space" msgstr "Ctrl+Espacio" msgid "toggle personal data visibility" msgstr "cambiar visibilidad de datos personales" msgid "Arrows" msgstr "Flechas" msgid "change day" msgstr "cambiar día" msgid "Ctrl+Up/Down" msgstr "Ctrl+Arriba/Abajo" msgid "scroll the contents in the day info panel" msgstr "desplazar el contenido del panel de información del día" msgid "change month" msgstr "cambiar mes" msgid "Home/End" msgstr "Inicio/Fin" msgid "change year" msgstr "cambiar año" msgid "toggle calendars for the previous and next month" msgstr "mostrar / ocultar calendarios para el mes anterior y siguiente" msgid "day notes browser" msgstr "explorador de notas del día" msgid "assign background color to day note" msgstr "asignar color de fondo a nota del día" msgid "date calculator" msgstr "calculadora de fechas" msgid "show full-year calendar" msgstr "mostrar calendario de año completo" msgid "jump to date" msgstr "ir a fecha" msgid "Delete" msgstr "Borrar" msgid "remove day note" msgstr "eliminar nota del día" msgid "Alt+Arrows" msgstr "Alt+Flechas" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "cerrar editor" msgid "toggle bold" msgstr "activar / desactivar negrita" msgid "toggle italic" msgstr "activar / desactivar cursiva" msgid "toggle underline" msgstr "activar / desactivar subrayado" msgid "toggle strikethrough" msgstr "activar / desactivar tachado" msgid "toggle highlight" msgstr "activar / desactivar destacado" msgid "Arrows Up/Down" msgstr "Flechas arriba/abajo" msgid "toggle alternative view" msgstr "vista alternativa" msgid "year info" msgstr "información del año" msgid "set current year" msgstr "año actual" msgid "close full-year calendar" msgstr "cerrar calendario de año completo" msgid "Alt+a, Insert" msgstr "Alt+a, Insertar" msgid "add task" msgstr "añadir tarea" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Intro" msgid "edit task" msgstr "editar tarea" msgid "Alt+r, Delete" msgstr "Alt+r, Supr." msgid "remove task" msgstr "eliminar tarea" msgid "toggle hidden tasks" msgstr "mostrar / ocultar tareas escondidas" msgid "activate search field" msgstr "activar el campo de búsqueda" msgid "Left, Right" msgstr "Izquierda, Derecha" msgid "change category filter" msgstr "cambiar filtro de categorías" msgid "close task info panel" msgstr "cerrar información de la tarea" msgid "Insert" msgstr "Insertar" msgid "add contact" msgstr "nuevo contacto" msgid "Ctrl+Enter" msgstr "Ctrl+Intro" msgid "edit contact" msgstr "editar contacto" msgid "remove contact" msgstr "eliminar contacto" msgid "change search mode" msgstr "cambiar el modo de búsqueda" msgid "close contact details panel" msgstr "cerrar detalles del contacto" msgid "Enter" msgstr "Intro" msgid "open note" msgstr "abrir nota" msgid "add note" msgstr "añadir nota" msgid "remove note" msgstr "eliminar nota" msgid "edit note name and category" msgstr "editar nombre de la nota y categoría" msgid "close note editor" msgstr "cerrar notas" msgid "save note" msgstr "guardar nota" msgid "find text" msgstr "buscar" msgid "clear selection attributes" msgstr "eliminar atributos de la selección" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO ha sido diseñado para ser cómodo para el usuario, por eso existen " "multitud de atajos de teclado. Esta es la lista completa:" msgid "General" msgstr "General" msgid "Calendar" msgstr "Calendario" msgid "Note editor" msgstr "Editor de notas" msgid "Full-year calendar" msgstr "Calendario de año completo" msgid "Tasks" msgstr "Tareas" msgid "Contacts" msgstr "Contactos" msgid "Notes" msgstr "Notas" msgid "Selector" msgstr "Seleccionar" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Un práctico organizador personal" msgid "compiled on" msgstr "compilado el" msgid "Programming" msgstr "Desarrollo" msgid "Graphics" msgstr "Gráficos" msgid "Contributors" msgstr "Contribuciones" msgid "Translators" msgstr "Traductores" msgid "Mailing lists" msgstr "Listas de correo" msgid "Bug tracker" msgstr "Sistema de seguimiento de errores" msgid "Feature requests" msgstr "Peticiones de características" msgid "Available modules" msgstr "Módulos disponibles" msgid "Compiled-in features" msgstr "Características compiladas" msgid "iCalendar support" msgstr "Soporte de iCalendar" msgid "Encrypted notes support" msgstr "Soporte de notas cifradas" msgid "Backup support" msgstr "Soporte de copia de seguridad" msgid "Printing support" msgstr "Soporte de impresión" msgid "Spell checker support" msgstr "Soporte de comprobación ortográfica" msgid "version" msgstr "versión" msgid "SVN revision" msgstr "Revisión SVN" msgid "Key shortcuts" msgstr "Atajos de teclado" msgid "License" msgstr "Licencia" msgid "Save backup" msgstr "Guardar copia de seguridad" msgid "Password protection" msgstr "Proteger con contraseña" msgid "Enter password" msgstr "Contraseña" msgid "Re-enter password" msgstr "Escriba la contraseña de nuevo" msgid "Please enter the password" msgstr "Escriba la contraseña" msgid "Passwords do not match!" msgstr "¡Las contraseñas no coinciden!" msgid "Cannot create backup!" msgstr "¡No se puede crear la copia de seguridad!" msgid "Backup file saved successfully!" msgstr "¡Copia de seguridad guardada correctamente!" msgid "Open backup file" msgstr "Abrir fichero de copia de seguridad" msgid "Osmo backup files (*.bck)" msgstr "Ficheros de copia de seguridad de Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Este no es un fichero de copia de seguridad de Osmo" msgid "Incorrect password!" msgstr "¡Contraseña incorrecta!" msgid "All your data will be replaced with backup file content." msgstr "" "Todos los datos serán reemplazados con los del fichero de copia de seguridad." msgid "Are you sure?" msgstr "¿Está seguro?" msgid "Osmo has to be restarted now..." msgstr "Osmo debe ser reiniciado ahora..." msgid "was born" msgstr "nació" msgid "year old" msgid_plural "years old" msgstr[0] "año de edad" msgstr[1] "años de edad" msgid "Current time" msgstr "Hora actual" msgid "Day number" msgstr "Número de día" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "día hasta fin de año" msgstr[1] "días hasta fin de año" msgid "the last day of the year" msgstr "Último día del año" msgid "Today distance" msgstr "Distancia al día de hoy" msgid "Week number" msgstr "Número de semana" msgid "Marked days" msgstr "Días marcados" msgid "Weekend days" msgstr "Días en fin de semana" msgid "Moon phase" msgstr "Fase lunar" msgid "Zodiac sign" msgstr "Signo del zodiaco" msgid "Day notes" msgstr "Nota del día" msgid "Day tasks" msgstr "Tareas del día" msgid "Birthday" msgstr "Fecha de nacimiento" msgid "Day category" msgstr "Categoría de días" msgid "Selected day note will be removed." msgstr "La nota del día seleccionado será eliminada." msgid "Continue?" msgstr "¿Continuar?" msgid "Previous year" msgstr "Año anterior" msgid "Previous month" msgstr "Mes anterior" msgid "Previous day" msgstr "Día anterior" msgid "Today" msgstr "Hoy" msgid "Next day" msgstr "Día siguiente" msgid "Next month" msgstr "Mes siguiente" msgid "Next year" msgstr "Año siguiente" msgid "Jump to date" msgstr "Ir a fecha" msgid "Print calendar" msgstr "Imprimir calendario" msgid "Date calculator" msgstr "Calculadora de fechas" #, fuzzy msgid "Backup data" msgstr "Copia de seguridad" #, fuzzy msgid "Restore data" msgstr "Restaurar" msgid "Preferences" msgstr "Preferencias" msgid "Quit" msgstr "Salir" msgid "Toggle day note panel" msgstr "Mostrar / ocultar notas del día" msgid "Add task" msgstr "Nueva tarea" msgid "Select day color" msgstr "Seleccionar color del día" msgid "Browse notes" msgstr "Explorar notas" msgid "Browse iCal events" msgstr "Explorar eventos de iCalendar" msgid "Export to iCal file" msgstr "Exportar a fichero iCal" msgid "Previous and next month" msgstr "Mes anterior y siguiente" msgid "Close note panel" msgstr "Cerrar notas" msgid "Highlight" msgstr "Destacado" msgid "Strikethrough" msgstr "Tachado" msgid "Underline" msgstr "Subrayado" msgid "Italic" msgstr "Cursiva" msgid "Bold" msgstr "Negrita" msgid "Insert timeline" msgstr "Insertar franja de tiempo" msgid "Clear text" msgstr "Borrar texto" msgid "Info" msgstr "Información" msgid "Select color" msgstr "Seleccionar color" msgid "None" msgstr "Ninguno" msgid "Cancel" msgstr "Cancelar" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "año" msgstr[1] "años" msgid "month" msgid_plural "months" msgstr[0] "mes" msgstr[1] "meses" msgid "day" msgid_plural "days" msgstr[0] "día" msgstr[1] "días" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" msgid "or" msgstr "o" msgid "rounded down" msgstr "redondeado hacia abajo" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "working day" msgid_plural "working days" msgstr[0] "día laborable" msgstr[1] "días laborables" msgid "time is ignored" msgstr "se ignora la hora" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "día en fin de semana" msgstr[1] "días en fin de semana" msgid "This calculator only supports dates after year 1." msgstr "Esta calculadora solo admite fechas posteriores al año 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "día de fin de semana ignorado" msgstr[1] "días de fin de semana ignorados" msgid "Year" msgstr "Año" msgid "Month" msgstr "Mes" msgid "Day" msgstr "Día" msgid "Current date" msgstr "Fecha actual" msgid "Set current date" msgstr "Fijar fecha actual" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minuto" msgid "Second" msgstr "Segundo" msgid "Set current time" msgstr "Fijar hora actual" msgid "Reset time" msgstr "Reiniciar hora" msgid "First date and time" msgstr "Fecha y hora de inicio" msgid "Second date and time" msgstr "Fecha y hora de fin" msgid "Alternative time units" msgstr "Unidades de tiempo alternativas" msgid "Result" msgstr "Resultado" msgid "Duration between two dates" msgstr "Tiempo entre dos fechas" msgid "Operation" msgstr "Operación" msgid "add" msgstr "sumar" msgid "subtract" msgstr "restar" msgid "Date and time to add or subtract from" msgstr "Fecha y hora de la que sumar o restar" msgid "Years" msgstr "Años" msgid "Months" msgstr "Meses" msgid "Days" msgstr "Días" msgid "Weeks" msgstr "Semanas" msgid "Hours" msgstr "Horas" msgid "Minutes" msgstr "Minutos" msgid "Seconds" msgstr "Segundos" msgid "Ignore weekend days" msgstr "Ignorar días en fin de semana" msgid "Reset fields" msgstr "Reiniciar campos" msgid "Time to add or subtract" msgstr "Hora que sumar o restar" msgid "Jump to" msgstr "Ir a" msgid "Add to or subtract from a date" msgstr "Sumar o restar de una fecha" msgid "Leap year" msgstr "Año bisiesto" msgid "Yes" msgstr "Sí" msgid "No" msgstr "No" msgid "Chinese year animal" msgstr "Animal del calendario chino" msgid "Number of days" msgstr "Número de días" msgid "Number of weeks" msgstr "Número de semanas" msgid "Number of weekend days" msgstr "Días en fin de semana" msgid "Year info" msgstr "Información del año" msgid "Current year" msgstr "Año actual" msgid "Alternative view" msgstr "Vista alternativa" msgid "event" msgid_plural "events" msgstr[0] "evento" msgstr[1] "eventos" msgid "No valid calendars defined" msgstr "No se han definido calendarios válidos" msgid "iCalendar events" msgstr "eventos de iCalendar" msgid "Date" msgstr "Fecha" msgid "Time" msgstr "Hora" msgid "Summary" msgstr "Resumen" msgid "Select output file" msgstr "Seleccione el fichero de salida" msgid "The list will be cleared and all entries will be lost." msgstr "La lista será vaciada, todas las entradas se perderán." msgid "Done!" msgstr "¡Hecho!" msgid "event exported" msgid_plural "events exported" msgstr[0] "evento exportado" msgstr[1] "eventos exportados" msgid "iCalendar export" msgstr "Exportación de iCalendar" msgid "Day Selector" msgstr "Seleccionar día" msgid "Use date period" msgstr "Periodo de fechas" msgid "Add" msgstr "Nueva" msgid "Clear" msgstr "Borrar" msgid "Remove" msgstr "Eliminar" msgid "Output filename" msgstr "Fichero de salida" msgid "Browse" msgstr "Explorar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sin entradas" msgid "entry" msgid_plural "entries" msgstr[0] "elemento" msgstr[1] "elementos" msgid "Calendar notes" msgstr "Notas del calendario" msgid "Search" msgstr "Buscar" msgid "Filter" msgstr "Filtro" msgid "Current month" msgstr "Mes actual" msgid "Selected month" msgstr "Mes seleccionado" msgid "Selected year" msgstr "Año seleccionado" msgid "Selected month and year" msgstr "Mes y año seleccionado" msgid "All notes" msgstr "Todos las notas" msgid "Case sensitive" msgstr "Coincidencia de mayúsculas / minúsculas" msgid "Strikethrough past day notes" msgstr "Tachar notas de días pasados" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "Sintaxis" msgid "abbreviated weekday name" msgstr "nombre abreviado del día de la semana" msgid "full weekday name" msgstr "nombre del día de la semana" msgid "abbreviated month name" msgstr "nombre abreviado del mes" msgid "full month name" msgstr "nombre del mes" msgid "day of the month" msgstr "día del mes" msgid "MM/DD/YY" msgstr "MM/DD/AA" msgid "day of the month without leading zeros" msgstr "día del mes sin ceros a la izquierda" msgid "year without century" msgstr "año sin siglo" msgid "year with century" msgstr "año con siglo" msgid "Date header format" msgstr "Formato de la cabecera de fecha" msgid "Set default format" msgstr "Formato por defecto" msgid "Date format syntax" msgstr "Formato de fecha" msgid "Day note marker" msgstr "Marca para nota del día" msgid "Event marker" msgstr "Marca de eventos" msgid "Circle" msgstr "Círculo" msgid "Ellipse" msgstr "Elipse" msgid "Wave" msgstr "Onda" msgid "Current day marker" msgstr "Marca de fecha actual" msgid "Arrow" msgstr "Flecha" msgid "Free-hand circle" msgstr "Círculo" msgid "Colors" msgstr "Colores" msgid "Header color" msgstr "Color de la cabecera" msgid "Weekend days color" msgstr "Color de los días de fin de semana" msgid "Cursor color" msgstr "Color del cursor" msgid "Event marker color" msgstr "Color de marca de eventos" msgid "Current day marker color" msgstr "Color de marca de fecha actual" msgid "Birthday marker color" msgstr "Color de marca de cumpleaños" msgid "Date font" msgstr "Fuente de la fecha" msgid "Calendar font" msgstr "Fuente del calendario" msgid "Note font" msgstr "Fuente de las notas" msgid "Enable block cursor" msgstr "Usar cursor de bloque" msgid "Cursor thickness" msgstr "Grosor del cursor" msgid "Thin" msgstr "Delgado" msgid "Thick" msgstr "Grueso" msgid "Edit category" msgstr "Editar categoría" msgid "Color" msgstr "Color" msgid "Name" msgstr "Nombre" msgid "Select ICS file" msgstr "Seleccione fichero ICS" msgid "All Files" msgstr "Todos los ficheros" msgid "Calendar files (*.ics)" msgstr "Ficheros de calendario (*.ics)" msgid "Modify ICAL parameters" msgstr "Modificar parámetros de ICAL" msgid "Filename" msgstr "Nombre de archivo" msgid "Options" msgstr "Opciones" msgid "Disabled" msgstr "Deshabilitado" msgid "Valid" msgstr "Válido" msgid "Description" msgstr "Descripción" msgid "Full date" msgstr "Fecha completa" msgid "Mark" msgstr "Marca" msgid "Week start on Monday" msgstr "La semana empieza el lunes" msgid "Show day names" msgstr "Mostrar nombre del día" msgid "No month change" msgstr "No cambiar de mes" msgid "Show week numbers" msgstr "Mostrar numero de semana" msgid "Simple view in full-year calendar" msgstr "Vista simple del calendario anual" msgid "Enable auxilary calendars" msgstr "Mostrar calendarios auxiliares" msgid "Ascending sorting in day notes browser" msgstr "Ordenación ascendente en notas del día" msgid "Enable spell checker in day notes" msgstr "Habilitar corrector ortográfico en notas del día" #, fuzzy msgid "Show seconds" msgstr "Segundos" msgid "Appearance" msgstr "Apariencia" msgid "Day categories" msgstr "Categorías de días" msgid "iCalendar files" msgstr "Archivos de iCalendar" msgid "Show in day info panel" msgstr "Mostrar en el calendario" msgid "Name day" msgstr "Santo" msgid "Error printing" msgstr "Error imprimiendo" msgid "Printing properties" msgstr "Propiedades de la impresión" msgid "Month name" msgstr "Nombre del mes" msgid "Day name" msgstr "Nombre del día" msgid "Events" msgstr "Eventos" msgid "Fonts" msgstr "Fuentes" msgid "Birthdays" msgstr "Cumpleaños" msgid "Namedays" msgstr "Santos" msgid "Visible events" msgstr "Eventos visibles" msgid "Padding" msgstr "Espaciado" msgid "Event maximum length" msgstr "Longitud máxima de los eventos" msgid "Page orientation:" msgstr "Orientación de la página:" msgid "Portrait" msgstr "Vertical" msgid "Landscape" msgstr "Horizontal" msgid "Timeline" msgstr "Franjas de tiempo" msgid "From (hour)" msgstr "Desde (hora)" msgid "Step (minutes)" msgstr "Salto (minutos)" msgid "To (hour)" msgstr "Hasta (hora)" msgid "No date" msgstr "Sin fecha" msgid "Rat" msgstr "Rata" msgid "Ox" msgstr "Buey" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Liebre" msgid "Dragon" msgstr "Dragón" msgid "Snake" msgstr "Serpiente" msgid "Horse" msgstr "Caballo" msgid "Sheep" msgstr "Oveja" msgid "Monkey" msgstr "Mono" msgid "Fowl" msgstr "Gallo" msgid "Dog" msgstr "Perro" msgid "Pig" msgstr "Cerdo" msgid "Unknown" msgstr "Desconocido" msgid "Aquarius" msgstr "Acuario" msgid "Pisces" msgstr "Piscis" msgid "Aries" msgstr "Aries" msgid "Taurus" msgstr "Tauro" msgid "Gemini" msgstr "Géminis" msgid "Cancer" msgstr "Cáncer" msgid "Leo" msgstr "Leo" msgid "Virgo" msgstr "Virgo" msgid "Libra" msgstr "Libra" msgid "Scorpio" msgstr "Escorpio" msgid "Sagittarius" msgstr "Sagitario" msgid "Capricorn" msgstr "Capricornio" msgid "Cannot perform selected operation." msgstr "No se puede realizar la operación seleccionada." msgid "Task has been modified or removed." msgstr "La tarea ha sido editada o eliminada" msgid "Remind me later" msgstr "Recordarme más tarde" msgid "Done" msgstr "Hecho" msgid "postponed" msgstr "Pospuesto" msgid "Show task" msgstr "Mostrar tarea" msgid "Alarm warning!" msgstr "!Aviso de alarma!" msgid "Day note" msgstr "Nota del día" msgid "Type" msgstr "Tipo" msgid "Event" msgstr "Evento" msgid "Task" msgstr "Tarea" msgid "Show Osmo" msgstr "Mostrar Osmo" msgid "No birthdays defined" msgstr "No se han definido cumpleaños" msgid "Birthdays list" msgstr "Lista de cumpleaños" msgid "Days to birthday" msgstr "Días hasta el cumpleaños" msgid "Age" msgstr "Edad" msgid "Birthday date" msgstr "Fecha de nacimiento" msgid "today" msgstr "Hoy" msgid "Please select address" msgstr "Por favor, seleccione la dirección." msgid "Information" msgstr "Información" msgid "Work" msgstr "Trabajo" msgid "Home" msgstr "Casa" msgid "Group" msgstr "Grupo" msgid "First name" msgstr "Nombre" msgid "Last name" msgstr "Apellidos" msgid "Second name" msgstr "Segundo nombre" msgid "Nickname" msgstr "Apodo" msgid "Tags" msgstr "Etiquetas" msgid "Name day date" msgstr "Santo" msgid "Home address" msgstr "Dirección de residencia" msgid "Home postcode" msgstr "Código postal" msgid "Home city" msgstr "Ciudad de residencia" msgid "Home state" msgstr "Región de residencia" msgid "Home country" msgstr "País de residencia" msgid "Organization" msgstr "Organización" msgid "Department" msgstr "Departamento" msgid "Work address" msgstr "Dirección de trabajo" msgid "Work postcode" msgstr "Código postal de trabajo" msgid "Work city" msgstr "Ciudad de trabajo" msgid "Work state" msgstr "Región de trabajo" msgid "Work country" msgstr "País de trabajo" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Teléfono" msgid "Home phone 2" msgstr "Teléfono 2" msgid "Home phone 3" msgstr "Teléfono 3" msgid "Home phone 4" msgstr "Teléfono 4" msgid "Work phone" msgstr "Teléfono del trabajo" msgid "Work phone 2" msgstr "Teléfono del trabajo 2" msgid "Work phone 3" msgstr "Teléfono del trabajo 3" msgid "Work phone 4" msgstr "Teléfono del trabajo 4" msgid "Cell phone" msgstr "Teléfono móvil" msgid "Cell phone 2" msgstr "Teléfono móvil 2" msgid "Cell phone 3" msgstr "Teléfono móvil 3" msgid "Cell phone 4" msgstr "Teléfono móvil 4" msgid "E-Mail" msgstr "Correo electrónico" msgid "E-Mail 2" msgstr "Correo electrónico 2" msgid "E-Mail 3" msgstr " Correo electrónico 3" msgid "E-Mail 4" msgstr " Correo electrónico 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Fotografía" msgid "Additional info" msgstr "Información adicional" msgid "New contact" msgstr "Nuevo contacto" msgid "Remove contact" msgstr "Eliminar contacto" msgid "Edit contact" msgstr "Editar contacto" msgid "Show birthdays" msgstr "Mostrar cumpleaños" msgid "Show contact location on the map" msgstr "Mostrar localización de contactos en mapa" msgid "Import contacts" msgstr "Importar contactos" msgid "Export contacts" msgstr "Exportar contactos" msgid "First Name" msgstr "Nombre" msgid "Last Name" msgstr "Apellidos" msgid "All fields" msgstr "Todos los campos" msgid "Contact details" msgstr "Detalles del contacto" msgid "Close contact panel" msgstr "Cerrar detalles del contacto" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contacto exportado" msgstr[1] "contactos exportados" msgid "Cannot create file." msgstr "No se pudo crear el fichero." msgid "Output format" msgstr "Formato de salida" msgid "Add header" msgstr "Añadir cabecera" msgid "Fields to export" msgstr "Campos a exportar" msgid "All" msgstr "Todo" msgid "Invert" msgstr "Invertir" msgid "Select fields" msgstr "Seleccione campos" msgid "Select CSV file" msgstr "Seleccione fichero CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Archivos CSV (valores separados por comas) (*.csv)" msgid "Please select file first." msgstr "Por favor, seleccione el fichero antes." msgid "Import type" msgstr "Tipo de importación" msgid "File" msgstr "Fichero" msgid "Input filename" msgstr "Fichero de entrada" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Nada que importar." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contacto añadido" msgstr[1] "contactos añadidos" msgid "of" msgstr "de" msgid "Record" msgstr "Registro" msgid "Number fields per record" msgstr "Numero de campos por registro" msgid "Use first record as header" msgstr "Usar primer registro como cabecera" msgid "Field type" msgstr "Tipo de campo" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Ningún registro encontrado en el fichero seleccionado." msgid "Cannot read file." msgstr "El fichero no se puede leer." msgid "Cannot open file." msgstr "El fichero no se puede abrir." msgid "Selected contact will be removed." msgstr "El contacto seleccionado será eliminado." msgid "Select photo" msgstr "Seleccione fotografía" msgid "Address" msgstr "Dirección" msgid "Postcode" msgstr "Código postal" msgid "City" msgstr "Ciudad" msgid "State" msgstr "Región" msgid "Country" msgstr "País" msgid "Add contact" msgstr "Nuevo contacto" msgid "Personal" msgstr "Personal" msgid "Phones" msgstr "Teléfonos" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Color de las etiquetas de contactos" msgid "Color of links" msgstr "Color de enlaces" msgid "Font size" msgstr "Tamaño de la fuente" msgid "Name font size" msgstr "Tamaño de fuente de los nombres" msgid "Item font size" msgstr "Tamaño de fuente de los elementos" msgid "Photo size" msgstr "Tamaño de la foto" msgid "Small" msgstr "Pequeña" msgid "Medium" msgstr "Mediana" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Ocultar columna de grupos" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Varios" msgid "Groups" msgstr "Grupos" msgid "Visible columns in birthday browser" msgstr "Columnas visibles en lista de cumpleaños" msgid "Show calendar" msgstr "Mostrar calendario" msgid "Show tasks" msgstr "Mostrar tareas" msgid "Show contacts" msgstr "Mostrar contactos" msgid "Show notes" msgstr "Mostrar notas" msgid "Show options" msgstr "Mostrar opciones" msgid "Show small calendar window" msgstr "Mostrar pequeña ventana de calendario" msgid "Check for events since last run" msgstr "Comprobar los eventos desde la última ejecución" msgid "Number of days to check forward for events (default: 0)" msgstr "Número de días para comprobar eventos hacia delante (por defecto: 0)" msgid "Set absolute path for settings and data files" msgstr "Establezca la ruta absoluta para los ficheros de datos y configuración" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "práctico organizador personal" msgid "ERROR: Cannot create config files" msgstr "ERROR: No se pudo crear el fichero de configuración." msgid "Another copy of OSMO is already running." msgstr "Otra copia de OSMO ya se esta ejecutando." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Usar simultáneamente dos o mas copias de OSMO puede causar perdida de datos." msgid "Do you really want to continue?" msgstr "¿Desea continuar?" msgid "Warning" msgstr "Aviso" msgid "The note has changed." msgstr "La nota ha cambiado." msgid "Do you want to save it?" msgstr "¿Desea guardarla?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Ningún registro encontrado en el fichero seleccionado." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "¿Desea continuar?" msgid "Question" msgstr "Pregunta" msgid "Words" msgstr "Palabras" msgid "Lines" msgstr "Líneas" msgid "Characters" msgstr "Caracteres" msgid "White characters" msgstr "Espacios" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Documento" msgid "Selection" msgstr "Selección" msgid "Created" msgstr "Creado" msgid "Modified" msgstr "Modificado" msgid "New note" msgstr "Nueva nota" msgid "Add note" msgstr "Añadir nota" msgid "Edit note" msgstr "Editar nota" msgid "Delete note" msgstr "Borrar nota" msgid "Remove note" msgstr "Eliminar nota" msgid "Find" msgstr "Buscar" msgid "Clear attributes" msgstr "Borrar formato" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Guardar nota" msgid "Insert current date and time" msgstr "Insertar fecha y hora actual" msgid "Insert separator" msgstr "Insertar separador" msgid "Statistics" msgstr "Estadísticas" msgid "Close editor" msgstr "Cerrar editor" msgid "Toggle spell checker" msgstr "Revisor ortográfico" msgid "Category" msgstr "Categoría" msgid "Note name" msgstr "Nombre de la nota" msgid "Last changes" msgstr "Último cambio" msgid "Read-only" msgstr "Solo lectura" msgid "Line" msgstr "Línea" msgid "Column" msgstr "Columna" msgid "case sensitive" msgstr "Coincidencia de mayúsculas / minúsculas" msgid "Close find entry" msgstr "Cerrar barra de búsqueda" msgid "Edit entry" msgstr "Editar elemento" msgid "Remember cursor position" msgstr "Recordar posición del cursor" msgid "Selected note will be removed." msgstr "La nota seleccionada será eliminada." msgid "No further data recovery will be possible." msgstr "No se podrán recuperar los datos después." msgid "Plain" msgstr "Sencillo" msgid "Encrypted" msgstr "Cifrado" msgid "Note type" msgstr "Tipo de nota" msgid "Cannot open the note." msgstr "La nota no se puede abrir." msgid "encryption support is disabled" msgstr "El soporte para notas cifradas está deshabilitado" msgid "Authorization" msgstr "Autorización" msgid "Algorithm" msgstr "Algoritmo" msgid "Hashing" msgstr "Resumen" msgid "Compression" msgstr "Compresión" msgid "Ratio" msgstr "Ratio" msgid "Fast" msgstr "Rápido" msgid "Good" msgstr "Bueno" msgid "Best" msgstr "Mejor" msgid "Remember the last selected category" msgstr "Recordar última categoría seleccionada" msgid "Use system format for date and time" msgstr "Usar formato de fecha y hora del sistema" msgid "Encryption" msgstr "Cifrado" msgid "Visible columns" msgstr "Columnas visibles" msgid "Categories" msgstr "Categorías" msgid "Notes options" msgstr "Opciones de notas" msgid "Osmo has to be restarted to take effect." msgstr "Osmo debe ser reiniciado para que tome efecto." msgid "Layout" msgstr "Formato" msgid "Vertical" msgstr "Vertical" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Posición de las pestañas" msgid "Left" msgstr "Izquierda" msgid "Right" msgstr "Derecha" msgid "Top" msgstr "Arriba" msgid "Bottom" msgstr "Abajo" #, fuzzy msgid "Use default stock icons" msgstr "Usar iconos por defecto (requiere reiniciar)" msgid "Disable underline in links" msgstr "Deshabilitar subrayado en los enlaces" msgid "Draw rows in alternating colors" msgstr "Dibujar filas en colores alternativos" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Al menos un módulo debe ser visible." msgid "Override locale settings" msgstr "Ignorar configuración del sistema" msgid "Date format" msgstr "Formato fecha" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Formato de hora" msgid "hours" msgstr "horas" msgid "Spell checker language" msgstr "Idioma del corrector ortográfico" msgid "Enable tooltips" msgstr "Mostrar sugerencias" msgid "Remember last selected page" msgstr "Recordar última página seleccionada" msgid "Save data after every modification" msgstr "Guardar datos después de cada modificación" msgid "Web browser" msgstr "Navegador" msgid "E-mail client" msgstr "Cliente de correo electrónico" msgid "Sound player" msgstr "Reproductor de sonido" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "El patrón %s será reemplazado por la dirección web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "El patrón %s será reemplazado por el correo electrónico" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "El patrón %s será reemplazado por el nombre del fichero de sonido" msgid "Enable system tray" msgstr "Mostrar icono en bandeja de sistema" msgid "Start minimised" msgstr "Iniciar minimizado" msgid "Blink on events" msgstr "Parpadear en eventos" msgid "Ignore day note events" msgstr "Ignorar eventos de nota del día" msgid "Hide" msgstr "Ocultar" msgid "Helpers" msgstr "Programas auxiliares" msgid "System tray" msgstr "Bandeja de sistema" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "Bajar" msgid "Select date" msgstr "Seleccionar fecha" msgid "Select font" msgstr "Seleccionar fuente" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar nota del día" msgid "Save" msgstr "Guardar" msgid "Display full-year calendar" msgstr "Mostrar calendario de año completo" msgid "Help" msgstr "Ayuda" msgid "Invalid item" msgstr "Elemento inválido" msgid "Valid item" msgstr "Elemento válido" msgid "Edit task" msgstr "Editar tarea" msgid "Remove task" msgstr "Eliminar tarea" msgid "Import tasks" msgstr "Importar tareas" msgid "Export tasks" msgstr "Exportar tareas" msgid "Change to previous date" msgstr "Cambiar al día anterior" msgid "Change to next date" msgstr "Cambiar al día siguiente" msgid "Print" msgstr "Imprimir" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Repetitiva" msgid "Started" msgstr "Inicio" msgid "Finished" msgstr "Terminado" msgid "All items" msgstr "Todos los elementos" msgid "New task" msgstr "Nueva tarea" msgid "Change due date to previous date" msgstr "Cambiar fecha de fin al día anterior" msgid "Change due date to next date" msgstr "Cambiar fecha de fin al día siguiente" msgid "Print visible tasks list" msgstr "Imprimir lista de tareas visibles" msgid "Due date" msgstr "Fecha de fin" msgid "Priority" msgstr "Prioridad" msgid "Task details" msgstr "Detalles de la tarea" msgid "Close description panel" msgstr "Cerrar descripción" msgid "No tasks with defined date found." msgstr "No hay tareas con fecha definida." msgid "Save tasks" msgstr "Guardar tareas" msgid "tasks exported" msgstr "tareas exportadas" msgid "Please select at least one day when recurrency is enabled." msgstr "Seleccione al menos un día si la tarea es repetitiva." msgid "Set time" msgstr "Fijar hora" msgid "Tomorrow" msgstr "Mañana" msgid "Selected task will be removed." msgstr "Las tareas seleccionadas se eliminarán." msgid "Basic" msgstr "Básico" msgid "Select date and time" msgstr "Seleccione fecha y hora" msgid "Low" msgstr "Baja" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "Notificar con sonido" #, fuzzy msgid "Enable notification dialog" msgstr "Notificar con sonido" msgid "Advanced" msgstr "Avanzado" msgid "Alarm warning" msgstr "Alarma de aviso" msgid "Postpone time" msgstr "Retraso de aviso pospuesto" msgid "Alarm command" msgstr "Comando de alarma" msgid "Recurrent task" msgstr "Tarea repetitiva" msgid "Enable" msgstr "Habilitar" msgid "Start" msgstr "Inicio" msgid "End" msgstr "Fin" msgid "Interval" msgstr "Intervalo" msgid "Time period" msgstr "Periodo de tiempo" msgid "Date period" msgstr "Periodo de fechas" msgid "Repeat" msgstr "Repetir" msgid "Repeat in the following days" msgstr "Repetir en los días siguientes" msgid "Ignore alarm when task expired offline" msgstr "Ignorar alarmas cuando la tarea expira sin conexión" msgid "Select a font..." msgstr "Seleccione una fuente..." msgid "Color of items that are due today" msgstr "Color de los elementos que finalizan hoy" msgid "Color of items that are due in the next 7 days" msgstr "Color de los elementos que finalizan en los próximos 7 días" msgid "Color of items that are past due" msgstr "Color de los elementos que ya han vencido" msgid "Task info font" msgstr "Fuente para detalles" msgid "Show in bold tasks with high priority" msgstr "Mostrar en negrita tareas con prioridad alta" msgid "Hide completed tasks" msgstr "Ocultar tareas terminadas" msgid "Delete completed tasks without confirmation" msgstr "Eliminar las tareas terminadas sin confirmación" msgid "Add new task when double clicked on tasks list" msgstr "Crear nueva tarea al hacer doble-click en la lista de tareas" msgid "minutes" msgstr "minutos" msgid "0 for disable" msgstr "0 para deshabilitar" msgid "Repeat sound alarm" msgstr "Repetir alarma de sonido" msgid "times" msgstr "veces" msgid "Global notification command" msgstr "Comando global de notificación" msgid "Tasks options" msgstr "Opciones de las tareas" msgid "Reminder options" msgstr "Opciones de avisos" msgid "Tasks list" msgstr "Lista de tareas" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Núm." msgid "New Moon" msgstr "Luna nueva" msgid "Waxing Crescent Moon" msgstr "Creciente" msgid "Quarter Moon" msgstr "Cuarto creciente" msgid "Waxing Gibbous Moon" msgstr "Creciente" msgid "Full Moon" msgstr "Luna llena" msgid "Waning Gibbous Moon" msgstr "Menguante" msgid "Last Quarter Moon" msgstr "Cuarto menguante" msgid "Waning Crescent Moon" msgstr "Menguante" msgid "Error" msgstr "Error" msgid "Selected file exist! Overwrite?" msgstr "El fichero seleccionado existe. ¿Sobrescribir?" #~ msgid "Select and show first item after search" #~ msgstr "Seleccionar y mostrar el primer elemento después de la búsqueda" #~ msgid "Order" #~ msgstr "Orden" #~ msgid "Mode" #~ msgstr "Modo" #~ msgid "Ascending" #~ msgstr "Ascendente" #~ msgid "Descending" #~ msgstr "Descendente" #~ msgid "Sorting" #~ msgstr "Ordenación" #~ msgid "Contact map location" #~ msgstr "Localización del contacto en mapa" osmo-0.2.14/po/fr.po000664 001750 001750 00000113652 12561325524 014127 0ustar00pasppasp000000 000000 # French translation of Osmo # This file is distributed under the same license as the Osmo package. # Jean-Jacques Moulinier , 2007. # JJ , 2008. # L: , 2009. # Baggieri Gerald , 2013 # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2012-03-15 22:33+0100\n" "Last-Translator: Baggieri Gerald \n" "Language-Team: French\n" "Language: fr\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" msgid "About" msgstr "À propos" msgid "Close" msgstr "Fermer" msgid "Ctrl+PageUp" msgstr "Ctrl+Haut de Page" msgid "switch to previous tab" msgstr "Vers l'onglet précédent" msgid "Ctrl+PageDn" msgstr "Ctrl+Bas de Page" msgid "switch to next tab" msgstr "Vers l'onglet suivant" msgid "switch to selected page" msgstr "Aller à l'onglet sélectionné" msgid "show options window" msgstr "Afficher la fenêtre des options" msgid "show about window" msgstr "Afficher la fenêtre 'À Propos'" msgid "toggle fullscreen mode" msgstr "passer en plein écran" msgid "PageUp/PageDn" msgstr "Haut de Page/Bas de Page" msgid "switch page in options and about tab" msgstr "Changer de pages dans les onglets Options et À propos" msgid "exit" msgstr "Sortir" msgid "Space" msgstr "Espace" msgid "select current date" msgstr "Sélectionner la date actuelle" msgid "Ctrl+Space" msgstr "Ctrl+Espace" msgid "toggle personal data visibility" msgstr "Activer/Désactiver la visibilité des données personnelles" msgid "Arrows" msgstr "Flèches" msgid "change day" msgstr "Changer le jour" msgid "Ctrl+Up/Down" msgstr "Ctrl+Haut/Bas" msgid "scroll the contents in the day info panel" msgstr "Afficher les notes dans le panneau d'informations" msgid "change month" msgstr "Changer le mois" msgid "Home/End" msgstr "Origine/Fin" msgid "change year" msgstr "Changer l'année" msgid "toggle calendars for the previous and next month" msgstr "Afficher les calendriers des mois précédent et suivant" msgid "day notes browser" msgstr "Parcourir les notes du calendrier" msgid "assign background color to day note" msgstr "Assigne une couleur d'arrière plan à une note journalière" msgid "date calculator" msgstr "Afficher le calculateur temporel" msgid "show full-year calendar" msgstr "Afficher le calendrier annuel" msgid "jump to date" msgstr "Aller à la date du" msgid "Delete" msgstr "Suppr" msgid "remove day note" msgstr "Supprimer la note du jour" msgid "Alt+Arrows" msgstr "Alt+Flèches" msgid "Esc" msgstr "Échap" msgid "close editor" msgstr "Fermer l'éditeur" msgid "toggle bold" msgstr "Gras" msgid "toggle italic" msgstr "Italique" msgid "toggle underline" msgstr "Souligner" msgid "toggle strikethrough" msgstr "Barrer" msgid "toggle highlight" msgstr "Surligner" msgid "Arrows Up/Down" msgstr "Flèches Haut/Bas" msgid "toggle alternative view" msgstr "Vue alternative" msgid "year info" msgstr "Informations supplémentaires" msgid "set current year" msgstr "Revenir à l'année actuelle" msgid "close full-year calendar" msgstr "Fermer le calendrier annuel" msgid "Alt+a, Insert" msgstr "Alt+a, Insérer" msgid "add task" msgstr "Ajouter une tâche" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Entrée" msgid "edit task" msgstr "Modifier la tâche" msgid "Alt+r, Delete" msgstr "Alt+r, Suppr" msgid "remove task" msgstr "Supprimer la tâche" msgid "toggle hidden tasks" msgstr "Afficher les tâches cachées " msgid "activate search field" msgstr "Activer le champ de recherche" msgid "Left, Right" msgstr "Gauche, Droite" msgid "change category filter" msgstr "Changer le filtre des catégories" msgid "close task info panel" msgstr "Fermer le panneau de détails des tâches" msgid "Insert" msgstr "Insérer" msgid "add contact" msgstr "Ajouter un contact" msgid "Ctrl+Enter" msgstr "Ctrl+Entrée" msgid "edit contact" msgstr "Modifier le contact" msgid "remove contact" msgstr "Supprimer le contact" msgid "change search mode" msgstr "Changer le mode de recherche" msgid "close contact details panel" msgstr "Fermer le panneau de détails des contacts" msgid "Enter" msgstr "Entrée" msgid "open note" msgstr "Ouvrir une note" msgid "add note" msgstr "Ajouter une note" msgid "remove note" msgstr "Supprimer la note" msgid "edit note name and category" msgstr "Modifier le nom et la catégorie de la note" msgid "close note editor" msgstr "Fermer l'éditeur de notes" msgid "save note" msgstr "Enregistrer la note" msgid "find text" msgstr "Rechercher" msgid "clear selection attributes" msgstr "Style par défaut pour la sélection" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO a été conçu en gardant à l'esprit le confort de l'utilisateur, d'où les " "nombreux raccourcis clavier. Voici la liste complète:" msgid "General" msgstr "Général" msgid "Calendar" msgstr "Calendrier" msgid "Note editor" msgstr "Éditeur de note" msgid "Full-year calendar" msgstr "Calendrier annuel" msgid "Tasks" msgstr "Tâches" msgid "Contacts" msgstr "Contacts" msgid "Notes" msgstr "Notes" msgid "Selector" msgstr "Sélecteur" msgid "Editor" msgstr "Éditeur" msgid "A handy personal organizer" msgstr "Un @genda personnel léger et pratique" msgid "compiled on" msgstr "compilé en" msgid "Programming" msgstr "Programmation" msgid "Graphics" msgstr "Graphisme" msgid "Contributors" msgstr "Contributeurs" msgid "Translators" msgstr "Traducteurs" msgid "Mailing lists" msgstr "Listes de courriels" msgid "Bug tracker" msgstr "Recherche de bugs" msgid "Feature requests" msgstr "Requêtes de fonctionalités" msgid "Available modules" msgstr "Modules disponibles" msgid "Compiled-in features" msgstr "Options de compilation" msgid "iCalendar support" msgstr "Support iCalendar" msgid "Encrypted notes support" msgstr "Dispositif de chiffrement" msgid "Backup support" msgstr "Support de sauvegarde" msgid "Printing support" msgstr "Support d'impression" msgid "Spell checker support" msgstr "Correcteur d'orthographe" msgid "version" msgstr "version" msgid "SVN revision" msgstr "Révision SVN" msgid "Key shortcuts" msgstr "Raccourcis clavier" msgid "License" msgstr "Licence" msgid "Save backup" msgstr "Sauvegarder" msgid "Password protection" msgstr "Protection par mot de passe" msgid "Enter password" msgstr "Entrer le mot de passe" msgid "Re-enter password" msgstr "Confirmer le mot de passe" msgid "Please enter the password" msgstr "Confirmer le mot de passe" msgid "Passwords do not match!" msgstr "Le mot de passe ne correspond pas" msgid "Cannot create backup!" msgstr "Création du fichier impossible" msgid "Backup file saved successfully!" msgstr "Création du fichier de sauvegarde terminée" msgid "Open backup file" msgstr "Ouvrir le fichier de sauvegarde" msgid "Osmo backup files (*.bck)" msgstr "Fichiers de sauvegardes d'Osmo (*.bck)" msgid "This is not Osmo backup file" msgstr "Ce n'est pas un fichier de sauvegarde d'Osmo" msgid "Incorrect password!" msgstr "Mot de passe incorrect" msgid "All your data will be replaced with backup file content." msgstr "" "Toutes vos données seront remplacées par le contenu du fichier de sauvegarde" msgid "Are you sure?" msgstr "Êtes-vous sûr(e) ?" msgid "Osmo has to be restarted now..." msgstr "Osmo va redémarrer maintenant ..." msgid "was born" msgstr "né(e) le" msgid "year old" msgid_plural "years old" msgstr[0] "an" msgstr[1] "ans" msgid "Current time" msgstr "Heure actuelle" msgid "Day number" msgstr "N° annuel du jour" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "Jour jusqu'à la fin de l'année" msgstr[1] "Jours jusqu'à la fin de l'année" msgid "the last day of the year" msgstr "le dernier jour de l'année" msgid "Today distance" msgstr "Intervalle en jours" msgid "Week number" msgstr "N° annuel de la semaine" msgid "Marked days" msgstr "Jours cochés" msgid "Weekend days" msgstr "Jours de week-end" msgid "Moon phase" msgstr "Phase de la Lune" msgid "Zodiac sign" msgstr "Signe du zodiaque" msgid "Day notes" msgstr "Notes du jour" msgid "Day tasks" msgstr "Tâches du jour" msgid "Birthday" msgstr "Anniversaire" msgid "Day category" msgstr "Catégorie du jour" msgid "Selected day note will be removed." msgstr "Les notes du jour seront effacées " msgid "Continue?" msgstr "Continuer ?" msgid "Previous year" msgstr "Année précédente" msgid "Previous month" msgstr "Mois précédent" msgid "Previous day" msgstr "Jour précédent" msgid "Today" msgstr "Aujourd'hui" msgid "Next day" msgstr "Jour suivant" msgid "Next month" msgstr "Mois suivant" msgid "Next year" msgstr "Année suivante" msgid "Jump to date" msgstr "Aller à la date du" msgid "Print calendar" msgstr "Imprimer le calendrier" msgid "Date calculator" msgstr "Calculateur temporel" #, fuzzy msgid "Backup data" msgstr "Sauvegarder" #, fuzzy msgid "Restore data" msgstr "Restaurer" msgid "Preferences" msgstr "Préférences" msgid "Quit" msgstr "Quitter" msgid "Toggle day note panel" msgstr "Afficher/Cacher les notes du jour" msgid "Add task" msgstr "Ajouter une tâche" msgid "Select day color" msgstr "Attribuer une couleur au jour" msgid "Browse notes" msgstr "Parcourir les notes" msgid "Browse iCal events" msgstr "Explorer les évènements iCal" msgid "Export to iCal file" msgstr "Exporter en fichier iCal" msgid "Previous and next month" msgstr "Mois précédent/suivant" msgid "Close note panel" msgstr "Fermer le panneau des notes" msgid "Highlight" msgstr "Surligner" msgid "Strikethrough" msgstr "Barrer" msgid "Underline" msgstr "Souligner" msgid "Italic" msgstr "Italique" msgid "Bold" msgstr "Gras" msgid "Insert timeline" msgstr "Insérer un horaire" msgid "Clear text" msgstr "Effacer le texte" msgid "Info" msgstr "Panneau d'informations" msgid "Select color" msgstr "Sélectionnez la couleur" msgid "None" msgstr " " msgid "Cancel" msgstr "Annuler" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "Année" msgstr[1] "Années" msgid "month" msgid_plural "months" msgstr[0] "mois" msgstr[1] "mois" msgid "day" msgid_plural "days" msgstr[0] "jour" msgstr[1] "jours" msgid "hour" msgid_plural "hours" msgstr[0] "heure" msgstr[1] "heures" msgid "minute" msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "secondes" msgid "or" msgstr "ou" msgid "rounded down" msgstr "arrondi inférieur" msgid "week" msgid_plural "weeks" msgstr[0] "semaine" msgstr[1] "semaines" msgid "working day" msgid_plural "working days" msgstr[0] "Jour en semaine" msgstr[1] "Jours en semaine" msgid "time is ignored" msgstr "L'heure est ignorée" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Jour de week-end" msgstr[1] "Jours de week-end" msgid "This calculator only supports dates after year 1." msgstr "Ce calculateur ne supporte que les dates après un an" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Ignorer le jour de week-end" msgstr[1] "Ignorer les jours de week-end" msgid "Year" msgstr "Année" msgid "Month" msgstr "Mois" msgid "Day" msgstr "Jour" msgid "Current date" msgstr "Date actuelle" msgid "Set current date" msgstr "Mettre à la date actuelle" msgid "Hour" msgstr "Heure" msgid "Minute" msgstr "Minute" msgid "Second" msgstr "Seconde" msgid "Set current time" msgstr "Mettre à l'heure actuelle" msgid "Reset time" msgstr "Remettre à zéro" msgid "First date and time" msgstr "Première date/heure" msgid "Second date and time" msgstr "Deuxième date/heure" msgid "Alternative time units" msgstr "Autres Unités temporelles" msgid "Result" msgstr "Résultat" msgid "Duration between two dates" msgstr "Durée entre deux dates" msgid "Operation" msgstr "Opération" msgid "add" msgstr "Ajouter" msgid "subtract" msgstr "Soustraire" msgid "Date and time to add or subtract from" msgstr "Date et heure initiales" msgid "Years" msgstr "Années" msgid "Months" msgstr "Mois" msgid "Days" msgstr "Jours" msgid "Weeks" msgstr "Semaines" msgid "Hours" msgstr "Heures" msgid "Minutes" msgstr "Minutes" msgid "Seconds" msgstr "Secondes" msgid "Ignore weekend days" msgstr "Ignorer les jours de week-end" msgid "Reset fields" msgstr "Remettre à zéro" msgid "Time to add or subtract" msgstr "Temps à ajouter/soustraire" msgid "Jump to" msgstr "S'y rendre" msgid "Add to or subtract from a date" msgstr "Ajouter/Soustraire d'une date" msgid "Leap year" msgstr "Année bissextile" msgid "Yes" msgstr "Oui" msgid "No" msgstr "Non" msgid "Chinese year animal" msgstr "Signe chinois de l'année" msgid "Number of days" msgstr "Nombre de jours" msgid "Number of weeks" msgstr "Nombre de semaines" msgid "Number of weekend days" msgstr "Jours de week-end annuel" msgid "Year info" msgstr "Informations supplémentaires" msgid "Current year" msgstr "Année actuelle" msgid "Alternative view" msgstr "Vue alternative" msgid "event" msgid_plural "events" msgstr[0] "évènement" msgstr[1] "évènements" msgid "No valid calendars defined" msgstr "Aucun calendriers définis" msgid "iCalendar events" msgstr "Évènements iCalendar" msgid "Date" msgstr "Date" msgid "Time" msgstr "Heure" msgid "Summary" msgstr "Résumé" msgid "Select output file" msgstr "Sélectionner le fichier de destination" msgid "The list will be cleared and all entries will be lost." msgstr "La liste sera effacée et toutes les entrées perdues" msgid "Done!" msgstr "Fait!" msgid "event exported" msgid_plural "events exported" msgstr[0] "contact exporté" msgstr[1] "contacts exportés" msgid "iCalendar export" msgstr "Export iCalendar" msgid "Day Selector" msgstr "Sélecteur de jour" msgid "Use date period" msgstr "Définir une période" msgid "Add" msgstr "Ajouter" msgid "Clear" msgstr "Vider" msgid "Remove" msgstr "Supprimer" msgid "Output filename" msgstr "Fichier de destination " msgid "Browse" msgstr "Naviguer" msgid "Export" msgstr "Exporter" msgid "no entries" msgstr "Pas d'entrée" msgid "entry" msgid_plural "entries" msgstr[0] "entrée" msgstr[1] "entrées" msgid "Calendar notes" msgstr "Notes du calendrier" msgid "Search" msgstr "Rechercher" msgid "Filter" msgstr "Filtre" msgid "Current month" msgstr "Mois actuel" msgid "Selected month" msgstr "Mois sélectionné" msgid "Selected year" msgstr "Année sélectionnée" msgid "Selected month and year" msgstr "Mois et année sélectionnée" msgid "All notes" msgstr "Toutes les notes" msgid "Case sensitive" msgstr "Distinguer majuscules et minuscules" msgid "Strikethrough past day notes" msgstr "Barrer les notes des jours précédents" msgid "Note" msgstr "Notes" msgid "Syntax" msgstr "Syntaxe" msgid "abbreviated weekday name" msgstr "nom du jour abrégé" msgid "full weekday name" msgstr "nom du jour en entier" msgid "abbreviated month name" msgstr "nom du mois abrégé" msgid "full month name" msgstr "nom du mois en entier" msgid "day of the month" msgstr "n° du jour " msgid "MM/DD/YY" msgstr "MM/JJ/AA" msgid "day of the month without leading zeros" msgstr "n° du jour sans les zéros initiaux" msgid "year without century" msgstr "année sans siècle" msgid "year with century" msgstr "année avec siècle" msgid "Date header format" msgstr "Format de la date" msgid "Set default format" msgstr "Format par défaut" msgid "Date format syntax" msgstr "Syntaxe du format" msgid "Day note marker" msgstr "Marqueur des notes" msgid "Event marker" msgstr "Marqueur des événements" msgid "Circle" msgstr "Cercle" msgid "Ellipse" msgstr "Ellipse" msgid "Wave" msgstr "Vague" msgid "Current day marker" msgstr "Marqueur du jour actuel" msgid "Arrow" msgstr "Flèche" msgid "Free-hand circle" msgstr "Cercle à main levée" msgid "Colors" msgstr "Couleurs" msgid "Header color" msgstr "Entête" msgid "Weekend days color" msgstr "Week-end" msgid "Cursor color" msgstr "Curseur" msgid "Event marker color" msgstr "Marqueur des évènements" msgid "Current day marker color" msgstr "Marqueur du jour actuel" msgid "Birthday marker color" msgstr "Marqueur d'anniversaire" msgid "Date font" msgstr "Police de la date" msgid "Calendar font" msgstr "Police du calendrier" msgid "Note font" msgstr "Police des notes" msgid "Enable block cursor" msgstr "Activer le curseur plein" msgid "Cursor thickness" msgstr "Épaisseur du curseur" msgid "Thin" msgstr "Mince" msgid "Thick" msgstr "Épais" msgid "Edit category" msgstr "Éditer les catégories" msgid "Color" msgstr "Couleur" msgid "Name" msgstr "Nom" msgid "Select ICS file" msgstr "Sélectionner un fichier ICS" msgid "All Files" msgstr "Tous les fichiers" msgid "Calendar files (*.ics)" msgstr "Fichiers calendrier (*.ics)" msgid "Modify ICAL parameters" msgstr "Modifier les paramètres ICAL" msgid "Filename" msgstr "Nom de fichier" msgid "Options" msgstr "Options" msgid "Disabled" msgstr "Invalide" msgid "Valid" msgstr "Valider" msgid "Description" msgstr "Description" msgid "Full date" msgstr "Date complète" msgid "Mark" msgstr "Marquer" msgid "Week start on Monday" msgstr "Les semaines débutent Lundi" msgid "Show day names" msgstr "Afficher les jours de la semaine" msgid "No month change" msgstr "Ne pas changer le mois" msgid "Show week numbers" msgstr "Afficher les N° annuel de semaine" msgid "Simple view in full-year calendar" msgstr "Vue simple du calendrier annuel" msgid "Enable auxilary calendars" msgstr "Activer les calendriers auxiliaires" msgid "Ascending sorting in day notes browser" msgstr "Ordre croissant dans le panneau de note" msgid "Enable spell checker in day notes" msgstr "Activer le correcteur d'orthographe" msgid "Show seconds" msgstr "Montrer les secondes" msgid "Appearance" msgstr "Apparence" msgid "Day categories" msgstr "Catégories journalières" msgid "iCalendar files" msgstr "Fichiers iCalendar" msgid "Show in day info panel" msgstr "Panneau d'informations" msgid "Name day" msgstr "Fête" msgid "Error printing" msgstr "Erreur d'impression" msgid "Printing properties" msgstr "Propriétés d'impression" msgid "Month name" msgstr "Mois" msgid "Day name" msgstr "Jours" msgid "Events" msgstr "Évènements" msgid "Fonts" msgstr "Polices" msgid "Birthdays" msgstr "Anniversaires" msgid "Namedays" msgstr "Fêtes" msgid "Visible events" msgstr "Faire apparaître :" msgid "Padding" msgstr "Marge par case" msgid "Event maximum length" msgstr "Nb max de caractères" msgid "Page orientation:" msgstr "Orientation de la page" msgid "Portrait" msgstr "Portrait" msgid "Landscape" msgstr "Paysage" msgid "Timeline" msgstr "Durée" msgid "From (hour)" msgstr "De (heure)" msgid "Step (minutes)" msgstr "Intervalle (minutes)" msgid "To (hour)" msgstr "À (heure)" msgid "No date" msgstr "Pas de date" msgid "Rat" msgstr "Rat" msgid "Ox" msgstr "BÅ“uf" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lièvre" msgid "Dragon" msgstr "Dragon" msgid "Snake" msgstr "Serpent" msgid "Horse" msgstr "Cheval" msgid "Sheep" msgstr "Mouton" msgid "Monkey" msgstr "Singe" msgid "Fowl" msgstr "Coq" msgid "Dog" msgstr "Chien" msgid "Pig" msgstr "Cochon" msgid "Unknown" msgstr "Inconnu" msgid "Aquarius" msgstr "Verseau" msgid "Pisces" msgstr "Poisson" msgid "Aries" msgstr "Belier" msgid "Taurus" msgstr "Taureau" msgid "Gemini" msgstr "Gémeau" msgid "Cancer" msgstr "Cancer" msgid "Leo" msgstr "Lion" msgid "Virgo" msgstr "Vierge" msgid "Libra" msgstr "Balance" msgid "Scorpio" msgstr "Scorpion" msgid "Sagittarius" msgstr "Sagittaire" msgid "Capricorn" msgstr "Capricorne" msgid "Cannot perform selected operation." msgstr "Impossible de réaliser l'opération sélectionnée" msgid "Task has been modified or removed." msgstr "La tâche a été modifiée ou supprimée" msgid "Remind me later" msgstr "Me le rappeler plus tard" msgid "Done" msgstr "Fait" msgid "postponed" msgstr "Reporté" msgid "Show task" msgstr "Montrer les tâches" msgid "Alarm warning!" msgstr "Alarme de rappel !" msgid "Day note" msgstr "Note du jour" msgid "Type" msgstr "Type" msgid "Event" msgstr "Évènement" msgid "Task" msgstr "Tâche" msgid "Show Osmo" msgstr "Montrer Osmo" msgid "No birthdays defined" msgstr "Pas d'anniversaires enregistrés" msgid "Birthdays list" msgstr "Liste des anniversaires" msgid "Days to birthday" msgstr "Nombre de jours restants" msgid "Age" msgstr "Age au prochain" msgid "Birthday date" msgstr "Date d'anniversaire" msgid "today" msgstr "Aujourd'hui" msgid "Please select address" msgstr "Sélectionner une adresse" msgid "Information" msgstr "Information" msgid "Work" msgstr "Professionnel" msgid "Home" msgstr "Maison" msgid "Group" msgstr "Groupe" msgid "First name" msgstr "Prénom" msgid "Last name" msgstr "Nom de famille" msgid "Second name" msgstr "Second nom de famille" msgid "Nickname" msgstr "Surnom" msgid "Tags" msgstr "Mots clef" msgid "Name day date" msgstr "Fête" msgid "Home address" msgstr "Adresse personnelle" msgid "Home postcode" msgstr "Code postal" msgid "Home city" msgstr "Ville de résidence" msgid "Home state" msgstr "Département" msgid "Home country" msgstr "Pays" msgid "Organization" msgstr "Entreprise ou organisation" msgid "Department" msgstr "Service" msgid "Work address" msgstr "Adresse professionnelle" msgid "Work postcode" msgstr "Code postal" msgid "Work city" msgstr "Ville d'activité" msgid "Work state" msgstr "Département" msgid "Work country" msgstr "Téléphone professionnel" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Téléphone résidence" msgid "Home phone 2" msgstr "Téléphone résidence 2" msgid "Home phone 3" msgstr "Téléphone résidence 3" msgid "Home phone 4" msgstr "Téléphone résidence 4" msgid "Work phone" msgstr "Téléphone professionnel" msgid "Work phone 2" msgstr "Téléphone professionnel 2" msgid "Work phone 3" msgstr "Téléphone professionnel 3" msgid "Work phone 4" msgstr "Téléphone professionnel 4" msgid "Cell phone" msgstr "Téléphone mobile" msgid "Cell phone 2" msgstr "Téléphone mobile 2" msgid "Cell phone 3" msgstr "Téléphone mobile 3" msgid "Cell phone 4" msgstr "Téléphone mobile 4" msgid "E-Mail" msgstr "Adresse courriel" msgid "E-Mail 2" msgstr "Adresse courriel 2" msgid "E-Mail 3" msgstr "Adresse courriel 3" msgid "E-Mail 4" msgstr "Adresse courriel 4" msgid "WWW" msgstr "Site Web" msgid "WWW 2" msgstr "Site Web 2" msgid "WWW 3" msgstr "Site Web 3" msgid "WWW 4" msgstr "Site Web 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Photo" msgid "Additional info" msgstr "Informations complémentaires" msgid "New contact" msgstr "Nouveau contact" msgid "Remove contact" msgstr "Supprimer le contact" msgid "Edit contact" msgstr "Modifier le contact" msgid "Show birthdays" msgstr "Afficher les anniversaires" msgid "Show contact location on the map" msgstr "Localiser sur Google Maps" msgid "Import contacts" msgstr "Importer des contacts" msgid "Export contacts" msgstr "Exporter les contacts" msgid "First Name" msgstr "Prénom" msgid "Last Name" msgstr "Nom de famille" msgid "All fields" msgstr "Tous les champs" msgid "Contact details" msgstr "Contact en détail" msgid "Close contact panel" msgstr "Cacher les détails" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contact exporté" msgstr[1] "contacts exportés" msgid "Cannot create file." msgstr "Création du fichier impossible" msgid "Output format" msgstr "Format de destination" msgid "Add header" msgstr "Ajouter un en-tête" msgid "Fields to export" msgstr "Champs à exporter" msgid "All" msgstr "Tout" msgid "Invert" msgstr "Inverser" msgid "Select fields" msgstr "Sélectionner les champs" msgid "Select CSV file" msgstr "Sélectionner un fichier CVS" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Fichiers CVS (séparés par une virgule) (*.csv) " msgid "Please select file first." msgstr "Sélectionner le fichier en premier" msgid "Import type" msgstr "Type d'import" msgid "File" msgstr "Fichier" msgid "Input filename" msgstr "Entrer le nom du fichier" msgid "Import" msgstr "Importer" msgid "Nothing to import." msgstr "Rien à importer" msgid "contact added" msgid_plural "contacts added" msgstr[0] "Le contact a été ajouté" msgstr[1] "Les contacts ont été ajoutés" msgid "of" msgstr "de" msgid "Record" msgstr "Enregistrement" msgid "Number fields per record" msgstr "Nombre de champs par enregistrement" msgid "Use first record as header" msgstr "Utiliser le premier enregistrement pour en-tête" msgid "Field type" msgstr "Catégorie" msgid "Value" msgstr "Valeur" msgid "No records found in selected file." msgstr "Aucun enregistrement dans le fichier sélectionné" msgid "Cannot read file." msgstr "Lecture du fichier impossible" msgid "Cannot open file." msgstr "Impossible d'ouvrir le fichier" msgid "Selected contact will be removed." msgstr "Le contact sélectionné sera effacé" msgid "Select photo" msgstr "Sélectionner une photo" msgid "Address" msgstr "Adresse" msgid "Postcode" msgstr "Code postal" msgid "City" msgstr "Ville" msgid "State" msgstr "Département" msgid "Country" msgstr "Pays" msgid "Add contact" msgstr "Ajouter un contact" msgid "Personal" msgstr "Personnel" msgid "Phones" msgstr "Téléphones" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Types d'information" msgid "Color of links" msgstr "Liens internet et courriel" msgid "Font size" msgstr "Taille des polices" msgid "Name font size" msgstr "Noms des contacts" msgid "Item font size" msgstr "Détails sur les contacts" msgid "Photo size" msgstr "Taille des photos" msgid "Small" msgstr "Petite" msgid "Medium" msgstr "Moyenne" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Cacher la colonne de groupe" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Divers" msgid "Groups" msgstr "Groupes" msgid "Visible columns in birthday browser" msgstr "Colonnes visibles dans la liste des anniversaires" msgid "Show calendar" msgstr "Afficher le calendrier" msgid "Show tasks" msgstr "Afficher les tâches" msgid "Show contacts" msgstr "Afficher les contacts" msgid "Show notes" msgstr "Afficher les notes" msgid "Show options" msgstr "Afficher les options" msgid "Show small calendar window" msgstr "Afficher le calendrier dans une petite fenêtre" msgid "Check for events since last run" msgstr "Vérifier les évènements depuis la dernière utilisation" msgid "Number of days to check forward for events (default: 0)" msgstr "Nombre de jours avant vérification des événements (par defaut: 0)" msgid "Set absolute path for settings and data files" msgstr "Indiquer le chemin absolu pour les réglages et les fichiers de données" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "@genda personnel" msgid "ERROR: Cannot create config files" msgstr "Erreur: impossible de créer le fichier de configuration" msgid "Another copy of OSMO is already running." msgstr "Un autre processus OSMO est déjà en cours." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Le lancement en parallèle de deux instances (ou plus) d'OSMO peut causer des " "pertes de données." msgid "Do you really want to continue?" msgstr "Continuer quand même ?" msgid "Warning" msgstr "Attention" msgid "The note has changed." msgstr "La note a été modifiée" msgid "Do you want to save it?" msgstr "Voulez vous enregistrer ?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Aucun enregistrement dans le fichier sélectionné" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Continuer quand même ?" msgid "Question" msgstr "Question" msgid "Words" msgstr "Mots" msgid "Lines" msgstr "Lignes" msgid "Characters" msgstr "Caractères" msgid "White characters" msgstr "Caractères blancs" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Document" msgid "Selection" msgstr "Sélection" msgid "Created" msgstr "Créée" msgid "Modified" msgstr "Modifiée" msgid "New note" msgstr "Nouvelle note" msgid "Add note" msgstr "Ajouter une note" msgid "Edit note" msgstr "Modifier la note" msgid "Delete note" msgstr "Supprimer la note" msgid "Remove note" msgstr "Supprimer la note" msgid "Find" msgstr "Rechercher" msgid "Clear attributes" msgstr "Style par défaut" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Enregistrer la note" msgid "Insert current date and time" msgstr "Insérer la date et l'heure actuelle" msgid "Insert separator" msgstr "Insérer un séparateur" msgid "Statistics" msgstr "Statistiques" msgid "Close editor" msgstr "Fermer l'éditeur" msgid "Toggle spell checker" msgstr "Activer/Désactiver le correcteur d'orthographe" msgid "Category" msgstr "Catégorie" msgid "Note name" msgstr "Nom de la note" msgid "Last changes" msgstr "Derniers changements" msgid "Read-only" msgstr "Lecture seule" msgid "Line" msgstr "Ligne" msgid "Column" msgstr "Colonne" msgid "case sensitive" msgstr "Distinguer majuscules et minuscules" msgid "Close find entry" msgstr "Cacher la barre de recherche" msgid "Edit entry" msgstr "Modifier l'entrée" msgid "Remember cursor position" msgstr "Se rappeler de la position du curseur" msgid "Selected note will be removed." msgstr "Les notes sélectionnées seront effacées " msgid "No further data recovery will be possible." msgstr "La récupération des données ne sera plus possible" msgid "Plain" msgstr "En clair" msgid "Encrypted" msgstr "Chiffrée" msgid "Note type" msgstr "Type de note" msgid "Cannot open the note." msgstr "Impossible d'ouvrir le fichier" msgid "encryption support is disabled" msgstr "Le support de chiffrement est désactivé" msgid "Authorization" msgstr "Autorisation" msgid "Algorithm" msgstr "Algorithme" msgid "Hashing" msgstr "Hash" msgid "Compression" msgstr "Compression" msgid "Ratio" msgstr "Ratio" msgid "Fast" msgstr "Rapide" msgid "Good" msgstr "Bon" msgid "Best" msgstr "Meilleur" msgid "Remember the last selected category" msgstr "Se rappeler la dernière catégorie sélectionnée" msgid "Use system format for date and time" msgstr "Utiliser le format du système pour la date et l'heure" msgid "Encryption" msgstr "Chiffrement" msgid "Visible columns" msgstr "Colonnes visibles" msgid "Categories" msgstr "Catégories" msgid "Notes options" msgstr "Options des notes" msgid "Osmo has to be restarted to take effect." msgstr "Les changements prendront effet aprés redémarrage" msgid "Layout" msgstr "Mise en page" msgid "Vertical" msgstr "Verticale" msgid "Horizontal" msgstr "Horizontale" msgid "Tabs position" msgstr "Position des onglets" msgid "Left" msgstr "Gauche" msgid "Right" msgstr "Droite" msgid "Top" msgstr "Haut" msgid "Bottom" msgstr "Bas" msgid "Use default stock icons" msgstr "utiliser les icones par défaut" msgid "Disable underline in links" msgstr "Ne pas souligner les liens" msgid "Draw rows in alternating colors" msgstr "Alterner la couleur des lignes" msgid "Show exit button in toolbar" msgstr "montrer le bouton sortir dans la barre de tâches" msgid "At least one module must be visible." msgstr "Au moins un module doit être visible" msgid "Override locale settings" msgstr "Ignorer les paramètres locaux" msgid "Date format" msgstr "Format de la date" msgid "DD-MM-YYYY" msgstr "JJ-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-JJ-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-JJ" msgid "YYYY-DD-MM" msgstr "AAAA-JJ-MM" msgid "Time format" msgstr "Format de l'heure" msgid "hours" msgstr "heures" msgid "Spell checker language" msgstr "Langage du correcteur d'orthographe" msgid "Enable tooltips" msgstr "Activer les bulles d'aide" msgid "Remember last selected page" msgstr "Se rappeler la dernière page sélectionnée" msgid "Save data after every modification" msgstr "Sauvegarder les données après chaque modification" msgid "Web browser" msgstr "Navigateur web" msgid "E-mail client" msgstr "Client courriel" msgid "Sound player" msgstr "Serveur de son" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s sera remplacé par l'adresse web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s sera remplacé par l'adresse courriel" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s sera remplacé par le fichier sonore" msgid "Enable system tray" msgstr "Afficher l'îcone" msgid "Start minimised" msgstr "Lancer minimisé" msgid "Blink on events" msgstr "Clignoter lors d'évenements" msgid "Ignore day note events" msgstr "Ignorer les notes du jour" msgid "Hide" msgstr "Cacher" msgid "Helpers" msgstr "Programmes externes" msgid "System tray" msgstr "Zone de notification" msgid "Edit" msgstr "Modifier" msgid "Go Down" msgstr "Descendre" msgid "Select date" msgstr "Sélectionner une date" msgid "Select font" msgstr "Sélectionner une police" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculette" msgid "Edit day note" msgstr "Modifier la note du jour" msgid "Save" msgstr "Enregistrer" msgid "Display full-year calendar" msgstr "Afficher le calendrier annuel" msgid "Help" msgstr "Aide" msgid "Invalid item" msgstr "Item invalide" msgid "Valid item" msgstr "Item valide" msgid "Edit task" msgstr "Modifier la tâche" msgid "Remove task" msgstr "Supprimer la tâche" msgid "Import tasks" msgstr "Importer les tâches" msgid "Export tasks" msgstr "Exporter les tâches" msgid "Change to previous date" msgstr "Échéance au jour précédent" msgid "Change to next date" msgstr "Échéance au jour suivant" msgid "Print" msgstr "Imprimer" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Activer le mode récurrent" msgid "Started" msgstr "Lancé" msgid "Finished" msgstr "Fini" msgid "All items" msgstr "Tout" msgid "New task" msgstr "Nouvelle tâche" msgid "Change due date to previous date" msgstr "Échéance au jour précédent" msgid "Change due date to next date" msgstr "Échéance au jour suivant" msgid "Print visible tasks list" msgstr "Imprimer la liste des tâches" msgid "Due date" msgstr "Échéance" msgid "Priority" msgstr "Priorité" msgid "Task details" msgstr "Détails de la tâche" msgid "Close description panel" msgstr "Cacher les détails" msgid "No tasks with defined date found." msgstr "Tâches avec date définie introuvables." msgid "Save tasks" msgstr "Sauvegarder les tâches" msgid "tasks exported" msgstr "Tâches exportées" msgid "Please select at least one day when recurrency is enabled." msgstr "Sélectionner au moins un jour avec le mode récurrent activé" msgid "Set time" msgstr "Sélectionner une heure" msgid "Tomorrow" msgstr "Demain" msgid "Selected task will be removed." msgstr "Les tâches sélectionnées seront effacées" msgid "Basic" msgstr "Simple" msgid "Select date and time" msgstr "Date/Heure" msgid "Low" msgstr "Basse" msgid "High" msgstr "Haute" msgid "Enable sound notification" msgstr "Activer la notification sonore" #, fuzzy msgid "Enable notification dialog" msgstr "Activer la notification sonore" msgid "Advanced" msgstr "Avancé" msgid "Alarm warning" msgstr "Alarme de rappel" msgid "Postpone time" msgstr "Temps avant rappel" msgid "Alarm command" msgstr "Commande de notification alternative" msgid "Recurrent task" msgstr "Tâche récurrente" msgid "Enable" msgstr "Activer" msgid "Start" msgstr "Démarrage" msgid "End" msgstr "Fin" msgid "Interval" msgstr "Intervalle" msgid "Time period" msgstr "Rappel périodique" msgid "Date period" msgstr "Rappel à date fixe" msgid "Repeat" msgstr "Répétition" msgid "Repeat in the following days" msgstr "Répéter les jours suivants :" msgid "Ignore alarm when task expired offline" msgstr "Ignorer l'alarme lorsque la tâche expire hors ligne" msgid "Select a font..." msgstr "Sélectionner une police..." msgid "Color of items that are due today" msgstr "Couleur de ce qui se termine aujourd'hui" msgid "Color of items that are due in the next 7 days" msgstr "Couleur de ce qui se termine dans les 7 jours" msgid "Color of items that are past due" msgstr "Couleur de ce qui est achevé" msgid "Task info font" msgstr "Police des détails" msgid "Show in bold tasks with high priority" msgstr "Tâches à haute priorité en gras" msgid "Hide completed tasks" msgstr "Cacher les tâches terminées" msgid "Delete completed tasks without confirmation" msgstr "Effacer les tâches terminées sans confirmation" msgid "Add new task when double clicked on tasks list" msgstr "Ajouter une nouvelle tâche par un double clic sur la liste" msgid "minutes" msgstr "minutes" msgid "0 for disable" msgstr "0 pour désactiver" msgid "Repeat sound alarm" msgstr "Répéter l'alarme sonore" msgid "times" msgstr "fois" msgid "Global notification command" msgstr "Commande par défaut (ex: notify-send)" msgid "Tasks options" msgstr "Options des tâches" msgid "Reminder options" msgstr "Options de notification" msgid "Tasks list" msgstr "Liste des tâches" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "N° " msgid "New Moon" msgstr "Nouvelle Lune" msgid "Waxing Crescent Moon" msgstr "Premier croissant" msgid "Quarter Moon" msgstr "Premier quartier" msgid "Waxing Gibbous Moon" msgstr "Lune gibbeuse ascendante" msgid "Full Moon" msgstr "Pleine Lune" msgid "Waning Gibbous Moon" msgstr "Lune gibbeuse descendante" msgid "Last Quarter Moon" msgstr "Dernier quartier" msgid "Waning Crescent Moon" msgstr "Dernier croissant" msgid "Error" msgstr "Erreur" msgid "Selected file exist! Overwrite?" msgstr "Le fichier choisi existe ! Le remplacer ?" #~ msgid "Select and show first item after search" #~ msgstr "Sélectionner et afficher le premier résultat après la recherche" #~ msgid "Order" #~ msgstr "Ordre" #~ msgid "Mode" #~ msgstr "Mode" #~ msgid "Ascending" #~ msgstr "Croissant" #~ msgid "Descending" #~ msgstr "Décroissant" #~ msgid "Sorting" #~ msgstr "Classer" #~ msgid "Contact map location" #~ msgstr "Localisation du contact" osmo-0.2.14/po/da.po000664 001750 001750 00000107210 12561325524 014075 0ustar00pasppasp000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Joe Hansen , 2014 # pasp , 2011 msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-07-30 08:37+0000\n" "Last-Translator: pasp \n" "Language-Team: Danish (http://www.transifex.com/projects/p/osmo/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "About" msgstr "Om" msgid "Close" msgstr "Luk" msgid "Ctrl+PageUp" msgstr "Ctrl+SideOp" msgid "switch to previous tab" msgstr "skift til tidligere faneblad" msgid "Ctrl+PageDn" msgstr "Ctrl+SideNed" msgid "switch to next tab" msgstr "skift til næste faneblad" msgid "switch to selected page" msgstr "skift til den valgte side" msgid "show options window" msgstr "vis vinduet indstillinger" msgid "show about window" msgstr "vis vinduet om" msgid "toggle fullscreen mode" msgstr "skift fuldskærmstilstand" msgid "PageUp/PageDn" msgstr "SideOp/SideNed" msgid "switch page in options and about tab" msgstr "skift side i indstillinger og om fanebladet " msgid "exit" msgstr "luk" msgid "Space" msgstr "Mellemrum" msgid "select current date" msgstr "vælg nuværende dato" msgid "Ctrl+Space" msgstr "Ctrl+Mellemrum" msgid "toggle personal data visibility" msgstr "slÃ¥ visning af personlig data fra/til" msgid "Arrows" msgstr "Pile" msgid "change day" msgstr "skift dag" msgid "Ctrl+Up/Down" msgstr "Ctrl+op/ned" msgid "scroll the contents in the day info panel" msgstr "Rul indholdet i infopanelet for dagen" msgid "change month" msgstr "skift mÃ¥ned" msgid "Home/End" msgstr "Hjem/slut" msgid "change year" msgstr "skift Ã¥r" msgid "toggle calendars for the previous and next month" msgstr "skift mellem kalender for den tidligere og næste mÃ¥ned" msgid "day notes browser" msgstr "fremviser for dagnoter" msgid "assign background color to day note" msgstr "tilføj baggrundsfarve til daglig note" msgid "date calculator" msgstr "datoudregner" msgid "show full-year calendar" msgstr "Vis kalender for hele Ã¥ret" msgid "jump to date" msgstr "spring til dato" msgid "Delete" msgstr "Slet" msgid "remove day note" msgstr "fjern daglig note" msgid "Alt+Arrows" msgstr "Alt+Pile" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "luk redigeringsprogram" msgid "toggle bold" msgstr "slÃ¥ fed til/fra" msgid "toggle italic" msgstr "slÃ¥ kursiv til/fra" msgid "toggle underline" msgstr "slÃ¥ understregning til/fra" msgid "toggle strikethrough" msgstr "slÃ¥ gennemstreget til/fra" msgid "toggle highlight" msgstr "slÃ¥ fremhævet til/fra" msgid "Arrows Up/Down" msgstr "Pile op/ned" msgid "toggle alternative view" msgstr "slÃ¥ alternativ visning til/fra" msgid "year info" msgstr "Ã¥r-info" msgid "set current year" msgstr "bestem nuværende Ã¥r" msgid "close full-year calendar" msgstr "luk kalender for hele Ã¥ret" msgid "Alt+a, Insert" msgstr "Alt+a, indsæt" msgid "add task" msgstr "tilføj begivenhed" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Retur" msgid "edit task" msgstr "rediger begivenhed" msgid "Alt+r, Delete" msgstr "Alt+r, Slet" msgid "remove task" msgstr "fjern begivenhed" msgid "toggle hidden tasks" msgstr "slÃ¥ skjulte begivenheder til/fra" msgid "activate search field" msgstr "aktiver søgefelt" msgid "Left, Right" msgstr "Venstre, højre" msgid "change category filter" msgstr "skift kategorifilter" msgid "close task info panel" msgstr "luk informationspanel for begivenhed" msgid "Insert" msgstr "Indsæt" msgid "add contact" msgstr "tilføj kontakt" msgid "Ctrl+Enter" msgstr "Ctrl+Retur" msgid "edit contact" msgstr "rediger kontakt" msgid "remove contact" msgstr "fjern kontakt" msgid "change search mode" msgstr "skift søgetilstand" msgid "close contact details panel" msgstr "luk panel for kontaktdetaljer" msgid "Enter" msgstr "Retur" msgid "open note" msgstr "Ã¥bn note" msgid "add note" msgstr "tilføj note" msgid "remove note" msgstr "fjern note" msgid "edit note name and category" msgstr "rediger note navn og kategori" msgid "close note editor" msgstr "luk noteredigeringsprogram" msgid "save note" msgstr "gem note" msgid "find text" msgstr "find tekst" msgid "clear selection attributes" msgstr "fjern valgte attributter" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "OSMO blev designet med henblik pÃ¥ brugeranvendelighed, derfor er der mange genvejstaster. Her er hele listen:" msgid "General" msgstr "Generelt" msgid "Calendar" msgstr "Kalender" msgid "Note editor" msgstr "Noteredigeringsprogram" msgid "Full-year calendar" msgstr "Kalender for hele Ã¥ret" msgid "Tasks" msgstr "Begivenheder" msgid "Contacts" msgstr "Kontakter" msgid "Notes" msgstr "Noter" msgid "Selector" msgstr "Vælger" msgid "Editor" msgstr "Redigeringsprogram" msgid "A handy personal organizer" msgstr "En nem personlig planlægger" msgid "compiled on" msgstr "kompileret pÃ¥" msgid "Programming" msgstr "Programmering" msgid "Graphics" msgstr "Grafik" msgid "Contributors" msgstr "Bidragydere" msgid "Translators" msgstr "Oversættere" msgid "Mailing lists" msgstr "Postliste" msgid "Bug tracker" msgstr "Fejlregistrering" msgid "Feature requests" msgstr "Funktionsønsker" msgid "Available modules" msgstr "Tilgængelige moduler" msgid "Compiled-in features" msgstr "Kompilerede funktioner" msgid "iCalendar support" msgstr "Understøttelse af iCalendar" msgid "Encrypted notes support" msgstr "Understøttelse af krypterede noter" msgid "Backup support" msgstr "Understøttelse af sikkerhedskopiering" msgid "Printing support" msgstr "Understøttelse af udskrivning" msgid "Spell checker support" msgstr "Understøttelse af stavekontrol" msgid "version" msgstr "version" msgid "SVN revision" msgstr "SVN-revision" msgid "Key shortcuts" msgstr "Genvejstast" msgid "License" msgstr "Licens" msgid "Save backup" msgstr "Gem en kopi" msgid "Password protection" msgstr "Beskyttelse af adgangskode" msgid "Enter password" msgstr "Indtast adgangskode" msgid "Re-enter password" msgstr "Gen-indtast adgangskode" msgid "Please enter the password" msgstr "Indtast venligst adgangskoden" msgid "Passwords do not match!" msgstr "Adgangskoderne er ikke ens!" msgid "Cannot create backup!" msgstr "Kan ikke oprette kopi!" msgid "Backup file saved successfully!" msgstr "Kopifilen er gemt korrekt" msgid "Open backup file" msgstr "Ã…bn kopifil" msgid "Osmo backup files (*.bck)" msgstr "Osmo-kopifiler (*.bck)" msgid "This is not Osmo backup file" msgstr "Dette er ikke en Osmo-kopifil" msgid "Incorrect password!" msgstr "Forkert adgangskode!" msgid "All your data will be replaced with backup file content." msgstr "Alle dine data vil blive erstattet af kopifilens indhold" msgid "Are you sure?" msgstr "Er du sikker!" msgid "Osmo has to be restarted now..." msgstr "Osmo skal nu genstartes" msgid "was born" msgstr "blev født" msgid "year old" msgid_plural "years old" msgstr[0] "Ã¥r gammel" msgstr[1] "Ã¥r gammel" msgid "Current time" msgstr "Klokken er nu" msgid "Day number" msgstr "Dagens nummer" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dag til Ã¥rets udløb" msgstr[1] "dage til Ã¥rets udløb" msgid "the last day of the year" msgstr "Ã¥rets sidste dag" msgid "Today distance" msgstr "Dagens afstand" msgid "Week number" msgstr "Ugenummer" msgid "Marked days" msgstr "Markerede dage" msgid "Weekend days" msgstr "Weekenddage" msgid "Moon phase" msgstr "MÃ¥nefase" msgid "Zodiac sign" msgstr "Zodiac-tegn" msgid "Day notes" msgstr "Dagens noter" msgid "Day tasks" msgstr "Dagens begivenheder" msgid "Birthday" msgstr "Fødselsdag" msgid "Day category" msgstr "Dagens kategori" msgid "Selected day note will be removed." msgstr "Valgte dagnote vil blive fjernet" msgid "Continue?" msgstr "Fortsæt?" msgid "Previous year" msgstr "ForegÃ¥ende Ã¥r" msgid "Previous month" msgstr "ForegÃ¥ende mÃ¥ned" msgid "Previous day" msgstr "Forrige dag" msgid "Today" msgstr "I dag" msgid "Next day" msgstr "Næste dag" msgid "Next month" msgstr "Næste mÃ¥ned" msgid "Next year" msgstr "Næste Ã¥r" msgid "Jump to date" msgstr "GÃ¥ til dato" msgid "Print calendar" msgstr "Udskriv kalender" msgid "Date calculator" msgstr "Dato-udregner" msgid "Backup data" msgstr "Lav sikkerhedskopi af data" msgid "Restore data" msgstr "Gendan data" msgid "Preferences" msgstr "Præferencer" msgid "Quit" msgstr "Afslut" msgid "Toggle day note panel" msgstr "SlÃ¥ dagens notepanel til/fra" msgid "Add task" msgstr "Tilføj begivenhed" msgid "Select day color" msgstr "Vælg dagens farve" msgid "Browse notes" msgstr "Gennemse noter" msgid "Browse iCal events" msgstr "Gennemse iCal-begivenheder" msgid "Export to iCal file" msgstr "Eksporter til iCal-fil" msgid "Previous and next month" msgstr "ForegÃ¥ende og næste mÃ¥ned" msgid "Close note panel" msgstr "Luk notepanel" msgid "Highlight" msgstr "Fremhæv" msgid "Strikethrough" msgstr "Gennemstreg" msgid "Underline" msgstr "Understreg" msgid "Italic" msgstr "Kursiv" msgid "Bold" msgstr "Fed" msgid "Insert timeline" msgstr "Indsæt tidslinje" msgid "Clear text" msgstr "Ryd tekst" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Vælg farve" msgid "None" msgstr "Ingen" msgid "Cancel" msgstr "Annuller" msgid "OK" msgstr "O.k." msgid "year" msgid_plural "years" msgstr[0] "Ã¥r" msgstr[1] "Ã¥r" msgid "month" msgid_plural "months" msgstr[0] "mÃ¥ned" msgstr[1] "mÃ¥neder" msgid "day" msgid_plural "days" msgstr[0] "dag" msgstr[1] "dage" msgid "hour" msgid_plural "hours" msgstr[0] "time" msgstr[1] "timer" msgid "minute" msgid_plural "minutes" msgstr[0] "minut" msgstr[1] "minutter" msgid "second" msgid_plural "seconds" msgstr[0] "sekund" msgstr[1] "sekunder" msgid "or" msgstr "eller" msgid "rounded down" msgstr "afrundet nedad" msgid "week" msgid_plural "weeks" msgstr[0] "uge" msgstr[1] "uger" msgid "working day" msgid_plural "working days" msgstr[0] "arbejdsdag" msgstr[1] "arbejdsdage" msgid "time is ignored" msgstr "tiden ignoreres" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "weekenddag" msgstr[1] "weekenddage" msgid "This calculator only supports dates after year 1." msgstr "Denne lommeregner fungerer kun med datoer efter Ã¥r 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "weekenddag ignoreret" msgstr[1] "weekenddage ignoreret" msgid "Year" msgstr "Ã…r" msgid "Month" msgstr "MÃ¥ned" msgid "Day" msgstr "Dag" msgid "Current date" msgstr "Nuværende dato" msgid "Set current date" msgstr "Vælg nuværende dato" msgid "Hour" msgstr "Time" msgid "Minute" msgstr "Minut" msgid "Second" msgstr "Sekund" msgid "Set current time" msgstr "Vælg nuværende klokkeslæt" msgid "Reset time" msgstr "Nulstil tiden" msgid "First date and time" msgstr "Første dato og tid" msgid "Second date and time" msgstr "Anden dato og tid" msgid "Alternative time units" msgstr "Alternative tidsenheder" msgid "Result" msgstr "Resultat" msgid "Duration between two dates" msgstr "Varighed mellem to datoer" msgid "Operation" msgstr "Handling" msgid "add" msgstr "læg til" msgid "subtract" msgstr "træk fra" msgid "Date and time to add or subtract from" msgstr "Dato og tid hvorfra der skal lægges til eller trækkes fra" msgid "Years" msgstr "Ã…r" msgid "Months" msgstr "MÃ¥neder" msgid "Days" msgstr "Dage" msgid "Weeks" msgstr "Uger" msgid "Hours" msgstr "Timer" msgid "Minutes" msgstr "Minutter" msgid "Seconds" msgstr "Sekunder" msgid "Ignore weekend days" msgstr "Ignorer weekenddage" msgid "Reset fields" msgstr "Ryd felter" msgid "Time to add or subtract" msgstr "Tid der skal lægges til eller trækkes fra" msgid "Jump to" msgstr "Spring til" msgid "Add to or subtract from a date" msgstr "Læg til eller træk fra en dato" msgid "Leap year" msgstr "SkudÃ¥r" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nej" msgid "Chinese year animal" msgstr "Dyr for kinesisk Ã¥r" msgid "Number of days" msgstr "Antal dage" msgid "Number of weeks" msgstr "Antal uger" msgid "Number of weekend days" msgstr "Antal weekenddage" msgid "Year info" msgstr "Ã…r-info" msgid "Current year" msgstr "Nuværende Ã¥r" msgid "Alternative view" msgstr "Alternativ visning" msgid "event" msgid_plural "events" msgstr[0] "begivenhed" msgstr[1] "begivenheder" msgid "No valid calendars defined" msgstr "Ingen gyldig kalender defineret" msgid "iCalendar events" msgstr "iCalendar-begivenheder" msgid "Date" msgstr "Dato" msgid "Time" msgstr "Tid" msgid "Summary" msgstr "Opsummering" msgid "Select output file" msgstr "Vælg uddatafil" msgid "The list will be cleared and all entries will be lost." msgstr "Denne liste vil blive ryddet og alt indhold vil være tabt." msgid "Done!" msgstr "Færdig!" msgid "event exported" msgid_plural "events exported" msgstr[0] "begivenhed eksporteret" msgstr[1] "begivenheder eksporteret" msgid "iCalendar export" msgstr "iCalendar-eksport" msgid "Day Selector" msgstr "Dagvælger" msgid "Use date period" msgstr "Brug datoperiode" msgid "Add" msgstr "Tilføj" msgid "Clear" msgstr "Ryd" msgid "Remove" msgstr "Fjern" msgid "Output filename" msgstr "Filnavn for uddata" msgid "Browse" msgstr "Gennemse" msgid "Export" msgstr "Eksporter" msgid "no entries" msgstr "Ingen poster" msgid "entry" msgid_plural "entries" msgstr[0] "post" msgstr[1] "poster" msgid "Calendar notes" msgstr "Kalendernoter" msgid "Search" msgstr "Søg" msgid "Filter" msgstr "Filter" msgid "Current month" msgstr "Nuværende mÃ¥ned" msgid "Selected month" msgstr "Valgt mÃ¥ned" msgid "Selected year" msgstr "Valgt Ã¥r" msgid "Selected month and year" msgstr "Valgt mÃ¥ned og Ã¥r" msgid "All notes" msgstr "Alle noter" msgid "Case sensitive" msgstr "Skeln mellem store/smÃ¥ bogstaver" msgid "Strikethrough past day notes" msgstr "Gennemstreg forrige dags noter" msgid "Note" msgstr "Note" msgid "Syntax" msgstr "Syntaks" msgid "abbreviated weekday name" msgstr "forkortet ugedagsnavn" msgid "full weekday name" msgstr "fuld ugedagsnavn" msgid "abbreviated month name" msgstr "forkortet mÃ¥nedsnavn" msgid "full month name" msgstr "fuld mÃ¥nedsnavn" msgid "day of the month" msgstr "dag i mÃ¥neden" msgid "MM/DD/YY" msgstr "MM/DD/Ã…Ã…" msgid "day of the month without leading zeros" msgstr "dag i mÃ¥neden uden foranstillede nuller" msgid "year without century" msgstr "Ã¥r uden Ã¥rhundrede" msgid "year with century" msgstr "Ã¥r med Ã¥rhundrede" msgid "Date header format" msgstr "Teksthovedformat for hoved" msgid "Set default format" msgstr "Angiv standardformat" msgid "Date format syntax" msgstr "Formatsyntaks for dato" msgid "Day note marker" msgstr "Markør af dagnote" msgid "Event marker" msgstr "Begivenhedsmarkør" msgid "Circle" msgstr "Cirkel" msgid "Ellipse" msgstr "Ellipse" msgid "Wave" msgstr "Bølge" msgid "Current day marker" msgstr "Nuværende dagmarkør" msgid "Arrow" msgstr "Pil" msgid "Free-hand circle" msgstr "FrihÃ¥ndscirkel" msgid "Colors" msgstr "Farver" msgid "Header color" msgstr "Teksthovedfarve" msgid "Weekend days color" msgstr "Farve for weekenddage" msgid "Cursor color" msgstr "Markørfarve" msgid "Event marker color" msgstr "Farve pÃ¥ begivenhedsmarkør " msgid "Current day marker color" msgstr "Farve pÃ¥ markør for nuværende dag" msgid "Birthday marker color" msgstr "Farve pÃ¥ fødselsdagsmarkør" msgid "Date font" msgstr "Datoskrifttype" msgid "Calendar font" msgstr "Kalenderskrifttype" msgid "Note font" msgstr "Noteskrifttype" msgid "Enable block cursor" msgstr "Aktiver blokmarkør" msgid "Cursor thickness" msgstr "Tykkelse pÃ¥ markør" msgid "Thin" msgstr "Tynd" msgid "Thick" msgstr "Tyk" msgid "Edit category" msgstr "Rediger kategori" msgid "Color" msgstr "Farve" msgid "Name" msgstr "Navn" msgid "Select ICS file" msgstr "Vælg ICS-fil" msgid "All Files" msgstr "Alle filer" msgid "Calendar files (*.ics)" msgstr "Kalenderfiler (*.ics)" msgid "Modify ICAL parameters" msgstr "Ændr ICAL-parametre" msgid "Filename" msgstr "Filnavn" msgid "Options" msgstr "Indstillinger" msgid "Disabled" msgstr "Deaktiveret" msgid "Valid" msgstr "Gyldig" msgid "Description" msgstr "Beskrivelse" msgid "Full date" msgstr "Fuld dato" msgid "Mark" msgstr "Marker" msgid "Week start on Monday" msgstr "Ugen starter om mandagen" msgid "Show day names" msgstr "Vis navne pÃ¥ dagene" msgid "No month change" msgstr "Skift ikke mÃ¥ned" msgid "Show week numbers" msgstr "Vis ugenumre" msgid "Simple view in full-year calendar" msgstr "Simpel visning i kalender for hele Ã¥ret" msgid "Enable auxilary calendars" msgstr "Aktiver ekstra kalendere" msgid "Ascending sorting in day notes browser" msgstr "Stigende sortering i fremviseren for i dag-noter" msgid "Enable spell checker in day notes" msgstr "Aktiver stavekontrol i dagsnoter" msgid "Show seconds" msgstr "Vis sekunder" msgid "Appearance" msgstr "Udseende" msgid "Day categories" msgstr "Dagkategorier" msgid "iCalendar files" msgstr "iCalender-filer" msgid "Show in day info panel" msgstr "Vis i infopanel for dag" msgid "Name day" msgstr "Dagens navn" msgid "Error printing" msgstr "Udskrivningsfejl" msgid "Printing properties" msgstr "Udskrivningsegenskaber" msgid "Month name" msgstr "MÃ¥nedens navn" msgid "Day name" msgstr "Dagens navn" msgid "Events" msgstr "Begivenheder" msgid "Fonts" msgstr "Skrifttyper" msgid "Birthdays" msgstr "Fødselsdag" msgid "Namedays" msgstr "Navnedage" msgid "Visible events" msgstr "Synlige begivenheder" msgid "Padding" msgstr "Polstring" msgid "Event maximum length" msgstr "Maksimumlængde for begivenhed" msgid "Page orientation:" msgstr "Sideretning:" msgid "Portrait" msgstr "Portræt" msgid "Landscape" msgstr "Landskab" msgid "Timeline" msgstr "Tidslinje" msgid "From (hour)" msgstr "Fra (time)" msgid "Step (minutes)" msgstr "Skridt (minutter)" msgid "To (hour)" msgstr "Til (time)" msgid "No date" msgstr "Ingen dato" msgid "Rat" msgstr "Rotte" msgid "Ox" msgstr "Okse" msgid "Tiger" msgstr "Tiger" msgid "Hare" msgstr "Hare" msgid "Dragon" msgstr "Drage" msgid "Snake" msgstr "Slange" msgid "Horse" msgstr "Hest" msgid "Sheep" msgstr "FÃ¥r" msgid "Monkey" msgstr "Abe" msgid "Fowl" msgstr "Høne" msgid "Dog" msgstr "Hund" msgid "Pig" msgstr "Gris" msgid "Unknown" msgstr "Ukendt" msgid "Aquarius" msgstr "Vandmand" msgid "Pisces" msgstr "Fisk" msgid "Aries" msgstr "Vædder" msgid "Taurus" msgstr "Tyr" msgid "Gemini" msgstr "Tvilling" msgid "Cancer" msgstr "Krebs" msgid "Leo" msgstr "Løve" msgid "Virgo" msgstr "Jomfru" msgid "Libra" msgstr "Vægt" msgid "Scorpio" msgstr "Skorpion" msgid "Sagittarius" msgstr "Skytte" msgid "Capricorn" msgstr "Stenbuk" msgid "Cannot perform selected operation." msgstr "Kan ikke udføre valgt handling" msgid "Task has been modified or removed." msgstr "Begivenheden er blevet ændret eller fjernet" msgid "Remind me later" msgstr "PÃ¥mind mig senere" msgid "Done" msgstr "Færdig" msgid "postponed" msgstr "udsat" msgid "Show task" msgstr "Vis begivenhed" msgid "Alarm warning!" msgstr "Alarmadvarsel!" msgid "Day note" msgstr "Dag note" msgid "Type" msgstr "Type" msgid "Event" msgstr "Hændelse" msgid "Task" msgstr "Begivenhed" msgid "Show Osmo" msgstr "Fra Osmo" msgid "No birthdays defined" msgstr "Ingen fødselsdage defineret" msgid "Birthdays list" msgstr "Fødselsdags liste" msgid "Days to birthday" msgstr "Dage til fødselsdag" msgid "Age" msgstr "Alder" msgid "Birthday date" msgstr "Fødselsdags dato" msgid "today" msgstr "i dag" msgid "Please select address" msgstr "Vælg venligst adresse" msgid "Information" msgstr "Information" msgid "Work" msgstr "Arbejde" msgid "Home" msgstr "Hjem" msgid "Group" msgstr "Gruppe" msgid "First name" msgstr "Fornavn" msgid "Last name" msgstr "Efternavn" msgid "Second name" msgstr "Efternavn" msgid "Nickname" msgstr "Kælenavn" msgid "Tags" msgstr "Mærkater" msgid "Name day date" msgstr "Navnedags dato" msgid "Home address" msgstr "Hjemadresse" msgid "Home postcode" msgstr "Hjem postnummer" msgid "Home city" msgstr "Hjemby" msgid "Home state" msgstr "Hjemstat" msgid "Home country" msgstr "Hjemland" msgid "Organization" msgstr "Organisation" msgid "Department" msgstr "Avdeling" msgid "Work address" msgstr "Arbejds adresse" msgid "Work postcode" msgstr "Arbejds postnummer" msgid "Work city" msgstr "Arbejdsby" msgid "Work state" msgstr "Arbejdsstat" msgid "Work country" msgstr "Arbejdsland" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Hjemmetelefon" msgid "Home phone 2" msgstr "Hjemmetelefon 2" msgid "Home phone 3" msgstr "Hjemmetelefon 3" msgid "Home phone 4" msgstr "Hjemmetelefon 4" msgid "Work phone" msgstr "Arbejdstelefon" msgid "Work phone 2" msgstr "Arbejdstelefon 2" msgid "Work phone 3" msgstr "Arbejdstelefon 3" msgid "Work phone 4" msgstr "Arbejdstelefon 4" msgid "Cell phone" msgstr "Mobiltelefon" msgid "Cell phone 2" msgstr "Mobiltelefon 2" msgid "Cell phone 3" msgstr "Mobiltelefon 3" msgid "Cell phone 4" msgstr "Mobiltelefon 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Billede" msgid "Additional info" msgstr "Yderligere info" msgid "New contact" msgstr "Ny kontakt" msgid "Remove contact" msgstr "Fjern kontakt" msgid "Edit contact" msgstr "Rediger kontakt" msgid "Show birthdays" msgstr "Vis fødselsdage" msgid "Show contact location on the map" msgstr "Vis kontakt lokation pÃ¥ kortet" msgid "Import contacts" msgstr "Importer kontakter" msgid "Export contacts" msgstr "eksporter kontakter" msgid "First Name" msgstr "Fornavn" msgid "Last Name" msgstr "Efternavn" msgid "All fields" msgstr "Alle felter" msgid "Contact details" msgstr "Kontakt detaljer" msgid "Close contact panel" msgstr "Luk kontakt panel" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kontakt eksporteret" msgstr[1] "kontakter eksporteret" msgid "Cannot create file." msgstr "Kan ikke oprette filer" msgid "Output format" msgstr "Uddata format" msgid "Add header" msgstr "Tilføj hoved" msgid "Fields to export" msgstr "Fælter der skal eksporteres" msgid "All" msgstr "Alle" msgid "Invert" msgstr "Invertér" msgid "Select fields" msgstr "Vælg felter" msgid "Select CSV file" msgstr "Vælg CSV fil" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (kommasepareret) filer (*.csv)" msgid "Please select file first." msgstr "Vælg venligst en fil først" msgid "Import type" msgstr "Import type" msgid "File" msgstr "Fil" msgid "Input filename" msgstr "Inddata filnavn" msgid "Import" msgstr "Importér" msgid "Nothing to import." msgstr "Intet at importere." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kontakt tilføjet" msgstr[1] "kontakter tilføjet" msgid "of" msgstr "a" msgid "Record" msgstr "Fortegnelse" msgid "Number fields per record" msgstr "Antal felter per fortegnelse" msgid "Use first record as header" msgstr "Anvend første fortegnelse som hoved" msgid "Field type" msgstr "Feldt type" msgid "Value" msgstr "Værdi" msgid "No records found in selected file." msgstr "Ingen fortegnelser fundet i valgte fil" msgid "Cannot read file." msgstr "Kan ikke læse fil" msgid "Cannot open file." msgstr "Kan ikke Ã¥bne fil" msgid "Selected contact will be removed." msgstr "Valge kontakt vil blive fjernet" msgid "Select photo" msgstr "Vælg billed" msgid "Address" msgstr "Adresse" msgid "Postcode" msgstr "Postnummer" msgid "City" msgstr "By" msgid "State" msgstr "Stat" msgid "Country" msgstr "Land" msgid "Add contact" msgstr "Tilføj kontakt" msgid "Personal" msgstr "Personlig" msgid "Phones" msgstr "Telefoner" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Farve pÃ¥ kontakt mærkater" msgid "Color of links" msgstr "Farve pÃ¥ links" msgid "Font size" msgstr "Skriftstørrelse" msgid "Name font size" msgstr "Skriftstørrelse pÃ¥ navn" msgid "Item font size" msgstr "Skriftstørrelse pÃ¥ punkt" msgid "Photo size" msgstr "Billed størrelse" msgid "Small" msgstr "Lille" msgid "Medium" msgstr "Mellem" msgid "Large" msgstr "Stor" msgid "Hide group column" msgstr "Gem gruppe kolonne" msgid "Maps provider" msgstr "Kortleverandør" msgid "Miscellaneous" msgstr "Diverse" msgid "Groups" msgstr "Grupper" msgid "Visible columns in birthday browser" msgstr "Synlige kolonner i fødseldags fremviser" msgid "Show calendar" msgstr "Vis kalender" msgid "Show tasks" msgstr "Vis begivenheder" msgid "Show contacts" msgstr "Vis kontakter" msgid "Show notes" msgstr "Vis noter" msgid "Show options" msgstr "Vis indstillinger" msgid "Show small calendar window" msgstr "Vis lille kalender vindue" msgid "Check for events since last run" msgstr "Kontroller for begivenheder siden sidste kørsel" msgid "Number of days to check forward for events (default: 0)" msgstr "Antal dage til kontrol for begivenheder (default: 0)" msgid "Set absolute path for settings and data files" msgstr "Bestem absolut sti til indstillinger og data filer" msgid "Match contacts with given string" msgstr "Match kontakter med angiven streng" msgid "handy personal organizer" msgstr "nem personlig planlægger" msgid "ERROR: Cannot create config files" msgstr "FEJL: Kan ikke oprette config filer" msgid "Another copy of OSMO is already running." msgstr "En anden kopi af OSMO kører allerede" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Anvendelse af to eller flere versioner af OSMO pÃ¥ samme tid kan medføre data tab" msgid "Do you really want to continue?" msgstr "Vil du virkelig fortsætte" msgid "Warning" msgstr "Advarsel" msgid "The note has changed." msgstr "Noten er blevet ændret" msgid "Do you want to save it?" msgstr "Ønsker du at gemme den" msgid "No URLs found in the selection..." msgstr "" msgid "URLs will be opened in the default browser." msgstr "" msgid "Do you want to continue?" msgstr "" msgid "Question" msgstr "SpørgsmÃ¥l" msgid "Words" msgstr "Ord" msgid "Lines" msgstr "Linier" msgid "Characters" msgstr "Bogstaver" msgid "White characters" msgstr "Hvide bogstaver" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Dokument" msgid "Selection" msgstr "Markering" msgid "Created" msgstr "Oprettet" msgid "Modified" msgstr "Ændret" msgid "New note" msgstr "Ny note" msgid "Add note" msgstr "Tilføj note" msgid "Edit note" msgstr "Rediger note" msgid "Delete note" msgstr "Slet note" msgid "Remove note" msgstr "Fjern note" msgid "Find" msgstr "Find" msgid "Clear attributes" msgstr "Fjern attributter" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Gem note" msgid "Insert current date and time" msgstr "Indsæt nuværende dato og tid " msgid "Insert separator" msgstr "Indsæt seperator" msgid "Statistics" msgstr "Statistik" msgid "Close editor" msgstr "Luk editor" msgid "Toggle spell checker" msgstr "SlÃ¥ stavekontrol til/fra" msgid "Category" msgstr "Kategori" msgid "Note name" msgstr "Note navn" msgid "Last changes" msgstr "Seneste ændringer" msgid "Read-only" msgstr "Læs-kun" msgid "Line" msgstr "Linje" msgid "Column" msgstr "Kolonne" msgid "case sensitive" msgstr "Forskel pÃ¥ store og smÃ¥ bogstaver" msgid "Close find entry" msgstr "Luk find indgang" msgid "Edit entry" msgstr "Redigér indgang" msgid "Remember cursor position" msgstr "Husk markør position" msgid "Selected note will be removed." msgstr "Valgte note blive fjernet" msgid "No further data recovery will be possible." msgstr "Det vil ikke være muligt at genoprette yderligere data" msgid "Plain" msgstr "Almindelig" msgid "Encrypted" msgstr "Krypteret" msgid "Note type" msgstr "Note type" msgid "Cannot open the note." msgstr "Kan ikke Ã¥bne noten" msgid "encryption support is disabled" msgstr "Support for kryptering er slÃ¥et fra" msgid "Authorization" msgstr "Godkendelse" msgid "Algorithm" msgstr "Algoritme" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Komprimering" msgid "Ratio" msgstr "Ratio" msgid "Fast" msgstr "Hurtig" msgid "Good" msgstr "God" msgid "Best" msgstr "Bedre" msgid "Remember the last selected category" msgstr "Husk den sidst valgte kategori" msgid "Use system format for date and time" msgstr "Anvend system format for dato og tid" msgid "Encryption" msgstr "Kryptering" msgid "Visible columns" msgstr "Synlige kolonner" msgid "Categories" msgstr "Kategorier" msgid "Notes options" msgstr "Note indstillinger" msgid "Osmo has to be restarted to take effect." msgstr "Osmo skal genstarte for at træde i kraft." msgid "Layout" msgstr "Layout" msgid "Vertical" msgstr "Vertikal" msgid "Horizontal" msgstr "Horisontal" msgid "Tabs position" msgstr "Faneblads position" msgid "Left" msgstr "Venstre" msgid "Right" msgstr "Højre" msgid "Top" msgstr "Top" msgid "Bottom" msgstr "Bund" msgid "Use default stock icons" msgstr "Brug standardikoner for lager" msgid "Disable underline in links" msgstr "Deaktiver understregning i links" msgid "Draw rows in alternating colors" msgstr "Tegn rækker i skiftende farver" msgid "Show exit button in toolbar" msgstr "Vis afslutningsknap i værktøjslinjen" msgid "At least one module must be visible." msgstr "Mindst et modul skal være synlig" msgid "Override locale settings" msgstr "Overskriv lokale indstillinger" msgid "Date format" msgstr "Dato format" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "Tids format" msgid "hours" msgstr "timer" msgid "Spell checker language" msgstr "Sprog for stavekontrol " msgid "Enable tooltips" msgstr "Aktiver værktøjstips" msgid "Remember last selected page" msgstr "Husk sidst valgte side" msgid "Save data after every modification" msgstr "Gem data efter hver eneste ændring" msgid "Web browser" msgstr "Internet browser" msgid "E-mail client" msgstr "E-Mail program" msgid "Sound player" msgstr "Lydafspiller" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s mønstret vil bliver erstattet med internet adresse" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s mønstret vil blive erstattet med e-mail adresse" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s mønstret vil blive erstattet med lyd filnavnet" msgid "Enable system tray" msgstr "Aktiver system bakke" msgid "Start minimised" msgstr "Start minimeret" msgid "Blink on events" msgstr "Blink ved begivenheder" msgid "Ignore day note events" msgstr "Ignorer dag note begivenheder" msgid "Hide" msgstr "Gem" msgid "Helpers" msgstr "Hjælpere" msgid "System tray" msgstr "System bakke" msgid "Edit" msgstr "Redigér" msgid "Go Down" msgstr "Flyt Ned" msgid "Select date" msgstr "Vælg dato" msgid "Select font" msgstr "Vælg font" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Udregner" msgid "Edit day note" msgstr "Rediger dag note" msgid "Save" msgstr "Gem" msgid "Display full-year calendar" msgstr "Vis kalender for hele Ã¥ret" msgid "Help" msgstr "Hjælp" msgid "Invalid item" msgstr "Ugyldigt element" msgid "Valid item" msgstr "Gyldigt element" msgid "Edit task" msgstr "Rediger begivenhed" msgid "Remove task" msgstr "Fjern begivenhed" msgid "Import tasks" msgstr "Importer begivenheder" msgid "Export tasks" msgstr "Eksporter begivenheder" msgid "Change to previous date" msgstr "Skift til forrige dato" msgid "Change to next date" msgstr "Skift til næste dato" msgid "Print" msgstr "Print" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Tilbagevendende" msgid "Started" msgstr "Begyndt" msgid "Finished" msgstr "Færdig" msgid "All items" msgstr "Alle elementer" msgid "New task" msgstr "Ny begivenhed" msgid "Change due date to previous date" msgstr "Ændre forfalds dato til foregÃ¥ende dato" msgid "Change due date to next date" msgstr "Ændre forfalds dato til næste dato" msgid "Print visible tasks list" msgstr "Print den synlige liste over begivenheder" msgid "Due date" msgstr "Forfalds dato" msgid "Priority" msgstr "Prioritet" msgid "Task details" msgstr "Detaljer for begivenhed" msgid "Close description panel" msgstr "Luk beskrivelses panel" msgid "No tasks with defined date found." msgstr "Ingen begivenheder fundet med den definerede dato" msgid "Save tasks" msgstr "Gem begivenheder" msgid "tasks exported" msgstr "begivenhed eksporteret" msgid "Please select at least one day when recurrency is enabled." msgstr "Vælg venligst mindst en dag nÃ¥r tilbagevendende er aktiveret" msgid "Set time" msgstr "Vælg tidspunkt" msgid "Tomorrow" msgstr "i morgen" msgid "Selected task will be removed." msgstr "Valgte begivenhed vil blive fjernet" msgid "Basic" msgstr "Basal" msgid "Select date and time" msgstr "Vælg dato og tid" msgid "Low" msgstr "Lav" msgid "High" msgstr "Høj" msgid "Enable sound notification" msgstr "Aktiver lyd pÃ¥mindelse" msgid "Enable notification dialog" msgstr "" msgid "Advanced" msgstr "Avanceret" msgid "Alarm warning" msgstr "Alarm advarsel" msgid "Postpone time" msgstr "Udsæt tid" msgid "Alarm command" msgstr "Alarm kommando" msgid "Recurrent task" msgstr "Tilbagevendende begivenhed" msgid "Enable" msgstr "Aktiver" msgid "Start" msgstr "Start" msgid "End" msgstr "Slut" msgid "Interval" msgstr "Interval" msgid "Time period" msgstr "Tids periode" msgid "Date period" msgstr "Dato periode" msgid "Repeat" msgstr "Gentag" msgid "Repeat in the following days" msgstr "Gentag i de følgende dage" msgid "Ignore alarm when task expired offline" msgstr "Ignorer alarm hvis begivenheden udløb offline" msgid "Select a font..." msgstr "Vælg en font" msgid "Color of items that are due today" msgstr "Farve pÃ¥ element der er forfalden i dag" msgid "Color of items that are due in the next 7 days" msgstr "Farve pÃ¥ element der forfalder i de kommende 7 dage" msgid "Color of items that are past due" msgstr "Farve pÃ¥ elementer der er gÃ¥et over tid" msgid "Task info font" msgstr "Font for info om begivenheder" msgid "Show in bold tasks with high priority" msgstr "Vis med fed skrift begivenheder med høj prioritet" msgid "Hide completed tasks" msgstr "Gem afsluttede begivenheder" msgid "Delete completed tasks without confirmation" msgstr "Slet afsluttede begivenheder uden bekræftelse" msgid "Add new task when double clicked on tasks list" msgstr "Tilføj ny begivhed nÃ¥r der dobbeltklikkes pÃ¥ begivenhedslisten" msgid "minutes" msgstr "minutter" msgid "0 for disable" msgstr "0 for deaktivere" msgid "Repeat sound alarm" msgstr "Gentag lyd alarm" msgid "times" msgstr "tider" msgid "Global notification command" msgstr "Global notifikation kommando" msgid "Tasks options" msgstr "Indstillinger for begivenheder" msgid "Reminder options" msgstr "Indstillinger for pÃ¥mindelse" msgid "Tasks list" msgstr "Liste over begivenheder" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nej." msgid "New Moon" msgstr "NymÃ¥ne" msgid "Waxing Crescent Moon" msgstr "Tiltagende Crecent MÃ¥ne" msgid "Quarter Moon" msgstr "1. kvarter" msgid "Waxing Gibbous Moon" msgstr "Tiltagende Gibbous mÃ¥ne" msgid "Full Moon" msgstr "FuldmÃ¥ne" msgid "Waning Gibbous Moon" msgstr "Aftagende Gibbous mÃ¥ne" msgid "Last Quarter Moon" msgstr "3. kvarter" msgid "Waning Crescent Moon" msgstr "Aftagende Crecent mÃ¥ne" msgid "Error" msgstr "Fejl" msgid "Selected file exist! Overwrite?" msgstr "Valgte fil eksistere! Overskriv?" osmo-0.2.14/po/lt.po000664 001750 001750 00000114447 12561325524 014142 0ustar00pasppasp000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Moo, 2014-2015 msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-07-30 10:04+0000\n" "Last-Translator: Moo\n" "Language-Team: Lithuanian (http://www.transifex.com/projects/p/osmo/language/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\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" msgid "About" msgstr "Apie" msgid "Close" msgstr "Uždaryti" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "pereiti į praeitÄ… kortelÄ™" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "pereitį į kitÄ… kortelÄ™" msgid "switch to selected page" msgstr "perjungti į pasirinktÄ… puslapį" msgid "show options window" msgstr "rodyti parinkÄių langÄ…" msgid "show about window" msgstr "rodyti Apie langÄ…" msgid "toggle fullscreen mode" msgstr "perjungti viso ekrano veiksenÄ…" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "pakeisti puslapį parinkÄių ir apie kortelÄ—se" msgid "exit" msgstr "iÅ¡eiti" msgid "Space" msgstr "Tarpas" msgid "select current date" msgstr "parinkti Å¡iandienos datÄ…" msgid "Ctrl+Space" msgstr "Ctrl+Space" msgid "toggle personal data visibility" msgstr "perjungti asmeninÄ—s informacijos matomumÄ…" msgid "Arrows" msgstr "RodyklÄ—s" msgid "change day" msgstr "pakeisti dienÄ…" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "slinkti dienos informacijos skydelio turinį" msgid "change month" msgstr "pakeisti mÄ—nesį" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "pakeisti metus" msgid "toggle calendars for the previous and next month" msgstr "perjungti praeito ir kito mÄ—nesio kalendorius" msgid "day notes browser" msgstr "dienos pastabų narÅ¡yklÄ—" msgid "assign background color to day note" msgstr "priskirti spalvÄ… dienos pastabos fonui" msgid "date calculator" msgstr "datos skaiÄiuoklis" msgid "show full-year calendar" msgstr "parodyti visų metų kalendorių" msgid "jump to date" msgstr "pereiti į dienÄ…" msgid "Delete" msgstr "Delete" msgid "remove day note" msgstr "paÅ¡alinti dienos pastabÄ…" msgid "Alt+Arrows" msgstr "Alt+RodyklÄ—s" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "uždaryti redaktorių" msgid "toggle bold" msgstr "perjungti pusjuodį" msgid "toggle italic" msgstr "perjungti kursyvÄ…" msgid "toggle underline" msgstr "perjungti pabrauktÄ…" msgid "toggle strikethrough" msgstr "perjungti perbrauktÄ…" msgid "toggle highlight" msgstr "perjungti paryÅ¡kintÄ…" msgid "Arrows Up/Down" msgstr "RodyklÄ—s AukÅ¡tyn/Žemyn" msgid "toggle alternative view" msgstr "perjungti alternatyvų rodinį" msgid "year info" msgstr "metų informacija" msgid "set current year" msgstr "nustatyti dabartinius metus" msgid "close full-year calendar" msgstr "uždaryti visų metų kalendorių" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "pridÄ—ti užduotį" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "taisyti užduotį" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "paÅ¡alinti užduotį" msgid "toggle hidden tasks" msgstr "perjungti paslÄ—ptas užduotis" msgid "activate search field" msgstr "aktyvuoti paieÅ¡kos laukÄ…" msgid "Left, Right" msgstr "KairÄ—n, DeÅ¡inÄ—n" msgid "change category filter" msgstr "pakeisti kategorijos filtrÄ…" msgid "close task info panel" msgstr "uždaryti užduoÄių informacijos skydelį" msgid "Insert" msgstr "Ä®terpti" msgid "add contact" msgstr "pridÄ—ti adresatÄ…" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "taisyti adresato įrašą" msgid "remove contact" msgstr "paÅ¡alinti adresatÄ…" msgid "change search mode" msgstr "pakeisti paieÅ¡kos veiksenÄ…" msgid "close contact details panel" msgstr "užverti adresato iÅ¡samios informacijos skydelį" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "atverti pastabÄ…" msgid "add note" msgstr "pridÄ—ti pastabÄ…" msgid "remove note" msgstr "paÅ¡alinti pastabÄ…" msgid "edit note name and category" msgstr "taisyti pastabos pavadinimÄ… ir kategorijÄ…" msgid "close note editor" msgstr "užverti pastabos raÅ¡yklÄ™" msgid "save note" msgstr "iÅ¡saugoti pastabÄ…" msgid "find text" msgstr "rasti tekstÄ…" msgid "clear selection attributes" msgstr "iÅ¡valyti parinkimo požymius" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "RuoÅ¡iant OSMO, buvo galvojama apie vartotojo patogumÄ…, todÄ—l Äia yra daug sparÄiųjų klavišų. Å tai visas sÄ…raÅ¡as: " msgid "General" msgstr "Bendri" msgid "Calendar" msgstr "Kalendorius" msgid "Note editor" msgstr "Pastabos redaktorius" msgid "Full-year calendar" msgstr "Visų metų kalendorius" msgid "Tasks" msgstr "Užduotys" msgid "Contacts" msgstr "Adresatai" msgid "Notes" msgstr "Pastabos" msgid "Selector" msgstr "Atrankos" msgid "Editor" msgstr "RaÅ¡yklÄ—" msgid "A handy personal organizer" msgstr "Patogi asmeninių duomenų tvarkytuvÄ—" msgid "compiled on" msgstr "sukompiliuota" msgid "Programming" msgstr "Programavimas" msgid "Graphics" msgstr "Grafika" msgid "Contributors" msgstr "Talkininkai" msgid "Translators" msgstr "VertÄ—jai" msgid "Mailing lists" msgstr "Elektroninio paÅ¡to grupÄ—" msgid "Bug tracker" msgstr "Klaidų sekimas" msgid "Feature requests" msgstr "Funkcijų praÅ¡ymai" msgid "Available modules" msgstr "Prieinami moduliai" msgid "Compiled-in features" msgstr "Ä®kompiliuotos funkcijos" msgid "iCalendar support" msgstr "iCalendar palaikymas" msgid "Encrypted notes support" msgstr "Užšifruotų pastabų palaikymas" msgid "Backup support" msgstr "AtsarginÄ—s kopijos palaikymas" msgid "Printing support" msgstr "Spausdinimo palaikymas" msgid "Spell checker support" msgstr "RaÅ¡ybos tikrinimo palaikymas" msgid "version" msgstr "versija" msgid "SVN revision" msgstr "SVN poversijis" msgid "Key shortcuts" msgstr "Spartieji klaviÅ¡ai" msgid "License" msgstr "Licencija" msgid "Save backup" msgstr "IÅ¡saugoti atsarginÄ™ kopijÄ…" msgid "Password protection" msgstr "Apsauga slaptažodžiu" msgid "Enter password" msgstr "Ä®veskite slaptažodį" msgid "Re-enter password" msgstr "Pakartokite slaptažodį" msgid "Please enter the password" msgstr "PraÅ¡ome įvesti naujÄ… slaptažodį" msgid "Passwords do not match!" msgstr "Slaptažodžiai nesutampa!" msgid "Cannot create backup!" msgstr "Nepavyko sukurti atsarginÄ—s kopijos!" msgid "Backup file saved successfully!" msgstr "AtsarginÄ—s kopijos failas sÄ—kmingai iÅ¡saugotas!" msgid "Open backup file" msgstr "Atidaryti atsarginÄ—s kopijos failÄ…" msgid "Osmo backup files (*.bck)" msgstr "Osmo atsarginÄ—s kopijos failai (*.bck)" msgid "This is not Osmo backup file" msgstr "Tai nÄ—ra Osmo atsarginÄ—s kopijos failas" msgid "Incorrect password!" msgstr "Neteisingas slaptažodis!" msgid "All your data will be replaced with backup file content." msgstr "Visi jÅ«sų duomenys bus pakeisti atsarginÄ—s kopijos failo turiniu." msgid "Are you sure?" msgstr "Ar JÅ«s įsitikinÄ™?" msgid "Osmo has to be restarted now..." msgstr "Osmo dabar turi bÅ«ti paleista iÅ¡ naujo..." msgid "was born" msgstr "gimÄ—" msgid "year old" msgid_plural "years old" msgstr[0] "metai" msgstr[1] "metai" msgstr[2] "metų" msgid "Current time" msgstr "Laikas" msgid "Day number" msgstr "Diena" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "diena iki metų pabaigos" msgstr[1] "dienos iki metų pabaigos" msgstr[2] "dienų iki metų pabaigos" msgid "the last day of the year" msgstr "paskutinÄ— metų diena" msgid "Today distance" msgstr "Dienų nuo Å¡iandien" msgid "Week number" msgstr "SavaitÄ—" msgid "Marked days" msgstr "PažymÄ—tos dienos" msgid "Weekend days" msgstr "Savaitgalio dienos" msgid "Moon phase" msgstr "MÄ—nulio fazÄ—" msgid "Zodiac sign" msgstr "Zodiako ženklas" msgid "Day notes" msgstr "Dienos pastabos" msgid "Day tasks" msgstr "Dienos užduotys" msgid "Birthday" msgstr "Gimimo diena" msgid "Day category" msgstr "Dienos kategorija" msgid "Selected day note will be removed." msgstr "PažymÄ—ta dienos pastaba bus paÅ¡alinta." msgid "Continue?" msgstr "TÄ™sti?" msgid "Previous year" msgstr "Praeiti metai" msgid "Previous month" msgstr "Praeitas mÄ—nuo" msgid "Previous day" msgstr "Praeita diena" msgid "Today" msgstr "Å iandiena" msgid "Next day" msgstr "Kita diena" msgid "Next month" msgstr "Kitas mÄ—nuo" msgid "Next year" msgstr "Kiti metai" msgid "Jump to date" msgstr "Pereiti į dienÄ…" msgid "Print calendar" msgstr "Spausdinti kalendorių" msgid "Date calculator" msgstr "Datos skaiÄiuoklis" msgid "Backup data" msgstr "AtsarginÄ—s kopijos duomenys" msgid "Restore data" msgstr "Atkurti duomenis" msgid "Preferences" msgstr "Parinktys" msgid "Quit" msgstr "Baigti" msgid "Toggle day note panel" msgstr "Rodyti/slÄ—pti dienos pastabų skydelį" msgid "Add task" msgstr "PridÄ—ti užduotį" msgid "Select day color" msgstr "Parinkti dienos spalvÄ…" msgid "Browse notes" msgstr "NarÅ¡yti pastabas" msgid "Browse iCal events" msgstr "NarÅ¡yti iCal įvykius" msgid "Export to iCal file" msgstr "Eksportuoti į iCal failÄ…" msgid "Previous and next month" msgstr "Praeitas ir kitas mÄ—nuo" msgid "Close note panel" msgstr "Užverti pastabų skydelį" msgid "Highlight" msgstr "ParyÅ¡kinti" msgid "Strikethrough" msgstr "Perbrauktas" msgid "Underline" msgstr "Pabrauktas" msgid "Italic" msgstr "Kursyvas" msgid "Bold" msgstr "Pusjuodis" msgid "Insert timeline" msgstr "Ä®terpti laiko skalÄ™" msgid "Clear text" msgstr "IÅ¡valyti tekstÄ…" msgid "Info" msgstr "Informacija" msgid "Select color" msgstr "Parinkite spalvÄ…" msgid "None" msgstr "Nieko" msgid "Cancel" msgstr "AtÅ¡aukti" msgid "OK" msgstr "Gerai" msgid "year" msgid_plural "years" msgstr[0] "metai" msgstr[1] "metai" msgstr[2] "metų" msgid "month" msgid_plural "months" msgstr[0] "mÄ—nuo" msgstr[1] "mÄ—nesiai" msgstr[2] "mÄ—nesių" msgid "day" msgid_plural "days" msgstr[0] "diena" msgstr[1] "dienos" msgstr[2] "dienų" msgid "hour" msgid_plural "hours" msgstr[0] "valanda" msgstr[1] "valandos" msgstr[2] "valandų" msgid "minute" msgid_plural "minutes" msgstr[0] "minutÄ—" msgstr[1] "minutÄ—s" msgstr[2] "minuÄių" msgid "second" msgid_plural "seconds" msgstr[0] "sekundÄ—" msgstr[1] "sekundÄ—s" msgstr[2] "sekundžių" msgid "or" msgstr "ar" msgid "rounded down" msgstr "suapvalinta į apaÄiÄ…" msgid "week" msgid_plural "weeks" msgstr[0] "savaitÄ—" msgstr[1] "savaitÄ—s" msgstr[2] "savaiÄių" msgid "working day" msgid_plural "working days" msgstr[0] "darbo diena" msgstr[1] "darbo dienos" msgstr[2] "darbo dienų" msgid "time is ignored" msgstr "laikas ignoruojamas" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "savaitgalio diena" msgstr[1] "savaitgalio dienos" msgstr[2] "savaitgalio dienų" msgid "This calculator only supports dates after year 1." msgstr "Å is skaiÄiuoklis skaiÄiuoja datas tik nuo 1 metų." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "ignoruota savaitgalio diena" msgstr[1] "ignoruotos savaitgalio dienos" msgstr[2] "ignoruotų savaitgalio dienų" msgid "Year" msgstr "Metai" msgid "Month" msgstr "MÄ—nuo" msgid "Day" msgstr "Diena" msgid "Current date" msgstr "DabartinÄ— data" msgid "Set current date" msgstr "Parinkti dabartinÄ™ datÄ…" msgid "Hour" msgstr "Valanda" msgid "Minute" msgstr "MinutÄ—" msgid "Second" msgstr "SekundÄ—" msgid "Set current time" msgstr "Parinkti dabartinį laikÄ…" msgid "Reset time" msgstr "Atstatyti laikÄ… į pradinÄ™ bÅ«senÄ…" msgid "First date and time" msgstr "Pirma data ir laikas" msgid "Second date and time" msgstr "Antra data ir laikas" msgid "Alternative time units" msgstr "AlternatyvÅ«s laiko vienetai" msgid "Result" msgstr "Rezultatas" msgid "Duration between two dates" msgstr "Laikas tarp dviejų datų" msgid "Operation" msgstr "Veiksmas" msgid "add" msgstr "pridÄ—ti" msgid "subtract" msgstr "atimti" msgid "Date and time to add or subtract from" msgstr "Data ir laikas pridÄ—jimui ir atimÄiai" msgid "Years" msgstr "Metai" msgid "Months" msgstr "MÄ—nesiai" msgid "Days" msgstr "Dienos" msgid "Weeks" msgstr "SavaitÄ—s" msgid "Hours" msgstr "Valandos" msgid "Minutes" msgstr "MinutÄ—s" msgid "Seconds" msgstr "SekundÄ—s" msgid "Ignore weekend days" msgstr "Ignoruoti savaitgalio dienas" msgid "Reset fields" msgstr "Atstatyti laukus į pradinÄ™ bÅ«senÄ…" msgid "Time to add or subtract" msgstr "Laikas pridÄ—jimui ar atimÄiai" msgid "Jump to" msgstr "Pereiti" msgid "Add to or subtract from a date" msgstr "PridÄ—ti ar atimti iÅ¡ datos" msgid "Leap year" msgstr "Keliamieji metai" msgid "Yes" msgstr "Taip" msgid "No" msgstr "Ne" msgid "Chinese year animal" msgstr "Kinų metų gyvÅ«nas" msgid "Number of days" msgstr "Dienų skaiÄius" msgid "Number of weeks" msgstr "SavaiÄių skaiÄius" msgid "Number of weekend days" msgstr "Savaitgalio dienų skaiÄius" msgid "Year info" msgstr "Metų informacija" msgid "Current year" msgstr "Å ie metai" msgid "Alternative view" msgstr "Alternatyvus rodinys" msgid "event" msgid_plural "events" msgstr[0] "įvykis" msgstr[1] "įvykiai" msgstr[2] "įvykių" msgid "No valid calendars defined" msgstr "NÄ—ra apibrėžta teisingų kalendorių" msgid "iCalendar events" msgstr "iCalendar įvykiai" msgid "Date" msgstr "Data" msgid "Time" msgstr "Laikas" msgid "Summary" msgstr "Santrauka" msgid "Select output file" msgstr "Parinkite iÅ¡vedimo failÄ…" msgid "The list will be cleared and all entries will be lost." msgstr "Å is sÄ…raÅ¡as bus iÅ¡valytas ir visi įraÅ¡ai prarasti." msgid "Done!" msgstr "Atlikta!" msgid "event exported" msgid_plural "events exported" msgstr[0] "įvykis eksportuotas" msgstr[1] "įvykiai eksportuoti" msgstr[2] "įvykių eksportuota" msgid "iCalendar export" msgstr "iCalendar eksportavimas" msgid "Day Selector" msgstr "Dienos Selektorius" msgid "Use date period" msgstr "Naudoti datos periodÄ…" msgid "Add" msgstr "PridÄ—ti" msgid "Clear" msgstr "IÅ¡valyti" msgid "Remove" msgstr "PaÅ¡alinti" msgid "Output filename" msgstr "IÅ¡vedimo failo vardas" msgid "Browse" msgstr "NarÅ¡yti" msgid "Export" msgstr "Eksportuoti" msgid "no entries" msgstr "nÄ—ra įrašų" msgid "entry" msgid_plural "entries" msgstr[0] "įraÅ¡as" msgstr[1] "įraÅ¡ai" msgstr[2] "įrašų" msgid "Calendar notes" msgstr "Kalendoriaus pastabos" msgid "Search" msgstr "PaieÅ¡ka" msgid "Filter" msgstr "Filtras" msgid "Current month" msgstr "Esamas mÄ—nuo" msgid "Selected month" msgstr "Pasirinktas mÄ—nuo" msgid "Selected year" msgstr "Pasirinkti metai" msgid "Selected month and year" msgstr "Pasirinktas mÄ—nuo ir metai" msgid "All notes" msgstr "Visos pastabos" msgid "Case sensitive" msgstr "Skiriant didžiÄ…sias ir mažąsias raides" msgid "Strikethrough past day notes" msgstr "Perbraukti praeitos dienos pastabas" msgid "Note" msgstr "Pastaba" msgid "Syntax" msgstr "SintaksÄ—" msgid "abbreviated weekday name" msgstr "sutrumpintas Å¡iokiadienių pavadinimas" msgid "full weekday name" msgstr "pilnas Å¡iokiadienių pavadinimas" msgid "abbreviated month name" msgstr "sutrumpintas mÄ—nesio pavadinimas" msgid "full month name" msgstr "pilnas mÄ—nesio pavadinimas" msgid "day of the month" msgstr "mÄ—nesio diena" msgid "MM/DD/YY" msgstr "mm/dd/MM" msgid "day of the month without leading zeros" msgstr "mÄ—nesio diena be pirmųjų nulių" msgid "year without century" msgstr "metai be amžiaus" msgid "year with century" msgstr "metai su amžiumi" msgid "Date header format" msgstr "Datos antraÅ¡tÄ—s formatas" msgid "Set default format" msgstr "Nustatyti numatytÄ…jį formatÄ…" msgid "Date format syntax" msgstr "Datos formato sintaksÄ—" msgid "Day note marker" msgstr "Dienos pastabų žymeklis" msgid "Event marker" msgstr "Ä®vykių žymeklis" msgid "Circle" msgstr "Apskritimas" msgid "Ellipse" msgstr "ElipsÄ—" msgid "Wave" msgstr "Banga" msgid "Current day marker" msgstr "Esamos dienos žymeklis" msgid "Arrow" msgstr "RodyklÄ—" msgid "Free-hand circle" msgstr "Ranka pieÅ¡tas apskritimas" msgid "Colors" msgstr "Spalvos" msgid "Header color" msgstr "AntraÅ¡tÄ—s spalva" msgid "Weekend days color" msgstr "Savaitgalio dienų spalva" msgid "Cursor color" msgstr "Žymeklio spalva" msgid "Event marker color" msgstr "Ä®vykių žymeklio spalva" msgid "Current day marker color" msgstr "Esamos dienos žymeklio spalva" msgid "Birthday marker color" msgstr "Gimtadienio žymeklio spalva" msgid "Date font" msgstr "Datos Å¡riftas" msgid "Calendar font" msgstr "Kalendoriaus Å¡riftas" msgid "Note font" msgstr "Pastabos Å¡riftas" msgid "Enable block cursor" msgstr "Ä®jungti staÄiakampį žymeklį" msgid "Cursor thickness" msgstr "Žymeklio storis" msgid "Thin" msgstr "Plonas" msgid "Thick" msgstr "Storas" msgid "Edit category" msgstr "Redaguoti kategorijÄ…" msgid "Color" msgstr "Spalva" msgid "Name" msgstr "Vardas" msgid "Select ICS file" msgstr "Parinkite ICS failÄ…" msgid "All Files" msgstr "Visi failai" msgid "Calendar files (*.ics)" msgstr "Calendar failai (*.ics)" msgid "Modify ICAL parameters" msgstr "Modifikuoti ICAL parametrus" msgid "Filename" msgstr "Failo vardas" msgid "Options" msgstr "Parinktys" msgid "Disabled" msgstr "IÅ¡jungta" msgid "Valid" msgstr "Teisingas" msgid "Description" msgstr "ApraÅ¡as" msgid "Full date" msgstr "Pilna data" msgid "Mark" msgstr "PažymÄ—ti" msgid "Week start on Monday" msgstr "SavaitÄ— prasideda pirmadienį" msgid "Show day names" msgstr "Rodyti dienų pavadinimus" msgid "No month change" msgstr "Nekeisti mÄ—nesio" msgid "Show week numbers" msgstr "Rodyti savaiÄių numerius" msgid "Simple view in full-year calendar" msgstr "Paprastas visų metų kalendoriaus rodymas" msgid "Enable auxilary calendars" msgstr "Ä®jungti pagalbinius kalendorius" msgid "Ascending sorting in day notes browser" msgstr "Dienos pastabų narÅ¡yklÄ—je rikiuoti didÄ—janÄia tvarka" msgid "Enable spell checker in day notes" msgstr "Ä®jungti raÅ¡ybos tikrinimÄ… dienos pastabose" msgid "Show seconds" msgstr "Rodyti sekundes" msgid "Appearance" msgstr "IÅ¡vaizda" msgid "Day categories" msgstr "Dienos kategorijos" msgid "iCalendar files" msgstr "iCalendar failai" msgid "Show in day info panel" msgstr "Rodyti dienos informacijos skydelyje" msgid "Name day" msgstr "Vardadienis" msgid "Error printing" msgstr "Spausdinimo klaida" msgid "Printing properties" msgstr "Spausdinimo savybÄ—s" msgid "Month name" msgstr "MÄ—nesio pavadinimas" msgid "Day name" msgstr "Dienos pavadinimas" msgid "Events" msgstr "Ä®vykiai" msgid "Fonts" msgstr "Å riftai" msgid "Birthdays" msgstr "Gimtadieniai" msgid "Namedays" msgstr "Vardadieniai" msgid "Visible events" msgstr "Matomi įvykiai" msgid "Padding" msgstr "Tarpai" msgid "Event maximum length" msgstr "Maksimalus įvykio ilgis" msgid "Page orientation:" msgstr "Puslapio padÄ—tis:" msgid "Portrait" msgstr "StaÄiai" msgid "Landscape" msgstr "GulsÄiai" msgid "Timeline" msgstr "Laiko skalÄ—" msgid "From (hour)" msgstr "Nuo (valandos)" msgid "Step (minutes)" msgstr "Žingsnis (minutÄ—s)" msgid "To (hour)" msgstr "Iki (valandos)" msgid "No date" msgstr "NÄ—ra datos" msgid "Rat" msgstr "ŽiurkÄ—" msgid "Ox" msgstr "Jautis" msgid "Tiger" msgstr "Tigras" msgid "Hare" msgstr "Zuikis" msgid "Dragon" msgstr "Drakonas" msgid "Snake" msgstr "GyvatÄ—" msgid "Horse" msgstr "Arklys" msgid "Sheep" msgstr "Avis" msgid "Monkey" msgstr "BeždžionÄ—" msgid "Fowl" msgstr "Gaidys" msgid "Dog" msgstr "Å uo" msgid "Pig" msgstr "KiaulÄ—" msgid "Unknown" msgstr "Nežinomas" msgid "Aquarius" msgstr "Vandenis" msgid "Pisces" msgstr "Žuvys" msgid "Aries" msgstr "Avinas" msgid "Taurus" msgstr "Jautis" msgid "Gemini" msgstr "Dvyniai" msgid "Cancer" msgstr "Vėžys" msgid "Leo" msgstr "LiÅ«tas" msgid "Virgo" msgstr "MergelÄ—" msgid "Libra" msgstr "SvarstyklÄ—s" msgid "Scorpio" msgstr "Skorpionas" msgid "Sagittarius" msgstr "Å aulys" msgid "Capricorn" msgstr "Ožiaragis" msgid "Cannot perform selected operation." msgstr "Nepavyko atlikti pasirinkto veiksmo." msgid "Task has been modified or removed." msgstr "Užduotis buvo pertvarkyta arba paÅ¡alinta." msgid "Remind me later" msgstr "Priminti vÄ—liau" msgid "Done" msgstr "Atlikta" msgid "postponed" msgstr "atidÄ—ta" msgid "Show task" msgstr "Rodyti užduotį" msgid "Alarm warning!" msgstr "Signalinis įspÄ—jimas!" msgid "Day note" msgstr "Dienos pastaba" msgid "Type" msgstr "Tipas" msgid "Event" msgstr "Ä®vykis" msgid "Task" msgstr "Užduotis" msgid "Show Osmo" msgstr "Rodyti Osmo" msgid "No birthdays defined" msgstr "Nerasta nei vieno gimtadienio" msgid "Birthdays list" msgstr "Gimtadienių sÄ…raÅ¡as" msgid "Days to birthday" msgstr "Dienų iki gimtadienio" msgid "Age" msgstr "Amžius" msgid "Birthday date" msgstr "Gimimo diena" msgid "today" msgstr "Å¡iandien" msgid "Please select address" msgstr "PraÅ¡ome pasirinkti adresÄ…" msgid "Information" msgstr "Informacija" msgid "Work" msgstr "Darbo" msgid "Home" msgstr "Namų" msgid "Group" msgstr "GrupÄ—" msgid "First name" msgstr "Vardas" msgid "Last name" msgstr "PavardÄ—" msgid "Second name" msgstr "Antras vardas" msgid "Nickname" msgstr "Slapyvardis" msgid "Tags" msgstr "GairÄ—s" msgid "Name day date" msgstr "Vardo diena" msgid "Home address" msgstr "Namų adresas" msgid "Home postcode" msgstr "Namų paÅ¡to indeksas" msgid "Home city" msgstr "Namų miestas" msgid "Home state" msgstr "Namų valstija" msgid "Home country" msgstr "Namų valstybÄ—" msgid "Organization" msgstr "Organizacija" msgid "Department" msgstr "Skyrius" msgid "Work address" msgstr "DarbovietÄ—s adresas" msgid "Work postcode" msgstr "DarbovietÄ—s paÅ¡to indeksas" msgid "Work city" msgstr "DarbovietÄ—s miestas" msgid "Work state" msgstr "DarbovietÄ—s valstija" msgid "Work country" msgstr "DarbovietÄ—s valstybÄ—" msgid "Fax" msgstr "Faksas" msgid "Home phone" msgstr "Namų telefonas" msgid "Home phone 2" msgstr "Namų telefonas 2" msgid "Home phone 3" msgstr "Namų telefonas 3" msgid "Home phone 4" msgstr "Namų telefonas 4" msgid "Work phone" msgstr "Darbo telefonas" msgid "Work phone 2" msgstr "Darbo telefonas 2" msgid "Work phone 3" msgstr "Darbo telefonas 3" msgid "Work phone 4" msgstr "Darbo telefonas 4" msgid "Cell phone" msgstr "Mobilusis telefonas" msgid "Cell phone 2" msgstr "Mobilusis telefonas 2" msgid "Cell phone 3" msgstr "Mobilusis telefonas 3" msgid "Cell phone 4" msgstr "Mobilusis telefonas 4" msgid "E-Mail" msgstr "El. paÅ¡tas" msgid "E-Mail 2" msgstr "El. paÅ¡tas 2" msgid "E-Mail 3" msgstr "El. paÅ¡tas 3" msgid "E-Mail 4" msgstr "El. paÅ¡tas 4" msgid "WWW" msgstr "Tinklalapis" msgid "WWW 2" msgstr "Tinklalapis 2" msgid "WWW 3" msgstr "Tinklalapis 3" msgid "WWW 4" msgstr "Tinklalapis 4" msgid "IM Gadu-Gadu" msgstr "Pokalbių tarnyba Gadu-Gadu" msgid "IM Yahoo" msgstr "Pokalbių tarnyba Yahoo" msgid "IM MSN" msgstr "Pokalbių tarnyba MSN" msgid "IM ICQ" msgstr "Pokalbių tarnyba ICQ" msgid "IM AOL" msgstr "Pokalbių tarnyba AOL" msgid "IM Jabber" msgstr "Pokalbių tarnyba Jabber" msgid "IM Skype" msgstr "Pokalbių tarnyba Skype" msgid "IM Tlen" msgstr "Pokalbių tarnyba Tlen" msgid "Blog" msgstr "TinklaraÅ¡tis" msgid "Photo" msgstr "Nuotrauka" msgid "Additional info" msgstr "Papildoma informacija" msgid "New contact" msgstr "Naujas adresatas" msgid "Remove contact" msgstr "PaÅ¡alinti adresatÄ…" msgid "Edit contact" msgstr "Taisyti adresato įrašą" msgid "Show birthdays" msgstr "Rodyti gimtadienius" msgid "Show contact location on the map" msgstr "Rodyti kontakto vietÄ… žemÄ—lapyje" msgid "Import contacts" msgstr "Importuoti adresatus" msgid "Export contacts" msgstr "Eksportuoti adresatus" msgid "First Name" msgstr "Vardas" msgid "Last Name" msgstr "PavardÄ—" msgid "All fields" msgstr "Visi laukai" msgid "Contact details" msgstr "Adresato iÅ¡sami informacija" msgid "Close contact panel" msgstr "Užverti adresatų skydelį" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "adresatas eksportuotas" msgstr[1] "adresatai eksportuoti" msgstr[2] "adresatų eksportuota" msgid "Cannot create file." msgstr "Negalima sukurti failo." msgid "Output format" msgstr "IÅ¡vedimo formatas" msgid "Add header" msgstr "PridÄ—ti antraÅ¡tÄ™" msgid "Fields to export" msgstr "Laukai eksportavimui" msgid "All" msgstr "Viskas" msgid "Invert" msgstr "Invertuoti" msgid "Select fields" msgstr "Parinkti laukus" msgid "Select CSV file" msgstr "Parinkti CSV failÄ…" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (kableliu atskirtos vertÄ—s) failas (*.csv)" msgid "Please select file first." msgstr "PraÅ¡ome iÅ¡ pradžių pasirinkti failÄ…." msgid "Import type" msgstr "Importavimo tipas" msgid "File" msgstr "Failas" msgid "Input filename" msgstr "Ä®vesties failo pavadinimas" msgid "Import" msgstr "Importuoti" msgid "Nothing to import." msgstr "NÄ—ra ko importuoti." msgid "contact added" msgid_plural "contacts added" msgstr[0] "adresatas pridÄ—tas" msgstr[1] "adresatai pridÄ—ti" msgstr[2] "adresatų pridÄ—ta" msgid "of" msgstr "iÅ¡" msgid "Record" msgstr "Ä®raÅ¡as" msgid "Number fields per record" msgstr "Laukų skaiÄius įraÅ¡e" msgid "Use first record as header" msgstr "Naudoti pirmÄ… įrašą kaip antraÅ¡tÄ™" msgid "Field type" msgstr "Lauko tipas" msgid "Value" msgstr "ReikÅ¡mÄ—" msgid "No records found in selected file." msgstr "Parinktame faile įrašų nerasta." msgid "Cannot read file." msgstr "Neįmanoma perskaityti failo." msgid "Cannot open file." msgstr "Neįmanoma atverti failo." msgid "Selected contact will be removed." msgstr "Parinktas adresatas bus paÅ¡alintas." msgid "Select photo" msgstr "Parinkite nuotraukÄ…" msgid "Address" msgstr "Adresas" msgid "Postcode" msgstr "PaÅ¡to indeksas" msgid "City" msgstr "Miestas" msgid "State" msgstr "Valstija" msgid "Country" msgstr "ValstybÄ—" msgid "Add contact" msgstr "PridÄ—ti adresatÄ…" msgid "Personal" msgstr "Asmeninis" msgid "Phones" msgstr "Telefonai" msgid "Internet" msgstr "Internetas" msgid "Color of contact tags" msgstr "Adresato gairių spalva" msgid "Color of links" msgstr "Nuorodų spalva" msgid "Font size" msgstr "Å rifto dydis" msgid "Name font size" msgstr "Vardo Å¡rifto dydis" msgid "Item font size" msgstr "Elemento Å¡rifto dydis" msgid "Photo size" msgstr "Nuotraukos dydis" msgid "Small" msgstr "Mažas" msgid "Medium" msgstr "Vidutinis" msgid "Large" msgstr "Didelis" msgid "Hide group column" msgstr "SlÄ—pti grupÄ—s stulpelį" msgid "Maps provider" msgstr "ŽemÄ—lapių tiekÄ—jas" msgid "Miscellaneous" msgstr "Ä®vairÅ«s" msgid "Groups" msgstr "GrupÄ—s" msgid "Visible columns in birthday browser" msgstr "Matomi stulpeliai gimatadienių narÅ¡yklÄ—je" msgid "Show calendar" msgstr "Rodyti kalendorių" msgid "Show tasks" msgstr "Rodyti užduotis" msgid "Show contacts" msgstr "Rodyti adresatus" msgid "Show notes" msgstr "Rodyti pastabas" msgid "Show options" msgstr "Rodyti parinktis" msgid "Show small calendar window" msgstr "Rodyti mažą kalendoriaus langelį" msgid "Check for events since last run" msgstr "Tikrinti įvykius nuo paskutinio programos paleidimo" msgid "Number of days to check forward for events (default: 0)" msgstr "IÅ¡ankstinio įvykių tikrinimo dienų skaiÄius (numatytasis: 0)" msgid "Set absolute path for settings and data files" msgstr "Nustatyti absoliutų nustatymų ir duomenų failų keliÄ…" msgid "Match contacts with given string" msgstr "Sutapdinti kontaktus su duota eilute" msgid "handy personal organizer" msgstr "patogi asmeninių duomenų tvarkytuvÄ—" msgid "ERROR: Cannot create config files" msgstr "KLAIDA: Nepavyko sukurti konfigÅ«racijos failų" msgid "Another copy of OSMO is already running." msgstr "Viena OSMO kopija jau vykdoma." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Naudojant dvi ar daugiau OSMO kopijų vienu metu gali bÅ«ti prarasti duomenys." msgid "Do you really want to continue?" msgstr "Ar tikrai norite tÄ™sti?" msgid "Warning" msgstr "Ä®spÄ—jimas" msgid "The note has changed." msgstr "Pastaba pasikeitÄ—." msgid "Do you want to save it?" msgstr "Norite jÄ… iÅ¡saugoti?" msgid "No URLs found in the selection..." msgstr "ŽymÄ—jime nerasta URL..." msgid "URLs will be opened in the default browser." msgstr "URL bus atveriami numatytoje narÅ¡yklÄ—je." msgid "Do you want to continue?" msgstr "Ar norite tÄ™sti?" msgid "Question" msgstr "Klausimas" msgid "Words" msgstr "Žodžiai" msgid "Lines" msgstr "EilutÄ—s" msgid "Characters" msgstr "Simboliai" msgid "White characters" msgstr "Baltų simbolių" msgid "Bytes" msgstr "Baitų" msgid "Document" msgstr "Dokumentas" msgid "Selection" msgstr "Pasirinkimas" msgid "Created" msgstr "Sukurta" msgid "Modified" msgstr "Pertvarkyta" msgid "New note" msgstr "Nauja pastaba" msgid "Add note" msgstr "PridÄ—ti pastabÄ…" msgid "Edit note" msgstr "Taisyti pastabÄ…" msgid "Delete note" msgstr "PaÅ¡alinti pastabÄ…" msgid "Remove note" msgstr "PaÅ¡alinti pastabÄ…" msgid "Find" msgstr "Rasti" msgid "Clear attributes" msgstr "IÅ¡valyti požymius" msgid "Open URL links" msgstr "Atverti URL nuorodas" msgid "Save note" msgstr "IÅ¡saugoti pastabÄ…" msgid "Insert current date and time" msgstr "Ä®terpti dabartinÄ™ datÄ… ir laikÄ…" msgid "Insert separator" msgstr "Ä®terpti skirtukÄ…" msgid "Statistics" msgstr "Statistika" msgid "Close editor" msgstr "Užverti raÅ¡yklÄ™" msgid "Toggle spell checker" msgstr "Perjungti raÅ¡ybos tikrinimÄ…" msgid "Category" msgstr "Kategorija" msgid "Note name" msgstr "Pastabos pavadinimas" msgid "Last changes" msgstr "Paskutiniai taisiniai" msgid "Read-only" msgstr "Tik skaitymui" msgid "Line" msgstr "EilutÄ—" msgid "Column" msgstr "Stulpelis" msgid "case sensitive" msgstr "skirti raidžių lygį" msgid "Close find entry" msgstr "Užverti įraÅ¡o paieÅ¡kÄ…" msgid "Edit entry" msgstr "Taisyti įrašą" msgid "Remember cursor position" msgstr "Ä®siminti žymeklio vietÄ…" msgid "Selected note will be removed." msgstr "Parinktas įraÅ¡as bus paÅ¡alintas." msgid "No further data recovery will be possible." msgstr "Tolesnis duomenų atkÅ«rimas bus neįmanomas." msgid "Plain" msgstr "Grynas" msgid "Encrypted" msgstr "Å ifruotas" msgid "Note type" msgstr "Pastabos tipas" msgid "Cannot open the note." msgstr "Nepavyko atverti pastabos." msgid "encryption support is disabled" msgstr "užšifravimo palaikymas iÅ¡jungtas" msgid "Authorization" msgstr "Prieigos teisÄ—" msgid "Algorithm" msgstr "Algoritmas" msgid "Hashing" msgstr "MaiÅ¡a" msgid "Compression" msgstr "Glaudinimas" msgid "Ratio" msgstr "Santykis" msgid "Fast" msgstr "Greitas" msgid "Good" msgstr "Geras" msgid "Best" msgstr "Geriausias" msgid "Remember the last selected category" msgstr "Ä®siminti paskutinÄ™ pasirinktÄ… kategorijÄ…" msgid "Use system format for date and time" msgstr "Datai ir laikui naudoti sistemos formatÄ…" msgid "Encryption" msgstr "Užšifravimas" msgid "Visible columns" msgstr "Matomi stulpeliai" msgid "Categories" msgstr "Kategorijos" msgid "Notes options" msgstr "Pastabų parinktys" msgid "Osmo has to be restarted to take effect." msgstr "Kad įsigaliotų pakeitimai, Osmo turi bÅ«ti paleista iÅ¡ naujo." msgid "Layout" msgstr "Lygiavimas" msgid "Vertical" msgstr "Vertikalus" msgid "Horizontal" msgstr "Horizontalus" msgid "Tabs position" msgstr "Kortelių padÄ—tis" msgid "Left" msgstr "KairÄ—je" msgid "Right" msgstr "DeÅ¡inÄ—je" msgid "Top" msgstr "VirÅ¡uje" msgid "Bottom" msgstr "ApaÄioje" msgid "Use default stock icons" msgstr "Naudoti numatytasias įprastines piktogramas" msgid "Disable underline in links" msgstr "IÅ¡jungti nuorodų pabraukimÄ…" msgid "Draw rows in alternating colors" msgstr "PieÅ¡ti eilutes kintamomis spalvomis" msgid "Show exit button in toolbar" msgstr "Rodyti išėjimo mygtukÄ… įrankių juostoje" msgid "At least one module must be visible." msgstr "Turi bÅ«ti matomas bent vienas modulis." msgid "Override locale settings" msgstr "Nustelbti lokalÄ—s nustatymus" msgid "Date format" msgstr "Datos formatas" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "MM-DD-YYYY" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "Laiko formatas" msgid "hours" msgstr "valandos" msgid "Spell checker language" msgstr "RaÅ¡ybos tikrinimo kalba" msgid "Enable tooltips" msgstr "Ä®jungti paaiÅ¡kinimus" msgid "Remember last selected page" msgstr "Prisiminti paskutinį parinktÄ… puslapį" msgid "Save data after every modification" msgstr "IÅ¡saugoti duomenis po kiekvieno pertvarkymo" msgid "Web browser" msgstr "Interneto narÅ¡yklÄ—" msgid "E-mail client" msgstr "El. paÅ¡to programa" msgid "Sound player" msgstr "Garso grotuvas" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s Å¡ablonas bus pakeistas adresu žiniatinklyje" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s Å¡ablonas bus pakeistas el. paÅ¡to adresu" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Å ablonas %s bus pakeistas garso failo pavadinimu" msgid "Enable system tray" msgstr "Ä®jungti sistemos juostelÄ™" msgid "Start minimised" msgstr "PradÄ—ti suskleistame lange" msgid "Blink on events" msgstr "MirksÄ—ti esant įvykiams" msgid "Ignore day note events" msgstr "Ignoruoti dienos pastabos įvykius" msgid "Hide" msgstr "SlÄ—pti" msgid "Helpers" msgstr "Pagalbininkai" msgid "System tray" msgstr "Sistemos juostelÄ—" msgid "Edit" msgstr "Taisyti" msgid "Go Down" msgstr "Eiti Žemyn" msgid "Select date" msgstr "Parinkti datÄ…" msgid "Select font" msgstr "Parinkti Å¡riftÄ…" msgid "Open URL" msgstr "Atverti URL" msgid "Calculator" msgstr "SkaiÄiuoklis" msgid "Edit day note" msgstr "Taisyti dienos pastabÄ…" msgid "Save" msgstr "IÅ¡saugoti" msgid "Display full-year calendar" msgstr "Parodyti visų metų kalendorių" msgid "Help" msgstr "Pagalba" msgid "Invalid item" msgstr "Neteisingas elementas" msgid "Valid item" msgstr "Teisingas elementas" msgid "Edit task" msgstr "Keisti užduotį" msgid "Remove task" msgstr "PaÅ¡alinti užduotį" msgid "Import tasks" msgstr "Importuoti užduotis" msgid "Export tasks" msgstr "Eksportuoti užduotis" msgid "Change to previous date" msgstr "Pakeisti į ankstesnÄ™ datÄ…" msgid "Change to next date" msgstr "Pakeisti į kitÄ… datÄ…" msgid "Print" msgstr "Spausdinti" msgid "Normal" msgstr "Normalus" msgid "Recurrent" msgstr "Pasikartojantis" msgid "Started" msgstr "Pradžia" msgid "Finished" msgstr "Užbaigtas" msgid "All items" msgstr "Visi elementai" msgid "New task" msgstr "Nauja užduotis" msgid "Change due date to previous date" msgstr "Pakeisti pabaigos datÄ… į ankstesnÄ™ datÄ…" msgid "Change due date to next date" msgstr "Pakeisti pabaigos datÄ… į vÄ—lesnÄ™ datÄ…" msgid "Print visible tasks list" msgstr "Spausdinti matomų pastabų sÄ…rašą" msgid "Due date" msgstr "Pabaigos data" msgid "Priority" msgstr "Svarbumas" msgid "Task details" msgstr "IÅ¡sami informacija apie užduotį" msgid "Close description panel" msgstr "Užverti apraÅ¡o skydelį" msgid "No tasks with defined date found." msgstr "UžduoÄių su apibrėžta data nerasta." msgid "Save tasks" msgstr "IÅ¡saugoti užduotis" msgid "tasks exported" msgstr "užduotys eksportuotos" msgid "Please select at least one day when recurrency is enabled." msgstr "PraÅ¡ome pasirinkti bent vienÄ… dienÄ…, kuomet pasikartojimas yra įjungtas." msgid "Set time" msgstr "Nustatyti laikÄ…" msgid "Tomorrow" msgstr "Rytojus" msgid "Selected task will be removed." msgstr "Parinkta užduotis bus paÅ¡alinta." msgid "Basic" msgstr "Pagrindinis" msgid "Select date and time" msgstr "Pasirinkite datÄ… ir laikÄ…" msgid "Low" msgstr "Žemas" msgid "High" msgstr "AukÅ¡tas" msgid "Enable sound notification" msgstr "Ä®jungti garso praneÅ¡imÄ…" msgid "Enable notification dialog" msgstr "Ä®jungti praneÅ¡imų dialogÄ…" msgid "Advanced" msgstr "IÅ¡plÄ—stinis" msgid "Alarm warning" msgstr "Signalinis įspÄ—jimas" msgid "Postpone time" msgstr "AtidÄ—jimo laikas" msgid "Alarm command" msgstr "Signalo komanda" msgid "Recurrent task" msgstr "Pasikartojanti užduotis" msgid "Enable" msgstr "Ä®jungti" msgid "Start" msgstr "Pradžia" msgid "End" msgstr "Pabaiga" msgid "Interval" msgstr "Intervalas" msgid "Time period" msgstr "Laiko periodas" msgid "Date period" msgstr "Datos periodas" msgid "Repeat" msgstr "Kartoti" msgid "Repeat in the following days" msgstr "Kartoti Å¡iomis dienomis" msgid "Ignore alarm when task expired offline" msgstr "Ignoruoti signalÄ…, kai užduotis pasibaigÄ—, esant atsijungus" msgid "Select a font..." msgstr "Parinkite Å¡riftÄ…..." msgid "Color of items that are due today" msgstr "Å iandien pasibaigianÄių elementų spalva" msgid "Color of items that are due in the next 7 days" msgstr "Elementų pasibaigsianÄių už savaitÄ—s spalva" msgid "Color of items that are past due" msgstr "Pasibaigusių elementų spalva" msgid "Task info font" msgstr "Užduoties informacijos Å¡riftas" msgid "Show in bold tasks with high priority" msgstr "Svarbias užduotis rodyti pusjuodžiu Å¡riftu" msgid "Hide completed tasks" msgstr "PaslÄ—pti įvykdytas užduotis" msgid "Delete completed tasks without confirmation" msgstr "PaÅ¡alinti įvykdytas užduotis be patvirtinimo" msgid "Add new task when double clicked on tasks list" msgstr "PridÄ—ti naujÄ… užduotį, kai ant užduoÄių sÄ…raÅ¡o du kartus spustelÄ—jama" msgid "minutes" msgstr "minuÄių" msgid "0 for disable" msgstr "0, kad iÅ¡jungti" msgid "Repeat sound alarm" msgstr "Kartoti garsinį signalÄ…" msgid "times" msgstr "kartų" msgid "Global notification command" msgstr "Globalaus praneÅ¡imo komanda" msgid "Tasks options" msgstr "Užduoties parinktys" msgid "Reminder options" msgstr "Priminimo parinktys" msgid "Tasks list" msgstr "UžduoÄių sÄ…raÅ¡as" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr." msgid "New Moon" msgstr "Jaunatis" msgid "Waxing Crescent Moon" msgstr "MÄ—nulis pilnÄ—ja (1 fazÄ—)" msgid "Quarter Moon" msgstr "PrieÅ¡pilnis" msgid "Waxing Gibbous Moon" msgstr "MÄ—nulis pilnÄ—ja (2 fazÄ—)" msgid "Full Moon" msgstr "Pilnatis" msgid "Waning Gibbous Moon" msgstr "MÄ—nulis dyla (3 fazÄ—)" msgid "Last Quarter Moon" msgstr "DelÄia" msgid "Waning Crescent Moon" msgstr "MÄ—nulis dyla (4 fazÄ—)" msgid "Error" msgstr "Klaida" msgid "Selected file exist! Overwrite?" msgstr "Parinktas failas jau yra! Pakeisti?" osmo-0.2.14/po/pt_BR.po000664 001750 001750 00000112704 12561325524 014523 0ustar00pasppasp000000 000000 # Portuguese (Brazil) translation of Osmo. # This file is distributed under the same license as the Osmo package. # Alexandro Casanova , 2012-2013. # msgid "" msgstr "" "Project-Id-Version: Osmo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2015-02-14 01:17+0000\n" "Last-Translator: Alexandro Casanova \n" "Language-Team: Portuguese (Brazil)\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" msgid "About" msgstr "Créditos" msgid "Close" msgstr "Fechar" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "mudar para aba anterior" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDown" msgid "switch to next tab" msgstr "mudar para próxima aba" msgid "switch to selected page" msgstr "mudar para a página selecionada" msgid "show options window" msgstr "mostrar janela de opções" msgid "show about window" msgstr "mostrar janela de créditos" msgid "toggle fullscreen mode" msgstr "habilitar/desabilitar o modo de tela cheia" msgid "PageUp/PageDn" msgstr "PageUp/PageDown" msgid "switch page in options and about tab" msgstr "mudar página em opções e aba de créditos" msgid "exit" msgstr "sair" msgid "Space" msgstr "Espaço" msgid "select current date" msgstr "selecionar data atual" msgid "Ctrl+Space" msgstr "Ctrl+Espaço" msgid "toggle personal data visibility" msgstr "Habilitar/Desabilitar visibilidade de dados pessoais" msgid "Arrows" msgstr "Setas" msgid "change day" msgstr "alterar dia" msgid "Ctrl+Up/Down" msgstr "Ctrl+Cima/Baixo" msgid "scroll the contents in the day info panel" msgstr "rolar o conteúdo no painel de informações do dia" msgid "change month" msgstr "mudar mês" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "mudar ano" msgid "toggle calendars for the previous and next month" msgstr "habilitar/desabilitar Mês anterior e próximo" msgid "day notes browser" msgstr "navegador de notas do dia" msgid "assign background color to day note" msgstr "atribuir cor de fundo a nota diária" msgid "date calculator" msgstr "calculador de datas" msgid "show full-year calendar" msgstr "mostrar calendário do ano inteiro" msgid "jump to date" msgstr "ir para data" msgid "Delete" msgstr "Delete" msgid "remove day note" msgstr "remover nota do dia" msgid "Alt+Arrows" msgstr "Alt+Setas" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "fechar editor" msgid "toggle bold" msgstr "habilitar/desabilitar negrito" msgid "toggle italic" msgstr "habilitar/desabilitar itálico" msgid "toggle underline" msgstr "habilitar/desabilitar sublinhado" msgid "toggle strikethrough" msgstr "habilitar/desabilitar tachado" msgid "toggle highlight" msgstr "habilitar/desabilitar destaque" msgid "Arrows Up/Down" msgstr "Setas Cima/Baixo" msgid "toggle alternative view" msgstr "habilitar/desabilitar visão alternativa" msgid "year info" msgstr "informações do ano" msgid "set current year" msgstr "definir ano atual" msgid "close full-year calendar" msgstr "fechar calendário do ano inteiro" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "adicionar tarefa" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "editar tarefa" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "remover tarefa" msgid "toggle hidden tasks" msgstr "habilitar/desabilitar tarefes ocultas" msgid "activate search field" msgstr "ativar campo de pesquisa" msgid "Left, Right" msgstr "Esquerda, Direita" msgid "change category filter" msgstr "alterar filtro de categoria" msgid "close task info panel" msgstr "fechar tarefa do painel de informação" msgid "Insert" msgstr "Inserir" msgid "add contact" msgstr "adicionar contato" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "editar contato" msgid "remove contact" msgstr "remover contato" msgid "change search mode" msgstr "mudar modo de busca" msgid "close contact details panel" msgstr "fechar painel de detalhes do contato" msgid "Enter" msgstr "Enter" msgid "open note" msgstr "abrir nota" msgid "add note" msgstr "adicionar nota" msgid "remove note" msgstr "remover nota" msgid "edit note name and category" msgstr "editar nome da nota e categórica" msgid "close note editor" msgstr "fechar editor de notas" msgid "save note" msgstr "salvar nota" msgid "find text" msgstr "localizar texto" msgid "clear selection attributes" msgstr "limpar atributos da seleção" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO foi projetado tendo em mente a conveniência do usuário, são vários os " "atalhos do teclado. Aqui está a lista completa:" msgid "General" msgstr "Geral" msgid "Calendar" msgstr "Calendário" msgid "Note editor" msgstr "Editor de notas" msgid "Full-year calendar" msgstr "Calendário do ano inteiro" msgid "Tasks" msgstr "Tarefas" msgid "Contacts" msgstr "Contatos" msgid "Notes" msgstr "Notas" msgid "Selector" msgstr "Seletor" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Um conveniente organizador pessoal" msgid "compiled on" msgstr "compilado em" msgid "Programming" msgstr "Desenvolvedores" msgid "Graphics" msgstr "Gráficos" msgid "Contributors" msgstr "Contribuintes" msgid "Translators" msgstr "Tradutores" msgid "Mailing lists" msgstr "Lista de E-mails" msgid "Bug tracker" msgstr "Lista de Bugs" msgid "Feature requests" msgstr "Solicitação de Recurso" msgid "Available modules" msgstr "Módulos disponíveis" msgid "Compiled-in features" msgstr "Funcionalidades compiladas" msgid "iCalendar support" msgstr "Suporte ao iCalendar" msgid "Encrypted notes support" msgstr "Suporte a notas criptografadas" msgid "Backup support" msgstr "Suporte a Backup" msgid "Printing support" msgstr "Suporte a Impressão" msgid "Spell checker support" msgstr "Suporte ao verificador ortográfico" msgid "version" msgstr "versão" msgid "SVN revision" msgstr "Revisão do SVN" msgid "Key shortcuts" msgstr "Atalhos do teclado" msgid "License" msgstr "Licença" msgid "Save backup" msgstr "Salvar backup" msgid "Password protection" msgstr "Proteção por senha" msgid "Enter password" msgstr "Digite a senha" msgid "Re-enter password" msgstr "Repita a senha" msgid "Please enter the password" msgstr "Favor digitar a senha" msgid "Passwords do not match!" msgstr "As senhas não coincidem!" msgid "Cannot create backup!" msgstr "Não foi possível criar backup!" msgid "Backup file saved successfully!" msgstr "Arquivo de backup salvo com sucesso!" msgid "Open backup file" msgstr "Abrir arquivo de backup" msgid "Osmo backup files (*.bck)" msgstr "Arquivo de backup Osmo (.*bck)" msgid "This is not Osmo backup file" msgstr "Este não é um arquivo de backup Osmo" msgid "Incorrect password!" msgstr "Senha incorreta!" msgid "All your data will be replaced with backup file content." msgstr "Todos os dados serão substitutos com o conteúdo do arquivo de backup." msgid "Are you sure?" msgstr "Você tem certeza?" msgid "Osmo has to be restarted now..." msgstr "Osmo será reiniciado agora..." msgid "was born" msgstr "nasceu" msgid "year old" msgid_plural "years old" msgstr[0] "ano" msgstr[1] "anos" msgid "Current time" msgstr "Horário atual" msgid "Day number" msgstr "Número do dia" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "dia até o final do ano" msgstr[1] "dias até o final do ano" msgid "the last day of the year" msgstr "o último dia do ano" msgid "Today distance" msgstr "Distancia de hoje" msgid "Week number" msgstr "Número da semana" msgid "Marked days" msgstr "Dias marcados" msgid "Weekend days" msgstr "Dia de final de semana" msgid "Moon phase" msgstr "Fases da lua" msgid "Zodiac sign" msgstr "Signo do zodíaco" msgid "Day notes" msgstr "Notas do dia" msgid "Day tasks" msgstr "Tarefas do dia" msgid "Birthday" msgstr "Aniversário" msgid "Day category" msgstr "Categoria Dia" msgid "Selected day note will be removed." msgstr "Nota do dia selecionada será removida." msgid "Continue?" msgstr "Continuar?" msgid "Previous year" msgstr "Ano anterior" msgid "Previous month" msgstr "Mês anterior" msgid "Previous day" msgstr "Dia anterior" msgid "Today" msgstr "Hoje" msgid "Next day" msgstr "Dia seguinte" msgid "Next month" msgstr "Próximo mês" msgid "Next year" msgstr "Próximo ano" msgid "Jump to date" msgstr "Ir para data" msgid "Print calendar" msgstr "Imprimir calendário" msgid "Date calculator" msgstr "Calcular data" msgid "Backup data" msgstr "Fazer Backup" msgid "Restore data" msgstr "Restaurar dados" msgid "Preferences" msgstr "Preferências" msgid "Quit" msgstr "Sair" msgid "Toggle day note panel" msgstr "Habilitar/Desabilitar painel de nota diária" msgid "Add task" msgstr "Adicionar tarefa" msgid "Select day color" msgstr "Selecione a cor do dia" msgid "Browse notes" msgstr "Procurar notas" msgid "Browse iCal events" msgstr "Procurar eventos iCal" msgid "Export to iCal file" msgstr "Exportar para arquivo iCal" msgid "Previous and next month" msgstr "Mês anterior e próximo" msgid "Close note panel" msgstr "Fechar painel de notas" msgid "Highlight" msgstr "Realçar" msgid "Strikethrough" msgstr "Riscar" msgid "Underline" msgstr "Sublinhado" msgid "Italic" msgstr "Itálico" msgid "Bold" msgstr "Negrito" msgid "Insert timeline" msgstr "Inserir linha do tempo" msgid "Clear text" msgstr "Limpar texto" msgid "Info" msgstr "Informações" msgid "Select color" msgstr "Selecione a cor" msgid "None" msgstr "Nenhum" msgid "Cancel" msgstr "Cancelar" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "ano de idade" msgstr[1] "anos de idade" msgid "month" msgid_plural "months" msgstr[0] "mês" msgstr[1] "meses" msgid "day" msgid_plural "days" msgstr[0] "dia" msgstr[1] "dias" msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" msgid "or" msgstr "ou" msgid "rounded down" msgstr "arredondado para baixo" msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" msgid "working day" msgid_plural "working days" msgstr[0] "dia útil" msgstr[1] "dias úteis" msgid "time is ignored" msgstr "hora é ignorada" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "dia de final de semana" msgstr[1] "dias de fim-de-semana" msgid "This calculator only supports dates after year 1." msgstr "Esta calculadora suporta apenas datas após um ano." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "dia de final de semana ignorado" msgstr[1] "dias de fim-de-semana ignorado" msgid "Year" msgstr "Ano" msgid "Month" msgstr "Mês" msgid "Day" msgstr "Dia" msgid "Current date" msgstr "Data de hoje" msgid "Set current date" msgstr "Definir dia de hoje" msgid "Hour" msgstr "Hora" msgid "Minute" msgstr "Minuto" msgid "Second" msgstr "Segundo" msgid "Set current time" msgstr "Definir a hora atual" msgid "Reset time" msgstr "Resetar hora" msgid "First date and time" msgstr "Primeira data e hora" msgid "Second date and time" msgstr "Segunda data e hora" msgid "Alternative time units" msgstr "Unidades de tempo alternativas" msgid "Result" msgstr "Resultado" msgid "Duration between two dates" msgstr "Duração entre duas datas" msgid "Operation" msgstr "Operação" msgid "add" msgstr "adicionar" msgid "subtract" msgstr "subtrair" msgid "Date and time to add or subtract from" msgstr "Data e hora para adicionar ou subtrair" msgid "Years" msgstr "Anos" msgid "Months" msgstr "Meses" msgid "Days" msgstr "Dias" msgid "Weeks" msgstr "Semanas" msgid "Hours" msgstr "Horas" msgid "Minutes" msgstr "Minutos" msgid "Seconds" msgstr "Segundos" msgid "Ignore weekend days" msgstr "Ignorar dias de final de semana" msgid "Reset fields" msgstr "Reiniciar campos" msgid "Time to add or subtract" msgstr "Tempo para adicionar ou subtrair" msgid "Jump to" msgstr "Ir para" msgid "Add to or subtract from a date" msgstr "Adicionar ou subtrair de uma data" msgid "Leap year" msgstr "Ano bissexto" msgid "Yes" msgstr "Sim" msgid "No" msgstr "Num" msgid "Chinese year animal" msgstr "Ano zodíaco chinês" msgid "Number of days" msgstr "Número de dias" msgid "Number of weeks" msgstr "Número de semanas" msgid "Number of weekend days" msgstr "Número de dias de fim-de-semana" msgid "Year info" msgstr "Informação do ano" msgid "Current year" msgstr "Ano atual" msgid "Alternative view" msgstr "Visão alternativa" msgid "event" msgid_plural "events" msgstr[0] "evento" msgstr[1] "eventos" msgid "No valid calendars defined" msgstr "Nenhum calendário válido definido." msgid "iCalendar events" msgstr "Eventos iCalendar" msgid "Date" msgstr "Data" msgid "Time" msgstr "Hora" msgid "Summary" msgstr "Resumo" msgid "Select output file" msgstr "Selecione o arquivo de saída" msgid "The list will be cleared and all entries will be lost." msgstr "A lista será apagada e todas as entradas serão perdidas." msgid "Done!" msgstr "Feito!" msgid "event exported" msgid_plural "events exported" msgstr[0] "evento exportado" msgstr[1] "eventos exportados" msgid "iCalendar export" msgstr "Exportar iCalendar" msgid "Day Selector" msgstr "Seletor Dia" msgid "Use date period" msgstr "Use período de data" msgid "Add" msgstr "Adicionar" msgid "Clear" msgstr "Limpar" msgid "Remove" msgstr "Remover" msgid "Output filename" msgstr "Arquivo de saída" msgid "Browse" msgstr "Navegar" msgid "Export" msgstr "Exportar" msgid "no entries" msgstr "sem entradas" msgid "entry" msgid_plural "entries" msgstr[0] "entrada" msgstr[1] "entradas" msgid "Calendar notes" msgstr "Notas do calendário" msgid "Search" msgstr "Pesquisar" msgid "Filter" msgstr "Filtro" msgid "Current month" msgstr "Mês atual" msgid "Selected month" msgstr "Mês selecionado" msgid "Selected year" msgstr "Ano selecionado" msgid "Selected month and year" msgstr "Mês e ano selecionado" msgid "All notes" msgstr "Todas as notas" msgid "Case sensitive" msgstr "Diferenciar maiúsculas de minusculas" msgid "Strikethrough past day notes" msgstr "Riscar notas do dia passado" msgid "Note" msgstr "Nota" msgid "Syntax" msgstr "Sintaxe" msgid "abbreviated weekday name" msgstr "dia da semana abreviado" msgid "full weekday name" msgstr "nome da semana completo" msgid "abbreviated month name" msgstr "nome do mês abreviado" msgid "full month name" msgstr "nome do mês completo" msgid "day of the month" msgstr "dia do mês" msgid "MM/DD/YY" msgstr "MM/DD/AA" msgid "day of the month without leading zeros" msgstr "dia do mês sem zeros à esquerda" msgid "year without century" msgstr "ano sem o século" msgid "year with century" msgstr "ano com o século" msgid "Date header format" msgstr "Formato do cabeçalho de data" msgid "Set default format" msgstr "Definir formato padrão" msgid "Date format syntax" msgstr "Formato de sintaxe da data" msgid "Day note marker" msgstr "Marcador de nota diária" msgid "Event marker" msgstr "Marcador de eventos" msgid "Circle" msgstr "Circulo" msgid "Ellipse" msgstr "Elipse" msgid "Wave" msgstr "Onda" msgid "Current day marker" msgstr "Marcador de dia atual" msgid "Arrow" msgstr "Seta" msgid "Free-hand circle" msgstr "Circulo a mão livre" msgid "Colors" msgstr "Cores" msgid "Header color" msgstr "Cor do cabeçalho" msgid "Weekend days color" msgstr "Cor dos dias de fim-de-semana" msgid "Cursor color" msgstr "Cor do cursor" msgid "Event marker color" msgstr "Cor do marcador de evento" msgid "Current day marker color" msgstr "Cor do marcador do dia atual" msgid "Birthday marker color" msgstr "Cor do marcador de aniversário" msgid "Date font" msgstr "Fonte da data" msgid "Calendar font" msgstr "Fonte do calendário" msgid "Note font" msgstr "Fonte da nota" msgid "Enable block cursor" msgstr "Habilitar bloqueio de cursor" msgid "Cursor thickness" msgstr "Espessura do Cursor" msgid "Thin" msgstr "Fino" msgid "Thick" msgstr "Espesso" msgid "Edit category" msgstr "Editar categoria" msgid "Color" msgstr "Cor" msgid "Name" msgstr "Nome" msgid "Select ICS file" msgstr "Selecionar arquivo ICS" msgid "All Files" msgstr "Todos os Arquivos" msgid "Calendar files (*.ics)" msgstr "Arquivos de calendário (*.ics)" msgid "Modify ICAL parameters" msgstr "Modificar parâmetros ICAL" msgid "Filename" msgstr "Nome do arquivo" msgid "Options" msgstr "Opções" msgid "Disabled" msgstr "Desabilitado" msgid "Valid" msgstr "Válido" msgid "Description" msgstr "Descrição" msgid "Full date" msgstr "Data completa" msgid "Mark" msgstr "Marcar" msgid "Week start on Monday" msgstr "Início da semana na segunda-feira" msgid "Show day names" msgstr "Mostrar nomes do dia" msgid "No month change" msgstr "Não mudar mês" msgid "Show week numbers" msgstr "Mostrar números da semana" msgid "Simple view in full-year calendar" msgstr "Visão simples em todo calendário do ano inteiro" msgid "Enable auxilary calendars" msgstr "Ativar calendários auxiliar" msgid "Ascending sorting in day notes browser" msgstr "Classificação ascendente em navegação de notas do dia" msgid "Enable spell checker in day notes" msgstr "Ativar verificador ortográfico em notas do dia" msgid "Show seconds" msgstr "Mostrar segundos" msgid "Appearance" msgstr "Aparência " msgid "Day categories" msgstr "Categorias do dia" msgid "iCalendar files" msgstr "Arquivos iCalendar" msgid "Show in day info panel" msgstr "Mostrar em painel informações do dia" msgid "Name day" msgstr "Nome do dia" msgid "Error printing" msgstr "Erro de impressão" msgid "Printing properties" msgstr "Propriedades de impressão" msgid "Month name" msgstr "Nome do mês" msgid "Day name" msgstr "Nome do dia" msgid "Events" msgstr "Eventos" msgid "Fonts" msgstr "Fontes" msgid "Birthdays" msgstr "Aniversários" msgid "Namedays" msgstr "Nome dos dias" msgid "Visible events" msgstr "Eventos visíveis" msgid "Padding" msgstr "Acolchoamento" msgid "Event maximum length" msgstr "Comprimento máximo do evento" msgid "Page orientation:" msgstr "Orientação da página:" msgid "Portrait" msgstr "Retrato" msgid "Landscape" msgstr "Paisagem" msgid "Timeline" msgstr "Linha do tempo" msgid "From (hour)" msgstr "De (horas)" msgid "Step (minutes)" msgstr "Progresso (minutos)" msgid "To (hour)" msgstr "Para (horas)" msgid "No date" msgstr "Sem data" msgid "Rat" msgstr "Rato" msgid "Ox" msgstr "Boi" msgid "Tiger" msgstr "Tigre" msgid "Hare" msgstr "Lebre" msgid "Dragon" msgstr "Dragão" msgid "Snake" msgstr "Cobra" msgid "Horse" msgstr "Cavalo" msgid "Sheep" msgstr "Ovelha" msgid "Monkey" msgstr "Macaco" msgid "Fowl" msgstr "Galinha" msgid "Dog" msgstr "Cachorro" msgid "Pig" msgstr "Porco" msgid "Unknown" msgstr "Desconhecido" msgid "Aquarius" msgstr "Aquário" msgid "Pisces" msgstr "Peixes" msgid "Aries" msgstr "Aries" msgid "Taurus" msgstr "Touro" msgid "Gemini" msgstr "Gêmeos" msgid "Cancer" msgstr "Câncer" msgid "Leo" msgstr "Leão" msgid "Virgo" msgstr "Virgem" msgid "Libra" msgstr "Libra" msgid "Scorpio" msgstr "Escorpião" msgid "Sagittarius" msgstr "Sagitário" msgid "Capricorn" msgstr "Capricórnio" msgid "Cannot perform selected operation." msgstr "Não foi possível executar a operação selecionada." msgid "Task has been modified or removed." msgstr "A tarefa foi modificada ou removida." msgid "Remind me later" msgstr "Lembrar mais tarde" msgid "Done" msgstr "Feito" msgid "postponed" msgstr "adiada" msgid "Show task" msgstr "Mostrar tarefa" msgid "Alarm warning!" msgstr "Aviso de alarme!" msgid "Day note" msgstr "Nota do dia" msgid "Type" msgstr "Tipo" msgid "Event" msgstr "Evento" msgid "Task" msgstr "Tarefa" msgid "Show Osmo" msgstr "Mostrar Osmo" msgid "No birthdays defined" msgstr "Nenhum aniversário definido" msgid "Birthdays list" msgstr "Lista de aniversários" msgid "Days to birthday" msgstr "Dias para o aniversário" msgid "Age" msgstr "Idade" msgid "Birthday date" msgstr "Data do aniversário" msgid "today" msgstr "hoje" msgid "Please select address" msgstr "Favor selecione o endereço" msgid "Information" msgstr "Informações" msgid "Work" msgstr "Trabalho" msgid "Home" msgstr "Casa" msgid "Group" msgstr "Grupo" msgid "First name" msgstr "Primeiro nome" msgid "Last name" msgstr "Sobrenome" msgid "Second name" msgstr "Segundo nome" msgid "Nickname" msgstr "Apelido/Nickname" msgid "Tags" msgstr "Tags" msgid "Name day date" msgstr "Data do dia" msgid "Home address" msgstr "Endereço residencial" msgid "Home postcode" msgstr "CEP residencial" msgid "Home city" msgstr "Cidade natal" msgid "Home state" msgstr "Estado natal" msgid "Home country" msgstr "País de origem" msgid "Organization" msgstr "Organização" msgid "Department" msgstr "Departamento" msgid "Work address" msgstr "Endereço do trabalho" msgid "Work postcode" msgstr "CEP do trabalho" msgid "Work city" msgstr "Cidade onde trabalha" msgid "Work state" msgstr "Estado de onde trabalha" msgid "Work country" msgstr "País de onde trabalha" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefone residencial" msgid "Home phone 2" msgstr "Telefone residencial 2" msgid "Home phone 3" msgstr "Telefone residencial 3" msgid "Home phone 4" msgstr "Telefone residencial 4" msgid "Work phone" msgstr "Telefone do trabalho" msgid "Work phone 2" msgstr "Telefone do trabalho 2" msgid "Work phone 3" msgstr "Telefone do trabalho 3" msgid "Work phone 4" msgstr "Telefone do trabalho 4" msgid "Cell phone" msgstr "Celular" msgid "Cell phone 2" msgstr "Celular 2" msgid "Cell phone 3" msgstr "Celular 3" msgid "Cell phone 4" msgstr "Celular 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "Endereço de bate-papo Telegram" msgid "IM Yahoo" msgstr "Endereço de bate-papo Viber" msgid "IM MSN" msgstr "Endereço de bate-papo MSN" msgid "IM ICQ" msgstr "Endereço de bate-papo ICQ" msgid "IM AOL" msgstr "Endereço de bate-papo WhatsApp" msgid "IM Jabber" msgstr "Endereço de bate-papo Jabber" msgid "IM Skype" msgstr "Endereço de bate-papo Skype" msgid "IM Tlen" msgstr "Endereço de bate-papo " msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Foto" msgid "Additional info" msgstr "Informações adicionais" msgid "New contact" msgstr "Novo contato" msgid "Remove contact" msgstr "Remover contato" msgid "Edit contact" msgstr "Editar contato" msgid "Show birthdays" msgstr "Mostrar aniversários" msgid "Show contact location on the map" msgstr "Ver localização do contato no mapa" msgid "Import contacts" msgstr "Importar contatos" msgid "Export contacts" msgstr "Exportar contato" msgid "First Name" msgstr "Primeiro Nome" msgid "Last Name" msgstr "Sobre Nome" msgid "All fields" msgstr "Todos os campos" msgid "Contact details" msgstr "Detalhes do contato" msgid "Close contact panel" msgstr "Fechar painel de contato" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "contato exportado" msgstr[1] "contatos exportados" msgid "Cannot create file." msgstr "Não foi possível criar o arquivo." msgid "Output format" msgstr "Formato de saída" msgid "Add header" msgstr "Adicionar cabeçalho" msgid "Fields to export" msgstr "Campos para exportar" msgid "All" msgstr "Todos" msgid "Invert" msgstr "Inverter" msgid "Select fields" msgstr "Selecione os campos" msgid "Select CSV file" msgstr "Selecione o arquivo CSV" msgid "CSV (comma-separated values) files (*.csv)" msgstr "Arquivos CSV (valores separados por vírgula) (*.csv)" msgid "Please select file first." msgstr "Favor selecione o primeiro arquivo." msgid "Import type" msgstr "Tipo de importação" msgid "File" msgstr "Arquivo" msgid "Input filename" msgstr "Arquivo de entrada" msgid "Import" msgstr "Importar" msgid "Nothing to import." msgstr "Nada a importar." msgid "contact added" msgid_plural "contacts added" msgstr[0] "contato adicionado" msgstr[1] "contatos adicionados" msgid "of" msgstr "de" msgid "Record" msgstr "Registro" msgid "Number fields per record" msgstr "Numero de campo por registro" msgid "Use first record as header" msgstr "Usar primeiro registro como cabeçalho" msgid "Field type" msgstr "Tipo de campo" msgid "Value" msgstr "Valor" msgid "No records found in selected file." msgstr "Nenhum registro encontrado no arquivo selecionado." msgid "Cannot read file." msgstr "Não foi possível ler arquivo." msgid "Cannot open file." msgstr "Não foi possível abrir o arquivo." msgid "Selected contact will be removed." msgstr "Contato selecionado foi removido." msgid "Select photo" msgstr "Selecionar foto" msgid "Address" msgstr "Endereço" msgid "Postcode" msgstr "CEP" msgid "City" msgstr "Cidade" msgid "State" msgstr "Estado" msgid "Country" msgstr "Pais" msgid "Add contact" msgstr "Adicionar contato" msgid "Personal" msgstr "Pessoal" msgid "Phones" msgstr "Telefones" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Cor de tags do contato" msgid "Color of links" msgstr "Cor dos links" msgid "Font size" msgstr "Tamanho da fonte" msgid "Name font size" msgstr "Tamanho do nome da fonte" msgid "Item font size" msgstr "Tamanho do item da fonte" msgid "Photo size" msgstr "Tamanho da foto" msgid "Small" msgstr "Pequeno" msgid "Medium" msgstr "Médio" msgid "Large" msgstr "Grande" msgid "Hide group column" msgstr "Ocultar grupo de colunas" msgid "Maps provider" msgstr "Provedor de mapas" msgid "Miscellaneous" msgstr "Diverso" msgid "Groups" msgstr "Grupos" msgid "Visible columns in birthday browser" msgstr "Colunas visíveis no navegador de aniversário" msgid "Show calendar" msgstr "Mostrar calendário" msgid "Show tasks" msgstr "Mostrar tarefas" msgid "Show contacts" msgstr "Mostrar contatos" msgid "Show notes" msgstr "Mostrar notas" msgid "Show options" msgstr "Mostrar opções" msgid "Show small calendar window" msgstr "Mostrar pequena janela de calendário" msgid "Check for events since last run" msgstr "Checar por eventos desde a ultima execução" msgid "Number of days to check forward for events (default: 0)" msgstr "Número de dias a frente para checar por eventos (padrão: 0)" msgid "Set absolute path for settings and data files" msgstr "Definir diretório absoluto para configurações e arquivos de dados." msgid "Match contacts with given string" msgstr "Combinar contatos com determinada string" msgid "handy personal organizer" msgstr "organizador pessoal à mão" msgid "ERROR: Cannot create config files" msgstr "ERRO: Não foi possível criar arquivos de configuração" msgid "Another copy of OSMO is already running." msgstr "Outra copia do OSMO já está em execução." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Usar simultaneamente duas ou mais instancias do OSMO poderão ser uma das " "causas para a perda de dados." msgid "Do you really want to continue?" msgstr "Você realmente deseja continuar?" msgid "Warning" msgstr "Aviso" msgid "The note has changed." msgstr "A nota foi modificada" msgid "Do you want to save it?" msgstr "Você realmente deseja salvá-la?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Nenhum registro encontrado no arquivo selecionado." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Você realmente deseja continuar?" msgid "Question" msgstr "Pergunta" msgid "Words" msgstr "Palavras" msgid "Lines" msgstr "Linhas" msgid "Characters" msgstr "Carácteres" msgid "White characters" msgstr "Carácteres brancos" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Documento" msgid "Selection" msgstr "Seleção" msgid "Created" msgstr "Criado em" msgid "Modified" msgstr "Modificado em" msgid "New note" msgstr "Nova nota" msgid "Add note" msgstr "Adicionar nota" msgid "Edit note" msgstr "Editar nota" msgid "Delete note" msgstr "Deletar nota" msgid "Remove note" msgstr "Remover nota" msgid "Find" msgstr "Encontrar" msgid "Clear attributes" msgstr "Limpar atributos" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Salvar nota" msgid "Insert current date and time" msgstr "Inserir data e hora atual" msgid "Insert separator" msgstr "Inserir separador" msgid "Statistics" msgstr "Estatistias" msgid "Close editor" msgstr "Fechar editor" msgid "Toggle spell checker" msgstr "Habilitar/Desabilitar corretor ortográfico" msgid "Category" msgstr "Categoria" msgid "Note name" msgstr "Nome da nota" msgid "Last changes" msgstr "Ultimas modificações" msgid "Read-only" msgstr "Somente leitura" msgid "Line" msgstr "Linha" msgid "Column" msgstr "Coluna" msgid "case sensitive" msgstr "diferenciar maiúsculas de minusculas" msgid "Close find entry" msgstr "Fechar entrada da pesquisa" msgid "Edit entry" msgstr "Editar entrada" msgid "Remember cursor position" msgstr "Lembrar posição do cursor" msgid "Selected note will be removed." msgstr "Nota selecionada será removida." msgid "No further data recovery will be possible." msgstr "Nenhuma recuperação de dados será possivel." msgid "Plain" msgstr "Puro" msgid "Encrypted" msgstr "Criptografado" msgid "Note type" msgstr "Tipo de nota" msgid "Cannot open the note." msgstr "Não foi possível abrir nota." msgid "encryption support is disabled" msgstr "suporte a criptografia está desativado" msgid "Authorization" msgstr "Autorização" msgid "Algorithm" msgstr "Algoritmo " msgid "Hashing" msgstr "Tipo de criptografia" msgid "Compression" msgstr "Compressão" msgid "Ratio" msgstr "Relação" msgid "Fast" msgstr "Rápido" msgid "Good" msgstr "Bom" msgid "Best" msgstr "Ótimo" msgid "Remember the last selected category" msgstr "Lembrar da última categoria selecionada" msgid "Use system format for date and time" msgstr "Use formato do sistema para data e hora" msgid "Encryption" msgstr "Criptografia" msgid "Visible columns" msgstr "Colunas visíveis" msgid "Categories" msgstr "Categorias" msgid "Notes options" msgstr "Opções de notas" msgid "Osmo has to be restarted to take effect." msgstr "Osmo precisa ser reiniciado para obter efeito." msgid "Layout" msgstr "Layout" msgid "Vertical" msgstr "Vertical" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Posição das abas" msgid "Left" msgstr "Esquerda" msgid "Right" msgstr "Direita" msgid "Top" msgstr "Cima" msgid "Bottom" msgstr "Baixo" msgid "Use default stock icons" msgstr "Usar estoques de ícones padrão" msgid "Disable underline in links" msgstr "Desativar sublinhado em links" msgid "Draw rows in alternating colors" msgstr "Desenhar linhas em cores alternadas" msgid "Show exit button in toolbar" msgstr "Mostrar botão sair na barra de ferramentas" msgid "At least one module must be visible." msgstr "Pelo menos um modulo deve ser visível." msgid "Override locale settings" msgstr "Substituir as configurações locais" msgid "Date format" msgstr "Formato de data" msgid "DD-MM-YYYY" msgstr "DD-MM-AAAA" msgid "MM-DD-YYYY" msgstr "MM-DD-AAAA" msgid "YYYY-MM-DD" msgstr "AAAA-MM-DD" msgid "YYYY-DD-MM" msgstr "AAAA-DD-MM" msgid "Time format" msgstr "Formato de hora" msgid "hours" msgstr "horas" msgid "Spell checker language" msgstr "Idioma do corretor ortográfico" msgid "Enable tooltips" msgstr "Habilitar dicas" msgid "Remember last selected page" msgstr "Lembrar da última página selecionada" msgid "Save data after every modification" msgstr "Salvar os dados depois de cada modificação" msgid "Web browser" msgstr "Navegador" msgid "E-mail client" msgstr "Cliente de E-mail" msgid "Sound player" msgstr "Reprodutor de som" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "O %s padrão será substituído como endereço web" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "O %s padrão será substituído como endereço de e-mail" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "O %s será substituído como nome do arquivo de som" msgid "Enable system tray" msgstr "Ativar bandeja do sistema" msgid "Start minimised" msgstr "Iniciar minimizado" msgid "Blink on events" msgstr "Piscar em eventos" msgid "Ignore day note events" msgstr "Ignorar eventos de nota do dia" msgid "Hide" msgstr "Ocultar" msgid "Helpers" msgstr "Ajudantes" msgid "System tray" msgstr "Bandeja do sistema" msgid "Edit" msgstr "Editar" msgid "Go Down" msgstr "Para baixo" msgid "Select date" msgstr "Selecione a data" msgid "Select font" msgstr "Selecione a fonte" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Calculadora" msgid "Edit day note" msgstr "Editar nota do dia" msgid "Save" msgstr "Salvar" msgid "Display full-year calendar" msgstr "Mostrar calendário do ano inteiro" msgid "Help" msgstr "Ajuda" msgid "Invalid item" msgstr "Item inválido" msgid "Valid item" msgstr "Item válido" msgid "Edit task" msgstr "Editar tarefa" msgid "Remove task" msgstr "Remover tarefa" msgid "Import tasks" msgstr "Importar tarefas" msgid "Export tasks" msgstr "Exportar tarefas" msgid "Change to previous date" msgstr "Mudar para data anterior" msgid "Change to next date" msgstr "Mudar para a próxima data" msgid "Print" msgstr "Imprimir" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Recorrente" msgid "Started" msgstr "Começou" msgid "Finished" msgstr "Finalizado" msgid "All items" msgstr "Todos os itens" msgid "New task" msgstr "Nova tarefa" msgid "Change due date to previous date" msgstr "Alterar data de vencimento até a data anterior" msgid "Change due date to next date" msgstr "Alterar data de vencimento para próxima data" msgid "Print visible tasks list" msgstr "Imprimir lista de tarefas visíveis" msgid "Due date" msgstr "Data de vencimento" msgid "Priority" msgstr "Prioridade" msgid "Task details" msgstr "Detalhes da tarefa" msgid "Close description panel" msgstr "Fechar painel de descrição" msgid "No tasks with defined date found." msgstr "Não há tarefas com data definida encontrada." msgid "Save tasks" msgstr "Salvar tarefas" msgid "tasks exported" msgstr "tarefas exportadas" msgid "Please select at least one day when recurrency is enabled." msgstr "Favor selecionar pelo menos um dia quando a recorrência é habilitada." msgid "Set time" msgstr "Definir hora" msgid "Tomorrow" msgstr "Amanhã" msgid "Selected task will be removed." msgstr "Selecionar tarefa a ser removida." msgid "Basic" msgstr "Básico" msgid "Select date and time" msgstr "Selecionar data e hora." msgid "Low" msgstr "Baixa" msgid "High" msgstr "Alta" msgid "Enable sound notification" msgstr "Habilitar som de notificação" #, fuzzy msgid "Enable notification dialog" msgstr "Habilitar som de notificação" msgid "Advanced" msgstr "Avançado" msgid "Alarm warning" msgstr "Aviso de alarme" msgid "Postpone time" msgstr "Adiar tempo" msgid "Alarm command" msgstr "Comando de alarme" msgid "Recurrent task" msgstr "Tarefa recorrente" msgid "Enable" msgstr "Habilitar" msgid "Start" msgstr "Começar" msgid "End" msgstr "Fim" msgid "Interval" msgstr "Intervalo" msgid "Time period" msgstr "Período de tempo" msgid "Date period" msgstr "Período de data" msgid "Repeat" msgstr "Repetir" msgid "Repeat in the following days" msgstr "Repetir nos dias a seguintes" msgid "Ignore alarm when task expired offline" msgstr "Ignorar aviso quando tarefa termina desligada" msgid "Select a font..." msgstr "Selecionar uma fonte..." msgid "Color of items that are due today" msgstr "Cor de itens que vencem hoje" msgid "Color of items that are due in the next 7 days" msgstr "Cor dos itens vencem nos próximos 7 dias." msgid "Color of items that are past due" msgstr "Cor dos itens que venceram" msgid "Task info font" msgstr "Informações da fonte de tarefas" msgid "Show in bold tasks with high priority" msgstr "Mostrar em negrito tarefas com grande prioridade" msgid "Hide completed tasks" msgstr "Ocultar tarefas concluídas" msgid "Delete completed tasks without confirmation" msgstr "Deletar tarefas concluídas sem confirmação" msgid "Add new task when double clicked on tasks list" msgstr "Adicionar nova tarefa ao clicar duas vezes na lista de tarefas" msgid "minutes" msgstr "minutos" msgid "0 for disable" msgstr "0 para desativar" msgid "Repeat sound alarm" msgstr "Repetir o alarme de som" msgid "times" msgstr "vezes" msgid "Global notification command" msgstr "Notificação de comando global" msgid "Tasks options" msgstr "Opções de tarefas" msgid "Reminder options" msgstr "Opções de lembrete" msgid "Tasks list" msgstr "Lista de tarefas" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Não." msgid "New Moon" msgstr "Lua Nova" msgid "Waxing Crescent Moon" msgstr "Lua Crescente" msgid "Quarter Moon" msgstr "Lua Quarto Crescente" msgid "Waxing Gibbous Moon" msgstr "Lua Crescente Gibosa" msgid "Full Moon" msgstr "Lua Cheia" msgid "Waning Gibbous Moon" msgstr "Lua Minguante Gibosa" msgid "Last Quarter Moon" msgstr "Lua Quarto Minguante" msgid "Waning Crescent Moon" msgstr "Lua Minguante" msgid "Error" msgstr "Erro" msgid "Selected file exist! Overwrite?" msgstr "Arquivo selecionado existe! Deseja substituir?" #~ msgid "Select and show first item after search" #~ msgstr "Selecionar e mostrar o primeiro item após a pesquisa" #~ msgid "Order" #~ msgstr "Organizar" #~ msgid "Mode" #~ msgstr "Modo" #~ msgid "Ascending" #~ msgstr "Ascendente" #~ msgid "Descending" #~ msgstr "Descendente" #~ msgid "Sorting" #~ msgstr "Classificando" #~ msgid "Contact map location" #~ msgstr "Mapa de localização do contato" osmo-0.2.14/po/zh_CN.po000664 001750 001750 00000103462 12561325524 014517 0ustar00pasppasp000000 000000 # Chinese translation of Osmo # This file is distributed under the same license as the Osmo package. # sasaqqdan , 2009. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2009-10-20 15:11+0800\n" "Last-Translator: sasaqqdan \n" "Language-Team: puppy.cnbits.com \n" "Language: zh_CN\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" msgid "About" msgstr "关于" msgid "Close" msgstr "关闭" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "转到å‰ä¸€æ ‡ç­¾" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "转到下一标签" msgid "switch to selected page" msgstr "切æ¢åˆ°é€‰å®šæ ‡ç­¾" #, fuzzy msgid "show options window" msgstr "显示选项" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "在关于标签和选项之间切æ¢" msgid "exit" msgstr "退出" msgid "Space" msgstr "空格" msgid "select current date" msgstr "é€‰æ‹©å½“å‰æ—¥æœŸ" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "切æ¢ä¸ªäººæ•°æ®å¯è§" msgid "Arrows" msgstr "箭头" msgid "change day" msgstr "æ—¥æœŸå˜æ›´" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "在信æ¯é¢æ¿ä¸­æ˜¾ç¤ºæ—¥è®°" msgid "change month" msgstr "æ”¹å˜æœˆä»½" msgid "Home/End" msgstr "" msgid "change year" msgstr "改å˜å¹´ä»½" msgid "toggle calendars for the previous and next month" msgstr "在å‰ä¸€æœˆå’ŒåŽä¸€æœˆä¸­åˆ‡æ¢æ—¥åކ" msgid "day notes browser" msgstr "æµè§ˆå™¨" msgid "assign background color to day note" msgstr "为日记指定背景色" msgid "date calculator" msgstr "日期计算器" msgid "show full-year calendar" msgstr "显示全年日历" msgid "jump to date" msgstr "跳转到日期" msgid "Delete" msgstr "选择日期" msgid "remove day note" msgstr "删除日记" msgid "Alt+Arrows" msgstr "" msgid "Esc" msgstr "" msgid "close editor" msgstr "å…³é—­ç¬”è®°é¢æ¿" msgid "toggle bold" msgstr "切æ¢ç²—体" msgid "toggle italic" msgstr "åˆ‡æ¢æ–œä½“" msgid "toggle underline" msgstr "切æ¢ä¸‹åˆ’线" msgid "toggle strikethrough" msgstr "切æ¢åˆ é™¤çº¿" msgid "toggle highlight" msgstr "切æ¢é«˜äº®" msgid "Arrows Up/Down" msgstr "上/下箭头" msgid "toggle alternative view" msgstr "切æ¢ä¸åŒå¤–è§‚" msgid "year info" msgstr "年份信æ¯" msgid "set current year" msgstr "设置当å‰å¹´ä»½" msgid "close full-year calendar" msgstr "显示全年日历" msgid "Alt+a, Insert" msgstr "" msgid "add task" msgstr "添加任务" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "编辑任务" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "删除任务" msgid "toggle hidden tasks" msgstr "éšè—任务切æ¢" msgid "activate search field" msgstr "激活查找字段" msgid "Left, Right" msgstr "" msgid "change category filter" msgstr "å˜æ›´ç±»åˆ«ç­›é€‰" msgid "close task info panel" msgstr "关闭任务信æ¯é¢æ¿" msgid "Insert" msgstr "æ’å…¥" msgid "add contact" msgstr "添加è”系人" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "编辑è”系人" msgid "remove contact" msgstr "删除è”系人" msgid "change search mode" msgstr "æ”¹å˜æŸ¥æ‰¾æ¨¡å¼" msgid "close contact details panel" msgstr "关闭è”ç³»äººç»†èŠ‚é¢æ¿" msgid "Enter" msgstr "Enter é”®" msgid "open note" msgstr "打开笔记" msgid "add note" msgstr "添加笔记" msgid "remove note" msgstr "删除笔记" msgid "edit note name and category" msgstr "编辑笔记å字和分类" msgid "close note editor" msgstr "å…³é—­ç¬”è®°é¢æ¿" msgid "save note" msgstr "ä¿å­˜ç¬”è®°" msgid "find text" msgstr "查找文字" msgid "clear selection attributes" msgstr "清除选择属性" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "OSMO 的设计谨记改善用户体验,所以有许多快æ·é”®ã€‚全部快æ·é”®åˆ—表如下:" msgid "General" msgstr "一般" msgid "Calendar" msgstr "日历" msgid "Note editor" msgstr "ç¬”è®°é¢æ¿" msgid "Full-year calendar" msgstr "全年日历" msgid "Tasks" msgstr "任务" msgid "Contacts" msgstr "è”系人" msgid "Notes" msgstr "笔记" msgid "Selector" msgstr "选择器" msgid "Editor" msgstr "编辑器" msgid "A handy personal organizer" msgstr "è¶æ‰‹çš„个人安排工具" msgid "compiled on" msgstr "编译自" msgid "Programming" msgstr "计划" msgid "Graphics" msgstr "图示" msgid "Contributors" msgstr "贡献者" msgid "Translators" msgstr "翻译者" msgid "Mailing lists" msgstr "邮件列表" msgid "Bug tracker" msgstr "错误追踪" msgid "Feature requests" msgstr "è¦æ±‚新特性" msgid "Available modules" msgstr "支æŒçš„æ¨¡å—" msgid "Compiled-in features" msgstr "内建特性" msgid "iCalendar support" msgstr "æ”¯æŒ ICalendar" msgid "Encrypted notes support" msgstr "支æŒåŠ å¯†ç¬”è®°" msgid "Backup support" msgstr "支æŒå¤‡ä»½" msgid "Printing support" msgstr "æ”¯æŒæ‰“å°" msgid "Spell checker support" msgstr "æ”¯æŒæ‹¼å†™æ£€æŸ¥" msgid "version" msgstr "版本" msgid "SVN revision" msgstr "SVN 版本" msgid "Key shortcuts" msgstr "å¿«æ·é”®" msgid "License" msgstr "许å¯è¯" msgid "Save backup" msgstr "ä¿å­˜å¤‡ä»½" msgid "Password protection" msgstr "密ç ä¿æŠ¤" msgid "Enter password" msgstr "输入密ç " msgid "Re-enter password" msgstr "釿–°è¾“入密ç " msgid "Please enter the password" msgstr "请输入密ç " msgid "Passwords do not match!" msgstr "密ç ä¸åŒ¹é…ï¼" msgid "Cannot create backup!" msgstr "无法创建备份ï¼" msgid "Backup file saved successfully!" msgstr "顺利ä¿å­˜å¤‡ä»½æ–‡ä»¶ï¼" msgid "Open backup file" msgstr "打开备份文件" msgid "Osmo backup files (*.bck)" msgstr "Osmo 备份文件(*.bck)" msgid "This is not Osmo backup file" msgstr "æ­¤æ–‡ä»¶ä¸æ˜¯ Osmo 备份文件" msgid "Incorrect password!" msgstr "错误的密ç ï¼" msgid "All your data will be replaced with backup file content." msgstr "所有的数æ®å°†è¢«å¤‡ä»½æ–‡ä»¶å†…容å–代。" msgid "Are you sure?" msgstr "你确定?" msgid "Osmo has to be restarted now..." msgstr "Osmo 现在必须é‡å¯......" msgid "was born" msgstr "出生于" msgid "year old" msgid_plural "years old" msgstr[0] "å²" msgstr[1] "å²" msgid "Current time" msgstr "当剿—¶é—´" msgid "Day number" msgstr "天数" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "到年底的天数" msgstr[1] "到年底的天数" msgid "the last day of the year" msgstr "一年的最åŽä¸€å¤©" msgid "Today distance" msgstr "è·ç¦»ä»Šå¤©" msgid "Week number" msgstr "周数" msgid "Marked days" msgstr "已标识日期" msgid "Weekend days" msgstr "åŒä¼‘æ—¥" msgid "Moon phase" msgstr "月相" msgid "Zodiac sign" msgstr "黄铿˜Ÿåº§" msgid "Day notes" msgstr "æ¯æ—¥è®°å½•" msgid "Day tasks" msgstr "æ¯æ—¥ä»»åŠ¡" msgid "Birthday" msgstr "生日" msgid "Day category" msgstr "日类别" msgid "Selected day note will be removed." msgstr "已选择的笔记将被删除" msgid "Continue?" msgstr "是å¦ç»§ç»­ï¼Ÿ" msgid "Previous year" msgstr "å‰ä¸€å¹´" msgid "Previous month" msgstr "å‰ä¸€æœˆ" msgid "Previous day" msgstr "å‰ä¸€å¤©" msgid "Today" msgstr "今天" msgid "Next day" msgstr "下一天" msgid "Next month" msgstr "下一个月" msgid "Next year" msgstr "下一年" msgid "Jump to date" msgstr "跳转到日期" msgid "Print calendar" msgstr "æ‰“å°æ—¥åކ" msgid "Date calculator" msgstr "日期计算器" #, fuzzy msgid "Backup data" msgstr "备份" #, fuzzy msgid "Restore data" msgstr "æ¢å¤" msgid "Preferences" msgstr "设置" msgid "Quit" msgstr "退出" msgid "Toggle day note panel" msgstr "切æ¢ç¬”è®°é¢æ¿" msgid "Add task" msgstr "添加任务" msgid "Select day color" msgstr "选择日期颜色" msgid "Browse notes" msgstr "æµè§ˆç¬”è®°" msgid "Browse iCal events" msgstr "æµè§ˆ iCal 事件" msgid "Export to iCal file" msgstr "输出到 iCal 文件" msgid "Previous and next month" msgstr "å‰ä¸€æœˆåŠåŽä¸€æœˆ" msgid "Close note panel" msgstr "å…³é—­ç¬”è®°é¢æ¿" msgid "Highlight" msgstr "高亮" msgid "Strikethrough" msgstr "删除线" msgid "Underline" msgstr "下划线" msgid "Italic" msgstr "斜体" msgid "Bold" msgstr "粗体" msgid "Insert timeline" msgstr "æ’入时间线" msgid "Clear text" msgstr "清除文本" msgid "Info" msgstr "ä¿¡æ¯" msgid "Select color" msgstr "选择颜色" msgid "None" msgstr "æ— " msgid "Cancel" msgstr "å–æ¶ˆ" msgid "OK" msgstr "好" msgid "year" msgid_plural "years" msgstr[0] "å¹´" msgstr[1] "å¹´" msgid "month" msgid_plural "months" msgstr[0] "月" msgstr[1] "月" msgid "day" msgid_plural "days" msgstr[0] "æ—¥" msgstr[1] "æ—¥" msgid "hour" msgid_plural "hours" msgstr[0] "å°æ—¶" msgstr[1] "å°æ—¶" msgid "minute" msgid_plural "minutes" msgstr[0] "分" msgstr[1] "分" msgid "second" msgid_plural "seconds" msgstr[0] "ç§’" msgstr[1] "ç§’" msgid "or" msgstr "或" msgid "rounded down" msgstr "å››èˆäº”å…¥" msgid "week" msgid_plural "weeks" msgstr[0] "周" msgstr[1] "周" msgid "working day" msgid_plural "working days" msgstr[0] "工作日" msgstr[1] "工作日" msgid "time is ignored" msgstr "忽略时间" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "åŒä¼‘æ—¥" msgstr[1] "åŒä¼‘æ—¥" msgid "This calculator only supports dates after year 1." msgstr "è¯¥è®¡ç®—å™¨åªæ”¯æŒæ­£æ•°æ—¥æœŸã€‚" msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "åŒä¼‘日颜色" msgstr[1] "åŒä¼‘日颜色" msgid "Year" msgstr "å¹´" msgid "Month" msgstr "月" msgid "Day" msgstr "æ—¥" msgid "Current date" msgstr "当剿—¥æœŸ" msgid "Set current date" msgstr "è®¾ç½®å½“å‰æ—¥æœŸ" msgid "Hour" msgstr "å°æ—¶" msgid "Minute" msgstr "分钟" msgid "Second" msgstr "ç§’" msgid "Set current time" msgstr "è®¾ç½®å½“å‰æ—¶é—´" msgid "Reset time" msgstr "é‡è®¾æ—¶é—´" msgid "First date and time" msgstr "起始日期和时间" msgid "Second date and time" msgstr "å®Œæˆæ—¥æœŸå’Œæ—¶é—´" msgid "Alternative time units" msgstr "选择时间å•ä½" msgid "Result" msgstr "çµæžœ" msgid "Duration between two dates" msgstr "两个ä¸åŒæ—¥æœŸçš„æ—¶é—´å·®" msgid "Operation" msgstr "æ“作" msgid "add" msgstr "增加" msgid "subtract" msgstr "å‡å°‘" msgid "Date and time to add or subtract from" msgstr "日期和时间增å‡" msgid "Years" msgstr "å¹´" msgid "Months" msgstr "月" msgid "Days" msgstr "æ—¥" msgid "Weeks" msgstr "周" msgid "Hours" msgstr "å°æ—¶" msgid "Minutes" msgstr "分钟" msgid "Seconds" msgstr "ç§’" msgid "Ignore weekend days" msgstr "忽略åŒä¼‘æ—¥" msgid "Reset fields" msgstr "é‡è®¾å­—段" msgid "Time to add or subtract" msgstr "时间的增å‡" msgid "Jump to" msgstr "跳转到" msgid "Add to or subtract from a date" msgstr "一天任务的增å‡" msgid "Leap year" msgstr "é—°å¹´" msgid "Yes" msgstr "是" msgid "No" msgstr "å¦" msgid "Chinese year animal" msgstr "属相" msgid "Number of days" msgstr "天数" msgid "Number of weeks" msgstr "周数" msgid "Number of weekend days" msgstr "åŒä¼‘日数" msgid "Year info" msgstr "年份信æ¯" msgid "Current year" msgstr "当å‰å¹´ä»½" msgid "Alternative view" msgstr "其他外观" msgid "event" msgid_plural "events" msgstr[0] "事件" msgstr[1] "事件" msgid "No valid calendars defined" msgstr "没有定义日历" msgid "iCalendar events" msgstr "iCalendar 事件" msgid "Date" msgstr "日期" msgid "Time" msgstr "æ—¶é—´" msgid "Summary" msgstr "摘è¦" msgid "Select output file" msgstr "选择输出文件" msgid "The list will be cleared and all entries will be lost." msgstr "此列表将被清除,所有æ¡ç›®å°†ä¸¢å¤±ã€‚" msgid "Done!" msgstr "完æˆï¼" msgid "event exported" msgid_plural "events exported" msgstr[0] "导出è”系人" msgstr[1] "导出多个è”系人" msgid "iCalendar export" msgstr "输出到 iCalendar" msgid "Day Selector" msgstr "选择天" msgid "Use date period" msgstr "使用日期间隔" msgid "Add" msgstr "添加" msgid "Clear" msgstr "清除" msgid "Remove" msgstr "移除" msgid "Output filename" msgstr "输出文件å" msgid "Browse" msgstr "æµè§ˆ" msgid "Export" msgstr "导出" msgid "no entries" msgstr "没有导入" msgid "entry" msgid_plural "entries" msgstr[0] "æ¡ç›®" msgstr[1] "æ¡ç›®" msgid "Calendar notes" msgstr "日历笔记" msgid "Search" msgstr "查找" msgid "Filter" msgstr "过滤" msgid "Current month" msgstr "当剿œˆä»½" msgid "Selected month" msgstr "已选择月份" msgid "Selected year" msgstr "已选择年份" msgid "Selected month and year" msgstr "选定的月份和年份" msgid "All notes" msgstr "所有项目" msgid "Case sensitive" msgstr "大å°å†™æ•感" msgid "Strikethrough past day notes" msgstr "给过往日期笔记添加删除线" msgid "Note" msgstr "笔记" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "月份åå­—" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "MM-DD-YYYY" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "日期格å¼" #, fuzzy msgid "Set default format" msgstr "输出格å¼" #, fuzzy msgid "Date format syntax" msgstr "日期格å¼" msgid "Day note marker" msgstr "æ¯æ—¥ç¬”记标示符" msgid "Event marker" msgstr "事件标示符" msgid "Circle" msgstr "圆圈" msgid "Ellipse" msgstr "椭圆" msgid "Wave" msgstr "波浪" msgid "Current day marker" msgstr "当剿—¥æœŸæ ‡ç¤ºç¬¦" msgid "Arrow" msgstr "箭头" msgid "Free-hand circle" msgstr "手写圆圈" msgid "Colors" msgstr "色彩" msgid "Header color" msgstr "标题ç€è‰²" msgid "Weekend days color" msgstr "åŒä¼‘日颜色" msgid "Cursor color" msgstr "光标颜色" msgid "Event marker color" msgstr "标题ç€è‰²" msgid "Current day marker color" msgstr "当剿—¥æœŸæ ‡ç¤ºç¬¦é¢œè‰²" msgid "Birthday marker color" msgstr "生日标示符颜色" msgid "Date font" msgstr "日期字体" msgid "Calendar font" msgstr "日历字体" msgid "Note font" msgstr "笔记字体" msgid "Enable block cursor" msgstr "å¯ç”¨å—状光标" msgid "Cursor thickness" msgstr "光标幅度" msgid "Thin" msgstr "è–„" msgid "Thick" msgstr "厚" #, fuzzy msgid "Edit category" msgstr "日类别" msgid "Color" msgstr "颜色" msgid "Name" msgstr "å§“å" msgid "Select ICS file" msgstr "选择 ICS 文件" msgid "All Files" msgstr "全部文件" msgid "Calendar files (*.ics)" msgstr "日历文件(*.ics)" msgid "Modify ICAL parameters" msgstr "修改 ICAL 傿•°" msgid "Filename" msgstr "文件å" msgid "Options" msgstr "选项" msgid "Disabled" msgstr "" msgid "Valid" msgstr "å¯ç”¨" msgid "Description" msgstr "æè¿°" msgid "Full date" msgstr "日期" msgid "Mark" msgstr "标示" msgid "Week start on Monday" msgstr "一周从星期一开始" msgid "Show day names" msgstr "显示日å" msgid "No month change" msgstr "䏿”¹å˜æœˆä»½" msgid "Show week numbers" msgstr "显示周数" msgid "Simple view in full-year calendar" msgstr "预览全年日历" msgid "Enable auxilary calendars" msgstr "å¯ç”¨è¾…助日历" msgid "Ascending sorting in day notes browser" msgstr "å‡åºæµè§ˆæ—¥è®°ç¬”è®°" msgid "Enable spell checker in day notes" msgstr "在日期笔记中å¯ç”¨æ‹¼å†™æ£€æŸ¥" #, fuzzy msgid "Show seconds" msgstr "ç§’" msgid "Appearance" msgstr "外观" msgid "Day categories" msgstr "日类别" msgid "iCalendar files" msgstr "日历字体" msgid "Show in day info panel" msgstr "在信æ¯é¢æ¿ä¸­æ˜¾ç¤ºæ—¥è®°" msgid "Name day" msgstr "日期åç§°" msgid "Error printing" msgstr "打å°é”™è¯¯" msgid "Printing properties" msgstr "打å°å±žæ€§" msgid "Month name" msgstr "月份åå­—" msgid "Day name" msgstr "日期åå­—" msgid "Events" msgstr "事件" msgid "Fonts" msgstr "字体" msgid "Birthdays" msgstr "生日" msgid "Namedays" msgstr "日期åå­—" msgid "Visible events" msgstr "å¯è§äº‹ä»¶" msgid "Padding" msgstr "边缘空白" msgid "Event maximum length" msgstr "事件最长长度" msgid "Page orientation:" msgstr "页é¢å¤–è§‚" msgid "Portrait" msgstr "垂直" msgid "Landscape" msgstr "横å‘" msgid "Timeline" msgstr "时间线" msgid "From (hour)" msgstr "æ¥è‡ªï¼ˆå°æ—¶ï¼‰" msgid "Step (minutes)" msgstr "步进(分) " msgid "To (hour)" msgstr "åˆ°ï¼ˆå°æ—¶ï¼‰" msgid "No date" msgstr "无日期" msgid "Rat" msgstr "é¼ " msgid "Ox" msgstr "牛" msgid "Tiger" msgstr "虎" msgid "Hare" msgstr "å…”" msgid "Dragon" msgstr "é¾™" msgid "Snake" msgstr "蛇" msgid "Horse" msgstr "马" msgid "Sheep" msgstr "羊" msgid "Monkey" msgstr "猴" msgid "Fowl" msgstr "鸡" msgid "Dog" msgstr "ç‹—" msgid "Pig" msgstr "猪" msgid "Unknown" msgstr "未知" msgid "Aquarius" msgstr "æ°´ç“¶" msgid "Pisces" msgstr "åŒé±¼" msgid "Aries" msgstr "地å€" msgid "Taurus" msgstr "åŠäººé©¬" msgid "Gemini" msgstr "åŒå­" msgid "Cancer" msgstr "巨蟹" msgid "Leo" msgstr "ç‹®å­" msgid "Virgo" msgstr "处女" msgid "Libra" msgstr "天平" msgid "Scorpio" msgstr "天èŽ" msgid "Sagittarius" msgstr "射手" msgid "Capricorn" msgstr "摩羯" msgid "Cannot perform selected operation." msgstr "ä¸èƒ½æ‰§è¡Œé€‰å®šçš„æ“ä½œã€‚" msgid "Task has been modified or removed." msgstr "任务已被修改或删除。" msgid "Remind me later" msgstr "ç¨åŽæé†’æˆ‘" msgid "Done" msgstr "完æˆ" msgid "postponed" msgstr "已推迟" msgid "Show task" msgstr "显示任务" msgid "Alarm warning!" msgstr "警告ï¼" msgid "Day note" msgstr "æ¯æ—¥è®°å½•" msgid "Type" msgstr "类型" msgid "Event" msgstr "æ¡ç›®" msgid "Task" msgstr "任务" msgid "Show Osmo" msgstr "显示 Osmo" msgid "No birthdays defined" msgstr "没有定义生日" msgid "Birthdays list" msgstr "生日列表" msgid "Days to birthday" msgstr "è·ç¦»ç”Ÿæ—¥å¤©æ•°" msgid "Age" msgstr "年龄" msgid "Birthday date" msgstr "生日" msgid "today" msgstr "今日" msgid "Please select address" msgstr "请选择地å€" msgid "Information" msgstr "ä¿¡æ¯" msgid "Work" msgstr "工作" msgid "Home" msgstr "家庭" msgid "Group" msgstr "组" msgid "First name" msgstr "å" msgid "Last name" msgstr "å§“" msgid "Second name" msgstr "别å" msgid "Nickname" msgstr "昵称" msgid "Tags" msgstr "标签" msgid "Name day date" msgstr "日期åç§°" msgid "Home address" msgstr "家庭地å€" msgid "Home postcode" msgstr "家庭邮编" msgid "Home city" msgstr "所在城市" msgid "Home state" msgstr "所在çœä»½" msgid "Home country" msgstr "所在国家" msgid "Organization" msgstr "组织" msgid "Department" msgstr "部署" msgid "Work address" msgstr "工作地å€" msgid "Work postcode" msgstr "工作地邮编" msgid "Work city" msgstr "工作所在城市" msgid "Work state" msgstr "工作所在çœä»½" msgid "Work country" msgstr "工作所在国家" msgid "Fax" msgstr "传真" msgid "Home phone" msgstr "个人电è¯" msgid "Home phone 2" msgstr "ä¸ªäººç”µè¯ 2 " msgid "Home phone 3" msgstr "ä¸ªäººç”µè¯ 3 " msgid "Home phone 4" msgstr "ä¸ªäººç”µè¯ 4 " msgid "Work phone" msgstr "工作电è¯" msgid "Work phone 2" msgstr "å·¥ä½œç”µè¯ 2 " msgid "Work phone 3" msgstr "å·¥ä½œç”µè¯ 3 " msgid "Work phone 4" msgstr "å·¥ä½œç”µè¯ 4 " msgid "Cell phone" msgstr "手机" msgid "Cell phone 2" msgstr "手机 2" msgid "Cell phone 3" msgstr "手机 3" msgid "Cell phone 4" msgstr "手机 4" msgid "E-Mail" msgstr "电å­é‚®ä»¶" msgid "E-Mail 2" msgstr "电å­é‚®ä»¶ 2" msgid "E-Mail 3" msgstr "电å­é‚®ä»¶ 3" msgid "E-Mail 4" msgstr "电å­é‚®ä»¶ 4" msgid "WWW" msgstr "网å€" msgid "WWW 2" msgstr "ç½‘å€ 2" msgid "WWW 3" msgstr "ç½‘å€ 3" msgid "WWW 4" msgstr "ç½‘å€ 4" msgid "IM Gadu-Gadu" msgstr "Gadu-Gadu å·ç " msgid "IM Yahoo" msgstr "Yahoo å·ç " msgid "IM MSN" msgstr "MSN å·ç " msgid "IM ICQ" msgstr "ICQ å·ç " msgid "IM AOL" msgstr "AOL å·ç " msgid "IM Jabber" msgstr "Jabber å·ç " msgid "IM Skype" msgstr "Skype å·ç " msgid "IM Tlen" msgstr "Tlen å·ç " msgid "Blog" msgstr "åšå®¢" msgid "Photo" msgstr "照片" msgid "Additional info" msgstr "附加信æ¯" msgid "New contact" msgstr "新建è”系人" msgid "Remove contact" msgstr "删除è”系人" msgid "Edit contact" msgstr "编辑è”系人" msgid "Show birthdays" msgstr "è·ç¦»ç”Ÿæ—¥å¤©æ•°" msgid "Show contact location on the map" msgstr "在地图上显示è”系人所在地" msgid "Import contacts" msgstr "导入è”系人" msgid "Export contacts" msgstr "导出è”系人" msgid "First Name" msgstr "å" msgid "Last Name" msgstr "å§“" msgid "All fields" msgstr "全部字段" msgid "Contact details" msgstr "è”系人细节" msgid "Close contact panel" msgstr "关闭è”ç³»äººé¢æ¿" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "导出è”系人" msgstr[1] "导出多个è”系人" msgid "Cannot create file." msgstr "无法创建文件。" msgid "Output format" msgstr "输出格å¼" msgid "Add header" msgstr "添加标题" msgid "Fields to export" msgstr "导出字段" msgid "All" msgstr "全部" msgid "Invert" msgstr "转化" msgid "Select fields" msgstr "选择字段" msgid "Select CSV file" msgstr "选择 CSV 文件" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV 文件(逗å·åˆ†éš”值)(*.csv)" msgid "Please select file first." msgstr "请首先选择文件" msgid "Import type" msgstr "导入类型" msgid "File" msgstr "文件" msgid "Input filename" msgstr "输出文件å" msgid "Import" msgstr "导入" msgid "Nothing to import." msgstr "没有导出" msgid "contact added" msgid_plural "contacts added" msgstr[0] "添加è”系人" msgstr[1] "添加多个è”系人" msgid "of" msgstr "çš„" msgid "Record" msgstr "记录" msgid "Number fields per record" msgstr "æ¯ä¸ªè®°å½•字段数" msgid "Use first record as header" msgstr "使用第一æ¡è®°å½•作为标题" msgid "Field type" msgstr "字段类型" msgid "Value" msgstr "值" msgid "No records found in selected file." msgstr "在所选文件中未找到记录。" msgid "Cannot read file." msgstr "æ— æ³•è¯»å–æ–‡ä»¶ã€‚" msgid "Cannot open file." msgstr "无法打开文件。" msgid "Selected contact will be removed." msgstr "已选择的è”系人将被删除。" msgid "Select photo" msgstr "选择照片" msgid "Address" msgstr "地å€" msgid "Postcode" msgstr "邮编" msgid "City" msgstr "城市" msgid "State" msgstr "çœ" msgid "Country" msgstr "国家" msgid "Add contact" msgstr "添加è”系人" msgid "Personal" msgstr "个人" msgid "Phones" msgstr "电è¯å·ç " msgid "Internet" msgstr "互è”网" msgid "Color of contact tags" msgstr "è”系人标签颜色" msgid "Color of links" msgstr "链接颜色" #, fuzzy msgid "Font size" msgstr "照片大å°" #, fuzzy msgid "Name font size" msgstr "字体åç§°" #, fuzzy msgid "Item font size" msgstr "æ¡ç›®å­—体" msgid "Photo size" msgstr "照片大å°" msgid "Small" msgstr "å°" msgid "Medium" msgstr "中" msgid "Large" msgstr "大" msgid "Hide group column" msgstr "éšè—分组æ " msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "å…¶ä»–" msgid "Groups" msgstr "群组" #, fuzzy msgid "Visible columns in birthday browser" msgstr "生日æµè§ˆä¸­å¯è§æ ç›®" msgid "Show calendar" msgstr "显示日历" msgid "Show tasks" msgstr "显示任务" msgid "Show contacts" msgstr "显示è”系人" msgid "Show notes" msgstr "显示笔记" msgid "Show options" msgstr "显示选项" msgid "Show small calendar window" msgstr "æ˜¾ç¤ºå°æ—¥åŽ†çª—å£" msgid "Check for events since last run" msgstr "检查上次è¿è¡ŒåŽçš„æ–°äº‹ä»¶" msgid "Number of days to check forward for events (default: 0)" msgstr "事件å‘剿Ÿ¥è¯¢å¤©æ•°ï¼ˆé»˜è®¤ï¼š0)" msgid "Set absolute path for settings and data files" msgstr "ç»™è®¾ç½®å’Œæ•°æ®æ–‡ä»¶è®¾ç½®ç»å¯¹è·¯å¾„" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "è¶æ‰‹çš„个人日程安排工具" msgid "ERROR: Cannot create config files" msgstr "错误:无法创建é…置文件" msgid "Another copy of OSMO is already running." msgstr "å·²ç»æœ‰ä¸€ä¸ª Osmo 在è¿è¡Œã€‚" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "åŒæ—¶è¿è¡Œä¸¤ä¸ªä»¥ä¸Šçš„OSMOå¯èƒ½ä¼šå¯¼è‡´æ•°æ®ä¸¢å¤±ã€‚" msgid "Do you really want to continue?" msgstr "你真想继续å—?" msgid "Warning" msgstr "警告" msgid "The note has changed." msgstr "笔记已改å˜ã€‚" msgid "Do you want to save it?" msgstr "你真想继续å—?" #, fuzzy msgid "No URLs found in the selection..." msgstr "在所选文件中未找到记录。" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "你真想继续å—?" msgid "Question" msgstr "问题" msgid "Words" msgstr "è¯" msgid "Lines" msgstr "行" msgid "Characters" msgstr "å­—" msgid "White characters" msgstr "空白字符" msgid "Bytes" msgstr "字节" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "选择器" msgid "Created" msgstr "已创建" msgid "Modified" msgstr "已修改" msgid "New note" msgstr "新建笔记" msgid "Add note" msgstr "添加笔记" msgid "Edit note" msgstr "编辑笔记" msgid "Delete note" msgstr "删除笔记" msgid "Remove note" msgstr "删除笔记" msgid "Find" msgstr "寻找" msgid "Clear attributes" msgstr "清除属性" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "ä¿å­˜ç¬”è®°" msgid "Insert current date and time" msgstr "æ’入日期和时间" msgid "Insert separator" msgstr "æ’入分割符" msgid "Statistics" msgstr "统计" msgid "Close editor" msgstr "关闭编辑器" msgid "Toggle spell checker" msgstr "åˆ‡æ¢æ‹¼å†™æ£€æŸ¥" msgid "Category" msgstr "类别" msgid "Note name" msgstr "笔记åå­—" msgid "Last changes" msgstr "æœ€åŽæ›´æ”¹" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "行" #, fuzzy msgid "Column" msgstr "国家" msgid "case sensitive" msgstr "大å°å†™æ•感" msgid "Close find entry" msgstr "关闭寻找æ¡ç›®" msgid "Edit entry" msgstr "编辑æ¡ç›®" msgid "Remember cursor position" msgstr "è®°ä½å…‰æ ‡ä½ç½®" msgid "Selected note will be removed." msgstr "已选择的日记将被删除" msgid "No further data recovery will be possible." msgstr "æ²¡æœ‰æ›´å¤šæ•°æ®æ¢å¤äº†ã€‚" msgid "Plain" msgstr "未加密" msgid "Encrypted" msgstr "已加密" msgid "Note type" msgstr "笔记类型" msgid "Cannot open the note." msgstr "无法打开笔记。" msgid "encryption support is disabled" msgstr "加密支æŒå·²å…³é—­" msgid "Authorization" msgstr "授æƒ" msgid "Algorithm" msgstr "算法" msgid "Hashing" msgstr "哈希" msgid "Compression" msgstr "压缩" msgid "Ratio" msgstr "比率" msgid "Fast" msgstr "å¿«" msgid "Good" msgstr "好" msgid "Best" msgstr "最好" msgid "Remember the last selected category" msgstr "记录最近已选择的分类" msgid "Use system format for date and time" msgstr "使用系统日期和事件格å¼" msgid "Encryption" msgstr "加密" msgid "Visible columns" msgstr "列å¯è§" msgid "Categories" msgstr "类别" msgid "Notes options" msgstr "笔记选项" #, fuzzy msgid "Osmo has to be restarted to take effect." msgstr "Osmo 现在必须é‡å¯......" msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "标签ä½ç½®" msgid "Left" msgstr "å·¦" msgid "Right" msgstr "å³" msgid "Top" msgstr "é¡¶" msgid "Bottom" msgstr "底" #, fuzzy msgid "Use default stock icons" msgstr "使用默认备用图标(需é‡å¯ï¼‰" msgid "Disable underline in links" msgstr "关闭链接下划线" msgid "Draw rows in alternating colors" msgstr "交替å˜åŒ–行颜色" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "至少ä¿ç•™ä¸€ä¸ªæ¨¡ç»„å¯è§" msgid "Override locale settings" msgstr "覆盖语言区域设定" msgid "Date format" msgstr "日期格å¼" msgid "DD-MM-YYYY" msgstr "DD-MM-YYYY" msgid "MM-DD-YYYY" msgstr "MM-DD-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-MM-DD" msgid "YYYY-DD-MM" msgstr "YYYY-DD-MM" msgid "Time format" msgstr "æ—¶é—´æ ¼å¼" msgid "hours" msgstr "å°æ—¶" msgid "Spell checker language" msgstr "拼写检查语言" msgid "Enable tooltips" msgstr "工具æç¤ºå¯ç”¨" msgid "Remember last selected page" msgstr "记录最近选择页é¢" msgid "Save data after every modification" msgstr "æ¯æ¬¡ä¿®æ”¹åŽä¿å­˜æ•°æ®" msgid "Web browser" msgstr "WWW æµè§ˆå™¨" msgid "E-mail client" msgstr "邮件客户端" msgid "Sound player" msgstr "声音播放" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s 将被替代为 Web 地å€" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s 将被替代为 E-Mail 地å€" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s 将被替代为声音文件å" msgid "Enable system tray" msgstr "任务æ å¯ç”¨" msgid "Start minimised" msgstr "å¯åŠ¨åŽæœ€å°åŒ–" msgid "Blink on events" msgstr "事件闪çƒ" msgid "Ignore day note events" msgstr "忽略笔记事件" msgid "Hide" msgstr "éšè—" msgid "Helpers" msgstr "帮助者" msgid "System tray" msgstr "任务æ " msgid "Edit" msgstr "编辑" msgid "Go Down" msgstr "下一个" msgid "Select date" msgstr "选择日期" msgid "Select font" msgstr "选择字体" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "计算器" msgid "Edit day note" msgstr "编辑日记录" msgid "Save" msgstr "ä¿å­˜" msgid "Display full-year calendar" msgstr "显示全年日历" msgid "Help" msgstr "帮助" msgid "Invalid item" msgstr "无效的æ¡ç›®" msgid "Valid item" msgstr "所有项目" msgid "Edit task" msgstr "编辑任务" msgid "Remove task" msgstr "删除任务" msgid "Import tasks" msgstr "导入è”系人" msgid "Export tasks" msgstr "导出è”系人" msgid "Change to previous date" msgstr "转到å‰ä¸€æ ‡ç­¾" msgid "Change to next date" msgstr "转到下一日期" msgid "Print" msgstr "打å°" msgid "Normal" msgstr "普通" msgid "Recurrent" msgstr "é‡å¤" msgid "Started" msgstr "已开始" msgid "Finished" msgstr "完æˆ" msgid "All items" msgstr "所有项目" msgid "New task" msgstr "新任务" msgid "Change due date to previous date" msgstr "将到期日设定为å‰ä¸€æ—¥æœŸ" msgid "Change due date to next date" msgstr "将到期日设定为åŽä¸€æ—¥æœŸ" msgid "Print visible tasks list" msgstr "打å°å¯è§çš„任务列表" msgid "Due date" msgstr "到期" msgid "Priority" msgstr "优先顺åº" msgid "Task details" msgstr "任务细节" msgid "Close description panel" msgstr "å…³é—­è¯´æ˜Žé¢æ¿" msgid "No tasks with defined date found." msgstr "选定日期中没有å‘现任务。" msgid "Save tasks" msgstr "ä¿å­˜ä»»åŠ¡" msgid "tasks exported" msgstr "任务已导出 " msgid "Please select at least one day when recurrency is enabled." msgstr "é‡å¤æé†’å·²å¯ç”¨ï¼Œè¯·è‡³å°‘选择一个日期。" msgid "Set time" msgstr "设置时间" msgid "Tomorrow" msgstr "明天" msgid "Selected task will be removed." msgstr "选择的任务将被删除。" msgid "Basic" msgstr "基本" msgid "Select date and time" msgstr "å®Œæˆæ—¥æœŸå’Œæ—¶é—´" msgid "Low" msgstr "低" msgid "High" msgstr "高" msgid "Enable sound notification" msgstr "å¯ç”¨å£°éŸ³æé†’" #, fuzzy msgid "Enable notification dialog" msgstr "å¯ç”¨å£°éŸ³æé†’" msgid "Advanced" msgstr "高级" msgid "Alarm warning" msgstr "警告" msgid "Postpone time" msgstr "推迟时间" msgid "Alarm command" msgstr "使用警告命令" msgid "Recurrent task" msgstr "é‡å¤ä»»åŠ¡" msgid "Enable" msgstr "å¯ç”¨" msgid "Start" msgstr "开始" msgid "End" msgstr "结æŸ" msgid "Interval" msgstr "é—´éš”" msgid "Time period" msgstr "æ—¶é—´é—´éš”" msgid "Date period" msgstr "日期间隔" msgid "Repeat" msgstr "é‡å¤" msgid "Repeat in the following days" msgstr "åœ¨ä»¥åŽæ—¥æœŸä¸­é‡å¤" msgid "Ignore alarm when task expired offline" msgstr "当任务过期,则忽略警告" msgid "Select a font..." msgstr "选择字体......" msgid "Color of items that are due today" msgstr "今日到期项目颜色" msgid "Color of items that are due in the next 7 days" msgstr "下 7 天到期项目颜色" msgid "Color of items that are past due" msgstr "已过期项目颜色" msgid "Task info font" msgstr "任务信æ¯å­—体" msgid "Show in bold tasks with high priority" msgstr "粗体显示优先任务" msgid "Hide completed tasks" msgstr "éšè—已完æˆä»»åŠ¡" msgid "Delete completed tasks without confirmation" msgstr "ä¸ç»ç¡®è®¤åˆ é™¤å·²å®Œæˆä»»åŠ¡" msgid "Add new task when double clicked on tasks list" msgstr "åŒå‡»ä»»åŠ¡åˆ—è¡¨æ·»åŠ æ–°ä»»åŠ¡" msgid "minutes" msgstr "分" msgid "0 for disable" msgstr "0 å³ç¦ç”¨" msgid "Repeat sound alarm" msgstr "é‡å¤å£°éŸ³è­¦æŠ¥" msgid "times" msgstr "æ—¶é—´" msgid "Global notification command" msgstr "全局æé†’使用的命令" msgid "Tasks options" msgstr "任务选项" msgid "Reminder options" msgstr "æé†’选项" msgid "Tasks list" msgstr "任务列表" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "第" msgid "New Moon" msgstr "新月" msgid "Waxing Crescent Moon" msgstr "娥眉月" msgid "Quarter Moon" msgstr "åŠå¼¦æœˆ" msgid "Waxing Gibbous Moon" msgstr "盈凸月" msgid "Full Moon" msgstr "满月" msgid "Waning Gibbous Moon" msgstr "äºå‡¸æœˆ" msgid "Last Quarter Moon" msgstr "下弦月" msgid "Waning Crescent Moon" msgstr "残月" msgid "Error" msgstr "错误" msgid "Selected file exist! Overwrite?" msgstr "é€‰æ‹©çš„æ–‡ä»¶å·²å­˜åœ¨ï¼æ˜¯å¦è¦†ç›–?" #~ msgid "Select and show first item after search" #~ msgstr "选择并显示查找到的第一个结果" #~ msgid "Order" #~ msgstr "åºåˆ—" #~ msgid "Mode" #~ msgstr "状æ€" #~ msgid "Ascending" #~ msgstr "å‡åº" #~ msgid "Descending" #~ msgstr "é™åº" #~ msgid "Sorting" #~ msgstr "排åº" #~ msgid "Contact map location" #~ msgstr "è”系人地图ä½ç½®" osmo-0.2.14/po/bg.po000664 001750 001750 00000134423 12561325524 014107 0ustar00pasppasp000000 000000 # Bulgarian translation of Osmo # This file is distributed under the same license as the Osmo package. # Borislav Totev , 2010. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-02-23 19:11+0100\n" "Last-Translator: Borislav Totev \n" "Language-Team: Bulgarian\n" "Language: bg\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" msgid "About" msgstr "За" msgid "Close" msgstr "Затвори" msgid "Ctrl+PageUp" msgstr "Ctrl+PageUp" msgid "switch to previous tab" msgstr "Превключи на предходниÑÑ‚ таб" msgid "Ctrl+PageDn" msgstr "Ctrl+PageDn" msgid "switch to next tab" msgstr "превключи на ÑледващиÑÑ‚ таб" msgid "switch to selected page" msgstr "превключи на избраната Ñтраница" msgid "show options window" msgstr "покажи прозореца Ñ Ð¾Ð¿Ñ†Ð¸Ð¹" msgid "show about window" msgstr "show about window" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "PageUp/PageDn" msgid "switch page in options and about tab" msgstr "включи Ñтраницата Ñ Ð¾Ð¿Ñ†Ð¸Ð¹ и за раздела" msgid "exit" msgstr "изход" msgid "Space" msgstr "Интервал" msgid "select current date" msgstr "изберете текуща дата" msgid "Ctrl+Space" msgstr "Ctrl+Интервал" msgid "toggle personal data visibility" msgstr "разрешаване видимоÑÑ‚ на личните данни" msgid "Arrows" msgstr "Стрелки" msgid "change day" msgstr "промÑна на денÑ" msgid "Ctrl+Up/Down" msgstr "Ctrl+Up/Down" msgid "scroll the contents in the day info panel" msgstr "превъртане Ñъдържанието на панела за дневна информациÑ" msgid "change month" msgstr "промÑна на меÑеца" msgid "Home/End" msgstr "Home/End" msgid "change year" msgstr "ПромÑна на годината" msgid "toggle calendars for the previous and next month" msgstr "превключване на календарите за предходниÑÑ‚ и Ñледващ меÑец" msgid "day notes browser" msgstr "браузър дневни бележки" msgid "assign background color to day note" msgstr "приÑвоÑване цвÑÑ‚ на фона за дневна бележка" msgid "date calculator" msgstr "калкулатор на дни" msgid "show full-year calendar" msgstr "покажи годишниÑÑ‚ календар" msgid "jump to date" msgstr "Ñкочи на дата" msgid "Delete" msgstr "Изтриване" msgid "remove day note" msgstr "премахване на дневна бележка" msgid "Alt+Arrows" msgstr "Alt+Стрелки" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "затвори редактора" msgid "toggle bold" msgstr "toggle bold" msgid "toggle italic" msgstr "toggle italic" msgid "toggle underline" msgstr "toggle underline" msgid "toggle strikethrough" msgstr "toggle strikethrough" msgid "toggle highlight" msgstr "toggle highlight" msgid "Arrows Up/Down" msgstr "Стрелки Up/Down" msgid "toggle alternative view" msgstr "превключи на алтернативен изглед" msgid "year info" msgstr "годишна информациÑ" msgid "set current year" msgstr "наÑройване текуща година" msgid "close full-year calendar" msgstr "затвори годишниÑÑ‚ календар" msgid "Alt+a, Insert" msgstr "Alt+a, Insert" msgid "add task" msgstr "добавÑне на задача" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Ctrl+Enter" msgid "edit task" msgstr "редактиране на задача" msgid "Alt+r, Delete" msgstr "Alt+r, Delete" msgid "remove task" msgstr "премахване на задача" msgid "toggle hidden tasks" msgstr "превключи на Ñкрити задачи" msgid "activate search field" msgstr "активиране полето за търÑене" msgid "Left, Right" msgstr "ЛÑво,ДÑÑно" msgid "change category filter" msgstr "промÑна филтъра за категориÑ" msgid "close task info panel" msgstr "затварÑне на инфо панела за задачи" msgid "Insert" msgstr "ПоÑтавÑне" msgid "add contact" msgstr "добавÑне на контакт" msgid "Ctrl+Enter" msgstr "Ctrl+Enter" msgid "edit contact" msgstr "Редактиране на контакт" msgid "remove contact" msgstr "премахване на контакт" msgid "change search mode" msgstr "промÑна режим търÑене" msgid "close contact details panel" msgstr "затварÑне панела за детайли на контакта" msgid "Enter" msgstr "Въвеждане" msgid "open note" msgstr "отварÑне на бележка" msgid "add note" msgstr "добавÑне на бележка" msgid "remove note" msgstr "премахване на бележка" msgid "edit note name and category" msgstr "редактиране име и ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð½Ð° бележка" msgid "close note editor" msgstr "затварÑне редактора на бележки" msgid "save note" msgstr "запазване на бележка" msgid "find text" msgstr "намери текÑÑ‚" msgid "clear selection attributes" msgstr "изчиÑтване избраните атрибути" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO бе проектиран ÑÑŠÑ Ñ†ÐµÐ» удобÑтвото на потребителÑ,разполага ÑÑŠÑ " "функциÑбързи клавиши.Ето и пълниÑÑ‚ ÑпиÑък:" msgid "General" msgstr "Главно" msgid "Calendar" msgstr "Календар" msgid "Note editor" msgstr "Редактор на бележки" msgid "Full-year calendar" msgstr "Целогодишен календар" msgid "Tasks" msgstr "Задачи" msgid "Contacts" msgstr "Контакти" msgid "Notes" msgstr "Бележки" msgid "Selector" msgstr "Ñелектор" msgid "Editor" msgstr "Редактор" msgid "A handy personal organizer" msgstr "Удобен личен органайзер" msgid "compiled on" msgstr "Ñъбран по" msgid "Programming" msgstr "Програмиране" msgid "Graphics" msgstr "Графики" msgid "Contributors" msgstr "Сътрудници" msgid "Translators" msgstr "Преводачи" msgid "Mailing lists" msgstr "ПощенÑки ÑпиÑъци" msgid "Bug tracker" msgstr "ПроÑледÑване на бъгове" msgid "Feature requests" msgstr "Бъдещи запитваниÑ" msgid "Available modules" msgstr "Ðалични модули" msgid "Compiled-in features" msgstr "Compiled-in features" msgid "iCalendar support" msgstr "iCalendar подръжка" msgid "Encrypted notes support" msgstr "Подръжка на шифровани бележки" msgid "Backup support" msgstr "Бакъп подръжка" msgid "Printing support" msgstr "Подръжка печат" msgid "Spell checker support" msgstr "ПравопиÑна подръжка" msgid "version" msgstr "ВерÑиÑ" msgid "SVN revision" msgstr "SVN преразглеждане" msgid "Key shortcuts" msgstr "Бързи клавиши" msgid "License" msgstr "Лиценз" msgid "Save backup" msgstr "Запазване на бакъп" msgid "Password protection" msgstr "Защита на парола" msgid "Enter password" msgstr "Въвеждане на парола" msgid "Re-enter password" msgstr "Повторете паролата" msgid "Please enter the password" msgstr "ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ парола" msgid "Passwords do not match!" msgstr "Паролите не Ñъвпадат" msgid "Cannot create backup!" msgstr "Ðевъзможно Ñъздаване на бакъп!" msgid "Backup file saved successfully!" msgstr "Бакъп файла е запазан уÑпешно!" msgid "Open backup file" msgstr "ОтварÑне на бакъп файл" msgid "Osmo backup files (*.bck)" msgstr "Osmo бакъп файлове (*.bck)" msgid "This is not Osmo backup file" msgstr "Това не е бакъп файл на Osmo" msgid "Incorrect password!" msgstr "Ðеправилна парола" msgid "All your data will be replaced with backup file content." msgstr "Ð’Ñичките ваши данни ще бъдат заменени ÑÑŠÑ Ñъдържанието на бакъп файла." msgid "Are you sure?" msgstr "Сигурен/а ли Ñте?" msgid "Osmo has to be restarted now..." msgstr "OSMO ще Ñе реÑтартира Ñега..." msgid "was born" msgstr "е роден" msgid "year old" msgid_plural "years old" msgstr[0] "year old" msgstr[1] "years old" msgid "Current time" msgstr "Текущо време" msgid "Day number" msgstr "Ðомер на денÑ" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "ден до ÐºÑ€Ð°Ñ Ð½Ð° годината" msgstr[1] "дни до ÐºÑ€Ð°Ñ Ð½Ð° годината" msgid "the last day of the year" msgstr "ПоÑледниÑÑ‚ ден от годината" msgid "Today distance" msgstr "Today distance" msgid "Week number" msgstr "номер на Ñедмицата" msgid "Marked days" msgstr "Пазарни дни" msgid "Weekend days" msgstr "Седмични дни" msgid "Moon phase" msgstr "Луна фаза" msgid "Zodiac sign" msgstr "ЗодиÑ" msgid "Day notes" msgstr "Дневна бележка" msgid "Day tasks" msgstr "дневни задачи" msgid "Birthday" msgstr "Рожден ден" msgid "Day category" msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð·Ð° денÑ" msgid "Selected day note will be removed." msgstr "Избраната дневна бележка ще бъде премахната" msgid "Continue?" msgstr "Продължение?" msgid "Previous year" msgstr "Предходна година" msgid "Previous month" msgstr "Предходен меÑец" msgid "Previous day" msgstr "Предходен ден" msgid "Today" msgstr "ДнеÑ" msgid "Next day" msgstr "Следващ ден" msgid "Next month" msgstr "Следващ меÑец" msgid "Next year" msgstr "Следваща година" msgid "Jump to date" msgstr "Скочи до дата" msgid "Print calendar" msgstr "Отпечатване на календар" msgid "Date calculator" msgstr "ПремÑтане на период" #, fuzzy msgid "Backup data" msgstr "Бакъп" #, fuzzy msgid "Restore data" msgstr "ВъзтановÑване" msgid "Preferences" msgstr "ПредпочитаниÑ" msgid "Quit" msgstr "Изход" msgid "Toggle day note panel" msgstr "Превключване панел Дневни бележки" msgid "Add task" msgstr "ДобавÑне на задача" msgid "Select day color" msgstr "Избиране цвÑÑ‚ за денÑ" msgid "Browse notes" msgstr "Преглед на бележки" msgid "Browse iCal events" msgstr "Преглед на iCal ÑъбитиÑ" msgid "Export to iCal file" msgstr "EкÑпортиране като iCal файл" msgid "Previous and next month" msgstr "Предходен и Ñледващ меÑец" msgid "Close note panel" msgstr "ЗатварÑне панела за бележки" msgid "Highlight" msgstr "Маркиране" msgid "Strikethrough" msgstr "Зачеркване" msgid "Underline" msgstr "Подчертаване" msgid "Italic" msgstr "Italic" msgid "Bold" msgstr "Bold" msgid "Insert timeline" msgstr "Insert timeline" msgid "Clear text" msgstr "ИзчиÑтване на текÑÑ‚" msgid "Info" msgstr "ИнформациÑ" msgid "Select color" msgstr "Избор на цвÑÑ‚" msgid "None" msgstr "Ðищо" msgid "Cancel" msgstr "Отказване" msgid "OK" msgstr "ОК" msgid "year" msgid_plural "years" msgstr[0] "Година" msgstr[1] "Години" msgid "month" msgid_plural "months" msgstr[0] "МеÑец" msgstr[1] "МеÑеци" msgid "day" msgid_plural "days" msgstr[0] "Ден" msgstr[1] "Дни" msgid "hour" msgid_plural "hours" msgstr[0] "чаÑ" msgstr[1] "чаÑове" msgid "minute" msgid_plural "minutes" msgstr[0] "минута" msgstr[1] "минути" msgid "second" msgid_plural "seconds" msgstr[0] "Секунда" msgstr[1] "Секунди" msgid "or" msgstr "или" msgid "rounded down" msgstr "закръглÑване надолу" msgid "week" msgid_plural "weeks" msgstr[0] "Седмица" msgstr[1] "Седмици" msgid "working day" msgid_plural "working days" msgstr[0] "Работен ден" msgstr[1] "Работни дни" msgid "time is ignored" msgstr "времето е игнорирано" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Ñедмичен ден" msgstr[1] "Ñедмични дни" msgid "This calculator only supports dates after year 1." msgstr "Калкулаторът подържа Ñамо дати Ñлед година 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "уйкенд ден игнориран " msgstr[1] "уйкенд дни игнорирани" msgid "Year" msgstr "Година" msgid "Month" msgstr "МеÑец" msgid "Day" msgstr "Ден" msgid "Current date" msgstr "Текуща дата" msgid "Set current date" msgstr "ÐаÑтройка на текуща дата" msgid "Hour" msgstr "ЧаÑ" msgid "Minute" msgstr "Минута" msgid "Second" msgstr "Секунда" msgid "Set current time" msgstr "ÐаÑтройка на текущо време" msgid "Reset time" msgstr "Ðулиране " msgid "First date and time" msgstr "Първи дата и време" msgid "Second date and time" msgstr "Втори дата и време" msgid "Alternative time units" msgstr "Ðлтернативни времеви единици" msgid "Result" msgstr "Резултат" msgid "Duration between two dates" msgstr "Период между две дати" msgid "Operation" msgstr "ОперациÑ" msgid "add" msgstr "добавÑне" msgid "subtract" msgstr "изваждане" msgid "Date and time to add or subtract from" msgstr "Дата и време за добавÑне или изваждане от" msgid "Years" msgstr "Години" msgid "Months" msgstr "МеÑеци" msgid "Days" msgstr "Дни" msgid "Weeks" msgstr "Седмици" msgid "Hours" msgstr "ЧаÑове" msgid "Minutes" msgstr "Минути" msgid "Seconds" msgstr "Секунди" msgid "Ignore weekend days" msgstr "Игнориране на уйкендите" msgid "Reset fields" msgstr "Ðулиране на полета" msgid "Time to add or subtract" msgstr "Време за добавÑне или изваждане" msgid "Jump to" msgstr "Скочи до" msgid "Add to or subtract from a date" msgstr "ДобавÑне към или изваждане от дата" msgid "Leap year" msgstr "ВиÑокоÑна година" msgid "Yes" msgstr "Да" msgid "No" msgstr "Ðе" msgid "Chinese year animal" msgstr "КитайÑка година" msgid "Number of days" msgstr "Брой дни" msgid "Number of weeks" msgstr "Брой Ñедмици" msgid "Number of weekend days" msgstr "Брой на уйкенд дни" msgid "Year info" msgstr "Годишна информациÑ" msgid "Current year" msgstr "Текуща година" msgid "Alternative view" msgstr "Ðлтернативен изглед" msgid "event" msgid_plural "events" msgstr[0] "Ñъбитие" msgstr[1] "ÑъбитиÑ" msgid "No valid calendars defined" msgstr "ÐÑма валидни определени календари" msgid "iCalendar events" msgstr "iCalendar ÑъбитиÑ" msgid "Date" msgstr "Дата" msgid "Time" msgstr "Време" msgid "Summary" msgstr "Резюме" msgid "Select output file" msgstr "Избор изходÑщ файл" msgid "The list will be cleared and all entries will be lost." msgstr "СпиÑъкът ще бъде изчиÑтен и вÑички запиÑи ще бъдат загубени." msgid "Done!" msgstr "Ðаправен !" msgid "event exported" msgid_plural "events exported" msgstr[0] "изнеÑено Ñъбитие" msgstr[1] "изнеÑени ÑъбитиÑ" msgid "iCalendar export" msgstr "iCalendar export" msgid "Day Selector" msgstr "Day Selector" msgid "Use date period" msgstr "Използване на период " msgid "Add" msgstr "ДобавÑне" msgid "Clear" msgstr "ИзчиÑтване" msgid "Remove" msgstr "Премахване" msgid "Output filename" msgstr "ИзходÑщо файлово име" msgid "Browse" msgstr "Преглед" msgid "Export" msgstr "ЕкÑпорт" msgid "no entries" msgstr "нÑма запиÑи" msgid "entry" msgid_plural "entries" msgstr[0] "запиÑ" msgstr[1] "запиÑи" msgid "Calendar notes" msgstr "Календарни бележки " msgid "Search" msgstr "ТърÑене" msgid "Filter" msgstr "Филтър" msgid "Current month" msgstr "Текущ меÑец" msgid "Selected month" msgstr "Избран меÑец" msgid "Selected year" msgstr "Избрана година" msgid "Selected month and year" msgstr "Избрани меÑец и година" msgid "All notes" msgstr "Ð’Ñички бележки" msgid "Case sensitive" msgstr "Case sensitive" msgid "Strikethrough past day notes" msgstr "Зачерване поÑледните бележки за денÑ" msgid "Note" msgstr "Бележка" msgid "Syntax" msgstr "СинтакÑиÑ" msgid "abbreviated weekday name" msgstr "Ñъкратено име на Ñедмичен ден" msgid "full weekday name" msgstr "Пълно име на Ñедмичен ден" msgid "abbreviated month name" msgstr "Ñъкратено име на меÑец" msgid "full month name" msgstr "пълно име на меÑеца" msgid "day of the month" msgstr "ден от меÑеца" msgid "MM/DD/YY" msgstr "ММ/ДД/ГГ" msgid "day of the month without leading zeros" msgstr "ден от меÑеца без нула отпред" msgid "year without century" msgstr "година без указване на век" msgid "year with century" msgstr "година ÑÑŠÑ ÑƒÐºÐ°Ð·Ð²Ð°Ð½Ðµ на век" msgid "Date header format" msgstr "Формат на дата" msgid "Set default format" msgstr "Задаване формат по подразбиране" msgid "Date format syntax" msgstr "СинтакÑÐ¸Ñ Ð½Ð° формата за дата" msgid "Day note marker" msgstr "Маркер дневна бележка" msgid "Event marker" msgstr "Маркер Събитие" msgid "Circle" msgstr "Кръг" msgid "Ellipse" msgstr "ЕлипÑа" msgid "Wave" msgstr "Вълна" msgid "Current day marker" msgstr "Маркер текущ ден" msgid "Arrow" msgstr "Стрелка" msgid "Free-hand circle" msgstr "Свободен кръг" msgid "Colors" msgstr "Цветове" msgid "Header color" msgstr "Главен цвÑÑ‚" msgid "Weekend days color" msgstr "ЦвÑÑ‚ на Ñедмичен ден" msgid "Cursor color" msgstr "КурÑор цвÑÑ‚" msgid "Event marker color" msgstr "ЦвÑÑ‚ за маркер на Ñъбитие " msgid "Current day marker color" msgstr "Текущ цвÑÑ‚ за маркер на денÑ" msgid "Birthday marker color" msgstr "цвÑÑ‚ за маркер на рожден ден" msgid "Date font" msgstr "Шрифт за дата" msgid "Calendar font" msgstr "Шрифт за календар" msgid "Note font" msgstr "Шрифт за бележки" msgid "Enable block cursor" msgstr "ПозволÑване на блок курÑор" msgid "Cursor thickness" msgstr "Дебелина на курÑора" msgid "Thin" msgstr "Тънко" msgid "Thick" msgstr "Дебело" msgid "Edit category" msgstr "Редактиране на категориÑ" msgid "Color" msgstr "ЦвÑÑ‚" msgid "Name" msgstr "Име" msgid "Select ICS file" msgstr "Избиране на ICS файл" msgid "All Files" msgstr "Ð’Ñички файлове" msgid "Calendar files (*.ics)" msgstr "Календарни файлове (*.ics)" msgid "Modify ICAL parameters" msgstr "ПромÑна на ICAL параметри" msgid "Filename" msgstr "Файлово име" msgid "Options" msgstr "Опций" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Валиден" msgid "Description" msgstr "ОпиÑание" msgid "Full date" msgstr "Full date" msgid "Mark" msgstr "Маркиране" msgid "Week start on Monday" msgstr "Седмицата започва от Понеделник" msgid "Show day names" msgstr "Покажи имената на дните" msgid "No month change" msgstr "Без промÑна на меÑец" msgid "Show week numbers" msgstr "Покажи Ñедмичните номера" msgid "Simple view in full-year calendar" msgstr "Обикновен изглед на целогодишниÑÑ‚ календар" msgid "Enable auxilary calendars" msgstr "Enable auxilary calendars" msgid "Ascending sorting in day notes browser" msgstr "ВъзходÑщо Ñортиране в браузъра на дневни бележки" msgid "Enable spell checker in day notes" msgstr "Разрешаване проврка на правопиÑа в дневни бележки" #, fuzzy msgid "Show seconds" msgstr "Секунди" msgid "Appearance" msgstr "Външен вид" msgid "Day categories" msgstr "Дневна категориÑ" msgid "iCalendar files" msgstr "iCalendar файлове" msgid "Show in day info panel" msgstr "Показване в инфо панела на денÑ" msgid "Name day" msgstr "Имена денÑ" msgid "Error printing" msgstr "Грешка при печатане" msgid "Printing properties" msgstr "СвойÑтва за печат" msgid "Month name" msgstr "Име на меÑеца" msgid "Day name" msgstr "Име на денÑ" msgid "Events" msgstr "СъбитиÑ" msgid "Fonts" msgstr "Шрифтове" msgid "Birthdays" msgstr "Рождени дни" msgid "Namedays" msgstr "Дневни имена" msgid "Visible events" msgstr "Видими ÑъбитиÑ" msgid "Padding" msgstr "Вложка" msgid "Event maximum length" msgstr "МакÑимална дължина на Ñъбитие" msgid "Page orientation:" msgstr "ÐžÑ€ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° Ñтраница:" msgid "Portrait" msgstr "Портрет" msgid "Landscape" msgstr "Пейзаж" msgid "Timeline" msgstr "ХронологиÑ" msgid "From (hour)" msgstr "From (hour)" msgid "Step (minutes)" msgstr "Step (minutes)" msgid "To (hour)" msgstr "To (hour)" msgid "No date" msgstr "Без дата" msgid "Rat" msgstr "Плъх" msgid "Ox" msgstr "Бивол" msgid "Tiger" msgstr "Тигър" msgid "Hare" msgstr "Заек" msgid "Dragon" msgstr "Дракон" msgid "Snake" msgstr "ЗмиÑ" msgid "Horse" msgstr "Кон" msgid "Sheep" msgstr "Овца" msgid "Monkey" msgstr "Маймуна" msgid "Fowl" msgstr "Петел" msgid "Dog" msgstr "Куче" msgid "Pig" msgstr "СвинÑ" msgid "Unknown" msgstr "Ðепознат" msgid "Aquarius" msgstr "Водолей" msgid "Pisces" msgstr "Риби" msgid "Aries" msgstr "Овен" msgid "Taurus" msgstr "Бик" msgid "Gemini" msgstr "Близнаци" msgid "Cancer" msgstr "Рак" msgid "Leo" msgstr "Лъв" msgid "Virgo" msgstr "Дева" msgid "Libra" msgstr "Везни" msgid "Scorpio" msgstr "Скорпион" msgid "Sagittarius" msgstr "Стрелец" msgid "Capricorn" msgstr "Козирог" msgid "Cannot perform selected operation." msgstr "Ðе може да Ñе изпълне избраната операциÑ." msgid "Task has been modified or removed." msgstr "Задачата е била променена или премахната" msgid "Remind me later" msgstr "Ðапомни ми по-къÑно" msgid "Done" msgstr "Ðаправено" msgid "postponed" msgstr "отложено" msgid "Show task" msgstr "Покажи задача" msgid "Alarm warning!" msgstr "Ðларма предупреждение !" msgid "Day note" msgstr "Дневна бележка" msgid "Type" msgstr "Тип" msgid "Event" msgstr "Събитие" msgid "Task" msgstr "Задача" msgid "Show Osmo" msgstr "Покажи OSMO" msgid "No birthdays defined" msgstr "ÐÑма дефинирани рожденни дни" msgid "Birthdays list" msgstr "ЛиÑта Ñ Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸ дни" msgid "Days to birthday" msgstr "Days to birthday" msgid "Age" msgstr "ВъзраÑÑ‚" msgid "Birthday date" msgstr "Роженна дата" msgid "today" msgstr "ДнеÑ" msgid "Please select address" msgstr "ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ адреÑ" msgid "Information" msgstr "ИнформациÑ" msgid "Work" msgstr "МеÑторабота" msgid "Home" msgstr "Домашен" msgid "Group" msgstr "Група" msgid "First name" msgstr "Име" msgid "Last name" msgstr "ФамилиÑ" msgid "Second name" msgstr "Бащино" msgid "Nickname" msgstr "ПрÑкор" msgid "Tags" msgstr "Етикети" msgid "Name day date" msgstr "Name day date" msgid "Home address" msgstr "Домашен адреÑ" msgid "Home postcode" msgstr "ПощенÑки код" msgid "Home city" msgstr "Град" msgid "Home state" msgstr "ОблаÑÑ‚" msgid "Home country" msgstr "Държава" msgid "Organization" msgstr "ОрганизациÑ" msgid "Department" msgstr "Отдел" msgid "Work address" msgstr "ÐÐ´Ñ€ÐµÑ Ð¿Ð¾ меÑторабота" msgid "Work postcode" msgstr "ПощенÑки код по меÑторабота" msgid "Work city" msgstr "Град по меÑторабота" msgid "Work state" msgstr "ОблаÑÑ‚ по меÑторабота" msgid "Work country" msgstr "Държава по меÑторабота" msgid "Fax" msgstr "ФакÑ" msgid "Home phone" msgstr "Домашен телефон" msgid "Home phone 2" msgstr "Домашен телефон 2" msgid "Home phone 3" msgstr "Домашен телефон 3" msgid "Home phone 4" msgstr "Домашен телефон 4" msgid "Work phone" msgstr "Телефон по меÑторабота" msgid "Work phone 2" msgstr "Телефон по меÑторабота 2" msgid "Work phone 3" msgstr "Телефон по меÑторабота 3" msgid "Work phone 4" msgstr "Телефон по меÑторабота 4" msgid "Cell phone" msgstr "Мобилен телефон" msgid "Cell phone 2" msgstr "Мобилен телефон 2" msgid "Cell phone 3" msgstr "Мобилен телефон 3" msgid "Cell phone 4" msgstr "Мобилен телефон 4" msgid "E-Mail" msgstr "E-Mail" msgid "E-Mail 2" msgstr "E-Mail 2" msgid "E-Mail 3" msgstr "E-Mail 3" msgid "E-Mail 4" msgstr "E-Mail 4" msgid "WWW" msgstr "WWW" msgid "WWW 2" msgstr "WWW 2" msgid "WWW 3" msgstr "WWW 3" msgid "WWW 4" msgstr "WWW 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Блог" msgid "Photo" msgstr "Снимка" msgid "Additional info" msgstr "Допълнителна информациÑ" msgid "New contact" msgstr "Ðов контакт" msgid "Remove contact" msgstr "Премахване на контакт" msgid "Edit contact" msgstr "Редактиране на контакт" msgid "Show birthdays" msgstr "Показване на рождени дни" msgid "Show contact location on the map" msgstr "Покажи локализациÑта на контакта на картата" msgid "Import contacts" msgstr "ВнеÑи цонтакти" msgid "Export contacts" msgstr "ИзнеÑи контакти" msgid "First Name" msgstr "Първо име" msgid "Last Name" msgstr "ФамилиÑ" msgid "All fields" msgstr "Ð’Ñички полета" msgid "Contact details" msgstr "Детайли за контакта" msgid "Close contact panel" msgstr "ЗатварÑне панела за контакта" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "изнеÑен контакт" msgstr[1] "изнеÑени контакти" msgid "Cannot create file." msgstr "Ðе може да Ñе Ñъздаде файл." msgid "Output format" msgstr "Изходен формат" msgid "Add header" msgstr "Добави главно" msgid "Fields to export" msgstr "Полета за изноÑ" msgid "All" msgstr "Ð’Ñичко" msgid "Invert" msgstr "Обръщане" msgid "Select fields" msgstr "Избирани полета" msgid "Select CSV file" msgstr "Избиране на CSV файл" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (comma-separated values) files (*.csv)" msgid "Please select file first." msgstr "ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ файл първо." msgid "Import type" msgstr "ВходÑщ тип" msgid "File" msgstr "Файл" msgid "Input filename" msgstr "ВходÑщо име на файл" msgid "Import" msgstr "ВнаÑÑне" msgid "Nothing to import." msgstr "Ðищо за внаÑÑне" msgid "contact added" msgid_plural "contacts added" msgstr[0] "добавен контакт" msgstr[1] "добавени контакти" msgid "of" msgstr "на" msgid "Record" msgstr "ЗапиÑ" msgid "Number fields per record" msgstr "Брой полета за запиÑ" msgid "Use first record as header" msgstr "Използвай първиÑÑ‚ Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° главен" msgid "Field type" msgstr "Тип поле" msgid "Value" msgstr "СтойноÑÑ‚" msgid "No records found in selected file." msgstr "ÐÑма намерен Ð·Ð°Ð¿Ð¸Ñ Ð²ÑŠÐ² избраниÑÑ‚ файл" msgid "Cannot read file." msgstr "файлът не може да Ñе прочете" msgid "Cannot open file." msgstr "Файлът не може да Ñе отвори" msgid "Selected contact will be removed." msgstr "Избор на контакт който ще бъде премахнат" msgid "Select photo" msgstr "Избор на Ñнимка" msgid "Address" msgstr "ÐдреÑи" msgid "Postcode" msgstr "ПощенÑки код" msgid "City" msgstr "Град" msgid "State" msgstr "ОблаÑÑ‚" msgid "Country" msgstr "Държава" msgid "Add contact" msgstr "ДобавÑне на контакт" msgid "Personal" msgstr "Личен" msgid "Phones" msgstr "Телефони" msgid "Internet" msgstr "Интернет" msgid "Color of contact tags" msgstr "ЦвÑÑ‚ за тагове на контакти" msgid "Color of links" msgstr "ЦвÑÑ‚ за връзки" msgid "Font size" msgstr "Размер на шрифта" msgid "Name font size" msgstr "Размер на шрифта име" msgid "Item font size" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° на шрифта" msgid "Photo size" msgstr "Размер на изображението" msgid "Small" msgstr "Малък" msgid "Medium" msgstr "Среден" msgid "Large" msgstr "ГолÑм" msgid "Hide group column" msgstr "Скриване колоната за група" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Разни" msgid "Groups" msgstr "Групи" msgid "Visible columns in birthday browser" msgstr "Показване колони в браузъра за рожден ден" msgid "Show calendar" msgstr "Показване календар" msgid "Show tasks" msgstr "Показвана задачи" msgid "Show contacts" msgstr "Показване на контакти" msgid "Show notes" msgstr "Показване на бележки" msgid "Show options" msgstr "Показване на опций" msgid "Show small calendar window" msgstr "Показване календара в малък прозорец" msgid "Check for events since last run" msgstr "Проверка за ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð¾Ñ‚ поÑледното изпълнение" msgid "Number of days to check forward for events (default: 0)" msgstr "Брой на дните за проверка на ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð½Ð°Ð¿Ñ€ÐµÐ´ (default: 0)" msgid "Set absolute path for settings and data files" msgstr "ÐаÑтройка на абÑолютниÑÑ‚ път за наÑтройки и файлове Ñ Ð´Ð°Ð½Ð½Ð¸" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "удобен личен органайзър" msgid "ERROR: Cannot create config files" msgstr "ГРЕШКÐ:Ðе могат да Ñе Ñъздадат конфигурациони файлове" msgid "Another copy of OSMO is already running." msgstr "Друга копие на OSMO във момента работи" msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Едновременото използване на два или повече ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° OSMO може да бъде " "причина за загуба на данни." msgid "Do you really want to continue?" msgstr "ÐайÑтина ли иÑкате да продължите" msgid "Warning" msgstr "Внимание" msgid "The note has changed." msgstr "Бележката бе променена" msgid "Do you want to save it?" msgstr "ИÑкате ли да Ñе запази?" #, fuzzy msgid "No URLs found in the selection..." msgstr "ÐÑма намерен Ð·Ð°Ð¿Ð¸Ñ Ð²ÑŠÐ² избраниÑÑ‚ файл" msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "ÐайÑтина ли иÑкате да продължите" msgid "Question" msgstr "ВъпроÑ" msgid "Words" msgstr "Думи" msgid "Lines" msgstr "Линий" msgid "Characters" msgstr "" msgid "White characters" msgstr "White characters" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Документ" msgid "Selection" msgstr "Избор" msgid "Created" msgstr "Създаване" msgid "Modified" msgstr "Модифициране" msgid "New note" msgstr "Ðова бележка" msgid "Add note" msgstr "ДобавÑне на бележка" msgid "Edit note" msgstr "Редактиране на бележка" msgid "Delete note" msgstr "Изтриване на бележка" msgid "Remove note" msgstr "Премахване на бележка" msgid "Find" msgstr "Ðамиране" msgid "Clear attributes" msgstr "ИзчиÑтване на атрибути" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Запазване на бележка" msgid "Insert current date and time" msgstr "Вмъкване на текуща дата и време" msgid "Insert separator" msgstr "ПоÑтавÑне на разделител" msgid "Statistics" msgstr "СтатиÑтики" msgid "Close editor" msgstr "ЗатварÑне на редактор" msgid "Toggle spell checker" msgstr "Превключване за правопиÑна проверка" msgid "Category" msgstr "КатегориÑ" msgid "Note name" msgstr "Име на бележка" msgid "Last changes" msgstr "ПоÑледни промени" msgid "Read-only" msgstr "Само за четене" msgid "Line" msgstr "ЛиниÑ" msgid "Column" msgstr "Колона" msgid "case sensitive" msgstr "case sensitive" msgid "Close find entry" msgstr "Close find entry" msgid "Edit entry" msgstr "Редактиране на запиÑ" msgid "Remember cursor position" msgstr "ЗапомнÑне позицÑта на курÑора" msgid "Selected note will be removed." msgstr "Избрана бележка за премахване" msgid "No further data recovery will be possible." msgstr "No further data recovery will be possible." msgid "Plain" msgstr "Plain" msgid "Encrypted" msgstr "Криптирана" msgid "Note type" msgstr "Тип на бележка" msgid "Cannot open the note." msgstr "Ðе може да Ñе отвори бележката" msgid "encryption support is disabled" msgstr "Подръжката за криптиране е забранена" msgid "Authorization" msgstr "Упълномощаване" msgid "Algorithm" msgstr "Ðлгоритъм" msgid "Hashing" msgstr "Hashing" msgid "Compression" msgstr "Свиване" msgid "Ratio" msgstr "ПропорциÑ" msgid "Fast" msgstr "Бързо" msgid "Good" msgstr "Добро" msgid "Best" msgstr "Ðай-добро" msgid "Remember the last selected category" msgstr "ЗапомнÑне на поÑледната избрана категориÑ" msgid "Use system format for date and time" msgstr "Използване на ÑиÑтемниÑÑ‚ формат за дата и време" msgid "Encryption" msgstr "Шифроване" msgid "Visible columns" msgstr "Видими колони" msgid "Categories" msgstr "Категорий" msgid "Notes options" msgstr "Опций за бележки" msgid "Osmo has to be restarted to take effect." msgstr "OSMO трÑбва да Ñе реÑтартира за да Ñе приложат промените " msgid "Layout" msgstr "Разпределение" msgid "Vertical" msgstr "Вертикално" msgid "Horizontal" msgstr "Хоризонтално" msgid "Tabs position" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð·Ð° табовете" msgid "Left" msgstr "ЛÑво" msgid "Right" msgstr "ДÑÑно" msgid "Top" msgstr "Горе" msgid "Bottom" msgstr "Доло" #, fuzzy msgid "Use default stock icons" msgstr "Използване иконите по подразбиране (необходимо е реÑтартиране)" msgid "Disable underline in links" msgstr "Изключване подчертаване във връзки" msgid "Draw rows in alternating colors" msgstr "Ðачертаване на редове в редуване на цветове" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "Ðай-малко един модул трÑбва д аÑе вижда." msgid "Override locale settings" msgstr "ЗамÑна на локалните наÑтройки" msgid "Date format" msgstr "Формат за дата" msgid "DD-MM-YYYY" msgstr "ДД-ММ-ГГГГ" msgid "MM-DD-YYYY" msgstr "ММ-ДД-ГГГГ" msgid "YYYY-MM-DD" msgstr "ГГГГ-ММ-ДД" msgid "YYYY-DD-MM" msgstr "ГГГГ-ДД-ММ" msgid "Time format" msgstr "Формат за време" msgid "hours" msgstr "чаÑове" msgid "Spell checker language" msgstr "Проверка за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ " msgid "Enable tooltips" msgstr "Разрешаване на Ñъвети" msgid "Remember last selected page" msgstr "ЗапомнÑне на поÑледната избрана Ñтраница" msgid "Save data after every modification" msgstr "Запазване на даните Ñлед вÑÑка модификациÑ" msgid "Web browser" msgstr "Web browser" msgid "E-mail client" msgstr "E-mail client" msgid "Sound player" msgstr "Sound player" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Схемите %s ще бъдат заменени Ñ ÑƒÐµÐ± адреÑ" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Схемите %s ще бъдат заменени ÑÑŠÑ Ð¸Ð¼ÐµÐ¹Ð» адреÑ" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "The %s pattern will be replaced with sound filename" msgid "Enable system tray" msgstr "Разрешаване на ÑиÑтемна облаÑÑ‚" msgid "Start minimised" msgstr "Стартиране минимализирано" msgid "Blink on events" msgstr "Мигане при Ñъбитие" msgid "Ignore day note events" msgstr "Игнориране на Ñъбитие от дневна бележка" msgid "Hide" msgstr "Скриване" msgid "Helpers" msgstr "Помощници" msgid "System tray" msgstr "System tray" msgid "Edit" msgstr "Редактиране" msgid "Go Down" msgstr "Отиди долу" msgid "Select date" msgstr "Избиране на дата" msgid "Select font" msgstr "Избиране на фонд" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Калкулатор" msgid "Edit day note" msgstr "Редактиране на дневна бележка" msgid "Save" msgstr "Запазване" msgid "Display full-year calendar" msgstr "Показване на целогодишен календар" msgid "Help" msgstr "Помощ" msgid "Invalid item" msgstr "Ðевалиден елемент" msgid "Valid item" msgstr "Валиден елемент" msgid "Edit task" msgstr "Редактиране на задача" msgid "Remove task" msgstr "Премахване на задача" msgid "Import tasks" msgstr "ВнаÑÑне на задача" msgid "Export tasks" msgstr "ИзнаÑÑне на задача" msgid "Change to previous date" msgstr "СмÑна към предишна дата" msgid "Change to next date" msgstr "СмÑна към Ñледваща дата" msgid "Print" msgstr "Печатане" msgid "Normal" msgstr "Ðормално" msgid "Recurrent" msgstr "ПовтарÑщи" msgid "Started" msgstr "Стартирани" msgid "Finished" msgstr "Завършени" msgid "All items" msgstr "Ð’Ñички елементи" msgid "New task" msgstr "Ðова задача" msgid "Change due date to previous date" msgstr "ПромÑна на крайниÑÑ‚ Ñрок към предишна дата" msgid "Change due date to next date" msgstr "ПромÑна на крайниÑÑ‚ Ñрок към Ñледваща дата" msgid "Print visible tasks list" msgstr "Печатане на видимите задачи" msgid "Due date" msgstr "Краен Ñрок" msgid "Priority" msgstr "Приоритет" msgid "Task details" msgstr "Детайли на задачата" msgid "Close description panel" msgstr "ЗатварÑне панела Ñ Ð¾Ð¿Ð¸Ñание" msgid "No tasks with defined date found." msgstr "ÐÑма намерени задачи Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ñ‚Ð° дата." msgid "Save tasks" msgstr "Запазване на задачи" msgid "tasks exported" msgstr "изнеÑени задачи" msgid "Please select at least one day when recurrency is enabled." msgstr "Изберете поне един ден когато recurrency е разрешено" msgid "Set time" msgstr "ÐаÑтройка на време" msgid "Tomorrow" msgstr "Утре" msgid "Selected task will be removed." msgstr "Избрани задачи който ще бъдат премахнати" msgid "Basic" msgstr "ОÑновно" msgid "Select date and time" msgstr "Избиране дата и време" msgid "Low" msgstr "ÐиÑко" msgid "High" msgstr "ВиÑоко" msgid "Enable sound notification" msgstr "Разрешаване на звуково оповеÑÑ‚Ñване" #, fuzzy msgid "Enable notification dialog" msgstr "Разрешаване на звуково оповеÑÑ‚Ñване" msgid "Advanced" msgstr "Разширено търÑене" msgid "Alarm warning" msgstr "Ðларма предупреждение" msgid "Postpone time" msgstr "Отлагане " msgid "Alarm command" msgstr "Alarm command" msgid "Recurrent task" msgstr "ПовтарÑщи Ñе задачи" msgid "Enable" msgstr "Позволи" msgid "Start" msgstr "Старт" msgid "End" msgstr "Край" msgid "Interval" msgstr "Интервал" msgid "Time period" msgstr "Времеви период" msgid "Date period" msgstr "Период за дата" msgid "Repeat" msgstr "Повторение" msgid "Repeat in the following days" msgstr "Повторение във Ñледващите дни" msgid "Ignore alarm when task expired offline" msgstr "Игнорирай алармата когато Ñрока е изтекъл" msgid "Select a font..." msgstr "Избиране на шрифт..." msgid "Color of items that are due today" msgstr "ЦвÑÑ‚ на артикулите за днеÑ" msgid "Color of items that are due in the next 7 days" msgstr "ЦвÑÑ‚ на артикулите които предÑтоÑÑ‚ в Ñледващите 7 дена" msgid "Color of items that are past due" msgstr "ЦвÑÑ‚ на артикулите които Ñа проÑрочени" msgid "Task info font" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° шрифта на задачата" msgid "Show in bold tasks with high priority" msgstr "Покази във bold задачите Ñ Ð²Ð¸Ñок приоритет" msgid "Hide completed tasks" msgstr "Скриване на приключените задачи" msgid "Delete completed tasks without confirmation" msgstr "Изтриване на приключени задачи без предупреждение" msgid "Add new task when double clicked on tasks list" msgstr "ДобавÑне на нова задача при двойно кликане върху ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" msgid "minutes" msgstr "минути" msgid "0 for disable" msgstr "0 за забранените" msgid "Repeat sound alarm" msgstr "Повторение звуковата аларма" msgid "times" msgstr "времена" msgid "Global notification command" msgstr "Глобална уведомителна команда" msgid "Tasks options" msgstr "Опций задачи" msgid "Reminder options" msgstr "Опций за напомнÑне" msgid "Tasks list" msgstr "ЛиÑта ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" # е Ñъкращение на думата "номер" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "No." msgid "New Moon" msgstr "Ðоволуние" msgid "Waxing Crescent Moon" msgstr "ПолумоÑец" msgid "Quarter Moon" msgstr "Първа четвърт" msgid "Waxing Gibbous Moon" msgstr "ПолумеÑец" msgid "Full Moon" msgstr "Пълнолуние" msgid "Waning Gibbous Moon" msgstr "ПолумеÑец" msgid "Last Quarter Moon" msgstr "ПоÑледна четвърт " msgid "Waning Crescent Moon" msgstr "ПолумеÑец" msgid "Error" msgstr "Грешка" msgid "Selected file exist! Overwrite?" msgstr "ИзбраниÑÑ‚ файл ÑъщеÑтвува.ЗамÑна?" #~ msgid "Select and show first item after search" #~ msgstr "Избиране и показване на първата точка Ñлед търÑене" #~ msgid "Order" #~ msgstr "Ред" #~ msgid "Mode" #~ msgstr "Режим" #~ msgid "Ascending" #~ msgstr "ВъзходÑщ" #~ msgid "Descending" #~ msgstr "ÐизходÑщ" #~ msgid "Sorting" #~ msgstr "Сортиране" #~ msgid "Contact map location" #~ msgstr "Карта на Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð° контакта" osmo-0.2.14/po/Makefile.am000664 001750 001750 00000002477 12561325524 015216 0ustar00pasppasp000000 000000 AUTOMAKE_OPTIONS = -Wno-portability DOMAIN = osmo POTFILES = $(wildcard ../src/*.c ../src/*.h) MSGFMT = msgfmt XGETTEXT = xgettext MSGMERGE = msgmerge XGETTEXT_OPTS = --keyword=_ --keyword=N_ --keyword=X_ --add-comments=TRANSLATORS: --no-location POFILES = bg.po ca.po cs.po da.po de.po el.po en_GB.po es.po fi.po fr.po gl.po gl_ES.po he.po hu.po \ it.po ja.po lt.po nl.po pl.po pt.po pt_BR.po ro.po ru.po sr.po sv.po te.po tr.po uk.po \ ur.po ur_PK.po zh_CN.po MOFILES = $(POFILES:.po=.mo) EXTRA_DIST = $(POFILES) $(MOFILES) LOCALEDIR = $(datadir)/locale all: $(MOFILES) update-po: $(DOMAIN).pot $(POFILES) $(MOFILES) %.mo: skip @po=$(@:.mo=.po); if test $$po -nt $@ ; then $(MSGFMT) -c --statistics $$po -o $@; echo "$@ updated."; fi %.po: $(DOMAIN).pot $(MSGMERGE) $@ $< -o $@.in && mv $@.in $@ $(DOMAIN).pot: $(POTFILES) @$(XGETTEXT) $(XGETTEXT_OPTS) $(POTFILES) -o $(DOMAIN).pot install-data-local: $(MOFILES) for i in $(MOFILES); do \ lang=`echo $$i | sed 's/\.mo$$//'`; \ $(mkinstalldirs) ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES; \ $(INSTALL_DATA) $$i ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done uninstall-local: for i in $(MOFILES); do \ lang=`echo $$i | sed 's/\.mo$$//'`; \ rm -f ${DESTDIR}${LOCALEDIR}/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ done clean-local: rm -rf *.mo skip: osmo-0.2.14/po/tr.po000664 001750 001750 00000107674 12561325524 014154 0ustar00pasppasp000000 000000 # Turkish translation of Osmo # This file is distributed under the same license as the Osmo package. # Hasan Yılmaz , 2009. # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2009-08-16 10:55+0200\n" "Last-Translator: Hasan Yılmaz \n" "Language-Team: Hedef Türkçe \n" "Language: tr\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" msgid "About" msgstr "Hakkında" msgid "Close" msgstr "Kapat" msgid "Ctrl+PageUp" msgstr "" msgid "switch to previous tab" msgstr "önceki sekmeye geç" msgid "Ctrl+PageDn" msgstr "" msgid "switch to next tab" msgstr "sonraki sekmeye geç" msgid "switch to selected page" msgstr "seçili sayfaya geç" #, fuzzy msgid "show options window" msgstr "Seçenekleri göster" msgid "show about window" msgstr "" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "" msgid "switch page in options and about tab" msgstr "seçenekler ve hakkında sekmesinde sayfayı deÄŸiÅŸtir" msgid "exit" msgstr "çık" #, fuzzy msgid "Space" msgstr "Kaydet" msgid "select current date" msgstr "ÅŸimdiki tarihi seç" msgid "Ctrl+Space" msgstr "" msgid "toggle personal data visibility" msgstr "kiÅŸisel veri görünürlüğünü deÄŸiÅŸtir" #, fuzzy msgid "Arrows" msgstr "Ok" msgid "change day" msgstr "günü deÄŸiÅŸtir" msgid "Ctrl+Up/Down" msgstr "" msgid "scroll the contents in the day info panel" msgstr "günlük bilgi panelinde içeriÄŸi kaydırır" msgid "change month" msgstr "ayı deÄŸiÅŸtir" #, fuzzy msgid "Home/End" msgstr "Ev" msgid "change year" msgstr "yılı deÄŸiÅŸtir" msgid "toggle calendars for the previous and next month" msgstr "takvimlerde önceki ve sonraki ay bilgisini açıp kapar" msgid "day notes browser" msgstr "günlük not gezgini" msgid "assign background color to day note" msgstr "günlük nota artalan rengi ata" msgid "date calculator" msgstr "tarih hesaplayıcı" msgid "show full-year calendar" msgstr "tüm-yıl takvimini göster" msgid "jump to date" msgstr "tarihe zıpla" #, fuzzy msgid "Delete" msgstr "Notu sil" msgid "remove day note" msgstr "günlük notu kaldır" #, fuzzy msgid "Alt+Arrows" msgstr "Ok" msgid "Esc" msgstr "" msgid "close editor" msgstr "düzenleyiciyi kapat" msgid "toggle bold" msgstr "koyulaÅŸtır" msgid "toggle italic" msgstr "italik" msgid "toggle underline" msgstr "altını çiz" msgid "toggle strikethrough" msgstr "üstünü çiz" msgid "toggle highlight" msgstr "vurgula" msgid "Arrows Up/Down" msgstr "" msgid "toggle alternative view" msgstr "öteki görünüm" msgid "year info" msgstr "yıl bilgisi" msgid "set current year" msgstr "ÅŸimdiki yılı ayarla" msgid "close full-year calendar" msgstr "tüm-yıl takvimini kapat" #, fuzzy msgid "Alt+a, Insert" msgstr "Dahil et" msgid "add task" msgstr "görev ekle" msgid "Alt+e, Ctrl+Enter" msgstr "" msgid "edit task" msgstr "görevi düzenle" msgid "Alt+r, Delete" msgstr "" msgid "remove task" msgstr "görevi kaldır" msgid "toggle hidden tasks" msgstr "gizli görevleri açıp kapatır" msgid "activate search field" msgstr "arama alanını etkinleÅŸtir" #, fuzzy msgid "Left, Right" msgstr "SaÄŸ" msgid "change category filter" msgstr "kategori süzgecini deÄŸiÅŸtir" msgid "close task info panel" msgstr "görev bilgi panelini kapar" msgid "Insert" msgstr "Dahil et" msgid "add contact" msgstr "kiÅŸi ekle" msgid "Ctrl+Enter" msgstr "" msgid "edit contact" msgstr "kiÅŸi düzenle" msgid "remove contact" msgstr "kiÅŸiyi kaldır" msgid "change search mode" msgstr "arama kipini deÄŸiÅŸtir" msgid "close contact details panel" msgstr "kiÅŸi ayrıntıları panelini kapat" #, fuzzy msgid "Enter" msgstr "İnternet" msgid "open note" msgstr "notu aç" msgid "add note" msgstr "not ekle" msgid "remove note" msgstr "notu kaldır" msgid "edit note name and category" msgstr "not adını ve kategorisini düzenle" msgid "close note editor" msgstr "not düzenleyiciyi kapat" msgid "save note" msgstr "notu kaydet" msgid "find text" msgstr "metni bul" msgid "clear selection attributes" msgstr "seçimin özniteliklerini temizle" #, fuzzy msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO kullanıcı rahatlığını hatırda tutmak için tasarlanmıştır, bu noktada " "birçok kısayol vardır. Tam liste:" msgid "General" msgstr "Genel" msgid "Calendar" msgstr "Takvim" msgid "Note editor" msgstr "Not düzenleyici" msgid "Full-year calendar" msgstr "Tüm-yıl takvimi" msgid "Tasks" msgstr "Görevler" msgid "Contacts" msgstr "KiÅŸiler" msgid "Notes" msgstr "Notlar" msgid "Selector" msgstr "Seçici" msgid "Editor" msgstr "Düzenleyici" msgid "A handy personal organizer" msgstr "Kullanışlı bir kiÅŸisel bilgi yöneticisi" msgid "compiled on" msgstr "derlendiÄŸi tarih" msgid "Programming" msgstr "Programlama" msgid "Graphics" msgstr "Çizgeleme" msgid "Contributors" msgstr "Katkıda bulunanlar" msgid "Translators" msgstr "Çevirmenler" msgid "Mailing lists" msgstr "Posta listeleri" msgid "Bug tracker" msgstr "Yanlış izleyici" msgid "Feature requests" msgstr "Özellik istekleri" msgid "Available modules" msgstr "Kullanılır birimler" msgid "Compiled-in features" msgstr "Derleme özellikleri" msgid "iCalendar support" msgstr "iCalendar desteÄŸi" msgid "Encrypted notes support" msgstr "ÅžifrelenmiÅŸ not desteÄŸi" msgid "Backup support" msgstr "Yedekleme desteÄŸi" msgid "Printing support" msgstr "Yazdırma desteÄŸi" msgid "Spell checker support" msgstr "İmla denetimi desteÄŸi" msgid "version" msgstr "sürüm" msgid "SVN revision" msgstr "SVN deÄŸiÅŸimi" msgid "Key shortcuts" msgstr "Kısayollar" msgid "License" msgstr "Lisans" msgid "Save backup" msgstr "Yedek kaydet" msgid "Password protection" msgstr "Parola koruma" msgid "Enter password" msgstr "Parola gir" msgid "Re-enter password" msgstr "Parolayı yeniden gir" msgid "Please enter the password" msgstr "Lütfen parolayı girin" msgid "Passwords do not match!" msgstr "Parolalar eÅŸleÅŸmiyor!" msgid "Cannot create backup!" msgstr "Yedek oluÅŸturulamadı!" msgid "Backup file saved successfully!" msgstr "Yedek baÅŸarıyla kaydedildi!" msgid "Open backup file" msgstr "Yedekleme dosyasını aç" msgid "Osmo backup files (*.bck)" msgstr "Osmo yedekleme dosyaları (*.bck)" msgid "This is not Osmo backup file" msgstr "Bu bir Osmo yedekleme dosyası deÄŸil" msgid "Incorrect password!" msgstr "Geçersiz parola!" msgid "All your data will be replaced with backup file content." msgstr "Bütün veriniz yedekleme dosyası içeriÄŸi ile deÄŸiÅŸtirilecek." msgid "Are you sure?" msgstr "Emin misiniz?" msgid "Osmo has to be restarted now..." msgstr "Osmo ÅŸimdi yeniden baÅŸlatılmak zorunda..." msgid "was born" msgstr "doÄŸumlu" msgid "year old" msgid_plural "years old" msgstr[0] "yaşında" msgid "Current time" msgstr "Åžimdiki saat" msgid "Day number" msgstr "Gün sayısı" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "gün kaldı, yıl sonuna kadar " msgid "the last day of the year" msgstr "yılın son günü" msgid "Today distance" msgstr "Bugüne uzaklık" msgid "Week number" msgstr "Hafta sayısı" msgid "Marked days" msgstr "İşaretli günler" msgid "Weekend days" msgstr "Haftasonu günleri" msgid "Moon phase" msgstr "Ayın evresi" msgid "Zodiac sign" msgstr "Burçlar" msgid "Day notes" msgstr "Günlük notlar" msgid "Day tasks" msgstr "Günlük görevler" msgid "Birthday" msgstr "DoÄŸum günü" msgid "Day category" msgstr "Gün kategorisi" msgid "Selected day note will be removed." msgstr "Seçili günlük not kaldırılacak." msgid "Continue?" msgstr "Devam?" msgid "Previous year" msgstr "Önceki yıl" msgid "Previous month" msgstr "Önceki ay" msgid "Previous day" msgstr "Önceki gün" msgid "Today" msgstr "Bugün" msgid "Next day" msgstr "Sonraki gün" msgid "Next month" msgstr "Sonraki ay" msgid "Next year" msgstr "Sonraki yıl" msgid "Jump to date" msgstr "Tarihe atla" msgid "Print calendar" msgstr "Takvimi yazdır" msgid "Date calculator" msgstr "Tarih hesaplayıcı" #, fuzzy msgid "Backup data" msgstr "Yedek" #, fuzzy msgid "Restore data" msgstr "Geri yükle" msgid "Preferences" msgstr "YeÄŸlenenler" msgid "Quit" msgstr "Çık" msgid "Toggle day note panel" msgstr "Günlük not panelini aç-kapa" msgid "Add task" msgstr "Görev ekle" msgid "Select day color" msgstr "Gün rengini seçin" msgid "Browse notes" msgstr "Notlara göz at" msgid "Browse iCal events" msgstr "iCal olaylarına göz at" msgid "Export to iCal file" msgstr "iCal dosyasına aktar" msgid "Previous and next month" msgstr "Önceki ve sonraki ay" msgid "Close note panel" msgstr "Not panelini kapat" msgid "Highlight" msgstr "Vurgulu" msgid "Strikethrough" msgstr "Üstü çizgili" msgid "Underline" msgstr "Altı çizgili" msgid "Italic" msgstr "İtalik" msgid "Bold" msgstr "Koyu" msgid "Insert timeline" msgstr "Zaman çizelgesi ekle" msgid "Clear text" msgstr "Metni temizle" msgid "Info" msgstr "Bilgi" msgid "Select color" msgstr "Renk seç" msgid "None" msgstr "Hiçbiri" msgid "Cancel" msgstr "Vazgeç" msgid "OK" msgstr "Tamam" msgid "year" msgid_plural "years" msgstr[0] "yıl" msgid "month" msgid_plural "months" msgstr[0] "ay" msgid "day" msgid_plural "days" msgstr[0] "gün" msgid "hour" msgid_plural "hours" msgstr[0] "saat" msgid "minute" msgid_plural "minutes" msgstr[0] "dakika" msgid "second" msgid_plural "seconds" msgstr[0] "saniye" msgid "or" msgstr "veya" msgid "rounded down" msgstr "aÅŸağı yuvarlandı" msgid "week" msgid_plural "weeks" msgstr[0] "hafta" msgid "working day" msgid_plural "working days" msgstr[0] "iÅŸ günü" msgid "time is ignored" msgstr "zaman yok sayıldı" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Hafta sonu günü" msgid "This calculator only supports dates after year 1." msgstr "Hesaplayıcı sadece 1 yıldan sonraki tarihleri destekliyor." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Hafta sonu günü yok sayıldı" msgid "Year" msgstr "Yıl" msgid "Month" msgstr "Ay" msgid "Day" msgstr "Gün" msgid "Current date" msgstr "Åžimdiki tarih" msgid "Set current date" msgstr "Åžimdiki tarihi ayarla" msgid "Hour" msgstr "Saat" msgid "Minute" msgstr "Dakika" msgid "Second" msgstr "Saniye" msgid "Set current time" msgstr "Åžimdiki saati ayarla" msgid "Reset time" msgstr "Saati sıfırla" msgid "First date and time" msgstr "Birinci tarih ve saat" msgid "Second date and time" msgstr "İkinci tarih ve saat" msgid "Alternative time units" msgstr "Alternatif zaman birimleri" msgid "Result" msgstr "Sonuç" msgid "Duration between two dates" msgstr "İki tarih arasındaki süre" msgid "Operation" msgstr "İşlem" msgid "add" msgstr "ekle" msgid "subtract" msgstr "çıkar" msgid "Date and time to add or subtract from" msgstr "Tarih ya da saat eklenecek veya çıkarılacak" msgid "Years" msgstr "Yıl" msgid "Months" msgstr "Ay" msgid "Days" msgstr "Gün" msgid "Weeks" msgstr "Hafta" msgid "Hours" msgstr "Saat" msgid "Minutes" msgstr "Dakika" msgid "Seconds" msgstr "Saniye" msgid "Ignore weekend days" msgstr "Hafta sonu günlerini yok say" msgid "Reset fields" msgstr "Alanları sıfırla" msgid "Time to add or subtract" msgstr "Eklenecek ya da çıkarılacak zaman" msgid "Jump to" msgstr "Zıpla" msgid "Add to or subtract from a date" msgstr "Tarihe ekle veya tarihten çıkar" msgid "Leap year" msgstr "Artık yıl" msgid "Yes" msgstr "Evet" msgid "No" msgstr "Hayır" msgid "Chinese year animal" msgstr "Çin hayvan yılı" msgid "Number of days" msgstr "Gün sayısı" msgid "Number of weeks" msgstr "Hafta sayısı" msgid "Number of weekend days" msgstr "Haftasonu günleri sayısı" msgid "Year info" msgstr "Yıl bilgisi" msgid "Current year" msgstr "Åžimdiki yıl" msgid "Alternative view" msgstr "Alternatif görünüm" msgid "event" msgid_plural "events" msgstr[0] "olay" msgid "No valid calendars defined" msgstr "Geçerli tanımlanmış takvim yok" msgid "iCalendar events" msgstr "iCalendar olayları" msgid "Date" msgstr "Tarih" msgid "Time" msgstr "Zaman" msgid "Summary" msgstr "Özet" msgid "Select output file" msgstr "Çıktı dosyasını seç" msgid "The list will be cleared and all entries will be lost." msgstr "Bu liste temizlenecek ve tüm giriÅŸler kaybedilecek." msgid "Done!" msgstr "Yapıldı!" msgid "event exported" msgid_plural "events exported" msgstr[0] "olay dışa aktarıldı" msgid "iCalendar export" msgstr "iCalendar dışa aktarımı" msgid "Day Selector" msgstr "Gün Seçici" msgid "Use date period" msgstr "Kullanılan tarih dönemi" msgid "Add" msgstr "Ekle" msgid "Clear" msgstr "Temizle" msgid "Remove" msgstr "Kaldır" msgid "Output filename" msgstr "Çıktı dosyası adı" msgid "Browse" msgstr "Göz at" msgid "Export" msgstr "Dışa aktar" msgid "no entries" msgstr "giriÅŸ olmadı" msgid "entry" msgid_plural "entries" msgstr[0] "giriÅŸ" msgid "Calendar notes" msgstr "Takvim notları" msgid "Search" msgstr "Ara" msgid "Filter" msgstr "Süzgeç" msgid "Current month" msgstr "Åžimdiki ay" msgid "Selected month" msgstr "Seçili ay" msgid "Selected year" msgstr "Seçili yıl" msgid "Selected month and year" msgstr "Seçili ay ve yıl" msgid "All notes" msgstr "Tüm notlar" msgid "Case sensitive" msgstr "Büyük-küçük harfe duyarlı" msgid "Strikethrough past day notes" msgstr "Üstü çizgili geçmiÅŸ günlük notlar" msgid "Note" msgstr "Not" msgid "Syntax" msgstr "" msgid "abbreviated weekday name" msgstr "" msgid "full weekday name" msgstr "" msgid "abbreviated month name" msgstr "" #, fuzzy msgid "full month name" msgstr "Ay adı" msgid "day of the month" msgstr "" #, fuzzy msgid "MM/DD/YY" msgstr "AA-GG-YYYY" msgid "day of the month without leading zeros" msgstr "" msgid "year without century" msgstr "" msgid "year with century" msgstr "" #, fuzzy msgid "Date header format" msgstr "Tarih biçimi" #, fuzzy msgid "Set default format" msgstr "Çıktı biçimi" #, fuzzy msgid "Date format syntax" msgstr "Tarih biçimi" msgid "Day note marker" msgstr "Günlük not imleci" msgid "Event marker" msgstr "Olay imleci" msgid "Circle" msgstr "Çember" msgid "Ellipse" msgstr "Elips" msgid "Wave" msgstr "Dalga" msgid "Current day marker" msgstr "Geçerli gün imleci" msgid "Arrow" msgstr "Ok" msgid "Free-hand circle" msgstr "Elle çizilmiÅŸ çember" msgid "Colors" msgstr "Renkler" msgid "Header color" msgstr "BaÅŸlık rengi" msgid "Weekend days color" msgstr "Hafta sonu günleri rengi" msgid "Cursor color" msgstr "İmleç rengi" msgid "Event marker color" msgstr "Olay imleci rengi" msgid "Current day marker color" msgstr "Mevcut gün imleci rengi" msgid "Birthday marker color" msgstr "DoÄŸum günü iÅŸaretleyici rengi" msgid "Date font" msgstr "Tarih yazıyüzü" msgid "Calendar font" msgstr "Takvim yazıyüzü" msgid "Note font" msgstr "Not yazıyüzü" msgid "Enable block cursor" msgstr "Dikdörtgen imleci etkinleÅŸtir" msgid "Cursor thickness" msgstr "İmleç kalınlığı" msgid "Thin" msgstr "İnce" msgid "Thick" msgstr "Kalın" #, fuzzy msgid "Edit category" msgstr "Gün kategorisi" msgid "Color" msgstr "Renk" msgid "Name" msgstr "Ad" msgid "Select ICS file" msgstr "ICS dosyası seçin" msgid "All Files" msgstr "Tüm dosyalar" msgid "Calendar files (*.ics)" msgstr "Takvim dosyaları (*.ics)" msgid "Modify ICAL parameters" msgstr "ICAL deÄŸiÅŸtirgelerini belirle" msgid "Filename" msgstr "Dosya adı" msgid "Options" msgstr "Seçenekler" msgid "Disabled" msgstr "" msgid "Valid" msgstr "Geçerli" msgid "Description" msgstr "Açıklama" msgid "Full date" msgstr "Tam tarih" msgid "Mark" msgstr "İşaretle" msgid "Week start on Monday" msgstr "Hafta Pazartesi ile baÅŸlasın" msgid "Show day names" msgstr "Gün adlarını göster" msgid "No month change" msgstr "Ay deÄŸiÅŸikliÄŸi yok" msgid "Show week numbers" msgstr "Hafta sayısını göster" msgid "Simple view in full-year calendar" msgstr "Tüm-yıl takviminde basit görünüm" msgid "Enable auxilary calendars" msgstr "Yardımcı takvimleri etkinleÅŸtir" msgid "Ascending sorting in day notes browser" msgstr "Günlük not tarayıcısında artan sıralama" msgid "Enable spell checker in day notes" msgstr "Günlük notlarda imla denetimini etkinleÅŸtir" #, fuzzy msgid "Show seconds" msgstr "Saniye" msgid "Appearance" msgstr "Görünüm" msgid "Day categories" msgstr "Gün kategorileri" msgid "iCalendar files" msgstr "iCalendar dosyaları" msgid "Show in day info panel" msgstr "Günlük bilgi panelinde göster" msgid "Name day" msgstr "Ad günü" msgid "Error printing" msgstr "Yazdırmada hata" msgid "Printing properties" msgstr "Yazıcı özellikleri" msgid "Month name" msgstr "Ay adı" msgid "Day name" msgstr "Gün adı" msgid "Events" msgstr "Olaylar" msgid "Fonts" msgstr "Yazıyüzleri" msgid "Birthdays" msgstr "DoÄŸum günleri" msgid "Namedays" msgstr "Adgünleri" msgid "Visible events" msgstr "Görünür olaylar" msgid "Padding" msgstr "Dolgu" msgid "Event maximum length" msgstr "Olayın azami uzunluÄŸu" msgid "Page orientation:" msgstr "Sayfa yönü:" msgid "Portrait" msgstr "Düşey" msgid "Landscape" msgstr "Yatay" msgid "Timeline" msgstr "Zaman çizelgesi" msgid "From (hour)" msgstr "İlk (saat)" msgid "Step (minutes)" msgstr "Tekrar (dakika)" msgid "To (hour)" msgstr "Son (saat)" msgid "No date" msgstr "Tarih yok" msgid "Rat" msgstr "Fare" msgid "Ox" msgstr "Öküz" msgid "Tiger" msgstr "Kaplan" msgid "Hare" msgstr "TavÅŸan" msgid "Dragon" msgstr "Ejderha" msgid "Snake" msgstr "Yılan" msgid "Horse" msgstr "At" msgid "Sheep" msgstr "Koyun" msgid "Monkey" msgstr "Maymun" msgid "Fowl" msgstr "Tavuk" msgid "Dog" msgstr "Köpek" msgid "Pig" msgstr "Domuz" msgid "Unknown" msgstr "Bilinmeyen" msgid "Aquarius" msgstr "Kova" msgid "Pisces" msgstr "Balık" msgid "Aries" msgstr "Koç" msgid "Taurus" msgstr "BoÄŸa" msgid "Gemini" msgstr "İkizler" msgid "Cancer" msgstr "Yengeç" msgid "Leo" msgstr "Aslan" msgid "Virgo" msgstr "BaÅŸak" msgid "Libra" msgstr "Terazi" msgid "Scorpio" msgstr "Akrep" msgid "Sagittarius" msgstr "Yay" msgid "Capricorn" msgstr "OÄŸlak" msgid "Cannot perform selected operation." msgstr "Seçilen iÅŸlem gerçekleÅŸtirilemiyor." msgid "Task has been modified or removed." msgstr "Görev deÄŸiÅŸtirilmiÅŸ ya da kaldırılmış." msgid "Remind me later" msgstr "Daha sonra hatırlat" msgid "Done" msgstr "Yapıldı" msgid "postponed" msgstr "ertelendi" msgid "Show task" msgstr "Görevi göster" msgid "Alarm warning!" msgstr "Alarm uyarısı!" msgid "Day note" msgstr "Günlük not" msgid "Type" msgstr "Tür" msgid "Event" msgstr "Olay" msgid "Task" msgstr "Görev" msgid "Show Osmo" msgstr "Osmo'yu göster" msgid "No birthdays defined" msgstr "DoÄŸum günü tanımlanmadı" msgid "Birthdays list" msgstr "DoÄŸum günü listesi" msgid "Days to birthday" msgstr "DoÄŸum gününe kalan gün" msgid "Age" msgstr "YaÅŸ" msgid "Birthday date" msgstr "DoÄŸum günü tarihi" msgid "today" msgstr "bugün" msgid "Please select address" msgstr "Lütfen adres seçin." msgid "Information" msgstr "Bilgi" msgid "Work" msgstr "İş" msgid "Home" msgstr "Ev" msgid "Group" msgstr "Grup" msgid "First name" msgstr "İlk ad" msgid "Last name" msgstr "Soyadı" msgid "Second name" msgstr "İkinci ad" msgid "Nickname" msgstr "Takma ad" msgid "Tags" msgstr "Etiketler" msgid "Name day date" msgstr "Ad günü tarihi" msgid "Home address" msgstr "Ev adresi" msgid "Home postcode" msgstr "Posta kodu (ev)" msgid "Home city" msgstr "Åžehir (ev)" msgid "Home state" msgstr "Bölge (ev)" msgid "Home country" msgstr "Ülke (ev)" msgid "Organization" msgstr "Organizasyon" msgid "Department" msgstr "Bölüm" msgid "Work address" msgstr "İş adresi" msgid "Work postcode" msgstr "Posta kodu (iÅŸ)" msgid "Work city" msgstr "Åžehir (iÅŸ)" msgid "Work state" msgstr "Bölge (iÅŸ)" msgid "Work country" msgstr "Ülke (iÅŸ)" msgid "Fax" msgstr "Faks" msgid "Home phone" msgstr "Ev telefonu" msgid "Home phone 2" msgstr "Ev telefonu 2" msgid "Home phone 3" msgstr "Ev telefonu 3" msgid "Home phone 4" msgstr "Ev telefonu 4" msgid "Work phone" msgstr "İş telefonu" msgid "Work phone 2" msgstr "İş telefonu 2" msgid "Work phone 3" msgstr "İş telefonu 3" msgid "Work phone 4" msgstr "İş telefonu 4" msgid "Cell phone" msgstr "Cep telefonu" msgid "Cell phone 2" msgstr "Cep telefonu 2" msgid "Cell phone 3" msgstr "Cep telefonu 3" msgid "Cell phone 4" msgstr "Cep telefonu 4" msgid "E-Mail" msgstr "E-posta" msgid "E-Mail 2" msgstr "E-posta 2" msgid "E-Mail 3" msgstr "E-posta 3" msgid "E-Mail 4" msgstr "E-posta 4" msgid "WWW" msgstr "Site" msgid "WWW 2" msgstr "Site 2" msgid "WWW 3" msgstr "Site 3" msgid "WWW 4" msgstr "Site 4" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "FotoÄŸraf" msgid "Additional info" msgstr "Ek bilgi" msgid "New contact" msgstr "Yeni kiÅŸi" msgid "Remove contact" msgstr "KiÅŸiyi kaldır" msgid "Edit contact" msgstr "KiÅŸiyi düzenle" msgid "Show birthdays" msgstr "DoÄŸum günlerini göster" msgid "Show contact location on the map" msgstr "KiÅŸinin yerini harita üzerinde göster" msgid "Import contacts" msgstr "KiÅŸileri içe aktar" msgid "Export contacts" msgstr "KiÅŸileri dışa aktar" msgid "First Name" msgstr "İlk ad" msgid "Last Name" msgstr "Soyadı" msgid "All fields" msgstr "Tüm alanlar" msgid "Contact details" msgstr "KiÅŸi ayrıntıları" msgid "Close contact panel" msgstr "KiÅŸi panelini kapat" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "kiÅŸi dışa aktarıldı" msgid "Cannot create file." msgstr "Dosya yaratılamadı." msgid "Output format" msgstr "Çıktı biçimi" msgid "Add header" msgstr "BaÅŸlık ekle" msgid "Fields to export" msgstr "Dışa aktarılacak alanlar" msgid "All" msgstr "Tümü" msgid "Invert" msgstr "Ters çevir" msgid "Select fields" msgstr "Alanları seç" msgid "Select CSV file" msgstr "CSV dosyasını seç" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV (virgül-ayrımlı deÄŸerler) dosyalar (*.csv)" msgid "Please select file first." msgstr "Lütfen önce dosyayı seçin." msgid "Import type" msgstr "İçe aktarma türü" msgid "File" msgstr "Dosya" msgid "Input filename" msgstr "Girdi dosyası adı" msgid "Import" msgstr "İçe aktar" msgid "Nothing to import." msgstr "İçe aktarılacak yok." msgid "contact added" msgid_plural "contacts added" msgstr[0] "kiÅŸi eklendi" msgid "of" msgstr "'ın" msgid "Record" msgstr "Kayıt" msgid "Number fields per record" msgstr "Kayıt başına düşen alan sayısı" msgid "Use first record as header" msgstr "İlk kaydı baÅŸlık olarak kullan" msgid "Field type" msgstr "Alan türü" msgid "Value" msgstr "DeÄŸer" msgid "No records found in selected file." msgstr "Seçili dosyada hiçbir kayıt bulunamadı." msgid "Cannot read file." msgstr "Dosya okunamıyor." msgid "Cannot open file." msgstr "Dosya açılamıyor." msgid "Selected contact will be removed." msgstr "Seçili kiÅŸi kaldırılacak." msgid "Select photo" msgstr "FotoÄŸraf seç" msgid "Address" msgstr "Adres" msgid "Postcode" msgstr "Posta kodu" msgid "City" msgstr "Åžehir" msgid "State" msgstr "Bölge" msgid "Country" msgstr "Ülke" msgid "Add contact" msgstr "KiÅŸi ekle" msgid "Personal" msgstr "KiÅŸisel" msgid "Phones" msgstr "Telefonlar" msgid "Internet" msgstr "İnternet" msgid "Color of contact tags" msgstr "KiÅŸi etiketlerinin rengi" msgid "Color of links" msgstr "Linklerin rengi" #, fuzzy msgid "Font size" msgstr "FotoÄŸraf boyutu" #, fuzzy msgid "Name font size" msgstr "Ad yazıyüzü" #, fuzzy msgid "Item font size" msgstr "Öğe yazıyüzü" msgid "Photo size" msgstr "FotoÄŸraf boyutu" msgid "Small" msgstr "Küçük" msgid "Medium" msgstr "Orta" msgid "Large" msgstr "Büyük" msgid "Hide group column" msgstr "Grup sütununu gizle" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "ÇeÅŸitli" msgid "Groups" msgstr "Gruplar" #, fuzzy msgid "Visible columns in birthday browser" msgstr "DoÄŸumgünü tarayıcısındaki görülür sütunlar" msgid "Show calendar" msgstr "Takvimi göster" msgid "Show tasks" msgstr "Görevleri göster" msgid "Show contacts" msgstr "KiÅŸileri göster" msgid "Show notes" msgstr "Notları göster" msgid "Show options" msgstr "Seçenekleri göster" msgid "Show small calendar window" msgstr "Küçük takvim penceresini göster" msgid "Check for events since last run" msgstr "Son çalıştırmadan sonraki olayları denetle" msgid "Number of days to check forward for events (default: 0)" msgstr "İlerideki olayların kontrol edileceÄŸi gün sayısı (varsayılan: 0)" msgid "Set absolute path for settings and data files" msgstr "Veri dosyaları ve ayarlar için salt yolu ayarla" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "kullanışlı kiÅŸisel bilgi yöneticisi" msgid "ERROR: Cannot create config files" msgstr "HATA: Yapılandırma dosyaları yaratılamıyor" msgid "Another copy of OSMO is already running." msgstr "OSMO'nun baÅŸka bir kopyası çalışır durumda." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "" "Aynı anda iki veya daha çok çalışan OSMO kopyası veri kayıplarına sebep " "olabilir." msgid "Do you really want to continue?" msgstr "Gerçekten devam etmek istiyor musunuz?" msgid "Warning" msgstr "Uyarı" msgid "The note has changed." msgstr "Not deÄŸiÅŸtirildi." msgid "Do you want to save it?" msgstr "Kaydetmek istiyor musunuz?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Seçili dosyada hiçbir kayıt bulunamadı." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Gerçekten devam etmek istiyor musunuz?" msgid "Question" msgstr "Soru" msgid "Words" msgstr "Kelime" msgid "Lines" msgstr "Satır" msgid "Characters" msgstr "Karakter" msgid "White characters" msgstr "Beyaz karakterler" msgid "Bytes" msgstr "Sekiz ikil" msgid "Document" msgstr "" #, fuzzy msgid "Selection" msgstr "Seçici" msgid "Created" msgstr "OluÅŸturuldu" msgid "Modified" msgstr "DeÄŸiÅŸtirildi" msgid "New note" msgstr "Yeni not" msgid "Add note" msgstr "Not ekle" msgid "Edit note" msgstr "Notu düzenle" msgid "Delete note" msgstr "Notu sil" msgid "Remove note" msgstr "Notu kaldır" msgid "Find" msgstr "Bul" msgid "Clear attributes" msgstr "Öznitelikleri temizle" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Notu kaydet" msgid "Insert current date and time" msgstr "Åžimdiki tarihi ve saati ekle" msgid "Insert separator" msgstr "Ayırıcı ekle" msgid "Statistics" msgstr "İstatistikler" msgid "Close editor" msgstr "Düzenleyiciyi kapat" msgid "Toggle spell checker" msgstr "İmla denetimi geçiÅŸi" msgid "Category" msgstr "Kategori" msgid "Note name" msgstr "Not adı" msgid "Last changes" msgstr "Son deÄŸiÅŸiklikler" msgid "Read-only" msgstr "" #, fuzzy msgid "Line" msgstr "Satır" #, fuzzy msgid "Column" msgstr "Ülke" msgid "case sensitive" msgstr "büyük-küçük harf duyarlı" msgid "Close find entry" msgstr "GiriÅŸ bulmayı kapat" msgid "Edit entry" msgstr "GiriÅŸi düzenle" msgid "Remember cursor position" msgstr "İşaretçi konumunu hatırla" msgid "Selected note will be removed." msgstr "Seçili not kaldırılacak." msgid "No further data recovery will be possible." msgstr "İlave veri kurtarma mümkün deÄŸil." msgid "Plain" msgstr "Düz" msgid "Encrypted" msgstr "ÅžifrelenmiÅŸ" msgid "Note type" msgstr "Not türü" msgid "Cannot open the note." msgstr "Not açılamıyor." msgid "encryption support is disabled" msgstr "Åžifreleme desteÄŸi etkin deÄŸil" msgid "Authorization" msgstr "Yetki" msgid "Algorithm" msgstr "Algoritma" msgid "Hashing" msgstr "Adresleme" msgid "Compression" msgstr "Sıkıştırma" msgid "Ratio" msgstr "Oran" msgid "Fast" msgstr "Hızlı" msgid "Good" msgstr "İyi" msgid "Best" msgstr "En iyi" msgid "Remember the last selected category" msgstr "Seçili son kategoriyi hatırla" msgid "Use system format for date and time" msgstr "Tarih ve saat için sistem biçimini kullan" msgid "Encryption" msgstr "Åžifreleme" msgid "Visible columns" msgstr "Görünür sütunlar" msgid "Categories" msgstr "Kategoriler" msgid "Notes options" msgstr "Not seçenekleri" #, fuzzy msgid "Osmo has to be restarted to take effect." msgstr "Osmo ÅŸimdi yeniden baÅŸlatılmak zorunda..." msgid "Layout" msgstr "" msgid "Vertical" msgstr "" msgid "Horizontal" msgstr "" msgid "Tabs position" msgstr "Sekme konumu" msgid "Left" msgstr "Sol" msgid "Right" msgstr "SaÄŸ" msgid "Top" msgstr "Üst" msgid "Bottom" msgstr "Alt" #, fuzzy msgid "Use default stock icons" msgstr "Varsayılan mevcut simgeleri kullan (yeniden baÅŸlatma gerektirir)" msgid "Disable underline in links" msgstr "Linklerde altı çizgili kullanımı etkisizleÅŸtir" msgid "Draw rows in alternating colors" msgstr "Sıraları deÄŸiÅŸen renklerle diz" msgid "Show exit button in toolbar" msgstr "" msgid "At least one module must be visible." msgstr "En az bir bir birim görünür olmalı." msgid "Override locale settings" msgstr "Yerel ayarları geçersiz kıl" msgid "Date format" msgstr "Tarih biçimi" msgid "DD-MM-YYYY" msgstr "GG-AA-YYYY" msgid "MM-DD-YYYY" msgstr "AA-GG-YYYY" msgid "YYYY-MM-DD" msgstr "YYYY-AA-GG" msgid "YYYY-DD-MM" msgstr "YYYY-GG-AA" msgid "Time format" msgstr "Zaman biçimi" msgid "hours" msgstr "saat" msgid "Spell checker language" msgstr "İmla denetimi dili" msgid "Enable tooltips" msgstr "Araç ipuçlarını etkinleÅŸtir" msgid "Remember last selected page" msgstr "Seçili son sayfayı hatırla" msgid "Save data after every modification" msgstr "Her deÄŸiÅŸiklikten sonra veriyi kaydet" msgid "Web browser" msgstr "AÄŸ tarayıcı" msgid "E-mail client" msgstr "E-posta istemci" msgid "Sound player" msgstr "Ses oynatıcı" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "%s örüntüsü, site adresi ile deÄŸiÅŸtirilecek" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "%s örüntüsü, e-posta adresi ile deÄŸiÅŸtirilecek" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "%s örüntüsü, ses dosyasının adı ile deÄŸiÅŸtirilecek" msgid "Enable system tray" msgstr "Sistem tepsisini etkinleÅŸtir" msgid "Start minimised" msgstr "Küçültülmüş baÅŸlat" msgid "Blink on events" msgstr "Olaylarda yanıp sön" msgid "Ignore day note events" msgstr "Günlük not olaylarını yoksay" msgid "Hide" msgstr "Gizle" msgid "Helpers" msgstr "Yardımcılar" msgid "System tray" msgstr "Sistem tepsisi" msgid "Edit" msgstr "Düzenle" msgid "Go Down" msgstr "AÅŸağı Git" msgid "Select date" msgstr "Tarih seç" msgid "Select font" msgstr "Yazıyüzü seç" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Hesaplayıcı" msgid "Edit day note" msgstr "Günlük notu düzenle" msgid "Save" msgstr "Kaydet" msgid "Display full-year calendar" msgstr "Tüm-yıl takvimini göster" msgid "Help" msgstr "Yardım" msgid "Invalid item" msgstr "Geçersiz öğe" msgid "Valid item" msgstr "Geçerli öğe" msgid "Edit task" msgstr "Görevi düzenle" msgid "Remove task" msgstr "Görevi kaldır" msgid "Import tasks" msgstr "Görevleri içe aktar" msgid "Export tasks" msgstr "Görevleri dışa aktar" msgid "Change to previous date" msgstr "Önceki tarihe deÄŸiÅŸtir" msgid "Change to next date" msgstr "Sonraki tarihe deÄŸiÅŸtir" msgid "Print" msgstr "Yazdır" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Yinelenen" msgid "Started" msgstr "BaÅŸlamış" msgid "Finished" msgstr "Bitti" msgid "All items" msgstr "Tüm öğeler" msgid "New task" msgstr "Yeni görev" msgid "Change due date to previous date" msgstr "Yapılması gereken tarihi önceki tarihe deÄŸiÅŸtir" msgid "Change due date to next date" msgstr "Yapılması gereken tarihi sonraki tarihe deÄŸiÅŸtir" msgid "Print visible tasks list" msgstr "Görülür görevler listesini yazdır" msgid "Due date" msgstr "Son tarih" msgid "Priority" msgstr "Öncelik" msgid "Task details" msgstr "Görev ayrıntıları" msgid "Close description panel" msgstr "Tanım panelini kapat" msgid "No tasks with defined date found." msgstr "Tanımlanmış tarihte görev bulunamadı." msgid "Save tasks" msgstr "Görevleri kaydet" msgid "tasks exported" msgstr "görev dışa aktarıldı" msgid "Please select at least one day when recurrency is enabled." msgstr "Tekrarlama etkinleÅŸtirildiÄŸinde lütfen en az bir gün seçin." msgid "Set time" msgstr "Saati ayarla" msgid "Tomorrow" msgstr "Yarın" msgid "Selected task will be removed." msgstr "Seçili görev kaldırılacak." msgid "Basic" msgstr "Temel" msgid "Select date and time" msgstr "Tarih ve saat seç" msgid "Low" msgstr "Düşük" msgid "High" msgstr "Yüksek" msgid "Enable sound notification" msgstr "Sesli bildirimi etkinleÅŸtir" #, fuzzy msgid "Enable notification dialog" msgstr "Sesli bildirimi etkinleÅŸtir" msgid "Advanced" msgstr "GeliÅŸmiÅŸ" msgid "Alarm warning" msgstr "Alarm uyarısı" msgid "Postpone time" msgstr "Ertelenecek zaman" msgid "Alarm command" msgstr "Alarm komutu" msgid "Recurrent task" msgstr "Yinelenen görev" msgid "Enable" msgstr "EtkinleÅŸtir" msgid "Start" msgstr "BaÅŸlangıç" msgid "End" msgstr "BitiÅŸ" msgid "Interval" msgstr "Aralık" msgid "Time period" msgstr "Zaman dönemi" msgid "Date period" msgstr "Tarih dönemi" msgid "Repeat" msgstr "Yinele" msgid "Repeat in the following days" msgstr "Sonraki günlerde yinele" msgid "Ignore alarm when task expired offline" msgstr "Çevrimdışıyken görev biterse alarmı yoksay" msgid "Select a font..." msgstr "Bir yazıyüzü seçin..." msgid "Color of items that are due today" msgstr "Bugün yapılması gereken öğelerin rengi" msgid "Color of items that are due in the next 7 days" msgstr "Önümüzdeki 7 günde yapılması gereken öğelerin rengi" msgid "Color of items that are past due" msgstr "Yapılmış olması gereken öğelerin rengi" msgid "Task info font" msgstr "Görev bilgisi yazıyüzü" msgid "Show in bold tasks with high priority" msgstr "Yüksek öncelikte olan görevleri koyu göster" msgid "Hide completed tasks" msgstr "Tamamlanan görevleri gizle" msgid "Delete completed tasks without confirmation" msgstr "Tamamlanan görevleri doÄŸrulama olmadan sil" msgid "Add new task when double clicked on tasks list" msgstr "Görevler listesine çift tıklandığında yeni görev ekle" msgid "minutes" msgstr "dakika" msgid "0 for disable" msgstr "etkisizleÅŸtirmek için 0" msgid "Repeat sound alarm" msgstr "Ses uyarısını yinele" msgid "times" msgstr "kere" msgid "Global notification command" msgstr "Genel bildirim komutu" msgid "Tasks options" msgstr "Görev seçenekleri" msgid "Reminder options" msgstr "Hatırlatıcı seçenekleri" msgid "Tasks list" msgstr "Görev listesi" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Num." msgid "New Moon" msgstr "Yeni Ay" msgid "Waxing Crescent Moon" msgstr "Büyüyen Hilâl" msgid "Quarter Moon" msgstr "İlk Dördün" msgid "Waxing Gibbous Moon" msgstr "Büyüyen ÅžiÅŸkin Evre" msgid "Full Moon" msgstr "Dolunay" msgid "Waning Gibbous Moon" msgstr "Küçülen ÅžiÅŸkin Evre" msgid "Last Quarter Moon" msgstr "Son Dördün" msgid "Waning Crescent Moon" msgstr "Küçülen Hilâl" msgid "Error" msgstr "Hata" msgid "Selected file exist! Overwrite?" msgstr "Seçili dosya zaten var! Üzerine yazılsın mı?" #~ msgid "Select and show first item after search" #~ msgstr "Aramadan sonraki ilk öğeyi seç ve göster" #~ msgid "Order" #~ msgstr "Düzenleme" #~ msgid "Mode" #~ msgstr "Kip" #~ msgid "Ascending" #~ msgstr "Artan" #~ msgid "Descending" #~ msgstr "Azalan" #~ msgid "Sorting" #~ msgstr "Sıralama" #~ msgid "Contact map location" #~ msgstr "KiÅŸinin haritadaki yeri" osmo-0.2.14/po/de.po000664 001750 001750 00000113047 12561325524 014106 0ustar00pasppasp000000 000000 # German translation of Osmo. # This file is distributed under the same license as the Osmo package. # Markus Dahms , 2007. # Mario Blättermann , 2009. # Roland Siegbert , 2010. # Claudius Henrichs , 2011 # msgid "" msgstr "" "Project-Id-Version: Osmo 0.2.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-28 02:21+0200\n" "PO-Revision-Date: 2010-04-25 23:16+0200\n" "Last-Translator: Claudius Henrichs , 2011\n" "Language-Team: osmo\n" "Language: de\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" msgid "About" msgstr "Info" msgid "Close" msgstr "Schließen" msgid "Ctrl+PageUp" msgstr "Strg+BildHoch" msgid "switch to previous tab" msgstr "zum vorherigen Reiter umschalten" msgid "Ctrl+PageDn" msgstr "Strg+BildRunter" msgid "switch to next tab" msgstr "zum nächsten Reiter umschalten" msgid "switch to selected page" msgstr "zur ausgewählten Seite umschalten" msgid "show options window" msgstr "Optionen anzeigen" msgid "show about window" msgstr "Info anzeigen" msgid "toggle fullscreen mode" msgstr "" msgid "PageUp/PageDn" msgstr "BildHoch/BildRunter" msgid "switch page in options and about tab" msgstr "Seite in den Reitern »Optionen« und Ȇber« wechseln" msgid "exit" msgstr "Beenden" msgid "Space" msgstr "Leertaste" msgid "select current date" msgstr "Aktuelles Datum wählen" msgid "Ctrl+Space" msgstr "Strg+Leertaste" msgid "toggle personal data visibility" msgstr "Sichtbarkeit der persönlichen Daten umschalten" msgid "Arrows" msgstr "Pfeilsymbole" msgid "change day" msgstr "Tag wechseln" msgid "Ctrl+Up/Down" msgstr "Strg+Hoch/Runter" msgid "scroll the contents in the day info panel" msgstr "den Inhalt des Info-Panels rollen" msgid "change month" msgstr "Monat wechseln" msgid "Home/End" msgstr "Pos1/Ende" msgid "change year" msgstr "Jahr wechseln" msgid "toggle calendars for the previous and next month" msgstr "Kalender für den vorherigen und nächsten Monat an-/ausschalten" msgid "day notes browser" msgstr "Tagesnotizen durchsuchen" msgid "assign background color to day note" msgstr "der Tagesnotiz eine Hintergrundfarbe zuweisen" msgid "date calculator" msgstr "Datumsrechner" msgid "show full-year calendar" msgstr "Jahreskalender zeigen" msgid "jump to date" msgstr "zum Datum springen" msgid "Delete" msgstr "Löschen" msgid "remove day note" msgstr "Tagesnotiz entfernen" msgid "Alt+Arrows" msgstr "Alt+Pfeile" msgid "Esc" msgstr "Esc" msgid "close editor" msgstr "Editor schließen" msgid "toggle bold" msgstr "Fett" msgid "toggle italic" msgstr "Kursiv" msgid "toggle underline" msgstr "Unterstrichen" msgid "toggle strikethrough" msgstr "Durchgestrichen" msgid "toggle highlight" msgstr "Hervorheben" msgid "Arrows Up/Down" msgstr "Hoch/Runter Pfeile" msgid "toggle alternative view" msgstr "Alternative Ansicht" msgid "year info" msgstr "Informationen zu diesem Jahr" msgid "set current year" msgstr "Aktuelles Jahr festlegen" msgid "close full-year calendar" msgstr "Jahreskalender schließen" msgid "Alt+a, Insert" msgstr "Alt+a, Einfügen" msgid "add task" msgstr "Aufgabe hinzufügen" msgid "Alt+e, Ctrl+Enter" msgstr "Alt+e, Strg+Enter" msgid "edit task" msgstr "Aufgabe bearbeiten" msgid "Alt+r, Delete" msgstr "Alt+r, Entf" msgid "remove task" msgstr "Aufgabe entfernen" msgid "toggle hidden tasks" msgstr "versteckte Aufgaben an-/ausschalten" msgid "activate search field" msgstr "Suchfeld aktivieren" msgid "Left, Right" msgstr "Links, Rechts" msgid "change category filter" msgstr "Kategoriefilter wechseln" msgid "close task info panel" msgstr "Aufgabeninformationen schließen" msgid "Insert" msgstr "Einfügen" msgid "add contact" msgstr "Kontakt hinzufügen" msgid "Ctrl+Enter" msgstr "Strg+Enter" msgid "edit contact" msgstr "Kontakt bearbeiten" msgid "remove contact" msgstr "Kontakt entfernen" msgid "change search mode" msgstr "Suchmodus ändern" msgid "close contact details panel" msgstr "Kontaktdetails schließen" msgid "Enter" msgstr "Eingabetaste" msgid "open note" msgstr "Notiz öffnen" msgid "add note" msgstr "Notiz hinzufügen" msgid "remove note" msgstr "Notiz entfernen" msgid "edit note name and category" msgstr "Notiznamen und -kategorie bearbeiten" msgid "close note editor" msgstr "Notizeditor schließen" msgid "save note" msgstr "Notiz speichern" msgid "find text" msgstr "Text suchen" msgid "clear selection attributes" msgstr "Auswahlattribute löschen" msgid "" "OSMO was designed keeping in mind the user convenience, so there are many " "key shortcuts. Here is the full list:" msgstr "" "OSMO soll sich möglichst bequem bedienen lassen, weshalb es viele " "Tastenkürzel gibt. Hier ist die vollständige Liste:" msgid "General" msgstr "Allgemein" msgid "Calendar" msgstr "Kalender" msgid "Note editor" msgstr "Notizeditor" msgid "Full-year calendar" msgstr "Jahreskalender" msgid "Tasks" msgstr "Aufgaben" msgid "Contacts" msgstr "Kontakte" msgid "Notes" msgstr "Notizen" msgid "Selector" msgstr "Auswahl" msgid "Editor" msgstr "Editor" msgid "A handy personal organizer" msgstr "Ein praktischer persönlicher Planer" msgid "compiled on" msgstr "Übersetzt am" msgid "Programming" msgstr "Programmierung" msgid "Graphics" msgstr "Grafiken" msgid "Contributors" msgstr "Mitwirkende" msgid "Translators" msgstr "Übersetzer" msgid "Mailing lists" msgstr "Mailinglisten" msgid "Bug tracker" msgstr "Fehlererfassungssystem" msgid "Feature requests" msgstr "Funktionswünsche" msgid "Available modules" msgstr "Verfügbare Module" msgid "Compiled-in features" msgstr "Eingebundene Programmteile" msgid "iCalendar support" msgstr "iCalender-Unterstützung" msgid "Encrypted notes support" msgstr "Unterstützung für verschlüsselte Notizen" msgid "Backup support" msgstr "Unterstützung für Sicherungen" msgid "Printing support" msgstr "Druck-Unterstützung" msgid "Spell checker support" msgstr "Unterstützung für Rechtschreibprüfung" msgid "version" msgstr "Version" msgid "SVN revision" msgstr "SVN-Version" msgid "Key shortcuts" msgstr "Tastenkombinationen" msgid "License" msgstr "Lizenz" msgid "Save backup" msgstr "Sicherung speichern" msgid "Password protection" msgstr "Passwortschutz" msgid "Enter password" msgstr "Geben Sie ein Passwort ein" msgid "Re-enter password" msgstr "Geben Sie das Passwort noch einmal ein" msgid "Please enter the password" msgstr "Geben Sie das Passwort ein" msgid "Passwords do not match!" msgstr "Die Passwörter stimmen nicht überein!" msgid "Cannot create backup!" msgstr "Die Sicherung kann nicht erstellt werden." msgid "Backup file saved successfully!" msgstr "Sicherungsdatei erfolgreich gespeichert." msgid "Open backup file" msgstr "Sicherungsdatei öffnen" msgid "Osmo backup files (*.bck)" msgstr "Osmo-Sicherungsdateien (*.bck)" msgid "This is not Osmo backup file" msgstr "Dies ist keine Osmo-Sicherungsdatei" msgid "Incorrect password!" msgstr "Falsches Passwort!" msgid "All your data will be replaced with backup file content." msgstr "Alle Ihre Daten werden durch den Inhalt der Sicherungsdatei ersetzt." msgid "Are you sure?" msgstr "Sind Sie sicher?" msgid "Osmo has to be restarted now..." msgstr "Osmo muss nun neu gestartet werden …" msgid "was born" msgstr "wurde geboren" msgid "year old" msgid_plural "years old" msgstr[0] "Jahr alt" msgstr[1] "Jahre alt" msgid "Current time" msgstr "Aktuelle Zeit" msgid "Day number" msgstr "Tag im Jahr" msgid "day till end of year" msgid_plural "days till end of year" msgstr[0] "Tag bis zum Jahresende" msgstr[1] "Tage bis zum Jahresende" msgid "the last day of the year" msgstr "der letzte Tag im Jahr" msgid "Today distance" msgstr "Abstand zu heute" msgid "Week number" msgstr "Kalenderwoche" msgid "Marked days" msgstr "Markierte Tage" msgid "Weekend days" msgstr "Wochenende" msgid "Moon phase" msgstr "Mondphase" msgid "Zodiac sign" msgstr "Sternzeichen" msgid "Day notes" msgstr "Tagesnotizen" msgid "Day tasks" msgstr "Tagesaufgaben" msgid "Birthday" msgstr "Geburtstag" msgid "Day category" msgstr "Tageskategorie" msgid "Selected day note will be removed." msgstr "Die ausgewählte Tagesnotiz wird entfernt." msgid "Continue?" msgstr "Fortsetzen?" msgid "Previous year" msgstr "Vorheriges Jahr" msgid "Previous month" msgstr "Vorheriger Monat" msgid "Previous day" msgstr "Vorheriger Tag" msgid "Today" msgstr "Heute" msgid "Next day" msgstr "Nächster Tag" msgid "Next month" msgstr "Nächster Monat" msgid "Next year" msgstr "Nächstes Jahr" msgid "Jump to date" msgstr "Zu einem Datum springen" msgid "Print calendar" msgstr "Kalender ausdrucken" msgid "Date calculator" msgstr "Datumsrechner" #, fuzzy msgid "Backup data" msgstr "Sicherung" #, fuzzy msgid "Restore data" msgstr "Wiederherstellen" msgid "Preferences" msgstr "Einstellungen" msgid "Quit" msgstr "Beenden" msgid "Toggle day note panel" msgstr "Notizanzeige an-/ausschalten" msgid "Add task" msgstr "Aufgabe hinzufügen" msgid "Select day color" msgstr "Eine Tagesfarbe wählen" msgid "Browse notes" msgstr "Notizen durchsuchen" msgid "Browse iCal events" msgstr "Nach iCal-Ereignissen suchen" msgid "Export to iCal file" msgstr "In eine iCal-Datei exportieren" msgid "Previous and next month" msgstr "Vorheriger und nächster Monat" msgid "Close note panel" msgstr "Notizanzeige schließen" msgid "Highlight" msgstr "Hervorheben" msgid "Strikethrough" msgstr "Durchgestrichen" msgid "Underline" msgstr "Unterstrichen" msgid "Italic" msgstr "Kursiv" msgid "Bold" msgstr "Fett" msgid "Insert timeline" msgstr "Zeitraster einfügen" msgid "Clear text" msgstr "Text löschen" msgid "Info" msgstr "Info" msgid "Select color" msgstr "Eine Farbe wählen" msgid "None" msgstr "Nichts" msgid "Cancel" msgstr "Abbrechen" msgid "OK" msgstr "OK" msgid "year" msgid_plural "years" msgstr[0] "Jahr" msgstr[1] "Jahre" msgid "month" msgid_plural "months" msgstr[0] "Monat" msgstr[1] "Monate" msgid "day" msgid_plural "days" msgstr[0] "Tag" msgstr[1] "Tage" msgid "hour" msgid_plural "hours" msgstr[0] "Stunde" msgstr[1] "Stunden" msgid "minute" msgid_plural "minutes" msgstr[0] "Minute" msgstr[1] "Minuten" msgid "second" msgid_plural "seconds" msgstr[0] "Sekunde" msgstr[1] "Sekunden" msgid "or" msgstr "oder" msgid "rounded down" msgstr "abgerundet" msgid "week" msgid_plural "weeks" msgstr[0] "Woche" msgstr[1] "Wochen" msgid "working day" msgid_plural "working days" msgstr[0] "Arbeitstag" msgstr[1] "Arbeitstage" msgid "time is ignored" msgstr "Zeit wird ignoriert" msgid "weekend day" msgid_plural "weekend days" msgstr[0] "Wochenendtag" msgstr[1] "Wochenendtage" msgid "This calculator only supports dates after year 1." msgstr "Dieser Rechner unterstützt nur Datumsangaben nach dem Jahr 1." msgid "weekend day ignored" msgid_plural "weekend days ignored" msgstr[0] "Wochenendtag ignoriert" msgstr[1] "Wochenendtage ignoriert" msgid "Year" msgstr "Jahr" msgid "Month" msgstr "Monat" msgid "Day" msgstr "Tag" msgid "Current date" msgstr "Aktuelles Datum" msgid "Set current date" msgstr "Aktuelles Datum setzen" msgid "Hour" msgstr "Stunde" msgid "Minute" msgstr "Minute" msgid "Second" msgstr "Sekunde" msgid "Set current time" msgstr "Aktuelle Zeit setzen" msgid "Reset time" msgstr "Zeit zurücksetzen" msgid "First date and time" msgstr "Erstes Datum und Zeit" msgid "Second date and time" msgstr "Zweites Datum und Zeit" msgid "Alternative time units" msgstr "Alternative Zeiteinheiten" msgid "Result" msgstr "Ergebnis" msgid "Duration between two dates" msgstr "Zeitraum zwischen zwei Terminen" msgid "Operation" msgstr "Operation" msgid "add" msgstr "Addieren" msgid "subtract" msgstr "Subtrahieren" msgid "Date and time to add or subtract from" msgstr "Zu änderndes Datum" msgid "Years" msgstr "Jahre" msgid "Months" msgstr "Monate" msgid "Days" msgstr "Tage" msgid "Weeks" msgstr "Wochen" msgid "Hours" msgstr "Stunden" msgid "Minutes" msgstr "Minuten" msgid "Seconds" msgstr "Sekunden" msgid "Ignore weekend days" msgstr "Wochenendtage ignorieren" msgid "Reset fields" msgstr "Felder zurücksetzen" msgid "Time to add or subtract" msgstr "Zeitraum, der addiert oder subtrahiert werden soll" msgid "Jump to" msgstr "Zum Datum springen" msgid "Add to or subtract from a date" msgstr "Zeitraum zu einem Datum addieren" msgid "Leap year" msgstr "Schaltjahr" msgid "Yes" msgstr "Ja" msgid "No" msgstr "Nein" msgid "Chinese year animal" msgstr "Tierzeichen des chinesischen Jahrs" msgid "Number of days" msgstr "Anzahl von Tagen" msgid "Number of weeks" msgstr "Anzahl der Wochen" msgid "Number of weekend days" msgstr "Anzahl von Wochenendtagen" msgid "Year info" msgstr "Informationen zu diesem Jahr" msgid "Current year" msgstr "Aktuelles Jahr" msgid "Alternative view" msgstr "Alternative Ansicht" msgid "event" msgid_plural "events" msgstr[0] "Ereignis" msgstr[1] "Ereignisse" msgid "No valid calendars defined" msgstr "Keine gültigen Kalender definiert" msgid "iCalendar events" msgstr "iCal-Ereignisse" msgid "Date" msgstr "Datum" msgid "Time" msgstr "Zeit" msgid "Summary" msgstr "Zusammenfassung" msgid "Select output file" msgstr "Ausgabedatei auswählen" msgid "The list will be cleared and all entries will be lost." msgstr "Die Liste wird geleert und alle Einträge gehen verloren." msgid "Done!" msgstr "Fertig!" msgid "event exported" msgid_plural "events exported" msgstr[0] "Ereignis exportiert" msgstr[1] "Ereignisse exportiert" msgid "iCalendar export" msgstr "iCalender-Export" msgid "Day Selector" msgstr "Auswahl des Tages" msgid "Use date period" msgstr "Tagesspanne benutzen" msgid "Add" msgstr "Hinzufügen" msgid "Clear" msgstr "Leeren" msgid "Remove" msgstr "Entfernen" msgid "Output filename" msgstr "Ausgabedateiname" msgid "Browse" msgstr "Durchsuchen" msgid "Export" msgstr "Exportieren" msgid "no entries" msgstr "keine Einträge" msgid "entry" msgid_plural "entries" msgstr[0] "Eintrag" msgstr[1] "Einträge" msgid "Calendar notes" msgstr "Kalendernotizen" msgid "Search" msgstr "Suche" msgid "Filter" msgstr "Filter" msgid "Current month" msgstr "Aktueller Monat" msgid "Selected month" msgstr "Ausgewählter Monat" msgid "Selected year" msgstr "Ausgewähltes Jahr" msgid "Selected month and year" msgstr "Ausgewählter Monat und Jahr" msgid "All notes" msgstr "Alle Notizen" msgid "Case sensitive" msgstr "Groß-/Kleinschreibung" msgid "Strikethrough past day notes" msgstr "Vergangene Tagesnotizen durchstreichen" msgid "Note" msgstr "Notiz" msgid "Syntax" msgstr "Syntax" msgid "abbreviated weekday name" msgstr "Abgekürzter Wochentag" msgid "full weekday name" msgstr "Name des Tages" msgid "abbreviated month name" msgstr "Abgekürzter Monatsname" msgid "full month name" msgstr "Name des Monats" msgid "day of the month" msgstr "Tag des Monats" msgid "MM/DD/YY" msgstr "MM/TT/JJ" msgid "day of the month without leading zeros" msgstr "Einstellige Tage ohne führende Nullen" msgid "year without century" msgstr "Jahr ohne Jhdt." msgid "year with century" msgstr "Jahr mit Jhdt." msgid "Date header format" msgstr "Datums Header Format" msgid "Set default format" msgstr "Standard Ausgabeformat" msgid "Date format syntax" msgstr "Datumsformat (Syntax)" msgid "Day note marker" msgstr "Markierung für Tagesnotizen" msgid "Event marker" msgstr "Markierung für Ereignisse" msgid "Circle" msgstr "Kreis" msgid "Ellipse" msgstr "Ellipse" msgid "Wave" msgstr "Welle" msgid "Current day marker" msgstr "Markierung für aktuelles Datum" msgid "Arrow" msgstr "Pfeil" msgid "Free-hand circle" msgstr "Freihändiger Kreis" msgid "Colors" msgstr "Farben" msgid "Header color" msgstr "Farbe der Kopfzeile" msgid "Weekend days color" msgstr "Farbe für das Wochenende" msgid "Cursor color" msgstr "Cursor-Farbe" msgid "Event marker color" msgstr "Farbe der Markierung für Ereignisse" msgid "Current day marker color" msgstr "Farbe der Markierung für aktuelles Datum" msgid "Birthday marker color" msgstr "Farbe der Markierung für Geburtstage" msgid "Date font" msgstr "Datumsschriftart" msgid "Calendar font" msgstr "Kalenderschriftart" msgid "Note font" msgstr "Notizschriftart" msgid "Enable block cursor" msgstr "Blockcursor anschalten" msgid "Cursor thickness" msgstr "Cursor-Dicke" msgid "Thin" msgstr "Dünn" msgid "Thick" msgstr "Dick" msgid "Edit category" msgstr "Kategorie bearbeiten" msgid "Color" msgstr "Farbe" msgid "Name" msgstr "Name" msgid "Select ICS file" msgstr "ICS-Datei auswählen" msgid "All Files" msgstr "Alle Dateien" msgid "Calendar files (*.ics)" msgstr "Kalender-Dateien (*.ics)" msgid "Modify ICAL parameters" msgstr "iCal-Parameter ändern" msgid "Filename" msgstr "Dateiname" msgid "Options" msgstr "Optionen" msgid "Disabled" msgstr "Deaktiviert" msgid "Valid" msgstr "Gültig" msgid "Description" msgstr "Beschreibung" msgid "Full date" msgstr "Volles Datum" msgid "Mark" msgstr "Markieren" msgid "Week start on Monday" msgstr "Wochenanfang am Montag" msgid "Show day names" msgstr "Tagesnamen zeigen" msgid "No month change" msgstr "Kein Monatswechsel" msgid "Show week numbers" msgstr "Kalenderwoche anzeigen" msgid "Simple view in full-year calendar" msgstr "Einfache Ansicht im Jahreskalender" msgid "Enable auxilary calendars" msgstr "Zusätzliche Kalender anzeigen" msgid "Ascending sorting in day notes browser" msgstr "Aufsteigende Sortierung der Tagesnotizen" msgid "Enable spell checker in day notes" msgstr "Rechtschreibprüfung in Tagesnotizen benutzen" msgid "Show seconds" msgstr "Sekunden anzeigen" msgid "Appearance" msgstr "Erscheinung" msgid "Day categories" msgstr "Tageskategorien" msgid "iCalendar files" msgstr "iCalendar-Dateien" msgid "Show in day info panel" msgstr "In der Info-Anzeige darstellen" msgid "Name day" msgstr "Namenstag" msgid "Error printing" msgstr "Fehler beim Druck" msgid "Printing properties" msgstr "Druckeigenschaften" msgid "Month name" msgstr "Name des Monats" msgid "Day name" msgstr "Name des Tags" msgid "Events" msgstr "Ereignisse" msgid "Fonts" msgstr "Schriftarten" msgid "Birthdays" msgstr "Geburtstage" msgid "Namedays" msgstr "Namenstage" msgid "Visible events" msgstr "Sichtbare Ereignisse" msgid "Padding" msgstr "Füllung" msgid "Event maximum length" msgstr "Maximallänge eines Ereignisses" msgid "Page orientation:" msgstr "Seitenausrichtung:" msgid "Portrait" msgstr "Hochformat" msgid "Landscape" msgstr "Querformat" msgid "Timeline" msgstr "Zeitraster" msgid "From (hour)" msgstr "Von (Stunde)" msgid "Step (minutes)" msgstr "Schritt (Minuten)" msgid "To (hour)" msgstr "Nach (Stunde)" msgid "No date" msgstr "Kein Datum" msgid "Rat" msgstr "Ratte" msgid "Ox" msgstr "Büffel" msgid "Tiger" msgstr "Tiger" msgid "Hare" msgstr "Hase" msgid "Dragon" msgstr "Drache" msgid "Snake" msgstr "Schlange" msgid "Horse" msgstr "Pferd" msgid "Sheep" msgstr "Schaf" msgid "Monkey" msgstr "Affe" msgid "Fowl" msgstr "Hahn" msgid "Dog" msgstr "Hund" msgid "Pig" msgstr "Schwein" msgid "Unknown" msgstr "Unbekannt" msgid "Aquarius" msgstr "Wassermann" msgid "Pisces" msgstr "Fische" msgid "Aries" msgstr "Widder" msgid "Taurus" msgstr "Stier" msgid "Gemini" msgstr "Zwillinge" msgid "Cancer" msgstr "Krebs" msgid "Leo" msgstr "Löwe" msgid "Virgo" msgstr "Jungfrau" msgid "Libra" msgstr "Waage" msgid "Scorpio" msgstr "Skorpion" msgid "Sagittarius" msgstr "Schütze" msgid "Capricorn" msgstr "Steinbock" msgid "Cannot perform selected operation." msgstr "Die ausgewählte Aktion kann nicht durchgeführt werden" msgid "Task has been modified or removed." msgstr "Die Aufgabe wurde geändert oder gelöscht" msgid "Remind me later" msgstr "Später erinnern" msgid "Done" msgstr "Fertig" msgid "postponed" msgstr "verschoben" msgid "Show task" msgstr "Aufgabe anzeigen" msgid "Alarm warning!" msgstr "Alarmwarnung!" msgid "Day note" msgstr "Tagesnotiz" msgid "Type" msgstr "Typ" msgid "Event" msgstr "Ereignis" msgid "Task" msgstr "Aufgabe" msgid "Show Osmo" msgstr "Osmo anzeigen" msgid "No birthdays defined" msgstr "Es liegen keine Geburtstage vor" msgid "Birthdays list" msgstr "Geburtstagsliste" msgid "Days to birthday" msgstr "Tage bis zum Geburtstag" msgid "Age" msgstr "Alter" msgid "Birthday date" msgstr "Geburtstag" msgid "today" msgstr "heute" msgid "Please select address" msgstr "Bitte eine Adresse auswählen" msgid "Information" msgstr "Information" msgid "Work" msgstr "Geschäftlich" msgid "Home" msgstr "Privat" msgid "Group" msgstr "Gruppe" msgid "First name" msgstr "Vorname" msgid "Last name" msgstr "Nachname" msgid "Second name" msgstr "Zweiter Vorname" msgid "Nickname" msgstr "Spitzname" msgid "Tags" msgstr "Markierungen" msgid "Name day date" msgstr "Namenstag" msgid "Home address" msgstr "Adresse (privat)" msgid "Home postcode" msgstr "Postleitzahl (privat)" msgid "Home city" msgstr "Stadt (privat)" msgid "Home state" msgstr "Bundesland (privat)" msgid "Home country" msgstr "Land (privat)" msgid "Organization" msgstr "Organisation" msgid "Department" msgstr "Abteilung" msgid "Work address" msgstr "Adresse (geschäftlich)" msgid "Work postcode" msgstr "Postleitzahl (geschäftlich)" msgid "Work city" msgstr "Stadt (geschäftlich)" msgid "Work state" msgstr "Bundesland (geschäftlich)" msgid "Work country" msgstr "Land (geschäftlich)" msgid "Fax" msgstr "Fax" msgid "Home phone" msgstr "Telefon (privat)" msgid "Home phone 2" msgstr "2. Telefon (privat)" msgid "Home phone 3" msgstr "3. Telefon (privat)" msgid "Home phone 4" msgstr "4. Telefon (privat)" msgid "Work phone" msgstr "Telefon (geschäftlich)" msgid "Work phone 2" msgstr "2. Telefon (geschäftlich)" msgid "Work phone 3" msgstr "3. Telefon (geschäftlich)" msgid "Work phone 4" msgstr "4. Telefon (geschäftlich)" msgid "Cell phone" msgstr "Mobiltelefon" msgid "Cell phone 2" msgstr "2. Mobiltelefon" msgid "Cell phone 3" msgstr "3. Mobiltelefon" msgid "Cell phone 4" msgstr "4. Mobiltelefon" msgid "E-Mail" msgstr "E-Mail-Adresse" msgid "E-Mail 2" msgstr "2. E-Mail-Adresse" msgid "E-Mail 3" msgstr "3. E-Mail-Adresse" msgid "E-Mail 4" msgstr "4. E-Mail-Adresse" msgid "WWW" msgstr "Homepage" msgid "WWW 2" msgstr "2. Homepage" msgid "WWW 3" msgstr "3. Homepage" msgid "WWW 4" msgstr "4. Homepage" msgid "IM Gadu-Gadu" msgstr "IM Gadu-Gadu" msgid "IM Yahoo" msgstr "IM Yahoo" msgid "IM MSN" msgstr "IM MSN" msgid "IM ICQ" msgstr "IM ICQ" msgid "IM AOL" msgstr "IM AOL" msgid "IM Jabber" msgstr "IM Jabber" msgid "IM Skype" msgstr "IM Skype" msgid "IM Tlen" msgstr "IM Tlen" msgid "Blog" msgstr "Blog" msgid "Photo" msgstr "Foto" msgid "Additional info" msgstr "Zusätzliche Informationen" msgid "New contact" msgstr "Neuer Kontakt" msgid "Remove contact" msgstr "Kontakt entfernen" msgid "Edit contact" msgstr "Kontakt bearbeiten" msgid "Show birthdays" msgstr "Geburtstage anzeigen" msgid "Show contact location on the map" msgstr "Position des Kontakts auf der Karte anzeigen" msgid "Import contacts" msgstr "Kontakte importieren" msgid "Export contacts" msgstr "Kontakte exportieren" msgid "First Name" msgstr "Vorname" msgid "Last Name" msgstr "Nachname" msgid "All fields" msgstr "Alle Felder" msgid "Contact details" msgstr "Kontaktdetails" msgid "Close contact panel" msgstr "Kontaktanzeige schließen" msgid "contact exported" msgid_plural "contacts exported" msgstr[0] "Kontakt exportiert" msgstr[1] "Kontakte exportiert" msgid "Cannot create file." msgstr "Die Datei kann nicht erstellt werden." msgid "Output format" msgstr "Ausgabeformat" msgid "Add header" msgstr "Kopfzeile hinzufügen" msgid "Fields to export" msgstr "Zu exportierende Felder" msgid "All" msgstr "Alle" msgid "Invert" msgstr "Umkehren" msgid "Select fields" msgstr "Felder auswählen" msgid "Select CSV file" msgstr "CSV-Datei auswählen" msgid "CSV (comma-separated values) files (*.csv)" msgstr "CSV-Dateien (kommagetrennte Werte, *.csv)" msgid "Please select file first." msgstr "Bitte zuerst eine Datei auswählen." msgid "Import type" msgstr "Typ importieren" msgid "File" msgstr "Datei" msgid "Input filename" msgstr "Eingabedateiname" msgid "Import" msgstr "Importieren" msgid "Nothing to import." msgstr "Nichts zu importieren" msgid "contact added" msgid_plural "contacts added" msgstr[0] "Kontakt hinzugefügt" msgstr[1] "Kontakte hinzugefügt" msgid "of" msgstr "von" msgid "Record" msgstr "Datensatz" msgid "Number fields per record" msgstr "Anzahl der Felder pro Datensatz" msgid "Use first record as header" msgstr "Ersten Datensatz als Kopfzeile benutzen" msgid "Field type" msgstr "Feldtyp" msgid "Value" msgstr "Wert" msgid "No records found in selected file." msgstr "Keine Datensätze in der ausgewählten Datei gefunden." msgid "Cannot read file." msgstr "Die Datei kann nicht gelesen werden." msgid "Cannot open file." msgstr "Die Datei kann nicht geöffnet werden." msgid "Selected contact will be removed." msgstr "Der ausgewählte Kontakt wird entfernt." msgid "Select photo" msgstr "Foto auswählen" msgid "Address" msgstr "Adresse" msgid "Postcode" msgstr "Postleitzahl" msgid "City" msgstr "Stadt" msgid "State" msgstr "Bundesland" msgid "Country" msgstr "Land" msgid "Add contact" msgstr "Kontakt hinzufügen" msgid "Personal" msgstr "Persönlich" msgid "Phones" msgstr "Telefone" msgid "Internet" msgstr "Internet" msgid "Color of contact tags" msgstr "Farbe für Kontakt-Tags" msgid "Color of links" msgstr "Farbe der Links" msgid "Font size" msgstr "Schriftgrad" msgid "Name font size" msgstr "Schriftgrad der Namen" msgid "Item font size" msgstr "Schriftgrad der Einträge" msgid "Photo size" msgstr "Fotogröße" msgid "Small" msgstr "Klein" msgid "Medium" msgstr "Mittel" msgid "Large" msgstr "Groß" msgid "Hide group column" msgstr "Gruppenspalte verstecken" msgid "Maps provider" msgstr "" msgid "Miscellaneous" msgstr "Verschiedenes" msgid "Groups" msgstr "Gruppen" msgid "Visible columns in birthday browser" msgstr "Sichtbare Spalten in der Geburtstags-Übersicht" msgid "Show calendar" msgstr "Kalender anzeigen" msgid "Show tasks" msgstr "Aufgaben anzeigen" msgid "Show contacts" msgstr "Kontakte anzeigen" msgid "Show notes" msgstr "Notizen anzeigen" msgid "Show options" msgstr "Optionen anzeigen" msgid "Show small calendar window" msgstr "kleines Kalenderfenster zeigen" # FIXME msgid "Check for events since last run" msgstr "Auf Ereignisse vom letzten Durchlauf prüfen" msgid "Number of days to check forward for events (default: 0)" msgstr "" "Anzahl der folgenden Tage, die auf Ereignisse geprüft werden sollen " "(Standard: 0)" msgid "Set absolute path for settings and data files" msgstr "Absoluten Pfad für Einstellungen und Daten setzen" msgid "Match contacts with given string" msgstr "" msgid "handy personal organizer" msgstr "Ein praktischer persönlicher Planer" msgid "ERROR: Cannot create config files" msgstr "Fehler: Die Konfigurationsdateien können nicht erstellt werden" msgid "Another copy of OSMO is already running." msgstr "OSMO läuft bereits." msgid "" "Simultaneously use two or more copies of OSMO can be a cause of data loss." msgstr "Wenn mehr als eine Instanz von OSMO läuft, können Daten verlorengehen!" msgid "Do you really want to continue?" msgstr "Möchten Sie wirklich fortfahren?" msgid "Warning" msgstr "Warnung" msgid "The note has changed." msgstr "Die Notiz wurde geändert." msgid "Do you want to save it?" msgstr "Möchten Sie das speichern?" #, fuzzy msgid "No URLs found in the selection..." msgstr "Keine Datensätze in der ausgewählten Datei gefunden." msgid "URLs will be opened in the default browser." msgstr "" #, fuzzy msgid "Do you want to continue?" msgstr "Möchten Sie wirklich fortfahren?" msgid "Question" msgstr "Frage" msgid "Words" msgstr "Worte" msgid "Lines" msgstr "Zeilen" msgid "Characters" msgstr "Zeichen" msgid "White characters" msgstr "Leerzeichen" msgid "Bytes" msgstr "Bytes" msgid "Document" msgstr "Dokument" msgid "Selection" msgstr "Markierung" msgid "Created" msgstr "Erstellt" msgid "Modified" msgstr "Geändert" msgid "New note" msgstr "Neue Notiz" msgid "Add note" msgstr "Notiz hinzufügen" msgid "Edit note" msgstr "Notiz bearbeiten" msgid "Delete note" msgstr "Notiz löschen" msgid "Remove note" msgstr "Notiz entfernen" msgid "Find" msgstr "Suchen" msgid "Clear attributes" msgstr "Attribute löschen" msgid "Open URL links" msgstr "" msgid "Save note" msgstr "Notiz speichern" msgid "Insert current date and time" msgstr "Aktuelles Datum und Zeit eingeben" msgid "Insert separator" msgstr "Trenner einfügen" msgid "Statistics" msgstr "Statistiken" msgid "Close editor" msgstr "Editor schließen" msgid "Toggle spell checker" msgstr "Rechtschreibprüfung an-/ausschalten" msgid "Category" msgstr "Kategorie" msgid "Note name" msgstr "Notizname" msgid "Last changes" msgstr "Letzte Änderungen" msgid "Read-only" msgstr "Schreibgeschützt" msgid "Line" msgstr "Zeile" msgid "Column" msgstr "Spalte" msgid "case sensitive" msgstr "Groß-/Kleinschreibung" msgid "Close find entry" msgstr "Suche schließen" msgid "Edit entry" msgstr "Eintrag bearbeiten" msgid "Remember cursor position" msgstr "Cursor-Position speichern" msgid "Selected note will be removed." msgstr "Die ausgewählte Notiz wird entfernt." msgid "No further data recovery will be possible." msgstr "Die Daten können dann nicht mehr wiederhergestellt werden." msgid "Plain" msgstr "Unverschlüsselt" msgid "Encrypted" msgstr "Verschlüsselt" msgid "Note type" msgstr "Notiztyp" msgid "Cannot open the note." msgstr "Die Notiz kann nicht geöffnet werden." msgid "encryption support is disabled" msgstr "Unterstützung für Verschlüsselung ist abgeschaltet" msgid "Authorization" msgstr "Legitimierung" msgid "Algorithm" msgstr "Algorithmus" msgid "Hashing" msgstr "Hash-Verfahren" msgid "Compression" msgstr "Kompression" msgid "Ratio" msgstr "Rate" msgid "Fast" msgstr "Schnell" msgid "Good" msgstr "Gut" msgid "Best" msgstr "Am besten" msgid "Remember the last selected category" msgstr "Letzte ausgewählte Kategorie merken" msgid "Use system format for date and time" msgstr "Systemformat für Datum und Zeit benutzen" msgid "Encryption" msgstr "Verschlüsselung" msgid "Visible columns" msgstr "Sichtbare Spalten" msgid "Categories" msgstr "Kategorien" msgid "Notes options" msgstr "Notiz-Optionen" msgid "Osmo has to be restarted to take effect." msgstr "Osmo muss neu gestartet werden, um Änderungen sichtbar zu machen." msgid "Layout" msgstr "Layout" msgid "Vertical" msgstr "Vertikal" msgid "Horizontal" msgstr "Horizontal" msgid "Tabs position" msgstr "Reiter-Position" msgid "Left" msgstr "Links" msgid "Right" msgstr "Rechts" msgid "Top" msgstr "Oben" msgid "Bottom" msgstr "Unten" msgid "Use default stock icons" msgstr "Standardsymbole verwenden" msgid "Disable underline in links" msgstr "Unterstreichen von Links ausschalten" msgid "Draw rows in alternating colors" msgstr "Zeilen in abwechselnden Farben darstellen" msgid "Show exit button in toolbar" msgstr "\"Beenden\" in der Werkzeugleiste anzeigen" msgid "At least one module must be visible." msgstr "Mindestens ein Modul muss sichtbar sein." msgid "Override locale settings" msgstr "Lokale Einstellungen überschreiben" msgid "Date format" msgstr "Datumsformat" msgid "DD-MM-YYYY" msgstr "TT-MM-JJJJ" msgid "MM-DD-YYYY" msgstr "MM-TT-JJJJ" msgid "YYYY-MM-DD" msgstr "JJJJ-MM-TT" msgid "YYYY-DD-MM" msgstr "JJJJ-TT-MM" msgid "Time format" msgstr "Zeitformat" msgid "hours" msgstr "Stunden" msgid "Spell checker language" msgstr "Sprache der Rechtschreibprüfung" msgid "Enable tooltips" msgstr "Minihilfen benutzen" msgid "Remember last selected page" msgstr "Letzte ausgewählte Seite merken" msgid "Save data after every modification" msgstr "Daten nach jeder Änderung speichern" msgid "Web browser" msgstr "Webbrowser" msgid "E-mail client" msgstr "E-Mail-Programm" msgid "Sound player" msgstr "Klangabspieler" #, c-format msgid "The %s pattern will be replaced with web address" msgstr "Das Muster %s wird durch die WWW-Adresse ersetzt" #, c-format msgid "The %s pattern will be replaced with e-mail address" msgstr "Das Muster %s wird durch die E-Mail-Adresse ersetzt" #, c-format msgid "The %s pattern will be replaced with sound filename" msgstr "Das Muster %s wird durch den Namen der Klangdatei ersetzt" msgid "Enable system tray" msgstr "Benachrichtigungsfeld benutzen" msgid "Start minimised" msgstr "Minimiert starten" msgid "Blink on events" msgstr "Bei Ereignissen blinken" msgid "Ignore day note events" msgstr "Tagesnotiz-Ereignisse ignorieren" msgid "Hide" msgstr "Verstecken" msgid "Helpers" msgstr "Hilfsprogramme" msgid "System tray" msgstr "Benachrichtigungsfeld" msgid "Edit" msgstr "Bearbeiten" msgid "Go Down" msgstr "Runter" msgid "Select date" msgstr "Datum auswählen" msgid "Select font" msgstr "Schriftart auswählen" msgid "Open URL" msgstr "" msgid "Calculator" msgstr "Rechner" msgid "Edit day note" msgstr "Tagesnotizen bearbeiten" msgid "Save" msgstr "Speichern" msgid "Display full-year calendar" msgstr "Jahreskalender anzeigen" msgid "Help" msgstr "Hilfe" msgid "Invalid item" msgstr "Ungültiger Punkt" msgid "Valid item" msgstr "Gültiger Punkt" msgid "Edit task" msgstr "Aufgabe bearbeiten" msgid "Remove task" msgstr "Aufgabe entfernen" msgid "Import tasks" msgstr "Aufgaben importieren" msgid "Export tasks" msgstr "Aufgaben exportieren" msgid "Change to previous date" msgstr "Auf vorheriges Datum ändern" msgid "Change to next date" msgstr "Auf nächstes Datum ändern" msgid "Print" msgstr "Drucken" msgid "Normal" msgstr "Normal" msgid "Recurrent" msgstr "Wiederkehrend" msgid "Started" msgstr "Angefangen" msgid "Finished" msgstr "Fertig" msgid "All items" msgstr "Alle Punkte" msgid "New task" msgstr "Neue Aufgabe" msgid "Change due date to previous date" msgstr "Fälligkeitsdatum auf das vorherige Datum ändern" msgid "Change due date to next date" msgstr "Fälligkeitsdatum auf das nächste Datum ändern" msgid "Print visible tasks list" msgstr "Sichtbare Aufgaben drucken" msgid "Due date" msgstr "Fälligkeitsdatum" msgid "Priority" msgstr "Priorität" msgid "Task details" msgstr "Aufgabendetails" msgid "Close description panel" msgstr "Beschreibungsanzeige schließen" msgid "No tasks with defined date found." msgstr "Keine Aufgaben für das angegebene Datum gefunden." msgid "Save tasks" msgstr "Aufgaben speichern" msgid "tasks exported" msgstr "Aufgaben exportiert" msgid "Please select at least one day when recurrency is enabled." msgstr "" "Bitte mindestens einen Tag auswählen, an dem die Wiederholung aktiv ist" msgid "Set time" msgstr "Zeit setzen" msgid "Tomorrow" msgstr "Morgen" msgid "Selected task will be removed." msgstr "Die ausgewählte Aufgabe wird entfernt." msgid "Basic" msgstr "Einfach" msgid "Select date and time" msgstr "Datum und Zeit auswählen" msgid "Low" msgstr "Niedrig" msgid "High" msgstr "Hoch" msgid "Enable sound notification" msgstr "Klänge aktivieren" #, fuzzy msgid "Enable notification dialog" msgstr "Klänge aktivieren" msgid "Advanced" msgstr "Fortgeschritten" msgid "Alarm warning" msgstr "Alarm-Warnung" msgid "Postpone time" msgstr "Zeit verschieben" msgid "Alarm command" msgstr "Alarm-Befehl" msgid "Recurrent task" msgstr "Wiederkehrende Aufgabe" msgid "Enable" msgstr "Aktivieren" msgid "Start" msgstr "Anfang" msgid "End" msgstr "Ende" msgid "Interval" msgstr "Intervall" msgid "Time period" msgstr "Zeitspanne" msgid "Date period" msgstr "Tagesspanne" msgid "Repeat" msgstr "Wiederholen" msgid "Repeat in the following days" msgstr "An den folgenden Tagen wiederholen" msgid "Ignore alarm when task expired offline" msgstr "" "Alarm ignorieren, wenn die Aufgabe abgelaufen ist, während Osmo nicht lief" msgid "Select a font..." msgstr "Wählen Sie eine Schriftart ..." msgid "Color of items that are due today" msgstr "Farbe der Punkte, die heute fällig sind" msgid "Color of items that are due in the next 7 days" msgstr "Farbe der Punkte, die in den nächsten 7 Tagen fällig sind" msgid "Color of items that are past due" msgstr "Farbe der Punkte, die überfällig sind" msgid "Task info font" msgstr "Schriftart für Aufgabeninformationen" msgid "Show in bold tasks with high priority" msgstr "Aufgaben mit hoher Priorität fett darstellen" msgid "Hide completed tasks" msgstr "Fertige Aufgaben verstecken" msgid "Delete completed tasks without confirmation" msgstr "Fertige Aufgaben ohne Nachfrage löschen" msgid "Add new task when double clicked on tasks list" msgstr "Neue Aufgabe bei Doppelklick auf die Aufgabenliste hinzufügen" msgid "minutes" msgstr "Minuten" msgid "0 for disable" msgstr "0 zum Deaktivieren" msgid "Repeat sound alarm" msgstr "Klang-Alarm wiederholen" msgid "times" msgstr "Zeiten" msgid "Global notification command" msgstr "Globaler Befehl zur Benachrichtigung" msgid "Tasks options" msgstr "Optionen für Aufgaben" msgid "Reminder options" msgstr "Erinnerungsoptionen" msgid "Tasks list" msgstr "Aufgabenliste" #. TRANSLATORS: "No." is an abbreviation of word "number" msgid "No." msgstr "Nr." msgid "New Moon" msgstr "Neumond" msgid "Waxing Crescent Moon" msgstr "Zunehmender Mond" msgid "Quarter Moon" msgstr "Erstes Viertel" msgid "Waxing Gibbous Moon" msgstr "Zunehmender Mond" msgid "Full Moon" msgstr "Vollmond" msgid "Waning Gibbous Moon" msgstr "Abnehmender Mond" msgid "Last Quarter Moon" msgstr "Letztes Viertel" msgid "Waning Crescent Moon" msgstr "Abnehmender Mond" msgid "Error" msgstr "Fehler" msgid "Selected file exist! Overwrite?" msgstr "Die Datei existiert bereits. Überschreiben?" #~ msgid "Select and show first item after search" #~ msgstr "Ersten Treffer nach Suche auswählen und anzeigen" #~ msgid "Order" #~ msgstr "Reihenfolge" #~ msgid "Mode" #~ msgstr "Modus" #~ msgid "Ascending" #~ msgstr "Aufsteigend" #~ msgid "Descending" #~ msgstr "Absteigend" #~ msgid "Sorting" #~ msgstr "Sortierung" #~ msgid "Contact map location" #~ msgstr "Geographische Lage des Kontakts" osmo-0.2.14/TRANSLATORS000664 001750 001750 00000004653 12561325524 014301 0ustar00pasppasp000000 000000 [bg] Borislav Totev [ca] Roger Adell [cs] Jaroslav Lichtblau [da] Joakim Seeberg Joe Hansen [de] Markus Dahms Mario Blättermann Roland Siegbert Claudius Henrichs [el] Konstantinos Tsakaloglou [en_GB] Steve Cook (Yorvyk) [es] Nacho Alonso González [fi] Toivo Miettinen [fr] Jean-Jacques Moulinier Rémi Roupsard Lylliann Essandre Baggieri Gerald [gl] Miguel Anxo Bouzada xesusmosquera [gl_ES] Miguel Anxo Bouzada xesusmosquera [he] Hebrew [hu] Peter Polonkai [it] Bautz Calogero Bonasia spawned76 [ja] Norihiro Yoneda [lt] Vaidotas Kazla Moo [nl] Tiger!P fonske777 [pl] Piotr MÄ…ka [pt] Bruno Miguel Bruno Castro Alves [pt_BR] Ãtila Camurça Alexandro Casanova [ro] Alexandru GavriÈ™ [ru] Vyacheslav A. Trishkin Alexander Vozhennikov Sergey Panasenko Dmitry Korzhevin [sr] Саша Петровић [sv] Niklas Grahn [te] Praveen Illa [tr] Hasan Yılmaz [uk] Sergey Panasenko Dmitry Korzhevin Yury Bulka [ur] Muhammad Ali Makki [ur_PK] Muhammad Ali Makki [zh_CN] Sasaqqdan Darcsis osmo-0.2.14/src/000775 001750 001750 00000000000 12561325530 013316 5ustar00pasppasp000000 000000 osmo-0.2.14/src/calendar_preferences_gui.c000664 001750 001750 00000241644 12561325524 020476 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar.h" #include "calendar_ical.h" #include "calendar_notes.h" #include "calendar_preferences_gui.h" #include "calendar_widget.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils.h" #include "utils_gui.h" #ifdef HAVE_GTKSPELL #include #endif /* HAVE_GTKSPELL */ static void calendar_options_cb (GtkToggleButton *togglebutton, GUI *appGUI); /* ========================================================================== */ static void calendar_cursor_settings_enable_disable (GUI *appGUI) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->enable_block_cursor_checkbutton))) { gtk_widget_hide (appGUI->opt->cft_hscale); gtk_widget_hide (appGUI->opt->cft_label_1); gtk_widget_hide (appGUI->opt->cft_label_2); gtk_widget_hide (appGUI->opt->cft_label_3); } else { gtk_widget_show (appGUI->opt->cft_hscale); gtk_widget_show (appGUI->opt->cft_label_1); gtk_widget_show (appGUI->opt->cft_label_2); gtk_widget_show (appGUI->opt->cft_label_3); } } /* ========================================================================== */ static void day_marker_entry_changed_cb (GtkEntry *entry, GUI *appGUI) { g_strlcpy (config.day_note_marker, gtk_entry_get_text (entry), MAXNAME); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar), config.day_note_marker); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar_prev), config.day_note_marker); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar_next), config.day_note_marker); utl_gui_change_bg_widget_state (appGUI->opt->day_marker_entry, NULL, appGUI); } /* ========================================================================== */ static gint day_marker_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { utl_gui_change_bg_widget_state (appGUI->opt->day_marker_entry, COLOR_BG_OK, appGUI); return FALSE; } /* ========================================================================== */ static void event_marker_type_changed_cb (GtkComboBox *combobox, GUI *appGUI) { config.event_marker_type = gtk_combo_box_get_active (combobox); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar), config.event_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_prev), config.event_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_next), config.event_marker_type, EVENT_MARKER); } /* ========================================================================== */ static void today_marker_type_changed_cb (GtkComboBox *combobox, GUI *appGUI) { config.today_marker_type = gtk_combo_box_get_active (combobox); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar), config.today_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_prev), config.today_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_next), config.today_marker_type, EVENT_MARKER); } /* ========================================================================== */ static void header_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.header_color, str, MAXCOLORNAME); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.header_color, 0, HEADER_COLOR); } /* ========================================================================== */ static void weekend_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.weekend_color, str, MAXCOLORNAME); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.weekend_color, 0, WEEKEND_COLOR); } /* ========================================================================== */ static void selection_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.selection_color, str, MAXCOLORNAME); config.selector_alpha = gtk_color_button_get_alpha (button); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.selection_color, 0, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.selection_color, 0, SELECTOR_COLOR); } /* ========================================================================== */ static void mark_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.mark_color, str, MAXCOLORNAME); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.mark_color, 0, EVENT_MARKER_COLOR); } /* ========================================================================== */ static void mark_current_day_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.mark_current_day_color, str, MAXCOLORNAME); config.mark_current_day_alpha = gtk_color_button_get_alpha (button); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); } /* ========================================================================== */ static void birthday_mark_color_changed_cb (GtkColorButton *button, GUI *appGUI) { GdkColor color; gchar str[MAXCOLORNAME]; gtk_color_button_get_color (button, &color); g_sprintf (str, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_strlcpy (config.birthday_mark_color, str, MAXCOLORNAME); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); } /* ========================================================================== */ static void cursor_thickness_changed_cb (GtkRange *range, GUI *appGUI) { config.frame_cursor_thickness = (gint) gtk_range_get_value (range); gui_calendar_set_frame_cursor_thickness (GUI_CALENDAR (appGUI->cal->calendar), config.frame_cursor_thickness); } /* ========================================================================== */ static gboolean date_header_format_entry_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { utl_gui_change_bg_widget_state (widget, COLOR_BG_OK, appGUI); return FALSE; } /* ========================================================================== */ static void update_date_header (GUI *appGUI) { if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->date_header_format_entry)))) g_strlcpy (config.date_header_format, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->date_header_format_entry)), MAXNAME); gtk_label_set_text (GTK_LABEL (appGUI->cal->date_label), utl_get_date_name_format (appGUI->cal->date, config.date_header_format)); } /* ========================================================================== */ static void date_header_format_entry_changed_cb (GtkEntry *entry, GUI *appGUI) { utl_gui_change_bg_widget_state (appGUI->opt->date_header_format_entry, NULL, appGUI); update_date_header (appGUI); } /* ========================================================================== */ static void dh_default_cb (GtkWidget *widget, GUI *appGUI) { gtk_entry_set_text (GTK_ENTRY (appGUI->opt->date_header_format_entry), DEFAULT_DATE_HEADER_FORMAT); update_date_header (appGUI); } /* ========================================================================== */ static void dh_help_cb (GtkWidget *widget, GUI *appGUI) { gchar tmpbuf[BUFFER_SIZE]; g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n\n" "%%a : %s\n" "%%A : %s\n" "%%b : %s\n" "%%B : %s\n" "%%d : %s\n" "%%D : %s\n" "%%e : %s\n" "%%m : %s\n" "%%y : %s\n" "%%Y : %s\n", _("Syntax"), _("abbreviated weekday name"), _("full weekday name"), _("abbreviated month name"), _("full month name"), _("day of the month"), _("MM/DD/YY"), _("day of the month without leading zeros"), _("month"), _("year without century"), _("year with century") ); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW (appGUI->opt->window)); } /* ========================================================================== */ static void create_appearance_section (GtkWidget *appearance_vbox, GUI *appGUI) { GtkWidget *table, *label, *entry, *combobox, *color_button, *button; GtkWidget *entry_hbox, *colors_hbox, *b_hbox; GdkColor color; GtkObject *adj; gint i; static FONT_SEL sel1, sel2, sel3; sel1.appGUI = sel2.appGUI = sel3.appGUI = appGUI; sel1.save = sel2.save = sel3.save = TRUE; table = gtk_table_new (11, 7, FALSE); gtk_box_pack_start (GTK_BOX (appearance_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); i = 0; label = utl_gui_create_label ("%s:", _("Date header format")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->date_header_format_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->date_header_format_entry), config.date_header_format); gtk_table_attach (GTK_TABLE (table), appGUI->opt->date_header_format_entry, 1, 5, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->date_header_format_entry), "key_press_event", G_CALLBACK (date_header_format_entry_key_press_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->opt->date_header_format_entry), "activate", G_CALLBACK (date_header_format_entry_changed_cb), appGUI); b_hbox = gtk_hbox_new (FALSE, 4); gtk_table_attach (GTK_TABLE (table), b_hbox, 5, 7, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); if (config.enable_tooltips) gtk_widget_set_tooltip_text (button, _("Set default format")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (dh_default_cb), appGUI); gtk_box_pack_start (GTK_BOX (b_hbox), button, FALSE, FALSE, 0); button = utl_gui_create_button (GTK_STOCK_HELP, OSMO_STOCK_HELP, FALSE); if (config.enable_tooltips) gtk_widget_set_tooltip_text (button, _("Date format syntax")); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (dh_help_cb), appGUI); gtk_box_pack_start (GTK_BOX (b_hbox), button, FALSE, FALSE, 0); i++; label = utl_gui_create_label ("%s:", _("Day note marker")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_widget_set_size_request (label, 120, -1); entry_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), entry_hbox, 1, 3, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (entry), 1); gtk_entry_set_text (GTK_ENTRY (entry), config.day_note_marker); gtk_widget_set_size_request (entry, 32, -1); gtk_box_pack_start (GTK_BOX (entry_hbox), entry, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (day_marker_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (day_marker_key_press_cb), appGUI); appGUI->opt->day_marker_entry = entry; i++; label = utl_gui_create_label ("%s:", _("Event marker")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Circle")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Ellipse")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Wave")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.event_marker_type); gtk_table_attach (GTK_TABLE (table), combobox, 1, 3, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (event_marker_type_changed_cb), appGUI); appGUI->opt->event_marker_type_combobox = combobox; i++; label = utl_gui_create_label ("%s:", _("Current day marker")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Arrow")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Free-hand circle")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.today_marker_type); gtk_table_attach (GTK_TABLE (table), combobox, 1, 3, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (today_marker_type_changed_cb), appGUI); appGUI->opt->today_marker_type_combobox = combobox; i++; label = utl_gui_create_label ("%s:", _("Colors")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); colors_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), colors_hbox, 1, 5, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Header color")); gdk_color_parse (config.header_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (header_color_changed_cb), appGUI); appGUI->opt->header_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Weekend days color")); gdk_color_parse (config.weekend_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (weekend_color_changed_cb), appGUI); appGUI->opt->weekend_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Cursor color")); gdk_color_parse (config.selection_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (color_button), TRUE); gtk_color_button_set_alpha (GTK_COLOR_BUTTON (color_button), config.selector_alpha); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (selection_color_changed_cb), appGUI); appGUI->opt->selection_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Event marker color")); gdk_color_parse (config.mark_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (mark_color_changed_cb), appGUI); appGUI->opt->mark_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Current day marker color")); gdk_color_parse (config.mark_current_day_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (color_button), TRUE); gtk_color_button_set_alpha (GTK_COLOR_BUTTON (color_button), config.mark_current_day_alpha); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (mark_current_day_color_changed_cb), appGUI); appGUI->opt->mark_current_day_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Birthday marker color")); gdk_color_parse (config.birthday_mark_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (birthday_mark_color_changed_cb), appGUI); appGUI->opt->birthday_mark_color_picker = color_button; i++; label = utl_gui_create_label ("%s:", _("Date font")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->day_name_font_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->day_name_font_entry), config.day_name_font); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->day_name_font_entry, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (table), appGUI->opt->day_name_font_entry, 1, 6, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); sel1.config = config.day_name_font; sel1.entry = appGUI->opt->day_name_font_entry; sel1.font = &appGUI->cal->fd_day_name_font; sel1.widget = appGUI->cal->date_label; button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); gtk_table_attach (GTK_TABLE (table), button, 6, 7, i, i+1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel1); i++; label = utl_gui_create_label ("%s:", _("Calendar font")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->calendar_font_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->calendar_font_entry), config.calendar_font); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->calendar_font_entry, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (table), appGUI->opt->calendar_font_entry, 1, 6, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); sel2.config = config.calendar_font; sel2.entry = appGUI->opt->calendar_font_entry; sel2.font = &appGUI->cal->fd_cal_font; sel2.widget = appGUI->cal->calendar; button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); gtk_table_attach (GTK_TABLE (table), button, 6, 7, i, i+1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel2); i++; label = utl_gui_create_label ("%s:", _("Note font")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->notes_font_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->notes_font_entry), config.notes_font); GTK_WIDGET_UNSET_FLAGS(appGUI->opt->notes_font_entry, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (table), appGUI->opt->notes_font_entry, 1, 6, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); sel3.config = config.notes_font; sel3.entry = appGUI->opt->notes_font_entry; sel3.font = &appGUI->cal->fd_notes_font; sel3.widget = appGUI->cal->calendar_note_textview; button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel3); gtk_table_attach (GTK_TABLE (table), button, 6, 7, i, i+1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); i++; appGUI->opt->enable_block_cursor_checkbutton = gtk_check_button_new_with_mnemonic (_("Enable block cursor")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->opt->enable_block_cursor_checkbutton), !config.cursor_type); gtk_table_attach (GTK_TABLE (table), appGUI->opt->enable_block_cursor_checkbutton, 0, 6, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->enable_block_cursor_checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); i++; label = utl_gui_create_label ("%s:", _("Cursor thickness")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->opt->cft_label_1 = label; label = utl_gui_create_label ("%s", _("Thin")); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (table), label, 1, 5, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 1.0); appGUI->opt->cft_label_2 = label; label = utl_gui_create_label ("%s", _("Thick")); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (table), label, 1, 5, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 1.0, 1.0); appGUI->opt->cft_label_3 = label; i++; adj = gtk_adjustment_new (1, 1, 6, 1, 1, 1); appGUI->opt->cft_hscale = gtk_hscale_new (GTK_ADJUSTMENT (adj)); gtk_scale_set_draw_value (GTK_SCALE (appGUI->opt->cft_hscale), FALSE); gtk_range_set_update_policy (GTK_RANGE (appGUI->opt->cft_hscale), GTK_UPDATE_DISCONTINUOUS); gtk_range_set_value (GTK_RANGE (appGUI->opt->cft_hscale), config.frame_cursor_thickness); gtk_table_attach (GTK_TABLE (table), appGUI->opt->cft_hscale, 1, 5, i, i+1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->cft_hscale), "value-changed", G_CALLBACK (cursor_thickness_changed_cb), appGUI); } /* ========================================================================== */ static void close_window (GtkWidget *widget, GtkWidget *window) { gtk_widget_destroy (window); } /* ========================================================================== */ static gint color_edit_name_key_release_cb (GtkEntry *entry, GdkEventKey *event, GUI *appGUI) { if (strlen (gtk_entry_get_text (entry))) gtk_widget_set_sensitive (appGUI->opt->color_edit_ok_button, TRUE); else gtk_widget_set_sensitive (appGUI->opt->color_edit_ok_button, FALSE); return FALSE; } /* ========================================================================== */ static void color_edit_action_cb (GtkWidget *widget, GUI *appGUI) { gchar *old_color, *new_color; GtkTreeIter iter; GtkTreeModel *model; GtkTreeIter p_iter; GtkTreePath *path; GdkColor color; GdkPixbuf *image; old_color = new_color = NULL; gtk_color_button_get_color (GTK_COLOR_BUTTON (appGUI->opt->color_edit_picker), &color); new_color = g_strdup_printf ("#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); gtk_tree_selection_get_selected (appGUI->opt->calendar_category_select, &model, &iter); gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 1, &old_color, -1); if (old_color != NULL && new_color != NULL) { gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->calendar_category_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &p_iter, path); gtk_list_store_remove (appGUI->opt->calendar_category_store, &p_iter); gtk_tree_path_free (path); } image = utl_gui_create_color_swatch (new_color); gtk_list_store_append (appGUI->opt->calendar_category_store, &iter); gtk_list_store_set (appGUI->opt->calendar_category_store, &iter, 0, image, 1, new_color, 2, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->color_edit_name_entry)), -1); g_object_unref (image); cal_replace_note_color (old_color, new_color, appGUI); cal_refresh_marks (appGUI); update_aux_calendars (appGUI); } g_free (old_color); g_free (new_color); close_window (NULL, appGUI->opt->color_edit_window); } /* ========================================================================== */ static gint color_edit_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { switch (event->keyval) { case GDK_Return: if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->color_edit_name_entry)))) color_edit_action_cb (NULL, appGUI); return TRUE; case GDK_Escape: close_window (NULL, appGUI->opt->color_edit_window); return TRUE; } return FALSE; } /* ========================================================================== */ static void gui_color_edit_action (GtkTreeIter *iter, GtkTreeModel *model, GUI *appGUI) { GtkWidget *vbox_top, *vbox, *hbox; GtkWidget *hseparator, *hbuttonbox; GtkWidget *cancel_button; GdkColor color; gchar *color_val, *color_name; GtkWidget *window; window = utl_gui_create_window (_("Edit category"), 350, -1, appGUI); g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (color_edit_key_press_cb), appGUI); appGUI->opt->color_edit_window = window; vbox_top = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox_top); hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox, TRUE, FALSE, 0); vbox = utl_gui_create_vbox_in_frame (hbox, _("Color")); appGUI->opt->color_edit_picker = gtk_color_button_new (); gtk_box_pack_start (GTK_BOX (vbox), appGUI->opt->color_edit_picker, FALSE, FALSE, 0); vbox = utl_gui_create_vbox_in_frame (hbox, _("Name")); appGUI->opt->color_edit_name_entry = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (vbox), appGUI->opt->color_edit_name_entry); g_signal_connect (G_OBJECT (appGUI->opt->color_edit_name_entry), "key_release_event", G_CALLBACK (color_edit_name_key_release_cb), appGUI); hseparator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (close_window), appGUI->opt->color_edit_window); appGUI->opt->color_edit_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->opt->color_edit_ok_button); g_signal_connect (G_OBJECT (appGUI->opt->color_edit_ok_button), "clicked", G_CALLBACK (color_edit_action_cb), appGUI); gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 1, &color_val, 2, &color_name, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->color_edit_name_entry), color_name); gdk_color_parse (color_val, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (appGUI->opt->color_edit_picker), &color); g_free (color_val); g_free (color_name); gtk_widget_show_all (appGUI->opt->color_edit_window); gtk_widget_grab_focus (appGUI->opt->color_edit_name_entry); } /* ========================================================================== */ static void calendar_category_add_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeIter iter; GdkPixbuf *image; GdkColor color; const gchar *category_name; gchar category_color[MAXCOLORNAME]; gchar *item_color, *item_name; gint i; category_name = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->calendar_category_entry)); if (!strlen (category_name)) return; gtk_color_button_get_color (GTK_COLOR_BUTTON (appGUI->opt->day_category_color_picker), &color); g_sprintf (category_color, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, 1, &item_color, 2, &item_name, -1); if (!strcmp (category_color, item_color)) { if (!strcmp (category_name, item_name)) { g_free (item_name); g_free (item_color); return; } } g_free (item_color); g_free (item_name); } gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, 0); image = utl_gui_create_color_swatch (category_color); gtk_list_store_append (appGUI->opt->calendar_category_store, &iter); gtk_list_store_set (appGUI->opt->calendar_category_store, &iter, 0, image, 1, category_color, 2, category_name, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->calendar_category_entry), ""); gtk_widget_set_sensitive (appGUI->opt->calendar_category_add_button, FALSE); g_object_unref (image); } /* ========================================================================== */ static void calendar_category_edit_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gboolean state; state = gtk_tree_selection_get_selected (appGUI->opt->calendar_category_select, &model, &iter); gtk_widget_set_sensitive (appGUI->opt->calendar_category_edit_button, state); gtk_widget_set_sensitive (appGUI->opt->calendar_category_remove_button, state); if (state) gui_color_edit_action (&iter, model, appGUI); } /* ========================================================================== */ static gint calendar_category_entry_key_release_cb (GtkEntry *entry, GdkEventKey *event, GUI *appGUI) { gboolean state = FALSE; if (strlen (gtk_entry_get_text (entry))) state = TRUE; gtk_widget_set_sensitive (appGUI->opt->calendar_category_add_button, state); if (event->keyval == GDK_Return) { if (state) calendar_category_add_cb (NULL, appGUI); return TRUE; } return FALSE; } /* ========================================================================== */ static gint color_edit_list_dbclick_cb (GtkWidget *widget, GdkEventButton *event, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) { if (gtk_tree_selection_get_selected (appGUI->opt->calendar_category_select, &model, &iter)) { gui_color_edit_action (&iter, model, appGUI); return TRUE; } } return FALSE; } /* ========================================================================== */ static void calendar_category_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gboolean state; state = gtk_tree_selection_get_selected (selection, &model, &iter); gtk_widget_set_sensitive (appGUI->opt->calendar_category_edit_button, state); gtk_widget_set_sensitive (appGUI->opt->calendar_category_remove_button, state); } /* ========================================================================== */ static void calendar_category_remove_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->calendar_category_treeview), &path, NULL); if (path == NULL) return; gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, path); gtk_list_store_remove (appGUI->opt->calendar_category_store, &iter); gtk_tree_path_free (path); } /* ========================================================================== */ static void create_day_categories_section (GtkWidget *day_categories_vbox, GUI *appGUI) { GtkWidget *table, *scrolledwindow, *treeview, *button; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GdkColor color; table = gtk_table_new (4, 4, FALSE); gtk_box_pack_start (GTK_BOX (day_categories_vbox), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 8); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); appGUI->opt->day_category_color_picker = gtk_color_button_new (); gdk_color_parse ("#a1aaaf", &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (appGUI->opt->day_category_color_picker), &color); gtk_table_attach (GTK_TABLE (table), appGUI->opt->day_category_color_picker, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->calendar_category_entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), appGUI->opt->calendar_category_entry, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->calendar_category_entry), "key_release_event", G_CALLBACK (calendar_category_entry_key_release_cb), appGUI); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 5, 0, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->opt->calendar_category_store)); appGUI->opt->calendar_category_treeview = treeview; gtk_container_add (GTK_CONTAINER (scrolledwindow), treeview); gtk_container_set_border_width (GTK_CONTAINER (treeview), 4); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), FALSE); gtk_widget_set_size_request (treeview, -1, 80); g_signal_connect (G_OBJECT (treeview), "button_press_event", G_CALLBACK (color_edit_list_dbclick_cb), appGUI); appGUI->opt->calendar_category_select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (appGUI->opt->calendar_category_select), "changed", G_CALLBACK (calendar_category_selected_cb), appGUI); renderer = gtk_cell_renderer_pixbuf_new (); column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "pixbuf", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", 1, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", 2, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); button = utl_gui_create_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_category_add_cb), appGUI); appGUI->opt->calendar_category_add_button = button; button = utl_gui_create_button (GTK_STOCK_EDIT, OSMO_STOCK_BUTTON_EDIT, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 3, 4, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_category_edit_cb), appGUI); appGUI->opt->calendar_category_edit_button = button; button = utl_gui_create_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 4, 5, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_category_remove_cb), appGUI); appGUI->opt->calendar_category_remove_button = button; } /* ========================================================================== */ #ifdef HAVE_LIBICAL static void ical_description_toggled (GtkCellRendererToggle *cell, gchar *path_str, GUI *appGUI) { GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; gboolean desc_status; model = GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store); path = gtk_tree_path_new_from_string (path_str); if (path == NULL) return; gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, ICAL_COLUMN_ENABLE_DESC, &desc_status, -1); gtk_list_store_set (GTK_LIST_STORE (model), &iter, ICAL_COLUMN_ENABLE_DESC, !desc_status, -1); ics_calendar_refresh (appGUI); gtk_tree_path_free (path); } /* ========================================================================== */ static void ical_use_year_toggled (GtkCellRendererToggle *cell, gchar *path_str, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gboolean fulldate_status; GtkTreeModel *model; model = GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store); path = gtk_tree_path_new_from_string (path_str); if (path == NULL) return; gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, ICAL_COLUMN_FULL_DATE, &fulldate_status, -1); fulldate_status = !fulldate_status; gtk_list_store_set (GTK_LIST_STORE (model), &iter, ICAL_COLUMN_FULL_DATE, fulldate_status, -1); if (fulldate_status == FALSE) gtk_list_store_set (GTK_LIST_STORE (model), &iter, ICAL_COLUMN_MARK, FALSE, -1); ics_calendar_refresh (appGUI); cal_refresh_marks (appGUI); gtk_tree_path_free (path); } /* ========================================================================== */ static void ical_mark_toggled (GtkCellRendererToggle *cell, gchar *path_str, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gboolean mark_status; GtkTreeModel *model; model = GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store); path = gtk_tree_path_new_from_string (path_str); if (path == NULL) return; gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, ICAL_COLUMN_MARK, &mark_status, -1); mark_status = !mark_status; gtk_list_store_set (GTK_LIST_STORE (model), &iter, ICAL_COLUMN_MARK, mark_status, -1); if (mark_status == TRUE) gtk_list_store_set (GTK_LIST_STORE (model), &iter, ICAL_COLUMN_FULL_DATE, TRUE, -1); ics_calendar_refresh (appGUI); cal_refresh_marks (appGUI); gtk_tree_path_free (path); } /* ========================================================================== */ static GtkWidget * ical_file_browser (GUI *appGUI) { GtkWidget *dialog; GtkFileFilter *filter_1, *filter_2; dialog = gtk_file_chooser_dialog_new (_("Select ICS file"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), FALSE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); filter_1 = gtk_file_filter_new (); gtk_file_filter_add_pattern (filter_1, "*"); gtk_file_filter_set_name (GTK_FILE_FILTER (filter_1), _("All Files")); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_1); filter_2 = gtk_file_filter_new (); gtk_file_filter_add_pattern (filter_2, "*.[iI][cC][sS]"); gtk_file_filter_set_name (GTK_FILE_FILTER (filter_2), _("Calendar files (*.ics)")); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_2); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter_2); return dialog; } /* ========================================================================== */ static void calendar_ical_files_add_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeIter iter; const gchar *ical_name, *ical_filename; gchar *item_filename; gint i = 0; ical_name = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_name_entry)); ical_filename = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_filename_entry)); while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_FILENAME, &item_filename, -1); if (!strcmp (ical_filename, item_filename)) { g_free (item_filename); return; } g_free (item_filename); } gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, 0); gtk_list_store_append (appGUI->opt->calendar_ical_files_store, &iter); gtk_list_store_set (appGUI->opt->calendar_ical_files_store, &iter, ICAL_COLUMN_NAME, ical_name, ICAL_COLUMN_FILENAME, ical_filename, ICAL_COLUMN_FULL_DATE, TRUE, ICAL_COLUMN_MARK, FALSE, ICAL_COLUMN_ENABLE_DESC, TRUE, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_name_entry), ""); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_filename_entry), ""); gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_add_button, FALSE); ics_check_if_valid (appGUI); ics_calendar_refresh (appGUI); } /* ========================================================================== */ static gint calendar_ical_files_entry_key_release_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { gboolean state = FALSE; if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_name_entry))) && strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_filename_entry)))) state = TRUE; gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_add_button, state); if (event != NULL) { if (event->keyval == GDK_Return && state) { calendar_ical_files_add_cb (NULL, appGUI); return TRUE; } } return FALSE; } /* ========================================================================== */ static void calendar_ical_files_browse_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *dialog; dialog = ical_file_browser (appGUI); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gtk_widget_hide (dialog); while (g_main_context_iteration (NULL, FALSE)); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->calendar_ical_files_filename_entry), gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog))); calendar_ical_files_entry_key_release_cb (NULL, NULL, appGUI); } gtk_widget_destroy (dialog); } /* ========================================================================== */ static void ical_edit_filename_browse_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *dialog; dialog = ical_file_browser (appGUI); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gtk_widget_hide (dialog); while (g_main_context_iteration (NULL, FALSE)); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->ical_edit_filename_entry), gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog))); } gtk_widget_destroy (dialog); } /* ========================================================================== */ static void ical_edit_action_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter, p_iter; gboolean desc_flag, mark_flag, year_flag; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->calendar_ical_files_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &p_iter, path); gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &p_iter, ICAL_COLUMN_ENABLE_DESC, &desc_flag, ICAL_COLUMN_MARK, &mark_flag, ICAL_COLUMN_FULL_DATE, &year_flag, -1); gtk_list_store_remove (appGUI->opt->calendar_ical_files_store, &p_iter); gtk_tree_path_free (path); } gtk_list_store_append (appGUI->opt->calendar_ical_files_store, &iter); gtk_list_store_set (appGUI->opt->calendar_ical_files_store, &iter, ICAL_COLUMN_NAME, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->ical_edit_name_entry)), ICAL_COLUMN_FILENAME, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->ical_edit_filename_entry)), ICAL_COLUMN_DISABLED, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ical_edit_disable_checkbutton)), ICAL_COLUMN_STATE, !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ical_edit_disable_checkbutton)), ICAL_COLUMN_ENABLE_DESC, desc_flag, ICAL_COLUMN_MARK, mark_flag, ICAL_COLUMN_FULL_DATE, year_flag, -1); close_window (NULL, appGUI->opt->ical_edit_window); ics_check_if_valid (appGUI); ics_calendar_refresh (appGUI); } /* ========================================================================== */ static gint ical_edit_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { switch (event->keyval) { case GDK_Return: if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->ical_edit_name_entry))) && strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->ical_edit_filename_entry)))) ical_edit_action_cb (NULL, appGUI); return TRUE; case GDK_Escape: close_window (NULL, appGUI->opt->ical_edit_window); return TRUE; } return FALSE; } /* ========================================================================== */ static gint ical_edit_name_key_release_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->ical_edit_name_entry)))) gtk_widget_set_sensitive(appGUI->opt->ical_edit_ok_button, TRUE); else gtk_widget_set_sensitive(appGUI->opt->ical_edit_ok_button, FALSE); return FALSE; } /* ========================================================================== */ static void disable_checkbutton_clicked_cb (GtkToggleButton *togglebutton, GUI *appGUI) { gboolean state = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton)); gtk_widget_set_sensitive (appGUI->opt->ical_edit_name_entry, state); gtk_widget_set_sensitive (appGUI->opt->ical_edit_filename_browse_button, state); gtk_widget_set_sensitive (appGUI->opt->ical_edit_filename_entry, state); } /* ========================================================================== */ static void gui_ical_entry_edit_action (GtkTreeIter *iter, GtkTreeModel *model, GUI *appGUI) { GtkWidget *window, *vbox_top, *hbox; GtkWidget *hseparator, *hbuttonbox; GtkWidget *cancel_button; gchar *ical_name, *ical_filename; gboolean ical_disabled; window = utl_gui_create_window (_("Modify ICAL parameters"), 450, -1, appGUI); appGUI->opt->ical_edit_window = window; g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (ical_edit_key_press_cb), appGUI); vbox_top = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox_top); hbox = utl_gui_create_hbox_in_frame (vbox_top, _("Filename")); appGUI->opt->ical_edit_filename_entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox), appGUI->opt->ical_edit_filename_entry, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->ical_edit_filename_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE (appGUI->opt->ical_edit_filename_entry), FALSE); appGUI->opt->ical_edit_filename_browse_button = utl_gui_create_button (GTK_STOCK_DIRECTORY, OSMO_STOCK_BUTTON_OPEN, FALSE); gtk_box_pack_start (GTK_BOX (hbox), appGUI->opt->ical_edit_filename_browse_button, FALSE, TRUE, 0); g_signal_connect (appGUI->opt->ical_edit_filename_browse_button, "clicked", G_CALLBACK (ical_edit_filename_browse_cb), appGUI); hbox = utl_gui_create_hbox_in_frame (vbox_top, _("Name")); appGUI->opt->ical_edit_name_entry = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (hbox), appGUI->opt->ical_edit_name_entry); g_signal_connect (G_OBJECT (appGUI->opt->ical_edit_name_entry), "key_release_event", G_CALLBACK (ical_edit_name_key_release_cb), appGUI); hbox = utl_gui_create_hbox_in_frame (vbox_top, _("Options")); appGUI->opt->ical_edit_disable_checkbutton = gtk_check_button_new_with_mnemonic (_("Disabled")); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->ical_edit_disable_checkbutton, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbox), appGUI->opt->ical_edit_disable_checkbutton); g_signal_connect (G_OBJECT (appGUI->opt->ical_edit_disable_checkbutton), "toggled", G_CALLBACK (disable_checkbutton_clicked_cb), appGUI); hseparator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (close_window), (gpointer) window); appGUI->opt->ical_edit_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->ical_edit_ok_button, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->opt->ical_edit_ok_button); g_signal_connect (G_OBJECT (appGUI->opt->ical_edit_ok_button), "clicked", G_CALLBACK (ical_edit_action_cb), appGUI); gtk_tree_model_get (GTK_TREE_MODEL (model), iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_DISABLED, &ical_disabled, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->ical_edit_name_entry), ical_name); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->ical_edit_filename_entry), ical_filename); gtk_editable_set_position (GTK_EDITABLE (appGUI->opt->ical_edit_filename_entry), -1); g_free (ical_name); g_free (ical_filename); gtk_widget_set_sensitive (appGUI->opt->ical_edit_name_entry, !ical_disabled); gtk_widget_set_sensitive (appGUI->opt->ical_edit_filename_browse_button, !ical_disabled); gtk_widget_set_sensitive (appGUI->opt->ical_edit_filename_entry, !ical_disabled); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->opt->ical_edit_disable_checkbutton), ical_disabled); gtk_widget_show_all (window); } /* ========================================================================== */ static void calendar_ical_files_edit_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gboolean state; state = gtk_tree_selection_get_selected (appGUI->opt->calendar_ical_files_select, &model, &iter); gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_edit_button, state); gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_remove_button, state); if (state) gui_ical_entry_edit_action (&iter, model, appGUI); } /* ========================================================================== */ static gint ical_entry_edit_list_dbclick_cb (GtkWidget *widget, GdkEventButton *event, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) { if (gtk_tree_selection_get_selected (appGUI->opt->calendar_ical_files_select, &model, &iter)) { gui_ical_entry_edit_action (&iter, model, appGUI); return TRUE; } } return FALSE; } /* ========================================================================== */ static void calendar_ical_files_remove_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->calendar_ical_files_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, path); gtk_list_store_remove (appGUI->opt->calendar_ical_files_store, &iter); gtk_tree_path_free (path); } ics_check_if_valid (appGUI); ics_calendar_refresh (appGUI); } /* ========================================================================== */ static void calendar_ical_files_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gboolean state; state = gtk_tree_selection_get_selected (selection, &model, &iter); gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_edit_button, state); gtk_widget_set_sensitive (appGUI->opt->calendar_ical_files_remove_button, state); ics_check_if_valid (appGUI); ics_calendar_refresh (appGUI); } /* ========================================================================== */ static void create_icalendar_files_section (GtkWidget *icalendar_files_vbox, GUI *appGUI) { GtkWidget *table, *label, *scrolledwindow, *treeview, *button; GtkTreeViewColumn *column; GtkCellRenderer *renderer; table = gtk_table_new (4, 4, FALSE); gtk_box_pack_start (GTK_BOX (icalendar_files_vbox), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 8); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = utl_gui_create_label ("%s:", _("Filename")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = utl_gui_create_label ("%s:", _("Name")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->opt->calendar_ical_files_filename_entry = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->calendar_ical_files_filename_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE (appGUI->opt->calendar_ical_files_filename_entry), FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->calendar_ical_files_filename_entry, 1, 4, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); button = utl_gui_create_button (GTK_STOCK_DIRECTORY, OSMO_STOCK_BUTTON_OPEN, FALSE); gtk_table_attach (GTK_TABLE (table), button, 4, 5, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_ical_files_browse_cb), appGUI); appGUI->opt->calendar_ical_files_browse_button = button; appGUI->opt->calendar_ical_files_name_entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), appGUI->opt->calendar_ical_files_name_entry, 1, 2, 4, 5, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->calendar_ical_files_name_entry), "key_release_event", G_CALLBACK (calendar_ical_files_entry_key_release_cb), appGUI); button = utl_gui_create_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_ical_files_add_cb), appGUI); appGUI->opt->calendar_ical_files_add_button = button; button = utl_gui_create_button (GTK_STOCK_EDIT, OSMO_STOCK_BUTTON_EDIT, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 3, 4, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_ical_files_edit_cb), appGUI); appGUI->opt->calendar_ical_files_edit_button = button; button = utl_gui_create_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, FALSE); gtk_widget_set_sensitive (button, FALSE); gtk_table_attach (GTK_TABLE (table), button, 4, 5, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (calendar_ical_files_remove_cb), appGUI); appGUI->opt->calendar_ical_files_remove_button = button; scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 5, 0, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store)); appGUI->opt->calendar_ical_files_treeview = treeview; g_signal_connect (G_OBJECT (treeview), "button_press_event", G_CALLBACK (ical_entry_edit_list_dbclick_cb), appGUI); appGUI->opt->calendar_ical_files_select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (appGUI->opt->calendar_ical_files_select), "changed", G_CALLBACK (calendar_ical_files_selected_cb), appGUI); gtk_container_add (GTK_CONTAINER (scrolledwindow), treeview); gtk_container_set_border_width (GTK_CONTAINER (treeview), 4); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), FALSE); gtk_widget_set_size_request (treeview, -1, 220); renderer = gtk_cell_renderer_pixbuf_new (); /* icon */ column = gtk_tree_view_column_new_with_attributes (_("Valid"), renderer, "pixbuf", ICAL_COLUMN_VALID_ICON, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); renderer = gtk_cell_renderer_text_new (); /* name */ column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, "text", ICAL_COLUMN_NAME, "strikethrough", ICAL_COLUMN_DISABLED, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_expand (column, TRUE); renderer = gtk_cell_renderer_text_new (); /* filename */ column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", ICAL_COLUMN_FILENAME, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_visible (column, FALSE); renderer = gtk_cell_renderer_text_new (); /* valid flag */ column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", ICAL_COLUMN_VALID_FLAG, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_visible (column, FALSE); renderer = gtk_cell_renderer_toggle_new (); /* enable description */ column = gtk_tree_view_column_new_with_attributes (_("Description"), renderer, "active", ICAL_COLUMN_ENABLE_DESC, "activatable", ICAL_COLUMN_STATE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); g_signal_connect (renderer, "toggled", G_CALLBACK (ical_description_toggled), appGUI); renderer = gtk_cell_renderer_toggle_new (); /* enable year */ column = gtk_tree_view_column_new_with_attributes (_("Full date"), renderer, "active", ICAL_COLUMN_FULL_DATE, "activatable", ICAL_COLUMN_STATE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); g_signal_connect (renderer, "toggled", G_CALLBACK (ical_use_year_toggled), appGUI); renderer = gtk_cell_renderer_toggle_new(); /* mark event in calendar */ column = gtk_tree_view_column_new_with_attributes (_("Mark"), renderer, "active", ICAL_COLUMN_MARK, "activatable", ICAL_COLUMN_STATE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); g_signal_connect (renderer, "toggled", G_CALLBACK (ical_mark_toggled), appGUI); renderer = gtk_cell_renderer_toggle_new(); /* disabled */ column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", ICAL_COLUMN_DISABLED, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_visible (column, FALSE); renderer = gtk_cell_renderer_toggle_new(); /* inverse state */ column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", ICAL_COLUMN_STATE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_visible (column, FALSE); } #endif /* HAVE_LIBICAL */ /* ========================================================================== */ static void calendar_options_cb (GtkToggleButton *togglebutton, GUI *appGUI) { #ifdef HAVE_GTKSPELL GtkSpell *edSpell = NULL; #endif /* HAVE_GTKSPELL */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->show_day_names_checkbutton))) config.display_options |= GUI_CALENDAR_SHOW_DAY_NAMES; else config.display_options &= ~GUI_CALENDAR_SHOW_DAY_NAMES; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->no_month_change_checkbutton))) config.display_options |= GUI_CALENDAR_NO_MONTH_CHANGE; else config.display_options &= ~GUI_CALENDAR_NO_MONTH_CHANGE; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->show_week_numbers_checkbutton))) config.display_options |= GUI_CALENDAR_SHOW_WEEK_NUMBERS; else config.display_options &= ~GUI_CALENDAR_SHOW_WEEK_NUMBERS; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->week_start_monday_checkbutton))) config.display_options |= GUI_CALENDAR_WEEK_START_MONDAY; else config.display_options &= ~GUI_CALENDAR_WEEK_START_MONDAY; config.fy_simple_view = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->simple_view_in_fy_calendar_checkbutton)); config.cursor_type = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->enable_block_cursor_checkbutton)); config.enable_auxilary_calendars = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->enable_auxilary_calendars_checkbutton)); config.strikethrough_past_notes = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->strikethrough_past_notes_checkbutton)); config.ascending_sorting_in_day_notes_browser = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ascending_sorting_in_day_notes_checkbutton)); if (!config.gui_layout) { if (config.enable_auxilary_calendars == TRUE) { gtk_widget_show (appGUI->cal->aux_cal_expander); } else { gtk_widget_hide (appGUI->cal->aux_cal_expander); } } else { if (config.enable_auxilary_calendars == TRUE) { gtk_widget_show (appGUI->cal->aux_calendars_table); } else { gtk_widget_hide (appGUI->cal->aux_calendars_table); } } #ifdef HAVE_GTKSPELL config.day_note_spell_checker = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->spell_checker_in_day_notes_checkbutton)); edSpell = gtkspell_get_from_text_view (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); if (edSpell != NULL) { gtkspell_detach (edSpell); } else if (config.day_note_spell_checker == TRUE) { edSpell = gtkspell_new_attach (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), NULL, NULL); if (config.override_locale_settings == TRUE) { gtkspell_set_language (edSpell, config.spell_lang, NULL); } else { gtkspell_set_language (edSpell, g_getenv("LANG"), NULL); } } #endif /* HAVE_GTKSPELL */ gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar_prev), (config.display_options & (GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_WEEK_START_MONDAY)) | GUI_CALENDAR_NO_MONTH_CHANGE); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar_next), (config.display_options & (GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_WEEK_START_MONDAY)) | GUI_CALENDAR_NO_MONTH_CHANGE); if (togglebutton == GTK_TOGGLE_BUTTON (appGUI->opt->enable_block_cursor_checkbutton)) calendar_cursor_settings_enable_disable (appGUI); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar), config.display_options); gui_calendar_set_cursor_type (GUI_CALENDAR (appGUI->cal->calendar), config.cursor_type); g_signal_emit_by_name (G_OBJECT (appGUI->cal->calendar), "day-selected"); } /* ========================================================================== */ static void create_options_section (GtkWidget *calendar_opt_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; gint i; table = gtk_table_new (8, 1, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_box_pack_start (GTK_BOX (calendar_opt_vbox), table, FALSE, FALSE, 0); i = 0; checkbutton = gtk_check_button_new_with_mnemonic (_("Week start on Monday")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.display_options & GUI_CALENDAR_WEEK_START_MONDAY); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->week_start_monday_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Show day names")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.display_options & GUI_CALENDAR_SHOW_DAY_NAMES); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->show_day_names_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("No month change")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.display_options & GUI_CALENDAR_NO_MONTH_CHANGE); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->no_month_change_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Show week numbers")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.display_options & GUI_CALENDAR_SHOW_WEEK_NUMBERS); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->show_week_numbers_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Simple view in full-year calendar")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.fy_simple_view); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->simple_view_in_fy_calendar_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Enable auxilary calendars")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.enable_auxilary_calendars); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->enable_auxilary_calendars_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Strikethrough past day notes")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.strikethrough_past_notes); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->strikethrough_past_notes_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Ascending sorting in day notes browser")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.ascending_sorting_in_day_notes_browser); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->ascending_sorting_in_day_notes_checkbutton = checkbutton; i++; #ifdef HAVE_GTKSPELL checkbutton = gtk_check_button_new_with_mnemonic (_("Enable spell checker in day notes")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.day_note_spell_checker); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (calendar_options_cb), appGUI); appGUI->opt->spell_checker_in_day_notes_checkbutton = checkbutton; #endif /* HAVE_GTKSPELL */ } /* ========================================================================== */ static void day_info_panel_options_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.di_show_current_time = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_current_time_checkbutton)); config.di_show_current_time_seconds = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_current_time_seconds_checkbutton)); config.di_show_day_number = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_day_number_checkbutton)); config.di_show_current_day_distance = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_current_day_distance_checkbutton)); config.di_show_marked_days = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_marked_days_checkbutton)); config.di_show_week_number = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_week_number_checkbutton)); config.di_show_weekend_days = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_weekend_days_checkbutton)); config.di_show_day_category = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_day_category_checkbutton)); config.di_show_moon_phase = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_moon_phase_checkbutton)); config.di_show_notes = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_notes_checkbutton)); config.di_show_zodiac_sign = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->di_show_zodiac_sign_checkbutton)); gtk_widget_set_sensitive (appGUI->opt->di_show_current_time_seconds_checkbutton, config.di_show_current_time); g_signal_emit_by_name (G_OBJECT (appGUI->cal->calendar), "day-selected"); } /* ========================================================================== */ static void create_day_info_panel_section (GtkWidget *day_info_panel_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton, *alignment; gint i; table = gtk_table_new (9, 1, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_box_pack_start (GTK_BOX (day_info_panel_vbox), table, FALSE, FALSE, 0); i = 0; checkbutton = gtk_check_button_new_with_mnemonic (_("Current time")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_current_time); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_current_time_checkbutton = checkbutton; i++; alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 16, 0); gtk_table_attach (GTK_TABLE (table), alignment, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); checkbutton = gtk_check_button_new_with_mnemonic (_("Show seconds")); gtk_container_add (GTK_CONTAINER (alignment), checkbutton); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_current_time_seconds); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); gtk_widget_set_sensitive (checkbutton, config.di_show_current_time); appGUI->opt->di_show_current_time_seconds_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Day number")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_day_number); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_day_number_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Today distance")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_current_day_distance); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_current_day_distance_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Marked days")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_marked_days); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_marked_days_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Week number")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_week_number); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_week_number_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Weekend days")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_weekend_days); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_weekend_days_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Day category")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_day_category); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_day_category_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Moon phase")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_moon_phase); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_moon_phase_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Day notes")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_notes); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_notes_checkbutton = checkbutton; i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Zodiac sign")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.di_show_zodiac_sign); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (day_info_panel_options_cb), appGUI); appGUI->opt->di_show_zodiac_sign_checkbutton = checkbutton; } /* ========================================================================== */ /* ========================================================================== */ /* ========================================================================== */ /* ========================================================================== */ GtkWidget * cal_create_preferences_page (GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox_top, *vbox_icon, *vbox, *hbox, *scrolledwindow; vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); scrolledwindow = utl_gui_insert_in_scrolled_window (vbox_top, GTK_SHADOW_ETCHED_IN); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 2); vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_CALENDAR, _("Calendar")); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); create_appearance_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Day categories")); create_day_categories_section (vbox, appGUI); #ifdef HAVE_LIBICAL vbox = utl_gui_create_vbox_in_frame (vbox_top, _("iCalendar files")); create_icalendar_files_section (vbox, appGUI); #endif /* HAVE_LIBICAL */ hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox_top), hbox, FALSE, FALSE, 0); vbox = utl_gui_create_vbox_in_frame (hbox, _("Calendar")); create_options_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (hbox, _("Show in day info panel")); create_day_info_panel_section (vbox, appGUI); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow, vbox_icon); gtk_widget_show_all (scrolledwindow); return scrolledwindow; } /* ========================================================================== */ osmo-0.2.14/src/contacts_export.c000664 001750 001750 00000122753 12561325524 016716 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts_export.h" #include "i18n.h" #include "utils.h" #include "utils_date.h" #include "utils_gui.h" #include "contacts.h" #include "calendar_utils.h" #include "stock_icons.h" #include "options_prefs.h" #include "vcf.h" #ifdef CONTACTS_ENABLED /*-------------------------------------------------------------------------------------*/ gboolean is_export_column(gint column) { if(config.export_fields[column] == '+') { return TRUE; } return FALSE; } /*-------------------------------------------------------------------------------------*/ void export_check (GUI *appGUI) { gint i, k; const gchar *text; if (appGUI->cnt->output_file_entry != NULL && appGUI->cnt->export_button != NULL) { k = 0; for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { if(is_export_column(i)) k++; } text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->output_file_entry)); if (text == NULL) { gtk_widget_set_sensitive(appGUI->cnt->export_button, FALSE); } else if (strlen(text) && k) { gtk_widget_set_sensitive(appGUI->cnt->export_button, TRUE); } else { gtk_widget_set_sensitive(appGUI->cnt->export_button, FALSE); } } } /*-------------------------------------------------------------------------------------*/ void export_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_window_get_size (GTK_WINDOW(appGUI->cnt->export_window), &config.contacts_export_win_w, &config.contacts_export_win_h); gdk_window_get_root_origin (GDK_WINDOW(appGUI->cnt->export_window->window), &config.contacts_export_win_x, &config.contacts_export_win_y); gtk_widget_destroy(appGUI->cnt->export_window); appGUI->cnt->output_file_entry = NULL; appGUI->cnt->export_button = NULL; } /*-------------------------------------------------------------------------------------*/ void export_cb (GtkWidget *widget, gpointer data) { gint n; gboolean header; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)data; if (strlen(gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->output_file_entry)))) { header = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->cnt->first_row_header_check_button)); n = export_contacts_to_file((gchar *) gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->output_file_entry)), header, appGUI); if (n != -1) { sprintf(tmpbuf, "%s %d %s.\n", _("Done!"), n, ngettext ("contact exported", "contacts exported", n)); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW(appGUI->cnt->export_window)); export_window_close_cb (widget, NULL, appGUI); } } } /*------------------------------------------------------------------------------*/ void button_export_window_close_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; export_window_close_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ struct contact_export_strategy { void (*begin_file)(FILE * filehandle, GUI * appGUI); void (*begin_contact)(gint number, FILE * filehandle, GUI * appGUI); void (*handle_contact_value)(gint column, gchar const * value, FILE * filehandle, GtkTreeIter *iter, GUI * appGUI); void (*end_contact)(gint number, FILE * filehandle, GUI * appGUI); void (*end_file)(FILE * filehandle, GUI * appGUI); }; /*------------------------------------------------------------------------------*/ void xhtml_begin_file(FILE * filehandle, GUI * appGUI) { gchar tmpbuf[BUFFER_SIZE]; gint i, a, b; fprintf(filehandle, "\n"); fprintf(filehandle, "\n"); fprintf(filehandle, "\n"); fprintf(filehandle, "\tContact List\n"); fprintf(filehandle, "\t\n"); fprintf(filehandle, "\t\n"); fprintf(filehandle, "\t\n"); fprintf(filehandle, "\n\n"); fprintf(filehandle, "\n\n"); fprintf(filehandle, "

Contact List

\n\n"); fprintf(filehandle, "\n"); fprintf(filehandle, "\n"); for (i = 0; i < CONTACTS_NUM_COLUMNS; i++) { if (is_export_column(i)) { fprintf(filehandle, "\t\n"); } } fprintf(filehandle, "\n\n"); } void xhtml_begin_contact(gint number, FILE * filehandle, GUI * appGUI) { if (number & 1) { fprintf(filehandle, "\n"); } else { fprintf(filehandle, "\n"); } } void xhtml_end_contact(gint number, FILE * filehandle, GUI * appGUI) { fprintf(filehandle, "\n\n"); } void xhtml_handle_contact_value(gint column, gchar const * value, FILE * filehandle, GtkTreeIter *iter, GUI * appGUI) { gint a, b; gchar tmpbuf[BUFFER_SIZE]; fprintf(filehandle, "\t\n"); } void xhtml_end_file(FILE * filehandle, GUI * appGUI) { fprintf(filehandle, "
"); if (appGUI->cnt->contact_fields_tags_name[i * 2] != NULL) { for (a = b = 0; a < strlen(appGUI->cnt->contact_fields_tags_name[i * 2]); a++) { if (appGUI->cnt->contact_fields_tags_name[i * 2][a] == ' ') { tmpbuf[b] = '\0'; strcat(tmpbuf, " "); b += 6; } else { tmpbuf[b++] = appGUI->cnt->contact_fields_tags_name[i * 2][a]; } } tmpbuf[b] = '\0'; fprintf(filehandle, "%s", tmpbuf); } fprintf(filehandle, "
"); if (value != NULL) { for (a = b = 0; a < strlen(value); a++) { if (value[a] == ' ') { tmpbuf[b] = '\0'; strcat(tmpbuf, " "); b += 6; } else { tmpbuf[b++] = value[a]; } } tmpbuf[b] = '\0'; switch (column) { case COLUMN_EMAIL_1: case COLUMN_EMAIL_2: case COLUMN_EMAIL_3: case COLUMN_EMAIL_4: fprintf(filehandle, "%s", tmpbuf, tmpbuf); break; case COLUMN_WWW_1: case COLUMN_WWW_2: case COLUMN_WWW_3: case COLUMN_WWW_4: case COLUMN_BLOG: fprintf(filehandle, "%s", tmpbuf, tmpbuf); break; default: fprintf(filehandle, "%s", tmpbuf); } } fprintf(filehandle, "
\n"); fprintf(filehandle, "\n"); fprintf(filehandle, "\n"); } /*------------------------------------------------------------------------------*/ void csv_begin_file(FILE * filehandle, GUI * appGUI) { } void csv_no_header_begin_contact(gint number, FILE * filehandle, GUI * appGUI) { } static gboolean csv_add_coma; void csv_header_begin_contact(gint number, FILE * filehandle, GUI * appGUI) { if (number == 0) { gint i; gboolean add_coma = FALSE; for (i = 0; i < CONTACTS_NUM_COLUMNS; i++) { if (is_export_column(i)) { if (add_coma) { fprintf(filehandle, ","); } add_coma = TRUE; fprintf(filehandle, "%s", appGUI->cnt->contact_fields_tags_name[i * 2]); } } fprintf(filehandle, "\r\n"); } csv_add_coma = FALSE; } void csv_end_contact(gint number, FILE * filehandle, GUI * appGUI) { fprintf(filehandle, "\r\n"); } void csv_handle_contact_value(gint column, gchar const * value, FILE * filehandle, GtkTreeIter *iter, GUI * appGUI) { if (csv_add_coma) { fprintf(filehandle, ","); } csv_add_coma = TRUE; if (value != NULL) { gint i; gboolean must_quote, leading_space, trailing_space; gsize len; len = strlen(value); leading_space = TRUE; trailing_space = FALSE; for (i = 0, must_quote = FALSE; i < len; i++) { if (value[i] == '"' || value[i] == ',' || value[i] == '\n') { must_quote = TRUE; break; } else if (value[i] == ' ' || value[i] == '\t') { trailing_space = TRUE; } else { trailing_space = FALSE; if (i == 0) { leading_space = FALSE; } else if (leading_space) { must_quote = TRUE; break; } } } if (!must_quote) { /* do not trim whitespaces, RFC 4180 */ must_quote = (leading_space || trailing_space) ? TRUE : FALSE; } if (must_quote) { gchar *buffer = g_new(gchar, len * 2 + 1); gint j; for (i = 0, j = 0; i < len; i++) { if (value[i] == '"') { buffer[j++] = '"'; } else if (value[i] == '\n') { buffer[j++] = '\r'; } buffer[j++] = value[i]; } buffer[j] = '\0'; fprintf(filehandle, "\"%s\"", buffer); g_free(buffer); } else { fprintf(filehandle, "%s", value); } } } void csv_end_file(FILE * filehandle, GUI * appGUI) { } /*------------------------------------------------------------------------------*/ static vcf_writer *vcf; void vcf_write_cb(gchar const *buffer, gsize buffer_size, void *user_data) { FILE *filehandle = user_data; fwrite(buffer, sizeof(gchar), buffer_size, filehandle); } void vcf_begin_file(FILE *filehandle, GUI *appGUI) { vcf = vcf_create_writer(vcf_write_cb, filehandle); } static gboolean vcf_write_required_properties; static gboolean vcf_write_home_address; static gboolean vcf_write_work_address; static gboolean vcf_write_org; void vcf_begin_contact(gint number, FILE * filehandle, GUI * appGUI) { vcf_write_begin(vcf); vcf_write_required_properties = TRUE; vcf_write_home_address = TRUE; vcf_write_work_address = TRUE; vcf_write_org = TRUE; } void static write_address(gchar const* type, gint address_column, gint city_column, gint state_column, gint post_code_column, gint country_column, GtkTreeIter *iter, GUI * appGUI) { gchar *address, *city, *state, *post_code, *country; gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), iter, address_column, &address, city_column, &city, state_column, &state, post_code_column, &post_code, country_column, &country, -1); vcf_write_ADR(vcf, type, is_export_column(address_column)? address : NULL, is_export_column(city_column) ? city : NULL, is_export_column(state_column) ? state : NULL, is_export_column(post_code_column) ? post_code : NULL, is_export_column(country_column) ? country : NULL ); g_free(address); g_free(city); g_free(state); g_free(post_code); g_free(country); } void vcf_handle_contact_value(gint column, gchar const * value, FILE * filehandle, GtkTreeIter *iter, GUI * appGUI) { if (vcf_write_required_properties == TRUE) { gchar *first_name, *last_name, *second_name; gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), iter, COLUMN_FIRST_NAME, &first_name, COLUMN_LAST_NAME, &last_name, COLUMN_SECOND_NAME, &second_name, -1); vcf_write_FN(vcf, first_name, last_name); vcf_write_N(vcf, last_name, first_name, second_name); vcf_write_required_properties = FALSE; g_free(first_name); g_free(last_name); g_free(second_name); vcf_write_required_properties = FALSE; } if (value) { switch (column) { case COLUMN_NICK_NAME: vcf_write_NICKNAME(vcf, value); break; case COLUMN_BIRTH_DAY_DATE: { guint32 julian_day; gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), iter, COLUMN_BIRTH_DAY_DATE, &julian_day, -1); vcf_write_BDAY(vcf, julian_day); break; } case COLUMN_HOME_ADDRESS: case COLUMN_HOME_CITY: case COLUMN_HOME_STATE: case COLUMN_HOME_POST_CODE: case COLUMN_HOME_COUNTRY: if (vcf_write_home_address) { write_address(VCF_TYPE_HOME, COLUMN_HOME_ADDRESS, COLUMN_HOME_CITY, COLUMN_HOME_STATE, COLUMN_HOME_POST_CODE, COLUMN_HOME_COUNTRY, iter, appGUI); vcf_write_home_address = FALSE; } break; case COLUMN_WORK_ADDRESS: case COLUMN_WORK_CITY: case COLUMN_WORK_STATE: case COLUMN_WORK_POST_CODE: case COLUMN_WORK_COUNTRY: if (vcf_write_work_address) { write_address(VCF_TYPE_WORK, COLUMN_WORK_ADDRESS, COLUMN_WORK_CITY, COLUMN_WORK_STATE, COLUMN_WORK_POST_CODE, COLUMN_WORK_COUNTRY, iter, appGUI); vcf_write_work_address = FALSE; } break; case COLUMN_WORK_ORGANIZATION: case COLUMN_WORK_DEPARTMENT: if (vcf_write_org) { gchar *organization, *department; gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), iter, COLUMN_WORK_ORGANIZATION, &organization, COLUMN_WORK_DEPARTMENT, &department, -1); vcf_write_ORG(vcf, is_export_column(COLUMN_WORK_ORGANIZATION) ? organization : NULL, is_export_column(COLUMN_WORK_DEPARTMENT) ? department : NULL); g_free(organization); g_free(department); vcf_write_org = FALSE; } break; case COLUMN_WORK_FAX: vcf_write_TEL(vcf, value, 1, VCF_TYPE_TEL_FAX, VCF_TYPE_WORK); break; case COLUMN_WORK_PHONE_1: case COLUMN_WORK_PHONE_2: case COLUMN_WORK_PHONE_3: case COLUMN_WORK_PHONE_4: { gint pref = column - COLUMN_WORK_PHONE_1 + 1; vcf_write_TEL(vcf, value, pref, VCF_TYPE_TEL_VOICE, VCF_TYPE_WORK); break; } case COLUMN_HOME_PHONE_1: case COLUMN_HOME_PHONE_2: case COLUMN_HOME_PHONE_3: case COLUMN_HOME_PHONE_4: { gint pref = column - COLUMN_HOME_PHONE_1 + 1; vcf_write_TEL(vcf, value, pref, VCF_TYPE_TEL_VOICE, VCF_TYPE_HOME); break; } case COLUMN_CELL_PHONE_1: case COLUMN_CELL_PHONE_2: case COLUMN_CELL_PHONE_3: case COLUMN_CELL_PHONE_4: { gint pref = column - COLUMN_CELL_PHONE_1 + 1; vcf_write_TEL(vcf, value, pref, VCF_TYPE_TEL_CELL); break; } case COLUMN_EMAIL_1: case COLUMN_EMAIL_2: case COLUMN_EMAIL_3: case COLUMN_EMAIL_4: { gint pref = column - COLUMN_EMAIL_1 + 1; vcf_write_EMAIL(vcf, value, pref); break; } case COLUMN_WWW_1: case COLUMN_WWW_2: case COLUMN_WWW_3: case COLUMN_WWW_4: { gint pref = column - COLUMN_WWW_1 + 1; vcf_write_URL_pref(vcf, value, pref); break; } case COLUMN_IM_AOL: vcf_write_IMPP(vcf, value, "aol"); break; case COLUMN_IM_GG: vcf_write_IMPP(vcf, value, "gg"); break; case COLUMN_IM_ICQ: vcf_write_IMPP(vcf, value, "icq"); break; case COLUMN_IM_JABBER: vcf_write_IMPP(vcf, value, "xmpp"); break; case COLUMN_IM_MSN: vcf_write_IMPP(vcf, value, "msn"); break; case COLUMN_IM_SKYPE: vcf_write_IMPP(vcf, value, "skype"); break; case COLUMN_IM_TLEN: vcf_write_IMPP(vcf, value, "tlen"); break; case COLUMN_IM_YAHOO: vcf_write_IMPP(vcf, value, "ymsgr"); break; case COLUMN_BLOG: vcf_write_URL(vcf, value); break; case COLUMN_INFO: vcf_write_NOTE(vcf, value); break; default: break; } } } void vcf_end_contact(gint number, FILE * filehandle, GUI * appGUI) { vcf_write_end(vcf); } void vcf_end_file(FILE * filehandle, GUI * appGUI) { vcf_close_writer(vcf); vcf = NULL; } /*------------------------------------------------------------------------------*/ gint export_contacts_to_file_with_strategy(gchar *filename, struct contact_export_strategy strategy, GUI *appGUI) { GtkTreePath *sort_path, *filter_path, *path; gint i, exported; gchar *text; GtkTreeIter iter; FILE *filehandle; guint32 date; exported = 0; if (utl_gui_check_overwrite_file (filename, appGUI->cnt->export_window, appGUI) != 0) { return -1; } filehandle = g_fopen (filename, "w"); if(filehandle) { strategy.begin_file(filehandle, appGUI); sort_path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, sort_path) == TRUE) { if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->cnt->contacts_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, path); strategy.begin_contact(exported, filehandle, appGUI); for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { if(is_export_column(i)) { if (i == COLUMN_BIRTH_DAY_DATE || i == COLUMN_NAME_DAY_DATE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, i, &date, -1); if (date == 0) { text = NULL; } else { if (i == COLUMN_BIRTH_DAY_DATE) { text = g_strdup((const gchar *)julian_to_str(date, DATE_DD_MM_YYYY, TRUE)); } else { text = g_strdup((const gchar *)julian_to_str(date, DATE_DD_MM_YYYY, TRUE)); } } } else { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, i, &text, -1); } strategy.handle_contact_value(i, text, filehandle, &iter, appGUI); g_free(text); } } strategy.end_contact(exported, filehandle, appGUI); exported++; gtk_tree_path_free(path); } gtk_tree_path_free(filter_path); } } gtk_tree_path_next (sort_path); } strategy.end_file(filehandle, appGUI); fclose(filehandle); return exported; } else { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("Cannot create file."), GTK_WINDOW(appGUI->cnt->export_window)); return -1; } } /*------------------------------------------------------------------------------*/ gint export_contacts_to_file(gchar *filename, gboolean header, GUI *appGUI) { if (config.export_format == EXPORT_TO_XHTML) { struct contact_export_strategy strategy = {.begin_file=xhtml_begin_file, .begin_contact=xhtml_begin_contact, .handle_contact_value=xhtml_handle_contact_value, .end_contact=xhtml_end_contact, .end_file=xhtml_end_file}; return export_contacts_to_file_with_strategy(filename, strategy, appGUI); } else if(config.export_format == EXPORT_TO_CSV) { struct contact_export_strategy strategy = {.begin_file=csv_begin_file, .begin_contact=header ? csv_header_begin_contact : csv_no_header_begin_contact, .handle_contact_value=csv_handle_contact_value, .end_contact=csv_end_contact, .end_file=csv_end_file}; return export_contacts_to_file_with_strategy(filename, strategy, appGUI); } else if(config.export_format == EXPORT_TO_VCF) { struct contact_export_strategy strategy = {.begin_file=vcf_begin_file, .begin_contact=vcf_begin_contact, .handle_contact_value=vcf_handle_contact_value, .end_contact=vcf_end_contact, .end_file=vcf_end_file}; return export_contacts_to_file_with_strategy(filename, strategy, appGUI); } return -1; } /*------------------------------------------------------------------------------*/ void browse_dir_cb (GtkWidget *widget, gpointer data) { GtkWidget *dialog; gchar f_filename[PATH_MAX]; GUI *appGUI = (GUI *)data; dialog = gtk_file_chooser_dialog_new(_("Select output file"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { g_strlcpy (f_filename, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)), PATH_MAX-1); if (config.export_format == EXPORT_TO_XHTML) { if (g_str_has_suffix (f_filename, ".html") == FALSE && g_str_has_suffix (f_filename, ".HTML") == FALSE) { g_strlcat(f_filename, ".html", PATH_MAX-1); } } else if(config.export_format == EXPORT_TO_CSV) { if (g_str_has_suffix (f_filename, ".csv") == FALSE && g_str_has_suffix (f_filename, ".CSV") == FALSE) { g_strlcat(f_filename, ".csv", PATH_MAX-1); } } else if(config.export_format == EXPORT_TO_VCF) { if (g_str_has_suffix (f_filename, ".vcf") == FALSE && g_str_has_suffix (f_filename, ".VCF") == FALSE && g_str_has_suffix (f_filename, ".vcard") == FALSE && g_str_has_suffix (f_filename, ".VCARD") == FALSE) { g_strlcat(f_filename, ".vcf", PATH_MAX-1); } } gtk_entry_set_text (GTK_ENTRY(appGUI->cnt->output_file_entry), f_filename); } export_check(appGUI); gtk_widget_destroy(dialog); } /*------------------------------------------------------------------------------*/ gint export_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: export_window_close_cb (widget, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void export_field_selected_cb (GtkToggleButton *button, gpointer user_data) { gint i; MESSAGE *msg = (MESSAGE *)user_data; i = (size_t) msg->data; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)) == TRUE) { config.export_fields[i] = '+'; } else { config.export_fields[i] = '-'; } export_check(msg->appGUI); } /*------------------------------------------------------------------------------*/ void format_changed_cb(GtkToggleButton *button, gpointer user_data) { gint format = GPOINTER_TO_INT(user_data); if (button->active) { config.export_format = format; } } /*------------------------------------------------------------------------------*/ void select_action_cb (GtkWidget *widget, gpointer user_data) { gint i; gboolean state; MESSAGE *msg = (MESSAGE *)user_data; for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { if (i != COLUMN_PHOTO && i != COLUMN_ID) { switch((size_t) msg->data) { case SELECT_ALL: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(msg->appGUI->cnt->check_buttons[i]), TRUE); break; case SELECT_NONE: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(msg->appGUI->cnt->check_buttons[i]), FALSE); break; case SELECT_INVERT: state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(msg->appGUI->cnt->check_buttons[i])); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(msg->appGUI->cnt->check_buttons[i]), !state); break; default: break; }; } } } /*--------------------------------------------------------------------*/ GSList * create_format_radiobutton(gchar * const label, gint format, GtkBox *parent, GSList *group) { GtkWidget* radiobutton; radiobutton = gtk_radio_button_new_with_mnemonic(NULL, label); gtk_widget_show(radiobutton); g_signal_connect(G_OBJECT(radiobutton), "toggled", G_CALLBACK(format_changed_cb), GINT_TO_POINTER(format)); GTK_WIDGET_UNSET_FLAGS(radiobutton, GTK_CAN_FOCUS); gtk_box_pack_start(GTK_BOX(parent), radiobutton, FALSE, FALSE, 0); gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton), group); if (config.export_format == format) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton), TRUE); } return gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); } /*--------------------------------------------------------------------*/ void contacts_create_export_window(GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *vbox2; GtkWidget *hbox2; GtkWidget *vbox3; GtkWidget *frame; GtkWidget *alignment; GtkWidget *vbox4; GtkWidget *vbox5; GSList *format_radiobutton_group = NULL; GtkWidget *label; GtkWidget *vseparator; GtkWidget *scrolledwindow; GtkWidget *viewport; GtkWidget *fields_table; GtkWidget *hbox3; GtkWidget *browse_dir_button; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *hbuttonbox_s; GtkWidget *cancel_button; GtkWidget *select_all_button; GtkWidget *select_none_button; GtkWidget *invert_selection_button; gint i; gchar tmpbuf[BUFFER_SIZE]; static MESSAGE msg_export_field[CONTACTS_NUM_COLUMNS]; static MESSAGE msg_select[3]; /* select all, select none, select invert */ appGUI->cnt->export_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cnt->export_window), _("Export contacts")); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->export_window), 6); gtk_window_move (GTK_WINDOW (appGUI->cnt->export_window), config.contacts_export_win_x, config.contacts_export_win_y); gtk_window_set_default_size (GTK_WINDOW(appGUI->cnt->export_window), config.contacts_export_win_w, config.contacts_export_win_h); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cnt->export_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_modal(GTK_WINDOW(appGUI->cnt->export_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cnt->export_window), "key_press_event", G_CALLBACK (export_key_press_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cnt->export_window), "delete_event", G_CALLBACK(export_window_close_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cnt->export_window), vbox1); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 0); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_box_pack_start (GTK_BOX (vbox2), hbox2, TRUE, TRUE, 0); vbox3 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox3); gtk_box_pack_start (GTK_BOX (hbox2), vbox3, FALSE, TRUE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox3), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (alignment), vbox4); gtk_container_set_border_width (GTK_CONTAINER (vbox4), 8); format_radiobutton_group = create_format_radiobutton("CSV", EXPORT_TO_CSV, GTK_BOX(vbox4), format_radiobutton_group); format_radiobutton_group = create_format_radiobutton("XHTML", EXPORT_TO_XHTML, GTK_BOX(vbox4), format_radiobutton_group); format_radiobutton_group = create_format_radiobutton("VCF", EXPORT_TO_VCF, GTK_BOX(vbox4), format_radiobutton_group); sprintf(tmpbuf, "%s:", _("Output format")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox3), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (alignment), vbox4); gtk_container_set_border_width (GTK_CONTAINER (vbox4), 8); sprintf(tmpbuf, "%s:", _("Options")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); sprintf(tmpbuf, "%s", _("Add header")); appGUI->cnt->first_row_header_check_button = gtk_check_button_new_with_mnemonic (tmpbuf); gtk_widget_show (appGUI->cnt->first_row_header_check_button); gtk_box_pack_start (GTK_BOX (vbox4), appGUI->cnt->first_row_header_check_button, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->first_row_header_check_button, GTK_CAN_FOCUS); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(appGUI->cnt->first_row_header_check_button), TRUE); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_start (GTK_BOX (hbox2), vseparator, FALSE, TRUE, 4); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox5); gtk_box_pack_start (GTK_BOX (hbox2), vbox5, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox4), 8); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox5), frame, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_container_add (GTK_CONTAINER (alignment), scrolledwindow); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 8); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport); gtk_container_add (GTK_CONTAINER (scrolledwindow), viewport); fields_table = gtk_table_new (CONTACTS_NUM_COLUMNS, 1, FALSE); gtk_widget_show (fields_table); gtk_container_add (GTK_CONTAINER (viewport), fields_table); sprintf(tmpbuf, "%s:", _("Fields to export")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox5), frame, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbuttonbox_s = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox_s); gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox_s, FALSE, TRUE, 0); gtk_box_set_spacing (GTK_BOX (hbuttonbox_s), 4); gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox_s), GTK_BUTTONBOX_END); select_all_button = gtk_button_new_with_label (_("All")); GTK_WIDGET_UNSET_FLAGS(select_all_button, GTK_CAN_FOCUS); gtk_widget_show (select_all_button); gtk_container_add (GTK_CONTAINER (hbuttonbox_s), select_all_button); msg_select[0].appGUI = appGUI; msg_select[0].data = (gpointer) SELECT_ALL; g_signal_connect (G_OBJECT (select_all_button), "clicked", G_CALLBACK (select_action_cb), &msg_select[0]); select_none_button = gtk_button_new_with_label (_("None")); GTK_WIDGET_UNSET_FLAGS(select_none_button, GTK_CAN_FOCUS); gtk_widget_show (select_none_button); gtk_container_add (GTK_CONTAINER (hbuttonbox_s), select_none_button); msg_select[1].appGUI = appGUI; msg_select[1].data = (gpointer) SELECT_NONE; g_signal_connect (G_OBJECT (select_none_button), "clicked", G_CALLBACK (select_action_cb), &msg_select[1]); invert_selection_button = gtk_button_new_with_label (_("Invert")); GTK_WIDGET_UNSET_FLAGS(invert_selection_button, GTK_CAN_FOCUS); gtk_widget_show (select_none_button); gtk_widget_show (invert_selection_button); gtk_container_add (GTK_CONTAINER (hbuttonbox_s), invert_selection_button); msg_select[2].appGUI = appGUI; msg_select[2].data = (gpointer) SELECT_INVERT; g_signal_connect (G_OBJECT (invert_selection_button), "clicked", G_CALLBACK (select_action_cb), &msg_select[2]); sprintf(tmpbuf, "%s:", _("Select fields")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox3 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox3); gtk_container_add (GTK_CONTAINER (alignment), hbox3); appGUI->cnt->output_file_entry = gtk_entry_new (); gtk_widget_show (appGUI->cnt->output_file_entry); gtk_box_pack_start (GTK_BOX (hbox3), appGUI->cnt->output_file_entry, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->output_file_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cnt->output_file_entry), FALSE); for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { if (i != COLUMN_PHOTO && i != COLUMN_ID) { appGUI->cnt->check_buttons[i] = gtk_check_button_new_with_mnemonic (appGUI->cnt->contact_fields_tags_name[i*2]); gtk_widget_show (appGUI->cnt->check_buttons[i]); msg_export_field[i].appGUI = appGUI; msg_export_field[i].data = (gpointer) ((size_t)i); g_signal_connect (G_OBJECT (appGUI->cnt->check_buttons[i]), "toggled", G_CALLBACK (export_field_selected_cb), &msg_export_field[i]); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->check_buttons[i], GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (fields_table), appGUI->cnt->check_buttons[i], 0, 1, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); if(is_export_column(i)) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(appGUI->cnt->check_buttons[i]), TRUE); } } } browse_dir_button = utl_gui_create_labeled_button (GTK_STOCK_OPEN, OSMO_STOCK_BUTTON_OPEN, _("Browse")); gtk_widget_show (browse_dir_button); GTK_WIDGET_UNSET_FLAGS(browse_dir_button, GTK_CAN_FOCUS); g_signal_connect(browse_dir_button, "clicked", G_CALLBACK(browse_dir_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox3), browse_dir_button, FALSE, FALSE, 0); sprintf(tmpbuf, "%s:", _("Output filename")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 8); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_export_window_close_cb), appGUI); appGUI->cnt->export_button = utl_gui_create_labeled_button (OSMO_STOCK_BUTTON_CONTACTS_EXPORT, OSMO_STOCK_BUTTON_CONTACTS_EXPORT, _("Export")); gtk_widget_show (appGUI->cnt->export_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->cnt->export_button); GTK_WIDGET_SET_FLAGS (appGUI->cnt->export_button, GTK_CAN_DEFAULT); g_signal_connect(appGUI->cnt->export_button, "clicked", G_CALLBACK(export_cb), appGUI); gtk_widget_set_sensitive(appGUI->cnt->export_button, FALSE); gtk_widget_show(appGUI->cnt->export_window); } /*-------------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/tasks_utils.h000664 001750 001750 00000003742 12561325524 016045 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_UTILS_H #define _TASKS_UTILS_H #include "tasks.h" #include "utils_date_time.h" enum { STATE_NONE = 0, STATE_CALENDAR, STATE_TASKS, STATE_EITHER }; gboolean tsk_check_tasks (guint32 julian_start, guint32 julian_end, gint type, GUI *appGUI); void tsk_tasks_foreach (guint32 julian_start, guint32 julian_end, gboolean (*ttfunc)(), GUI *appGUI); gint tsk_get_tasks_num (guint32 julian, gboolean check_only, gboolean show_done, gint hidden_category, GUI *appGUI); char * tsk_get_tasks_str (guint32 julian, gboolean show_done, gint hidden_category, GUI *appGUI); gboolean tsk_get_category_state (gchar *category_name, gint type, GUI *appGUI); gchar * tsk_get_priority_text (gint index); gint tsk_get_priority_index (gchar *text); GtkTreeIter * tsk_get_iter (guint id, GUI *appGUI); TASK_ITEM * tsk_get_item (GtkTreeIter *iter, GUI *appGUI); TASK_ITEM * tsk_get_item_id (guint id, GUI *appGUI); void tsk_item_free (TASK_ITEM *item); #endif /* _TASKS_UTILS_H */ osmo-0.2.14/src/calendar_widget.h000664 001750 001750 00000022607 12561325524 016615 0ustar00pasppasp000000 000000 /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * GTK Calendar Widget * Copyright (C) 1998 Cesar Miquel and Shawn T. Amundson * * This library 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 library 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 library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ /* * Some minor modifications and adaptation to OSMO - a handy personal * manager by pasp@users.sourceforge.net */ #ifndef _CALENDAR_WIDGET_H #define _CALENDAR_WIDGET_H #include #include /* Not needed, retained for compatibility -Yosh */ #include G_BEGIN_DECLS /* Spacing around day/week headers and main area, inside those windows */ #define CALENDAR_MARGIN 0 /* Spacing around day/week headers and main area, outside those windows */ #define INNER_BORDER 1 /* Separation between day headers and main area */ #define CALENDAR_YSEP 4 /* Separation between week headers and main area */ #define CALENDAR_XSEP 4 #define DAY_XSEP 0 /* not really good for small calendar */ #define DAY_YSEP 0 /* not really good for small calendar */ #define SCROLL_DELAY_FACTOR 5 /* Color usage */ #define HEADER_FG_COLOR(widget) (& (widget)->style->fg[GTK_WIDGET_STATE (widget)]) #define HEADER_BG_COLOR(widget) (& (widget)->style->bg[GTK_WIDGET_STATE (widget)]) #define SELECTED_BG_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) #define SELECTED_FG_COLOR(widget) (& (widget)->style->text[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) #define NORMAL_DAY_COLOR(widget) (& (widget)->style->fg[GTK_WIDGET_STATE (widget)]) #define PREV_MONTH_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) #define NEXT_MONTH_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) #define MARKED_COLOR(widget) (& (widget)->style->fg[GTK_WIDGET_STATE (widget)]) #define BACKGROUND_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_STATE (widget)]) #define HIGHLIGHT_BACK_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) #define GUI_TYPE_CALENDAR (gui_calendar_get_type ()) #define GUI_CALENDAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CALENDAR, GuiCalendar)) #define GUI_CALENDAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CALENDAR, GuiCalendarClass)) #define GUI_IS_CALENDAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CALENDAR)) #define GUI_IS_CALENDAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CALENDAR)) #define GUI_CALENDAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CALENDAR, GuiCalendarClass)) typedef struct _GuiCalendar GuiCalendar; typedef struct _GuiCalendarClass GuiCalendarClass; typedef struct _GuiCalendarPrivate GuiCalendarPrivate; typedef enum { GUI_CALENDAR_SHOW_HEADING = 1 << 0, GUI_CALENDAR_SHOW_DAY_NAMES = 1 << 1, GUI_CALENDAR_NO_MONTH_CHANGE = 1 << 2, GUI_CALENDAR_SHOW_WEEK_NUMBERS = 1 << 3, GUI_CALENDAR_WEEK_START_MONDAY = 1 << 4 } GuiCalendarDisplayOptions; enum { ARROW_YEAR_LEFT, ARROW_YEAR_RIGHT, ARROW_MONTH_LEFT, ARROW_MONTH_RIGHT }; enum { MONTH_PREV, MONTH_CURRENT, MONTH_NEXT }; enum { MONTH_CHANGED_SIGNAL, DAY_SELECTED_SIGNAL, DAY_SELECTED_DOUBLE_CLICK_SIGNAL, PREV_MONTH_SIGNAL, NEXT_MONTH_SIGNAL, PREV_YEAR_SIGNAL, NEXT_YEAR_SIGNAL, LAST_SIGNAL }; enum { PROP_0, PROP_YEAR, PROP_MONTH, PROP_DAY, PROP_SHOW_HEADING, PROP_SHOW_DAY_NAMES, PROP_NO_MONTH_CHANGE, PROP_SHOW_WEEK_NUMBERS, PROP_WEEK_START_MONDAY, PROP_LAST }; enum { CURSOR_BLOCK = 0, CURSOR_FRAME }; enum { EVENT_MARKER_CIRCLE = 0, EVENT_MARKER_ELLIPSE, EVENT_MARKER_WAVE }; enum { TODAY_MARKER_ARROW = 0, TODAY_MARKER_FREEHAND_CIRCLE }; enum { TODAY_MARKER =0, EVENT_MARKER }; enum { DAY_NOTE_MARK =0, EVENT_MARK, BIRTHDAY_MARK }; enum { HEADER_COLOR = 0, WEEKEND_COLOR, SELECTOR_COLOR, EVENT_MARKER_COLOR, TODAY_MARKER_COLOR, BIRTHDAY_MARKER_COLOR }; struct _GuiCalendarPrivate { GdkWindow *header_win; GdkWindow *day_name_win; GdkWindow *main_win; GdkWindow *week_win; GdkWindow *arrow_win[4]; guint header_h; guint day_name_h; guint main_h; guint arrow_state[4]; guint arrow_width; guint max_month_width; guint max_year_width; guint day_width; guint week_width; guint min_day_width; guint max_day_char_width; guint max_day_char_ascent; guint max_day_char_descent; guint max_label_char_ascent; guint max_label_char_descent; guint max_week_char_width; /* flags */ guint year_before : 1; guint need_timer : 1; guint in_drag : 1; guint drag_highlight : 1; guint32 timer; gint click_child; gint week_start; gint drag_start_x; gint drag_start_y; }; #define GUI_CALENDAR_GET_PRIVATE(widget) (GUI_CALENDAR (widget)->priv) struct _GuiCalendar { GtkWidget widget; GtkStyle *header_style; GtkStyle *label_style; gint month; gint year; gint selected_day; gint day_month[6][7]; gint day[6][7]; /* day notes */ gint num_marked_dates; gint marked_date[31]; /* events */ gint event_num_marked_dates; gint event_marked_date[31]; /* birthdays */ gint birthday_num_marked_dates; gint birthday_marked_date[31]; GuiCalendarDisplayOptions display_flags; GdkColor marked_date_color[31]; GdkColor header_color; GdkColor weekend_color; GdkColor selector_color; GdkColor event_marker_color; GdkColor today_marker_color; GdkColor birthday_marker_color; gint selector_alpha; gint today_marker_alpha; gunichar mark_sign; gint cursor_type; gint frame_cursor_thickness; gint event_marker_type; gint today_marker_type; gboolean enable_cursor; GdkGC *gc; /* unused */ GdkGC *xor_gc; /* unused */ gint focus_row; gint focus_col; gint highlight_row; gint highlight_col; GuiCalendarPrivate *priv; gchar grow_space [32]; /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); void (*_gtk_reserved3) (void); void (*_gtk_reserved4) (void); }; struct _GuiCalendarClass { GtkWidgetClass parent_class; /* Signal handlers */ void (* month_changed) (GuiCalendar *calendar); void (* day_selected) (GuiCalendar *calendar); void (* day_selected_double_click) (GuiCalendar *calendar); void (* prev_month) (GuiCalendar *calendar); void (* next_month) (GuiCalendar *calendar); void (* prev_year) (GuiCalendar *calendar); void (* next_year) (GuiCalendar *calendar); }; GType gui_calendar_get_type (void) G_GNUC_CONST; GtkWidget* gui_calendar_new (void); gboolean gui_calendar_select_month (GuiCalendar *calendar, guint month, guint year); void gui_calendar_select_day (GuiCalendar *calendar, guint day); gboolean gui_calendar_mark_day (GuiCalendar *calendar, guint day, gint mark_type); gboolean gui_calendar_unmark_day (GuiCalendar *calendar, guint day, gint mark_type); void gui_calendar_clear_marks (GuiCalendar *calendar, gint mark_type); gboolean gui_calendar_set_day_color (GuiCalendar *calendar, guint day, gchar *color_str); void gui_calendar_set_display_options (GuiCalendar *calendar, GuiCalendarDisplayOptions flags); GuiCalendarDisplayOptions gui_calendar_get_display_options (GuiCalendar *calendar); void gui_calendar_get_date (GuiCalendar *calendar, guint *year, guint *month, guint *day); void gui_calendar_get_gdate (GuiCalendar *calendar, GDate *cdate); void gui_calendar_set_marker (GuiCalendar *calendar, gint marker_type, gint marker); void gui_calendar_set_day_note_marker_symbol (GuiCalendar *calendar, gchar *symbol); void gui_calendar_set_color (GuiCalendar *calendar, const gchar *color, gint alpha_value, gint color_type); void gui_calendar_enable_cursor (GuiCalendar *calendar, gboolean state); void gui_calendar_set_cursor_type (GuiCalendar *calendar, gint cursor_type); void gui_calendar_set_frame_cursor_thickness (GuiCalendar *calendar, gint thickness); G_END_DECLS #endif /* _CALENDAR_WIDGET_H */ osmo-0.2.14/src/Makefile.in000664 001750 001750 00000060711 12561325530 015370 0ustar00pasppasp000000 000000 # Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = osmo$(EXEEXT) @HAVE_LIBWEBKIT_TRUE@am__append_1 = @LIBWEBKIT_CFLAGS@ @HAVE_LIBWEBKIT_TRUE@am__append_2 = @LIBWEBKIT_LIBS@ @HAVE_LIBICAL_TRUE@am__append_3 = @LIBICAL_CFLAGS@ @HAVE_LIBICAL_TRUE@am__append_4 = @LIBICAL_LIBS@ @HAVE_GTKSPELL_TRUE@am__append_5 = @GTKSPELL_CFLAGS@ @HAVE_GTKSPELL_TRUE@am__append_6 = @GTKSPELL_LIBS@ @CONFIGPATH_TRUE@am__append_7 = -DCONFIG_PATH=\"$(configpath)\" @CONFIGDIR_TRUE@am__append_8 = -DCONFIG_DIR=\"$(configdir)\" subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/../../depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-2.0.m4 \ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_osmo_OBJECTS = about.$(OBJEXT) backup.$(OBJEXT) calendar.$(OBJEXT) \ calendar_calc.$(OBJEXT) calendar_fullyear.$(OBJEXT) \ calendar_ical.$(OBJEXT) calendar_jumpto.$(OBJEXT) \ calendar_notes.$(OBJEXT) calendar_print.$(OBJEXT) \ calendar_preferences_gui.$(OBJEXT) calendar_timeline.$(OBJEXT) \ calendar_utils.$(OBJEXT) calendar_widget.$(OBJEXT) \ check_events.$(OBJEXT) contacts.$(OBJEXT) \ contacts_birthdays.$(OBJEXT) contacts_import.$(OBJEXT) \ contacts_import_csv.$(OBJEXT) contacts_export.$(OBJEXT) \ contacts_items.$(OBJEXT) contacts_preferences_gui.$(OBJEXT) \ gui.$(OBJEXT) gtksourceiter.$(OBJEXT) main.$(OBJEXT) \ notes.$(OBJEXT) notes_items.$(OBJEXT) \ notes_preferences_gui.$(OBJEXT) options_prefs.$(OBJEXT) \ preferences_gui.$(OBJEXT) stock_icons.$(OBJEXT) \ tasks.$(OBJEXT) tasks_export.$(OBJEXT) tasks_items.$(OBJEXT) \ tasks_print.$(OBJEXT) tasks_preferences_gui.$(OBJEXT) \ tasks_utils.$(OBJEXT) utils.$(OBJEXT) utils_gui.$(OBJEXT) \ utils_date.$(OBJEXT) utils_date_time.$(OBJEXT) \ utils_time.$(OBJEXT) vcf.$(OBJEXT) osmo_OBJECTS = $(am_osmo_OBJECTS) osmo_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/../../depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(osmo_SOURCES) DIST_SOURCES = $(osmo_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ GTKSPELL_LIBS = @GTKSPELL_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBARCHIVE_CFLAGS = @LIBARCHIVE_CFLAGS@ LIBARCHIVE_LIBS = @LIBARCHIVE_LIBS@ LIBICAL_CFLAGS = @LIBICAL_CFLAGS@ LIBICAL_LIBS = @LIBICAL_LIBS@ LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ @LIBNOTIFY_LIBS@ $(am__append_2) $(am__append_4) \ $(am__append_6) LIBWEBKIT_CFLAGS = @LIBWEBKIT_CFLAGS@ LIBWEBKIT_LIBS = @LIBWEBKIT_LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGO_1_20_CFLAGS = @PANGO_1_20_CFLAGS@ PANGO_1_20_LIBS = @PANGO_1_20_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ XML2_CONFIG = @XML2_CONFIG@ XML_CPPFLAGS = @XML_CPPFLAGS@ XML_LIBS = @XML_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ configdir = @configdir@ configpath = @configpath@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = -Wno-portability REVISION := $(shell if test -e .svn; then echo -DREV=\"`LC_ALL=C svn info | sed -n '/^Rev/p'| sed -e 's/^Revision:\ //'`\"; fi;) VERSION_MAJOR := $(shell echo $(VERSION) | awk -F "." '{print $$1}') VERSION_MINOR := $(shell echo $(VERSION) | awk -F "." '{print $$2}') VERSION_MICRO := $(shell echo $(VERSION) | awk -F "." '{print $$3}') AM_CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" $(REVISION) -DDATADIR=\"$(datadir)\" \ -DSOUNDSDIR=\"$(datadir)/sounds\" -DVERSION_MAJOR=\"$(VERSION_MAJOR)\" -DVERSION_MINOR=\"$(VERSION_MINOR)\" -DVERSION_MICRO=\"$(VERSION_MICRO)\" \ @GTK_CFLAGS@ @XML_CPPFLAGS@ -Wall AM_CFLAGS = @CFLAGS@ @LIBNOTIFY_CFLAGS@ $(am__append_1) \ $(am__append_3) $(am__append_5) $(am__append_7) \ $(am__append_8) osmo_SOURCES = about.c about.h \ backup.c backup.h \ calendar.c calendar.h \ calendar_calc.c calendar_calc.h \ calendar_fullyear.c calendar_fullyear.h \ calendar_ical.c calendar_ical.h \ calendar_jumpto.c calendar_jumpto.h \ calendar_moon.h \ calendar_notes.c calendar_notes.h \ calendar_print.c calendar_print.h \ calendar_preferences_gui.c calendar_preferences_gui.h \ calendar_timeline.c calendar_timeline.h \ calendar_utils.c calendar_utils.h \ calendar_widget.c calendar_widget.h \ check_events.c check_events.h \ contacts.c contacts.h \ contacts_birthdays.c contacts_birthdays.h \ contacts_import.c contacts_import.h \ contacts_import_csv.c contacts_import_csv.h \ contacts_export.c contacts_export.h \ contacts_items.c contacts_items.h \ contacts_preferences_gui.c contacts_preferences_gui.h \ gui.c gui.h \ gui_icon.h gui_logo.h \ gtksourceiter.c gtksourceiter.h \ i18n.h \ main.c \ notes.c notes.h \ notes_items.c notes_items.h \ notes_preferences_gui.c notes_preferences_gui.h \ options_prefs.c options_prefs.h \ preferences_gui.c preferences_gui.h \ stock_icons.c stock_icons.h stock_icons_data.h \ tasks.c tasks.h \ tasks_export.c tasks_export.h \ tasks_items.c tasks_items.h \ tasks_print.c tasks_print.h \ tasks_preferences_gui.c tasks_preferences_gui.h \ tasks_utils.c tasks_utils.h \ utils.c utils.h \ utils_gui.c utils_gui.h \ utils_date.c utils_date.h \ utils_date_time.c utils_date_time.h \ utils_time.c utils_time.h \ vcf.c vcf.h osmo_LDADD = $(LIBINTL) @GTK_LIBS@ -lm @XML_LIBS@ @GTHREAD_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) osmo$(EXEEXT): $(osmo_OBJECTS) $(osmo_DEPENDENCIES) $(EXTRA_osmo_DEPENDENCIES) @rm -f osmo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(osmo_OBJECTS) $(osmo_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_calc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_fullyear.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_ical.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_jumpto.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_notes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_preferences_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_timeline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar_widget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_events.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_birthdays.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_export.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_import.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_import_csv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_items.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contacts_preferences_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtksourceiter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notes_items.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notes_preferences_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/options_prefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preferences_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stock_icons.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks_export.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks_items.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks_preferences_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tasks_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_date.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_date_time.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_gui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_time.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcf.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 -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 -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ 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-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS dnl -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DG_DISABLE_CAST_CHECKS #if WIN32 #AM_CFLAGS = \ # -mms-bitfields \ # -mwindows #endif # 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: osmo-0.2.14/src/utils.c000664 001750 001750 00000073517 12561325524 014642 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "utils.h" #include "utils_gui.h" #include "utils_time.h" #include "utils_date.h" #include "i18n.h" #include "options_prefs.h" /*------------------------------------------------------------------------------*/ gchar * utl_text_with_tags_to_html (gchar *input_text) { const gchar *html_tags[] = { "mark_color", "", "bold", "", "italic", "", "underline", "", "strike", "" }; guint n_pairs = G_N_ELEMENTS (html_tags) / 2; gchar *output = g_strdup (""); gunichar TAG_CHAR = TAG; /* Unicode chars in the Private Use Area. */ gchar tag_char_utf8[7] = {0}; gchar **tokens, *o_links_1_text, *o_links_2_text; gint count, i; g_unichar_to_utf8 (TAG_CHAR, tag_char_utf8); tokens = g_strsplit (input_text, tag_char_utf8, 0); for (count = 0; tokens[count]; count++) { if (count % 2 == 0) { /* normal text */ output = utl_strconcat (output, tokens[count], NULL); } else { if (tokens[count][0] != '/') { /* opening tag */ for (i=0; i < n_pairs; i++) { if (!strcmp(html_tags[i*2+0], tokens[count])) { output = utl_strconcat (output, html_tags[i*2+1], NULL); break; } } } else { /* closing tag */ output = utl_strconcat (output, "", NULL); } } } g_strfreev (tokens); o_links_1_text = utl_text_replace (output, REGEX_URL, "\\0"); g_free (output); o_links_2_text = utl_text_replace (o_links_1_text, REGEX_EMAIL, "\\0"); g_free (o_links_1_text); return o_links_2_text; } /*------------------------------------------------------------------------------*/ gchar * utl_inline_image_to_html (guint8 *inline_data) { GdkPixbuf *image; gchar *output = g_strdup (""); gchar *img; gchar tmpbuf[BUFFER_SIZE]; image = gdk_pixbuf_new_from_inline (-1, inline_data, FALSE, NULL); g_snprintf (tmpbuf, BUFFER_SIZE, "width=\"%d\" height=\"%d\">", gdk_pixbuf_get_width (image), gdk_pixbuf_get_height (image)); output = utl_strconcat (output, "", "bold", "", "italic", "", "underline", "", "strike", "" }; guint n_pairs = G_N_ELEMENTS (html_tags) / 2; g_unichar_to_utf8 (TAG_CHAR, tag_char_utf8); itext = utl_text_to_html (text, FALSE, TRUE); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); if (header_html != NULL) { output = utl_strconcat (output, header_html, NULL); } output = utl_strconcat (output, "", NULL); if (top_html != NULL) { output = utl_strconcat (output, top_html, NULL); } output = utl_strconcat (output, "", NULL); tokens = g_strsplit (itext, tag_char_utf8, 0); g_free (itext); for (count = 0; tokens[count]; count++) { if (count % 2 == 0) { /* normal text */ output = utl_strconcat (output, tokens[count], NULL); } else { if (tokens[count][0] != '/') { /* opening tag */ for (i=0; i < n_pairs; i++) { if (!strcmp(html_tags[i*2+0], tokens[count])) { output = utl_strconcat (output, html_tags[i*2+1], NULL); break; } } } else { /* closing tag */ output = utl_strconcat (output, "", NULL); } } } g_strfreev (tokens); output = utl_strconcat (output, "", NULL); if (bottom_html != NULL) { output = utl_strconcat (output, bottom_html, NULL); } output = utl_strconcat (output, "", NULL); o_links_1_text = utl_text_replace (output, REGEX_URL, "\\0"); g_free (output); o_links_2_text = utl_text_replace (o_links_1_text, REGEX_EMAIL, "\\0"); g_free (o_links_1_text); return o_links_2_text; } /*------------------------------------------------------------------------------*/ gchar * utl_text_to_html (const gchar *text, gboolean ignoreBR, /* ignore line breaks */ gboolean ignoreSP /* ignore spaces */) { const gchar *pairs[] = { "&", "&", "\"", """, "<", "<", ">", ">" }; GRegex *reg; gint i = 0; gchar *buffer = NULL, *temp = NULL; guint n_pairs = G_N_ELEMENTS (pairs) / 2; temp = g_strdup(text); for (i=0; i < n_pairs; i++) { reg = g_regex_new (pairs[i*2+0], 0, 0, NULL); buffer = g_regex_replace_literal (reg, temp, -1, 0, pairs[i*2+1], 0, NULL); g_free (temp); temp = buffer; g_regex_unref (reg); } if (ignoreBR == FALSE) { reg = g_regex_new ("\\n", 0, 0, NULL); buffer = g_regex_replace_literal (reg, temp, -1, 0, "
", 0, NULL); g_free (temp); temp = buffer; g_regex_unref (reg); } if (ignoreSP == FALSE) { reg = g_regex_new (" ", 0, 0, NULL); buffer = g_regex_replace_literal (reg, temp, -1, 0, "%20", 0, NULL); g_free (temp); temp = buffer; g_regex_unref (reg); } return temp; } /*------------------------------------------------------------------------------*/ gchar * utl_get_day_name (guint day, gboolean short_name) { static gchar buffer[BUFFER_SIZE]; GDate *tmpdate = NULL; g_return_val_if_fail (day > 0 && day <= 31, buffer); tmpdate = g_date_new_dmy (day, 1, 2007); g_return_val_if_fail (tmpdate != NULL, buffer); g_date_strftime (buffer, BUFFER_SIZE, short_name ? "%a" : "%A", tmpdate); g_date_free (tmpdate); return buffer; } /*------------------------------------------------------------------------------*/ gchar * utl_get_julian_day_name (guint32 julian) { static gchar buffer[BUFFER_SIZE]; GDate *tmpdate = NULL; buffer[0] = '\0'; g_return_val_if_fail (g_date_valid_julian (julian) == TRUE, buffer); tmpdate = g_date_new_julian (julian); g_return_val_if_fail (tmpdate != NULL, buffer); g_date_strftime (buffer, BUFFER_SIZE, "%A", tmpdate); g_date_free (tmpdate); return buffer; } /*------------------------------------------------------------------------------*/ gchar * utl_get_date_name (const GDate *date) { static gchar buffer[BUFFER_SIZE]; g_date_strftime (buffer, BUFFER_SIZE, "%e %B %Y", date); /* e.g. 1 August 1999 */ return buffer; } /*------------------------------------------------------------------------------*/ gchar * utl_get_date_name_format (const GDate *date, gchar *fmt) { static gchar buffer[BUFFER_SIZE]; g_date_strftime (buffer, BUFFER_SIZE, fmt, date); return buffer; } /*------------------------------------------------------------------------------*/ guint utl_get_weekend_days_in_month (const GDate *date) { GDate *tmpdate = NULL; guint i, day, days, weekend_days; tmpdate = g_date_new_dmy (1, g_date_get_month (date), g_date_get_year (date)); g_return_val_if_fail (tmpdate != NULL, 0); days = utl_date_get_days_in_month (tmpdate); weekend_days = 0; for (i = 1; i <= days; i++) { g_date_set_day (tmpdate, i); day = g_date_get_weekday (tmpdate); if (day == G_DATE_SATURDAY || day == G_DATE_SUNDAY) { weekend_days++; } } g_date_free (tmpdate); return weekend_days; } /*------------------------------------------------------------------------------*/ guint utl_get_weekend_days_in_month_my (guint month, guint year) { GDate *tmpdate = NULL; guint i, day, days, weekend_days; g_return_val_if_fail (g_date_valid_dmy (1, month, year) == TRUE, 0); tmpdate = g_date_new_dmy (1, month, year); g_return_val_if_fail (tmpdate != NULL, 0); days = utl_date_get_days_in_month (tmpdate); weekend_days = 0; for (i = 1; i <= days; i++) { g_date_set_day (tmpdate, i); day = g_date_get_weekday (tmpdate); if (day == G_DATE_SATURDAY || day == G_DATE_SUNDAY) { weekend_days++; } } g_date_free (tmpdate); return weekend_days; } /*------------------------------------------------------------------------------*/ guint utl_get_days_per_year (guint year) { return (g_date_is_leap_year (year) ? 366 : 365); } /*------------------------------------------------------------------------------*/ void utl_subtract_from_date (guint32 date, gint time, gint days, gint seconds, guint32 *new_date, gint *new_time) { *new_date = date - days; if (time >= 0) { *new_time = time - seconds; if (*new_time < 0) { *new_time = (*new_time) + 24 * 3600; *new_date = (*new_date) - 1; } } else { *new_time = -1; } } /*------------------------------------------------------------------------------*/ /* This routine has been taken from http://www.voidware.com/moon_phase.htm calculates the moon phase (0-7), accurate to 1 segment: 0 = > new moon, 4 => full moon. */ guint utl_calc_moon_phase (const GDate *date) { gdouble jd; gint day, month, year; gint b, c, e; utl_date_get_dmy (date, &day, &month, &year); if (month < 3) { year--; month += 12; } month++; c = 365.25 * year; e = 30.6 * month; jd = c + e + day - 694039.09; /* jd is total days elapsed */ jd /= 29.53; /* divide by the moon cycle (29.53 days) */ b = jd; /* int(jd) -> b, take integer part of jd */ jd -= b; /* subtract integer part to leave fractional part of original jd */ b = jd * 8 + 0.5; /* scale fraction from 0-8 and round by adding 0.5 */ b = b & 7; /* 0 and 8 are the same so turn 8 into 0 */ return b; } /*------------------------------------------------------------------------------*/ gchar* utl_get_moon_phase_name (gint phase) { const gchar *phase_names[] = { N_("New Moon"), N_("Waxing Crescent Moon"), N_("Quarter Moon"), N_("Waxing Gibbous Moon"), N_("Full Moon"), N_("Waning Gibbous Moon"), N_("Last Quarter Moon"), N_("Waning Crescent Moon") }; return (gchar *) gettext (phase_names[phase]); } /*------------------------------------------------------------------------------*/ void utl_name_strcat (gchar *first, gchar *second, gchar *buffer) { gchar tmpbuff[BUFFER_SIZE]; gboolean flag; buffer[0] = '\0'; g_return_if_fail (first != NULL || second != NULL); g_snprintf (tmpbuff, BUFFER_SIZE, "(%s)", _("None")); flag = FALSE; if (first != NULL) { if (strcmp (first, tmpbuff) != 0) { flag = TRUE; g_strlcpy (buffer, first, BUFFER_SIZE); } g_free (first); } if (second != NULL) { if (strcmp (second, tmpbuff) != 0) { if (flag == TRUE) { g_strlcat (buffer, " ", BUFFER_SIZE); g_strlcat (buffer, second, BUFFER_SIZE); } else { g_strlcpy (buffer, second, BUFFER_SIZE); } } g_free (second); } g_return_if_fail (strlen (buffer) > 0); } /*------------------------------------------------------------------------------*/ void utl_xml_get_int (gchar *name, gint *iname, xmlNodePtr node) { xmlChar *key; if ((xmlStrcmp (node->name, (const xmlChar *) name)) == 0) { key = xmlNodeGetContent (node->xmlChildrenNode); if (key != NULL) { *iname = atoi ((gchar *) key); xmlFree (key); } } } /*------------------------------------------------------------------------------*/ void utl_xml_get_uint (gchar *name, guint *uname, xmlNodePtr node) { xmlChar *key; if ((xmlStrcmp (node->name, (const xmlChar *) name)) == 0) { key = xmlNodeGetContent (node->xmlChildrenNode); if (key != NULL) { *uname = (guint) atoi ((gchar *) key); xmlFree (key); } } } /*------------------------------------------------------------------------------*/ void utl_xml_get_char (gchar *name, gchar *cname, xmlNodePtr node) { xmlChar *key; if ((xmlStrcmp (node->name, (const xmlChar *) name)) == 0) { key = xmlNodeGetContent (node->xmlChildrenNode); if (key != NULL) { *cname = key[0]; xmlFree (key); } } } /*------------------------------------------------------------------------------*/ void utl_xml_get_str (gchar *name, gchar **sname, xmlNodePtr node) { xmlChar *key; if ((xmlStrcmp (node->name, (const xmlChar *) name)) == 0) { key = xmlNodeGetContent (node->xmlChildrenNode); if (key != NULL) { *sname = g_strdup ((gchar *) key); xmlFree (key); } } } /*------------------------------------------------------------------------------*/ void utl_xml_get_strn (gchar *name, gchar *sname, gint buffer_size, xmlNodePtr node) { xmlChar *key; if ((xmlStrcmp (node->name, (const xmlChar *) name)) == 0) { key = xmlNodeGetContent (node->xmlChildrenNode); if (key != NULL) { g_strlcpy (sname, (gchar *) key, buffer_size); xmlFree (key); } } } /*------------------------------------------------------------------------------*/ void utl_xml_put_int (gchar *name, gint value, xmlNodePtr node) { gchar buffer[32]; g_snprintf (buffer, 32, "%d", value); xmlNewChild (node, NULL, (const xmlChar *) name, (xmlChar *) buffer); } /*------------------------------------------------------------------------------*/ void utl_xml_put_uint (gchar *name, guint value, xmlNodePtr node) { gchar buffer[32]; g_snprintf (buffer, 32, "%d", value); xmlNewChild (node, NULL, (const xmlChar *) name, (xmlChar *) buffer); } /*------------------------------------------------------------------------------*/ void utl_xml_put_char (gchar *name, gchar character, xmlNodePtr node, xmlDocPtr doc) { gchar buffer[32]; g_snprintf (buffer, 32, "%c", character); xmlNewTextChild (node, NULL, (const xmlChar *) name, (xmlChar *) buffer); } /*------------------------------------------------------------------------------*/ void utl_xml_put_str (gchar *name, gchar *string, xmlNodePtr node, xmlDocPtr doc) { xmlNewTextChild (node, NULL, (const xmlChar *) name, (xmlChar *) string); } /*------------------------------------------------------------------------------*/ void utl_xml_put_strn (gchar *name, gchar *string, gint buffer_size, xmlNodePtr node, xmlDocPtr doc) { gchar buffer[BUFFER_SIZE]; if (buffer_size > BUFFER_SIZE) buffer_size = BUFFER_SIZE; g_snprintf (buffer, buffer_size, "%s", string); xmlNewTextChild (node, NULL, (const xmlChar *) name, (xmlChar *) buffer); } /*------------------------------------------------------------------------------*/ gboolean utl_is_valid_command (gchar *command) { gchar *found_path; found_path = g_find_program_in_path (command); if (found_path != NULL) { g_free (found_path); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void utl_run_command (gchar *command, gboolean sync) { gchar *cmdline[4]; cmdline[0] = "sh"; cmdline[1] = "-c"; cmdline[2] = command; cmdline[3] = 0; if (sync == FALSE) { g_spawn_async (NULL, (gchar **)cmdline, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, NULL, NULL, NULL, NULL); } else { g_spawn_sync (NULL, (gchar **)cmdline, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, NULL, NULL, NULL, NULL, NULL, NULL); } } /*------------------------------------------------------------------------------*/ gboolean utl_run_helper (gchar *parameter, gint helper) { gchar command[PATH_MAX], quoted[PATH_MAX]; gboolean sync = FALSE; sprintf (quoted, "\"%s\"", parameter); if (helper == EMAIL) { sprintf (command, config.email_client, quoted); } else if (helper == WWW) { sprintf (command, config.web_browser, quoted); } else if (helper == SOUND) { sprintf (command, config.sound_player, quoted); sync = TRUE; } else { return FALSE; } utl_run_command (command, sync); return TRUE; } /*------------------------------------------------------------------------------*/ gint utl_get_link_type (gchar *link) { gint i, n, d; g_return_val_if_fail (link != NULL, UNKNOWN); for (i = n = d = 0; i < strlen (link); i++) { if (link[i] == '@') n++; if (link[i] == '.') d++; } if (!strncasecmp (link, "https://", 8) || !strncasecmp (link, "http://", 7) || !strncasecmp(link, "www", 3)) { return WWW; } else if (n == 1) { return EMAIL; } else if (n == 0 && d >= 1) { return WWW; } else { return UNKNOWN; } } /*------------------------------------------------------------------------------*/ void utl_cairo_set_color (cairo_t *cr, GdkColor *color, gint alpha) { cairo_set_source_rgba (cr, (double) color->red / 65535.0, (double) color->green / 65535.0, (double) color->blue / 65535.0, (double) alpha / 65535.0); } /*------------------------------------------------------------------------------*/ void utl_cairo_draw (cairo_t *cr, gint stroke) { if (stroke) { cairo_set_line_width (cr, stroke); cairo_stroke (cr); } else { cairo_fill (cr); } } /*------------------------------------------------------------------------------*/ void utl_draw_rounded_rectangle (cairo_t *cr, gint x, gint y, gint w, gint h, gint a, gint s) { cairo_move_to (cr, x + a + s, y + s); cairo_line_to (cr, x + w - a - s, y + s); cairo_arc (cr, x + w - a - s, y + a + s, a, 1.5 * M_PI, 2.0 * M_PI); cairo_line_to (cr, x + w - s, y + h - a - s); cairo_arc (cr, x + w - a - s, y + h - a - s, a, 0.0 * M_PI, 0.5 * M_PI); cairo_line_to (cr, x + a + s, y + h - s); cairo_arc (cr, x + a + s, y + h - a - s, a, 0.5 * M_PI, 1.0 * M_PI); cairo_line_to (cr, x + s, y + a + s); cairo_arc (cr, x + a + s, y + a + s, a, 1.0 * M_PI, 1.5 * M_PI); } /*------------------------------------------------------------------------------*/ void utl_draw_left_arrow (cairo_t *cr, gdouble x, gdouble y, gdouble w, gdouble h, gdouble a) { cairo_move_to (cr, x, y); cairo_line_to (cr, x + w * a, y + h * 0.50); cairo_line_to (cr, x + w * a, y + h * 0.25); cairo_line_to (cr, x + w * 1, y + h * 0.25); cairo_line_to (cr, x + w * 1, y - h * 0.25); cairo_line_to (cr, x + w * a, y - h * 0.25); cairo_line_to (cr, x + w * a, y - h * 0.50); cairo_close_path (cr); } /*------------------------------------------------------------------------------*/ gpointer utl_snd_play_thread (gpointer *data) { gchar sound_filename[PATH_MAX]; gint i; g_snprintf (sound_filename, PATH_MAX, "%s%c%s%c%s", SOUNDSDIR, G_DIR_SEPARATOR, "osmo", G_DIR_SEPARATOR, "alarm.wav"); for (i=0; i < (size_t) data; i++) { utl_run_helper (sound_filename, SOUND); } return NULL; } void utl_play_alarm_sound (guint repetitions) { if (repetitions == 0) return; g_thread_try_new ("osmo", (GThreadFunc) utl_snd_play_thread, (gpointer) ((size_t) repetitions), NULL); } /*------------------------------------------------------------------------------*/ gchar* utl_add_timestamp_to_filename (gchar *filename, gchar *extension) { static gchar filename_buffer[BUFFER_SIZE]; g_snprintf (filename_buffer, BUFFER_SIZE, "%s-%4d%02d%02d%02d%02d.%s", filename, utl_date_get_current_year(), utl_date_get_current_month(), utl_date_get_current_day(), utl_time_get_current_hour(), utl_time_get_current_minute(), extension); return filename_buffer; } /*------------------------------------------------------------------------------*/ gchar * utl_strconcat (gchar *string, ...) { gchar *tmp_holder, *tmp_str; va_list arguments; va_start (arguments, string); while ((tmp_str = va_arg (arguments, gchar *)) != NULL) { tmp_holder = string; string = g_strconcat (tmp_holder, tmp_str, NULL); g_free (tmp_holder); } va_end (arguments); return string; } /*------------------------------------------------------------------------------*/ gint utl_text_strcmp (const gchar *string1, const gchar *string2) { if (string1 == NULL && string2 == NULL) { return 0; } if (string1 == NULL) { return -1; } else if (string2 == NULL) { return 1; } else { return g_utf8_collate(string1, string2); } } /*------------------------------------------------------------------------------*/ static gboolean find_substring(const gchar *haystack, const gchar *needle, gboolean case_sensitive) { gint window_len, text_len, i, diff; gchar *window_start, *window_end, *casefold1, *casefold2; window_len = g_utf8_strlen(needle, -1); if (window_len == 0) { return TRUE; } text_len = g_utf8_strlen(haystack, -1); if (text_len == 0) { return FALSE; } if(case_sensitive == TRUE) { casefold1 = g_strdup(needle); } else { casefold1 = g_utf8_casefold(needle, -1); } for (i = 0; i <= text_len - window_len; i++) { window_start = g_utf8_offset_to_pointer(haystack, i); window_end = g_utf8_offset_to_pointer(haystack, i + window_len); if(case_sensitive == TRUE) { casefold2 = g_strndup(window_start, window_end - window_start); } else { casefold2 = g_utf8_casefold(window_start, window_end - window_start); } diff = g_utf8_collate(casefold1, casefold2); g_free(casefold2); if (!diff) { g_free(casefold1); return TRUE; } } g_free(casefold1); return FALSE; } /*------------------------------------------------------------------------------*/ gboolean utl_text_strcasestr(const gchar *haystack, const gchar *needle) { return find_substring(haystack, needle, FALSE); } /*------------------------------------------------------------------------------*/ gboolean utl_text_strstr(const gchar *haystack, const gchar *needle) { return find_substring(haystack, needle, TRUE); } /*------------------------------------------------------------------------------*/ void utl_free_list (GList *list, GDestroyNotify free_func) { #if GLIB_CHECK_VERSION(2, 28, 0) g_list_free_full(list, free_func); #else GList *l; for (l = list; l; l = l->next) { free_func(l->data); } g_list_free(list); #endif } /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBWEBKIT void utl_webkit_load_cb(WebKitWebView *view, GParamSpec *pspec, GUI *appGUI) { WebKitLoadStatus load_status; GtkAdjustment *scroll_adjustment; g_object_get(view, "load-status", &load_status, NULL); if (load_status == WEBKIT_LOAD_PROVISIONAL) { scroll_adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(appGUI->cal->day_info_scrolledwindow)); appGUI->cal->html_scroll_position = gtk_adjustment_get_value(scroll_adjustment); } else if (load_status == WEBKIT_LOAD_FINISHED) { /* process pending events, wait till the end of drawing of the webview */ while (gtk_events_pending()) { gtk_main_iteration(); } scroll_adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(appGUI->cal->day_info_scrolledwindow)); gtk_adjustment_set_value(scroll_adjustment, appGUI->cal->html_scroll_position); } } #endif /* HAVE_LIBWEBKIT */ /*------------------------------------------------------------------------------*/ gint utl_open_count_url_links (gchar *text, gboolean url_count) { GRegex *regex; GMatchInfo *match_info; gchar url_path[PATH_MAX], command[PATH_MAX]; gchar *URL; gint k = 0; regex = g_regex_new (REGEX_URL, 0, 0, NULL); g_regex_match (regex, text, 0, &match_info); url_path[0] = '\0'; while (g_match_info_matches (match_info)) { if (url_count == FALSE) { URL = g_match_info_fetch (match_info, 0); strcat (url_path, "\""); strcat (url_path, URL); strcat (url_path, "\" "); g_free (URL); } k++; g_match_info_next (match_info, NULL); } if (url_count == FALSE) { sprintf (command, config.web_browser, url_path); utl_run_command (command, FALSE); } g_match_info_free (match_info); g_regex_unref (regex); return k; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/gui_icon.h000664 001750 001750 00000042670 12561325524 015277 0ustar00pasppasp000000 000000 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_icon) #endif #ifdef __GNUC__ static const guint8 osmo_icon[] __attribute__ ((__aligned__ (4))) = #else static const guint8 osmo_icon[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (5782) */ "\0\0\26\256" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (192) */ "\0\0\0\300" /* width (48) */ "\0\0\0""0" /* height (48) */ "\0\0\0""0" /* pixel_data: */ "\224\377\377\377\0\12""668\6""668K;:<\25299;\35399;\34399;\32388:\302" "779\256668\212668+\244\377\377\377\0\17""668398:\25588:\365EEF\361hg" "g\376xwv\377wtu\377rqq\377gfg\377YXX\377HHI\374==\77\366557\325668e6" "68\15\240\377\377\377\0\11""668]779\366ONN\376hff\377~|{\377\205\204" "\202\377zxv\377kih\377\\ZZ\377\202WUV\377\6YWY\377`^_\377dcd\377IHI\366" "668\367668g\235\377\377\377\0\25""668\2""668\21688:\365RPP\377caa\377" "qon\377}{y\377}{z\377qom\377dba\377WUU\377KII\377><=\3771/1\377(&(\377" "535\377\\[\\\377WVW\377::<\366557\220668\1\232\377\377\377\0\17""668" "\4""668\27588:\364KJJ\377ZXW\377fdd\377sqp\377\200~|\377{yw\377nlk\377" "a__\377USS\377HFF\377;9:\377/-.\377\202(&(\377\6)')\377GEG\377`_`\377" "GGH\370557\265668\11\231\377\377\377\0\17""668o657\363CAB\377PNN\377" "\\ZZ\377igf\377vtr\377\202\200~\377xvt\377kih\377^\\\\\377RPP\377ECD" "\377868\377,*+\377\204(&(\377\5""202\377VUU\377HGH\373557\316668\3\227" "\377\377\377\0\20""668\22""657\361978\377FDD\377RPP\377_]]\377lji\377" "ywu\377\202\200~\377usr\377hff\377\\ZY\377OMM\377B@A\377645\377)')\377" "\205(&(\377\4,+,\377SQR\377\77>\77\367668k\227\377\377\377\0\17""557" "\232324\366<:;\377HFG\377USS\377b`_\377oml\377{yx\377\177}{\377rpo\377" "ecc\377YWW\377LJK\377@>\77\377312\377\207(&(\377\4""1.0\377MLL\37777" "9\363668\21\225\377\377\377\0\20""668)557\365201\377\77=>\377KIJ\377" "XVV\377fdc\377trq\377\201\177}\377~|z\377pnl\377ca`\377VTT\377IGH\377" "=;<\3770.0\377\210(&(\377\3>=>\377AAB\373557\232\225\377\377\377\0\20" "668u0/1\372534\377A\77@\377NLL\377\\ZZ\377kih\377kjj\377vuu\377\206\204" "\204\377\200~}\377kih\377TRR\377GEE\377:89\377-+-\377\210(&(\377\4+*" "+\377LKK\377778\367668\"\224\377\377\377\0\20""557\2310/1\377867\377" "DBC\377QOO\377TSS\377>==\377aYJ\377f]L\377A@>\377WVU\377rop\377trs\377" "YXX\377:89\377*(*\377\211(&(\377\3ECD\377@>>\377g]J\212\224\377\377\377" "\0\7""557\276446\377979\377GEF\377PNO\377=<<\377\250\220b\377\202\306" "\250m\377\10\303\245l\377\222\177Z\377HE@\377LJH\377`_`\377jij\377NM" "N\377313\377\205(&(\377\6""101\377656\377+)+\377989\377BAB\377;:9\217" "\224\377\377\377\0\6""557\334668\377<;9\377B@A\377\77>=\377\224\200[" "\377\205\306\250m\377\21\305\247m\377\223\177Z\377FC>\377CA\77\377LJ" "L\377cbb\377WUV\377=;<\377646\377313\377@>\77\377KJJ\377EDD\377HGG\377" "535\377FFF\377557\301\224\377\377\377\0\5""557\361=;5\372\267\236f\377" "g]K\377\202rT\377\202\306\250m\377\4\313\256v\377\321\266\200\377\314" "\260x\377\307\251n\377\202\306\250m\377\17\304\247l\377\220~Y\377MH@" "\377<:;\377JGG\377SRR\377RPQ\377NNN\377FEF\377=::\377ID=\377BAA\377K" "KK\377HGG\377557\352\224\377\377\377\0\11""557\246\\P)\363\333\274u\377" "\317\260q\377\306\250m\377\313\256u\377\337\305\224\377\350\320\245\377" "\352\324\253\377\202\354\327\257\377\21\343\314\237\377\330\276\213\377" "\316\261z\377\311\253q\377\306\251n\377\263\231f\377\201qT\377VOD\377" "DA=\377><;\377RKA\377\244\210V\377\276\231X\377PH<\377BAA\377JIJ\377" "668\373\224\377\377\377\0\34""668\"ua\32\372\340\302y\377\311\253n\377" "\311\253p\377\334\302\220\377\342\311\232\377\345\315\240\377\347\320" "\244\377\351\322\247\377\351\322\250\377\351\321\247\377\347\317\243" "\377\344\314\236\377\342\310\230\377\336\303\222\377\332\276\212\377" "\330\272\204\377\324\265}\377\321\260u\377\315\253n\377\311\246f\377" "\306\241_\377\302\234W\377\266\221O\377GB:\377A@@\377557\350\225\377" "\377\377\0\33}g\31\370\336\301{\377\312\255o\377\324\267\201\377\335" "\301\217\377\340\305\225\377\342\310\231\377\344\313\235\377\345\315" "\240\377\346\315\240\377\345\314\237\377\344\312\234\377\342\310\230" "\377\337\304\223\377\334\300\215\377\331\274\207\377\326\267\200\377" "\323\263y\377\317\256r\377\314\251k\377\310\244d\377\305\237\\\377\301" "\232U\377\277\227P\377\255\212K\377B>1\376557\233\225\377\377\377\0\32" "\201i\34\346\330\274x\377\317\263u\377\330\271\203\377\333\276\212\377" "\335\301\217\377\337\304\223\377\341\306\226\377\342\310\230\377\342" "\310\231\377\341\307\230\377\340\306\225\377\336\303\222\377\334\300" "\215\377\332\275\210\377\327\271\202\377\324\265|\377\321\260v\377\316" "\254o\377\312\247h\377\307\242a\377\303\235Z\377\300\230R\377\277\227" "P\377\264\217F\377\200h\32\346\226\377\377\377\0\26\201j\34\310\314\257" "m\377\326\271{\377\325\266\177\377\330\272\204\377\332\275\210\377\334" "\277\214\377\335\301\217\377\336\302\220\377\336\303\221\377\336\302" "\220\377\335\301\216\377\333\277\213\377\331\274\207\377\327\271\202" "\377\324\265}\377\322\261w\377\317\255q\377\314\251k\377\310\244d\377" "\305\240]\377\302\233V\377\202\277\227P\377\2\253\210\77\377\200i\33" "\310\226\377\377\377\0\10|f\30s\256\224M\371\335\300\202\377\322\262" "y\377\325\266}\377\327\270\202\377\330\273\205\377\331\274\207\377\202" "\332\275\211\377\14\332\275\210\377\331\274\207\377\330\272\204\377\326" "\270\200\377\324\265|\377\322\261w\377\317\256r\377\314\252l\377\311" "\246f\377\306\242`\377\303\235Y\377\300\231S\377\202\277\227P\377\2\226" "y,\367|f\30s\226\377\377\377\0\25xc\25$\207p#\367\337\304\206\377\322" "\261u\377\321\261w\377\323\264{\377\325\266~\377\326\267\200\377\326" "\270\201\377\327\270\201\377\326\270\201\377\326\267\177\377\324\265" "}\377\323\263z\377\321\260v\377\317\255q\377\314\252l\377\312\246g\377" "\307\242a\377\304\236[\377\301\232U\377\202\277\227P\377\3\275\226O\377" "~h\32\366xc\25$\227\377\377\377\0\23\200i\33\263\272\237[\373\333\277" "\203\377\316\255p\377\320\257s\377\321\261v\377\322\262x\377\323\263" "y\377\323\263z\377\323\263y\377\322\262x\377\321\260v\377\317\256s\377" "\316\254o\377\314\251k\377\311\246f\377\307\242a\377\304\237\\\377\302" "\233V\377\203\277\227P\377\2\232{1\371\200h\32\263\230\377\377\377\0" "\7\200f\32\24~h\33\360\324\272|\377\323\264x\377\314\252l\377\316\254" "o\377\316\255q\377\202\317\256r\377\12\317\255q\377\316\255p\377\315" "\253n\377\314\251k\377\312\247h\377\311\245d\377\307\242`\377\304\236" "[\377\302\233V\377\277\227Q\377\202\277\227P\377\3\261\215D\377}g\31" "\360\200f\32\24\230\377\377\377\0\7%2Q)AB;\361\217z3\377\333\301\211" "\377\314\252j\377\312\247g\377\313\250i\377\203\313\250j\377\7\313\247" "i\377\312\246g\377\311\245d\377\307\242a\377\305\240^\377\303\235Z\377" "\301\232U\377\203\277\227P\377\4\276\225O\377\204o$\377[ZP\371\"0OB\215" "\377\377\377\0\33\223}G\273\221|E\360\221|B\271\217zC\370\217{E\251\217" "{B\363\217zB\240\220{B\352\222{B\252\377\377\377\0$.OM\"0P\364'7V\377" "\177rA\377\255\224O\377\331\277\207\377\316\257q\377\307\242a\377\307" "\243b\377\310\243b\377\307\243b\377\307\242a\377\306\241_\377\305\240" "]\377\304\236Z\377\302\233W\377\300\231S\377\202\277\227P\377\10\277" "\227Q\377\276\225O\377\227z0\377\202uB\377,_\367'6T\373#0O\375!1" "O\341\35*G\251\31#:n\16\22\40""8\0\0\0\37\0\0\0\30\0\0\0\22\0\0\0\13" "\0\0\0\5\202\377\377\377\0\4pqn\377\371\371\371\377\350\350\350\377|" "|z\377\202\230\230\226\377\10\231\231\227\377~~|\377\360\360\360\377" "\362\362\362\377\363\363\363\377\364\364\364\377\366\366\366\377\367" "\367\367\377\202\371\371\371\377.\370\370\370\377\366\366\366\377\370" "\370\370\377pqn\377\31#9\241\34(A\271\34+G\321\"/M\361\"1N\361#0N\374" "#1O\373$0O\363#0M\363!-G\327\36'\77\302\30\40""5\255\25\34""0\233\21" "\31(\206\16\22\36p\11\14\21X\0\0\0F\0\0\0>\0\0\0""7\0\0\0""0\0\0\0*\0" "\0\0#\0\0\0\34\0\0\0\25\0\0\0\17\0\0\0\10\0\0\0\1\377\377\377\0pqn\377" "\371\371\371\377\350\350\350\377\351\351\351\377\353\353\353\377\354" "\354\354\377\355\355\355\377\357\357\357\377\360\360\360\377\361\361" "\361\377\363\363\363\377\364\364\364\377\365\365\365\377\367\367\367" "\377\202\370\370\370\377\13\367\367\367\377\366\366\366\377\370\370\370" "\377pqn\377\0\0\0F\0\0\0L\0\0\0Q\0\0\0V\0\0\0[\0\0\0^\0\0\0a\202\0\0" "\0b\21\0\0\0`\0\0\0]\0\0\0Y\0\0\0U\0\0\0O\0\0\0J\0\0\0D\0\0\0>\0\0\0" "8\0\0\0""2\0\0\0+\0\0\0%\0\0\0\37\0\0\0\30\0\0\0\22\0\0\0\13\0\0\0\5" "\202\377\377\377\0\2pqn\377\366\366\366\377\220\370\370\370\377\11\367" "\367\367\377pqn\377\0\0\0""3\0\0\0""8\0\0\0;\0\0\0\77\0\0\0B\0\0\0D\0" "\0\0E\202\0\0\0F\20\0\0\0E\0\0\0C\0\0\0A\0\0\0>\0\0\0:\0\0\0""6\0\0\0" "2\0\0\0-\0\0\0(\0\0\0#\0\0\0\36\0\0\0\30\0\0\0\23\0\0\0\15\0\0\0\7\0" "\0\0\1\203\377\377\377\0\1vwt\240\222pqn\377\7qro\251\0\0\0\34\0\0\0" "\37\0\0\0\"\0\0\0$\0\0\0&\0\0\0(\204\0\0\0)\14\0\0\0'\0\0\0&\0\0\0$\0" "\0\0!\0\0\0\36\0\0\0\33\0\0\0\27\0\0\0\23\0\0\0\17\0\0\0\13\0\0\0\6\0" "\0\0\1\232\377\377\377\0\5\0\0\0\2\0\0\0\5\0\0\0\7\0\0\0\11\0\0\0\12" "\202\0\0\0\14\202\0\0\0\15\7\0\0\0\14\0\0\0\13\0\0\0\12\0\0\0\10\0\0" "\0\6\0\0\0\4\0\0\0\2\274\377\377\377\0"}; osmo-0.2.14/src/check_events.h000664 001750 001750 00000003440 12561325524 016134 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CHECK_EVENTS_H #define _CHECK_EVENTS_H #include "gui.h" #include "tasks.h" enum { CE_COLUMN_DATE = 0, CE_COLUMN_DATE_JULIAN, CE_COLUMN_EVENT_TYPE, CE_COLUMN_EVENT_LINE, CHECK_EVENTS_NUM_COLUMNS }; enum { NOTIFY_WARNING = 0, NOTIFY_ALARM }; #ifdef HAVE_LIBNOTIFY #ifdef TASKS_ENABLED typedef struct { guint id; gint type; NotifyNotification *notify; guint32 date; gint time; } TASK_NTF; #endif /* TASKS_ENABLED */ #endif /* HAVE_LIBNOTIFY */ void free_notifications_list (GUI *appGUI); gboolean time_handler (GUI *appGUI); gboolean check_contacts (guint32 julian_day, GUI *appGUI); gboolean check_tasks_contacts (guint32 julian_day, GUI *appGUI); gboolean create_event_checker_window (GUI *appGUI); void notify_task (TASK_ITEM *item, GUI *appGUI); void notify_task_delete (guint id, GUI *appGUI); #endif /* _CHECK_EVENTS_H */ osmo-0.2.14/src/tasks_preferences_gui.c000664 001750 001750 00000072321 12561325524 020044 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "tasks.h" #include "tasks_preferences_gui.h" #include "utils_gui.h" #ifdef TASKS_ENABLED /* ========================================================================== */ static void checkbutton_clicked_cb (GtkToggleButton *togglebutton, gint *option) { *option = gtk_toggle_button_get_active (togglebutton); } /* ========================================================================== */ static void due_today_color_changed_cb (GtkColorButton *color_button, GUI *appGUI) { GdkColor color; gtk_color_button_get_color (color_button, &color); g_snprintf (config.due_today_color, MAXCOLORNAME, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); refresh_tasks (appGUI); } /* ========================================================================== */ static void due_7days_color_changed_cb (GtkColorButton *color_button, GUI *appGUI) { GdkColor color; gtk_color_button_get_color (color_button, &color); g_snprintf (config.due_7days_color, MAXCOLORNAME, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); refresh_tasks (appGUI); } /* ========================================================================== */ static void past_due_color_changed_cb (GtkColorButton *color_button, GUI *appGUI) { GdkColor color; gtk_color_button_get_color (color_button, &color); g_snprintf (config.past_due_color, MAXCOLORNAME, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); refresh_tasks (appGUI); } /* ========================================================================== */ static void bold_items_cb (GtkToggleButton *widget, GUI *appGUI) { config.tasks_high_in_bold = gtk_toggle_button_get_active (widget); refresh_tasks (appGUI); } /* ========================================================================== */ static void ti_font_select_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *font_selector; gchar *font_name; gint response; font_selector = gtk_font_selection_dialog_new (_("Select a font...")); gtk_window_set_modal (GTK_WINDOW (font_selector), TRUE); gtk_window_set_position (GTK_WINDOW (font_selector), GTK_WIN_POS_MOUSE); gtk_window_set_transient_for (GTK_WINDOW (font_selector), GTK_WINDOW (appGUI->main_window)); gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (font_selector), config.task_info_font); gtk_widget_show (font_selector); response = gtk_dialog_run (GTK_DIALOG (font_selector)); if (response == GTK_RESPONSE_OK) { font_name = gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG (font_selector)); g_strlcpy (config.task_info_font, font_name, MAXFONTNAME); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->ti_font_entry), font_name); g_free (font_name); g_object_set (G_OBJECT (appGUI->tsk->font_tag_object), "font", (gchar *) config.task_info_font, NULL); } gtk_widget_destroy (font_selector); } /* ========================================================================== */ static void create_appearance_section (GtkWidget *appearance_vbox, GUI *appGUI) { GtkWidget *table, *colors_hbox; GtkWidget *checkbutton, *label, *color_button, *font_button; GdkColor color; table = gtk_table_new (4, 4, FALSE); gtk_box_pack_start (GTK_BOX (appearance_vbox), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 8); colors_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), colors_hbox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Color of items that are due today")); gdk_color_parse (config.due_today_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (due_today_color_changed_cb), appGUI); appGUI->opt->due_today_color_picker = color_button; color_button = gtk_color_button_new (); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (due_7days_color_changed_cb), appGUI); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Color of items that are due in the next 7 days")); gdk_color_parse (config.due_7days_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); appGUI->opt->due_7days_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Color of items that are past due")); gdk_color_parse(config.past_due_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (past_due_color_changed_cb), appGUI); appGUI->opt->past_due_color_picker = color_button; appGUI->opt->ti_font_entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->ti_font_entry), config.task_info_font); GTK_WIDGET_UNSET_FLAGS (appGUI->opt->ti_font_entry, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (table), appGUI->opt->ti_font_entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); font_button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); gtk_table_attach (GTK_TABLE (table), font_button, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (font_button), "clicked", G_CALLBACK (ti_font_select_cb), appGUI); label = utl_gui_create_label ("%s:", _("Task info font")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = utl_gui_create_label ("%s:", _("Colors")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); checkbutton = gtk_check_button_new_with_mnemonic (_("Show in bold tasks with high priority")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.tasks_high_in_bold); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (bold_items_cb), appGUI); appGUI->opt->ct_bold_items_checkbutton = checkbutton; } /* ========================================================================== */ static void visible_columns_changed_cb (GtkToggleButton *widget, GUI *appGUI) { config.tsk_visible_due_date_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->vc_due_date_checkbutton)); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE], config.tsk_visible_due_date_column); config.tsk_visible_type_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->vc_type_checkbutton)); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE], config.tsk_visible_type_column); config.tsk_visible_category_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->vc_category_checkbutton)); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY], config.tsk_visible_category_column); config.tsk_visible_priority_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->vc_priority_checkbutton)); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY], config.tsk_visible_priority_column); set_tasks_columns_width (appGUI); } /* ========================================================================== */ static void create_visible_columns_section (GtkWidget *visible_columns_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; table = gtk_table_new (1, 4, FALSE); gtk_box_pack_start (GTK_BOX (visible_columns_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 8); checkbutton = gtk_check_button_new_with_mnemonic (_("Due date")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.tsk_visible_due_date_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (visible_columns_changed_cb), appGUI); appGUI->opt->vc_due_date_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Type")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.tsk_visible_type_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (visible_columns_changed_cb), appGUI); appGUI->opt->vc_type_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Priority")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.tsk_visible_priority_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (visible_columns_changed_cb), appGUI); appGUI->opt->vc_priority_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Category")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.tsk_visible_category_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (visible_columns_changed_cb), appGUI); appGUI->opt->vc_category_checkbutton = checkbutton; } /* ========================================================================== */ static void tasks_category_remove_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->tasks_category_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, path); gtk_list_store_remove (appGUI->opt->tasks_category_store, &iter); gtk_tree_path_free (path); refresh_tasks (appGUI); set_categories (appGUI); } } /* ========================================================================== */ static void tasks_category_add_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeIter iter; const gchar *category_name; gchar *item; gint i; category_name = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->tasks_category_entry)); if (!strlen (category_name)) return; i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, TC_COLUMN_NAME, &item, -1); if (!strcmp (category_name, item)) { g_free (item); return; } g_free (item); } gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, NULL, 0); gtk_list_store_append (appGUI->opt->tasks_category_store, &iter); gtk_list_store_set (appGUI->opt->tasks_category_store, &iter, TC_COLUMN_NAME, category_name, TC_COLUMN_CALENDAR, TRUE, TC_COLUMN_TASKS, TRUE, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->tasks_category_entry), ""); gtk_widget_set_sensitive (appGUI->opt->tasks_category_add_button, FALSE); utl_gui_create_category_combobox (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), appGUI->opt->tasks_category_store, FALSE); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), 0); gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter)); set_categories (appGUI); refresh_tasks (appGUI); } /* ========================================================================== */ static void tsk_show_in_tasks_list_toggled (GtkCellRendererToggle *cell, gchar *path_str, GUI *appGUI) { GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; gboolean done_status; model = GTK_TREE_MODEL (appGUI->opt->tasks_category_store); path = gtk_tree_path_new_from_string (path_str); if (path != NULL) { gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, TC_COLUMN_TASKS, &done_status, -1); gtk_list_store_set (GTK_LIST_STORE (model), &iter, TC_COLUMN_TASKS, !done_status, -1); refresh_tasks (appGUI); gtk_tree_path_free (path); } } /* ========================================================================== */ static void tsk_show_in_calendar_toggled (GtkCellRendererToggle *cell, gchar *path_str, GUI *appGUI) { GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; gboolean done_status; model = GTK_TREE_MODEL (appGUI->opt->tasks_category_store); path = gtk_tree_path_new_from_string (path_str); if (path != NULL) { gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, TC_COLUMN_CALENDAR, &done_status, -1); gtk_list_store_set (GTK_LIST_STORE(model), &iter, TC_COLUMN_CALENDAR, !done_status, -1); cal_set_day_info (appGUI); cal_refresh_marks (appGUI); gtk_tree_path_free (path); } } /* ========================================================================== */ static void tasks_category_cell_edited_cb (GtkCellRendererText *renderer, gchar *path, gchar *new_text, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (g_ascii_strcasecmp (new_text, "") != 0) { model = gtk_tree_view_get_model (GTK_TREE_VIEW (appGUI->opt->tasks_category_treeview)); if (gtk_tree_model_get_iter_from_string (model, &iter, path)) { gtk_list_store_set (appGUI->opt->tasks_category_store, &iter, TC_COLUMN_NAME, new_text, -1); } } } /* ========================================================================== */ static void tasks_category_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (gtk_tree_selection_get_selected (selection, &model, &iter)) gtk_widget_set_sensitive (appGUI->opt->tasks_category_remove_button, TRUE); else gtk_widget_set_sensitive (appGUI->opt->tasks_category_remove_button, FALSE); } /* ========================================================================== */ static gint tasks_category_entry_key_release_cb (GtkEntry *widget, GdkEventKey *event, GUI *appGUI) { gboolean state = FALSE; if (strlen (gtk_entry_get_text (widget))) state = TRUE; gtk_widget_set_sensitive (appGUI->opt->tasks_category_add_button, state); if (event->keyval == GDK_Return) { if (state) tasks_category_add_cb (NULL, appGUI); return TRUE; } return FALSE; } /* ========================================================================== */ static void create_categories_section (GtkWidget *categories_vbox, GUI *appGUI) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *table, *scrolledwindow, *treeview; table = gtk_table_new (4, 3, FALSE); gtk_box_pack_start (GTK_BOX (categories_vbox), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 8); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); appGUI->opt->tasks_category_entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), appGUI->opt->tasks_category_entry, 0, 1, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->tasks_category_entry), "key_release_event", G_CALLBACK (tasks_category_entry_key_release_cb), appGUI); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 3, 0, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->opt->tasks_category_store)); gtk_container_add (GTK_CONTAINER (scrolledwindow), treeview); gtk_container_set_border_width (GTK_CONTAINER (treeview), 4); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), FALSE); gtk_widget_set_size_request (treeview, -1, 120); appGUI->opt->tasks_category_treeview = treeview; appGUI->opt->tasks_category_select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (appGUI->opt->tasks_category_select), "changed", G_CALLBACK (tasks_category_selected_cb), appGUI); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, "editable-set", TRUE, NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (tasks_category_cell_edited_cb), appGUI); column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, "text", TC_COLUMN_NAME, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_expand (column, TRUE); renderer = gtk_cell_renderer_toggle_new (); /* Show in calendar */ column = gtk_tree_view_column_new_with_attributes(_("Calendar"), renderer, "active", TC_COLUMN_CALENDAR, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); g_signal_connect (renderer, "toggled", G_CALLBACK (tsk_show_in_calendar_toggled), appGUI); renderer = gtk_cell_renderer_toggle_new (); /* Show in tasks list */ column = gtk_tree_view_column_new_with_attributes (_("Tasks"), renderer, "active", TC_COLUMN_TASKS, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); g_signal_connect (renderer, "toggled", G_CALLBACK (tsk_show_in_tasks_list_toggled), appGUI); appGUI->opt->tasks_category_add_button = utl_gui_create_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, FALSE); gtk_widget_set_sensitive (appGUI->opt->tasks_category_add_button, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->tasks_category_add_button, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (appGUI->opt->tasks_category_add_button, "clicked", G_CALLBACK (tasks_category_add_cb), appGUI); appGUI->opt->tasks_category_remove_button = utl_gui_create_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, FALSE); gtk_widget_set_sensitive (appGUI->opt->tasks_category_remove_button, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->tasks_category_remove_button, 2, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (appGUI->opt->tasks_category_remove_button, "clicked", G_CALLBACK (tasks_category_remove_cb), appGUI); } /* ========================================================================== */ static void delete_items_cb (GtkToggleButton *togglebutton, GUI *appGUI) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_delete_items_checkbutton))) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_hide_items_checkbutton), FALSE); } /* ========================================================================== */ static void hide_items_cb (GtkToggleButton *togglebutton, GUI *appGUI) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_hide_items_checkbutton))) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_delete_items_checkbutton), FALSE); } /* ========================================================================== */ static void hide_delete_changed_cb (GtkToggleButton *widget, GUI *appGUI) { config.hide_completed = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_hide_items_checkbutton)); gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter)); config.delete_completed = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->ct_delete_items_checkbutton)); } /* ========================================================================== */ static void create_tasks_options_section (GtkWidget *tasks_opt_vbox, GUI *appGUI) { GtkWidget *checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Hide completed tasks")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_completed); gtk_box_pack_start (GTK_BOX (tasks_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_delete_changed_cb), appGUI); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_items_cb), appGUI); appGUI->opt->ct_hide_items_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Delete completed tasks without confirmation")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.delete_completed); gtk_box_pack_start (GTK_BOX (tasks_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_delete_changed_cb), appGUI); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (delete_items_cb), appGUI); appGUI->opt->ct_delete_items_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Add new task when double clicked on tasks list")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.add_edit); gtk_box_pack_start (GTK_BOX (tasks_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.add_edit)); appGUI->opt->ct_add_item_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Remember the last selected category")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.remember_category_in_tasks); gtk_box_pack_start (GTK_BOX (tasks_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.remember_category_in_tasks)); appGUI->opt->ct_remember_category_checkbutton = checkbutton; } /* ========================================================================== */ static gint global_notification_entry_changed_cb (GtkEditable *editable, GUI *appGUI) { utl_gui_update_command_status (editable, appGUI->opt->global_notification_valid_image, appGUI); g_strlcpy (config.global_notification_command, gtk_editable_get_chars (editable, 0, -1), MAXHELPERCMD); return FALSE; } /* ========================================================================== */ static void sound_alarm_repeat_changed_cb (GtkSpinButton *spinbutton, GUI *appGUI) { config.sound_alarm_repeat = (gint) gtk_spin_button_get_value (spinbutton); } /* ========================================================================== */ static void postpone_time_changed_cb (GtkSpinButton *spinbutton, GUI *appGUI) { config.postpone_time = (gint) gtk_spin_button_get_value (spinbutton); } /* ========================================================================== */ static void create_reminder_options_section (GtkWidget *reminder_opt_vbox, GUI *appGUI) { GtkWidget *table, *label, *spinbutton, *entry, *valid_hbox; GtkObject *adjustment; gchar *str; gint i = 0; table = gtk_table_new (3, 4, FALSE); gtk_box_pack_start (GTK_BOX (reminder_opt_vbox), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 8); label = utl_gui_create_label ("%s:", _("Postpone time")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); adjustment = gtk_adjustment_new (0, 0, 1440, 1, 10, 0); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton), config.postpone_time); gtk_table_attach (GTK_TABLE (table), spinbutton, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (spinbutton), "value-changed", G_CALLBACK (postpone_time_changed_cb), appGUI); appGUI->opt->postpone_time_spinbutton = spinbutton; str = g_strdup_printf ("%s (%s)", _("minutes"), _("0 for disable")); label = gtk_label_new (str); g_free (str); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); i++; label = utl_gui_create_label ("%s:", _("Repeat sound alarm")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); adjustment = gtk_adjustment_new (0, 0, 100, 1, 10, 0); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton), config.sound_alarm_repeat); gtk_table_attach (GTK_TABLE (table), spinbutton, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (spinbutton), "value-changed", G_CALLBACK (sound_alarm_repeat_changed_cb), appGUI); appGUI->opt->sound_alarm_repeat_spinbutton = spinbutton; str = g_strdup_printf ("%s (%s)", _("times"), _("0 for disable")); label = gtk_label_new (str); g_free (str); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 2, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); i++; label = utl_gui_create_label ("%s:", _("Global notification command")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); valid_hbox = gtk_hbox_new (FALSE, 2); gtk_table_attach (GTK_TABLE (table), valid_hbox, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (GTK_FILL), 0, 0); entry = gtk_entry_new (); gtk_entry_set_text (GTK_ENTRY (entry), config.global_notification_command); gtk_box_pack_start (GTK_BOX (valid_hbox), entry, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (global_notification_entry_changed_cb), appGUI); appGUI->opt->global_notification_cmd_entry = entry; appGUI->opt->global_notification_valid_image = gtk_image_new (); gtk_box_pack_start (GTK_BOX (valid_hbox), appGUI->opt->global_notification_valid_image, FALSE, FALSE, 0); utl_gui_update_command_status (GTK_EDITABLE(entry), appGUI->opt->global_notification_valid_image, appGUI); } /* ========================================================================== */ GtkWidget * tsk_create_preferences_page (GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox_top, *vbox_icon, *vbox, *scrolledwindow; vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); scrolledwindow = utl_gui_insert_in_scrolled_window (vbox_top, GTK_SHADOW_ETCHED_IN); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 2); vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_TASKS, _("Tasks")); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); create_appearance_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Visible columns")); create_visible_columns_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Categories")); create_categories_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Tasks options")); create_tasks_options_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Reminder options")); create_reminder_options_section (vbox, appGUI); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow, vbox_icon); gtk_widget_show_all (scrolledwindow); return scrolledwindow; } /* ========================================================================== */ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/options_prefs.h000664 001750 001750 00000022235 12561325524 016370 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _OPTIONS_PREFS_H #define _OPTIONS_PREFS_H #include "gui.h" #define CONFIG_DIRNAME ".osmo" #define CONFIG_FILENAME "config.xml" #define CONFIG_NAME "osmo_config" #define MAXNAME 1024 #define MAXFONTNAME 512 #define MAXCOLORNAME 128 #define MAXHELPERCMD 1024 #define MAXCONTACTFIELDS 512 #define MAXADDRESS 64 #define DEFAULT_DATE_HEADER_FORMAT "%e %B %Y" /* example: 1 January 2008 */ #define DEFAULT_PANED_SPLIT_POSITION 275 struct osmo_prefs { /* OSMO */ gint window_x; gint window_y; gint window_size_x; gint window_size_y; gint fullscreen; gint enable_tooltips; gint latest_tab; gint tabs_position; gint remember_latest_tab; gint save_data_after_modification; gint default_stock_icons; gint disable_underline_links; gint rules_hint; gint toolbar_exit_button; gint date_format; gint time_format; gint enable_systray; gint start_minimised_in_systray; gint blink_on_events; gint ignore_day_note_events; gint run_counter; gint lastrun_date; gint lastrun_time; gint hide_calendar; gint hide_tasks; gint hide_contacts; gint hide_notes; gint override_locale_settings; gint gui_layout; gint sound_alarm_repeat; gchar link_color[MAXCOLORNAME]; gchar spell_lang[MAXNAME]; gchar web_browser[MAXHELPERCMD]; gchar email_client[MAXHELPERCMD]; gchar sound_player[MAXHELPERCMD]; /* CALENDAR */ gint fy_window_size_x; gint fy_window_size_y; gint fy_simple_view; gint fy_alternative_view; gint cb_window_size_x; gint cb_window_size_y; gint ib_window_size_x; gint ib_window_size_y; gint display_options; gint day_notes_visible; gint timeline_start; gint timeline_end; gint timeline_step; gint di_show_current_time; gint di_show_current_time_seconds; gint di_show_day_number; gint di_show_current_day_distance; gint di_show_marked_days; gint di_show_week_number; gint di_show_weekend_days; gint di_show_day_category; gint di_show_moon_phase; gint di_show_notes; gint di_show_zodiac_sign; gint cursor_type; gint frame_cursor_thickness; gint enable_auxilary_calendars; gint enable_day_mark; gint strikethrough_past_notes; gint ascending_sorting_in_day_notes_browser; gint auxilary_calendars_state; gint day_note_spell_checker; gchar day_note_marker[MAXNAME]; gchar date_header_format[MAXNAME]; gint event_marker_type; gint today_marker_type; gint day_notes_browser_filter; gint ical_export_pane_pos; gchar header_color[MAXCOLORNAME]; gchar weekend_color[MAXCOLORNAME]; gchar selection_color[MAXCOLORNAME]; gint selector_alpha; gchar mark_color[MAXCOLORNAME]; gchar mark_current_day_color[MAXCOLORNAME]; gint mark_current_day_alpha; gchar birthday_mark_color[MAXCOLORNAME]; gchar day_name_font[MAXFONTNAME]; gchar calendar_font[MAXFONTNAME]; gchar notes_font[MAXFONTNAME]; gchar cal_print_month_name_font[MAXFONTNAME]; gchar cal_print_day_name_font[MAXFONTNAME]; gchar cal_print_day_num_font[MAXFONTNAME]; gchar cal_print_event_font[MAXFONTNAME]; gint cal_print_event_length; gint cal_print_padding; gint cal_print_page_orientation; gint cal_print_tasks; gint cal_print_birthdays; gint cal_print_namedays; gint cal_print_day_notes; gint cal_print_ical; /* TASKS */ gint tasks_high_in_bold; gint hide_completed; gint delete_completed; gint add_edit; gint remember_category_in_tasks; gint current_category_in_tasks; gint tasks_pane_pos; gint tasks_sorting_order; gint tasks_sorting_column; gint tsk_visible_due_date_column; gint tsk_visible_type_column; gint tsk_visible_priority_column; gint tsk_visible_category_column; gint tasks_addedit_win_x; gint tasks_addedit_win_y; gint tasks_addedit_win_w; gint tasks_addedit_win_h; gint postpone_time; gint tasks_column_idx_0; gint tasks_column_idx_0_width; gint tasks_column_idx_1; gint tasks_column_idx_1_width; gint tasks_column_idx_2; gint tasks_column_idx_2_width; gint tasks_column_idx_3; gint tasks_column_idx_3_width; gint tasks_column_idx_4; gint tasks_column_idx_4_width; gint tasks_column_idx_5; gint tasks_column_idx_5_width; gchar due_today_color[MAXCOLORNAME]; gchar due_7days_color[MAXCOLORNAME]; gchar past_due_color[MAXCOLORNAME]; gchar task_info_font[MAXFONTNAME]; gchar global_notification_command[MAXHELPERCMD]; /* CONTACTS */ gint find_mode; gint hide_group_column; gint maps_provider; gint contacts_pane_pos; gint photo_width; gint cnt_visible_age_column; gint cnt_visible_birthday_date_column; gint cnt_visible_zodiac_sign_column; gint contacts_sorting_order; gint contacts_sorting_column; gint contacts_addedit_win_x; gint contacts_addedit_win_y; gint contacts_addedit_win_w; gint contacts_addedit_win_h; gint contacts_export_win_x; gint contacts_export_win_y; gint contacts_export_win_w; gint contacts_export_win_h; gint contacts_import_sel_win_x; gint contacts_import_sel_win_y; gint contacts_import_win_x; gint contacts_import_win_y; gint contacts_import_win_w; gint contacts_import_win_h; gint contacts_birthdays_win_w; gint contacts_birthdays_win_h; gint contacts_column_idx_0; gint contacts_column_idx_0_width; gint contacts_column_idx_1; gint contacts_column_idx_1_width; gint contacts_column_idx_2; gint contacts_column_idx_2_width; gchar contact_tag_color[MAXCOLORNAME]; gchar contact_link_color[MAXCOLORNAME]; gint contact_name_font_size; gint contact_item_font_size; gint import_type; gint import_interface_type; gint import_bluetooth_channel; gint import_usb_interface; gint import_binary_xml; gchar import_bluetooth_address[MAXADDRESS]; gint export_format; gchar export_fields[MAXCONTACTFIELDS]; /* NOTES */ gint notes_enc_algorithm; gint notes_enc_hashing; gint notes_comp_algorithm; gint notes_comp_ratio; gint notes_sorting_order; gint notes_sorting_column; gint nte_visible_type_column; gint nte_visible_category_column; gint nte_visible_last_changes_column; gint nte_visible_created_column; gint notes_column_idx_0; gint notes_column_idx_0_width; gint notes_column_idx_1; gint notes_column_idx_1_width; gint notes_column_idx_2; gint notes_column_idx_2_width; gint notes_column_idx_3; gint notes_column_idx_3_width; gint notes_column_idx_4; gint notes_column_idx_4_width; gint remember_category_in_notes; gint current_category_in_notes; gint use_system_date_in_notes; gchar text_separator; gchar notes_editor_font[MAXFONTNAME]; }; extern struct osmo_prefs config; gchar* prefs_get_config_dir (GUI *appGUI); gchar* prefs_get_config_filename (gchar *config_filename, GUI *appGUI); void prefs_read_config (GUI *appGUI); void prefs_write_config (GUI *appGUI); #endif /* _OPTIONS_PREFS_H */ osmo-0.2.14/src/calendar_calc.c000664 001750 001750 00000201346 12561325524 016226 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * (C) 2007 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_calc.h" #include "i18n.h" #include "calendar.h" #include "calendar_utils.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils.h" #include "utils_gui.h" #include "utils_time.h" #include "utils_date.h" #include "utils_date_time.h" /*------------------------------------------------------------------------------*/ void window_date_calculator_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_widget_destroy (appGUI->cal->window_date_calculator); } /*------------------------------------------------------------------------------*/ void button_window_date_calculator_close_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; window_date_calculator_close_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ gint date_calculator_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (event->keyval == GDK_Escape) { window_date_calculator_close_cb (widget, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void set_current_date (GtkWidget *year, GtkWidget *month, GtkWidget *day) { gtk_spin_button_set_value (GTK_SPIN_BUTTON (year), utl_date_get_current_year ()); gtk_spin_button_set_value (GTK_SPIN_BUTTON (month), utl_date_get_current_month ()); gtk_spin_button_set_value (GTK_SPIN_BUTTON (day), utl_date_get_current_day ()); } /*------------------------------------------------------------------------------*/ void set_current_time (GtkWidget *hour, GtkWidget *minute, GtkWidget *second) { gtk_spin_button_set_value (GTK_SPIN_BUTTON (hour), get_current_hour ()); gtk_spin_button_set_value (GTK_SPIN_BUTTON (minute), get_current_minute ()); gtk_spin_button_set_value (GTK_SPIN_BUTTON (second), get_current_second ()); } /*------------------------------------------------------------------------------*/ void reset_current_time (GtkWidget *hour, GtkWidget *minute, GtkWidget *second) { gtk_spin_button_set_value (GTK_SPIN_BUTTON (hour), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (minute), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (second), 0); } /*------------------------------------------------------------------------------*/ void set_current_date_start_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_date (appGUI->cal->spinbutton_start_year, appGUI->cal->spinbutton_start_month, appGUI->cal->spinbutton_start_day); } /*------------------------------------------------------------------------------*/ void set_current_date_start2_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_date (appGUI->cal->spinbutton2_start_year, appGUI->cal->spinbutton2_start_month, appGUI->cal->spinbutton2_start_day); } /*------------------------------------------------------------------------------*/ void set_current_date_end_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_date (appGUI->cal->spinbutton_end_year, appGUI->cal->spinbutton_end_month, appGUI->cal->spinbutton_end_day); } /*------------------------------------------------------------------------------*/ void set_current_time_start_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_time (appGUI->cal->spinbutton_start_hour, appGUI->cal->spinbutton_start_minute, appGUI->cal->spinbutton_start_second); } /*------------------------------------------------------------------------------*/ void set_current_time_start2_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_time (appGUI->cal->spinbutton2_start_hour, appGUI->cal->spinbutton2_start_minute, appGUI->cal->spinbutton2_start_second); } /*------------------------------------------------------------------------------*/ void set_current_time_end_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; set_current_time (appGUI->cal->spinbutton_end_hour, appGUI->cal->spinbutton_end_minute, appGUI->cal->spinbutton_end_second); } /*------------------------------------------------------------------------------*/ void reset_current_time_start_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; reset_current_time (appGUI->cal->spinbutton_start_hour, appGUI->cal->spinbutton_start_minute, appGUI->cal->spinbutton_start_second); } /*------------------------------------------------------------------------------*/ void reset_current_time_start2_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; reset_current_time (appGUI->cal->spinbutton2_start_hour, appGUI->cal->spinbutton2_start_minute, appGUI->cal->spinbutton2_start_second); } /*------------------------------------------------------------------------------*/ void reset_current_time_end_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; reset_current_time (appGUI->cal->spinbutton_end_hour, appGUI->cal->spinbutton_end_minute, appGUI->cal->spinbutton_end_second); } /*------------------------------------------------------------------------------*/ void reset_addsub_time_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_year), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_month), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_week), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_day), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_hour), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_minute), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_second), 0); } /*------------------------------------------------------------------------------*/ gint utl_calculate_weekend_days (GDate *f_date, GDate *s_date) { gint st, en, nd, wd; g_date_order (f_date, s_date); st = g_date_get_weekday (f_date); en = g_date_get_weekday (s_date); nd = g_date_days_between (f_date, s_date); wd = nd / 7 * 2; if (st == G_DATE_SATURDAY) { if (en == G_DATE_SATURDAY) wd += 1; else wd += 2; } else if (st == G_DATE_SUNDAY) { if (en == G_DATE_SATURDAY) wd += 2; else wd += 1; } else { if (en == G_DATE_SATURDAY) wd += 1; else if (en == G_DATE_SUNDAY) wd += 2; else if (st > en) wd += 2; } return wd; } /*============================================================================*/ void set_result_cb (GtkWidget *widget, GUI *appGUI) { gint days, weeks; long long unsigned int hours, minutes, seconds; gchar tmpbuf[BUFFER_SIZE]; gchar tmpbuf2[BUFFER_SIZE]; gint P, E, I; gint we_d, working_days; gint dd, dm, dy, th, tm, ts; GDate *date1, *date2; TIME *time1, *time2; dd = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_day)); dm = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_month)); dy = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_year)); th = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_hour)); tm = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_minute)); ts = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_second)); if (utl_date_set_valid_dmy (&dd, dm, dy)) utl_gui_change_bg_widget_state (appGUI->cal->spinbutton_start_day, COLOR_BG_FAIL, appGUI); else utl_gui_change_bg_widget_state (appGUI->cal->spinbutton_start_day, NULL, appGUI); date1 = g_date_new_dmy (dd, dm, dy); time1 = utl_time_new_hms (th, tm, ts); dd = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_day)); dm = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_month)); dy = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_year)); th = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_hour)); tm = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_minute)); ts = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_end_second)); if (utl_date_set_valid_dmy (&dd, dm, dy)) utl_gui_change_bg_widget_state (appGUI->cal->spinbutton_end_day, COLOR_BG_FAIL, appGUI); else utl_gui_change_bg_widget_state (appGUI->cal->spinbutton_end_day, NULL, appGUI); date2 = g_date_new_dmy (dd, dm, dy); time2 = utl_time_new_hms (th, tm, ts); utl_date_time_order (date1, time1, date2, time2); days = g_date_days_between (date1, date2) - utl_time_subtract (time2, time1); we_d = utl_calculate_weekend_days (date1, date2); utl_date_diff (date1, date2, &dd, &dm, &dy); utl_time_get_hms (time2, &th, &tm, &ts); g_snprintf (tmpbuf, BUFFER_SIZE, "%d %s, %d %s, %d %s", dy, ngettext ("year", "years", dy), dm, ngettext ("month", "months", dm), dd, ngettext ("day", "days", dd)); gtk_label_set_markup (GTK_LABEL (appGUI->cal->label_result_1), tmpbuf); g_snprintf (tmpbuf, BUFFER_SIZE, "%d %s, %d %s, %d %s", th, ngettext ("hour", "hours", th), tm, ngettext ("minute", "minutes", tm), ts, ngettext ("second", "seconds", ts)); gtk_label_set_markup (GTK_LABEL (appGUI->cal->label_result_1_2), tmpbuf); g_snprintf (tmpbuf, BUFFER_SIZE, "(%s: %d %s, %d %s, %d %s, %d %s)", _("or"), days, ngettext ("day", "days", days), th, ngettext ("hour", "hours", th), tm, ngettext ("minute", "minutes", tm), ts, ngettext ("second", "seconds", ts)); gtk_label_set_markup (GTK_LABEL (appGUI->cal->label_result_2), tmpbuf); seconds = (guint64) utl_time_get_seconds (time2) + (guint64) days * 24 * 3600; minutes = seconds / 60; hours = minutes / 60; weeks = (gint) (hours / (24 * 7)); working_days = days - we_d + 1; g_snprintf (tmpbuf, BUFFER_SIZE, "%llu %s\n%llu %s (%s)\n%llu %s (%s)\n%d %s (%s)\n%d %s (%s)\n%d %s (%s)", seconds, ngettext ("second", "seconds", seconds), minutes, ngettext ("minute", "minutes", minutes), _("rounded down"), hours, ngettext ("hour", "hours", hours), _("rounded down"), weeks, ngettext ("week", "weeks", weeks), _("rounded down"), working_days, ngettext ("working day", "working days", working_days), _("time is ignored"), we_d, ngettext ("weekend day", "weekend days", we_d), _("time is ignored")); if (appGUI->cal->datecal_bio == TRUE) { P = 100.0 * sin (2.0 * M_PI * days / 23.0); E = 100.0 * sin (2.0 * M_PI * days / 28.0); I = 100.0 * sin (2.0 * M_PI * days / 33.0); g_snprintf (tmpbuf2, BUFFER_SIZE, "\n\nBiorhythms:\nPhysical: %d%%, Emotional: %d%%, Intellectual: %d%%", P, E, I); g_strlcat (tmpbuf, tmpbuf2, BUFFER_SIZE); } gtk_label_set_markup (GTK_LABEL (appGUI->cal->label_result_3), tmpbuf); g_date_free (date1); g_date_free (date2); utl_time_free (time1); utl_time_free (time2); } /*============================================================================*/ void set_result2_cb (GtkWidget *widget, GUI *appGUI) { gint year, month, day; gint64 hour, minute, second; gint year2, month2, week2, day2; gint64 hour2, minute2, second2; gint n, ignore_weekend_days; guint32 julian = 0; gchar *str, *text; GDate *s_date, *e_date; gint wd_n = 0, wd_p; year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_year)); month = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_month)) - 1; day = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_day)); hour = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_hour)); minute = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_minute)); second = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_start_second)); year2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_year)); month2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_month)); week2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_week)); day2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_day)); hour2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_hour)); minute2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_minute)); second2 = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton2_end_second)); if (day > g_date_get_days_in_month (month + 1, year)) { utl_gui_change_bg_widget_state (appGUI->cal->spinbutton2_start_day, COLOR_BG_FAIL, appGUI); } else { utl_gui_change_bg_widget_state (appGUI->cal->spinbutton2_start_day, NULL, appGUI); } ignore_weekend_days = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->ignore_weekend_days_checkbutton)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->radiobutton_add)) == TRUE) { /* add */ if (ignore_weekend_days == TRUE) { s_date = g_date_new_dmy (day, month + 1, year); e_date = g_date_new_dmy (day, month + 1, year); wd_n = 0; if (day2 > 0) { g_date_add_days (e_date, day2 - 1); do { wd_p = wd_n; wd_n = utl_calculate_weekend_days (s_date, e_date); g_date_add_days (e_date, wd_n - wd_p); } while (wd_n - wd_p > 0); } julian = g_date_get_julian (e_date); g_date_free (s_date); g_date_free (e_date); } else { year += year2; month += month2; year += month / 12; month %= 12; /* 31 January + one month = 28 or 29 February */ n = g_date_get_days_in_month (month + 1, year); if (day > n) { day = n; } julian = utl_date_dmy_to_julian (day, month + 1, year); second += second2; minute += minute2 + second / 60; second %= 60; hour += hour2 + minute / 60; minute %= 60; day2 += hour / 24; hour %= 24; julian += day2 + week2 * 7; } } else { /* subtract */ if (ignore_weekend_days == TRUE) { s_date = g_date_new_dmy (day, month + 1, year); e_date = g_date_new_dmy (day, month + 1, year); wd_n = 0; if (day2 > 0) { g_date_subtract_days (s_date, day2 - 1); do { wd_p = wd_n; wd_n = utl_calculate_weekend_days (s_date, e_date); g_date_subtract_days (s_date, wd_n - wd_p); } while (wd_n - wd_p > 0); } julian = g_date_get_julian (s_date); g_date_free (s_date); g_date_free (e_date); } else { year = year - year2 - (month2 / 12); month -= month2 % 12; if (month < 0) { year--; month += 12; } if (year > 0) { /* 31 March - one month = 28 or 29 February */ n = g_date_get_days_in_month (month + 1, year); if (day > n) { day = n; } julian = utl_date_dmy_to_julian (day, month + 1, year); minute2 += second2 / 60; second -= second2 % 60; if (second < 0) { minute--; second += 60; } hour2 += minute2 / 60; minute -= minute2 % 60; if (minute < 0) { hour--; minute += 60; } day2 += hour2 / 24; hour -= hour2 % 24; if (hour < 0) { julian--; hour += 24; } julian = julian - day2 - week2 * 7; } if (!(g_date_valid_julian (julian))) { year = 0; } } } if (year < 1) { gtk_label_set_text (GTK_LABEL (appGUI->cal->label2_result), _("This calculator only supports dates after year 1.")); } else { if (ignore_weekend_days) { str = utl_date_print_j (julian, DATE_FULL, config.override_locale_settings); text = g_strdup_printf ("%s\n(%d %s)", str, wd_n, ngettext ("weekend day ignored", "weekend days ignored", wd_n)); } else if (hour == 0 && minute == 0 && second == 0) { str = utl_date_print_j (julian, DATE_FULL, config.override_locale_settings); text = g_strdup_printf ("%s", str); } else { str = utl_date_time_print_js (julian, DATE_FULL, utl_time_hms_to_seconds (hour, minute, second), TIME_HH_MM_SS, config.override_locale_settings); text = g_strdup_printf ("%s", str); } gtk_label_set_markup (GTK_LABEL (appGUI->cal->label2_result), text); g_free (str); g_free (text); } appGUI->cal->julian_jumpto = julian; } /*------------------------------------------------------------------------------*/ void jumpto_and_window_close_cb (GtkButton *button, gpointer user_data) { GDate *cdate; GUI *appGUI = (GUI *) user_data; cdate = g_date_new_julian (appGUI->cal->julian_jumpto); g_return_if_fail (cdate != NULL); cal_jump_to_date (cdate, appGUI); update_aux_calendars (appGUI); window_date_calculator_close_cb (GTK_WIDGET (button), NULL, user_data); g_date_free (cdate); } /*------------------------------------------------------------------------------*/ void ignore_weekend_days_cb (GtkToggleButton *togglebutton, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gint flag; flag = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton)); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_start_hour, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_start_minute, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_start_second, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_year, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_month, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_week, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_hour, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_minute, !flag); gtk_widget_set_sensitive (appGUI->cal->spinbutton2_end_second, !flag); set_result2_cb (NULL, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_create_calc_window (GUI *appGUI) { GtkWidget *vbox; GtkWidget *label; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *frame; GtkWidget *alignment; gint win_xpos, win_ypos; GtkWidget *notebook; GtkWidget *vbox2; GtkWidget *hbox1; GtkWidget *vbox3; GtkWidget *table; GtkObject *spinbutton_adjustment; GtkWidget *button_start_today; GtkWidget *vbox4; GtkWidget *button_start_now; GtkWidget *button_start_clear; GtkWidget *hbox2; GtkWidget *vbox5; GtkWidget *button_end_today; GtkWidget *vbox6; GtkWidget *button_end_now; GtkWidget *button_end_clear; GtkWidget *vbox7; GtkWidget *hbox9; GtkWidget *vbox8; GtkWidget *button2_start_today; GtkWidget *vbox9; GtkWidget *button2_start_now; GtkWidget *button2_start_clear; GtkWidget *button2_end_clear; GtkWidget *vbox10; GtkWidget *vbox22; GtkWidget *hbox10; GSList *radiobutton_add_group = NULL; GtkWidget *radiobutton_sub; GtkWidget *close_button; GtkWidget *hbox11; GtkWidget *hbox12; GtkWidget *hbox13; GtkWidget *hbox14; GtkWidget *hbox98; GtkWidget *hbox99; GtkWidget *vbox99; GtkWidget *hbox_bst; GtkWidget *hbox_bet; GtkWidget *hbox_b2st; GtkWidget *hbox_b2sn; GtkWidget *vbox_result; GtkWidget *jumpto_button; char tmpbuf[BUFFER_SIZE]; appGUI->cal->window_date_calculator = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->window_date_calculator), _("Date calculator")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->window_date_calculator), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->window_date_calculator), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->window_date_calculator), "delete_event", G_CALLBACK (window_date_calculator_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->window_date_calculator), "key_press_event", G_CALLBACK (date_calculator_key_press_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->cal->window_date_calculator), GTK_WINDOW (appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->window_date_calculator), 8); gtk_window_set_resizable (GTK_WINDOW (appGUI->cal->window_date_calculator), FALSE); /*---------------------------------------------------------------------------------*/ vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox); gtk_container_add (GTK_CONTAINER (appGUI->cal->window_date_calculator), vbox); notebook = gtk_notebook_new (); gtk_widget_show (notebook); gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (notebook), vbox2); hbox99 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox99); gtk_box_pack_start (GTK_BOX (vbox2), hbox99, FALSE, FALSE, 0); vbox99 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox99); gtk_box_pack_start (GTK_BOX (hbox99), vbox99, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0); } else { gtk_box_pack_start (GTK_BOX (vbox99), frame, FALSE, FALSE, 0); } gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (alignment), hbox1); vbox3 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox3); gtk_box_pack_start (GTK_BOX (hbox1), vbox3, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox3), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Year")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Month")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Day")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (1, 1, 9999, 1, 10, 0); appGUI->cal->spinbutton_start_year = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_year); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_year, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 12, 1, 10, 0); appGUI->cal->spinbutton_start_month = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_month); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_month, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 31, 1, 10, 0); appGUI->cal->spinbutton_start_day = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_day); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_day, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox_bst = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox_bst); gtk_box_pack_start (GTK_BOX (vbox3), hbox_bst, FALSE, FALSE, 2); button_start_today = gtk_button_new_with_mnemonic (_("Current date")); gtk_widget_set_size_request (button_start_today, -1, 32); GTK_WIDGET_UNSET_FLAGS (button_start_today, GTK_CAN_FOCUS); gtk_widget_show (button_start_today); gtk_box_pack_start (GTK_BOX (hbox_bst), button_start_today, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_start_today, _("Set current date")); } g_signal_connect (button_start_today, "clicked", G_CALLBACK (set_current_date_start_cb), appGUI); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_box_pack_start (GTK_BOX (hbox1), vbox4, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox4), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Hour")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Minute")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Second")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->cal->spinbutton_start_hour = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_hour); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_hour, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton_start_minute = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_minute); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_minute, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton_start_second = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_second); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_second, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox11 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox11); gtk_box_pack_start (GTK_BOX (vbox4), hbox11, FALSE, FALSE, 2); button_start_now = gtk_button_new_with_mnemonic (_("Current time")); gtk_widget_set_size_request (button_start_now, -1, 32); GTK_WIDGET_UNSET_FLAGS (button_start_now, GTK_CAN_FOCUS); gtk_widget_show (button_start_now); gtk_box_pack_start (GTK_BOX (hbox11), button_start_now, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_start_now, _("Set current time")); } g_signal_connect (button_start_now, "clicked", G_CALLBACK (set_current_time_start_cb), appGUI); button_start_clear = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (button_start_clear); GTK_WIDGET_UNSET_FLAGS (button_start_clear, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (hbox11), button_start_clear, FALSE, FALSE, 4); gtk_button_set_relief (GTK_BUTTON (button_start_clear), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_start_clear, _("Reset time")); } g_signal_connect (button_start_clear, "clicked", G_CALLBACK (reset_current_time_start_cb), appGUI); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("First date and time")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0); } else { gtk_box_pack_start (GTK_BOX (vbox99), frame, FALSE, FALSE, 0); } gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_container_add (GTK_CONTAINER (alignment), hbox2); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox5); gtk_box_pack_start (GTK_BOX (hbox2), vbox5, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox5), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Year")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Month")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Day")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (1, 1, 9999, 1, 10, 0); appGUI->cal->spinbutton_end_year = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_year); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_year, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 12, 1, 10, 0); appGUI->cal->spinbutton_end_month = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_month); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_month, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 31, 1, 10, 0); appGUI->cal->spinbutton_end_day = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_day); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_day, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox_bet = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox_bet); gtk_box_pack_start (GTK_BOX (vbox5), hbox_bet, FALSE, FALSE, 2); button_end_today = gtk_button_new_with_mnemonic (_("Current date")); gtk_widget_set_size_request (button_end_today, -1, 32); GTK_WIDGET_UNSET_FLAGS (button_end_today, GTK_CAN_FOCUS); gtk_widget_show (button_end_today); gtk_box_pack_start (GTK_BOX (hbox_bet), button_end_today, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_end_today, _("Set current date")); } g_signal_connect (button_end_today, "clicked", G_CALLBACK (set_current_date_end_cb), appGUI); vbox6 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox6); gtk_box_pack_start (GTK_BOX (hbox2), vbox6, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox6), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Hour")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Minute")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Second")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->cal->spinbutton_end_hour = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_hour); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_hour, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton_end_minute = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_minute); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_minute, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton_end_second = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_end_second); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_end_second, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox13 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox13); gtk_box_pack_start (GTK_BOX (vbox6), hbox13, FALSE, FALSE, 2); button_end_now = gtk_button_new_with_mnemonic (_("Current time")); gtk_widget_set_size_request (button_end_now, -1, 32); GTK_WIDGET_UNSET_FLAGS (button_end_now, GTK_CAN_FOCUS); gtk_widget_show (button_end_now); gtk_box_pack_start (GTK_BOX (hbox13), button_end_now, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_end_now, _("Set current time")); } g_signal_connect (button_end_now, "clicked", G_CALLBACK (set_current_time_end_cb), appGUI); button_end_clear = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (button_end_clear); GTK_WIDGET_UNSET_FLAGS (button_end_clear, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (hbox13), button_end_clear, FALSE, FALSE, 4); gtk_button_set_relief (GTK_BUTTON (button_end_clear), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button_end_clear, _("Reset time")); } g_signal_connect (button_end_clear, "clicked", G_CALLBACK (reset_current_time_end_cb), appGUI); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Second date and time")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); if (!config.gui_layout) { hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox2), hseparator, FALSE, FALSE, 6); } else { hseparator = gtk_vseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (hbox99), hseparator, FALSE, FALSE, 6); } frame = gtk_frame_new (NULL); gtk_widget_show (frame); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox99), frame, FALSE, FALSE, 0); } gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 8); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox_result = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox_result); gtk_container_add (GTK_CONTAINER (alignment), vbox_result); appGUI->cal->label_result_1 = gtk_label_new (""); gtk_widget_show (appGUI->cal->label_result_1); gtk_label_set_selectable (GTK_LABEL (appGUI->cal->label_result_1), 1); gtk_box_pack_start (GTK_BOX (vbox_result), appGUI->cal->label_result_1, FALSE, FALSE, 0); appGUI->cal->label_result_1_2 = gtk_label_new (""); gtk_widget_show (appGUI->cal->label_result_1_2); gtk_label_set_selectable (GTK_LABEL (appGUI->cal->label_result_1_2), 1); gtk_box_pack_start (GTK_BOX (vbox_result), appGUI->cal->label_result_1_2, FALSE, FALSE, 0); appGUI->cal->label_result_2 = gtk_label_new (""); gtk_widget_show (appGUI->cal->label_result_2); gtk_label_set_selectable (GTK_LABEL (appGUI->cal->label_result_2), 1); gtk_box_pack_start (GTK_BOX (vbox_result), appGUI->cal->label_result_2, TRUE, TRUE, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "\n%s:", _("Alternative time units")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (vbox_result), label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->label_result_3 = gtk_label_new (""); gtk_widget_show (appGUI->cal->label_result_3); gtk_label_set_selectable (GTK_LABEL (appGUI->cal->label_result_3), 1); gtk_box_pack_start (GTK_BOX (vbox_result), appGUI->cal->label_result_3, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->label_result_3), 0.05, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Result")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); label = gtk_label_new (_("Duration between two dates")); gtk_widget_show (label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label); vbox7 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox7); gtk_container_add (GTK_CONTAINER (notebook), vbox7); hbox98 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox98); gtk_box_pack_start (GTK_BOX (vbox7), hbox98, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox7), frame, FALSE, FALSE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox98), frame, FALSE, FALSE, 0); } gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox22 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox22); gtk_container_add (GTK_CONTAINER (alignment), vbox22); hbox9 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox9); gtk_box_pack_start (GTK_BOX (vbox22), hbox9, TRUE, TRUE, 0); vbox8 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox8); gtk_box_pack_start (GTK_BOX (hbox9), vbox8, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox8), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Year")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Month")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Day")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (1, 1, 9999, 1, 10, 0); appGUI->cal->spinbutton2_start_year = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_year); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_year, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 12, 1, 10, 0); appGUI->cal->spinbutton2_start_month = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_month); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_month, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (1, 1, 31, 1, 10, 0); appGUI->cal->spinbutton2_start_day = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_day); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_day, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox_b2st = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox_b2st); gtk_box_pack_start (GTK_BOX (vbox8), hbox_b2st, FALSE, FALSE, 2); button2_start_today = gtk_button_new_with_mnemonic (_("Current date")); gtk_widget_set_size_request (button2_start_today, -1, 32); GTK_WIDGET_UNSET_FLAGS (button2_start_today, GTK_CAN_FOCUS); gtk_widget_show (button2_start_today); gtk_box_pack_start (GTK_BOX (hbox_b2st), button2_start_today, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button2_start_today, _("Set current date")); } g_signal_connect (button2_start_today, "clicked", G_CALLBACK (set_current_date_start2_cb), appGUI); vbox9 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox9); gtk_box_pack_start (GTK_BOX (hbox9), vbox9, TRUE, TRUE, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox9), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Hour")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Minute")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Second")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->cal->spinbutton2_start_hour = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_hour); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_hour, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton2_start_minute = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_minute); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_minute, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->spinbutton2_start_second = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_start_second); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_start_second, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox_b2sn = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox_b2sn); gtk_box_pack_start (GTK_BOX (vbox9), hbox_b2sn, FALSE, FALSE, 2); button2_start_now = gtk_button_new_with_mnemonic (_("Current time")); gtk_widget_set_size_request (button2_start_now, -1, 32); GTK_WIDGET_UNSET_FLAGS (button2_start_now, GTK_CAN_FOCUS); gtk_widget_show (button2_start_now); gtk_box_pack_start (GTK_BOX (hbox_b2sn), button2_start_now, TRUE, FALSE, 4); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button2_start_now, _("Set current time")); } g_signal_connect (button2_start_now, "clicked", G_CALLBACK (set_current_time_start2_cb), appGUI); button2_start_clear = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (button2_start_clear); GTK_WIDGET_UNSET_FLAGS (button2_start_clear, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (hbox_b2sn), button2_start_clear, FALSE, FALSE, 4); gtk_button_set_relief (GTK_BUTTON (button2_start_clear), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button2_start_clear, _("Reset time")); } g_signal_connect (button2_start_clear, "clicked", G_CALLBACK (reset_current_time_start2_cb), appGUI); hbox14 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox14); gtk_box_pack_start (GTK_BOX (vbox22), hbox14, FALSE, FALSE, 4); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Operation")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox14), label, FALSE, FALSE, 0); appGUI->cal->radiobutton_add = gtk_radio_button_new_with_mnemonic (NULL, _("add")); gtk_widget_show (appGUI->cal->radiobutton_add); gtk_box_pack_start (GTK_BOX (hbox14), appGUI->cal->radiobutton_add, FALSE, FALSE, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->cal->radiobutton_add),radiobutton_add_group); radiobutton_add_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->cal->radiobutton_add)); radiobutton_sub = gtk_radio_button_new_with_mnemonic (NULL, _("subtract")); gtk_widget_show (radiobutton_sub); gtk_box_pack_start (GTK_BOX (hbox14), radiobutton_sub, FALSE, FALSE, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton_sub), radiobutton_add_group); radiobutton_add_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton_sub)); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Date and time to add or subtract from")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox7), frame, FALSE, FALSE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox98), frame, FALSE, FALSE, 0); } gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox10 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox10); gtk_container_add (GTK_CONTAINER (alignment), vbox10); table = gtk_table_new (2, 4, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox10), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Years")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Months")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 10000, 1, 10, 0); appGUI->cal->spinbutton2_end_year = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_year); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_year, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 100000, 1, 10, 0); appGUI->cal->spinbutton2_end_month = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_month); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_month, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 1000000, 1, 10, 0); appGUI->cal->spinbutton2_end_day = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_day); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_day, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = gtk_label_new (_("Days")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Weeks")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 1000000, 1, 10, 0); appGUI->cal->spinbutton2_end_week = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_week); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_week, 3, 4, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox10), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Hours")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Minutes")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Seconds")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (0, 0, 100000000, 1, 10, 0); appGUI->cal->spinbutton2_end_hour = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_hour); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_hour, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 1000000000, 1, 10, 0); appGUI->cal->spinbutton2_end_minute = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_minute); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_minute, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (0, 0, 2000000000, 1, 10, 0); appGUI->cal->spinbutton2_end_second = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton2_end_second); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton2_end_second, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox10 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox10); gtk_box_pack_start (GTK_BOX (vbox10), hbox10, TRUE, TRUE, 4); appGUI->cal->ignore_weekend_days_checkbutton = gtk_check_button_new_with_mnemonic (_("Ignore weekend days")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->ignore_weekend_days_checkbutton, GTK_CAN_FOCUS); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->ignore_weekend_days_checkbutton), FALSE); g_signal_connect (G_OBJECT (appGUI->cal->ignore_weekend_days_checkbutton), "toggled", G_CALLBACK (ignore_weekend_days_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox10), appGUI->cal->ignore_weekend_days_checkbutton, FALSE, FALSE, 2); gtk_widget_show (appGUI->cal->ignore_weekend_days_checkbutton); button2_end_clear = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (button2_end_clear); GTK_WIDGET_UNSET_FLAGS (button2_end_clear, GTK_CAN_FOCUS); gtk_box_pack_end (GTK_BOX (hbox10), button2_end_clear, FALSE, FALSE, 4); gtk_button_set_relief (GTK_BUTTON (button2_end_clear), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (button2_end_clear, _("Reset fields")); } g_signal_connect (button2_end_clear, "clicked", G_CALLBACK (reset_addsub_time_cb), appGUI); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Time to add or subtract")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox7), hseparator, FALSE, FALSE, 6); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox7), frame, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame), 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 8); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox12 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox12); gtk_container_add (GTK_CONTAINER (alignment), hbox12); appGUI->cal->label2_result = gtk_label_new ("-"); gtk_label_set_selectable (GTK_LABEL (appGUI->cal->label2_result), 1); gtk_widget_show (appGUI->cal->label2_result); gtk_box_pack_start (GTK_BOX (hbox12), appGUI->cal->label2_result, TRUE, TRUE, 4); jumpto_button = utl_gui_create_labeled_button (GTK_STOCK_JUMP_TO, OSMO_STOCK_BUTTON_JUMPTO, _("Jump to")); gtk_widget_show (jumpto_button); g_signal_connect(jumpto_button, "clicked", G_CALLBACK(jumpto_and_window_close_cb), appGUI); gtk_box_pack_end (GTK_BOX (hbox12), jumpto_button, FALSE, TRUE, 4); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Result")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); label = gtk_label_new (_("Add to or subtract from a date")); gtk_widget_show (label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, FALSE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_end (GTK_BOX (vbox), hbuttonbox, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 4); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); /*---------------------------------------------------------------------------------*/ close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); GTK_WIDGET_UNSET_FLAGS (close_button, GTK_CAN_FOCUS); g_signal_connect (appGUI->cal->spinbutton_start_year, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_start_month, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_start_day, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_start_hour, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_start_minute, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_start_second, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_year, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_month, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_day, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_hour, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_minute, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton_end_second, "value-changed", G_CALLBACK (set_result_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_year, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_month, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_day, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_hour, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_minute, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_start_second, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_year, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_month, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_week, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_day, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_hour, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_minute, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->spinbutton2_end_second, "value-changed", G_CALLBACK (set_result2_cb), appGUI); g_signal_connect (appGUI->cal->radiobutton_add, "toggled", G_CALLBACK (set_result2_cb), appGUI); set_current_date_start_cb (NULL, appGUI); set_current_date_start2_cb (NULL, appGUI); set_current_date_end_cb (NULL, appGUI); g_signal_connect (close_button, "clicked", G_CALLBACK (button_window_date_calculator_close_cb), appGUI); gtk_container_add (GTK_CONTAINER (hbuttonbox), close_button); gtk_window_get_position (GTK_WINDOW (appGUI->cal->window_date_calculator), &win_xpos, &win_ypos); gtk_window_move (GTK_WINDOW (appGUI->cal->window_date_calculator), win_xpos-5, win_ypos-40); gtk_widget_show (appGUI->cal->window_date_calculator); } osmo-0.2.14/src/calendar_jumpto.c000664 001750 001750 00000025152 12561325524 016641 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_jumpto.h" #include "i18n.h" #include "calendar.h" #include "calendar_utils.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "options_prefs.h" #include "stock_icons.h" /*------------------------------------------------------------------------------*/ gboolean check_number (const gchar *str) { gint i, n; n = strlen(str); if (!n) return FALSE; for(i=0;ical->jumpto_window); } /*------------------------------------------------------------------------------*/ gint jumpto_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { jumpto_window_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint day_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { char tmpbuf[BUFFER_SIZE]; gint a; GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Return) { if (check_number(gtk_entry_get_text(GTK_ENTRY(appGUI->cal->day_entry))) == FALSE) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_date_get_current_day ()); gtk_entry_set_text (GTK_ENTRY(appGUI->cal->day_entry), tmpbuf); } a = atoi(gtk_entry_get_text(GTK_ENTRY(appGUI->cal->day_entry))); if (a > 31) gtk_entry_set_text (GTK_ENTRY(appGUI->cal->day_entry), "31"); if (a < 1) gtk_entry_set_text (GTK_ENTRY(appGUI->cal->day_entry), "1"); gtk_widget_grab_focus(GTK_WIDGET(appGUI->cal->month_entry)); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint month_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { char tmpbuf[BUFFER_SIZE]; gint a; GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Return) { if (check_number(gtk_entry_get_text(GTK_ENTRY(appGUI->cal->month_entry))) == FALSE) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_date_get_current_month ()); gtk_entry_set_text (GTK_ENTRY(appGUI->cal->month_entry), tmpbuf); } a = atoi(gtk_entry_get_text(GTK_ENTRY(appGUI->cal->month_entry))); if (a > 12) gtk_entry_set_text (GTK_ENTRY(appGUI->cal->month_entry), "12"); if (a < 1) gtk_entry_set_text (GTK_ENTRY(appGUI->cal->month_entry), "1"); gtk_widget_grab_focus(GTK_WIDGET(appGUI->cal->year_entry)); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ /* FIXME */ void jumpto_go_window_close_cb (GtkButton *button, gpointer user_data) { GDate *cdate; GUI *appGUI = (GUI *)user_data; appGUI->cal->jday = atoi (gtk_entry_get_text (GTK_ENTRY (appGUI->cal->day_entry))); appGUI->cal->jmonth = atoi (gtk_entry_get_text (GTK_ENTRY (appGUI->cal->month_entry))); appGUI->cal->jyear = atoi (gtk_entry_get_text (GTK_ENTRY (appGUI->cal->year_entry))); if ((appGUI->cal->jyear > JULIAN_GREGORIAN_YEAR) && (appGUI->cal->jmonth > 0 && appGUI->cal->jmonth <= 12)) { if (appGUI->cal->jday > 0 && appGUI->cal->jday <= g_date_get_days_in_month (appGUI->cal->jmonth, appGUI->cal->jyear)) { cdate = g_date_new_dmy (appGUI->cal->jday, appGUI->cal->jmonth, appGUI->cal->jyear); g_return_if_fail (cdate != NULL); cal_jump_to_date (cdate, appGUI); update_aux_calendars (appGUI); g_date_free (cdate); } } jumpto_window_close_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ void button_jumpto_window_close_cb (GtkButton *button, gpointer user_data) { jumpto_window_close_cb (GTK_WIDGET(button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint year_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Return) { jumpto_go_window_close_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void calendar_create_jumpto_window (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *label; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *jumpto_button; gint win_xpos, win_ypos; char tmpbuf[BUFFER_SIZE]; appGUI->cal->jumpto_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->jumpto_window), _("Jump to date")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->jumpto_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->jumpto_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->jumpto_window), "delete_event", G_CALLBACK(jumpto_window_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->jumpto_window), "key_press_event", G_CALLBACK (jumpto_key_press_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->jumpto_window), GTK_WINDOW(appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->jumpto_window), 8); gtk_window_set_resizable (GTK_WINDOW (appGUI->cal->jumpto_window), FALSE); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->jumpto_window), vbox1); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6); sprintf(tmpbuf, "%s:", _("Day")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label), 8, 0); appGUI->cal->day_entry = gtk_entry_new (); gtk_widget_show (appGUI->cal->day_entry); gtk_widget_set_size_request (appGUI->cal->day_entry, 50, -1); gtk_entry_set_max_length (GTK_ENTRY(appGUI->cal->day_entry), 2); g_signal_connect (G_OBJECT (appGUI->cal->day_entry), "key_press_event", G_CALLBACK (day_key_press_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->day_entry, FALSE, TRUE, 1); sprintf(tmpbuf, "%s:", _("Month")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label), 8, 0); appGUI->cal->month_entry = gtk_entry_new (); gtk_widget_show (appGUI->cal->month_entry); gtk_widget_set_size_request (appGUI->cal->month_entry, 50, -1); gtk_entry_set_max_length (GTK_ENTRY(appGUI->cal->month_entry), 2); g_signal_connect (G_OBJECT (appGUI->cal->month_entry), "key_press_event", G_CALLBACK (month_key_press_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->month_entry, FALSE, TRUE, 1); sprintf(tmpbuf, "%s:", _("Year")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label), 8, 0); appGUI->cal->year_entry = gtk_entry_new (); gtk_widget_show (appGUI->cal->year_entry); gtk_widget_set_size_request (appGUI->cal->year_entry, 50, -1); gtk_entry_set_max_length (GTK_ENTRY(appGUI->cal->year_entry), 4); g_signal_connect (G_OBJECT (appGUI->cal->year_entry), "key_press_event", G_CALLBACK (year_key_press_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->year_entry, FALSE, TRUE, 1); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_date_get_current_day ()); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->day_entry), tmpbuf); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_date_get_current_month ()); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->month_entry), tmpbuf); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_date_get_current_year ()); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->year_entry), tmpbuf); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_jumpto_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), cancel_button); jumpto_button = utl_gui_create_labeled_button (GTK_STOCK_JUMP_TO, OSMO_STOCK_BUTTON_JUMPTO, _("Jump to")); gtk_widget_show (jumpto_button); g_signal_connect(jumpto_button, "clicked", G_CALLBACK(jumpto_go_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), jumpto_button); gtk_widget_grab_focus(GTK_WIDGET(appGUI->cal->day_entry)); gtk_window_get_position (GTK_WINDOW(appGUI->cal->jumpto_window), &win_xpos, &win_ypos); gtk_window_move (GTK_WINDOW (appGUI->cal->jumpto_window), win_xpos-5, win_ypos-40); gtk_widget_show(appGUI->cal->jumpto_window); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/about.h000664 001750 001750 00000002570 12561325524 014610 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _ABOUT_H #define _ABOUT_H #include "gui.h" #define OSMO_WEBSITE "http://clayo.org/osmo" #define MAILING_LIST "http://sourceforge.net/p/osmo-pim/mailman" #define BUG_TRACKER "http://sourceforge.net/p/osmo-pim/bugs" #define FEATURE_REQUESTS "http://sourceforge.net/p/osmo-pim/feature-requests" typedef struct { gchar *tag; gchar *name; gchar *email; } OsmoCreditEntry; GtkWidget * opt_create_about_window (GUI *appGUI); #endif /* _ABOUT_H */ osmo-0.2.14/src/options_prefs.c000664 001750 001750 00000144227 12561325524 016371 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "options_prefs.h" #include "i18n.h" #include "utils.h" #include "utils_date.h" #include "contacts.h" #include "contacts_import.h" #include "contacts_export.h" #include "calendar.h" #include "calendar_widget.h" #include "calendar_notes.h" #include "calendar_utils.h" /*------------------------------------------------------------------------------*/ gchar* prefs_get_config_dir (GUI *appGUI) { static gchar dirname[PATH_MAX]; if (appGUI->config_path == NULL) { #if defined(CONFIG_PATH) && defined(CONFIG_DIR) g_snprintf (dirname, PATH_MAX, "%s%c%s", CONFIG_PATH, G_DIR_SEPARATOR, CONFIG_DIR); #elif defined(CONFIG_DIR) g_snprintf (dirname, PATH_MAX, "%s%c%s", g_get_home_dir(), G_DIR_SEPARATOR, CONFIG_DIR); #elif defined(CONFIG_PATH) g_snprintf (dirname, PATH_MAX, "%s%c%s", CONFIG_PATH, G_DIR_SEPARATOR, CONFIG_DIRNAME); #else g_snprintf (dirname, PATH_MAX, "%s%c%s", g_get_home_dir(), G_DIR_SEPARATOR, CONFIG_DIRNAME); #endif } else { g_strlcpy (dirname, appGUI->config_path, PATH_MAX); } return dirname; } /*------------------------------------------------------------------------------*/ gchar* prefs_get_config_filename (gchar *config_filename, GUI *appGUI) { static gchar filename[PATH_MAX]; gchar *dirname = NULL; struct stat cfg; dirname = g_strdup (prefs_get_config_dir(appGUI)); g_return_val_if_fail (dirname != NULL, NULL); if(g_stat (dirname, &cfg) < 0) g_mkdir (dirname, S_IRUSR | S_IWUSR | S_IXUSR); if (g_access (dirname, R_OK | W_OK) == -1) { return NULL; } g_snprintf (filename, PATH_MAX, "%s%c%s", dirname, G_DIR_SEPARATOR, config_filename); g_free (dirname); return filename; } /*------------------------------------------------------------------------------*/ void prefs_set_default_values (void) { gint i; /* general */ config.window_x = 0; config.window_y = 0; config.window_size_x = 540; config.window_size_y = 690; config.fullscreen = 0; config.enable_tooltips = TRUE; config.latest_tab = 0; /* calendar */ config.tabs_position = GTK_POS_TOP; config.remember_latest_tab = TRUE; config.save_data_after_modification = TRUE; config.default_stock_icons = FALSE; config.disable_underline_links = FALSE; config.rules_hint = FALSE; config.toolbar_exit_button = FALSE; config.date_format = DATE_YYYY_MM_DD; config.time_format = TIME_24; config.enable_systray = TRUE; config.start_minimised_in_systray = FALSE; config.blink_on_events = FALSE; config.ignore_day_note_events = FALSE; config.run_counter = 0; config.lastrun_date = utl_date_get_current_julian (); config.lastrun_time = utl_time_get_current_seconds (); config.hide_calendar = FALSE; config.hide_tasks = FALSE; config.hide_contacts = FALSE; config.hide_notes = FALSE; config.override_locale_settings = FALSE; config.gui_layout = 0; /* 0 - vertical, 1 - horizontal */ config.sound_alarm_repeat = 1; g_strlcpy (config.link_color, "blue", MAXCOLORNAME); g_strlcpy (config.spell_lang, g_getenv("LANG"), MAXNAME); /* FIXME: DO NOT USE xdg-open AS IT CANNOT OPEN MULTIPLE LINKS AT ONCE */ /*g_strlcpy (config.web_browser, "xdg-open %s", MAXHELPERCMD);*/ g_strlcpy (config.web_browser, "firefox %s", MAXHELPERCMD); g_strlcpy (config.email_client, "xdg-email %s", MAXHELPERCMD); /* play command requires SoX */ /*g_strlcpy (config.sound_player, "play %s", MAXHELPERCMD);*/ g_strlcpy (config.sound_player, "aplay %s", MAXHELPERCMD); /* calendar */ config.fy_window_size_x = 750; config.fy_window_size_y = 550; config.fy_simple_view = TRUE; config.fy_alternative_view = FALSE; config.cb_window_size_x = 570; config.cb_window_size_y = 680; config.ib_window_size_x = 550; config.ib_window_size_y = 650; config.display_options = GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_NO_MONTH_CHANGE | GUI_CALENDAR_WEEK_START_MONDAY; config.day_notes_visible = FALSE; config.timeline_start = 8*60; config.timeline_end = 15*60; config.timeline_step = 60; config.di_show_current_time = TRUE; config.di_show_current_time_seconds = TRUE; config.di_show_day_number = TRUE; config.di_show_current_day_distance = TRUE; config.di_show_marked_days = TRUE; config.di_show_week_number = TRUE; config.di_show_weekend_days = TRUE; config.di_show_day_category = TRUE; config.di_show_moon_phase = TRUE; config.di_show_notes = TRUE; config.di_show_zodiac_sign = FALSE; config.cursor_type = CURSOR_FRAME; config.frame_cursor_thickness = 2; config.enable_auxilary_calendars = TRUE; config.enable_day_mark = TRUE; config.strikethrough_past_notes = FALSE; config.ascending_sorting_in_day_notes_browser = FALSE; config.auxilary_calendars_state = FALSE; config.day_note_spell_checker = FALSE; g_strlcpy (config.day_note_marker, "\'", MAXNAME); g_strlcpy (config.date_header_format, DEFAULT_DATE_HEADER_FORMAT, MAXNAME); config.event_marker_type = EVENT_MARKER_CIRCLE; config.today_marker_type = TODAY_MARKER_FREEHAND_CIRCLE; config.day_notes_browser_filter = DN_FILTER_CURRENT_MONTH; config.ical_export_pane_pos = 180; g_strlcpy (config.header_color, "#808080", MAXCOLORNAME); g_strlcpy (config.weekend_color, "#880000", MAXCOLORNAME); g_strlcpy (config.selection_color, "#526565", MAXCOLORNAME); g_strlcpy (config.mark_color, "#dddddd", MAXCOLORNAME); g_strlcpy (config.mark_current_day_color, "#34A434", MAXCOLORNAME); g_strlcpy (config.birthday_mark_color, "#FFA500", MAXCOLORNAME); config.mark_current_day_alpha = 32768; config.selector_alpha = 32768; g_strlcpy (config.day_name_font, "Sans Bold 20", MAXFONTNAME); g_strlcpy (config.calendar_font, "Sans 18", MAXFONTNAME); g_strlcpy (config.notes_font, "Sans 11", MAXFONTNAME); g_strlcpy (config.cal_print_month_name_font, "Sans Bold 40", MAXFONTNAME); g_strlcpy (config.cal_print_day_name_font, "Sans Bold 10", MAXFONTNAME); g_strlcpy (config.cal_print_day_num_font, "Sans Bold 16", MAXFONTNAME); g_strlcpy (config.cal_print_event_font, "Sans 7", MAXFONTNAME); config.cal_print_event_length = 256; config.cal_print_padding = 4; config.cal_print_page_orientation = PORTRAIT; config.cal_print_tasks = TRUE; config.cal_print_birthdays = TRUE; config.cal_print_namedays = TRUE; config.cal_print_day_notes = TRUE; config.cal_print_ical = TRUE; /* tasks */ config.tasks_high_in_bold = TRUE; config.hide_completed = FALSE; config.delete_completed = FALSE; config.add_edit = FALSE; config.remember_category_in_tasks = FALSE; config.current_category_in_tasks = 0; config.tasks_pane_pos = DEFAULT_PANED_SPLIT_POSITION; config.tasks_sorting_order = GTK_SORT_ASCENDING; config.tasks_sorting_column = TA_COLUMN_DUE_DATE; config.tsk_visible_due_date_column = TRUE; config.tsk_visible_type_column = TRUE; config.tsk_visible_priority_column = FALSE; config.tsk_visible_category_column = FALSE; config.tasks_addedit_win_w = 370; config.tasks_addedit_win_h = 440; config.tasks_addedit_win_x = config.window_x+config.window_size_x/2-config.tasks_addedit_win_w/2; config.tasks_addedit_win_y = config.window_y+20; config.postpone_time = 10; config.tasks_column_idx_0 = 0; config.tasks_column_idx_0_width = 50; config.tasks_column_idx_1 = 1; config.tasks_column_idx_1_width = 50; config.tasks_column_idx_2 = 2; config.tasks_column_idx_2_width = 100; config.tasks_column_idx_3 = 3; config.tasks_column_idx_3_width = 100; config.tasks_column_idx_4 = 4; config.tasks_column_idx_4_width = 100; config.tasks_column_idx_5 = 5; config.tasks_column_idx_5_width = 100; g_strlcpy (config.due_today_color, "#00981E", MAXCOLORNAME); g_strlcpy (config.due_7days_color, "#0047B7", MAXCOLORNAME); g_strlcpy (config.past_due_color, "#CB362C", MAXCOLORNAME); g_strlcpy (config.task_info_font, "Sans 14", MAXFONTNAME); config.global_notification_command[0] = '\0'; /* contacts */ config.find_mode = CONTACTS_FF_FIRST_NAME; config.hide_group_column = FALSE; config.maps_provider = 0; config.contacts_pane_pos = DEFAULT_PANED_SPLIT_POSITION; config.photo_width = 80; config.cnt_visible_age_column = TRUE; config.cnt_visible_birthday_date_column = TRUE; config.cnt_visible_zodiac_sign_column = TRUE; config.contacts_sorting_order = GTK_SORT_ASCENDING; config.contacts_sorting_column = COLUMN_GROUP; config.contacts_addedit_win_w = 500; config.contacts_addedit_win_h = 600; config.contacts_addedit_win_x = config.window_x+config.window_size_x/2-config.contacts_addedit_win_w/2; config.contacts_addedit_win_y = config.window_y+20; config.contacts_export_win_w = 500; config.contacts_export_win_h = 400; config.contacts_export_win_x = config.window_x+config.window_size_x/2-config.contacts_export_win_w/2; config.contacts_export_win_y = config.window_y+20; config.contacts_import_win_w = 650; config.contacts_import_win_h = 450; config.contacts_import_win_x = config.window_x+config.window_size_x/2-config.contacts_import_win_w/2; config.contacts_import_win_y = config.window_y+20; config.contacts_import_sel_win_x = config.window_x+60; config.contacts_import_sel_win_y = config.window_y+20; config.contacts_birthdays_win_w = 650; config.contacts_birthdays_win_h = 700; config.contacts_column_idx_0 = 0; config.contacts_column_idx_0_width = 150; config.contacts_column_idx_1 = 1; config.contacts_column_idx_1_width = 150; config.contacts_column_idx_2 = 2; config.contacts_column_idx_2_width = 150; config.import_type = IMPORT_TYPE_FILE; config.import_interface_type = 0; config.import_bluetooth_channel = 1; config.import_usb_interface = 0; config.import_binary_xml = 0; config.contact_name_font_size = 18; config.contact_item_font_size = 11; g_strlcpy (config.import_bluetooth_address, "00:00:00:00:00:00", MAXADDRESS); g_strlcpy (config.contact_tag_color, "#228B22", MAXCOLORNAME); g_strlcpy (config.contact_link_color, "blue", MAXCOLORNAME); config.export_format = EXPORT_TO_CSV; for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { config.export_fields[i] = '-'; } config.export_fields[COLUMN_GROUP] = '+'; config.export_fields[COLUMN_FIRST_NAME] = '+'; config.export_fields[COLUMN_LAST_NAME] = '+'; config.export_fields[COLUMN_NICK_NAME] = '+'; /* notes */ config.notes_enc_algorithm = 1; /* Serpent */ config.notes_enc_hashing = 1; /* RIPEMD-160 */ config.notes_comp_algorithm = 0; /* ZLib */ config.notes_comp_ratio = 3; /* BEST */ config.notes_sorting_order = GTK_SORT_ASCENDING; config.notes_sorting_column = N_COLUMN_NAME; config.nte_visible_type_column = TRUE; config.nte_visible_category_column = TRUE; config.nte_visible_last_changes_column = TRUE; config.nte_visible_created_column = TRUE; config.notes_column_idx_0 = 0; config.notes_column_idx_0_width = 50; config.notes_column_idx_1 = 1; config.notes_column_idx_1_width = 200; config.notes_column_idx_2 = 2; config.notes_column_idx_2_width = 80; config.notes_column_idx_3 = 3; config.notes_column_idx_3_width = 150; config.notes_column_idx_4 = 4; config.notes_column_idx_4_width = 150; config.remember_category_in_notes = FALSE; config.current_category_in_notes = 0; config.use_system_date_in_notes = FALSE; config.text_separator = '='; g_strlcpy (config.notes_editor_font, "Sans 11", MAXFONTNAME); } /*------------------------------------------------------------------------------*/ void prefs_read_config (GUI *appGUI) { gboolean cfg_file; xmlDocPtr doc; xmlNodePtr node, general_node, calendar_node, tasks_node, contacts_node, notes_node; cfg_file = g_file_test (prefs_get_config_filename (CONFIG_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR); if (cfg_file == TRUE) { doc = xmlParseFile (prefs_get_config_filename (CONFIG_FILENAME, appGUI)); if (doc == NULL) return; node = xmlDocGetRootElement (doc); if (node == NULL) { xmlFreeDoc (doc); return; } if (xmlStrcmp (node->name, (const xmlChar *) CONFIG_NAME)) { xmlFreeDoc (doc); return; } prefs_set_default_values (); node = node->xmlChildrenNode; while (node != NULL) { /*---------------------------------------------------------------------------------------*/ /* general */ if ((!xmlStrcmp (node->name, (const xmlChar *) "general"))) { general_node = node->xmlChildrenNode; while (general_node != NULL) { utl_xml_get_int ("window_x", &config.window_x, general_node); utl_xml_get_int ("window_y", &config.window_y, general_node); utl_xml_get_int ("window_size_x", &config.window_size_x, general_node); utl_xml_get_int ("window_size_y", &config.window_size_y, general_node); utl_xml_get_int ("fullscreen", &config.fullscreen, general_node); utl_xml_get_int ("enable_tooltips", &config.enable_tooltips, general_node); utl_xml_get_int ("latest_tab", &config.latest_tab, general_node); utl_xml_get_int ("tabs_position", &config.tabs_position, general_node); utl_xml_get_int ("remember_latest_tab", &config.remember_latest_tab, general_node); utl_xml_get_int ("save_data_after_modification", &config.save_data_after_modification, general_node); utl_xml_get_int ("default_stock_icons", &config.default_stock_icons, general_node); utl_xml_get_int ("disable_underline_links", &config.disable_underline_links, general_node); utl_xml_get_int ("rules_hint", &config.rules_hint, general_node); utl_xml_get_int ("toolbar_exit_button", &config.toolbar_exit_button, general_node); utl_xml_get_int ("date_format", &config.date_format, general_node); utl_xml_get_int ("time_format", &config.time_format, general_node); utl_xml_get_int ("enable_systray", &config.enable_systray, general_node); utl_xml_get_int ("start_minimised_in_systray", &config.start_minimised_in_systray, general_node); utl_xml_get_int ("blink_on_events", &config.blink_on_events, general_node); utl_xml_get_int ("ignore_day_note_events", &config.ignore_day_note_events, general_node); utl_xml_get_int ("run_counter", &config.run_counter, general_node); utl_xml_get_int ("lastrun_date", &config.lastrun_date, general_node); utl_xml_get_int ("lastrun_time", &config.lastrun_time, general_node); utl_xml_get_int ("hide_calendar", &config.hide_calendar, general_node); utl_xml_get_int ("hide_tasks", &config.hide_tasks, general_node); utl_xml_get_int ("hide_contacts", &config.hide_contacts, general_node); utl_xml_get_int ("hide_notes", &config.hide_notes, general_node); utl_xml_get_int ("override_locale_settings", &config.override_locale_settings, general_node); utl_xml_get_int ("gui_layout", &config.gui_layout, general_node); utl_xml_get_int ("sound_alarm_repeat", &config.sound_alarm_repeat, general_node); utl_xml_get_strn ("spell_lang", config.spell_lang, MAXNAME, general_node); utl_xml_get_strn ("web_browser", config.web_browser, MAXHELPERCMD, general_node); utl_xml_get_strn ("email_client", config.email_client, MAXHELPERCMD, general_node); utl_xml_get_strn ("sound_player", config.sound_player, MAXHELPERCMD, general_node); general_node = general_node->next; } } /*---------------------------------------------------------------------------------------*/ /* calendar */ if ((!xmlStrcmp (node->name, (const xmlChar *) "calendar"))) { calendar_node = node->xmlChildrenNode; while (calendar_node != NULL) { utl_xml_get_int ("fy_window_size_x", &config.fy_window_size_x, calendar_node); utl_xml_get_int ("fy_window_size_y", &config.fy_window_size_y, calendar_node); utl_xml_get_int ("fy_simple_view", &config.fy_simple_view, calendar_node); utl_xml_get_int ("fy_alternative_view", &config.fy_alternative_view, calendar_node); utl_xml_get_int ("cb_window_size_x", &config.cb_window_size_x, calendar_node); utl_xml_get_int ("cb_window_size_y", &config.cb_window_size_y, calendar_node); utl_xml_get_int ("ib_window_size_x", &config.ib_window_size_x, calendar_node); utl_xml_get_int ("ib_window_size_y", &config.ib_window_size_y, calendar_node); utl_xml_get_int ("display_options", &config.display_options, calendar_node); utl_xml_get_int ("day_notes_visible", &config.day_notes_visible, calendar_node); utl_xml_get_int ("timeline_start", &config.timeline_start, calendar_node); utl_xml_get_int ("timeline_end", &config.timeline_end, calendar_node); utl_xml_get_int ("timeline_step", &config.timeline_step, calendar_node); utl_xml_get_int ("di_show_current_time", &config.di_show_current_time, calendar_node); utl_xml_get_int ("di_show_current_time_seconds", &config.di_show_current_time_seconds, calendar_node); utl_xml_get_int ("di_show_day_number", &config.di_show_day_number, calendar_node); utl_xml_get_int ("di_show_current_day_distance", &config.di_show_current_day_distance, calendar_node); utl_xml_get_int ("di_show_marked_days", &config.di_show_marked_days, calendar_node); utl_xml_get_int ("di_show_week_number", &config.di_show_week_number, calendar_node); utl_xml_get_int ("di_show_weekend_days", &config.di_show_weekend_days, calendar_node); utl_xml_get_int ("di_show_day_category", &config.di_show_day_category, calendar_node); utl_xml_get_int ("di_show_moon_phase", &config.di_show_moon_phase, calendar_node); utl_xml_get_int ("di_show_notes", &config.di_show_notes, calendar_node); utl_xml_get_int ("di_show_zodiac_sign", &config.di_show_zodiac_sign, calendar_node); utl_xml_get_int ("cursor_type", &config.cursor_type, calendar_node); utl_xml_get_int ("frame_cursor_thickness", &config.frame_cursor_thickness, calendar_node); utl_xml_get_int ("enable_auxilary_calendars", &config.enable_auxilary_calendars, calendar_node); utl_xml_get_int ("enable_day_mark", &config.enable_day_mark, calendar_node); utl_xml_get_int ("strikethrough_past_notes", &config.strikethrough_past_notes, calendar_node); utl_xml_get_int ("ascending_sorting_in_day_notes_browser", &config.ascending_sorting_in_day_notes_browser, calendar_node); utl_xml_get_int ("auxilary_calendars_state", &config.auxilary_calendars_state, calendar_node); utl_xml_get_int ("day_note_spell_checker", &config.day_note_spell_checker, calendar_node); utl_xml_get_strn ("day_note_marker", config.day_note_marker, MAXNAME, calendar_node); utl_xml_get_strn ("date_header_format", config.date_header_format, MAXNAME, calendar_node); utl_xml_get_int ("event_marker_type", &config.event_marker_type, calendar_node); utl_xml_get_int ("today_marker_type", &config.today_marker_type, calendar_node); utl_xml_get_int ("day_notes_browser_filter", &config.day_notes_browser_filter, calendar_node); utl_xml_get_int ("ical_export_pane_pos", &config.ical_export_pane_pos, calendar_node); utl_xml_get_strn ("header_color", config.header_color, MAXCOLORNAME, calendar_node); utl_xml_get_strn ("weekend_color", config.weekend_color, MAXCOLORNAME, calendar_node); utl_xml_get_strn ("selection_color", config.selection_color, MAXCOLORNAME, calendar_node); utl_xml_get_strn ("mark_color", config.mark_color, MAXCOLORNAME, calendar_node); utl_xml_get_strn ("mark_current_day_color", config.mark_current_day_color, MAXCOLORNAME, calendar_node); utl_xml_get_int ("mark_current_day_alpha", &config.mark_current_day_alpha, calendar_node); utl_xml_get_strn ("birthday_mark_color", config.birthday_mark_color, MAXCOLORNAME, calendar_node); utl_xml_get_int ("selector_alpha", &config.selector_alpha, calendar_node); utl_xml_get_strn ("day_name_font", config.day_name_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("calendar_font", config.calendar_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("notes_font", config.notes_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("cal_print_month_name_font", config.cal_print_month_name_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("cal_print_day_name_font", config.cal_print_day_name_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("cal_print_day_num_font", config.cal_print_day_num_font, MAXFONTNAME, calendar_node); utl_xml_get_strn ("cal_print_event_font", config.cal_print_event_font, MAXFONTNAME, calendar_node); utl_xml_get_int ("cal_print_event_length", &config.cal_print_event_length, calendar_node); utl_xml_get_int ("cal_print_padding", &config.cal_print_padding, calendar_node); utl_xml_get_int ("cal_print_page_orientation", &config.cal_print_page_orientation, calendar_node); utl_xml_get_int ("cal_print_tasks", &config.cal_print_tasks, calendar_node); utl_xml_get_int ("cal_print_birthdays", &config.cal_print_birthdays, calendar_node); utl_xml_get_int ("cal_print_namedays", &config.cal_print_namedays, calendar_node); utl_xml_get_int ("cal_print_day_notes", &config.cal_print_day_notes, calendar_node); utl_xml_get_int ("cal_print_ical", &config.cal_print_ical, calendar_node); calendar_node = calendar_node->next; } } /*---------------------------------------------------------------------------------------*/ /* tasks */ if ((!xmlStrcmp (node->name, (const xmlChar *) "tasks"))) { tasks_node = node->xmlChildrenNode; while (tasks_node != NULL) { utl_xml_get_int ("high_priority_in_bold", &config.tasks_high_in_bold, tasks_node); utl_xml_get_int ("hide_completed", &config.hide_completed, tasks_node); utl_xml_get_int ("delete_completed", &config.delete_completed, tasks_node); utl_xml_get_int ("add_edit", &config.add_edit, tasks_node); utl_xml_get_int ("remember_category", &config.remember_category_in_tasks, tasks_node); utl_xml_get_int ("current_category", &config.current_category_in_tasks, tasks_node); utl_xml_get_int ("pane_pos", &config.tasks_pane_pos, tasks_node); utl_xml_get_int ("tasks_sorting_order", &config.tasks_sorting_order, tasks_node); utl_xml_get_int ("tasks_sorting_column", &config.tasks_sorting_column, tasks_node); utl_xml_get_int ("visible_due_date_column", &config.tsk_visible_due_date_column, tasks_node); utl_xml_get_int ("visible_type_column", &config.tsk_visible_type_column, tasks_node); utl_xml_get_int ("visible_priority_column", &config.tsk_visible_priority_column, tasks_node); utl_xml_get_int ("visible_category_column", &config.tsk_visible_category_column, tasks_node); utl_xml_get_int ("tasks_addedit_win_x", &config.tasks_addedit_win_x, tasks_node); utl_xml_get_int ("tasks_addedit_win_y", &config.tasks_addedit_win_y, tasks_node); utl_xml_get_int ("tasks_addedit_win_w", &config.tasks_addedit_win_w, tasks_node); utl_xml_get_int ("tasks_addedit_win_h", &config.tasks_addedit_win_h, tasks_node); utl_xml_get_int ("postpone_time", &config.postpone_time, tasks_node); utl_xml_get_int ("column_idx_0", &config.tasks_column_idx_0, tasks_node); utl_xml_get_int ("column_idx_0_width", &config.tasks_column_idx_0_width, tasks_node); utl_xml_get_int ("column_idx_1", &config.tasks_column_idx_1, tasks_node); utl_xml_get_int ("column_idx_1_width", &config.tasks_column_idx_1_width, tasks_node); utl_xml_get_int ("column_idx_2", &config.tasks_column_idx_2, tasks_node); utl_xml_get_int ("column_idx_2_width", &config.tasks_column_idx_2_width, tasks_node); utl_xml_get_int ("column_idx_3", &config.tasks_column_idx_3, tasks_node); utl_xml_get_int ("column_idx_3_width", &config.tasks_column_idx_3_width, tasks_node); utl_xml_get_int ("column_idx_4", &config.tasks_column_idx_4, tasks_node); utl_xml_get_int ("column_idx_4_width", &config.tasks_column_idx_4_width, tasks_node); utl_xml_get_int ("column_idx_5", &config.tasks_column_idx_5, tasks_node); utl_xml_get_int ("column_idx_5_width", &config.tasks_column_idx_5_width, tasks_node); utl_xml_get_strn ("due_today_color", config.due_today_color, MAXCOLORNAME, tasks_node); utl_xml_get_strn ("due_7days_color", config.due_7days_color, MAXCOLORNAME, tasks_node); utl_xml_get_strn ("past_due_color", config.past_due_color, MAXCOLORNAME, tasks_node); utl_xml_get_strn ("task_info_font", config.task_info_font, MAXFONTNAME, tasks_node); utl_xml_get_strn ("global_notification_command", config.global_notification_command, MAXHELPERCMD, tasks_node); tasks_node = tasks_node->next; } } /*---------------------------------------------------------------------------------------*/ /* contacts */ if ((!xmlStrcmp (node->name, (const xmlChar *) "contacts"))) { contacts_node = node->xmlChildrenNode; while (contacts_node != NULL) { utl_xml_get_int ("find_mode", &config.find_mode, contacts_node); utl_xml_get_int ("hide_group_column", &config.hide_group_column, contacts_node); utl_xml_get_int ("maps_provider", &config.maps_provider, contacts_node); utl_xml_get_int ("pane_pos", &config.contacts_pane_pos, contacts_node); utl_xml_get_int ("photo_width", &config.photo_width, contacts_node); utl_xml_get_int ("visible_age_column", &config.cnt_visible_age_column, contacts_node); utl_xml_get_int ("visible_birthday_date_column", &config.cnt_visible_birthday_date_column, contacts_node); utl_xml_get_int ("visible_zodiac_sign_column", &config.cnt_visible_zodiac_sign_column, contacts_node); utl_xml_get_strn ("contact_tag_color", config.contact_tag_color, MAXCOLORNAME, contacts_node); utl_xml_get_strn ("contact_link_color", config.contact_link_color, MAXCOLORNAME, contacts_node); utl_xml_get_int ("contact_name_font_size", &config.contact_name_font_size, contacts_node); utl_xml_get_int ("contact_item_font_size", &config.contact_item_font_size, contacts_node); utl_xml_get_int ("export_format", &config.export_format, contacts_node); utl_xml_get_strn ("export_fields", config.export_fields, MAXCONTACTFIELDS, contacts_node); utl_xml_get_int ("contacts_sorting_order", &config.contacts_sorting_order, contacts_node); utl_xml_get_int ("contacts_sorting_column", &config.contacts_sorting_column, contacts_node); utl_xml_get_int ("contacts_addedit_win_x", &config.contacts_addedit_win_x, contacts_node); utl_xml_get_int ("contacts_addedit_win_y", &config.contacts_addedit_win_y, contacts_node); utl_xml_get_int ("contacts_addedit_win_w", &config.contacts_addedit_win_w, contacts_node); utl_xml_get_int ("contacts_addedit_win_h", &config.contacts_addedit_win_h, contacts_node); utl_xml_get_int ("contacts_export_win_x", &config.contacts_export_win_x, contacts_node); utl_xml_get_int ("contacts_export_win_y", &config.contacts_export_win_y, contacts_node); utl_xml_get_int ("contacts_export_win_w", &config.contacts_export_win_w, contacts_node); utl_xml_get_int ("contacts_export_win_h", &config.contacts_export_win_h, contacts_node); utl_xml_get_int ("contacts_import_sel_win_x", &config.contacts_import_sel_win_x, contacts_node); utl_xml_get_int ("contacts_import_sel_win_y", &config.contacts_import_sel_win_y, contacts_node); utl_xml_get_int ("contacts_import_win_x", &config.contacts_import_win_x, contacts_node); utl_xml_get_int ("contacts_import_win_y", &config.contacts_import_win_y, contacts_node); utl_xml_get_int ("contacts_import_win_w", &config.contacts_import_win_w, contacts_node); utl_xml_get_int ("contacts_import_win_h", &config.contacts_import_win_h, contacts_node); utl_xml_get_int ("contacts_birthdays_win_w", &config.contacts_birthdays_win_w, contacts_node); utl_xml_get_int ("contacts_birthdays_win_h", &config.contacts_birthdays_win_h, contacts_node); utl_xml_get_int ("column_idx_0", &config.contacts_column_idx_0, contacts_node); utl_xml_get_int ("column_idx_0_width", &config.contacts_column_idx_0_width, contacts_node); utl_xml_get_int ("column_idx_1", &config.contacts_column_idx_1, contacts_node); utl_xml_get_int ("column_idx_1_width", &config.contacts_column_idx_1_width, contacts_node); utl_xml_get_int ("column_idx_2", &config.contacts_column_idx_2, contacts_node); utl_xml_get_int ("column_idx_2_width", &config.contacts_column_idx_2_width, contacts_node); utl_xml_get_int ("import_type", &config.import_type, contacts_node); utl_xml_get_int ("import_interface_type", &config.import_interface_type, contacts_node); utl_xml_get_int ("import_bluetooth_channel", &config.import_bluetooth_channel, contacts_node); utl_xml_get_int ("import_usb_interface", &config.import_usb_interface, contacts_node); utl_xml_get_int ("import_binary_xml", &config.import_binary_xml, contacts_node); utl_xml_get_strn ("import_bluetooth_address", config.import_bluetooth_address, MAXADDRESS, contacts_node); contacts_node = contacts_node->next; } } /*---------------------------------------------------------------------------------------*/ /* notes */ if ((!xmlStrcmp (node->name, (const xmlChar *) "notes"))) { notes_node = node->xmlChildrenNode; while (notes_node != NULL) { utl_xml_get_int ("enc_algorithm", &config.notes_enc_algorithm, notes_node); utl_xml_get_int ("enc_hashing", &config.notes_enc_hashing, notes_node); utl_xml_get_int ("comp_algorithm", &config.notes_comp_algorithm, notes_node); utl_xml_get_int ("comp_ratio", &config.notes_comp_ratio, notes_node); utl_xml_get_int ("sorting_order", &config.notes_sorting_order, notes_node); utl_xml_get_int ("sorting_column", &config.notes_sorting_column, notes_node); utl_xml_get_int ("visible_type_column", &config.nte_visible_type_column, notes_node); utl_xml_get_int ("visible_category_column", &config.nte_visible_category_column, notes_node); utl_xml_get_int ("visible_last_changes_column", &config.nte_visible_last_changes_column, notes_node); utl_xml_get_int ("visible_created_column", &config.nte_visible_created_column, notes_node); utl_xml_get_int ("column_idx_0", &config.notes_column_idx_0, notes_node); utl_xml_get_int ("column_idx_0_width", &config.notes_column_idx_0_width, notes_node); utl_xml_get_int ("column_idx_1", &config.notes_column_idx_1, notes_node); utl_xml_get_int ("column_idx_1_width", &config.notes_column_idx_1_width, notes_node); utl_xml_get_int ("column_idx_2", &config.notes_column_idx_2, notes_node); utl_xml_get_int ("column_idx_2_width", &config.notes_column_idx_2_width, notes_node); utl_xml_get_int ("column_idx_3", &config.notes_column_idx_3, notes_node); utl_xml_get_int ("column_idx_3_width", &config.notes_column_idx_3_width, notes_node); utl_xml_get_int ("column_idx_4", &config.notes_column_idx_4, notes_node); utl_xml_get_int ("column_idx_4_width", &config.notes_column_idx_4_width, notes_node); utl_xml_get_int ("remember_category", &config.remember_category_in_notes, notes_node); utl_xml_get_int ("current_category", &config.current_category_in_notes, notes_node); utl_xml_get_int ("use_system_date", &config.use_system_date_in_notes, notes_node); utl_xml_get_char ("text_separator", &config.text_separator, notes_node); utl_xml_get_strn ("editor_font", config.notes_editor_font, MAXFONTNAME, notes_node); notes_node = notes_node->next; } if (config.notes_comp_ratio == 0 /* GRG_LVL_NONE */) { /* ignore 'None' option */ config.notes_comp_ratio = 1 /* GRG_LVL_FAST */; } } /*---------------------------------------------------------------------------------------*/ node = node->next; } xmlFreeDoc (doc); } else { prefs_set_default_values (); prefs_write_config (appGUI); } } /*------------------------------------------------------------------------------*/ void prefs_write_config (GUI *appGUI) { xmlDocPtr doc; xmlNodePtr node, general_node, calendar_node, tasks_node, contacts_node, notes_node; doc = xmlNewDoc ((const xmlChar *) "1.0"); node = xmlNewNode (NULL, (const xmlChar *) CONFIG_NAME); xmlDocSetRootElement (doc, node); /*---------------------------------------------------------------------------------------*/ /* general */ general_node = xmlNewNode (NULL, (const xmlChar *) "general"); xmlAddChild (node, general_node); utl_xml_put_int ("window_x", config.window_x, general_node); utl_xml_put_int ("window_y", config.window_y, general_node); utl_xml_put_int ("window_size_x", config.window_size_x, general_node); utl_xml_put_int ("window_size_y", config.window_size_y, general_node); utl_xml_put_int ("fullscreen", config.fullscreen, general_node); utl_xml_put_int ("enable_tooltips", config.enable_tooltips, general_node); utl_xml_put_int ("latest_tab", config.latest_tab, general_node); utl_xml_put_int ("tabs_position", config.tabs_position, general_node); utl_xml_put_int ("remember_latest_tab", config.remember_latest_tab, general_node); utl_xml_put_int ("save_data_after_modification", config.save_data_after_modification, general_node); utl_xml_put_int ("default_stock_icons", config.default_stock_icons, general_node); utl_xml_put_int ("disable_underline_links", config.disable_underline_links, general_node); utl_xml_put_int ("rules_hint", config.rules_hint, general_node); utl_xml_put_int ("toolbar_exit_button", config.toolbar_exit_button, general_node); utl_xml_put_int ("date_format", config.date_format, general_node); utl_xml_put_int ("time_format", config.time_format, general_node); utl_xml_put_int ("enable_systray", config.enable_systray, general_node); utl_xml_put_int ("start_minimised_in_systray", config.start_minimised_in_systray, general_node); utl_xml_put_int ("blink_on_events", config.blink_on_events, general_node); utl_xml_put_int ("ignore_day_note_events", config.ignore_day_note_events, general_node); utl_xml_put_int ("run_counter", config.run_counter, general_node); utl_xml_put_int ("lastrun_date", config.lastrun_date, general_node); utl_xml_put_int ("lastrun_time", config.lastrun_time, general_node); utl_xml_put_int ("hide_calendar", config.hide_calendar, general_node); utl_xml_put_int ("hide_tasks", config.hide_tasks, general_node); utl_xml_put_int ("hide_contacts", config.hide_contacts, general_node); utl_xml_put_int ("hide_notes", config.hide_notes, general_node); utl_xml_put_int ("override_locale_settings", config.override_locale_settings, general_node); utl_xml_put_int ("gui_layout", config.gui_layout, general_node); utl_xml_put_int ("sound_alarm_repeat", config.sound_alarm_repeat, general_node); utl_xml_put_strn ("spell_lang", config.spell_lang, MAXNAME, general_node, doc); utl_xml_put_strn ("web_browser", config.web_browser, MAXHELPERCMD, general_node, doc); utl_xml_put_strn ("email_client", config.email_client, MAXHELPERCMD, general_node, doc); utl_xml_put_strn ("sound_player", config.sound_player, MAXHELPERCMD, general_node, doc); /*---------------------------------------------------------------------------------------*/ /* calendar */ calendar_node = xmlNewNode (NULL, (const xmlChar *) "calendar"); xmlAddChild (node, calendar_node); utl_xml_put_int ("fy_window_size_x", config.fy_window_size_x, calendar_node); utl_xml_put_int ("fy_window_size_y", config.fy_window_size_y, calendar_node); utl_xml_put_int ("fy_simple_view", config.fy_simple_view, calendar_node); utl_xml_put_int ("fy_alternative_view", config.fy_alternative_view, calendar_node); utl_xml_put_int ("cb_window_size_x", config.cb_window_size_x, calendar_node); utl_xml_put_int ("cb_window_size_y", config.cb_window_size_y, calendar_node); utl_xml_put_int ("ib_window_size_x", config.ib_window_size_x, calendar_node); utl_xml_put_int ("ib_window_size_y", config.ib_window_size_y, calendar_node); utl_xml_put_int ("display_options", config.display_options, calendar_node); utl_xml_put_int ("day_notes_visible", config.day_notes_visible, calendar_node); utl_xml_put_int ("timeline_start", config.timeline_start, calendar_node); utl_xml_put_int ("timeline_end", config.timeline_end, calendar_node); utl_xml_put_int ("timeline_step", config.timeline_step, calendar_node); utl_xml_put_int ("di_show_current_time", config.di_show_current_time, calendar_node); utl_xml_put_int ("di_show_current_time_seconds", config.di_show_current_time_seconds, calendar_node); utl_xml_put_int ("di_show_day_number", config.di_show_day_number, calendar_node); utl_xml_put_int ("di_show_current_day_distance", config.di_show_current_day_distance, calendar_node); utl_xml_put_int ("di_show_marked_days", config.di_show_marked_days, calendar_node); utl_xml_put_int ("di_show_week_number", config.di_show_week_number, calendar_node); utl_xml_put_int ("di_show_weekend_days", config.di_show_weekend_days, calendar_node); utl_xml_put_int ("di_show_day_category", config.di_show_day_category, calendar_node); utl_xml_put_int ("di_show_moon_phase", config.di_show_moon_phase, calendar_node); utl_xml_put_int ("di_show_notes", config.di_show_notes, calendar_node); utl_xml_put_int ("di_show_zodiac_sign", config.di_show_zodiac_sign, calendar_node); utl_xml_put_int ("cursor_type", config.cursor_type, calendar_node); utl_xml_put_int ("frame_cursor_thickness", config.frame_cursor_thickness, calendar_node); utl_xml_put_int ("enable_auxilary_calendars", config.enable_auxilary_calendars, calendar_node); utl_xml_put_int ("enable_day_mark", config.enable_day_mark, calendar_node); utl_xml_put_int ("strikethrough_past_notes", config.strikethrough_past_notes, calendar_node); utl_xml_put_int ("ascending_sorting_in_day_notes_browser", config.ascending_sorting_in_day_notes_browser, calendar_node); utl_xml_put_int ("auxilary_calendars_state", config.auxilary_calendars_state, calendar_node); utl_xml_put_int ("day_note_spell_checker", config.day_note_spell_checker, calendar_node); utl_xml_put_strn ("day_note_marker", config.day_note_marker, MAXNAME, calendar_node, doc); utl_xml_put_strn ("date_header_format", config.date_header_format, MAXNAME, calendar_node, doc); utl_xml_put_int ("event_marker_type", config.event_marker_type, calendar_node); utl_xml_put_int ("today_marker_type", config.today_marker_type, calendar_node); utl_xml_put_int ("day_notes_browser_filter", config.day_notes_browser_filter, calendar_node); utl_xml_put_int ("ical_export_pane_pos", config.ical_export_pane_pos, calendar_node); utl_xml_put_strn ("header_color", config.header_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_strn ("weekend_color", config.weekend_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_strn ("selection_color", config.selection_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_strn ("mark_color", config.mark_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_strn ("mark_current_day_color", config.mark_current_day_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_int ("mark_current_day_alpha", config.mark_current_day_alpha, calendar_node); utl_xml_put_strn ("birthday_mark_color", config.birthday_mark_color, MAXCOLORNAME, calendar_node, doc); utl_xml_put_int ("selector_alpha", config.selector_alpha, calendar_node); utl_xml_put_strn ("day_name_font", config.day_name_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("calendar_font", config.calendar_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("notes_font", config.notes_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("cal_print_month_name_font", config.cal_print_month_name_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("cal_print_day_name_font", config.cal_print_day_name_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("cal_print_day_num_font", config.cal_print_day_num_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_strn ("cal_print_event_font", config.cal_print_event_font, MAXFONTNAME, calendar_node, doc); utl_xml_put_int ("cal_print_event_length", config.cal_print_event_length, calendar_node); utl_xml_put_int ("cal_print_padding", config.cal_print_padding, calendar_node); utl_xml_put_int ("cal_print_page_orientation", config.cal_print_page_orientation, calendar_node); utl_xml_put_int ("cal_print_tasks", config.cal_print_tasks, calendar_node); utl_xml_put_int ("cal_print_birthdays", config.cal_print_birthdays, calendar_node); utl_xml_put_int ("cal_print_namedays", config.cal_print_namedays, calendar_node); utl_xml_put_int ("cal_print_day_notes", config.cal_print_day_notes, calendar_node); utl_xml_put_int ("cal_print_ical", config.cal_print_ical, calendar_node); /*---------------------------------------------------------------------------------------*/ /* tasks */ tasks_node = xmlNewNode (NULL, (const xmlChar *) "tasks"); xmlAddChild (node, tasks_node); utl_xml_put_int ("high_priority_in_bold", config.tasks_high_in_bold, tasks_node); utl_xml_put_int ("hide_completed", config.hide_completed, tasks_node); utl_xml_put_int ("delete_completed", config.delete_completed, tasks_node); utl_xml_put_int ("add_edit", config.add_edit, tasks_node); utl_xml_put_int ("remember_category", config.remember_category_in_tasks, tasks_node); utl_xml_put_int ("current_category", config.current_category_in_tasks, tasks_node); utl_xml_put_int ("pane_pos", config.tasks_pane_pos, tasks_node); utl_xml_put_int ("tasks_sorting_order", config.tasks_sorting_order, tasks_node); utl_xml_put_int ("tasks_sorting_column", config.tasks_sorting_column, tasks_node); utl_xml_put_int ("visible_due_date_column", config.tsk_visible_due_date_column, tasks_node); utl_xml_put_int ("visible_type_column", config.tsk_visible_type_column, tasks_node); utl_xml_put_int ("visible_priority_column", config.tsk_visible_priority_column, tasks_node); utl_xml_put_int ("visible_category_column", config.tsk_visible_category_column, tasks_node); utl_xml_put_int ("tasks_addedit_win_x", config.tasks_addedit_win_x, tasks_node); utl_xml_put_int ("tasks_addedit_win_y", config.tasks_addedit_win_y, tasks_node); utl_xml_put_int ("tasks_addedit_win_w", config.tasks_addedit_win_w, tasks_node); utl_xml_put_int ("tasks_addedit_win_h", config.tasks_addedit_win_h, tasks_node); utl_xml_put_int ("postpone_time", config.postpone_time, tasks_node); utl_xml_put_int ("column_idx_0", config.tasks_column_idx_0, tasks_node); utl_xml_put_int ("column_idx_0_width", config.tasks_column_idx_0_width, tasks_node); utl_xml_put_int ("column_idx_1", config.tasks_column_idx_1, tasks_node); utl_xml_put_int ("column_idx_1_width", config.tasks_column_idx_1_width, tasks_node); utl_xml_put_int ("column_idx_2", config.tasks_column_idx_2, tasks_node); utl_xml_put_int ("column_idx_2_width", config.tasks_column_idx_2_width, tasks_node); utl_xml_put_int ("column_idx_3", config.tasks_column_idx_3, tasks_node); utl_xml_put_int ("column_idx_3_width", config.tasks_column_idx_3_width, tasks_node); utl_xml_put_int ("column_idx_4", config.tasks_column_idx_4, tasks_node); utl_xml_put_int ("column_idx_4_width", config.tasks_column_idx_4_width, tasks_node); utl_xml_put_int ("column_idx_5", config.tasks_column_idx_5, tasks_node); utl_xml_put_int ("column_idx_5_width", config.tasks_column_idx_5_width, tasks_node); utl_xml_put_strn ("due_today_color", config.due_today_color, MAXCOLORNAME, tasks_node, doc); utl_xml_put_strn ("due_7days_color", config.due_7days_color, MAXCOLORNAME, tasks_node, doc); utl_xml_put_strn ("past_due_color", config.past_due_color, MAXCOLORNAME, tasks_node, doc); utl_xml_put_strn ("task_info_font", config.task_info_font, MAXFONTNAME, tasks_node, doc); utl_xml_put_strn ("global_notification_command", config.global_notification_command, MAXHELPERCMD, tasks_node, doc); /*---------------------------------------------------------------------------------------*/ /* contacts */ contacts_node = xmlNewNode (NULL, (const xmlChar *) "contacts"); xmlAddChild (node, contacts_node); utl_xml_put_int ("find_mode", config.find_mode, contacts_node); utl_xml_put_int ("hide_group_column", config.hide_group_column, contacts_node); utl_xml_put_int ("maps_provider", config.maps_provider, contacts_node); utl_xml_put_int ("pane_pos", config.contacts_pane_pos, contacts_node); utl_xml_put_int ("photo_width", config.photo_width, contacts_node); utl_xml_put_int ("visible_age_column", config.cnt_visible_age_column, contacts_node); utl_xml_put_int ("visible_birthday_date_column", config.cnt_visible_birthday_date_column, contacts_node); utl_xml_put_int ("visible_zodiac_sign_column", config.cnt_visible_zodiac_sign_column, contacts_node); utl_xml_put_strn ("contact_tag_color", config.contact_tag_color, MAXCOLORNAME, contacts_node, doc); utl_xml_put_strn ("contact_link_color", config.contact_link_color, MAXCOLORNAME, contacts_node, doc); utl_xml_put_int ("contact_name_font_size", config.contact_name_font_size, contacts_node); utl_xml_put_int ("contact_item_font_size", config.contact_item_font_size, contacts_node); utl_xml_put_int ("export_format", config.export_format, contacts_node); utl_xml_put_strn ("export_fields", config.export_fields, MAXCONTACTFIELDS, contacts_node, doc); utl_xml_put_int ("contacts_sorting_order", config.contacts_sorting_order, contacts_node); utl_xml_put_int ("contacts_sorting_column", config.contacts_sorting_column, contacts_node); utl_xml_put_int ("contacts_addedit_win_x", config.contacts_addedit_win_x, contacts_node); utl_xml_put_int ("contacts_addedit_win_y", config.contacts_addedit_win_y, contacts_node); utl_xml_put_int ("contacts_addedit_win_w", config.contacts_addedit_win_w, contacts_node); utl_xml_put_int ("contacts_addedit_win_h", config.contacts_addedit_win_h, contacts_node); utl_xml_put_int ("contacts_export_win_x", config.contacts_export_win_x, contacts_node); utl_xml_put_int ("contacts_export_win_y", config.contacts_export_win_y, contacts_node); utl_xml_put_int ("contacts_export_win_w", config.contacts_export_win_w, contacts_node); utl_xml_put_int ("contacts_export_win_h", config.contacts_export_win_h, contacts_node); utl_xml_put_int ("contacts_import_sel_win_x", config.contacts_import_sel_win_x, contacts_node); utl_xml_put_int ("contacts_import_sel_win_y", config.contacts_import_sel_win_y, contacts_node); utl_xml_put_int ("contacts_import_win_x", config.contacts_import_win_x, contacts_node); utl_xml_put_int ("contacts_import_win_y", config.contacts_import_win_y, contacts_node); utl_xml_put_int ("contacts_import_win_w", config.contacts_import_win_w, contacts_node); utl_xml_put_int ("contacts_import_win_h", config.contacts_import_win_h, contacts_node); utl_xml_put_int ("contacts_birthdays_win_w", config.contacts_birthdays_win_w, contacts_node); utl_xml_put_int ("contacts_birthdays_win_h", config.contacts_birthdays_win_h, contacts_node); utl_xml_put_int ("column_idx_0", config.contacts_column_idx_0, contacts_node); utl_xml_put_int ("column_idx_0_width", config.contacts_column_idx_0_width, contacts_node); utl_xml_put_int ("column_idx_1", config.contacts_column_idx_1, contacts_node); utl_xml_put_int ("column_idx_1_width", config.contacts_column_idx_1_width, contacts_node); utl_xml_put_int ("column_idx_2", config.contacts_column_idx_2, contacts_node); utl_xml_put_int ("column_idx_2_width", config.contacts_column_idx_2_width, contacts_node); utl_xml_put_int ("import_type", config.import_type, contacts_node); utl_xml_put_int ("import_interface_type", config.import_interface_type, contacts_node); utl_xml_put_int ("import_bluetooth_channel", config.import_bluetooth_channel, contacts_node); utl_xml_put_int ("import_usb_interface", config.import_usb_interface, contacts_node); utl_xml_put_int ("import_binary_xml", config.import_binary_xml, contacts_node); utl_xml_put_strn ("import_bluetooth_address", config.import_bluetooth_address, MAXADDRESS, contacts_node, doc); /*---------------------------------------------------------------------------------------*/ /* notes */ notes_node = xmlNewNode (NULL, (const xmlChar *) "notes"); xmlAddChild (node, notes_node); utl_xml_put_int ("enc_algorithm", config.notes_enc_algorithm, notes_node); utl_xml_put_int ("enc_hashing", config.notes_enc_hashing, notes_node); utl_xml_put_int ("comp_algorithm", config.notes_comp_algorithm, notes_node); utl_xml_put_int ("comp_ratio", config.notes_comp_ratio, notes_node); utl_xml_put_int ("sorting_order", config.notes_sorting_order, notes_node); utl_xml_put_int ("sorting_column", config.notes_sorting_column, notes_node); utl_xml_put_int ("visible_type_column", config.nte_visible_type_column, notes_node); utl_xml_put_int ("visible_category_column", config.nte_visible_category_column, notes_node); utl_xml_put_int ("visible_last_changes_column", config.nte_visible_last_changes_column, notes_node); utl_xml_put_int ("visible_created_column", config.nte_visible_created_column, notes_node); utl_xml_put_int ("column_idx_0", config.notes_column_idx_0, notes_node); utl_xml_put_int ("column_idx_0_width", config.notes_column_idx_0_width, notes_node); utl_xml_put_int ("column_idx_1", config.notes_column_idx_1, notes_node); utl_xml_put_int ("column_idx_1_width", config.notes_column_idx_1_width, notes_node); utl_xml_put_int ("column_idx_2", config.notes_column_idx_2, notes_node); utl_xml_put_int ("column_idx_2_width", config.notes_column_idx_2_width, notes_node); utl_xml_put_int ("column_idx_3", config.notes_column_idx_3, notes_node); utl_xml_put_int ("column_idx_3_width", config.notes_column_idx_3_width, notes_node); utl_xml_put_int ("column_idx_4", config.notes_column_idx_4, notes_node); utl_xml_put_int ("column_idx_4_width", config.notes_column_idx_4_width, notes_node); utl_xml_put_int ("remember_category", config.remember_category_in_notes, notes_node); utl_xml_put_int ("current_category", config.current_category_in_notes, notes_node); utl_xml_put_int ("use_system_date", config.use_system_date_in_notes, notes_node); utl_xml_put_char ("text_separator", config.text_separator, notes_node, doc); utl_xml_put_strn ("editor_font", config.notes_editor_font, MAXFONTNAME, notes_node, doc); /*---------------------------------------------------------------------------------------*/ xmlSaveFormatFile (prefs_get_config_filename (CONFIG_FILENAME, appGUI), doc, 1); xmlFreeDoc (doc); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/tasks_items.h000664 001750 001750 00000002325 12561325524 016022 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_ITEMS_H #define _TASKS_ITEMS_H #include "gui.h" #include "tasks.h" void read_tasks_entries (GUI *appGUI); void write_tasks_entries (GUI *appGUI); void tasks_remove_dialog_show (GUI *appGUI); void tasks_add_edit_dialog_show (gboolean tasks_edit_mode, guint32 julian_date, gint time, GUI *appGUI); #endif /* _TASKS_ITEMS_H */ osmo-0.2.14/src/calendar.c000664 001750 001750 00000333641 12561325524 015250 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "about.h" #include "calendar.h" #include "backup.h" #include "i18n.h" #include "calendar_print.h" #include "calendar_widget.h" #include "calendar_jumpto.h" #include "calendar_fullyear.h" #include "tasks.h" #include "tasks_items.h" #include "contacts.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "options_prefs.h" #include "tasks_utils.h" #include "calendar_notes.h" #include "calendar_timeline.h" #include "calendar_calc.h" #include "calendar_ical.h" #include "check_events.h" #include "calendar_moon.h" #include "stock_icons.h" #include "preferences_gui.h" #ifdef HAVE_GTKSPELL #include #endif /* HAVE_GTKSPELL */ /*------------------------------------------------------------------------------*/ static void show_about_window_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *window = opt_create_about_window (appGUI); gtk_widget_show (window); } /*------------------------------------------------------------------------------*/ static void show_preferences_window_cb (GtkWidget *widget, GUI *appGUI) { appGUI->opt->window = opt_create_preferences_window (appGUI); gtk_widget_show (appGUI->opt->window); gint page = gtk_notebook_page_num (GTK_NOTEBOOK (appGUI->opt->notebook), appGUI->opt->calendar); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->opt->notebook), page); } /*------------------------------------------------------------------------------*/ static const guint8 * cal_get_moon_icon (gint moon_phase) { const guint8 *icons_table[] = { moon_phase_0, moon_phase_1, moon_phase_2, moon_phase_3, moon_phase_4, moon_phase_5, moon_phase_6, moon_phase_7 }; return icons_table[moon_phase]; } #ifndef HAVE_LIBWEBKIT static void cal_set_moon_icon (gint moon_phase, GUI *appGUI) { GdkPixbuf *icon; gchar tmpbuf[BUFFER_SIZE]; icon = gdk_pixbuf_new_from_inline (-1, cal_get_moon_icon(moon_phase), FALSE, NULL); gtk_image_set_from_pixbuf (GTK_IMAGE (appGUI->cal->moon_icon), icon); g_object_unref (icon); g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)", utl_get_moon_phase_name (moon_phase)); gtk_label_set_text (GTK_LABEL (appGUI->cal->moon_phase_label), tmpbuf); } #endif /* HAVE_LIBWEBKIT */ /*------------------------------------------------------------------------------*/ static void cal_mark_days_with_notes (GDate *date, GUI *appGUI) { GDate *tmpdate; gint i, days; tmpdate = g_date_new_dmy (1, g_date_get_month (date), g_date_get_year (date)); g_return_if_fail (tmpdate != NULL); if (appGUI->calendar_only == TRUE) return; gui_calendar_clear_marks (GUI_CALENDAR (appGUI->cal->calendar), DAY_NOTE_MARK); gui_calendar_clear_marks (GUI_CALENDAR (appGUI->cal->calendar), EVENT_MARK); gui_calendar_clear_marks (GUI_CALENDAR (appGUI->cal->calendar), BIRTHDAY_MARK); if (config.enable_day_mark == FALSE) return; days = utl_date_get_days_in_month (tmpdate); for (i = 1; i <= days; i++) { g_date_set_day (tmpdate, i); if (cal_check_note (g_date_get_julian (tmpdate), appGUI) == TRUE) { gui_calendar_set_day_color (GUI_CALENDAR (appGUI->cal->calendar), i, cal_get_note_color (g_date_get_julian (tmpdate), appGUI)); } calendar_mark_events (appGUI->cal->calendar, g_date_get_julian (tmpdate), i, appGUI); } g_date_free (tmpdate); } /*------------------------------------------------------------------------------*/ void cal_refresh_marks (GUI *appGUI) { cal_mark_days_with_notes (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ gint cal_get_marked_days (GDate *date, GUI *appGUI) { guint32 julian; gint i, n, days; julian = utl_date_dmy_to_julian (1, g_date_get_month (date), g_date_get_year (date)); days = utl_date_get_days_in_month (date); n = 0; for (i = 0; i < days; i++) if (cal_check_note (julian + i, appGUI) == TRUE) n++; return n; } /*------------------------------------------------------------------------------*/ gint get_marked_days (guint month, guint year, GUI *appGUI) { guint32 julian; gint i, n, days; n = 0; days = g_date_get_days_in_month (month + 1, year); julian = utl_date_dmy_to_julian (1, month + 1, year); for (i = 0; i < days; i++) if (cal_check_note (julian + i, appGUI) == TRUE) n++; return n; } /*------------------------------------------------------------------------------*/ void cal_update_note (GDate *date, gchar *color, GUI *appGUI) { GtkTextBuffer *textbuffer; gchar *text; textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); text = utl_gui_text_buffer_get_text_with_tags (GTK_TEXT_BUFFER (textbuffer)); if (text != NULL) { if (g_utf8_strlen (text, -1)) { cal_refresh_marks (appGUI); update_aux_calendars (appGUI); cal_add_note (g_date_get_julian (date), color, text, appGUI); } else { cal_remove_note (g_date_get_julian (date), appGUI); } g_free (text); } cal_set_day_info (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_update_note (guint uday, guint umonth, guint uyear, gchar *color, GUI *appGUI) { GtkTextBuffer *textbuffer; gchar *text; GDate *date; date = g_date_new_dmy (uday, umonth + 1, uyear); textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); text = utl_gui_text_buffer_get_text_with_tags (GTK_TEXT_BUFFER (textbuffer)); if (text != NULL) { if (g_utf8_strlen (text, -1)) { cal_refresh_marks (appGUI); update_aux_calendars (appGUI); cal_add_note (g_date_get_julian (date), color, text, appGUI); } else { cal_remove_note (g_date_get_julian (date), appGUI); } g_free (text); } cal_set_day_info (appGUI); g_date_free (date); } /*------------------------------------------------------------------------------*/ void cal_mark_events (GtkWidget *calendar, GDate *date, GUI *appGUI) { guint month, year; guint i, days; GDate *tmpdate; if (appGUI->calendar_only == TRUE) return; tmpdate = g_date_new_julian (g_date_get_julian (date)); month = g_date_get_month (tmpdate) - 1; year = g_date_get_year (tmpdate); gui_calendar_select_day (GUI_CALENDAR (calendar), 1); gui_calendar_select_month (GUI_CALENDAR (calendar), month, year); gui_calendar_clear_marks (GUI_CALENDAR (calendar), DAY_NOTE_MARK); gui_calendar_clear_marks (GUI_CALENDAR (calendar), EVENT_MARK); gui_calendar_clear_marks (GUI_CALENDAR (calendar), BIRTHDAY_MARK); if (config.enable_day_mark == FALSE) return; days = utl_date_get_days_in_month (tmpdate); for (i = 1; i <= days; i++) { g_date_set_day (tmpdate, i); if (cal_check_note (g_date_get_julian (tmpdate), appGUI) == TRUE) { gui_calendar_set_day_color (GUI_CALENDAR (calendar), i, cal_get_note_color (g_date_get_julian (tmpdate), appGUI)); } calendar_mark_events (calendar, g_date_get_julian (tmpdate), i, appGUI); } g_date_free (tmpdate); } /*------------------------------------------------------------------------------*/ void mark_events (GtkWidget *calendar, guint month, guint year, GUI *appGUI) { guint32 julian; guint i, days; if (appGUI->calendar_only == TRUE) return; gui_calendar_select_month (GUI_CALENDAR (calendar), month, year); gui_calendar_select_day (GUI_CALENDAR (calendar), 1); gui_calendar_clear_marks (GUI_CALENDAR (calendar), DAY_NOTE_MARK); gui_calendar_clear_marks (GUI_CALENDAR (calendar), EVENT_MARK); gui_calendar_clear_marks (GUI_CALENDAR (calendar), BIRTHDAY_MARK); if (config.enable_day_mark == FALSE) return; days = g_date_get_days_in_month (month + 1, year); for (i = 1; i <= days; i++) { julian = utl_date_dmy_to_julian (i, month + 1, year); if (cal_check_note (julian, appGUI) == TRUE) { gui_calendar_set_day_color (GUI_CALENDAR (calendar), i, cal_get_note_color (julian, appGUI)); } calendar_mark_events (calendar, julian, i, appGUI); } } /*------------------------------------------------------------------------------*/ void update_aux_calendars (GUI *appGUI) { gchar buffer[BUFFER_SIZE]; GDate *tmpdate; if (appGUI->calendar_only == TRUE) return; if (!config.gui_layout) { if (appGUI->calendar_only == TRUE || config.enable_auxilary_calendars == FALSE || config.auxilary_calendars_state == FALSE) return; } tmpdate = g_date_new (); g_return_if_fail (tmpdate != NULL); g_date_set_julian (tmpdate, g_date_get_julian (appGUI->cal->date)); g_date_subtract_months (tmpdate, 1); g_date_strftime (buffer, BUFFER_SIZE, "%B %Y", tmpdate); gtk_label_set_text (GTK_LABEL (appGUI->cal->prev_month_label), buffer); cal_mark_events (appGUI->cal->calendar_prev, tmpdate, appGUI); g_date_set_julian (tmpdate, g_date_get_julian (appGUI->cal->date)); g_date_add_months (tmpdate, 1); g_date_strftime (buffer, BUFFER_SIZE, "%B %Y", tmpdate); gtk_label_set_text (GTK_LABEL (appGUI->cal->next_month_label), buffer); cal_mark_events (appGUI->cal->calendar_next, tmpdate, appGUI); g_date_free (tmpdate); } /*------------------------------------------------------------------------------*/ #ifdef TASKS_ENABLED gint check_add_tasks (GDate *date, gboolean count, gchar **html, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; GtkTreeModel *model; guint32 julian, sjulian; gboolean done; gint time; gchar *summary, *category; gchar tmpbuf[BUFFER_SIZE]; gint i; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_val_if_fail (model != NULL, 0); path = gtk_tree_path_new_first (); sjulian = g_date_get_julian (date); i = 0; while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &julian, TA_COLUMN_CATEGORY, &category, -1); if (julian == sjulian && tsk_get_category_state (category, STATE_CALENDAR, appGUI) == TRUE) { if (count == FALSE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_TIME, &time, TA_COLUMN_DONE, &done, TA_COLUMN_SUMMARY, &summary, -1); if (time >= 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d. [%02d:%02d] %s", i + 1, time / 3600, time / 60 % 60, summary); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%d. %s", i + 1, summary); } if (html != NULL) { if (done == TRUE) { *(html) = utl_strconcat (*(html), "", tmpbuf, "
", NULL); } else { *(html) = utl_strconcat (*(html), tmpbuf, "
", NULL); } } else { if (done == TRUE) { gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "strike", NULL); } else { gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1); } gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n", -1); } g_free (summary); } i++; } g_free (category); gtk_tree_path_next (path); } gtk_tree_path_free (path); return i; } #endif /* TASKS_ENABLED */ /*------------------------------------------------------------------------------*/ #ifdef CONTACTS_ENABLED gint check_add_contacts (GDate *sdate, gboolean count, gchar **html, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; GtkTreeModel *model; guint32 julian; gchar *first_name, *last_name; gchar tmpbuf[BUFFER_SIZE], buffer[BUFFER_SIZE]; GDate *date; gint i, age, syear; model = GTK_TREE_MODEL (appGUI->cnt->contacts_list_store); g_return_val_if_fail (model != NULL, 0); date = g_date_new (); g_return_val_if_fail (date != NULL, 0); syear = g_date_get_year (sdate); path = gtk_tree_path_new_first (); i = 0; while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, COLUMN_BIRTH_DAY_DATE, &julian, -1); if (g_date_valid_julian (julian)) { g_date_set_julian (date, julian); age = syear - g_date_get_year (date); if (age >= 0) { if (g_date_valid_dmy (g_date_get_day (date), g_date_get_month (date), syear) == FALSE) { g_date_subtract_days (date, 1); } g_date_set_year (date, syear); if (g_date_compare (date, sdate) == 0) { if (count == FALSE) { gtk_tree_model_get (model, &iter, COLUMN_FIRST_NAME, &first_name, COLUMN_LAST_NAME, &last_name, -1); utl_name_strcat (first_name, last_name, buffer); if (age == 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s %s\n", buffer, _("was born")); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%s (%d %s)\n", buffer, age, ngettext ("year old", "years old", age)); } if (html != NULL) { *(html) = utl_strconcat (*(html), tmpbuf, NULL); } else { gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1); } } i++; } } } gtk_tree_path_next (path); } gtk_tree_path_free (path); g_date_free (date); return i; } #endif /* CONTACTS_ENABLED */ /*------------------------------------------------------------------------------*/ gchar * cal_get_day_category (GDate *date, GUI *appGUI) { GtkTreeIter iter; static gchar buffer[BUFFER_SIZE]; gchar *color_val, *color_name, *color_sel; gint i; i = 0; buffer[0] = '\0'; color_sel = cal_get_note_color (g_date_get_julian (date), appGUI); if (color_sel == NULL) return buffer; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, 1, &color_val, 2, &color_name, -1); if (!strcmp (color_val, color_sel)) { g_snprintf (buffer, BUFFER_SIZE, "%s", color_name); g_free (color_val); g_free (color_name); break; } g_free (color_val); g_free (color_name); } return buffer; } /*------------------------------------------------------------------------------*/ void update_clock (GUI *appGUI) { #ifdef HAVE_LIBWEBKIT GDate *date; gboolean current_date; date = appGUI->cal->date; current_date = (g_date_get_julian (date) == utl_date_get_current_julian ()); if (current_date && config.di_show_current_time) { cal_set_day_info (appGUI); } #else gchar *tstr, *text; tstr = utl_time_print_default (utl_time_get_current_seconds (), config.di_show_current_time_seconds); text = g_strdup_printf ("%s", tstr); if (appGUI->cal->time_label) { gtk_label_set_markup (GTK_LABEL (appGUI->cal->time_label), text); } g_free (tstr); g_free (text); #endif /* HAVE_LIBWEBKIT */ } /*------------------------------------------------------------------------------*/ void cal_set_day_info (GUI *appGUI) { static guint cmonth = 0; gchar tmpbuf[BUFFER_SIZE]; GDate *date; guint dday, dmonth, dyear; gboolean current_date; gint edays, i; gchar *text; date = appGUI->cal->date; dday = g_date_get_day (date); dmonth = g_date_get_month (date) - 1; dyear = g_date_get_year (date); current_date = (g_date_get_julian (date) == utl_date_get_current_julian ()); #ifdef HAVE_LIBWEBKIT gchar *output = g_strdup (""); gchar *icon; guint8 *moon_icon; GdkColor *color; moon_icon = (guint8 *) cal_get_moon_icon (utl_calc_moon_phase (date)); icon = utl_inline_image_to_html (moon_icon); color = &appGUI->main_window->style->bg[GTK_STATE_NORMAL]; g_snprintf (tmpbuf, BUFFER_SIZE, "%02X%02X%02X", color->red * 256 / 65536, color->green * 256 / 65536, color->blue * 256 / 65536); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); output = utl_strconcat (output, "", NULL); /* body */ output = utl_strconcat (output, "", NULL); if (current_date && config.di_show_current_time) { gchar *tstr = utl_time_print_default (utl_time_get_current_seconds (), config.di_show_current_time_seconds); g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); g_free (tstr); } output = utl_strconcat (output, "", NULL); if (config.di_show_day_number) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_current_day_distance) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_week_number) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_marked_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_weekend_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_moon_phase) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "", NULL); if (config.di_show_zodiac_sign) { g_snprintf (tmpbuf, BUFFER_SIZE, "", NULL); } output = utl_strconcat (output, "
%s:", _("Current time")); output = utl_strconcat (output, tmpbuf, tstr, "
%s:", _("Day number")); output = utl_strconcat (output, tmpbuf, NULL); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", g_date_get_day_of_year (date)); output = utl_strconcat (output, tmpbuf, " ", NULL); edays = utl_get_days_per_year (g_date_get_year (date)) - g_date_get_day_of_year (date); if (edays) { g_snprintf (tmpbuf, BUFFER_SIZE, "(%d %s)", edays, ngettext ("day till end of year", "days till end of year", edays)); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)", _("the last day of the year")); } output = utl_strconcat (output, tmpbuf, "
%s:", _("Today distance")); output = utl_strconcat (output, tmpbuf, get_current_date_distance_str (g_date_get_julian (date)), "
%s:", _("Week number")); output = utl_strconcat (output, tmpbuf, NULL); if (utl_get_week_number (dyear, dmonth + 1, dday) > utl_weeks_in_year (dyear)) { g_snprintf (tmpbuf, BUFFER_SIZE, "1 / %d", utl_weeks_in_year (dyear+1)); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%d / %d", utl_get_week_number (dyear, dmonth+1, dday), utl_weeks_in_year (dyear)); } output = utl_strconcat (output, tmpbuf, "
%s:", _("Marked days")); output = utl_strconcat (output, tmpbuf, NULL); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", get_marked_days (g_date_get_month (date)-1, g_date_get_year (date), appGUI)); output = utl_strconcat (output, tmpbuf, "
%s:", _("Weekend days")); output = utl_strconcat (output, tmpbuf, NULL); g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_get_weekend_days_in_month (date)); output = utl_strconcat (output, tmpbuf, "
%s:", _("Moon phase")); output = utl_strconcat (output, tmpbuf, NULL); g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)", utl_get_moon_phase_name (utl_calc_moon_phase (date))); output = utl_strconcat (output, tmpbuf, "
%s:", _("Zodiac sign")); output = utl_strconcat (output, tmpbuf, utl_get_zodiac_name (g_date_get_day (date), g_date_get_month (date)), "
", NULL); if (config.di_show_notes && config.enable_day_mark) { text = cal_get_note (g_date_get_julian (date), appGUI); if (text != NULL) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Day notes")); output = utl_strconcat (output, "

", tmpbuf, "", NULL); gchar *txt = utl_text_with_tags_to_html (text); if (g_date_get_julian (date) < utl_date_get_current_julian () && config.strikethrough_past_notes == TRUE) { output = utl_strconcat (output, "", txt, "

", NULL); } else { output = utl_strconcat (output, txt, "

", NULL); } g_free (txt); } } if (appGUI->calendar_only != TRUE && appGUI->all_pages_added != FALSE && config.enable_day_mark) { #ifdef TASKS_ENABLED /* check tasks */ i = check_add_tasks (date, TRUE, NULL, appGUI); if (i) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Day tasks")); output = utl_strconcat (output, "

", tmpbuf, "", NULL); check_add_tasks (date, FALSE, &output, appGUI); output = utl_strconcat (output, "

", NULL); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* check contacts */ i = check_add_contacts (date, TRUE, NULL, appGUI); if (i) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Birthday")); output = utl_strconcat (output, "

", tmpbuf, "", NULL); check_add_contacts (date, FALSE, &output, appGUI); output = utl_strconcat (output, "

", NULL); } #endif /* CONTACTS_ENABLED */ } #ifdef HAVE_LIBICAL output = utl_strconcat (output, "

", NULL); calendar_display_ics (date, &output, appGUI); output = utl_strconcat (output, "

", NULL); #endif /* HAVE_LIBICAL */ output = utl_strconcat (output, "
", NULL); output = utl_strconcat (output, "", NULL); g_free (icon); g_object_set (appGUI->cal->webkit_settings, "default-font-size", PANGO_PIXELS(pango_font_description_get_size (appGUI->cal->fd_notes_font)), NULL); webkit_web_view_load_string (WEBKIT_WEB_VIEW (appGUI->cal->html_webkitview), output, "text/html", "UTF-8", "file://"); g_free (output); #else GtkTextChildAnchor *anchor = NULL; GtkWidget *table = NULL, *label; gint rows; gchar *stripped; gchar *day_category; day_category = cal_get_day_category (date, appGUI); utl_gui_clear_text_buffer (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter); rows = config.di_show_current_time + config.di_show_day_number + config.di_show_marked_days + config.di_show_week_number + config.di_show_weekend_days + config.di_show_moon_phase + config.di_show_zodiac_sign + config.di_show_current_day_distance + config.di_show_day_category; if (rows != 0) { anchor = gtk_text_buffer_create_child_anchor (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter); table = gtk_table_new (rows, 3, FALSE); gtk_widget_show (table); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 8); } i = 0; if (current_date && config.di_show_current_time) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Current time")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_day_number) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Day number")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_current_day_distance) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Today distance")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_week_number) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Week number")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_marked_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Marked days")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_weekend_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Weekend days")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_day_category && g_utf8_strlen (day_category, -1) && config.enable_day_mark) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Day category")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_moon_phase) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Moon phase")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); i++; } if (config.di_show_zodiac_sign) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Zodiac sign")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); } i = 0; appGUI->cal->time_label = gtk_label_new (NULL); if (current_date && config.di_show_current_time) { update_clock (appGUI); gtk_widget_show (appGUI->cal->time_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->time_label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->time_label), 0, 0.5); i++; } if (config.di_show_day_number) { appGUI->cal->day_number_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->day_number_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->day_number_label, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->day_number_label), 0, 0.5); appGUI->cal->day_number_year_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->day_number_year_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->day_number_year_label, 2, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->day_number_year_label), 0, 0.5); i++; } if (config.di_show_current_day_distance) { label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_label_set_text (GTK_LABEL (label), get_current_date_distance_str (g_date_get_julian (date))); i++; } if (config.di_show_week_number) { appGUI->cal->week_number_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->week_number_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->week_number_label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->week_number_label), 0, 0.5); i++; } if (config.di_show_marked_days) { appGUI->cal->marked_days_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->marked_days_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->marked_days_label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->marked_days_label), 0, 0.5); i++; } if (config.di_show_weekend_days) { appGUI->cal->weekend_days_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->weekend_days_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->weekend_days_label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->weekend_days_label), 0, 0.5); i++; } if (config.di_show_day_category && g_utf8_strlen (day_category, -1) && config.enable_day_mark) { appGUI->cal->day_category_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->day_category_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->day_category_label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->day_category_label), 0, 0.5); i++; } if (config.di_show_moon_phase) { appGUI->cal->moon_icon = gtk_image_new(); gtk_widget_show (appGUI->cal->moon_icon); gtk_table_attach (GTK_TABLE (table), appGUI->cal->moon_icon, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->moon_icon), 0, 0.5); appGUI->cal->moon_phase_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->moon_phase_label); gtk_table_attach (GTK_TABLE (table), appGUI->cal->moon_phase_label, 2, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (appGUI->cal->moon_phase_label), 0, 0.5); cal_set_moon_icon (utl_calc_moon_phase (date), appGUI); i++; } if (config.di_show_zodiac_sign) { label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_label_set_text (GTK_LABEL (label), utl_get_zodiac_name (g_date_get_day (date), g_date_get_month (date))); } if (config.di_show_day_number) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d", g_date_get_day_of_year (date)); gtk_label_set_text (GTK_LABEL (appGUI->cal->day_number_label), tmpbuf); edays = utl_get_days_per_year (g_date_get_year (date)) - g_date_get_day_of_year (date); if (edays) { g_snprintf (tmpbuf, BUFFER_SIZE, "(%d %s)", edays, ngettext ("day till end of year", "days till end of year", edays)); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)", _("the last day of the year")); } gtk_label_set_text (GTK_LABEL (appGUI->cal->day_number_year_label), tmpbuf); } if (config.di_show_week_number) { if (utl_get_week_number (dyear, dmonth + 1, dday) > utl_weeks_in_year (dyear)) { g_snprintf (tmpbuf, BUFFER_SIZE, "1 / %d", utl_weeks_in_year (dyear+1)); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%d / %d", utl_get_week_number (dyear, dmonth+1, dday), utl_weeks_in_year (dyear)); } gtk_label_set_text (GTK_LABEL (appGUI->cal->week_number_label), tmpbuf); } if (config.di_show_marked_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d", get_marked_days (g_date_get_month (date)-1, g_date_get_year (date), appGUI)); gtk_label_set_text (GTK_LABEL (appGUI->cal->marked_days_label), tmpbuf); } if (config.di_show_weekend_days) { g_snprintf (tmpbuf, BUFFER_SIZE, "%d", utl_get_weekend_days_in_month (date)); gtk_label_set_text (GTK_LABEL (appGUI->cal->weekend_days_label), tmpbuf); } if (config.di_show_day_category && g_utf8_strlen (day_category, -1) && config.enable_day_mark) { gtk_label_set_text (GTK_LABEL (appGUI->cal->day_category_label), day_category); } if (rows != 0) { gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), table, anchor); gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n\n", -1); } if (config.di_show_notes && config.enable_day_mark) { text = cal_get_note (g_date_get_julian (date), appGUI); if (text != NULL) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Day notes")); gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "bold", NULL); if (g_date_get_julian (date) < utl_date_get_current_julian () && config.strikethrough_past_notes == TRUE) { stripped = utl_gui_text_strip_tags (text); gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, stripped, -1, "strike", NULL); g_free (stripped); } else { utl_gui_text_buffer_set_text_with_tags (appGUI->cal->day_desc_text_buffer, text, FALSE); gtk_text_buffer_get_end_iter (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter); } if (text[g_utf8_strlen (text, -1) - 1] != '\n') { gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n\n", -1); } else { gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n", -1); } } } if (appGUI->calendar_only != TRUE && appGUI->all_pages_added != FALSE && config.enable_day_mark) { #ifdef TASKS_ENABLED /* check tasks */ i = check_add_tasks (date, TRUE, NULL, appGUI); if (i) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Day tasks")); gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "bold", NULL); check_add_tasks (date, FALSE, NULL, appGUI); gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n", -1); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* check contacts */ i = check_add_contacts (date, TRUE, appGUI); if (i) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", _("Birthday")); gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "bold", NULL); check_add_contacts (date, FALSE, appGUI); gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n", -1); } #endif /* CONTACTS_ENABLED */ } #ifdef HAVE_LIBICAL calendar_display_ics (date, NULL, appGUI); #endif /* HAVE_LIBICAL */ #endif /* HAVE_LIBWEBKIT */ if (cmonth != g_date_get_month (date)) { cmonth = g_date_get_month (date); update_aux_calendars (appGUI); } } /*------------------------------------------------------------------------------*/ void cal_set_note (GDate *date, GUI *appGUI) { GtkTextBuffer *textbuffer; GtkTextIter iter_start, iter_end; gchar *t; textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); t = cal_get_note (g_date_get_julian (date), appGUI); if (t != NULL) { utl_gui_text_buffer_set_text_with_tags (GTK_TEXT_BUFFER (textbuffer), t, TRUE); } else { gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (textbuffer), &iter_start); gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (textbuffer), &iter_end); gtk_text_buffer_delete (GTK_TEXT_BUFFER (textbuffer), &iter_start, &iter_end); } } /*------------------------------------------------------------------------------*/ void day_notes_toggled_cb (GtkToggleToolButton *togglebutton, gpointer user_data) { GUI *appGUI = (GUI *) user_data; #ifdef HAVE_GTKSPELL GtkSpell *edSpell = NULL; #endif /* HAVE_GTKSPELL */ config.day_notes_visible = gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (appGUI->cal->notes_button)); #ifdef HAVE_GTKSPELL edSpell = gtkspell_get_from_text_view (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); #endif /* HAVE_GTKSPELL */ if (!config.day_notes_visible) { /* disable spell checker */ #ifdef HAVE_GTKSPELL if (edSpell != NULL) { gtkspell_detach (edSpell); } #endif /* HAVE_GTKSPELL */ config.enable_day_mark = TRUE; cal_update_note (appGUI->cal->date, cal_get_note_color (g_date_get_julian (appGUI->cal->date), appGUI), appGUI); cal_mark_days_with_notes (appGUI->cal->date, appGUI); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), FALSE); gtk_widget_hide (appGUI->cal->notes_vbox); gtk_widget_show (appGUI->cal->day_info_vbox); gui_systray_tooltip_update (appGUI); update_aux_calendars (appGUI); if (config.save_data_after_modification) { cal_write_notes (appGUI); } } else { /* enable (optionally) spell checker */ #ifdef HAVE_GTKSPELL if (edSpell == NULL && config.day_note_spell_checker == TRUE) { edSpell = gtkspell_new_attach (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), NULL, NULL); if (config.override_locale_settings == TRUE) { gtkspell_set_language (edSpell, config.spell_lang, NULL); } else { gtkspell_set_language (edSpell, g_getenv("LANG"), NULL); } } #endif /* HAVE_GTKSPELL */ gtk_widget_show (appGUI->cal->notes_vbox); gtk_widget_hide (appGUI->cal->day_info_vbox); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), TRUE); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), TRUE); gtk_widget_grab_focus (GTK_WIDGET (appGUI->cal->calendar_note_textview)); } } /*------------------------------------------------------------------------------*/ void cal_set_date (GDate *date, GUI *appGUI) { g_date_set_julian (appGUI->cal->date, g_date_get_julian (date)); gui_calendar_select_day (GUI_CALENDAR (appGUI->cal->calendar), 1); /* Trick: always select valid day number */ gui_calendar_select_month (GUI_CALENDAR (appGUI->cal->calendar), g_date_get_month (date) - 1, g_date_get_year (date)); gui_calendar_select_day (GUI_CALENDAR (appGUI->cal->calendar), g_date_get_day (date)); gtk_label_set_text (GTK_LABEL (appGUI->cal->date_label), utl_get_date_name_format (date, config.date_header_format)); } /*------------------------------------------------------------------------------*/ void cal_jump_to_date (GDate *date, GUI *appGUI) { appGUI->cal->dont_update = TRUE; cal_set_date (date, appGUI); if (appGUI->calendar_only == FALSE) { cal_mark_days_with_notes (date, appGUI); cal_set_note (date, appGUI); cal_set_day_info (appGUI); enable_disable_note_buttons (appGUI); } appGUI->cal->dont_update = FALSE; } /*------------------------------------------------------------------------------*/ void calendar_set_today (GUI *appGUI) { g_date_set_time_t (appGUI->cal->date, time (NULL)); cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_close_text_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_widget_hide (appGUI->cal->notes_vbox); gtk_widget_show (appGUI->cal->day_info_vbox); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (appGUI->cal->notes_button), FALSE); gtk_widget_grab_focus (GTK_WIDGET (appGUI->cal->calendar)); } /*------------------------------------------------------------------------------*/ gchar * calendar_get_note_text (GUI *appGUI) { GtkTextBuffer *textbuffer; if (appGUI->calendar_only == TRUE) return NULL; textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); return utl_gui_text_buffer_get_text_with_tags (GTK_TEXT_BUFFER (textbuffer)); } /*------------------------------------------------------------------------------*/ void calendar_clear_text_cb (GtkWidget *widget, gpointer user_data) { gchar *text = NULL; gchar tmpbuf[BUFFER_SIZE]; gint response; GUI *appGUI = (GUI *) user_data; text = calendar_get_note_text (appGUI); if (text == NULL) return; if (!g_utf8_strlen (text, -1)) { g_free (text); return; } g_snprintf (tmpbuf, BUFFER_SIZE, "%s\n\n%s", _("Selected day note will be removed."), _("Continue?")); response = utl_gui_create_dialog (GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW (appGUI->main_window)); if (response == GTK_RESPONSE_YES) { gtk_text_buffer_set_text (GTK_TEXT_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview))), "", -1); enable_disable_note_buttons (appGUI); cal_update_note (appGUI->cal->date, NULL, appGUI); cal_mark_days_with_notes (appGUI->cal->date, appGUI); gui_systray_tooltip_update (appGUI); if (config.save_data_after_modification) { cal_write_notes (appGUI); } } g_free (text); } /*------------------------------------------------------------------------------*/ void calendar_insert_timeline_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; calendar_create_insert_timeline_window (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_select_color_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; calendar_create_color_selector_window (FALSE, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_update_date (guint day, guint month, guint year, GUI *appGUI) { guint max_day; GDate *date; max_day = g_date_get_days_in_month (month, year); if (day > max_day) day = max_day; date = g_date_new_dmy (day, month, year); g_return_if_fail (date != NULL); cal_jump_to_date (date, appGUI); g_date_free (date); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_day (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if (g_date_get_julian (appGUI->cal->date) <= 1) return; if ((g_date_get_day (appGUI->cal->date) > 1) || (config.display_options & GUI_CALENDAR_NO_MONTH_CHANGE) == FALSE) g_date_subtract_days (appGUI->cal->date, 1); cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_day (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if ((g_date_get_day (appGUI->cal->date) < utl_date_get_days_in_month (appGUI->cal->date) || (config.display_options & GUI_CALENDAR_NO_MONTH_CHANGE) == FALSE)) { g_date_add_days (appGUI->cal->date, 1); } cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_today (GUI *appGUI) { calendar_store_note (appGUI); calendar_set_today (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_week (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if (g_date_get_julian (appGUI->cal->date) <= 7) return; if ((g_date_get_day (appGUI->cal->date) > 7) || (config.display_options & GUI_CALENDAR_NO_MONTH_CHANGE) == FALSE) g_date_subtract_days (appGUI->cal->date, 7); cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_week (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if ((g_date_get_day (appGUI->cal->date) + 7 <= utl_date_get_days_in_month (appGUI->cal->date)) || (config.display_options & GUI_CALENDAR_NO_MONTH_CHANGE) == FALSE) { g_date_add_days (appGUI->cal->date, 7); } cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_month (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if (g_date_get_julian (appGUI->cal->date) <= 31) return; g_date_subtract_months (appGUI->cal->date, 1); cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_month (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); g_date_add_months (appGUI->cal->date, 1); cal_jump_to_date (appGUI->cal->date, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_year (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); if (g_date_get_year (appGUI->cal->date) == 1) return; g_date_subtract_years (appGUI->cal->date, 1); cal_jump_to_date (appGUI->cal->date, appGUI); update_aux_calendars (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_year (GUI *appGUI) { calendar_store_note (appGUI); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); g_date_add_years (appGUI->cal->date, 1); cal_jump_to_date (appGUI->cal->date, appGUI); update_aux_calendars (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_store_note (GUI *appGUI) { gchar *text = NULL; guint32 julian = g_date_get_julian (appGUI->cal->date); text = calendar_get_note_text (appGUI); if (config.day_notes_visible && g_utf8_strlen (text, -1)) cal_add_note (julian, cal_get_note_color (julian, appGUI), text, appGUI); g_free (text); } /*------------------------------------------------------------------------------*/ void calendar_day_selected_cb (GuiCalendar *calendar, GUI *appGUI) { GDate *prev_date = g_date_new_julian (g_date_get_julian (appGUI->cal->date)); if (appGUI->cal->dont_update == FALSE) gui_calendar_get_gdate (GUI_CALENDAR (calendar), appGUI->cal->date); gtk_label_set_text (GTK_LABEL (appGUI->cal->date_label), utl_get_date_name_format (appGUI->cal->date, config.date_header_format)); if (appGUI->cal->dont_update == FALSE) { if (appGUI->calendar_only == FALSE) { cal_update_note (prev_date, cal_get_note_color (g_date_get_julian (prev_date), appGUI), appGUI); cal_mark_days_with_notes (appGUI->cal->date, appGUI); cal_set_note (appGUI->cal->date, appGUI); cal_set_day_info (appGUI); enable_disable_note_buttons (appGUI); } } g_date_free (prev_date); if (appGUI->calendar_only == FALSE) { /* enable/disable 'select day color' popup entry */ if (cal_check_note (g_date_get_julian (appGUI->cal->date), appGUI) == TRUE) { gtk_widget_show (appGUI->cal->popup_menu_select_day_color_entry); } else { gtk_widget_hide (appGUI->cal->popup_menu_select_day_color_entry); } } } /*------------------------------------------------------------------------------*/ void calendar_dc_day_selected_cb (GuiCalendar *calendar, gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->calendar_only == FALSE) { if (!config.day_notes_visible) { enable_disable_note_buttons(appGUI); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), !gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button))); } } } /*------------------------------------------------------------------------------*/ void add_calendar_toolbar_widget (GtkUIManager *uim_widget, GtkWidget *widget, gpointer user_data) { GtkWidget *handle_box; GUI *appGUI = (GUI *)user_data; if (GTK_IS_TOOLBAR (widget)) { appGUI->cal->calendar_toolbar = GTK_TOOLBAR (widget); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->calendar_toolbar, GTK_CAN_FOCUS); handle_box = gtk_handle_box_new (); gtk_widget_show (handle_box); gtk_container_add (GTK_CONTAINER (handle_box), widget); gtk_box_pack_start (GTK_BOX(appGUI->cal->vbox), handle_box, FALSE, FALSE, 0); g_signal_connect_swapped (widget, "destroy", G_CALLBACK (gtk_widget_destroy), handle_box); } else { gtk_box_pack_start (GTK_BOX(appGUI->cal->vbox), widget, FALSE, FALSE, 0); } gtk_widget_show (widget); } /*------------------------------------------------------------------------------*/ void enable_disable_note_buttons (GUI *appGUI) { gboolean state = FALSE; gchar *text = calendar_get_note_text (appGUI); if (g_utf8_strlen (text, -1)) state = TRUE; gtk_widget_set_sensitive (appGUI->cal->n_clear_button, state); gtk_widget_set_sensitive (appGUI->cal->n_select_color_button, state); g_free (text); } /*------------------------------------------------------------------------------*/ gint calendar_textbuffer_changed_cb (GtkTextBuffer *textbuffer, gpointer user_data) { GUI *appGUI = (GUI *) user_data; enable_disable_note_buttons (appGUI); return FALSE; } /*------------------------------------------------------------------------------*/ gboolean click_handler_cb (GtkWidget * widget, GdkEventButton * event, gpointer data) { GUI *appGUI = (GUI *)data; if ((event->type == GDK_BUTTON_PRESS && event->button == 1) || /* LMB */ (event->type == GDK_BUTTON_PRESS && event->button == 3)) { /* RMB */ gtk_menu_popup(GTK_MENU(appGUI->cal->month_selector_menu), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } else if (event->type == GDK_BUTTON_PRESS && event->button == 2) { /* MMB */ calendar_update_date (g_date_get_day (appGUI->cal->date), utl_date_get_current_month (), g_date_get_year (appGUI->cal->date), appGUI); } return FALSE; } /*------------------------------------------------------------------------------*/ void calendar_create_jumpto_window_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; calendar_create_jumpto_window (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_create_fullyear_window_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_create_fullyear_window (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_create_datecalc_window_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_create_calc_window (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_year_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_prev_year (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_year_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_next_year (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_month_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_prev_month (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_month_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_next_month (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_prev_day_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_prev_day (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_next_day_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_next_day (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_btn_today_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_btn_today (appGUI); } /*------------------------------------------------------------------------------*/ void calendar_edit_note_cb (GtkToggleToolButton *toggle_tool_button, gpointer data) { GUI *appGUI = (GUI *)data; day_notes_toggled_cb (toggle_tool_button, appGUI); } /*------------------------------------------------------------------------------*/ void aux_cal_expander_cb (GObject *object, GParamSpec *param_spec, gpointer user_data) { GUI *appGUI = (GUI *)user_data; config.auxilary_calendars_state = gtk_expander_get_expanded (GTK_EXPANDER(appGUI->cal->aux_cal_expander)); update_aux_calendars (appGUI); } /*------------------------------------------------------------------------------*/ gboolean mouse_button_click_handler_cb (GtkWidget * widget, GdkEventButton * event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->type == GDK_BUTTON_PRESS && event->button == 3 && appGUI->calendar_only == FALSE) { /* RMB */ gtk_menu_popup(GTK_MENU(appGUI->cal->popup_menu), NULL, NULL, NULL, NULL, event->button, event->time); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ #ifdef TASKS_ENABLED void popup_add_task_entry_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *) user_data; GDate *date = g_date_new (); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), date); tasks_add_edit_dialog_show (FALSE, g_date_get_julian (date), utl_time_get_current_seconds (), appGUI); g_date_free (date); } #endif /* TASKS_ENABLED */ /*------------------------------------------------------------------------------*/ void popup_select_day_color_entry_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *) user_data; calendar_create_color_selector_window (TRUE, appGUI); } /*------------------------------------------------------------------------------*/ void popup_browse_notes_cb (gpointer user_data) { GUI *appGUI = (GUI *) user_data; cal_notes_browser (appGUI); } /*------------------------------------------------------------------------------*/ #ifdef PRINTING_SUPPORT void calendar_print_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; calendar_create_print_window (appGUI); } #endif /* PRINTING_SUPPORT */ /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBICAL void popup_ical_export_cb (gpointer user_data) { GUI *appGUI = (GUI *) user_data; ical_export (appGUI); } void popup_ical_browse_cb (gpointer user_data) { GUI *appGUI = (GUI *) user_data; ical_events_browser (appGUI); } #endif /* HAVE_LIBICAL */ /*------------------------------------------------------------------------------*/ void calendar_set_text_attribute_cb (GtkWidget *widget, gpointer user_data) { GtkTextBuffer *buffer; gchar *tagname; GUI *appGUI = (GUI *)user_data; tagname = (gchar*) g_object_get_data (G_OBJECT (widget), "tag"); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); utl_gui_text_buffer_toggle_tags (buffer, tagname); g_signal_emit_by_name(G_OBJECT(buffer), "changed"); } /*------------------------------------------------------------------------------*/ void date_selected_cb (GtkCalendar *calendar, gpointer user_data) { GUI *appGUI = (GUI *)user_data; GDate *date = g_date_new (); if (!config.gui_layout) { if (gtk_expander_get_expanded (GTK_EXPANDER(appGUI->cal->aux_cal_expander)) == FALSE) { g_date_free (date); return; } } gui_calendar_get_gdate (GUI_CALENDAR (calendar), date); cal_jump_to_date (date, appGUI); update_aux_calendars (appGUI); g_date_free (date); } /*------------------------------------------------------------------------------*/ #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) static void button_create_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_create (appGUI); } static void button_restore_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_restore (appGUI); } #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ void gui_create_calendar(GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *vbox3; GtkWidget *hbox1 = NULL; GtkWidget *hbox2; GtkWidget *hbox3; GtkWidget *eventbox; GtkWidget *hseparator; GtkWidget *alignment; GtkWidget *label; GtkWidget *frame; GtkWidget *vseparator; GError *error = NULL; GtkActionGroup *action_group = NULL; GtkWidget *note_scrolledwindow; #ifdef TASKS_ENABLED GtkWidget *popup_menu_add_task_entry; #endif /* TASKS_ENABLED */ GtkWidget *popup_menu_separator; GtkWidget *popup_menu_browse_notes; GtkTextBuffer *buffer; #ifdef HAVE_LIBICAL GtkWidget *popup_menu_ical_browse; GtkWidget *popup_menu_ical_export; #endif /* HAVE_LIBICAL */ gchar tmpbuf[BUFFER_SIZE]; const gchar *ui_info = " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" #ifdef PRINTING_SUPPORT " \n" #endif /* PRINTING_SUPPORT */ " \n" " \n" " \n" #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) " \n" " \n" " \n" " \n" #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ " \n" " \n" " \n" " \n"; GtkActionEntry entries[] = { { "previous_year", OSMO_STOCK_PREV_YEAR, _("Previous year"), NULL, _("Previous year"), G_CALLBACK(calendar_btn_prev_year_cb)}, { "previous_month", OSMO_STOCK_PREV_MONTH, _("Previous month"), NULL, _("Previous month"), G_CALLBACK(calendar_btn_prev_month_cb)}, { "previous_day", OSMO_STOCK_PREV_DAY, _("Previous day"), NULL, _("Previous day"), G_CALLBACK(calendar_btn_prev_day_cb)}, { "today", OSMO_STOCK_TODAY, _("Today"), NULL, _("Today"), G_CALLBACK(calendar_btn_today_cb)}, { "next_day", OSMO_STOCK_NEXT_DAY, _("Next day"), NULL, _("Next day"), G_CALLBACK(calendar_btn_next_day_cb)}, { "next_month", OSMO_STOCK_NEXT_MONTH, _("Next month"), NULL, _("Next month"), G_CALLBACK(calendar_btn_next_month_cb)}, { "next_year", OSMO_STOCK_NEXT_YEAR, _("Next year"), NULL, _("Next year"), G_CALLBACK(calendar_btn_next_year_cb)}, { "jump_to_date", OSMO_STOCK_JUMPTO, _("Jump to date"), NULL, _("Jump to date"), G_CALLBACK(calendar_create_jumpto_window_cb)}, { "full_year", OSMO_STOCK_FULLYEAR, _("Full-year calendar"), NULL, _("Full-year calendar"), G_CALLBACK(calendar_create_fullyear_window_cb)}, #ifdef PRINTING_SUPPORT { "print", OSMO_STOCK_PRINT, _("Print calendar"), NULL, _("Print calendar"), G_CALLBACK(calendar_print_cb)}, #endif /* PRINTING_SUPPORT */ { "date_calc", OSMO_STOCK_CALCULATOR, _("Date calculator"), NULL, _("Date calculator"), G_CALLBACK(calendar_create_datecalc_window_cb)}, #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) { "backup_data", OSMO_STOCK_BACKUP, _("Backup data"), NULL, _("Backup data"), G_CALLBACK(button_create_backup_cb)}, { "restore_data", OSMO_STOCK_RESTORE, _("Restore data"), NULL, _("Restore data"), G_CALLBACK(button_restore_backup_cb)}, #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ { "preferences", OSMO_STOCK_PREFERENCES, _("Preferences"), NULL, _("Preferences"), G_CALLBACK(show_preferences_window_cb)}, { "about", OSMO_STOCK_ABOUT, _("About"), NULL, _("About"), G_CALLBACK (show_about_window_cb)}, { "quit", GTK_STOCK_QUIT, _("Quit"), NULL, _("Quit"), G_CALLBACK (gui_quit_osmo_cb)}, }; GtkToggleActionEntry t_entries[] = { { "edit_note", OSMO_STOCK_EDIT_NOTE, _("Toggle day note panel"), NULL, _("Toggle day note panel"), G_CALLBACK(calendar_edit_note_cb), FALSE } }; guint n_entries = G_N_ELEMENTS (entries); guint n_t_entries = G_N_ELEMENTS (t_entries); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Calendar")); gui_add_to_notebook (vbox1, tmpbuf, appGUI); appGUI->cal->vbox = GTK_BOX(vbox1); if (config.hide_calendar == TRUE) { gtk_widget_hide(GTK_WIDGET(appGUI->cal->vbox)); } /*-------------------------------------------------------------------------------------*/ action_group = gtk_action_group_new ("_actions"); gtk_action_group_add_actions (action_group, entries, n_entries, appGUI); gtk_action_group_add_toggle_actions (action_group, t_entries, n_t_entries, appGUI); gtk_action_group_set_sensitive(action_group, TRUE); appGUI->cal->calendar_uim_widget = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (appGUI->cal->calendar_uim_widget, action_group, 0); g_signal_connect (appGUI->cal->calendar_uim_widget, "add_widget", G_CALLBACK (add_calendar_toolbar_widget), appGUI); if (!gtk_ui_manager_add_ui_from_string (appGUI->cal->calendar_uim_widget, ui_info, -1, &error)) { g_message ("building toolbar failed: %s", error->message); g_error_free (error); } gtk_ui_manager_ensure_update (appGUI->cal->calendar_uim_widget); gtk_toolbar_set_style (appGUI->cal->calendar_toolbar, GTK_TOOLBAR_ICONS); appGUI->cal->notes_button = gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/edit_note"); if (appGUI->calendar_only == TRUE) { gtk_widget_hide (appGUI->cal->notes_button); gtk_widget_set_sensitive (appGUI->cal->notes_button, FALSE); #ifdef PRINTING_SUPPORT gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/print")); #endif /* PRINTING_SUPPORT */ gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/preferences")); gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/about")); gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/backup_data")); gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/restore_data")); } /*-------------------------------------------------------------------------------------*/ vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); if (config.gui_layout && appGUI->calendar_only == FALSE) { hbox1 = gtk_hbox_new (FALSE, 6); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, TRUE, TRUE, 0); } vbox3 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox3); if (appGUI->calendar_only == TRUE) { gtk_box_pack_start (GTK_BOX (vbox2), vbox3, TRUE, TRUE, 0); } else { if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox2), vbox3, TRUE, TRUE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox1), vbox3, FALSE, FALSE, 0); } } hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, FALSE, 6); eventbox = gtk_event_box_new (); gtk_widget_show (eventbox); gtk_box_pack_start (GTK_BOX (vbox3), eventbox, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(eventbox), "button_press_event", G_CALLBACK(click_handler_cb), appGUI); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_container_add (GTK_CONTAINER (eventbox), hbox2); /* Calendar popup menu */ if (appGUI->calendar_only == FALSE) { appGUI->cal->popup_menu = gtk_menu_new(); #ifdef TASKS_ENABLED popup_menu_add_task_entry = gtk_menu_item_new_with_label(_("Add task")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_add_task_entry); g_signal_connect_swapped(G_OBJECT(popup_menu_add_task_entry), "activate", G_CALLBACK(popup_add_task_entry_selected_cb), appGUI); gtk_widget_show(popup_menu_add_task_entry); #endif /* TASKS_ENABLED */ appGUI->cal->popup_menu_select_day_color_entry = gtk_menu_item_new_with_label(_("Select day color")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), appGUI->cal->popup_menu_select_day_color_entry); g_signal_connect_swapped(G_OBJECT(appGUI->cal->popup_menu_select_day_color_entry), "activate", G_CALLBACK(popup_select_day_color_entry_selected_cb), appGUI); gtk_widget_show(appGUI->cal->popup_menu_select_day_color_entry); popup_menu_separator = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_separator); gtk_widget_show(popup_menu_separator); popup_menu_browse_notes = gtk_menu_item_new_with_label(_("Browse notes")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_browse_notes); g_signal_connect_swapped(G_OBJECT(popup_menu_browse_notes), "activate", G_CALLBACK(popup_browse_notes_cb), appGUI); gtk_widget_show(popup_menu_browse_notes); #ifdef HAVE_LIBICAL popup_menu_ical_browse = gtk_menu_item_new_with_label(_("Browse iCal events")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_ical_browse); g_signal_connect_swapped(G_OBJECT(popup_menu_ical_browse), "activate", G_CALLBACK(popup_ical_browse_cb), appGUI); gtk_widget_show(popup_menu_ical_browse); popup_menu_separator = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_separator); gtk_widget_show(popup_menu_separator); popup_menu_ical_export = gtk_menu_item_new_with_label(_("Export to iCal file")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->cal->popup_menu), popup_menu_ical_export); g_signal_connect_swapped(G_OBJECT(popup_menu_ical_export), "activate", G_CALLBACK(popup_ical_export_cb), appGUI); gtk_widget_show(popup_menu_ical_export); #endif /* HAVE_LIBICAL */ } appGUI->cal->date_label = gtk_label_new (NULL); gtk_widget_show (appGUI->cal->date_label); gtk_box_pack_start (GTK_BOX (hbox2), appGUI->cal->date_label, TRUE, FALSE, 8); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, FALSE, 6); appGUI->cal->calendar = gui_calendar_new (); gtk_widget_show (appGUI->cal->calendar); gui_calendar_set_cursor_type(GUI_CALENDAR(appGUI->cal->calendar), config.cursor_type); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->calendar, GTK_CAN_FOCUS); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar), config.display_options); gtk_widget_modify_font (GTK_WIDGET(appGUI->cal->calendar), appGUI->cal->fd_cal_font); gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cal->calendar, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (appGUI->cal->calendar), "day-selected", G_CALLBACK (calendar_day_selected_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->calendar), "day-selected-double-click", G_CALLBACK (calendar_dc_day_selected_cb), appGUI); g_signal_connect (G_OBJECT(appGUI->cal->calendar), "button_press_event", G_CALLBACK(mouse_button_click_handler_cb), appGUI); gui_calendar_enable_cursor (GUI_CALENDAR (appGUI->cal->calendar), TRUE); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar), config.day_note_marker); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar), config.event_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar), config.today_marker_type, TODAY_MARKER); appGUI->cal->month_selector_menu = gtk_menu_new(); calendar_create_popup_menu (appGUI->cal->month_selector_menu, appGUI); /*-------------------------------------------------------------------------------------*/ if (appGUI->calendar_only == FALSE) { if (!config.gui_layout) { appGUI->cal->aux_cal_expander = gtk_expander_new (_("Previous and next month")); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->aux_cal_expander, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cal->aux_cal_expander, FALSE, FALSE, 0); } appGUI->cal->aux_calendars_table = gtk_table_new (2, 2, FALSE); if (!config.gui_layout) { gtk_container_add (GTK_CONTAINER (appGUI->cal->aux_cal_expander), appGUI->cal->aux_calendars_table); } else { gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cal->aux_calendars_table, FALSE, FALSE, 0); } gtk_table_set_row_spacings (GTK_TABLE (appGUI->cal->aux_calendars_table), 4); gtk_table_set_col_spacings (GTK_TABLE (appGUI->cal->aux_calendars_table), 4); if (config.enable_auxilary_calendars == TRUE) { if (!config.gui_layout) { gtk_widget_show (appGUI->cal->aux_cal_expander); } gtk_widget_show (appGUI->cal->aux_calendars_table); } appGUI->cal->prev_month_label = gtk_label_new (""); gtk_widget_show (appGUI->cal->prev_month_label); gtk_table_attach (GTK_TABLE (appGUI->cal->aux_calendars_table), appGUI->cal->prev_month_label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cal->next_month_label = gtk_label_new (""); gtk_widget_show (appGUI->cal->next_month_label); gtk_table_attach (GTK_TABLE (appGUI->cal->aux_calendars_table), appGUI->cal->next_month_label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cal->calendar_prev = gui_calendar_new (); gtk_widget_show (appGUI->cal->calendar_prev); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->calendar_prev, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (appGUI->cal->aux_calendars_table), appGUI->cal->calendar_prev, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar_prev), (config.display_options & (GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_WEEK_START_MONDAY)) | GUI_CALENDAR_NO_MONTH_CHANGE); gui_calendar_enable_cursor (GUI_CALENDAR (appGUI->cal->calendar_prev), FALSE); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.selection_color, 0, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_prev), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar_prev), config.day_note_marker); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_prev), config.event_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_prev), config.today_marker_type, TODAY_MARKER); g_signal_connect (G_OBJECT (appGUI->cal->calendar_prev), "day_selected_double_click", G_CALLBACK (date_selected_cb), appGUI); appGUI->cal->calendar_next = gui_calendar_new (); gtk_widget_show (appGUI->cal->calendar_next); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->calendar_next, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (appGUI->cal->aux_calendars_table), appGUI->cal->calendar_next, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->calendar_next), (config.display_options & (GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_WEEK_START_MONDAY)) | GUI_CALENDAR_NO_MONTH_CHANGE); gui_calendar_enable_cursor (GUI_CALENDAR (appGUI->cal->calendar_next), FALSE); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.selection_color, 0, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->calendar_next), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->calendar_next), config.day_note_marker); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_next), config.event_marker_type, EVENT_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->calendar_next), config.today_marker_type, TODAY_MARKER); g_signal_connect (G_OBJECT (appGUI->cal->calendar_next), "day_selected_double_click", G_CALLBACK (date_selected_cb), appGUI); /*-------------------------------------------------------------------------------------*/ /* notes */ appGUI->cal->notes_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (appGUI->cal->notes_vbox); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cal->notes_vbox, TRUE, TRUE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->notes_vbox, TRUE, TRUE, 0); } hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox3); gtk_box_pack_start (GTK_BOX (appGUI->cal->notes_vbox), hbox3, FALSE, FALSE, 0); alignment = gtk_alignment_new (0.0, 0.5, 0, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (hbox3), alignment, FALSE, FALSE, 4); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Notes")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_container_add (GTK_CONTAINER (alignment), label); appGUI->cal->n_close_button = utl_gui_create_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->n_close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->n_close_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->n_close_button, _("Close note panel")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->n_close_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (appGUI->cal->n_close_button), "clicked", G_CALLBACK (calendar_close_text_cb), appGUI); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_end (GTK_BOX (hbox3), vseparator, FALSE, TRUE, 0); appGUI->cal->ta_highlight_button = utl_gui_stock_button (OSMO_STOCK_EDITOR_HIGHLIGHT_S, FALSE); gtk_widget_show (appGUI->cal->ta_highlight_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ta_highlight_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->ta_highlight_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->ta_highlight_button, _("Highlight")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->ta_highlight_button, FALSE, FALSE, 1); g_object_set_data (G_OBJECT (appGUI->cal->ta_highlight_button), "tag", "mark_color"); g_signal_connect (G_OBJECT (appGUI->cal->ta_highlight_button), "clicked", G_CALLBACK (calendar_set_text_attribute_cb), appGUI); appGUI->cal->ta_strikethrough_button = utl_gui_stock_button (OSMO_STOCK_EDITOR_STRIKETHROUGH_S, FALSE); gtk_widget_show (appGUI->cal->ta_strikethrough_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ta_strikethrough_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->ta_strikethrough_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->ta_strikethrough_button, _("Strikethrough")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->ta_strikethrough_button, FALSE, FALSE, 1); g_object_set_data (G_OBJECT (appGUI->cal->ta_strikethrough_button), "tag", "strike"); g_signal_connect (G_OBJECT (appGUI->cal->ta_strikethrough_button), "clicked", G_CALLBACK (calendar_set_text_attribute_cb), appGUI); appGUI->cal->ta_underline_button = utl_gui_stock_button (OSMO_STOCK_EDITOR_UNDERLINE_S, FALSE); gtk_widget_show (appGUI->cal->ta_underline_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ta_underline_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->ta_underline_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->ta_underline_button, _("Underline")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->ta_underline_button, FALSE, FALSE, 1); g_object_set_data (G_OBJECT (appGUI->cal->ta_underline_button), "tag", "underline"); g_signal_connect (G_OBJECT (appGUI->cal->ta_underline_button), "clicked", G_CALLBACK (calendar_set_text_attribute_cb), appGUI); appGUI->cal->ta_italic_button = utl_gui_stock_button (OSMO_STOCK_EDITOR_ITALIC_S, FALSE); gtk_widget_show (appGUI->cal->ta_italic_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ta_italic_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->ta_italic_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->ta_italic_button, _("Italic")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->ta_italic_button, FALSE, FALSE, 1); g_object_set_data (G_OBJECT (appGUI->cal->ta_italic_button), "tag", "italic"); g_signal_connect (G_OBJECT (appGUI->cal->ta_italic_button), "clicked", G_CALLBACK (calendar_set_text_attribute_cb), appGUI); appGUI->cal->ta_bold_button = utl_gui_stock_button (OSMO_STOCK_EDITOR_BOLD_S, FALSE); gtk_widget_show (appGUI->cal->ta_bold_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ta_bold_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->ta_bold_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->ta_bold_button, _("Bold")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->ta_bold_button, FALSE, FALSE, 1); g_object_set_data (G_OBJECT (appGUI->cal->ta_bold_button), "tag", "bold"); g_signal_connect (G_OBJECT (appGUI->cal->ta_bold_button), "clicked", G_CALLBACK (calendar_set_text_attribute_cb), appGUI); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_end (GTK_BOX (hbox3), vseparator, FALSE, TRUE, 0); appGUI->cal->n_timeline_button = utl_gui_stock_button (OSMO_STOCK_BUTTON_INSERT_TIMELINE, FALSE); gtk_widget_show (appGUI->cal->n_timeline_button); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->n_timeline_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->n_timeline_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->n_timeline_button, _("Insert timeline")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->n_timeline_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (appGUI->cal->n_timeline_button), "clicked", G_CALLBACK (calendar_insert_timeline_cb), appGUI); appGUI->cal->n_clear_button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (appGUI->cal->n_clear_button); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->n_clear_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->n_clear_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->n_clear_button, _("Clear text")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->n_clear_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (appGUI->cal->n_clear_button), "clicked", G_CALLBACK (calendar_clear_text_cb), appGUI); appGUI->cal->n_select_color_button = utl_gui_stock_button (OSMO_STOCK_BUTTON_SELECT_COLOR, FALSE); gtk_widget_show (appGUI->cal->n_select_color_button); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->n_select_color_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cal->n_select_color_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->n_select_color_button, _("Select day color")); } gtk_box_pack_end (GTK_BOX (hbox3), appGUI->cal->n_select_color_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (appGUI->cal->n_select_color_button), "clicked", G_CALLBACK (calendar_select_color_cb), appGUI); note_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (note_scrolledwindow); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (note_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (appGUI->cal->notes_vbox), note_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (note_scrolledwindow), GTK_SHADOW_IN); appGUI->cal->calendar_note_textview = gtk_text_view_new (); gtk_widget_show (appGUI->cal->calendar_note_textview); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview)); g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (calendar_textbuffer_changed_cb), appGUI); gtk_container_add (GTK_CONTAINER (note_scrolledwindow), appGUI->cal->calendar_note_textview); gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), TRUE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), GTK_WRAP_WORD_CHAR); gtk_widget_modify_font (GTK_WIDGET(appGUI->cal->calendar_note_textview), appGUI->cal->fd_notes_font); gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), 4); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), 4); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), 4); gtk_text_buffer_create_tag (buffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL); gtk_text_buffer_create_tag (buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); gtk_text_buffer_create_tag (buffer, "strike", "strikethrough", TRUE, NULL); gtk_text_buffer_create_tag (buffer, "underline", "underline", PANGO_UNDERLINE_SINGLE, NULL); gtk_text_buffer_create_tag (buffer, "mark_color", "background", "#FFFF00", NULL); /*-------------------------------------------------------------------------------------*/ /* day info */ appGUI->cal->day_info_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (appGUI->cal->day_info_vbox); if (!config.gui_layout) { gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cal->day_info_vbox, TRUE, TRUE, 0); } else { gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->day_info_vbox, TRUE, TRUE, 0); } frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->cal->day_info_vbox), frame, TRUE, TRUE, 0); gtk_frame_set_label_align (GTK_FRAME (frame), 0.98, 0.5); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); #ifndef HAVE_LIBWEBKIT gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 8, 0); #endif /* HAVE_LIBWEBKIT */ g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Info")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->cal->day_info_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->cal->day_info_scrolledwindow); gtk_container_add (GTK_CONTAINER (alignment), appGUI->cal->day_info_scrolledwindow); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (appGUI->cal->day_info_scrolledwindow), GTK_SHADOW_NONE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->cal->day_info_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef HAVE_LIBWEBKIT appGUI->cal->webkit_settings = webkit_web_settings_new (); g_object_set (appGUI->cal->webkit_settings, "enable-scripts", FALSE, NULL); g_object_set (appGUI->cal->webkit_settings, "enable-plugins", FALSE, NULL); appGUI->cal->html_webkitview = WEBKIT_WEB_VIEW (webkit_web_view_new ()); webkit_web_view_set_settings (appGUI->cal->html_webkitview, appGUI->cal->webkit_settings); webkit_web_view_set_editable (appGUI->cal->html_webkitview, FALSE); g_signal_connect (appGUI->cal->html_webkitview, "console-message", G_CALLBACK (utl_webkit_console_msg), appGUI); g_signal_connect (appGUI->cal->html_webkitview, "populate-popup", G_CALLBACK (utl_webkit_on_menu), appGUI); g_signal_connect (appGUI->cal->html_webkitview, "navigation-policy-decision-requested", G_CALLBACK (utl_webkit_link_clicked), appGUI); g_signal_connect (appGUI->cal->html_webkitview, "notify::load-status", G_CALLBACK(utl_webkit_load_cb), appGUI); gtk_widget_show (GTK_WIDGET(appGUI->cal->html_webkitview)); gtk_container_add (GTK_CONTAINER (appGUI->cal->day_info_scrolledwindow), GTK_WIDGET(appGUI->cal->html_webkitview)); #else appGUI->cal->day_desc_textview = gtk_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->cal->day_desc_textview), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), 4); gtk_text_view_set_left_margin (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), 4); gtk_text_view_set_right_margin (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), 4); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW(appGUI->cal->day_desc_textview), FALSE); gtk_widget_show (appGUI->cal->day_desc_textview); gtk_container_add (GTK_CONTAINER (appGUI->cal->day_info_scrolledwindow), appGUI->cal->day_desc_textview); gtk_widget_realize (appGUI->cal->day_desc_textview); gtk_widget_modify_base (appGUI->cal->day_desc_textview, GTK_STATE_NORMAL, &appGUI->main_window->style->bg[GTK_STATE_NORMAL]); appGUI->cal->day_desc_text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->cal->day_desc_textview)); gtk_text_buffer_create_tag (appGUI->cal->day_desc_text_buffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL); gtk_text_buffer_create_tag (appGUI->cal->day_desc_text_buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); gtk_text_buffer_create_tag (appGUI->cal->day_desc_text_buffer, "strike", "strikethrough", TRUE, NULL); gtk_text_buffer_create_tag (appGUI->cal->day_desc_text_buffer, "underline", "underline", PANGO_UNDERLINE_SINGLE, NULL); gtk_text_buffer_create_tag (appGUI->cal->day_desc_text_buffer, "mark_color", "background", "#FFFF00", NULL); #endif /* HAVE_LIBWEBKIT */ /*-------------------------------------------------------------------------------------*/ } gtk_widget_modify_font (GTK_WIDGET(appGUI->cal->date_label), appGUI->cal->fd_day_name_font); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->calendar), appGUI->cal->date); gui_calendar_set_frame_cursor_thickness (GUI_CALENDAR (appGUI->cal->calendar), config.frame_cursor_thickness); if (appGUI->calendar_only == FALSE) { if (!config.day_notes_visible) { gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), FALSE); gtk_text_view_set_editable(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), FALSE); gtk_widget_show(appGUI->cal->day_info_vbox); gtk_widget_hide(appGUI->cal->notes_vbox); } else { gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), TRUE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), TRUE); gtk_text_view_set_editable(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview), TRUE); gtk_widget_hide(appGUI->cal->day_info_vbox); gtk_widget_show(appGUI->cal->notes_vbox); } gtk_widget_realize(GTK_WIDGET(appGUI->cal->calendar_note_textview)); gtk_widget_grab_focus(GTK_WIDGET(appGUI->cal->calendar_note_textview)); } if (appGUI->calendar_only == FALSE) { if (!config.gui_layout) { g_signal_connect (G_OBJECT(appGUI->cal->aux_cal_expander), "notify::expanded", G_CALLBACK(aux_cal_expander_cb), appGUI); gtk_expander_set_expanded (GTK_EXPANDER(appGUI->cal->aux_cal_expander), config.auxilary_calendars_state); } else { update_aux_calendars (appGUI); } } } /*------------------------------------------------------------------------------*/ void select_bg_color_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_widget_destroy (appGUI->cal->select_bg_color_window); } /*------------------------------------------------------------------------------*/ void button_select_bg_color_close_cb (GtkWidget *widget, gpointer user_data) { select_bg_color_close_cb (widget, NULL, user_data); } /*------------------------------------------------------------------------------*/ void colors_category_selected (GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gchar *color_val = NULL; gchar *text = NULL; gint n; if (gtk_tree_selection_get_selected (appGUI->cal->colors_category_select, &model, &iter)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cal->colors_category_store), &iter, 1, &color_val, 3, &n, -1); text = calendar_get_note_text (appGUI); cal_add_note (g_date_get_julian (appGUI->cal->date), color_val, text, appGUI); cal_mark_days_with_notes (appGUI->cal->date, appGUI); select_bg_color_close_cb (NULL, NULL, appGUI); update_aux_calendars (appGUI); g_free (color_val); g_free (text); } } /*------------------------------------------------------------------------------*/ void select_bg_color_apply_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; config.enable_day_mark = TRUE; cal_refresh_marks (appGUI); update_aux_calendars (appGUI); colors_category_selected (appGUI); } /*------------------------------------------------------------------------------*/ gint select_bg_color_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; switch (event->keyval) { case GDK_Return: config.enable_day_mark = TRUE; cal_refresh_marks (appGUI); update_aux_calendars (appGUI); colors_category_selected (appGUI); return TRUE; case GDK_Escape: select_bg_color_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint colors_list_dbclick_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) { config.enable_day_mark = TRUE; cal_refresh_marks (appGUI); update_aux_calendars (appGUI); colors_category_selected (appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void calendar_create_color_selector_window (gboolean window_pos, GUI *appGUI) { GtkWidget *vbox1; GtkWidget *scrolledwindow; GtkWidget *colors_category_treeview; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *ok_button; GtkWidget *cancel_button; GtkTreeIter iter; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreePath *path; GdkPixbuf *image; gchar *color_val, *color_name, *color_sel; gchar tmpbuf[BUFFER_SIZE]; gint i; GdkColor color; if (cal_check_note (g_date_get_julian (appGUI->cal->date), appGUI) == FALSE && !config.day_notes_visible) return; config.enable_day_mark = TRUE; cal_refresh_marks (appGUI); update_aux_calendars (appGUI); appGUI->cal->select_bg_color_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->select_bg_color_window), 4); gtk_window_set_title (GTK_WINDOW (appGUI->cal->select_bg_color_window), _("Select color")); gtk_window_set_default_size (GTK_WINDOW(appGUI->cal->select_bg_color_window), 200, 280); gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->select_bg_color_window), GTK_WINDOW(appGUI->main_window)); if (window_pos == TRUE) { gtk_window_set_position(GTK_WINDOW(appGUI->cal->select_bg_color_window), GTK_WIN_POS_CENTER_ON_PARENT); } else { gtk_window_set_position(GTK_WINDOW(appGUI->cal->select_bg_color_window), GTK_WIN_POS_MOUSE); } gtk_window_set_modal(GTK_WINDOW(appGUI->cal->select_bg_color_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->select_bg_color_window), "delete_event", G_CALLBACK(select_bg_color_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->select_bg_color_window), "key_press_event", G_CALLBACK (select_bg_color_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->select_bg_color_window), vbox1); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); appGUI->cal->colors_category_store = gtk_list_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); colors_category_treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(appGUI->cal->colors_category_store)); g_signal_connect(G_OBJECT(colors_category_treeview), "button_press_event", G_CALLBACK(colors_list_dbclick_cb), appGUI); appGUI->cal->colors_category_select = gtk_tree_view_get_selection(GTK_TREE_VIEW(colors_category_treeview)); gtk_widget_show (colors_category_treeview); gtk_container_add (GTK_CONTAINER (scrolledwindow), colors_category_treeview); gtk_container_set_border_width (GTK_CONTAINER (colors_category_treeview), 4); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (colors_category_treeview), FALSE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (colors_category_treeview), FALSE); renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "pixbuf", 0, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(colors_category_treeview), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", 1, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(colors_category_treeview), column); gtk_tree_view_column_set_visible (column, FALSE); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", 2, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(colors_category_treeview), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", 3, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(colors_category_treeview), column); gtk_tree_view_column_set_visible (column, FALSE); color = (appGUI->cal->calendar)->style->base[GTK_WIDGET_STATE (appGUI->cal->calendar)]; g_snprintf (tmpbuf, BUFFER_SIZE, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); image = utl_gui_create_color_swatch (tmpbuf); gtk_list_store_append(appGUI->cal->colors_category_store, &iter); gtk_list_store_set(appGUI->cal->colors_category_store, &iter, 0, image, 1, tmpbuf, 2, _("None"), 3, 0, -1); g_object_unref (image); i = 0; color_sel = cal_get_note_color (g_date_get_julian (appGUI->cal->date), appGUI); while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->calendar_category_store), &iter, 1, &color_val, 2, &color_name, -1); image = utl_gui_create_color_swatch (color_val); gtk_list_store_append(appGUI->cal->colors_category_store, &iter); gtk_list_store_set(appGUI->cal->colors_category_store, &iter, 0, image, 1, color_val, 2, color_name, 3, i, -1); if (color_sel != NULL) { if (!strcmp(color_val, color_sel)) { path = gtk_tree_model_get_path (GTK_TREE_MODEL(appGUI->cal->colors_category_store), &iter); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (colors_category_treeview), path, NULL, FALSE); gtk_tree_path_free(path); } } } g_object_unref (image); g_free(color_val); g_free(color_name); } hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); GTK_WIDGET_UNSET_FLAGS(cancel_button, GTK_CAN_FOCUS); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (button_select_bg_color_close_cb), appGUI); ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); GTK_WIDGET_UNSET_FLAGS(ok_button, GTK_CAN_FOCUS); gtk_widget_show (ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), ok_button); g_signal_connect (G_OBJECT (ok_button), "clicked", G_CALLBACK (select_bg_color_apply_cb), appGUI); gtk_widget_show (appGUI->cal->select_bg_color_window); } /*------------------------------------------------------------------------------*/ void menu_entry_selected_cb (gpointer user_data) { MESSAGE *msg = (MESSAGE *) user_data; calendar_update_date (g_date_get_day (msg->appGUI->cal->date), (size_t) msg->data, g_date_get_year (msg->appGUI->cal->date), msg->appGUI); } /*------------------------------------------------------------------------------*/ void calendar_create_popup_menu (GtkWidget *menu, GUI *appGUI) { static MESSAGE msg_month[MAX_MONTHS]; GtkWidget *menu_entry; gchar buffer[BUFFER_SIZE]; GDate *tmpdate; gint i; tmpdate = g_date_new_dmy (1, 1, utl_date_get_current_year ()); g_return_if_fail (tmpdate != NULL); for (i = G_DATE_JANUARY; i <= G_DATE_DECEMBER; i++) { g_date_set_month (tmpdate, i); g_date_strftime (buffer, BUFFER_SIZE, "%B", tmpdate); menu_entry = gtk_menu_item_new_with_label (buffer); gtk_menu_shell_append (GTK_MENU_SHELL (appGUI->cal->month_selector_menu), menu_entry); msg_month[i-1].data = (gpointer) ((size_t)i); msg_month[i-1].appGUI = appGUI; g_signal_connect_swapped (G_OBJECT (menu_entry), "activate", G_CALLBACK (menu_entry_selected_cb), &msg_month[i-1]); gtk_widget_show (menu_entry); } g_date_free (tmpdate); } /*------------------------------------------------------------------------------*/ void calendar_mark_events (GtkWidget *calendar, guint32 julian_day, guint i, GUI *appGUI) { gboolean flag = FALSE; if (appGUI->calendar_only == TRUE || appGUI->all_pages_added == FALSE) return; #ifdef TASKS_ENABLED if (tsk_check_tasks (julian_day, julian_day, STATE_CALENDAR, appGUI) == TRUE) { gui_calendar_mark_day (GUI_CALENDAR (calendar), i, EVENT_MARK); flag = TRUE; } #endif /* TASKS_ENABLED */ #ifdef HAVE_LIBICAL if (flag == FALSE) { if (ics_check_event (julian_day, appGUI) == TRUE) { gui_calendar_mark_day (GUI_CALENDAR (calendar), i, EVENT_MARK); } } #endif /* HAVE_LIBICAL */ #ifdef CONTACTS_ENABLED if (check_contacts (julian_day, appGUI) == TRUE) { gui_calendar_mark_day (GUI_CALENDAR (calendar), i, BIRTHDAY_MARK); } #endif /* CONTACTS_ENABLED */ } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/utils.h000664 001750 001750 00000014205 12561325524 014634 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _UTILS_H #define _UTILS_H #include "gui.h" enum helpers { UNKNOWN = 0, WWW, EMAIL, SOUND }; #define REGEX_URL "(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=\%&:/~\\+#]*[\\w\\-\\@?^=\%&/~\\+#])?" #define REGEX_URI_PROTO "\\b((http|ftp|https):\\/\\/|(mailto|javascript):)" #define REGEX_EMAIL "(\\w[-._\\w]*\\w@\\w[-._\\w]*\\w\\.\\w{2,3})" gchar * utl_text_replace (const gchar *text, const gchar *regex, const gchar *replacement); gboolean utl_text_match (const gchar *text, const gchar *regex); gchar * utl_text_to_html_page (const gchar *text, const gchar *font_family, const gchar *background_color, const gchar *text_color, const gchar *header_html, const gchar *top_html, const gchar *bottom_html); gint utl_text_strcmp (const gchar *string1, const gchar *string2); gboolean utl_text_strcasestr (const gchar *haystack, const gchar *needle); gboolean utl_text_strstr (const gchar *haystack, const gchar *needle); gchar * utl_text_to_html (const gchar *text, gboolean ignoreBR, gboolean ignoreSP); gchar * utl_get_day_name (guint day, gboolean short_name); gchar * utl_get_julian_day_name (guint32 julian); gchar * utl_get_date_name (const GDate *date); gchar * utl_get_date_name_format (const GDate *date, gchar *fmt); guint utl_get_weekend_days_in_month (const GDate *date); guint utl_get_weekend_days_in_month_my (guint month, guint year); guint utl_get_days_per_year (guint year); void utl_subtract_from_date (guint32 date, gint time, gint days, gint seconds, guint32 *new_date, gint *new_time); guint utl_calc_moon_phase (const GDate *date); gchar * utl_get_moon_phase_name (gint phase); void utl_xml_get_int (gchar *name, gint *iname, xmlNodePtr node); void utl_xml_get_uint (gchar *name, guint *uname, xmlNodePtr node); void utl_xml_get_char (gchar *name, gchar *cname, xmlNodePtr node); void utl_xml_get_str (gchar *name, gchar **sname, xmlNodePtr node); void utl_xml_get_strn (gchar *name, gchar *sname, gint buffer_size, xmlNodePtr node); void utl_xml_put_int (gchar *name, gint value, xmlNodePtr node); void utl_xml_put_uint (gchar *name, guint value, xmlNodePtr node); void utl_xml_put_char (gchar *name, gchar character, xmlNodePtr node, xmlDocPtr doc); void utl_xml_put_str (gchar *name, gchar *string, xmlNodePtr node, xmlDocPtr doc); void utl_xml_put_strn (gchar *name, gchar *string, gint buffer_size, xmlNodePtr node, xmlDocPtr doc); void utl_name_strcat (gchar *first, gchar *second, gchar *buffer); gboolean utl_run_helper (gchar *parameter, gint helper); void utl_run_command (gchar *command, gboolean sync); gboolean utl_is_valid_command (gchar *command); gint utl_get_link_type (gchar *link); void utl_cairo_set_color (cairo_t *cr, GdkColor *color, gint alpha); void utl_cairo_draw (cairo_t *cr, gint stroke); void utl_draw_rounded_rectangle (cairo_t *cr, gint x, gint y, gint w, gint h, gint a, gint s); void utl_draw_left_arrow (cairo_t *cr, gdouble x, gdouble y, gdouble w, gdouble h, gdouble a); gchar * utl_inline_to_png_base64 (guint8 *inline_data); gchar * utl_inline_image_to_html (guint8 *inline_data); gchar * utl_text_with_tags_to_html (gchar *input_text); void utl_play_alarm_sound (guint repetitions); gchar * utl_add_timestamp_to_filename (gchar *filename, gchar *extension); gchar * utl_strconcat (gchar *string, ...); void utl_free_list (GList *list, GDestroyNotify free_func); #ifdef HAVE_LIBWEBKIT gboolean utl_webkit_console_msg (WebKitWebView *web_view, gchar *message, gint line, gchar *source_id, gpointer user_data); void utl_webkit_on_menu (WebKitWebView *view, GtkMenu *menu); gboolean utl_webkit_link_clicked (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision); void utl_webkit_load_cb (WebKitWebView *view, GParamSpec *pspec, GUI *appGUI); #endif /* HAVE_LIBWEBKIT */ gint utl_open_count_url_links (gchar *text, gboolean url_count); #endif /* _UTILS_H */ osmo-0.2.14/src/calendar_widget.c000664 001750 001750 00000344517 12561325524 016617 0ustar00pasppasp000000 000000 /* * GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * GTK Calendar Widget * Copyright (C) 1998 Cesar Miquel, Shawn T. Amundson and Mattias Groenlund * * This library 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 library 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 library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. * * Modified for OSMO organizer by pasp@users.sourceforge.net */ #include #include #include #include #include #include #include #include #include #include #include "i18n.h" #include "gui.h" #include "calendar_widget.h" #include "calendar_utils.h" #include "utils.h" #include "utils_date.h" static void gui_calendar_finalize (GObject *calendar); static void gui_calendar_destroy (GtkObject *calendar); static void gui_calendar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void gui_calendar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void gui_calendar_realize (GtkWidget *widget); static void gui_calendar_unrealize (GtkWidget *widget); static void gui_calendar_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gui_calendar_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gboolean gui_calendar_expose (GtkWidget *widget, GdkEventExpose *event); static gboolean gui_calendar_button_press (GtkWidget *widget, GdkEventButton *event); static gboolean gui_calendar_button_release (GtkWidget *widget, GdkEventButton *event); static gboolean gui_calendar_motion_notify (GtkWidget *widget, GdkEventMotion *event); static gboolean gui_calendar_enter_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean gui_calendar_leave_notify (GtkWidget *widget, GdkEventCrossing *event); static gboolean gui_calendar_scroll (GtkWidget *widget, GdkEventScroll *event); static gboolean gui_calendar_key_press (GtkWidget *widget, GdkEventKey *event); static gboolean gui_calendar_focus_out (GtkWidget *widget, GdkEventFocus *event); static void gui_calendar_grab_notify (GtkWidget *widget, gboolean was_grabbed); static void gui_calendar_state_changed (GtkWidget *widget, GtkStateType previous_state); static void gui_calendar_style_set (GtkWidget *widget, GtkStyle *previous_style); static void gui_calendar_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, guint info, guint time); static void gui_calendar_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time); static gboolean gui_calendar_drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time); static void gui_calendar_drag_leave (GtkWidget *widget, GdkDragContext *context, guint time); static gboolean gui_calendar_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time); static void calendar_start_spinning (GuiCalendar *calendar, gint click_child); static void calendar_stop_spinning (GuiCalendar *calendar); static void calendar_invalidate_day (GuiCalendar *widget, gint row, gint col); static void calendar_invalidate_day_num (GuiCalendar *widget, gint day); static void calendar_invalidate_arrow (GuiCalendar *widget, guint arrow); static void calendar_compute_days (GuiCalendar *calendar); static guint gui_calendar_signals[LAST_SIGNAL] = { 0 }; static char *default_abbreviated_dayname[7]; static char *default_monthname[12]; G_DEFINE_TYPE (GuiCalendar, gui_calendar, GTK_TYPE_WIDGET) /*------------------------------------------------------------------------------*/ static void gui_calendar_class_init (GuiCalendarClass *class) { GObjectClass *gobject_class; GtkObjectClass *object_class; GtkWidgetClass *widget_class; gobject_class = (GObjectClass*) class; object_class = (GtkObjectClass*) class; widget_class = (GtkWidgetClass*) class; gobject_class->set_property = gui_calendar_set_property; gobject_class->get_property = gui_calendar_get_property; gobject_class->finalize = gui_calendar_finalize; object_class->destroy = gui_calendar_destroy; widget_class->realize = gui_calendar_realize; widget_class->unrealize = gui_calendar_unrealize; widget_class->expose_event = gui_calendar_expose; widget_class->size_request = gui_calendar_size_request; widget_class->size_allocate = gui_calendar_size_allocate; widget_class->button_press_event = gui_calendar_button_press; widget_class->button_release_event = gui_calendar_button_release; widget_class->motion_notify_event = gui_calendar_motion_notify; widget_class->enter_notify_event = gui_calendar_enter_notify; widget_class->leave_notify_event = gui_calendar_leave_notify; widget_class->key_press_event = gui_calendar_key_press; widget_class->scroll_event = gui_calendar_scroll; widget_class->style_set = gui_calendar_style_set; widget_class->state_changed = gui_calendar_state_changed; widget_class->grab_notify = gui_calendar_grab_notify; widget_class->focus_out_event = gui_calendar_focus_out; widget_class->drag_data_get = gui_calendar_drag_data_get; widget_class->drag_motion = gui_calendar_drag_motion; widget_class->drag_leave = gui_calendar_drag_leave; widget_class->drag_drop = gui_calendar_drag_drop; widget_class->drag_data_received = gui_calendar_drag_data_received; g_object_class_install_property (gobject_class, PROP_YEAR, g_param_spec_int ("year", "Year", "The selected year", 0, G_MAXINT, 0, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_MONTH, g_param_spec_int ("month", "Month", "The selected month (as a number between 0 and 11)", 0, 11, 0, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_DAY, g_param_spec_int ("day", "Day", "The selected day (as a number between 1 and 31, or 0 to unselect the currently selected day)", 0, 31, 0, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_SHOW_HEADING, g_param_spec_boolean ("show-heading", "Show Heading", "If TRUE, a heading is displayed", TRUE, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_SHOW_DAY_NAMES, g_param_spec_boolean ("show-day-names", "Show Day Names", "If TRUE, day names are displayed", TRUE, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_NO_MONTH_CHANGE, g_param_spec_boolean ("no-month-change", "No Month Change", "If TRUE, the selected month cannot be changed", FALSE, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_SHOW_WEEK_NUMBERS, g_param_spec_boolean ("show-week-numbers", "Show Week Numbers", "If TRUE, week numbers are displayed", FALSE, GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_WEEK_START_MONDAY, g_param_spec_boolean ("week-start-monday", "Week Start Monday", "If TRUE, week starts at monday", FALSE, GTK_PARAM_READWRITE)); gui_calendar_signals[MONTH_CHANGED_SIGNAL] = g_signal_new ("month_changed", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, month_changed), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[DAY_SELECTED_SIGNAL] = g_signal_new ("day_selected", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, day_selected), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL] = g_signal_new ("day_selected_double_click", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, day_selected_double_click), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[PREV_MONTH_SIGNAL] = g_signal_new ("prev_month", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, prev_month), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[NEXT_MONTH_SIGNAL] = g_signal_new ("next_month", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, next_month), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[PREV_YEAR_SIGNAL] = g_signal_new ("prev_year", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, prev_year), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); gui_calendar_signals[NEXT_YEAR_SIGNAL] = g_signal_new ("next_year", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GuiCalendarClass, next_year), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_type_class_add_private (gobject_class, sizeof (GuiCalendarPrivate)); } /*------------------------------------------------------------------------------*/ static void gui_calendar_init (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); time_t secs; struct tm *tm; gint i; char buffer[255]; time_t tmp_time; GuiCalendarPrivate *priv; GdkColor tmpcolor; priv = calendar->priv = G_TYPE_INSTANCE_GET_PRIVATE (calendar, GUI_TYPE_CALENDAR, GuiCalendarPrivate); GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS); if (!default_abbreviated_dayname[0]) for (i=0; i<7; i++) { tmp_time= (i+3)*86400; strftime ( buffer, sizeof (buffer), "%a", gmtime (&tmp_time)); default_abbreviated_dayname[i] = g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL); } if (!default_monthname[0]) for (i=0; i<12; i++) { tmp_time=i*2764800; strftime ( buffer, sizeof (buffer), "%B", gmtime (&tmp_time)); default_monthname[i] = g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL); } /* Set defaults */ secs = time (NULL); tm = localtime (&secs); calendar->month = tm->tm_mon; calendar->year = 1900 + tm->tm_year; for (i=0;i<31;i++) { calendar->marked_date[i] = FALSE; calendar->event_marked_date[i] = FALSE; calendar->birthday_marked_date[i] = FALSE; } calendar->num_marked_dates = 0; calendar->event_num_marked_dates = 0; calendar->birthday_num_marked_dates = 0; calendar->selected_day = tm->tm_mday; calendar->display_flags = ( GUI_CALENDAR_SHOW_HEADING | GUI_CALENDAR_SHOW_DAY_NAMES ); calendar->highlight_row = -1; calendar->highlight_col = -1; calendar->focus_row = -1; calendar->focus_col = -1; priv->max_year_width = 0; priv->max_month_width = 0; priv->max_day_char_width = 0; priv->max_week_char_width = 0; priv->max_day_char_ascent = 0; priv->max_day_char_descent = 0; priv->max_label_char_ascent = 0; priv->max_label_char_descent = 0; priv->arrow_width = 10; priv->need_timer = 0; priv->timer = 0; priv->click_child = -1; priv->in_drag = 0; priv->drag_highlight = 0; gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_COPY); gtk_drag_dest_add_text_targets (widget); priv->year_before = 0; gdk_color_parse("#004048", &tmpcolor); calendar->header_color = tmpcolor; gdk_color_parse("#880000", &tmpcolor); calendar->weekend_color = tmpcolor; gdk_color_parse("#408080", &tmpcolor); calendar->selector_color = tmpcolor; calendar->mark_sign = '\''; calendar->frame_cursor_thickness = 2; calendar->enable_cursor = TRUE; priv->year_before = 0; /* years to be displayed before months */ priv->week_start = 0; /* sunday */ calendar_compute_days (calendar); } /*------------------------------------------------------------------------------*/ static void calendar_set_month_next (GuiCalendar *calendar) { gint month_len; g_return_if_fail (GTK_IS_WIDGET (calendar)); if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) return; if (calendar->month == 11) { calendar->month = 0; calendar->year++; } else { calendar->month++; } calendar_compute_days (calendar); g_signal_emit (calendar, gui_calendar_signals[NEXT_MONTH_SIGNAL], 0); g_signal_emit (calendar, gui_calendar_signals[MONTH_CHANGED_SIGNAL], 0); month_len = utl_get_month_length(g_date_is_leap_year (calendar->year), calendar->month + 1); if (month_len < calendar->selected_day) { calendar->selected_day = 0; gui_calendar_select_day (calendar, month_len); } else { gui_calendar_select_day (calendar, calendar->selected_day); } gtk_widget_queue_draw (GTK_WIDGET (calendar)); } /*------------------------------------------------------------------------------*/ static void calendar_set_year_prev (GuiCalendar *calendar) { gint month_len; g_return_if_fail (GTK_IS_WIDGET (calendar)); calendar->year--; calendar_compute_days (calendar); g_signal_emit (calendar, gui_calendar_signals[PREV_YEAR_SIGNAL], 0); g_signal_emit (calendar, gui_calendar_signals[MONTH_CHANGED_SIGNAL], 0); month_len = utl_get_month_length(g_date_is_leap_year (calendar->year), calendar->month + 1); if (month_len < calendar->selected_day) { calendar->selected_day = 0; gui_calendar_select_day (calendar, month_len); } else { gui_calendar_select_day (calendar, calendar->selected_day); } gtk_widget_queue_draw (GTK_WIDGET (calendar)); } /*------------------------------------------------------------------------------*/ static void calendar_set_year_next (GuiCalendar *calendar) { gint month_len; g_return_if_fail (GTK_IS_WIDGET (calendar)); calendar->year++; calendar_compute_days (calendar); g_signal_emit (calendar, gui_calendar_signals[NEXT_YEAR_SIGNAL], 0); g_signal_emit (calendar, gui_calendar_signals[MONTH_CHANGED_SIGNAL], 0); month_len = utl_get_month_length(g_date_is_leap_year (calendar->year), calendar->month + 1); if (month_len < calendar->selected_day) { calendar->selected_day = 0; gui_calendar_select_day (calendar, month_len); } else { gui_calendar_select_day (calendar, calendar->selected_day); } gtk_widget_queue_draw (GTK_WIDGET (calendar)); } /*------------------------------------------------------------------------------*/ static void calendar_compute_days (GuiCalendar *calendar) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (GTK_WIDGET (calendar)); gint month; gint year; gint ndays_in_month; gint ndays_in_prev_month; gint first_day; gint row; gint col; gint day; g_return_if_fail (GUI_IS_CALENDAR (calendar)); year = calendar->year; month = calendar->month + 1; ndays_in_month = utl_get_month_length(g_date_is_leap_year (year), month); first_day = utl_day_of_week (year, month, 1); first_day = (first_day + 7 - priv->week_start) % 7; /* Compute days of previous month */ if (month > 1) { ndays_in_prev_month = utl_get_month_length(g_date_is_leap_year (year), month-1); } else { ndays_in_prev_month = utl_get_month_length(g_date_is_leap_year (year), 12); } day = ndays_in_prev_month - first_day + 1; row = 0; if (first_day > 0) { for (col = 0; col < first_day; col++) { calendar->day[row][col] = day; calendar->day_month[row][col] = MONTH_PREV; day++; } } /* Compute days of current month */ col = first_day; for (day = 1; day <= ndays_in_month; day++) { calendar->day[row][col] = day; calendar->day_month[row][col] = MONTH_CURRENT; col++; if (col == 7) { row++; col = 0; } } /* Compute days of next month */ day = 1; for (; row <= 5; row++) { for (; col <= 6; col++) { calendar->day[row][col] = day; calendar->day_month[row][col] = MONTH_NEXT; day++; } col = 0; } } /*------------------------------------------------------------------------------*/ static void calendar_select_and_focus_day (GuiCalendar *calendar, guint day) { gint old_focus_row = calendar->focus_row; gint old_focus_col = calendar->focus_col; gint row; gint col; for (row = 0; row < 6; row ++) for (col = 0; col < 7; col++) { if (calendar->day_month[row][col] == MONTH_CURRENT && calendar->day[row][col] == day) { calendar->focus_row = row; calendar->focus_col = col; } } if (old_focus_row != -1 && old_focus_col != -1) { calendar_invalidate_day (calendar, old_focus_row, old_focus_col); } gui_calendar_select_day (calendar, day); } /*------------------------------------------------------------------------------*/ static gint calendar_row_height (GuiCalendar *calendar) { return (GUI_CALENDAR_GET_PRIVATE (calendar)->main_h - CALENDAR_MARGIN - ((calendar->display_flags & GUI_CALENDAR_SHOW_DAY_NAMES) ? CALENDAR_YSEP : CALENDAR_MARGIN)) / 6; } /*------------------------------------------------------------------------------*/ /* calendar_left_x_for_column: returns the x coordinate * for the left of the column */ static gint calendar_left_x_for_column (GuiCalendar *calendar, gint column) { gint width; gint x_left; if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) column = 6 - column; width = GUI_CALENDAR_GET_PRIVATE (calendar)->day_width; if (calendar->display_flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { x_left = CALENDAR_XSEP + (width + DAY_XSEP) * column; } else { x_left = CALENDAR_MARGIN + (width + DAY_XSEP) * column; } return x_left; } /*------------------------------------------------------------------------------*/ /* column_from_x: returns the column 0-6 that the * x pixel of the xwindow is in */ static gint calendar_column_from_x (GuiCalendar *calendar, gint event_x) { gint c, column; gint x_left, x_right; column = -1; for (c = 0; c < 7; c++) { x_left = calendar_left_x_for_column (calendar, c); x_right = x_left + GUI_CALENDAR_GET_PRIVATE (calendar)->day_width; if (event_x >= x_left && event_x < x_right) { column = c; break; } } return column; } /*------------------------------------------------------------------------------*/ /* calendar_top_y_for_row: returns the y coordinate * for the top of the row */ static gint calendar_top_y_for_row (GuiCalendar *calendar, gint row) { return (GUI_CALENDAR_GET_PRIVATE (calendar)->main_h - (CALENDAR_MARGIN + (6 - row) * calendar_row_height (calendar))); } /*------------------------------------------------------------------------------*/ /* row_from_y: returns the row 0-5 that the * y pixel of the xwindow is in */ static gint calendar_row_from_y (GuiCalendar *calendar, gint event_y) { gint r, row; gint height; gint y_top, y_bottom; height = calendar_row_height (calendar); row = -1; for (r = 0; r < 6; r++) { y_top = calendar_top_y_for_row (calendar, r); y_bottom = y_top + height; if (event_y >= y_top && event_y < y_bottom) { row = r; break; } } return row; } /*------------------------------------------------------------------------------*/ static void calendar_arrow_rectangle (GuiCalendar *calendar, guint arrow, GdkRectangle *rect) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); gboolean year_left; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) { year_left = priv->year_before; } else { year_left = !priv->year_before; } rect->y = 3; rect->width = priv->arrow_width; rect->height = priv->header_h - 7; switch (arrow) { case ARROW_MONTH_LEFT: if (year_left) { rect->x = (widget->allocation.width - 2 * widget->style->xthickness - (3 + 2*priv->arrow_width + priv->max_month_width)); } else { rect->x = 3; } break; case ARROW_MONTH_RIGHT: if (year_left) { rect->x = (widget->allocation.width - 2 * widget->style->xthickness - 3 - priv->arrow_width); } else { rect->x = (priv->arrow_width + priv->max_month_width); } break; case ARROW_YEAR_LEFT: if (year_left) { rect->x = 3; } else { rect->x = (widget->allocation.width - 2 * widget->style->xthickness - (3 + 2*priv->arrow_width + priv->max_year_width)); } break; case ARROW_YEAR_RIGHT: if (year_left) { rect->x = (priv->arrow_width + priv->max_year_width); } else { rect->x = (widget->allocation.width - 2 * widget->style->xthickness - 3 - priv->arrow_width); } break; } } /*------------------------------------------------------------------------------*/ static void calendar_day_rectangle (GuiCalendar *calendar, gint row, gint col, GdkRectangle *rect) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); rect->x = calendar_left_x_for_column (calendar, col); rect->y = calendar_top_y_for_row (calendar, row); rect->height = calendar_row_height (calendar); rect->width = priv->day_width; } /*------------------------------------------------------------------------------*/ static void calendar_set_month_prev (GuiCalendar *calendar) { gint month_len; if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) return; if (calendar->month == 0) { calendar->month = 11; calendar->year--; } else { calendar->month--; } month_len = utl_get_month_length(g_date_is_leap_year (calendar->year), calendar->month + 1); calendar_compute_days (calendar); g_signal_emit (calendar, gui_calendar_signals[PREV_MONTH_SIGNAL], 0); g_signal_emit (calendar, gui_calendar_signals[MONTH_CHANGED_SIGNAL], 0); if (month_len < calendar->selected_day) { calendar->selected_day = 0; gui_calendar_select_day (calendar, month_len); } else { if (calendar->selected_day < 0) calendar->selected_day = calendar->selected_day + 1 + utl_get_month_length(g_date_is_leap_year (calendar->year), calendar->month + 1); gui_calendar_select_day (calendar, calendar->selected_day); } gtk_widget_queue_draw (GTK_WIDGET (calendar)); } /*------------------------------------------------------------------------------*/ static void gui_calendar_finalize (GObject *object) { (* G_OBJECT_CLASS (gui_calendar_parent_class)->finalize) (object); } /*------------------------------------------------------------------------------*/ static void gui_calendar_destroy (GtkObject *object) { calendar_stop_spinning (GUI_CALENDAR (object)); GTK_OBJECT_CLASS (gui_calendar_parent_class)->destroy (object); } /*------------------------------------------------------------------------------*/ static void calendar_set_display_option (GuiCalendar *calendar, GuiCalendarDisplayOptions flag, gboolean setting) { GuiCalendarDisplayOptions flags; if (setting) { flags = calendar->display_flags | flag; } else { flags = calendar->display_flags & ~flag; } gui_calendar_set_display_options (calendar, flags); } /*------------------------------------------------------------------------------*/ static gboolean calendar_get_display_option (GuiCalendar *calendar, GuiCalendarDisplayOptions flag) { return (calendar->display_flags & flag) != 0; } /*------------------------------------------------------------------------------*/ static void gui_calendar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GuiCalendar *calendar; calendar = GUI_CALENDAR (object); switch (prop_id) { case PROP_YEAR: gui_calendar_select_month (calendar, calendar->month, g_value_get_int (value)); break; case PROP_MONTH: gui_calendar_select_month (calendar, g_value_get_int (value), calendar->year); break; case PROP_DAY: gui_calendar_select_day (calendar, g_value_get_int (value)); break; case PROP_SHOW_HEADING: calendar_set_display_option (calendar, GUI_CALENDAR_SHOW_HEADING, g_value_get_boolean (value)); break; case PROP_SHOW_DAY_NAMES: calendar_set_display_option (calendar, GUI_CALENDAR_SHOW_DAY_NAMES, g_value_get_boolean (value)); break; case PROP_NO_MONTH_CHANGE: calendar_set_display_option (calendar, GUI_CALENDAR_NO_MONTH_CHANGE, g_value_get_boolean (value)); break; case PROP_SHOW_WEEK_NUMBERS: calendar_set_display_option (calendar, GUI_CALENDAR_SHOW_WEEK_NUMBERS, g_value_get_boolean (value)); break; case PROP_WEEK_START_MONDAY: calendar_set_display_option (calendar, GUI_CALENDAR_WEEK_START_MONDAY, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } /*------------------------------------------------------------------------------*/ static void gui_calendar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GuiCalendar *calendar; calendar = GUI_CALENDAR (object); switch (prop_id) { case PROP_YEAR: g_value_set_int (value, calendar->year); break; case PROP_MONTH: g_value_set_int (value, calendar->month); break; case PROP_DAY: g_value_set_int (value, calendar->selected_day); break; case PROP_SHOW_HEADING: g_value_set_boolean (value, calendar_get_display_option (calendar, GUI_CALENDAR_SHOW_HEADING)); break; case PROP_SHOW_DAY_NAMES: g_value_set_boolean (value, calendar_get_display_option (calendar, GUI_CALENDAR_SHOW_DAY_NAMES)); break; case PROP_NO_MONTH_CHANGE: g_value_set_boolean (value, calendar_get_display_option (calendar, GUI_CALENDAR_NO_MONTH_CHANGE)); break; case PROP_SHOW_WEEK_NUMBERS: g_value_set_boolean (value, calendar_get_display_option (calendar, GUI_CALENDAR_SHOW_WEEK_NUMBERS)); break; case PROP_WEEK_START_MONDAY: g_value_set_boolean (value, calendar_get_display_option (calendar, GUI_CALENDAR_WEEK_START_MONDAY)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } /*------------------------------------------------------------------------------*/ static void calendar_realize_arrows (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); GdkWindowAttr attributes; gint attributes_mask; gint i; /* arrow windows */ if (! (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) && (calendar->display_flags & GUI_CALENDAR_SHOW_HEADING)) { attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = (gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; for (i = 0; i < 4; i++) { GdkRectangle rect; calendar_arrow_rectangle (calendar, i, &rect); attributes.x = rect.x; attributes.y = rect.y; attributes.width = rect.width; attributes.height = rect.height; priv->arrow_win[i] = gdk_window_new (priv->header_win, &attributes, attributes_mask); if (GTK_WIDGET_IS_SENSITIVE (widget)) priv->arrow_state[i] = GTK_STATE_NORMAL; else priv->arrow_state[i] = GTK_STATE_INSENSITIVE; gdk_window_set_background (priv->arrow_win[i], HEADER_BG_COLOR (GTK_WIDGET (calendar))); gdk_window_show (priv->arrow_win[i]); gdk_window_set_user_data (priv->arrow_win[i], widget); } } else { for (i = 0; i < 4; i++) priv->arrow_win[i] = NULL; } } /*------------------------------------------------------------------------------*/ static void calendar_realize_header (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); GdkWindowAttr attributes; gint attributes_mask; /* header window */ if (calendar->display_flags & GUI_CALENDAR_SHOW_HEADING) { attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; attributes.x = widget->style->xthickness; attributes.y = widget->style->ythickness; attributes.width = widget->allocation.width - 2 * attributes.x; attributes.height = priv->header_h - 2 * attributes.y; priv->header_win = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_background (priv->header_win, HEADER_BG_COLOR (GTK_WIDGET (calendar))); gdk_window_show (priv->header_win); gdk_window_set_user_data (priv->header_win, widget); } else { priv->header_win = NULL; } calendar_realize_arrows (calendar); } /*------------------------------------------------------------------------------*/ static void calendar_realize_day_names (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); GdkWindowAttr attributes; gint attributes_mask; /* day names window */ if ( calendar->display_flags & GUI_CALENDAR_SHOW_DAY_NAMES) { attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; attributes.x = (widget->style->xthickness + INNER_BORDER); attributes.y = priv->header_h + (widget->style->ythickness + INNER_BORDER); attributes.width = (widget->allocation.width - (widget->style->xthickness + INNER_BORDER) * 2); attributes.height = priv->day_name_h; priv->day_name_win = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_background (priv->day_name_win, BACKGROUND_COLOR ( GTK_WIDGET ( calendar))); gdk_window_show (priv->day_name_win); gdk_window_set_user_data (priv->day_name_win, widget); } else { priv->day_name_win = NULL; } } /*------------------------------------------------------------------------------*/ static void calendar_realize_week_numbers (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); GdkWindowAttr attributes; gint attributes_mask; /* week number window */ if (calendar->display_flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; attributes.x = widget->style->xthickness + INNER_BORDER; attributes.y = (priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER)); attributes.width = priv->week_width; attributes.height = priv->main_h; priv->week_win = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_background (priv->week_win, BACKGROUND_COLOR (GTK_WIDGET (calendar))); gdk_window_show (priv->week_win); gdk_window_set_user_data (priv->week_win, widget); } else { priv->week_win = NULL; } } /*------------------------------------------------------------------------------*/ static void gui_calendar_realize (GtkWidget *widget) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); GdkWindowAttr attributes; gint attributes_mask; GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; attributes.height = widget->allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.event_mask = (gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK |GDK_KEY_PRESS_MASK | GDK_SCROLL_MASK); attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; widget->window = gdk_window_new (widget->parent->window, &attributes, attributes_mask); widget->style = gtk_style_attach (widget->style, widget->window); /* header window */ calendar_realize_header (calendar); /* day names window */ calendar_realize_day_names (calendar); /* week number window */ calendar_realize_week_numbers (calendar); /* main window */ attributes.event_mask = (gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); attributes.x = priv->week_width + (widget->style->ythickness + INNER_BORDER); attributes.y = (priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER)); attributes.width = (widget->allocation.width - attributes.x - (widget->style->xthickness + INNER_BORDER)); attributes.height = priv->main_h; priv->main_win = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_background (priv->main_win, BACKGROUND_COLOR ( GTK_WIDGET ( calendar))); gdk_window_show (priv->main_win); gdk_window_set_user_data (priv->main_win, widget); gdk_window_set_background (widget->window, BACKGROUND_COLOR (widget)); gdk_window_show (widget->window); gdk_window_set_user_data (widget->window, widget); } /*------------------------------------------------------------------------------*/ static void gui_calendar_unrealize (GtkWidget *widget) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint i; if (priv->header_win) { for (i = 0; i < 4; i++) { if (priv->arrow_win[i]) { gdk_window_set_user_data (priv->arrow_win[i], NULL); gdk_window_destroy (priv->arrow_win[i]); priv->arrow_win[i] = NULL; } } gdk_window_set_user_data (priv->header_win, NULL); gdk_window_destroy (priv->header_win); priv->header_win = NULL; } if (priv->week_win) { gdk_window_set_user_data (priv->week_win, NULL); gdk_window_destroy (priv->week_win); priv->week_win = NULL; } if (priv->main_win) { gdk_window_set_user_data (priv->main_win, NULL); gdk_window_destroy (priv->main_win); priv->main_win = NULL; } if (priv->day_name_win) { gdk_window_set_user_data (priv->day_name_win, NULL); gdk_window_destroy (priv->day_name_win); priv->day_name_win = NULL; } if (GTK_WIDGET_CLASS (gui_calendar_parent_class)->unrealize) (* GTK_WIDGET_CLASS (gui_calendar_parent_class)->unrealize) (widget); } /*------------------------------------------------------------------------------*/ static void gui_calendar_size_request (GtkWidget *widget, GtkRequisition *requisition) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); PangoLayout *layout; PangoRectangle logical_rect; gint height; gint i; gint calendar_margin = CALENDAR_MARGIN; gint header_width, main_width; gint max_header_height = 0; gint focus_width; gint focus_padding; gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_padding, NULL); layout = gtk_widget_create_pango_layout (widget, NULL); /* calculate the requisition width for the widget */ /* header width */ if (calendar->display_flags & GUI_CALENDAR_SHOW_HEADING) { priv->max_month_width = 0; for (i = 0; i < 12; i++) { pango_layout_set_text (layout, default_monthname[i], -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); priv->max_month_width = MAX (priv->max_month_width, logical_rect.width + 8); max_header_height = MAX (max_header_height, logical_rect.height); } priv->max_year_width = 0; pango_layout_set_text (layout, "2000", -1); /* the widest year text */ pango_layout_get_pixel_extents (layout, NULL, &logical_rect); priv->max_year_width = MAX (priv->max_year_width, logical_rect.width + 8); max_header_height = MAX (max_header_height, logical_rect.height); } else { priv->max_month_width = 0; priv->max_year_width = 0; } if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) header_width = (priv->max_month_width + priv->max_year_width + 3 * 3); else header_width = (priv->max_month_width + priv->max_year_width + 4 * priv->arrow_width + 3 * 3); /* mainwindow labels width */ priv->max_day_char_width = 0; priv->max_day_char_ascent = 0; priv->max_day_char_descent = 0; priv->min_day_width = 0; for (i = 0; i < 9; i++) { gchar buffer[32]; g_snprintf (buffer, sizeof (buffer), "%d", i * 11); /* %d - calendar day digits */ pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); priv->min_day_width = MAX (priv->min_day_width, logical_rect.width); priv->max_day_char_ascent = MAX (priv->max_day_char_ascent, PANGO_ASCENT (logical_rect)); priv->max_day_char_descent = MAX (priv->max_day_char_descent, PANGO_DESCENT (logical_rect)); } /* We add one to max_day_char_width to be able to make the marked day "bold" */ priv->max_day_char_width = priv->min_day_width / 2 + 1; priv->max_label_char_ascent = 0; priv->max_label_char_descent = 0; if (calendar->display_flags & GUI_CALENDAR_SHOW_DAY_NAMES) for (i = 0; i < 7; i++) { pango_layout_set_text (layout, default_abbreviated_dayname[i], -1); pango_layout_line_get_pixel_extents (pango_layout_get_lines (layout)->data, NULL, &logical_rect); priv->min_day_width = MAX (priv->min_day_width, logical_rect.width); priv->max_label_char_ascent = MAX (priv->max_label_char_ascent, PANGO_ASCENT (logical_rect)); priv->max_label_char_descent = MAX (priv->max_label_char_descent, PANGO_DESCENT (logical_rect)); } priv->max_week_char_width = 0; if (calendar->display_flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) for (i = 0; i < 9; i++) { gchar buffer[32]; g_snprintf (buffer, sizeof (buffer), "%d", i * 11); /* %d - calendar week digits */ pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); priv->max_week_char_width = MAX (priv->max_week_char_width, logical_rect.width / 2); } main_width = (7 * (priv->min_day_width + (focus_padding + focus_width) * 2) + (DAY_XSEP * 6) + CALENDAR_MARGIN * 2 + (priv->max_week_char_width ? priv->max_week_char_width * 2 + (focus_padding + focus_width) * 2 + CALENDAR_XSEP * 2 : 0)); requisition->width = MAX (header_width, main_width + INNER_BORDER * 2) + widget->style->xthickness * 2; /* calculate the requisition height for the widget */ if (calendar->display_flags & GUI_CALENDAR_SHOW_HEADING) { priv->header_h = (max_header_height + CALENDAR_YSEP * 2); } else { priv->header_h = 0; } if (calendar->display_flags & GUI_CALENDAR_SHOW_DAY_NAMES) { priv->day_name_h = (priv->max_label_char_ascent + priv->max_label_char_descent + 2 * (focus_padding + focus_width) + calendar_margin); calendar_margin = CALENDAR_YSEP; } else { priv->day_name_h = 0; } priv->main_h = (CALENDAR_MARGIN + calendar_margin + 6 * (priv->max_day_char_ascent + priv->max_day_char_descent + 2 * (focus_padding + focus_width)) + DAY_YSEP * 5); height = (priv->header_h + priv->day_name_h + priv->main_h); requisition->height = height + (widget->style->ythickness + INNER_BORDER) * 2; g_object_unref (layout); } /*------------------------------------------------------------------------------*/ static void gui_calendar_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint xthickness = widget->style->xthickness; gint ythickness = widget->style->xthickness; guint i; widget->allocation = *allocation; if (calendar->display_flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { priv->day_width = (priv->min_day_width * ((allocation->width - (xthickness + INNER_BORDER) * 2 - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6) - CALENDAR_XSEP * 2)) / (7 * priv->min_day_width + priv->max_week_char_width * 2)); priv->week_width = ((allocation->width - (xthickness + INNER_BORDER) * 2 - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6) - CALENDAR_XSEP * 2 ) - priv->day_width * 7 + CALENDAR_MARGIN + CALENDAR_XSEP); } else { priv->day_width = (allocation->width - (xthickness + INNER_BORDER) * 2 - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6))/7; priv->week_width = 0; } if (GTK_WIDGET_REALIZED (widget)) { gdk_window_move_resize (widget->window, allocation->x, allocation->y, allocation->width, allocation->height); if (priv->header_win) gdk_window_move_resize (priv->header_win, xthickness, ythickness, allocation->width - 2 * xthickness, priv->header_h); for (i = 0 ; i < 4 ; i++) { if (priv->arrow_win[i]) { GdkRectangle rect; calendar_arrow_rectangle (calendar, i, &rect); gdk_window_move_resize (priv->arrow_win[i], rect.x, rect.y, rect.width, rect.height); } } if (priv->day_name_win) gdk_window_move_resize (priv->day_name_win, xthickness + INNER_BORDER, priv->header_h + (widget->style->ythickness + INNER_BORDER), allocation->width - (xthickness + INNER_BORDER) * 2, priv->day_name_h); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) { if (priv->week_win) gdk_window_move_resize (priv->week_win, (xthickness + INNER_BORDER), priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER), priv->week_width, priv->main_h); gdk_window_move_resize (priv->main_win, priv->week_width + (xthickness + INNER_BORDER), priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER), allocation->width - priv->week_width - (xthickness + INNER_BORDER) * 2, priv->main_h); } else { gdk_window_move_resize (priv->main_win, (xthickness + INNER_BORDER), priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER), allocation->width - priv->week_width - (xthickness + INNER_BORDER) * 2, priv->main_h); if (priv->week_win) gdk_window_move_resize (priv->week_win, allocation->width - priv->week_width - (xthickness + INNER_BORDER), priv->header_h + priv->day_name_h + (widget->style->ythickness + INNER_BORDER), priv->week_width, priv->main_h); } } } /*------------------------------------------------------------------------------*/ static void calendar_paint_header (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); cairo_t *cr; char buffer[255]; int x, y; gint header_width; gint max_month_width; gint max_year_width; PangoLayout *layout; PangoRectangle logical_rect; gboolean year_left; time_t tmp_time; struct tm *tm; gchar *str; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) { year_left = priv->year_before; } else { year_left = !priv->year_before; } cr = gdk_cairo_create (priv->header_win); header_width = widget->allocation.width - 2 * widget->style->xthickness; max_month_width = priv->max_month_width; max_year_width = priv->max_year_width; gtk_paint_shadow (widget->style, priv->header_win, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, widget, "calendar", 0, 0, header_width, priv->header_h); tmp_time = 1; /* Jan 1 1970, 00:00:01 UTC */ tm = gmtime (&tmp_time); tm->tm_year = calendar->year - 1900; strftime (buffer, sizeof (buffer), "%Y", tm); /* year format */ str = g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL); layout = gtk_widget_create_pango_layout (widget, str); g_free (str); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); /* draw title */ y = (priv->header_h - logical_rect.height) / 2; /* draw year and its arrows */ if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) { if (year_left) { x = 3 + (max_year_width - logical_rect.width)/2; } else { x = header_width - (3 + max_year_width - (max_year_width - logical_rect.width)/2); } } else { if (year_left) { x = 3 + priv->arrow_width + (max_year_width - logical_rect.width)/2; } else { x = header_width - (3 + priv->arrow_width + max_year_width - (max_year_width - logical_rect.width)/2); } } gdk_cairo_set_source_color (cr, HEADER_FG_COLOR (GTK_WIDGET (calendar))); cairo_move_to (cr, x, y); pango_cairo_show_layout (cr, layout); /* draw month */ g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[calendar->month]); pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) { if (year_left) { x = header_width - (3 + max_month_width - (max_month_width - logical_rect.width)/2); } else { x = 3 + (max_month_width - logical_rect.width) / 2; } } else { if (year_left) { x = header_width - (3 + priv->arrow_width + max_month_width - (max_month_width - logical_rect.width)/2); } else { x = 3 + priv->arrow_width + (max_month_width - logical_rect.width)/2; } } cairo_move_to (cr, x, y); pango_cairo_show_layout (cr, layout); g_object_unref (layout); cairo_destroy (cr); } /*------------------------------------------------------------------------------*/ static void calendar_paint_day_names (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); cairo_t *cr; char buffer[255]; int day,i; int day_width, cal_width; int day_wid_sep; PangoLayout *layout; PangoRectangle logical_rect; gint focus_padding; gint focus_width; cr = gdk_cairo_create (priv->day_name_win); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_padding, NULL); day_width = priv->day_width; cal_width = widget->allocation.width; day_wid_sep = day_width + DAY_XSEP; /* draw rectangles as inverted background for the labels */ gdk_cairo_set_source_color (cr, &calendar->header_color); cairo_rectangle (cr, CALENDAR_MARGIN, CALENDAR_MARGIN, cal_width-CALENDAR_MARGIN * 2, priv->day_name_h - CALENDAR_MARGIN); cairo_fill (cr); if (calendar->display_flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { cairo_rectangle (cr, CALENDAR_MARGIN, priv->day_name_h - CALENDAR_YSEP, priv->week_width - CALENDAR_YSEP - CALENDAR_MARGIN, CALENDAR_YSEP); cairo_fill (cr); } /* write the labels */ layout = gtk_widget_create_pango_layout (widget, NULL); gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget)); for (i = 0; i < 7; i++) { if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) { day = 6 - i; } else { day = i; } day = (day + priv->week_start) % 7; g_snprintf (buffer, sizeof (buffer), "%s", default_abbreviated_dayname[day]); pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); cairo_move_to (cr, (CALENDAR_MARGIN + + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ? (priv->week_width + (priv->week_width ? CALENDAR_XSEP : 0)) : 0) + day_wid_sep * i + (day_width - logical_rect.width)/2), CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y); pango_cairo_show_layout (cr, layout); } g_object_unref (layout); cairo_destroy (cr); } /*------------------------------------------------------------------------------*/ static void calendar_paint_week_numbers (GuiCalendar *calendar) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); cairo_t *cr; guint row, week = 0, year; gint x_loc; char buffer[32]; gint y_loc, day_height; PangoLayout *layout; PangoRectangle logical_rect; gint focus_padding; gint focus_width; cr = gdk_cairo_create (priv->week_win); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_padding, NULL); /* draw a rectangle as inverted background for the labels */ gdk_cairo_set_source_color (cr, &calendar->header_color); if (priv->day_name_win) { cairo_rectangle (cr, CALENDAR_MARGIN, 0, priv->week_width - CALENDAR_MARGIN, priv->main_h - CALENDAR_MARGIN); } else { cairo_rectangle (cr, CALENDAR_MARGIN, CALENDAR_MARGIN, priv->week_width - CALENDAR_MARGIN, priv->main_h - 2 * CALENDAR_MARGIN); } cairo_fill (cr); /* write the labels */ layout = gtk_widget_create_pango_layout (widget, NULL); gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget)); day_height = calendar_row_height (calendar); for (row = 0; row < 6; row++) { gboolean result; year = calendar->year; if (calendar->day[row][6] < 15 && row > 3 && calendar->month == 11) year++; result = utl_week_of_year (&week, &year, ((calendar->day[row][6] < 15 && row > 3 ? 1 : 0) + calendar->month) % 12 + 1, calendar->day[row][6]); g_return_if_fail (result); g_snprintf (buffer, sizeof (buffer), "%d", week); /* %d - calendar week digits, %Id - for localized digits */ pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); y_loc = calendar_top_y_for_row (calendar, row) + (day_height - logical_rect.height) / 2; x_loc = (priv->week_width - logical_rect.width - CALENDAR_XSEP - focus_padding - focus_width); cairo_move_to (cr, x_loc, y_loc); pango_cairo_show_layout (cr, layout); } g_object_unref (layout); cairo_destroy (cr); } /*------------------------------------------------------------------------------*/ static void calendar_invalidate_day_num (GuiCalendar *calendar, gint day) { gint r, c, row, col; row = -1; col = -1; for (r = 0; r < 6; r++) for (c = 0; c < 7; c++) if (calendar->day_month[r][c] == MONTH_CURRENT && calendar->day[r][c] == day) { row = r; col = c; } g_return_if_fail (row != -1); g_return_if_fail (col != -1); calendar_invalidate_day (calendar, row, col); } /*------------------------------------------------------------------------------*/ static void calendar_invalidate_day (GuiCalendar *calendar, gint row, gint col) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); if (priv->main_win) { GdkRectangle day_rect; calendar_day_rectangle (calendar, row, col, &day_rect); gdk_window_invalidate_rect (priv->main_win, &day_rect, FALSE); } } /*------------------------------------------------------------------------------*/ static void cal_draw_rounded_rectangle (cairo_t *cr, GdkRectangle *rect, GdkColor *color, gint alpha, gint stroke) { utl_cairo_set_color (cr, color, alpha); utl_draw_rounded_rectangle (cr, rect->x, rect->y, rect->width, rect->height, rect->height * 0.2, 1); utl_cairo_draw (cr, stroke); } /*------------------------------------------------------------------------------*/ static void cal_draw_left_arrow (cairo_t *cr, GdkRectangle *rect, GdkColor *color, gint alpha) { utl_cairo_set_color (cr, color, alpha); utl_draw_left_arrow (cr, rect->x + rect->width * 0.8, rect->y + rect->height * 0.5, rect->width * 0.13, rect->height * 0.55, 0.65); cairo_fill (cr); } /*------------------------------------------------------------------------------*/ static void cal_draw_ellipse (cairo_t *cr, GdkRectangle *rect, GdkColor *color) { gdk_cairo_set_source_color (cr, color); cairo_save (cr); cairo_scale (cr, 2, 1); cairo_arc (cr, (rect->x + (rect->width * 0.5)) * 0.5, rect->y + rect->height * 0.5, rect->height * 0.5 - 3.0, 0.0, 2.0 * M_PI); cairo_fill (cr); cairo_restore (cr); } /*------------------------------------------------------------------------------*/ static void cal_draw_wave (cairo_t *cr, GdkRectangle *rect, GdkColor *color) { gdk_cairo_set_source_color (cr, color); cairo_set_line_width (cr, rect->height * 0.7); cairo_move_to (cr, rect->x + rect->width * 0.2, rect->y + rect->height * 0.5); cairo_curve_to (cr, rect->x + rect->width * 0.5, rect->y + rect->height * 0.3, rect->x + rect->width * 0.5, rect->y + rect->height * 0.7, rect->x + rect->width * 0.8, rect->y + rect->height * 0.5); cairo_stroke (cr); } /*------------------------------------------------------------------------------*/ static void cal_draw_circle (cairo_t *cr, GdkRectangle *rect, GdkColor *color) { gdk_cairo_set_source_color (cr, color); cairo_arc (cr, rect->x + rect->width * 0.5, rect->y + rect->height * 0.5, rect->height * 0.5 - 3.0, 0.0, 2.0 * M_PI); cairo_fill (cr); } /*------------------------------------------------------------------------------*/ static void cal_draw_freehand_circle (cairo_t *cr, GdkRectangle *rect, GdkColor *color, guint alpha) { gdouble dtop, dbottom, dleft, dright; gdouble dwidth, dheight; dheight = rect->height; dwidth = dheight * 2.0; dtop = rect->y; dbottom = rect->y + dheight; dleft = rect->x + (rect->width - dwidth) / 2.0; dright = dleft + dwidth; utl_cairo_set_color (cr, color, alpha); cairo_move_to (cr, dleft + dwidth * 0.60, dtop); cairo_curve_to (cr, dleft + dwidth * 0.05, dtop, dleft, dbottom, dleft + dwidth * 0.50, dbottom); cairo_curve_to (cr, dright, dbottom, dright - dwidth * 0.05, dtop - dheight * 0.15, dleft + dwidth * 0.40, dtop + dheight * 0.20); cairo_line_to (cr, dleft + dwidth * 0.40, dtop + dheight * 0.25); cairo_curve_to (cr, dright - dwidth * 0.15, dtop - dheight * 0.05, dright - dwidth * 0.05, dbottom - dheight * 0.15, dleft + dwidth * 0.50, dbottom - dheight * 0.15); cairo_curve_to (cr, dleft + dwidth * 0.05, dbottom - dheight * 0.15, dleft + dwidth * 0.20, dtop, dleft + dwidth * 0.60, dtop + dheight * 0.05); cairo_close_path (cr); cairo_fill (cr); } /*------------------------------------------------------------------------------*/ static void cal_cairo_draw_cursor (cairo_t *cr, GdkRectangle *rect, gint thickness) { gint bias_x, bias_y, bias; bias = thickness % 2; bias_x = thickness >> 1; bias_y = bias_x + bias; cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); cairo_move_to (cr, rect->x+bias, rect->y+bias_y-bias); cairo_line_to (cr, rect->x+rect->width-bias_x, rect->y+bias_y-bias); cairo_line_to (cr, rect->x+rect->width-bias_x, rect->y+rect->height-bias_y); cairo_line_to (cr, rect->x+bias_x+bias, rect->y+rect->height-bias_y); cairo_line_to (cr, rect->x+bias_x+bias, rect->y+bias_y-bias_y*bias); cairo_set_line_width (cr, thickness); cairo_stroke (cr); cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); } /*------------------------------------------------------------------------------*/ static void calendar_paint_day (GuiCalendar *calendar, gint row, gint col) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); cairo_t *cr; GdkColor *text_color; gchar buffer[32]; gint day; gint x_loc, y_loc; GdkRectangle day_rect; time_t secs; struct tm *tm; PangoLayout *layout; PangoRectangle logical_rect; g_return_if_fail (row < 6); g_return_if_fail (col < 7); cr = gdk_cairo_create (priv->main_win); day = calendar->day[row][col]; calendar_day_rectangle (calendar, row, col, &day_rect); if (calendar->mark_sign) { if (calendar->marked_date[day-1] && calendar->day_month[row][col] == MONTH_CURRENT) { g_snprintf (buffer, sizeof (buffer), "%lc%d", calendar->mark_sign, day); } else { g_snprintf (buffer, sizeof (buffer), "%d", day); } } else { g_snprintf (buffer, sizeof (buffer), "%d", day); } text_color = NORMAL_DAY_COLOR (widget); if (g_utf8_validate(buffer, -1, NULL) == FALSE) { g_snprintf (buffer, sizeof (buffer), "%d", day); } layout = gtk_widget_create_pango_layout (widget, buffer); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); x_loc = day_rect.x + day_rect.width / 2 + priv->max_day_char_width; x_loc -= logical_rect.width; y_loc = day_rect.y + (day_rect.height - logical_rect.height) / 2; /* mark day note */ if (calendar->marked_date[day-1] && calendar->day_month[row][col] == MONTH_CURRENT) { cal_draw_rounded_rectangle (cr, &day_rect, &calendar->marked_date_color[day-1], OPAQUE, 0); } /* mark event */ if (calendar->event_marked_date[day-1] && calendar->day_month[row][col] == MONTH_CURRENT) { if (calendar->event_marker_type == EVENT_MARKER_ELLIPSE) { cal_draw_ellipse (cr, &day_rect, &calendar->event_marker_color); } else if (calendar->event_marker_type == EVENT_MARKER_WAVE) { cal_draw_wave (cr, &day_rect, &calendar->event_marker_color); } else { cal_draw_circle (cr, &day_rect, &calendar->event_marker_color); } } /* mark birthday */ if (calendar->birthday_marked_date[day-1] && calendar->day_month[row][col] == MONTH_CURRENT) { gdk_cairo_set_source_color (cr, &calendar->birthday_marker_color); utl_draw_rounded_rectangle (cr, day_rect.x + day_rect.width - day_rect.height * 0.35, day_rect.y + (day_rect.height - day_rect.height * 0.7) * 0.5, day_rect.height * 0.25, day_rect.height * 0.7, 3.5, 1.0); utl_cairo_draw (cr, 0); } /* mark current day */ secs = time (NULL); tm = localtime (&secs); if (calendar->month == tm->tm_mon && calendar->year == 1900 + tm->tm_year && calendar->day[row][col] == tm->tm_mday && calendar->day_month[row][col] == MONTH_CURRENT) { if (calendar->today_marker_type == TODAY_MARKER_FREEHAND_CIRCLE) { cal_draw_freehand_circle (cr, &day_rect, &(calendar->today_marker_color), calendar->today_marker_alpha); } else { cal_draw_left_arrow (cr, &day_rect, &(calendar->today_marker_color), calendar->today_marker_alpha); } } if (calendar->day_month[row][col] == MONTH_PREV) { text_color = PREV_MONTH_COLOR (widget); } else if (calendar->day_month[row][col] == MONTH_NEXT) { text_color = NEXT_MONTH_COLOR (widget); } else { if (calendar->selected_day == day && calendar->enable_cursor == TRUE) { utl_cairo_set_color (cr, &calendar->selector_color, calendar->selector_alpha); if (calendar->cursor_type == CURSOR_FRAME) { cal_cairo_draw_cursor (cr, &day_rect, calendar->frame_cursor_thickness); } else { gdk_cairo_rectangle (cr, &day_rect); cairo_fill (cr); } } text_color = NORMAL_DAY_COLOR (widget); /* mark saturday and sunday */ if (((col == 5 || col == 6) && (priv->week_start == 1)) || ((!col || col == 6) && !priv->week_start)) { if (calendar->day_month[row][col] != MONTH_NEXT && calendar->day_month[row][col] != MONTH_PREV) { text_color = &calendar->weekend_color; } } if (calendar->enable_cursor == TRUE && calendar->cursor_type == CURSOR_BLOCK && calendar->selected_day == day && calendar->selector_alpha == OPAQUE) { text_color = SELECTED_FG_COLOR (widget); } } gdk_cairo_set_source_color (cr, text_color); cairo_move_to (cr, x_loc, y_loc); pango_cairo_show_layout (cr, layout); if (calendar->marked_date[day-1] && calendar->day_month[row][col] == MONTH_CURRENT) { gdk_cairo_set_source_color (cr, text_color); cairo_move_to (cr, x_loc - 1, y_loc); pango_cairo_show_layout (cr, layout); } if (GTK_WIDGET_HAS_FOCUS (calendar) && calendar->focus_row == row && calendar->focus_col == col) { GtkStateType state; if (calendar->selected_day == day) { state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE; } else { state = GTK_STATE_NORMAL; } gtk_paint_focus (widget->style, priv->main_win, state, NULL, widget, "calendar-day", day_rect.x, day_rect.y, day_rect.width, day_rect.height); } g_object_unref (layout); cairo_destroy (cr); } /*------------------------------------------------------------------------------*/ static void calendar_paint_main (GuiCalendar *calendar) { gint row, col; for (col = 0; col < 7; col++) for (row = 0; row < 6; row++) calendar_paint_day (calendar, row, col); } /*------------------------------------------------------------------------------*/ static void calendar_invalidate_arrow (GuiCalendar *calendar, guint arrow) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); GdkWindow *window; window = priv->arrow_win[arrow]; if (window) gdk_window_invalidate_rect (window, NULL, FALSE); } /*------------------------------------------------------------------------------*/ static void calendar_paint_arrow (GuiCalendar *calendar, guint arrow) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); GdkWindow *window; window = priv->arrow_win[arrow]; if (window) { cairo_t *cr = gdk_cairo_create (window); gint width, height; gint state; state = priv->arrow_state[arrow]; gdk_cairo_set_source_color (cr, &widget->style->bg[state]); cairo_paint (cr); cairo_destroy (cr); gdk_drawable_get_size (window, &width, &height); if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT) gtk_paint_arrow (widget->style, window, state, GTK_SHADOW_OUT, NULL, widget, "calendar", GTK_ARROW_LEFT, TRUE, width/2 - 3, height/2 - 4, 8, 8); else gtk_paint_arrow (widget->style, window, state, GTK_SHADOW_OUT, NULL, widget, "calendar", GTK_ARROW_RIGHT, TRUE, width/2 - 4, height/2 - 4, 8, 8); } } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_expose (GtkWidget *widget, GdkEventExpose *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); int i; if (GTK_WIDGET_DRAWABLE (widget)) { if (calendar->display_flags & GUI_CALENDAR_WEEK_START_MONDAY) { priv->week_start = 1; /* monday */ } else { priv->week_start = 0; /* sunday */ } calendar_compute_days (calendar); if (event->window == priv->main_win) calendar_paint_main (calendar); if (event->window == priv->header_win) calendar_paint_header (calendar); for (i = 0; i < 4; i++) if (event->window == priv->arrow_win[i]) calendar_paint_arrow (calendar, i); if (event->window == priv->day_name_win) calendar_paint_day_names (calendar); if (event->window == priv->week_win) calendar_paint_week_numbers (calendar); if (event->window == widget->window) { gtk_paint_shadow (widget->style, widget->window, GTK_WIDGET_STATE (widget), GTK_SHADOW_IN, NULL, widget, "calendar", 0, 0, widget->allocation.width, widget->allocation.height); } } return FALSE; } /*------------------------------------------------------------------------------*/ static void calendar_arrow_action (GuiCalendar *calendar, guint arrow) { switch (arrow) { case ARROW_YEAR_LEFT: calendar_set_year_prev (calendar); break; case ARROW_YEAR_RIGHT: calendar_set_year_next (calendar); break; case ARROW_MONTH_LEFT: calendar_set_month_prev (calendar); break; case ARROW_MONTH_RIGHT: calendar_set_month_next (calendar); break; default: ; /* do nothing */ } } /*------------------------------------------------------------------------------*/ static gboolean calendar_timer (gpointer data) { GuiCalendar *calendar = data; GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); gboolean retval = FALSE; GDK_THREADS_ENTER (); if (priv->timer) { calendar_arrow_action (calendar, priv->click_child); if (priv->need_timer) { GtkSettings *settings; guint timeout; settings = gtk_widget_get_settings (GTK_WIDGET (calendar)); g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); priv->need_timer = FALSE; priv->timer = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, timeout * SCROLL_DELAY_FACTOR, (GSourceFunc) calendar_timer, (gpointer) calendar, NULL); } else retval = TRUE; } GDK_THREADS_LEAVE (); return retval; } /*------------------------------------------------------------------------------*/ static void calendar_start_spinning (GuiCalendar *calendar, gint click_child) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); priv->click_child = click_child; if (!priv->timer) { GtkSettings *settings; guint timeout; settings = gtk_widget_get_settings (GTK_WIDGET (calendar)); g_object_get (settings, "gtk-timeout-initial", &timeout, NULL); priv->need_timer = TRUE; priv->timer = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, timeout, (GSourceFunc) calendar_timer, (gpointer) calendar, NULL); } } /*------------------------------------------------------------------------------*/ static void calendar_stop_spinning (GuiCalendar *calendar) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); if (priv->timer) { g_source_remove (priv->timer); priv->timer = 0; priv->need_timer = FALSE; } } /*------------------------------------------------------------------------------*/ static void calendar_main_button_press (GuiCalendar *calendar, GdkEventButton *event) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); gint x, y; gint row, col; gint day_month; gint day; x = (gint) (event->x); y = (gint) (event->y); row = calendar_row_from_y (calendar, y); col = calendar_column_from_x (calendar, x); /* If row or column isn't found, just return. */ if (row == -1 || col == -1) return; day_month = calendar->day_month[row][col]; if (event->type == GDK_BUTTON_PRESS) { if (event->button == 1) { day = calendar->day[row][col]; if (day_month == MONTH_PREV) calendar_set_month_prev (calendar); else if (day_month == MONTH_NEXT) calendar_set_month_next (calendar); if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); if (event->button == 1) { priv->in_drag = 0; /* TODO: drag enable */ priv->drag_start_x = x; priv->drag_start_y = y; } if (calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) { if (day_month != MONTH_PREV && day_month != MONTH_NEXT) { calendar_select_and_focus_day (calendar, day); } } else { calendar_select_and_focus_day (calendar, day); } } } else if (event->type == GDK_2BUTTON_PRESS) { priv->in_drag = 0; if (day_month == MONTH_CURRENT && event->button == 1) g_signal_emit (calendar, gui_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL], 0); } } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_button_press (GtkWidget *widget, GdkEventButton *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint arrow = -1; if (event->window == priv->main_win) calendar_main_button_press (calendar, event); if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); for (arrow = ARROW_YEAR_LEFT; arrow <= ARROW_MONTH_RIGHT; arrow++) { if (event->window == priv->arrow_win[arrow]) { /* only call the action on single click, not double */ if (event->type == GDK_BUTTON_PRESS) { if (event->button == 1) calendar_start_spinning (calendar, arrow); calendar_arrow_action (calendar, arrow); } return TRUE; } } if (event->type == GDK_BUTTON_PRESS) { if (event->button == 1) return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_button_release (GtkWidget *widget, GdkEventButton *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); if (event->button == 1) { calendar_stop_spinning (calendar); if (priv->in_drag) priv->in_drag = 0; } return TRUE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_motion_notify (GtkWidget *widget, GdkEventMotion *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint event_x, event_y; gint row, col; gint old_row, old_col; event_x = (gint) (event->x); event_y = (gint) (event->y); if (event->window == priv->main_win) { if (priv->in_drag) { if (gtk_drag_check_threshold (widget, priv->drag_start_x, priv->drag_start_y, event->x, event->y)) { GdkDragContext *context; GtkTargetList *target_list = gtk_target_list_new (NULL, 0); gtk_target_list_add_text_targets (target_list, 0); context = gtk_drag_begin (widget, target_list, GDK_ACTION_COPY, 1, (GdkEvent *)event); priv->in_drag = 0; gtk_target_list_unref (target_list); gtk_drag_set_icon_default (context); } } else { row = calendar_row_from_y (calendar, event_y); col = calendar_column_from_x (calendar, event_x); if (row != calendar->highlight_row || calendar->highlight_col != col) { old_row = calendar->highlight_row; old_col = calendar->highlight_col; if (old_row > -1 && old_col > -1) { calendar->highlight_row = -1; calendar->highlight_col = -1; calendar_invalidate_day (calendar, old_row, old_col); } calendar->highlight_row = row; calendar->highlight_col = col; if (row > -1 && col > -1) calendar_invalidate_day (calendar, row, col); } } } return TRUE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_enter_notify (GtkWidget *widget, GdkEventCrossing *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); if (event->window == priv->arrow_win[ARROW_MONTH_LEFT]) { priv->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_MONTH_LEFT); } if (event->window == priv->arrow_win[ARROW_MONTH_RIGHT]) { priv->arrow_state[ARROW_MONTH_RIGHT] = GTK_STATE_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_MONTH_RIGHT); } if (event->window == priv->arrow_win[ARROW_YEAR_LEFT]) { priv->arrow_state[ARROW_YEAR_LEFT] = GTK_STATE_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_YEAR_LEFT); } if (event->window == priv->arrow_win[ARROW_YEAR_RIGHT]) { priv->arrow_state[ARROW_YEAR_RIGHT] = GTK_STATE_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_YEAR_RIGHT); } return TRUE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_leave_notify (GtkWidget *widget, GdkEventCrossing *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint row; gint col; if (event->window == priv->main_win) { row = calendar->highlight_row; col = calendar->highlight_col; calendar->highlight_row = -1; calendar->highlight_col = -1; if (row > -1 && col > -1) calendar_invalidate_day (calendar, row, col); } if (event->window == priv->arrow_win[ARROW_MONTH_LEFT]) { priv->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_NORMAL; calendar_invalidate_arrow (calendar, ARROW_MONTH_LEFT); } if (event->window == priv->arrow_win[ARROW_MONTH_RIGHT]) { priv->arrow_state[ARROW_MONTH_RIGHT] = GTK_STATE_NORMAL; calendar_invalidate_arrow (calendar, ARROW_MONTH_RIGHT); } if (event->window == priv->arrow_win[ARROW_YEAR_LEFT]) { priv->arrow_state[ARROW_YEAR_LEFT] = GTK_STATE_NORMAL; calendar_invalidate_arrow (calendar, ARROW_YEAR_LEFT); } if (event->window == priv->arrow_win[ARROW_YEAR_RIGHT]) { priv->arrow_state[ARROW_YEAR_RIGHT] = GTK_STATE_NORMAL; calendar_invalidate_arrow (calendar, ARROW_YEAR_RIGHT); } return TRUE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_scroll (GtkWidget *widget, GdkEventScroll *event) { GuiCalendar *calendar = GUI_CALENDAR (widget); if (event->direction == GDK_SCROLL_UP) { if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); calendar_set_month_prev (calendar); } else if (event->direction == GDK_SCROLL_DOWN) { if (!GTK_WIDGET_HAS_FOCUS (widget)) gtk_widget_grab_focus (widget); calendar_set_month_next (calendar); } else return FALSE; return TRUE; } /*------------------------------------------------------------------------------*/ static void move_focus (GuiCalendar *calendar, gint direction) { GtkTextDirection text_dir = gtk_widget_get_direction (GTK_WIDGET (calendar)); if (calendar->enable_cursor == FALSE) { return; } if ((text_dir == GTK_TEXT_DIR_LTR && direction == -1) || (text_dir == GTK_TEXT_DIR_RTL && direction == 1)) { if (calendar->focus_col > 0) calendar->focus_col--; else if (calendar->focus_row > 0) { calendar->focus_col = 6; calendar->focus_row--; } if (calendar->focus_col < 0) calendar->focus_col = 6; if (calendar->focus_row < 0) calendar->focus_row = 5; } else { if (calendar->focus_col < 6) calendar->focus_col++; else if (calendar->focus_row < 5) { calendar->focus_col = 0; calendar->focus_row++; } if (calendar->focus_col < 0) calendar->focus_col = 0; if (calendar->focus_row < 0) calendar->focus_row = 0; } } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_key_press (GtkWidget *widget, GdkEventKey *event) { GuiCalendar *calendar; gint return_val; gint old_focus_row; gint old_focus_col; gint row, col, day; calendar = GUI_CALENDAR (widget); return_val = FALSE; if (calendar->enable_cursor == FALSE) { return return_val; } old_focus_row = calendar->focus_row; old_focus_col = calendar->focus_col; switch (event->keyval) { case GDK_KP_Left: case GDK_Left: return_val = TRUE; if (event->state & GDK_CONTROL_MASK) calendar_set_month_prev (calendar); else { move_focus (calendar, -1); calendar_invalidate_day (calendar, old_focus_row, old_focus_col); calendar_invalidate_day (calendar, calendar->focus_row, calendar->focus_col); } break; case GDK_KP_Right: case GDK_Right: return_val = TRUE; if (event->state & GDK_CONTROL_MASK) calendar_set_month_next (calendar); else { move_focus (calendar, 1); calendar_invalidate_day (calendar, old_focus_row, old_focus_col); calendar_invalidate_day (calendar, calendar->focus_row, calendar->focus_col); } break; case GDK_KP_Up: case GDK_Up: return_val = TRUE; if (event->state & GDK_CONTROL_MASK) calendar_set_year_prev (calendar); else { if (calendar->focus_row > 0) calendar->focus_row--; if (calendar->focus_row < 0) calendar->focus_row = 5; if (calendar->focus_col < 0) calendar->focus_col = 6; calendar_invalidate_day (calendar, old_focus_row, old_focus_col); calendar_invalidate_day (calendar, calendar->focus_row, calendar->focus_col); } break; case GDK_KP_Down: case GDK_Down: return_val = TRUE; if (event->state & GDK_CONTROL_MASK) calendar_set_year_next (calendar); else { if (calendar->focus_row < 5) calendar->focus_row++; if (calendar->focus_col < 0) calendar->focus_col = 0; calendar_invalidate_day (calendar, old_focus_row, old_focus_col); calendar_invalidate_day (calendar, calendar->focus_row, calendar->focus_col); } break; case GDK_KP_Space: case GDK_space: row = calendar->focus_row; col = calendar->focus_col; if (row > -1 && col > -1) { return_val = TRUE; day = calendar->day[row][col]; if (calendar->day_month[row][col] == MONTH_PREV) calendar_set_month_prev (calendar); else if (calendar->day_month[row][col] == MONTH_NEXT) calendar_set_month_next (calendar); calendar_select_and_focus_day (calendar, day); } } return return_val; } /*------------------------------------------------------------------------------*/ static void calendar_set_background (GtkWidget *widget) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gint i; if (GTK_WIDGET_REALIZED (widget)) { for (i = 0; i < 4; i++) { if (priv->arrow_win[i]) gdk_window_set_background (priv->arrow_win[i], HEADER_BG_COLOR (widget)); } if (priv->header_win) gdk_window_set_background (priv->header_win, HEADER_BG_COLOR (widget)); if (priv->day_name_win) gdk_window_set_background (priv->day_name_win, BACKGROUND_COLOR (widget)); if (priv->week_win) gdk_window_set_background (priv->week_win, BACKGROUND_COLOR (widget)); if (priv->main_win) gdk_window_set_background (priv->main_win, BACKGROUND_COLOR (widget)); if (widget->window) gdk_window_set_background (widget->window, BACKGROUND_COLOR (widget)); } } /*------------------------------------------------------------------------------*/ static void gui_calendar_style_set (GtkWidget *widget, GtkStyle *previous_style) { if (previous_style && GTK_WIDGET_REALIZED (widget)) calendar_set_background (widget); } /*------------------------------------------------------------------------------*/ static void gui_calendar_state_changed (GtkWidget *widget, GtkStateType previous_state) { GuiCalendar *calendar = GUI_CALENDAR (widget); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); int i; if (!GTK_WIDGET_IS_SENSITIVE (widget)) { priv->in_drag = 0; calendar_stop_spinning (calendar); } for (i = 0; i < 4; i++) if (GTK_WIDGET_IS_SENSITIVE (widget)) priv->arrow_state[i] = GTK_STATE_NORMAL; else priv->arrow_state[i] = GTK_STATE_INSENSITIVE; calendar_set_background (widget); } /*------------------------------------------------------------------------------*/ static void gui_calendar_grab_notify (GtkWidget *widget, gboolean was_grabbed) { if (!was_grabbed) calendar_stop_spinning (GUI_CALENDAR (widget)); } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_focus_out (GtkWidget *widget, GdkEventFocus *event) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); gtk_widget_queue_draw (widget); calendar_stop_spinning (GUI_CALENDAR (widget)); priv->in_drag = 0; return FALSE; } /*------------------------------------------------------------------------------*/ static void gui_calendar_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, guint info, guint time) { GuiCalendar *calendar = GUI_CALENDAR (widget); GDate *date; gchar str[128]; gsize len; date = g_date_new_dmy (calendar->selected_day, calendar->month + 1, calendar->year); len = g_date_strftime (str, 127, "%x", date); gtk_selection_data_set_text (selection_data, str, len); g_date_free (date); } /*------------------------------------------------------------------------------*/ /* Get/set whether drag_motion requested the drag data and * drag_data_received should thus not actually insert the data, * since the data doesn't result from a drop. */ static void set_status_pending (GdkDragContext *context, GdkDragAction suggested_action) { g_object_set_data (G_OBJECT (context), "gtk-calendar-status-pending", GINT_TO_POINTER (suggested_action)); } /*------------------------------------------------------------------------------*/ static GdkDragAction get_status_pending (GdkDragContext *context) { return GPOINTER_TO_INT (g_object_get_data (G_OBJECT (context), "gtk-calendar-status-pending")); } /*------------------------------------------------------------------------------*/ static void gui_calendar_drag_leave (GtkWidget *widget, GdkDragContext *context, guint time) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); priv->drag_highlight = 0; gtk_drag_unhighlight (widget); } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time) { GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (widget); GdkAtom target; if (!priv->drag_highlight) { priv->drag_highlight = 1; gtk_drag_highlight (widget); } target = gtk_drag_dest_find_target (widget, context, NULL); if (target == GDK_NONE || context->suggested_action == 0) gdk_drag_status (context, 0, time); else { set_status_pending (context, context->suggested_action); gtk_drag_get_data (widget, context, target, time); } return TRUE; } /*------------------------------------------------------------------------------*/ static gboolean gui_calendar_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time) { GdkAtom target; target = gtk_drag_dest_find_target (widget, context, NULL); if (target != GDK_NONE) { gtk_drag_get_data (widget, context, target, time); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ static void gui_calendar_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time) { GuiCalendar *calendar = GUI_CALENDAR (widget); guint day, month, year; gchar *str; GDate *date; GdkDragAction suggested_action; suggested_action = get_status_pending (context); if (suggested_action) { set_status_pending (context, 0); /* We are getting this data due to a request in drag_motion, * rather than due to a request in drag_drop, so we are just * supposed to call drag_status, not actually paste in the * data. */ str = (gchar *) gtk_selection_data_get_text (selection_data); if (str) { date = g_date_new (); g_date_set_parse (date, str); if (!g_date_valid (date)) suggested_action = 0; g_date_free (date); g_free (str); } else suggested_action = 0; gdk_drag_status (context, suggested_action, time); return; } date = g_date_new (); str = (gchar *) gtk_selection_data_get_text (selection_data); if (str) { g_date_set_parse (date, str); g_free (str); } if (!g_date_valid (date)) { g_warning ("Received invalid date data\n"); g_date_free (date); gtk_drag_finish (context, FALSE, FALSE, time); return; } day = g_date_get_day (date); month = g_date_get_month (date); year = g_date_get_year (date); g_date_free (date); gtk_drag_finish (context, TRUE, FALSE, time); g_object_freeze_notify (G_OBJECT (calendar)); if (!(calendar->display_flags & GUI_CALENDAR_NO_MONTH_CHANGE) && (calendar->display_flags & GUI_CALENDAR_SHOW_HEADING)) gui_calendar_select_month (calendar, month - 1, year); gui_calendar_select_day (calendar, day); g_object_thaw_notify (G_OBJECT (calendar)); } /*------------------------------------------------------------------------------*/ /* Public API */ /*------------------------------------------------------------------------------*/ GtkWidget* gui_calendar_new (void) { return g_object_new (GUI_TYPE_CALENDAR, NULL); } /*------------------------------------------------------------------------------*/ GuiCalendarDisplayOptions gui_calendar_get_display_options (GuiCalendar *calendar) { g_return_val_if_fail (GUI_IS_CALENDAR (calendar), 0); return calendar->display_flags; } /*------------------------------------------------------------------------------*/ void gui_calendar_set_display_options (GuiCalendar *calendar, GuiCalendarDisplayOptions flags) { GtkWidget *widget = GTK_WIDGET (calendar); GuiCalendarPrivate *priv = GUI_CALENDAR_GET_PRIVATE (calendar); gint resize = 0; gint i; GuiCalendarDisplayOptions old_flags; g_return_if_fail (GUI_IS_CALENDAR (calendar)); old_flags = calendar->display_flags; if (GTK_WIDGET_REALIZED (widget)) { if ((flags ^ calendar->display_flags) & GUI_CALENDAR_NO_MONTH_CHANGE) { resize ++; if (! (flags & GUI_CALENDAR_NO_MONTH_CHANGE) && (priv->header_win)) { calendar->display_flags &= ~GUI_CALENDAR_NO_MONTH_CHANGE; calendar_realize_arrows (calendar); } else { for (i = 0; i < 4; i++) { if (priv->arrow_win[i]) { gdk_window_set_user_data (priv->arrow_win[i], NULL); gdk_window_destroy (priv->arrow_win[i]); priv->arrow_win[i] = NULL; } } } } if ((flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_HEADING) { resize++; if (flags & GUI_CALENDAR_SHOW_HEADING) { calendar->display_flags |= GUI_CALENDAR_SHOW_HEADING; calendar_realize_header (calendar); } else { for (i = 0; i < 4; i++) { if (priv->arrow_win[i]) { gdk_window_set_user_data (priv->arrow_win[i], NULL); gdk_window_destroy (priv->arrow_win[i]); priv->arrow_win[i] = NULL; } } gdk_window_set_user_data (priv->header_win, NULL); gdk_window_destroy (priv->header_win); priv->header_win = NULL; } } if ((flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_DAY_NAMES) { resize++; if (flags & GUI_CALENDAR_SHOW_DAY_NAMES) { calendar->display_flags |= GUI_CALENDAR_SHOW_DAY_NAMES; calendar_realize_day_names (calendar); } else { gdk_window_set_user_data (priv->day_name_win, NULL); gdk_window_destroy (priv->day_name_win); priv->day_name_win = NULL; } } if ((flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { resize++; if (flags & GUI_CALENDAR_SHOW_WEEK_NUMBERS) { calendar->display_flags |= GUI_CALENDAR_SHOW_WEEK_NUMBERS; calendar_realize_week_numbers (calendar); } else { gdk_window_set_user_data (priv->week_win, NULL); gdk_window_destroy (priv->week_win); priv->week_win = NULL; } } calendar->display_flags = flags; if (resize) gtk_widget_queue_resize (GTK_WIDGET (calendar)); } else calendar->display_flags = flags; g_object_freeze_notify (G_OBJECT (calendar)); if ((old_flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_HEADING) g_object_notify (G_OBJECT (calendar), "show-heading"); if ((old_flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_DAY_NAMES) g_object_notify (G_OBJECT (calendar), "show-day-names"); if ((old_flags ^ calendar->display_flags) & GUI_CALENDAR_NO_MONTH_CHANGE) g_object_notify (G_OBJECT (calendar), "no-month-change"); if ((old_flags ^ calendar->display_flags) & GUI_CALENDAR_SHOW_WEEK_NUMBERS) g_object_notify (G_OBJECT (calendar), "show-week-numbers"); if ((old_flags ^ calendar->display_flags) & GUI_CALENDAR_WEEK_START_MONDAY) g_object_notify (G_OBJECT (calendar), "week-start-monday"); g_object_thaw_notify (G_OBJECT (calendar)); } /*------------------------------------------------------------------------------*/ gboolean gui_calendar_select_month (GuiCalendar *calendar, guint month, guint year) { g_return_val_if_fail (GUI_IS_CALENDAR (calendar), FALSE); g_return_val_if_fail (month <= 11, FALSE); calendar->month = month; calendar->year = year; calendar_compute_days (calendar); gtk_widget_queue_draw (GTK_WIDGET (calendar)); g_object_freeze_notify (G_OBJECT (calendar)); g_object_notify (G_OBJECT (calendar), "month"); g_object_notify (G_OBJECT (calendar), "year"); g_object_thaw_notify (G_OBJECT (calendar)); g_signal_emit (calendar, gui_calendar_signals[MONTH_CHANGED_SIGNAL], 0); return TRUE; } /*------------------------------------------------------------------------------*/ void gui_calendar_select_day (GuiCalendar *calendar, guint day) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); g_return_if_fail (day <= 31); /* deselect the old day */ if (calendar->selected_day > 0) { gint selected_day; selected_day = calendar->selected_day; calendar->selected_day = 0; if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) calendar_invalidate_day_num (calendar, selected_day); } calendar->selected_day = day; /* select the new day */ if (day != 0) { if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) calendar_invalidate_day_num (calendar, day); } g_object_notify (G_OBJECT (calendar), "day"); g_signal_emit (calendar, gui_calendar_signals[DAY_SELECTED_SIGNAL], 0); } /*------------------------------------------------------------------------------*/ void gui_calendar_clear_marks (GuiCalendar *calendar, gint mark_type) { guint day; g_return_if_fail (GUI_IS_CALENDAR (calendar)); switch (mark_type) { case DAY_NOTE_MARK: for (day = 0; day < 31; day++) { calendar->marked_date[day] = FALSE; } calendar->num_marked_dates = 0; break; case EVENT_MARK: for (day = 0; day < 31; day++) { calendar->event_marked_date[day] = FALSE; } calendar->event_num_marked_dates = 0; break; case BIRTHDAY_MARK: for (day = 0; day < 31; day++) { calendar->birthday_marked_date[day] = FALSE; } calendar->birthday_num_marked_dates = 0; break; } gtk_widget_queue_draw (GTK_WIDGET (calendar)); } /*------------------------------------------------------------------------------*/ gboolean gui_calendar_mark_day (GuiCalendar *calendar, guint day, gint mark_type) { g_return_val_if_fail (GUI_IS_CALENDAR (calendar), FALSE); switch (mark_type) { case DAY_NOTE_MARK: if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE) { calendar->marked_date[day - 1] = TRUE; GtkWidget *widget = GTK_WIDGET (calendar); calendar->marked_date_color[day - 1] = (widget)->style->base[GTK_WIDGET_STATE (widget)]; calendar->num_marked_dates++; calendar_invalidate_day_num (calendar, day); } break; case EVENT_MARK: if (day >= 1 && day <= 31 && calendar->event_marked_date[day-1] == FALSE) { calendar->event_marked_date[day - 1] = TRUE; calendar->event_num_marked_dates++; calendar_invalidate_day_num (calendar, day); } break; case BIRTHDAY_MARK: if (day >= 1 && day <= 31 && calendar->birthday_marked_date[day-1] == FALSE) { calendar->birthday_marked_date[day - 1] = TRUE; calendar->birthday_num_marked_dates++; calendar_invalidate_day_num (calendar, day); } break; } return TRUE; } /*------------------------------------------------------------------------------*/ gboolean gui_calendar_unmark_day (GuiCalendar *calendar, guint day, gint mark_type) { g_return_val_if_fail (GUI_IS_CALENDAR (calendar), FALSE); switch (mark_type) { case DAY_NOTE_MARK: if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == TRUE) { calendar->marked_date[day - 1] = FALSE; GtkWidget *widget = GTK_WIDGET (calendar); calendar->marked_date_color[day - 1] = (widget)->style->base[GTK_WIDGET_STATE (widget)]; calendar->num_marked_dates--; calendar_invalidate_day_num (calendar, day); } break; case EVENT_MARK: if (day >= 1 && day <= 31 && calendar->event_marked_date[day-1] == TRUE) { calendar->event_marked_date[day - 1] = FALSE; calendar->event_num_marked_dates--; calendar_invalidate_day_num (calendar, day); } break; case BIRTHDAY_MARK: if (day >= 1 && day <= 31 && calendar->birthday_marked_date[day-1] == TRUE) { calendar->birthday_marked_date[day - 1] = FALSE; calendar->birthday_num_marked_dates--; calendar_invalidate_day_num (calendar, day); } break; } return TRUE; } /*------------------------------------------------------------------------------*/ gboolean gui_calendar_set_day_color (GuiCalendar *calendar, guint day, gchar *color_str) { g_return_val_if_fail (GUI_IS_CALENDAR (calendar), FALSE); if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == FALSE) { calendar->marked_date[day - 1] = TRUE; GtkWidget *widget = GTK_WIDGET (calendar); calendar->marked_date_color[day - 1] = (widget)->style->base[GTK_WIDGET_STATE (widget)]; if (color_str != NULL) { gdk_color_parse(color_str, &calendar->marked_date_color[day - 1]); } calendar->num_marked_dates++; calendar_invalidate_day_num (calendar, day); } return TRUE; } /*------------------------------------------------------------------------------*/ void gui_calendar_get_date (GuiCalendar *calendar, guint *year, guint *month, guint *day) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); if (year) *year = calendar->year; if (month) *month = calendar->month; if (day) *day = calendar->selected_day; } /*------------------------------------------------------------------------------*/ void gui_calendar_get_gdate (GuiCalendar *calendar, GDate *cdate) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); g_date_set_dmy (cdate, calendar->selected_day, calendar->month + 1, calendar->year); } /*------------------------------------------------------------------------------*/ void gui_calendar_set_color (GuiCalendar *calendar, const gchar *color, gint alpha_value, gint color_type) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); switch (color_type) { case HEADER_COLOR: gdk_color_parse(color, &calendar->header_color); break; case WEEKEND_COLOR: gdk_color_parse(color, &calendar->weekend_color); break; case SELECTOR_COLOR: gdk_color_parse(color, &calendar->selector_color); calendar->selector_alpha = alpha_value; break; case EVENT_MARKER_COLOR: gdk_color_parse(color, &calendar->event_marker_color); break; case TODAY_MARKER_COLOR: gdk_color_parse(color, &calendar->today_marker_color); calendar->today_marker_alpha = alpha_value; break; case BIRTHDAY_MARKER_COLOR: gdk_color_parse(color, &calendar->birthday_marker_color); break; } } /*------------------------------------------------------------------------------*/ void gui_calendar_set_marker (GuiCalendar *calendar, gint marker_type, gint marker) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); switch (marker) { case TODAY_MARKER: calendar->today_marker_type = marker_type; break; case EVENT_MARKER: calendar->event_marker_type = marker_type; break; } } /*------------------------------------------------------------------------------*/ void gui_calendar_set_day_note_marker_symbol (GuiCalendar *calendar, gchar *symbol) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); calendar->mark_sign = g_utf8_get_char (symbol); } /*------------------------------------------------------------------------------*/ void gui_calendar_enable_cursor (GuiCalendar *calendar, gboolean state) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); calendar->enable_cursor = state; } /*------------------------------------------------------------------------------*/ void gui_calendar_set_cursor_type (GuiCalendar *calendar, gint cursor_type) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); calendar->cursor_type = cursor_type; } /*------------------------------------------------------------------------------*/ void gui_calendar_set_frame_cursor_thickness (GuiCalendar *calendar, gint thickness) { g_return_if_fail (GUI_IS_CALENDAR (calendar)); g_return_if_fail (thickness > 0 && thickness < 6); calendar->frame_cursor_thickness = thickness; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/calendar_ical.h000664 001750 001750 00000004160 12561325524 016234 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_ICAL_H #define _CALENDAR_ICAL_H #include "gui.h" #include "calendar_utils.h" #ifdef HAVE_LIBICAL #define ICAL_NAME "osmo_ical_files" #define ICAL_ENTRIES_FILENAME "ical_files.xml" struct ics_entry { guint32 julian; gint seconds_begin; gint seconds_end; gchar *summary; gchar *description; }; struct ics_file { gchar *filename; GSList *entries_list; }; enum { I_COLUMN_DATE = 0, I_COLUMN_DATE_JULIAN, I_COLUMN_TIME, I_COLUMN_TIME_B_SECONDS, I_COLUMN_TIME_E_SECONDS, I_COLUMN_SUMMARY, I_COLUMN_FONT_WEIGHT, ICAL_EVENTS_NUM_COLUMNS }; enum { IE_COLUMN_DATE = 0, IE_COLUMN_DATE_JULIAN, IE_COLUMN_SUMMARY, IE_COLUMN_DESCRIPTION, ICAL_EXPORT_NUM_COLUMNS }; void calendar_display_ics (GDate *date, gchar **html, GUI *appGUI); void ics_initialize_timezone (void); void ics_check_if_valid (GUI *appGUI); void ics_calendar_refresh (GUI *appGUI); gboolean ics_check_event (guint32 julian, GUI *appGUI); void ical_events_browser (GUI *appGUI); void ical_export (GUI *appGUI); void read_ical_entries (GUI *appGUI); void write_ical_entries (GUI *appGUI); #endif /* HAVE_LIBICAL */ #endif /* _CALENDAR_ICAL_H */ osmo-0.2.14/src/gtksourceiter.h000664 001750 001750 00000003440 12561325524 016365 0ustar00pasppasp000000 000000 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * gtksourceiter.h * * Copyright (C) 2000 - 2005 Paolo Maggi * Copyright (C) 2002, 2003 Jeroen Zwartepoorte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library 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 Library General Public License for more details. * * You should have received a copy of the GNU Library 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. */ #ifndef __GTK_SOURCE_ITER_H__ #define __GTK_SOURCE_ITER_H__ #include G_BEGIN_DECLS typedef enum { GTK_SOURCE_SEARCH_VISIBLE_ONLY = 1 << 0, GTK_SOURCE_SEARCH_TEXT_ONLY = 1 << 1, GTK_SOURCE_SEARCH_CASE_INSENSITIVE = 1 << 2 /* Possible future plans: SEARCH_REGEXP */ } GtkSourceSearchFlags; gboolean gtk_source_iter_forward_search (const GtkTextIter *iter, const gchar *str, GtkSourceSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit); gboolean gtk_source_iter_backward_search (const GtkTextIter *iter, const gchar *str, GtkSourceSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit); G_END_DECLS #endif /* __GTK_SOURCE_ITER_H__ */ osmo-0.2.14/src/notes_items.h000664 001750 001750 00000002705 12561325524 016027 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _NOTES_ITEMS_H #define _NOTES_ITEMS_H #include "gui.h" void notes_add_entry (GUI *appGUI); void notes_edit_dialog_show (GtkWidget *list, GtkTreeModel *model, GUI *appGUI); void notes_remove_dialog_show (GUI *appGUI); void notes_enter_password (GUI *appGUI); void notes_cleanup_files (GUI *appGUI); gchar * notes_get_new_filename (GUI *appGUI); gchar * notes_get_full_filename (gchar *filename, GUI *appGUI); void read_notes_entries (GUI *appGUI); void write_notes_entries (GUI *appGUI); #endif /* _NOTES_ITEMS_H */ osmo-0.2.14/src/backup.c000664 001750 001750 00000050620 12561325524 014735 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #ifndef WIN32 #include #endif /* WIN32 */ #include "i18n.h" #include "backup.h" #include "gui.h" #include "notes_preferences_gui.h" #include "utils.h" #include "utils_gui.h" #include "options_prefs.h" #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) #include #include #include /*------------------------------------------------------------------------------*/ int tar_archive (const gchar *outname, GUI *appGUI) { struct archive *archive; struct archive_entry *entry; struct stat st; gchar buff[8192]; gint len; gint fd; gint i = 0; gchar *filename = NULL; archive = archive_write_new (); archive_write_set_format_ustar (archive); if (archive_write_open_filename (archive, outname) != ARCHIVE_OK) { g_printf ("%s\n", archive_error_string (archive)); return archive_errno (archive); } while ((filename = g_slist_nth_data (appGUI->file_list, i)) != NULL) { stat (filename, &st); entry = archive_entry_new (); archive_entry_copy_stat (entry, &st); archive_entry_set_pathname (entry, filename); archive_write_header (archive, entry); fd = open (filename, O_RDONLY); len = read (fd, buff, sizeof (buff)); while (len > 0) { archive_write_data (archive, buff, len); len = read (fd, buff, sizeof (buff)); } close (fd); archive_entry_free (entry); i++; } archive_write_free (archive); return ARCHIVE_OK; } /*------------------------------------------------------------------------------*/ int untar_archive (gchar *filename) { struct archive_entry *entry; struct archive *archive; archive = archive_read_new (); if ((archive_read_support_filter_all (archive) != ARCHIVE_OK) || (archive_read_support_format_all (archive) != ARCHIVE_OK) || (archive_read_open_filename (archive, filename, 8192) != ARCHIVE_OK)) { archive_read_free (archive); g_printf ("%s\n", archive_error_string (archive)); return archive_errno (archive); } while (archive_read_next_header (archive, &entry) == ARCHIVE_OK) archive_read_extract (archive, entry, ARCHIVE_EXTRACT_OWNER | ARCHIVE_EXTRACT_PERM); archive_read_free (archive); return ARCHIVE_OK; } /*------------------------------------------------------------------------------*/ void add_all_files_to_list (gchar *directory, gboolean subdir, GUI *appGUI) { GDir *dir_path = NULL; const gchar *item_name = NULL; gchar *full_filename = NULL, *fitem = NULL, *sdir = NULL; gchar separator[2] = { G_DIR_SEPARATOR, '\0' }; dir_path = g_dir_open (directory, 0, NULL); g_return_if_fail (dir_path != NULL); while ((item_name = g_dir_read_name (dir_path)) != NULL) { full_filename = g_strconcat (directory, separator, item_name, NULL); if (g_utf8_collate (item_name, BACKUP_TEMPLATE) == 0) { /* don't include backup file! */ g_free (full_filename); continue; } if (g_file_test (full_filename, G_FILE_TEST_IS_SYMLINK)) { /* ignore symlinks */ g_free (full_filename); continue; } if (g_file_test (full_filename, G_FILE_TEST_IS_DIR)) { add_all_files_to_list (full_filename, TRUE, appGUI); g_free (full_filename); continue; } if (subdir) { sdir = g_path_get_basename (directory); fitem = g_strconcat (sdir, separator, item_name, NULL); g_free (sdir); } else { fitem = g_strdup (item_name); } g_free (full_filename); appGUI->file_list = g_slist_append (appGUI->file_list, fitem); } g_dir_close (dir_path); } /*------------------------------------------------------------------------------*/ void add_files_to_list (gchar *directory, gchar *extension, GUI *appGUI) { GDir *dir_path = NULL; const gchar *item_name = NULL; gchar *full_filename = NULL, *fitem = NULL; gchar separator[2] = { G_DIR_SEPARATOR, '\0' }; dir_path = g_dir_open (directory, 0, NULL); g_return_if_fail (dir_path != NULL); while ((item_name = g_dir_read_name (dir_path)) != NULL) { full_filename = g_strconcat (directory, separator, item_name, NULL); if (!g_file_test (full_filename, G_FILE_TEST_IS_REGULAR)) { g_free (full_filename); continue; } if (!g_str_has_suffix (item_name, extension)) { g_free (full_filename); continue; } if (g_str_has_suffix (item_name, "osm")) { g_free (full_filename); full_filename = g_strconcat ("notes", separator, item_name, NULL); fitem = g_strdup (full_filename); } else { fitem = g_strdup (item_name); } g_free (full_filename); appGUI->file_list = g_slist_append (appGUI->file_list, fitem); } g_dir_close (dir_path); } /*------------------------------------------------------------------------------*/ void backup_create (GUI *appGUI) { gchar *home_dirname = NULL; gint ret, p1len, p2len, tErr; GRG_CTX context; GRG_KEY keyholder; gchar *filename, *password, *bpass1, *bpass2, *tmp_filename; gchar tmpbuf[BUFFER_SIZE]; gchar *contents; gsize len; GtkWidget *dialog, *passwd_dialog; GtkWidget *vbox1, *alignment, *frame, *label; GtkWidget *bck_p1_entry, *bck_p2_entry; /* select filename and password */ dialog = gtk_file_chooser_dialog_new (_("Save backup"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(dialog), FALSE); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER(dialog), utl_add_timestamp_to_filename ("osmobackup", "bck")); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), TRUE); ret = gtk_dialog_run(GTK_DIALOG(dialog)); if (ret == GTK_RESPONSE_CANCEL || ret == GTK_RESPONSE_DELETE_EVENT) { gtk_widget_destroy(dialog); return; } filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); gtk_widget_destroy(dialog); if (utl_gui_check_overwrite_file (filename, appGUI->main_window, appGUI) != 0) { return; } else { g_unlink (filename); } passwd_dialog = gtk_dialog_new_with_buttons (_("Password protection"), GTK_WINDOW(appGUI->main_window), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW(passwd_dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW(passwd_dialog), 400, -1); gtk_dialog_set_default_response (GTK_DIALOG(passwd_dialog), GTK_RESPONSE_ACCEPT); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(passwd_dialog)->vbox), vbox1, TRUE, TRUE, 16); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); bck_p1_entry = gtk_entry_new (); gtk_widget_show (bck_p1_entry); gtk_container_add (GTK_CONTAINER (alignment), bck_p1_entry); gtk_entry_set_invisible_char (GTK_ENTRY (bck_p1_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (bck_p1_entry), FALSE); sprintf (tmpbuf, "%s:", _("Enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); bck_p2_entry = gtk_entry_new (); gtk_widget_show (bck_p2_entry); gtk_container_add (GTK_CONTAINER (alignment), bck_p2_entry); gtk_entry_set_invisible_char (GTK_ENTRY (bck_p2_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (bck_p2_entry), FALSE); sprintf (tmpbuf, "%s:", _("Re-enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); while (1) { ret = gtk_dialog_run(GTK_DIALOG(passwd_dialog)); if (ret == GTK_RESPONSE_CANCEL || ret == GTK_RESPONSE_DELETE_EVENT) { gtk_widget_destroy(passwd_dialog); return; } bpass1 = g_strdup(gtk_entry_get_text(GTK_ENTRY(bck_p1_entry))); p1len = strlen(bpass1); bpass2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(bck_p2_entry))); p2len = strlen(bpass2); if (p1len == 0 && p2len == 0) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Please enter the password"), GTK_WINDOW(passwd_dialog)); gtk_widget_grab_focus (bck_p1_entry); g_free(bpass1); g_free(bpass2); continue; } else if (p1len != p2len) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Passwords do not match!"), GTK_WINDOW(passwd_dialog)); gtk_widget_grab_focus (bck_p1_entry); g_free(bpass1); g_free(bpass2); continue; } if (g_utf8_collate (bpass1, bpass2) != 0) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Passwords do not match!"), GTK_WINDOW(passwd_dialog)); gtk_widget_grab_focus (bck_p1_entry); g_free(bpass1); g_free(bpass2); continue; } else { g_free(bpass1); g_free(bpass2); break; } } password = g_strdup(gtk_entry_get_text(GTK_ENTRY(bck_p1_entry))); gtk_widget_destroy(passwd_dialog); /* generate file list */ appGUI->file_list = NULL; home_dirname = g_strdup (prefs_get_config_dir(appGUI)); add_all_files_to_list (home_dirname, FALSE, appGUI); g_free (home_dirname); /* create backup file */ tmp_filename = g_strdup (prefs_get_config_filename ("backup.dat", appGUI)); home_dirname = g_get_current_dir(); g_chdir (prefs_get_config_dir(appGUI)); /* change directory to cfg home */ g_unlink (tmp_filename); tErr = tar_archive (tmp_filename, appGUI); g_chdir (home_dirname); g_free (home_dirname); if (tErr != ARCHIVE_OK) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Cannot create backup!"), GTK_WINDOW(appGUI->main_window)); return; } if (g_file_get_contents (tmp_filename, &contents, &len, NULL) == FALSE) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Cannot create backup!"), GTK_WINDOW(appGUI->main_window)); return; } context = grg_context_initialize_defaults ((unsigned char*) "BCK"); keyholder = grg_key_gen ((unsigned char*) password, -1); if (keyholder == NULL || context == NULL) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Cannot create backup!"), GTK_WINDOW(appGUI->main_window)); return; } grg_ctx_set_crypt_algo (context, get_enc_algorithm_value()); grg_ctx_set_hash_algo (context, get_enc_hashing_value()); grg_ctx_set_comp_algo (context, get_comp_algorithm_value()); grg_ctx_set_comp_ratio (context, get_comp_ratio_value()); grg_encrypt_file (context, keyholder, (unsigned char*) filename, (guchar *) contents, len); grg_free (context, contents, len); grg_key_free (context, keyholder); grg_context_free (context); g_unlink (tmp_filename); /* free strings */ g_free (tmp_filename); g_free(filename); g_free(password); /* free list */ if (appGUI->file_list != NULL) { g_slist_foreach (appGUI->file_list, (GFunc) g_free, NULL); g_slist_free (appGUI->file_list); appGUI->file_list = NULL; } utl_gui_create_dialog (GTK_MESSAGE_INFO, _("Backup file saved successfully!"), GTK_WINDOW(appGUI->main_window)); } /*------------------------------------------------------------------------------*/ void backup_restore (GUI *appGUI) { gchar *filename, *tmp_filename; gint ret, tErr, passlen; GtkFileFilter *filter; GRG_CTX context; GRG_KEY keyholder; unsigned char *arch; long arch_len; gchar *contents, *password; gchar tmpbuf[BUFFER_SIZE]; GtkWidget *dialog, *passwd_dialog, *pass_entry; GtkWidget *vbox1, *alignment, *frame, *label; dialog = gtk_file_chooser_dialog_new (_("Open backup file"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(dialog), FALSE); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), TRUE); filter = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter, "*.[bB][cC][kK]"); gtk_file_filter_set_name(GTK_FILE_FILTER(filter), _("Osmo backup files (*.bck)")); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); ret = gtk_dialog_run(GTK_DIALOG(dialog)); if (ret == GTK_RESPONSE_CANCEL || ret == GTK_RESPONSE_DELETE_EVENT) { gtk_widget_destroy(dialog); return; } filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); gtk_widget_destroy(dialog); tErr = -1; if (g_file_get_contents (filename, &contents, NULL, NULL) == TRUE) { if (contents[0] == 'B' && contents[1] == 'C' && contents[2] == 'K' && g_ascii_isalnum(contents[3])) { tErr = 0; } g_free (contents); } if (tErr == -1) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("This is not Osmo backup file"), GTK_WINDOW(appGUI->main_window)); g_free (filename); return; } passwd_dialog = gtk_dialog_new_with_buttons (_("Password protection"), GTK_WINDOW(appGUI->main_window), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW(passwd_dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW(passwd_dialog), 400, -1); gtk_dialog_set_default_response (GTK_DIALOG(passwd_dialog), GTK_RESPONSE_ACCEPT); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(passwd_dialog)->vbox), vbox1, TRUE, TRUE, 8); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); pass_entry = gtk_entry_new (); gtk_widget_show (pass_entry); gtk_container_add (GTK_CONTAINER (alignment), pass_entry); gtk_entry_set_invisible_char (GTK_ENTRY (pass_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (pass_entry), FALSE); sprintf (tmpbuf, "%s:", _("Enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); while (1) { ret = gtk_dialog_run(GTK_DIALOG(passwd_dialog)); if (ret == GTK_RESPONSE_CANCEL || ret == GTK_RESPONSE_DELETE_EVENT) { gtk_widget_destroy(passwd_dialog); g_free(filename); return; } password = g_strdup(gtk_entry_get_text(GTK_ENTRY(pass_entry))); passlen = strlen(password); if (passlen == 0) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Please enter the password"), GTK_WINDOW(passwd_dialog)); gtk_widget_grab_focus (pass_entry); g_free(password); continue; } else { break; } } gtk_widget_destroy(passwd_dialog); /* extracting encrypted data */ tmp_filename = g_strdup (prefs_get_config_filename (BACKUP_TEMPLATE, appGUI)); g_unlink (tmp_filename); context = grg_context_initialize_defaults ((unsigned char*) "BCK"); keyholder = grg_key_gen ((unsigned char*) password, -1); if (keyholder == NULL || context == NULL) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Cannot create backup!"), GTK_WINDOW(appGUI->main_window)); return; } grg_ctx_set_crypt_algo (context, get_enc_algorithm_value()); grg_ctx_set_hash_algo (context, get_enc_hashing_value()); grg_ctx_set_comp_algo (context, get_comp_algorithm_value()); grg_ctx_set_comp_ratio (context, get_comp_ratio_value()); ret = grg_decrypt_file (context, keyholder, (unsigned char *) filename, &arch, &arch_len); if (ret != GRG_OK) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("Incorrect password!"), GTK_WINDOW(appGUI->main_window)); grg_key_free (context, keyholder); grg_context_free (context); g_free(password); g_free(filename); g_free(tmp_filename); return; } tErr = -1; sprintf (tmpbuf, "%s\n\n%s", _("All your data will be replaced with backup file content."), _("Are you sure?")); ret = utl_gui_create_dialog (GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->main_window)); if (ret == GTK_RESPONSE_YES) { /* save TAR file */ g_file_set_contents (tmp_filename, (gchar *) arch, arch_len, NULL); tErr = 0; } g_free (arch); grg_key_free (context, keyholder); grg_context_free (context); /* free strings */ g_free(password); g_free(filename); g_free(tmp_filename); if (!tErr) { sprintf (tmpbuf, "%s", _("Osmo has to be restarted now...")); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW(appGUI->main_window)); gui_quit_osmo (appGUI); } } /*------------------------------------------------------------------------------*/ void backup_restore_run (GUI *appGUI) { gint i; gchar *tmp_filename, *home_dirname; const gchar *item_name = NULL; gchar *fitem = NULL, separator[2] = { G_DIR_SEPARATOR, '\0' }; /* is backup file available? */ tmp_filename = g_strdup (prefs_get_config_filename (BACKUP_TEMPLATE, appGUI)); if (g_file_test (tmp_filename, G_FILE_TEST_IS_REGULAR) == FALSE) { g_free (tmp_filename); return; } /* removing old files */ appGUI->file_list = NULL; home_dirname = g_strdup (prefs_get_config_dir(appGUI)); add_files_to_list (home_dirname, ".xml", appGUI); item_name = g_strconcat (home_dirname, separator, "notes", NULL); g_free (home_dirname); home_dirname = g_strdup (item_name); add_files_to_list (home_dirname, ".osm", appGUI); g_free (home_dirname); /* change directory to cfg home */ home_dirname = g_get_current_dir(); g_chdir (prefs_get_config_dir(appGUI)); i = 0; while ((fitem = g_slist_nth_data (appGUI->file_list, i)) != NULL) { g_unlink (fitem); i++; } /* untar files */ untar_archive (tmp_filename); /* clean up */ g_chdir (home_dirname); g_free (home_dirname); if (appGUI->file_list != NULL) { g_slist_foreach (appGUI->file_list, (GFunc) g_free, NULL); g_slist_free (appGUI->file_list); appGUI->file_list = NULL; } g_unlink (tmp_filename); g_free (tmp_filename); } /*------------------------------------------------------------------------------*/ #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ osmo-0.2.14/src/calendar_utils.c000664 001750 001750 00000023075 12561325524 016465 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_utils.h" #include "i18n.h" #include "gui.h" #include "utils.h" #include "options_prefs.h" #include "calendar.h" #include "calendar_notes.h" #include "calendar_widget.h" #include "utils_time.h" #include "utils_date.h" /*------------------------------------------------------------------------------*/ gchar* julian_to_str (guint32 julian_day, gint date_format, gint override_locale) { static gchar buffer[BUFFER_SIZE]; GDate *cdate; gint i; gchar *date_format_str[] = { "%d-%m-%Y", "%m-%d-%Y", "%Y-%m-%d", "%Y-%d-%m", "%e %B", "%A", "%e %B %Y" }; if (g_date_valid_julian (julian_day)) { cdate = g_date_new_julian (julian_day); g_return_val_if_fail (cdate != NULL, buffer); if (override_locale == TRUE) { if (date_format < DATE_DD_MM_YYYY || date_format > DATE_FULL) { date_format = DATE_DD_MM_YYYY; } g_date_strftime (buffer, BUFFER_SIZE, date_format_str[date_format], cdate); } else { g_date_strftime (buffer, BUFFER_SIZE, "%x", cdate); } g_date_free (cdate); if (buffer[0] == ' ') { for (i = 1; buffer[i]; i++) buffer[i-1] = buffer[i]; buffer[i-1] = '\0'; } } else { g_strlcpy (buffer, _("No date"), BUFFER_SIZE); } return buffer; } /*------------------------------------------------------------------------------*/ guint month_name_to_number (gchar *month_str) { GDate *cdate; gint i; gboolean found; char tmpbuf[BUFFER_SIZE]; found = FALSE; cdate = g_date_new_dmy (1, 1, 1); g_return_val_if_fail (cdate != NULL, -1); for (i = G_DATE_JANUARY; i <= G_DATE_DECEMBER; i++) { g_date_set_month (cdate, i); g_date_strftime (tmpbuf, BUFFER_SIZE, "%B", cdate); if (!strcmp (month_str, tmpbuf)) { found = TRUE; break; } } g_date_free (cdate); return (found == TRUE ? i : -1); } /*------------------------------------------------------------------------------*/ void parse_numeric_date (gchar *date_str, gint *first, gint *second, gint *third) { gint i; gchar *date, *token; date = g_strdup(date_str); token = strtok (date, " -"); i = 0; while (token != NULL && i != 3) { if (i == 0) { *first = atoi(token); } else if (i == 1) { *second = atoi(token); } else if (i == 2) { *third = atoi(token); } token = strtok (NULL, " -"); i++; } g_free(date); } /*------------------------------------------------------------------------------*/ guint32 str_to_julian(gchar *date_str, gint date_format) { gint day, month, year, i; gchar *token; day = month = year = 1; switch (date_format) { case DATE_DD_MM_YYYY: parse_numeric_date (date_str, &day, &month, &year); break; case DATE_MM_DD_YYYY: parse_numeric_date (date_str, &month, &day, &year); break; case DATE_YYYY_MM_DD: parse_numeric_date (date_str, &year, &month, &day); break; case DATE_YYYY_DD_MM: parse_numeric_date (date_str, &year, &day, &month); break; case DATE_NAME_DAY: case DATE_FULL: token = strtok (date_str, " -"); i = 0; while (token != NULL && i != 3) { if (i == 0) { day = atoi(token); } else if (i == 1) { month = month_name_to_number(token); } else if (i == 2 && date_format == DATE_FULL) { year = atoi(token); } token = strtok (NULL, " -"); i++; } break; }; if (g_date_valid_dmy (day, month, year) == TRUE) { return utl_date_dmy_to_julian (day, month, year); } else { return 0; } } /*------------------------------------------------------------------------------*/ gint julian_to_year (guint32 julian_day) { GDate *tmpdate; gint year; g_return_val_if_fail (g_date_valid_julian (julian_day) == TRUE, 0); tmpdate = g_date_new_julian (julian_day); g_return_val_if_fail (tmpdate != NULL, 0); year = g_date_get_year (tmpdate); g_date_free (tmpdate); return year; } /*------------------------------------------------------------------------------*/ gchar * get_current_date_distance_str (guint32 julian) { static gchar buffer[BUFFER_SIZE]; gint d; d = julian - utl_date_get_current_julian (); d = (d < 0) ? -d : d; g_snprintf (buffer, BUFFER_SIZE, "%d", d); return buffer; } /*------------------------------------------------------------------------------*/ gchar * get_date_time_str (guint32 julian, gint seconds) { static gchar buffer[BUFFER_SIZE]; TIME *s_time; s_time = utl_time_new_seconds (seconds); g_snprintf (buffer, BUFFER_SIZE, "%s, %s", julian_to_str (julian, config.date_format, config.override_locale_settings), time_to_str (s_time, config.time_format, config.override_locale_settings)); utl_time_free (s_time); return buffer; } /*------------------------------------------------------------------------------*/ gchar * get_date_time_full_str (guint32 julian, gint seconds) { static gchar buffer[BUFFER_SIZE]; TIME *s_time; if (seconds >= 0) { s_time = utl_time_new_seconds (seconds); g_snprintf (buffer, BUFFER_SIZE, "%s, %s", julian_to_str (julian, config.date_format, config.override_locale_settings), time_to_str (s_time, TIME_HH_MM, config.override_locale_settings)); utl_time_free (s_time); } else { g_snprintf (buffer, BUFFER_SIZE, "%s", julian_to_str (julian, config.date_format, config.override_locale_settings)); } return buffer; } /*------------------------------------------------------------------------------*/ gchar * get_chinese_year_name (guint year) { gchar *animals[] = { N_("Rat"), N_("Ox"), N_("Tiger"), N_("Hare"), N_("Dragon"), N_("Snake"), N_("Horse"), N_("Sheep"), N_("Monkey"), N_("Fowl"), N_("Dog"), N_("Pig") }; static gchar buffer[BUFFER_SIZE]; gint n; n = (year - 3) % 12; if (n == 0) n = 12; n--; g_strlcpy (buffer, gettext (animals[n]), BUFFER_SIZE); return buffer; } /*------------------------------------------------------------------------------*/ gchar * utl_get_zodiac_name (guint day, guint month) { gchar *zodiac[] = { N_("Unknown"), N_("Aquarius"), N_("Pisces"), N_("Aries"), N_("Taurus"), N_("Gemini"), N_("Cancer"), N_("Leo"), N_("Virgo"), N_("Libra"), N_("Scorpio"), N_("Sagittarius"), N_("Capricorn") }; guint dtable[13] = { 0, 20, 19, 21, 21, 22, 23, 23, 24, 23, 24, 23, 22 }; static gchar buffer[BUFFER_SIZE]; guint i; g_strlcpy (buffer, gettext (zodiac[0]), BUFFER_SIZE); g_return_val_if_fail (month > 0 && month <= 12, buffer); if (day >= dtable[month]) { i = month; } else { i = (month == 1 ? 12 : month - 1); } g_strlcpy (buffer, gettext (zodiac[i]), BUFFER_SIZE); return buffer; } /*------------------------------------------------------------------------------*/ struct tm * get_tm_struct(void) { time_t tmm; tmm = time(NULL); return localtime(&tmm); } /*------------------------------------------------------------------------------*/ gint get_current_hour(void) { return get_tm_struct()->tm_hour; } /*------------------------------------------------------------------------------*/ gint get_current_minute(void) { return get_tm_struct()->tm_min; } /*------------------------------------------------------------------------------*/ gint get_current_second(void) { return get_tm_struct()->tm_sec; } /*------------------------------------------------------------------------------*/ gchar* current_time_to_str(gint time_format, gint override_locale) { static gchar buffer[BUFFER_SIZE]; const struct tm *timer; gchar *time_format_str[] = { "%R", "%I:%M %p", "%T", "%r", "%Z" }; timer = get_tm_struct(); g_strlcpy (buffer, "empty", BUFFER_SIZE); if (override_locale == TRUE) { if (time_format < TIME_HH_MM || time_format > TIME_TIMEZONE) { time_format = TIME_HH_MM; } strftime (buffer, BUFFER_SIZE-1, time_format_str[time_format], timer); } else { strftime (buffer, BUFFER_SIZE-1, "%X", timer); } return buffer; } /*------------------------------------------------------------------------------*/ gchar* time_to_str(TIME *time, gint time_format, gint override_locale) { static gchar buffer[BUFFER_SIZE]; struct tm timer; gchar *time_format_str[] = { "%R", "%I:%M %p", "%T", "%r", "%Z" }; timer.tm_hour = time->hour; timer.tm_min = time->minute; timer.tm_sec = time->second; g_strlcpy (buffer, "empty", BUFFER_SIZE); if (override_locale == TRUE) { if (time_format < TIME_HH_MM || time_format > TIME_TIMEZONE) { time_format = TIME_HH_MM; } strftime (buffer, BUFFER_SIZE-1, time_format_str[time_format], &timer); } else { strftime (buffer, BUFFER_SIZE-1, "%X", &timer); } return buffer; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/stock_icons_data.h000664 001750 001750 00002046275 12561325524 017021 0ustar00pasppasp000000 000000 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_add) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_add[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_add[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (681) */ "\0\0\2\301" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\233\377\377\377\0\2\4$^z\1\36]\374\202\0\36\\\377\2\1\36]\374\4$^z\216" "\377\377\377\0\2\3!^\376\272\311\333\377\202\303\321\341\377\2\263\304" "\327\377\6$`\376\216\377\377\377\0\2\7$`\377\300\317\340\377\202\226" "\257\313\377\2\300\317\340\377\20,f\377\216\377\377\377\0\2\7$`\377\300" "\317\340\377\202\226\257\313\377\2\300\317\340\377\20,f\377\216\377\377" "\377\0\2\7$`\377\300\317\340\377\202\226\257\313\377\2\300\317\340\377" "\20,f\377\216\377\377\377\0\2\7$`\377\300\317\340\377\202\226\257\313" "\377\2\300\317\340\377\20,f\377\210\377\377\377\0\2\4$^z\4\"_\376\204" "\12'b\377\2!\362\335\275\213" "\377\300\232Z\377\266\225\\\377\216zS\377OH0\264\215\377\377\377\0\7" "KE0R{mO\362\326\266\201\377\273\225U\377\271\234j\377^U;\364KE0E\211" "\377\377\377\0\12\0\0\0\1jV\0IqZ\0H\0\0\0\1KE0s\224\202_\372\320\256" "w\377\272\227\\\377\241\213a\377OG0\337\212\377\377\377\0\12jV\2\203" "oY\14\376oY\14\377iS\2\376eS\16\360\224\200M\377\306\244i\377\275\237" "j\377nbE\364KE0`\212\377\377\377\0\12lV\4\361\247\215X\377\255\222b\377" "\237\205Q\377\214s5\377xb\34\377hS\4\377zd\36\377XL\35\370gP\10!\211" "\377\377\377\0\15g[)9e_B\377\255\231t\377\270\223V\377\264\221V\377\260" "\220Z\377\255\221_\377\245\213Z\377\222y\77\377}f\"\377iT\5\377iT\2\343" "dQ\0E\207\377\377\377\0\15sc#\242~~v\377\226\227\220\377ywm\377}ve\377" "\234\206_\377\265\222W\377\265\222T\377\261\220W\377\255\220]\377\252" "\220_\377\223y@\377gQ\2\360\207\377\377\377\0\15\214s\3\231\245\237u" "\376\216\215|\377\216\216\202\377\244\245\240\377\237\240\233\377\200" "\200v\377vqd\377\221\202c\377\256\217Z\377\273\230^\377\256\224]\377" "jT\3\355\207\377\377\377\0\15\215t\4\344\353\344\263\377\342\325o\377" "\317\302S\377\257\247a\377\222\217t\377\212\212|\377\230\230\221\377" "\225\227\223\377\177\177w\377qod\377woW\377kX\23\305\206\377\377\377" "\0\16ye\2r\247\225;\370\365\360\311\377\344\326j\377\342\324c\377\340" "\321]\377\335\316V\377\326\307P\377\273\262Y\377\226\223l\377\206\204" "t\377\206\205}\377qrj\377oa%\237\205\377\377\377\0\17\203k\0J\216u\11" "\370\362\354\304\377\347\335\220\377\261\2364\377\352\336z\377\350\333" "t\377\345\330l\377\342\325d\377\337\321[\377\334\315R\377\330\311N\377" "\333\330\266\377\206t\30\371\204i\0\35\202\377\377\377\0\21\271\230\0" "\7\377\377\377\0\207m\0""1\212q\3\372\314\277l\377\372\366\331\377\257" "\234G\377\345\334\241\377\366\356\257\377\324\305l\377\311\270S\377\353" "\336z\377\347\332q\377\344\326g\377\346\332{\377\347\340\253\377\215" "u\5\337\205\377\377\377\0\17\205m\0I\206m\5\245\207q\10\350\211r\5\373" "\245\2237\367\316\302\200\375\352\342\264\377\257\235J\377\370\363\324" "\377\370\363\305\377\312\274i\377\317\300b\377\362\353\260\377\317\302" "}\375\213t\4\221\206\377\377\377\0\16\0\0\0\1\0\0\0\27\40\33\0""8YH\0" "jjV\2\251\203n\11\332\211q\4\371\234\206(\370\301\263i\372\257\235G\377" "\361\354\306\377\357\351\302\377\217x\15\366\207p\0\40\207\377\377\377" "\0\14\0\0\0\3\0\0\0\10\0\0\0\13\0\0\0\27\0\0\0\40\5\5\0""64+\0u[J\0\233" "yf\6\311\210q\10\355\214t\11\346\214u\6x\214\377\377\377\0\7\0\0\0\6" "\0\0\0\13\0\0\0\15\0\0\0\35\0\0\0'\0\0\0)\0\0\0\13\206\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_close) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_close[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_close[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1115) */ "\0\0\4s" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\253\377\377\377\0\4\37\"\"aFHH\3578<<\331\33!!/\206\377\377\377\0\4" "\33!!/7;;\331ADD\357\37\"\"a\205\377\377\377\0\6!#%lwzz\370\306\307\307" "\377\277\300\300\376QST\364\33\40\40""8\204\377\377\377\0\6\33\40\40" "8PSS\364\271\271\271\376\275\276\275\377suv\370!#%l\204\377\377\377\0" "\7BFF\364\310\310\310\377\255\256\256\377\264\264\264\377\301\302\302" "\377Z\\]\367\33\37\37B\202\377\377\377\0\7\33\37\37BY[\\\367\273\274" "\273\377\250\251\250\377\235\236\235\377\275\277\276\377BFF\364\204\377" "\377\377\0\7""144\301\257\260\260\375\277\301\300\377\245\246\246\377" "\261\261\261\377\302\303\303\377acc\370\202\32\36\36M\7`bc\370\276\276" "\276\377\247\250\247\377\226\227\226\377\263\264\263\377\247\247\247" "\375144\301\204\377\377\377\0\20\40\40\40\20""578\324\252\254\254\374" "\300\301\301\377\243\244\244\377\255\256\256\377\302\303\303\377kmn\370" "kmm\370\300\300\300\377\246\250\247\377\231\231\231\377\266\267\266\377" "\243\244\244\374467\324\40\40\40\20\205\377\377\377\0\16\27\27\27\13" "022\311\243\244\245\374\301\302\301\377\243\244\244\377\252\253\253\377" "\301\303\302\377\301\301\301\377\246\246\246\377\233\234\233\377\272" "\272\272\377\235\236\237\374022\311\27\27\27\13\207\377\377\377\0\14" "$$$\7,//\275\233\235\235\373\301\302\301\377\241\242\242\377\235\236" "\235\377\233\235\234\377\235\235\235\377\274\275\274\377\224\227\227" "\373+..\275$$$\7\211\377\377\377\0\12\0\0\0\4+-.\337\261\262\261\376" "\257\257\257\377\235\236\235\377\233\235\234\377\243\243\243\377\220" "\221\221\376\35\37\40\335\0\0\0\4\211\377\377\377\0\14\0\0\0\2\35\40" "\40\235^_`\370\255\257\256\377\203\204\204\377|}|\377tvu\377hih\377\233" "\234\233\377WXX\370\35\40\40\235\0\0\0\2\207\377\377\377\0\16\0\0\0\4" "\35\40\"\255egg\370\242\243\243\377stt\377uwv\377\231\232\231\377\227" "\230\230\377opo\377gih\377\227\231\227\377_`_\370\35\40\"\255\0\0\0\4" "\205\377\377\377\0\20\40\40\40\10\36!\"\274pqq\371\242\244\243\377tv" "u\377z{{\377\241\242\241\377MQP\367MOP\367\235\236\235\377opp\377cdc" "\377\224\226\224\377fhg\371\36!\"\274\40\40\40\10\204\377\377\377\0\7" "\37\"#\253xz{\372\242\243\242\377uvv\377~\200\177\377\243\243\243\377" "BFF\370\202\33\36\40p\7ADE\370\233\235\234\377opo\377_`_\377\220\220" "\220\377mnn\372\37\"#\253\204\377\377\377\0\21$'(\365\253\253\253\377" "}\177~\377\204\205\205\377\242\243\243\377>@A\371\32\34\34l\0\0\0\33" "\0\0\0\34\31\34\34n<>\77\371\231\232\231\377prp\377ded\377\233\234\233" "\377$'(\365\0\0\0\1\202\377\377\377\0\22\0\0\0\1\35!#\203[^_\370\250" "\251\251\377\241\242\242\3777:;\370\23\25\30k\0\0\0""0\0\0\0""5\0\0\0" "6\0\0\0""4\22\24\27p589\370\226\227\226\377\230\231\230\377SUU\370\35" "\40\"\205\0\0\0\3\202\377\377\377\0\22\0\0\0\1\0\0\0\3\35\40\40\206-" "/0\370(+,\360\23\26\26^\0\0\0,\0\0\0""5\0\0\0:\0\0\0<\0\0\0:\0\0\0""4" "\22\24\24d(+,\360-/0\371\34\40\40\211\0\0\0\7\0\0\0\3\203\377\377\377" "\0\21\0\0\0\2\0\0\0\4\14\31\31\25\0\0\0\21\0\0\0\24\0\0\0\32\0\0\0\40" "\0\0\0%\0\0\0&\0\0\0#\0\0\0\37\0\0\0\31\0\0\0\25\12\24\24\31\0\0\0\7" "\0\0\0\3\0\0\0\1\204\377\377\377\0\6\0\0\0\1\0\0\0\2\0\0\0\4\0\0\0\6" "\0\0\0\10\0\0\0\12\202\0\0\0\14\6\0\0\0\13\0\0\0\12\0\0\0\7\0\0\0\5\0" "\0\0\3\0\0\0\2\212\377\377\377\0\202\0\0\0\1\203\0\0\0\2\202\0\0\0\1" "\206\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_edit) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_edit[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_edit[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1309) */ "\0\0\5""5" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\21\377\377\377\0\236\236\236\240\234\234\234\377\237\237\237\377\240" "\240\240\377\236\236\236\377\233\233\233\377\230\230\230\377\224\224" "\224\377\221\221\221\377\216\216\216\377\212\212\212\377\207\207\207" "\377\204\204\204\377\201\201\201\377}}}\377\200\200\200\240\204\377\377" "\377\0\2\231\231\231\377\373\373\373\377\202\376\376\376\377\203\375" "\375\375\377\202\374\374\374\377\203\373\373\373\377\202\372\372\372" "\377\2\366\366\366\377zzz\377\204\377\377\377\0\3\231\231\231\377\376" "\376\376\377\357\357\357\377\203\360\360\360\377\12\357\357\357\377\355" "\355\355\377\353\353\353\377\351\351\351\377\346\346\346\377\344\344" "\344\377\341\341\341\377\337\337\337\377\371\371\371\377zzz\377\204\377" "\377\377\0\20\227\227\227\377\376\376\376\377\361\361\361\377\362\362" "\362\377\363\363\363\377\362\362\362\377\360\360\360\377\356\356\356" "\377\354\354\354\377\352\352\352\377\347\347\347\377\344\344\344\377" "\342\342\342\377\337\337\337\377\371\371\371\377yyy\377\204\377\377\377" "\0\3\225\225\225\377\375\375\375\377\363\363\363\377\202\254\254\254" "\377\13\253\253\253\377\252\252\252\377\250\250\250\377\246\246\246\377" "\244\244\244\377\242\242\242\377\241\241\241\377\237\237\237\377\337" "\337\337\377\371\371\371\377yyy\377\203\377\377\377\0\4\217Y\2\5\222" "\222\222\377\375\375\375\377\365\365\365\377\202\367\367\367\377\13\365" "\365\365\377\363\363\363\377\360\360\360\377\355\355\355\377\352\352" "\352\377\350\350\350\377\345\345\345\377\342\342\342\377\337\337\337" "\377\371\371\371\377xxx\377\204\377\377\377\0\3\220\220\220\377\375\375" "\375\377\365\365\365\377\202\370\370\370\377\13\365\365\365\377\363\363" "\363\377\360\360\360\377\355\355\355\377\352\352\352\377\347\347\347" "\377\345\345\345\377\342\342\342\377\337\337\337\377\371\371\371\377" "www\377\204\377\377\377\0\3\215\215\215\377\374\374\374\377\365\365\365" "\377\202\255\255\255\377\15\253\253\253\377\252\252\252\377\250\250\250" "\377\246\246\246\377\244\244\244\377\242\242\242\377\240\240\240\377" "\236\236\236\377\337\337\337\377\371\371\371\377{lg\377\233\"\1\310\235" "\23\0K\202\377\377\377\0\3\212\212\212\377\374\374\374\377\363\363\363" "\377\202\364\364\364\377&\362\362\362\377\360\360\360\377\356\356\356" "\377\353\353\353\377\351\351\351\377\346\346\346\377\343\343\343\377" "\341\341\341\377\336\336\336\377\342\312\277\377\244\21\7\377\320KK\377" "\246\15\12\376\233\36\1F\377\377\377\0\207\207\207\377\374\374\374\377" "\361\361\361\377\362\362\362\377\361\361\361\377\360\360\360\377\356" "\356\356\377\354\354\354\377\352\352\352\377\350\350\350\377\345\345" "\345\377\342\342\342\377\340\340\340\377\313\276\251\377\234I\16\377" "\307`^\377\355de\377\30677\377\236\33\1\321\377\377\377\0\204\204\204" "\377\373\373\373\377\357\357\357\377\202\250\250\250\377\21\247\247\247" "\377\246\246\246\377\245\245\245\377\243\243\243\377\241\241\241\377" "\240\240\240\377\236\236\236\377\231\205e\377\232f\23\377\352\271`\377" "\322lG\377\307\77>\377\266\27\27\377\240\12\0\375\377\377\377\0\201\201" "\201\377\373\373\373\377\203\355\355\355\377!\354\354\354\377\352\352" "\352\377\351\351\351\377\347\347\347\377\345\345\345\377\342\342\342" "\377\270\233m\377\243o\33\377\362\302j\377\375\304\\\377\355\251;\377" "\252\30\13\377\241\5\0\376\231)\1r\377\377\377\0~~~\377\372\372\372\377" "\352\352\352\377\353\353\353\377\352\352\352\377\351\351\351\377\350" "\350\350\377\347\347\347\377\345\345\345\377\341\337\335\377\255\210" "J\377\261~)\377\367\307n\377\375\277O\377\352\260>\377\317\2311\377\234" "A\5\351\231'\1B\202\377\377\377\0\3zzz\377\372\372\372\377\350\350\350" "\377\202\243\243\243\377\14\242\242\242\377\241\241\241\377\240\240\240" "\377\236\232\223\377\227j\"\377\300\2157\377\372\310l\377\371\273F\377" "\343\254<\377\276\212(\377\212c#\377\217Y\2\14\203\377\377\377\0\2ww" "w\377\371\371\371\377\202\346\346\346\377\202\345\345\345\377\12\344" "\344\344\377\325\315\277\377\233k\33\377\323\241J\377\374\307d\377\366" "\266@\377\337\251;\377\251t\32\377\305\252}\377ooo\377\204\377\377\377" "\0\2ttt\377\371\371\371\377\203\343\343\343\377\13\342\342\342\377\327" "\321\307\377\231f\23\377\342\260X\377\375\303Y\377\360\263>\377\333\244" "8\377\235i\22\377\300\260\225\377\370\370\370\377ooo\377\204\377\377" "\377\0\2qqq\377\366\366\366\377\204\370\370\370\377\12\271\227^\377\322" "\240G\377\374\277O\377\351\257>\377\317\2301\377\240o\40\377\350\337" "\321\377\370\370\370\377\365\365\365\377ooo\377\204\377\377\377\0\1v" "vv\240\204ooo\377\7pja\377\213_\30\377\360\266H\377\341\253<\377\267" "\201!\377\213b\40\377qni\377\203ooo\377\1uuu\240\211\377\377\377\0\6" "m]\77\325]M0\376\247r\25\364\224\\\4\362\223]\4\206\217Y\2\2\215\377" "\377\377\0\5|R\14$SF-\353XE!\265wP\17B\217Y\2\2\202\377\377\377\0\1\217" "Y\2\5\207\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_down) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_down[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_down[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (775) */ "\0\0\3\37" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\231\377\377\377\0\1""8p\4\323\2075o\4\377\2""6o\4\3657o\0\27\212\377" "\377\377\0\5N\202\"\363\247\311\204\377\251\312\204\377\247\311\201\377" "\235\303r\377\202\221\274b\377\3\212\270Y\3779t\5\3623l\6(\212\377\377" "\377\0\5Y\2120\363\241\305{\377~\260G\377z\256A\377]\234\30\377\202Q" "\225\7\377\3\217\273`\377:u\7\3623l\6(\212\377\377\377\0\5[\2133\363" "\247\310\203\377\205\265Q\377\200\262J\377T\227\13\377\202Q\225\7\377" "\3\217\273`\377:u\7\3623l\6(\212\377\377\377\0\4_\2167\363\254\314\212" "\377\214\271[\377\203\264O\377\203Q\225\7\377\3\217\273`\377:u\7\362" "3l\6(\206\377\377\377\0\1@`\0\10\2030p\0\20\4a\216:\364\261\317\222\377" "\223\275d\377\207\266T\377\203Q\225\7\377\3\217\273`\377:u\7\3625o\5" "5\2020p\0\20\1@`\0\10\203\377\377\377\0\2""6q\4\3076o\4\374\2026p\4\370" "\5i\226B\367\267\323\231\377\231\301m\377\222\274c\377T\227\14\377\202" "Q\225\7\377\2\216\272^\377E\177\17\363\2026p\4\370\2""6o\4\3746p\4\303" "\203\377\377\377\0\11""6n\3QE{\26\366\274\325\240\377\307\335\260\377" "\304\333\253\377\256\316\215\377\236\304u\377\227\300k\377c\240\40\377" "\202Q\225\7\377\6q\2515\377\220\273`\377\221\274b\377\202\262N\3777r" "\5\3645n\4H\204\377\377\377\0\10""5p\4\213x\241R\367\311\337\262\377" "\262\320\220\377\252\313\206\377\244\307}\377\234\303r\377r\2517\377" "\203Q\225\7\377\4T\227\13\377\206\265S\377[\214,\3667q\4~\205\377\377" "\377\0\10\0\200\0\2""6r\4\303\236\276\177\373\310\336\261\377\260\317" "\216\377\250\312\203\377\237\305w\377\205\265Q\377\203Q\225\7\377\3|" "\257D\377l\234>\3717q\4\265\207\377\377\377\0\15""6k\0\23s\317Jp\245\377Ao\252\377\2044e\244\377\2\316" "\326\340\377\317\327\340\377\2044e\244\377\3Ao\252\377Jp\244\377\32\77" "t\306\204\377\377\377\0\3\31m\251\3774e\244\377=k\247\377\324\333\343\377\341\345\346" "\377\340\344\346\377\324\333\343\377m\251\377U|" "\257\377\33\77t\365\32;o'\205\377\377\377\0\6\30m\251\3774e\244\3776g\245\377\202@n\251\377\6""6g\245\3774e" "\244\377>m\251\377Y\201\264\377)N\202\366\30>tw\206\377\377\377\0\6\0" "\14\31\25\27;n\323*N\203\367U|\260\377Mx\257\377Ao\252\377\2028h\246" "\377\7Ao\252\377Mx\257\377U|\257\377*N\202\370\27""9i\324\0\0\6-\0\0" "\0\11\204\377\377\377\0\7\0\0\0\1\0\0\0!\0\0\4B\20+Q\253\34=q\372:_\224" "\376Ip\243\377\202W}\260\377\7Ip\243\377:_\224\376\32>r\373\17$F\267" "\0\0\0^\0\0\0=\0\0\0\26\205\377\377\377\0\6\0\0\0\13\0\0\0/\0\0\0K\10" "\22#}\20)N\302\26""6c\347\202\27:n\373\7\25""3a\351\17'I\312\5\16\35" "\216\0\0\0c\0\0\0H\0\0\0\35\0\0\0\2\207\377\377\377\0\13\0\0\0\11\0\0" "\0\34\0\0\0""1\0\0\0A\0\0\0M\0\0\0O\0\0\0G\0\0\0:\0\0\0'\0\0\0\21\0\0" "\0\3\230\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_cancel) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_cancel[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_cancel[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1071) */ "\0\0\4G" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\263\377\377\377\0\4\220\0\0e\233\27\27\326\220\0\0\277\216\0\0-\210" "\377\377\377\0\4\220\0\0'\222\4\4\302\231\26\26\370\217\0\0y\203\377" "\377\377\0\6\216\0\0-\24501\370\351\270\271\377\335\235\236\376\2475" "5\370\220\0\0\203\206\377\377\377\0\6\216\0\0_\237$$\367\337\241\242" "\376\351\264\265\377\254<=\367\217\0\0`\202\377\377\377\0\6\221\2\2\315" "\335\235\236\376\341\223\223\377\342\224\224\377\351\264\265\377\222" "\7\7\370\206\377\377\377\0\16\220\0\0\363\344\250\250\377\343\231\231" "\377\336\210\210\377\350\262\262\377\24733\367\215\0\0J\217\0\0]\273" "^_\370\350\254\254\377\332xx\377\344\234\234\377\317}}\374\220\0\0\247" "\206\377\377\377\0\16\220\0\0\207\272XX\370\352\263\263\377\334\177\177" "\377\340\215\215\377\346\260\261\377\242**\367\231\25\25\362\347\262" "\262\377\335\204\204\377\334\201\201\377\347\257\257\377\227\23\23\365" "\220\0\0\27\207\377\377\377\0\14\221\0\0\242\300cc\370\351\261\261\377" "\333}}\377\342\223\223\377\345\257\257\377\336\232\233\374\344\235\236" "\377\332ww\377\347\250\250\377\275]]\370\217\0\0r\210\377\377\377\0\14" "\200\0\0\2\220\0\0\257\304jk\371\351\260\260\377\333||\377\337\212\212" "\377\341\222\222\377\332xx\377\336\210\210\377\340\240\241\377\222\3" "\3\340\200\0\0\4\211\377\377\377\0\5\200\0\0\4\220\0\0\274\311rs\372" "\351\255\256\377\332zz\377\202\332ww\377\4\331uu\377\316nn\375\221\3" "\3\337\224\0\0\23\212\377\377\377\0\13\200\0\0\10\220\0\0\332\334\231" "\231\376\335\202\202\377\325gg\377\312\77\77\377\273\4\4\377\321VW\377" "\303WX\373\221\2\2\332\216\0\0\22\211\377\377\377\0\14\220\0\0""5\232" "\27\27\367\332\201\201\377\275\20\20\377\274\12\12\377\311::\377\300" "\30\30\377\272\3\3\377\321XY\377\301VV\372\221\2\2\327\217\0\0\20\207" "\377\377\377\0\16\222\0\0\16\223\6\6\347\316jk\377\305--\377\272\2\2" "\377\325gh\377\301UU\373\326uv\377\302\37\37\377\272\3\3\377\322ZZ\377" "\300TT\372\220\1\1\324\210\0\0\17\206\377\377\377\0\16\220\0\0\261\275" "PQ\372\316MN\377\271\0\0\377\31088\377\307^_\376\217\0\0\342\241##\365" "\326uu\377\300\31\31\377\272\4\4\377\322[\\\377\275PQ\371\221\0\0\300" "\205\377\377\377\0\17\220\0\0c\250//\367\325jj\377\272\5\5\377\275\16" "\16\377\327uv\377\227\23\23\367y\0\0*\214\0\0|\245**\366\327tu\377\277" "\26\26\377\317OO\377\314de\376\220\0\0\350\205\377\377\377\0\7\221\0" "\0\332\322tu\377\316KK\377\273\10\10\377\321WX\377\264AA\370\206\0\0" "\215\202\0\0\0\32\10\204\0\0\232\25222\367\333}~\377\305[\\\373\222\7" "\7\352\204\0\0""4\0\0\0\3\0\0\0\1\202\377\377\377\0\22\0\0\0\1\215\0" "\0i\231\27\27\367\275RS\372\327xy\377\315lm\377\216\3\3\347\17\0\0""4" "\0\0\0""4\0\0\0""5\0\0\0""3\203\0\0\264\227\23\23\373\215\1\1\317L\0" "\0(\0\0\0\15\0\0\0\6\0\0\0\2\202\377\377\377\0\22\0\0\0\1\0\0\0\4a\0" "\0\32\207\0\0\210\226\15\15\355\223\16\16\330V\0\0Y\0\0\0""6\0\0\0<\0" "\0\0>\0\0\0;\0\0\0""42\0\0=\7\0\0#\0\0\0\27\0\0\0\16\0\0\0\7\0\0\0\3" "\203\377\377\377\0\21\0\0\0\2\0\0\0\5\0\0\0\11\0\0\0\17\0\0\0\26\0\0" "\0\35\0\0\0#\0\0\0'\0\0\0(\0\0\0&\0\0\0\40\0\0\0\32\0\0\0\23\0\0\0\15" "\0\0\0\10\0\0\0\3\0\0\0\1\204\377\377\377\0\6\0\0\0\1\0\0\0\3\0\0\0\4" "\0\0\0\7\0\0\0\11\0\0\0\14\203\0\0\0\15\5\0\0\0\12\0\0\0\10\0\0\0\5\0" "\0\0\3\0\0\0\2\202\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_jumpto) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_jumpto[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_jumpto[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1165) */ "\0\0\4\245" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\210\377\377\377\0\1""4n\6,\223\377\377\377\0\2""5p\5\3378p\10\40\221" "\377\377\377\0\3""5q\6+M\201\40\3709s\6\300\217\377\377\377\0\14\0\0" "\0\1\377\377\377\0""6o\5p\206\257^\371p\234G\363^u\10p\300\205\25\240" "\301\206\25\331\303\210\32\366\301\207\25\331\301\206\25\240\301\204" "\24/\205\377\377\377\0\21""4n\6,8t\5\2468r\5\353By\22\3628r\6\3336q\4" "\351\246\307\204\376\253\313\213\377M{\24\376\314\255I\376\341\310_\377" "\350\324b\377\344\315`\377\331\270M\376\305\215!\364\300\205\25\202\301" "\204\24\3\202\377\377\377\0\40""6p\4""9;v\7\352\211\264Y\376\261\320" "\220\376\247\311\200\376\253\313\211\376\243\305\200\376\232\301o\377" "~\260F\377\215\262e\377\201\227\35\377\344\321;\377\347\327D\377\347" "\330F\377\347\325L\377\345\317_\377\312\2334\364\300\204\24\204\377\377" "\377\0@`\0\10Dz\23\352\261\321\204\376\247\315s\376m\252\37\376]\236" "\20\376Q\225\7\376Y\232\23\376S\226\11\377R\226\11\377\245\310\177\377" "^\214*\377\315\313A\377\202\356\351_\377\14\352\335L\377\344\3169\377" "\335\307^\377\303\213!\362\301\204\24/7q\5i\213\263\\\365\255\323r\376" "~\270)\376h\247\31\376Y\233\15\376Q\225\7\376\203Q\225\7\377\3h\243'" "\377\243\304\177\377[\211\26\377\202\364\365r\377&\354\343V\377\345\321" ":\377\333\302<\377\313\251K\376\300\205\24\236>y\11\273\275\331\221\376" "\243\317]\376\263\321\213\376\254\312\214\376\253\311\214\376\244\307" "\177\376e\241$\377Q\225\7\377S\226\11\377\177\261I\377\256\314\217\377" "S\204#\377\276\313K\377\360\354d\377\352\337P\377\344\3166\377\325\270" "'\377\315\262]\377\300\205\24\330L\202\33\324\316\345\252\376\301\334" "\230\376R\206&\3608r\5\2338s\4\261_\2168\371\226\277h\377m\246/\377\247" "\310\202\377\211\256_\377V\203\25\377\265\270.\377\202\351\333J\377\22" "\346\323=\377\340\306)\377\312\253#\377\305\254[\377\303\210\33\366J" "\200\32\346\324\351\261\376n\235>\3627q\5`\377\377\377\0""6q\4=i\230" ">\360\265\321\226\377\232\273v\377U\202!\377\203\210\25\377\315\257#" "\377\336\303&\377\202\342\312.\377\22\336\303&\377\316\260#\377\273\232" "#\377\310\251Y\377\303\207\23\334\361\330\321\240\377\345" "\326\201\377\202\354\331n\377\2\352\335\222\377\346\346\343\377\203\346" "\347\346\377\6R\205(\377\310\336\255\377\243\313n\377\203\2725\377a\220" "7\3665o\4(\204\377\377\377\0\6OOOrji[\357\325\315\246\377\343\324\177" "\377\354\336\220\377\352\353\347\377\204\352\353\352\377\10P\203%\377" "\310\336\255\377\243\313n\377\203\2725\377b\2216\3645o\4.5o\4\10""5o" "\4\4\202\377\377\377\0\22OOO\2JJJ\272pm]\360\305\302\244\377\317\317" "\315\377\333\334\333\377\345\345\345\377\334\337\332\377T\203,\377V\207" ".\377{\241Z\377\305\334\251\377\243\313n\377\200\270/\377w\240P\372R" "\204(\3766p\4\3635o\4+\203\377\377\377\0\20OOO\2OOOsAAA\360\207\210\207" "\366\240\241\240\377\250\253\251\377\241\244\242\377\210\221\202\376" "Gz\33\377\300\327\246\377\275\331\232\377\243\313n\377{\265'\377\232" "\306[\377V\210(\3655o\4N\206\377\377\377\0\15OOO'OOO\203LLL\271===\356" ">>>\356MMM\270E[2\242X\211-\371\304\333\250\377\243\313n\377\211\274" ">\377l\232>\3668r\6\203\216\377\377\377\0\6""6p\4gv\237Q\370\263\322" "\210\377}\250O\3719s\6\2715o\4\1\217\377\377\377\0\4""8r\5\232p\233I" "\373=v\15\3415o\4\15\220\377\377\377\0\3""5o\4\3""6p\5\2555o\4&\204\377" "\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_next_year) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_next_year[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_next_year[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1113) */ "\0\0\4q" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\274\377\377\377\0\3FJC\340X[U\372FJCX\203\377\377\377\0\3EJC\340X[U" "\372FKCX\203\377\377\377\0\3FJC\340X[U\372FJCX\205\377\377\377\0\4ad" "_\377\315\315\316\376z}y\354FJCS\202\377\377\377\0\4ad_\377\315\315\315" "\375z{y\354GJDS\202\377\377\377\0\4ad_\377\315\315\315\375z{y\354FJC" "S\204\377\377\377\0\21dgb\377\311\311\312\372\320\320\321\372z}x\355" "FJCM\377\377\377\0dgb\377\311\311\312\372\320\317\320\372y|w\355FIBM" "\377\377\377\0dgb\377\311\311\312\372\320\317\320\372y|w\355FJCM\203" "\377\377\377\0\22ehc\377\302\302\303\365\233\232\232\377\327\327\330" "\372y|w\355FJCHehc\377\302\302\302\365\233\232\232\377\326\326\327\372" "y{x\355GJCHehc\377\302\302\302\365\233\232\232\377\326\326\327\372y|" "x\355FJCH\202\377\377\377\0vcfa\377\302\302\303\365\214\212\212\377\242" "\241\241\377\336\336\337\372y{w\356[_Y\377\302\302\302\365\213\212\212" "\377\242\241\241\377\335\335\335\372y|w\356[^Z\377\302\302\302\365\213" "\212\212\377\242\241\241\377\335\335\335\372y|w\356FJCC\377\377\377\0" "`c^\377\300\300\301\364\214\212\212\377\221\217\217\377\250\250\250\377" "\345\345\346\371uxs\377\241\242\241\367\213\212\212\377\221\217\217\377" "\250\250\250\377\346\346\346\371txt\377\241\242\241\367\213\212\212\377" "\221\217\217\377\250\250\250\377\346\346\346\371wzu\356FJC>`c^\377\262" "\262\262\362\211\210\210\377\221\217\217\377\223\222\222\377\267\266" "\266\377\330\330\330\377Y\\V\375\211\207\210\377\221\217\217\377\223" "\222\222\377\266\265\265\377\327\330\330\377X\\V\375\211\207\210\377" "\221\217\217\377\223\222\222\377\266\265\265\377\341\341\341\356FJC\321" "`c^\377\242\242\243\357ROP\377[YY\377|{{\377\335\335\336\367qto\377\213" "\214\212\363ROP\377[YY\377|{{\377\335\335\336\367pto\377\212\214\212" "\363ROP\377[YY\377|{{\377\335\335\336\367rup\355FJC>`c^\377\242\242\243" "\357OLM\377rpp\377\322\322\323\367svq\355Y\\W\377\242\242\243\357OLM" "\377rpp\377\321\321\322\370svq\355Y\\W\377\242\242\243\357OLM\377rpp" "\377\321\321\322\370svq\355FJCC\377\377\377\0`c^\377\242\242\243\357" "gef\377\310\310\311\367rup\354FJCH`c^\377\242\242\243\357gef\377\307" "\307\310\370rtq\354GJCH`c^\377\242\242\243\357gef\377\307\307\310\370" "ruq\354FJCH\202\377\377\377\0\21`c^\377\256\256\257\367\275\275\276\367" "rup\354FJCM\377\377\377\0`c^\377\256\256\260\367\275\274\275\367rup\354" "FIBM\377\377\377\0`c^\377\256\256\260\367\275\274\275\367rup\354FJCM" "\203\377\377\377\0\20]`[\377\270\270\271\375qtp\353FJCS\377\377\377\0" "\0\0\0\1]`[\377\271\270\271\374qso\354CF@X\0\0\0\7\0\0\0\5]`[\377\271" "\270\271\374qsp\353FJCS\204\377\377\377\0\11FJC\340UXR\372\77C=a\0\0" "\0\25\0\0\0\33\0\0\0\40DIB\344TWQ\373492u\202\0\0\0,\7\0\0\0)EIB\344" "TXR\373;>8i\0\0\0\24\0\0\0\15\0\0\0\4\202\377\377\377\0\22\0\0\0\3\0" "\0\0\16\0\0\0\26\0\0\0\36\0\0\0&\0\0\0-\0\0\0""4\0\0\0<\0\0\0B\0\0\0" "F\0\0\0B\0\0\0;\0\0\0""4\0\0\0,\0\0\0%\0\0\0\35\0\0\0\23\0\0\0\5\204" "\377\377\377\0\6\0\0\0\2\0\0\0\5\0\0\0\11\0\0\0\15\0\0\0\22\0\0\0\26" "\202\0\0\0\33\6\0\0\0\27\0\0\0\23\0\0\0\17\0\0\0\12\0\0\0\7\0\0\0\3\254" "\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_no) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_no[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_no[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1447) */ "\0\0\5\277" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\3y\0\0>y\0\0\202{\1\0\303\202z\0\0\362\3z\0\0\303" "y\0\0\202y\0\0>\212\377\377\377\0\14y\0\0\17{\1\0\251\202\14\12\363\240" "+\"\374\256=1\377\271M\77\377\265K\77\377\24591\377\224&\"\374\177\12" "\12\363y\0\0\251y\0\0\17\207\377\377\377\0\16y\0\0""6{\1\0\352\234(\40" "\367\310UA\377\305K4\377\302B)\377\2740\25\377\267#\11\377\261+\30\377" "\2545(\377\251GA\377\213\40\40\367y\0\0\352y\0\0""6\205\377\377\377\0" "\20y\0\0\17{\1\0\352\260\77""2\377\311T\77\377\303I/\377\306U:\377\310" "Z@\377\305Q7\377\300\201\13\12\363\276" "QA\377\2763\30\377\307V;\377\322\177e\377\334\243\212\377\340\263\232" "\377\332\234\202\377\317v\\\377\304L1\377\270!\5\377\245\24\0\377\222" "\12\0\377\203\13\12\377\244AA\377\200\12\12\363y\0\0>\202\377\377\377" "\0\22y\0\0\202\230(\"\374\271;(\377\2740\25\377\310\\B\377\325\210n\377" "\341\264\234\377\352\325\275\377\336\252\221\377\322~d\377\306R7\377" "\271&\12\377\247\24\0\377\223\13\0\377\177\2\0\377\227((\377\225\"\"" "\374y\0\0\202\202\377\377\377\0\22z\0\0\303\24371\377\261+\30\377\272" "*\16\377\306T9\377\321|b\377\333\236\205\377\336\254\223\377\331\227" "~\377\317sY\377\303J/\377\270\40\4\377\245\23\0\377\221\12\0\377}\1\0" "\377\220\30\30\377\23711\377{\0\0\303\202\377\377\377\0\22y\0\0\362\252" "F\77\377\246\33\11\377\265\33\0\377\300\77#\377\311`E\377\320x^\377\322" "\200f\377\317sY\377\307Y>\377\2766\33\377\261\31\0\377\237\20\0\377\214" "\10\0\377{\0\0\377\213\11\11\377\250\77\77\377z\0\0\362\202\377\377\377" "\0\22y\0\0\362\245C\77\377\236\27\11\377\252\26\0\377\270!\5\377\277" "\177\12\12\363\240AA\377\202\13\12\377\207\5\0\377\216" "\11\0\377\222\13\0\377\224\13\0\377\222\12\0\377\215\10\0\377\205\4\0" "\377{\0\0\377\202\0\0\377\212\0\0\377\223\12\12\377\253AA\377\200\12" "\12\363y\0\0>\203\377\377\377\0\21z\0\0\251\220\40\40\367\23566\377\177" "\1\1\377{\0\0\377\177\1\0\377\200\2\0\377~\1\0\377{\0\0\377\177\0\0\377" "\205\0\0\377\214\0\0\377\217\1\1\377\24766\377\222\40\40\370x\0\0\253" "\0\0\0\4\202\377\377\377\0\6\0\0\0\1a\0\0\23y\0\0\354\23722\377\2436" "6\377\213\12\12\377\203\204\0\0\377\23\207\0\0\377\213\0\0\377\217\0" "\0\377\223\12\12\377\24766\377\24022\377x\0\0\3560\0\0&\0\0\0\7\0\0\0" "\1\377\377\377\0\0\0\0\1\0\0\0\10\\\0\0Gx\0\0\356\221\40\40\372\253A" "A\377\241((\377\232\30\30\377\202\223\11\11\377\22\232\30\30\377\241" "((\377\253AA\377\220\37\37\373v\0\0\363=\0\0l\0\0\0\"\0\0\0\14\0\0\0" "\2\377\377\377\0\0\0\0\1\0\0\0\10\0\0\0\27\35\0\0>h\0\0\305}\12\12\371" "\223\"\"\375\23711\377\202\250\77\77\377\35\23711\377\223\"\"\376|\12" "\12\373_\0\0\330\20\0\0r\0\0\0C\0\0\0\"\0\0\0\14\0\0\0\2\377\377\377" "\0\0\0\0\1\0\0\0\4\0\0\0\20\0\0\0#\0\0\0@8\0\0\206S\0\0\276h\0\0\345" "v\0\0\372v\0\0\373f\0\0\352M\0\0\316-\0\0\245\0\0\0n\0\0\0O\0\0\0/\0" "\0\0\26\0\0\0\7\0\0\0\1\202\377\377\377\0\21\0\0\0\1\0\0\0\6\0\0\0\21" "\0\0\0\40\0\0\0""4\0\0\0J\0\0\0\\\0\0\0j\0\0\0o\0\0\0n\0\0\0b\0\0\0R" "\0\0\0=\0\0\0)\0\0\0\26\0\0\0\11\0\0\0\2\204\377\377\377\0\17\0\0\0\1" "\0\0\0\4\0\0\0\11\0\0\0\22\0\0\0\34\0\0\0&\0\0\0-\0\0\0""0\0\0\0/\0\0" "\0*\0\0\0\40\0\0\0\26\0\0\0\15\0\0\0\4\0\0\0\1\202\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_ok) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_ok[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_ok[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1080) */ "\0\0\4P" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\257\377\377\377\0\2""0^\222\10""0^\222\1\203\377\377\377\0\2""0^\222" "\5""2`\224\260\2042_\223\361\2""2`\223\2410^\222\2\206\377\377\377\0" "\3""0^\222\31""0^\222\3120^\222\10\203\377\377\377\0\10""0^\222N^\203" "\253\366\304\322\341\377\311\326\344\377\312\327\345\377\313\327\345" "\377Js\240\3670^\222'\205\377\377\377\0\4""0^\222/4a\223\3532_\223\377" "0^\222\12\203\377\377\377\0\10""0^\222Lw\226\271\364\311\326\344\377" "\261\304\330\377\261\303\330\377\301\320\340\377Hq\237\3630^\222(\204" "\377\377\377\0\5""0^\222K;f\230\363\263\305\330\376=i\231\3720^\222\15" "\203\377\377\377\0\3""0^\222Iw\226\270\364\307\325\343\377\202\253\277" "\325\377\3\255\301\327\377Hq\237\3630^\222(\203\377\377\377\0\31""1_" "\223rJr\241\366\302\320\340\377\325\337\352\377Iq\237\3732_\223\3612" "_\223\3572`\223\3562`\223\3551_\223\361{\231\272\371\307\324\343\377" "\253\277\325\377\222\254\311\377\234\264\316\377Hq\237\3630^\222(\377" "\377\377\0""0^\222\3""2`\223\236`\204\254\366\313\327\345\377\275\315" "\336\377\277\316\337\377\317\332\347\377\205\315\331\346\377\14\317\332" "\347\377\270\311\334\377\233\263\315\377^\204\257\377\234\264\316\377" "Hq\237\3630^\222(0^\222\16""2`\223\303y\227\271\370\317\333\347\377\267" "\310\333\377\202\253\277\325\377\1\255\300\326\377\202\256\301\327\377" "\203\257\302\327\377\24\245\272\322\377\177\236\300\377Y\201\255\377" "X\200\254\377\234\264\316\377Hq\237\3630^\222(0^\222\215Al\233\372\265" "\306\332\377\234\264\316\377\177\236\300\377\205\242\302\377\211\245" "\304\377\212\246\305\377\206\243\303\377\202\240\301\377}\234\277\377" "y\231\275\377j\215\265\377\204X\200\254\377\10\234\264\316\377Hq\237" "\3630^\222(0^\222\2""2`\223\223Gp\237\365\235\264\316\377\203\240\301" "\377\213X\200\254\377\4]\204\257\377\242\270\321\377@k\232\3700^\222" "\34\202\377\377\377\0\11""1_\223f;g\230\366\223\254\310\377\216\251\307" "\377t\225\272\377\230\261\314\377\234\264\316\377\235\264\316\377\235" "\265\317\377\202\236\265\317\377\6\241\267\320\377\243\271\321\377\247" "\274\323\377\246\273\322\377{\231\273\3762`\224\317\204\377\377\377\0" "\10""0^\222A5b\225\362\204\240\300\376\253\277\325\377Y\177\251\371F" "p\236\364Eo\236\364Eo\235\364\202Dn\235\364\6\77j\233\366;g\230\3717" "c\225\3763`\223\3722`\223\2540^\222(\203\377\377\377\0\10\0\0\0\1\0\0" "\0\2-X\211)2_\223\345q\221\266\372:f\230\371)Q~5'Ku(\202&Js)\7&Kt'$F" "m\40\37=_\26\23&;\12\0\0\0\4\0\0\0\3\0\0\0\2\202\0\0\0\1\11\0\0\0\2\0" "\0\0\6\0\0\0\12\0\0\0\21\25*A(0]\217\3200^\222\377\16\33)8\0\0\0/\202" "\0\0\0""1\22\0\0\0/\0\0\0+\0\0\0%\0\0\0\37\0\0\0\27\0\0\0\21\0\0\0\12" "\0\0\0\6\0\0\0\2\0\0\0\6\0\0\0\14\0\0\0\24\0\0\0\36\0\0\0)\4\10\15""8" ")Q~\263\13\25!U\0\0\0N\202\0\0\0R\22\0\0\0N\0\0\0G\0\0\0>\0\0\0""4\0" "\0\0(\0\0\0\35\0\0\0\23\0\0\0\13\0\0\0\1\0\0\0\4\0\0\0\10\0\0\0\16\0" "\0\0\26\0\0\0\37\0\0\0(\0\0\0""0\1\2\3""9\0\0\0<\202\0\0\0\77\10\0\0" "\0<\0\0\0""7\0\0\0/\0\0\0&\0\0\0\35\0\0\0\24\0\0\0\14\0\0\0\7\202\377" "\377\377\0\10\0\0\0\1\0\0\0\3\0\0\0\5\0\0\0\7\0\0\0\12\0\0\0\15\0\0\0" "\17\0\0\0\21\202\0\0\0\22\10\0\0\0\20\0\0\0\16\0\0\0\13\0\0\0\11\0\0" "\0\6\0\0\0\4\0\0\0\2\0\0\0\1\210\377\377\377\0\205\0\0\0\1\233\377\377" "\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_open) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_open[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_open[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (951) */ "\0\0\3\317" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\224\0\0\0\0\1Y[WU\203Z\\X\377\202Y[W\377\3XZW\377Z\\W\314UWS\10\213" "\0\0\0\0\5yyu\364\367\367\364\377\356\356\351\377\353\354\346\377\351" "\351\342\377\202\346\347\337\377\2\223\224\215\367Y[V\227\213\0\0\0\0" "\2xxt\364\346\346\337\377\204\270\271\243\377\3\275\276\251\377\333\333" "\321\377~\200{\367\210UWS\377\5Y[V_UWS\2\0\0\0\0vws\364\344\344\334\377" "\202\270\271\243\377P\267\270\242\377\265\266\240\377\264\264\236\377" "\270\270\243\377\317\320\302\377\322\323\306\377\316\317\301\377\312" "\312\274\377\305\306\266\377\301\301\261\377\274\274\253\377\267\270" "\245\377\263\264\241\377XZV\374UWS\10\0\0\0\0uvr\364\341\342\330\377" "\265\266\237\377\263\264\235\377\261\262\233\377\257\260\231\377\255" "\256\227\377\253\254\225\377\251\252\223\377\247\250\221\377\245\246" "\216\377\243\244\214\377\241\242\212\377\237\240\210\377\236\236\206" "\377\234\234\204\377\250\250\223\377WYU\374UWS\10\0\0\0\0sup\364\334" "\334\322\377\256\257\230\377\254\255\226\377\252\253\224\377\250\251" "\222\377\246\247\220\377\245\245\216\377\243\243\214\377\241\241\211" "\377\237\237\207\377\235\235\205\377\233\233\203\377\231\231\201\377" "\227\227\177\377\225\226}\377\236\237\210\377WYU\374UWS\10\0\0\0\0qs" "n\363\326\326\313\377\250\250\221\377\246\246\217\377\244\244\215\377" "\242\242\213\377\240\241\211\377\236\237\206\377\234\235\204\377\232" "\233\202\377\230\231\200\377\226\227~\377\224\225|\377\222\223z\377\217" "\220x\377\216\216u\377\223\223{\377VXS\374UWS\16\0\0\0\0pql\363\276\276" "\263\377cd]\377WYU\377\202WYT\377\202VXT\377\1VXS\377\204UWS\377\1VX" "S\377\204VXT\377\35VXT\375Z\\W\237npk\363\205\206~\377\261\262\251\377" "\351\352\343\377\346\346\336\377\341\342\331\377\336\336\324\377\332" "\332\317\377\326\326\312\377\322\323\305\377\316\317\300\377\312\313" "\273\377\306\307\266\377\302\303\261\377\276\277\253\377\272\273\246" "\377\265\266\241\377\261\262\233\377\237\240\213\377Y[V\356lnh\363km" "f\377\333\333\323\377\300\301\257\377\261\262\234\377\261\262\233\377" "\260\261\233\377\202\260\261\232\377\1\257\260\232\377\203\257\260\231" "\377\205\256\257\230\377\6\216\220\177\377\\^X\267jlf\363\\]Y\377\353" "\353\345\377\263\264\235\377\216\260\261\231\377\5yzn\370UWSnfha\365" "|}w\377\343\344\333\377\217\261\262\233\377\5ac\\\362UWS1`b]\367\240" "\242\232\377\327\327\313\377\216\263\264\235\377\6\255\256\230\377XZ" "U\367UWS\3^`[\372\277\277\267\377\313\314\274\377\216\264\265\236\377" "\6\230\231\210\377]^Y\313\0\0\0\0^`Z\375\327\327\317\377\301\302\257" "\377\216\266\267\240\377\30\201\202v\377WYT\207\0\0\0\0Y[V\377\333\333" "\323\377\346\346\336\377\342\342\331\377\336\336\324\377\332\332\317" "\377\326\326\312\377\322\322\305\377\316\317\300\377\312\313\274\377" "\306\307\266\377\302\303\262\377\276\277\255\377\272\273\250\377\266" "\267\243\377\264\265\240\377\262\263\236\377ce^\377OQNM\0\0\0\0WYT\353" "\220VXT\377\7Y[U\360\37\40\36\13\0\0\0\0\0\0\0\26\0\0\0;\0\0\0E\0\0\0" "F\212\0\0\0G\202\0\0\0F\6\0\0\0\77\0\0\0\37\0\0\0\3\0\0\0\0\0\0\0\2\0" "\0\0\10\216\0\0\0\12\2\0\0\0\11\0\0\0\4\202\0\0\0\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_prev_year) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_prev_year[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_prev_year[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1113) */ "\0\0\4q" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\301\377\377\377\0\3FJCXX[U\372FJC\340\203\377\377\377\0\3FKCXX[U\372" "EJC\340\203\377\377\377\0\3FJCXX[U\372FJC\340\204\377\377\377\0\4FJC" "Sz{y\354\315\315\315\375ad_\377\202\377\377\377\0\4GJDSz{y\354\315\315" "\315\375ad_\377\202\377\377\377\0\4FJCSz}y\354\315\315\316\376ad_\377" "\203\377\377\377\0\21FJCMy|w\355\320\317\320\372\311\311\312\372dgb\377" "\377\377\377\0FIBMy|w\355\320\317\320\372\311\311\312\372dgb\377\377" "\377\377\0FJCMz}x\355\320\320\321\372\311\311\312\372dgb\377\202\377" "\377\377\0vFJCHy|x\355\326\326\327\372\233\232\232\377\302\302\302\365" "ehc\377GJCHy{x\355\326\326\327\372\233\232\232\377\302\302\302\365eh" "c\377FJCHy|w\355\327\327\330\372\233\232\232\377\302\302\303\365ehc\377" "\377\377\377\0FJCCy|w\356\335\335\335\372\242\241\241\377\213\212\212" "\377\302\302\302\365[^Z\377y|w\356\335\335\335\372\242\241\241\377\213" "\212\212\377\302\302\302\365[_Y\377y{w\356\336\336\337\372\242\241\241" "\377\214\212\212\377\302\302\303\365cfa\377FJC>wzu\356\346\346\346\371" "\250\250\250\377\221\217\217\377\213\212\212\377\241\242\241\367txt\377" "\346\346\346\371\250\250\250\377\221\217\217\377\213\212\212\377\241" "\242\241\367uxs\377\345\345\346\371\250\250\250\377\221\217\217\377\214" "\212\212\377\300\300\301\364`c^\377FJC\321\341\341\341\356\266\265\265" "\377\223\222\222\377\221\217\217\377\211\207\210\377X\\V\375\327\330" "\330\377\266\265\265\377\223\222\222\377\221\217\217\377\211\207\210" "\377Y\\V\375\330\330\330\377\267\266\266\377\223\222\222\377\221\217" "\217\377\211\210\210\377\262\262\262\362`c^\377FJC>rup\355\335\335\336" "\367|{{\377[YY\377ROP\377\212\214\212\363pto\377\335\335\336\367|{{\377" "[YY\377ROP\377\213\214\212\363qto\377\335\335\336\367|{{\377[YY\377R" "OP\377\242\242\243\357`c^\377\377\377\377\0FJCCsvq\355\321\321\322\370" "rpp\377OLM\377\242\242\243\357Y\\W\377svq\355\321\321\322\370rpp\377" "OLM\377\242\242\243\357Y\\W\377svq\355\322\322\323\367rpp\377OLM\377" "\242\242\243\357`c^\377\202\377\377\377\0\22FJCHruq\354\307\307\310\370" "gef\377\242\242\243\357`c^\377GJCHrtq\354\307\307\310\370gef\377\242" "\242\243\357`c^\377FJCHrup\354\310\310\311\367gef\377\242\242\243\357" "`c^\377\203\377\377\377\0\21FJCMrup\354\275\274\275\367\256\256\260\367" "`c^\377\377\377\377\0FIBMrup\354\275\274\275\367\256\256\260\367`c^\377" "\377\377\377\0FJCMrup\354\275\275\276\367\256\256\257\367`c^\377\204" "\377\377\377\0\20FJCSqsp\353\271\270\271\374]`[\377\0\0\0\3\0\0\0\5C" "F@Xqso\354\271\270\271\375]`[\377\0\0\0\3\0\0\0\1FJCSqtp\353\270\270" "\271\375]`[\377\203\377\377\377\0\21\0\0\0\7\0\0\0\15=@:eTXR\373EIB\344" "\0\0\0%\0\0\0)\0\0\0,492uTWQ\373DHB\345\0\0\0%\0\0\0\40\0\0\0\33=@:f" "UXR\372FJC\341\202\377\377\377\0\22\0\0\0\2\0\0\0\15\0\0\0\25\0\0\0\35" "\0\0\0%\0\0\0,\0\0\0""4\0\0\0;\0\0\0B\0\0\0F\0\0\0B\0\0\0<\0\0\0""4\0" "\0\0-\0\0\0&\0\0\0\36\0\0\0\25\0\0\0\7\204\377\377\377\0\16\0\0\0\1\0" "\0\0\4\0\0\0\10\0\0\0\14\0\0\0\21\0\0\0\26\0\0\0\32\0\0\0\33\0\0\0\30" "\0\0\0\24\0\0\0\17\0\0\0\13\0\0\0\7\0\0\0\3\252\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_remove) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_remove[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_remove[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (243) */ "\0\0\1\13" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\377\377\377\377\0\216\377\377\377\0\2\4$^z\0\36\\\376\216\0\36\\\377" "\2\0\36\\\376\4$^z\202\377\377\377\0\2\12&c\374\271\310\333\377\216\303" "\321\341\377\2\271\310\333\377\12&c\374\202\377\377\377\0\2\20,f\377" "\276\316\337\377\205\226\257\313\377\13\224\255\312\377\211\245\304\377" "\177\236\300\377y\231\274\377r\223\271\377k\216\265\377e\212\263\377" "f\213\263\377p\222\270\377\255\301\326\377\15*d\377\202\377\377\377\0" "\10\13(c\377\243\272\322\377w\227\273\377{\232\275\377u\226\273\377l" "\217\266\377a\207\261\377Y\200\254\377\210X\200\254\377\2\230\261\314" "\377\12'b\377\202\377\377\377\0\2\7#a\374\223\253\307\377\216\237\266" "\317\377\2\223\253\307\377\7#a\374\202\377\377\377\0\2\4$^z\0\36\\\376" "\216\0\36\\\377\2\0\36\\\376\4$^z\377\377\377\377\0\216\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_select_color) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_select_color[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_select_color[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (795) */ "\0\0\3""3" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\252\377\377\377\0\6""333\12""99;~::;\347::;\377;;<\377;.<\377\204;;" "<\377\6<+<\377;;<\377::;\377@=:\356]O9\234333\12\204\377\377\377\0\3" "RMS\232|u|\373\324\307\322\377\202\345\326\343\377\1\215}\215\377\204" "\312\340\267\377\6\215}\215\377\373\331\240\377\373\331\237\377\351\311" "\225\377\205wa\37099;~\204\377\377\377\0\3>=\77\356\325\310\323\377\326" "\300\324\377\202\322\271\317\377\1GH\371\20299:\377\1:-;\377\2049" "9:\377\1:3:\377\20299:\377\3""99:\34599;~333\12\252\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_select_date) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_select_date[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_select_date[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (940) */ "\0\0\3\304" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\2NMM\303ZYZ\377\212\\Z[\377\2TRS\377HGG\343\206\377\377\377\0\4\177" "~\177\377\303\302\302\377\351\351\351\377\335\335\335\377\210\271\271" "\271\377\2\256\256\256\377RPQ\377\206\377\377\377\0\4gff\377\232\230" "\231\377\273\272\272\377\255\253\254\377\210\230\226\227\377\2\211\211" "\211\377JHI\377\206\377\377\377\0\2WXU\377\221\220\220\377\212\224\223" "\223\377\2\221\217\220\377TUS\377\206\377\377\377\0\3Z\\X\377\373\373" "\373\377\345\345\343\377\210\344\344\342\377\3\346\346\344\377\372\372" "\371\377[]X\377\206\377\377\377\0\3UWS\377\374\374\374\377\346\346\343" "\377\210\345\345\342\377\3\347\347\344\377\373\373\373\377UWS\377\206" "\377\377\377\0\3UWS\377\374\374\374\377\346\346\343\377\202\345\345\342" "\377\1__]\377\203UUT\377\5\235\235\233\377\345\345\342\377\347\347\344" "\377\373\373\373\377UWS\377\206\377\377\377\0\3UWS\377\374\374\374\377" "\346\346\343\377\202\345\345\342\377\2ZZY\377\203\203\202\377\202\266" "\266\264\377\5\316\316\314\377\345\345\342\377lni\377\276\276\276\377" "UWS\377\206\377\377\377\0\3UWS\377\374\374\374\377\346\346\343\377\202" "\345\345\342\377\6ZZY\377hhg\377\202\202\200\377\253\253\250\377\335" "\335\332\377\345\345\342\377\202564\377\1JKI\377\206\377\377\377\0\3" "UWS\377\374\374\374\377\346\346\343\377\202\345\345\342\377\12\207\207" "\206\377\240\240\236\377\207\207\205\377QQP\377\224\224\223\377\353\353" "\351\377554\377}\227k\3778:7\377222R\205\377\377\377\0\3UWS\377\374\374" "\374\377\346\346\343\377\204\345\345\342\377\11\350\350\346\377aaa\377" "bba\377\362\362\361\377454\377\240\274\215\377~\236j\377896\371222S\204" "\377\377\377\0\21UWS\377\374\374\374\377\346\346\343\377\345\345\342" "\377\311\311\306\377\211\211\210\377\261\261\260\377\234\234\232\377" "QQP\377\227\227\226\377\362\362\361\377454\377\250\302\227\377P\214(" "\377\177\236j\377896\371222U\203\377\377\377\0\22UWS\377\374\374\374" "\377\346\346\343\377\350\350\346\377\333\333\331\377\210\210\207\377" "mml\377xxx\377\247\247\246\377\346\346\345\377\362\362\361\377443\377" "\271\316\253\377E\204\33\377P\214(\377\177\236j\3778:6\371222W\202\377" "\377\377\0\3VXT\375\367\367\366\377\375\375\375\377\210\376\376\376\377" "\13""343\377\274\320\257\377b\227>\377C\203\30\377P\214(\377\177\237" "i\3778:6\370222X\377\377\377\0Z\\XwVXT\375\211UWS\377\11""222\377\273" "\320\256\377\226\271}\377G\206\35\377N\212&\377\177\253b\377~\236i\377" "241\372222Z\213\377\377\377\0\11""222\376\273\320\255\377\264\315\242" "\377\240\300\212\377\200\250e\377AG=\370444\376222\376370\255\213\377" "\377\377\0\10""222\376\307\327\274\377\227\246\214\374\235\257\220\374" "\267\316\247\377DJB\367222_222\2\214\377\377\377\0\7""222\377LUF\371" "351\330<>;\372\303\325\266\377\211\240{\377361\321\215\377\377\377\0" "\10""351\342341\232222\6""361\265{\212q\375s\201h\373232\372222\12\214" "\377\377\377\0\1""222\1\202\377\377\377\0\4""2222361\341351\222222\"" "\202\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_select_font) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_select_font[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_select_font[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1402) */ "\0\0\5\222" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\3\237\237\237\257\234\234\234\377\236\236\236\377\202\240\240\240\377" "\21\236\236\236\377\234\234\234\377\231\231\231\377\227\227\227\377\225" "\225\224\377\222\222\222\377\220\220\220\377\216\216\215\377\213\213" "\213\377\211\211\210\377\206\206\206\377\204\204\203\377\202\202\201" "\377\177\177~\377\203\203\202\257\232\232\232\377\373\373\373\377\203" "\376\376\376\377\204\375\375\375\377\203\374\374\374\377\203\373\373" "\373\377\202\372\372\372\377\7\371\371\371\377\367\367\367\377}}|\377" "\232\232\232\377\376\376\376\377\356\356\356\377\357\357\357\377\202" "\360\360\360\377\202\357\357\357\377\20\356\356\356\377\354\354\354\377" "\353\353\353\377\351\351\351\377\347\347\347\377\345\345\345\377\343" "\343\343\377\341\341\341\377\337\337\337\377\335\335\335\377\371\371" "\371\377}}|\377\231\231\230\377\376\376\376\377\360\360\360\377\361\361" "\361\377\202\362\362\362\377\202\361\361\361\377\20\357\357\357\377\331" "\331\331\377___\377\0\0\0\377PPP\377ddd\377GGG\377<<<\377\214\214\214" "\377\336\336\336\377\371\371\371\377|||\377\227\227\227\377\376\376\376" "\377\362\362\362\377\363\363\363\377\202\364\364\364\377\22\363\363\363" "\377\362\362\362\377\360\360\360\377\356\356\356\377\264\264\264\377" "\2\2\2\377\333\333\333\377\346\346\346\377\344\344\344\377```\377!!!" "\377\336\336\336\377\371\371\371\377||{\377\225\225\225\377\375\375\375" "\377\363\363\363\377\365\365\365\377\202\366\366\366\377\22\365\365\365" "\377\363\363\363\377\361\361\361\377\357\357\357\377~~~\377)))\377\351" "\351\351\377\347\347\347\377\340\340\340\377,,,\377SSS\377\336\336\336" "\377\371\371\371\377{{{\377\223\223\222\377\375\375\375\377\364\364\364" "\377\366\366\366\377\202\370\370\370\377\22\366\366\366\377\364\364\364" "\377\361\361\361\377\357\357\357\377HHH\377$$$\377eee\377OOO\377!!!\377" "\203\203\203\377\327\327\327\377\336\336\336\377\371\371\371\377zzz\377" "\220\220\220\377\375\375\375\377\365\365\365\377\367\367\367\377\202" "\370\370\370\377\22\365\365\365\377\363\363\363\377\361\361\361\377\357" "\357\357\377\23\23\23\377\223\223\223\377\350\350\350\377\341\341\341" "\377\251\251\251\377\10\10\10\377\233\233\233\377\335\335\335\377\371" "\371\371\377zzy\377\216\216\216\377\374\374\374\377\364\364\364\377\365" "\365\365\377\202\366\366\366\377\21\364\364\364\377\362\362\362\377\360" "\360\360\377\313\313\313\377\0\0\0\377\311\311\311\377\350\350\350\377" "\346\346\346\377\344\344\344\377\24\24\24\377ccc\377\335\335\335\377" "\371\371\371\377xxx\377\214\214\213\377\374\374\374\377\363\363\363\377" "\203\364\364\364\377\21\362\362\362\377\361\361\361\377\357\357\357\377" "\224\224\224\377\25\25\25\377\351\351\351\377\347\347\347\377\345\345" "\345\377\226\226\226\377\3\3\3\377\251\251\251\377\334\334\334\377\371" "\371\371\377wwv\377\211\211\211\377\374\374\374\377\361\361\361\377\202" "\362\362\362\377\202\361\361\361\377\177\357\357\357\377~~~\377///\377" "\32\32\32\377eee\377bbb\377FFF\377EEE\377\244\244\244\377\336\336\336" "\377\334\334\334\377\370\370\370\377vvu\377\207\207\206\377\373\373\373" "\377\357\357\357\377\250\250\250\377@@@\377888\377www\377\322\322\322" "\377\354\354\354\377\352\352\352\377\351\351\351\377\347\347\347\377" "\345\345\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335" "\335\335\377\333\333\333\377\370\370\370\377tts\377\204\204\203\377\373" "\373\373\377\355\355\355\377\306\306\306\377\337\337\337\377\346\346" "\346\377\202\202\202\377\\\\\\\377\352\352\352\377\351\351\351\377\347" "\347\347\377\345\345\345\377\344\344\344\377\342\342\342\377\340\340" "\340\377\336\336\336\377\334\334\334\377\332\332\332\377\370\370\370" "\377ssr\377\201\201\201\377\372\372\372\377\353\353\353\377\335\335\335" "\377\237\237\237\377lll\377\\\\\\\377\24\24\24\377\350\350\350\377\347" "\347\347\377\345\345\345\377\344\344\344\377\342\342\342\377\340\340" "\340\377\336\336\336\377\335\335\335\377\333\333\333\377\331\331\331" "\377\370\370\370\377ssr\377\177\177~\377\372\372\372\377\351\351\351" "\377ZZZ\377qqq\377\271\271\271\377\277\277\277\377\2\2\2\377\346\346" "\346\377\345\345\345\377\344\344\344\377\342\342\342\377\340\340\340" "\377\337\337\337\377\335\335\335\377\333\333\333\377\331\331\331\377" "\327\327\327\377\370\370\370\377ssr\377||{\377\372\372\372\377\347\347" "\347\377\33\33\33\377\317\317\317\377\347\347\347\377\215\215\215\377" "\0\0\0\377\344\344\344\377\343\343\343\377\342\342\342\377\340\340\340" "\377\337\337\337\377\335\335\335\377\333\333\333\377\332\332\332\377" "\330\330\330\377\326\326\326\377\370\370\370\377ssr\377zzy\377\371\371" "\371\377\345\345\345\377\203\203\203\377'''\377888\377YYY\377\7\7\7\377" "\342\342\342\377\341\341\341\377\340\340\340\377\336\336\336\377\335" "\335\335\377\333\333\333\377\10\332\332\332\377\330\330\330\377\326\326" "\326\377\325\325\325\377\370\370\370\377ssr\377wwv\377\371\371\371\377" "\203\343\343\343\377\202\342\342\342\377\17\341\341\341\377\340\340\340" "\377\337\337\337\377\336\336\336\377\335\335\335\377\333\333\333\377" "\332\332\332\377\330\330\330\377\327\327\327\377\325\325\325\377\323" "\323\323\377\370\370\370\377ssr\377tts\377\366\366\366\377\220\370\370" "\370\377\3\365\365\365\377ssr\377zzy\257\222ssr\377\1yyx\257"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_today) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_today[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_today[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1245) */ "\0\0\4\365" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\232\377\377\377\0\3CCCACCC\202DDD\264\202VVV\350\3CCC\264CCC\202CCC" "A\212\377\377\377\0\5@@@\30DDD\253sss\377\211\211\210\377\221\221\220" "\377\202\216\216\215\377\5\221\221\220\377\207\207\207\377qqq\377CCC" "\253@@@\30\207\377\377\377\0\6CCCLYYY\361\216\216\215\377\211\211\210" "\377\205\205\204\377\222\223\221\377\202\237\237\235\377\6\222\223\221" "\377\205\205\204\377\211\211\210\377\214\214\213\377XXX\361CCCL\205\377" "\377\377\0\6FFF\35WWW\361\223\223\222\377\203\203\202\377\235\235\233" "\377\276\300\275\377\204\302\303\300\377\6\276\300\275\377\235\235\233" "\377\203\203\202\377\223\223\222\377UUU\361FFF\35\203\377\377\377\0\10" "\200\200\200\2FFF\300\215\215\214\377\203\203\202\377\256\256\254\377" "\302\303\300\377\267\271\266\377\233\234\232\377\202\216\216\215\377" "\10\233\234\232\377\267\271\266\377\302\303\300\377\256\256\254\377\203" "\203\202\377\212\212\212\377DDD\277\200\200\200\2\202\377\377\377\0\10" "BBBQuuu\377\206\206\205\377\237\237\235\377\302\303\300\377\253\253\251" "\377\204\204\203\377\202\202\201\377\202\210\211\207\377\10\202\202\201" "\377\204\204\203\377\253\253\251\377\302\303\300\377\237\237\235\377" "\206\206\205\377ssr\377BBBQ\202\377\377\377\0\10CCC\214\205\205\204\377" "\204\204\203\377\300\301\277\377\271\272\267\377\205\205\204\377\210" "\211\207\377\256\257\255\377\202\301\302\277\377\10\256\257\255\377\210" "\211\207\377\205\205\204\377\271\272\267\377\300\301\277\377\204\204" "\203\377\202\202\201\377CCC\214\202\377\377\377\0\1DDD\303\202\220\220" "\217\377\17\302\303\300\377\243\244\242\377\202\202\201\377\244\245\243" "\377\302\303\300\377\304\242\240\377\304\240\235\377\302\303\300\377" "\244\245\243\377\202\202\201\377\243\244\242\377\302\303\300\377\220" "\220\217\377\215\215\214\377CCC\303\202\377\377\377\0\22OOO\362rrq\377" "yyw\377\253\255\252\377ggf\377FFF\377\236\237\235\377\257\241\236\377" "\273;:\377\301NL\377\300\262\260\377\273\274\271\377\202\202\201\377" "\230\230\226\377\302\303\300\377\233\233\231\377\212\212\211\377MMM\362" "\202\377\377\377\0\22DDD\316^^^\377\\\\[\377\250\252\247\377rsr\377C" "CC\377\201\202\200\377\250\251\246\377\256SP\377\256ON\377\250\250\245" "\377\207\210\206\377]]\\\377\220\221\217\377\273\275\273\377zzy\377b" "bb\377DDD\316\202\377\377\377\0\10DDD\227^^^\377HHH\377\250\252\247\377" "\221\222\220\377DDD\377TTT\377\233\234\232\377\202\250\252\247\377\10" "\233\234\232\377TTT\377DDD\377\221\222\220\377\250\252\247\377HHH\377" "^^^\377DDD\227\202\377\377\377\0\10CCC_^^^\377EEE\377|}{\377\250\252" "\247\377qrq\377CCC\377DDD\377\202^_^\377\10DDD\377CCC\377qrq\377\250" "\252\247\377|}{\377EEE\377^^^\377CCC_\202\377\377\377\0\10MMM\12FFF\331" "aaa\377FFF\377\225\227\224\377\250\252\247\377\204\205\203\377SSS\377" "\202DDD\377\10SSS\377\204\205\203\377\250\252\247\377\225\227\224\377" "FFF\377aaa\377FFF\331MMM\12\203\377\377\377\0\7EEE4SSS\373XXX\377III" "\377\200\202\200\377\247\251\246\377\250\252\247\377\202\242\244\241" "\377\7\250\252\247\377\247\251\246\377\200\202\200\377III\377XXX\377" "SSS\373EEE4\205\377\377\377\0\6DDDqWWW\375ccc\377GGG\377WWW\377pqo\377" "\202\202\204\202\377\6pqo\377WWW\377GGG\377ccc\377VVV\375DDDq\205\377" "\377\377\0\7\0\0\0\4\0\0\0\25---VDDD\337ccc\377```\377XXX\377\202KKK" "\377\10XXX\377```\377ccc\377DDD\341'''a\0\0\0#\0\0\0\23\0\0\0\1\203\377" "\377\377\0\7\0\0\0\11\0\0\0\34\0\0\0.\10\10\10D111\236:::\320III\361" "\202XXX\377\10HHH\362999\324...\246\6\6\6R\0\0\0=\0\0\0+\0\0\0\24\0\0" "\0\1\204\377\377\377\0\16\0\0\0\2\0\0\0\13\0\0\0\27\0\0\0%\0\0\0""4\0" "\0\0C\21\21\21X\21\21\21Z\0\0\0G\0\0\0:\0\0\0+\0\0\0\35\0\0\0\21\0\0" "\0\5\214\377\377\377\0\202\0\0\0\1\211\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_yes) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_yes[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_yes[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1447) */ "\0\0\5\277" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\3""7^%>7^%\2028`%\303\2027_%\362\3""7_%\3037^%\202" "7^%>\212\377\377\377\0\14""7^%\21""7_%\253=e*\363U\200\77\373b\216K\377" "n\232W\377l\227W\377^\207K\377Qx\77\373\377b\217K\377m\222\\\377Kp;\3677^%\3547^%;\205\377\377" "\377\0\20""7^%\21""7_%\354b\217J\377x\250Z\377k\242D\377o\247D\377r\251" "G\377l\245B\377_\2327\377L\213&\377E\200%\377J|0\377f\213V\377Y}J\377" "7_%\3547^%\21\204\377\377\377\0\20""7_%\253Pz;\367r\244V\377d\235;\377" "y\257M\377\211\273[\377\217\300`\377\206\271Y\377t\253I\377]\2315\377" "H\207%\377B{%\377=p&\377d\206V\377Ks;\3677_%\253\203\377\377\377\0\22" "7^%>>e+\363t\240]\377]\2278\377o\247E\377\212\274\\\377\241\316o\377" "\253\326x\377\234\312k\377\204\267V\377i\242\77\377M\214(\377D~%\377" ">r%\377Bm0\377j\217]\377=e+\3637^%>\202\377\377\377\0\22""7^%\202R|\77" "\373f\230K\377W\2240\377s\252H\377\220\300a\377\254\327y\377\301\347" "\213\377\246\322s\377\211\273[\377m\245C\377P\217*\377E\177%\377>r%\377" "8e%\377Z\203K\377Oy\77\3737^%\202\202\377\377\377\0\22""7_%\303^\206" "K\377Z\217>\377S\221,\377n\246D\377\210\272Z\377\236\313m\377\247\322" "t\377\231\310i\377\202\266U\377h\241>\377L\214'\377D~%\377>q%\3777d%" "\377Nz>\377Z\204K\3777_%\303\202\377\377\377\0\22""7^%\362h\220W\377" "N\2052\377I\211%\377`\2338\377u\254J\377\205\270W\377\212\274\\\377\202" "\266U\377q\250F\377[\2273\377H\206%\377Bz%\377\377Ay%\377E\201%\377I\210%\377" "O\215)\377Q\217+\377M\214'\377H\206%\377D\177%\377@w%\377\377Z\204K\3777_%\303\202\377\377\377\0\22""7^%\202Ou\77" "\373Z\200K\377=o%\377@v%\377C|%\377D\177%\377E\200%\377D~%\377B{%\377" "\77u%\377r%\377>s%" "\377>r%\377\203\377\377\377\0\21""7_%\254Kt;\367d\212V\3778f&\3777c%\3778e%" "\3778f%\3778e%\3777c%\3777f%\3777i%\3777n%\3778q&\377d\220V\377Ku;\370" "6^%\255\0\0\0\3\202\377\377\377\0\6\0\0\0\1-M\36\25""7^%\355Y\204J\377" "d\216V\377Ar0\377\2037i%\377\23""7k%\3777m%\3777p%\377Aw0\377d\220V\377" "Y\204J\3776^%\357\34/\23\"\0\0\0\6\0\0\0\1\377\377\377\0\0\0\0\1\0\0" "\0\7-L\36I6^%\357Kt;\372i\223\\\377Z\211K\377N\200>\377\202Cx2\377\22" "N\200>\377Z\211K\377i\223\\\377Js;\3726\\$\362!9\26a\0\0\0\32\0\0\0\12" "\0\0\0\2\377\377\377\0\0\0\0\1\0\0\0\7\0\0\0\23\22\36\14""51T!\301;b" ")\367Ox\77\375Z\204K\377\202d\217W\377\35Z\204K\377Ox\77\375;a)\371." "O\37\316\12\22\7[\0\0\0""2\0\0\0\32\0\0\0\12\0\0\0\2\377\377\377\0\0" "\0\0\1\0\0\0\4\0\0\0\15\0\0\0\33\0\0\0""1\35""2\24t)F\33\2600T!\3356" "\\$\3706\\$\3710R\40\341&A\31\274\30*\20\214\0\0\0R\0\0\0:\0\0\0#\0\0" "\0\21\0\0\0\6\0\0\0\1\202\377\377\377\0\21\0\0\0\1\0\0\0\5\0\0\0\15\0" "\0\0\30\0\0\0&\0\0\0""6\0\0\0C\0\0\0M\0\0\0Q\0\0\0P\0\0\0G\0\0\0;\0\0" "\0,\0\0\0\35\0\0\0\20\0\0\0\7\0\0\0\2\204\377\377\377\0\17\0\0\0\1\0" "\0\0\3\0\0\0\7\0\0\0\15\0\0\0\24\0\0\0\32\0\0\0\37\0\0\0!\0\0\0\40\0" "\0\0\35\0\0\0\26\0\0\0\17\0\0\0\11\0\0\0\3\0\0\0\1\202\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_about) #endif #ifdef __GNUC__ const guint8 osmo_stock_about[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_about[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1062) */ "\0\0\4>" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\242\377\377\377\0\3\303\207\27\"\303\210\26\307\275\204\23\33\225\377" "\377\377\0\3\303\211\26\266\337\301\200\376\303\211\30\263\224\377\377" "\377\0\6\277\203\23D\321\245K\367\370\361\311\377\331\263i\370\302\203" "\23P\252\252\0\3\217\377\377\377\0\13\302\206\26i\304\213\30\312\311" "\221-\365\323\246Q\367\363\350\270\377\365\354\257\377\362\346\262\377" "\330\261a\366\314\232>\373\307\216!\336\305\215\26\177\215\377\377\377" "\0\5\304\212\26\241\331\263f\374\367\362\316\377\363\352\246\377\363" "\352\245\377\202\364\354\255\377\4\365\356\265\377\367\360\311\377\337" "\300\200\374\302\210\27\222\215\377\377\377\0\12\377\200\0\2\303\210" "\27\251\321\245=\366\354\334p\377\345\321:\377\350\326M\377\356\341\200" "\377\365\355\266\377\340\304\177\371\304\211\26\240\217\377\377\377\0" "\3\377\200\0\2\303\207\26\321\345\316n\377\203\345\321:\377\3\350\322" "t\377\303\210\26\335\377\377\0\1\220\377\377\377\0\7\303\211\30\326\350" "\324r\377\351\331f\377\345\316r\377\353\333u\377\351\330r\377\307\222" "+\356\221\377\377\377\0\10\303\210\25\357\337\276h\374\311\224.\370\303" "\211\27\313\305\212\34\366\334\272_\370\307\220)\376\306\216\34\11\220" "\377\377\377\0\10\303\210\27\310\303\207\26\231\277\207\30\40\377\377" "\377\0\303\207\17\21\304\210\25x\303\211\26\304\304\211\24\15\214\377" "\377\377\0\3\301\204\24\"\303\210\26\307\301\204\24\33\212\377\377\377" "\0\3\301\204\24#\303\210\26\306\301\204\24\27\210\377\377\377\0\3\303" "\211\26\266\340\301\200\376\304\211\31\263\212\377\377\377\0\3\303\210" "\26\270\340\302\201\376\304\211\31\256\207\377\377\377\0\6\301\204\24" "D\322\245L\367\367\361\311\377\330\262g\370\301\204\24P\301\204\24\3" "\207\377\377\377\0\6\301\204\24J\322\247P\367\370\362\313\377\331\263" "h\370\301\204\24O\301\204\24\3\202\377\377\377\0\13\303\210\26i\304\212" "\30\312\310\221+\365\322\246O\367\363\350\270\377\365\354\257\377\362" "\346\262\377\327\260b\366\315\233\77\373\306\217!\336\304\212\27\177" "\202\377\377\377\0\20\303\210\26i\304\212\30\313\310\221+\365\322\247" "P\367\363\350\270\377\364\354\256\377\361\345\262\377\327\260a\366\315" "\233\77\373\306\217\"\335\304\213\27|\303\211\27\241\330\263f\374\367" "\361\316\377\363\352\246\377\363\352\245\377\202\364\354\255\377\4\365" "\356\265\377\367\360\311\377\337\300\200\374\303\210\26\222\202\377\377" "\377\0\3\303\211\27\242\331\265i\374\367\361\315\377\202\363\352\245" "\377\202\364\354\255\377\16\365\356\265\377\367\360\311\377\336\276}" "\373\303\210\26\222\301\204\24\2\303\210\26\251\321\245=\366\354\334" "p\377\345\321:\377\350\326M\377\356\341\200\377\365\355\266\377\340\303" "\177\371\303\210\26\240\203\377\377\377\0\12\301\204\24\3\303\210\26" "\255\321\246\77\366\353\333o\377\345\321:\377\350\326M\377\356\341\200" "\377\365\355\266\377\340\302}\371\303\210\26\240\202\377\377\377\0\3" "\301\204\24\2\303\210\26\321\345\316n\377\203\345\321:\377\3\350\322" "t\377\303\210\26\335\301\204\24\1\204\377\377\377\0\3\301\204\24\3\303" "\210\26\323\345\316n\377\203\345\321:\377\3\350\322t\377\303\211\26\331" "\301\204\24\1\203\377\377\377\0\7\304\212\27\326\350\323r\377\351\331" "f\377\345\316q\377\353\333u\377\351\330r\377\310\223+\356\206\377\377" "\377\0\7\304\211\27\327\350\324s\377\351\331f\377\345\316q\377\353\333" "u\377\352\331t\377\310\224+\350\204\377\377\377\0\10\303\210\26\357\336" "\277h\374\311\224.\370\303\211\27\313\303\212\33\366\334\272_\370\307" "\217)\376\301\204\24\11\205\377\377\377\0\10\302\207\25\362\336\276h" "\374\311\224.\367\303\211\27\312\303\212\33\366\334\273`\371\307\220" ")\374\301\204\24\4\203\377\377\377\0\10\303\211\26\310\303\210\26\231" "\301\204\24\40\377\377\377\0\301\204\24\21\302\206\25x\303\211\26\304" "\301\204\24\15\204\377\377\377\0\11\301\204\24\1\303\210\26\313\303\210" "\26\231\301\204\24\40\377\377\377\0\301\204\24\22\302\207\25{\303\211" "\26\303\301\204\24\12\311\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_help) #endif #ifdef __GNUC__ const guint8 osmo_stock_help[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_help[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1847) */ "\0\0\7O" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\237\377\377\377\0\4\200\200\200\33\206\203\203\177\211\205\203\276\212" "\205\204\353\202\210\205\203\375\4\212\205\204\353\211\205\203\276\206" "\203\203\177\200ww\35\214\377\377\377\0\15\200\0\0\2\213fi\226\211\204" "\202\375\216\213\212\374\240\235\233\375\270\267\265\377\324\324\323" "\377\324\325\323\377\271\270\266\377\241\235\234\375\221gk\375\225\27" "'\377\217HP\253\212\377\377\377\0\20\214rr&\223*7\365\223)6\377\304\301" "\301\377\354\355\355\377\354\355\354\377\355\356\355\377\355\356\354" "\377\356\357\355\377\357\360\356\377\357\355\353\377\361\330\327\377" "\271\213\221\377\225\31'\377\223)6\365\212||$\207\377\377\377\0\22\213" "bh+\223#0\376\231.;\376\343\326\326\377\354\264\264\377\355\354\352\377" "\362\363\360\377\356\357\355\377\354\355\352\377\353\354\352\377\354" "\355\352\377\354\237\235\377\356\201\200\377\360\302\302\377\350\340" "\337\377\231*7\376\2225\77\376\207\207\207!\205\377\377\377\0\23\252" "\0\0\3\225\32)\371\231:F\376\353\345\344\377\353\236\235\377\353BB\377" "\351~}\377\347\347\345\377\343\343\342\377\340\341\337\377\337\340\337" "\377\340\341\337\377\346&&\377\347<<\377\352ut\377\361\263\261\377\356" "\334\333\377\230\36-\377\221>H\360\205\377\377\377\0\24\221=E\264\224" "#0\377\345\346\345\377\353\251\250\377\353PO\377\346\0\0\377\345\31\31" "\377\346\343\342\377\347\347\347\377\351\351\351\377\351\351\350\377" "\345\341\341\377\354AA\377\346\3\3\377\34621\377\351hh\377\360\251\247" "\377\345\312\313\377\2233\77\377\210\200}\210\203\377\377\377\0\26\204" "em!\227\20!\377\273\231\235\377\355\276\276\377\355_^\377\346\0\0\377" "\350\24\24\377\360jj\377\276\230\231\377\216\212\211\374\210\204\202" "\377\214eg\377\226!.\377\301TX\377\360hh\377\350\23\23\377\346''\377" "\351hg\377\364\311\310\377\312\305\305\377\211\204\202\375\200\200\200" "\33\202\377\377\377\0\26\210kn\214\223BL\376\356\327\327\377\353lk\377" "\346\17\17\377\346\3\3\377\360jj\377\2417@\377\222,9\376\207\204\201" "\210\205\205\205,\210\202\202-\220AJ\262\227\13\34\377\246PT\376\360" "ii\377\342DD\377\343\327\325\377\354\355\352\377\365\365\364\377\217" "\213\212\374\206\203\203\177\202\377\377\377\0\11\211\205\203\276\240" "\235\233\375\354\355\354\377\361\354\351\377\347\253\252\377\353bb\377" "\271JQ\377\225\30'\376\220RW-\204\377\377\377\0\11\224(5N\226\13\34\377" "\272{~\377\335\334\333\377\334\334\333\377\347\347\345\377\366\367\365" "\377\243\237\235\375\211\205\203\276\202\377\377\377\0\10\212\205\204" "\353\270\267\265\377\355\356\355\377\356\357\355\377\343\343\342\377" "\347\347\346\377\2252>\376\215SY\244\206\377\377\377\0\10\215W[\242\220" "xy\374\341\341\341\377\327\330\327\377\343\343\342\377\361\362\361\377" "\274\273\271\377\212\205\204\353\202\377\377\377\0\10\210\205\203\375" "\324\324\323\377\355\356\354\377\354\355\352\377\340\341\337\377\351" "\351\351\377\210\204\202\377\205\205\205,\206\377\377\377\0\10\205\205" "\205,\210\204\202\377\347\347\347\377\325\325\324\377\340\341\337\377" "\356\357\354\377\332\333\330\377\210\205\203\375\202\377\377\377\0\10" "\210\205\203\375\324\325\323\377\356\357\355\377\353\354\352\377\337" "\340\337\377\351\351\350\377\210\204\202\377\205\205\205,\206\377\377" "\377\0\10\205\205\205,\210\204\202\377\347\347\347\377\324\324\323\377" "\337\340\337\377\355\356\354\377\333\334\331\377\210\205\203\375\202" "\377\377\377\0\10\212\205\204\353\271\270\266\377\357\360\356\377\354" "\355\352\377\340\341\337\377\345\345\345\377\216\210\207\374\212ij\226" "\206\377\377\377\0\10\217HO\255\2238C\376\342\342\342\377\325\325\324" "\377\340\341\337\377\360\361\356\377\275\274\272\377\212\205\204\353" "\202\377\377\377\0\11\211\205\203\276\241\235\234\375\357\360\357\377" "\356\357\355\377\343\343\342\377\341\342\341\377\261\207\213\377\226" "\17\40\377\220CL5\204\377\377\377\0\11\217@I7\226\21!\377\261\203\211" "\377\334\315\315\377\336\215\214\377\345vu\377\362\343\342\377\244\240" "\236\375\211\205\203\276\202\377\377\377\0\12\206\203\203\177\217\213" "\212\374\357\357\357\377\356\241\237\377\351\205\204\377\341\251\250" "\377\344\344\344\377\232PX\376\225\23#\377\216MR\251\202\205\205\205" ",\12\210|{\214\227\20!\377\232U\\\376\344\336\336\377\335\205\204\377" "\34554\377\346\1\1\377\361rq\377\2265\77\376\211rt\210\202\377\377\377" "\0\26\200\200\200\33\221E\377\355xx\377\354;;\377\353\334\331\377\347\347\345\377\343\343\342" "\377\340\341\337\377\337\340\337\377\340\341\337\377\343\343\342\377" "\347\347\345\377\356\227\226\377\350pq\377\234\34*\377\222,9\376UEE\77" "\0\0\0\20\0\0\0\2\203\377\377\377\0\25\0\0\0\14\0\0\0\32g$,c\227\25$" "\374\227\37-\377\313eg\377\365\365\364\377\366\367\365\377\361\362\361" "\377\356\357\354\377\355\356\354\377\360\361\356\377\363\364\362\377" "\370\370\366\377\312\271\271\377\226\26&\377\2213>\366966Q\0\0\0)\0\0" "\0\34\0\0\0\14\203\377\377\377\0\25\0\0\0\10\0\0\0\27\0\0\0%\12\0\0""4" "\20719\314\215op\376\216\213\212\375\242\236\235\376\274\273\271\377" "\332\333\330\377\333\334\331\377\275\274\272\377\243\237\235\376\216" "\213\212\375\210\200\177\376}=C\305\0\0\0A\0\0\0""4\0\0\0&\0\0\0\27\0" "\0\0\3\204\377\377\377\0\10\0\0\0\2\0\0\0\17\0\0\0\35\0\0\0(000Hmjj\234" "}zx\317\206\202\201\360\202\210\205\202\376\11\206\202\200\361}yx\321" "jgg\241+++Q\0\0\0""4\0\0\0)\0\0\0\32\0\0\0\11\0\0\0\1\210\377\377\377" "\0\15\0\0\0\2\0\0\0\7\0\0\0\15\0\0\0\21\0\0\0\26\0\0\0\32\0\0\0\33\0" "\0\0\30\0\0\0\25\0\0\0\20\0\0\0\13\0\0\0\5\0\0\0\1\205\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_info_help) #endif #ifdef __GNUC__ const guint8 osmo_stock_info_help[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_info_help[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (3744) */ "\0\0\16\270" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (192) */ "\0\0\0\300" /* width (48) */ "\0\0\0""0" /* height (48) */ "\0\0\0""0" /* pixel_data: */ "\240\377\377\377\0\6\0\0\0\3C(1\242H+4\325,\32\40\3464\37&\244\5\3\3" "-\252\377\377\377\0\7X5@\220\240`t\371\204P`\333\177DY\375\265l\203\377" "C(1\310\0\0\0\10\251\377\377\377\0\7\0\0\0\10\0\0\0X\0\0\0Yk\21<\370" "\\\21""5\377\253g}\367\5\3\4H\247\377\377\377\0\11\0\0\0\37\377\377\377" "\0\0\0\0\17""544\237QJL\302D\37""0\362\203\6E\377\247ax\377&\27\34\226" "\202\377\377\377\0\3\21\12\15\16L.7W3\37%6\240\377\377\377\0\22""555" "eSSS\315\213\213\213\347QQQ\311@@@\326\356\356\356\377\377\377\377\377" "\243\237\241\377t\24D\377r8O\377D)2\263\0\0\0\22""5\40'\241qES\347\274" "r\211\377{JZ\354\25\14\17\276\0\0\0\25\235\377\377\377\0\2\0\0\0\7__" "_\326\202\377\377\377\377\2\336\336\336\377\223\222\222\374\203\377\377" "\377\377\13eIT\377\335~\236\377T2=\324\\7C\312\357\220\256\377\365\224" "\263\377\213Ib\377\220Sg\377\217Wh\373+\32\37\267\0\0\0\6\234\377\377" "\377\0\24\10\10\10A\251\251\251\366\225\225\225\377hhh\377\216\216\216" "\377\352\352\352\377\377\377\377\377\375\375\375\377\377\377\377\377" "|os\377\365\223\262\377\332z\233\377\360\221\257\377\250Wu\377]\30""8" "\377o\7:\377D\31,\351Q1;\336\306x\220\362\26\15\20q\234\377\377\377\0" "\24\0\0\0\4TTT\324hhh\377AAA\377\242\242\242\377\317\317\317\377ooo\377" "ZZZ\377\373\373\373\377sbg\377\375\230\271\377\337m\230\377O$5\377x\5" "\77\377]\16""5\376\\&>\251\377\377\377\0G+4\30[7B\344,\32\40\235\235" "\377\377\377\0\16///QGEF\325jfg\372VMQ\377~vy\377ZZZ\377GGG\377\363\363" "\363\377zXc\377\372\221\264\377\351q\237\377l-G\377^\17""5\374i0Fb\203" "\377\377\377\0\2\33\20\24\"\0\0\0\20\222\377\377\377\0\6\30\17\22$]8" "DnQ1;\203sETa\333\204\240*\177M]\4\202\377\377\377\0\20\0\0\0\3\0\0\0" ":\11\6\7\200T9D\314\276\212\241\373\363\267\323\377\377\242\302\377\214" "ao\377\235\230\232\377\306\306\306\377uej\377\330\204\237\377\365\207" "\255\377\351q\237\377E\36.\3673\23!s\226\377\377\377\0\20\0\0\0\24O0" ":\274\233`u\370\326\216\251\377\354\244\301\377\315\215\247\377Q5\77" "\377C(1\374mBP\344e@L\322pO\\\333\262\201\226\350\364\266\323\375\375" "\273\331\377\376\260\316\377\377\236\275\377\202\377\232\272\377\7\306" "x\222\377}L\\\377\313v\223\377\377\232\272\377\357|\246\377\325i\222" "\377\40\23\27\271\227\377\377\377\0\15;$+\266\365\224\263\377\377\235" "\275\377\377\236\275\377\377\243\302\377\376\254\313\377\375\273\332" "\377\362\253\311\377qDS\377\316|\226\377\377\234\273\377\377\243\302" "\377\377\236\277\377\203\377\232\272\377\11\366\225\263\377\201N^\377" "\203M_\377\262Vz\377E'1\377}JZ\377\351r\237\377\205E\\\373\12\6\7\30" "\226\377\377\377\0\2\27\16\21[\300t\214\363\205\377\232\272\377\5\377" "\233\272\377\376\255\314\377\376\263\322\377\210Sd\377\321~\230\377\205" "\377\232\272\377\10\232]p\377\343\211\246\377\367\212\257\377\264Z}\377" "\253g|\377\275g\206\377\233Kj\377a4D\342\227\377\377\377\0\1P0:\263\205" "\377\232\272\377\7\374\230\270\377\247d}\377\317|\231\377\376\252\311" "\377\376\250\307\377vGV\377\347\214\250\377\205\377\232\272\377\7\372" "\221\264\377\332k\226\377_7D\377\376\231\271\377\354v\242\377\267Y}\377" "kK\313\205\377\232\272\377\7uD\\\377d8b\377" "[2N\377\377\232\272\377\376\245\304\377\367\225\264\377\261k\201\377" "\203\377\232\272\377\11\375\227\267\377\362\202\252\377\323f\220\377" "J\16*\377|IZ\377\375\227\270\377\351q\237\377r9O\376^9E\10\227\377\377" "\377\0\11f=J\320\347\213\251\377~Kc\377\332\204\240\377\377\232\272\377" "\305w\221\377^3X\377i;f\377R&G\377\203\377\232\272\377\14\373\222\265" "\377\370\215\262\377\371\216\263\377\363\204\254\377\352s\240\377\247" "Oq\377Q\12-\377\236\7S\377w\77T\377\371\217\262\377\347p\236\377l9K\360" "\230\377\377\377\0\6\202N_\276\234[t\377d8a\377vA\\\377\377\232\272\377" "\214Mi\377\202i;f\377\1X#G\377\203\377\232\272\377\1\352s\241\377\202" "\351q\237\377\3\332m\227\377e)B\377q\5;\377\202\244\7V\377\4q6M\377\365" "\210\256\377\350q\236\377f7H\331\230\377\377\377\0\11\267n\205x\241Y" "s\377P\30<\377d)K\377\377\232\272\377\202@_\377i;f\377e8a\377\2070Z\377" "\202\377\232\272\377\6\372\220\264\377\351q\237\377\351r\237\377\241" "Vq\3746\30$\374\232\7Q\377\203\244\7V\377\4l-G\377\363\204\254\377\351" "q\237\377P+8\275\230\377\377\377\0\11\377\232\272\6lAN\356\323^\215\377" "\341l\232\377\377\232\272\377\326l\225\377Q\26:\377i\23A\377\365\214" "\257\377\202\377\232\272\377\5\360~\250\377\347p\236\377sAS\377{JY\211" "_%>\353\203\244\7V\377\5\243\10W\377uN\375\317m\221\377\363\204\253\377\366\211\257" "\377\363\203\253\377\343w\236\377s@R\374pDR\357i@M\302e=J\331pDR\352" "R\"6\375q\11=\377_(\77\377\313z\223\377\202\377\232\272\377\3\365\207" "\255\377\351q\237\377:!)\346\234\377\377\377\0\16\344\212\2469tFT\310" "U2=\374R-:\374A%/\370@&.\370\221Xi\373\312z\223\377\317}\227\377\201" "N^\377~L\\\377\203P`\377\313v\222\377\376\231\271\377\203\377\232\272" "\377\3\365\207\255\377\351q\237\377r\77R\357\231\377\377\377\0\7\77(" "/1R2<\266Z6B\334R2;\367~L\\\376\314{\225\377\374\230\270\377\204\377" "\232\272\377\2\345\212\247\377\223Yk\377\207\377\232\272\377\3\365\210" "\256\377\351q\237\377\221Of\372\227\377\377\377\0\6""3\36)Ab_{KZ\366\341i\231\377\256\27a\377\247\30^\376\252\32`\377\246\16Z\377" "G\31-\224\206\377\377\377\0\17\0\0\0\25q\32C\325\244\7V\377\3027w\377" "\367\214\260\377\351q\237\377\226If\376n7K\322\0\0\0\6P,9\326\311c\212" "\377\353u\242\377\366\211\257\377\374\225\267\377\376\231\272\377\203" "\377\232\272\377\2\371\216\262\377}CY\377\202\377\232\272\377\13x7Q\377" "\226\6O\377\244\7V\377{\26G\377B\26*\377\216\6K\377\221Fc\377\341m\231" "\377\207E^\375P,9\310\6\6\6#\202\377\377\377\0\10&\31\31=o,G\346\260" "\"f\377\244\30]\375\25\16\20\223O#6\263<\22%\343\7\3\3I\205\377\377\377" "\0\7;\17#\267\250\20[\377\252\21]\377\266)k\376\212F_\365O(7\327K%3^" "\202\377\377\377\0\16\0\0\0\5Z2@\257\206B\\\376\345o\235\377\351q\237" "\377\351r\237\377\353t\242\377\355y\245\377\356{\245\377\351r\237\377" "y>T\377\376\231\272\377\377\232\272\377]\35:\377\203\244\7V\377\5\234" "\7R\377{\5@\377g3F\376V0>\317\6\6\6$\205\377\377\377\0\4\0\0\0\6""3\35" "#\200}'N\347A\31)\306\202\377\377\377\0\1\0\0\0\20\204\377\377\377\0" "\6\0\0\0\30&\26\35|<$,\220:#*\225\26\14\17w\0\0\0#\206\377\377\377\0" "\4>\35&.`5D\330\177CX\373\303`\206\377\204\351q\237\377\4\204@Z\377\357" "\220\256\377\377\232\272\377b\40=\377\204\244\7V\377\2f\17""9\377:#+" "Y\211\377\377\377\0\3\0\0\0\11\23\13\15v\0\0\0\10\224\377\377\377\0\13" "\0\0\0\13<#+r_5D\324n:N\357t|\2\40\206\377\377\377\0\11:s\2\1" "Ax\12\267l\232\77\367\244\310\202\377;t\3\375\\\220)\365\234\315m\377" "_\227(\370>w\6\227\210\377\377\377\0\10:s\2\20>w\7\360\222\276g\377\213" "\272^\377\224\306f\377\211\300U\377=v\5\364:s\2\24\211\377\377\377\0" "\6;t\3aL\204\26\362\230\314g\377\223\313^\377]\230$\371x\5\312\227\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_edit_note) #endif #ifdef __GNUC__ const guint8 osmo_stock_edit_note[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_edit_note[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1819) */ "\0\0\7""3" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\213\377\377\377\0\6\0\0\0\1{.\32W\242\23\13\375\237\24\14\370i\33\17" "M\0\0\0\3\211\377\377\377\0\1\245\245\245\325\203\243\243\243\377\15" "\236\236\236\377\230\230\230\377\221\221\221\377\212\212\212\377\202" "\202\202\377ze_\377\243\14\10\377\341VX\377\3239:\377\241\10\5\377ZH" "H\377SSS\377MMM\377\203LLL\377\1SSS\325\203\377\377\377\0\1\243\243\243" "\377\206\377\377\377\377\11\376\376\376\377\334\331\322\377\227P/\377" "\276DB\377\356hi\377\340GH\377\266\27\26\377\232%\34\377\362\362\362" "\377\204\377\377\377\377\1LLL\377\203\377\377\377\0\2\243\243\243\377" "\377\377\377\377\202\322\322\322\377\21\323\323\323\377\324\324\324\377" "\323\323\323\377\273\270\262\377\217xG\377\335\261^\377\336\211O\377" "\303MI\377\313..\377\261\11\11\377\236\22\12\377\270\270\267\377\331" "\331\331\377\334\334\334\377\335\335\335\377\377\377\377\377LLL\377\203" "\377\377\377\0\3\243\243\243\377\377\377\377\377\323\323\323\377\203" "\324\324\324\377\12\276\273\265\377\217yG\377\332\257]\377\375\315v\377" "\374\276N\377\313[\"\377\247\11\6\377\240\11\5\377w^V\377\321\321\321" "\377\202\335\335\335\377\3\336\336\336\377\377\377\377\377LLL\377\203" "\377\377\377\0\25\243\243\243\377\377\377\377\377\324\324\324\377\325" "\325\325\377\225\225\225\377\213\210\202\377\214vE\377\330\255\\\377" "\375\315u\377\373\275K\377\353\260>\377\331\246>\377\230/\33\377cHA\377" "\217\217\217\377\232\232\232\377\234\234\234\377\337\337\337\377\340" "\340\340\377\377\377\377\377LLL\377\203\377\377\377\0\20\235\235\235" "\377\377\377\377\377\326\326\326\377\325\325\325\377\300\276\270\377" "\217yH\377\327\254\\\377\375\315s\377\374\275H\377\351\260>\377\327\246" ">\377\214sA\377yun\377\315\315\315\377\335\335\335\377\337\337\337\377" "\202\340\340\340\377\3\341\341\341\377\377\377\377\377LLL\377\203\377" "\377\377\0\16\227\227\227\377\377\377\377\377\326\326\326\377\302\277" "\272\377\217yI\377\323\252[\377\375\314r\377\373\274G\377\350\260>\377" "\325\243\77\377\210r@\377}{t\377\317\317\317\377\336\336\336\377\202" "\340\340\340\377\1\341\341\341\377\202\342\342\342\377\2\377\377\377" "\377LLL\377\203\377\377\377\0\17\222\222\222\377\376\376\376\377\304" "\302\275\377\217yJ\377\322\251Z\377\374\313p\377\373\272E\377\346\257" ">\377\321\241\77\377\205p\77\377_]X\377\223\223\223\377\234\234\234\377" "\235\235\235\377\236\236\236\377\203\237\237\237\377\3\344\344\344\377" "\377\377\377\377LLL\377\203\377\377\377\0\15\213\213\213\377\345\343" "\337\377\220zK\377\320\246Z\377\374\312o\377\372\272D\377\345\256>\377" "\315\237\77\377\203n\77\377\210\206\201\377\323\323\323\377\337\337\337" "\377\341\341\341\377\202\342\342\342\377\1\343\343\343\377\202\344\344" "\344\377\3\345\345\345\377\377\377\377\377LLL\377\203\377\377\377\0\13" "\201\201\201\377\223~P\377\314\245X\377\374\312m\377\372\272B\377\344" "\255>\377\311\233\77\377\201l>\377\214\213\207\377\324\324\324\377\340" "\340\340\377\202\342\342\342\377\1\343\343\343\377\202\344\344\344\377" "\1\345\345\345\377\202\346\346\346\377\2\377\377\377\377LLL\377\202\377" "\377\377\0\13\0\0\0\1xsh\377\234\201J\377\374\313o\377\371\270A\377\343" "\255>\377\305\231\77\377}h<\377gfc\377\226\226\226\377\236\236\236\377" "\202\237\237\237\377\202\240\240\240\377\202\241\241\241\377\5\346\346" "\346\377\347\347\347\377\350\350\350\377\376\376\376\377LLL\377\202\377" "\377\377\0\13\0\0\0\7{kI\377\324\251Y\377\366\271E\377\341\254>\377\300" "\225\77\377|h=\377\225\224\221\377\327\327\327\377\341\341\341\377\343" "\343\343\377\202\344\344\344\377\1\345\345\345\377\202\346\346\346\377" "\2\347\347\347\377\350\350\350\377\202\351\351\351\377\2\374\374\374" "\377LLL\377\202\377\377\377\0\11+&\31\37gcR\377\345\257F\377\320\240" "\77\377\232~B\377xe<\377\232\231\227\377\330\330\330\377\342\342\342" "\377\202\344\344\344\377\1\345\345\345\377\202\346\346\346\377\2\347" "\347\347\377\350\350\350\377\202\351\351\351\377\15\352\352\352\377\353" "\353\353\377\372\372\372\377LLL\377\377\377\377\0\0\0\0\3`\\M\2539\77" "A\377RM;\377j[8\377nj_\377\177\177\177\377\231\231\231\377\202\240\240" "\240\377\203\241\241\241\377\2\242\242\242\377\243\243\243\377\203\244" "\244\244\377\202\245\245\245\377\15\354\354\354\377\370\370\370\377L" "LL\377\377\377\377\0\0\0\0\11KH:\335A>2\377\232\232\230\377\310\310\310" "\377\330\330\330\377\341\341\341\377\344\344\344\377\345\345\345\377" "\202\346\346\346\377\2\347\347\347\377\350\350\350\377\202\351\351\351" "\377\1\352\352\352\377\202\353\353\353\377\1\354\354\354\377\202\355" "\355\355\377\12\367\367\367\377LLL\377\377\377\377\0\0\0\0\2\0\0\0\23" "___\377\367\367\367\377\343\343\343\377\344\344\344\377\345\345\345\377" "\202\346\346\346\377\2\347\347\347\377\350\350\350\377\202\351\351\351" "\377\1\352\352\352\377\202\353\353\353\377\1\354\354\354\377\202\355" "\355\355\377\16\356\356\356\377\357\357\357\377\366\366\366\377NNN\377" "ppp\31\377\377\377\0\0\0\0\1___\377\373\373\373\377\345\345\345\377\346" "\346\346\377\241\241\241\377\242\242\242\377\243\243\243\377\203\244" "\244\244\377\202\245\245\245\377\1\354\354\354\377\202\355\355\355\377" "\1\356\356\356\377\202\357\357\357\377\4\360\360\360\377\342\342\342" "\377^^^\377LLL\25\202\377\377\377\0\5YYY\377\371\371\371\377\346\346" "\346\377\347\347\347\377\350\350\350\377\202\351\351\351\377\1\352\352" "\352\377\202\353\353\353\377\1\354\354\354\377\202\355\355\355\377\10" "\356\356\356\377\340\340\340\377\255\255\255\377\256\256\256\377\243" "\243\243\377\206\206\206\377]]]\377TTT\356\203\377\377\377\0\3TTT\377" "\366\366\366\377\350\350\350\377\202\351\351\351\377\1\352\352\352\377" "\202\353\353\353\377\1\354\354\354\377\202\355\355\355\377\1\356\356" "\356\377\202\357\357\357\377\7\337\337\337\377\253\253\253\377\254\254" "\254\377\251\251\251\377\245\245\245\377\202\202\202\375QQQ\211\203\377" "\377\377\0\4NNN\377\365\365\365\377\351\351\351\377\352\352\352\377\202" "\353\353\353\377\1\354\354\354\377\202\355\355\355\377\1\356\356\356" "\377\202\357\357\357\377\11\360\360\360\377\361\361\361\377\337\337\337" "\377\220\220\220\377\257\257\257\377\243\243\243\377\205\205\205\375" "RRR\347LLL\37\203\377\377\377\0\1LLL\377\202\363\363\363\377\210\362" "\362\362\377\11\363\363\363\377\362\362\362\377\363\363\363\377\242\242" "\242\376sss\377\205\205\205\377ddd\363SSS\332LLL\32\204\377\377\377\0" "\1SSS\325\215LLL\377\5OOO\362PPP\366UUU\306LLLMLLL\1\223\377\377\377" "\0\1LLL\7\207\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_bold_s) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_bold_s[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_bold_s[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1157) */ "\0\0\4\235" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\225\377\377\377\0\22\244\247\242\302\240\243\234\377\237\241\233\377" "\234\237\231\377\231\234\226\377\225\230\222\377\221\224\216\377\215" "\220\212\377\210\213\205\377\204\206\201\377\177\201|\377z|w\377uwr\377" "prm\377kmh\377fhc\377`b^\377cda\302\202\377\377\377\0\2\246\251\242\377" "\374\374\374\377\204\376\376\376\377\203\375\375\375\377\202\374\374" "\374\377\203\373\373\373\377\202\372\372\372\377\2\367\367\367\377^`" "\\\377\202\377\377\377\0\3\253\256\247\377\376\376\376\377\360\360\360" "\377\203\361\361\361\377\14\360\360\360\377\356\356\356\377\355\355\355" "\377\353\353\353\377\351\351\351\377\346\346\346\377\344\344\344\377" "\342\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377ac_\377" "\202\377\377\377\0\10\257\262\253\377\376\376\376\377\362\362\362\377" "\363\363\363\377\364\364\364\377\363\363\363\377\360\360\360\377cdd\377" "\202TUU\377\1cdd\377\202\345\345\345\377\5\342\342\342\377\340\340\340" "\377\336\336\336\377\371\371\371\377dfb\377\202\377\377\377\0\3\261\264" "\255\377\376\376\376\377\365\365\365\377\202\366\366\366\377\2\365\365" "\365\377\303\304\304\377\204TUU\377\7\272\273\273\377\345\345\345\377" "\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371\377fhd\377" "\202\377\377\377\0\3\257\262\253\377\375\375\375\377\366\366\366\377" "\202\370\370\370\377\4\366\366\366\377\206\207\207\377TUU\377UVV\377" "\202TUU\377\7\201\202\202\377\345\345\345\377\343\343\343\377\340\340" "\340\377\336\336\336\377\371\371\371\377hjf\377\202\377\377\377\0\3\253" "\256\247\377\375\375\375\377\366\366\366\377\202\370\370\370\377\15\347" "\347\347\377WXX\377TUU\377\177\200\200\377uvv\377TUU\377WXX\377\327\327" "\327\377\342\342\342\377\340\340\340\377\335\335\335\377\371\371\371" "\377jlg\377\202\377\377\377\0\3\246\251\242\377\375\375\375\377\365\365" "\365\377\202\366\366\366\377\1\251\251\251\377\202TUU\377\2\270\270\270" "\377\253\253\253\377\202TUU\377\6\241\241\241\377\342\342\342\377\337" "\337\337\377\335\335\335\377\371\371\371\377kmh\377\202\377\377\377\0" "\2\240\243\235\377\374\374\374\377\203\363\363\363\377\15kll\377TUU\377" "\\]]\377\346\346\346\377\335\335\335\377WXX\377TUU\377hii\377\341\341" "\341\377\336\336\336\377\334\334\334\377\371\371\371\377kni\377\202\377" "\377\377\0\2\233\235\227\377\374\374\374\377\202\361\361\361\377\1\312" "\312\312\377\202TUU\377\4yzz\377\305\305\305\377\304\304\304\377noo\377" "\202TUU\377\5\276\276\276\377\335\335\335\377\333\333\333\377\371\371" "\371\377lni\377\202\377\377\377\0\2\225\230\222\377\373\373\373\377\202" "\356\356\356\377\1\214\214\214\377\210TUU\377\5\206\206\206\377\334\334" "\334\377\332\332\332\377\370\370\370\377kni\377\202\377\377\377\0\7\217" "\222\214\377\373\373\373\377\354\354\354\377\342\342\342\377YZZ\377T" "UU\377[\\\\\377\202tuu\377\202stt\377\7XYY\377TUU\377YZZ\377\322\322" "\322\377\330\330\330\377\370\370\370\377kmh\377\202\377\377\377\0\4\211" "\214\206\377\372\372\372\377\351\351\351\377\253\253\253\377\202TUU\377" "\6\226\227\227\377\346\346\346\377\344\344\344\377\343\343\343\377\341" "\341\341\377\206\207\207\377\202TUU\377\4\242\242\242\377\327\327\327" "\377\370\370\370\377jlg\377\202\377\377\377\0\4\203\206\200\377\372\372" "\372\377\347\347\347\377qqq\377\202TUU\377\6\312\313\313\377\343\343" "\343\377\342\342\342\377\341\341\341\377\337\337\337\377\267\267\267" "\377\202TUU\377\4mnn\377\325\325\325\377\370\370\370\377hjf\377\202\377" "\377\377\0\2}\200{\377\371\371\371\377\203\344\344\344\377\15\343\343" "\343\377\342\342\342\377\341\341\341\377\340\340\340\377\336\336\336" "\377\335\335\335\377\333\333\333\377\331\331\331\377\330\330\330\377" "\326\326\326\377\324\324\324\377\370\370\370\377fhd\377\202\377\377\377" "\0\2xzu\377\367\367\367\377\205\371\371\371\377\211\370\370\370\377\2" "\365\365\365\377dfa\377\202\377\377\377\0\5yzv\302tvq\377vxs\377wyt\377" "xzu\377\203y{v\377\12xzu\377wyt\377uwr\377suq\377qsn\377npl\377kmi\377" "hjf\377egb\377hig\302\251\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_italic_s) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_italic_s[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_italic_s[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1201) */ "\0\0\4\311" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\225\377\377\377\0\22\244\247\242\302\240\243\234\377\237\241\233\377" "\234\237\231\377\231\234\226\377\225\230\222\377\221\224\216\377\215" "\220\212\377\210\213\205\377\204\206\201\377\177\201|\377z|w\377uwr\377" "prm\377kmh\377fhc\377`b^\377cda\302\202\377\377\377\0\2\246\251\242\377" "\374\374\374\377\204\376\376\376\377\203\375\375\375\377\202\374\374" "\374\377\203\373\373\373\377\202\372\372\372\377\2\367\367\367\377^`" "\\\377\202\377\377\377\0\3\253\256\247\377\376\376\376\377\360\360\360" "\377\203\361\361\361\377\14\360\360\360\377\356\356\356\377\355\355\355" "\377\353\353\353\377\351\351\351\377\346\346\346\377\344\344\344\377" "\342\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377ac_\377" "\202\377\377\377\0\22\257\262\253\377\376\376\376\377\362\362\362\377" "\363\363\363\377\364\364\364\377\363\363\363\377\362\362\362\377\360" "\360\360\377\356\356\356\377\354\354\354\377|}}\377TUU\377\216\216\216" "\377\342\342\342\377\340\340\340\377\336\336\336\377\371\371\371\377" "dfb\377\202\377\377\377\0\3\261\264\255\377\376\376\376\377\365\365\365" "\377\202\366\366\366\377\15\365\365\365\377\363\363\363\377\361\361\361" "\377\357\357\357\377\272\273\273\377WXX\377mnn\377z{{\377\343\343\343" "\377\340\340\340\377\336\336\336\377\371\371\371\377fhd\377\202\377\377" "\377\0\3\257\262\253\377\375\375\375\377\366\366\366\377\202\370\370" "\370\377\15\366\366\366\377\364\364\364\377\361\361\361\377\351\351\351" "\377fgg\377\225\226\226\377\225\225\225\377fgg\377\343\343\343\377\340" "\340\340\377\336\336\336\377\371\371\371\377hjf\377\202\377\377\377\0" "\3\253\256\247\377\375\375\375\377\366\366\366\377\202\370\370\370\377" "\15\366\366\366\377\363\363\363\377\361\361\361\377\236\237\237\377a" "bb\377\341\341\341\377\247\250\250\377VWW\377\337\337\337\377\340\340" "\340\377\335\335\335\377\371\371\371\377jlg\377\202\377\377\377\0\3\246" "\251\242\377\375\375\375\377\365\365\365\377\202\366\366\366\377\15\364" "\364\364\377\362\362\362\377\332\332\332\377YZZ\377\262\262\262\377\351" "\351\351\377\272\272\272\377TUU\377\317\317\317\377\337\337\337\377\335" "\335\335\377\371\371\371\377kmh\377\202\377\377\377\0\2\240\243\235\377" "\374\374\374\377\203\363\363\363\377\15\362\362\362\377\360\360\360\377" "\200\201\201\377uvv\377\351\351\351\377\350\350\350\377\314\314\314\377" "TUU\377\273\273\273\377\336\336\336\377\334\334\334\377\371\371\371\377" "kni\377\202\377\377\377\0\2\233\235\227\377\374\374\374\377\202\361\361" "\361\377\202\360\360\360\377\14\276\276\276\377TUU\377\243\243\243\377" "\277\277\277\377\275\275\275\377\265\265\265\377TUU\377\250\250\250\377" "\335\335\335\377\333\333\333\377\371\371\371\377lni\377\202\377\377\377" "\0\2\225\230\222\377\373\373\373\377\203\356\356\356\377\3\351\351\351" "\377hii\377^__\377\203abb\377\7`aa\377VWW\377\223\224\224\377\334\334" "\334\377\332\332\332\377\370\370\370\377kni\377\202\377\377\377\0\2\217" "\222\214\377\373\373\373\377\202\354\354\354\377\16\353\353\353\377\237" "\240\240\377^__\377\335\335\335\377\347\347\347\377\345\345\345\377\343" "\343\343\377\341\341\341\377pqq\377\201\201\201\377\333\333\333\377\330" "\330\330\377\370\370\370\377kmh\377\202\377\377\377\0\2\211\214\206\377" "\372\372\372\377\202\351\351\351\377\16\326\326\326\377XYY\377\252\252" "\252\377\346\346\346\377\344\344\344\377\343\343\343\377\341\341\341" "\377\337\337\337\377\201\201\201\377noo\377\331\331\331\377\327\327\327" "\377\370\370\370\377jlg\377\202\377\377\377\0\6\203\206\200\377\372\372" "\372\377\347\347\347\377\346\346\346\377\200\201\201\377noo\377\202\343" "\343\343\377\12\342\342\342\377\341\341\341\377\337\337\337\377\335\335" "\335\377\220\221\221\377\\]]\377\327\327\327\377\325\325\325\377\370" "\370\370\377hjf\377\202\377\377\377\0\2}\200{\377\371\371\371\377\203" "\344\344\344\377\15\343\343\343\377\342\342\342\377\341\341\341\377\340" "\340\340\377\336\336\336\377\335\335\335\377\333\333\333\377\331\331" "\331\377\330\330\330\377\326\326\326\377\324\324\324\377\370\370\370" "\377fhd\377\202\377\377\377\0\2xzu\377\367\367\367\377\205\371\371\371" "\377\211\370\370\370\377\2\365\365\365\377dfa\377\202\377\377\377\0\5" "yzv\302tvq\377vxs\377wyt\377xzu\377\203y{v\377\12xzu\377wyt\377uwr\377" "suq\377qsn\377npl\377kmi\377hjf\377egb\377hig\302\251\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_highlight_s) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_highlight_s[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_highlight_s[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (699) */ "\0\0\2\323" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\236\377\377\377\0\4\260u\37J\263z\"\350\264|#\326\260t!M\217\377\377" "\377\0\7\262w\36+\273\2108\365\370\350\262\377\363\337\235\377\303\222" "@\363\263z!\307\261t!.\215\377\377\377\0\2\263{\"\311\357\331\234\376" "\202\377\346x\377\4\373\351\256\377\345\302x\376\267\201.\364\260w!k" "\213\377\377\377\0\11\256u!U\313\241X\366\376\356\245\377\377\336L\377" "\371\325D\377\354\2735\377\356\311o\377\365\344\271\377\262y&\363\212" "\377\377\377\0\12\263\200\32\12\264}(\353\367\350\260\377\377\342a\377" "\377\336L\377\361\3047\377\343\251%\377\355\305`\377\362\341\271\377" "\264{&\325\212\377\377\377\0\12\263y\"\211\335\275x\370\377\353\221\377" "\377\336L\377\367\316A\377\347\261-\377\344\262:\377\367\346\264\377" "\310\237[\365\257u\37S\211\377\377\377\0\12\255x\36\"\272\2066\366\374" "\356\265\377\377\337T\377\376\333I\377\357\2764\377\342\251+\377\360" "\317z\377\353\326\251\376\263{&\307\212\377\377\377\0\12\264{#\276\354" "\324\224\375\377\347|\377\377\336L\377\363\310;\377\345\255(\377\350" "\270G\377\371\352\302\377\273\210;\366\260s\36*\211\377\377\377\0\12" "\257s\37I\306\232P\365\377\360\256\377\377\336M\377\373\325D\377\353" "\270/\377\337\2512\377\363\331\225\377\336\302\216\371\261z%\226\211" "\377\377\377\0\13\252U\0\3\263}$\345\366\345\254\377\377\343h\377\377" "\336L\377\361\3037\377\342\250#\377\354\303\\\377\365\350\302\377\264" "~,\361\252w\"\17\211\377\377\377\0\12YG)`SH0\374\350\335\254\377\377" "\342b\377\367\317@\377\351\263+\377\342\255:\377\366\342\256\377\316" "\246f\366\257v!c\212\377\377\377\0\12>8,\205bca\377791\377\276\265\211" "\377\364\330\201\377\347\2627\377\360\317w\377\356\335\262\377\262{&" "\325\377\0\0\1\212\377\377\377\0\11)..p\251\252\250\376\232\232\226\377" "35/\377]T=\377\314\275\226\377\371\353\303\377\275\216E\366\257v!6\213" "\377\377\377\0\10)..p\241\243\241\376jh^\377JF:\377>=5\37744/\377PG3" "\374\263z%\226\214\377\377\377\0\7)..popl\375JF:\377GD9\377993\373-0" ".\372B;*\310\215\377\377\377\0\6\215k&\266\206e*\376:82\366+.-\364+." ".\226,,,\35\215\377\377\377\0\5\256u\40H\360\316+\377\340\270(\377E<" "+\214000\20\217\377\377\377\0\3\260t\"D\322\245&\373\276\212#\234\242" "\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_strikethrough_s) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_strikethrough_s[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_strikethrough_s[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1206) */ "\0\0\4\316" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\225\377\377\377\0\22\244\247\242\302\240\243\234\377\237\241\233\377" "\234\237\231\377\231\234\226\377\225\230\222\377\221\224\216\377\215" "\220\212\377\210\213\205\377\204\206\201\377\177\201|\377z|w\377uwr\377" "prm\377kmh\377fhc\377`b^\377cda\302\202\377\377\377\0\2\246\251\242\377" "\374\374\374\377\204\376\376\376\377\203\375\375\375\377\202\374\374" "\374\377\203\373\373\373\377\202\372\372\372\377\2\367\367\367\377^`" "\\\377\202\377\377\377\0\3\253\256\247\377\376\376\376\377\360\360\360" "\377\203\361\361\361\377\14\360\360\360\377\356\356\356\377\355\355\355" "\377\353\353\353\377\351\351\351\377\346\346\346\377\344\344\344\377" "\342\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377ac_\377" "\202\377\377\377\0\10\257\262\253\377\376\376\376\377\362\362\362\377" "\363\363\363\377\364\364\364\377\363\363\363\377\362\362\362\377\327" "\327\327\377\202TUU\377\10\317\317\317\377\347\347\347\377\345\345\345" "\377\342\342\342\377\340\340\340\377\336\336\336\377\371\371\371\377" "dfb\377\202\377\377\377\0\3\261\264\255\377\376\376\376\377\365\365\365" "\377\202\366\366\366\377\15\365\365\365\377\363\363\363\377\236\237\237" "\377eff\377^__\377\230\231\231\377\347\347\347\377\345\345\345\377\343" "\343\343\377\340\340\340\377\336\336\336\377\371\371\371\377fhd\377\202" "\377\377\377\0\3\257\262\253\377\375\375\375\377\366\366\366\377\202" "\370\370\370\377\15\366\366\366\377\363\363\363\377eff\377\235\236\236" "\377\220\221\221\377dee\377\346\346\346\377\345\345\345\377\343\343\343" "\377\340\340\340\377\336\336\336\377\371\371\371\377hjf\377\202\377\377" "\377\0\3\253\256\247\377\375\375\375\377\366\366\366\377\202\370\370" "\370\377\15\366\366\366\377\312\313\313\377TUU\377\324\324\324\377\310" "\310\310\377TUU\377\277\300\300\377\345\345\345\377\342\342\342\377\340" "\340\340\377\335\335\335\377\371\371\371\377jlg\377\202\377\377\377\0" "\4\246\251\242\377\375\375\375\377\365\365\365\377\366\366\366\377\202" "YZZ\377\6VWW\377UVV\377YZZ\377XYY\377UVV\377VWW\377\202XYY\377\4\337" "\337\337\377\335\335\335\377\371\371\371\377kmh\377\202\377\377\377\0" "\2\240\243\235\377\374\374\374\377\202\363\363\363\377\16\344\344\344" "\377\336\336\336\377[\\\\\377\241\241\241\377\336\336\336\377\334\334" "\334\377\224\225\225\377Z[[\377\321\321\321\377\324\324\324\377\336\336" "\336\377\334\334\334\377\371\371\371\377kni\377\202\377\377\377\0\2\233" "\235\227\377\374\374\374\377\202\361\361\361\377\16\360\360\360\377\270" "\270\270\377TUU\377\255\255\255\377\273\274\274\377\272\273\273\377\242" "\243\243\377TUU\377\257\257\257\377\340\340\340\377\335\335\335\377\333" "\333\333\377\371\371\371\377lni\377\202\377\377\377\0\2\225\230\222\377" "\373\373\373\377\203\356\356\356\377\2~\177\177\377XYY\377\203]^^\377" "\10\\]]\377VWW\377|||\377\336\336\336\377\334\334\334\377\332\332\332" "\377\370\370\370\377kni\377\202\377\377\377\0\2\217\222\214\377\373\373" "\373\377\202\354\354\354\377\16\334\334\334\377VWW\377\260\260\260\377" "\350\350\350\377\347\347\347\377\345\345\345\377\343\343\343\377\241" "\241\241\377VWW\377\317\317\317\377\333\333\333\377\330\330\330\377\370" "\370\370\377kmh\377\202\377\377\377\0\2\211\214\206\377\372\372\372\377" "\202\351\351\351\377\16\245\246\246\377XYY\377\336\336\336\377\346\346" "\346\377\344\344\344\377\343\343\343\377\341\341\341\377\320\320\320" "\377UVV\377\237\237\237\377\331\331\331\377\327\327\327\377\370\370\370" "\377jlg\377\202\377\377\377\0\22\203\206\200\377\372\372\372\377\347" "\347\347\377\346\346\346\377noo\377\204\204\204\377\345\345\345\377\343" "\343\343\377\342\342\342\377\341\341\341\377\337\337\337\377\335\335" "\335\377vww\377mmm\377\327\327\327\377\325\325\325\377\370\370\370\377" "hjf\377\202\377\377\377\0\2}\200{\377\371\371\371\377\203\344\344\344" "\377\15\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377" "\336\336\336\377\335\335\335\377\333\333\333\377\331\331\331\377\330" "\330\330\377\326\326\326\377\324\324\324\377\370\370\370\377fhd\377\202" "\377\377\377\0\2xzu\377\367\367\367\377\205\371\371\371\377\211\370\370" "\370\377\2\365\365\365\377dfa\377\202\377\377\377\0\5yzv\302tvq\377v" "xs\377wyt\377xzu\377\203y{v\377\12xzu\377wyt\377uwr\377suq\377qsn\377" "npl\377kmi\377hjf\377egb\377hig\302\251\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_underline_s) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_underline_s[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_underline_s[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1201) */ "\0\0\4\311" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\225\377\377\377\0\22\244\247\242\302\240\243\234\377\237\241\233\377" "\234\237\231\377\231\234\226\377\225\230\222\377\221\224\216\377\215" "\220\212\377\210\213\205\377\204\206\201\377\177\201|\377z|w\377uwr\377" "prm\377kmh\377fhc\377`b^\377cda\302\202\377\377\377\0\2\246\251\242\377" "\374\374\374\377\204\376\376\376\377\203\375\375\375\377\202\374\374" "\374\377\203\373\373\373\377\202\372\372\372\377\2\367\367\367\377^`" "\\\377\202\377\377\377\0\3\253\256\247\377\376\376\376\377\360\360\360" "\377\203\361\361\361\377\14\360\360\360\377\356\356\356\377\355\355\355" "\377\353\353\353\377\351\351\351\377\346\346\346\377\344\344\344\377" "\342\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377ac_\377" "\202\377\377\377\0\10\257\262\253\377\376\376\376\377\362\362\362\377" "\363\363\363\377\364\364\364\377\363\363\363\377\362\362\362\377\326" "\326\326\377\202TUU\377\10\317\320\320\377\347\347\347\377\345\345\345" "\377\342\342\342\377\340\340\340\377\336\336\336\377\371\371\371\377" "dfb\377\202\377\377\377\0\3\261\264\255\377\376\376\376\377\365\365\365" "\377\202\366\366\366\377\15\365\365\365\377\363\363\363\377\231\232\232" "\377lmm\377cdd\377\223\223\223\377\347\347\347\377\345\345\345\377\343" "\343\343\377\340\340\340\377\336\336\336\377\371\371\371\377fhd\377\202" "\377\377\377\0\3\257\262\253\377\375\375\375\377\366\366\366\377\202" "\370\370\370\377\15\366\366\366\377\357\357\357\377_``\377\250\251\251" "\377\235\236\236\377\\]]\377\341\341\341\377\345\345\345\377\343\343" "\343\377\340\340\340\377\336\336\336\377\371\371\371\377hjf\377\202\377" "\377\377\0\3\253\256\247\377\375\375\375\377\366\366\366\377\202\370" "\370\370\377\15\366\366\366\377\273\273\273\377WXX\377\341\341\341\377" "\330\330\330\377UVV\377\255\256\256\377\345\345\345\377\342\342\342\377" "\340\340\340\377\335\335\335\377\371\371\371\377jlg\377\202\377\377\377" "\0\3\246\251\242\377\375\375\375\377\365\365\365\377\202\366\366\366" "\377\15\364\364\364\377|}}\377\207\210\210\377\356\356\356\377\353\353" "\353\377|||\377pqq\377\344\344\344\377\342\342\342\377\337\337\337\377" "\335\335\335\377\371\371\371\377kmh\377\202\377\377\377\0\2\240\243\235" "\377\374\374\374\377\203\363\363\363\377\15\333\333\333\377TUU\377\304" "\304\304\377\354\354\354\377\352\352\352\377\266\267\267\377TUU\377\305" "\305\305\377\341\341\341\377\336\336\336\377\334\334\334\377\371\371" "\371\377kni\377\202\377\377\377\0\2\233\235\227\377\374\374\374\377\202" "\361\361\361\377\16\360\360\360\377\233\234\234\377TUU\377fgg\377ghh" "\377fgg\377dee\377TUU\377\211\212\212\377\340\340\340\377\335\335\335" "\377\333\333\333\377\371\371\371\377lni\377\202\377\377\377\0\2\225\230" "\222\377\373\373\373\377\202\356\356\356\377\16\353\353\353\377abb\377" "\222\222\222\377\300\300\300\377\277\277\277\377\276\276\276\377\274" "\274\274\377\207\210\210\377YZZ\377\325\325\325\377\334\334\334\377\332" "\332\332\377\370\370\370\377kni\377\202\377\377\377\0\2\217\222\214\377" "\373\373\373\377\202\354\354\354\377\16\272\272\272\377UVV\377\327\327" "\327\377\350\350\350\377\347\347\347\377\345\345\345\377\343\343\343" "\377\314\314\314\377UVV\377\241\241\241\377\333\333\333\377\330\330\330" "\377\370\370\370\377kmh\377\202\377\377\377\0\2\211\214\206\377\372\372" "\372\377\202\351\351\351\377\16|}}\377xxx\377\347\347\347\377\346\346" "\346\377\344\344\344\377\343\343\343\377\341\341\341\377\337\337\337" "\377z{{\377ijj\377\331\331\331\377\327\327\327\377\370\370\370\377jl" "g\377\202\377\377\377\0\4\203\206\200\377\372\372\372\377\347\347\347" "\377\346\346\346\377\202\342\342\342\377\14\345\345\345\377\343\343\343" "\377\342\342\342\377\341\341\341\377\337\337\337\377\335\335\335\377" "\331\331\331\377\325\325\325\377\327\327\327\377\325\325\325\377\370" "\370\370\377hjf\377\202\377\377\377\0\2}\200{\377\371\371\371\377\202" "\344\344\344\377\1\214\214\214\377\203\204\205\205\377\202\203\204\204" "\377\202\202\203\203\377\202\201\202\202\377\4\326\326\326\377\324\324" "\324\377\370\370\370\377fhd\377\202\377\377\377\0\2xzu\377\367\367\367" "\377\205\371\371\371\377\211\370\370\370\377\2\365\365\365\377dfa\377" "\202\377\377\377\0\5yzv\302tvq\377vxs\377wyt\377xzu\377\203y{v\377\12" "xzu\377wyt\377uwr\377suq\377qsn\377npl\377kmi\377hjf\377egb\377hig\302" "\251\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_backup) #endif #ifdef __GNUC__ const guint8 osmo_stock_backup[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_backup[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1760) */ "\0\0\6\370" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\210\0\0\0\0\1""5n\4H\2065o\4\377\1""3q\6-\220\0\0\0\0\4""5n\4H_\220" "0\362\255\315\212\377\261\317\220\377\202\310\336\260\377\2b\2208\363" "3q\6-\220\0\0\0\0\10""5n\4H_\2200\362\220\273`\377a\237\36\377\273\326" "\237\377\326\347\306\377n\232G\3643q\6-\220\0\0\0\0\10""5n\4H_\2200\362" "\220\273`\377a\237\36\377\273\326\237\377\326\347\306\377n\232G\3643" "q\6-\220\0\0\0\0\10""5n\4H_\2200\362\220\273`\377a\237\35\377\273\326" "\237\377\326\347\306\377n\232G\3643q\6-\214\0\0\0\0\17\0\0\0\1""5o\4" "\2215o\4\377;s\13\377\377\202\20\244\21" "\377\5\77\\@\377@B@\377\32\33\33\340\31\31\31[\30\31\31\367\205\27\30" "\30\377\202\30\31\31\377\202\31\32\32\377\202\30\31\31\377\211\27\30" "\30\377\2\32\33\33\357\25\31\31H"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_restore) #endif #ifdef __GNUC__ const guint8 osmo_stock_restore[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_restore[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1726) */ "\0\0\6\326" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\212\0\0\0\0\3\200\200\0\2\252p\2\242\251n\0J\224\0\0\0\0\5\200\200\0" "\2\254r\2\250\301\222*\370\264~\27\365\252q\0H\222\0\0\0\0\7\200\200" "\0\2\253q\1\253\304\225(\366\364\336\212\377\365\347\266\377\263~\27" "\365\251m\0M\220\0\0\0\0\11\200\200\0\2\254r\2\250\305\227.\366\364\331" "z\377\356\305-\377\371\351\263\377\365\347\266\377\264}\26\364\247m\0" "K\216\0\0\0\0\13\377\0\0\1\255r\2\245\306\2303\366\363\331z\377\354\277" "\31\377\354\276\25\377\367\343\234\377\371\353\267\377\365\346\263\377" "\262~\24\363\247n\0C\215\0\0\0\0\14\254r\2\232\304\226.\365\364\333\204" "\377\364\333|\377\355\302#\377\354\276\26\377\367\343\234\377\370\346" "\246\377\373\361\315\377\364\344\257\377\260z\17\363\251n\0A\211\0\0" "\0\0\3\214\216\211j\233\235\231\371\246\211P\377\203\250n\1\377\14\306" "\2325\377\361\321Y\377\354\276\27\377\367\343\234\377\372\355\277\377" "\323\264q\377\276\222\77\377\261|\32\377\250r\12\377\245\232\200\377" "\237\241\234\371\214\217\212m\205\0\0\0\0\24\216\216\216\11\227\231\225" "\366\323\324\321\377\311\312\307\377\324\324\321\377\301\302\276\377" "\274\254\213\377\305\2316\377\362\322\\\377\354\276\27\377\367\343\234" "\377\372\356\304\377\305\236K\377\322\307\261\377\332\333\327\377\331" "\332\327\377\277\277\273\377\315\317\314\377\245\247\242\370\210\210" "\210\17\204\0\0\0\0\24\210\214\205I\266\267\264\366\312\314\307\377\256" "\260\254\377\261\262\256\377\305\306\301\377\300\261\217\377\305\231" "6\377\362\322\\\377\354\277\30\377\367\343\234\377\372\356\304\377\305" "\236J\377\304\272\242\377\314\316\310\377\324\325\321\377\247\251\244" "\377\273\274\270\377\311\312\307\371\210\213\205V\204\0\0\0\0\24\214" "\220\213\236\326\327\324\376\320\322\315\377\305\306\300\377\227\227" "\223\377\317\321\314\377\304\265\222\377\305\2327\377\362\322\\\377\354" "\277\30\377\367\343\234\377\372\356\304\377\305\236K\377\307\275\246" "\377\315\317\310\377\320\321\314\377\326\330\323\377\327\327\323\377" "\340\340\336\377\225\230\220\257\204\0\0\0\0\12\230\231\226\354\341\342" "\337\377\262\261\255\377\224\223\221\377\313\314\310\377\323\325\320" "\377\306\270\225\377\306\2327\377\365\336\207\377\366\337\215\377\202" "\370\347\251\377\11\300\225:\377\312\301\252\377\321\323\316\377\315" "\317\312\377\312\312\307\377\327\330\325\377\344\345\342\377\253\255" "\251\364\377\377\377\1\202\0\0\0\0\4\211\211\203)\263\264\262\367\333" "\334\331\377\232\231\227\377\203\330\331\325\377\1\311\273\231\377\206" "\250n\1\377\10\316\304\256\377\325\327\323\377\325\327\322\377\324\325" "\321\377\312\312\306\377\344\345\342\377\314\315\313\371\207\215\207" "1\202\0\0\0\0\6\207\211\205u\327\330\325\374\305\306\304\377\310\311" "\305\377\335\336\332\377\334\335\332\377\202\334\335\331\377\6\265\265" "\264\377\311\311\307\377\326\327\324\377\330\330\326\377\321\321\320" "\377\262\262\261\377\203\332\333\327\377\5\331\333\327\377\302\304\300" "\377\325\326\322\377\342\342\341\375\213\215\211\177\202\0\0\0\0\6\223" "\225\220\315\352\352\351\377\306\310\304\377\260\257\254\377\340\341" "\336\377\341\341\336\377\202\340\341\336\377\6\340\341\335\377\326\326" "\324\377\303\304\302\377\302\303\301\377\322\323\320\377\337\340\334" "\377\202\336\337\334\377\17\336\337\333\377\334\335\331\377\252\252\246" "\377\312\314\307\377\345\346\342\377\243\245\241\331\0\0\0\0\211\211" "\211\15\255\257\253\372\341\341\337\377\320\322\316\377\302\303\300\377" "\267\266\265\377\335\335\334\377\345\345\342\377\203\344\345\342\377" "\202\344\344\341\377\202\343\344\341\377\202\343\343\340\377S\317\320" "\314\377\231\232\227\377\306\307\302\377\320\322\315\377\343\344\342" "\377\301\302\277\373\210\210\210\17\211\211\206P\327\330\325\371\320" "\321\317\377\324\326\322\377\333\335\331\377\322\323\321\377\271\270" "\267\377\261\257\256\377\311\311\306\377\324\324\321\377\330\332\326" "\377\334\334\332\377\334\334\331\377\325\325\322\377\311\312\307\377" "\254\253\251\377~}|\377\231\231\226\377\316\317\313\377\326\327\323\377" "\327\330\325\377\325\327\324\377\341\341\340\373\211\211\206R\214\215" "\211\244\364\364\363\377\323\325\322\377\312\312\307\377\331\333\330" "\377\326\330\323\377\321\322\316\377\314\316\310\377\303\304\301\377" "\274\274\271\377\262\262\261\377\256\255\252\377\252\251\247\377\251" "\251\247\377\263\263\262\377\304\305\301\377\330\331\325\377\330\331" "\326\377\323\325\320\377\324\325\321\377\305\307\301\377\270\273\264" "\377\356\356\355\377\232\235\227\253\241\243\236\357\365\365\363\377" "\313\315\313\377\274\276\274\377\311\313\307\377\351\352\350\377\352" "\353\351\377\353\353\352\377\354\354\353\377\354\355\353\377\355\355" "\354\377\355\356\355\377\356\356\355\377\355\356\355\377\354\354\353" "\377\352\353\351\377\351\352\350\377\347\350\346\377\346\347\345\377" "\332\333\330\377\254\256\250\377\273\275\270\377\336\337\334\377\263" "\265\260\362\234\236\231\375\367\367\366\377\357\357\355\377\357\360" "\356\377\202\342\342\340\377\10\342\343\340\377\343\343\341\377\343\344" "\341\377\344\344\342\377\342\343\341\377\341\342\340\377\340\341\336" "\377\337\340\335\377\203\336\336\334\377\202\335\336\333\377\7\336\337" "\334\377\354\355\352\377\351\351\347\377\365\365\364\377\256\257\254" "\376\77A\77\374\221\224\217\377\203\247\250\245\377\10\250\251\246\377" "\255\255\253\377\261\262\257\377\265\266\264\377\272\273\270\377\273" "\274\271\377\267\267\265\377\251\252\247\377\211\247\250\245\377\17\227" "\230\224\377\77A\77\376\27\30\30\372V[\\\377.00\377\30\30\31\377)**\377" ":;;\377VXX\377moo\377\201\202\202\377\220\222\222\377\223\224\224\377" "\202\205\205\377W[Z\377\202CGF\377\26DHF\377EIG\377FJH\377HKI\377HLI" "\377IMJ\377KNL\377MOM\377\27\30\30\376\27\30\30\372_dd\377CDD\377\36" "\36\37\377*++\3779::\377SUU\377npp\377\201\203\203\377\220\222\222\377" "\223\226\225\377\203\206\206\377dgf\377\202CGF\377\4DHG\377EIG\377GJ" "H\377,b.\377\202\2\306\2\377\20.c0\377LOL\377\30\31\31\374\30\32\32\347" "NRS\377ppq\377www\377}\177\177\377moo\377`bc\377oqq\377z||\377\211\214" "\213\377\212\215\215\377}\177\177\377hkj\377\202CGF\377\4DHG\377FIH\377" "GJH\377=W>\377\202\20\244\21\377\5\77\\@\377@B@\377\32\33\33\340\31\31" "\31[\30\31\31\367\205\27\30\30\377\202\30\31\31\377\202\31\32\32\377" "\202\30\31\31\377\211\27\30\30\377\2\32\33\33\357\25\31\31H"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_open_url) #endif #ifdef __GNUC__ const guint8 osmo_stock_open_url[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_open_url[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1663) */ "\0\0\6\227" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\237\377\377\377\0\4\0\40`\20\0\36[L\2\37_\204\10&`\304\202\3\"^\362" "\4\7$`\304\2\37]\204\0\36[L\0\40`\20\215\377\377\377\0\14\0\40^W\4#^" "\361Okv\367\223\250\235\376\254\275\254\377\303\320\301\377\317\332\327" "\377\272\307\325\377\233\252\300\376h|\237\366\14)d\361\0\35^W\212\377" "\377\377\0\20\0\32Y\24\7%a\263D`n\371\257\300\274\377\314\327\326\377" "\272\311\256\377\273\312\262\377\304\321\305\377\317\332\336\377\321" "\333\343\377\317\332\343\377\316\331\342\377\276\312\327\377au\232\370" "\10&b\264\0\32Y\24\207\377\377\377\0\4\0\32Y\24\4#_\353i\204{\375\254" "\276\244\377\202\275\314\307\377\14\263\304\262\377\310\325\334\377\311" "\326\340\377\301\317\320\377\306\324\335\377\305\322\334\377\274\313" "\312\377\250\273\235\377\256\277\254\377\206\232\245\374\16+e\354\0\32" "Y\24\206\377\377\377\0\22\7%a\263c\177v\375\242\267\242\377\236\264\230" "\377\300\317\332\377\302\321\334\377\303\321\335\377\302\321\334\377" "\301\320\334\377\300\317\333\377\274\314\325\377\251\274\261\377\261" "\303\306\377\233\260\224\377\243\267\251\377\222\252\202\377}\223\232" "\375\7$a\264\205\377\377\377\0\3\0\40^W/PR\372\216\247\214\377\202\203" "\236r\377\1\243\270\255\377\203\275\315\332\377\13\273\314\331\377\271" "\312\327\377\266\307\325\377\235\264\250\377\200\233l\377}\232g\377~" "\232i\377}\232g\377~\232l\377\77Zu\371\0\35^W\203\377\377\377\0\21\0" "\40`\20\6$]\361a\204O\377i\212P\377l\215W\377\241\266\264\377\257\302" "\312\377\270\313\331\377\271\313\331\377\270\313\331\377\266\311\327" "\377\263\306\324\377\256\302\321\377\217\250\232\377j\212P\377n\216Z" "\377k\213U\377\202i\212P\377\3j\211g\377\3!^\361\0\40`\20\202\377\377" "\377\0\26\0\36[L\"GC\367Pv2\377Z\177B\377\234\265\272\377\255\301\322" "\377\261\305\325\377\265\310\330\377\267\312\332\377\266\311\330\377" "\262\306\326\377\255\302\323\377\245\273\313\377a\205P\377|\232\206\377" "\214\247\255\377v\225\202\377W|>\377Uz8\377Ou4\377\33;W\364\0\36[L\202" "\377\377\377\0\26\2!_\204/Y/\3761^\20\377k\215s\377\236\266\311\377\244" "\273\316\377\252\301\322\377\261\306\327\377\267\312\333\377\262\307" "\330\377\254\302\323\377\246\274\317\377\221\253\261\377Cl&\377@i\40" "\377@j\40\377u\224\222\377u\224\235\377LsB\3773a\24\377/WB\376\2\37]" "\204\202\377\377\377\0\15\11'b\3046a!\377.]\20\377\207\244\267\377\223" "\255\303\377\232\263\310\377\240\270\314\377\245\275\321\377\251\300" "\323\377\247\277\322\377\241\272\316\377\230\261\303\377\77i*\377\204" "+Z\10\377\5,Z\12\3772_\34\3770]\20\377=f>\377\5#_\304\202\377\377\377" "\0\14\5$`\362@k.\377l\215\215\377\177\236\253\377\215\251\277\377\223" "\256\303\377\230\262\307\377\235\266\312\377\237\270\314\377\236\267" "\313\377\232\264\310\377y\231\222\377\206(W\4\377\4*Y\11\377-Z\13\377" "Ir>\377\2!]\362\202\377\377\377\0\14\5$`\362U{Z\377i\212\210\377l\215" "\213\377\204\241\266\377\215\251\277\377\221\254\302\377\224\257\304" "\377\225\260\305\377\225\257\305\377\223\255\303\377y\230\230\377\206" "(W\4\377\4.\\\25\377/^\22\377PyH\377\2!]\362\202\377\377\377\0\10\10" "&b\304]~\215\377GpA\377[\200o\377JrG\377h\213\177\377\210\244\273\377" "\213\247\276\377\202\214\250\276\377\5\212\246\275\377\205\243\267\377" "\77j3\377(W\4\377)X\7\377\204(W\4\377\3FmG\377Rq\210\377\4\"^\304\202" "\377\377\377\0\4\2\37_\204Mk\223\375x\230\256\377IqL\377\202(W\4\377" "\2En>\377\177\236\261\377\202\203\240\270\377\5\201\237\267\377\177\235" "\265\377{\231\261\377o\221\236\377l\216\233\377\203(W\4\377\4)X\7\377" "^\200\212\377\77\\\205\375\0\37]\204\202\377\377\377\0\4\0\36[L2O\201" "\363~\235\265\377`\204\211\377\203(W\4\377\10)X\7\377Cm\77\377y\231\261" "\377x\230\260\377v\226\257\377t\224\255\377p\221\252\377h\212\236\377" "\203(W\4\377\4\211\377\377\377\0\17j`+\27dfb\377\201\202" "}\377^`[\377roe\377\233\213l\377\270\231d\377\275\230X\377\264\217O\377" "\253\207H\377\254\214U\377\261\227h\377\271\244~\377\242\221p\377NG0" "\352\211\377\377\377\0\17\210p\0K\177\200r\376\223\225\220\377\256\260" "\253\377\252\254\247\377\207\211\203\377cd_\377ji`\377\224\206l\377\263" "\225c\377\275\227X\377\264\217P\377\261\220V\377\270\244\201\377OH1\346" "\211\377\377\377\0\6\215s\6\237\314\302\202\376\270\265\220\377\220\220" "{\377\203\204z\377\223\224\214\377\202\253\255\250\377\7\211\212\206" "\377hic\377ba\\\377\213\200i\377\264\236z\377\243\222p\375PI1\226\210" "\377\377\377\0\12\211v\0\15\213s\4\366\362\356\306\377\351\335\201\377" "\341\323`\377\321\304Z\377\263\254b\377\225\224w\377\201\202z\377\212" "\213\203\377\202\231\232\227\377\4\201\202\200\377ije\377WYU\377QM@g" "\210\377\377\377\0\13\213r\2n\271\251U\367\372\366\324\377\361\350\240" "\377\361\351\251\377\344\326g\377\337\320Z\377\332\313M\377\317\301E" "\377\264\253R\377\230\225l\377\202\202\203y\377\3\200\201}\377ijd\377" "MMM\12\207\377\377\377\0\20\210q\0+\221z\17\360\365\360\323\377\375\372" "\344\377\327\315\232\377\364\353\250\377\353\337{\377\350\334y\377\344" "\330o\377\335\316T\377\330\310H\377\323\303;\377\313\2732\377\303\275" "\177\377\251\242s\376\205u\36\252\210\377\377\377\0\20\214s\5\355\341" "\330\245\376\370\363\323\377\310\271k\377\275\255c\377\372\364\302\377" "\370\361\300\377\340\330\251\377\351\337\224\377\344\327h\377\340\322" "`\377\336\317\\\377\327\307E\377\360\352\274\377\237\213#\363\206n\0" "J\210\377\377\377\0\20\233\206&\247\243\2178\373\212r\4\365\210o\0\377" "\306\265l\373\343\333\250\377\342\327\240\377\240\214+\377\365\360\314" "\377\365\357\275\377\367\362\322\377\343\333\246\377\351\340\222\377" "\345\335\240\377\213r\2\356\252U\0\3\212\377\377\377\0\15\377\0\0\1\211" "q\0""6\212s\4\201\220x\14\250\217v\13\274\213r\4\371\262\240N\364\306" "\270p\366\250\225:\374\310\273z\377\356\350\302\377\237\212&\364\211" "q\3c\220\377\377\377\0\7\216q\0\11\207n\0H\207p\0`\214s\6\316\213r\3" "\366\220v\12\323\215t\4{\267\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_find) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_find[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_find[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1487) */ "\0\0\5\347" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\233\377\377\377\0\1\217\217\217\333\203\214\214\214\374\13\215\215\215" "\374\220\220\220\374\222\222\222\374\224\224\224\374\226\226\226\374" "\230\230\230\374\232\232\232\374\234\234\234\374\237\237\237\374\241" "\241\241\374\243\243\243\374\202\244\244\244\374\1\245\245\245\333\206" "\377\377\377\0\1\214\214\214\374\211\377\377\377\377\206\376\376\376" "\377\2\377\377\377\377\244\244\244\374\206\377\377\377\0\2\214\214\214" "\374\377\377\377\377\203\372\372\372\377\15\370\370\370\377\366\366\366" "\377\363\363\363\377\360\360\360\377\355\355\355\377\353\353\353\377" "\350\350\350\377\345\345\345\377\343\343\343\377\340\340\340\377\335" "\335\335\377\376\376\376\377\244\244\244\374\206\377\377\377\0\2\214" "\214\214\374\377\377\377\377\203\372\372\372\377\15\370\370\370\377\366" "\366\366\377\363\363\363\377\360\360\360\377\355\355\355\377\353\353" "\353\377\350\350\350\377\345\345\345\377\343\343\343\377\340\340\340" "\377\335\335\335\377\376\376\376\377\244\244\244\374\206\377\377\377" "\0\2\214\214\214\374\377\377\377\377\203\372\372\372\377\15\370\370\370" "\377\366\366\366\377\363\363\363\377\360\360\360\377\356\356\356\377" "\353\353\353\377\350\350\350\377\345\345\345\377\343\343\343\377\340" "\340\340\377\335\335\335\377\376\376\376\377\243\243\243\374\206\377" "\377\377\0\2\214\214\214\374\377\377\377\377\203\372\372\372\377\15\370" "\370\370\377\366\366\366\377\363\363\363\377\360\360\360\377\356\356" "\356\377\353\353\353\377\350\350\350\377\345\345\345\377\343\343\343" "\377\340\340\340\377\335\335\335\377\376\376\376\377\241\241\241\374" "\206\377\377\377\0\2\214\214\214\374\377\377\377\377\203\372\372\372" "\377\15\370\370\370\377\366\366\366\377\363\363\363\377\360\360\360\377" "\356\356\356\377\353\353\353\377\350\350\350\377\345\345\345\377\343" "\343\343\377\340\340\340\377\335\335\335\377\376\376\376\377\240\240" "\240\374\206\377\377\377\0\2\214\214\214\374\377\377\377\377\203\372" "\372\372\377\15\370\370\370\377\366\366\366\377\363\363\363\377\360\360" "\360\377\336\336\336\377\233\233\234\377def\377]_`\377bdf\377\225\226" "\226\377\315\315\315\377\376\376\376\377\236\236\236\374\206\377\377" "\377\0\2\214\214\214\374\377\377\377\377\203\372\372\372\377\15\370\370" "\370\377\366\366\366\377\363\363\363\377\320\320\320\377_`b\377\230\237" "\247\377\303\317\334\377\321\334\347\377\306\320\335\377\225\235\246" "\377^`b\377\333\333\333\377\234\234\234\374\206\377\377\377\0\2\214\214" "\214\374\377\377\377\377\203\372\372\372\377\15\370\370\370\377\366\366" "\366\377\340\340\340\377bcd\377\273\305\320\377\355\362\370\377\361\365" "\372\377\341\352\364\377\276\321\345\377\301\323\346\377\246\264\304" "\377^`b\377\224\224\224\374\206\377\377\377\0\2\214\214\214\374\377\377" "\377\377\203\372\372\372\377\15\370\370\370\377\366\366\366\377\236\237" "\237\377\234\241\247\377\357\363\371\377\372\373\375\377\372\374\375" "\377\361\365\371\377\245\276\330\377\241\273\327\377\264\311\337\377" "\215\232\246\377stv\376\206\377\377\377\0\2\214\214\214\374\377\377\377" "\377\203\372\372\372\377\15\370\370\370\377\366\366\366\377fgh\377\311" "\322\335\377\366\371\374\377\372\374\375\377\373\374\375\377\340\347" "\360\377\266\310\333\377\260\304\331\377\255\302\330\377\272\311\332" "\377Y[]\377\206\377\377\377\0\2\214\214\214\374\377\377\377\377\203\372" "\372\372\377\15\370\370\370\377\366\366\366\377`ab\377\324\336\350\377" "\343\353\364\377\365\370\373\377\357\363\367\377\307\323\340\377\306" "\321\336\377\276\314\333\377\263\304\330\377\311\327\346\377WY[\377\206" "\377\377\377\0\2\214\214\214\374\377\377\377\377\203\372\372\372\377" "\15\370\370\370\377\366\366\366\377ffg\377\311\323\336\377\325\341\355" "\377\332\344\356\377\335\345\355\377\323\332\342\377\325\333\340\377" "\311\323\335\377\276\314\334\377\304\320\334\377Y[]\377\206\377\377\377" "\0\2\214\214\214\374\377\377\377\377\203\372\372\372\377\15\370\370\370" "\377\366\366\366\377\237\237\240\377\237\244\252\377\335\350\362\377" "\331\344\356\377\325\336\350\377\331\336\343\377\335\337\342\377\315" "\325\335\377\315\327\343\377\231\237\250\377oqq\376\206\377\377\377\0" "\3\214\214\214\374\377\377\377\377\373\373\373\377\202\372\372\372\377" "\15\370\370\370\377\366\366\366\377\342\342\342\377`ab\377\274\304\315" "\377\313\331\350\377\311\325\343\377\317\330\341\377\323\332\342\377" "\324\335\345\377\257\270\277\377\\^_\377\206\205\205\374\206\377\377" "\377\0\23\220\220\220\317\242\242\242\376\246\246\246\377\254\254\254" "\377\260\260\260\377\247\247\247\377\366\366\366\377\363\363\363\377" "\320\320\320\377bcd\377\234\240\245\377\304\315\327\377\317\330\341\377" "\307\317\327\377\230\235\242\377TUT\377\202qQ\377^VA\377KE0\22\205\377" "\377\377\0\24\200\200\200\6\222\222\222\246\312\312\312\372\371\371\371" "\377\377\377\377\377\261\261\261\377\366\366\366\377\363\363\363\377" "\360\360\360\377\334\334\334\377\232\233\233\377efg\377^`a\377dde\377" "\216\216\216\377_W@\377\271\231d\377\237\203Q\377VM5\324KE0\13\206\377" "\377\377\0\23\215\215\215p\264\264\264\370\372\372\372\377\256\256\256" "\377\366\366\366\377\363\363\363\377\360\360\360\377\356\356\356\377" "\353\353\353\377\350\350\350\377\345\345\345\377\343\343\343\377\340" "\340\340\377\226\222\205\377o`A\377\267\233j\377\220xG\370UM4\310KE0" "\6\206\377\377\377\0\3\213\213\213B\241\241\241\363\252\252\252\377\203" "\376\376\376\377\204\375\375\375\377\203\374\374\374\377\5\231\224\206" "\377p`>\377\261\227h\377\203k>\365VM4\250\207\377\377\377\0\3\207\207" "\207\"\220\220\220\336\217\217\217\374\207\220\220\220\374\203\217\217" "\217\374\4c]L\363weA\364\242\207U\377QI1\355\224\377\377\377\0\4KE0\3" "QH0\247OH0\356QH0x\230\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_highlight) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_highlight[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_highlight[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (837) */ "\0\0\3]" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\274\377\377\377\0\5\256t#\26\265\177'\313\271\2054\352\263z\"\235\263" "s&\24\222\377\377\377\0\10\277\200@\4\264|%\334\352\324\236\375\372\355" "\274\377\344\310\212\373\270\2020\365\261w\40v\252\200+\6\220\377\377" "\377\0\11\260x\"q\326\262n\367\376\354\235\377\376\336Q\377\376\351\213" "\377\367\345\262\377\324\257l\370\264{(\350\257u\40""0\216\377\377\377" "\0\12\256t#\26\267\2021\364\372\354\267\377\376\340Y\377\376\335K\377" "\370\320@\377\352\272=\377\362\326\214\377\356\332\260\377\265\177.\336" "\216\377\377\377\0\12\263z\"\245\346\313\213\373\376\350\207\377\376" "\335K\377\374\331G\377\356\2764\377\340\244&\377\356\301N\377\366\351" "\305\377\267\177.\350\215\377\377\377\0\13\255s\"5\300\221G\367\375\357" "\264\377\376\336O\377\376\335K\377\366\313;\377\342\254*\377\346\264" "8\377\364\335\231\377\342\307\227\372\263{%\227\214\377\377\377\0\14" "\377\0\0\1\263|#\324\361\336\245\377\376\345s\377\376\335K\377\372\324" "C\377\351\270/\377\340\247+\377\360\311a\377\366\351\306\377\267\201" "2\363\252q\34\22\214\377\377\377\0\3\261x\37b\317\251d\367\377\356\245" "\377\202\376\335K\377\6\363\3067\377\341\247&\377\351\271@\377\367\344" "\256\377\321\257s\367\261x!l\214\377\377\377\0\14\252w\"\17\267\200." "\361\370\351\266\377\376\341`\377\376\335K\377\370\320\77\377\346\262" "+\377\341\2542\377\360\320w\377\360\337\271\377\264|(\333\252U\0\3\214" "\377\377\377\0\13\262z\"\225\337\303\203\372\376\352\221\377\376\335" "K\377\374\330F\377\360\3013\377\337\244&\377\354\301L\377\370\351\301" "\377\301\224P\370\261s!>\214\377\377\377\0\13\256v\37)\275\214\77\370" "\374\356\270\377\376\337S\377\376\335K\377\365\313:\377\344\254)\377" "\344\2609\377\362\330\216\377\345\316\240\374\263z%\261\215\377\377\377" "\0\13SE*\306\225\210_\376\376\351\210\377\376\335K\377\372\323B\377\354" "\272.\377\336\247.\377\356\307]\377\367\351\307\377\270\2036\367\255" "v$\34\215\377\377\377\0\12""9;8\372\77A<\377ihV\377\362\335\205\377\362" "\307=\377\344\253$\377\345\264@\377\365\341\246\377\327\266}\370\262" "w\"~\216\377\377\377\0\12BED\364\266\267\265\377^\\X\377=>6\377\256\242" "~\377\353\306i\377\361\323z\377\362\343\277\377\264|+\351\266m$\7\216" "\377\377\377\0\11:@>\362\303\305\303\377\207\206\177\377B@7\377870\377" "<>9\377\247\241\213\377\277\221L\367\261v!N\217\377\377\377\0\2""497" "\362\235\234\230\377\203JF:\377\3::4\377)--\377kQ(\247\220\377\377\377" "\0\10.20\361daY\377JF:\377@\77""6\377/2/\363,/.\352:7-z333\5\217\377" "\377\377\0\7\261v\37A\306\235'\376\224l'\377-0/\364,/.\330*,,V\0UU\3" "\221\377\377\377\0\4\310\230%\333\377\3420\377\277\223&\371+..B\224\377" "\377\377\0\3\267\201\"\265\323\246'\365\260y!M\300\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_info) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_info[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_info[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1205) */ "\0\0\4\315" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\267\377\377\377\0\12\0\0\200\2He\216YGd\215\222Gd\220\315He\217\365" "If\220\366Hf\220\317Gd\216\226Gc\216\\3f\231\5\215\377\377\377\0\14H" "h\216.Hf\221\331Xt\235\366g\204\253\374q\217\267\377{\232\301\377|\232" "\301\377r\217\266\377g\205\254\375Zv\236\366Jg\222\337Vp\2277\212\377" "\377\377\0\20\0\0\0\1Kg\220\203Ok\224\366m\214\262\375}\234\304\377r" "\224\277\377l\217\275\377f\213\272\377e\213\272\377k\217\275\377r\224" "\277\377|\234\304\377o\215\265\376Ql\224\366Wq\231\216\200\200\300\4" "\210\377\377\377\0\5C_\214}Xu\235\366{\231\301\377t\225\301\377c\210" "\271\377\206a\207\270\377\5c\210\271\377r\224\300\377|\233\301\377Zv" "\237\366Vp\227\214\207\377\377\377\0\4>\\\206)Mi\222\366{\231\300\377" "k\217\275\377\212a\207\270\377\4i\216\274\377{\232\302\377Qm\225\366" "v\210\252>\205\377\377\377\0\4\0\0\200\2Ed\216\326m\212\261\375u\226" "\301\377\204a\207\270\377\4g\213\273\377\317\330\343\377\326\336\345" "\377o\221\276\377\204a\207\270\377\4r\224\300\377o\215\264\375Ro\226" "\336\273\322\322\13\204\377\377\377\0\4""3T\202KWs\234\366}\234\304\377" "c\211\271\377\204a\207\270\377\4\207\243\307\377\352\354\354\377\355" "\356\356\377\232\261\317\377\204a\207\270\377\4b\210\270\377|\234\304" "\377Zw\236\366Pl\224]\204\377\377\377\0\3;\\\207\203d\202\252\373r\225" "\300\377\206a\207\270\377\3\235\263\320\377\246\272\324\377d\211\271" "\377\205a\207\270\377\3q\223\277\377g\205\255\375Pl\223\226\204\377\377" "\377\0\3>\\\212\300o\216\265\377l\220\275\377\204a\207\270\377\4\201" "\237\305\377\314\326\341\377\324\334\345\377\200\236\304\377\206a\207" "\270\377\3j\216\274\377r\220\270\377Pl\225\320\204\377\377\377\0\14A" "`\213\354o\220\272\377Jv\256\377>l\250\3777g\245\377:j\247\377Lw\257" "\377r\223\276\377\327\336\346\377\356\357\357\377\345\350\353\377n\221" "\275\377\205a\207\270\377\3_\205\267\377k\216\271\377\"Dx\363\204\377" "\377\377\0\3\37Bw\352Sz\254\377:j\247\377\2054e\244\377\14Jv\255\377" "\341\346\350\377\343\347\352\377q\223\277\377`\206\270\377Z\202\265\377" "R|\262\377Iu\256\377@n\251\3778h\245\377W~\257\377\30s" "\316Ag\233\375Mx\257\377\2034e\244\377\6{\231\300\377\354\354\353\377" "\340\344\346\377\337\343\346\377\354\354\354\377\220\250\310\377\203" "4e\244\377\4Iu\256\377El\236\375\30>r\325\0UU\3\205\377\377\377\0\4\26" ":m#\32\77s\364T{\256\377Ao\252\377\2034e\244\377\1Ao\251\377\202Kv\255" "\377\1Dq\251\377\2034e\244\377\4>m\251\377U}\260\377\35Au\364\31""8p" ")\207\377\377\377\0\5\31;rp%K\177\363U|\257\377Lw\257\3776f\245\377\206" "4e\244\377\5""5f\244\377Iu\256\377V~\257\377)M\202\364\31=ry\210\377" "\377\377\0\20\0\0\0\1\30n%\30>t\321(L\201\362" "r:\204\377\377\377\0\24}}|" "\377\371\371\371\377\351\351\351\377\347\347\347\377\336\336\336\377" "\202\202\202\377SSR\377.Ks\377Zk\201\377\367\367\367\377\377\377\377" "\377\373\373\373\377\362\362\363\377\353\353\354\377\327\327\330\377" "\205\206\206\377\276\277\300\377\316\317\321\377~\207\225\377:^\222\271" "\204\377\377\377\0\3yyx\377\370\370\370\377\346\346\346\377\202\344\344" "\344\377\5\343\343\343\377\336\336\336\377:_\223\377\214\221\231\377" "\375\375\375\377\202\377\377\377\377\10\367\367\367\377\276\277\277\377" "SVU\377uww\377\323\323\324\377\324\324\325\377\232\235\240\377Lr\244" "\351\204\377\377\377\0\2vvu\377\366\366\366\377\202\370\370\370\377\203" "\367\367\367\377\15""2\\\224\377\254\255\260\377ss{\377\375\375\375\377" "\370\370\370\377\317\320\320\377GJH\377\245\246\246\377\342\342\343\377" "\340\340\341\377FIH\377\245\250\247\377W|\256\375\204\377\377\377\0\2" "xxx\322uut\377\205wwv\377\10""5Y\212\377\220\226\234\377\357\357\360" "\377\363\363\363\377\362\362\363\377\355\355\355\377\257\260\261\377" "\242\243\244\377\202\344\344\345\377\3\324\324\325\377\226\230\232\377" "Kp\244\350\213\377\377\377\0\15%M\204\263cs\207\377\342\342\343\377\355" "\355\356\377\357\357\360\377\356\356\357\377\353\353\354\377\201\203" "\202\377\304\305\306\377\350\350\351\377\300\302\301\377y\202\216\377" ":^\223\270\213\377\377\377\0\4\31;q4\77g\236\376\252\255\256\377\343" "\343\343\377\203\354\354\354\377\6\343\343\343\377\220\222\223\377\321" "\322\322\377\233\235\235\377_\203\263\376\30=q6\214\377\377\377\0\13" "%H\200\221Tt\234\377\254\256\256\377\327\330\327\377\336\337\336\377" "FIH\377\332\333\332\377\300\301\300\377\233\235\235\377k\203\244\377" "-S\207\231\215\377\377\377\0\13\0UU\3&K\201\222Pv\251\376v\203\222\377" "\231\235\237\377\245\247\246\377\224\230\233\377x\202\216\377`\203\263" "\377,Q\205\227\0@\200\4\217\377\377\377\0\7\30\77s53W\215\265Dj\237\347" "Sy\253\375In\240\3508\\\220\266\26\77t9\265\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_insert_separator) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_insert_separator[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_insert_separator[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1436) */ "\0\0\5\264" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\1\215\215\215\331\213\212\212\212\377\2\220\220\220" "\332\210\210\210\36\212\377\377\377\0\1\212\212\212\377\213\377\377\377" "\377\3\252\252\252\377\237\237\237\363\214\214\214>\211\377\377\377\0" "\20\212\212\212\377\377\377\377\377\335\335\335\377\340\340\340\377\343" "\343\343\377\345\345\345\377\350\350\350\377\353\353\353\377\356\356" "\356\377\360\360\360\377\363\363\363\377\366\366\366\377\257\257\257" "\377\372\372\372\377\261\261\261\371\215\215\215k\210\377\377\377\0\22" "\214\214\214\377\377\377\377\377\335\335\335\377\340\340\340\377\343" "\343\343\377\345\345\345\377\350\350\350\377\353\353\353\377\356\356" "\356\377\360\360\360\377\363\363\363\377\366\366\366\377\261\261\261" "\377\377\377\377\377\371\371\371\377\306\306\306\373\217\217\217\242" "\231\231\231\5\206\377\377\377\0\4\216\216\216\377\377\377\377\377\335" "\335\335\377wxx\377\203ijj\377\2\333\333\333\377yzz\377\203ijj\377\1" "\246\246\246\377\202\247\247\247\377\3\246\246\246\377\241\241\241\376" "\217\217\217\315\206\377\377\377\0\15\220\220\220\377\377\377\377\377" "\335\335\335\377\340\340\340\377\343\343\343\377\345\345\345\377\350" "\350\350\377\353\353\353\377\356\356\356\377\360\360\360\377\363\363" "\363\377\366\366\366\377\370\370\370\377\202\372\372\372\377\3\373\373" "\373\377\377\377\377\377\212\212\212\377\206\377\377\377\0\22\221\221" "\221\377\377\377\377\377\335\335\335\377{||\377ijj\377\321\322\322\377" "|}}\377ijj\377\331\332\332\377~\177\177\377ijj\377\337\340\340\377\177" "\200\200\377ijj\377\343\344\344\377\366\367\365\377\332\344\321\377\212" "\212\212\377\206\377\377\377\0\22\223\223\223\377\377\377\377\377\335" "\335\335\377\340\340\340\377\343\343\343\377\345\345\345\377\350\350" "\350\377\353\353\353\377\356\356\356\377\360\360\360\377\363\363\363" "\377\366\366\366\377\370\370\370\377\372\372\372\377\356\362\353\377" "c\220<\377\240\273\211\377\212\212\212\377\206\377\377\377\0\4\225\225" "\225\377\377\377\377\377\335\335\335\377wxx\377\202ijj\377\2\330\330" "\330\377yzz\377\202ijj\377\10\342\342\342\377z{{\377\341\342\342\377" "\345\353\337\377[\2121\377b\221:\377\232\267\201\377\204\210\201\377" "\2020p\0\20\204\377\377\377\0\24\226\226\226\377\377\377\377\377\335" "\335\335\377\340\340\340\377\343\343\343\377\345\345\345\377\350\350" "\350\377\353\353\353\377\356\356\356\377\360\360\360\377\363\363\363" "\377\366\366\366\377\325\340\315\377U\205*\377\250\306\206\377\224\270" "j\377[\2132\377Y\2100\377V\206*\3715o\4\377\204\377\377\377\0\24\230" "\230\230\377\377\377\377\377\335\335\335\377\340\340\340\377\343\343" "\343\377\345\345\345\377\350\350\350\377\353\353\353\377\356\356\356" "\377\360\360\360\377\363\363\363\377\304\323\267\377S\204(\377\252\311" "\210\377\275\331\232\377\301\334\234\377\304\336\237\377\310\341\242" "\377\306\341\232\3775o\4\377\204\377\377\377\0\3\232\232\232\377\377" "\377\377\377\335\335\335\377\207\0\0\0\377\12\5\13\0\3775m\5\377p\241" "=\377\212\272O\377\220\277T\377\227\304Y\377\235\311_\377\243\315c\377" "\247\320d\3775o\4\377\204\377\377\377\0\24\233\233\233\377\377\377\377" "\377\335\335\335\377\340\340\340\377\343\343\343\377\345\345\345\377" "\350\350\350\377\353\353\353\377\356\356\356\377\360\360\360\377\363" "\363\363\377\304\323\267\377@w\21\377U\222\20\377l\252\34\377t\260\"" "\377|\266(\377\204\274.\377\214\3024\3775o\4\377\204\377\377\377\0\24" "\235\235\235\377\377\377\377\377\335\335\335\377\340\340\340\377\343" "\343\343\377\345\345\345\377\350\350\350\377\353\353\353\377\356\356" "\356\377\360\360\360\377\363\363\363\377\366\366\366\377\325\340\315" "\377F{\30\377V\221\25\377X\222\26\377@x\17\377t\204\27;q\375\202\27;p\377\1TY[\377\213UWS\377" "\3X]^\377\30e\221\377UWS\377\203\376\376\376\377\4\372\372\372\377" "\361\361\361\377\350\350\350\377\336\336\336\377\202\327\327\327\377" "\6\326\326\326\377\323\323\323\377ac_\377Cn\244\377\31>s\361\27:n,\204" "\377\377\377\0\5\27;p\377\215\251\316\377Es\257\3775\\\210\377UWS\377" "\202\376\376\376\377\15\370\370\370\377\353\353\353\377\336\336\336\377" "\321\321\321\377\\`^\377\\bc\377\\`^\377\306\306\306\377\324\324\324" "\377gie\377Hr\246\377b\202\260\376\31=r\357\204\377\377\377\0\24\27;" "p\377\217\253\317\377Hv\261\3774Z\203\377UWS\377\376\376\376\377\372" "\372\372\377\355\355\355\377\337\337\337\377\322\322\322\377\306\306" "\306\377\\bc\377X\204\274\377\\bc\377\306\306\306\377\324\324\324\377" "moj\377:g\235\377\215\252\316\377\27;p\377\204\377\377\377\0\11\27;p" "\377\221\255\320\377Ky\263\3774V}\377UWS\377\374\374\374\377\356\356" "\356\377\341\341\341\377\324\324\324\377\202\306\306\306\377\11\\bc\377" "X\204\274\377\\bc\377\306\306\306\377\323\323\323\377sup\3779d\230\377" "\217\254\320\377\27;p\377\204\377\377\377\0\11\27;p\377\223\257\322\377" "N{\265\3773Vz\377UWS\377\365\365\365\377\342\342\342\377\325\325\325" "\377\310\310\310\377\202\306\306\306\377\11\\bc\377X\204\274\377\\bc" "\377\306\306\306\377\323\323\323\377y{v\3779c\224\377\221\255\321\377" "\27;p\377\204\377\377\377\0\10\27;p\377\225\260\323\377Q~\267\3773Vz" "\377UWS\377\354\354\354\377\330\330\330\377\312\312\312\377\203\306\306" "\306\377\11\\`^\377\\bc\377\\`^\377\307\307\307\377\322\322\322\377~" "\201|\3778`\221\377\223\257\322\377\27;p\377\204\377\377\377\0\7\27;" "p\377\227\262\324\377T\200\271\3776Y\177\377W^a\377\263\264\262\377\333" "\333\333\377\202\331\331\331\377\13\330\330\330\377\327\327\327\377\326" "\326\326\377\325\325\325\377\324\324\324\377\322\322\322\377\262\262" "\260\377{\203\206\377:b\217\377\225\260\324\377\27;p\377\204\377\377" "\377\0\6\27;p\377\230\263\325\377V\202\273\377Ir\242\377=Yv\377V]`\377" "\205UWS\377\11\\^Z\377egc\377nql\377xzu\377w\177\202\377Ig\207\377Ku" "\247\377\226\262\325\377\27;p\377\204\377\377\377\0\11\27;p\377\231\263" "\326\377X\204\274\377\\\207\277\377_\212\301\377b\214\303\377d\216\304" "\377f\220\306\377h\222\307\377\203i\223\310\377\10h\222\307\377f\220" "\306\377d\216\304\377b\214\303\377_\212\301\377\\\207\277\377\230\263" "\325\377\27;p\377\204\377\377\377\0\24\27;p\377\232\265\326\377Z\206" "\276\377^\211\300\377a\214\302\377d\217\304\377g\221\306\377j\223\310" "\377l\225\311\377m\226\312\377m\227\313\377m\226\312\377l\225\311\377" "j\223\310\377g\221\306\377d\217\304\377a\214\302\377^\211\300\377\231" "\264\327\377\27;p\377\204\377\377\377\0\4\27;p\377\233\265\327\377\\" "\207\277\377\277\316\340\377\214\355\357\357\377\4\300\317\341\377_\213" "\301\377\233\265\330\377\27;p\377\204\377\377\377\0\3\27;p\377\234\266" "\330\377]\210\300\377\202\355\357\357\377\212\226\225\227\377\202\355" "\357\357\377\3a\214\302\377\233\266\330\377\27;p\377\204\377\377\377" "\0\3\27;p\377\235\267\330\377^\211\300\377\216\355\357\357\377\3b\215" "\303\377\234\266\330\377\27;p\377\204\377\377\377\0\3\27;p\377\235\267" "\330\377^\211\300\377\202\355\357\357\377\212\226\225\227\377\202\355" "\357\357\377\3b\215\303\377\234\266\330\377\27;p\377\204\377\377\377" "\0\3\27;p\377\235\267\330\377^\211\300\377\216\355\357\357\377\3b\215" "\303\377\235\267\330\377\27;p\377\204\377\377\377\0\3\27;p\377\235\267" "\330\377]\211\300\377\202\355\357\357\377\212\226\225\227\377\202\355" "\357\357\377\3a\214\302\377\234\267\330\377\27;p\377\204\377\377\377" "\0\4\27;p\377\235\267\330\377\\\210\277\377\277\316\340\377\214\355\357" "\357\377\4\301\317\341\377`\213\302\377\233\266\330\377\27;p\377\204" "\377\377\377\0\11\30t\223\30" ">>>@@@\366AAAj@@@" "\4AAA\325AAA\260\202\0\0\0\0\2AAA\340BBB\236\202\0\0\0\0\6BBB\227AAA" "\363>>>\35@@@\277BBB\326UUU\6\202\0\0\0\0\1CCC9\203\0\0\0\0\12AAA\241" "AAA\347BBB|@@@wAAA\311AAA\353@@@\34\0\0\0\0AAA\340\77\77\77\221\202\0" "\0\0\0\5AAAbAAA\377CCCH@@@\333AAA\242\206\0\0\0\0\3;;;\15@@@\337AAA\333" "\203AAA\321\5@@@\363@@@\214\0\0\0\0AAA\340\77\77\77\221\202\0\0\0\0\5" "BBB\214AAA\366<<<\"AAA\315AAA\275\206\0\0\0\0\3AAAzAAA\363@@@0\203\0" "\0\0\0\20AAA\271BBB\316\200\200\200\2AAA\340AAA\274@@@DAAAzBBB\325\77" "\77\77\275\0\0\0\0AAA\226BBB\360BBB\227AAAGAAA~@@@\264\202\0\0\0\0\2" "BBB\315AAA\277\204\0\0\0\0\24CCCoAAA\375@@@[AAA\324AAA\314AAA\346AAA" "\345AAA\267DDD\"\0\0\0\0III\7AAA\222AAA\324AAA\350AAA\327AAA\221\0\0" "\0\0\0\0\0\1@@@0EEE\32\204\0\0\0\0\3""333\5@@@0N::\33\202\0\0\0\0\3U" "UU\6""999\11\252\0\0\3\205\0\0\0\0\1@@@\10\204\0\0\0\0\12\271\13\13m" "\271\13\13\13\271\13\13\3\271\13\13\226\271\13\13\252\271\13\13\17\0" "\0\0\0\271\13\13^\271\13\13\354\271\13\13B\202\0\0\0\0\12\270\13\13w" "\271\13\13\341\265\13\13\30\0\0\0\0\272\13\13C\271\12\12\334\271\14\14" "\200\0\0\0\0\270\14\14A\270\13\13\237\202\0\0\0\0\1\271\13\13\243\202" "\271\13\13\226\23\271\13\13\267\271\13\13\231\271\13\13\265\271\13\13" "`\271\13\13\347\271\13\13e\271\13\13\353\270\13\13Q\271\14\14o\271\13" "\13\336\271\13\13\216\271\13\13\314\271\12\12L\271\13\13\350\271\12\12" "M\271\13\13\324\270\12\12h\271\13\13\313\270\13\13a\202\0\0\0\0\26\271" "\13\13\23\271\13\13\306\271\13\13\272\271\13\13\17\271\13\13\4\271\13" "\13\235\271\13\13\330\271\13\13""6\0\0\0\0\271\13\13@\271\13\13\315\271" "\13\13\304\272\16\16%\0\0\0\0\271\13\13\234\271\13\13\313\271\12\12P" "\0\0\0\0\267\15\15'\271\13\13\327\271\13\13\241\377\0\0\1\311\0\0\0\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_strikethrough) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_strikethrough[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_strikethrough[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1710) */ "\0\0\6\306" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\26\263\265\257\257\254\257\250\377\250\253\245\377" "\244\247\241\377\240\243\235\377\234\237\231\377\230\233\225\377\224" "\227\221\377\220\222\214\377\213\216\210\377\207\211\204\377\203\205" "\200\377~\201{\377z|w\377vxs\377qto\377moj\377hkf\377dfb\377`b^\377[" "]Y\377`b]\257\202\377\377\377\0\2\263\266\257\377\372\372\372\377\204" "\375\375\375\377\204\374\374\374\377\203\373\373\373\377\203\372\372" "\372\377\203\371\371\371\377\3\370\370\370\377\365\365\365\377Y[W\377" "\202\377\377\377\0\3\267\272\263\377\376\376\376\377\356\356\356\377" "\205\357\357\357\377\4\356\356\356\377\355\355\355\377\354\354\354\377" "\353\353\353\377\202\351\351\351\377\10\347\347\347\377\346\346\346\377" "\344\344\344\377\342\342\342\377\340\340\340\377\336\336\336\377\371" "\371\371\377Z\\X\377\202\377\377\377\0\3\265\270\261\377\376\376\376" "\377\356\356\356\377\202\360\360\360\377\202\361\361\361\377\17\360\360" "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353" "\377\351\351\351\377\350\350\350\377\346\346\346\377\344\344\344\377" "\342\342\342\377\341\341\341\377\337\337\337\377\335\335\335\377\371" "\371\371\377\\^Z\377\202\377\377\377\0\6\261\264\255\377\376\376\376" "\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377" "\202\362\362\362\377\2\361\361\361\377\273\273\273\377\202[\\\\\377\12" "\267\267\267\377\350\350\350\377\347\347\347\377\345\345\345\377\343" "\343\343\377\341\341\341\377\337\337\337\377\335\335\335\377\371\371" "\371\377]_[\377\202\377\377\377\0\26\254\257\250\377\375\375\375\377" "\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377\364" "\364\364\377\363\363\363\377\362\362\362\377\203\204\204\377dee\377_" "``\377\202\203\203\377\351\351\351\377\347\347\347\377\345\345\345\377" "\343\343\343\377\341\341\341\377\337\337\337\377\335\335\335\377\371" "\371\371\377^`\\\377\202\377\377\377\0\26\247\252\244\377\375\375\375" "\377\363\363\363\377\365\365\365\377\366\366\366\377\367\367\367\377" "\366\366\366\377\365\365\365\377\342\342\342\377\\]]\377\227\227\227" "\377\211\212\212\377\\]]\377\331\331\331\377\347\347\347\377\345\345" "\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335\335\335" "\377\371\371\371\377_a]\377\202\377\377\377\0\26\243\245\237\377\375" "\375\375\377\364\364\364\377\366\366\366\377\370\370\370\377\371\371" "\371\377\367\367\367\377\365\365\365\377\253\254\254\377[\\\\\377\316" "\317\317\377\276\277\277\377[\\\\\377\246\246\246\377\347\347\347\377" "\345\345\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335" "\335\335\377\371\371\371\377_a]\377\202\377\377\377\0\4\236\241\232\377" "\374\374\374\377\364\364\364\377\366\366\366\377\202\370\370\370\377" "\20\366\366\366\377\365\365\365\377rss\377pqq\377\357\357\357\377\350" "\351\351\377eff\377qrr\377\347\347\347\377\345\345\345\377\343\343\343" "\377\341\341\341\377\337\337\337\377\335\335\335\377\371\371\371\377" "`b]\377\202\377\377\377\0\5\231\234\226\377\374\374\374\377\364\364\364" "\377\365\365\365\377\366\366\366\377\214[\\\\\377\5\340\340\340\377\336" "\336\336\377\334\334\334\377\371\371\371\377_b]\377\202\377\377\377\0" "\26\224\227\221\377\374\374\374\377\362\362\362\377\363\363\363\377\364" "\364\364\377\357\357\357\377\356\356\356\377\227\227\227\377\\]]\377" "\331\331\331\377\351\351\351\377\347\347\347\377\304\304\304\377[\\\\" "\377\224\224\224\377\340\340\340\377\336\336\336\377\340\340\340\377" "\336\336\336\377\334\334\334\377\371\371\371\377_a]\377\202\377\377\377" "\0\3\220\222\214\377\373\373\373\377\361\361\361\377\203\362\362\362" "\377\20\354\355\355\377eff\377yzz\377\340\340\340\377\337\337\337\377" "\335\335\335\377\332\332\332\377ijj\377eff\377\340\340\340\377\341\341" "\341\377\337\337\337\377\335\335\335\377\333\333\333\377\370\370\370" "\377_a\\\377\202\377\377\377\0\3\213\215\210\377\373\373\373\377\357" "\357\357\377\203\360\360\360\377\1\275\275\275\377\210[\\\\\377\7\266" "\267\267\377\340\340\340\377\336\336\336\377\334\334\334\377\332\332" "\332\377\370\370\370\377^`\\\377\202\377\377\377\0\3\206\210\203\377" "\373\373\373\377\355\355\355\377\203\356\356\356\377\20\206\206\206\377" "___\377\264\264\264\377\264\265\265\377\263\264\264\377\262\263\263\377" "\261\262\262\377\253\253\253\377[\\\\\377\204\205\205\377\337\337\337" "\377\335\335\335\377\333\333\333\377\331\331\331\377\370\370\370\377" "]_[\377\202\377\377\377\0\3\201\204~\377\372\372\372\377\353\353\353" "\377\202\354\354\354\377\21\337\337\337\377]^^\377\210\211\211\377\351" "\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\344\344" "\344\377\343\343\343\377yzz\377]^^\377\323\324\324\377\334\334\334\377" "\332\332\332\377\330\330\330\377\370\370\370\377\\^Y\377\202\377\377" "\377\0\3|\177z\377\372\372\372\377\351\351\351\377\202\352\352\352\377" "\21\250\251\251\377[\\\\\377\272\272\272\377\347\347\347\377\346\346" "\346\377\345\345\345\377\344\344\344\377\343\343\343\377\341\341\341" "\377\251\251\251\377[\\\\\377\244\245\245\377\333\333\333\377\331\331" "\331\377\327\327\327\377\370\370\370\377Z\\X\377\202\377\377\377\0\3" "xzu\377\371\371\371\377\347\347\347\377\202\350\350\350\377\21stt\377" "cdd\377\342\342\342\377\346\346\346\377\345\345\345\377\343\343\343\377" "\342\342\342\377\341\341\341\377\340\340\340\377\323\324\324\377]^^\377" "tuu\377\331\331\331\377\330\330\330\377\326\326\326\377\370\370\370\377" "XZV\377\202\377\377\377\0\2sup\377\371\371\371\377\205\345\345\345\377" "\202\344\344\344\377\15\343\343\343\377\342\342\342\377\341\341\341\377" "\337\337\337\377\336\336\336\377\335\335\335\377\333\333\333\377\331" "\331\331\377\330\330\330\377\326\326\326\377\325\325\325\377\370\370" "\370\377WYU\377\202\377\377\377\0\2npl\377\371\371\371\377\205\343\343" "\343\377\202\342\342\342\377\15\341\341\341\377\340\340\340\377\337\337" "\337\377\335\335\335\377\334\334\334\377\333\333\333\377\331\331\331" "\377\330\330\330\377\326\326\326\377\325\325\325\377\323\323\323\377" "\370\370\370\377UWS\377\202\377\377\377\0\2ikg\377\366\366\366\377\222" "\370\370\370\377\2\364\364\364\377UWS\377\202\377\377\377\0\5loj\257" "fhc\377gid\377gje\377hje\377\203hjf\377\13hje\377gie\377fhd\377egc\377" "dfa\377bd`\377`b^\377^`\\\377\\^Z\377Z\\X\377XZV\377\202UWS\377\1]_\\" "\257\261\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_editor_underline) #endif #ifdef __GNUC__ const guint8 osmo_stock_editor_underline[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_editor_underline[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1734) */ "\0\0\6\336" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\26\263\265\257\257\254\257\250\377\250\253\245\377" "\244\247\241\377\240\243\235\377\234\237\231\377\230\233\225\377\224" "\227\221\377\220\222\214\377\213\216\210\377\207\211\204\377\203\205" "\200\377~\201{\377z|w\377vxs\377qto\377moj\377hkf\377dfb\377`b^\377[" "]Y\377`b]\257\202\377\377\377\0\2\263\266\257\377\372\372\372\377\204" "\375\375\375\377\204\374\374\374\377\203\373\373\373\377\203\372\372" "\372\377\203\371\371\371\377\3\370\370\370\377\365\365\365\377Y[W\377" "\202\377\377\377\0\3\267\272\263\377\376\376\376\377\356\356\356\377" "\205\357\357\357\377\4\356\356\356\377\355\355\355\377\354\354\354\377" "\353\353\353\377\202\351\351\351\377\10\347\347\347\377\346\346\346\377" "\344\344\344\377\342\342\342\377\340\340\340\377\336\336\336\377\371" "\371\371\377Z\\X\377\202\377\377\377\0\3\265\270\261\377\376\376\376" "\377\356\356\356\377\202\360\360\360\377\202\361\361\361\377\17\360\360" "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353" "\377\351\351\351\377\350\350\350\377\346\346\346\377\344\344\344\377" "\342\342\342\377\341\341\341\377\337\337\337\377\335\335\335\377\371" "\371\371\377\\^Z\377\202\377\377\377\0\6\261\264\255\377\376\376\376" "\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377" "\202\362\362\362\377\2\361\361\361\377\303\303\303\377\202mnn\377\12" "\276\276\276\377\350\350\350\377\347\347\347\377\345\345\345\377\343" "\343\343\377\341\341\341\377\337\337\337\377\335\335\335\377\371\371" "\371\377]_[\377\202\377\377\377\0\26\254\257\250\377\375\375\375\377" "\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377\364" "\364\364\377\363\363\363\377\362\362\362\377\205\206\206\377dee\377_" "``\377\203\203\203\377\351\351\351\377\347\347\347\377\345\345\345\377" "\343\343\343\377\341\341\341\377\337\337\337\377\335\335\335\377\371" "\371\371\377^`\\\377\202\377\377\377\0\26\247\252\244\377\375\375\375" "\377\363\363\363\377\365\365\365\377\366\366\366\377\367\367\367\377" "\366\366\366\377\365\365\365\377\340\341\341\377\\]]\377\231\232\232" "\377\213\214\214\377\\]]\377\327\330\330\377\347\347\347\377\345\345" "\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335\335\335" "\377\371\371\371\377_a]\377\202\377\377\377\0\26\243\245\237\377\375" "\375\375\377\364\364\364\377\366\366\366\377\370\370\370\377\371\371" "\371\377\367\367\367\377\365\365\365\377\244\245\245\377[\\\\\377\324" "\325\325\377\304\305\305\377[\\\\\377\240\240\240\377\347\347\347\377" "\345\345\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335" "\335\335\377\371\371\371\377_a]\377\202\377\377\377\0\4\236\241\232\377" "\374\374\374\377\364\364\364\377\366\366\366\377\202\370\370\370\377" "\10\366\366\366\377\362\362\362\377jkk\377z{{\377\357\357\357\377\354" "\354\354\377lmm\377jkk\377\202\345\345\345\377\6\343\343\343\377\341" "\341\341\377\337\337\337\377\335\335\335\377\371\371\371\377`b]\377\202" "\377\377\377\0\4\231\234\226\377\374\374\374\377\364\364\364\377\365" "\365\365\377\202\366\366\366\377\20\365\365\365\377\304\304\304\377[" "\\\\\377\265\265\265\377\356\356\356\377\354\354\354\377\242\243\243" "\377[\\\\\377\274\274\274\377\344\344\344\377\342\342\342\377\340\340" "\340\377\336\336\336\377\334\334\334\377\371\371\371\377_b]\377\202\377" "\377\377\0\4\224\227\221\377\374\374\374\377\362\362\362\377\363\363" "\363\377\202\364\364\364\377\20\363\363\363\377\205\206\206\377abb\377" "\350\350\350\377\355\355\355\377\353\353\353\377\327\330\330\377\\]]" "\377\204\205\205\377\344\344\344\377\342\342\342\377\340\340\340\377" "\336\336\336\377\334\334\334\377\371\371\371\377_a]\377\202\377\377\377" "\0\3\220\222\214\377\373\373\373\377\361\361\361\377\203\362\362\362" "\377\3\337\337\337\377\\]]\377qrr\377\202\244\244\244\377\13\243\243" "\243\377\242\242\242\377ggg\377]^^\377\323\323\323\377\341\341\341\377" "\337\337\337\377\335\335\335\377\333\333\333\377\370\370\370\377_a\\" "\377\202\377\377\377\0\3\213\215\210\377\373\373\373\377\357\357\357" "\377\203\360\360\360\377\4\243\243\243\377[\\\\\377lmm\377mnn\377\203" "lmm\377\11ijj\377[\\\\\377\236\237\237\377\340\340\340\377\336\336\336" "\377\334\334\334\377\332\332\332\377\370\370\370\377^`\\\377\202\377" "\377\377\0\3\206\210\203\377\373\373\373\377\355\355\355\377\202\356" "\356\356\377\21\353\353\353\377jkk\377rss\377\353\353\353\377\352\352" "\352\377\351\351\351\377\347\347\347\377\346\346\346\377\341\341\341" "\377fgg\377kll\377\336\336\336\377\335\335\335\377\333\333\333\377\331" "\331\331\377\370\370\370\377]_[\377\202\377\377\377\0\3\201\204~\377" "\372\372\372\377\353\353\353\377\202\354\354\354\377\21\277\277\277\377" "[\\\\\377\250\251\251\377\351\351\351\377\350\350\350\377\347\347\347" "\377\346\346\346\377\344\344\344\377\343\343\343\377\227\230\230\377" "[\\\\\377\270\271\271\377\334\334\334\377\332\332\332\377\330\330\330" "\377\370\370\370\377\\^Y\377\202\377\377\377\0\3|\177z\377\372\372\372" "\377\351\351\351\377\202\352\352\352\377\21\204\205\205\377]^^\377\332" "\332\332\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344" "\344\377\343\343\343\377\341\341\341\377\311\311\311\377[\\\\\377\203" "\203\203\377\333\333\333\377\331\331\331\377\327\327\327\377\370\370" "\370\377Z\\X\377\202\377\377\377\0\3xzu\377\371\371\371\377\347\347\347" "\377\202\350\350\350\377\2\306\306\306\377\311\311\311\377\202\346\346" "\346\377\15\345\345\345\377\343\343\343\377\342\342\342\377\341\341\341" "\377\340\340\340\377\336\336\336\377\277\277\277\377\274\275\275\377" "\331\331\331\377\330\330\330\377\326\326\326\377\370\370\370\377XZV\377" "\202\377\377\377\0\2sup\377\371\371\371\377\203\345\345\345\377\214c" "dd\377\5\330\330\330\377\326\326\326\377\325\325\325\377\370\370\370" "\377WYU\377\202\377\377\377\0\2npl\377\371\371\371\377\205\343\343\343" "\377\202\342\342\342\377\15\341\341\341\377\340\340\340\377\337\337\337" "\377\335\335\335\377\334\334\334\377\333\333\333\377\331\331\331\377" "\330\330\330\377\326\326\326\377\325\325\325\377\323\323\323\377\370" "\370\370\377UWS\377\202\377\377\377\0\2ikg\377\366\366\366\377\222\370" "\370\370\377\2\364\364\364\377UWS\377\202\377\377\377\0\5loj\257fhc\377" "gid\377gje\377hje\377\203hjf\377\13hje\377gie\377fhd\377egc\377dfa\377" "bd`\377`b^\377^`\\\377\\^Z\377Z\\X\377XZV\377\202UWS\377\1]_\\\257\261" "\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_notes_add) #endif #ifdef __GNUC__ const guint8 osmo_stock_notes_add[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_notes_add[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1645) */ "\0\0\6\205" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\3\243\243\243\240\237\237\237\377\240\240\240\377" "\202\241\241\241\377\16\240\240\240\377\237\237\237\377\235\235\235\377" "\234\234\234\377\233\233\233\377\231\231\231\377\230\230\230\377\227" "\227\227\377\226\226\226\377\224\224\224\377\223\223\223\377\222\222" "\222\377\220\220\220\377\223\223\223\240\205\377\377\377\0\2\236\236" "\236\377\373\373\373\377\203\376\376\376\377\203\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\3\371\371\371" "\377\367\367\367\377\217\217\217\377\205\377\377\377\0\4\236\236\236" "\377\376\376\376\377\356\356\356\377\357\357\357\377\202\360\360\360" "\377\15\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353\377" "\352\352\352\377\350\350\350\377\346\346\346\377\344\344\344\377\342" "\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377\217\217" "\217\377\205\377\377\377\0\4\235\235\235\377\376\376\376\377\360\360" "\360\377\361\361\361\377\202\362\362\362\377\15\361\361\361\377\360\360" "\360\377\356\356\356\377\355\355\355\377\353\353\353\377\351\351\351" "\377\347\347\347\377\344\344\344\377\342\342\342\377\340\340\340\377" "\336\336\336\377\371\371\371\377\217\217\217\377\205\377\377\377\0\4" "\235\235\235\377\376\376\376\377\361\361\361\377\363\363\363\377\202" "\364\364\364\377\15\363\363\363\377\361\361\361\377\357\357\357\377\355" "\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\345\345" "\345\377\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371" "\377\217\217\217\377\205\377\377\377\0\23\234\234\234\377\375\375\375" "\377\363\363\363\377\365\365\365\377\366\366\366\377\365\365\365\377" "\361\361\361\377\267\267\270\377\233\233\233\377\223\223\223\377\233" "\233\233\377\271\271\271\377\346\346\346\377\345\345\345\377\343\343" "\343\377\340\340\340\377\336\336\336\377\371\371\371\377\216\216\216" "\377\205\377\377\377\0\7\233\233\233\377\375\375\375\377\364\364\364" "\377\366\366\366\377\370\370\370\377\367\367\367\377\265\265\266\377" "\202\206\206\207\377\12\220\220\221\377\205\205\206\377\204\204\205\377" "\266\266\266\377\345\345\345\377\343\343\343\377\340\340\340\377\336" "\336\336\377\371\371\371\377\216\216\216\377\205\377\377\377\0\6\231" "\231\231\377\375\375\375\377\365\365\365\377\367\367\367\377\371\371" "\371\377\366\366\366\377\202\224\224\225\377\13\323\323\323\377\354\354" "\354\377\315\315\315\377\217\217\220\377\225\225\225\377\345\345\345" "\377\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371\377" "\215\215\215\377\205\377\377\377\0\23\230\230\230\377\374\374\374\377" "\364\364\364\377\366\366\366\377\367\367\367\377\346\346\346\377\211" "\211\212\377\260\260\260\377\360\360\360\377\356\356\356\377\353\353" "\353\377\252\252\252\377\212\212\213\377\340\340\340\377\342\342\342" "\377\340\340\340\377\335\335\335\377\371\371\371\377\215\215\215\377" "\205\377\377\377\0\3\227\227\227\377\374\374\374\377\363\363\363\377" "\202\365\365\365\377\12\330\330\330\377\206\206\207\377\264\264\264\377" "\341\341\341\377\337\337\337\377\335\335\335\377\255\255\255\377\206" "\206\206\377\326\327\326\377U\205+\377\2035o\4\377\2Ev\34\3775o\4\1\204" "\377\377\377\0\6\226\226\226\377\374\374\374\377\362\362\362\377\363" "\363\363\377\362\362\362\377\230\230\232\377\203\205\205\206\377\202" "\204\204\205\377\202\203\203\204\377\7\225\227\223\377=u\16\377\265\322" "\226\377\273\325\235\377\264\321\224\377@w\22\3775o\4\10\204\377\377" "\377\0\6\225\225\225\377\373\373\373\377\360\360\360\377\361\361\361" "\377\355\355\355\377\217\217\217\377\202\205\205\206\377\202\204\204" "\205\377\203\203\203\204\377\7\213\215\213\377By\24\377\266\322\226\377" "\222\274c\377\266\322\226\377G|\32\3775o\4\10\204\377\377\377\0\6\223" "\223\223\377\373\373\373\377\356\356\356\377\357\357\357\377\353\353" "\353\377\216\216\216\377\204\204\204\205\377\12\203\203\203\377\201\202" "\200\377\200\201\177\377\211\214\207\377By\24\377\266\322\226\377\222" "\274c\377\266\322\226\377G|\32\3775o\4\17\2025o\4\10\10""5o\4\1\377\377" "\377\0\222\222\222\377\373\373\373\377\354\354\354\377\355\355\355\377" "\351\351\351\377\216\216\216\377\203\204\204\205\377\12\203\203\204\377" "As\26\377=u\16\377Ay\25\377By\25\377X\212,\377\264\321\224\377\222\274" "c\377\264\321\224\377^\2154\377\202F|\31\374\12\77w\20\3746q\4\333\377" "\377\377\0\221\221\221\377\372\372\372\377\352\352\352\377\353\353\353" "\377\347\347\347\377\215\215\215\377\204\204\205\377\203\203\203\204" "\377\2""5o\4\377\265\322\225\377\202\266\322\226\377\5\264\321\224\377" "\240\305x\377\222\274c\377\240\305x\377\262\320\222\377\202\255\315\212" "\377\11\264\321\224\3775o\4\377\377\377\377\0\220\220\220\377\372\372" "\372\377\350\350\350\377\351\351\351\377\347\347\347\377\234\234\235" "\377\203\216\216\217\377\11\215\215\216\3775o\4\377\250\311\202\377x" "\255>\377|\257D\377v\253<\377l\245-\377b\237\37\377X\231\21\377\203Q" "\225\7\377\7\222\274d\3775o\4\377\377\377\377\0\216\216\216\377\371\371" "\371\377\346\346\346\377\347\347\347\377\202\346\346\346\377\6\345\345" "\345\377\344\344\344\377\343\343\343\377\342\342\342\3775o\4\377\216" "\272^\377\202\212\270X\377\5\210\266U\377h\243(\377Q\225\7\377h\243(" "\377\210\266U\377\202\212\270X\377\5\216\272^\3775o\4\377\377\377\377" "\0\215\215\215\377\371\371\371\377\204\344\344\344\377\6\343\343\343" "\377\342\342\342\377\341\341\341\377\340\340\340\377N\200#\377=u\16\377" "\202Ax\23\377\5U\210(\377\210\266U\377Q\225\7\377\210\266U\377R\205%" "\377\202\77w\20\374\5;t\13\3746q\4\333\377\377\377\0\214\214\214\377" "\371\371\371\377\204\342\342\342\377\16\341\341\341\377\340\340\340\377" "\337\337\337\377\336\336\336\377\334\335\334\377\327\331\325\377\325" "\327\323\377\316\322\314\377@x\23\377\212\270X\377Q\225\7\377\212\270" "X\377@w\22\3775o\4\17\2025o\4\10\4""5o\4\1\377\377\377\0\212\212\212" "\377\366\366\366\377\213\370\370\370\377\7\362\364\360\377Ax\23\377\212" "\270X\377Q\225\7\377\212\270X\377@w\22\3775o\4\10\204\377\377\377\0\1" "\216\216\216\243\214\212\212\212\377\7\207\211\206\377\377" "\314\233=\377\227$\24\375.\21\14\204\0\0\0\20\0\0\0\1\377\377\377\0\223" "\223\223\377\373\373\373\377\356\356\356\377\357\357\357\377\353\353" "\353\377\216\216\216\377\203\204\204\205\377\15\203\203\204\377\202\202" "\203\377yum\377\216vC\377\344\267c\377\374\313p\377\373\273E\377\346" "\256>\377\315\237\77\377\202m=\377\27\22\13q\0\0\0\17\0\0\0\1\202\377" "\377\377\0\25\222\222\222\377\373\373\373\377\354\354\354\377\355\355" "\355\377\351\351\351\377\215\215\215\377\204\204\205\377\204\204\204" "\377\203\203\204\377\202\202\203\377yuo\377\215vC\377\342\266b\377\374" "\313n\377\372\272C\377\344\256\77\377\310\233\77\377\177k>\377ZYV\377" "\0\0\0\16\0\0\0\1\203\377\377\377\0\6\221\221\221\377\372\372\372\377" "\352\352\352\377\353\353\353\377\350\350\350\377\215\215\215\377\202" "\203\203\204\377\14\202\202\203\377yvp\377\215vC\377\341\266a\377\374" "\312l\377\371\271B\377\343\255>\377\303\230\77\377|h=\377\236\235\233" "\377\203\203\203\377\0\0\0\1\204\377\377\377\0\23\220\220\220\377\372" "\372\372\377\350\350\350\377\351\351\351\377\347\347\347\377\234\234" "\234\377\216\216\217\377\214\214\215\377\202\177x\377\215wD\377\337\264" "b\377\374\311i\377\371\271@\377\342\254>\377\275\225@\377yf<\377\216" "\215\213\377\354\354\354\377\211\211\211\377\205\377\377\377\0\4\216" "\216\216\377\371\371\371\377\346\346\346\377\347\347\347\377\202\346" "\346\346\377\15\345\345\345\377\322\321\316\377\220yH\377\335\262a\377" "\375\310g\377\370\267@\377\341\254>\377\270\221@\377wd<\377\224\224\223" "\377\315\315\315\377\367\367\367\377\212\212\212\377\205\377\377\377" "\0\2\215\215\215\377\371\371\371\377\204\344\344\344\377\15\340\340\340" "\377\247\236\212\377\265\224Q\377\375\311i\377\367\267\77\377\341\254" ">\377\263\216@\377sa:\377\230\230\227\377\316\316\316\377\325\325\325" "\377\370\370\370\377\212\212\212\377\205\377\377\377\0\2\214\214\214" "\377\371\371\371\377\204\342\342\342\377\15\327\327\327\377\217zL\377" "\345\265]\377\365\267A\377\341\254>\377\255\212@\377p_:\377\234\233\233" "\377\317\317\317\377\325\325\325\377\323\323\323\377\370\370\370\377" "\212\212\212\377\205\377\377\377\0\2\212\212\212\377\366\366\366\377" "\204\370\370\370\377\10\305\303\274\377shQ\377\351\262D\377\315\236\77" "\377\230}C\377n^;\377\270\267\267\377\357\357\357\377\203\370\370\370" "\377\2\364\364\364\377\212\212\212\377\205\377\377\377\0\1\216\216\216" "\243\204\212\212\212\377\10\207\207\207\377lg[\3776;<\377bX<\377cT3\377" "QMD\377qqq\377\207\207\207\377\205\212\212\212\377\1\215\215\215\243" "\212\377\377\377\0\7\24\24\24\15KH=\360;6*\335\20\20\13`\0\0\0\32\0\0" "\0\13\0\0\0\3\221\377\377\377\0\5\0\0\0\2\0\0\0\30\0\0\0\20\0\0\0\7\0" "\0\0\1\215\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_notes_remove) #endif #ifdef __GNUC__ const guint8 osmo_stock_notes_remove[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_notes_remove[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1444) */ "\0\0\5\274" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\3\243\243\243\240\237\237\237\377\240\240\240\377" "\202\241\241\241\377\16\240\240\240\377\237\237\237\377\235\235\235\377" "\234\234\234\377\233\233\233\377\231\231\231\377\230\230\230\377\227" "\227\227\377\226\226\226\377\224\224\224\377\223\223\223\377\222\222" "\222\377\220\220\220\377\223\223\223\240\205\377\377\377\0\2\236\236" "\236\377\373\373\373\377\203\376\376\376\377\203\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\3\371\371\371" "\377\367\367\367\377\217\217\217\377\205\377\377\377\0\4\236\236\236" "\377\376\376\376\377\356\356\356\377\357\357\357\377\202\360\360\360" "\377\15\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353\377" "\352\352\352\377\350\350\350\377\346\346\346\377\344\344\344\377\342" "\342\342\377\340\340\340\377\335\335\335\377\371\371\371\377\217\217" "\217\377\205\377\377\377\0\4\235\235\235\377\376\376\376\377\360\360" "\360\377\361\361\361\377\202\362\362\362\377\15\361\361\361\377\360\360" "\360\377\356\356\356\377\355\355\355\377\353\353\353\377\351\351\351" "\377\347\347\347\377\344\344\344\377\342\342\342\377\340\340\340\377" "\336\336\336\377\371\371\371\377\217\217\217\377\205\377\377\377\0\4" "\235\235\235\377\376\376\376\377\361\361\361\377\363\363\363\377\202" "\364\364\364\377\15\363\363\363\377\361\361\361\377\357\357\357\377\355" "\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\345\345" "\345\377\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371" "\377\217\217\217\377\205\377\377\377\0\23\234\234\234\377\375\375\375" "\377\363\363\363\377\365\365\365\377\366\366\366\377\365\365\365\377" "\361\361\361\377\267\267\270\377\233\233\233\377\223\223\223\377\233" "\233\233\377\271\271\271\377\346\346\346\377\345\345\345\377\343\343" "\343\377\340\340\340\377\336\336\336\377\371\371\371\377\216\216\216" "\377\205\377\377\377\0\7\233\233\233\377\375\375\375\377\364\364\364" "\377\366\366\366\377\370\370\370\377\367\367\367\377\265\265\266\377" "\202\206\206\207\377\12\220\220\221\377\205\205\206\377\204\204\205\377" "\266\266\266\377\345\345\345\377\343\343\343\377\340\340\340\377\336" "\336\336\377\371\371\371\377\216\216\216\377\205\377\377\377\0\6\231" "\231\231\377\375\375\375\377\365\365\365\377\367\367\367\377\371\371" "\371\377\366\366\366\377\202\224\224\225\377\13\323\323\323\377\354\354" "\354\377\315\315\315\377\217\217\220\377\225\225\225\377\345\345\345" "\377\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371\377" "\215\215\215\377\205\377\377\377\0\23\230\230\230\377\374\374\374\377" "\364\364\364\377\366\366\366\377\367\367\367\377\346\346\346\377\211" "\211\212\377\260\260\260\377\360\360\360\377\356\356\356\377\353\353" "\353\377\252\252\252\377\212\212\213\377\340\340\340\377\342\342\342" "\377\340\340\340\377\335\335\335\377\371\371\371\377\215\215\215\377" "\205\377\377\377\0\3\227\227\227\377\374\374\374\377\363\363\363\377" "\202\365\365\365\377\16\330\330\330\377\206\206\207\377\264\264\264\377" "\341\341\341\377\337\337\337\377\335\335\335\377\255\255\255\377\206" "\206\206\377\327\327\327\377\342\342\342\377\337\337\337\377\335\335" "\335\377\371\371\371\377\214\214\214\377\205\377\377\377\0\6\226\226" "\226\377\374\374\374\377\362\362\362\377\363\363\363\377\362\362\362" "\377\230\230\232\377\203\205\205\206\377\202\204\204\205\377\202\203" "\203\204\377\6\230\230\230\377\341\341\341\377\337\337\337\377\334\334" "\334\377\371\371\371\377\214\214\214\377\205\377\377\377\0\6\225\225" "\225\377\373\373\373\377\360\360\360\377\361\361\361\377\355\355\355" "\377\217\217\217\377\202\205\205\206\377\202\204\204\205\377\203\203" "\203\204\377\6\216\216\217\377\340\340\340\377\336\336\336\377\334\334" "\334\377\370\370\370\377\213\213\213\377\205\377\377\377\0\6\223\223" "\223\377\373\373\373\377\356\356\356\377\357\357\357\377\353\353\353" "\377\216\216\216\377\204\204\204\205\377\202\203\203\204\377\7\202\202" "\203\377\216\216\217\377\337\337\337\377\335\335\335\377\333\333\333" "\377\370\370\370\377\212\212\212\377\205\377\377\377\0\6\222\222\222" "\377\373\373\373\377\354\354\354\377\355\355\355\377\351\351\351\377" "\216\216\216\377\203\204\204\205\377\2\203\203\204\377\216\27\27\377" "\213\216\0\0\377\11\220\0\0\323\377\377\377\0\221\221\221\377\372\372" "\372\377\352\352\352\377\353\353\353\377\347\347\347\377\215\215\215" "\377\204\204\205\377\203\203\203\204\377\2\216\0\0\377\337\212\212\377" "\203\342\227\227\377\2\343\227\227\377\343\231\231\377\202\343\232\232" "\377\13\341\222\222\377\341\221\221\377\340\214\214\377\216\0\0\377\377" "\377\377\0\220\220\220\377\372\372\372\377\350\350\350\377\351\351\351" "\377\347\347\347\377\234\234\235\377\203\216\216\217\377\12\215\215\216" "\377\216\0\0\377\334~~\377\31088\377\311<<\377\30744\377\304''\377\300" "\32\32\377\275\15\15\377\271\1\1\377\202\271\0\0\377\7\323``\377\216" "\0\0\377\377\377\377\0\216\216\216\377\371\371\371\377\346\346\346\377" "\347\347\347\377\202\346\346\346\377\6\345\345\345\377\344\344\344\377" "\343\343\343\377\342\342\342\377\216\0\0\377\320SS\377\211\323__\377" "\5\320SS\377\216\0\0\377\377\377\377\0\215\215\215\377\371\371\371\377" "\204\344\344\344\377\5\343\343\343\377\342\342\342\377\341\341\341\377" "\340\340\340\377\236&&\377\213\216\0\0\377\4\220\0\0\323\377\377\377" "\0\214\214\214\377\371\371\371\377\204\342\342\342\377\15\341\341\341" "\377\340\340\340\377\337\337\337\377\336\336\336\377\335\335\335\377" "\334\334\334\377\332\332\332\377\330\330\330\377\327\327\327\377\325" "\325\325\377\323\323\323\377\370\370\370\377\212\212\212\377\205\377" "\377\377\0\2\212\212\212\377\366\366\366\377\217\370\370\370\377\2\365" "\365\365\377\212\212\212\377\205\377\377\377\0\1\216\216\216\243\221" "\212\212\212\377\1\215\215\215\243\264\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_notes) #endif #ifdef __GNUC__ const guint8 osmo_stock_notes[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_notes[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1512) */ "\0\0\6\0" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\232\377\377\377\0\2\214\215\211\252\207\211\204\377\203\207\212\204" "\377\15\207\211\204\377\206\210\203\377\204\207\201\377\203\205\200\377" "\201\203~\377\177\201|\377|\177z\377z|w\377wyt\377tvq\377qsn\377npk\377" "qtp\253\206\377\377\377\0\2\202\205\177\377\373\373\373\377\203\376\376" "\376\377\203\375\375\375\377\203\374\374\374\377\202\373\373\373\377" "\203\372\372\372\377\2\366\366\366\377kmh\377\206\377\377\377\0\4\177" "\201|\377\376\376\376\377\356\356\356\377\357\357\357\377\202\360\360" "\360\377\14\357\357\357\377\356\356\356\377\354\354\354\377\353\353\353" "\377\351\351\351\377\347\347\347\377\344\344\344\377\342\342\342\377" "\340\340\340\377\336\336\336\377\371\371\371\377jmh\377\206\377\377\377" "\0\4{~x\377\376\376\376\377\360\360\360\377\361\361\361\377\202\362\362" "\362\377\14\361\361\361\377\357\357\357\377\356\356\356\377\354\354\354" "\377\352\352\352\377\347\347\347\377\345\345\345\377\343\343\343\377" "\341\341\341\377\336\336\336\377\371\371\371\377jlh\377\206\377\377\377" "\0\3xzu\377\376\376\376\377\362\362\362\377\214uut\377\3\336\336\336" "\377\371\371\371\377ilg\377\206\377\377\377\0\22tvq\377\375\375\375\377" "\363\363\363\377\365\365\365\377\366\366\366\377\365\365\365\377\364" "\364\364\377\361\361\361\377\357\357\357\377\355\355\355\377\353\353" "\353\377\350\350\350\377\346\346\346\377\343\343\343\377\341\341\341" "\377\337\337\337\377\371\371\371\377ikf\377\206\377\377\377\0\22psn\377" "\375\375\375\377\364\364\364\377\367\367\367\377\370\370\370\377\367" "\367\367\377\364\364\364\377\362\362\362\377\360\360\360\377\355\355" "\355\377\353\353\353\377\350\350\350\377\346\346\346\377\343\343\343" "\377\341\341\341\377\336\336\336\377\371\371\371\377hje\377\206\377\377" "\377\0\4moj\377\375\375\375\377\365\365\365\377\367\367\367\377\212u" "ut\377\4\341\341\341\377\336\336\336\377\371\371\371\377fid\377\206\377" "\377\377\0\22ikf\377\374\374\374\377\365\365\365\377\366\366\366\377" "\367\367\367\377\366\366\366\377\364\364\364\377\361\361\361\377\357" "\357\357\377\354\354\354\377\352\352\352\377\350\350\350\377\345\345" "\345\377\343\343\343\377\340\340\340\377\336\336\336\377\371\371\371" "\377egc\377\206\377\377\377\0\3egc\377\374\374\374\377\363\363\363\377" "\202\365\365\365\377\15\364\364\364\377\362\362\362\377\360\360\360\377" "\356\356\356\377\354\354\354\377\351\351\351\377\347\347\347\377\345" "\345\345\377\342\342\342\377\340\340\340\377\334\334\334\377\370\370" "\370\377dfb\377\206\377\377\377\0\3ac_\377\374\374\374\377\362\362\362" "\377\202\363\363\363\377\210uut\377\6\261\261\261\377ccb\377NNM\377Q" "QP\377UUT\377JJGH\205\377\377\377\0\3^`[\377\373\373\373\377\360\360" "\360\377\202\361\361\361\377\17\360\360\360\377\357\357\357\377\355\355" "\355\377\353\353\353\377\351\351\351\377\347\347\347\377\345\345\345" "\377\262\262\262\377]][\377\305\307\303\377\303\305\303\377\273\274\271" "\377\256\257\255\377TTS\365JJFL\204\377\377\377\0\3Z\\X\377\373\373\373" "\377\356\356\356\377\202\357\357\357\377\17\356\356\356\377\355\355\355" "\377\354\354\354\377\352\352\352\377\350\350\350\377\346\346\346\377" "\344\344\344\377``_\377\302\303\301\377ccb\377hhg\377ppo\377SSQ\377\232" "\235\226\377OON\342\204\377\377\377\0\4VXT\377\373\373\373\377\354\354" "\354\377\355\355\355\377\207uut\377\12ssr\377MML\377\261\261\260\377" "\220\220\220\377\332\332\332\377\370\370\370\377UVR\377xzu\367KKJ\372" "III\7\203\377\377\377\0\4UWS\377\372\372\372\377\352\352\352\377\353" "\353\353\377\202\352\352\352\377\17\351\351\351\377\350\350\350\377\346" "\346\346\377\345\345\345\377\343\343\343\377\317\317\317\377[[[\377\265" "\265\264\377\262\262\262\377\331\331\331\377\370\370\370\377VXT\377x" "yv\361nom\365JJJ\37\203\377\377\377\0\4UWS\377\372\372\372\377\350\350" "\350\377\351\351\351\377\202\350\350\350\377\7\347\347\347\377\346\346" "\346\377\345\345\345\377\343\343\343\377\341\341\341\377\271\225L\377" "\250o\3\377\202\251p\4\377\6\252q\5\377\251q\5\377\247n\2\377\250n\2" "\377\251o\2\377\246n\7\262\203\377\377\377\0\5UWS\377\371\371\371\377" "\346\346\346\377\347\347\347\377\230\230\227\377\206uut\377\12\250o\3" "\377\377\371\311\377\377\374\330\377\376\371\325\377\374\362\312\377" "\372\351\275\377\367\336\257\377\365\326\243\377\362\320\225\377\251" "n\1\374\203\377\377\377\0\2UWS\377\371\371\371\377\204\344\344\344\377" "\17\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\336" "\336\336\377\252q\5\377\377\373\320\377\377\371\276\377\376\365\271\377" "\373\352\251\377\366\333\225\377\362\312\177\377\356\275k\377\364\321" "\231\377\250n\1\374\203\377\377\377\0\2UWS\377\371\371\371\377\204\342" "\342\342\377\17\341\341\341\377\340\340\340\377\337\337\337\377\336\336" "\336\377\334\334\334\377\252q\5\377\377\372\314\377\377\366\237\377\375" "\355\201\377\370\337y\377\365\327\210\377\362\311{\377\356\274h\377\364" "\321\227\377\250n\1\374\203\377\377\377\0\2UWS\377\366\366\366\377\211" "\370\370\370\377\12\252q\5\377\377\365\223\377\377\357N\377\374\345H" "\377\365\3179\377\356\271-\377\354\261@\377\353\260N\377\362\311\206" "\377\250n\1\374\203\377\377\377\0\1]_\\\252\212UWS\377\12\250o\3\377" "\376\363\221\377\377\365\220\377\375\357\214\377\371\341\203\377\365" "\322z\377\361\305q\377\357\276m\377\356\277p\377\251n\1\374\216\377\377" "\377\0\1\256w\10\247\204\251o\2\374\1\250o\2\374\202\250n\1\374\2\251" "n\1\374\255q\3\247\231\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_systray_menu_notes) #endif #ifdef __GNUC__ const guint8 osmo_stock_systray_menu_notes[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_systray_menu_notes[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (882) */ "\0\0\3\212" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (64) */ "\0\0\0@" /* width (16) */ "\0\0\0\20" /* height (16) */ "\0\0\0\20" /* pixel_data: */ "\2\242\242\242\\\210\212\205\342\211\210\212\205\377\3\210\212\205\342" "\223\223\223d\215\215\215\3\202\0\0\0\0\2\210\212\205\342\373\373\373" "\373\202\376\376\376\377\202\375\375\375\377\202\374\374\374\377\1\373" "\373\373\377\202\372\372\372\377\3\367\367\367\375\210\212\205\342\216" "\216\216\34\202\0\0\0\0\3\210\212\205\377\375\375\375\377\360\360\360" "\377\202\361\361\361\377\11\357\357\357\377\355\355\355\377\352\352\352" "\377\347\347\347\377\344\344\344\377\341\341\341\377\371\371\371\377" "\210\212\205\377\215\215\215\40\202\0\0\0\0\16\210\212\205\377\375\375" "\375\377\363\363\363\377\364\364\364\377\363\363\363\377\361\361\361" "\377\356\356\356\377\353\353\353\377\350\350\350\377\345\345\345\377" "\341\341\341\377\371\371\371\377\210\212\205\377\215\215\215\40\202\0" "\0\0\0\16\210\212\205\377\375\375\375\377\365\365\365\377\367\367\367" "\377\322\322\322\377\251\251\252\377\226\226\227\377\247\247\250\377" "\312\312\312\377\345\345\345\377\341\341\341\377\371\371\371\377\210" "\212\205\377\215\215\215\40\202\0\0\0\0\16\210\212\205\377\375\375\375" "\377\366\366\366\377\370\370\370\377\235\235\235\377\237\237\240\377" "\262\262\263\377\233\233\234\377\227\227\227\377\345\345\345\377\341" "\341\341\377\371\371\371\377\210\212\205\377\214\214\214\40\202\0\0\0" "\0%\210\212\205\377\374\374\374\377\365\365\365\377\324\324\324\377\214" "\214\214\377\345\345\345\377\356\356\356\377\342\342\342\377\212\212" "\213\377\312\312\312\377\341\341\341\377\371\371\371\377\210\212\205" "\377\222fT>\217xE\4\0\0\0\0\210\212\205\377\374\374\374\377\363\363\363" "\377\260\260\260\377\217\217\217\377\264\264\265\377\263\263\264\377" "\261\261\262\377\215\215\215\377\247\247\250\377\340\340\340\377\371" "\371\371\377\224\200{\365\260-*\375\256*&\374\232/\33W\210\212\205\377" "\373\373\373\377\360\360\360\377\221\221\221\377\205\205\206\377\202" "\204\204\205\377\202\203\203\204\377\13\215\215\215\377\336\336\336\377" "\354\352\344\377\236S5\376\321yv\377\312CD\377\241\27\16\367\210\212" "\205\377\373\373\373\377\355\355\355\377\220\220\221\377\202\204\204" "\205\377\202\203\203\204\377\15\202\202\203\377\214\214\215\377\325\323" "\316\377\241\212Z\377\340\267j\377\323r9\377\244\10\7\377\236#\24\337" "\210\212\205\377\372\372\372\377\352\352\352\377\217\217\220\377\204" "\204\205\377\203\203\203\204\377\14\202\202\203\377\214\212\206\377\237" "\210W\377\337\267i\377\360\266F\377\303\231A\372\233\77#\306\225P.\3" "\210\212\205\377\372\372\372\377\350\350\350\377\227\227\230\377\202" "\216\216\217\377\15\215\215\216\377\214\214\215\377\214\212\207\377\227" "\200P\377\335\264g\377\357\263E\377\276\226C\376\223|J\244\217xE\1\0" "\0\0\0\210\212\205\377\371\371\371\377\345\345\345\377\202\344\344\344" "\377\11\342\342\342\377\341\341\341\377\332\330\325\377\240\212Z\377" "\332\263e\377\353\262C\377\273\226G\377\222\204f\372\212\212\212\40\202" "\0\0\0\0\4\210\212\205\342\366\366\366\375\370\370\370\377\371\371\371" "\377\203\370\370\370\377\7\310\275\244\377\311\246a\377\353\261B\377" "\270\223G\377\303\266\233\376\210\212\205\354\212\212\212\34\202\0\0" "\0\0\2\217\217\217[\210\212\205\342\205\210\212\205\377\7wkM\377\274" "\225G\377\247\211E\377\216\202j\377\210\212\205\354\215\215\215u\212" "\212\212\3\210\0\0\0\0\4\204pC=TQC\373xgA\257\217xE,\206\0\0\0\0"}; #endif /* NOTES_ENABLED */ /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_fullyear) #endif #ifdef __GNUC__ const guint8 osmo_stock_fullyear[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_fullyear[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1856) */ "\0\0\7X" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\4\377\377\377\0\227\227\227\227\227\227\227\377\233\233\233\377\202" "\236\236\236\377\21\234\234\234\377\231\231\231\377\225\225\225\377\221" "\221\221\377\215\215\215\377\211\211\211\377\205\205\205\377\201\201" "\201\377~~~\377zzz\377vvv\377rrr\377nnn\377jjj\377fff\377bbb\377eee\227" "\202\377\377\377\0\2\224\224\224\377\371\371\371\377\204\376\376\376" "\377\204\375\375\375\377\203\374\374\374\377\203\373\373\373\377\203" "\372\372\372\377\3\371\371\371\377\367\367\367\377^^^\377\202\377\377" "\377\0\2\223\223\223\377\376\376\376\377\202\336\336\336\377\14\337\337" "\337\377\340\340\340\377sss\377}}}\377\233\233\233\377fff\377\252\252" "\252\377\325\325\325\377222\377\344\344\344\377\237\237\237\377hhh\377" "\204\344\344\344\377\2\371\371\371\377^^^\377\202\377\377\377\0\2\222" "\222\222\377\376\376\376\377\202\337\337\337\377\14\340\340\340\377\341" "\341\341\377\252\252\252\377xxx\377\217\217\217\377sss\377aaa\377```" "\377CCC\377\275\275\275\377eee\377WWW\377\204\345\345\345\377\2\371\371" "\371\377^^^\377\202\377\377\377\0\2\217\217\217\377\376\376\376\377\202" "\340\340\340\377\14\341\341\341\377\342\342\342\377\300\300\300\377x" "xx\377\256\256\256\377hhh\377\236\236\236\377\210\210\210\377333\377" "\243\243\243\377\203\203\203\377:::\377\202\347\347\347\377\202\346\346" "\346\377\2\371\371\371\377]]]\377\202\377\377\377\0\2\214\214\214\377" "\375\375\375\377\202\341\341\341\377\3\342\342\342\377\343\343\343\377" "\344\344\344\377\202\345\345\345\377\2\344\344\344\377\346\346\346\377" "\202\347\347\347\377\207\350\350\350\377\2\371\371\371\377\\\\\\\377" "\202\377\377\377\0\7\211\211\211\377\375\375\375\377\341\341\341\377" "\342\342\342\377\236\236\236\377zzz\377iii\377\202\346\346\346\377\4" "\347\347\347\377\215\215\215\377vvv\377VVV\377\202\351\351\351\377\3" "MMM\377\203\203\203\377uuu\377\202\351\351\351\377\2\371\371\371\377" "[[[\377\202\377\377\377\0\14\206\206\206\377\375\375\375\377\342\342" "\342\377\301\301\301\377\276\276\276\377\301\301\301\377\302\302\302" "\377\303\303\303\377\347\347\347\377\305\305\305\377\303\303\303\377" "\304\304\304\377\202\305\305\305\377\3\352\352\352\377\307\307\307\377" "\304\304\304\377\203\305\305\305\377\2\371\371\371\377ZZZ\377\202\377" "\377\377\0\14\202\202\202\377\375\375\375\377\343\343\343\377\302\302" "\302\377\277\277\277\377\312\312\312\377\324\324\324\377\325\325\325" "\377\350\350\350\377\306\306\306\377\303\303\303\377\316\316\316\377" "\202\330\330\330\377\10\354\354\354\377\325\325\325\377\323\323\323\377" "\326\326\326\377\331\331\331\377\330\330\330\377\371\371\371\377XXX\377" "\202\377\377\377\0\7~~~\377\374\374\374\377\344\344\344\377\345\345\345" "\377\346\346\346\377\347\347\347\377\350\350\350\377\202\351\351\351" "\377\2\352\352\352\377\353\353\353\377\202\354\354\354\377\202\355\355" "\355\377\3\340\340\340\377\337\337\337\377\346\346\346\377\202\355\355" "\355\377\2\371\371\371\377VVV\377\202\377\377\377\0\7zzz\377\374\374" "\374\377\345\345\345\377\346\346\346\377\226\226\226\377\214\214\214" "\377\204\204\204\377\202\352\352\352\377\4\353\353\353\377www\377\234" "\234\234\377\232\232\232\377\202\356\356\356\377\3\247\247\247\377\202" "\202\202\377mmm\377\202\356\356\356\377\2\371\371\371\377TTT\377\202" "\377\377\377\0\21vvv\377\374\374\374\377\345\345\345\377\302\302\302" "\377\252\252\252\377\271\271\271\377\256\256\256\377\305\305\305\377" "\353\353\353\377\311\311\311\377\252\252\252\377\260\260\260\377\255" "\255\255\377\312\312\312\377\357\357\357\377\314\314\314\377\310\310" "\310\377\203\312\312\312\377\2\371\371\371\377RRR\377\202\377\377\377" "\0\14rrr\377\373\373\373\377\346\346\346\377\305\305\305\377\302\302" "\302\377\315\315\315\377\327\327\327\377\330\330\330\377\354\354\354" "\377\326\326\326\377\325\325\325\377\331\331\331\377\202\334\334\334" "\377\10\361\361\361\377\315\315\315\377\311\311\311\377\324\324\324\377" "\335\335\335\377\334\334\334\377\370\370\370\377PPP\377\202\377\377\377" "\0\11nnn\377\373\373\373\377\346\346\346\377\347\347\347\377\351\351" "\351\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355" "\377\202\341\341\341\377\1\351\351\351\377\202\361\361\361\377\205\362" "\362\362\377\3\361\361\361\377\370\370\370\377NNN\377\202\377\377\377" "\0\22jjj\377\373\373\373\377\347\347\347\377\350\350\350\377\237\237" "\237\377yyy\377\236\236\236\377\355\355\355\377\356\356\356\377\357\357" "\357\377\234\234\234\377\243\243\243\377\245\245\245\377\346\346\346" "\377\363\363\363\377\203\203\203\377|||\377\212\212\212\377\202\363\363" "\363\377\2\370\370\370\377LLL\377\202\377\377\377\0\22fff\377\372\372" "\372\377\347\347\347\377\305\305\305\377\303\303\303\377\305\305\305" "\377\307\307\307\377\310\310\310\377\356\356\356\377\313\313\313\377" "\260\260\260\377\256\256\256\377\261\261\261\377\311\311\311\377\364" "\364\364\377\320\320\320\377\315\315\315\377\317\317\317\377\202\316" "\316\316\377\2\370\370\370\377LLL\377\202\377\377\377\0\22bbb\377\372" "\372\372\377\347\347\347\377\306\306\306\377\303\303\303\377\316\316" "\316\377\331\331\331\377\332\332\332\377\357\357\357\377\330\330\330" "\377\327\327\327\377\333\333\333\377\337\337\337\377\340\340\340\377" "\365\365\365\377\321\321\321\377\315\315\315\377\330\330\330\377\202" "\341\341\341\377\2\370\370\370\377LLL\377\202\377\377\377\0\11^^^\377" "\372\372\372\377\350\350\350\377\351\351\351\377\352\352\352\377\353" "\353\353\377\355\355\355\377\356\356\356\377\357\357\357\377\202\343" "\343\343\377\13\354\354\354\377\364\364\364\377\365\365\365\377\366\366" "\366\377\367\367\367\377\370\370\370\377\367\367\367\377\366\366\366" "\377\365\365\365\377\370\370\370\377LLL\377\202\377\377\377\0\26ZZZ\377" "\371\371\371\377\350\350\350\377\351\351\351\377}}}\377\232\232\232\377" "\244\244\244\377\356\356\356\377\357\357\357\377\356\356\356\377vvv\377" "\203\203\203\377\226\226\226\377\365\365\365\377\364\364\364\377|||\377" "\207\207\207\377\236\236\236\377\367\367\367\377\366\366\366\377\370" "\370\370\377LLL\377\202\377\377\377\0\26VVV\377\371\371\371\377\350\350" "\350\377\306\306\306\377\303\303\303\377\306\306\306\377\310\310\310" "\377\311\311\311\377\357\357\357\377\315\315\315\377\312\312\312\377" "\315\315\315\377\316\316\316\377\317\317\317\377\367\367\367\377\323" "\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377\326\326" "\326\377\370\370\370\377LLL\377\202\377\377\377\0\26RRR\377\371\371\371" "\377\350\350\350\377\322\322\322\377\321\321\321\377\325\325\325\377" "\331\331\331\377\332\332\332\377\357\357\357\377\314\314\314\377\312" "\312\312\377\325\325\325\377\340\340\340\377\341\341\341\377\366\366" "\366\377\322\322\322\377\321\321\321\377\333\333\333\377\343\343\343" "\377\345\345\345\377\370\370\370\377LLL\377\202\377\377\377\0\2NNN\377" "\366\366\366\377\222\370\370\370\377\2\367\367\367\377LLL\377\202\377" "\377\377\0\1TTT\227\224LLL\377\1UUU\227\231\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_jumpto) #endif #ifdef __GNUC__ const guint8 osmo_stock_jumpto[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_jumpto[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1609) */ "\0\0\6a" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\241\377\377\377\0\2""9q\0\11+\200\0\6\226\377\377\377\0\2""4n\3I7p\4" "\201\226\377\377\377\0\3""7s\5\2357q\5\3714o\7'\202\377\377\377\0\5\301" "\204\24\30\301\204\24M\301\204\24x\301\204\24T\301\204\24\40\216\377" "\377\377\0\14""7r\4\345\210\262_\3757r\5\316\275\202\24""5\300\205\25" "\334\303\212\33\360\312\234/\360\322\254=\374\316\2411\362\305\216\36" "\360\301\206\25\350\301\204\24F\207\377\377\377\0\23""3f\0\12""6o\3K" "6n\3P8p\6)4o\7'M\202\35\357\272\325\235\376i\2269\371\206~\21\370\320" "\261I\377\342\315_\377\347\323V\377\347\324S\377\350\327[\377\351\327" "c\377\336\303Q\377\304\215\36\363\300\205\25\243\301\204\24\2\203\377" "\377\377\0\25""3s\0\24""9t\5\276E{\24\360c\2255\362p\237D\363\\\217/" "\355Cz\23\362|\247R\370\220\273a\377\253\313\210\377I|\24\377\314\273" ">\377\342\3131\377\346\325@\377\351\334J\377\351\334K\377\347\326B\377" "\346\322K\377\342\314_\377\307\226)\365\300\204\24{\202\377\377\377\0" "\36""1l\0\32\77w\15\337\227\275j\373\262\321\215\376\227\301e\376\212" "\271S\376\221\275c\376\244\310~\376\236\304u\376W\231\20\377\200\262" "J\377\213\263b\377f\211\16\377\345\323=\377\353\340Q\377\357\352a\377" "\357\353b\377\354\342T\377\346\325@\377\342\3137\377\331\301\\\377\301" "\207\31\362\301\204\24+\377\377\377\0\77w\12\304\254\314\200\375\246" "\317j\376y\264&\376g\247\30\376[\235\17\376\202Q\225\7\376\202Q\225\7" "\377\24S\226\11\377\244\310}\377b\220,\377\260\267/\377\355\346[\377" "\364\365r\377\364\367u\377\356\350^\377\350\331F\377\342\312/\377\327" "\276F\377\306\242A\376\300\205\24\2535o\5""5d\2247\360\272\332\206\376" "\211\3001\376v\262#\376d\244\26\376X\232\14\376\202Q\225\7\376\203Q\225" "\7\377\25d\240\"\377\247\310\203\377J}\17\377\342\336R\377\361\360i\377" "\362\361k\377\355\345Z\377\347\327D\377\341\310-\377\320\264.\377\311" "\255U\377\300\205\24\342w\15\357\263\321\222\376\240\305w\377\230\275q\377" "W\206!\377Yy\13\377\253\226\35\377\314\256#\377\330\274%\377\336\303" "&\377\337\303&\377\331\275%\377\316\260#\377\300\237!\377\263\220(\377" "\315\254M\377\303\206\23\347;v\10\346\314\345\242\376\267\321\220\375" "8s\6\202\202\377\377\377\0\26""5o\4>d\2247\360\242\305}\376^\215-\371" "W|\13\376\276\252(\377\274\222\23\377\253\207\35\377\270\226\37\377\302" "\241!\377\307\247\"\377\307\250\"\377\302\242!\377\272\230\40\377\255" "\211\36\377\302\2376\377\330\2547\377\304\207\22\262;t\10\353\303\341" "\221\376\241\301|\3647n\4@\202\377\377\377\0\26""7s\6\211C{\22\3716q" "\5\337Uu\7b\304\207\25\362\350\277A\377\337\260\26\377\304\230\17\377" "\260\211\30\377\253\206\35\377\257\213\36\377\257\214\36\377\254\207" "\35\377\256\207\32\377\304\232\33\377\342\275H\377\306\213\30\362\276" "\202\24""8=w\10\267\232\302^\376f\224>\3610p\0\20\202\377\377\377\0\12" "6q\4\2556p\5c\0\200\0\2\377\377\377\0\301\204\23k\314\225\36\362\353" "\304E\377\347\271\36\377\330\246\6\377\313\235\14\377\202\304\230\17" "\377\11\312\234\14\377\331\255\36\377\353\305E\377\323\236$\366\276\203" "\22\223\0\0\0\3""5p\5""0:s\7\351=w\10\231\203\377\377\377\0\1+\200\0" "\6\202\377\377\377\0\21\0\0\0\1""0!\5\4\277\204\22\245\307\216\32\362" "\345\273<\377\353\302>\377\351\275,\377\347\271!\377\351\274+\377\352" "\301;\377\347\276@\377\311\223\36\365\273\201\22\3057&\6\31\0\0\0\7\377" "\377\377\0\0\0\0\1\207\377\377\377\0\17\0\0\0\1\0\0\0\5\0\0\0\17\225" "f\17^\300\204\23\356\307\220\35\363\324\242(\373\335\2562\377\325\244" "*\374\310\222\36\365\277\204\24\365\211^\16\207\0\0\0,\0\0\0\32\0\0\0" "\14\211\377\377\377\0\17\0\0\0\1\0\0\0\5\0\0\0\20\0\0\0\37\30\21\3""8" "aB\12l\203Y\15\233\235l\17\301\201X\15\247X<\11\205\32\22\3Z\0\0\0A\0" "\0\0-\0\0\0\32\0\0\0\13\211\377\377\377\0\17\0\0\0\1\0\0\0\4\0\0\0\13" "\0\0\0\26\0\0\0%\0\0\0""4\0\0\0B\0\0\0L\0\0\0N\0\0\0J\0\0\0\77\0\0\0" "1\0\0\0!\0\0\0\22\0\0\0\7\211\377\377\377\0\202\0\0\0\1\15\0\0\0\5\0" "\0\0\13\0\0\0\23\0\0\0\35\0\0\0&\0\0\0+\0\0\0-\0\0\0*\0\0\0#\0\0\0\32" "\0\0\0\20\0\0\0\10\0\0\0\3\212\377\377\377\0\202\0\0\0\1\14\0\0\0\4\0" "\0\0\7\0\0\0\12\0\0\0\16\0\0\0\21\0\0\0\22\0\0\0\20\0\0\0\15\0\0\0\11" "\0\0\0\5\0\0\0\2\0\0\0\1\214\377\377\377\0\202\0\0\0\1\2\0\0\0\2\0\0" "\0\3\203\0\0\0\4\2\0\0\0\3\0\0\0\2\202\0\0\0\1\220\377\377\377\0\205" "\0\0\0\1\204\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_next_day) #endif #ifdef __GNUC__ const guint8 osmo_stock_next_day[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_next_day[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (703) */ "\0\0\2\327" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\321\377\377\377\0\4EJC\340HLE\377GJD\246@@@\4\224\377\377\377\0\5JM" "G\377\312\312\313\364\217\221\217\326EJB\251UUU\3\223\377\377\377\0\6" "MPJ\377\313\313\315\375\315\315\316\370\222\224\220\325FIC\247UUU\3\222" "\377\377\377\0\7MPJ\377\313\313\314\372\224\223\223\377\323\323\324\370" "\223\225\222\325FJB\245UUU\3\221\377\377\377\0\10MPJ\377\314\313\314" "\373\212\210\210\377\230\226\230\377\331\330\331\370\226\231\225\326" "FJC\243\200\200\200\2\220\377\377\377\0\11MPJ\377\312\312\313\372\212" "\210\210\377\215\213\214\377\235\233\233\377\336\336\336\370\230\232" "\227\324EJD\242\200\200\200\2\217\377\377\377\0\12MPJ\377\311\310\312" "\372\212\210\210\377\215\213\214\377\221\220\220\377\241\240\240\377" "\344\344\344\370\232\234\230\325FIC\240\200\200\200\2\216\377\377\377" "\0\12MPJ\377\301\300\302\371\212\210\210\377\215\213\214\377\221\220" "\220\377\225\224\224\377\245\244\244\377\350\350\350\370\217\220\215" "\320FJC\221\216\377\377\377\0\12MPJ\377\265\264\266\370hef\377}{|\377" "\177}}\377}||\377\207\206\206\377\342\342\342\365\207\211\205\315FJC" "\221\216\377\377\377\0\12MPJ\377\263\262\264\370LIJ\377ROP\377XVV\377" "qoo\377\330\330\331\364\217\221\215\321FIC\240\200\200\200\2\216\377" "\377\377\0\11MPJ\377\263\262\264\370LIJ\377ROP\377jhh\377\320\320\320" "\365\214\217\213\320EJD\242\200\200\200\2\217\377\377\377\0\10MPJ\377" "\263\262\264\370LIJ\377c`b\377\307\306\307\364\211\214\210\321FJC\243" "\200\200\200\2\220\377\377\377\0\7MPJ\377\263\262\264\370\\Z[\377\276" "\276\300\364\205\207\204\320FJB\245UUU\3\221\377\377\377\0\6MPJ\377\264" "\264\266\374\266\266\267\364\203\205\201\320FIC\247UUU\3\222\377\377" "\377\0\5JMG\377\263\263\265\357~\200~\320EJB\252333\5\221\377\377\377" "\0\14\0\0\0\2\0\0\0\14EIB\343HLE\377BE\77\263\6\6\6*\0\0\0'\0\0\0$\0" "\0\0\36\0\0\0\25\0\0\0\14\0\0\0\1\214\377\377\377\0\5\0\0\0\14\0\0\0" "\27\0\0\0#\0\0\0.\0\0\0:\202\0\0\0F\5\0\0\0:\0\0\0.\0\0\0#\0\0\0\27\0" "\0\0\7\215\377\377\377\0\12\0\0\0\5\0\0\0\14\0\0\0\24\0\0\0\35\0\0\0" "#\0\0\0\40\0\0\0\31\0\0\0\21\0\0\0\12\0\0\0\2\316\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_next_month) #endif #ifdef __GNUC__ const guint8 osmo_stock_next_month[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_next_month[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1165) */ "\0\0\4\245" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\315\377\377\377\0\4EJC\340HLE\377GJD\246@@@\4\203\377\377\377\0\4FJ" "C\320HLE\377FJC\263III\7\215\377\377\377\0\5JMG\377\312\312\313\364\217" "\221\217\326EJB\251UUU\3\202\377\377\377\0\5FJC\360\310\310\312\357\231" "\233\231\324FJC\266III\7\214\377\377\377\0\15MPJ\377\313\313\315\375" "\315\315\316\370\222\224\220\325FIC\247UUU\3\377\377\377\0FJC\360\312" "\312\313\375\314\313\314\370\235\236\234\323EJC\264UUU\6\213\377\377" "\377\0\16MPJ\377\313\313\314\372\224\223\223\377\323\323\324\370\223" "\225\222\325FJB\245UUU\3FJC\360\313\313\314\375\221\217\220\377\322\321" "\322\370\236\240\235\324FJC\262UUU\6\212\377\377\377\0\17MPJ\377\314" "\313\314\373\212\210\210\377\230\226\230\377\331\330\331\370\226\231" "\225\326FJC\243FJD\360\312\312\314\375\211\207\210\377\226\224\225\377" "\326\326\327\370\241\243\240\324GID\261333\5\211\377\377\377\0\20MPJ" "\377\312\312\313\372\212\210\210\377\215\213\214\377\235\233\233\377" "\336\336\336\370\230\232\227\324FJC\372\310\310\312\375\211\207\210\377" "\215\213\214\377\232\231\231\377\333\333\334\371\244\246\243\324FJC\257" "333\5\210\377\377\377\0\21MPJ\377\311\310\312\372\212\210\210\377\215" "\213\214\377\221\220\220\377\241\240\240\377\344\344\344\370\214\217" "\213\374vxt\376\211\207\210\377\215\213\214\377\221\220\220\377\236\235" "\235\377\341\341\341\371\247\251\246\324EJB\255@@@\4\207\377\377\377" "\0\21MPJ\377\301\300\302\371\212\210\210\377\215\213\214\377\221\220" "\220\377\225\224\224\377\245\244\244\377\344\344\344\376\230\231\227" "\376cda\377\215\213\214\377\221\220\220\377\225\224\224\377\243\242\241" "\377\346\346\347\370\233\235\232\316FJC\241\207\377\377\377\0\21MPJ\377" "\265\264\266\370hef\377}{|\377\177}}\377}||\377\207\206\206\377\334\334" "\334\376\220\222\216\376TUQ\377}{{\377\177~~\377~}}\377\204\203\202\377" "\336\336\337\365\223\226\222\312FJC\241\207\377\377\377\0\21MPJ\377\263" "\262\264\370LIJ\377ROP\377XVV\377qoo\377\330\330\331\364\202\205\200" "\374oqm\376KHI\377ROP\377XVV\377lkk\377\325\325\325\365\232\234\231\317" "EJB\255@@@\4\207\377\377\377\0\20MPJ\377\263\262\264\370LIJ\377ROP\377" "jhh\377\320\320\320\365\214\217\213\320FJC\372\264\264\266\374KHI\377" "ROP\377fdd\377\314\314\315\365\227\231\226\316FJC\257333\5\210\377\377" "\377\0\17MPJ\377\263\262\264\370LIJ\377c`b\377\307\306\307\364\211\214" "\210\321FJC\243FJD\360\264\264\266\374KHI\377_]^\377\303\303\305\364" "\223\225\222\316GID\261333\5\211\377\377\377\0\16MPJ\377\263\262\264" "\370\\Z[\377\276\276\300\364\205\207\204\320FJB\245UUU\3FJC\360\264\264" "\266\374XUV\377\274\273\274\364\217\221\216\316FJC\262UUU\6\212\377\377" "\377\0\15MPJ\377\264\264\266\374\266\266\267\364\203\205\201\320FIC\247" "UUU\3\377\377\377\0FJC\360\264\264\266\374\263\262\264\364\214\215\213" "\315EJC\264UUU\6\213\377\377\377\0\5JMG\377\263\263\265\357~\200~\320" "EJB\251UUU\3\202\377\377\377\0\5FJC\360\262\262\264\350\207\211\207\315" "FJC\266III\7\212\377\377\377\0\7\0\0\0\1\0\0\0\10EIC\342HLE\377CF@\257" "\7\7\7#\0\0\0#\202\0\0\0%\6DGA\326HLE\377CG@\273\24\24\24\31\0\0\0\15" "\0\0\0\6\210\377\377\377\0\21\0\0\0\2\0\0\0\14\0\0\0\25\0\0\0\35\0\0" "\0&\0\0\0/\0\0\0""7\0\0\0@\0\0\0I\0\0\0F\0\0\0=\0\0\0""4\0\0\0,\0\0\0" "#\0\0\0\32\0\0\0\21\0\0\0\5\210\377\377\377\0\17\0\0\0\1\0\0\0\5\0\0" "\0\12\0\0\0\20\0\0\0\27\0\0\0\37\0\0\0%\0\0\0(\0\0\0%\0\0\0\40\0\0\0" "\31\0\0\0\22\0\0\0\14\0\0\0\6\0\0\0\1\316\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_next_year) #endif #ifdef __GNUC__ const guint8 osmo_stock_next_year[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_next_year[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1590) */ "\0\0\6N" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\310\377\377\377\0\4FJC\340HLE\377FJC\246FJC\4\203\377\377\377\0\4FJ" "C\320HLE\377FJC\263III\7\203\377\377\377\0\4FJC\340HLE\377FJC\246FJC" "\4\206\377\377\377\0\5JNG\377\313\312\313\364\217\222\216\326FJC\251" "FJC\3\202\377\377\377\0\5FJC\360\310\310\312\357\231\233\231\324FJC\266" "III\7\202\377\377\377\0\5JMG\377\312\312\313\364\217\221\217\326FJC\251" "FJC\3\205\377\377\377\0\24MPJ\377\313\313\315\375\315\315\316\370\220" "\223\220\325FJC\247FJC\3\377\377\377\0FJC\360\312\312\313\375\314\313" "\314\370\235\236\234\323EJC\264UUU\6\377\377\377\0MPJ\377\313\313\315" "\375\315\315\316\370\222\224\220\325FJC\247FJC\3\204\377\377\377\0\25" "MPJ\377\313\313\314\372\224\223\223\377\322\322\324\371\223\225\222\326" "FJC\245FJC\3FJC\360\313\313\314\375\221\217\220\377\322\321\322\370\236" "\240\235\324FJC\262UUU\6MPJ\377\313\313\314\372\224\223\223\377\323\323" "\324\370\223\225\222\325FJC\245FJC\3\203\377\377\377\0\26MPJ\377\313" "\313\314\373\212\210\210\377\230\226\230\377\331\331\332\370\225\227" "\224\326FJC\243FJC\360\312\312\314\375\211\207\210\377\226\224\225\377" "\326\326\327\370\241\243\240\324GID\261LOJ\377\314\313\314\373\212\210" "\210\377\230\226\230\377\331\330\331\370\226\230\225\326FJC\243FJC\2" "\202\377\377\377\0\177MPJ\377\312\312\313\372\212\210\210\377\215\213" "\214\377\235\233\233\377\336\336\336\370\227\231\226\325FJC\372\310\310" "\312\375\211\207\210\377\215\213\214\377\232\231\231\377\333\333\334" "\371\244\246\243\324HLE\377\307\307\310\372\212\210\210\377\215\213\214" "\377\235\233\233\377\336\336\336\370\230\232\226\324FJC\242FJC\2\377" "\377\377\0MPJ\377\310\310\312\372\212\210\210\377\215\213\214\377\221" "\220\220\377\241\240\240\377\344\344\344\370\214\216\213\374vxt\376\210" "\207\207\377\215\213\214\377\221\220\220\377\236\235\235\377\341\341" "\341\371\230\231\226\377orm\375\211\207\207\377\215\213\214\377\221\220" "\220\377\241\240\240\377\344\344\344\370\232\234\230\325FJC\240FJC\2" "MPJ\377\300\300\301\371\212\210\210\377\215\213\214\377\221\220\220\377" "\225\224\224\377\245\244\244\377\344\344\344\376\227\231\227\376cda\377" "\215\213\214\377\221\220\220\377\225\224\224\377\243\242\241\377\342" "\342\343\377\243\244\241\376_a\\\377\215\213\214\377\221\220\220\377" "\225\224\224\377\245\244\244\377\350\350\350\370\217\220\215\320FJC\221" "MPJ\377\264\264\266\370hef\377}{|\377\177}}\377}||\377\207\206\206\377" "\334\334\334\376\217\221\216\376TUQ\377}{{\377\177~~\377~}}\377\204\203" "\202\377\330\330\331\377\232\234\231\376RTP\377}{|\377\177}}\377}||\377" "\207\206\206\377\342\342\342\365\207\211\205\315FJC\221MPJ\377\262\262" "\264\370LIJ\377ROP\377XVV\377qoo\377\330\330\331\365\202\204\200\374" "oqn\376KHI\377ROP\377XVV\377lkk\377\325\325\325\365\214\215\212\377h" "kf\375LIJ\377ROP\377XVV\377qoo\377\330\330\331\364\217\221\215\321FJ" "C\240FJC\2MPJ\377\262\262\264\370LIJ\377ROP\377jhh\377\320\320\320\365" "\213\215\212\321'FJC\372\263\263\265\374KHI\377ROP\377fdd\377\314\314" "\315\365\227\231\226\316HLE\377\260\257\261\370LIJ\377ROP\377jhh\377" "\320\320\320\365\214\216\212\320FJC\242FJC\2\377\377\377\0MPJ\377\262" "\262\264\370LIJ\377c`b\377\307\307\310\365\210\212\206\321FJC\243FJC" "\360\264\264\266\374KHI\377_]^\377\303\303\305\364\223\225\222\316GI" "D\261LOJ\377\263\262\264\370LIJ\377c`b\377\307\306\307\364\211\213\210" "\321FJC\243FJC\2\202\377\377\377\0\25MPJ\377\262\262\264\370\\Z[\377" "\276\276\300\365\205\207\204\321FJC\245FJC\3FJC\360\264\264\266\374X" "UV\377\274\273\274\364\217\221\216\316FJC\262UUU\6MPJ\377\263\262\264" "\370\\Z[\377\276\276\300\364\205\207\204\320FJC\245FJC\3\203\377\377" "\377\0\24MPJ\377\264\264\266\374\266\266\267\364\201\204\201\320FJC\247" "FJC\3\377\377\377\0FJC\360\264\264\266\374\263\262\264\364\214\215\213" "\315EJC\264UUU\6\377\377\377\0MPJ\377\264\264\266\374\266\266\267\364" "\203\205\201\320FJC\247FJC\3\204\377\377\377\0\5JNG\377\264\263\265\357" "~\201}\320FJC\251FJC\3\202\377\377\377\0\5FJC\360\262\262\264\350\207" "\211\207\315FJC\266III\7\202\377\377\377\0\5JMG\377\263\263\265\357~" "\200~\320FJC\251FJC\3\205\377\377\377\0\23FJC\341HLE\377CG@\255\12\12" "\11\35\0\0\0\35\0\0\0!\0\0\0#DGA\327HLE\377BF\77\276\14\14\14+\0\0\0" "#\0\0\0\40\0\0\0\34\77B<\343BF@\377@D=\253\24\25\23\15\0\0\0\4\205\377" "\377\377\0\25\0\0\0\11\0\0\0\32\0\0\0#\0\0\0*\0\0\0""0\0\0\0""7\0\0\0" "=\0\0\0C\0\0\0J\0\0\0H\0\0\0B\0\0\0;\0\0\0""5\0\0\0.\0\0\0(\0\0\0\"\0" "\0\0\33\0\0\0\25\0\0\0\17\0\0\0\10\0\0\0\2\205\377\377\377\0\21\0\0\0" "\3\0\0\0\12\0\0\0\16\0\0\0\22\0\0\0\26\0\0\0\32\0\0\0\35\0\0\0\40\0\0" "\0!\0\0\0\"\0\0\0\37\0\0\0\31\0\0\0\24\0\0\0\17\0\0\0\12\0\0\0\6\0\0" "\0\2\315\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_prev_day) #endif #ifdef __GNUC__ const guint8 osmo_stock_prev_day[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_prev_day[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (703) */ "\0\0\2\327" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\324\377\377\377\0\4III\7FJC\263HLE\377FJC\320\223\377\377\377\0\5II" "I\7FJC\266\231\233\231\324\310\310\312\357FJC\360\222\377\377\377\0\6" "UUU\6EJC\264\235\236\234\323\314\313\314\370\312\312\313\375FJC\360\221" "\377\377\377\0\7UUU\6FJC\262\236\240\235\324\322\321\322\370\221\217" "\220\377\313\313\314\375FJC\360\220\377\377\377\0\10""333\5GID\261\241" "\243\240\324\326\326\327\370\226\224\225\377\211\207\210\377\312\312" "\314\375FJC\360\217\377\377\377\0\11""333\5FJC\257\244\246\243\324\333" "\333\334\371\232\231\231\377\215\213\214\377\211\207\210\377\311\311" "\313\375FJC\360\216\377\377\377\0\12@@@\4EJB\255\247\251\246\324\341" "\341\341\371\236\235\235\377\221\220\220\377\215\213\214\377\211\207" "\210\377\307\307\310\375FJC\360\216\377\377\377\0\12FJC\241\233\235\232" "\316\346\346\347\370\243\242\241\377\225\224\224\377\221\220\220\377" "\215\213\214\377\211\207\210\377\277\277\301\375FJC\360\216\377\377\377" "\0\12FJC\241\223\226\222\312\336\336\337\365\204\203\202\377~}}\377\177" "~~\377}{{\377fcd\377\265\265\267\374FJC\360\216\377\377\377\0\12@@@\4" "EJB\255\232\234\231\317\325\325\325\365lkk\377XVV\377ROP\377KHI\377\264" "\264\266\374FJC\360\217\377\377\377\0\11""333\5FJC\257\227\231\226\316" "\314\314\315\365fdd\377ROP\377KHI\377\264\264\266\374FJC\360\220\377" "\377\377\0\10""333\5GID\261\223\225\222\316\303\303\305\364_]^\377KH" "I\377\264\264\266\374FJC\360\221\377\377\377\0\7UUU\6FJC\262\217\221" "\216\316\274\273\274\364XUV\377\264\264\266\374FJC\360\222\377\377\377" "\0\6UUU\6EJC\264\214\215\213\315\263\262\264\364\264\264\266\374FJC\360" "\223\377\377\377\0\5III\7FJC\267\207\211\207\316\262\262\264\350FJC\360" "\217\377\377\377\0\14\0\0\0\2\0\0\0\14\0\0\0\25\0\0\0\36\0\0\0$\13\13" "\13-BF\77\277HLE\377DHB\326\0\0\0\25\0\0\0\14\0\0\0\1\214\377\377\377" "\0\5\0\0\0\14\0\0\0\27\0\0\0#\0\0\0.\0\0\0:\202\0\0\0F\5\0\0\0:\0\0\0" ".\0\0\0#\0\0\0\27\0\0\0\7\215\377\377\377\0\12\0\0\0\5\0\0\0\14\0\0\0" "\24\0\0\0\35\0\0\0#\0\0\0\40\0\0\0\31\0\0\0\21\0\0\0\12\0\0\0\2\316\377" "\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_prev_month) #endif #ifdef __GNUC__ const guint8 osmo_stock_prev_month[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_prev_month[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1165) */ "\0\0\4\245" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\321\377\377\377\0\4III\7FJC\263HLE\377FJC\320\203\377\377\377\0\4@@" "@\4GJD\246HLE\377EJC\340\214\377\377\377\0\5III\7FJC\266\231\233\231" "\324\310\310\312\357FJC\360\202\377\377\377\0\5UUU\3EJB\251\217\221\217" "\326\312\312\313\364JMG\377\213\377\377\377\0\15UUU\6EJC\264\235\236" "\234\323\314\313\314\370\312\312\313\375FJC\360\377\377\377\0UUU\3FI" "C\247\222\224\220\325\315\315\316\370\313\313\315\375MPJ\377\212\377" "\377\377\0\16UUU\6FJC\262\236\240\235\324\322\321\322\370\221\217\220" "\377\313\313\314\375FJC\360UUU\3FJB\245\223\225\222\325\323\323\324\370" "\224\223\223\377\313\313\314\372MPJ\377\211\377\377\377\0\17""333\5G" "ID\261\241\243\240\324\326\326\327\370\226\224\225\377\211\207\210\377" "\312\312\314\375FJD\360FJC\243\226\231\225\326\331\330\331\370\230\226" "\230\377\212\210\210\377\314\313\314\373MPJ\377\210\377\377\377\0\20" "333\5FJC\257\244\246\243\324\333\333\334\371\232\231\231\377\215\213" "\214\377\211\207\210\377\310\310\312\375FJC\372\230\232\227\324\336\336" "\336\370\235\233\233\377\215\213\214\377\212\210\210\377\312\312\313" "\372MPJ\377\207\377\377\377\0\21@@@\4EJB\255\247\251\246\324\341\341" "\341\371\236\235\235\377\221\220\220\377\215\213\214\377\211\207\210" "\377vxt\376\214\217\213\374\344\344\344\370\241\240\240\377\221\220\220" "\377\215\213\214\377\212\210\210\377\311\310\312\372MPJ\377\207\377\377" "\377\0\21FJC\241\233\235\232\316\346\346\347\370\243\242\241\377\225" "\224\224\377\221\220\220\377\215\213\214\377cda\377\230\231\226\376\344" "\344\344\376\245\244\244\377\225\224\224\377\221\220\220\377\215\213" "\214\377\212\210\210\377\301\300\302\371MPJ\377\207\377\377\377\0\21" "FJC\241\223\226\222\312\336\336\337\365\204\203\202\377~}}\377\177~~" "\377}{{\377TUQ\377\220\222\216\376\334\334\334\376\207\206\206\377}|" "|\377\177}}\377}{|\377hef\377\265\264\266\370MPJ\377\207\377\377\377" "\0\21@@@\4EJB\255\232\234\231\317\325\325\325\365lkk\377XVV\377ROP\377" "KHI\377oqm\376\202\205\200\374\330\330\331\364qoo\377XVV\377ROP\377L" "IJ\377\263\262\264\370MPJ\377\210\377\377\377\0\20""333\5FJC\257\227" "\231\226\316\314\314\315\365fdd\377ROP\377KHI\377\264\264\266\374FJC" "\372\214\217\213\320\320\320\320\365jhh\377ROP\377LIJ\377\263\262\264" "\370MPJ\377\211\377\377\377\0\17""333\5GID\261\223\225\222\316\303\303" "\305\364_]^\377KHI\377\264\264\266\374FJD\360FJC\243\211\214\210\321" "\307\306\307\364c`b\377LIJ\377\263\262\264\370MPJ\377\212\377\377\377" "\0\16UUU\6FJC\262\217\221\216\316\274\273\274\364XUV\377\264\264\266" "\374FJC\360UUU\3FJB\245\205\207\204\320\276\276\300\364\\Z[\377\263\262" "\264\370MPJ\377\213\377\377\377\0\15UUU\6EJC\264\214\215\213\315\263" "\262\264\364\264\264\266\374FJC\360\377\377\377\0UUU\3FIC\247\203\205" "\201\320\266\266\267\364\264\264\266\374MPJ\377\214\377\377\377\0\5I" "II\7FJC\266\207\211\207\315\262\262\264\350FJC\360\202\377\377\377\0" "\5UUU\3EJB\251~\200~\320\263\263\265\357JMG\377\213\377\377\377\0\7\0" "\0\0\1\0\0\0\10\30\30\30\26CGA\272HLE\377DHB\326\0\0\0#\202\0\0\0%\6" "\7\7\7&BE\77\261HLE\377EIB\342\0\0\0\15\0\0\0\6\210\377\377\377\0\21" "\0\0\0\2\0\0\0\14\0\0\0\25\0\0\0\35\0\0\0&\0\0\0/\0\0\0""7\0\0\0@\0\0" "\0I\0\0\0F\0\0\0=\0\0\0""4\0\0\0,\0\0\0#\0\0\0\32\0\0\0\21\0\0\0\5\210" "\377\377\377\0\17\0\0\0\1\0\0\0\5\0\0\0\12\0\0\0\20\0\0\0\27\0\0\0\37" "\0\0\0%\0\0\0(\0\0\0%\0\0\0\40\0\0\0\31\0\0\0\22\0\0\0\14\0\0\0\6\0\0" "\0\1\312\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_prev_year) #endif #ifdef __GNUC__ const guint8 osmo_stock_prev_year[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_prev_year[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1574) */ "\0\0\6>" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\316\377\377\377\0\4FJC\4FJC\246HLE\377FJC\340\203\377\377\377\0\4II" "I\7FJC\263HLE\377FJC\320\203\377\377\377\0\4FJC\4FJC\246HLE\377FJC\340" "\205\377\377\377\0\5FJC\3FJC\251\217\221\217\326\312\312\313\364JMG\377" "\202\377\377\377\0\5III\7FJC\266\231\233\231\324\310\310\312\357FJC\360" "\202\377\377\377\0\5FJC\3FJC\251\217\222\216\326\313\312\313\364JNG\377" "\204\377\377\377\0\24FJC\3FJC\247\222\224\220\325\315\315\316\370\313" "\313\315\375MPJ\377\377\377\377\0UUU\6EJC\264\235\236\234\323\314\313" "\314\370\312\312\313\375FJC\360\377\377\377\0FJC\3FJC\247\220\223\220" "\325\315\315\316\370\313\313\315\375MPJ\377\203\377\377\377\0\25FJC\3" "FJC\245\223\225\222\325\323\323\324\370\224\223\223\377\313\313\314\372" "MPJ\377UUU\6FJC\262\236\240\235\324\322\321\322\370\221\217\220\377\313" "\313\314\375FJC\360FJC\3FJC\245\223\225\222\326\322\322\324\371\224\223" "\223\377\313\313\314\372MPJ\377\202\377\377\377\0\177FJC\2FJC\243\226" "\230\225\326\331\330\331\370\230\226\230\377\212\210\210\377\314\313" "\314\373LOJ\377GID\261\241\243\240\324\326\326\327\370\226\224\225\377" "\211\207\210\377\312\312\314\375FJC\360FJC\243\225\227\224\326\331\331" "\332\370\230\226\230\377\212\210\210\377\313\313\314\373MPJ\377\377\377" "\377\0FJC\2FJC\242\230\232\226\324\336\336\336\370\235\233\233\377\215" "\213\214\377\212\210\210\377\307\307\310\372HLE\377\244\246\243\324\333" "\333\334\371\232\231\231\377\215\213\214\377\211\207\210\377\310\310" "\312\375FJC\372\227\231\226\325\336\336\336\370\235\233\233\377\215\213" "\214\377\212\210\210\377\312\312\313\372MPJ\377FJC\2FJC\240\232\234\230" "\325\344\344\344\370\241\240\240\377\221\220\220\377\215\213\214\377" "\211\207\207\377orm\375\230\231\226\377\341\341\341\371\236\235\235\377" "\221\220\220\377\215\213\214\377\210\207\207\377vxt\376\214\216\213\374" "\344\344\344\370\241\240\240\377\221\220\220\377\215\213\214\377\212" "\210\210\377\310\310\312\372MPJ\377FJC\221\217\220\215\320\350\350\350" "\370\245\244\244\377\225\224\224\377\221\220\220\377\215\213\214\377" "_a\\\377\243\244\241\376\342\342\343\377\243\242\241\377\225\224\224" "\377\221\220\220\377\215\213\214\377cda\377\227\231\226\376\344\344\344" "\376\245\244\244\377\225\224\224\377\221\220\220\377\215\213\214\377" "\212\210\210\377\300\300\302\371MPJ\377FJC\221\207\211\205\315\342\342" "\342\365\207\206\206\377}||\377\177}}\377}{|\377RTP\377\232\234\231\376" "\330\330\331\377\204\203\202\377~}}\377\177~~\377}{{\377TUQ\377\217\221" "\216\376\334\334\334\376\207\206\206\377}||\377\177}}\377}{|\377hef\377" "\264\264\266\370MPJ\377FJC\2FJC\240\217\221\215\321\330\330\331\364q" "oo\377XVV\377ROP\377LIJ\377hkf\375'\214\215\212\377\325\325\325\365l" "kk\377XVV\377ROP\377KHI\377oqn\376\202\204\200\374\330\330\331\365qo" "o\377XVV\377ROP\377LIJ\377\262\262\264\370MPJ\377\377\377\377\0FJC\2" "FJC\242\214\216\212\320\320\320\320\365jhh\377ROP\377LIJ\377\260\257" "\261\370HLE\377\227\231\226\316\314\314\315\365fdd\377ROP\377KHI\377" "\263\263\265\374FJC\372\213\215\212\321\320\320\320\365jhh\377ROP\377" "LIJ\377\262\262\264\370MPJ\377\202\377\377\377\0\26FJC\2FJC\243\211\213" "\210\321\307\306\307\364c`b\377LIJ\377\263\262\264\370LOJ\377GID\261" "\223\225\222\316\303\303\305\364_]^\377KHI\377\264\264\266\374FJC\360" "FJC\243\210\212\206\321\307\307\310\365c`b\377LIJ\377\262\262\264\370" "MPJ\377\203\377\377\377\0\25FJC\3FJC\245\205\207\204\320\276\276\300" "\364\\Z[\377\263\262\264\370MPJ\377UUU\6FJC\262\217\221\216\316\274\273" "\274\364XUV\377\264\264\266\374FJC\360FJC\3FJC\245\205\207\204\321\276" "\276\300\365\\Z[\377\262\262\264\370MPJ\377\204\377\377\377\0\24FJC\3" "FJC\247\203\205\201\320\266\266\267\364\264\264\266\374MPJ\377\377\377" "\377\0UUU\6EJC\264\214\215\213\315\263\262\264\364\264\264\266\374FJ" "C\360\377\377\377\0FJC\3FJC\247\201\204\201\320\266\266\267\364\264\264" "\266\374MPJ\377\205\377\377\377\0\5FJC\3FJC\251~\200~\320\263\263\265" "\357JMG\377\202\377\377\377\0\14III\7FJC\266\207\211\207\315\262\262" "\264\350FJC\360\0\0\0\0\377\377\377\0FJC\3FJC\251~\201}\320\264\263\265" "\357JNG\377\206\377\377\377\0\22\"$!\10BF\77\251DHA\377@D=\342\0\0\0" "\30\0\0\0\34\0\0\0\40\14\14\14)BF\77\276HLE\377DGA\327\0\0\0&\0\0\0#" "\0\0\0!\11\11\10!CF@\257HLE\377FJC\341\204\377\377\377\0\24\0\0\0\2\0" "\0\0\10\0\0\0\17\0\0\0\25\0\0\0\33\0\0\0\"\0\0\0(\0\0\0.\0\0\0""5\0\0" "\0;\0\0\0B\0\0\0H\0\0\0J\0\0\0C\0\0\0=\0\0\0""7\0\0\0""0\0\0\0*\0\0\0" "\40\0\0\0\13\206\377\377\377\0\6\0\0\0\3\0\0\0\7\0\0\0\13\0\0\0\20\0" "\0\0\26\0\0\0\33\203\0\0\0\37\7\0\0\0\35\0\0\0\33\0\0\0\27\0\0\0\23\0" "\0\0\17\0\0\0\13\0\0\0\4\312\377\377\377\0"}; #ifdef PRINTING_SUPPORT /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_print) #endif #ifdef __GNUC__ const guint8 osmo_stock_print[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_print[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1222) */ "\0\0\4\336" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\265\377\377\377\0\2\200\200\200\332{{{\377\213|||\377\1\177\177\177" "\351\212\377\377\377\0\2\210\210\210\366\365\365\365\377\212\377\377" "\377\377\2\374\374\374\377\206\206\206\377\212\377\377\377\0\4\222\222" "\222\365\372\372\372\377\352\352\352\377\257\257\260\377\206\236\236" "\237\377\4\257\257\260\377\346\346\346\377\377\377\377\377\217\217\217" "\377\212\377\377\377\0\3\233\233\233\365\373\373\373\377\356\356\356" "\377\211\353\353\353\377\2\377\377\377\377\231\231\231\377\212\377\377" "\377\0\5\245\245\245\365\374\374\374\377\363\363\363\377\361\361\361" "\377\263\263\264\377\204\243\243\244\377\1\262\262\262\377\202\361\361" "\361\377\2\377\377\377\377\243\243\243\377\212\377\377\377\0\3\246\246" "\246\364\375\375\375\377\370\370\370\377\211\367\367\367\377\2\377\377" "\377\377\243\243\243\377\212\377\377\377\0\4\247\247\247\363\376\376" "\376\377\374\374\374\377\275\275\276\377\206\251\251\252\377\4\272\272" "\273\377\374\374\374\377\377\377\377\377\243\243\243\377\212\377\377" "\377\0\3\246\246\246\363\374\374\374\377\360\360\360\377\211\356\356" "\356\377\2\377\377\377\377\243\243\243\377\212\377\377\377\0\4\244\244" "\244\362\371\371\371\377\330\330\330\377\241\241\242\377\203\224\224" "\225\377\203\223\223\224\377\4\242\242\243\377\321\321\321\377\377\377" "\377\377\243\243\243\377\207\377\377\377\0\6nnm\222hhh\375ggg\377\241" "\241\241\377\366\366\366\377\304\304\304\377\204\274\274\274\377\205" "\273\273\273\377\5\377\377\377\377\243\243\243\377ggg\377ggg\375lll\205" "\203\377\377\377\0\10gggH\213\213\213\366\370\370\370\377\372\372\372" "\377\222\222\222\377\324\324\324\377\321\321\321\377\316\316\316\377" "\202\315\315\315\377\202\313\313\313\377\12\311\311\311\377\310\310\310" "\377\307\307\307\377\306\306\306\377\336\336\336\377\216\216\216\377" "\360\360\360\377\353\353\353\377\205\205\205\367gggF\202\377\377\377" "\0\4oon\331\361\361\361\377\374\374\374\377\235\237\232\377\216\210\212" "\205\377\4\225\227\223\377\355\355\355\377\360\360\360\377kkk\337\202" "\377\377\377\0\"ggg\376\373\373\372\377\346\346\345\377\344\344\343\377" "\343\343\342\377\342\342\341\377\341\341\340\377\340\340\336\377\337" "\336\335\377\336\336\335\377\335\335\333\377\334\333\332\377\333\332" "\331\377\331\331\330\377\331\330\327\377\330\327\326\377\326\326\324" "\377\325\325\324\377\323\323\322\377\323\323\321\377\367\367\367\377" "hhh\374ggg\6\377\377\377\0ggg\377\365\365\364\377\331\331\327\377\327" "\327\325\377\325\325\323\377\324\324\322\377\322\322\320\377\320\320" "\316\377\317\316\314\377\207\211\210\377\202\203\205\204\377B\207\211" "\210\377\306\306\304\377\305\304\302\377\303\302\300\377\301\300\276" "\377\277\277\275\377\276\275\273\377\274\273\271\377\353\353\352\377" "hhh\374ggg\10\377\377\377\0ggg\377\360\360\360\377\331\331\327\377\327" "\327\325\377\325\325\323\377\324\324\322\377\322\322\320\377\320\320" "\316\377\317\316\314\377\315\315\313\377\313\313\311\377\312\311\307" "\377\310\307\305\377\306\306\304\377\305\304\302\377\303\302\300\377" "\301\300\276\377\277\277\275\377\276\275\273\377\274\273\271\377\343" "\342\342\377hhh\374ggg\10\377\377\377\0ggg\377\354\354\353\377\331\331" "\327\377\327\327\325\377\322\322\320\377\321\321\317\377\317\317\315" "\377\315\315\314\377\315\314\312\377\313\313\311\377\311\311\307\377" "\310\307\305\377\306\305\303\377\304\304\302\377\303\302\300\377\301" "\300\276\377\277\276\274\377\275\275\273\377\276\275\273\377\274\273" "\271\377\332\332\331\377hhh\374ggg\10\377\377\377\0ggg\377\350\350\346" "\377\331\331\327\377\327\327\325\377vxy\377xzz\377\204xz{\377\1xzz\377" "\206wyz\377\1vxy\377\202\274\273\271\377\26\322\321\320\377hhh\374gg" "g\10\377\377\377\0ggg\377\343\343\342\377\331\331\327\377\327\327\325" "\377vxy\377\216\215\207\377\220\217\211\377\227\226\217\377\236\235\226" "\377\245\244\235\377\254\253\244\377\263\262\252\377\272\271\261\377" "\301\277\270\377\310\306\276\377\276\274\264\377\253\251\242\377wyz\377" "\202\274\273\271\377\10\312\311\307\377hhh\374ggg\10\377\377\377\0hh" "h\375\327\327\325\377\335\335\333\377\333\333\331\377\216vxy\377\10\303" "\302\300\377\303\302\301\377\274\273\272\377hhh\374ggg\6\377\377\377" "\0nnn\233ggg\376\222ggg\377\2ggg\376lll\243\205\377\377\377\0\7\0\0\0" "\2\0\0\0\7\0\0\0\16\0\0\0\26\0\0\0\37\0\0\0(\0\0\0""1\202\0\0\0:\10\0" "\0\0""4\0\0\0,\0\0\0#\0\0\0\32\0\0\0\23\0\0\0\13\0\0\0\5\0\0\0\1\233" "\377\377\377\0"}; #endif /* PRINTING_SUPPORT */ /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_today) #endif #ifdef __GNUC__ const guint8 osmo_stock_today[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_today[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1617) */ "\0\0\6i" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\237\377\377\377\0\4\0\0\0\1vvsMxxv\207{{{\271\202\177\177~\343\4{{{" "\271xxv\207vvsM\0\0\0\1\215\377\377\377\0\3www,}}|\322\214\214\213\377" "\206\222\222\221\377\3\214\214\213\377}}|\322www,\213\377\377\377\0\4" "xxx\200\205\205\204\367\225\225\224\377\213\213\212\377\202\202\202\201" "\377\202\204\204\203\377\202\202\202\201\377\4\213\213\212\377\225\225" "\224\377\205\205\204\367xxx\200\211\377\377\377\0\7zzx\204\214\214\213" "\377\223\223\222\377\203\203\202\377\211\212\210\377\247\250\245\377" "\265\266\263\377\202\300\301\277\377\7\265\266\263\377\247\250\245\377" "\211\212\210\377\203\203\202\377\223\223\222\377\214\214\213\377{{y\203" "\207\377\377\377\0\6xxx2\206\206\205\371\223\223\222\377\202\202\201" "\377\232\233\231\377\276\300\275\377\202\302\303\300\377\202\275\276" "\273\377\202\302\303\300\377\6\276\300\275\377\232\233\231\377\202\202" "\201\377\223\223\222\377\206\206\205\371xxx2\205\377\377\377\0\11\300" "\300\300\4\200\200\177\325\225\225\224\377\203\203\202\377\234\235\233" "\377\302\303\300\377\301\303\300\377\244\245\243\377\211\212\210\377" "\202\202\202\201\377\11\211\212\210\377\244\245\243\377\301\303\300\377" "\302\303\300\377\234\235\233\377\203\203\202\377\225\225\224\377\200" "\200\177\325\300\300\300\4\204\377\377\377\0\2xxx]\216\216\215\377\202" "\213\213\212\377\5\277\300\275\377\301\302\277\377\222\222\220\377\202" "\202\201\377\204\204\203\377\202\216\216\215\377\5\204\204\203\377\202" "\202\201\377\222\222\220\377\301\302\277\377\277\300\275\377\202\213" "\213\212\377\2\216\216\215\377xxx]\204\377\377\377\0\11zzy\225\223\223" "\222\377\202\202\201\377\253\253\251\377\302\303\300\377\244\245\243" "\377\202\202\201\377\216\216\215\377\271\272\267\377\202\302\303\300" "\377\11\271\272\267\377\216\216\215\377\202\202\201\377\244\245\243\377" "\302\303\300\377\253\253\251\377\202\202\201\377\223\223\222\377zzy\225" "\204\377\377\377\0\24~~}\305\223\223\222\377\202\202\201\377\270\271" "\266\377\302\303\300\377\207\210\206\377\204\204\203\377\271\272\270" "\377\302\303\300\377\303\270\266\377\303\265\263\377\302\303\300\377" "\271\272\270\377\204\204\203\377\207\210\206\377\302\303\300\377\270" "\271\266\377\202\202\201\377\223\223\222\377~~}\305\204\377\377\377\0" "\24vvu\353\177\177\177\377eee\377\257\261\256\377\242\244\240\377QQQ" "\377ghg\377\260\261\257\377\267\246\243\377\302UT\377\310ed\377\303\261" "\256\377\302\303\300\377\221\221\220\377\202\202\201\377\272\273\270" "\377\301\303\300\377\205\205\204\377\222\222\221\377\201\201\200\355" "\204\377\377\377\0\24CCC\347\\\\\\\377JJI\377\250\252\247\377\230\232" "\227\377CCC\377[\\[\377\250\252\247\377\252\216\212\377\261\27\26\377" "\262\32\31\377\261\215\213\377\265\266\263\377\203\204\202\377\200\200" "\177\377\270\271\266\377\302\303\300\377\207\207\205\377\213\213\212" "\377TTS\351\204\377\377\377\0\24CCC\264]]]\377CCC\377\231\233\230\377" "\247\251\246\377JJI\377FFF\377\234\236\233\377\250\252\247\377\252\205" "\203\377\252\201\177\377\250\252\247\377\234\236\233\377FFF\377KKJ\377" "\256\257\254\377\246\247\245\377TTT\377___\377CCC\264\204\377\377\377" "\0\11DDD\200^^^\377CCC\377\204\206\204\377\250\252\247\377qrp\377CCC" "\377YZY\377\235\237\234\377\202\250\252\247\377\11\235\237\234\377YZ" "Y\377CCC\377qrp\377\250\252\247\377\204\206\204\377CCC\377^^^\377DDD" "\200\204\377\377\377\0\11CCCLVVV\377NNN\377RSR\377\245\247\244\377\244" "\246\243\377RSR\377CCC\377GGG\377\202\\\\[\377\11GGG\377CCC\377RSR\377" "\244\246\243\377\245\247\244\377RSR\377NNN\377VVV\377CCCL\204\377\377" "\377\0\11@@@\4DDD\314bbb\377DDD\377opo\377\250\252\247\377\242\244\241" "\377mml\377EEE\377\202CCC\377\11EEE\377mml\377\242\244\241\377\250\252" "\247\377opo\377DDD\377bbb\377DDD\314@@@\4\205\377\377\377\0\10AAA+HH" "H\370\\\\\\\377DDD\377pqo\377\244\246\243\377\250\252\247\377\245\247" "\244\377\202\222\224\222\377\10\245\247\244\377\250\252\247\377\244\246" "\243\377pqo\377DDD\377\\\\\\\377HHH\370AAA+\207\377\377\377\0\7CCCvS" "SS\377\\\\\\\377DDD\377RRR\377\203\205\203\377\232\233\231\377\202\247" "\251\246\377\7\232\233\231\377\203\205\203\377RRR\377DDD\377\\\\\\\377" "SSS\377CCCv\210\377\377\377\0\5\200\200\200\2CCC{III\371aaa\377LLL\377" "\202CCC\377\202III\377\202CCC\377\5LLL\377aaa\377III\372@@@\200+++\6" "\207\377\377\377\0\6\0\0\0\6\0\0\0\24\0\0\0\"%%%T\77\77\77\331UUU\377" "\206\\\\\\\377\7UUU\377\77\77\77\333\40\40\40^\0\0\0""0\0\0\0\"\0\0\0" "\24\0\0\0\4\205\377\377\377\0\23\0\0\0\17\0\0\0\36\0\0\0.\0\0\0=\3\3" "\3O$$$\215000\265888\327\77\77\77\363>>>\365777\334...\275\"\"\"\227" "\3\3\3_\0\0\0L\0\0\0=\0\0\0.\0\0\0\36\0\0\0\12\205\377\377\377\0\23\0" "\0\0\3\0\0\0\22\0\0\0\"\0\0\0""0\0\0\0=\0\0\0I\0\0\0T\0\0\0]\0\0\0d\0" "\0\0f\0\0\0d\0\0\0]\0\0\0T\0\0\0I\0\0\0=\0\0\0""0\0\0\0\37\0\0\0\12\0" "\0\0\1\207\377\377\377\0\16\0\0\0\1\0\0\0\7\0\0\0\20\0\0\0\32\0\0\0\"" "\0\0\0*\0\0\0""0\0\0\0""1\0\0\0-\0\0\0'\0\0\0\40\0\0\0\25\0\0\0\13\0" "\0\0\4\235\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_calculator) #endif #ifdef __GNUC__ const guint8 osmo_stock_calculator[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_calculator[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1626) */ "\0\0\6r" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\4\377\377\377\0RRR7PPP\341MMM\377\221LLL\377\2MNM\341MMM8\202\377\377" "\377\0\15PPP\333|}{\377\240\241\236\377\236\240\234\377\233\235\231\377" "\227\231\225\377\224\226\222\377\220\222\216\377\215\216\212\377\211" "\212\206\377\205\206\203\377\201\203\200\377}\177|\377\206|~{\377\3}" "\177|\377lmk\377NNN\337\202\377\377\377\0\13NNN\376\236\236\233\377\201" "\204~\377|\177y\377wzu\377rup\377mpk\377ikf\377dfa\377_a]\377Z\\X\377" "\211VXT\377\2~\177|\377LML\377\202\377\377\377\0\6MMM\377\233\235\231" "\377z}x\377llZ\377kkP\377klP\377\203kkP\377\202jkO\377\202jjO\377\202" "jkO\377\203jjO\377\4bcN\377VXT\377|~{\377LLL\377\202\377\377\377\0\5" "MML\377\226\230\224\377tvq\377jjN\377\242\243r\377\215\306\306\225\377" "\4\210\207m\377UWS\377|~{\377LLL\377\202\377\377\377\0\5LLL\377\221\223" "\217\377moj\377ijN\377\302\303\222\377\215\314\314\232\377\4\216\216" "r\377UWS\377|~{\377LLL\377\202\377\377\377\0\5LLL\377\214\215\212\377" "fhd\377iiM\377\305\305\224\377\215\314\314\232\377\4\214\213q\377UWS" "\377|~{\377LLL\377\202\377\377\377\0\5LLL\377\206\210\205\377_a]\377" "llX\377\222\222s\377\215\225\225v\377\4qqa\377VXT\377|~{\377LLL\377\202" "\377\377\377\0\2LLL\377uuu\377\222MMM\377\2uuu\377LLL\377\202\377\377" "\377\0\2LLL\375\317\317\316\375\211\305\305\303\375\13\303\303\301\375" "\277\277\276\375\273\273\272\375\267\267\266\375\263\263\262\375\257" "\257\256\375\253\253\252\375\246\247\246\375\242\243\242\375\262\263" "\262\375LLL\375\202\377\377\377\0\3LLL\375\317\317\316\375mpj\377\202" "tvs\377\3mpj\377\305\305\303\375mpj\377\202tvs\377\14loj\377\277\277" "\275\375kni\377suq\377rtq\377jmg\377\252\253\252\375pfg\376H:<\377lc" "c\376\260\260\260\375LLL\375\202\377\377\377\0\3LLL\375\317\317\316\375" "tvs\377\202\310\311\305\377\3tvs\377\305\305\303\375tvs\377\202\310\311" "\305\377\3sur\377\273\273\271\375suq\377\202\310\311\305\377\7qsp\377" "\246\247\246\375H:<\377\376\33\33\377G9;\377\254\254\254\375LLL\375\202" "\377\377\377\0\3LLL\375\317\317\316\375mpj\377\202tvs\377\21mpj\377\305" "\305\303\375mpj\377tvs\377sur\377kni\377\266\267\265\375jmh\377rtq\377" "qsp\377hkf\377\242\242\241\375lbc\376G9;\377h_`\376\251\251\251\375L" "LL\375\202\377\377\377\0\2LLL\375\317\317\316\375\205\305\305\303\375" "\17\303\303\301\375\276\277\275\375\272\273\271\375\266\266\265\375\262" "\262\261\375\256\256\255\375\252\252\251\375\246\246\245\375\242\242" "\241\375\235\236\235\375\231\232\231\375\225\226\225\375\221\222\221" "\375\246\246\246\375LLL\375\202\377\377\377\0\3LLL\375\317\317\316\375" "mpj\377\202tvs\377\21mpj\377\302\302\300\375kli\377sur\377suq\377jkh" "\377\256\256\255\375ilg\377qsp\377pro\377gje\377\231\232\231\375qsp\376" "jmh\377nqm\376\242\243\242\375LLL\375\202\377\377\377\0\3LLL\375\317" "\317\316\375tvs\377\202\310\311\305\377\3tvs\377\276\276\274\375sur\377" "\202\310\311\305\377\3rtq\377\251\252\251\375qsp\377\202\310\311\305" "\377\7pro\377\225\226\225\375ijg\377\310\311\305\377hif\377\237\237\237" "\375LLL\375\202\377\377\377\0\3LLL\375\317\317\316\375mpj\377\202tvs" "\377\10loi\377\272\272\270\375jkh\377rtq\377rtp\377hjf\377\245\246\245" "\375hkf\377\202pro\377\7fid\377\220\221\221\375lnj\377\310\311\305\377" "kmi\377\237\237\237\375LLL\375\202\377\377\377\0\26LLL\375\317\317\316" "\375\305\305\303\375\302\302\300\375\276\276\274\375\271\272\270\375" "\265\266\264\375\261\262\260\375\255\256\254\375\251\251\250\375\245" "\245\244\375\241\241\240\375\235\235\235\375\231\231\231\375\224\225" "\225\375\220\221\221\375\214\215\215\375kmi\377\310\311\305\377kmi\377" "\237\237\237\375LLL\375\202\377\377\377\0\3LLL\375\317\317\316\375lo" "j\377\202sur\377\3jmh\377\261\261\260\375ilg\377\202qsp\377\3hkf\377" "\234\235\234\375fjd\377\202oqn\377\7ehc\377\210\211\211\375kmi\377\310" "\311\305\377kmi\377\237\237\237\375LLL\375\202\377\377\377\0\3LLL\375" "\314\314\313\375sur\377\202\310\311\305\377\3rtq\377\255\255\254\375" "qsp\377\202\310\311\305\377\3pro\377\230\231\230\375oqn\377\202\310\311" "\305\377\7npm\377\204\205\205\375hif\377\310\311\305\377hif\377\237\237" "\237\375LLL\375\202\377\377\377\0\3OOO\363\301\301\277\375kni\377\202" "rtq\377\3ilg\377\250\251\250\375hkf\377\202pro\377\3fjd\377\224\225\224" "\375ehc\377\202npm\377\7dgb\377\204\205\205\375knk\376ikg\377knk\376" "\234\234\234\375MMM\363\202\377\377\377\0\16PPP\236\205\205\205\372\275" "\275\274\375\300\301\277\375\275\275\274\375\272\272\272\375\267\267" "\267\375\263\264\263\375\260\261\260\375\256\256\256\375\253\253\253" "\375\247\250\250\375\244\245\245\375\241\242\242\375\205\237\237\237" "\375\3\234\235\235\375wxx\372OOO\236\202\377\377\377\0\3LLL\33QQQ\242" "MMM\372\220LLL\375\3MMM\372NNN\242LLL\33\231\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_calendar) #endif #ifdef __GNUC__ const guint8 osmo_stock_calendar[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_calendar[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1501) */ "\0\0\5\365" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\205\377\377\377\0\3\231\232\230)||{\350aaa\23\211\377\377\377\0\2rr" "q\266\307\311\305\225\212\377\377\377\0\3\276\300\275\247\212\212\211" "\363aaat\210\377\377\377\0\4aaa\34llk\354\334\335\332\372\237\240\236" "\2\211\377\377\377\0\3\302\304\300\265lll\261aaa\225\210\377\377\377" "\0\4aaa8fff\307\303\305\302\343\242\243\241\31\205\377\377\377\0\2jl" "h\314WYU\377\202UWS\377\3\257\261\256\377\\][\377[\\Z\377\210UWS\377" "\4WYU\377YZX\377\242\244\240\377bd`\377\202UWS\377\5\\^Z\251\377\377" "\377\0rto\1egb\376\357\360\357\377\202\377\377\377\377\2\315\315\313" "\377\326\326\326\377\212\377\377\377\3779\340\340\340\377\241\242\240" "\377\356\356\356\377\377\377\377\377\355\356\355\377[]Y\345\377\377\377" "\0rup\20egc\377\372\372\372\377\376\376\376\377\374\374\374\377\313\314" "\312\377\255\255\255\377\344\344\344\377\365\365\365\377\364\364\364" "\377\362\362\362\377\360\360\360\377\357\357\357\377\356\356\356\377" "\354\354\354\377\352\352\352\377\342\342\342\377\270\270\270\377\203" "\203\201\377\325\325\325\377\357\357\357\377\367\367\367\377XZV\366\377" "\377\377\0sup!fhc\377\375\375\375\377\377\377\377\377\375\375\375\377" "\333\334\333\377ooo\377\311\311\311\377\365\365\365\377\363\363\363\377" "\361\361\361\377\357\357\357\377\355\355\355\377\353\353\353\377\352" "\352\352\377\350\350\350\377\341\341\341\377\232\232\232\377\200\201" "\200\377\335\335\335\377\353\353\353\377\374\374\374\377UWS\377UWS\7" "suq1fhd\377\202\377\377\377\377\26\376\376\376\377\372\372\372\377qq" "q\377\314\314\314\377\366\366\366\377\364\364\364\377\362\362\362\377" "\360\360\360\377\356\356\356\377\354\354\354\377\352\352\352\377\350" "\350\350\377\346\346\346\377\261\261\261\377mmm\377\345\345\345\377\351" "\351\351\377\377\377\377\377VXT\377UWS\33tvqBlok\376\203\377\377\377" "\377\25\375\375\375\377\373\373\373\377\372\372\372\377\367\367\367\377" "\317\320\320\377z~\177\377BHI\377[`a\377\244\246\247\377\353\353\353" "\377\351\351\351\377\347\347\347\377\352\352\352\377\356\356\356\377" "\346\346\346\377\350\350\350\377\377\377\377\377`b^\377UWS0tvqS~\200" "}\376\203\377\377\377\377\14\376\376\376\377\374\374\374\377\372\372" "\372\377\370\370\370\377\222\225\226\377afg\377\210\213\214\377LQS\377" "/57\377\323\324\324\377\352\352\352\377\350\350\350\377\204\346\346\346" "\377\5\377\377\377\377pro\374UWSFtwrc\217\221\216\376\204\377\377\377" "\377\14\375\375\375\377\373\373\373\377\371\371\371\377\345\346\346\377" "\365\365\365\377\363\363\363\377\314\315\315\377.46\377\230\233\234\377" "\353\353\353\377\351\351\351\377\347\347\347\377\203\346\346\346\377" "\5\375\375\375\377\204\205\202\374UWS[uwrt\241\242\237\377\204\377\377" "\377\377\14\375\375\375\377\374\374\374\377\372\372\372\377\370\370\370" "\377\366\366\366\377\364\364\364\377\301\302\303\377.46\377\272\273\274" "\377\354\354\354\377\352\352\352\377\350\350\350\377\203\346\346\346" "\377\5\374\374\374\377\226\230\225\376UWSpuxs\205\261\264\261\377\204" "\377\377\377\377\15\376\376\376\377\374\374\374\377\372\372\372\377\371" "\371\371\377\367\367\367\377\353\353\353\377QVW\377^bd\377\354\354\354" "\377\355\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377" "\202\346\346\346\377\5\372\372\372\377\251\252\250\376UWS\205vxs\226" "\301\302\300\377\205\377\377\377\377\14\375\375\375\377\373\373\373\377" "\371\371\371\377\354\354\354\377Z_`\377HMO\377\341\341\342\377\360\360" "\360\377\356\356\356\377\354\354\354\377\352\352\352\377\350\350\350" "\377\202\346\346\346\377\5\371\371\371\377\271\272\271\377VXT\233y{w" "\256\316\317\316\377\205\377\377\377\377\23\376\376\376\377\374\374\374" "\377\357\360\360\377\\`b\377OTV\377\340\340\341\377\362\362\362\377\360" "\360\360\377\356\356\356\377\355\355\355\377\353\353\353\377\351\351" "\351\377\347\347\347\377\346\346\346\377\367\367\367\377\310\310\307" "\377[\\Y\266|~y\307\332\332\331\377\206\377\377\377\377\22\375\375\375" "\377]bd\3775;=\377\236\240\241\377\252\255\255\377\251\254\254\377\305" "\307\307\377\357\357\357\377\355\355\355\377\353\353\353\377\351\351" "\351\377\350\350\350\377\346\346\346\377\365\365\365\377\324\324\323" "\377\\^Z\320|\177{\333\343\343\343\377\206\377\377\377\377\1\376\376" "\376\377\205.46\377\14}\201\202\377\360\360\360\377\356\356\356\377\354" "\354\354\377\352\352\352\377\350\350\350\377\346\346\346\377\364\364" "\364\377\337\337\336\377[]Y\352}\177z\353\353\353\353\377\207\377\377" "\377\377\21\375\375\375\377\373\373\373\377\371\371\371\377\367\367\367" "\377\365\365\365\377\363\363\363\377\361\361\361\377\357\357\357\377" "\355\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\362" "\362\362\377\350\350\350\377XZW\371{}y\366\362\362\362\377\210\377\377" "\377\377\203\376\376\376\377\203\375\375\375\377\202\374\374\374\377" "\203\373\373\373\377\6\374\374\374\377\360\360\357\377UWS\377z|w\374" "\243\244\241\377\256\257\255\377\207\252\253\251\377\6\251\253\251\377" "\251\252\250\377\251\251\250\377\251\251\247\377\250\251\247\377\250" "\251\246\377\202\247\250\246\377\1\246\250\246\377\202\246\247\245\377" "\6\246\246\244\377\226\230\226\377UWS\377opn\271\203\204\202\377\212" "\213\211\377\223\206\207\205\377\4\205\206\204\377jki\362hhh\217}}}\374" "\224\235\235\235\377\3\213\213\213\377nnn\345hhhg\226hhh\377\1mmm\307" "\230\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_close) #endif #ifdef __GNUC__ const guint8 osmo_stock_close[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_close[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1209) */ "\0\0\4\321" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\345\377\377\377\0\4\35\40\40Y+-.\355\"%%\317\30\40\40\40\206\377\377" "\377\0\4\30\40\40\40!$$\317%'(\354\35\40\40Y\211\377\377\377\0\6\35\40" "\40Y_bb\364\321\321\321\377\277\300\300\376011\351\30\40\40\40\204\377" "\377\377\0\6\30\40\40\40""133\352\271\273\272\376\311\311\311\377XZ[" "\364\35\40\40Y\210\377\377\377\0\7-/0\356\320\320\320\377\265\266\266" "\377\277\300\300\377\301\301\301\376022\352\30\40\40\40\202\377\377\377" "\0\7\30\40\40\40""133\352\274\275\275\376\265\266\265\377\247\247\247" "\377\307\307\307\377+-.\355\210\377\377\377\0\7&))\321\302\303\303\376" "\300\301\301\377\255\255\255\377\276\277\277\377\300\301\301\376233\352" "\202\30\40\40\40\7""233\352\275\275\275\376\266\267\266\377\237\240\237" "\377\264\265\264\377\267\270\270\376#&&\320\210\377\377\377\0\20\30\40" "\40\40""234\352\302\303\303\376\277\300\300\377\253\254\253\377\275\275" "\275\377\300\301\301\376344\352233\352\275\275\275\376\267\270\270\377" "\241\242\241\377\265\266\265\377\271\271\271\376.01\352\30\40\40\40\211" "\377\377\377\0\16\30\40\40\40""234\352\302\302\303\376\276\277\277\377" "\252\252\252\377\274\275\274\377\304\304\304\376\301\302\302\376\271" "\271\271\377\242\243\243\377\266\267\266\377\272\272\272\376./0\352\30" "\40\40\40\213\377\377\377\0\14\30\40\40\40""234\352\302\302\302\376\275" "\275\275\377\250\251\251\377\256\256\256\377\255\256\255\377\244\244" "\244\377\267\270\270\377\272\273\273\376-/0\351\30\40\40\40\215\377\377" "\377\0\12\30\40\40\40""344\352\303\303\303\376\261\262\262\377\247\247" "\247\377\245\246\246\377\253\254\253\377\261\262\261\376,./\351\30\40" "\40\40\216\377\377\377\0\12\30\40\40\40/00\351\277\300\277\376\253\255" "\254\377\237\240\237\377\213\214\214\377xyx\377\235\236\235\376)+,\351" "\30\40\40\40\215\377\377\377\0\14\30\40\40\40*+,\351\241\242\242\376" "\215\216\215\377ikj\377ttt\377qsr\377bcb\377\203\205\204\377\231\232" "\232\376(*+\351\30\40\40\40\213\377\377\377\0\16\30\40\40\40*+,\351\242" "\242\243\376\217\221\220\377lml\377\213\215\214\377\243\244\244\376\242" "\243\243\376\206\206\206\377_a`\377\202\203\202\377\230\230\230\376(" "*+\351\30\40\40\40\211\377\377\377\0\7\30\40\40\40*+,\351\242\243\243" "\376\221\222\222\377npo\377\215\216\215\377\237\240\240\376\202+,,\351" "\7\233\234\234\376\203\205\204\377]^]\377\200\201\200\377\226\226\226" "\376(*+\351\30\40\40\40\210\377\377\377\0\21#&&\320\242\243\243\376\223" "\224\224\377qrr\377\217\221\220\377\240\241\241\376*+,\352\22\30\30+" "\21\27\27,*+,\352\233\233\234\376\202\203\202\377Z\\Z\377~\177~\377\224" "\225\225\376#&&\321\0\0\0\2\206\377\377\377\0\23\0\0\0\1&()\355\262\262" "\262\377\200\201\201\377\221\222\222\377\242\242\243\376*+,\353\15\21" "\21;\0\0\0#\0\0\0%\14\20\20@)+,\354\232\233\233\376\200\201\200\377g" "hg\377\243\244\243\377&((\356\0\0\0\5\0\0\0\2\205\377\377\377\0\11\0" "\0\0\1\34\37\37\\MOO\364\262\263\262\377\241\242\242\376),-\354\13\17" "\17E\0\0\0""2\0\0\0""7\202\0\0\0;\11\12\15\15P(*,\356\227\231\230\376" "\246\246\246\377FII\364\32\34\34c\0\0\0\10\0\0\0\3\0\0\0\1\204\377\377" "\377\0\11\0\0\0\1\0\0\0\4\33\36\36^!#$\355\37##\323\15\21\21<\0\0\0)" "\0\0\0""1\0\0\0""7\202\0\0\0;\11\0\0\0""7\12\16\16K\37\"\"\327!#$\356" "\31\33\33h\0\0\0\16\0\0\0\10\0\0\0\3\0\0\0\1\204\377\377\377\0\11\0\0" "\0\1\0\0\0\2\0\0\0\5\0\0\0\10\0\0\0\15\0\0\0\23\0\0\0\31\0\0\0\37\0\0" "\0#\202\0\0\0%\10\0\0\0\"\0\0\0\35\0\0\0\30\0\0\0\22\0\0\0\15\0\0\0\10" "\0\0\0\4\0\0\0\2\207\377\377\377\0\7\0\0\0\1\0\0\0\3\0\0\0\4\0\0\0\6" "\0\0\0\11\0\0\0\13\0\0\0\15\202\0\0\0\16\7\0\0\0\15\0\0\0\12\0\0\0\10" "\0\0\0\6\0\0\0\4\0\0\0\2\0\0\0\1\212\377\377\377\0\202\0\0\0\1\202\0" "\0\0\2\204\0\0\0\3\202\0\0\0\2\202\0\0\0\1\235\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_preferences) #endif #ifdef __GNUC__ const guint8 osmo_stock_preferences[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_preferences[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1306) */ "\0\0\5""2" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\260\377\377\377\0\4jlg4klh\332^`[\377XZV\377\222UWS\377\5\\^Z\332UW" "S4qso\314\320\321\317\377\376\376\376\377\223\377\377\377\377\5\321\322" "\321\377^`\\\314kmh\375\375\375\375\377\352\352\352\377\205\347\347\347" "\377\2\346\346\346\377\333\333\333\377\213\321\321\321\377\6\324\324" "\324\377\375\375\375\377[]Y\375jlg\377\377\377\377\377\347\347\347\377" "\207\346\346\346\377\2\343\343\343\377\322\322\322\377\212\317\317\317" "\377\5\376\376\376\377`b^\377jlg\377\377\377\377\377\351\351\351\377" "\202\347\347\347\377\206\346\346\346\377\1\337\337\337\377\212\317\317" "\317\377\5\376\376\376\377`b^\377jlg\377\377\377\377\377\352\352\352" "\377\204guy\377\203\346\346\346\377\204333\377\203\317\317\317\377\204" "guy\377\6\317\317\317\377\376\376\376\377`b^\377jlg\377\377\377\377\377" "\353\353\353\377\204amp\377\1\350\350\350\377\202\347\347\347\377\204" "333\377\203\317\317\317\377\204amp\377\6\317\317\317\377\376\376\376" "\377`b^\377jlg\377\377\377\377\377\355\355\355\377\204V_b\377\1\351\351" "\351\377\202\350\350\350\377\204333\377\203\317\317\317\377\204V_b\377" "\6\317\317\317\377\376\376\376\377`b^\377jlg\377\377\377\377\377\356" "\356\356\377\204KQS\377\202\352\352\352\377\2\201\201\200\377\205\204" "\203\377\202\212\211\210\377\4\207\206\205\377\177\177~\377\316\316\316" "\377\317\317\317\377\204KQS\377\6\317\317\317\377\376\376\376\377`b^" "\377jlg\377\377\377\377\377\357\357\357\377\204@CD\377\4\354\354\354" "\377\353\353\353\377\211\210\207\377\373\373\373\377\202\364\363\363" "\377\4\373\373\373\377\226\225\225\377\315\315\315\377\320\320\320\377" "\204@CD\377\6\317\317\317\377\376\376\376\377`b^\377jlg\377\377\377\377" "\377\360\360\360\377\204556\377\4\355\355\355\377\354\354\354\377\211" "\210\207\377\367\366\366\377\202\330\325\323\377\5\362\361\360\377\231" "\230\230\377\317\317\317\377\177\177~\377\205\204\203\377\202\212\211" "\210\377\7\207\206\205\377\177\177~\377\374\374\374\377`b^\377jlg\377" "\377\377\377\377\361\361\361\377\204333\377\202\356\356\356\377\2\211" "\210\207\377\373\373\373\377\202\360\357\357\377\5\372\372\371\377\227" "\226\226\377\320\320\320\377\207\206\205\377\373\373\373\377\202\364" "\363\363\377\10\373\373\373\377\226\225\225\377\371\371\371\377`b^\377" "jlg\377\377\377\377\377\202\202\201\377\205\204\203\377\202\212\211\210" "\377\5\207\206\205\377\202\202\201\377\355\355\355\377\202\202\201\377" "\220\220\217\377\202\230\227\226\377\5\224\224\223\377\177\177~\377\323" "\323\323\377\207\206\205\377\367\366\366\377\202\330\325\323\377\10\362" "\361\360\377\231\230\230\377\372\372\372\377`b^\377jlg\377\377\377\377" "\377\211\210\207\377\373\373\373\377\202\364\363\363\377\14\373\373\373" "\377\230\227\227\377\355\355\355\377\360\360\360\377PXZ\377PWZ\377OW" "Z\377OWY\377\331\331\331\377\327\327\327\377\207\206\205\377\373\373" "\373\377\202\360\357\357\377\10\372\372\371\377\227\226\226\377\372\372" "\372\377`b^\377jlg\377\377\377\377\377\211\210\207\377\367\366\366\377" "\202\330\325\323\377\4\362\361\360\377\233\232\232\377\356\356\356\377" "\361\361\361\377\202\\gj\377\6[fj\377[fi\377\334\334\334\377\331\331" "\331\377\200\200\177\377\220\217\216\377\202\227\226\225\377\10\224\223" "\222\377\177\177~\377\374\374\374\377_a]\377jlg\377\377\377\377\377\211" "\210\207\377\373\373\373\377\202\360\357\357\377\4\372\372\371\377\231" "\230\230\377\357\357\357\377\363\363\363\377\204guy\377\3\336\336\336" "\377\333\333\333\377\331\331\331\377\204333\377\7\325\325\325\377\376" "\376\376\377_a]\377jlg\377\377\377\377\377\202\202\201\377\226\225\224" "\377\202\235\234\233\377\4\232\231\230\377\201\201\200\377\363\363\363" "\377\364\364\364\377\204guy\377\4\340\340\340\377\336\336\336\377\334" "\334\334\377\226\226\226\377\202\225\225\225\377\6\224\224\224\377\327" "\327\327\377\376\376\376\377^`\\\377jlg\377\377\377\377\377\202\371\371" "\371\377\1\370\370\370\377\202\367\367\367\377\202\366\366\366\377\12" "\365\365\365\377\343\345\345\377\342\344\344\377\333\335\335\377\325" "\327\327\377\343\343\343\377\341\341\341\377\337\337\337\377\334\334" "\334\377\332\332\332\377\203\330\330\330\377\6\376\376\376\377^`\\\377" "kmh\375\376\376\376\377\373\373\373\377\372\372\372\377\202\371\371\371" "\377\202\370\370\370\377\202\367\367\367\377\202\366\366\366\377\16\365" "\365\365\377\353\353\353\377\346\346\346\377\345\345\345\377\342\342" "\342\377\337\337\337\377\335\335\335\377\334\334\334\377\336\336\336" "\377\341\341\341\377\375\375\375\377Y[W\375sup\314\326\327\325\377\224" "\377\377\377\377\6\324\325\324\377^`]\314jlg4lni\332^`[\377XZV\377\222" "UWS\377\2]_[\332UWS4\230\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_tasks) #endif #ifdef __GNUC__ const guint8 osmo_stock_tasks[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_tasks[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1877) */ "\0\0\7m" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\1\0\0\0\2\227\377\377\377\0\15\0\0\0\2{{{nzzz\352vvv\354sss\354nnn\354" "kkk\354ggg\354ccc\354___\354[[[\354XXX\354TTT\354\204SSS\354\2ded\357" "PPP\210\205\377\377\377\0\4\0\0\0\2yyy\375\334\334\334\377\341\341\341" "\377\202\337\337\337\377\7\336\336\336\377\334\334\334\377\333\333\333" "\377\331\331\331\377\330\330\330\377\327\327\327\377\325\325\325\377" "\202\324\324\324\377\202\323\323\323\377\3\257\260\257\377zzz\375RRR" "\235\204\377\377\377\0\5\0\0\0\2www\377\363\363\363\377\362\362\362\377" "\361\361\361\377\202\360\360\360\377\16\357\357\357\377\356\356\356\377" "\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377\351" "\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\254\255" "\253\377\357\357\357\377\202\202\202\375UUU\257\203\377\377\377\0\2\0" "\0\0\2vvv\377\202\363\363\363\377\1\213\212\213\377\205}|}\377L\213\212" "\213\377\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351" "\377\350\350\350\377\347\347\347\377\246\247\246\377\375\375\375\377" "\353\353\353\377\213\213\213\375UUU\276\0\0\0\1\377\377\377\0\0\0\0\2" "uuu\377\364\364\364\377\363\363\363\377}|}\377\362\362\362\377\361\361" "\361\377\360\360\360\377\357\357\357\377\356\356\356\377}|}\377\354\354" "\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350" "\377\347\347\347\377\240\241\240\377\343\343\343\377\341\341\341\377" "\310\311\311\377\210\211\211\376XXX\305\377\377\377\0\0\0\0\2sss\377" "\365\365\365\377\364\364\364\377}|}\377\363\363\363\377\362\362\362\377" "\361\361\361\377\360\360\360\377\357\357\357\377}|}\377\355\355\355\377" "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350" "\350\350\377\247\250\247\377\216\220\220\377\207\212\212\377\200\203" "\204\377}\200\201\377^__\376\377\377\377\0\0\0\0\2qqq\377\366\366\366" "\377\365\365\365\377}|}\377\364\364\364\377\363\363\363\377\362\362\362" "\377\361\361\361\377\360\360\360\377}|}\377\356\356\356\377\353\353\353" "\377\351\351\351\377\203\350\350\350\377\1\346\346\346\377\204\341\341" "\341\377\4KKK\377\377\377\377\0\0\0\0\2nnn\377\202\366\366\366\377\2" "}|}\377\364\364\364\377\202\363\363\363\377\5\362\362\362\377\361\361" "\361\377}|}\377\357\357\357\377\263\263\262\377\202xxw\377\1wwv\377\202" "vvu\377\1\256\256\256\377\203\346\346\346\377\26LLL\377\377\377\377\0" "\0\0\0\2kkk\377\367\367\367\377\366\366\366\377}|}\377\365\365\365\377" "\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377}|}\377" "\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353" "\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377\347\347" "\347\377\202\346\346\346\377\7LLL\377\377\377\377\0\0\0\0\2iii\377\370" "\370\370\377\367\367\367\377\214\213\214\377\205}|}\377\12\213\212\213" "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377" "\354\354\354\377\353\353\353\377\352\352\352\377\350\350\350\377\347" "\347\347\377\202\346\346\346\377\6LLL\377\377\377\377\0\0\0\0\2eee\377" "\371\371\371\377\370\370\370\377\202\367\367\367\377\24\366\366\366\377" "\365\365\365\377\364\364\364\377\363\363\363\377\362\361\361\377\304" "UV\377\253\14\14\377\335\263\263\377\355\355\355\377\354\354\354\377" "\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377\347" "\347\347\377\346\346\346\377LLL\377\377\377\377\0\0\0\0\2bbb\377\202" "\371\371\371\377\3\370\370\370\377\367\367\367\377\366\366\366\377\202" "\365\365\365\377\24\362\361\361\377\303QQ\377\303\35\35\377\304SS\377" "\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353" "\353\353\377\352\352\352\377\351\351\351\377\347\347\347\377\346\346" "\346\377LLL\377\377\377\377\0\0\0\0\2___\377\372\372\372\377\370\365" "\365\377\214\207\210\377\203}|}\377'}{|\377\237*+\377\312\40!\377\275" "77\377\357\354\354\377\360\360\360\377\357\357\357\377\356\356\356\377" "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350" "\350\350\377\347\347\347\377LLL\377\377\377\377\0\0\0\0\2[[[\377\373" "\373\373\377\27344\377\257\23\23\377\306PP\377\361\342\342\377\366\364" "\364\377\303LL\377\326)+\377\254\32\32\377\355\337\337\377\362\362\362" "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377" "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\347" "\347\347\377LLL\377\202\377\377\377\0\26XXX\377\373\373\373\377\363\343" "\343\377\253\32\33\377\335()\377\274**\377\300BC\377\332,.\377\301()" "\377\205ef\377\363\363\363\377\362\362\362\377\361\361\361\377\360\360" "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353" "\377\352\352\352\377\351\351\351\377\350\350\350\377LLL\377\202\377\377" "\377\0\1TTT\377\202\374\374\374\377\11\201mn\377\277()\377\35213\377" "\341-.\377\333*+\377\321yy\377}|}\377\364\364\364\377\221\221\220\377" "\206uut\377\4\210\210\207\377\352\352\352\377\351\351\351\377LLL\377" "\202\377\377\377\0\1QQQ\377\202\375\375\375\377\23}|}\377\326\204\204" "\377\327)*\377\35535\377\274*+\377\365\360\360\377}|}\377\365\365\365" "\377\363\363\363\377\362\362\362\377\361\361\361\377\360\360\360\377" "\357\357\357\377\356\356\356\377\355\355\355\377\353\353\353\377\352" "\352\352\377\351\351\351\377LLL\377\202\377\377\377\0\1MMM\377\202\375" "\375\375\377\23}|}\377\373\370\370\377\274/0\377\273!!\377\334\235\235" "\377\367\367\367\377}|}\377\365\365\365\377\364\364\364\377\363\363\363" "\377\362\362\362\377\361\361\361\377\357\357\357\377\356\356\356\377" "\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377LLL\377" "\202\377\377\377\0\4LLL\377\375\375\375\377\376\376\376\377\215\214\215" "\377\205}|}\377\15\214\213\214\377\366\366\366\377\365\365\365\377\363" "\363\363\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357" "\357\377\356\356\356\377\354\354\354\377\353\353\353\377\352\352\352" "\377LLL\377\202\377\377\377\0\2LLL\377\374\374\374\377\202\376\376\376" "\377\22\375\375\375\377\374\374\374\377\373\373\373\377\372\372\372\377" "\370\370\370\377\367\367\367\377\366\366\366\377\365\365\365\377\364" "\364\364\377\363\363\363\377\362\362\362\377\360\360\360\377\357\357" "\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353" "\377LLL\377\202\377\377\377\0\26LLL\377\363\363\363\377\375\375\375\377" "\376\376\376\377\375\375\375\377\374\374\374\377\373\373\373\377\372" "\372\372\377\371\371\371\377\370\370\370\377\367\367\367\377\365\365" "\365\377\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361" "\377\360\360\360\377\357\357\357\377\355\355\355\377\354\354\354\377" "\343\343\343\377LLL\377\202\377\377\377\0\2VVV\222LLL\376\222LLL\377" "\2LLL\376TTT\222\231\377\377\377\0"}; #ifdef CONTACTS_ENABLED /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1457) */ "\0\0\5\311" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\310\377\377\377\0\4ilg\77kni\337]`[\377WYU\377\222UWS\377\4\\^Z\337" "UWS\77qto\332\340\341\337\377\203\377\377\377\377\1\377\377\376\377\220" "\376\376\376\377\21\331\332\327\377\\^Z\332ilg\377\377\377\376\377\366" "\366\365\377\362\362\361\377\357\360\356\377\355\356\353\377\352\353" "\350\377\347\351\345\377\345\347\342\377\342\344\337\377\337\342\335" "\377\335\340\332\377\332\335\327\377\327\333\324\377\325\331\321\377" "\206\323\327\317\377\26\324\330\321\377\374\374\374\377\\^Z\377ilg\377" "\377\377\377\377\365\365\363\377\362\362\361\377\357\360\356\377\355" "\356\353\377\352\353\350\377\347\351\345\377\345\347\342\377\342\344" "\337\377\337\342\334\377\335\337\331\377\332\335\327\377\327\333\324" "\377\325\330\321\377\254\253\232\377zva\377{wc\377\265\266\245\377\203" "\323\327\317\377Z\373\373\373\377`b^\377ilg\377\377\377\377\377\240\240" "\237\377^^]\377\254\255\254\377\200\200\177\377\311\312\307\377]^\\\377" "\213\214\211\377\252\254\250\377\\][\377\252\253\247\377\313\316\311" "\377\325\331\321\377ZUE\377D@>\377C@D\377C@C\377DA>\377e_L\377\312\316" "\307\377\323\327\317\377\373\373\373\377`b^\377ilg\377\377\377\377\377" "\235\235\234\377LLK\377``_\377rrq\377\226\227\225\377YZX\377ijh\377q" "rp\377120\377stq\377\246\250\243\377qkX\377FCB\377FBF\377CAD\377GDD\377" "KFE\377>=@\377miY\377\323\327\317\377\373\373\373\377`b^\377ilg\377\377" "\377\377\377\364\364\363\377\362\362\360\377\357\360\355\377\354\355" "\352\377\352\353\350\377\347\351\345\377\344\346\342\377\342\344\337" "\377\337\342\334\377\334\337\331\377\332\335\326\377C\77;\377JFA\377" "j]M\377\235\205`\377\256\222g\377\272\234m\377JFA\377C\77<\377\322\325" "\316\377\373\373\373\377`b^\377ilg\377\377\377\377\377\364\364\363\377" "\361\362\360\377\357\360\355\377\354\355\352\377\351\353\347\377\347" "\351\345\377\344\346\342\377\342\344\337\377\337\341\334\377\334\337" "\331\377\332\335\326\377~kH\377\341\272}\377\353\307\205\377\203\353" "\307\206\377\10\260\227l\377989\377\304\310\301\377\373\373\373\377`" "b^\377ilg\377\377\377\377\377\251\251\250\377\205uut\377C\207\207\205" "\377\341\344\337\377\337\341\334\377\334\337\331\377\331\335\326\377" "\244\214N\377\337\266y\377\351\304\203\377\352\307\206\377\353\307\206" "\377\352\306\205\377\335\266w\377\231\207V\377\323\327\317\377\373\373" "\373\377`b^\377ilg\377\377\377\377\377\364\364\363\377\361\362\360\377" "\357\357\355\377\354\355\352\377\351\353\347\377\347\350\344\377\344" "\346\341\377\341\344\337\377\337\341\334\377\334\337\331\377\331\335" "\326\377\310\307\263\377\245\212A\377\337\265y\377\340\265x\377\341\267" "z\377\336\265w\377\240\207>\377\312\313\272\377\323\327\317\377\373\373" "\373\377`b^\377ilg\377\377\377\377\377\364\364\363\377\361\362\360\377" "\356\357\355\377\354\355\352\377\351\353\347\377\346\350\344\377\344" "\346\341\377\341\344\336\377\337\341\334\377\334\337\331\377\331\334" "\326\377\207\247l\377\225\247|\377\230\207F\377\235\205>\377\237\206" "@\377\235\214N\377\205\242n\377\263\302\245\377\323\327\317\377\373\373" "\373\377`b^\377ilg\377\377\377\377\377\211\211\210\377\207uut\3775\203" "\203\201\377\334\337\331\377\331\334\326\377Y\210/\377l\225^\377\337" "\343\332\377O\201:\377y\235i\377\322\332\313\377l\232d\377b\220>\377" "\323\327\317\377\373\373\373\377`b^\377ilg\377\377\377\377\377\364\364" "\362\377\361\361\357\377\356\357\355\377\354\355\352\377\351\352\347" "\377\346\350\344\377\344\346\341\377\341\343\336\377\336\341\333\377" "\334\337\330\377\331\334\326\377W\214-\377U\2200\377r\241Q\377O\213%" "\377P\214'\377p\240N\377e\234M\377f\227F\377\323\327\317\377\373\373" "\373\377`b^\377ilg\377\377\377\377\377\363\364\362\377\361\361\357\377" "\356\357\355\377\353\355\352\377\351\352\347\377\346\350\344\377\344" "\346\341\377\341\343\336\377\336\341\333\377\334\337\330\377\331\334" "\325\377W\214(\377g\2465\377\204[\237\35\377\10}\264d\377q\234J\377\323" "\327\317\377\373\373\373\377`b^\377ilg\377\377\377\377\377\211\211\210" "\377\206uut\377#}}|\377\334\337\331\377\333\336\330\377\331\334\325\377" "\221\257u\377[\225'\377p\260>\377l\2575\377l\2577\377y\264W\377h\233" "F\377\260\300\240\377\323\327\317\377\373\373\373\377`b^\377ilg\377\377" "\377\377\377\363\363\362\377\361\361\357\377\356\357\354\377\353\354" "\351\377\351\352\346\377\346\350\344\377\343\345\341\377\341\343\336" "\377\336\341\333\377\333\336\330\377\331\334\325\377\326\332\322\377" "\237\267\211\377a\2234\377e\226<\377f\227>\377h\225>\377\303\315\271" "\377\202\323\327\317\377\20\373\373\373\377`b^\377ilg\377\377\377\376" "\377\364\364\363\377\360\361\357\377\356\357\354\377\353\354\351\377" "\351\352\346\377\346\350\344\377\343\345\341\377\341\343\336\377\336" "\341\333\377\333\336\330\377\331\334\325\377\326\332\322\377\207\323" "\327\317\377\5\324\330\321\377\374\374\374\377\\^Z\377qto\332\340\341" "\337\377\202\377\377\377\377\1\377\377\376\377\221\376\376\376\377\6" "\331\332\327\377\\^Z\332ilg\77kni\337]`[\377WYU\377\222UWS\377\2\\^Z" "\337UWS\77\260\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts_add) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts_add[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts_add[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1557) */ "\0\0\6-" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\205\377\377\377\0\7aS#GNG/\330B>5\371@=4\376@=5\373MF/\332UK)d\217\377" "\377\377\0\13{e\26\3OG.\304778\377><=\377A\77B\377B\77C\377B\77B\377" "><=\377778\377OG-\313o]\34\6\215\377\377\377\0\13VL*\265878\377DAE\377" "IEI\377HDH\377FBF\377GCG\377HDH\377EBE\377:99\377LF/\316\214\377\377" "\377\0\6YN'V778\377B@C\377B\77B\377@>@\377779\377\202668\377\5""779\377" "FCF\377EBE\377768\377VL(f\213\377\377\377\0\15SJ,\305879\377;:;\377B" "@>\377\202tW\377\253\223c\377\303\246l\377\275\241j\377f\\J\377><=\377" "HDH\377><>\377HC1\341\213\377\377\377\0\15IC2\362GD\77\377\220~Y\377" "\307\252u\377\325\272\211\377\332\304\226\377\335\305\230\377\336\304" "\225\377\312\262\206\377MIC\377;::\377:9:\377=;6\374\213\377\377\377" "\0\4k[#\356\255\224d\377\335\302\221\377\346\317\245\377\202\351\324" "\255\377\7\346\320\246\377\342\311\232\377\335\302\215\377\323\265}\377" "\244\214_\377rcF\377B>3\375\213\377\377\377\0\15\201j\35\271\275\241" "b\377\336\302\217\377\341\310\230\377\343\313\235\377\343\313\236\377" "\342\310\231\377\336\303\220\377\332\275\205\377\326\265x\377\321\256" "k\377\260\220E\377\177h\33\310\213\377\377\377\0\4{e\26s\224{1\366\332" "\273\203\377\334\300\212\377\202\336\302\216\377\7\334\300\213\377\332" "\274\204\377\326\267z\377\322\260o\377\316\251c\377\225z-\367|f\27\201" "\213\377\377\377\0\4{e\26\13\177h\32\344\262\226P\376\327\267{\377\202" "\330\271\177\377\7\327\270|\377\325\264v\377\322\260n\377\317\252d\377" "\263\222H\377}g\32\353{e\26\16\214\377\377\377\0\15HI2\\yd\33\377\242" "\207@\377\321\256m\377\323\260o\377\322\257m\377\320\254h\377\313\247" "`\377\244\206<\377|g\33\377$3H\327\0\0U\3""5o\4\1\2035o\4\10\1""5o\4" "\1\206\377\377\377\0\23\0\34U\11\1\37[\347\237\244\244\377\216}A\377" "~h\35\377\212r*\377\234\2004\377\213s*\377~h\35\377\204s5\377\274\275" "\262\3774Kx\370\2\40[\2017q\4\331I\177\32\363O\203\"\364G}\30\3636q\4" "\3345o\4\1\205\377\377\377\0\23\0\35^O\40;j\363\264\273\300\377\355\355" "\351\377\332\326\305\377\233\227|\377LK,\377\217\214q\377\330\324\303" "\377\355\354\350\377\227\241\250\377\213\227\246\377\4!]\361=u\14\365" "\267\323\231\377\262\320\221\377\267\323\230\377E|\26\3625o\4\10\205" "\377\377\377\0\23\2\36[\250Vj\211\376r\203\223\377\347\350\345\377\332" "\334\333\3770Ha\377\40:V\377(A\\\377\314\320\322\377\355\355\351\377" "DZp\377\205\224\243\377/Hy\366@w\22\370\263\321\222\377\222\274c\377" "\262\320\221\377J\200\34\3645o\4\10\205\377\377\377\0\5\1\37]\356\211" "\231\255\377Kd\200\377\210\230\246\377\207\226\246\377\203-Jj\377\13" "o\202\225\377\240\254\266\377-Kg\377f}\217\377]r\217\371@w\23\371\263" "\321\222\377\222\274c\377\262\320\221\377J\200\34\3645o\4\17\2025o\4" "\10\1""5o\4\2\202\377\377\377\0\5\3!^\347\221\242\270\377Tp\217\377;" "[\177\377Kh\211\377\203;[\177\377\12Hf\206\3778o\24\377By\31\377J\177" "\40\377I~\37\377Z\215.\370\261\317\220\377\222\274c\377\257\316\215\377" "g\227;\362\202M\201\37\364\2G}\30\3636q\4\342\202\377\377\377\0\3\5$" "`\320\206\233\266\377j\210\250\377\206Hl\224\377\2Cy\30\377\266\323\230" "\377\202\262\320\221\377\11\260\317\216\377\234\303r\377\222\274c\377" "\233\302p\377\253\314\207\377\247\311\200\377\245\310\177\377\263\321" "\222\377C{\24\362\202\377\377\377\0\4\5#_\251[t\234\373\244\272\321\377" "[\202\253\377\205U}\250\377\10Cz\31\377\235\303s\377w\254=\377z\256A" "\377s\2527\377i\244)\377_\235\33\377U\227\14\377\203Q\225\7\377\2\204" "\264O\377Ay\20\363\202\377\377\377\0\13\0\40`\30\3!_\352w\216\260\376" "\252\276\324\377\203\241\301\377p\222\270\377o\221\267\377m\220\266\377" "n\221\267\377\77v\22\377\215\272]\377\202\206\265R\377\5\203\263N\377" "c\240\40\377Q\225\7\377`\236\34\377\202\263M\377\202\206\265R\377\2\216" "\272^\377>w\15\362\203\377\377\377\0\21\0\34[-\3\"_\337,G{\366\177\226" "\266\377\226\253\306\377\236\264\314\377\236\262\314\377\231\255\307" "\377=s\32\376:r\16\377=u\17\371=v\15\365O\205\36\362\203\264N\377Q\225" "\7\377\200\262J\377S\211#\362\202=v\15\365\2;u\12\3656q\4\337\204\377" "\377\377\0\21\0\0\0\14\0\27Kc\4!Z\276\6#]\343\2\40]\371\4\"^\362\6\"" "\\\340\1\34Q\252\0\13%F\0\0\0!\0\0\0\23=v\15\365\206\265R\377Q\225\7" "\377\204\264O\377Ay\20\3635o\4\10\207\377\377\377\0\21\0\0\0\7\0\0\0" "\26\0\0\0%\0\0\0""7\0\0\0K\0\0\0Y\0\0\0R\0\0\0\77\0\0\0,\0\0\0\33\0\0" "\0\14=v\15\365\206\265R\377Q\225\7\377\204\264O\377Ay\20\3635o\4\10\222" "\377\377\377\0\6;t\12\365\215\272]\377\206\265R\377\216\272^\377>w\15" "\3625o\4\10\222\377\377\377\0\6""7q\4\325;t\12\365=v\15\365;u\12\365" "7q\4\3315o\4\1\203\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts_birthdays) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts_birthdays[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts_birthdays[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1825) */ "\0\0\7""9" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\207\377\377\377\0\2\245\0\0\15\245\0\0\3\206\377\377\377\0\5\245\0\0" "\24\251\13\13\226\246\4\4\372\251\13\13\274\245\0\0\21\212\377\377\377" "\0\4\245\0\0""3\250\10\10\351\251\12\12\343\245\0\0Y\204\377\377\377" "\0\6\245\0\0\6\251\11\11\324\304ED\372\352\242\241\377\305QP\371\252" "\14\14\311\212\377\377\377\0\17\252\16\16\273\345\257\257\377\365\336" "\340\377\275@@\366\251\11\11\265\245\0\0\17\377\377\377\0\231\0\0\12" "\251\6\6\242\275''\366\362\211\207\377\362\224\222\377\361\235\232\377" "\251\11\11\366\245\0\0!\211\377\377\377\0\17\252\14\14\337\354\256\255" "\377\371\325\325\377\376\370\370\377\313YX\374\246\7\7\372\246\6\6\363" "\245\0\0\376\254\7\7\370\355VU\377\362ed\377\362po\377\362|z\377\306" ":9\367\247\4\4\203\210\377\377\377\0\20RRT\6\246\4\4\372\356\214\212" "\377\362\212\211\377\366\252\250\377\373\331\332\377\265\27\27\377\302" "32\377\271\"!\377\311\27\27\377\36166\377\361AA\377\361ML\377\361XW\377" "\335II\377\251\6\6\335\205\377\377\377\0\23RRT\12RRTRRRT\245TPR\356\245" "\3\3\376\362vu\377\362ml\377\361dc\377\361[Z\377\301\40\40\377\274((" "\377\263\31\30\377\266\13\13\377\337$$\377\343''\377\334##\377\323\40" "\40\377\256\12\12\371\235\15\15\235\203\377\377\377\0/RRT\12RRT\323R" "RT\364RRT\276RRTfh<>\36\246\1\1\374\361ZY\377\361PP\377\361GG\377\354" ":9\377\264\13\13\377\251\6\6\377\277##\377\266\27\27\376\252\4\4\373" "\252\3\3\334\252\5\5\307\237\15\15\305z*+\267RRT\333RRT\357RRT\325RR" "T\10\377\377\377\0RRT\377pqr\362YY[\367XXZ\360aZ\\\311\246\2\2\376\361" "=<\377\36133\377\335##\377\253\4\4\377\301\32\32\377\260\15\13\365\303" "*)\370\362zy\377\314ED\373\244\13\13\350`QS\233^^a\320XSU\367d`a\362" "~\177\200\362RRT\377\202\377\377\377\0\1RRT\377\202\371\373\371\377\23" "\277@@\377\277YY\377\250\14\14\377\322\35\35\377\301\25\25\377\243\7" "\7\377\250\7\7\376\361JI\377\271\35\34\372\244\0\0\377\340^]\377\362" "\212\210\377\300>=\377\252--\377\276NM\377\305DB\377\350\310\306\377" "\371\373\371\377RRT\377\202\377\377\377\0\1RRT\377\202\371\373\371\377" "\23\313MK\377\317JI\377\333\240\236\377\265''\377\317|{\377\344\305\304" "\377\255\16\16\377\361JI\377\312--\377\254\37\37\377\261\30\30\377\360" "\207\205\377\361\230\226\377\27688\377\263\36\35\377\321KJ\377\351\310" "\306\377\371\373\371\377RRT\377\202\377\377\377\0\1RRT\377\202\371\373" "\371\377\3\313MK\377\317JI\377\357\334\332\377\202\371\373\371\377\16" "\360\337\336\377\255\16\16\377\361JI\377\327;:\377\277HG\377\300ML\377" "\310@\77\377\355\220\216\377\310LK\377\247\4\4\377\272$$\377\351\310" "\306\377\371\373\371\377RRT\377\202\377\377\377\0\26VVX\352XXZ\377{}" "}\377\300A@\377\316IH\377\333\307\307\377\370\372\370\377\371\373\371" "\377\362\343\342\377\254\14\14\377\361JI\377\343II\377\262\"\40\377\363" "\353\351\377\257\33\32\377\27621\377\262++\377\262\35\34\377\257\34\33" "\377\212VW\377YY[\377VVX\352\203\377\377\377\0\24RRT\377\307\310\310" "\377\252vv\377\237LL\377eST\377[XZ\377{|}\377\237\223\223\377\250\6\6" "\377\302#\"\377\274!!\377\246\3\3\377\242\240\240\377\210de\377\246\2" "\2\377\230#$\377~mn\377\220\217\220\377\247\246\246\377RRT\377\204\377" "\377\377\0\1RRT\377\203\370\372\370\377\20\315UU\377\300ML\377\300\302" "\301\377\240\227\227\377\245\0\0\377\214\"\"\377z99\377\230()\377\225" "\201\202\377\256\256\256\377\270((\377\306KK\377\321\320\317\377\316" "\314\314\377\312\311\310\377RRT\377\204\377\377\377\0\1RRT\377\203\370" "\372\370\377\20\315TR\377\313LK\377\357\361\357\377\352\346\345\377\307" "\211\210\377``a\377\342\343\342\377\337\340\336\377\334\334\333\377\331" "\331\330\377\310IG\377\307NN\377\317\316\316\377\314\313\312\377\311" "\310\307\377RRT\377\204\377\377\377\0\1RRT\377\202\370\372\370\377\21" "\367\371\367\377\313SQ\377\313LK\377\356\357\355\377\353\354\352\377" "\332\332\331\377``a\377\341\342\340\377\336\336\335\377\333\333\332\377" "\330\327\326\377\310HG\377\307MM\377\316\315\314\377\313\312\311\377" "\310\306\306\377RRT\377\204\377\377\377\0\1RRT\377\202\370\372\370\377" "\21\366\370\366\377\313QP\377\312LJ\377\355\356\354\377\352\352\351\377" "\330\331\330\377_``\377\340\340\337\377\335\335\334\377\332\331\330\377" "\326\326\325\377\307HG\377\306LL\377\315\314\313\377\312\310\310\377" "\307\305\304\377RRT\377\204\377\377\377\0\1RRT\377\202\370\372\370\377" "\21\365\367\365\377\313OO\377\312KJ\377\353\354\353\377\350\351\350\377" "\327\330\327\377__`\377\337\337\336\377\334\333\332\377\330\330\327\377" "\325\325\324\377\307HG\377\307JJ\377\314\312\312\377\311\307\306\377" "\305\304\303\377RRT\377\204\377\377\377\0\24RRT\377\370\372\370\377\367" "\371\367\377\364\365\363\377\312NM\377\312KJ\377\352\353\352\377\347" "\350\346\377\327\327\326\377__`\377\335\335\334\377\332\332\331\377\327" "\327\326\377\324\323\322\377\307HG\377\306JJ\377\312\311\310\377\307" "\306\305\377\304\302\302\377RRT\377\204\377\377\377\0\24RRT\377\320\322" "\321\377\363\364\362\377\362\364\362\377\313MM\377\312KJ\377\351\352" "\350\377\346\346\345\377\326\326\325\377__`\377\334\334\333\377\331\331" "\330\377\326\325\324\377\323\322\321\377\307HG\377\306IH\377\311\310" "\307\377\306\304\304\377\303\301\300\377RRT\377\204\377\377\377\0\24" "WWY\205^^`\326XXZ\367|}~\361\266@@\377\276:9\377\350\350\347\377\344" "\345\344\377\324\325\323\377__`\377\333\333\332\377\330\327\326\377\325" "\324\323\377\321\321\320\377\306GF\377\302BB\377\223\222\223\376srt\360" "ZZ[\364UUV\353\206\377\377\377\0\21RRT\20RRTT[[\\\243aOQ\355^^`\363\210" "\211\211\365\251\251\251\377^^_\377\312\311\310\377\252\251\251\377\210" "\210\211\367gfh\357\21411\374xAB\344VVX\226RRTWRRT\36\213\377\377\377" "\0\11RRT'RRTm[[]\304TTV\373WWY\357[[]\272SSUuRRT;RRT\10\222\377\377\377" "\0\1RRT\3\214\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts_edit) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts_edit[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts_edit[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1603) */ "\0\0\6[" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\205\377\377\377\0\7ZN&QJC1\336><6\373>;5\377=;6\374JD0\336PH+n\217\377" "\377\377\0\13{e\26\3KD0\313768\377><=\377B@C\377C@C\377B@C\377><>\377" "878\377LE/\320\\P%\11\215\377\377\377\0\13SJ+\271988\377EBF\377IEI\377" "GDH\377EBE\377FCF\377GDG\377EBF\377:99\377JD0\323\214\377\377\377\0\15" "WL(Y778\377C@C\377A\77B\377@>\77\377668\377:9;\377668\377768\377EBF\377" "FBF\377778\377RI*n\213\377\377\377\0\15RI,\306879\377:::\377HEA\377\212" "yY\377\264\232f\377\306\250m\377\303\246l\377nbM\377=<=\377HDH\377><" "\77\377GB2\343\213\377\377\377\0\15HB2\363LG@\377\231\205]\377\313\256" "w\377\325\274\213\377\334\304\230\377\336\307\231\377\337\306\226\377" "\321\270\211\377UOF\377:9:\37799:\377;97\375\213\377\377\377\0\4m\\\"" "\355\257\227e\377\334\302\221\377\346\317\245\377\202\351\324\255\377" "\10\346\320\246\377\342\311\232\377\335\302\215\377\325\266~\377\251" "\220a\377vgG\377E@2\375668\1\202\377\377\377\0\3\0\0\0\1\0\0\0\13\0\0" "\0\10\205\377\377\377\0\15\201j\35\271\274\240a\377\336\302\217\377\341" "\310\230\377\343\313\235\377\343\313\236\377\342\310\231\377\336\303" "\220\377\332\275\205\377\326\265x\377\321\256k\377\260\220E\377\177h" "\32\307\202\377\377\377\0\6\0\0\0\2\204-\32\211\244\20\12\376\234\31" "\16\357U\22\14*\0\0\0\1\203\377\377\377\0\4{e\26s\224{1\366\332\273\202" "\377\334\300\212\377\202\336\302\216\377\17\334\300\213\377\332\274\204" "\377\326\267z\377\322\260o\377\316\251c\377\225z-\367|f\27\201\377\377" "\377\0\0\0\0\2\1773\34~\246\13\11\377\351bd\377\305++\377\236\15\10\373" "(\0\0\31\203\377\377\377\0\4{e\26\13\177h\32\344\262\226P\376\327\267" "{\377\202\330\271\177\377\20\327\270|\377\325\264v\377\322\260n\377\317" "\252d\377\263\222H\377}g\32\353{e\26\16\0\0\0\1dV1Y\2338\40\375\314]" "[\377\355Z\\\377\336IJ\377\253\16\14\377\202\31\16\306\0\0\0\7\203\377" "\377\377\0\25HI2\\yd\33\377\242\207@\377\321\256m\377\323\260o\377\322" "\257m\377\320\254h\377\313\247`\377\244\206<\377|g\33\377$3H\327\0\0" "@\4fT0U\220wC\374\353\274f\377\320jC\377\306JG\377\311((\377\253\10\6" "\377\224!\22\372\0\0\0\24\202\377\377\377\0\26\0\34U\11\1\37[\347\237" "\244\244\377\216}A\377~h\35\377\212r*\377\234\2004\377\213s*\377~h\35" "\377\204s5\377\274\275\262\3774Kx\37019F\252\220xC\373\351\273f\377\375" "\314r\377\372\271F\377\300D\36\377\246\5\4\377\235\21\11\376*\23\14{" "\0\0\0\7\202\377\377\377\0\25\0\35^O\40;j\363\264\273\300\377\355\355" "\351\377\332\326\305\377\233\227|\377LK,\377\217\214q\377\330\324\303" "\377\355\354\350\377\226\240\247\377\177\202\202\377\214wC\377\351\273" "e\377\374\314q\377\373\273E\377\347\257>\377\312\232=\377\224'\26\375" "+\17\13v\0\0\0\16\203\377\377\377\0\24\2\36[\250Vj\211\376r\203\223\377" "\347\350\345\377\332\334\333\3770Ha\377\40:V\377(A\\\377\314\320\322" "\377\354\354\350\377LX^\377\216wE\377\346\272e\377\374\312o\377\373\272" "D\377\345\256>\377\311\234\77\377|h9\371\24\22\12e\0\0\0\14\204\377\377" "\377\0\5\1\37]\356\211\231\255\377Kd\200\377\210\230\246\377\207\226" "\246\377\203-Jj\377\13o\201\224\377\217\223\222\377\215vD\377\346\271" "d\377\374\312m\377\372\272B\377\344\255>\377\304\232\77\377ze9\370\23" "\20\10]\0\0\0\13\205\377\377\377\0\5\3!^\347\221\242\270\377Tp\217\377" ";[\177\377Kh\211\377\203;[\177\377\12N`o\377\214vD\377\343\267d\377\374" "\311k\377\371\271@\377\343\254>\377\300\225@\377va6\366\17\14\6W\0\0" "\0\12\206\377\377\377\0\3\5$`\320\206\233\266\377j\210\250\377\203Hl" "\224\377\13Hl\223\377Nez\377\215uD\377\342\266c\377\375\311h\377\370" "\270A\377\342\254>\377\272\221\77\377q^4\364\15\11\6Q\0\0\0\11\207\377" "\377\377\0\4\5#_\251[t\234\373\244\272\321\377[\202\253\377\202U}\250" "\377\12Uv\231\377\213uE\377\340\265c\377\375\310e\377\367\270\77\377" "\341\254>\377\264\217\77\377m[2\363\12\7\3K\0\0\0\11\210\377\377\377" "\0\17\0\40`\30\3!_\352w\216\260\376\252\276\324\377\203\241\301\377o" "\221\267\377ouq\377\271\225R\377\374\310g\377\367\267\77\377\341\253" ">\377\260\213\77\377gV2\366\7\4\4E\0\0\0\7\212\377\377\377\0\15\0\34" "[-\3\"_\337,G{\366\177\226\266\377\220\244\275\377\211vI\377\350\267" "]\377\364\265A\377\341\254>\377\253\210@\377bR0\366\4\4\4A\0\0\0\7\213" "\377\377\377\0\16\0\0\0\15\0\0\0\34\0\25Ek\4!X\302'6T\355qhR\377\350" "\260D\377\310\233\77\377\225zB\377\\M+\360\3\0\0^\0\0\0$\0\0\0\21\0\0" "\0\3\212\377\377\377\0\15\0\0\0\12\0\0\0\34\0\0\0-\0\0\0Ea[N\3464:;\377" "`V<\377WH(\362\33\27\15\262\0\0\0a\0\0\0""4\0\0\0\36\0\0\0\13\216\377" "\377\377\0\7\24\24\24\15JH<\35585'\327\13\13\10_\0\0\0\40\0\0\0\16\0" "\0\0\2\221\377\377\377\0\4\0\0\0\1\0\0\0\24\0\0\0\17\0\0\0\5\216\377" "\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts_export) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts_export[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts_export[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1509) */ "\0\0\5\375" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\205\377\377\377\0\7ZN&QJC1\336><6\373>;5\377=;6\374JD0\336PH+n\217\377" "\377\377\0\13{e\26\3KD0\313768\377><=\377B@C\377C@C\377B@C\377><>\377" "878\377LE/\320\\P%\11\215\377\377\377\0\13SJ+\271988\377EBF\377IEI\377" "GDH\377EBE\377FCF\377GDG\377EBF\377:99\377JD0\323\214\377\377\377\0\15" "WL(Y778\377C@C\377A\77B\377@>\77\377668\377:9;\377668\377768\377EBF\377" "FBF\377778\377RI*n\213\377\377\377\0\15RI,\306879\377:::\377HEA\377\212" "yY\377\264\232f\377\306\250m\377\303\246l\377nbM\377=<=\377HDH\377><" "\77\377GB2\343\213\377\377\377\0\15HB2\363LG@\377\231\205]\377\313\256" "w\377\325\274\213\377\334\304\230\377\336\307\231\377\337\306\226\377" "\321\270\211\377UOF\377:9:\37799:\377;97\375\213\377\377\377\0\4m\\\"" "\355\257\227e\377\334\302\221\377\346\317\245\377\202\351\324\255\377" "\10\346\320\246\377\342\311\232\377\335\302\215\377\325\266~\377\251" "\220a\377vgG\377E@2\375668\1\212\377\377\377\0\15\201j\35\271\274\240" "a\377\336\302\217\377\341\310\230\377\343\313\235\377\343\313\236\377" "\342\310\231\377\336\303\220\377\332\275\205\377\326\265x\377\321\256" "k\377\260\220E\377\177h\32\307\213\377\377\377\0\4{e\26s\224{1\366\332" "\273\202\377\334\300\212\377\202\336\302\216\377\11\334\300\213\377\332" "\274\204\377\326\267z\377\322\260o\377\316\251c\377\225z-\367|f\27\201" "\377\377\377\0\250n\1G\211\377\377\377\0\4{e\26\13\177h\32\344\262\226" "P\376\327\267{\377\202\330\271\177\377\12\327\270|\377\325\264v\377\322" "\260n\377\317\252d\377\263\222H\377}g\32\353{e\26\16\377\377\377\0\252" "p\1\334\252q\1|\211\377\377\377\0\20HI2\\yd\33\377\242\207@\377\321\256" "m\377\323\260o\377\322\257m\377\320\254h\377\313\247`\377\244\206<\377" "|g\33\377$3H\327\0\0U\3\377\377\377\0\254r\1\345\261{\15\370\253q\1\220" "\207\377\377\377\0\23\0\34U\11\1\37[\347\237\244\244\377\216}A\377~h" "\35\377\212r*\377\234\2004\377\213s*\377~h\35\377\204s5\377\274\275\262" "\3774Kx\370\2\40[\201\377\377\377\0\254r\1\345\352\312e\377\276\215!" "\364\253q\1\242\250n\1\2\205\377\377\377\0\24\0\35^O\40;j\363\264\273" "\300\377\355\355\351\377\332\326\305\377\233\227|\377LK,\377\217\214" "q\377\330\324\303\377\274\220;\377\252w\22\377\251v\22\377\234k\12\376" "\254r\1\346\251o\1\374\355\320o\377\363\332\201\377\303\223'\366\253" "r\1\263\250n\1\6\204\377\377\377\0\13\2\36[\250Vj\211\376r\203\223\377" "\347\350\345\377\332\334\333\3770Ha\377\40:V\377(A\\\377\314\320\322" "\377\262\177\30\377\347\307d\377\203\356\321r\377\7\356\321s\377\363" "\330x\377\355\302%\377\363\331|\377\310\232.\366\253r\1\302\250n\1\12" "\203\377\377\377\0\5\1\37]\356\211\231\255\377Kd\200\377\210\230\246" "\377\207\226\246\377\203-Jj\377\4o\202\225\377\253x\23\377\356\323w\377" "\355\302#\377\203\354\276\25\377\7\352\271\4\377\352\270\0\377\354\277" "\32\377\364\332{\377\315\2415\370\253r\1\320\250n\1\20\202\377\377\377" "\0\5\3!^\347\221\242\270\377Tp\217\377;[\177\377Kh\211\377\203;[\177" "\377\5Hf\206\377\241p\16\377\360\327\205\377\363\325g\377\362\322\\\377" "\202\361\321[\377\202\361\321Z\377\5\361\321Y\377\364\333\177\377\367" "\345\250\377\262|\22\371\250n\1~\202\377\377\377\0\3\5$`\320\206\233" "\266\377j\210\250\377\206Hl\224\377\3\242r\20\377\361\332\216\377\370" "\346\247\377\203\367\344\241\377\202\367\343\234\377\5\370\350\256\377" "\371\356\305\377\304\232=\365\253q\1\227\250n\1\1\202\377\377\377\0\4" "\5#_\251[t\234\373\244\272\321\377[\202\253\377\205U}\250\377\2\243s" "\22\377\355\324\203\377\203\371\356\307\377\6\371\356\310\377\372\356" "\304\377\371\351\260\377\370\354\302\377\277\2211\366\252q\1\206\204" "\377\377\377\0\23\0\40`\30\3!_\352w\216\260\376\252\276\324\377\203\241" "\301\377p\222\270\377o\221\267\377m\220\266\377n\221\267\377\245})\377" "\252u\14\377\243n\7\377\247o\3\366\253q\1\361\250p\2\376\371\356\311" "\377\370\352\276\377\272\212(\366\252p\1t\206\377\377\377\0\13\0\34[" "-\3\"_\337,G{\366\177\226\266\377\226\253\306\377\236\264\314\377\236" "\262\314\377\231\255\307\377g~\243\372\23""0i\370\2\36Yo\202\377\377" "\377\0\4\254r\1\345\361\340\254\377\265\203\36\367\251o\1c\207\377\377" "\377\0\20\0\0\0\15\0\0\0\34\0\25Ek\4!X\302\6#]\345\2\40]\371\4\"^\362" "\6\"\\\341\1\34O\256\0\12!N\0\0\0-\0\0\0\37\0\0\0\21\254r\1\346\256w" "\16\372\251o\1T\210\377\377\377\0\17\0\0\0\12\0\0\0\34\0\0\0-\0\0\0A" "\0\0\0P\0\0\0^\0\0\0f\0\0\0a\0\0\0T\0\0\0D\0\0\0""1\0\0\0\36\0\0\0\13" "\251o\1\320\250n\1F\215\377\377\377\0\5\0\0\0\6\0\0\0\13\0\0\0\17\0\0" "\0\12\0\0\0\4\204\377\377\377\0\1\250n\1\"\237\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_contacts_import) #endif #ifdef __GNUC__ const guint8 osmo_stock_contacts_import[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_contacts_import[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1497) */ "\0\0\5\361" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\213\377\377\377\0\10[O&\15TJ+\257@=5\366>;6\376=;6\376C\77""4\363PG" ",\263GB0\27\217\377\377\377\0\12WL(\\<:6\374:99\377@>A\377C@C\377C@D" "\377@>A\377;::\377=;6\374WL(V\215\377\377\377\0\5[O&.=;6\376\77=\77\377" "HEH\377IEI\377\202EBF\377\5GCG\377HDH\377\77=\77\377987\376SJ*0\214\377" "\377\377\0\14GB2\357><=\377EBE\377@>@\377;:;\37798:\377779\377668\377" "\77=\77\377IEI\377><=\377FA2\354\213\377\377\377\0\16kZ\36#778\377::" ";\377889\377mcP\377\241\213_\377\303\245l\377\305\250m\377\252\222c\377" "779\377C@D\377GCG\377668\377JD.-\212\377\377\377\0\16WM(y768\377zlR\377" "\272\237k\377\321\266\202\377\332\302\224\377\335\306\231\377\336\306" "\231\377\337\304\223\377\223\204f\377889\377=<<\377668\377ME-\205\212" "\377\377\377\0\16o]\34p\205sG\373\317\263|\377\344\313\237\377\350\322" "\252\377\351\325\256\377\350\322\252\377\344\314\240\377\340\305\223" "\377\333\275\206\377\276\243n\377\226\201W\377EA6\375WM(\211\212\377" "\377\377\0\16{e\26""8\226}5\367\331\274\206\377\340\306\224\377\343\312" "\233\377\344\314\236\377\343\312\234\377\340\306\224\377\334\300\212" "\377\330\271~\377\323\261q\377\316\251c\377\200j\33\366{e\26,\210\377" "\377\377\0\20""6o\4G\377\377\377\0{e\26\11|f\30\371\310\252l\377\333" "\276\207\377\335\301\215\377\336\303\217\377\335\301\215\377\333\276" "\207\377\330\271\177\377\324\263t\377\320\254h\377\274\232P\377}g\30" "\365{e\26\2\210\377\377\377\0\17""5p\4\3578o\5e\377\377\377\0|f\27o\207" "p#\365\323\263v\377\330\271~\377\330\271\177\377\330\271~\377\326\266" "y\377\324\262r\377\320\255i\377\312\244\\\377\203l\40\371|f\27f\211\377" "\377\377\0\17""6o\4\367By\21\3676o\4w{e\26\1eY'\353\205o&\377\302\242" "]\377\323\260p\377\322\260n\377\321\255j\377\317\252d\377\274\232P\377" "\206o%\377^V/\375\0\36^<\211\377\377\377\0\20""6o\4\367\232\277s\377" "I\200\32\365'Z\34\2764Iv\366\260\247\204\377}h\34\377\203m$\377\226{" "1\377\225z1\377\203l$\377}h\34\377\252\243\202\377\205\222\244\377\3" "\40\\\354\0\40`\20\203\377\377\377\0\1""5p\4\330\2047r\3\345\20""5o\4" "\376\247\311\203\377\244\307~\377K\200!\376Mv;\377\342\344\340\377\345" "\344\333\377\311\303\253\377]\\@\377[Z>\377\311\303\253\377\346\345\335" "\377\345\346\343\377}\212\230\377\77U}\366\0\37\\d\203\377\377\377\0" "\2""6p\4\373\232\277s\377\203\234\301v\377\10\236\302y\377\234\303s\377" "n\2460\377\244\307\177\377W\212*\377X\202;\377\351\352\344\377{\211\227" "\377\202\40:V\377\6u\204\223\377\355\355\351\377\243\254\263\377Mbx\377" "v\206\236\377\1!\\\303\203\377\377\377\0\3""6p\4\373\252\312\206\377" "a\237\36\377\203_\236\33\377\7S\226\12\377Q\225\7\377i\244)\377\244\310" "\177\377Z\214/\377\\\2118\377/Lg\377\203-Jj\377\5\310\316\320\377Ha{" "\3774Po\377\236\253\273\377\5#^\360\203\377\377\377\0\4""6p\4\373\266" "\322\230\377\222\274b\377\220\273`\377\202\217\273`\377\202\216\272_" "\377\5\216\272^\377\255\315\213\377\275\326\243\377<6\373>;5\377=;6\374JD0\336PH+n\217\377" "\377\377\0\13{e\26\3KD0\313768\377><=\377B@C\377C@C\377B@C\377><>\377" "878\377LE/\320\\P%\11\215\377\377\377\0\13SJ+\271988\377EBF\377IEI\377" "GDH\377EBE\377FCF\377GDG\377EBF\377:99\377JD0\323\214\377\377\377\0\15" "WL(Y778\377C@C\377A\77B\377@>\77\377668\377:9;\377668\377768\377EBF\377" "FBF\377778\377RI*n\213\377\377\377\0\15RI,\306879\377:::\377HEA\377\212" "yY\377\264\232f\377\306\250m\377\303\246l\377nbM\377=<=\377HDH\377><" "\77\377GB2\343\213\377\377\377\0\15HB2\363LG@\377\231\205]\377\313\256" "w\377\325\274\213\377\334\304\230\377\336\307\231\377\337\306\226\377" "\321\270\211\377UOF\377:9:\37799:\377;97\375\213\377\377\377\0\4m\\\"" "\355\257\227e\377\334\302\221\377\346\317\245\377\202\351\324\255\377" "\10\346\320\246\377\342\311\232\377\335\302\215\377\325\266~\377\251" "\220a\377vgG\377E@2\375668\1\212\377\377\377\0\15\201j\35\271\274\240" "a\377\336\302\217\377\341\310\230\377\343\313\235\377\343\313\236\377" "\342\310\231\377\336\303\220\377\332\275\205\377\326\265x\377\321\256" "k\377\260\220E\377\177h\32\307\213\377\377\377\0\4{e\26s\224{1\366\332" "\273\202\377\334\300\212\377\202\336\302\216\377\7\334\300\213\377\332" "\274\204\377\326\267z\377\322\260o\377\316\251c\377\225z-\367|f\27\201" "\213\377\377\377\0\4{e\26\13\177h\32\344\262\226P\376\327\267{\377\202" "\330\271\177\377\7\327\270|\377\325\264v\377\322\260n\377\317\252d\377" "\263\222H\377}g\32\353{e\26\16\214\377\377\377\0\14HI2\\yd\33\377\242" "\207@\377\321\256m\377\323\260o\377\322\257m\377\320\254h\377\313\247" "`\377\244\206<\377|g\33\377$3H\327\0\0U\3\213\377\377\377\0\15\0\34U" "\11\1\37[\347\237\244\244\377\216}A\377~h\35\377\212r*\377\234\2004\377" "\213s*\377~h\35\377\204s5\377\274\275\262\3774Kx\370\2\40[\201\213\377" "\377\377\0\16\0\35^O\40;j\363\264\273\300\377\355\355\351\377\332\326" "\305\377\233\227|\377LK,\377\217\214q\377\330\324\303\377\355\354\350" "\377\227\241\250\377\213\227\246\377\4!]\361\0\0U\3\212\377\377\377\0" "\16\2\36[\250Vj\211\376r\203\223\377\347\350\345\377\332\334\333\377" "0Ha\377\40:V\377(A\\\377\314\320\322\377\355\355\351\377DZp\377\205\224" "\243\377/Hy\366\0\40\\@\212\377\377\377\0\5\1\37]\356\211\231\255\377" "Kd\200\377\210\230\246\377\207\226\246\377\203-Jj\377\6o\202\225\377" "\241\254\267\377-Jj\377h}\224\377^r\224\371\0\36\\o\212\377\377\377\0" "\5\3!^\347\221\242\270\377Tp\217\377;[\177\377Kh\211\377\203;[\177\377" "\11Ie\205\377\206\14\20\377\223\20\21\377\227\26\27\377\226\26\27\377" "\226\23\24\371\230\23\23\365\231\25\25\365\232\27\27\366\203\232\30\30" "\366\2\227\20\20\365\221\0\0\334\202\377\377\377\0\3\5$`\320\206\233" "\266\377j\210\250\377\205Hl\224\377\3Ji\217\377\225\26\30\377\342\225" "\225\377\206\340\217\217\377\5\337\213\213\377\334\201\201\377\334\177" "\177\377\341\220\220\377\225\12\12\365\202\377\377\377\0\4\5#_\251[t" "\234\373\244\272\321\377[\202\253\377\204U}\250\377\11Wy\243\377\225" "\27\31\377\327pp\377\311::\377\312\77\77\377\30744\377\303%%\377\277" "\27\27\377\273\10\10\377\203\271\0\0\377\2\315KK\377\224\11\11\365\202" "\377\377\377\0\13\0\40`\30\3!_\352w\216\260\376\252\276\324\377\203\241" "\301\377p\222\270\377o\221\267\377m\220\266\377o\214\261\377\224\17\21" "\377\321XX\377\211\315KK\377\2\321XX\377\223\6\6\365\203\377\377\377" "\0\13\0\34[-\3\"_\337,G{\366\177\226\266\377\226\253\306\377\236\264" "\314\377\236\262\314\377\231\254\305\377\213\16\22\376\217\13\15\377" "\223\15\16\367\210\226\15\15\363\2\225\11\11\362\220\0\0\337\202\377" "\377\377\0\17\0\0\0\1\0\0\0\15\0\0\0\34\0\25Ek\4!X\302\6#]\345\2\40]" "\371\4\"^\362\6\"\\\341\3\34N\257\16\11\36T\26\0\0""4\36\0\0&.\0\0\30" "`\0\0\14\206\216\0\0\10\1\216\0\0\2\202\377\377\377\0\17\0\0\0\1\0\0" "\0\13\0\0\0\34\0\0\0-\0\0\0A\0\0\0P\0\0\0]\0\0\0e\0\0\0`\0\0\0T\0\0\0" "D\0\0\0""1\0\0\0\36\0\0\0\13\0\0\0\1\215\377\377\377\0\6\0\0\0\1\0\0" "\0\6\0\0\0\13\0\0\0\16\0\0\0\12\0\0\0\4\244\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_contacts_export) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_contacts_export[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_contacts_export[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1213) */ "\0\0\4\325" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\202\377\377\377\0\7\\P%\11UL+\253A>6\367=;6\376;:7\376GB3\354NG,\203" "\214\377\377\377\0\4^Q$9><6\373=<;\377C@C\377\202EBF\377\4A>A\377;99" "\376JD1\336PG+\10\211\377\377\377\0\13QI+\12C\77""4\370A\77@\377IEI\377" "DAE\377@>A\377A>A\377B\77C\377GDG\377<;;\377LE/\306\211\377\377\377\0" "\14UK+\247;::\377@>A\377=<=\377GDB\377pgX\377pgW\377EB\77\377A\77B\377" "FCG\377888\377RI*>\210\377\377\377\0\14LF1\352668\377^VG\377\244\215" "`\377\307\251o\377\313\257w\377\317\263|\377\247\222k\377;::\377A>B\377" "<:;\377LE-\242\210\377\377\377\0\14SJ-\371\234\207^\377\327\274\212\377" "\342\315\242\377\354\331\264\377\352\326\260\377\345\316\242\377\337" "\305\222\377\255\227n\377bXH\377;:9\377KD0\323\210\377\377\377\0\14\204" "l\37\331\307\252n\377\340\306\225\377\344\314\240\377\346\317\244\377" "\344\315\241\377\341\307\227\377\334\300\212\377\327\267|\377\321\256" "l\377\230~8\371l[\35\200\210\377\377\377\0\16\200i\33\231\254\221N\375" "\334\277\210\377\336\303\220\377\337\305\223\377\337\304\221\377\334" "\277\212\377\330\271\177\377\324\262r\377\317\252d\377\211p\"\357{e\26" "8\377\377\377\0\250n\1\31\206\377\377\377\0\17{e\26$\200i\33\363\314" "\255n\377\330\272\177\377\331\273\202\377\331\272\200\377\327\267z\377" "\323\262r\377\317\253g\377\253\214B\376\177h\32\313{e\26\1\377\377\377" "\0\252p\1\223\254r\1r\206\377\377\377\0\12QM0\236~i!\376\274\235Y\377" "\323\261p\377\322\260o\377\321\255j\377\315\250b\377\245\207>\377zf\40" "\376\32-M\234\202\377\377\377\0\3\256u\1\236\257y\15\373\254r\1\203\204" "\377\377\377\0\21\0\36\\\35\10%`\362\274\272\251\377\203p+\377\200k\"" "\377\216v/\377\210q*\377~i\36\377\214\177J\377\266\271\270\377\";o\364" "\0\36\\;\377\377\377\0\256u\1\236\341\275V\377\304\226.\363\254s\1\222" "\203\377\377\377\0\31\0\36\\qK_\201\372\274\301\305\377\355\355\351\377" "\316\315\301\377HND\377hmd\377\345\344\333\377\355\355\351\377\251o\4" "\377\255y\24\377\254v\20\373\257y\17\365\260y\16\366\346\305b\377\363" "\331|\377\310\2333\364\254s\1\242\250n\1\2\377\377\377\0\3!\\\317~\215" "\242\377k}\217\377\355\355\351\377Wk\200\377\202$\77\\\377\4\227\242" "\254\377\340\342\340\377\254z\27\377\365\334\201\377\203\363\326j\377" "\12\361\321X\377\353\274\20\377\363\327p\377\314\2419\366\254s\1\257" "\250n\1\4\3!^\366\240\256\276\3774Rt\377\214\234\254\377\2033Qs\377\5" "Vo\211\377l\201\227\377\254{\30\377\363\330u\377\354\300\36\377\203\355" "\301\37\377\10\355\301\40\377\356\304*\377\365\334\205\377\316\246E\371" "\253r\1\262\4\"_\346\237\257\303\377Eg\214\377\206Ad\211\377\2\255{\30" "\377\367\345\243\377\205\367\343\234\377\7\370\350\255\377\367\351\273" "\377\270\205\40\362\251o\1F\7%b\314\220\244\277\377p\217\261\377\206" "Pv\240\377\2\257}\32\377\371\351\261\377\203\372\357\305\377\30\372\354" "\274\377\370\350\255\377\366\350\272\377\266\204\36\360\250n\1;\377\377" "\377\0\1\37]P\40s\363\2\37Z`\202\377\377\377\0\4\256u\1\236" "\344\313\215\377\266\202\34\353\250n\1*\204\377\377\377\0\17\0\0\0\16" "\0\17-5\5\40V\247\6$^\344\3!^\370\3!]\371\5#]\356\5\37S\276\0\14%Z\0" "\0\0""1\0\0\0!\0\0\0\21\255t\1\235\254t\4\353\250n\1#\205\377\377\377" "\0\16\0\0\0\4\0\0\0\20\0\0\0\36\0\0\0/\0\0\0B\0\0\0T\0\0\0R\0\0\0@\0" "\0\0.\0\0\0\36\0\0\0\20\0\0\0\2\250n\1i\250n\1\34\205\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_button_contacts_import) #endif #ifdef __GNUC__ const guint8 osmo_stock_button_contacts_import[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_button_contacts_import[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1198) */ "\0\0\4\306" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\211\377\377\377\0\7\\P%\11UL+\253A>6\367=;6\376;:7\376GB3\354NG,\203" "\214\377\377\377\0\4^Q$9><6\373=<;\377C@C\377\202EBF\377\4A>A\377;99" "\376JD1\336PG+\10\211\377\377\377\0\13QI+\12C\77""4\370A\77@\377IEI\377" "DAE\377@>A\377A>A\377B\77C\377GDG\377<;;\377LE/\306\211\377\377\377\0" "\14UK+\247;::\377@>A\377=<=\377GDB\377pgX\377pgW\377DB\77\377A\77B\377" "FCG\377888\377RI*>\210\377\377\377\0\14LF1\352668\377^VG\377\244\215" "`\377\307\251o\377\314\257w\377\317\263|\377\247\222k\377;::\377A>B\377" "<:;\377LE-\242\210\377\377\377\0\14SJ-\371\233\207^\377\327\274\212\377" "\342\315\242\377\354\330\265\377\352\326\260\377\345\316\242\377\337" "\305\222\377\255\227n\377bXH\377;:9\377KD0\323\210\377\377\377\0\14\204" "l\37\331\307\252n\377\340\306\225\377\344\314\240\377\346\317\244\377" "\344\315\241\377\341\307\227\377\334\300\212\377\327\267|\377\321\256" "l\377\230~9\371l[\35\200\205\377\377\377\0\1""5o\4\31\202\377\377\377" "\0\14\200i\33\231\254\222N\375\334\277\210\377\336\303\220\377\337\305" "\223\377\337\304\221\377\334\277\212\377\330\271\177\377\324\262r\377" "\317\252d\377\211p\"\357{e\26""8\205\377\377\377\0\17""6p\4\2237q\4r" "\377\377\377\0{e\26$\200i\33\363\314\255n\377\330\272\177\377\331\273" "\202\377\331\272\200\377\327\267z\377\323\262r\377\317\253g\377\253\214" "B\376\177h\32\313{e\26\1\205\377\377\377\0\16""7r\4\236\77x\20\3737q" "\4\203\377\377\377\0QM0\236~i!\376\274\235Y\377\323\261p\377\322\260" "o\377\321\255j\377\315\250b\377\245\207>\377zf\40\376\32-M\234\206\377" "\377\377\0\21""7r\4\236\204\257Z\377^\2201\3633k\13\237\10%`\362\274" "\272\251\377\203p+\377\200k\"\377\216v/\377\210q*\377~i\36\377\214\177" "J\377\266\271\270\377\"k1\375\273\300" "\303\377\355\355\351\377\316\315\301\377HND\377hmd\377\345\344\333\377" "\355\355\351\377|\210\223\377r\201\230\376\1\37[\250\377\377\377\0E|" "\26\363\251\312\204\377\203\231\301n\377\7\215\272\\\377\\\234\27\377" "\235\303t\377i\230\77\377Hu0\377\352\353\345\377Wk\200\377\202$\77\\" "\377\11\227\242\254\377\340\342\340\377.Gb\377\221\236\256\377\20,e\363" "\0\36\\\2E|\26\363\240\305y\377e\241$\377\203f\242%\377\5g\242&\377m" "\246/\377\254\315\211\377p\234I\377P~7\377\2033Qs\377\10Vo\211\377l\201" "\227\3773Qs\377\205\227\253\377%>s\371\0\36\\\4E|\26\363\300\331\246" "\377\205\273\326\237\377\4\307\335\260\377\317\341\274\377N\202'\377" ">gd\377\206Ad\211\377\5\226\251\276\377\34""7n\371\377\377\377\0E|\26" "\363\312\337\263\377\203\327\347\307\377\5\321\343\276\377\307\335\260" "\377\317\340\274\377Q\203*\377b\210\211\377\206Pv\240\377\6g\210\254" "\377\221\244\277\377\6%a\273\377\377\377\0""6p\6\376E{\27\365\202H~\33" "\365\17I~\32\366\307\333\263\377\316\340\273\377L\200!\364#F\\\366\250" "\273\322\377\202\240\300\377_\205\257\377Z\201\254\377X\200\253\377X" "\200\254\377x\230\273\377\244\270\317\377'Bw\365\0\36\\:\205\377\377" "\377\0\16""7r\4\236\251\305\216\377L\201\37\3535o\4*\4\"_r\30""4l\365" "p\210\254\374\246\270\320\377\255\300\326\377\257\302\327\377\252\275" "\322\377\203\230\270\375#>s\363\2\37Z`\206\377\377\377\0\20""7r\4\235" "9s\7\3535o\4#\377\377\377\0\0\0\0\16\0\17-5\5\40V\247\6$^\344\3!^\370" "\3!]\371\5#]\356\5\37S\276\0\14%Z\0\0\0""1\0\0\0!\0\0\0\21\204\377\377" "\377\0\2""5o\4i5o\4\34\202\377\377\377\0\14\0\0\0\4\0\0\0\20\0\0\0\36" "\0\0\0/\0\0\0B\0\0\0T\0\0\0R\0\0\0@\0\0\0.\0\0\0\36\0\0\0\20\0\0\0\2"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_systray_birthday) #endif #ifdef __GNUC__ const guint8 osmo_stock_systray_birthday[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_systray_birthday[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (6112) */ "\0\0\27\370" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (256) */ "\0\0\1\0" /* width (64) */ "\0\0\0@" /* height (64) */ "\0\0\0@" /* pixel_data: */ "\377\377\377\377\0\256\377\377\377\0\2\211\0\0\15\200\0\0\4\274\377\377" "\377\0\5\212\0\0;\210\0\0\237\211\0\0\364\210\0\0\310\207\0\0\"\272\377" "\377\377\0\1\211\0\0l\204\211\0\0\377\2\211\0\0\362\212\0\0;\250\377" "\377\377\0\2\222\0\0\7\226\0\0\21\216\377\377\377\0\1\210\0\0r\206\211" "\0\0\377\1\211\0\0\300\246\377\377\377\0\6\237\0\0\10\222\0\0|\221\0" "\0\346\221\0\0\375\221\0\0\314\221\0\0A\213\377\377\377\0\1\211\0\0j" "\203\211\0\0\377\2\223\23\23\377\267UW\377\203\211\0\0\377\1\210\0\0" ":\244\377\377\377\0\2\237\0\0\10\222\0\0\270\204\221\0\0\377\1\221\0" "\0\311\212\377\377\377\0\2\211\0\0""8\211\0\0\372\202\211\0\0\377\4\223" "\21\20\377\345\237\237\377\371\307\313\377\234$%\377\202\211\0\0\377" "\1\211\0\0\244\243\377\377\377\0\2\237\0\0\10\222\0\0\270\206\221\0\0" "\377\1\223\0\0B\210\377\377\377\0\2\214\0\0\24\211\0\0\342\202\211\0" "\0\377\5\221\14\13\377\343\214\210\377\366\262\257\377\367\275\276\377" "\315z|\377\202\211\0\0\377\2\210\0\0\361\200\0\0\6\241\377\377\377\0" "\2\237\0\0\10\222\0\0\270\203\221\0\0\377\2\253\36\27\377\242\21\14\377" "\202\221\0\0\377\1\221\0\0\273\207\377\377\377\0\2\200\0\0\2\210\0\0" "\271\202\211\0\0\377\7\212\1\1\377\324h_\377\363\233\223\377\364\247" "\241\377\366\262\260\377\357\260\261\377\213\3\3\377\202\211\0\0\377" "\1\210\0\0K\240\377\377\377\0\2\222\0\0\7\222\0\0\270\203\221\0\0\377" "\3\254!\33\377\350dL\377\315=,\377\203\221\0\0\377\1\220\0\0\27\206\377" "\377\377\0\1\211\0\0\200\203\211\0\0\377\7\273=4\377\360\205v\377\361" "\220\205\377\363\234\223\377\364\247\242\377\366\263\261\377\24734\377" "\202\211\0\0\377\1\210\0\0\237\240\377\377\377\0\1\221\0\0\211\203\221" "\0\0\377\5\252\"\35\377\352mY\377\353fN\377\351Z@\377\226\5\3\377\202" "\221\0\0\377\2}\31\31hQQQ\23\204\377\377\377\0\2\210\0\0G\211\0\0\375" "\202\211\0\0\377\10\244\34\25\377\354nY\377\356zh\377\360\205w\377\361" "\221\206\377\363\234\224\377\364\250\243\377\313lk\377\202\211\0\0\377" "\2\211\0\0\355\200\0\0\4\236\377\377\377\0\12\222\0\0\77\221\0\0\375" "\222\3\3\377\226\13\13\377\256.+\377\354{j\377\355q]\377\353fN\377\352" "[A\377\246\23\14\377\202\221\0\0\377\7o+,\377RRT\372RRT\264QQT[UUU\14" "\215\0\0\35\211\0\0\353\202\211\0\0\377\12\224\11\6\377\343Q9\377\353" "dL\377\355o[\377\356{i\377\360\206x\377\361\221\206\377\363\235\225\377" "\354\232\226\377\212\2\2\377\202\211\0\0\377\1\211\0\0E\235\377\377\377" "\0\13\231\0\0\17\221\0\0\341\221\0\0\377\235\33\33\377\264JH\377\360" "\240\226\377\361\221\203\377\355s_\377\353fN\377\352[A\377\266#\26\377" "\202\221\0\0\377\1{\34\35\377\203RRT\377\2SPR\365\201\15\15\354\202\211" "\0\0\377\13\213\1\0\377\3234\32\377\350M/\377\352Y>\377\353dM\377\355" "p[\377\356{j\377\360\206x\377\362\222\207\377\363\235\226\377\245,*\377" "\202\211\0\0\377\1\211\0\0\231\235\377\377\377\0\1\221\0\0\244\202\221" "\0\0\377\10\270YY\377\360\303\277\377\371\320\313\377\366\272\261\377" "\356xf\377\353fN\377\352[A\377\3072\40\377\202\221\0\0\377\5\211\17\17" "\377^KL\377\\BD\377TOQ\377z\35\36\377\203\211\0\0\377\13\276\31\2\377" "\3457\23\377\347B\"\377\350N0\377\352Y\77\377\353eM\377\355p\\\377\356" "|j\377\360\207y\377\362\222\210\377\310^Y\377\202\211\0\0\377\2\211\0" "\0\351\252\0\0\3\233\377\377\377\0\1\221\0\0X\203\221\0\0\377\12\345" "\263\261\377\375\354\352\377\375\355\353\377\372\333\327\377\357|j\377" "\353fN\377\352[A\377\327A)\377\220\0\0\377\211\0\0\377\203\205\0\0\377" "\2\206\3\3\377\210\0\0\377\202\211\0\0\377\15\251\16\0\377\343(\0\377" "\344,\5\377\3457\24\377\347C\"\377\350N1\377\352Z\77\377\353eN\377\355" "q\\\377\357|k\377\360\210z\377\350\206|\377\212\1\1\377\202\211\0\0\377" "\1\210\0\0>\232\377\377\377\0\2\252\0\0\3\221\0\0\337\202\221\0\0\377" "\16\245!\40\377\370\316\311\377\373\343\340\377\374\343\340\377\371\317" "\311\377\356yf\377\353fN\377\352[A\377\334E,\377\207\0\0\377\205\0\0" "\377\214\16\16\377\213\14\14\377\205\1\1\377\202\205\0\0\377\3\210\0" "\0\377\230\7\0\377\337&\0\377\202\343(\0\377\12\344-\6\377\3458\24\377" "\347C#\377\350O1\377\352Z@\377\353fO\377\355q]\377\357}l\377\360\210" "z\377\237\37\35\377\202\211\0\0\377\1\212\0\0q\232\377\377\377\0\1\223" "\0\0I\203\221\0\0\377\16\224\5\5\377\265LK\377\313|{\377\322\210\205" "\377\313nj\377\304A6\377\331R\77\377\351Z@\377\230\17\12\377\205\0\0" "\377\206\2\2\377\260WV\377\266VN\377\224\17\6\377\202\205\0\0\377\2\210" "\1\0\377\325\"\0\377\204\343(\0\377\11\344-\6\377\3458\25\377\347D$\377" "\350O2\377\352[A\377\354fO\377\355r^\377\357}l\377\2574.\377\202\211" "\0\0\377\1\211\0\0\231\232\377\377\377\0\1\223\0\0-\204\221\0\0\377\4" "\227\15\15\377\237!!\377\241&&\377\230\20\20\377\202\221\0\0\377\1\225" "\5\4\377\202\205\0\0\377\4\213\10\5\377\355\305\273\377\356\275\256\377" "\3076\13\377\202\205\0\0\377\1\214\3\0\377\206\343(\0\377\10\344.\7\377" "\3459\26\377\347D$\377\350P3\377\352[A\377\354gP\377\355r_\377\277C:" "\377\202\211\0\0\377\1\211\0\0\300\231\377\377\377\0\4UUU\36QQT\235\204" "\21\22\376\217\3\3\377\202\221\0\0\377\3\221\1\1\377\223\5\5\377\224" "\6\6\377\203\221\0\0\377\1\214\0\0\377\202\205\0\0\377\4\244\32\5\377" "\361\312\276\377\355\274\254\377\266(\11\377\202\205\0\0\377\1\226\10" "\0\377\207\343(\0\377\7\344.\10\377\345:\26\377\347E%\377\351P3\377\352" "\\B\377\354gQ\377\315N@\377\202\211\0\0\377\3\205\5\6\371RRU`UUU\17\225" "\377\377\377\0\3NNY\27SST\221RRT\370\202RRT\377\12SRT\377\\MN\377\210" "hi\377\260\202\202\377\262vv\377\255cc\377\247PP\377\234&&\377\221\1" "\1\377\215\0\0\377\202\205\0\0\377\4\222\12\1\377\316nY\377\302]K\377" "\207\4\3\377\202\205\0\0\377\1\263\23\0\377\210\343(\0\377\6\344/\10" "\377\345:\27\377\347E%\377\351Q4\377\352\\C\377\333VC\377\203\211\0\0" "\377\3VMO\377SST\371PPRs\222\377\377\377\0\3PPP\20RRT\206RRT\364\203" "RRT\377\3TTV\377\201\200\201\377\273\271\272\377\205\311\307\307\377" "\4\313\246\246\377\314\"\"\377\272\0\0\377\211\0\0\377\202\205\0\0\377" "\2\215\20\20\377\212\13\13\377\203\205\0\0\377\2\236\11\0\377\326\"\0" "\377\210\343(\0\377\5\344/\11\377\346;\30\377\347F&\377\351Q5\377\350" "ZA\377\203\211\0\0\377\3^AB\377RRT\377SST\364\220\377\377\377\0\3]]]" "\13RRTzRRT\357\203RRT\377\3SSU\377{z|\377\270\266\266\377\205\311\307" "\307\377\3\311\306\306\377\315qq\377\322\6\6\377\202\323\0\0\377\2\274" "\1\1\377\207\0\0\377\204\205\0\0\377\1\206\0\0\377\203\211\0\0\377\15" "\233\10\0\377\262\22\0\377\272\26\0\377\302\31\0\377\310\34\0\377\320" "\40\0\377\330#\0\377\334%\0\377\336&\0\377\342/\12\377\344:\30\377\335" "\77#\377\3138$\377\203\211\0\0\377\3[EF\377RRT\377SSU\361\217\377\377" "\377\0\2PPP\20RRU\337\204RRT\377\2vuw\377\264\262\262\377\206\311\307" "\307\377\2\313\263\263\377\32077\377\203\323\0\0\377\10\324\3\3\377\324" "\12\12\377\310\10\10\377\251\0\0\377\246\0\0\377\253\0\0\377\267\0\0" "\377\243\31\31\377\222\211\0\0\377\1\203\11\11\377\202RRT\377\1RRT\351" "\217\377\377\377\0\1RRT\300\204RRT\377\3__a\377\233\232\233\377\304\302" "\302\377\205\311\307\307\377\2\315\205\205\377\322\16\16\377\203\323" "\0\0\377\3\323\6\6\377\324\13\13\377\323\5\5\377\203\323\0\0\377\5\321" "\24\24\377\314\214\214\377\310\305\305\377\253hh\377\222\33\33\377\220" "\211\0\0\377\4o34\377SSU\377RRT\377RRT\352\217\377\377\377\0\207RRT\377" "\6XXZ\377\201\201\202\377\260\257\257\377\311\307\307\377\312\275\275" "\377\320KK\377\203\323\0\0\377\1\323\1\1\377\202\324\11\11\377\1\323" "\1\1\377\203\323\0\0\377\2\320KK\377\311\273\273\377\204\311\307\307" "\377\7\274\234\234\377\247\\\\\377\237EE\377\23266\377\226&&\377\220" "\27\27\377\213\7\7\377\206\211\0\0\377\7\207\3\3\377\201\14\15\377\205" "OP\377\302\301\301\377UUW\377RRT\377RRT\353\217\377\377\377\0\1RRT\374" "\211RRT\377\3hhj\377\266JJ\377\322\5\5\377\204\323\0\0\377\1\323\1\1" "\377\203\323\0\0\377\2\322\26\26\377\313\216\216\377\215\311\307\307" "\377\10\273\265\265\377k^_\377YHI\377ZEG\377\\DF\377WLM\377jjl\377\261" "\260\261\377\202\313\312\312\377\3VVX\377RRT\377RRT\354\217\377\377\377" "\0\5RRT\371RRT\377ZZ\\\377\223\224\224\377^^_\377\207RRT\377\3_OQ\377" "\244EE\377\316\31\31\377\205\323\0\0\377\2\317MM\377\311\273\273\377" "\214\311\307\307\377\3\310\306\306\377\211\210\212\377TTU\377\203RRT" "\377\3ZZ\\\377\232\231\232\377\312\311\311\377\203\313\312\312\377\3" "WWY\377RRT\377RRT\355\217\377\377\377\0\10RRT\366RRT\377^^_\377\350\351" "\347\377\345\346\344\377\267\270\270\377\177\177\201\377UUW\377\207R" "RT\377\5\201JK\377\27522\377\322\4\4\377\322\27\27\377\314\220\220\377" "\215\311\307\307\377\2\256\254\254\377]]_\377\203RRT\377\3TSU\377\242" "PQ\377\313jj\377\205\313\312\312\377\3WWY\377RRT\377SST\356\217\377\377" "\377\0\3RRT\363RRT\377\\\\]\377\204\350\351\347\377\3\332\333\332\377" "\244\245\245\377kkm\377\207RRT\377\4^MO\377\177st\377\251\247\250\377" "\310\306\306\377\212\311\307\307\377\2\302\300\300\377wvx\377\204RRT" "\377\4{Z[\377\314+,\377\325\0\0\377\320bb\377\205\313\312\312\377\3W" "WY\377RRT\377RRT\357\217\377\377\377\0\3RRT\360RRT\377ZZ\\\377\207\350" "\351\347\377\3\312\312\311\377\236qq\377tJJ\377\207RRT\377\3__`\377\217" "\216\217\377\275\273\273\377\206\311\307\307\377\3\310\306\306\377\231" "\230\230\377VVX\377\203RRT\377\3\\XZ\377\267OO\377\325\6\6\377\202\325" "\0\0\377\1\320ee\377\205\313\312\312\377\3XXZ\377RRT\377RRT\360\217\377" "\377\377\0\3RRT\355RRT\377WWY\377\210\350\351\347\377\5\337\203\202\377" "\323\0\0\377\314''\377\233RR\377VRT\377\206RRT\377\4SSU\377tsu\377\245" "\244\244\377\310\306\306\377\202\311\307\307\377\2\263\261\261\377ee" "g\377\203RRT\377\3SSU\377\214rs\377\321!!\377\204\325\0\0\377\1\317g" "g\377\205\313\312\312\377\3XXZ\377RRT\377QQT\361\217\377\377\377\0\3" "RRT\352RRT\377UUW\377\210\350\351\347\377\1\337\203\202\377\203\323\0" "\0\377\3\323\26\26\377\272SS\377qbc\377\207RRT\377\3[[]\377\207\206\207" "\377|{|\377\204RRT\377\3jjl\377\262\261\261\377\316\221\221\377\205\325" "\0\0\377\1\320hh\377\205\313\312\312\377\3XXZ\377RRT\377RRT\362\217\377" "\377\377\0\3RRT\347RRT\377SSU\377\210\350\351\347\377\1\337\203\202\377" "\205\323\0\0\377\4\340\227\225\377\307\310\306\377\216\216\216\377[[" "]\377\211RRT\377\5[[]\377\233\232\233\377\312\311\311\377\313\312\312" "\377\316\221\221\377\202\325\0\0\377\1\326\34\34\377\202\325\0\0\377" "\1\320ii\377\205\313\312\312\377\3YY[\377RRT\377RRT\363\217\377\377\377" "\0\1RRT\344\202RRT\377\210\350\351\347\377\1\337\203\202\377\202\323" "\0\0\377\1\323\17\16\377\202\323\0\0\377\1\341\232\231\377\202\350\351" "\347\377\4\343\344\342\377\263\264\263\377{{|\377SSU\377\204RRT\377\3" "SSU\377\202\202\203\377\302\301\301\377\203\313\312\312\377\1\316\221" "\221\377\202\325\0\0\377\1\326\35\34\377\202\325\0\0\377\1\317kk\377" "\205\313\312\312\377\3ZZ\\\377RRT\377RRT\364\217\377\377\377\0\1RRT\341" "\202RRT\377\1\345\346\344\377\207\350\351\347\377\1\337\203\202\377\202" "\323\0\0\377\1\324\"\"\377\202\323\0\0\377\1\341\235\234\377\205\350" "\351\347\377\2\327\330\327\377\223\224\224\377\202RRT\377\2ZZ\\\377\262" "\261\261\377\205\313\312\312\377\1\316\221\221\377\202\325\0\0\377\1" "\326\34\34\377\202\325\0\0\377\1\320mm\377\205\313\312\312\377\3ZZ\\" "\377RRT\377RRT\365\217\377\377\377\0\1RRT\336\202RRT\377\1\344\345\343" "\377\207\350\351\347\377\1\337\203\202\377\202\323\0\0\377\1\325!!\377" "\202\323\0\0\377\1\341\240\237\377\206\350\351\347\377\1\313\314\313" "\377\202RRT\377\1eeg\377\206\313\312\312\377\1\316\221\221\377\202\325" "\0\0\377\1\326\34\34\377\202\325\0\0\377\1\320nn\377\205\313\312\312" "\377\3[Z[\377RRT\377RRT\367\217\377\377\377\0\1RRT\333\202RRT\377\1\342" "\343\341\377\207\350\351\347\377\1\337\203\202\377\202\323\0\0\377\1" "\324\40\40\377\202\323\0\0\377\1\342\242\240\377\206\350\351\347\377" "\1\311\311\310\377\202RRT\377\1eeg\377\206\313\312\312\377\1\316\221" "\221\377\202\325\0\0\377\1\326\34\33\377\202\325\0\0\377\1\317pp\377" "\205\313\312\312\377\3ZZ\\\377RRT\377RRT\370\217\377\377\377\0\1QQT\330" "\202RRT\377\1\340\341\337\377\207\350\351\347\377\1\337\203\202\377\202" "\323\0\0\377\1\325\37\37\377\202\323\0\0\377\1\342\244\243\377\206\350" "\351\347\377\1\305\306\305\377\202RRT\377\1fef\377\206\313\312\312\377" "\1\316\221\221\377\202\325\0\0\377\1\325\33\33\377\202\325\0\0\377\1" "\320qq\377\205\313\312\312\377\3[[]\377RRT\377RRT\371\217\377\377\377" "\0\1QQT\325\202RRT\377\1\336\336\336\377\207\350\351\347\377\1\337\203" "\202\377\202\323\0\0\377\1\324\36\35\377\202\323\0\0\377\1\342\246\245" "\377\206\350\351\347\377\1\302\303\303\377\202RRT\377\1fef\377\206\313" "\312\312\377\1\316\221\221\377\202\325\0\0\377\1\325\33\33\377\202\325" "\0\0\377\1\317ss\377\205\313\312\312\377\3\\\\]\377RRT\377RRT\372\217" "\377\377\377\0\1SST\322\202RRT\377\1\334\335\333\377\207\350\351\347" "\377\1\337\203\202\377\202\323\0\0\377\1\325\35\34\377\202\323\0\0\377" "\1\342\251\250\377\206\350\351\347\377\1\301\302\301\377\202RRT\377\1" "fef\377\206\313\312\312\377\1\316\221\221\377\202\325\0\0\377\1\326\32" "\32\377\202\325\0\0\377\1\317tt\377\205\313\312\312\377\3\\\\]\377RR" "T\377RRT\373\217\377\377\377\0\1SST\317\202RRT\377\1\332\333\331\377" "\207\350\351\347\377\1\337\203\202\377\202\323\0\0\377\1\324\34\33\377" "\202\323\0\0\377\1\342\253\251\377\206\350\351\347\377\1\276\277\276" "\377\202RRT\377\1eeg\377\206\313\312\312\377\1\316\221\221\377\202\325" "\0\0\377\1\326\32\32\377\202\325\0\0\377\1\320vv\377\205\313\312\312" "\377\3\\\\^\377RRT\377RRT\374\217\377\377\377\0\1SST\314\202RRT\377\1" "\330\330\327\377\207\350\351\347\377\1\337\203\202\377\202\323\0\0\377" "\1\325\33\32\377\202\323\0\0\377\1\343\256\254\377\206\350\351\347\377" "\1\274\274\273\377\202RRT\377\1eeg\377\206\313\312\312\377\1\316\221" "\221\377\202\325\0\0\377\1\326\32\31\377\202\325\0\0\377\1\317xx\377" "\205\313\312\312\377\3]\\^\377RRT\377RRT\375\217\377\377\377\0\1RRT\311" "\202RRT\377\1\326\327\325\377\207\350\351\347\377\1\337\203\202\377\202" "\323\0\0\377\1\324\32\31\377\202\323\0\0\377\1\343\260\257\377\206\350" "\351\347\377\1\271\272\271\377\202RRT\377\1eeg\377\206\313\312\312\377" "\1\316\221\221\377\202\325\0\0\377\1\325\31\31\377\202\325\0\0\377\1" "\317xx\377\205\313\312\312\377\3]]^\377RRT\377RRT\376\217\377\377\377" "\0\1RRT\306\202RRT\377\1\323\324\323\377\207\350\351\347\377\1\337\203" "\202\377\202\323\0\0\377\1\325\31\30\377\202\323\0\0\377\1\343\262\261" "\377\206\350\351\347\377\1\266\267\266\377\202RRT\377\1ffh\377\206\313" "\312\312\377\1\316\221\221\377\202\325\0\0\377\1\325\31\31\377\202\325" "\0\0\377\1\317zz\377\204\313\312\312\377\2\251\250\251\377UUW\377\202" "RRT\377\217\377\377\377\0\1RRT\303\202RRT\377\1\321\322\322\377\207\350" "\351\347\377\1\337\203\202\377\202\323\0\0\377\1\324\30\27\377\202\323" "\0\0\377\1\343\265\263\377\206\350\351\347\377\1\264\264\264\377\202" "RRT\377\1ffh\377\206\313\312\312\377\1\316\221\221\377\202\325\0\0\377" "\1\326\31\30\377\202\325\0\0\377\1\317||\377\202\313\312\312\377\2\305" "\304\304\377\202\202\203\377\203RRT\377\1RRT\306\217\377\377\377\0\1" "RRT\300\202RRT\377\1\320\321\320\377\207\350\351\347\377\1\337\203\202" "\377\202\323\0\0\377\1\324\27\26\377\202\323\0\0\377\1\344\267\265\377" "\206\350\351\347\377\1\261\262\261\377\202RRT\377\1ggi\377\206\313\312" "\312\377\1\316\221\221\377\202\325\0\0\377\1\325\17\16\377\202\325\0" "\0\377\4\317}}\377\313\312\312\377\256\256\256\377bbd\377\203RRT\377" "\2RRT\327QQQ,\217\377\377\377\0\1RRT\275\202RRT\377\1\315\316\315\377" "\207\350\351\347\377\1\337\203\202\377\202\323\0\0\377\1\324\26\25\377" "\202\323\0\0\377\1\344\271\270\377\206\350\351\347\377\1\257\257\260" "\377\202RRT\377\1ggi\377\206\313\312\312\377\1\316\221\221\377\205\325" "\0\0\377\3\314\177\177\377\211\211\212\377SSU\377\202RRT\377\3RRT\376" "RRT\217UUU\11\220\377\377\377\0\1RRT\272\202RRT\377\2\206\206\207\377" "\313\314\314\377\206\350\351\347\377\1\337\203\202\377\202\323\0\0\377" "\1\324\25\24\377\202\323\0\0\377\1\344\273\272\377\206\350\351\347\377" "\1\254\255\255\377\202RRT\377\1ggi\377\206\313\312\312\377\1\316\221" "\221\377\203\325\0\0\377\3\325\2\2\377\305WW\377fdf\377\203RRT\377\2" "RRS\337TTT@\222\377\377\377\0\1RRT\203\204RRT\377\3uvw\377\267\267\267" "\377\345\346\344\377\203\350\351\347\377\1\337\203\202\377\202\323\0" "\0\377\1\324\24\23\377\202\323\0\0\377\1\344\276\274\377\206\350\351" "\347\377\1\251\252\253\377\202RRT\377\1hhi\377\206\313\312\312\377\1" "\316\221\221\377\202\325\0\0\377\3\324\20\20\377\242hh\377TTV\377\203" "RRT\377\2RRS\234NNN\15\223\377\377\377\0\3III\7SST\252RRT\374\204RRT" "\377\5bcd\377\241\241\241\377\334\335\334\377\350\351\347\377\337\203" "\202\377\202\323\0\0\377\1\323\2\2\377\202\323\0\0\377\1\344\301\277" "\377\206\350\351\347\377\1\250\250\250\377\202RRT\377\1hhi\377\206\313" "\312\312\377\4\316\221\221\377\325\0\0\377\316*+\377v_a\377\203RRT\377" "\2RRT\346RRUK\227\377\377\377\0\3UUU\36SST\210RRT\354\204RRT\377\3VV" "X\377\213\214\214\377\316\177\177\377\205\323\0\0\377\1\345\303\301\377" "\206\350\351\347\377\1\245\246\246\377\202RRT\377\1hhi\377\206\313\312" "\312\377\3\315\221\221\377\271BB\377WTV\377\203RRT\377\2RRS\250UUU\22" "\232\377\377\377\0\3UUU\11RRUcRRU\320\205RRT\377\2\213]]\377\31344\377" "\203\323\0\0\377\1\345\304\303\377\206\350\351\347\377\1\243\243\243" "\377\202RRT\377\1hgi\377\205\313\312\312\377\2\274\273\274\377qno\377" "\203RRT\377\2RRT\355RRUW\237\377\377\377\0\3RRR>RRT\253RRT\374\204RR" "T\377\4zNO\377\304//\377\323\0\0\377\345\304\303\377\206\350\351\347" "\377\1\240\240\240\377\202RRT\377\1hgi\377\204\313\312\312\377\2\233" "\233\234\377XXZ\377\203RRT\377\2RRT\264RRR\31\242\377\377\377\0\3OOX" "\35RRT\206RRT\353\204RRT\377\3oDF\377\220\201\201\377\313\314\313\377" "\205\350\351\347\377\1\235\236\236\377\202RRT\377\1hhj\377\202\313\312" "\312\377\2\277\276\276\377vuv\377\203RRT\377\2RRT\362RRUc\246\377\377" "\377\0\3```\10QQTaSST\317\205RRT\377\3uuv\377\266\266\265\377\345\346" "\344\377\202\350\351\347\377\1\233\233\233\377\202RRT\377\4hhj\377\313" "\312\312\377\242\241\242\377ZZ\\\377\203RRT\377\2QQT\277PPX\40\252\377" "\377\377\0\3QQUA\377\5\77=@\37799" "9\377;97\376QH+YQH+\0\206\377\377\377\0\13MG-\237668\377<;=\37799:\377" "779\377668\377<:<\377=<>\377IC1\367\200\200\0\2\200\200\0\0\205\377\377" "\377\0\13HC2\354889\377f\\J\377\242\213`\377\310\255y\377\306\255z\377" "UOE\377889\377768\377ZO%NZO%\0\205\377\377\377\0\3n\\#\352\254\225e\377" "\335\305\225\377\202\352\326\260\377\6\344\314\237\377\322\267\206\377" "\207vW\377EA7\375ZN'}ZN'\0\205\377\377\377\0\13\202k\35\270\274\241b" "\377\340\305\223\377\343\312\234\377\342\312\233\377\336\303\220\377" "\331\272\200\377\322\257m\377\202m\35\364yg\30*yg\30\0\205\377\377\377" "\0\13{c\27M\204m!\366\325\266{\377\333\275\206\377\332\275\205\377\330" "\270}\377\323\261q\377\252\213B\377{g\33\334\0\0\0\1\0\0\0\0\205\377" "\377\377\0\13\0\36\\\14RP7\361\204p&\377\262\224N\377\302\243_\377\272" "\231S\377\233\2007\377\177l%\377\24*Q\350\0\36\\\15\0\36\\\0\205\377" "\377\377\0\13\0\36\\oG[\202\367\313\305\254\377\217\200G\377zf!\377{" "j*\377\241\226i\377\317\320\313\3771Gp\367\1\36[}\1\36[\0\205\377\377" "\377\0\13\2\40\\\315}\215\241\377\236\251\262\377\305\313\314\377#=Y" "\3770Ib\377\344\346\343\377\177\216\234\377\177\217\242\377\2\40\\\335" "\2\40\\\0\205\377\377\377\0\4\1\37]\366\234\253\274\377Ea~\377m\202\230" "\377\2023Rs\377\5x\213\237\377Fb\200\377\221\242\264\377\1\37]\367\1" "\37]\0\205\377\377\377\0\3\4\"_\345\230\252\300\377\\|\236\377\204Ei" "\220\377\4q\214\252\377\177\226\261\377\4\"_\350\4\"_\0\205\377\377\377" "\0\13\6$a\266Wr\234\372\250\275\324\377v\227\272\377g\214\263\377f\213" "\263\377\204\241\301\377\255\300\326\377;W\210\370\3!^\201\3!^\0\205" "\377\377\377\0\13\0\36\\\23\4\"_\345B]\214\367\217\244\301\377\231\256" "\310\377\234\260\312\377\215\243\301\377(G|\367\4#`\317\0\36\\\12\0\36" "\\\0\206\377\377\377\0\11\0\36\\\15\2\40^w\6%b\317\6%b\326\6%b\331\6" "$a\331\2\40^{\0\36\\\14\0\36\\\0\204\377\377\377\0"}; #endif /* CONTACTS_ENABLED */ #ifdef TASKS_ENABLED /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_tasks_add) #endif #ifdef __GNUC__ const guint8 osmo_stock_tasks_add[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_tasks_add[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1702) */ "\0\0\6\276" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\2\244\244\244\240\240\240\240\377\202\241\241\241" "\377\17\240\240\240\377\237\237\237\377\235\235\235\377\234\234\234\377" "\233\233\233\377\231\231\231\377\230\230\230\377\227\227\227\377\226" "\226\226\377\224\224\224\377\223\223\223\377\222\222\222\377\220\220" "\220\377\217\217\217\377\223\223\223\240\205\377\377\377\0\2\240\240" "\240\377\374\374\374\377\202\376\376\376\377\203\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\202\371\371" "\371\377\2\366\366\366\377\216\216\216\377\205\377\377\377\0\3\237\237" "\237\377\376\376\376\377\357\357\357\377\202\360\360\360\377\16\357\357" "\357\377\356\356\356\377\355\355\355\377\353\353\353\377\352\352\352" "\377\350\350\350\377\346\346\346\377\344\344\344\377\342\342\342\377" "\340\340\340\377\335\335\335\377\333\333\333\377\371\371\371\377\216" "\216\216\377\205\377\377\377\0\3\236\236\236\377\376\376\376\377\361" "\361\361\377\202\362\362\362\377\16\361\361\361\377\360\360\360\377\356" "\356\356\377\355\355\355\377\353\353\353\377\351\351\351\377\347\347" "\347\377\344\344\344\377\342\342\342\377\340\340\340\377\336\336\336" "\377\334\334\334\377\371\371\371\377\215\215\215\377\205\377\377\377" "\0\3\236\236\236\377\376\376\376\377\363\363\363\377\202\364\364\364" "\377\16\363\363\363\377\361\361\361\377\357\357\357\377\355\355\355\377" "\353\353\353\377\351\351\351\377\347\347\347\377\345\345\345\377\343" "\343\343\377\340\340\340\377\336\336\336\377\334\334\334\377\371\371" "\371\377\215\215\215\377\205\377\377\377\0\23\234\234\234\377\376\376" "\376\377\365\365\365\377\16\10\20\377\365\365\365\377\364\364\364\377" "\252\252\252\377\250\250\250\377\247\247\247\377\246\246\246\377\244" "\244\244\377\242\242\242\377\241\241\241\377\237\237\237\377\235\235" "\235\377\234\234\234\377\334\334\334\377\371\371\371\377\215\215\215" "\377\205\377\377\377\0\23\233\233\233\377\375\375\375\377\366\366\366" "\377\370\370\370\377\367\367\367\377\365\365\365\377\363\363\363\377" "\361\361\361\377\356\356\356\377\354\354\354\377\352\352\352\377\347" "\347\347\377\345\345\345\377\343\343\343\377\340\340\340\377\336\336" "\336\377\334\334\334\377\371\371\371\377\215\215\215\377\205\377\377" "\377\0\23\232\232\232\377\375\375\375\377\367\367\367\377\371\371\371" "\377\367\367\367\377\365\365\365\377\363\363\363\377\360\360\360\377" "\356\356\356\377\354\354\354\377\351\351\351\377\347\347\347\377\345" "\345\345\377\343\343\343\377\340\340\340\377\336\336\336\377\334\334" "\334\377\371\371\371\377\214\214\214\377\205\377\377\377\0\23\231\231" "\231\377\375\375\375\377\366\366\366\377\16\10\20\377\366\366\366\377" "\364\364\364\377\252\252\252\377\250\250\250\377\247\247\247\377\245" "\245\245\377\244\244\244\377\242\242\242\377\240\240\240\377\237\237" "\237\377\340\340\340\377\335\335\335\377\333\333\333\377\370\370\370" "\377\214\214\214\377\205\377\377\377\0\2\230\230\230\377\374\374\374" "\377\202\365\365\365\377\13\364\364\364\377\363\363\363\377\361\361\361" "\377\357\357\357\377\355\355\355\377\353\353\353\377\350\350\350\377" "\346\346\346\377\344\344\344\377\341\342\341\377T\204+\377\2035o\4\377" "\2Ev\34\3775o\4\1\204\377\377\377\0\2\226\226\226\377\374\374\374\377" "\202\363\363\363\377\20\362\362\362\377\361\361\361\377\357\357\357\377" "\356\356\356\377\354\354\354\377\352\352\352\377\347\347\347\377\345" "\345\345\377\343\343\343\377\334\335\332\377=u\16\377\265\322\226\377" "\273\325\235\377\264\321\224\377@w\22\3775o\4\10\204\377\377\377\0\24" "\225\225\225\377\373\373\373\377\361\361\361\377\16\10\20\377\360\360" "\360\377\357\357\357\377\247\247\247\377\246\246\246\377\244\244\244" "\377\243\243\243\377\241\241\241\377\240\240\240\377\237\237\237\377" "\232\234\230\377Ax\23\377\266\322\226\377\222\274c\377\266\322\226\377" "G|\32\3775o\4\10\204\377\377\377\0\2\224\224\224\377\373\373\373\377" "\202\357\357\357\377\20\356\356\356\377\355\355\355\377\354\354\354\377" "\353\353\353\377\351\351\351\377\347\347\347\377\344\345\344\377\336" "\337\334\377\334\335\332\377\325\330\322\377By\24\377\266\322\226\377" "\222\274c\377\266\322\226\377G|\32\3775o\4\17\2025o\4\10\4""5o\4\1\377" "\377\377\0\222\222\222\377\373\373\373\377\202\355\355\355\377\10\354" "\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\347\347" "\347\377\346\346\346\377O\201$\377>v\17\377\202Cz\26\377\5X\212,\377" "\264\321\224\377\222\274c\377\264\321\224\377^\2154\377\202F|\31\374" "\17\77w\20\3746q\4\333\377\377\377\0\221\221\221\377\372\372\372\377" "\353\353\353\377\16\10\20\377\352\352\352\377\351\351\351\377\243\243" "\243\377\242\242\242\377\241\241\241\377\240\240\240\3775o\4\377\265" "\322\225\377\202\266\322\226\377\5\264\321\224\377\240\305x\377\222\274" "c\377\240\305x\377\262\320\222\377\202\255\315\212\377\6\264\321\224" "\3775o\4\377\377\377\377\0\220\220\220\377\372\372\372\377\351\351\351" "\377\202\350\350\350\377\15\347\347\347\377\346\346\346\377\345\345\345" "\377\344\344\344\377\342\342\342\3775o\4\377\250\311\202\377x\255>\377" "|\257D\377v\253<\377l\245-\377b\237\37\377X\231\21\377\203Q\225\7\377" "\6\222\274d\3775o\4\377\377\377\377\0\217\217\217\377\371\371\371\377" "\347\347\347\377\202\346\346\346\377\7\345\345\345\377\344\344\344\377" "\343\343\343\377\342\342\342\377\341\341\341\3775o\4\377\216\272^\377" "\202\212\270X\377\5\210\266U\377h\243(\377Q\225\7\377h\243(\377\210\266" "U\377\202\212\270X\377\5\216\272^\3775o\4\377\377\377\377\0\215\215\215" "\377\371\371\371\377\203\344\344\344\377\16\343\343\343\377\342\342\342" "\377\341\341\341\377\340\340\340\377\337\337\337\377N\200#\377=u\16\377" "Ax\23\377@x\23\377U\210(\377\210\266U\377Q\225\7\377\210\266U\377R\205" "%\377\202\77w\20\374\5;t\13\3746q\4\333\377\377\377\0\214\214\214\377" "\371\371\371\377\203\342\342\342\377\17\341\341\341\377\340\340\340\377" "\337\337\337\377\336\336\336\377\335\335\335\377\333\334\333\377\325" "\327\323\377\323\325\321\377\315\321\313\377@x\23\377\212\270X\377Q\225" "\7\377\212\270X\377@w\22\3775o\4\17\2025o\4\10\4""5o\4\1\377\377\377" "\0\213\213\213\377\366\366\366\377\213\370\370\370\377\7\362\364\360" "\377Ax\23\377\212\270X\377Q\225\7\377\212\270X\377@w\22\3775o\4\10\204" "\377\377\377\0\1\217\217\217\240\214\212\212\212\377\7\207\211\206\377" "\377\312\232=\377\224'\26\375+\17\13w\0\0\0\16\0\0\0\1" "\377\377\377\0\224\224\224\377\373\373\373\377\202\357\357\357\377\22" "\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353\377\351" "\351\351\377\347\347\347\377\343\343\343\377\275\271\257\377\220yF\377" "\346\272e\377\374\312o\377\373\272D\377\345\256>\377\311\234\77\377|" "h;\377\24\22\12f\0\0\0\16\0\0\0\1\202\377\377\377\0\2\222\222\222\377" "\373\373\373\377\202\355\355\355\377\21\354\354\354\377\353\353\353\377" "\352\352\352\377\351\351\351\377\347\347\347\377\345\345\345\377\277" "\273\262\377\220yF\377\346\271d\377\374\312m\377\372\272B\377\344\255" ">\377\304\232\77\377}i>\377^]Z\377\0\0\0\14\0\0\0\1\203\377\377\377\0" "\24\221\221\221\377\372\372\372\377\353\353\353\377\16\10\20\377\352" "\352\352\377\351\351\351\377\243\243\243\377\242\242\242\377\240\240" "\240\377\216\212\201\377\216wD\377\343\267d\377\374\311k\377\371\271" "@\377\343\254>\377\300\225@\377ye;\377\247\246\244\377\204\204\204\377" "\0\0\0\1\204\377\377\377\0\3\220\220\220\377\372\372\372\377\351\351" "\351\377\202\350\350\350\377\16\347\347\347\377\346\346\346\377\344\344" "\344\377\303\277\266\377\220xF\377\342\266c\377\375\311h\377\370\270" "A\377\342\254>\377\272\221\77\377uc;\377\225\224\223\377\356\356\356" "\377\212\212\212\377\205\377\377\377\0\3\217\217\217\377\371\371\371" "\377\347\347\347\377\202\346\346\346\377\16\345\345\345\377\344\344\344" "\377\321\317\314\377\217xF\377\340\265c\377\375\310e\377\367\270\77\377" "\341\254>\377\264\217\77\377ra:\377\231\230\227\377\315\315\315\377\370" "\370\370\377\212\212\212\377\205\377\377\377\0\2\215\215\215\377\371" "\371\371\377\203\344\344\344\377\16\343\343\343\377\337\337\337\377\244" "\232\204\377\271\225R\377\374\310g\377\367\267\77\377\341\253>\377\260" "\213\77\377o^:\377\235\234\234\377\315\315\315\377\323\323\323\377\370" "\370\370\377\212\212\212\377\205\377\377\377\0\2\214\214\214\377\371" "\371\371\377\203\342\342\342\377\16\341\341\341\377\326\326\326\377\216" "yJ\377\350\267]\377\364\265A\377\341\254>\377\253\210@\377l\\:\377\242" "\242\242\377\317\317\317\377\323\323\323\377\321\321\321\377\370\370" "\370\377\212\212\212\377\205\377\377\377\0\2\213\213\213\377\366\366" "\366\377\204\370\370\370\377\10\302\277\271\377riR\377\350\260D\377\310" "\233\77\377\226{C\377k\\<\377\276\275\275\377\361\361\361\377\203\370" "\370\370\377\2\364\364\364\377\212\212\212\377\205\377\377\377\0\1\217" "\217\217\240\204\212\212\212\377\10\207\207\207\377kfZ\3774:;\377`V<" "\377]O1\377QNG\377sss\377\207\207\207\377\205\212\212\212\377\1\216\216" "\216\240\212\377\377\377\0\7\24\24\24\15JH<\35586'\325\14\14\11W\0\0" "\0\30\0\0\0\12\0\0\0\2\221\377\377\377\0\5\0\0\0\2\0\0\0\25\0\0\0\17" "\0\0\0\6\0\0\0\1\215\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_tasks_next_date) #endif #ifdef __GNUC__ const guint8 osmo_stock_tasks_next_date[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_tasks_next_date[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1666) */ "\0\0\6\232" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\230\377\377\377\0\1\246\246\246\240\202\242\242\242\377\20\241\241\241" "\377\240\240\240\377\237\237\237\377\235\235\235\377\234\234\234\377" "\233\233\233\377\231\231\231\377\230\230\230\377\227\227\227\377\225" "\225\225\377\224\224\224\377\223\223\223\377\221\221\221\377\220\220" "\220\377\217\217\217\377\222\222\222\240\205\377\377\377\0\2\241\241" "\241\377\374\374\374\377\204\376\376\376\377\202\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\3\371\371\371" "\377\366\366\366\377\215\215\215\377\205\377\377\377\0\2\240\240\240" "\377\377\377\377\377\203\361\361\361\377\16\360\360\360\377\357\357\357" "\377\355\355\355\377\354\354\354\377\352\352\352\377\350\350\350\377" "\346\346\346\377\344\344\344\377\341\341\341\377\337\337\337\377\335" "\335\335\377\333\333\333\377\371\371\371\377\215\215\215\377\205\377" "\377\377\0\2\237\237\237\377\377\377\377\377\203\363\363\363\377\16\362" "\362\362\377\360\360\360\377\356\356\356\377\355\355\355\377\352\352" "\352\377\350\350\350\377\346\346\346\377\344\344\344\377\342\342\342" "\377\340\340\340\377\335\335\335\377\333\333\333\377\371\371\371\377" "\215\215\215\377\205\377\377\377\0\2\236\236\236\377\376\376\376\377" "\203\365\365\365\377\16\363\363\363\377\361\361\361\377\357\357\357\377" "\355\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\344" "\344\344\377\342\342\342\377\340\340\340\377\335\335\335\377\333\333" "\333\377\371\371\371\377\215\215\215\377\205\377\377\377\0\23\235\235" "\235\377\376\376\376\377\367\367\367\377\16\10\20\377\366\366\366\377" "\364\364\364\377\252\252\252\377\250\250\250\377\247\247\247\377\245" "\245\245\377\244\244\244\377\242\242\242\377\240\240\240\377\237\237" "\237\377\235\235\235\377\233\233\233\377\333\333\333\377\371\371\371" "\377\215\215\215\377\205\377\377\377\0\23\233\233\233\377\376\376\376" "\377\370\370\370\377\361\361\362\377\367\367\367\377\364\364\364\377" "\362\362\362\377\360\360\360\377\356\356\356\377\353\353\353\377\351" "\351\351\377\347\347\347\377\344\344\344\377\342\342\342\377\340\340" "\340\377\335\335\335\377\333\333\333\377\371\371\371\377\214\214\214" "\377\205\377\377\377\0\2\232\232\232\377\375\375\375\377\202\370\370" "\370\377\17\366\366\366\377\364\364\364\377\362\362\362\377\360\360\360" "\377\301\312\327\377z\222\264\377>c\227\3775\\\223\377Rr\240\377z\221" "\262\377\272\302\316\377\335\335\335\377\333\333\333\377\371\371\371" "\377\214\214\214\377\205\377\377\377\0\23\231\231\231\377\375\375\375" "\377\366\366\366\377\22\13\24\377\365\365\365\377\363\363\363\377\251" "\251\251\377y\207\235\377*T\215\377^\206\261\377\253\302\331\377\304" "\325\345\377\253\302\331\377\202\240\302\377>d\230\377Ik\233\377\260" "\272\307\377\371\371\371\377\213\213\213\377\205\377\377\377\0\23\230" "\230\230\377\375\375\375\377\364\364\364\377\354\354\355\377\363\363" "\363\377\362\362\362\377\254\272\316\3771X\221\377m\227\276\377{\243" "\307\377K\201\263\377T\207\266\377\213\256\316\377\270\315\341\377\310" "\330\350\377r\227\275\377(Q\214\377\245\266\315\377\213\213\213\377\205" "\377\377\377\0\2\226\226\226\377\374\374\374\377\202\362\362\362\377" "\17\361\361\361\377\360\360\360\3777^\224\377Z\202\260\377_\210\264\377" "Y\203\261\377h\222\273\377|\243\307\377[\214\272\3771o\250\377v\240\305" "\377\306\327\347\377\233\270\324\377.Y\220\377ny\211\377\205\377\377" "\377\0""2\225\225\225\377\374\374\374\377\360\360\360\377\21\13\24\377" "\357\357\357\377\272\305\324\377\40J\207\377-T\213\377Sm\223\377Qm\222" "\377/U\214\377)R\214\377S}\253\377y\241\305\377P\205\265\377p\233\303" "\377\302\324\345\377\221\256\315\377-S\210\377@@\200\4\377\377\377\0" "\40J\207H\40M\207w\377\377\377\0\224\224\224\377\373\373\373\377\356" "\356\356\377\347\347\350\377\355\355\355\377a~\247\377Ln\236\377\344" "\345\347\377\350\350\350\377\346\346\346\377\344\344\344\377\313\320" "\327\377c\177\247\3770X\221\377k\224\275\377O\203\264\377\202\247\312" "\377\311\331\350\377Vy\246\377\40J\207\227\37L\210\320#M\210\375\40K" "\210\325\377\377\377\0\222\222\222\377\373\373\373\377\202\354\354\354" "\377B\353\353\353\377\313\321\333\377\330\333\341\377\350\350\350\377" "\346\346\346\377\344\344\344\377\343\343\343\377\341\341\341\377\337" "\337\337\377\251\264\305\3770X\221\377u\235\303\377=w\255\377\250\302" "\332\377\271\315\340\377Hp\242\366\223\257\315\377d\211\263\371\40J\206" "x\377\377\377\0\221\221\221\377\373\373\373\377\352\352\352\377\21\13" "\23\377\351\351\351\377\350\350\350\377\242\242\242\377\241\241\241\377" "\240\240\240\377\237\237\237\377\236\236\236\377\235\235\235\377\233" "\233\233\377\232\232\232\377Tm\217\377Nx\251\377^\217\273\377C|\260\377" "\271\316\342\377\307\327\347\377\312\332\351\3770W\220\366#G\207$\377" "\377\377\0\220\220\220\377\372\372\372\377\350\350\350\377\341\341\342" "\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344\344\377" "\343\343\343\377\341\341\341\377\340\340\340\377\336\336\336\377\334" "\334\334\377\332\332\332\377\241\255\300\3777_\226\377w\240\306\377\36" "b\240\377m\231\301\377\260\310\336\377\253\302\332\377\40K\210\337\202" "\377\377\377\0\2\216\216\216\377\372\372\372\377\202\346\346\346\377" "\22\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\341" "\341\341\377\337\337\337\377\336\336\336\377\334\334\334\377\323\325" "\327\377o\207\253\377,V\216\377`\210\264\377b\221\275\377\36b\240\377" ":v\254\377\275\321\343\377{\232\277\373\37I\207\204\202\377\377\377\0" "\2\215\215\215\377\371\371\371\377\202\344\344\344\377\22\343\343\343" "\377\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377" "\336\336\336\377\334\334\334\377\333\333\333\377\311\314\322\377*S\214" "\3776_\225\377S}\254\377q\231\300\377u\237\305\377W\211\270\377\303\325" "\346\377>d\231\365!L\210/\202\377\377\377\0\3\214\214\214\377\371\371" "\371\377\342\342\342\377\202\341\341\341\377\20\340\340\340\377\337\337" "\337\377\336\336\336\377\335\335\335\377\334\334\334\377\332\332\332" "\377\331\331\331\377\327\327\327\377\323\324\325\377\247\262\301\377" "f\200\245\377+T\215\3779a\227\377P{\252\377{\236\302\377\40K\210\350" "\203\377\377\377\0\2\213\213\213\377\367\367\367\377\204\371\371\371" "\377\212\370\370\370\377\5\367\367\370\377\306\317\334\377Ng\212\377" "\37K\210\346\"L\207y\203\377\377\377\0\1\217\217\217\240\221\212\212" "\212\377\1\216\216\216\240\265\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_tasks_prev_date) #endif #ifdef __GNUC__ const guint8 osmo_stock_tasks_prev_date[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_tasks_prev_date[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1672) */ "\0\0\6\240" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\235\377\377\377\0\1\246\246\246\240\202\242\242\242\377\20\241\241\241" "\377\240\240\240\377\237\237\237\377\235\235\235\377\234\234\234\377" "\233\233\233\377\231\231\231\377\230\230\230\377\227\227\227\377\225" "\225\225\377\224\224\224\377\223\223\223\377\221\221\221\377\220\220" "\220\377\217\217\217\377\222\222\222\240\205\377\377\377\0\2\241\241" "\241\377\374\374\374\377\204\376\376\376\377\202\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\3\371\371\371" "\377\366\366\366\377\215\215\215\377\205\377\377\377\0\2\240\240\240" "\377\377\377\377\377\203\361\361\361\377\16\360\360\360\377\357\357\357" "\377\355\355\355\377\354\354\354\377\352\352\352\377\350\350\350\377" "\346\346\346\377\344\344\344\377\341\341\341\377\337\337\337\377\335" "\335\335\377\333\333\333\377\371\371\371\377\215\215\215\377\205\377" "\377\377\0\2\237\237\237\377\377\377\377\377\203\363\363\363\377\16\362" "\362\362\377\360\360\360\377\356\356\356\377\355\355\355\377\352\352" "\352\377\350\350\350\377\346\346\346\377\344\344\344\377\342\342\342" "\377\340\340\340\377\335\335\335\377\333\333\333\377\371\371\371\377" "\215\215\215\377\205\377\377\377\0\2\236\236\236\377\376\376\376\377" "\203\365\365\365\377\16\363\363\363\377\361\361\361\377\357\357\357\377" "\355\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\344" "\344\344\377\342\342\342\377\340\340\340\377\335\335\335\377\333\333" "\333\377\371\371\371\377\215\215\215\377\205\377\377\377\0\23\235\235" "\235\377\376\376\376\377\367\367\367\377\16\10\20\377\366\366\366\377" "\364\364\364\377\252\252\252\377\250\250\250\377\247\247\247\377\245" "\245\245\377\244\244\244\377\242\242\242\377\240\240\240\377\237\237" "\237\377\235\235\235\377\233\233\233\377\333\333\333\377\371\371\371" "\377\215\215\215\377\205\377\377\377\0\23\233\233\233\377\376\376\376" "\377\370\370\370\377\361\361\362\377\367\367\367\377\364\364\364\377" "\362\362\362\377\360\360\360\377\356\356\356\377\353\353\353\377\351" "\351\351\377\347\347\347\377\344\344\344\377\342\342\342\377\340\340" "\340\377\335\335\335\377\333\333\333\377\371\371\371\377\214\214\214" "\377\205\377\377\377\0\2\232\232\232\377\375\375\375\377\202\370\370" "\370\377\17\275\310\330\377n\212\260\377Dh\233\3772Y\221\3773Z\221\377" "e\202\252\377\260\274\315\377\346\346\346\377\344\344\344\377\342\342" "\342\377\337\337\337\377\335\335\335\377\333\333\333\377\371\371\371" "\377\214\214\214\377\205\377\377\377\0\23\231\231\231\377\375\375\375" "\377\267\303\325\377=c\230\377Ps\243\377\220\254\313\377\271\314\337" "\377\311\331\347\377\260\306\334\377e\214\267\377.V\217\377k}\227\377" "\237\237\237\377\236\236\236\377\337\337\337\377\335\335\335\377\332" "\332\332\377\371\371\371\377\213\213\213\377\205\377\377\377\0\23\230" "\230\230\377\226\252\306\377*U\216\377\202\244\307\377\310\331\350\377" "\257\307\335\377|\243\310\377H\200\262\377L\202\263\377|\243\307\377" "t\234\302\3774\\\224\377\227\250\300\377\341\341\341\377\336\336\336" "\377\334\334\334\377\332\332\332\377\371\371\371\377\213\213\213\377" "\205\377\377\377\0ss\200\222\3775]\226\377\247\302\331\377\303\325\345" "\377e\224\276\3773p\250\377d\223\275\377{\242\306\377b\215\267\377Q|" "\254\377X\201\256\377U~\255\3773[\223\377\336\337\337\377\336\336\336" "\377\333\333\333\377\331\331\331\377\370\370\370\377\212\212\212\377" "\377\377\377\0\40L\210\211\40K\210X\0\0\377\1+U\200\6+R\211\377\232\265" "\321\377\277\323\344\377d\223\275\377X\213\271\377w\237\304\377Lv\246" "\377&O\212\377;]\216\377^u\224\377bv\224\3774X\214\377\40J\207\377z\206" "\227\377\233\233\233\377\231\231\231\377\330\330\330\377\370\370\370" "\377\212\212\212\377\377\377\377\0\40L\211\320(Q\213\373\37L\211\336" "\37J\206\245^\201\255\377\311\331\350\377x\241\306\377S\207\266\377e" "\217\271\377*T\214\377y\220\263\377\333\336\342\377\350\350\350\377\346" "\346\346\377\344\344\344\377\337\340\341\377Tt\241\377Zx\242\377\334" "\334\334\377\332\332\332\377\327\327\327\377\370\370\370\377\212\212" "\212\377\377\377\377\0\40M\207qc\207\262\371\241\273\324\377Z\200\255" "\366\275\320\342\377\241\275\327\377=x\255\377t\234\302\377/W\217\377" "\273\305\323\377\351\351\351\377\350\350\350\377\346\346\346\377\344" "\344\344\377\343\343\343\377\341\341\341\377\326\330\333\377\312\316" "\324\377\333\333\333\377\330\330\330\377\326\326\326\377\370\370\370" "\377\212\212\212\377\377\377\377\0!J\204\37-V\217\366\311\331\350\377" "\304\326\346\377\266\314\340\377u\20" "\377\274\312\261\377\345\345\345\377\344\344\344\377\343\343\343\377" "\342\342\342\377\341\341\341\377\337\337\337\377\336\336\336\377\334" "\334\334\377\332\332\332\377\331\331\331\377\327\327\327\377\325\325" "\325\377\323\323\323\377\370\370\370\377\212\212\212\377\205\377\377" "\377\0\23\215\215\215\377\371\371\371\377\303\316\272\377\344\344\344" "\377\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377" "\337\337\337\377\336\336\336\377\334\334\334\377\333\333\333\377\331" "\331\331\377\327\327\327\377\325\325\325\377\323\323\323\377\322\322" "\322\377\370\370\370\377\212\212\212\377\205\377\377\377\0\3\214\214" "\214\377\371\371\371\377\342\342\342\377\202\341\341\341\377\16\340\340" "\340\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334" "\377\332\332\332\377\331\331\331\377\327\327\327\377\326\326\326\377" "\324\324\324\377\322\322\322\377\320\320\320\377\370\370\370\377\212" "\212\212\377\205\377\377\377\0\2\213\213\213\377\366\366\366\377\204" "\371\371\371\377\213\370\370\370\377\2\364\364\364\377\212\212\212\377" "\205\377\377\377\0\1\217\217\217\240\221\212\212\212\377\1\216\216\216" "\240\261\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_tasks_export) #endif #ifdef __GNUC__ const guint8 osmo_stock_tasks_export[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_tasks_export[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1569) */ "\0\0\6""9" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (96) */ "\0\0\0`" /* width (24) */ "\0\0\0\30" /* height (24) */ "\0\0\0\30" /* pixel_data: */ "\231\377\377\377\0\1\246\246\246\240\202\242\242\242\377\20\241\241\241" "\377\240\240\240\377\237\237\237\377\235\235\235\377\234\234\234\377" "\233\233\233\377\231\231\231\377\230\230\230\377\227\227\227\377\225" "\225\225\377\224\224\224\377\223\223\223\377\221\221\221\377\220\220" "\220\377\217\217\217\377\221\221\221\240\205\377\377\377\0\2\241\241" "\241\377\374\374\374\377\204\376\376\376\377\202\375\375\375\377\203" "\374\374\374\377\203\373\373\373\377\202\372\372\372\377\3\371\371\371" "\377\366\366\366\377\215\215\215\377\205\377\377\377\0\2\240\240\240" "\377\377\377\377\377\203\361\361\361\377\16\360\360\360\377\357\357\357" "\377\355\355\355\377\354\354\354\377\352\352\352\377\350\350\350\377" "\346\346\346\377\344\344\344\377\341\341\341\377\337\337\337\377\335" "\335\335\377\333\333\333\377\371\371\371\377\215\215\215\377\205\377" "\377\377\0\2\237\237\237\377\377\377\377\377\203\363\363\363\377\16\362" "\362\362\377\360\360\360\377\356\356\356\377\355\355\355\377\352\352" "\352\377\350\350\350\377\346\346\346\377\344\344\344\377\342\342\342" "\377\340\340\340\377\321\303\252\377\333\333\333\377\371\371\371\377" "\215\215\215\377\205\377\377\377\0\2\236\236\236\377\376\376\376\377" "\203\365\365\365\377\16\363\363\363\377\361\361\361\377\357\357\357\377" "\355\355\355\377\353\353\353\377\351\351\351\377\347\347\347\377\344" "\344\344\377\342\342\342\377\340\340\340\377\252r\10\377\314\274\235" "\377\371\371\371\377\215\215\215\377\205\377\377\377\0\23\235\235\235" "\377\376\376\376\377\367\367\367\377\16\10\20\377\366\366\366\377\364" "\364\364\377\252\252\252\377\250\250\250\377\247\247\247\377\245\245" "\245\377\244\244\244\377\242\242\242\377\240\240\240\377\237\237\237" "\377\235\235\235\377\250n\1\377\257y\20\377\335\312\244\377\215\215\215" "\377\205\377\377\377\0\23\233\233\233\377\376\376\376\377\370\370\370" "\377\361\361\362\377\367\367\367\377\364\364\364\377\362\362\362\377" "\360\360\360\377\356\356\356\377\353\353\353\377\351\351\351\377\347" "\347\347\377\344\344\344\377\342\342\342\377\340\340\340\377\250n\1\377" "\354\315j\377\263~\26\377\230\200S\377\205\377\377\377\0\2\232\232\232" "\377\375\375\375\377\202\370\370\370\377\20\366\366\366\377\364\364\364" "\377\362\362\362\377\360\360\360\377\355\355\355\377\353\353\353\377" "\266\207,\377\266\205$\377\265\205$\377\265\204$\377\265\204#\377\250" "n\1\377\365\334\203\377\357\323s\377\262\177\26\377\253q\1|\204\377\377" "\377\0\13\231\231\231\377\375\375\375\377\366\366\366\377\22\13\24\377" "\365\365\365\377\363\363\363\377\251\251\251\377\250\250\250\377\246" "\246\246\377\244\244\244\377\250n\1\377\204\352\313f\377\6\352\314i\377" "\363\327q\377\357\3108\377\360\325w\377\270\204\27\366\253q\1\217\203" "\377\377\377\0\14\230\230\230\377\375\375\375\377\364\364\364\377\354" "\354\355\377\363\363\363\377\362\362\362\377\360\360\360\377\356\356" "\356\377\354\354\354\377\351\351\351\377\250n\1\377\365\336\207\377\203" "\355\301\"\377\13\355\301!\377\352\271\5\377\352\270\0\377\356\3061\377" "\361\327z\377\274\211\34\365\254r\1\243\250n\1\2\377\377\377\0\226\226" "\226\377\374\374\374\377\202\362\362\362\377\12\361\361\361\377\360\360" "\360\377\356\356\356\377\354\354\354\377\352\352\352\377\350\350\350" "\377\250n\1\377\367\342\227\377\360\316N\377\360\315M\377\202\360\315" "L\377\203\360\315K\377\21\364\334\177\377\363\337\230\377\252r\6\374" "\250n\1\\\377\377\377\0\225\225\225\377\374\374\374\377\360\360\360\377" "\21\13\24\377\357\357\357\377\356\356\356\377\246\246\246\377\245\245" "\245\377\244\244\244\377\242\242\242\377\250n\1\377\370\347\247\377\203" "\367\343\236\377\1\367\343\235\377\202\367\343\234\377\4\371\351\260" "\377\371\355\304\377\301\2234\365\253q\1\210\202\377\377\377\0\14\224" "\224\224\377\373\373\373\377\356\356\356\377\347\347\350\377\355\355" "\355\377\354\354\354\377\353\353\353\377\351\351\351\377\350\350\350" "\377\346\346\346\377\250n\1\377\367\345\245\377\204\373\361\317\377\5" "\371\353\271\377\371\352\264\377\370\353\300\377\273\213+\366\252p\1" "v\203\377\377\377\0\2\222\222\222\377\373\373\373\377\202\354\354\354" "\377\10\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377" "\346\346\346\377\344\344\344\377\252q\6\377\253r\6\377\203\254t\11\377" "\5\262~\34\377\373\362\320\377\366\350\273\377\266\205&\377\251o\1f\204" "\377\377\377\0\23\221\221\221\377\373\373\373\377\352\352\352\377\21" "\13\23\377\351\351\351\377\350\350\350\377\242\242\242\377\241\241\241" "\377\240\240\240\377\237\237\237\377\236\236\236\377\235\235\235\377" "\233\233\233\377\232\232\232\377\230\230\230\377\255x\22\377\365\346" "\265\377\266\203!\377\224\201\\\377\205\377\377\377\0\23\220\220\220" "\377\372\372\372\377\350\350\350\377\341\341\342\377\347\347\347\377" "\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\341" "\341\341\377\340\340\340\377\336\336\336\377\334\334\334\377\332\332" "\332\377\330\330\330\377\252q\6\377\262}\30\377\341\321\262\377\212\212" "\212\377\205\377\377\377\0\2\216\216\216\377\372\372\372\377\202\346" "\346\346\377\17\345\345\345\377\344\344\344\377\343\343\343\377\342\342" "\342\377\341\341\341\377\337\337\337\377\336\336\336\377\334\334\334" "\377\332\332\332\377\331\331\331\377\327\327\327\377\253t\14\377\311" "\273\242\377\370\370\370\377\212\212\212\377\205\377\377\377\0\2\215" "\215\215\377\371\371\371\377\202\344\344\344\377\17\343\343\343\377\342" "\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336" "\336\377\334\334\334\377\333\333\333\377\331\331\331\377\327\327\327" "\377\325\325\325\377\313\300\253\377\322\322\322\377\370\370\370\377" "\212\212\212\377\205\377\377\377\0\3\214\214\214\377\371\371\371\377" "\342\342\342\377\202\341\341\341\377\16\340\340\340\377\337\337\337\377" "\336\336\336\377\335\335\335\377\334\334\334\377\332\332\332\377\331" "\331\331\377\327\327\327\377\326\326\326\377\324\324\324\377\322\322" "\322\377\320\320\320\377\370\370\370\377\212\212\212\377\205\377\377" "\377\0\2\213\213\213\377\366\366\366\377\204\371\371\371\377\213\370" "\370\370\377\2\364\364\364\377\212\212\212\377\205\377\377\377\0\1\217" "\217\217\240\221\212\212\212\377\1\216\216\216\240\264\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_systray_task) #endif #ifdef __GNUC__ const guint8 osmo_stock_systray_task[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_systray_task[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (6600) */ "\0\0\31\340" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (256) */ "\0\0\1\0" /* width (64) */ "\0\0\0@" /* height (64) */ "\0\0\0@" /* pixel_data: */ "\377\377\377\377\0\312\377\377\377\0\3kyy\23rrt\256rst\374\252rst\377" "\3rst\374rrt\256kyy\23\220\377\377\377\0\1rrt\256\256rst\377\1rrt\256" "\220\377\377\377\0\1rst\374\256rst\377\1rst\374\220\377\377\377\0\203" "rst\377\2\346\346\346\377\374\374\374\377\203\377\377\377\377\204\376" "\376\376\377\204\375\375\375\377\203\374\374\374\377\204\373\373\373" "\377\204\372\372\372\377\203\371\371\371\377\215\370\370\370\377\2\364" "\364\364\377\314\314\314\377\203rst\377\220\377\377\377\0\203rst\377" "\2\374\374\374\377\376\376\376\377\204\377\377\377\377\203\376\376\376" "\377\204\375\375\375\377\203\374\374\374\377\204\373\373\373\377\204" "\372\372\372\377\203\371\371\371\377\216\370\370\370\377\1\363\363\363" "\377\203rst\377\220\377\377\377\0\203rst\377\202\376\376\376\377\203" "\377\377\377\377\204\376\376\376\377\204\375\375\375\377\203\374\374" "\374\377\204\373\373\373\377\203\372\372\372\377\204\371\371\371\377" "\206\370\370\370\377\1\364\353\353\377\210\370\370\370\377\203rst\377" "\220\377\377\377\0\203rst\377\203\376\376\376\377\1\370\370\370\377\202" "\367\367\367\377!\366\366\366\377\365\365\365\377\364\364\364\377\362" "\362\362\377\361\361\361\377\360\360\360\377\357\357\357\377\356\356" "\356\377\354\354\354\377\353\353\353\377\351\351\351\377\350\350\350" "\377\347\347\347\377\346\346\346\377\344\344\344\377\343\343\343\377" "\341\341\341\377\337\337\337\377\335\335\335\377\334\334\334\377\333" "\333\333\377\332\332\332\377\330\330\330\377\327\327\327\377\325\325" "\325\377\312\241\241\377\265--\377\255\3\3\377\303\202\202\377\317\317" "\317\377\315\315\315\377\313\313\313\377\317\317\317\377\203\370\370" "\370\377\203rst\377\220\377\377\377\0\203rst\377\203\376\376\376\377" "\1\370\370\370\377\202\367\367\367\377!\366\366\366\377\364\364\364\377" "\363\363\363\377\362\362\362\377\360\360\360\377\357\357\357\377\355" "\355\355\377\354\354\354\377\352\352\352\377\351\351\351\377\347\347" "\347\377\346\346\346\377\344\344\344\377\343\343\343\377\341\341\341" "\377\340\340\340\377\336\336\336\377\335\335\335\377\333\333\333\377" "\332\332\332\377\330\330\330\377\327\327\327\377\325\325\325\377\324" "\324\324\377\322\317\317\377\261\35\35\377\264\21\21\377\265\12\12\377" "\254\0\0\377\302\222\222\377\311\311\311\377\307\307\307\377\312\312" "\312\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377" "\203\376\376\376\377$\371\371\371\377\370\370\370\377\367\367\367\377" "\366\366\366\377\365\365\365\377\363\363\363\377\362\362\362\377\360" "\360\360\377\357\357\357\377\355\355\355\377\354\354\354\377\352\352" "\352\377\351\351\351\377\347\347\347\377\346\346\346\377\344\344\344" "\377\343\343\343\377\341\341\341\377\340\340\340\377\336\336\336\377" "\335\335\335\377\333\333\333\377\332\332\332\377\330\330\330\377\327" "\327\327\377\325\325\325\377\323\323\323\377\306\221\221\377\261\17\17" "\377\330ee\377\312\24\24\377\257\3\3\377\267HH\377\311\311\311\377\307" "\307\307\377\312\312\312\377\203\370\370\370\377\203rst\377\220\377\377" "\377\0\203rst\377\203\376\376\376\377$\372\372\372\377\371\371\371\377" "\370\370\370\377\366\366\366\377\365\365\365\377\363\363\363\377\362" "\362\362\377\360\360\360\377\357\357\357\377\355\355\355\377\354\354" "\354\377\352\352\352\377\351\351\351\377\347\347\347\377\346\346\346" "\377\344\344\344\377\343\343\343\377\341\341\341\377\340\340\340\377" "\336\336\336\377\335\335\335\377\333\333\333\377\331\331\331\377\330" "\330\330\377\326\326\326\377\325\325\325\377\323\323\323\377\302xx\377" "\255\3\3\377\310\16\16\377\312\20\20\377\271\7\7\377\257\22\22\377\311" "\311\311\377\307\307\307\377\312\312\312\377\203\370\370\370\377\203" "rst\377\220\377\377\377\0\203rst\377\202\375\375\375\377%\376\376\376" "\377\372\372\372\377\371\371\371\377\370\370\370\377\366\366\366\377" "\365\365\365\377\363\363\363\377\362\362\362\377\360\360\360\377\357" "\357\357\377\355\355\355\377\354\354\354\377\352\352\352\377\351\351" "\351\377\347\347\347\377\345\345\345\377\344\344\344\377\342\342\342" "\377\341\341\341\377\337\337\337\377\336\336\336\377\334\334\334\377" "\333\333\333\377\331\331\331\377\330\330\330\377\326\326\326\377\325" "\325\325\377\323\323\323\377\277gg\377\255\3\3\377\317\23\23\377\321" "\24\24\377\275\11\11\377\257\17\17\377\311\311\311\377\307\307\307\377" "\312\312\312\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203" "rst\377\203\375\375\375\377$\371\371\371\377\370\370\370\377\367\367" "\367\377\366\366\366\377\364\364\364\377\363\363\363\377\361\361\361" "\377\360\360\360\377\356\356\356\377\355\355\355\377\353\353\353\377" "\352\352\352\377\350\350\350\377\347\347\347\377\345\345\345\377\344" "\344\344\377\342\342\342\377\341\341\341\377\337\337\337\377\336\336" "\336\377\334\334\334\377\333\333\333\377\331\331\331\377\330\330\330" "\377\326\326\326\377\325\325\325\377\323\323\323\377\273UU\377\261\7" "\7\377\326\30\30\377\327\30\30\377\300\13\13\377\257\17\17\377\310\310" "\310\377\307\307\307\377\311\311\311\377\203\370\370\370\377\203rst\377" "\220\377\377\377\0\203rst\377\203\375\375\375\377$\370\370\370\377\367" "\367\367\377\366\366\366\377\365\365\365\377\364\364\364\377\362\362" "\362\377\361\361\361\377\357\357\357\377\356\356\356\377\355\355\355" "\377\353\353\353\377\351\351\351\377\350\350\350\377\346\346\346\377" "\345\345\345\377\343\343\343\377\342\342\342\377\340\340\340\377\337" "\337\337\377\335\335\335\377\334\334\334\377\332\332\332\377\331\331" "\331\377\327\327\327\377\326\326\326\377\324\324\324\377\323\323\323" "\377\270DD\377\266\10\10\377\334\34\34\377\335\35\35\377\301\15\15\377" "\257\17\17\377\310\310\310\377\307\307\307\377\311\311\311\377\203\370" "\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\375\375\375" "\377\1\367\367\367\377\202#\35%\377\16""0+2\377\363\363\363\377\362\362" "\362\377\346\346\346\377\256\256\256\377\255\255\255\377\254\254\254" "\377\253\253\253\377\252\252\252\377\251\251\251\377\250\250\250\377" "\247\247\247\377\246\246\246\377\245\245\245\377\202\243\243\243\377" "\21\241\241\241\377\240\240\240\377\277\277\277\377\331\331\331\377\327" "\327\327\377\326\326\326\377\324\324\324\377\323\323\323\377\270DD\377" "\266\10\10\377\342\40\40\377\343!!\377\303\16\16\377\257\17\17\377\310" "\310\310\377\306\306\306\377\311\311\311\377\203\370\370\370\377\203" "rst\377\220\377\377\377\0\203rst\377\203\375\375\375\377\1\366\366\366" "\377\202\16\10\20\377\5\33\26\35\377\362\362\362\377\361\361\361\377" "\345\345\345\377\247\247\247\377\202\246\246\246\377\202\244\244\244" "\377\30\242\242\242\377\241\241\241\377\240\240\240\377\237\237\237\377" "\236\236\236\377\235\235\235\377\234\234\234\377\233\233\233\377\232" "\232\232\377\273\273\273\377\330\330\330\377\327\327\327\377\325\325" "\325\377\324\324\324\377\322\322\322\377\276bb\377\260\5\5\377\350$$" "\377\351%%\377\277\14\14\377\262''\377\310\310\310\377\306\306\306\377" "\311\311\311\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203" "rst\377\203\374\374\374\377\1\365\365\365\377\202\16\10\20\377\20\33" "\26\35\377\361\361\361\377\360\360\360\377\344\344\344\377\247\247\247" "\377\246\246\246\377\245\245\245\377\244\244\244\377\243\243\243\377" "\242\242\242\377\241\241\241\377\240\240\240\377\237\237\237\377\236" "\236\236\377\235\235\235\377\234\234\234\377\202\232\232\232\377\17\272" "\272\272\377\330\330\330\377\326\326\326\377\325\325\325\377\323\323" "\323\377\322\322\322\377\301~~\377\254\0\0\377\346$$\377\354''\377\257" "\4\4\377\272^^\377\307\307\307\377\306\306\306\377\311\311\311\377\203" "\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\374\374" "\374\377\1\364\364\364\377\202\362\362\362\377\32\361\361\361\377\360" "\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354" "\354\377\352\352\352\377\351\351\351\377\350\350\350\377\346\346\346" "\377\345\345\345\377\343\343\343\377\342\342\342\377\340\340\340\377" "\337\337\337\377\335\335\335\377\334\334\334\377\333\333\333\377\331" "\331\331\377\330\330\330\377\326\326\326\377\325\325\325\377\323\323" "\323\377\322\322\322\377\307\235\235\377\254\0\0\377\202\334\35\35\377" "\5\254\0\0\377\301\221\221\377\307\307\307\377\306\306\306\377\311\311" "\311\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377" "\203\374\374\374\377\1\362\362\362\377\202\361\361\361\377!\360\360\360" "\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377" "\353\353\353\377\352\352\352\377\350\350\350\377\347\347\347\377\346" "\346\346\377\344\344\344\377\343\343\343\377\341\341\341\377\340\340" "\340\377\336\336\336\377\335\335\335\377\334\334\334\377\332\332\332" "\377\331\331\331\377\327\327\327\377\326\326\326\377\324\324\324\377" "\323\323\323\377\321\321\321\377\315\274\274\377\254\0\0\377\315\24\24" "\377\311\21\21\377\255\3\3\377\306\277\277\377\307\307\307\377\305\305" "\305\377\311\311\311\377\203\370\370\370\377\203rst\377\220\377\377\377" "\0\203rst\377\203\374\374\374\377\1\361\361\361\377\202\360\360\360\377" "!\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353" "\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377\346\346" "\346\377\345\345\345\377\344\344\344\377\342\342\342\377\341\341\341" "\377\337\337\337\377\336\336\336\377\335\335\335\377\333\333\333\377" "\332\332\332\377\330\330\330\377\327\327\327\377\325\325\325\377\324" "\324\324\377\322\322\322\377\321\321\321\377\317\317\317\377\263\"\"" "\377\267\10\10\377\260\5\5\377\26566\377\310\310\310\377\306\306\306" "\377\305\305\305\377\310\310\310\377\203\370\370\370\377\203rst\377\220" "\377\377\377\0\203rst\377\1\373\373\373\377\202\374\374\374\377\1\361" "\361\361\377\202\357\357\357\377!\356\356\356\377\355\355\355\377\354" "\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350" "\350\377\347\347\347\377\346\346\346\377\344\344\344\377\343\343\343" "\377\342\342\342\377\340\340\340\377\337\337\337\377\335\335\335\377" "\334\334\334\377\333\333\333\377\331\331\331\377\330\330\330\377\326" "\326\326\377\325\325\325\377\323\323\323\377\322\322\322\377\320\320" "\320\377\317\317\317\377\300{{\377\254\0\0\377\254\1\1\377\303\240\240" "\377\310\310\310\377\306\306\306\377\305\305\305\377\310\310\310\377" "\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\373" "\373\373\377\2\360\360\360\377\356\356\356\377\202\355\355\355\377\40" "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350" "\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344" "\344\377\342\342\342\377\341\341\341\377\340\340\340\377\336\336\336" "\377\335\335\335\377\333\333\333\377\332\332\332\377\331\331\331\377" "\327\327\327\377\326\326\326\377\324\324\324\377\323\323\323\377\321" "\321\321\377\320\320\320\377\317\317\317\377\315\315\315\377\301\206" "\206\377\306\255\255\377\311\311\311\377\307\307\307\377\306\306\306" "\377\304\304\304\377\310\310\310\377\203\370\370\370\377\203rst\377\220" "\377\377\377\0\203rst\377\203\373\373\373\377\2\357\357\357\377\355\355" "\355\377\202\354\354\354\377\40\353\353\353\377\352\352\352\377\351\351" "\351\377\350\350\350\377\347\347\347\377\346\346\346\377\345\345\345" "\377\344\344\344\377\343\343\343\377\341\341\341\377\340\340\340\377" "\337\337\337\377\336\336\336\377\334\334\334\377\333\333\333\377\331" "\331\331\377\330\330\330\377\327\327\327\377\325\325\325\377\324\324" "\324\377\322\322\322\377\321\321\321\377\317\317\317\377\316\316\316" "\377\315\315\315\377\313\313\313\377\312\312\312\377\310\310\310\377" "\307\307\307\377\305\305\305\377\304\304\304\377\307\307\307\377\203" "\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\373\373" "\373\377\1\356\356\356\377\203\353\353\353\377\2\352\352\352\377\351" "\351\351\377\202\350\350\350\377\34\346\346\346\377\345\345\345\377\344" "\344\344\377\343\343\343\377\342\342\342\377\341\341\341\377\337\337" "\337\377\336\336\336\377\335\335\335\377\334\334\334\377\332\332\332" "\377\331\331\331\377\327\327\327\377\326\326\326\377\325\325\325\377" "\323\323\323\377\322\322\322\377\320\320\320\377\317\317\317\377\316" "\316\316\377\314\314\314\377\313\313\313\377\311\311\311\377\310\310" "\310\377\306\306\306\377\305\305\305\377\303\303\303\377\307\307\307" "\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203" "\373\373\373\377\1\354\354\354\377\202\352\352\352\377\202\351\351\351" "\377\2\350\350\350\377\347\347\347\377\202\346\346\346\377\33\345\345" "\345\377\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340" "\377\337\337\337\377\335\335\335\377\334\334\334\377\333\333\333\377" "\331\331\331\377\330\330\330\377\327\327\327\377\325\325\325\377\324" "\324\324\377\323\323\323\377\321\321\321\377\320\320\320\377\316\316" "\316\377\315\315\315\377\311\276\276\377\276xx\377\271\\\\\377\275\177" "\177\377\306\306\306\377\304\304\304\377\303\303\303\377\306\306\306" "\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203" "\372\372\372\377\1\353\353\353\377\202\351\351\351\377\202\350\350\350" "\377\2\347\347\347\377\346\346\346\377\202\345\345\345\377\33\344\344" "\344\377\343\343\343\377\341\341\341\377\340\340\340\377\337\337\337" "\377\336\336\336\377\335\335\335\377\333\333\333\377\332\332\332\377" "\331\331\331\377\327\327\327\377\326\326\326\377\325\325\325\377\323" "\323\323\377\322\322\322\377\321\321\321\377\317\317\317\377\316\316" "\316\377\313\305\305\377\264,,\377\254\0\0\377\257\4\4\377\254\0\0\377" "\270^^\377\304\304\304\377\302\302\302\377\306\306\306\377\203\370\370" "\370\377\203rst\377\220\377\377\377\0\203rst\377\203\372\372\372\377" "\1\352\352\352\377\202\350\350\350\377\202\347\347\347\377\2\346\346" "\346\377\345\345\345\377\202\344\344\344\377\33\343\343\343\377\342\342" "\342\377\341\341\341\377\337\337\337\377\336\336\336\377\335\335\335" "\377\334\334\334\377\333\333\333\377\331\331\331\377\330\330\330\377" "\327\327\327\377\325\325\325\377\324\324\324\377\323\323\323\377\321" "\321\321\377\320\320\320\377\317\317\317\377\315\315\315\377\273__\377" "\256\3\3\377\345XX\377\357++\377\302\16\16\377\257\17\17\377\303\303" "\303\377\302\302\302\377\305\305\305\377\203\370\370\370\377\203rst\377" "\220\377\377\377\0\203rst\377\203\372\372\372\377\1\351\351\351\377\202" "\16\10\20\377\1\33\26\35\377\202\345\345\345\377\1\331\331\331\377\203" "\237\237\237\377\1\236\236\236\377\202\235\235\235\377\1\233\233\233" "\377\202\232\232\232\377\3\231\231\231\377\230\230\230\377\227\227\227" "\377\202\226\226\226\377\1\224\224\224\377\202\223\223\223\377\14\266" "\266\266\377\316\316\316\377\315\315\315\377\271RR\377\263\7\7\377\357" ",,\377\357))\377\304\17\17\377\257\13\13\377\303\303\303\377\301\301" "\301\377\305\305\305\377\203\370\370\370\377\203rst\377\220\377\377\377" "\0\203rst\377\203\372\372\372\377\1\350\350\350\377\202\16\10\20\377" "\1\32\25\34\377\202\344\344\344\377\2\330\330\330\377\237\237\237\377" "\202\236\236\236\377\202\235\235\235\377\4\234\234\234\377\233\233\233" "\377\232\232\232\377\231\231\231\377\202\230\230\230\377\22\227\227\227" "\377\226\226\226\377\225\225\225\377\224\224\224\377\223\223\223\377" "\222\222\222\377\266\266\266\377\315\315\315\377\314\314\314\377\273" "cc\377\254\0\0\377\310\21\21\377\306\20\20\377\254\0\0\377\267XX\377" "\302\302\302\377\301\301\301\377\304\304\304\377\203\370\370\370\377" "\203rst\377\220\377\377\377\0\203rst\377\202\371\371\371\377\2\372\372" "\372\377\347\347\347\377\202\"\34$\377\1.)0\377\202\343\343\343\377\2" "\330\330\330\377\244\244\244\377\203\243\243\243\377\2\242\242\242\377" "\241\241\241\377\202\240\240\240\377\202\236\236\236\377\23\235\235\235" "\377\234\234\234\377\233\233\233\377\232\232\232\377\231\231\231\377" "\230\230\230\377\227\227\227\377\267\267\267\377\315\315\315\377\313" "\313\313\377\311\310\310\377\270UU\377\254\1\1\377\257\20\20\377\265" "NN\377\303\302\302\377\302\302\302\377\300\300\300\377\304\304\304\377" "\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\371" "\371\371\377\1\345\345\345\377\203\343\343\343\377\202\342\342\342\377" "\2\341\341\341\377\340\340\340\377\202\337\337\337\377\32\336\336\336" "\377\335\335\335\377\334\334\334\377\333\333\333\377\332\332\332\377" "\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\324" "\324\324\377\323\323\323\377\321\321\321\377\320\320\320\377\317\317" "\317\377\315\315\315\377\314\314\314\377\313\313\313\377\311\311\311" "\377\310\310\310\377\307\302\302\377\305\305\305\377\304\304\304\377" "\303\303\303\377\301\301\301\377\300\300\300\377\303\303\303\377\203" "\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\371\371" "\371\377\1\344\344\344\377\202\342\342\342\377\202\341\341\341\377\202" "\340\340\340\377\1\337\337\337\377\202\336\336\336\377\32\335\335\335" "\377\334\334\334\377\333\333\333\377\332\332\332\377\331\331\331\377" "\330\330\330\377\326\326\326\377\325\325\325\377\324\324\324\377\323" "\323\323\377\322\322\322\377\320\320\320\377\317\317\317\377\316\316" "\316\377\315\315\315\377\313\313\313\377\312\312\312\377\311\311\311" "\377\307\307\307\377\306\306\306\377\305\305\305\377\303\303\303\377" "\302\302\302\377\300\300\300\377\277\277\277\377\303\303\303\377\203" "\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\371\371" "\371\377\1\343\343\343\377\202\341\341\341\377\202\340\340\340\377\202" "\337\337\337\377\1\336\336\336\377\202\335\335\335\377\32\334\334\334" "\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330\377" "\327\327\327\377\326\326\326\377\324\324\324\377\323\323\323\377\322" "\322\322\377\321\321\321\377\320\320\320\377\316\316\316\377\315\315" "\315\377\314\314\314\377\313\313\313\377\311\311\311\377\310\310\310" "\377\307\307\307\377\305\305\305\377\304\304\304\377\303\303\303\377" "\301\301\301\377\300\300\300\377\277\277\277\377\302\302\302\377\203" "\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\371\371" "\371\377\1\342\342\342\377\202\340\340\340\377\202\337\337\337\377\202" "\336\336\336\377\2\335\335\335\377\334\334\334\377\202\333\333\333\377" "\31\332\332\332\377\331\331\331\377\330\330\330\377\327\327\327\377\326" "\326\326\377\325\325\325\377\324\324\324\377\322\322\322\377\321\321" "\321\377\320\320\320\377\317\317\317\377\316\316\316\377\314\314\314" "\377\313\313\313\377\312\312\312\377\311\311\311\377\307\307\307\377" "\306\306\306\377\305\305\305\377\303\303\303\377\302\302\302\377\301" "\301\301\377\277\277\277\377\276\276\276\377\301\301\301\377\203\370" "\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370\370\370" "\377\2\341\341\341\377\337\337\337\377\203\336\336\336\377\202\335\335" "\335\377\2\334\334\334\377\333\333\333\377\202\332\332\332\377\31\331" "\331\331\377\330\330\330\377\327\327\327\377\326\326\326\377\325\325" "\325\377\324\324\324\377\323\323\323\377\322\322\322\377\320\320\320" "\377\317\317\317\377\316\316\316\377\315\315\315\377\314\314\314\377" "\312\312\312\377\311\311\311\377\310\310\310\377\307\307\307\377\305" "\305\305\377\304\304\304\377\303\303\303\377\301\301\301\377\300\300" "\300\377\277\277\277\377\275\275\275\377\301\301\301\377\203\370\370" "\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370\370\370\377" "\1\340\340\340\377\203\335\335\335\377\202\334\334\334\377\202\333\333" "\333\377\2\332\332\332\377\331\331\331\377\202\330\330\330\377\30\327" "\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377\323\323" "\323\377\322\322\322\377\321\321\321\377\320\320\320\377\316\316\316" "\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377" "\310\310\310\377\307\307\307\377\306\306\306\377\305\305\305\377\303" "\303\303\377\302\302\302\377\301\301\301\377\277\277\277\377\276\276" "\276\377\275\275\275\377\300\300\300\377\203\370\370\370\377\203rst\377" "\220\377\377\377\0\203rst\377\203\370\370\370\377\244\224\312\352\377" "\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370" "\370\370\377\244\224\312\352\377\203\370\370\370\377\203rst\377\220\377" "\377\377\0\203rst\377\203\370\370\370\377\244\224\312\352\377\203\370" "\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370\370\370" "\377\1\224\312\352\377\202\32\31$\377\1\"%1\377\202\224\312\352\377\1" "\212\275\332\377\232Ts\210\377\1\210\272\331\377\202\224\312\352\377" "\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370" "\370\370\377\1\224\312\352\377\202\16\10\20\377\1\26\24\35\377\202\224" "\312\352\377\1\211\273\331\377\232Nj~\377\1\207\270\326\377\202\224\312" "\352\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377" "\203\370\370\370\377\1\224\312\352\377\202\16\10\20\377\1\26\24\35\377" "\202\224\312\352\377\1\211\273\331\377\232Nj~\377\1\207\270\326\377\202" "\224\312\352\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203" "rst\377\203\370\370\370\377\244\224\312\352\377\203\370\370\370\377\203" "rst\377\220\377\377\377\0\203rst\377\203\370\370\370\377\244\224\312" "\352\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377" "\203\370\370\370\377\244\224\312\352\377\203\370\370\370\377\203rst\377" "\220\377\377\377\0\203rst\377\203\370\370\370\377\1\325\325\325\377\202" "\322\322\322\377\202\321\321\321\377\203\320\320\320\377\1\317\317\317" "\377\202\316\316\316\377\1\315\315\315\377\202\314\314\314\377\17\313" "\313\313\377\312\312\312\377\311\311\311\377\310\310\310\377\307\307" "\307\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303\303" "\377\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377" "\276\276\276\377\274\274\274\377\206\273\273\273\377\1\300\300\300\377" "\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203\370" "\370\370\377\2\324\324\324\377\321\321\321\377\203\320\320\320\377\202" "\317\317\317\377\202\316\316\316\377\202\315\315\315\377\2\314\314\314" "\377\313\313\313\377\202\312\312\312\377\16\311\311\311\377\310\310\310" "\377\307\307\307\377\306\306\306\377\305\305\305\377\304\304\304\377" "\303\303\303\377\302\302\302\377\301\301\301\377\300\300\300\377\277" "\277\277\377\276\276\276\377\275\275\275\377\274\274\274\377\206\273" "\273\273\377\1\300\300\300\377\203\370\370\370\377\203rst\377\220\377" "\377\377\0\203rst\377\203\370\370\370\377\1\323\323\323\377\204\317\317" "\317\377\202\316\316\316\377\202\315\315\315\377\202\314\314\314\377" "\2\313\313\313\377\312\312\312\377\202\311\311\311\377\15\310\310\310" "\377\307\307\307\377\306\306\306\377\305\305\305\377\304\304\304\377" "\303\303\303\377\302\302\302\377\301\301\301\377\300\300\300\377\277" "\277\277\377\276\276\276\377\275\275\275\377\274\274\274\377\207\273" "\273\273\377\1\300\300\300\377\203\370\370\370\377\203rst\377\220\377" "\377\377\0\203rst\377\203\370\370\370\377\1\323\323\323\377\203\316\316" "\316\377\203\315\315\315\377\202\314\314\314\377\1\313\313\313\377\202" "\312\312\312\377\1\311\311\311\377\202\310\310\310\377\14\307\307\307" "\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303\303\377" "\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377\276" "\276\276\377\275\275\275\377\274\274\274\377\210\273\273\273\377\1\300" "\300\300\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst" "\377\203\370\370\370\377\1\321\321\321\377\203\315\315\315\377\202\314" "\314\314\377\202\313\313\313\377\202\312\312\312\377\202\311\311\311" "\377\2\310\310\310\377\307\307\307\377\202\306\306\306\377\12\305\305" "\305\377\304\304\304\377\303\303\303\377\302\302\302\377\301\301\301" "\377\300\300\300\377\277\277\277\377\276\276\276\377\275\275\275\377" "\274\274\274\377\211\273\273\273\377\1\300\300\300\377\203\370\370\370" "\377\203rst\377\220\377\377\377\0\203rst\377\203\370\370\370\377\1\320" "\320\320\377\202\314\314\314\377\203\313\313\313\377\202\312\312\312" "\377\202\311\311\311\377\202\310\310\310\377\2\307\307\307\377\306\306" "\306\377\202\305\305\305\377\11\304\304\304\377\303\303\303\377\302\302" "\302\377\301\301\301\377\300\300\300\377\277\277\277\377\276\276\276" "\377\275\275\275\377\274\274\274\377\212\273\273\273\377\1\300\300\300" "\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst\377\203" "\370\370\370\377\1\317\317\317\377\202\313\313\313\377\203\312\312\312" "\377\202\311\311\311\377\202\310\310\310\377\1\307\307\307\377\202\306" "\306\306\377\1\305\305\305\377\202\304\304\304\377\10\303\303\303\377" "\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377\276" "\276\276\377\275\275\275\377\274\274\274\377\213\273\273\273\377\1\300" "\300\300\377\203\370\370\370\377\203rst\377\220\377\377\377\0\203rst" "\377\203\370\370\370\377\2\322\322\322\377\316\316\316\377\203\315\315" "\315\377\203\314\314\314\377\202\313\313\313\377\1\312\312\312\377\203" "\311\311\311\377\1\310\310\310\377\202\307\307\307\377\6\306\306\306" "\377\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302\377" "\301\301\301\377\214\300\300\300\377\1\306\306\306\377\203\370\370\370" "\377\203rst\377\220\377\377\377\0\203rst\377\252\370\370\370\377\203" "rst\377\220\377\377\377\0\203rst\377\1\364\364\364\377\250\370\370\370" "\377\1\363\363\363\377\203rst\377\220\377\377\377\0\203rst\377\2\322" "\322\323\377\365\365\365\377\246\370\370\370\377\2\364\364\364\377\314" "\314\315\377\203rst\377\220\377\377\377\0\1rst\376\256rst\377\1rst\376" "\220\377\377\377\0\1rsu\274\256rst\377\1rsu\274\220\377\377\377\0\2t" "tt!rst\316\254rst\377\2rst\316ttt!\222\377\377\377\0\1vvv\34\252ppx\40" "\1vvv\34\377\377\377\377\0\212\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_systray_menu_tasks) #endif #ifdef __GNUC__ const guint8 osmo_stock_systray_menu_tasks[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_systray_menu_tasks[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (905) */ "\0\0\3\241" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (64) */ "\0\0\0@" /* width (16) */ "\0\0\0\20" /* height (16) */ "\0\0\0\20" /* pixel_data: */ "\1\243\243\243\311\202\241\241\241\377\13\237\237\237\377\236\236\236" "\377\234\234\234\377\232\232\232\377\230\230\230\377\226\226\226\377" "\224\224\224\377\222\222\222\377\220\220\220\377\221\221\221\342\214" "\214\214\13\202\377\377\377\0\3\237\237\237\377\373\373\373\377\376\376" "\376\377\202\375\375\375\377\202\374\374\374\377\202\373\373\373\377" "\202\372\372\372\377\3\370\370\370\377\245\245\245\364\214\214\214(\202" "\377\377\377\0\2\237\237\237\377\376\376\376\377\202\361\361\361\377" "\12\360\360\360\377\356\356\356\377\353\353\353\377\350\350\350\377\345" "\345\345\377\342\342\342\377\337\337\337\377\362\362\362\377\254\254" "\254\365\214\214\214(\202\377\377\377\0\2\235\235\235\377\376\376\376" "\377\202\364\364\364\377\12\362\362\362\377\357\357\357\377\354\354\354" "\377\351\351\351\377\346\346\346\377\342\342\342\377\337\337\337\377" "\362\362\362\377\254\254\254\365\214\214\214(\202\377\377\377\0\16\234" "\234\234\377\375\375\375\377)$+\377\355\355\355\377\256\256\256\377\254" "\254\254\377\252\252\252\377\247\247\247\377\245\245\245\377\243\243" "\243\377\306\306\306\377\362\362\362\377\253\253\253\365\213\213\213" "(\202\377\377\377\0\16\232\232\232\377\375\375\375\377\371\371\371\377" "\367\367\367\377\363\363\363\377\360\360\360\377\355\355\355\377\351" "\351\351\377\346\346\346\377\342\342\342\377\337\337\337\377\362\362" "\362\377\253\253\253\365\213\213\213(\202\377\377\377\0\16\230\230\230" "\377\374\374\374\377\366\366\366\377\365\365\365\377\362\362\362\377" "\357\357\357\377\354\354\354\377\351\351\351\377\345\345\345\377\342" "\342\342\377\336\336\336\377\362\362\362\377\252\252\252\365\212\212" "\212(\202\377\377\377\0\22\226\226\226\377\374\374\374\377)$+\377\351" "\351\351\377\254\254\254\377\253\253\253\377\251\251\251\377\246\246" "\246\377\244\244\244\377\304\304\304\377\335\335\335\377\362\362\362" "\377\251\251\250\365J}\13\313G}\4\305Dw\3""3\225\225\225\377\373\373" "\373\377\202\360\360\360\377\16\356\356\356\377\354\354\354\377\351\351" "\351\377\346\346\346\377\343\343\343\377\340\340\340\377\334\334\334" "\377\362\362\362\377}\224`\371\211\260Y\371\224\304_\376F{\4\352\223" "\223\223\377\373\373\373\377\202\355\355\355\377\36\353\353\353\377\351" "\351\351\377\347\347\347\377\344\344\344\377\341\341\341\377\336\336" "\336\377\333\333\333\377\345\351\340\377c\215,\376\233\321`\377\213\270" "X\371F|\4\223\221\221\221\377\372\372\372\377(#*\377\342\342\342\377" "\247\247\247\377\246\246\246\377\244\244\244\377\242\242\242\377\226" "\234\217\377\234\235\232\377\300\300\300\377\206\247\\\377\232\300m\377" "\226\317Z\377N\200\16\361Dw\3\15\217\217\217\377\372\372\372\377\202" "\347\347\347\377\36\346\346\346\377\344\344\344\377\342\342\342\377\252" "\274\222\377c\217-\377f\2201\377\245\266\217\377x\237H\377\221\320P\377" "y\245F\370Ex\3`\377\377\377\0\215\215\215\377\371\371\371\377\345\345" "\345\377\344\344\344\377\343\343\343\377\341\341\341\377\337\337\337" "\377R\202\26\377\252\316\202\377\223\277_\377q\230\77\377\232\306g\377" "\223\304\\\377J}\11\333Dw\3\1\377\377\377\0\213\213\213\377\366\366\366" "\377\205\370\370\370\377\7\274\316\247\377W\205\33\377\242\310t\377\217" "\314N\377\211\311B\377i\2232\377_~6T\202\377\377\377\0\1\217\217\217" "\311\207\212\212\212\377\6\177\207u\377P}\26\377\205\257S\377\215\267" "[\377]\2010\365\212\212\212\13\213\377\377\377\0\4Dw\3\12G{\4\252Fz\4" "\344Dw\3\25\203\377\377\377\0"}; #endif /* TASKS_ENABLED */ /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_stock_systray_normal) #endif #ifdef __GNUC__ const guint8 osmo_stock_systray_normal[] __attribute__ ((__aligned__ (4))) = #else const guint8 osmo_stock_systray_normal[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (6614) */ "\0\0\31\356" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (256) */ "\0\0\1\0" /* width (64) */ "\0\0\0@" /* height (64) */ "\0\0\0@" /* pixel_data: */ "\377\377\377\377\0\377\377\377\377\0\234\377\377\377\0\13""999\22""7" "77S557s668\222558\261667\306668\256559\220557s777S333\31\262\377\377" "\377\0\4+++\6""669Q668\256668\371\212668\377\3""669\324557\217666/\255" "\377\377\377\0\3\0\0\0\1""669g668\354\220668\377\2""669\264559:\252\377" "\377\377\0\2""777%668\300\206668\377\7==\77\377DCD\377GFH\377GFG\377" "@@A\377::<\377779\377\207668\377\2""559\220UUU\3\247\377\377\377\0\2" "669c668\367\204668\377\16\77\77@\377XWW\377xvu\377|zx\377rpo\377hfe\377" "^\\[\377TRR\377JHH\377@>\77\377535\377/./\377112\377557\377\204668\377" "\2""669\27100@\20\245\377\377\377\0\2""669c668\376\203668\377\22;:<\377" "YWW\377pnm\377zxw\377\204\202\200\377zxv\377pnl\377fdc\377[YY\377QOP" "\377GEF\377=;<\377313\377)')\377(&(\377)'*\377/.0\377557\377\203668\377" "\2""668\331666&\243\377\377\377\0\2""669^668\375\203668\377\16CBC\377" "\\ZZ\377hff\377rpo\377}{y\377\201\177~\377wut\377mkj\377caa\377YWW\377" "OMM\377ECD\377;9:\3771/0\377\204(&(\377\2*(*\377446\377\203668\377\2" "667\357777F\241\377\377\377\0\2""666B668\375\203668\377\5EDE\377WUU\377" "a_^\377kih\377usq\377\202\177}{\377\10usr\377kih\377a_^\377WUU\377MK" "K\377CAA\377978\377.,.\377\205(&(\377\2(')\377214\377\203668\377\2""6" "68\373555+\237\377\377\377\0\2$$I\7""668\331\203668\377\20\77>\77\377" "OMM\377YWW\377ca`\377mkj\377wut\377\201\177}\377}{y\377sqo\377igf\377" "^\\\\\377TRR\377JHI\377@>\77\377646\377,*,\377\206(&(\377\2)')\3770/" "1\377\203668\377\1""667\301\237\377\377\377\0\1""668\177\203668\377\21" ":9:\377GEF\377QOO\377[YY\377ecc\377oml\377ywv\377\204\202\200\377zxw" "\377pnm\377fdd\377\\ZZ\377RPP\377HFG\377><=\377423\377*(*\377\210(&(" "\377\1""0/1\377\203668\377\1""777]\235\377\377\377\0\2""666&668\370\202" "668\377\21""667\377\77=>\377IGH\377TRR\377^\\[\377hfe\377rpo\377|zx\377" "\202\200~\377xvu\377nlk\377dba\377ZXX\377PNN\377FDD\377<:;\377201\377" "\211(&(\377\2('(\377546\377\202668\377\2""668\350333\17\234\377\377\377" "\0\1""668\223\203668\377\21""867\377B@A\377LJJ\377VTT\377`^^\377jhg\377" "trq\377~|z\377\200~|\377vtr\377lji\377b`_\377XVV\377NLL\377DBB\37797" "9\377/-/\377\212(&(\377\1-+-\377\203668\377\1""668\223\233\377\377\377" "\0\2\0\0\0\1""668\344\202668\377\22""435\377:89\377DBC\377NLL\377XVV" "\377TST\377JIJ\377EEG\377\77>@\377JIJ\377TSS\377[YZ\377^\\\\\377USS\377" "KIJ\377A\77@\377756\377-+-\377\213(&(\377\1""213\377\202668\377\2""6" "68\37533<\36\232\377\377\377\0\1""8887\203668\377\5""314\377<:;\377F" "DE\377MLM\377AAB\377\207668\377\6""98:\377HGH\377IGG\377\77=>\377534" "\377+)+\377\213(&(\377\2*(*\377557\377\202668\377\1""669g\232\377\377" "\377\0\1""668\210\203668\377\4""535\377><>\377HFF\377;;=\377\212668\377" "\3;:<\377<:;\377202\377\215(&(\377\1""324\377\202668\377\1""668\256\232" "\377\377\377\0\1""668\256\204668\377\2>=>\377=<=\377\203668\377\5B\77" "<\377mbL\377|nR\377bYI\377B\77=\377\205668\377\1""213\377\211(&(\377" "\202,*-\377\3)')\377(&(\377.-/\377\202668\377\1""668\354\232\377\377" "\377\0\1""558\277\210668\377\2SMC\377\275\241j\377\204\306\250m\377\2" "\227\203[\377B\77<\377\204668\377\2""224\377+*,\377\206(&(\377\1-+.\377" "\202668\377\3""446\377*(*\377,+-\377\202668\377\2""668\376@@@\4\231\377" "\377\377\0\1""667\317\207668\377\2B\77<\377\270\235h\377\206\306\250" "m\377\2\273\237i\377i^J\377\205668\377\6""435\377-,.\377*(*\377(&(\377" "(&)\377/.0\377\204668\377\2""325\377,+,\377\203668\377\1""777\27\231" "\377\377\377\0\1""668\337\206668\377\15@><\377\242\213_\377\306\250m" "\377\312\256t\377\322\266\200\377\331\300\217\377\341\312\233\377\337" "\307\230\377\322\266\202\377\307\251p\377\306\250m\377\232\205]\377D" "A=\377\206668\377\202557\377\206668\377\1""335\377\203668\377\1""999" "$\231\377\377\377\0\1""668\356\202668\377\23@=3\377\256\227`\377\216" "~Y\377siP\377\304\252q\377\323\270\202\377\340\307\230\377\347\320\244" "\377\351\322\247\377\352\324\252\377\353\325\253\377\353\324\253\377" "\352\323\251\377\347\320\244\377\335\302\221\377\322\265\177\377\300" "\243m\377\202rT\377DA=\377\210668\377\2=;;\377MH@\377\206668\377\1""7" "77\16\231\377\377\377\0\15""668\276C\77""1\364E@1\377WM(\377\325\270" "q\377\341\304z\377\341\305\177\377\337\304\210\377\341\307\227\377\343" "\312\233\377\345\314\237\377\347\316\242\377\350\320\244\377\202\350" "\320\245\377\11\347\317\243\377\346\315\241\377\344\313\235\377\342\310" "\231\377\340\304\225\377\331\274\210\377\313\256z\377\221~\\\377NIA\377" "\205668\377\4IE@\377\255\224d\377\267\234e\377FC>\377\204668\377\1""7" "68\361\233\377\377\377\0\1{e\26\320\202{e\26\377\36\323\265r\377\341" "\304|\377\342\306\202\377\342\306\212\377\337\304\223\377\341\306\226" "\377\343\311\232\377\344\312\234\377\345\314\236\377\345\314\237\377" "\345\314\236\377\344\313\235\377\343\312\233\377\342\310\230\377\340" "\305\225\377\336\303\221\377\334\300\214\377\332\274\207\377\327\271" "\202\377\325\266}\377\306\250s\377\250\220d\377\213xV\377\217{V\377\252" "\216\\\377\300\235_\377\303\235Y\377\277\230Q\377\261\215N\377RJ8\377" "\203668\377\1""986\316\233\377\377\377\0\1{e\27\265\202{e\26\377\33\316" "\261o\377\341\305\177\377\343\307\205\377\342\307\211\377\335\301\216" "\377\336\303\221\377\340\305\224\377\341\306\226\377\342\310\230\377" "\342\310\231\377\342\310\230\377\341\307\227\377\340\306\225\377\337" "\304\223\377\336\302\220\377\334\277\214\377\332\275\210\377\330\272" "\203\377\326\267\177\377\323\263z\377\321\260u\377\316\254p\377\314\251" "j\377\311\245e\377\307\242`\377\304\236Z\377\301\232U\377\202\277\227" "P\377\5\232|1\377[O&\377QH+\377hW!\373UU+\6\233\377\377\377\0\1{f\26" "\231\202{e\26\377\11\267\232W\377\341\305\200\377\343\310\206\377\344" "\311\213\377\333\277\212\377\334\277\214\377\335\301\216\377\336\303" "\220\377\337\303\222\377\202\337\304\222\377\20\336\303\221\377\336\302" "\220\377\335\300\215\377\333\276\212\377\332\274\207\377\330\272\203" "\377\326\267\177\377\324\264{\377\321\261v\377\317\256q\377\315\252l" "\377\312\247g\377\310\243b\377\305\240]\377\303\234W\377\300\230R\377" "\202\277\227P\377\1\224w+\377\202{e\26\377\1|e\26\341\234\377\377\377" "\0\1{f\25x\202{e\26\377\32\205n\"\377\335\302\200\377\343\310\207\377" "\343\311\213\377\336\302\211\377\331\274\206\377\332\275\211\377\333" "\276\212\377\334\277\214\377\334\300\214\377\334\277\214\377\333\277" "\213\377\333\276\212\377\332\274\207\377\331\273\205\377\327\271\202" "\377\325\266~\377\324\264{\377\322\261v\377\317\256r\377\315\253n\377" "\313\250i\377\311\244d\377\306\241_\377\304\236Z\377\301\232U\377\203" "\277\227P\377\1\205m\37\377\202{e\26\377\1|e\27\300\234\377\377\377\0" "\1zf\24""2\203{e\26\377\10\307\254i\377\343\310\211\377\343\311\214\377" "\343\311\217\377\327\271\202\377\327\271\203\377\330\272\204\377\331" "\273\205\377\202\331\273\206\377\17\331\273\205\377\330\272\204\377\327" "\271\202\377\326\267\177\377\325\265}\377\323\263y\377\321\261v\377\317" "\256r\377\315\253n\377\313\250i\377\311\245e\377\307\242`\377\304\237" "[\377\302\233V\377\300\230Q\377\202\277\227P\377\1\263\216F\377\203{" "e\26\377\1{f\25x\235\377\377\377\0\1{e\26\340\202{e\26\377\11\223{0\377" "\341\306\210\377\342\310\215\377\343\311\220\377\336\301\211\377\325" "\265}\377\325\266~\377\326\267\177\377\326\267\200\377\202\326\267\177" "\377\15\325\266~\377\324\265|\377\323\263z\377\322\261w\377\320\257t" "\377\317\255q\377\315\253m\377\313\250i\377\311\245e\377\307\242a\377" "\305\237\\\377\303\234X\377\300\231S\377\203\277\227P\377\1\232|1\377" "\203{e\26\377\1xc\25$\235\377\377\377\0\1{e\26\215\203{e\26\377\6\305" "\251g\377\342\310\214\377\342\310\220\377\342\311\222\377\331\273\203" "\377\322\262x\377\203\323\263y\377\15\323\262y\377\322\262x\377\321\261" "v\377\320\257t\377\317\256r\377\316\254o\377\314\252l\377\313\247h\377" "\311\245e\377\307\242`\377\305\237\\\377\303\234X\377\301\231T\377\203" "\277\227P\377\2\270\221I\377}g\30\377\202{e\26\377\1{f\26\316\236\377" "\377\377\0\2\200b\24\32{e\26\364\202{e\26\377\7\206o\"\377\335\301\206" "\377\342\310\217\377\342\310\221\377\342\310\223\377\327\271\200\377" "\320\256s\377\202\320\257s\377\16\320\256r\377\317\256q\377\316\255p" "\377\316\253n\377\314\252l\377\313\250i\377\312\246f\377\310\244c\377" "\307\242`\377\305\237\\\377\303\234X\377\301\231T\377\277\227P\377\277" "\230Q\377\202\277\227P\377\1\223v*\377\203{e\26\377\1{d\27W\237\377\377" "\377\0\1yc\27\203\203{e\26\377\30\237\204<\377\336\303\213\377\340\307" "\217\377\340\307\222\377\340\307\223\377\331\274\205\377\316\254o\377" "\315\252m\377\315\252l\377\314\251k\377\314\251j\377\313\247h\377\312" "\246f\377\310\244d\377\307\242a\377\306\240^\377\304\236Z\377\302\234" "W\377\301\231S\377\277\227P\377\300\231T\377\277\230Q\377\277\227P\377" "\243\2038\377\203{e\26\377\1o\\\37\350\237\377\377\377\0\3!1J\37(0K\333" "q_\34\377\203{e\26\377\27\252\216I\377\336\303\213\377\337\305\220\377" "\336\305\220\377\336\304\220\377\334\301\215\377\322\263y\377\313\247" "g\377\311\245e\377\311\244d\377\310\243b\377\307\242`\377\306\240^\377" "\304\237[\377\303\235X\377\302\233U\377\300\230R\377\301\232U\377\302" "\234X\377\300\231T\377\277\227P\377\254\211@\377|e\27\377\202{e\26\377" "\3zd\27\3776;B\377#/P\252\235\377\377\377\0\5#/NA\"0N\361#/N\3776:C\377" "wc\30\377\203{e\26\377\25\241\206>\377\330\274\204\377\334\303\216\377" "\334\302\215\377\333\301\215\377\332\300\214\377\330\275\211\377\322" "\263{\377\315\253n\377\312\246g\377\307\242a\377\305\241^\377\305\240" "^\377\304\240^\377\305\240^\377\305\241`\377\304\237]\377\302\233W\377" "\300\230Q\377\244\204:\377}f\27\377\203{e\26\377\1JH5\377\202#/N\377" "\2#/N\231\0\0\0\1\232\377\377\377\0\2!/P6\"/N\364\203#/N\377\2\77@=\377" "zd\27\377\203{e\26\377\22\215s'\377\311\253n\377\332\277\211\377\331" "\276\211\377\330\275\210\377\327\273\206\377\325\271\203\377\324\266" "\200\377\322\264|\377\317\261x\377\315\255s\377\312\251m\377\311\246" "i\377\307\243d\377\305\240_\377\303\235Z\377\274\226P\377\225x,\377\204" "{e\26\377\3VN-\377#0P\377$0P\377\202#/N\377\1$/M\201\231\377\377\377" "\0\2\40-M(#.N\354\202#/N\377\1""6Gh\377\202#/N\377\2GE7\377ze\27\377" "\203{e\26\377\20|e\27\377\232\1776\377\310\251m\377\325\271\203\377\324" "\267\202\377\322\265~\377\321\263{\377\317\260w\377\315\255s\377\314" "\253o\377\312\250k\377\310\245f\377\306\242b\377\300\234Y\377\241\204" "<\377\177h\32\377\204{e\26\377\10]S)\377&3R\377;[\200\377:Ln\377#/O\377" "#/N\377#/N\376$.OT\227\377\377\377\0\2#,O\35#/N\342\202#/N\377\3F\\\177" "\377r\225\274\377Mf\211\377\202#/N\377\2""9=@\377ta\32\377\205{e\26\377" "\13\210o\"\377\246\211C\377\271\234\\\377\302\243g\377\306\247k\377\307" "\250l\377\301\242e\377\271\232Z\377\252\215J\377\224{2\377\200i\35\377" "\204{e\26\377\7ze\27\377LH4\377%3S\377\77i\223\377@t\241\377=h\221\377" "5Gh\377\202#/N\377\2\"/N\364!1L/\225\377\377\377\0\2(6Q\23#.M\326\202" "#/N\377\1DZ}\377\202r\225\274\377\2p\224\273\377>^\202\377\202#/N\377" "\2-5H\377aU'\377\222{e\26\377\11m\\\37\377:=@\377$3T\377,\\\210\3776" "n\233\377@t\241\3779p\235\377^\3773X{\377An\224\377R\200\247\377c\214" "\263\377e\215\264\377b\214\263\377`\213\262\377^\211\260\377\\\210\257" "\377Y\207\256\377" "r\231\3772Qt\377\202#/N\377\1""2Ba\377\206\334\333\332\377\1&2Q\377\202" "#/N\377\10Nh\215\377]\200\251\377Rs\234\377Gg\216\377c\231\366#N\212\267\40J\207f,V\217\364!K\210\377" "\377\377\377\0!K\210^\77e\233\366\264\310\342\377\304\325\352\377\277" "\321\350\377\265\313\345\377\233\271\334\377\217\260\330\377s\235\317" "\377|\244\322\377\241\276\336\377p\222\275\373Fk\237\365\222\261\325" "\377#L\210\377\40J\2071&O\214\365\204\245\320\377y\235\313\377V{\257" "\3715\\\225\3640Y\222\366Kp\243\361t\225\300\373\242\274\334\377\201" "\247\323\377e\223\311\377\210\254\326\377\223\264\331\377\237\275\336" "\377\"L\210\377!L\211\213._\241\3753f\252\377!L\212\365!K\210}\40J\207" "/\40J\207\26\40J\207<#M\212\240-U\217\366\206\245\314\377\207\253\325" "\377f\225\312\377k\231\314\377\232\272\335\377\"L\210\377\"M\213\324" ")W\227\376!L\211\355\40J\2072\205\377\377\377\0\12\40J\207~Ek\237\364" "\215\260\330\377h\227\313\377m\233\315\377\227\270\334\377\"L\210\377" "!L\212\327\"M\212\321\40J\207#\205\377\377\377\0\4\40J\207E)R\215\365" "\212\252\322\377\230\267\334\377\202\225\266\333\377\21\224\266\332\377" "!K\210\377\377\377\377\0\40J\207\1\40J\207\2\40J\207\3\40J\207\4\40J" "\207\5\40J\207\6\40J\207\3#M\212\300\"L\210\376%O\212\374%N\212\375#" "M\211\376\"L\210\376!K\210\377\202#M\211\350\27(P\213\377)Q\214\376*" "R\214\376,T\216\375,T\216\374$N\211\376#M\212\300\40J\207\3\40J\207\6" "\40J\207\5\40J\207\4\40J\207\3\40J\207\2\40J\207\1\377\377\377\0\40J" "\207\377\302\325\352\377\273\320\350\377\267\315\346\377\272\317\347" "\377\242\274\333\377,T\217\366\40J\207E\205\377\377\377\0\12\40J\207" "\31\"M\212\305!L\212\325\40J\207\377\302\325\352\377m\233\315\377h\227" "\313\377\256\307\343\377@f\235\365\40J\207~\205\377\377\377\0\40\40J" "\207+!L\211\347'T\224\375\"M\213\324\40J\207\377\301\324\352\377k\231" "\314\377f\225\312\377\221\262\331\377\215\252\317\377-U\217\366#M\212" "\240\40J\207<\40J\207\26\40J\2070!K\210{!L\211\3651d\250\376-^\240\374" "!K\211\213\40J\207\377\276\322\351\377\251\303\341\377\224\264\332\377" "h\226\312\377~\244\322\377\225\263\327\377g\213\272\374Bi\237\362-V\220" "\366.W\222\364\77i\244\371\202P~\274\377\40\"M\212\364\40J\2071\40J\207" "\377\245\277\334\377Ej\236\365n\220\273\373\235\273\334\377y\241\321" "\377k\230\314\377v\237\317\377v\236\317\377z\241\320\377t\235\316\377" "n\227\314\377]\211\300\377*T\217\366\40K\210]\377\377\377\0\40J\207\377" ".V\220\365\40J\207_$N\213\2605\\\225\366k\220\276\377t\230\306\377z\236" "\314\377|\241\320\377l\224\307\377Y\202\272\377;e\241\365\"M\211\361" "!K\211g\202\377\377\377\0\2$N\213\276\40J\207E\202\377\377\377\0\11\40" "J\207C#M\212\242#N\213\310\"M\212\347\40K\210\373!L\211\356\"M\213\311" "!K\210u\40J\207\12\203\377\377\377\0"}; osmo-0.2.14/src/utils_time.h000664 001750 001750 00000006775 12561325524 015667 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _UTILS_TIME_H #define _UTILS_TIME_H #include "gui.h" typedef struct { gint hour; gint minute; gint second; } TIME; enum { TIME_HH_MM = 0, /* don't change order */ TIME_HH_MM_AMPM, TIME_HH_MM_SS, TIME_HH_MM_SS_AMPM, TIME_TIMEZONE, /* last entry */ TIME_LOCALE }; TIME* utl_time_new (void); TIME* utl_time_new_hms (gint hour, gint minute, gint second); TIME* utl_time_new_seconds (gint seconds); TIME* utl_time_new_now (void); void utl_time_set_hms (TIME *time, gint hour, gint minute, gint second); void utl_time_set_hour (TIME *time, gint hour); void utl_time_set_minute (TIME *time, gint minute); void utl_time_set_second (TIME *time, gint second); void utl_time_set_seconds (TIME *time, gint seconds); void utl_time_get_hms (const TIME *time, gint *hour, gint *minute, gint *second); gint utl_time_get_hour (const TIME *time); gint utl_time_get_minute (const TIME *time); gint utl_time_get_second (const TIME *time); gint utl_time_get_seconds (const TIME *time); gint utl_time_get_current_hour (void); gint utl_time_get_current_minute (void); gint utl_time_get_current_seconds (void); gint utl_time_add (TIME *time1, TIME *time2); gint utl_time_add_hours (TIME *time, gint hours); gint utl_time_add_minutes (TIME *time, gint minutes); gint utl_time_add_seconds (TIME *time, gint seconds); gint utl_time_subtract (TIME *time1, TIME *time2); gint utl_time_subtract_hours (TIME *time, gint hours); gint utl_time_subtract_minutes (TIME *time, gint minutes); gint utl_time_subtract_seconds (TIME *time, gint seconds); void utl_time_clamp (TIME *time, const TIME *min_time, const TIME *max_time); gint utl_time_compare (const TIME *time1, const TIME *time2); gboolean utl_time_order (TIME *time1, TIME *time2); gint utl_time_seconds_between (const TIME *time1, const TIME *time2); gchar* utl_time_print (const TIME *time, gint time_format, gint override_locale); gchar* utl_time_print_s (gint seconds, gint time_format, gint override_locale); gchar* utl_time_print_default (gint seconds, gboolean with_sec); gchar* utl_time_get_format_str (gint time_format, gint override_locale); gint utl_time_hms_to_seconds (gint hour, gint minute, gint second); gboolean utl_time_valid (const TIME *time); gboolean utl_time_valid_hms (gint hour, gint minute, gint second); gboolean utl_time_valid_hour (gint hour); gboolean utl_time_valid_minute (gint minute); gboolean utl_time_valid_second (gint second); gboolean utl_time_valid_seconds (gint seconds); void utl_time_free (TIME *time); #endif /* _UTILS_TIME_H */ osmo-0.2.14/src/backup.h000664 001750 001750 00000002074 12561325524 014742 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _BACKUP_H #define _BACKUP_H #include "gui.h" #define BACKUP_TEMPLATE ".__backup_osmo.dat" void backup_create (GUI *appGUI); void backup_restore (GUI *appGUI); void backup_restore_run (GUI *appGUI); #endif /* _BACKUP_H */ osmo-0.2.14/src/tasks_print.h000664 001750 001750 00000001662 12561325524 016040 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_PRINT_H #define _TASKS_PRINT_H void tasks_print (GUI *appGUI); #endif /* _TASKS_PRINT_H */ osmo-0.2.14/src/contacts_import.c000664 001750 001750 00000113117 12561325524 016701 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts_import.h" #include "contacts_import_csv.h" #include "i18n.h" #include "utils.h" #include "utils_date.h" #include "utils_gui.h" #include "contacts.h" #include "calendar_utils.h" #include "stock_icons.h" #include "options_prefs.h" #ifdef CONTACTS_ENABLED /*-------------------------------------------------------------------------------------*/ gboolean import_contacts_select_file (GUI *appGUI) { GtkWidget *dialog; GtkFileFilter *filter_1, *filter_2; gboolean ret = FALSE; dialog = gtk_file_chooser_dialog_new(_("Select CSV file"), GTK_WINDOW(appGUI->cnt->import_sel_window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); filter_1 = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter_1, "*"); gtk_file_filter_set_name(GTK_FILE_FILTER(filter_1), _("All Files")); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter_1); filter_2 = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter_2, "*.[cC][sS][vV]"); gtk_file_filter_set_name(GTK_FILE_FILTER(filter_2), _("CSV (comma-separated values) files (*.csv)")); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter_2); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter_2); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gtk_widget_hide(dialog); while (g_main_context_iteration(NULL, FALSE)); ret = add_csv_records(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)), appGUI); } gtk_widget_destroy(dialog); return ret; } /*-------------------------------------------------------------------------------------*/ gboolean import_contacts_from_csv_file (GUI *appGUI) { return import_contacts_select_file (appGUI); } /*-------------------------------------------------------------------------------------*/ void import_sel_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gdk_window_get_root_origin (GDK_WINDOW(appGUI->cnt->import_sel_window->window), &config.contacts_import_sel_win_x, &config.contacts_import_sel_win_y); /* import_store_values (appGUI);*/ gtk_widget_destroy(appGUI->cnt->import_sel_window); } /*-------------------------------------------------------------------------------------*/ gint import_sel_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: import_sel_window_close_cb (widget, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void button_import_sel_window_close_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; import_sel_window_close_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ void import_type_selected_cb (GtkComboBox *widget, gpointer user_data) { gint import_type; GUI *appGUI = (GUI *)user_data; import_type = gtk_combo_box_get_active (widget); switch (import_type) { case IMPORT_TYPE_FILE: gtk_widget_set_sensitive(appGUI->cnt->file_import_vbox, TRUE); gtk_widget_set_sensitive(appGUI->cnt->import_vbox, FALSE); break; case IMPORT_TYPE_SYNCML: gtk_widget_set_sensitive(appGUI->cnt->import_vbox, TRUE); gtk_widget_set_sensitive(appGUI->cnt->file_import_vbox, FALSE); break; } } /*------------------------------------------------------------------------------*/ gboolean import_sel_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ void import_sel_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gchar *text; gchar tmpbuf[BUFFER_SIZE]; /* import_store_values (appGUI);*/ if (config.import_type == IMPORT_TYPE_FILE) { /* FILE */ text = (gchar *)gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->input_file_entry)); if (!strlen(text)) { sprintf (tmpbuf, "%s", _("Please select file first.")); utl_gui_create_dialog (GTK_MESSAGE_ERROR, tmpbuf, GTK_WINDOW(appGUI->cnt->import_sel_window)); return; } add_csv_records(text, appGUI); } import_sel_window_close_cb (NULL, NULL, appGUI); } /*------------------------------------------------------------------------------*/ void import_contacts_show_dialog (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbox1; GtkWidget *label; GtkWidget *frame; GtkWidget *alignment; GtkWidget *hbox4; GtkWidget *vbox4; GtkWidget *hbox6; GtkWidget *cancel_button; GtkWidget *hbuttonbox; gchar tmpbuf[BUFFER_SIZE]; appGUI->cnt->import_sel_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->import_sel_window), 6); gtk_window_set_title (GTK_WINDOW (appGUI->cnt->import_sel_window), _("Import contacts")); gtk_window_move (GTK_WINDOW (appGUI->cnt->import_sel_window), config.contacts_import_sel_win_x, config.contacts_import_sel_win_y); gtk_window_set_default_size (GTK_WINDOW(appGUI->cnt->import_sel_window), 450, -1); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cnt->import_sel_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_modal(GTK_WINDOW(appGUI->cnt->import_sel_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cnt->import_sel_window), "key_press_event", G_CALLBACK (import_sel_key_press_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cnt->import_sel_window), "delete_event", G_CALLBACK(import_sel_window_close_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cnt->import_sel_window), vbox1); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, FALSE, 4); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); sprintf (tmpbuf, "%s:", _("Import type")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 5); appGUI->cnt->import_type_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cnt->import_type_combobox); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cnt->import_type_combobox, FALSE, FALSE, 8); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->import_type_combobox), _("File")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->import_type_combobox), "SyncML"); g_signal_connect (G_OBJECT (appGUI->cnt->import_type_combobox), "changed", G_CALLBACK (import_type_selected_cb), appGUI); g_signal_connect(G_OBJECT(appGUI->cnt->import_type_combobox), "focus", G_CALLBACK(import_sel_combo_box_focus_cb), appGUI); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); appGUI->cnt->file_import_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (appGUI->cnt->file_import_vbox); gtk_box_pack_start (GTK_BOX (vbox1), appGUI->cnt->file_import_vbox, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->cnt->file_import_vbox), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox4 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox4); gtk_container_add (GTK_CONTAINER (alignment), hbox4); appGUI->cnt->input_file_entry = gtk_entry_new (); gtk_widget_show (appGUI->cnt->input_file_entry); gtk_box_pack_start (GTK_BOX (hbox4), appGUI->cnt->input_file_entry, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->input_file_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cnt->input_file_entry), FALSE); appGUI->cnt->contacts_browse_button = utl_gui_create_labeled_button (GTK_STOCK_OPEN, OSMO_STOCK_BUTTON_OPEN, _("Browse")); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->contacts_browse_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cnt->contacts_browse_button); gtk_box_pack_start (GTK_BOX (hbox4), appGUI->cnt->contacts_browse_button, FALSE, TRUE, 4); sprintf (tmpbuf, "%s:", _("Input filename")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->cnt->import_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (appGUI->cnt->import_vbox); gtk_box_pack_start (GTK_BOX (vbox1), appGUI->cnt->import_vbox, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->cnt->import_vbox), frame, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (alignment), vbox4); hbox6 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox6); gtk_box_pack_start (GTK_BOX (vbox4), hbox6, TRUE, TRUE, 2); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 8); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_import_sel_window_close_cb), appGUI); appGUI->cnt->import_button = utl_gui_create_labeled_button (OSMO_STOCK_BUTTON_CONTACTS_IMPORT, OSMO_STOCK_BUTTON_CONTACTS_IMPORT, _("Import")); gtk_widget_show (appGUI->cnt->import_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->cnt->import_button); g_signal_connect(appGUI->cnt->import_button, "clicked", G_CALLBACK(import_sel_cb), appGUI); /* setup fields */ gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->import_type_combobox), config.import_type); gtk_widget_show (appGUI->cnt->import_sel_window); } /*------------------------------------------------------------------------------*/ void import_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_window_get_size (GTK_WINDOW(appGUI->cnt->import_window), &config.contacts_import_win_w, &config.contacts_import_win_h); gdk_window_get_root_origin (GDK_WINDOW(appGUI->cnt->import_window->window), &config.contacts_import_win_x, &config.contacts_import_win_y); gtk_widget_destroy(appGUI->cnt->import_window); if(appGUI->cnt->file_buffer != NULL) { g_free(appGUI->cnt->file_buffer); appGUI->cnt->file_buffer = NULL; appGUI->cnt->file_length = 0; } } /*------------------------------------------------------------------------------*/ void button_import_window_close_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; import_window_close_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ gint import_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: import_window_close_cb (widget, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void record_changed_cb (GtkSpinButton *spinbutton, gpointer user_data) { gint i; gchar *str, *field_str; GUI *appGUI = (GUI *)user_data; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->cnt->first_row_as_header_check_button)) == TRUE) { str = csv_get_line(gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinbutton))+1, appGUI); } else { str = csv_get_line(gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinbutton)), appGUI); } if (str != NULL) { i = 1; while ((field_str = csv_get_field(str, i)) != NULL) { gtk_label_set_text (GTK_LABEL(appGUI->cnt->value_labels[i-1]), field_str); g_free(field_str); i++; } g_free(str); } } /*------------------------------------------------------------------------------*/ void type_changed_cb (GtkComboBox *widget, gpointer user_data) { gint *field = (gint *)user_data; gint value = gtk_combo_box_get_active (widget); *field = value; } /*------------------------------------------------------------------------------*/ void start_import_cb (GtkWidget *widget, gpointer data) { gint i, j, k, n, m, p, w; guint n_records; gchar *str, *field_str, *item, *text; gchar ch[2] = { 0, 0 }; GtkTreeIter iter, g_iter; gboolean g_flag; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)data; n_records = get_number_of_records (appGUI); for(i = k = 0; i < appGUI->cnt->max_fields; i++) { k += appGUI->cnt->field_type[i]; } if (!k) { utl_gui_create_dialog(GTK_MESSAGE_WARNING, _("Nothing to import."), GTK_WINDOW(appGUI->cnt->import_window)); return; } /* add records */ n = (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->cnt->first_row_as_header_check_button)) == TRUE) ? 1:0; for(j=n; j < n_records; j++) { str = csv_get_line(j+1, appGUI); if (str != NULL) { gtk_list_store_append(appGUI->cnt->contacts_list_store, &iter); for(i=0; i < appGUI->cnt->max_fields; i++) { if (appGUI->cnt->field_type[i]) { if ((field_str = csv_get_field(str, i+1)) != NULL) { if (g_utf8_validate(field_str, -1, NULL) == FALSE) { text = g_convert_with_fallback(field_str, -1, "utf-8", "iso-8859-1", "?", NULL, NULL, NULL); g_free(field_str); field_str = text; } p = strlen(field_str); for (w = 0; w < p; w++) { /* remove control chars */ ch[0] = field_str[w]; if (g_unichar_iscntrl(g_utf8_get_char(ch))) field_str[w] = ' '; } if (appGUI->cnt->field_type[i]-1 == COLUMN_FIRST_NAME){ if (p) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_FIRST_NAME, field_str, -1); } } else if (appGUI->cnt->field_type[i]-1 == COLUMN_LAST_NAME) { if (p) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_LAST_NAME, field_str, -1); } } else if (appGUI->cnt->field_type[i]-1 == COLUMN_GROUP) { /* set group */ if(p) { m = 0; g_flag = TRUE; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->contacts_group_store), &g_iter, NULL, m++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->contacts_group_store), &g_iter, 0, &item, -1); if (!strcmp(field_str, item)) { g_free(item); g_flag = FALSE; break; } g_free(item); } if (g_flag == TRUE) { gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->contacts_group_store), &g_iter, NULL, 0); gtk_list_store_append(appGUI->opt->contacts_group_store, &g_iter); gtk_list_store_set(appGUI->opt->contacts_group_store, &g_iter, 0, field_str, -1); } gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, appGUI->cnt->field_type[i]-1, field_str, -1); } } else if (appGUI->cnt->field_type[i]-1 == COLUMN_BIRTH_DAY_DATE) { /* convert birth day date field */ if (p) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, appGUI->cnt->field_type[i]-1, str_to_julian(field_str, DATE_DD_MM_YYYY), -1); } } else if (appGUI->cnt->field_type[i]-1 == COLUMN_NAME_DAY_DATE) { /* convert name day date field */ if (p) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, appGUI->cnt->field_type[i]-1, str_to_julian(field_str, DATE_DD_MM_YYYY), -1); } } else if (p) { /* remaining fields */ gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, appGUI->cnt->field_type[i]-1, field_str, -1); } g_free(field_str); } } gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, COLUMN_FIRST_NAME, &item, -1); if (item == NULL) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_FIRST_NAME, _("None"), -1); } g_free(item); gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, COLUMN_LAST_NAME, &item, -1); if (item == NULL) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_LAST_NAME, _("None"), -1); } g_free(item); gtk_tree_model_get(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, COLUMN_GROUP, &item, -1); if (item == NULL) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_GROUP, _("None"), -1); } g_free(item); } } g_free(str); } sprintf (tmpbuf, "%d %s.\n", n_records-n, ngettext ("contact added", "contacts added", n_records-n)); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW (appGUI->cnt->import_window)); import_window_close_cb (NULL, NULL, appGUI); } /*------------------------------------------------------------------------------*/ void first_row_as_header_cb (GtkToggleButton *button, gpointer user_data) { gint i, j; guint n_records; gchar *str, *field_str; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; n_records = get_number_of_records (appGUI); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)) == TRUE) { if(n_records > 1) { --n_records; } } GTK_ADJUSTMENT(appGUI->cnt->current_record_spinbutton_adj)->upper = n_records; gtk_adjustment_set_value (GTK_ADJUSTMENT(appGUI->cnt->current_record_spinbutton_adj), 1.0); sprintf(tmpbuf, "%d", n_records); gtk_label_set_text (GTK_LABEL(appGUI->cnt->n_records_label), tmpbuf); record_changed_cb (GTK_SPIN_BUTTON (appGUI->cnt->current_record_spinbutton), appGUI); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)) == TRUE) { str = csv_get_line(1, appGUI); if (str != NULL) { for(i=0; i < appGUI->cnt->max_fields; i++) { if ((field_str = csv_get_field(str, i+1)) != NULL) { for(j=0; j < CONTACTS_NUM_COLUMNS; j++) { if (j != COLUMN_PHOTO && j != COLUMN_ID) { if (!strcmp(field_str, appGUI->cnt->contact_fields_tags_name[j*2])) { gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), j+1); appGUI->cnt->field_type[i] = j+1; break; } } } g_free(field_str); } } g_free(str); } } else { for(i=0; i < appGUI->cnt->max_fields; i++) { gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), 0); appGUI->cnt->field_type[i] = 0; } } } /*------------------------------------------------------------------------------*/ gboolean add_csv_records (gchar *filename, GUI *appGUI) { GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *hbox1; GtkWidget *label; GtkWidget *max_fields_label; GtkWidget *fields_scrolledwindow; GtkWidget *fields_table; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *import_button; gchar *str, *field_str, *text; guint record, fields, n_records, i, j; gchar tmpbuf[BUFFER_SIZE]; if (g_access (filename, R_OK) != -1) { appGUI->cnt->file_buffer = NULL; appGUI->cnt->file_length = 0; if (g_file_get_contents (filename, &appGUI->cnt->file_buffer, &appGUI->cnt->file_length, NULL) == TRUE) { /* get maximum number of fields */ n_records = get_number_of_records (appGUI); if (n_records) { record = 1; appGUI->cnt->max_fields = 0; for (record = 1; record <= n_records; record++) { str = csv_get_line(record, appGUI); if (str != NULL) { fields = 0; while ((field_str = csv_get_field(str, fields+1)) != NULL) { g_free(field_str); fields++; } g_free(str); if (fields > appGUI->cnt->max_fields) { appGUI->cnt->max_fields = fields; } } } if (appGUI->cnt->max_fields > CONTACTS_NUM_COLUMNS) { appGUI->cnt->max_fields = CONTACTS_NUM_COLUMNS; } /* create gui */ appGUI->cnt->import_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cnt->import_window), _("Import contacts")); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->import_window), 6); gtk_window_move (GTK_WINDOW (appGUI->cnt->import_window), config.contacts_import_win_x, config.contacts_import_win_y); gtk_window_set_default_size (GTK_WINDOW(appGUI->cnt->import_window), config.contacts_import_win_w, config.contacts_import_win_h); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cnt->import_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_modal(GTK_WINDOW(appGUI->cnt->import_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cnt->import_window), "key_press_event", G_CALLBACK (import_key_press_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cnt->import_window), "delete_event", G_CALLBACK(import_window_close_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cnt->import_window), vbox1); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 4); sprintf(tmpbuf, "%d", n_records); appGUI->cnt->n_records_label = gtk_label_new (tmpbuf); gtk_widget_show (appGUI->cnt->n_records_label); gtk_box_pack_end (GTK_BOX (hbox1), appGUI->cnt->n_records_label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (appGUI->cnt->n_records_label), 6, 0); sprintf(tmpbuf, "%s", _("of")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_end (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_padding (GTK_MISC (label), 6, 0); appGUI->cnt->current_record_spinbutton_adj = gtk_adjustment_new (1, 1, n_records, 1, 10, 0); appGUI->cnt->current_record_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (appGUI->cnt->current_record_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cnt->current_record_spinbutton); g_signal_connect (G_OBJECT (appGUI->cnt->current_record_spinbutton), "value-changed", G_CALLBACK(record_changed_cb), appGUI); gtk_box_pack_end (GTK_BOX (hbox1), appGUI->cnt->current_record_spinbutton, FALSE, FALSE, 0); sprintf(tmpbuf, "%s:", _("Record")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_end (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_padding (GTK_MISC (label), 6, 0); sprintf(tmpbuf, "%s:", _("Number fields per record")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_padding (GTK_MISC (label), 6, 0); sprintf(tmpbuf, "%d", appGUI->cnt->max_fields); max_fields_label = gtk_label_new (tmpbuf); gtk_widget_show (max_fields_label); gtk_box_pack_start (GTK_BOX (hbox1), max_fields_label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (max_fields_label), 6, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox2), hseparator, FALSE, TRUE, 8); fields_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (fields_scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox2), fields_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (fields_scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); fields_table = gtk_table_new (appGUI->cnt->max_fields, 4, FALSE); gtk_widget_show (fields_table); gtk_container_set_border_width (GTK_CONTAINER (fields_table), 4); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (fields_scrolledwindow), fields_table); gtk_table_set_row_spacings (GTK_TABLE (fields_table), 4); gtk_table_set_col_spacings (GTK_TABLE (fields_table), 4); sprintf(tmpbuf, "%s", _("Use first record as header")); appGUI->cnt->first_row_as_header_check_button = gtk_check_button_new_with_mnemonic (tmpbuf); gtk_widget_show (appGUI->cnt->first_row_as_header_check_button); gtk_box_pack_start (GTK_BOX (vbox1), appGUI->cnt->first_row_as_header_check_button, FALSE, TRUE, 4); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->first_row_as_header_check_button, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (appGUI->cnt->first_row_as_header_check_button), "toggled", G_CALLBACK (first_row_as_header_cb), appGUI); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 8); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_import_window_close_cb), appGUI); import_button = gtk_button_new_from_stock (OSMO_STOCK_BUTTON_CONTACTS_IMPORT); gtk_widget_show (import_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), import_button); GTK_WIDGET_SET_FLAGS (import_button, GTK_CAN_DEFAULT); g_signal_connect(import_button, "clicked", G_CALLBACK(start_import_cb), appGUI); gtk_widget_show(appGUI->cnt->import_window); gtk_widget_set_sensitive (fields_table, FALSE); gtk_widget_set_sensitive (appGUI->cnt->current_record_spinbutton, FALSE); gtk_widget_set_sensitive (appGUI->cnt->first_row_as_header_check_button, FALSE); gtk_widget_set_sensitive (cancel_button, FALSE); gtk_widget_set_sensitive (import_button, FALSE); while (g_main_context_iteration(NULL, FALSE)); str = csv_get_line(1, appGUI); for(i=0; i < appGUI->cnt->max_fields; i++) { sprintf(tmpbuf, "%s:", _("Field type")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (fields_table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 8, 0); sprintf(tmpbuf, "%s:", _("Value")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (fields_table), label, 2, 3, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 8, 0); appGUI->cnt->value_labels[i] = gtk_label_new (""); gtk_widget_show (appGUI->cnt->value_labels[i]); gtk_table_attach (GTK_TABLE (fields_table), appGUI->cnt->value_labels[i], 3, 4, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_widget_set_size_request (appGUI->cnt->value_labels[i], 50, -1); gtk_misc_set_alignment (GTK_MISC (appGUI->cnt->value_labels[i]), 0, 0.5); gtk_misc_set_padding (GTK_MISC (appGUI->cnt->value_labels[i]), 8, 0); appGUI->cnt->field_type_comboboxes[i] = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cnt->field_type_comboboxes[i]); gtk_table_attach (GTK_TABLE (fields_table), appGUI->cnt->field_type_comboboxes[i], 1, 2, i, i+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->field_type_comboboxes[i]), 4); sprintf(tmpbuf, "[%s]", _("None")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), tmpbuf); for(j = 0; j < CONTACTS_NUM_COLUMNS; j++) { gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), gettext(appGUI->cnt->contact_fields_tags_name[j*2])); } gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), 0); appGUI->cnt->field_type[i] = 0; gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (appGUI->cnt->field_type_comboboxes[i]), 4); g_signal_connect (G_OBJECT (appGUI->cnt->field_type_comboboxes[i]), "changed", G_CALLBACK(type_changed_cb), &(appGUI->cnt->field_type[i])); if (str != NULL) { if ((field_str = csv_get_field(str, i+1)) != NULL) { if (g_utf8_validate(field_str, -1, NULL) == FALSE) { text = g_convert_with_fallback(field_str, -1, "utf-8", "iso-8859-1", "?", NULL, NULL, NULL); g_free(field_str); field_str = text; } gtk_label_set_text (GTK_LABEL(appGUI->cnt->value_labels[i]), field_str); g_free(field_str); } } while (g_main_context_iteration(NULL, FALSE)); } if (str != NULL) { g_free(str); } gtk_widget_set_sensitive (fields_table, TRUE); gtk_widget_set_sensitive (appGUI->cnt->current_record_spinbutton, TRUE); gtk_widget_set_sensitive (appGUI->cnt->first_row_as_header_check_button, TRUE); gtk_widget_set_sensitive (cancel_button, TRUE); gtk_widget_set_sensitive (import_button, TRUE); } else { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("No records found in selected file."), GTK_WINDOW(appGUI->main_window)); return FALSE; } } else { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("Cannot read file."), GTK_WINDOW(appGUI->main_window)); return FALSE; } } else { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("Cannot open file."), GTK_WINDOW(appGUI->main_window)); return FALSE; } return TRUE; } /*------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/preferences_gui.h000664 001750 001750 00000002252 12561325524 016640 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _PREFERENCES_GUI_H #define _PREFERENCES_GUI_H #include "gui.h" GtkWidget * opt_create_preferences_window (GUI *appGUI); void opt_hide_modules (gboolean cal, gboolean tsk, gboolean cnt, gboolean nte, gboolean options, GUI *appGUI); #endif /* _PREFERENCES_GUI_H */ osmo-0.2.14/src/contacts_birthdays.c000664 001750 001750 00000034433 12561325524 017363 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts_birthdays.h" #include "i18n.h" #include "calendar.h" #include "contacts.h" #include "calendar_notes.h" #include "options_prefs.h" #include "stock_icons.h" #include "calendar_utils.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #ifdef CONTACTS_ENABLED /*------------------------------------------------------------------------------*/ void birthdays_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_window_get_size (GTK_WINDOW(appGUI->cnt->birthdays_window), &config.contacts_birthdays_win_w, &config.contacts_birthdays_win_h); gtk_widget_destroy (appGUI->cnt->birthdays_window); } /*------------------------------------------------------------------------------*/ void button_birthdays_window_close_cb (GtkButton *button, gpointer user_data) { birthdays_window_close_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint birthdays_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { switch (event->keyval) { case GDK_Escape: birthdays_window_close_cb (NULL, NULL, user_data); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint birthdays_list_dbclick_cb (GtkWidget * widget, GdkEventButton * event, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model, *contacts_model; GtkTreePath *sort_path, *filter_path, *path; gint id, id_c; GUI *appGUI = (GUI *) user_data; contacts_model = GTK_TREE_MODEL (appGUI->cnt->contacts_list_store); if (((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) == FALSE) return FALSE; if (gtk_tree_selection_get_selected (appGUI->cnt->birthdays_list_selection, &model, &iter)) { if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->cnt->contacts_find_entry)))) { gtk_entry_set_text (GTK_ENTRY (appGUI->cnt->contacts_find_entry), ""); gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (appGUI->cnt->contacts_filter)); } gtk_tree_model_get (model, &iter, B_COLUMN_ID, &id, -1); gtk_widget_destroy (appGUI->cnt->birthdays_window); contacts_selection_activate (FALSE, appGUI); if (gtk_tree_model_get_iter_first (contacts_model, &iter) == TRUE) { sort_path = gtk_tree_model_get_path (contacts_model, &iter); while (sort_path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), sort_path, NULL, FALSE); filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->cnt->contacts_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->cnt->contacts_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (contacts_model, &iter, path); gtk_tree_model_get (contacts_model, &iter, COLUMN_ID, &id_c, -1); if (id == id_c) { contacts_selection_activate (TRUE, appGUI); gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), sort_path, NULL, FALSE); gtk_tree_path_free (path); gtk_tree_path_free (filter_path); g_signal_emit_by_name (G_OBJECT (appGUI->cnt->contacts_list_selection), "changed"); break; } gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } gtk_tree_path_next (sort_path); if (gtk_tree_model_get_iter (contacts_model, &iter, sort_path) == FALSE) break; } gtk_tree_path_free (sort_path); } } return TRUE; } /*------------------------------------------------------------------------------*/ void contacts_create_birthdays_window (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *close_button; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *scrolledwindow; gint i, n, id, age; guint32 date; gchar *text, buffer[BUFFER_SIZE], buff[BUFFER_SIZE]; GtkTreeIter iter, n_iter; GDate *cdate_birthday, *cdate_current; guint b_day, b_month, b_year; guint c_day, c_month, c_year; gboolean flag, leap; cdate_birthday = g_date_new (); g_return_if_fail (cdate_birthday != NULL); cdate_current = g_date_new (); g_return_if_fail (cdate_current != NULL); i = n = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, COLUMN_BIRTH_DAY_DATE, &date, -1); if (date) n++; } if (n == 0) { utl_gui_create_dialog (GTK_MESSAGE_INFO, _("No birthdays defined"), GTK_WINDOW (appGUI->main_window)); return; } appGUI->cnt->birthdays_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cnt->birthdays_window), _("Birthdays list")); gtk_window_set_position (GTK_WINDOW (appGUI->cnt->birthdays_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW (appGUI->cnt->birthdays_window), config.contacts_birthdays_win_w, config.contacts_birthdays_win_h); gtk_window_set_modal (GTK_WINDOW (appGUI->cnt->birthdays_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cnt->birthdays_window), "delete_event", G_CALLBACK (birthdays_window_close_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->cnt->birthdays_window), GTK_WINDOW (appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->birthdays_window), 8); g_signal_connect (G_OBJECT (appGUI->cnt->birthdays_window), "key_press_event", G_CALLBACK (birthdays_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cnt->birthdays_window), vbox1); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); appGUI->cnt->birthdays_list_store = gtk_list_store_new (BIRTHDAYS_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); appGUI->cnt->birthdays_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->cnt->birthdays_list_store)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), config.rules_hint); gtk_widget_show (appGUI->cnt->birthdays_list); GTK_WIDGET_SET_FLAGS (appGUI->cnt->birthdays_list, GTK_CAN_DEFAULT); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->cnt->birthdays_list); appGUI->cnt->birthdays_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->cnt->birthdays_list)); g_signal_connect (G_OBJECT (appGUI->cnt->birthdays_list), "button_press_event", G_CALLBACK (birthdays_list_dbclick_cb), appGUI); /* create columns */ renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (renderer), "xpad", 8, NULL); column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, "text", B_COLUMN_NAME, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); gtk_tree_view_column_set_sort_column_id (column, B_COLUMN_NAME); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Days to birthday"), renderer, "text", B_COLUMN_DAYS_NUM, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (renderer), "xalign", 1.0, NULL); g_object_set (G_OBJECT (renderer), "xpad", 8, NULL); column = gtk_tree_view_column_new_with_attributes (_("Days to birthday"), renderer, "text", B_COLUMN_DAYS, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); gtk_tree_view_column_set_sort_column_id (column, B_COLUMN_DAYS_NUM); g_signal_emit_by_name (column, "clicked"); column = gtk_tree_view_column_new_with_attributes (_("Age"), renderer, "text", B_COLUMN_AGE, NULL); gtk_tree_view_column_set_visible (column, config.cnt_visible_age_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); gtk_tree_view_column_set_sort_column_id (column, B_COLUMN_AGE); column = gtk_tree_view_column_new_with_attributes (_("Birthday date"), renderer, "text", B_COLUMN_DATE, NULL); gtk_tree_view_column_set_visible (column, config.cnt_visible_birthday_date_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Zodiac sign"), renderer, "text", B_COLUMN_ZODIAC, NULL); gtk_tree_view_column_set_visible (column, config.cnt_visible_zodiac_sign_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("ID", renderer, "text", B_COLUMN_ID, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), column); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (appGUI->cnt->birthdays_list), FALSE); i = 0; g_date_set_julian (cdate_current, utl_date_get_current_julian ()); c_day = g_date_get_day (cdate_current); c_month = g_date_get_month (cdate_current); c_year = g_date_get_year (cdate_current); while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, COLUMN_BIRTH_DAY_DATE, &date, -1); if (g_date_valid_julian (date)) { /* calculate age */ g_date_set_julian (cdate_birthday, date); b_day = g_date_get_day (cdate_birthday); b_month = g_date_get_month (cdate_birthday); b_year = g_date_get_year (cdate_birthday); age = (gint) c_year - b_year; if (b_month < c_month || (b_month == c_month && b_day < c_day)) age++; if (age < 1) continue; /* name */ flag = FALSE; g_snprintf (buff, BUFFER_SIZE, "(%s)", _("None")); gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, COLUMN_LAST_NAME, &text, -1); if (text != NULL) { flag = TRUE; if (strcmp (text, buff) == 0) { text[0] = '\0'; flag = FALSE; } g_strlcpy (buffer, text, BUFFER_SIZE); g_free (text); } gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, COLUMN_FIRST_NAME, &text, -1); if (text != NULL) { if (strcmp (text, buff) == 0) { text[0] = '\0'; } if (flag == TRUE) { g_strlcat (buffer, " ", BUFFER_SIZE); g_strlcat (buffer, text, BUFFER_SIZE); } else { g_strlcpy (buffer, text, BUFFER_SIZE); } g_free (text); } gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cnt->contacts_list_store), &iter, COLUMN_ID, &id, -1); gtk_list_store_append (appGUI->cnt->birthdays_list_store, &n_iter); gtk_list_store_set (appGUI->cnt->birthdays_list_store, &n_iter, B_COLUMN_ID, id, B_COLUMN_NAME, buffer, B_COLUMN_AGE, age, -1); /* calculate days to birthday */ b_year = c_year; if ((b_month < c_month) || (b_month == c_month && b_day < c_day)) b_year++; leap = FALSE; if (g_date_valid_dmy (b_day, b_month, b_year) == FALSE) { g_date_set_day (cdate_birthday, b_day - 1); leap = TRUE; } g_date_set_year (cdate_birthday, b_year); date = g_date_days_between (cdate_current, cdate_birthday); if (date == 0) { g_snprintf (buffer, BUFFER_SIZE, "%s", _("today")); } else { g_snprintf (buffer, BUFFER_SIZE, leap ? "%d + 1" : "%d", date); } g_date_strftime (buff, BUFFER_SIZE, "%A, ", cdate_birthday); g_strlcat (buff, julian_to_str (g_date_get_julian (cdate_birthday), config.date_format, config.override_locale_settings), BUFFER_SIZE); gtk_list_store_set (appGUI->cnt->birthdays_list_store, &n_iter, B_COLUMN_DAYS_NUM, date, B_COLUMN_DAYS, buffer, B_COLUMN_DATE, buff, B_COLUMN_ZODIAC, utl_get_zodiac_name (b_day, b_month), -1); } } g_date_free (cdate_birthday); g_date_free (cdate_current); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); g_signal_connect (close_button, "clicked", G_CALLBACK (button_birthdays_window_close_cb), appGUI); gtk_container_add (GTK_CONTAINER (hbuttonbox), close_button); gtk_widget_show (appGUI->cnt->birthdays_window); gtk_widget_grab_focus (close_button); } /*------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/contacts_import_csv.c000664 001750 001750 00000010145 12561325524 017551 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts_import_csv.h" #ifdef CONTACTS_ENABLED #define FIELD_SEPARATOR ',' #define LINE_SEPARATOR '\n' /*------------------------------------------------------------------------------*/ static gint find_offset(const gchar *text, gsize len, gchar separator, gint nth) { gint i, count; gboolean quotation_found; for (i = 0, count = 1, quotation_found = FALSE; i < len; i++) { gchar c = text[i]; if (count == nth) { return i; } if (c == '"') { quotation_found = !quotation_found; } else if (c == separator && quotation_found == FALSE) { count++; } } return -1; } /*------------------------------------------------------------------------------*/ static gchar * substring_fragment(const gchar *text, gsize text_len, gchar separator, gint nth) { gint start = find_offset(text, text_len, separator, nth); if (start >= 0) { gint end = find_offset(text + start, text_len - start, separator, 2); if (end >= 0) { end = start + end - 1; } else { end = text_len; } gchar *buffer = g_new(gchar, (end - start) + 1); if (buffer) { g_strlcpy(buffer, text + start, (end - start)+1); return buffer; } } return NULL; } /*------------------------------------------------------------------------------*/ gchar * csv_get_line(gint line, GUI *appGUI) { gchar *line_buffer = substring_fragment(appGUI->cnt->file_buffer, appGUI->cnt->file_length, LINE_SEPARATOR, line); if (line_buffer) { gint i, j; gsize len = strlen(line_buffer); for (i = 0, j = 0; i < len; i++) { if (line_buffer[i] == '\r') { /* no \r in memory */ continue; } line_buffer[j++] = line_buffer[i]; } line_buffer[j] = '\0'; return line_buffer; } return NULL; } /*------------------------------------------------------------------------------*/ gchar * csv_get_field(const gchar *line_buffer, gint field) { gchar *value = substring_fragment(line_buffer, strlen(line_buffer), FIELD_SEPARATOR, field); if (value) { gint i, j; gsize len = strlen(value); for (i = 0, j = 0; i < len; i++) { if (value[i] == '"') { if (value[i + 1] == '"') { i++; } else { continue; } } value[j++] = value[i]; } value[j] = '\0'; return value; } return NULL; } /*------------------------------------------------------------------------------*/ guint get_number_of_records (GUI *appGUI) { guint lines = 0, i; gboolean quotation_found = FALSE, has_content = FALSE; for (i=0; i != appGUI->cnt->file_length; i++) { gchar c = appGUI->cnt->file_buffer[i]; if (c == LINE_SEPARATOR && quotation_found == FALSE) { has_content = FALSE; } else if (!has_content) { lines++; has_content = TRUE; } if (c == '"') { quotation_found = !quotation_found; } } return lines; } /*------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/vcf.h000664 001750 001750 00000005432 12561325524 014254 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2015 Tomasz MÄ…ka * 2015 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef VCF_H #define VCF_H #include #include #define VCF_TYPE_TEL_VOICE "voice" #define VCF_TYPE_TEL_FAX "fax" #define VCF_TYPE_TEL_CELL "cell" #define VCF_TYPE_HOME "home" #define VCF_TYPE_WORK "work" typedef struct vcf_writer vcf_writer; typedef void(vcf_writer_callback) (gchar const *buffer, gsize buffer_size, void *user_data); vcf_writer *vcf_create_writer(vcf_writer_callback *callback, void *user_data); void vcf_close_writer(vcf_writer *writer); void vcf_write_begin(vcf_writer *writer); void vcf_write_end(vcf_writer *writer); void vcf_write_property(vcf_writer *writer, gchar const *property_name); void vcf_write_FN(vcf_writer *writer, gchar const *first_name, gchar const *last_name); void vcf_write_N(vcf_writer *writer, gchar const *last_name, gchar const *first_name, gchar const *second_name); void vcf_write_NICKNAME(vcf_writer *writer, gchar const *nick_name); void vcf_write_BDAY(vcf_writer *writer, guint32 julian_day); void vcf_write_ADR(vcf_writer *writer, gchar const *type, gchar const *address, gchar const *city, gchar const *state, gchar const *post_code, gchar const *country); void vcf_write_ORG(vcf_writer *writer, gchar const *organization, gchar const *department); #define vcf_write_TEL(writer, number, pref, ...) { \ gchar const **types=(gchar const *[]){__VA_ARGS__, NULL}; \ vcf_write_TEL_internal(writer, number, pref, types); \ } void vcf_write_EMAIL(vcf_writer *writer, gchar const *email, gint pref); void vcf_write_URL(vcf_writer *writer, gchar const *url); void vcf_write_URL_pref(vcf_writer *writer, gchar const *url, gint pref); void vcf_write_IMPP(vcf_writer *writer, gchar const *url, gchar const *type); void vcf_write_NOTE(vcf_writer *writer, gchar const *note); /* Do not call the functions below directly, use the provided macros instead. */ void vcf_write_TEL_internal(vcf_writer *writer, gchar const *number, gint pref, gchar const **types); #endif /* VCF_H */ osmo-0.2.14/src/vcf.c000664 001750 001750 00000022540 12561325524 014246 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2015 Tomasz MÄ…ka * 2015 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "vcf.h" #include "gui.h" #include #include #include #define CRLF "\r\n" #define CRLF_SIZE 2 #define DELIM_COMPONENT ';' #define DELIM_LIST ',' #define MAX_LINE_SIZE 75 #define MAX_FOLDED_LINE_SIZE 74 #define LINE_FOLD CRLF " " #define LINE_FOLD_SIZE 3 #define MAX_ESCAPE_SIZE 2 #define BEGIN "BEGIN:VCARD" #define END "END:VCARD" #define VERSION_40 "VERSION:4.0" #define FN "FN" #define N "N" #define NICKNAME "NICKNAME" #define BDAY "BDAY" #define ADR "ADR" #define ORG "ORG" #define TEL "TEL" #define EMAIL "EMAIL" #define URL "URL" #define IMPP "IMPP" #define NOTE "NOTE" #define TYPE_PARAM "TYPE" #define PREF_PARAM "PREF" #define TEL_URI_SCHEME "tel" struct vcf_writer { vcf_writer_callback *callback; void *user_data; }; static void write_string(vcf_writer *writer, gchar const *content); static void write_value(vcf_writer *writer, gchar const *property_name, gchar const *value); static void write_multivalue(vcf_writer *writer, gchar const *property_name, gchar separator, gint component_count, ...); static gchar *format_date(guint32 julian_day); /*------------------------------------------------------------------------------*/ vcf_writer * vcf_create_writer(vcf_writer_callback *callback, void *user_data) { vcf_writer *writer = g_new(vcf_writer, 1); if(!writer) { return NULL; } writer->callback = callback; writer->user_data = user_data; return writer; } void vcf_close_writer(vcf_writer *writer) { g_free(writer); } void vcf_write_begin(vcf_writer *writer) { write_string(writer, BEGIN); write_string(writer, VERSION_40); } void vcf_write_end(vcf_writer *writer) { write_string(writer, END); } void vcf_write_FN(vcf_writer *writer, char const *first_name, char const *last_name) { gchar *buffer; if(first_name && last_name) { buffer = g_strdup_printf("%s %s", first_name, last_name); } else if(first_name) { buffer = g_strdup(first_name); }else { buffer = g_strdup(last_name); } write_value(writer, FN, buffer); g_free(buffer); } void vcf_write_N(vcf_writer *writer, char const *last_name, char const *first_name, char const *second_name) { write_multivalue(writer, N, DELIM_COMPONENT, 4, last_name, first_name, second_name, NULL); } void vcf_write_NICKNAME(vcf_writer *writer, char const *nick_name) { write_multivalue(writer, NICKNAME, DELIM_LIST, 1, nick_name); } void vcf_write_BDAY(vcf_writer *writer, guint32 julian_day) { gchar *text = format_date(julian_day); g_return_if_fail(text); write_value(writer, BDAY, text); g_free(text); } void vcf_write_ADR(vcf_writer *writer, char const *type, char const *address, char const *city, char const *state, char const *post_code, char const *country) { gchar *property = g_strdup_printf("%s;%s=%s", ADR, TYPE_PARAM, type); write_multivalue(writer, property, DELIM_COMPONENT, 7, "", "", address, city, state, post_code, country); g_free(property); } void vcf_write_ORG(vcf_writer *writer, char const *organization, char const *department) { write_multivalue(writer, ORG, DELIM_COMPONENT, 2, organization, department); } void vcf_write_TEL_internal(vcf_writer *writer, gchar const *number, gint pref, gchar const **types) { gchar *joined_types, *property, *number_uri; g_return_if_fail(pref >= 1 && pref <=100); joined_types = g_strjoinv (";" TYPE_PARAM "=", (gchar **) types); property = g_strdup_printf("%s;%s=%d%s%s", TEL, PREF_PARAM, pref, ";" TYPE_PARAM "=", joined_types); number_uri = g_strdup_printf("%s:%s", TEL_URI_SCHEME, number); write_value(writer, property, number_uri); g_free(number_uri); g_free(property); g_free(joined_types); } void vcf_write_EMAIL(vcf_writer *writer, gchar const *email, gint pref) { gchar *property; g_return_if_fail(pref >= 1 && pref <=100); property = g_strdup_printf("%s;%s=%d", EMAIL, PREF_PARAM, pref); write_value(writer, property, email); g_free(property); } void vcf_write_URL(vcf_writer *writer, gchar const *url) { write_value(writer, URL, url); } void vcf_write_URL_pref(vcf_writer *writer, gchar const *url, gint pref) { gchar *property; g_return_if_fail(pref >= 1 && pref <= 100); property = g_strdup_printf("%s;%s=%d", URL, PREF_PARAM, pref); write_value(writer, property, url); g_free(property); } void vcf_write_IMPP(vcf_writer *writer, gchar const *url, gchar const *type) { gchar *property = g_strdup_printf("%s;%s=%s", IMPP, TYPE_PARAM, type); write_value(writer, property, url); g_free(property); } void vcf_write_NOTE(vcf_writer *writer, gchar const *note) { write_value(writer, NOTE, note); } /*------------------------------------------------------------------------------*/ static void replace_char(gchar *string, gchar search, gchar const *replacement) { gchar *buffer, *tmp; gsize buffer_size, replacement_size; gint pos = 0; replacement_size = strlen(replacement); buffer_size = strlen(string); if(!buffer_size) { return; } buffer = g_new(gchar, buffer_size*replacement_size+1); tmp = string; while (*tmp) { if (*tmp == search) { strcat(buffer, replacement); pos += replacement_size; } else { buffer[pos] = *tmp; buffer[pos+1] = '\0'; pos++; } tmp++; } strcpy(string, buffer); g_free(buffer); } static void escape_value(gchar *string) { replace_char(string, '\\', "\\\\"); replace_char(string, DELIM_COMPONENT, "\\;"); replace_char(string, DELIM_LIST, "\\,"); replace_char(string, '\n', "\\n"); } static void write_multivalue(vcf_writer *writer, gchar const *property, gchar separator, gint component_count, ...) { va_list arguments; gchar **components; gint i, buffer_size; gchar *buffer; components = g_new(gchar *, component_count); buffer_size = strlen(property) + 1; /* property */ va_start(arguments, component_count); for (i = 0; i < component_count; i++) { components[i] = va_arg(arguments, gchar *); if (components[i]) { buffer_size += (strlen(components[i]) * MAX_ESCAPE_SIZE); /* escaped value */ } } va_end(arguments); buffer_size += (component_count - 1); /* separators */ buffer_size++; buffer = g_new(gchar, buffer_size); sprintf(buffer, "%s:", property); for (i = 0; i < component_count; i++) { if (i) { gint len = strlen(buffer); buffer[len++] = separator; buffer[len] = '\0'; } if (components[i]) { gchar *component_buffer; gint len = strlen(components[i]); component_buffer = g_new(gchar, (len * MAX_ESCAPE_SIZE + 1)); strcpy(component_buffer, components[i]); escape_value(component_buffer); strcat(buffer, component_buffer); g_free(component_buffer); } } write_string(writer, buffer); g_free(buffer); g_free(components); } static void write_value(vcf_writer *writer, gchar const *property_name, gchar const * value) { write_multivalue(writer, property_name, '\0', 1, value); } static gchar * format_date(guint32 julian_day) { gchar *buffer; GDate *cdate; gsize size = 9; buffer = g_new(gchar, size); cdate = g_date_new_julian (julian_day); size = g_date_strftime (buffer, size, "%Y%m%d", cdate); if(!size) { g_free(buffer); return NULL; } return buffer; } static void write_string(vcf_writer *writer, gchar const *content) { gchar *buffer; gsize max_len; buffer = g_new(gchar, MAX_LINE_SIZE + 1); g_return_if_fail(buffer); max_len = MAX_LINE_SIZE; while (*content) { gsize len = strlen(content); if (len > max_len) { gchar *end = g_utf8_find_prev_char(content, content + MAX_LINE_SIZE); len = (end - content); strncpy(buffer, content, len); buffer[len] = '\0'; writer->callback(buffer, len, writer->user_data); writer->callback(LINE_FOLD, LINE_FOLD_SIZE, writer->user_data); content = end; max_len = MAX_FOLDED_LINE_SIZE; } else { strcpy(buffer, content); writer->callback(buffer, len, writer->user_data); writer->callback(CRLF, CRLF_SIZE, writer->user_data); content += len; } } g_free(buffer); }osmo-0.2.14/src/calendar_fullyear.h000664 001750 001750 00000001751 12561325524 017152 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_FULLYEAR_H #define _CALENDAR_FULLYEAR_H #include "gui.h" void calendar_create_fullyear_window (GUI *appGUI); #endif /* _CALENDAR_FULLYEAR_H */ osmo-0.2.14/src/preferences_gui.c000664 001750 001750 00000103374 12561325524 016642 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "backup.h" #include "calendar_preferences_gui.h" #include "contacts_preferences_gui.h" #include "i18n.h" #include "notes.h" #include "notes_preferences_gui.h" #include "options_prefs.h" #include "preferences_gui.h" #include "stock_icons.h" #include "tasks.h" #include "tasks_preferences_gui.h" #include "utils_gui.h" #include "calendar.h" /* ========================================================================== */ static void show_restart_info(GUI *appGUI) { utl_gui_create_dialog (GTK_MESSAGE_INFO, _("Osmo has to be restarted to take effect."), GTK_WINDOW (appGUI->opt->window)); } /* ========================================================================== */ static void checkbutton_clicked_cb (GtkToggleButton *togglebutton, gint *option) { *option = gtk_toggle_button_get_active (togglebutton); } /* ========================================================================== */ static void checkbutton_clicked_stock_icons_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.default_stock_icons = gtk_toggle_button_get_active (togglebutton); show_restart_info (appGUI); } /* ========================================================================== */ static void layout_changed_cb (GtkComboBox *widget, GUI *appGUI) { config.gui_layout = gtk_combo_box_get_active (widget); show_restart_info (appGUI); } /* ========================================================================== */ static void tabs_position_changed_cb (GtkComboBox *widget, GUI *appGUI) { GtkWidget *label; gint angle; config.tabs_position = gtk_combo_box_get_active (widget); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (appGUI->notebook), config.tabs_position); if (config.tabs_position == GTK_POS_LEFT) angle = 90; else if (config.tabs_position == GTK_POS_RIGHT) angle = -90; else angle = 0; label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (appGUI->notebook), GTK_WIDGET (appGUI->cal->vbox)); gtk_label_set_angle (GTK_LABEL (label), angle); #ifdef TASKS_ENABLED label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (appGUI->notebook), GTK_WIDGET (appGUI->tsk->vbox)); gtk_label_set_angle (GTK_LABEL (label), angle); #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (appGUI->notebook), GTK_WIDGET (appGUI->cnt->vbox)); gtk_label_set_angle (GTK_LABEL (label), angle); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (appGUI->notebook), GTK_WIDGET (appGUI->nte->vbox)); gtk_label_set_angle (GTK_LABEL (label), angle); #endif /* NOTES_ENABLED */ } /* ========================================================================== */ static void disable_underline_in_links_changed_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.disable_underline_links = gtk_toggle_button_get_active (togglebutton); #ifdef CONTACTS_ENABLED g_signal_emit_by_name (G_OBJECT (appGUI->cnt->contacts_list_selection), "changed"); #endif /* CONTACTS_ENABLED */ } /* ========================================================================== */ static void enable_rules_hint_changed_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.rules_hint = gtk_toggle_button_get_active (togglebutton); #ifdef CONTACTS_ENABLED gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->cnt->contacts_list), config.rules_hint); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->nte->notes_list), config.rules_hint); #endif /* NOTES_ENABLED */ #ifdef TASKS_ENABLED gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->tsk->tasks_list), config.rules_hint); #endif /* TASKS_ENABLED */ } /* ========================================================================== */ static void toolbar_exit_button_changed_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.toolbar_exit_button = gtk_toggle_button_get_active (togglebutton); if (config.toolbar_exit_button == TRUE) { gtk_widget_show (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/quit")); } else { gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/quit")); } #ifdef CONTACTS_ENABLED if (config.toolbar_exit_button == TRUE) { gtk_widget_show (gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/quit")); } else { gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/quit")); } #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED if (config.toolbar_exit_button == TRUE) { gtk_widget_show (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/quit")); } else { gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/quit")); } #endif /* NOTES_ENABLED */ #ifdef TASKS_ENABLED if (config.toolbar_exit_button == TRUE) { gtk_widget_show (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/quit")); } else { gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/quit")); } #endif /* TASKS_ENABLED */ } /* ========================================================================== */ static void create_appearance_section (GtkWidget *appearance_vbox, GUI *appGUI) { GtkWidget *table, *label, *combobox, *checkbutton; table = gtk_table_new (3, 4, FALSE); gtk_box_pack_start (GTK_BOX (appearance_vbox), table, FALSE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 32); gtk_table_set_row_spacings (GTK_TABLE (table), 8); label = utl_gui_create_label ("%s:", _("Layout")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_table_attach (GTK_TABLE (table), combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Vertical")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Horizontal")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.gui_layout); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (layout_changed_cb), appGUI); label = utl_gui_create_label ("%s:", _("Tabs position")); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_table_attach (GTK_TABLE (table), combobox, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Left")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Right")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Top")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Bottom")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.tabs_position); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (tabs_position_changed_cb), appGUI); checkbutton = gtk_check_button_new_with_mnemonic (_("Use default stock icons")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.default_stock_icons); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_stock_icons_cb), appGUI); checkbutton = gtk_check_button_new_with_mnemonic (_("Disable underline in links")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.disable_underline_links); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (disable_underline_in_links_changed_cb), appGUI); checkbutton = gtk_check_button_new_with_mnemonic (_("Draw rows in alternating colors")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.rules_hint); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 4, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (enable_rules_hint_changed_cb), appGUI); checkbutton = gtk_check_button_new_with_mnemonic (_("Show exit button in toolbar")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.toolbar_exit_button); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 4, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (toolbar_exit_button_changed_cb), appGUI); } /* ========================================================================== */ #if defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) static void hide_module_cb (GtkToggleButton *togglebutton, GUI *appGUI) { gboolean cal, tsk, nte, cnt; cal = tsk = nte = cnt = TRUE; cal = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->hide_calendar_checkbutton)); #ifdef TASKS_ENABLED tsk = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->hide_tasks_checkbutton)); #endif /* TASKS_ENABLED */ #ifdef NOTES_ENABLED nte = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->hide_notes_checkbutton)); #endif /* NOTES_ENABLED */ #ifdef CONTACTS_ENABLED cnt = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->hide_contacts_checkbutton)); #endif /* CONTACTS_ENABLED */ if (cal && tsk && nte && cnt) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("At least one module must be visible."), GTK_WINDOW (appGUI->opt->window)); cal = FALSE; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->opt->hide_calendar_checkbutton), FALSE); } opt_hide_modules (cal, tsk, cnt, nte, TRUE, appGUI); } void opt_hide_modules (gboolean cal, gboolean tsk, gboolean cnt, gboolean nte, gboolean options, GUI *appGUI) { if (cal && tsk && nte && cnt) { cal = FALSE; } if (cal) { config.hide_calendar = TRUE; gtk_widget_hide (GTK_WIDGET (appGUI->cal->vbox)); if (options) gtk_widget_hide (appGUI->opt->calendar); gtk_widget_hide (appGUI->trayicon_menu_calendar_item); } else { config.hide_calendar = FALSE; gtk_widget_show (GTK_WIDGET (appGUI->cal->vbox)); if (options) gtk_widget_show (appGUI->opt->calendar); gtk_widget_show (appGUI->trayicon_menu_calendar_item); } #ifdef TASKS_ENABLED if (tsk) { config.hide_tasks = TRUE; gtk_widget_hide(GTK_WIDGET (appGUI->tsk->vbox)); if (options) gtk_widget_hide (appGUI->opt->tasks); gtk_widget_hide (appGUI->trayicon_menu_tasks_item); } else { config.hide_tasks = FALSE; gtk_widget_show (GTK_WIDGET (appGUI->tsk->vbox)); if (options) gtk_widget_show (appGUI->opt->tasks); gtk_widget_show (appGUI->trayicon_menu_tasks_item); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (cnt) { config.hide_contacts = TRUE; gtk_widget_hide (GTK_WIDGET (appGUI->cnt->vbox)); if (options) gtk_widget_hide (appGUI->opt->contacts); gtk_widget_hide (appGUI->trayicon_menu_contacts_item); } else { config.hide_contacts = FALSE; gtk_widget_show (GTK_WIDGET (appGUI->cnt->vbox)); if (options) gtk_widget_show (appGUI->opt->contacts); gtk_widget_show (appGUI->trayicon_menu_contacts_item); } #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED if (nte) { config.hide_notes = TRUE; gtk_widget_hide (GTK_WIDGET (appGUI->nte->vbox)); if (options) gtk_widget_hide (appGUI->opt->notes); gtk_widget_hide (appGUI->trayicon_menu_notes_item); } else { config.hide_notes = FALSE; gtk_widget_show (GTK_WIDGET (appGUI->nte->vbox)); if (options) gtk_widget_show (appGUI->opt->notes); gtk_widget_show (appGUI->trayicon_menu_notes_item); } #endif /* NOTES_ENABLED */ } /* ========================================================================== */ static void create_hide_section (GtkWidget *hide_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; table = gtk_table_new (1, 4, FALSE); gtk_box_pack_start (GTK_BOX (hide_vbox), table, TRUE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 16); checkbutton = gtk_check_button_new_with_mnemonic (_("Calendar")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_calendar); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_module_cb), appGUI); appGUI->opt->hide_calendar_checkbutton = checkbutton; #ifdef TASKS_ENABLED checkbutton = gtk_check_button_new_with_mnemonic (_("Tasks")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_tasks); gtk_table_attach (GTK_TABLE (table), checkbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_module_cb), appGUI); appGUI->opt->hide_tasks_checkbutton = checkbutton; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED checkbutton = gtk_check_button_new_with_mnemonic (_("Contacts")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_contacts); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_module_cb), appGUI); appGUI->opt->hide_contacts_checkbutton = checkbutton; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED checkbutton = gtk_check_button_new_with_mnemonic (_("Notes")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_notes); gtk_table_attach (GTK_TABLE (table), checkbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (hide_module_cb), appGUI); appGUI->opt->hide_notes_checkbutton = checkbutton; #endif /* NOTES_ENABLED */ } #endif /* defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) */ /* ========================================================================== */ static void override_locale_changed_cb (GtkToggleButton *togglebutton, GUI *appGUI) { config.override_locale_settings = gtk_toggle_button_get_active (togglebutton); gtk_widget_set_sensitive (appGUI->opt->override_locale_label_1, config.override_locale_settings); gtk_widget_set_sensitive (appGUI->opt->override_locale_label_2, config.override_locale_settings); gtk_widget_set_sensitive (appGUI->opt->date_format_combobox, config.override_locale_settings); gtk_widget_set_sensitive (appGUI->opt->time_format_combobox, config.override_locale_settings); #ifdef HAVE_GTKSPELL gtk_widget_set_sensitive (appGUI->opt->override_locale_label_3, config.override_locale_settings); gtk_widget_set_sensitive (appGUI->opt->entry_spell_lang, config.override_locale_settings); #endif /* HAVE_GTKSPELL */ #ifdef TASKS_ENABLED refresh_tasks (appGUI); #endif /* TASKS_ENABLED */ #ifdef NOTES_ENABLED refresh_notes (appGUI); #endif /* NOTES_ENABLED */ } /* ========================================================================== */ static void date_format_changed_cb (GtkComboBox *widget, GUI *appGUI) { config.date_format = gtk_combo_box_get_active (widget); #ifdef NOTES_ENABLED refresh_notes (appGUI); #endif /* NOTES_NOTES */ #ifdef TASKS_ENABLED refresh_tasks (appGUI); #endif /* TASKS_ENABLED */ } /* ========================================================================== */ static void time_format_changed_cb (GtkComboBox *widget, GUI *appGUI) { config.time_format = gtk_combo_box_get_active (widget); update_clock (appGUI); #ifdef NOTES_ENABLED refresh_notes (appGUI); #endif /* NOTES_NOTES */ #ifdef TASKS_ENABLED refresh_tasks (appGUI); #endif /* TASKS_ENABLED */ } /* ========================================================================== */ #ifdef HAVE_GTKSPELL static void spell_checker_entry_changed_cb (GtkEntry *entry, GUI *appGUI) { if (strlen (gtk_entry_get_text (entry))) g_strlcpy (config.spell_lang, gtk_entry_get_text (entry), MAXNAME); utl_gui_change_bg_widget_state (GTK_WIDGET (entry), NULL, appGUI); } /* ========================================================================== */ static gint spell_checker_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { utl_gui_change_bg_widget_state (widget, COLOR_BG_OK, appGUI); return FALSE; } #endif /* HAVE_GTKSPELL */ /* ========================================================================== */ static void create_general_section (GtkWidget *general_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton, *combobox; gchar *str; gint i = 0; table = gtk_table_new (6, 4, FALSE); gtk_box_pack_start (GTK_BOX (general_vbox), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 16); gtk_table_set_row_spacings (GTK_TABLE (table), 4); checkbutton = gtk_check_button_new_with_mnemonic (_("Override locale settings")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.override_locale_settings); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (override_locale_changed_cb), appGUI); appGUI->opt->override_locale_checkbutton = checkbutton; i++; appGUI->opt->override_locale_label_1 = utl_gui_create_label ("%s:", _("Date format")); gtk_table_attach (GTK_TABLE (table), appGUI->opt->override_locale_label_1, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("DD-MM-YYYY")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("MM-DD-YYYY")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("YYYY-MM-DD")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("YYYY-DD-MM")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.date_format); gtk_table_attach (GTK_TABLE (table), combobox, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (date_format_changed_cb), appGUI); appGUI->opt->date_format_combobox = combobox; i++; appGUI->opt->override_locale_label_2 = utl_gui_create_label ("%s:", _("Time format")); gtk_table_attach (GTK_TABLE (table), appGUI->opt->override_locale_label_2, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); str = g_strdup_printf ("24 %s", _("hours")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), str); g_free (str); str = g_strdup_printf ("12 %s", _("hours")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), str); g_free (str); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.time_format); gtk_table_attach (GTK_TABLE (table), combobox, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (time_format_changed_cb), appGUI); appGUI->opt->time_format_combobox = combobox; i++; #ifdef HAVE_GTKSPELL GtkWidget *entry; appGUI->opt->override_locale_label_3 = utl_gui_create_label ("%s:", _("Spell checker language")); gtk_table_attach (GTK_TABLE (table), appGUI->opt->override_locale_label_3, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (entry), MAXNAME); gtk_entry_set_text (GTK_ENTRY (entry), config.spell_lang); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (spell_checker_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (spell_checker_key_press_cb), appGUI); appGUI->opt->entry_spell_lang = entry; i++; #endif /* HAVE_GTKSPELL */ /* update the button enablement */ override_locale_changed_cb(GTK_TOGGLE_BUTTON (appGUI->opt->override_locale_checkbutton), appGUI); checkbutton = gtk_check_button_new_with_mnemonic (_("Enable tooltips")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.enable_tooltips); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.enable_tooltips)); i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Remember last selected page")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.remember_latest_tab); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.remember_latest_tab)); i++; checkbutton = gtk_check_button_new_with_mnemonic (_("Save data after every modification")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.save_data_after_modification); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.save_data_after_modification)); } /* ========================================================================== */ static void helper_entry_changed_cb (GtkEntry *entry, GUI *appGUI) { if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_web_browser)))) g_strlcpy (config.web_browser, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_web_browser)), MAXHELPERCMD); if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_email_client)))) g_strlcpy (config.email_client, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_email_client)), MAXHELPERCMD); if (strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_sound_player)))) g_strlcpy (config.sound_player, gtk_entry_get_text (GTK_ENTRY (appGUI->opt->entry_sound_player)), MAXHELPERCMD); utl_gui_change_bg_widget_state (appGUI->opt->entry_web_browser, NULL, appGUI); utl_gui_change_bg_widget_state (appGUI->opt->entry_email_client, NULL, appGUI); utl_gui_change_bg_widget_state (appGUI->opt->entry_sound_player, NULL, appGUI); } /* ========================================================================== */ static gint helper_key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { utl_gui_change_bg_widget_state (widget, COLOR_BG_OK, appGUI); return FALSE; } /* ========================================================================== */ void create_helpers_section (GtkWidget *helpers_vbox, GUI *appGUI) { GtkWidget *table, *label, *entry; table = gtk_table_new (3, 2, FALSE); gtk_box_pack_start (GTK_BOX (helpers_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 8); label = utl_gui_create_label ("%s:", _("Web browser")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = utl_gui_create_label ("%s:", _("E-mail client")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = utl_gui_create_label ("%s:", _("Sound player")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (entry), MAXHELPERCMD); gtk_entry_set_text (GTK_ENTRY (entry), config.web_browser); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (entry, _("The %s pattern will be replaced with web address")); } gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (helper_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (helper_key_press_cb), appGUI); appGUI->opt->entry_web_browser = entry; entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (entry), MAXHELPERCMD); gtk_entry_set_text (GTK_ENTRY (entry), config.email_client); if (config.enable_tooltips) gtk_widget_set_tooltip_text (entry, _("The %s pattern will be replaced with e-mail address")); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (helper_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (helper_key_press_cb), appGUI); appGUI->opt->entry_email_client = entry; entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (entry), MAXHELPERCMD); gtk_entry_set_text (GTK_ENTRY (entry), config.sound_player); if (config.enable_tooltips) gtk_widget_set_tooltip_text (entry, _("The %s pattern will be replaced with sound filename")); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (helper_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (entry), "key_press_event", G_CALLBACK (helper_key_press_cb), appGUI); appGUI->opt->entry_sound_player = entry; } /* ========================================================================== */ static void enable_systray_changed_cb (GtkToggleButton *togglebutton, GUI *appGUI) { if (gtk_toggle_button_get_active (togglebutton)) { config.enable_systray = 1; gtk_widget_set_sensitive (appGUI->opt->start_minimised_checkbutton, TRUE); gtk_widget_set_sensitive (appGUI->opt->blink_on_events_checkbutton, TRUE); gtk_widget_set_sensitive (appGUI->opt->ignore_day_note_events_checkbutton, TRUE); gtk_status_icon_set_visible (appGUI->osmo_trayicon, TRUE); } else { config.enable_systray = 0; gtk_widget_set_sensitive (appGUI->opt->start_minimised_checkbutton, FALSE); gtk_widget_set_sensitive (appGUI->opt->blink_on_events_checkbutton, FALSE); gtk_widget_set_sensitive (appGUI->opt->ignore_day_note_events_checkbutton, FALSE); gtk_status_icon_set_visible (appGUI->osmo_trayicon, FALSE); } } /* ========================================================================== */ void create_system_tray_section (GtkWidget *system_tray_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; table = gtk_table_new (3, 3, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (system_tray_vbox), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); checkbutton = gtk_check_button_new_with_mnemonic (_("Enable system tray")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.enable_systray); gtk_table_attach_defaults (GTK_TABLE (table), checkbutton, 0, 1, 0, 1); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (enable_systray_changed_cb), appGUI); appGUI->opt->enable_systray_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Start minimised")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.start_minimised_in_systray); gtk_widget_set_sensitive (checkbutton, config.enable_systray); gtk_table_attach_defaults (GTK_TABLE (table), checkbutton, 1, 2, 0, 1); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.start_minimised_in_systray)); appGUI->opt->start_minimised_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Blink on events")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.blink_on_events); gtk_widget_set_sensitive (checkbutton, config.enable_systray); gtk_table_attach_defaults (GTK_TABLE (table), checkbutton, 2, 3, 0, 1); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.blink_on_events)); appGUI->opt->blink_on_events_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Ignore day note events")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.ignore_day_note_events); gtk_widget_set_sensitive (checkbutton, config.enable_systray); gtk_table_attach_defaults (GTK_TABLE (table), checkbutton, 0, 3, 1, 2); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.ignore_day_note_events)); appGUI->opt->ignore_day_note_events_checkbutton = checkbutton; } /* ========================================================================== */ static GtkWidget * create_general_page (GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox_top, *vbox_icon, *vbox, *scrolledwindow; vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); scrolledwindow = utl_gui_insert_in_scrolled_window (vbox_top, GTK_SHADOW_ETCHED_IN); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 2); vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_PREFERENCES, _("General")); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); create_appearance_section (vbox, appGUI); #if defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Hide")); create_hide_section (vbox, appGUI); #endif /* defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) */ vbox = utl_gui_create_vbox_in_frame (vbox_top, _("General")); create_general_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Helpers")); create_helpers_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("System tray")); create_system_tray_section (vbox, appGUI); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow, vbox_icon); gtk_widget_show_all (scrolledwindow); return scrolledwindow; } /* ========================================================================== */ static void close_window (GtkWidget *widget, GtkWidget *window) { gtk_widget_destroy (window); } /* ========================================================================== */ static gint key_press (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { switch (event->keyval) { case GDK_Escape: close_window (NULL, widget); return TRUE; } return FALSE; } /* ========================================================================== */ GtkWidget * opt_create_preferences_window (GUI *appGUI) { GtkWidget *window, *vbox_top; GtkWidget *notebook; GtkWidget *hbuttonbox, *close_button; window = utl_gui_create_window (_("Preferences"), 700, 600, appGUI); g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (key_press), appGUI); vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_add (GTK_CONTAINER (window), vbox_top); appGUI->opt->notebook = notebook = gtk_notebook_new (); gtk_box_pack_start (GTK_BOX (vbox_top), notebook, TRUE, TRUE, 0); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_LEFT); gtk_widget_show (notebook); appGUI->opt->general = create_general_page (notebook, appGUI); appGUI->opt->calendar = cal_create_preferences_page (notebook, appGUI); if (config.hide_calendar) gtk_widget_hide (appGUI->opt->calendar); #ifdef TASKS_ENABLED appGUI->opt->tasks = tsk_create_preferences_page (notebook, appGUI); if (config.hide_tasks) gtk_widget_hide (appGUI->opt->tasks); #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED appGUI->opt->contacts = cnt_create_preferences_page (notebook, appGUI); if (config.hide_contacts) gtk_widget_hide (appGUI->opt->contacts); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED appGUI->opt->notes = nte_create_preferences_page (notebook, appGUI); if (config.hide_notes) gtk_widget_hide (appGUI->opt->notes); #endif /* NOTES_ENABLED */ /* Close button */ hbuttonbox = gtk_hbutton_box_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), HBOX_SPACING); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_container_add (GTK_CONTAINER (hbuttonbox), close_button); GTK_WIDGET_SET_FLAGS (close_button, GTK_CAN_DEFAULT); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (close_window), window); gtk_widget_grab_focus (close_button); gtk_widget_show_all (hbuttonbox); gtk_widget_show (vbox_top); return window; } /* ========================================================================== */ osmo-0.2.14/src/notes_preferences_gui.c000664 001750 001750 00000046260 12561325524 020052 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "i18n.h" #include "notes.h" #include "notes_preferences_gui.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils_gui.h" #ifdef HAVE_LIBGRINGOTTS #include /* ========================================================================== */ /* FIXME */ gint get_enc_algorithm_value (void) { gint algorithms_table [8] = { GRG_AES, GRG_SERPENT, GRG_TWOFISH, GRG_CAST_256, GRG_SAFERPLUS, GRG_LOKI97, GRG_3DES, GRG_RIJNDAEL_256 }; return algorithms_table[config.notes_enc_algorithm % 8]; } /* ========================================================================== */ gint get_enc_hashing_value (void) { gint hashing_table [2] = { GRG_SHA1, GRG_RIPEMD_160 }; return hashing_table[config.notes_enc_hashing % 2]; } /* ========================================================================== */ gint get_comp_algorithm_value (void) { gint algorithm_table [2] = { GRG_ZLIB, GRG_BZIP }; return algorithm_table[config.notes_comp_algorithm % 2]; } /* ========================================================================== */ gint get_comp_ratio_value (void) { gint ratio_table [4] = { GRG_LVL_NONE, GRG_LVL_FAST, GRG_LVL_GOOD, GRG_LVL_BEST }; return ratio_table[config.notes_comp_ratio % 4]; } /* ========================================================================== */ #endif /* HAVE_LIBGRINGOTTS */ #ifdef NOTES_ENABLED /* ========================================================================== */ static void combobox_clicked_cb (GtkComboBox *combobox, gint *option) { *option = gtk_combo_box_get_active (combobox); } /* ========================================================================== */ static void checkbutton_clicked_cb (GtkToggleButton *togglebutton, gint *option) { *option = gtk_toggle_button_get_active (togglebutton); } /* ========================================================================== */ static void notes_comp_ratio_cb (GtkComboBox *combobox, gint *option) { *option = gtk_combo_box_get_active (combobox) +1; } /* ========================================================================== */ #ifdef HAVE_LIBGRINGOTTS static void create_encryption_section (GtkWidget *encryption_vbox, GUI *appGUI) { GtkWidget *table, *combobox, *label; table = gtk_table_new (1, 5, FALSE); gtk_box_pack_start (GTK_BOX (encryption_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 8); label = utl_gui_create_label ("%s:", _("Algorithm")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); label = utl_gui_create_label ("%s:", _("Hashing")); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "AES"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Serpent"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Twofish"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "CAST 256"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Safer+"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Loki 97"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Triple DES"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Rijndael"); gtk_combo_box_set_active (GTK_COMBO_BOX(combobox), config.notes_enc_algorithm); gtk_table_attach (GTK_TABLE (table), combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (combobox_clicked_cb), &(config.notes_enc_algorithm)); appGUI->opt->notes_enc_algorithm_combobox = combobox; combobox = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "SHA-1"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "RIPEMD-160"); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.notes_enc_hashing); gtk_table_attach (GTK_TABLE (table), combobox, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (combobox_clicked_cb), &(config.notes_enc_algorithm)); appGUI->opt->notes_enc_hashing_combobox = combobox; label = utl_gui_create_label ("%s:", _("Compression")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); label = utl_gui_create_label ("%s:", _("Ratio")); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); combobox = gtk_combo_box_new_text (); gtk_table_attach (GTK_TABLE (table), combobox, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "ZLib"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "BZip2"); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.notes_comp_algorithm); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (combobox_clicked_cb), &(config.notes_comp_algorithm)); appGUI->opt->notes_comp_algorithm_combobox = combobox; combobox = gtk_combo_box_new_text (); gtk_table_attach (GTK_TABLE (table), combobox, 3, 4, 1, 2, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Fast")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Good")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Best")); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.notes_comp_ratio - 1); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (notes_comp_ratio_cb), &(config.notes_comp_ratio)); appGUI->opt->notes_comp_ratio_combobox = combobox; } #endif /* HAVE_LIBGRINGOTTS */ /* ========================================================================== */ static void notes_visible_columns_changed_cb (GtkToggleButton *widget, GUI *appGUI) { config.nte_visible_type_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->nvc_type_checkbutton)); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_TYPE], config.nte_visible_type_column); config.nte_visible_category_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->nvc_category_checkbutton)); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CATEGORY], config.nte_visible_category_column); config.nte_visible_last_changes_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->nvc_last_changes_checkbutton)); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE], config.nte_visible_last_changes_column); config.nte_visible_created_column = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->opt->nvc_created_checkbutton)); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE], config.nte_visible_created_column); set_note_columns_width (appGUI); } /* ========================================================================== */ static void create_visible_columns_section (GtkWidget *visible_columns_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; table = gtk_table_new (1, 4, FALSE); gtk_box_pack_start (GTK_BOX (visible_columns_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 8); checkbutton = gtk_check_button_new_with_mnemonic (_("Type")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.nte_visible_type_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (notes_visible_columns_changed_cb), appGUI); appGUI->opt->nvc_type_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Category")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.nte_visible_category_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (notes_visible_columns_changed_cb), appGUI); appGUI->opt->nvc_category_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Last changes")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.nte_visible_last_changes_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (notes_visible_columns_changed_cb), appGUI); appGUI->opt->nvc_last_changes_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Created")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.nte_visible_created_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (notes_visible_columns_changed_cb), appGUI); appGUI->opt->nvc_created_checkbutton = checkbutton; } /* ========================================================================== */ static void notes_category_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (gtk_tree_selection_get_selected (selection, &model, &iter)) gtk_widget_set_sensitive (appGUI->opt->notes_category_remove_button, TRUE); else gtk_widget_set_sensitive (appGUI->opt->notes_category_remove_button, FALSE); } /* ========================================================================== */ static void notes_category_add_cb (GtkWidget *widget, GUI *appGUI) { GtkListStore *store = appGUI->opt->notes_category_store; GtkTreeIter iter; const gchar *category_name; gchar *item; gint i; category_name = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->notes_category_entry)); if (!strlen (category_name)) return; i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &item, -1); if (!strcmp (category_name, item)) { g_free (item); return; } g_free (item); } gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter, NULL, 0); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, category_name, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->notes_category_entry), ""); gtk_widget_set_sensitive (appGUI->opt->notes_category_add_button, FALSE); utl_gui_create_category_combobox (GTK_COMBO_BOX (appGUI->nte->cf_combobox), store, FALSE); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->nte->cf_combobox), 0); } /* ========================================================================== */ static gint notes_category_entry_key_release_cb (GtkEntry *entry, GdkEventKey *event, GUI *appGUI) { gboolean state = FALSE; if (strlen (gtk_entry_get_text (entry))) state = TRUE; gtk_widget_set_sensitive (appGUI->opt->notes_category_add_button, state); if (event->keyval == GDK_Return) { if (state) notes_category_add_cb (NULL, appGUI); return TRUE; } return FALSE; } /* ========================================================================== */ static void notes_category_cell_edited_cb (GtkCellRendererText *renderer, gchar *path, gchar *new_text, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (g_ascii_strcasecmp (new_text, "") == 0) return; model = gtk_tree_view_get_model (GTK_TREE_VIEW (appGUI->opt->notes_category_treeview)); if (gtk_tree_model_get_iter_from_string (model, &iter, path)) gtk_list_store_set (appGUI->opt->notes_category_store, &iter, 0, new_text, -1); } /* ========================================================================== */ static void notes_category_remove_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; GtkListStore *store = appGUI->opt->notes_category_store; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->notes_category_treeview), &path, NULL); if (path == NULL) return; gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path); gtk_list_store_remove (store, &iter); gtk_tree_path_free (path); utl_gui_create_category_combobox (GTK_COMBO_BOX (appGUI->nte->cf_combobox), store, FALSE); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->nte->cf_combobox), 0); } /* ========================================================================== */ static void create_categories_section (GtkWidget *categories_vbox, GUI *appGUI) { GtkWidget *table, *entry, *treeview, *scrolledwindow; GtkTreeViewColumn *column; GtkCellRenderer *renderer; table = gtk_table_new (4, 3, FALSE); gtk_box_pack_start (GTK_BOX (categories_vbox), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 8); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 0, 1, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (entry), "key_release_event", G_CALLBACK (notes_category_entry_key_release_cb), appGUI); appGUI->opt->notes_category_entry = entry; scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_table_attach_defaults (GTK_TABLE (table), scrolledwindow, 0, 3, 0, 3); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->opt->notes_category_store)); appGUI->opt->notes_category_treeview = treeview; gtk_container_add (GTK_CONTAINER (scrolledwindow), treeview); gtk_container_set_border_width (GTK_CONTAINER (treeview), 4); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), FALSE); gtk_widget_set_size_request (treeview, -1, 80); appGUI->opt->notes_category_select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (appGUI->opt->notes_category_select), "changed", G_CALLBACK (notes_category_selected_cb), appGUI); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, "editable-set", TRUE, NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (notes_category_cell_edited_cb), appGUI); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); appGUI->opt->notes_category_add_button = utl_gui_create_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->notes_category_add_button, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_widget_set_sensitive (appGUI->opt->notes_category_add_button, FALSE); g_signal_connect (appGUI->opt->notes_category_add_button, "clicked", G_CALLBACK (notes_category_add_cb), appGUI); appGUI->opt->notes_category_remove_button = utl_gui_create_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->notes_category_remove_button, 2, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_widget_set_sensitive (appGUI->opt->notes_category_remove_button, FALSE); g_signal_connect (appGUI->opt->notes_category_remove_button, "clicked", G_CALLBACK (notes_category_remove_cb), appGUI); } /* ========================================================================== */ static void create_options_section (GtkWidget *notes_opt_vbox, GUI *appGUI) { GtkWidget *checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Remember the last selected category")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.remember_category_in_notes); gtk_box_pack_start (GTK_BOX (notes_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.remember_category_in_notes)); appGUI->opt->cn_remember_category_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Use system format for date and time")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.use_system_date_in_notes); gtk_box_pack_start (GTK_BOX (notes_opt_vbox), checkbutton, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.use_system_date_in_notes)); appGUI->opt->cn_use_system_date_checkbutton = checkbutton; } /* ========================================================================== */ GtkWidget * nte_create_preferences_page (GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox_top, *vbox_icon, *vbox, *scrolledwindow; vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); scrolledwindow = utl_gui_insert_in_scrolled_window (vbox_top, GTK_SHADOW_ETCHED_IN); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 2); vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_NOTES, _("Notes")); #ifdef HAVE_LIBGRINGOTTS vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Encryption")); create_encryption_section (vbox, appGUI); #endif /* HAVE_LIBGRINGOTTS */ vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Visible columns")); create_visible_columns_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Categories")); create_categories_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Notes options")); create_options_section (vbox, appGUI); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow, vbox_icon); gtk_widget_show_all (scrolledwindow); return scrolledwindow; } /* ========================================================================== */ #endif /* NOTES_ENABLED */ osmo-0.2.14/src/utils_date_time.c000664 001750 001750 00000010644 12561325524 016645 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "options_prefs.h" #include "utils_date_time.h" /*============================================================================*/ gint utl_date_time_compare (GDate *date1, TIME *time1, GDate *date2, TIME *time2) { g_return_val_if_fail (g_date_valid (date1), 0); g_return_val_if_fail (g_date_valid (date2), 0); g_return_val_if_fail (utl_time_valid (time1), 0); g_return_val_if_fail (utl_time_valid (time2), 0); gint n; if ((n = g_date_compare (date1, date2)) == 0) return utl_time_compare (time1, time2); return n; } /*============================================================================*/ gint utl_date_time_compare_js (guint32 julian1, gint seconds1, guint32 julian2, gint seconds2) { if (julian1 == julian2) return ((seconds1 > seconds2) ? 1 : ((seconds1 < seconds2) ? -1 : 0)); return ((julian1 > julian2) ? 1 : -1); } /*============================================================================*/ gboolean utl_date_time_in_the_past_js (guint32 julian, gint seconds) { guint32 cj = utl_date_get_current_julian (); gint cs = utl_time_get_current_seconds (); if (utl_date_time_compare_js (julian, seconds, cj, cs) <= 0) return TRUE; else return FALSE; } /*============================================================================*/ gchar * utl_date_time_print (GDate *d, gint date_format, TIME *t, gint time_format, gint override_locale) { g_return_val_if_fail (g_date_valid (d), NULL); g_return_val_if_fail (utl_time_valid (t), NULL); gchar *date_str = utl_date_print (d, date_format, override_locale); gchar *time_str = utl_time_print (t, time_format, override_locale); gchar *date_time_str = g_strdup_printf ("%s, %s", date_str, time_str); g_free (date_str); g_free (time_str); return date_time_str; } /*============================================================================*/ gchar * utl_date_time_print_js (guint32 julian, gint date_format, gint seconds, gint time_format, gint override_locale) { gchar *date_time_str, *date_str, *time_str; if (utl_time_valid_seconds (seconds)) { date_str = utl_date_print_j (julian, date_format, override_locale); time_str = utl_time_print_s (seconds, time_format, override_locale); date_time_str = g_strdup_printf ("%s, %s", date_str, time_str); g_free (date_str); g_free (time_str); } else date_time_str = utl_date_print_j (julian, date_format, override_locale); return date_time_str; } /*============================================================================*/ gchar * utl_date_time_print_default (guint32 julian, gint seconds, gboolean with_sec) { gchar *str = utl_date_time_print_js (julian, config.date_format, seconds, config.time_format + (with_sec ? 2 : 0), /* TIME_HH_MM -> TIME_HH_MM_SS */ config.override_locale_settings); return str; } /*============================================================================*/ gboolean utl_date_time_order (GDate *date1, TIME *time1, GDate *date2, TIME *time2) { g_return_val_if_fail (g_date_valid (date1), FALSE); g_return_val_if_fail (g_date_valid (date2), FALSE); g_return_val_if_fail (utl_time_valid (time1), FALSE); g_return_val_if_fail (utl_time_valid (time2), FALSE); if (utl_date_order (date1, date2)) { TIME tmp = *time1; *time1 = *time2; *time2 = tmp; return TRUE; } else if (g_date_compare (date1, date2) == 0 && utl_time_order (time1, time2)) return TRUE; else return FALSE; } /*============================================================================*/ osmo-0.2.14/src/contacts_import_csv.h000664 001750 001750 00000002211 12561325524 017551 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_IMPORT_CSV_H #define _CONTACTS_IMPORT_CSV_H #include "gui.h" gchar * csv_get_field (const gchar *line_buffer, gint field); gchar * csv_get_line (gint line, GUI *appGUI); guint get_number_of_records (GUI *appGUI); #endif /* _CONTACTS_IMPORT_CSV_H */ osmo-0.2.14/src/contacts_birthdays.h000664 001750 001750 00000002243 12561325524 017362 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_BIRTHDAYS_H #define _CONTACTS_BIRTHDAYS_H #include "gui.h" enum { B_COLUMN_NAME = 0, B_COLUMN_DAYS_NUM, B_COLUMN_DAYS, B_COLUMN_AGE, B_COLUMN_DATE, B_COLUMN_ZODIAC, B_COLUMN_ID, BIRTHDAYS_NUM_COLUMNS }; void contacts_create_birthdays_window (GUI *appGUI); #endif /* _CONTACTS_BIRTHDAYS_H */ osmo-0.2.14/src/contacts_export.h000664 001750 001750 00000002313 12561325524 016710 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_EXPORT_H #define _CONTACTS_EXPORT_H #include "gui.h" enum { EXPORT_TO_CSV = 0, EXPORT_TO_XHTML, EXPORT_TO_VCF }; enum { SELECT_ALL = 0, SELECT_NONE, SELECT_INVERT }; gboolean export_contacts_to_file (gchar *filename, gboolean header, GUI *appGUI); void contacts_create_export_window (GUI *appGUI); #endif /* _CONTACTS_EXPORT_H */ osmo-0.2.14/src/notes_preferences_gui.h000664 001750 001750 00000002420 12561325524 020045 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _NOTES_PREFERENCES_GUI_H #define _NOTES_PREFERENCES_GUI_H #include "gui.h" gint get_enc_algorithm_value (void); gint get_enc_hashing_value (void); gint get_comp_algorithm_value (void); gint get_comp_ratio_value (void); GtkWidget * nte_create_preferences_page (GtkWidget *notebook, GUI *appGUI); #endif /* _NOTES_PREFERENCES_GUI_H */ osmo-0.2.14/src/i18n.h000664 001750 001750 00000002036 12561325524 014252 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal manager * * Copyright (C) 2007 Tomasz MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #ifndef _ # include # include # define _(x) gettext(x) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #endif osmo-0.2.14/src/calendar_moon.h000664 001750 001750 00000075373 12561325524 016312 0ustar00pasppasp000000 000000 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_0) #endif #ifdef __GNUC__ static const guint8 moon_phase_0[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_0[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1156) */ "\0\0\4\234" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\0\0\0\0\7\210\211\213\1\210\211\213\11\210\211\213#\210\211\213" "5\210\211\213F\210\211\2134\210\211\213\23\215\0\0\0\0\10aaeGefh\257" "yz|\341\204\206\206\365\201\201\203\365uvx\335eej\247aaeG\212\0\0\0\0" "\3ppp\20klm\322\210\210\211\376\202\242\243\242\377\7\242\242\242\377" "\241\241\241\377\241\242\241\377\242\242\242\377\207\210\210\376ooq\314" "ppp\20\207\0\0\0\0\5ZZ^Gopr\366\214\215\214\377\212\213\212\377\213\213" "\213\377\203\213\214\213\377\6\215\215\215\377\220\220\220\377\213\213" "\213\377\214\214\214\377rsv\362XX\\G\205\0\0\0\0\3ppp\20fgi\364uuu\377" "\202ttt\377\204uuu\377\1uut\377\202uuu\377\4vwv\377uvu\377kkl\365ppp" "\20\204\0\0\0\0\4]]`\303aaa\377]^]\377^^^\377\202^_^\377\204___\377\6" "^_^\377bbb\377```\377^^^\377`a`\377]]_\313\202\0\0\0\0\12\210\211\213" "\3aaeGGHI\376<<<\377;<;\377;;;\377===\377@@@\377DED\377GHG\377\202HI" "H\377\14EFE\377@A@\377<<<\377:;:\377:::\377GHH\376aaeG\0\0\0\0\210\211" "\213\"TVX\260<<<\377:::\377\203:;:\377\205;;;\377\20<<<\377;<;\377;;" ";\377:;:\377:::\377<<<\377TVY\252\210\211\213\13\210\211\213USUV\340" ";<;\377\77\77\77\377===\377<<<\377;;;\377;<;\377\202<<<\377\2<=<\377" "=>=\377\202===\377\14<<<\377;<;\377;;;\377<<<\377STV\335\210\211\213" ";\210\211\213RSTU\365;;;\377\77\77\77\377=>=\377<=<\377\202<<<\377\202" "<=<\377\1>>=\377\202===\377\16=>=\377\77\77\77\377===\377<<<\377;<;\377" "TVW\362\210\211\213Z\210\211\213>TUV\364>\77>\377@@@\377>>=\377<<<\377" "<=<\377\203===\377\14=>=\377>>>\377\77\77>\377ABA\377CCC\377@@@\377=" "=<\377<<<\377VVX\362\210\211\213]\210\211\213FYYZ\340\204>>>\377\2==" "=\377=>=\377\203>>>\377\5\77\77\77\377AAA\377BCB\377DDD\377BBB\377\202" ">>>\377\7XY[\332\210\211\213B\210\211\213&WW\\\247\77@\77\377<<<\377" "===\377\203>>>\377\2>\77>\377\77\77\77\377\203BBB\377\203DDD\377\7@A" "@\377@@@\377YY]\250\210\211\213,\210\211\213\12aaeGLMO\376\202=>=\377" "\202>>>\377\3\77\77>\377\77\77\77\377@@@\377\202DDD\377\203EEE\377\4" "DDD\377AAA\377JKM\375aaeG\203\0\0\0\0\5__a\310EEE\377\77@\77\377>>>\377" ">\77>\377\203@@@\377\10DDD\377FFF\377GGG\377FFF\377DDD\377BBB\377EEE" "\377YY\\\275\204\0\0\0\0\4ppp\20YZ]\357@@@\377>>>\377\202AAA\377\6@@" "@\377AAA\377EEE\377GFF\377GGG\377FFF\377\202BBB\377\2^^a\357ppp\20\205" "\0\0\0\0\3[[_F]^a\360GHG\377\202BBB\377\2AAA\377BBB\377\202FFF\377\5" "EEE\377DDD\377HHI\377[[_\354[[_F\207\0\0\0\0\4ppp\20bbd\305RRT\375EE" "E\377\204FFF\377\4HHH\377VVY\375\\\\_\274ppp\20\212\0\0\0\0\10aaeGWW" "[\237iim\330ggj\357``c\355__c\320YY^\240aaeG\214\0\0\0\0\10\210\211\213" "\5\210\211\213\20\210\211\213\36\210\211\2134\210\211\213<\210\211\213" ":\210\211\213\25\210\211\213\2\206\0\0\0\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_1) #endif #ifdef __GNUC__ static const guint8 moon_phase_1[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_1[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1198) */ "\0\0\4\306" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10b" "bbFcef\253xz{\337\206\206\207\364\204\206\207\364||\200\323ffj\241bb" "bI\212\377\377\377\0\5ppp\20klm\312\210\211\212\376\240\241\240\377\241" "\242\241\377\202\241\241\241\377\5\245\245\245\377\257\260\257\377\226" "\227\231\374npq\303qqc\22\207\377\377\377\0\3``d@mnp\362\213\214\213" "\377\202\212\212\212\377\203\212\213\212\377\6\213\214\213\377\223\223" "\223\377\230\232\230\377\240\242\241\377wx|\351]]aG\205\377\377\377\0" "\3jjj\14ggh\357uuu\377\202ttt\377\204uuu\377\7tut\377uuu\377|||\377\230" "\232\230\377\224\227\224\377qst\355ppp\20\204\377\377\377\0\2]]a\270" "aaa\377\202]]]\377\202]^]\377\204^^^\377\6]^]\377bbb\377\202\205\202" "\377~\200~\377\203\207\204\377^_`\301\202\377\377\377\0\30\210\211\213" "\3fff=\377\202===\377\14FGF\377lol\377fjf\377psp\377^_b\324\210" "\211\213Z\210\211\213fSTV\361;;;\377\77\77\77\377=>=\377<=<\377\202<" "<<\377\202<=<\377\21>>=\377=>=\377===\377>>>\377FGF\377wzw\377nqm\377" "lol\377hkl\352\210\211\213s\210\211\213OTUW\360>>>\377@A@\377>>=\377" "<<<\377<=<\377\203===\377\15=>=\377>>>\377\77\77>\377ABA\377OOO\377\217" "\221\216\377uxt\377rtr\377kmp\353\210\211\213h\210\211\213YXXZ\331=>" "=\377\203>>>\377\2===\377=>=\377\203>>>\377\23\77\77\77\377AAA\377BC" "B\377[\\[\377\240\241\237\377\177\202\177\377\201\203\201\377cdg\321" "\210\211\213I\210\211\2130XXZ\234\77\77\77\377<<<\377===\377>>>\377>" ">=\377>>>\377>\77>\377\77\77\77\377\203BBB\377\12DDD\377klk\377\252\253" "\252\377\222\224\221\377\210\212\211\377[[_\244\210\211\2132\210\211" "\213\14fff=\377\5>>=\377>>>\377>\77>\377\77\77\77\377@" "@@\377\202DDD\377\202EEE\377\5\215\215\214\377\256\256\256\377\223\225" "\223\377qry\371aaeG\203\377\377\377\0\6\\\\`\277EFE\377\77\77\77\377" ">>>\377>\77>\377@@\77\377\202@@@\377\10DDD\377FFF\377GGG\377JJJ\377\247" "\247\247\377\237\240\237\377\221\223\223\377__b\267\204\377\377\377\0" "\4jjj\14Z[]\354@@@\377>>>\377\202AAA\377\12@@@\377AAA\377EEE\377GGF\377" "GGG\377yyy\377\236\237\236\377\236\237\235\377ww{\352ppp\20\205\377\377" "\377\0\7``d@\\]`\356HHH\377BBB\377BCB\377AAA\377BBB\377\202FFF\377\5" "ZYZ\377\250\251\247\377\240\240\244\377tty\346]]aG\207\377\377\377\0" "\5ppp\20ffg\302TTX\374DDD\377EEE\377\202FFF\377\5ddd\377\255\255\255" "\377\217\217\226\373ddg\271qqc\22\212\377\377\377\0\10bbbFYY[\236kko" "\326iik\360cch\354nns\311^^c\240bbbI\214\377\377\377\0\10\210\211\213" "\5\210\211\213\31\210\211\2137\210\211\213I\210\211\213f\210\211\213" "a\210\211\213\37\210\211\213\3\206\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_2) #endif #ifdef __GNUC__ static const guint8 moon_phase_2[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_2[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1228) */ "\0\0\4\344" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10a" "aeGgik\260||}\341\205\206\206\365\215\216\221\360}~\201\325ffk\244aa" "eG\212\377\377\377\0\3ppp\20mnp\322\213\215\215\376\202\242\243\242\377" "\7\242\242\242\377\251\254\251\377\257\261\257\377\262\264\263\377\225" "\230\231\375qqt\302ppp\20\207\377\377\377\0\5ZZ^Gpqr\366\214\215\214" "\377\212\213\212\377\213\213\213\377\202\213\214\213\377\7\230\232\230" "\377\246\251\246\377\270\272\270\377\234\237\234\377\237\241\240\377" "yz\177\351[[_F\205\377\377\377\0\3ppp\20fhi\364uuu\377\202ttt\377\203" "uuu\377\10\213\215\213\377\212\214\211\377\217\222\217\377\215\220\215" "\377\230\232\230\377\223\226\223\377suv\356ppp\20\204\377\377\377\0\4" "]]`\302```\377]^]\377^^^\377\202^_^\377\202___\377\10}\177|\377|\177" "|\377{~{\377\226\231\226\377\210\213\210\377}\201}\377\203\207\204\377" "aad\302\202\377\377\377\0\30\210\211\213\3aaeGHIK\376<<<\377;<;\377;" ";;\377===\377@@@\377DED\377GHG\377oro\377orn\377mom\377hlh\377aea\377" "]a\\\377Z^Z\377gkk\374aaeG\377\377\377\0\210\211\213%UWY\256===\377:" "::\377\203:;:\377\203;;;\377\22jli\377ili\377nqn\377lpl\377ilh\377dh" "d\377_c_\377qtq\377WY\\\245\210\211\213\20\210\211\213aSUV\337;<;\377" "\77\77\77\377===\377<<<\377;;;\377;<;\377\202<<<\377\20rur\377z|y\377" "y{x\377uxu\377qtq\377lol\377fjf\377psp\377^_b\324\210\211\213Z\210\211" "\213fSUV\364;;;\377\77\77\77\377=>=\377<=<\377\202<<<\377\202<=<\377" "\21|~{\377y{y\377vxu\377{~{\377\207\211\206\377wzw\377nqn\377lol\377" "ikm\352\210\211\213s\210\211\213OUVW\363>\77>\377@@@\377>>=\377<<<\377" "<=<\377\203===\377\14z|z\377\177\201~\377\204\206\203\377\231\232\230" "\377\246\246\245\377\217\220\216\377uxt\377rtr\377lmp\352\210\211\213" "h\210\211\213YZZ\\\337\204>>>\377\2===\377=>=\377\202>>>\377\17\200\201" "\177\377\205\206\204\377\224\225\223\377\240\242\240\377\252\253\252" "\377\237\241\236\377~\201~\377\201\203\201\377ceh\321\210\211\213I\210" "\211\2130XX]\246\77@\77\377<<<\377===\377\203>>>\377\17>\77>\377\77\77" "\77\377\236\236\235\377\237\240\237\377\235\236\234\377\254\255\253\377" "\257\260\257\377\252\253\252\377\222\224\221\377\210\212\212\377[[`\244" "\210\211\2132\210\211\213\14aaeGNNP\375\202=>=\377\202>>>\377\14\77\77" ">\377\77\77\77\377@@@\377\252\252\251\377\252\253\252\377\262\262\261" "\377\266\266\266\377\263\264\263\377\256\256\256\377\224\226\224\377" "pry\371aaeG\203\377\377\377\0\5``b\307FFF\377\77@\77\377>>>\377>\77>" "\377\203@@@\377\10\253\253\252\377\274\274\273\377\302\301\302\377\275" "\275\274\377\254\254\254\377\237\240\237\377\220\221\222\377__c\265\204" "\377\377\377\0\4ppp\20[\\_\357@@@\377>>>\377\202AAA\377\12@@@\377AAA" "\377\264\264\263\377\300\277\277\377\305\304\305\377\271\270\270\377" "\236\237\236\377\236\237\235\377ttx\350ppp\20\205\377\377\377\0\3[[_" "F^_b\357HHH\377\202BBB\377\11AAA\377BBB\377\276\275\275\377\275\274\274" "\377\264\263\264\377\252\252\251\377\235\236\240\377oou\344[[_F\207\377" "\377\377\0\4ppp\20ccf\304SSU\375EEE\377\202FFF\377\6\276\275\275\377" "\277\277\276\377\272\272\271\377\212\212\221\372aad\265ppp\20\212\377" "\377\377\0\10aaeGXX\\\237iim\330ggj\357zz~\343jjp\306ZZ_\236aaeG\214" "\377\377\377\0\10\210\211\213\5\210\211\213\31\210\211\2137\210\211\213" "I\210\211\213f\210\211\213a\210\211\213\37\210\211\213\3\206\377\377" "\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_3) #endif #ifdef __GNUC__ static const guint8 moon_phase_3[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_3[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1295) */ "\0\0\5'" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10a" "aeGhjl\261|}~\340\217\221\221\361\215\216\221\360}~\201\325ffk\244aa" "eG\212\377\377\377\0\14ppp\20mnp\322\213\213\214\376\246\247\246\377" "\257\261\257\377\252\254\252\377\251\254\251\377\257\261\257\377\262" "\264\263\377\225\230\231\375qqt\302ppp\20\207\377\377\377\0\16ZZ^Gpq" "r\366\214\215\214\377\213\214\213\377\224\227\224\377\227\231\227\377" "\230\233\230\377\230\232\230\377\246\251\246\377\270\272\270\377\234" "\237\234\377\237\241\240\377yz\177\351[[_F\205\377\377\377\0\7ppp\20" "ffh\364uuu\377ttt\377{|{\377\212\214\212\377\212\215\212\377\202\213" "\215\213\377\7\212\214\211\377\217\222\217\377\215\220\215\377\230\232" "\230\377\223\226\223\377suv\356ppp\20\204\377\377\377\0\6\\\\_\303``" "`\377]^]\377^^^\377sus\377{~{\377\202|\177|\377\10}\177|\377|\177|\377" "{~{\377\226\231\226\377\210\213\210\377}\201}\377\203\207\204\377aad" "\302\202\377\377\377\0f\210\211\213\3aaeGGHI\376<<<\377;<;\377<=<\377" "bdb\377gjg\377knk\377nqn\377oro\377orn\377mom\377hlh\377aea\377]a\\\377" "Z^Z\377gkk\374aaeG\377\377\377\0\210\211\213%TVX\260<<<\377:::\377:;" ":\377BCB\377ehe\377gjg\377iki\377ili\377jli\377ili\377nqn\377lpl\377" "ilh\377dhd\377_c_\377qtq\377WY\\\245\210\211\213\20\210\211\213aSUV\340" ";<;\377\77\77\77\377===\377LLL\377jlj\377lol\377npn\377oqn\377rur\377" "z|y\377y{x\377uxu\377qtq\377lol\377fjf\377psp\377^_b\324\210\211\213" "Z\210\211\213fTUV\364;;;\377\77\77\77\377=>=\377RSQ\377oqn\377qsq\377" "svs\377tvt\377|~{\377y{y\377vxu\377{~{\377\207\211\206\377wzw\377nqn" "\377lol\377ikm\352\210\211\213s\210\211\213OUUV\363>\77>\377@@@\377>" ">=\377QRP\377tvs\377vyv\377xzx\377z{y\377z|z\377\177\201~\377\204\206" "\203\377\231\232\230\377\246\246\245\377\217\220\216\377uxt\377rtr\377" "lmp\352\210\211\213h\210\211\213YYY[\337\203>>>\377&QRQ\377xzx\377{}" "z\377}\177}\377\177\201\177\377\200\201\177\377\205\206\204\377\224\225" "\223\377\240\242\240\377\252\253\252\377\237\241\236\377~\201~\377\201" "\203\201\377ceh\321\210\211\213I\210\211\2130XX\\\247\77@\77\377<<<\377" "===\377MML\377|~|\377\200\201\177\377\203\204\202\377\207\210\206\377" "\236\236\235\377\237\240\237\377\235\236\234\377\254\255\253\377\257" "\260\257\377\252\253\252\377\222\224\221\377\210\212\212\377[[`\244\210" "\211\2132\210\211\213\14aaeGLMO\376\202=>=\377\16BCB\377~\200~\377\204" "\205\203\377\207\211\207\377\215\216\214\377\252\252\251\377\252\253" "\252\377\262\262\261\377\266\266\266\377\263\264\263\377\256\256\256" "\377\224\226\224\377pry\371aaeG\203\377\377\377\0\20^^`\310EEE\377\77" "@\77\377>>>\377tut\377\213\214\213\377\213\215\213\377\217\220\217\377" "\253\253\252\377\274\274\273\377\302\301\302\377\275\275\274\377\254" "\254\254\377\237\240\237\377\220\221\222\377__c\265\204\377\377\377\0" "\20ppp\20ZZ^\357@@@\377>>>\377iji\377\227\230\226\377\217\220\216\377" "\223\224\223\377\264\264\263\377\300\277\277\377\305\304\305\377\271" "\270\270\377\236\237\236\377\236\237\235\377ttx\350ppp\20\205\377\377" "\377\0\16[[_F\\]`\360GHG\377HIH\377\226\227\225\377\225\225\224\377\236" "\236\236\377\276\275\275\377\275\274\274\377\264\263\264\377\252\252" "\251\377\235\236\240\377oou\344[[_F\207\377\377\377\0\14ppp\20bbd\305" "RRT\375^^^\377\265\265\265\377\272\272\271\377\276\275\275\377\277\277" "\276\377\272\272\271\377\212\212\221\372aad\265ppp\20\212\377\377\377" "\0\10aaeGWW[\237llq\326\177\177\204\350zz~\343jjp\306ZZ_\236aaeG\214" "\377\377\377\0\10\210\211\213\5\210\211\213\31\210\211\2137\210\211\213" "I\210\211\213f\210\211\213a\210\211\213\37\210\211\213\3\206\377\377" "\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_4) #endif #ifdef __GNUC__ static const guint8 moon_phase_4[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_4[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1302) */ "\0\0\5." /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10a" "aeGikm\256\203\203\205\333\221\223\224\360\215\216\221\360}~\201\325" "ffk\244aaeG\212\377\377\377\0\14ppp\20stv\314\234\236\237\375\264\266" "\264\377\260\262\260\377\252\254\252\377\251\254\251\377\257\261\257" "\377\262\264\263\377\225\230\231\375qqt\302ppp\20\207\377\377\377\0\16" "[[_F}\177\202\360\244\246\244\377\224\227\224\377\225\230\225\377\227" "\231\227\377\230\233\230\377\230\232\230\377\246\251\246\377\270\272" "\270\377\234\237\234\377\237\241\240\377yz\177\351[[_F\205\377\377\377" "\0\7ppp\20vwy\355\217\221\217\377\206\211\206\377\205\210\205\377\212" "\214\212\377\212\215\212\377\202\213\215\213\377\7\212\214\211\377\217" "\222\217\377\215\220\215\377\230\232\230\377\223\226\223\377suv\356p" "pp\20\204\377\377\377\0\6ccg\272\203\207\205\377vyv\377w{w\377y|y\377" "{~{\377\202|\177|\377\10}\177|\377|\177|\377{~{\377\226\231\226\377\210" "\213\210\377}\201}\377\203\207\204\377aad\302\202\377\377\377\0\177\210" "\211\213\3aaeGehl\373]`]\377\\_\\\377_b_\377beb\377gjg\377knk\377nqn" "\377oro\377orn\377mom\377hlh\377aea\377]a\\\377Z^Z\377gkk\374aaeG\377" "\377\377\0\210\211\213%WY[\253oro\377^b^\377ehe\377bfb\377ehe\377gjg" "\377iki\377ili\377jli\377ili\377nqn\377lpl\377ilh\377dhd\377_c_\377q" "tq\377WY\\\245\210\211\213\20\210\211\213a]`a\327knk\377\207\210\205" "\377xzw\377oqo\377jlj\377lol\377npn\377oqn\377rur\377z|y\377y{x\377u" "xu\377qtq\377lol\377fjf\377psp\377^_b\324\210\211\213Z\210\211\213fh" "jl\356gjg\377\207\207\206\377{}z\377ruq\377oqn\377qsq\377svs\377tvt\377" "|~{\377y{y\377vxu\377{~{\377\207\211\206\377wzw\377nqn\377lol\377ikm" "\352\210\211\213s\210\211\213Ojkm\354\203\205\203\377\220\222\217\377" "|~{\377pro\377tvs\377vyv\377xzx\377z{y\377z|z\377\177\201~\377\204\206" "\203\377\231\232\230\377\246\246\245\377\217\220\216\377uxt\377rtr\377" "lmp\352\210\211\213h\210\211\213Yeeg\327|\177|\377\200\203\177\377\177" "\200}\377}\177|\377xzx\377{}z\377}\177}\377\177\201\177\377\200\201\177" "\377\205\206\204\377\224\225\223\377\240\242\240\377\252\253\252\377" "\237\241\236\377~\201~\377\201\203\201\377ceh\321\210\211\213I\210\211" "\2130ZZ_\243\200\204\201\377npn\377xzx\377\200\201\177\377|~|\377\20" "\200\201\177\377\203\204\202\377\207\210\206\377\236\236\235\377\237" "\240\237\377\235\236\234\377\254\255\253\377\257\260\257\377\252\253" "\252\377\222\224\221\377\210\212\212\377[[`\244\210\211\2132\210\211" "\213\14aaeGuv{\373\202z|y\377\16|~|\377\177\201\177\377\204\205\203\377" "\207\211\207\377\215\216\214\377\252\252\251\377\252\253\252\377\262" "\262\261\377\266\266\266\377\263\264\263\377\256\256\256\377\224\226" "\224\377pry\371aaeG\203\377\377\377\0\20eeh\301\223\224\223\377\210\213" "\210\377\201\203\201\377\203\205\203\377\213\214\213\377\213\215\213" "\377\217\220\217\377\253\253\252\377\274\274\273\377\302\301\302\377" "\275\275\274\377\254\254\254\377\237\240\237\377\220\221\222\377__c\265" "\204\377\377\377\0\20ppp\20opu\347\220\222\220\377~\200~\377\225\226" "\225\377\227\230\226\377\217\220\216\377\223\224\223\377\264\264\263" "\377\300\277\277\377\305\304\305\377\271\270\270\377\236\237\236\377" "\236\237\235\377ttx\350ppp\20\205\377\377\377\0\16[[_Ftuy\350\235\236" "\235\377\233\234\232\377\240\241\237\377\225\225\224\377\236\236\236" "\377\276\275\275\377\275\274\274\377\264\263\264\377\252\252\251\377" "\235\236\240\377oou\344[[_F\207\377\377\377\0\14ppp\20iil\276\202\202" "\211\371\246\246\250\377\270\270\270\377\272\272\271\377\276\275\275" "\377\277\277\276\377\272\272\271\377\212\212\221\372aad\265ppp\20\212" "\377\377\377\0\10aaeGYY]\235ww|\320\204\204\211\347zz~\343jjp\306ZZ_" "\236aaeG\214\377\377\377\0\10\210\211\213\5\210\211\213\31\210\211\213" "7\210\211\213I\210\211\213f\210\211\213a\210\211\213\37\210\211\213\3" "\206\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_5) #endif #ifdef __GNUC__ static const guint8 moon_phase_5[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_5[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1297) */ "\0\0\5)" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10a" "aeGikm\256\203\203\205\333\221\223\224\360\213\214\216\360vwz\333ffk" "\245aaeG\212\377\377\377\0\14ppp\20stv\314\234\236\237\375\264\266\264" "\377\260\262\260\377\252\254\252\377\251\254\251\377\257\260\257\377" "\244\245\244\377\205\205\206\376kkm\310ppp\20\207\377\377\377\0\16[[" "_F}\177\202\360\244\246\244\377\224\227\224\377\225\230\225\377\227\231" "\227\377\230\233\230\377\230\232\230\377\246\251\246\377\261\262\261" "\377\213\214\213\377\214\214\214\377klo\361[[_F\205\377\377\377\0\7p" "pp\20vwy\355\217\221\217\377\206\211\206\377\205\210\205\377\212\214" "\212\377\212\215\212\377\202\213\215\213\377\7\212\214\211\377\217\222" "\217\377\177\201\177\377vwv\377uvu\377fgh\364ppp\20\204\377\377\377\0" "\6ccg\272\203\207\205\377vyv\377w{w\377y|y\377{~{\377\202|\177|\377\10" "}\177|\377|\177|\377{~{\377\207\211\207\377```\377^^^\377aaa\377\\\\" "_\310\202\377\377\377\0t\210\211\213\3aaeGehl\373]`]\377\\_\\\377_b_" "\377beb\377gjg\377knk\377nqn\377oro\377orn\377mom\377fjf\377===\377:" ";:\377;;;\377HJJ\376aaeG\377\377\377\0\210\211\213%WY[\253oro\377^b^" "\377ehe\377bfb\377ehe\377gjg\377iki\377ili\377jli\377ili\377nqn\377l" "pl\377CDC\377:;:\377:::\377=>=\377VX[\246\210\211\213\20\210\211\213" "a]`a\327knk\377\207\210\205\377xzw\377oqo\377jlj\377lol\377npn\377oq" "n\377rur\377z|y\377y{x\377uxu\377JKJ\377;<;\377;;;\377<<<\377VWY\333" "\210\211\213Z\210\211\213fhjl\356gjg\377\207\207\206\377{}z\377ruq\377" "oqn\377qsq\377svs\377tvt\377|~{\377y{y\377vxu\377{~{\377YZX\377===\377" "<<<\377;<;\377WYZ\361\210\211\213s\210\211\213Ojkm\354\203\205\203\377" "\220\222\217\377|~{\377pro\377tvs\377vyv\377xzx\377z{y\377z|z\377\177" "\201~\377\204\206\203\377\231\232\230\377hhg\377@@@\377==<\377<<<\377" "ZZ\\\361\210\211\213h\210\211\213Yeeg\327|\177|\377\200\203\177\377\177" "\200}\377}\177|\377xzx\377{}z\377}\177}\377\177\201\177\377\200\201\177" "\377\205\206\204\377\224\225\223\377\240\242\240\377```\377BBB\377\202" ">>>\377\31[]`\330\210\211\213I\210\211\2130ZZ_\243\200\204\201\377np" "n\377xzx\377\200\201\177\377|~|\377\200\201\177\377\203\204\202\377\207" "\210\206\377\236\236\235\377\237\240\237\377\235\236\234\377\254\255" "\253\377YYY\377DDD\377@A@\377BCC\377[[`\245\210\211\2132\210\211\213" "\14aaeGuv{\373\202z|y\377\16|~|\377\177\201\177\377\204\205\203\377\207" "\211\207\377\215\216\214\377\252\252\251\377\252\253\252\377\262\262" "\261\377\265\265\265\377KKK\377DDD\377AAA\377NOR\374aaeG\203\377\377" "\377\0\20eeh\301\223\224\223\377\210\213\210\377\201\203\201\377\203" "\205\203\377\213\214\213\377\213\215\213\377\217\220\217\377\253\253" "\252\377\274\274\273\377\302\301\302\377\237\237\236\377DDD\377BBB\377" "FGG\377[[_\272\204\377\377\377\0\14ppp\20opu\347\220\222\220\377~\200" "~\377\225\226\225\377\227\230\226\377\217\220\216\377\223\224\223\377" "\264\264\263\377\300\277\277\377\305\304\305\377zzz\377\202BBB\377\2" "``c\357ppp\20\205\377\377\377\0\16[[_Ftuy\350\235\236\235\377\233\234" "\232\377\240\241\237\377\225\225\224\377\236\236\236\377\276\275\275" "\377\275\274\274\377\246\245\246\377JJI\377IIJ\377\\\\a\354[[_F\207\377" "\377\377\0\14ppp\20iil\276\202\202\211\371\246\246\250\377\270\270\270" "\377\272\272\271\377\276\275\275\377\273\273\272\377ddd\377YY\\\375]" "]`\272ppp\20\212\377\377\377\0\10aaeGYY]\235ww|\320\204\204\211\347v" "vz\344bbg\315ZZ_\237aaeG\214\377\377\377\0\10\210\211\213\5\210\211\213" "\31\210\211\2137\210\211\213I\210\211\213f\210\211\213a\210\211\213\37" "\210\211\213\3\206\377\377\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_6) #endif #ifdef __GNUC__ static const guint8 moon_phase_6[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_6[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1274) */ "\0\0\5\22" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\377\377\377\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211" "\213I\210\211\213f\210\211\213a\210\211\213\37\215\377\377\377\0\10a" "aeGikm\256\203\203\205\333\221\223\224\360kln\365lmo\335ddi\247aaeG\212" "\377\377\377\0\14ppp\20stv\314\234\236\237\375\264\266\264\377\260\262" "\260\377\252\254\252\377GGG\377DED\377FFF\377XYZ\376iik\311ppp\20\207" "\377\377\377\0\16[[_F}\177\202\360\244\246\244\377\224\227\224\377\225" "\230\225\377\227\231\227\377\230\233\230\377DDD\377CDC\377FFF\377BBB" "\377GGG\377`ad\360[[_F\205\377\377\377\0\12ppp\20vwy\355\217\221\217" "\377\206\211\206\377\205\210\205\377\212\214\212\377\212\215\212\377" "\213\215\213\377BBB\377\77@\77\377\202@@@\377\4ABA\377AAA\377]^_\364" "ppp\20\204\377\377\377\0\6ccg\272\203\207\205\377vyv\377w{w\377y|y\377" "{~{\377\202|\177|\377\10@@\77\377>>>\377=>=\377AAA\377\77@\77\377>>>" "\377CCC\377[[^\307\202\377\377\377\0\13\210\211\213\3aaeGehl\373]`]\377" "\\_\\\377_b_\377beb\377gjg\377knk\377nqn\377=>=\377\202<<<\377\2;;;\377" ":::\377\2029:9\377#IKK\376aaeG\377\377\377\0\210\211\213%WY[\253oro\377" "^b^\377ehe\377bfb\377ehe\377gjg\377iki\377ili\377==<\377;;;\377<<<\377" ";<;\377;;;\377:;:\377:::\377>>>\377VX[\246\210\211\213\20\210\211\213" "a]`a\327knk\377\207\210\205\377xzw\377oqo\377jlj\377lol\377npn\377oq" "n\377>>>\377=>=\377\202===\377\21<<<\377;<;\377;;;\377<<<\377UVY\333" "\210\211\213Z\210\211\213fhjl\356gjg\377\207\207\206\377{}z\377ruq\377" "oqn\377qsq\377svs\377tvt\377\77@\77\377\202===\377+=>=\377\77\77\77\377" "===\377<<<\377;<;\377VWX\361\210\211\213s\210\211\213Ojkm\354\203\205" "\203\377\220\222\217\377|~{\377pro\377tvs\377vyv\377xzx\377z{y\377\77" "\77\77\377>>>\377\77\77>\377ABA\377CCC\377@@@\377==<\377<<<\377WWY\361" "\210\211\213h\210\211\213Yeeg\327|\177|\377\200\203\177\377\177\200}" "\377}\177|\377xzx\377{}z\377}\177}\377\177\201\177\377@@@\377\77\77\77" "\377AAA\377BCB\377DDD\377BBB\377\202>>>\377\15Y[]\331\210\211\213I\210" "\211\2130ZZ_\243\200\204\201\377npn\377xzx\377\200\201\177\377|~|\377" "\200\201\177\377\203\204\202\377\207\210\206\377EEE\377\202BBB\377\203" "DDD\377\7@A@\377ABB\377ZZ_\245\210\211\2132\210\211\213\14aaeGuv{\373" "\202z|y\377\7|~|\377\177\201\177\377\204\205\203\377\207\211\207\377" "\215\216\214\377GGG\377DDD\377\203EEE\377\4DDD\377AAA\377KLO\375aaeG" "\203\377\377\377\0\20eeh\301\223\224\223\377\210\213\210\377\201\203" "\201\377\203\205\203\377\213\214\213\377\213\215\213\377\217\220\217" "\377GGG\377FFF\377GGG\377FFF\377DDD\377BBB\377EEE\377ZZ^\274\204\377" "\377\377\0\14ppp\20opu\347\220\222\220\377~\200~\377\225\226\225\377" "\227\230\226\377\217\220\216\377\223\224\223\377HHH\377GFF\377GGG\377" "FFF\377\202BBB\377\2^^a\357ppp\20\205\377\377\377\0\16[[_Ftuy\350\235" "\236\235\377\233\234\232\377\240\241\237\377\225\225\224\377\236\236" "\236\377JJJ\377FFF\377EEE\377DDD\377HHH\377[[_\355[[_F\207\377\377\377" "\0\14ppp\20iil\276\202\202\211\371\246\246\250\377\270\270\270\377\272" "\272\271\377JJJ\377FFF\377HHH\377VVY\375\\\\_\274ppp\20\212\377\377\377" "\0\10aaeGYY]\235ww|\320\204\204\211\347``c\354^^c\320XX]\240aaeG\214" "\377\377\377\0\10\210\211\213\5\210\211\213\31\210\211\2137\210\211\213" "I\210\211\213f\210\211\213a\210\211\213\37\210\211\213\3\206\377\377" "\377\0"}; /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (moon_phase_7) #endif #ifdef __GNUC__ static const guint8 moon_phase_7[] __attribute__ ((__aligned__ (4))) = #else static const guint8 moon_phase_7[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (1196) */ "\0\0\4\304" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (80) */ "\0\0\0P" /* width (20) */ "\0\0\0\24" /* height (20) */ "\0\0\0\24" /* pixel_data: */ "\206\0\0\0\0\7\210\211\213\1\210\211\213\20\210\211\2132\210\211\213" "I\210\211\213f\210\211\213a\210\211\213\37\215\0\0\0\0\10aaeGikm\256" "\203\203\205\333\206\210\210\364\202\204\205\364vwy\333eej\246aaeG\212" "\0\0\0\0\14ppp\20stv\314\234\236\237\375\262\264\262\377\246\246\246" "\377\242\242\242\377\241\241\241\377\241\242\241\377\241\241\241\377" "\206\207\207\376mmo\306ppp\20\207\0\0\0\0\5[[_F}\177\202\360\244\246" "\244\377\224\227\224\377\215\216\215\377\203\213\214\213\377\6\215\215" "\215\377\220\220\220\377\213\213\213\377\214\214\214\377mnq\360[[_F\205" "\0\0\0\0\5ppp\20vwy\355\217\221\217\377\206\211\206\377|~|\377\204uu" "u\377\1uut\377\202uuu\377\4vwv\377uvu\377gij\363ppp\20\204\0\0\0\0\6" "ccg\272\203\207\205\377vyv\377wzw\377```\377^_^\377\204___\377\6^_^\377" "bbb\377```\377^^^\377abb\377\\\\_\307\202\0\0\0\0\12\210\211\213\3aa" "eGehl\373]`]\377\\_\\\377SUS\377===\377@@@\377DED\377GHG\377\202HIH\377" "\17EFE\377@A@\377<<<\377:;:\377;;;\377JKK\376aaeG\0\0\0\0\210\211\213" "%WY[\253oro\377^b^\377ehe\377IKI\377:;:\377\205;;;\377\20<<<\377;<;\377" ";;;\377:;:\377:::\377>>>\377WY\\\246\210\211\213\20\210\211\213a]`a\327" "knk\377\207\210\205\377xzw\377IJI\377;;;\377;<;\377\202<<<\377\2<=<\377" "=>=\377\202===\377\14<<<\377;<;\377;;;\377<<<\377WWZ\333\210\211\213" "Z\210\211\213fhjl\356gjg\377\207\207\206\377{}z\377EFD\377\202<<<\377" "\202<=<\377\1>>=\377\202===\377\16=>=\377\77\77\77\377===\377<<<\377" ";<;\377WXY\361\210\211\213s\210\211\213Ojkm\354\203\205\203\377\220\222" "\217\377|~{\377EFE\377<=<\377\203===\377\22=>=\377>>>\377\77\77>\377" "ABA\377CCC\377@@@\377==<\377<<<\377YY[\361\210\211\213h\210\211\213Y" "eeg\327|\177|\377\200\203\177\377\177\200}\377OPO\377===\377=>=\377\203" ">>>\377\5\77\77\77\377AAA\377BCB\377DDD\377BBB\377\202>>>\377\10[\\_" "\327\210\211\213I\210\211\2130ZZ_\243\200\204\201\377npn\377xzx\377X" "XW\377\202>>>\377\2>\77>\377\77\77\77\377\203BBB\377\203DDD\377\7@A@" "\377BCC\377ZZ_\245\210\211\2132\210\211\213\14aaeGuv{\373\202z|y\377" "\5hih\377>>>\377\77\77>\377\77\77\77\377@@@\377\202DDD\377\203EEE\377" "\4DDD\377AAA\377NOR\374aaeG\203\0\0\0\0\5eeh\301\223\224\223\377\210" "\213\210\377\177\201\177\377CCC\377\203@@@\377\10DDD\377FFF\377GGG\377" "FFF\377DDD\377BBB\377GGG\377\\\\_\272\204\0\0\0\0\14ppp\20opu\347\220" "\222\220\377~\200~\377klk\377AAA\377@@@\377AAA\377EEE\377GFF\377GGG\377" "FFF\377\202BBB\377\2aad\356ppp\20\205\0\0\0\0\7[[_Ftuy\350\235\236\235" "\377\232\233\231\377WWW\377AAA\377BBB\377\202FFF\377\5EEE\377DDD\377" "JJJ\377\\\\`\354[[_F\207\0\0\0\0\5ppp\20iil\276\202\202\211\371\234\234" "\236\377eee\377\203FFF\377\4JJJ\377ZZ]\375]]`\272ppp\20\212\0\0\0\0\10" "aaeGYY]\235ww|\320kkn\356ccf\353``e\316ZZ_\237aaeG\214\0\0\0\0\10\210" "\211\213\5\210\211\213\31\210\211\2137\210\211\213I\210\211\213f\210" "\211\213a\210\211\213\37\210\211\213\3\206\0\0\0\0"}; osmo-0.2.14/src/contacts_items.h000664 001750 001750 00000002236 12561325524 016514 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_ITEMS_H #define _CONTACTS_ITEMS_H #include "gui.h" void read_contacts_entries (GUI *appGUI); void write_contacts_entries (GUI *appGUI); void contacts_remove_dialog_show (GUI *appGUI); void contacts_add_edit_dialog_show (gboolean contacts_edit_mode, GUI *appGUI); #endif /* _CONTACTS_ITEMS_H */ osmo-0.2.14/src/calendar_print.c000664 001750 001750 00000100514 12561325524 016453 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_notes.h" #include "calendar_widget.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "tasks_utils.h" #include "utils.h" #include "utils_gui.h" #ifdef PRINTING_SUPPORT /*------------------------------------------------------------------------------*/ void window_cal_print_opt_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_widget_destroy (appGUI->cal->window_print_options); } /*------------------------------------------------------------------------------*/ void window_button_cal_print_opt_close_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; window_cal_print_opt_close_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ gint cal_print_opt_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (event->keyval == GDK_Escape) { window_cal_print_opt_close_cb (widget, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void calendar_begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { GUI *appGUI = (GUI *) user_data; GtkPageSetup *setup; if (config.cal_print_page_orientation == LANDSCAPE) { setup = gtk_page_setup_new (); gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_LANDSCAPE); gtk_print_operation_set_default_page_setup (operation, setup); g_object_unref (setup); } appGUI->print_lines_per_page = 1; appGUI->print_nlines = 1; appGUI->print_npages = 1; gtk_print_operation_set_n_pages (operation, appGUI->print_npages); } /*------------------------------------------------------------------------------*/ void cal_print_get_events (gchar *buffer, guint32 julian, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; GtkTreeModel *model; GSList *lnode; struct note *a; gint i; gchar *wbuf1, *wbuf2, *stripped; gchar buf1[BUFFER_SIZE], buf2[BUFFER_SIZE]; GDate *date, *sdate; gint age, syear; guint32 tsk_julian; gint time; gint max_event_length; GRegex *reg; buffer[0] = '\0'; max_event_length = (config.cal_print_event_length + 2 > BUFFER_SIZE) ? BUFFER_SIZE : config.cal_print_event_length + 2; #ifdef TASKS_ENABLED /* tasks */ if (config.cal_print_tasks) { model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_if_fail (model != NULL); path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &tsk_julian, TA_COLUMN_CATEGORY, &wbuf1, -1); if (tsk_julian == julian && tsk_get_category_state (wbuf1, STATE_CALENDAR, appGUI) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_TIME, &time, TA_COLUMN_SUMMARY, &wbuf2, -1); if (time >= 0) { g_snprintf (buf1, max_event_length, "\n[%02d:%02d] %s", time / 3600, time / 60 % 60, wbuf2); } else { g_snprintf (buf1, max_event_length, "\n%s", wbuf2); } g_strlcat (buffer, buf1, BUFFER_SIZE); g_free (wbuf2); } g_free (wbuf1); gtk_tree_path_next (path); } gtk_tree_path_free (path); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* birthdays */ if (config.cal_print_birthdays) { model = GTK_TREE_MODEL (appGUI->cnt->contacts_list_store); g_return_if_fail (model != NULL); date = g_date_new (); g_return_if_fail (date != NULL); sdate = g_date_new_julian (julian); g_return_if_fail (sdate != NULL); syear = g_date_get_year (sdate); path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, COLUMN_BIRTH_DAY_DATE, &tsk_julian, -1); if (g_date_valid_julian (tsk_julian)) { g_date_set_julian (date, tsk_julian); age = syear - g_date_get_year (date); if (age >= 0) { if (g_date_valid_dmy (g_date_get_day (date), g_date_get_month (date), syear) == FALSE) { g_date_subtract_days (date, 1); } g_date_set_year (date, syear); if (g_date_compare (date, sdate) == 0) { gtk_tree_model_get (model, &iter, COLUMN_FIRST_NAME, &wbuf1, COLUMN_LAST_NAME, &wbuf2, -1); utl_name_strcat (wbuf1, wbuf2, buf2); g_snprintf (buf1, max_event_length, "\n%s (%d)", buf2, age); g_strlcat (buffer, buf1, BUFFER_SIZE); } } } gtk_tree_path_next (path); } gtk_tree_path_free (path); g_date_free (sdate); g_date_free (date); } /* name days */ if (config.cal_print_namedays) { model = GTK_TREE_MODEL (appGUI->cnt->contacts_list_store); g_return_if_fail (model != NULL); date = NULL; date = g_date_new (); g_return_if_fail (date != NULL); sdate = NULL; sdate = g_date_new_julian (julian); g_return_if_fail (sdate != NULL); syear = g_date_get_year (sdate); path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, COLUMN_NAME_DAY_DATE, &tsk_julian, -1); if (g_date_valid_julian (tsk_julian)) { g_date_set_julian (date, tsk_julian); if (g_date_valid_dmy (g_date_get_day (date), g_date_get_month (date), syear) == TRUE) { g_date_set_year (date, syear); if (g_date_compare (date, sdate) == 0) { gtk_tree_model_get (model, &iter, COLUMN_FIRST_NAME, &wbuf1, COLUMN_LAST_NAME, &wbuf2, -1); utl_name_strcat (wbuf1, wbuf2, buf1); g_snprintf (buf2, max_event_length, "\n%s (%s)", buf1, _("Name day")); g_strlcat (buffer, buf2, BUFFER_SIZE); } } } gtk_tree_path_next (path); } gtk_tree_path_free (path); g_date_free (sdate); g_date_free (date); } #endif /* CONTACTS_ENABLED */ /* day note */ if (config.cal_print_day_notes) { wbuf1 = NULL; if (appGUI->cal->notes_list != NULL) { reg = g_regex_new ("\n", 0, 0, NULL); for (i = 0, lnode = appGUI->cal->notes_list; lnode != NULL; lnode = lnode->next, i++) { a = g_slist_nth_data (appGUI->cal->notes_list, i); stripped = utl_gui_text_strip_tags (a->note); if (a->date == julian) { wbuf1 = g_regex_replace_literal (reg, stripped, -1, 0, " ", 0, NULL); g_free (stripped); break; } g_free (stripped); } g_regex_unref (reg); } if (wbuf1 != NULL) { g_strstrip (wbuf1); g_snprintf (buf1, max_event_length, "\n%s", wbuf1); g_strlcat (buffer, buf1, BUFFER_SIZE); g_free (wbuf1); } } #ifdef HAVE_LIBICAL /* ical */ if (config.cal_print_ical) { } #endif /* HAVE_LIBICAL */ g_strstrip (buffer); } /*------------------------------------------------------------------------------*/ void calendar_draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint npage, gpointer user_data) { PangoLayout *layout; PangoFontDescription *month_name_font, *day_name_font, *day_num_font, *event_font; cairo_t *cr; GDate *date; gdouble page_width, page_height, day_width, day_height; gint text_width, text_height, header_height, event_height, mnf_height, dnf_height, duf_height; gint day, month, i, j; guint32 julian; gboolean monday, actual; gchar buffer[BUFFER_SIZE]; gint padding = config.cal_print_padding; GUI *appGUI = (GUI *) user_data; date = g_date_new_julian (g_date_get_julian (appGUI->cal->date)); g_return_if_fail (date != NULL); cr = gtk_print_context_get_cairo_context (context); layout = gtk_print_context_create_pango_layout (context); month_name_font = pango_font_description_from_string (config.cal_print_month_name_font); day_name_font = pango_font_description_from_string (config.cal_print_day_name_font); day_num_font = pango_font_description_from_string (config.cal_print_day_num_font); event_font = pango_font_description_from_string (config.cal_print_event_font); pango_layout_set_text (layout, "Aj", -1); pango_layout_set_font_description (layout, month_name_font); pango_layout_get_pixel_size (layout, NULL, &mnf_height); mnf_height *= 1.2; pango_layout_set_font_description (layout, day_name_font); pango_layout_get_pixel_size (layout, NULL, &dnf_height); dnf_height *= 1.2; pango_layout_set_font_description (layout, day_num_font); pango_layout_get_pixel_size (layout, NULL, &duf_height); page_width = gtk_print_context_get_width (context); day_width = page_width / 7; page_height = gtk_print_context_get_height (context); header_height = mnf_height + dnf_height; day_height = (page_height - header_height) / 6; event_height = day_height - duf_height - padding * 3; cairo_set_line_width (cr, 1); monday = (config.display_options & GUI_CALENDAR_WEEK_START_MONDAY) ? TRUE : FALSE; /* Month and year */ pango_layout_set_font_description (layout, month_name_font); g_date_strftime (buffer, BUFFER_SIZE, "%B %Y", date); pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, NULL); cairo_move_to (cr, (page_width - text_width) / 2, 0); pango_cairo_show_layout (cr, layout); /* Day names */ pango_layout_set_font_description (layout, day_name_font); for (i = 0; i < 7; i++) { g_snprintf (buffer, BUFFER_SIZE, "%s", utl_get_day_name (i + 7 + monday, FALSE)); pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, NULL); cairo_move_to (cr, day_width * i + (day_width - text_width) / 2, mnf_height); pango_cairo_show_layout (cr, layout); } /* Day */ g_date_set_day (date, 1); day = g_date_get_weekday (date); month = g_date_get_month (date); day = monday ? day - 1 : day % 7; if (day > 0) g_date_subtract_days (date, day); day = g_date_get_day (date); julian = g_date_get_julian (date); pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_width (layout, (day_width - padding * 2) * PANGO_SCALE); #ifdef HAVE_PANGO_1_20 pango_layout_set_height (layout, event_height * PANGO_SCALE); #endif /* HAVE_PANGO_1_20 */ pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); pango_layout_set_indent (layout, -4 * PANGO_SCALE); for (i = 0; i < 6; i++) { for (j = 0; j < 7; j++) { actual = (month == g_date_get_month (date)) ? TRUE : FALSE; day = g_date_get_day (date); cairo_rectangle (cr, day_width * j, header_height + day_height * i, day_width, day_height); if (actual) { cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); } else { cairo_set_source_rgb (cr, 0.8, 0.8, 0.8); } cairo_fill_preserve (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_stroke (cr); pango_layout_set_font_description (layout, day_num_font); if (actual) { cairo_move_to (cr, day_width * j + padding, header_height + day_height * i + padding); if ((j == 0 && !monday) || (j == 5 && monday) || j == 6) { g_snprintf (buffer, BUFFER_SIZE, "%d", day); } else { g_snprintf (buffer, BUFFER_SIZE, "%d", day); } pango_layout_set_markup (layout, buffer, -1); pango_cairo_show_layout (cr, layout); cal_print_get_events (buffer, julian, appGUI); pango_layout_set_markup (layout, "", -1); pango_layout_set_text (layout, buffer, -1); pango_layout_set_font_description (layout, event_font); pango_layout_get_pixel_size (layout, NULL, &text_height); cairo_move_to (cr, day_width * j + padding, header_height + day_height * (i + 1) - text_height - padding); pango_cairo_show_layout (cr, layout); } else { cairo_move_to (cr, day_width * j + padding, header_height + day_height * i + padding); g_snprintf (buffer, BUFFER_SIZE, "%d", day); pango_layout_set_markup (layout, buffer, -1); pango_cairo_show_layout (cr, layout); } g_date_add_days (date, 1); julian++; } } g_date_free (date); pango_font_description_free (month_name_font); pango_font_description_free (day_name_font); pango_font_description_free (day_num_font); pango_font_description_free (event_font); g_object_unref (layout); } /*------------------------------------------------------------------------------*/ void calendar_print_start_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; GtkPrintOperation *print; GtkPrintOperationResult result; GError *error = NULL; gchar buffer[BUFFER_SIZE]; g_strlcpy (config.cal_print_month_name_font, gtk_entry_get_text (GTK_ENTRY (appGUI->cal->print_month_name_font_entry)), MAXFONTNAME); g_strlcpy (config.cal_print_day_name_font, gtk_entry_get_text (GTK_ENTRY (appGUI->cal->print_day_name_font_entry)), MAXFONTNAME); g_strlcpy (config.cal_print_day_num_font, gtk_entry_get_text (GTK_ENTRY (appGUI->cal->print_day_num_font_entry)), MAXFONTNAME); g_strlcpy (config.cal_print_event_font, gtk_entry_get_text (GTK_ENTRY (appGUI->cal->print_event_font_entry)), MAXFONTNAME); config.cal_print_event_length = gtk_spin_button_get_value (GTK_SPIN_BUTTON (appGUI->cal->print_event_length_spinbutton)); config.cal_print_padding = gtk_spin_button_get_value (GTK_SPIN_BUTTON (appGUI->cal->print_padding_spinbutton)); config.cal_print_page_orientation = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_portrait_radiobutton)) ? PORTRAIT : LANDSCAPE; config.cal_print_tasks = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_tasks_checkbutton)); config.cal_print_birthdays = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_birthdays_checkbutton)); config.cal_print_namedays = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_namedays_checkbutton)); config.cal_print_day_notes = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_day_notes_checkbutton)); /* config.cal_print_ical = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_ical_checkbutton)); */ gtk_widget_destroy (appGUI->cal->window_print_options); print = gtk_print_operation_new (); appGUI->print_lines_per_page = 0; appGUI->print_nlines = 0; appGUI->print_npages = 0; g_signal_connect (print, "begin_print", G_CALLBACK (calendar_begin_print), appGUI); g_signal_connect (print, "draw_page", G_CALLBACK (calendar_draw_page), appGUI); result = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW (appGUI->main_window), &error); if (result == GTK_PRINT_OPERATION_RESULT_ERROR) { g_snprintf (buffer, BUFFER_SIZE, "%s: %s", _("Error printing"), error->message); utl_gui_create_dialog (GTK_MESSAGE_ERROR, buffer, GTK_WINDOW (appGUI->main_window)); g_error_free (error); } g_object_unref (print); } /*------------------------------------------------------------------------------*/ void calendar_create_print_window (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *frame1; GtkWidget *alignment; GtkWidget *table_fonts; GtkWidget *month_name_font_button; GtkWidget *day_name_font_button; GtkWidget *day_number_font_button; GtkWidget *event_font_button; GtkWidget *label; GtkWidget *hbox1; GtkWidget *frame2; GtkWidget *vbox2; GtkWidget *vseparator1; GtkWidget *frame3; GtkWidget *table5; GtkObject *spinbutton_adj; GtkWidget *hseparator1; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *ok_button; GtkWidget *landscape_radiobutton; GSList *radiobutton_group = NULL; gchar buffer[BUFFER_SIZE]; static FONT_SEL sel1, sel2, sel3, sel4; sel1.appGUI = sel2.appGUI = sel3.appGUI = sel4.appGUI = appGUI; sel1.font = sel2.font = sel3.font = sel4.font = NULL; sel1.widget = sel2.widget = sel3.widget = sel4.widget = NULL; sel1.save = sel2.save = sel3.save = sel4.save = FALSE; appGUI->cal->window_print_options = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->window_print_options), _("Printing properties")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->window_print_options), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->window_print_options), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->window_print_options), "delete_event", G_CALLBACK (window_cal_print_opt_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->window_print_options), "key_press_event", G_CALLBACK (cal_print_opt_key_press_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->cal->window_print_options), GTK_WINDOW (appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->window_print_options), 4); /*---------------------------------------------------------------------------------*/ vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->window_print_options), vbox1); frame1 = gtk_frame_new (NULL); gtk_widget_show (frame1); gtk_box_pack_start (GTK_BOX (vbox1), frame1, FALSE, FALSE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame1), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); table_fonts = gtk_table_new (4, 3, FALSE); gtk_widget_show (table_fonts); gtk_container_add (GTK_CONTAINER (alignment), table_fonts); gtk_table_set_row_spacings (GTK_TABLE (table_fonts), 4); gtk_table_set_col_spacings (GTK_TABLE (table_fonts), 4); /* table_fonts: row 1 */ g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Month name")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table_fonts), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->print_month_name_font_entry = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_month_name_font_entry, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_month_name_font_entry); gtk_table_attach (GTK_TABLE (table_fonts), appGUI->cal->print_month_name_font_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->print_month_name_font_entry), config.cal_print_month_name_font); sel1.config = config.cal_print_month_name_font; sel1.entry = appGUI->cal->print_month_name_font_entry; month_name_font_button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); GTK_WIDGET_UNSET_FLAGS (month_name_font_button, GTK_CAN_FOCUS); gtk_widget_show (month_name_font_button); g_signal_connect (G_OBJECT (month_name_font_button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel1); gtk_table_attach (GTK_TABLE (table_fonts), month_name_font_button, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* table_fonts: row 2 */ g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Day name")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table_fonts), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->print_day_name_font_entry = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_day_name_font_entry, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_day_name_font_entry); gtk_table_attach (GTK_TABLE (table_fonts), appGUI->cal->print_day_name_font_entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->print_day_name_font_entry), config.cal_print_day_name_font); sel2.config = config.cal_print_day_name_font; sel2.entry = appGUI->cal->print_day_name_font_entry; day_name_font_button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); GTK_WIDGET_UNSET_FLAGS (day_name_font_button, GTK_CAN_FOCUS); gtk_widget_show (day_name_font_button); g_signal_connect (G_OBJECT (day_name_font_button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel2); gtk_table_attach (GTK_TABLE (table_fonts), day_name_font_button, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* table_fonts: row 3 */ g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Day number")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table_fonts), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->print_day_num_font_entry = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_day_num_font_entry, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_day_num_font_entry); gtk_table_attach (GTK_TABLE (table_fonts), appGUI->cal->print_day_num_font_entry, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->print_day_num_font_entry), config.cal_print_day_num_font); sel3.config = config.cal_print_day_num_font; sel3.entry = appGUI->cal->print_day_num_font_entry; day_number_font_button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); GTK_WIDGET_UNSET_FLAGS (day_number_font_button, GTK_CAN_FOCUS); gtk_widget_show (day_number_font_button); g_signal_connect (G_OBJECT (day_number_font_button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel3); gtk_table_attach (GTK_TABLE (table_fonts), day_number_font_button, 2, 3, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* table_fonts: row 4 */ g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Events")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table_fonts), label, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->print_event_font_entry = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_event_font_entry, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_event_font_entry); gtk_table_attach (GTK_TABLE (table_fonts), appGUI->cal->print_event_font_entry, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_text (GTK_ENTRY (appGUI->cal->print_event_font_entry), config.cal_print_event_font); sel4.config = config.cal_print_event_font; sel4.entry = appGUI->cal->print_event_font_entry; event_font_button = utl_gui_create_button (GTK_STOCK_SELECT_FONT, OSMO_STOCK_BUTTON_SELECT_FONT, FALSE); GTK_WIDGET_UNSET_FLAGS (event_font_button, GTK_CAN_FOCUS); gtk_widget_show (event_font_button); g_signal_connect (G_OBJECT (event_font_button), "clicked", G_CALLBACK (utl_gui_font_select_cb), &sel4); gtk_table_attach (GTK_TABLE (table_fonts), event_font_button, 2, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* table_fonts: END */ g_snprintf (buffer, BUFFER_SIZE, "%s", _("Fonts")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame1), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); frame2 = gtk_frame_new (NULL); gtk_widget_show (frame2); gtk_box_pack_start (GTK_BOX (hbox1), frame2, TRUE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame2), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (alignment), vbox2); appGUI->cal->print_tasks_checkbutton = gtk_check_button_new_with_mnemonic (_("Tasks")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_tasks_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_tasks_checkbutton); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->print_tasks_checkbutton, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_tasks_checkbutton), config.cal_print_tasks); appGUI->cal->print_birthdays_checkbutton = gtk_check_button_new_with_mnemonic (_("Birthdays")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_birthdays_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_birthdays_checkbutton); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->print_birthdays_checkbutton, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_birthdays_checkbutton), config.cal_print_birthdays); appGUI->cal->print_namedays_checkbutton = gtk_check_button_new_with_mnemonic (_("Namedays")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_namedays_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_namedays_checkbutton); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->print_namedays_checkbutton, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_namedays_checkbutton), config.cal_print_namedays); appGUI->cal->print_day_notes_checkbutton = gtk_check_button_new_with_mnemonic (_("Day notes")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_day_notes_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_day_notes_checkbutton); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->print_day_notes_checkbutton, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_day_notes_checkbutton), config.cal_print_day_notes); /* appGUI->cal->print_ical_checkbutton = gtk_check_button_new_with_mnemonic (_("ICal")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_ical_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_ical_checkbutton); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->print_ical_checkbutton, FALSE, FALSE, 0); gtk_widget_set_sensitive (appGUI->cal->print_ical_checkbutton, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_ical_checkbutton), config.cal_print_ical); */ g_snprintf (buffer, BUFFER_SIZE, "%s", _("Visible events")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame2), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); vseparator1 = gtk_vseparator_new (); gtk_widget_show (vseparator1); gtk_box_pack_start (GTK_BOX (hbox1), vseparator1, TRUE, TRUE, 0); frame3 = gtk_frame_new (NULL); gtk_widget_show (frame3); gtk_box_pack_start (GTK_BOX (hbox1), frame3, TRUE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_NONE); g_snprintf (buffer, BUFFER_SIZE, "%s", _("Options")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame3), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame3), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); table5 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table5); gtk_container_add (GTK_CONTAINER (alignment), table5); gtk_table_set_row_spacings (GTK_TABLE (table5), 4); gtk_table_set_col_spacings (GTK_TABLE (table5), 4); g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Padding")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table5), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (buffer, BUFFER_SIZE, "%s:", _("Event maximum length")); label = gtk_label_new (buffer); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table5), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adj = gtk_adjustment_new (config.cal_print_padding, 1, 16, 1, 10, 0); appGUI->cal->print_padding_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->print_padding_spinbutton); gtk_table_attach (GTK_TABLE (table5), appGUI->cal->print_padding_spinbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adj = gtk_adjustment_new (config.cal_print_event_length, 6, 256, 1, 10, 0); appGUI->cal->print_event_length_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->print_event_length_spinbutton); gtk_table_attach (GTK_TABLE (table5), appGUI->cal->print_event_length_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = gtk_label_new (_("Page orientation:")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table5), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->print_portrait_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Portrait")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->print_portrait_radiobutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->print_portrait_radiobutton); gtk_table_attach (GTK_TABLE (table5), appGUI->cal->print_portrait_radiobutton, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->cal->print_portrait_radiobutton), radiobutton_group); radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->cal->print_portrait_radiobutton)); landscape_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Landscape")); GTK_WIDGET_UNSET_FLAGS (landscape_radiobutton, GTK_CAN_FOCUS); gtk_widget_show (landscape_radiobutton); gtk_table_attach (GTK_TABLE (table5), landscape_radiobutton, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (landscape_radiobutton), radiobutton_group); radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (landscape_radiobutton)); if (config.cal_print_page_orientation == PORTRAIT) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->print_portrait_radiobutton), TRUE); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (landscape_radiobutton), TRUE); } hseparator1 = gtk_hseparator_new (); gtk_widget_show (hseparator1); gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 4); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 16); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); g_signal_connect (cancel_button, "clicked", G_CALLBACK (window_button_cal_print_opt_close_cb), appGUI); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); gtk_widget_show (ok_button); g_signal_connect (ok_button, "clicked", G_CALLBACK (calendar_print_start_cb), appGUI); gtk_container_add (GTK_CONTAINER (hbuttonbox), ok_button); gtk_widget_show (appGUI->cal->window_print_options); } /*------------------------------------------------------------------------------*/ #endif /* PRINTING_SUPPORT */ osmo-0.2.14/src/calendar_utils.h000664 001750 001750 00000004613 12561325524 016467 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_UTILS_H #define _CALENDAR_UTILS_H #include "gui.h" #include "utils_time.h" #define JULIAN_GREGORIAN_YEAR 1582 enum { TIME_24 = 0, TIME_12 }; struct tm * get_tm_struct (void); gchar* current_time_to_str (gint time_format, gint override_locale); gchar* time_to_str (TIME *time, gint time_format, gint override_locale); gint get_current_hour (void); gint get_current_minute (void); gint get_current_second (void); void sync_cal_date_with_gdate (GUI *appGUI); guint get_day_of_week (guint day, guint month, guint year); gchar* current_date_text (void); gchar* calendar_get_date_name (GDate *cdate); gchar* julian_to_str (guint32 julian_day, gint date_format, gint override_locale); guint32 str_to_julian (gchar *date_str, gint date_format); gint julian_to_year (guint32 julian_day); guint month_name_to_number (gchar *month_str); gchar* get_current_date_distance_str (guint32 julian); gchar* get_date_time_str (guint32 julian, gint seconds); gchar* get_date_time_full_str (guint32 julian, gint seconds); void parse_numeric_date (gchar *date_str, gint *first, gint *second, gint *third); gchar* utl_get_zodiac_name (guint day, guint month); gchar* get_chinese_year_name (guint year); #endif /* _CALENDAR_UTILS_H */ osmo-0.2.14/src/gtksourceiter.c000664 001750 001750 00000042475 12561325524 016373 0ustar00pasppasp000000 000000 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * gtksourceiter.c * * Copyright (C) 2000 - 2005 Paolo Maggi * Copyright (C) 2002, 2003 Jeroen Zwartepoorte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library 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 Library General Public License for more details. * * You should have received a copy of the GNU Library 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. */ /* * Parts of this file are copied from the gedit and glimmer project. */ #ifdef HAVE_CONFIG_H #include #endif #include #include "gtksourceiter.h" #define GTK_TEXT_UNKNOWN_CHAR 0xFFFC /* this function acts like g_utf8_offset_to_pointer() except that if it finds a * decomposable character it consumes the decomposition length from the given * offset. So it's useful when the offset was calculated for the normalized * version of str, but we need a pointer to str itself. */ static const gchar * pointer_from_offset_skipping_decomp (const gchar *str, gint offset) { gchar *casefold, *normal; const gchar *p, *q; p = str; while (offset > 0) { q = g_utf8_next_char (p); casefold = g_utf8_casefold (p, q - p); normal = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); offset -= g_utf8_strlen (normal, -1); g_free (casefold); g_free (normal); p = q; } return p; } static const gchar * g_utf8_strcasestr (const gchar *haystack, const gchar *needle) { gsize needle_len; gsize haystack_len; const gchar *ret = NULL; gchar *p; gchar *casefold; gchar *caseless_haystack; gint i; g_return_val_if_fail (haystack != NULL, NULL); g_return_val_if_fail (needle != NULL, NULL); casefold = g_utf8_casefold (haystack, -1); caseless_haystack = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); needle_len = g_utf8_strlen (needle, -1); haystack_len = g_utf8_strlen (caseless_haystack, -1); if (needle_len == 0) { ret = (gchar *)haystack; goto finally_1; } if (haystack_len < needle_len) { ret = NULL; goto finally_1; } p = (gchar*)caseless_haystack; needle_len = strlen (needle); i = 0; while (*p) { if ((strncmp (p, needle, needle_len) == 0)) { ret = pointer_from_offset_skipping_decomp (haystack, i); goto finally_1; } p = g_utf8_next_char (p); i++; } finally_1: g_free (caseless_haystack); return ret; } static const gchar * g_utf8_strrcasestr (const gchar *haystack, const gchar *needle) { gsize needle_len; gsize haystack_len; const gchar *ret = NULL; gchar *p; gchar *casefold; gchar *caseless_haystack; gint i; g_return_val_if_fail (haystack != NULL, NULL); g_return_val_if_fail (needle != NULL, NULL); casefold = g_utf8_casefold (haystack, -1); caseless_haystack = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); needle_len = g_utf8_strlen (needle, -1); haystack_len = g_utf8_strlen (caseless_haystack, -1); if (needle_len == 0) { ret = (gchar *)haystack; goto finally_1; } if (haystack_len < needle_len) { ret = NULL; goto finally_1; } i = haystack_len - needle_len; p = g_utf8_offset_to_pointer (caseless_haystack, i); needle_len = strlen (needle); while (1) { if (strncmp (p, needle, needle_len) == 0) { ret = pointer_from_offset_skipping_decomp (haystack, i); goto finally_1; } if (p > caseless_haystack) p = g_utf8_prev_char (p); else goto finally_1; i--; } finally_1: g_free (caseless_haystack); return ret; } static gboolean g_utf8_caselessnmatch (const char *s1, const char *s2, gssize n1, gssize n2) { gchar *casefold; gchar *normalized_s1; gchar *normalized_s2; gint len_s1; gint len_s2; gboolean ret = FALSE; g_return_val_if_fail (s1 != NULL, FALSE); g_return_val_if_fail (s2 != NULL, FALSE); g_return_val_if_fail (n1 > 0, FALSE); g_return_val_if_fail (n2 > 0, FALSE); casefold = g_utf8_casefold (s1, n1); normalized_s1 = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); casefold = g_utf8_casefold (s2, n2); normalized_s2 = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); len_s1 = strlen (normalized_s1); len_s2 = strlen (normalized_s2); if (len_s1 < len_s2) goto finally_2; ret = (strncmp (normalized_s1, normalized_s2, len_s2) == 0); finally_2: g_free (normalized_s1); g_free (normalized_s2); return ret; } static void forward_chars_with_skipping (GtkTextIter *iter, gint count, gboolean skip_invisible, gboolean skip_nontext, gboolean skip_decomp) { gint i; g_return_if_fail (count >= 0); i = count; while (i > 0) { gboolean ignored = FALSE; /* minimal workaround to avoid the infinite loop of bug #168247. * It doesn't fix the problemjust the symptom... */ if (gtk_text_iter_is_end (iter)) return; if (skip_nontext && gtk_text_iter_get_char (iter) == GTK_TEXT_UNKNOWN_CHAR) ignored = TRUE; #if 0 if (!ignored && skip_invisible && /* _gtk_text_btree_char_is_invisible (iter)*/ FALSE) ignored = TRUE; #endif if (!ignored && skip_decomp) { /* being UTF8 correct sucks; this accounts for extra offsets coming from canonical decompositions of UTF8 characters (e.g. accented characters) which g_utf8_normalize() performs */ gchar *normal; gchar buffer[6]; gint buffer_len; buffer_len = g_unichar_to_utf8 (gtk_text_iter_get_char (iter), buffer); normal = g_utf8_normalize (buffer, buffer_len, G_NORMALIZE_NFD); i -= (g_utf8_strlen (normal, -1) - 1); g_free (normal); } gtk_text_iter_forward_char (iter); if (!ignored) --i; } } static gboolean lines_match (const GtkTextIter *start, const gchar **lines, gboolean visible_only, gboolean slice, GtkTextIter *match_start, GtkTextIter *match_end) { GtkTextIter next; gchar *line_text; const gchar *found; gint offset; if (*lines == NULL || **lines == '\0') { if (match_start) *match_start = *start; if (match_end) *match_end = *start; return TRUE; } next = *start; gtk_text_iter_forward_line (&next); /* No more text in buffer, but *lines is nonempty */ if (gtk_text_iter_equal (start, &next)) return FALSE; if (slice) { if (visible_only) line_text = gtk_text_iter_get_visible_slice (start, &next); else line_text = gtk_text_iter_get_slice (start, &next); } else { if (visible_only) line_text = gtk_text_iter_get_visible_text (start, &next); else line_text = gtk_text_iter_get_text (start, &next); } if (match_start) /* if this is the first line we're matching */ { found = g_utf8_strcasestr (line_text, *lines); } else { /* If it's not the first line, we have to match from the * start of the line. */ if (g_utf8_caselessnmatch (line_text, *lines, strlen (line_text), strlen (*lines))) found = line_text; else found = NULL; } if (found == NULL) { g_free (line_text); return FALSE; } /* Get offset to start of search string */ offset = g_utf8_strlen (line_text, found - line_text); next = *start; /* If match start needs to be returned, set it to the * start of the search string. */ forward_chars_with_skipping (&next, offset, visible_only, !slice, FALSE); if (match_start) { *match_start = next; } /* Go to end of search string */ forward_chars_with_skipping (&next, g_utf8_strlen (*lines, -1), visible_only, !slice, TRUE); g_free (line_text); ++lines; if (match_end) *match_end = next; /* pass NULL for match_start, since we don't need to find the * start again. */ return lines_match (&next, lines, visible_only, slice, NULL, match_end); } static gboolean backward_lines_match (const GtkTextIter *start, const gchar **lines, gboolean visible_only, gboolean slice, GtkTextIter *match_start, GtkTextIter *match_end) { GtkTextIter line, next; gchar *line_text; const gchar *found; gint offset; if (*lines == NULL || **lines == '\0') { if (match_start) *match_start = *start; if (match_end) *match_end = *start; return TRUE; } line = next = *start; if (gtk_text_iter_get_line_offset (&next) == 0) { if (!gtk_text_iter_backward_line (&next)) return FALSE; } else gtk_text_iter_set_line_offset (&next, 0); if (slice) { if (visible_only) line_text = gtk_text_iter_get_visible_slice (&next, &line); else line_text = gtk_text_iter_get_slice (&next, &line); } else { if (visible_only) line_text = gtk_text_iter_get_visible_text (&next, &line); else line_text = gtk_text_iter_get_text (&next, &line); } if (match_start) /* if this is the first line we're matching */ { found = g_utf8_strrcasestr (line_text, *lines); } else { /* If it's not the first line, we have to match from the * start of the line. */ if (g_utf8_caselessnmatch (line_text, *lines, strlen (line_text), strlen (*lines))) found = line_text; else found = NULL; } if (found == NULL) { g_free (line_text); return FALSE; } /* Get offset to start of search string */ offset = g_utf8_strlen (line_text, found - line_text); forward_chars_with_skipping (&next, offset, visible_only, !slice, FALSE); /* If match start needs to be returned, set it to the * start of the search string. */ if (match_start) { *match_start = next; } /* Go to end of search string */ forward_chars_with_skipping (&next, g_utf8_strlen (*lines, -1), visible_only, !slice, TRUE); g_free (line_text); ++lines; if (match_end) *match_end = next; /* try to match the rest of the lines forward, passing NULL * for match_start so lines_match will try to match the entire * line */ return lines_match (&next, lines, visible_only, slice, NULL, match_end); } /* strsplit () that retains the delimiter as part of the string. */ static gchar ** strbreakup (const char *string, const char *delimiter, gint max_tokens) { GSList *string_list = NULL, *slist; gchar **str_array, *s, *casefold, *new_string; guint i, n = 1; g_return_val_if_fail (string != NULL, NULL); g_return_val_if_fail (delimiter != NULL, NULL); if (max_tokens < 1) max_tokens = G_MAXINT; s = strstr (string, delimiter); if (s) { guint delimiter_len = strlen (delimiter); do { guint len; len = s - string + delimiter_len; new_string = g_new (gchar, len + 1); strncpy (new_string, string, len); new_string[len] = 0; casefold = g_utf8_casefold (new_string, -1); g_free (new_string); new_string = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); string_list = g_slist_prepend (string_list, new_string); n++; string = s + delimiter_len; s = strstr (string, delimiter); } while (--max_tokens && s); } if (*string) { n++; casefold = g_utf8_casefold (string, -1); new_string = g_utf8_normalize (casefold, -1, G_NORMALIZE_NFD); g_free (casefold); string_list = g_slist_prepend (string_list, new_string); } str_array = g_new (gchar*, n); i = n - 1; str_array[i--] = NULL; for (slist = string_list; slist; slist = slist->next) str_array[i--] = slist->data; g_slist_free (string_list); return str_array; } /** * gtk_source_iter_forward_search: * @iter: start of search. * @str: a search string. * @flags: flags affecting how the search is done. * @match_start: return location for start of match, or %%NULL. * @match_end: return location for end of match, or %%NULL. * @limit: bound for the search, or %%NULL for the end of the buffer. * * Searches forward for @str. Any match is returned by setting * @match_start to the first character of the match and @match_end to the * first character after the match. The search will not continue past * @limit. Note that a search is a linear or O(n) operation, so you * may wish to use @limit to avoid locking up your UI on large * buffers. * * If the #GTK_SOURCE_SEARCH_VISIBLE_ONLY flag is present, the match may * have invisible text interspersed in @str. i.e. @str will be a * possibly-noncontiguous subsequence of the matched range. similarly, * if you specify #GTK_SOURCE_SEARCH_TEXT_ONLY, the match may have * pixbufs or child widgets mixed inside the matched range. If these * flags are not given, the match must be exact; the special 0xFFFC * character in @str will match embedded pixbufs or child widgets. * If you specify the #GTK_SOURCE_SEARCH_CASE_INSENSITIVE flag, the text will * be matched regardless of what case it is in. * * Same as gtk_text_iter_forward_search(), but supports case insensitive * searching. * * Return value: whether a match was found. **/ gboolean gtk_source_iter_forward_search (const GtkTextIter *iter, const gchar *str, GtkSourceSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit) { gchar **lines = NULL; GtkTextIter match; gboolean retval = FALSE; GtkTextIter search; gboolean visible_only; gboolean slice; g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (str != NULL, FALSE); if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0) return gtk_text_iter_forward_search (iter, str, flags, match_start, match_end, limit); if (limit && gtk_text_iter_compare (iter, limit) >= 0) return FALSE; if (*str == '\0') { /* If we can move one char, return the empty string there */ match = *iter; if (gtk_text_iter_forward_char (&match)) { if (limit && gtk_text_iter_equal (&match, limit)) return FALSE; if (match_start) *match_start = match; if (match_end) *match_end = match; return TRUE; } else { return FALSE; } } visible_only = (flags & GTK_SOURCE_SEARCH_VISIBLE_ONLY) != 0; slice = (flags & GTK_SOURCE_SEARCH_TEXT_ONLY) == 0; /* locate all lines */ lines = strbreakup (str, "\n", -1); search = *iter; do { /* This loop has an inefficient worst-case, where * gtk_text_iter_get_text () is called repeatedly on * a single line. */ GtkTextIter end; if (limit && gtk_text_iter_compare (&search, limit) >= 0) break; if (lines_match (&search, (const gchar**)lines, visible_only, slice, &match, &end)) { if (limit == NULL || (limit && gtk_text_iter_compare (&end, limit) <= 0)) { retval = TRUE; if (match_start) *match_start = match; if (match_end) *match_end = end; } break; } } while (gtk_text_iter_forward_line (&search)); g_strfreev ((gchar**)lines); return retval; } /** * gtk_source_iter_backward_search: * @iter: a #GtkTextIter where the search begins. * @str: search string. * @flags: bitmask of flags affecting the search. * @match_start: return location for start of match, or %%NULL. * @match_end: return location for end of match, or %%NULL. * @limit: location of last possible @match_start, or %%NULL for start of buffer. * * Same as gtk_text_iter_backward_search(), but supports case insensitive * searching. * * Return value: whether a match was found. **/ gboolean gtk_source_iter_backward_search (const GtkTextIter *iter, const gchar *str, GtkSourceSearchFlags flags, GtkTextIter *match_start, GtkTextIter *match_end, const GtkTextIter *limit) { gchar **lines = NULL; GtkTextIter match; gboolean retval = FALSE; GtkTextIter search; gboolean visible_only; gboolean slice; g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (str != NULL, FALSE); if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0) return gtk_text_iter_backward_search (iter, str, flags, match_start, match_end, limit); if (limit && gtk_text_iter_compare (iter, limit) <= 0) return FALSE; if (*str == '\0') { /* If we can move one char, return the empty string there */ match = *iter; if (gtk_text_iter_backward_char (&match)) { if (limit && gtk_text_iter_equal (&match, limit)) return FALSE; if (match_start) *match_start = match; if (match_end) *match_end = match; return TRUE; } else { return FALSE; } } visible_only = (flags & GTK_SOURCE_SEARCH_VISIBLE_ONLY) != 0; slice = (flags & GTK_SOURCE_SEARCH_TEXT_ONLY) == 0; /* locate all lines */ lines = strbreakup (str, "\n", -1); search = *iter; while (TRUE) { /* This loop has an inefficient worst-case, where * gtk_text_iter_get_text () is called repeatedly on * a single line. */ GtkTextIter end; if (limit && gtk_text_iter_compare (&search, limit) <= 0) break; if (backward_lines_match (&search, (const gchar**)lines, visible_only, slice, &match, &end)) { if (limit == NULL || (limit && gtk_text_iter_compare (&end, limit) > 0)) { retval = TRUE; if (match_start) *match_start = match; if (match_end) *match_end = end; } break; } if (gtk_text_iter_get_line_offset (&search) == 0) { if (!gtk_text_iter_backward_line (&search)) break; } else { gtk_text_iter_set_line_offset (&search, 0); } } g_strfreev ((gchar**)lines); return retval; } osmo-0.2.14/src/stock_icons.c000664 001750 001750 00000043763 12561325524 016020 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "stock_icons.h" #include "i18n.h" #include "stock_icons_data.h" /*------------------------------------------------------------------------------*/ void osmo_register_stock_icons(void) { GdkPixbuf *pixbuf; gint i; GtkIconFactory *factory; GtkIconSet *icon_set; GtkIconSource *icon_source; GtkStockItem osmo_stock_items[] = { { (gchar*) OSMO_STOCK_BUTTON_ADD, (gchar*) N_("Add"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_CLEAR, (gchar*) N_("Clear"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_CLOSE, (gchar*) N_("Close"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_CANCEL, (gchar*) N_("Cancel"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_JUMPTO, (gchar*) N_("Jump to"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_EDIT, (gchar*) N_("Edit"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_DOWN, (gchar*) N_("Go Down"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_INFO, (gchar*) N_("Info"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_INSERT_TIMELINE, (gchar*) N_("Insert"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_NEXT_YEAR, (gchar*) N_("Next year"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_NO, (gchar*) N_("No"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_OK, (gchar*) N_("OK"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_OPEN, (gchar*) N_("Browse"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_PREV_YEAR, (gchar*) N_("Previous year"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_REMOVE, (gchar*) N_("Remove"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_SELECT_COLOR, (gchar*) N_("Select color"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_SELECT_DATE, (gchar*) N_("Select date"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_SELECT_FONT, (gchar*) N_("Select font"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_TODAY, (gchar*) N_("Today"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_YES, (gchar*) N_("Yes"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_NORMAL, (gchar*) "Osmo", 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_NOTE, (gchar*) N_("Note"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_MENU_CALENDAR, (gchar*) N_("Calendar"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BACKUP, (gchar*) N_("Backup data"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_RESTORE, (gchar*) N_("Restore data"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_OPEN_URL, (gchar*) N_("Open URL"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_ABOUT, (gchar*) N_("About"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CALENDAR, (gchar*) N_("Calendar"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CLOSE, (gchar*) N_("Close"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CALCULATOR, (gchar*) N_("Calculator"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDIT_NOTE, (gchar*) N_("Edit day note"), 0, 0, TRANSLATION_DOMAIN }, #ifdef CONTACTS_ENABLED { (gchar*) OSMO_STOCK_CONTACTS_ADD, (gchar*) N_("Add contact"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS_BIRTHDAYS, (gchar*) N_("Show birthdays"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS_EDIT, (gchar*) N_("Edit contact"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS_EXPORT, (gchar*) N_("Export contacts"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS_IMPORT, (gchar*) N_("Import contacts"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS_REMOVE, (gchar*) N_("Remove contact"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_CONTACTS_EXPORT, (gchar*) N_("Export"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_BUTTON_CONTACTS_IMPORT, (gchar*) N_("Import"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_CONTACTS, (gchar*) N_("Contacts"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_BIRTHDAY, (gchar*) N_("Birthday"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_MENU_CONTACTS, (gchar*) N_("Contacts"), 0, 0, TRANSLATION_DOMAIN }, #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED { (gchar*) OSMO_STOCK_EDITOR_BOLD, (gchar*) N_("Bold"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_CLEAR, (gchar*) N_("Clear"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_FIND, (gchar*) N_("Find"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_HIGHLIGHT, (gchar*) N_("Highlight"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_INFO, (gchar*) N_("Info"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_INSERT_DATE_TIME, (gchar*) N_("Insert current date and time"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_INSERT_SEPARATOR, (gchar*) N_("Insert separator"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_ITALIC, (gchar*) N_("Italic"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_SAVE, (gchar*) N_("Save"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_SPELL_CHECKER, (gchar*) N_("Toggle spell checker"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_STRIKETHROUGH, (gchar*) N_("Strikethrough"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_UNDERLINE, (gchar*) N_("Underline"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NOTES_ADD, (gchar*) N_("Add note"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NOTES_EDIT, (gchar*) N_("Edit note"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NOTES_REMOVE, (gchar*) N_("Remove note"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NOTES, (gchar*) N_("Notes"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_MENU_NOTES, (gchar*) N_("Notes"), 0, 0, TRANSLATION_DOMAIN }, #endif /* NOTES_ENABLED */ { (gchar*) OSMO_STOCK_EDITOR_BOLD_S, (gchar*) N_("Bold"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_HIGHLIGHT_S, (gchar*) N_("Highlight"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_ITALIC_S, (gchar*) N_("Italic"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_STRIKETHROUGH_S, (gchar*) N_("Strikethrough"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_EDITOR_UNDERLINE_S, (gchar*) N_("Underline"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_FULLYEAR, (gchar*) N_("Display full-year calendar"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_HELP, (gchar*) N_("Help"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_INFO_HELP, (gchar*) N_("Help"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_JUMPTO, (gchar*) N_("Jump to date"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_LICENSE, (gchar*) N_("License"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_LIST_INVALID, (gchar*) N_("Invalid item"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_LIST_VALID, (gchar*) N_("Valid item"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NEXT_DAY, (gchar*) N_("Next day"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NEXT_MONTH, (gchar*) N_("Next month"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_NEXT_YEAR, (gchar*) N_("Next year"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_PREFERENCES, (gchar*) N_("Preferences"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_PREV_DAY, (gchar*) N_("Previous day"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_PREV_MONTH, (gchar*) N_("Previous month"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_PREV_YEAR, (gchar*) N_("Previous year"), 0, 0, TRANSLATION_DOMAIN }, #ifdef TASKS_ENABLED { (gchar*) OSMO_STOCK_TASKS_ADD, (gchar*) N_("Add task"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_EDIT, (gchar*) N_("Edit task"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_REMOVE, (gchar*) N_("Remove task"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_IMPORT, (gchar*) N_("Import tasks"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_EXPORT, (gchar*) N_("Export tasks"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_PREV_DATE, (gchar*) N_("Change to previous date"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS_NEXT_DATE, (gchar*) N_("Change to next date"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TASKS, (gchar*) N_("Tasks"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_TASK, (gchar*) N_("Task"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_SYSTRAY_MENU_TASKS, (gchar*) N_("Tasks"), 0, 0, TRANSLATION_DOMAIN }, #endif /* TASKS_ENABLED */ { (gchar*) OSMO_STOCK_TODAY, (gchar*) N_("Today"), 0, 0, TRANSLATION_DOMAIN }, #ifdef PRINTING_SUPPORT { (gchar*) OSMO_STOCK_PRINT, (gchar*) N_("Print"), 0, 0, TRANSLATION_DOMAIN }, #endif /* PRINTING_SUPPORT */ { (gchar*) OSMO_STOCK_TYPE_NORMAL, (gchar*) N_("Normal"), 0, 0, TRANSLATION_DOMAIN }, { (gchar*) OSMO_STOCK_TYPE_ENCRYPTED, (gchar*) N_("Encrypted"), 0, 0, TRANSLATION_DOMAIN }, /*{ (gchar*) OSMO_STOCK_TYPE_RECURRENT_INACTIVE, (gchar*) N_("Inactive recurrent"), 0, 0, TRANSLATION_DOMAIN },*/ { (gchar*) OSMO_STOCK_TYPE_RECURRENT, (gchar*) N_("Recurrent"), 0, 0, TRANSLATION_DOMAIN } }; const guint8* osmo_stock_item_data[] = { (const guint8*) osmo_stock_button_add, (const guint8*) osmo_stock_button_clear, (const guint8*) osmo_stock_button_close, (const guint8*) osmo_stock_button_cancel, (const guint8*) osmo_stock_button_jumpto, (const guint8*) osmo_stock_button_edit, (const guint8*) osmo_stock_button_down, (const guint8*) osmo_stock_button_info, (const guint8*) osmo_stock_button_insert_timeline, (const guint8*) osmo_stock_button_next_year, (const guint8*) osmo_stock_button_no, (const guint8*) osmo_stock_button_ok, (const guint8*) osmo_stock_button_open, (const guint8*) osmo_stock_button_prev_year, (const guint8*) osmo_stock_button_remove, (const guint8*) osmo_stock_button_select_color, (const guint8*) osmo_stock_button_select_date, (const guint8*) osmo_stock_button_select_font, (const guint8*) osmo_stock_button_today, (const guint8*) osmo_stock_button_yes, (const guint8*) osmo_stock_systray_normal, (const guint8*) osmo_stock_systray_note, (const guint8*) osmo_stock_systray_menu_calendar, (const guint8*) osmo_stock_backup, (const guint8*) osmo_stock_restore, (const guint8*) osmo_stock_open_url, (const guint8*) osmo_stock_about, (const guint8*) osmo_stock_calendar, (const guint8*) osmo_stock_close, (const guint8*) osmo_stock_calculator, (const guint8*) osmo_stock_edit_note, #ifdef CONTACTS_ENABLED (const guint8*) osmo_stock_contacts_add, (const guint8*) osmo_stock_contacts_birthdays, (const guint8*) osmo_stock_contacts_edit, (const guint8*) osmo_stock_contacts_export, (const guint8*) osmo_stock_contacts_import, (const guint8*) osmo_stock_contacts_remove, (const guint8*) osmo_stock_button_contacts_export, (const guint8*) osmo_stock_button_contacts_import, (const guint8*) osmo_stock_contacts, (const guint8*) osmo_stock_systray_birthday, (const guint8*) osmo_stock_systray_menu_contacts, #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED (const guint8*) osmo_stock_editor_bold, (const guint8*) osmo_stock_editor_clear, (const guint8*) osmo_stock_editor_find, (const guint8*) osmo_stock_editor_highlight, (const guint8*) osmo_stock_editor_info, (const guint8*) osmo_stock_editor_insert_date_time, (const guint8*) osmo_stock_editor_insert_separator, (const guint8*) osmo_stock_editor_italic, (const guint8*) osmo_stock_editor_save, (const guint8*) osmo_stock_editor_spell_checker, (const guint8*) osmo_stock_editor_strikethrough, (const guint8*) osmo_stock_editor_underline, (const guint8*) osmo_stock_notes_add, (const guint8*) osmo_stock_notes_edit, (const guint8*) osmo_stock_notes_remove, (const guint8*) osmo_stock_notes, (const guint8*) osmo_stock_systray_menu_notes, #endif /* NOTES_ENABLED */ (const guint8*) osmo_stock_editor_bold_s, (const guint8*) osmo_stock_editor_highlight_s, (const guint8*) osmo_stock_editor_italic_s, (const guint8*) osmo_stock_editor_strikethrough_s, (const guint8*) osmo_stock_editor_underline_s, (const guint8*) osmo_stock_fullyear, (const guint8*) osmo_stock_help, (const guint8*) osmo_stock_info_help, (const guint8*) osmo_stock_jumpto, (const guint8*) osmo_stock_license, (const guint8*) osmo_stock_list_invalid, (const guint8*) osmo_stock_list_valid, (const guint8*) osmo_stock_next_day, (const guint8*) osmo_stock_next_month, (const guint8*) osmo_stock_next_year, (const guint8*) osmo_stock_preferences, (const guint8*) osmo_stock_prev_day, (const guint8*) osmo_stock_prev_month, (const guint8*) osmo_stock_prev_year, #ifdef TASKS_ENABLED (const guint8*) osmo_stock_tasks_add, (const guint8*) osmo_stock_tasks_edit, (const guint8*) osmo_stock_tasks_remove, (const guint8*) osmo_stock_tasks_import, (const guint8*) osmo_stock_tasks_export, (const guint8*) osmo_stock_tasks_prev_date, (const guint8*) osmo_stock_tasks_next_date, (const guint8*) osmo_stock_tasks, (const guint8*) osmo_stock_systray_task, (const guint8*) osmo_stock_systray_menu_tasks, #endif /* TASKS_ENABLED */ (const guint8*) osmo_stock_today, #ifdef PRINTING_SUPPORT (const guint8*) osmo_stock_print, #endif /* PRINTING_SUPPORT */ (const guint8*) osmo_stock_type_normal, (const guint8*) osmo_stock_type_encrypted, /*(const guint8*) osmo_stock_type_recurrent_inactive,*/ (const guint8*) osmo_stock_type_recurrent }; gtk_stock_add (osmo_stock_items, G_N_ELEMENTS (osmo_stock_items)); factory = gtk_icon_factory_new (); gtk_icon_factory_add_default(factory); for(i = 0; i < G_N_ELEMENTS(osmo_stock_item_data); i++) { pixbuf = gdk_pixbuf_new_from_inline(-1, osmo_stock_item_data[i], FALSE, NULL); icon_source = gtk_icon_source_new (); gtk_icon_source_set_pixbuf (icon_source, pixbuf); icon_set = gtk_icon_set_new (); gtk_icon_set_add_source (icon_set, icon_source); gtk_icon_factory_add(factory, osmo_stock_items[i].stock_id, icon_set); g_object_unref(pixbuf); gtk_icon_source_free (icon_source); gtk_icon_set_unref (icon_set); } g_object_unref (factory); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/check_events.c000664 001750 001750 00000121202 12561325524 016124 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "check_events.h" #include "i18n.h" #include "calendar.h" #include "gui.h" #include "utils.h" #include "utils_gui.h" #include "calendar_notes.h" #include "options_prefs.h" #include "calendar_utils.h" #include "stock_icons.h" #include "tasks_items.h" #include "tasks_utils.h" /*------------------------------------------------------------------------------*/ #ifdef TASKS_ENABLED /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBNOTIFY static void tsk_status_icon_set_normal (GUI *appGUI) { gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); } #endif /* HAVE_LIBNOTIFY */ /*------------------------------------------------------------------------------*/ static gboolean tsk_check_notification_id (guint id, gint type, GUI *appGUI) { #ifdef HAVE_LIBNOTIFY GSList *node; TASK_NTF *a; for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; /* Don't show warning notification when alarm notification is visible */ if (a->id == id && (a->type == NOTIFY_ALARM || a->type == type)) return TRUE; } #endif /* HAVE_LIBNOTIFY */ return FALSE; } /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBNOTIFY void free_notifications_list (GUI *appGUI) { GSList *node; TASK_NTF *a; for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; notify_notification_close (a->notify, NULL); g_free (a); } if (appGUI->tsk->notifications != NULL) { g_slist_free (appGUI->tsk->notifications); appGUI->tsk->notifications = NULL; } } /*------------------------------------------------------------------------------*/ void tsk_show_info_dialog (GUI *appGUI) { gchar tmpbuf[BUFFER_SIZE]; g_snprintf (tmpbuf, BUFFER_SIZE, "%s\n%s", _("Cannot perform selected operation."), _("Task has been modified or removed.")); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW (appGUI->main_window)); } /*------------------------------------------------------------------------------*/ void tsk_done_cb (NotifyNotification *n, const char *action, GUI *appGUI) { GtkTreeIter *iter; GSList *node; TASK_NTF *a; TASK_ITEM *t; for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; if (a->notify == n) { iter = tsk_get_iter (a->id, appGUI); if (iter != NULL) { t = tsk_get_item (iter, appGUI); if (t->repeat == TRUE) { tasks_repeat_done (iter, t, appGUI); } else if (config.delete_completed) { gtk_list_store_remove (appGUI->tsk->tasks_list_store, iter); } else { gtk_list_store_set (appGUI->tsk->tasks_list_store, iter, TA_COLUMN_COLOR, get_date_color (t->due_date_julian, t->due_time, TRUE, appGUI), TA_COLUMN_DONE, TRUE, -1); } tsk_item_free (t); } else { tsk_show_info_dialog (appGUI); } tsk_status_icon_set_normal (appGUI); break; } } } /*------------------------------------------------------------------------------*/ void tsk_postpone_notify_cb (NotifyNotification *n, const char *action, GUI *appGUI) { GSList *node; TASK_NTF *a; TASK_ITEM *t; for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; if (a->notify == n) { t = tsk_get_item_id (a->id, appGUI); g_return_if_fail (t != NULL); a->time = utl_time_get_current_seconds () + t->postpone_time * 60; a->date = utl_date_get_current_julian (); if (a->time >= 24 * 3600) { a->time -= 24 * 3600; a->date++; } tsk_item_free (t); tsk_status_icon_set_normal (appGUI); notify_notification_close (a->notify, NULL); break; } } } /*------------------------------------------------------------------------------*/ void tsk_show_task_cb (NotifyNotification *n, const char *action, GUI *appGUI) { GtkTreeIter iter; GSList *node; GtkTreePath *sort_path, *filter_path, *path; GtkTreeModel *model; TASK_NTF *a; TASK_ITEM *t; guint id; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); if (config.enable_systray == TRUE && appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } else { gtk_window_deiconify (GTK_WINDOW (appGUI->main_window)); } /* select task tab */ if (config.hide_tasks == FALSE) { gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_TASKS); } gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), 0); /* select task on list */ for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; if (a->notify == n) { tasks_selection_activate (FALSE, appGUI); if (gtk_tree_model_get_iter_first (model, &iter) == TRUE) { sort_path = gtk_tree_model_get_path (model, &iter); while (sort_path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->tsk->tasks_list), sort_path, NULL, FALSE); filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, TA_COLUMN_ID, &id, -1); if (a->id == id) { tasks_selection_activate (TRUE, appGUI); gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->tsk->tasks_list), sort_path, NULL, FALSE); gtk_tree_path_free (path); gtk_tree_path_free (filter_path); g_signal_emit_by_name (G_OBJECT (appGUI->tsk->tasks_list_selection), "changed"); break; } gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } gtk_tree_path_next (sort_path); if (gtk_tree_model_get_iter (model, &iter, sort_path) == FALSE) break; } gtk_tree_path_free (sort_path); } tsk_status_icon_set_normal (appGUI); if (a->type == NOTIFY_WARNING) break; notify_notification_clear_actions (a->notify); t = tsk_get_item_id (a->id, appGUI); g_return_if_fail (t != NULL); if (t->postpone_time > 0) { notify_notification_add_action (a->notify, "postpone", _("Remind me later"), (NotifyActionCallback) tsk_postpone_notify_cb, appGUI, NULL); } notify_notification_add_action (a->notify, "done", _("Done"), (NotifyActionCallback) tsk_done_cb, appGUI, NULL); notify_notification_show (a->notify, NULL); tsk_item_free (t); break; } } } /*------------------------------------------------------------------------------*/ void show_postponed_notification (GUI *appGUI) { guint32 current_date; gint current_time; GSList *node; TASK_NTF *a; TASK_ITEM *t; gchar *datestr, *datestri, *title, *text = NULL; gboolean sound_flag = TRUE; current_date = utl_date_get_current_julian (); current_time = utl_time_get_current_seconds (); for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; if (a->type == NOTIFY_WARNING) continue; if ((g_date_valid_julian (a->date) && utl_time_valid_seconds (a->time)) == FALSE) continue; if (utl_date_time_compare_js (a->date, a->time, current_date, current_time) <= 0) { a->date = 0; a->time = -1; t = tsk_get_item_id (a->id, appGUI); g_return_if_fail (t != NULL); datestr = utl_date_time_print_default (t->due_date_julian, t->due_time, FALSE); datestri = g_strdup_printf ("%s", datestr); g_free (datestr); if (t->desc != NULL && strlen (t->desc)) text = g_strdup_printf ("%s\n%.100s", datestri, t->desc); title = g_strdup_printf ("%s (%s)", t->summary, _("postponed")); if (text != NULL) notify_notification_update (a->notify, title, text, GTK_STOCK_DIALOG_WARNING); else notify_notification_update (a->notify, title, datestri, GTK_STOCK_DIALOG_WARNING); g_free (title); g_free (text); g_free (datestri); if (strlen (config.global_notification_command)) gui_save_data_and_run_command (config.global_notification_command, appGUI); if (t->sound_enable && sound_flag) { utl_play_alarm_sound (config.sound_alarm_repeat); sound_flag = FALSE; } if (t->ndialog_enable == TRUE) { notify_notification_show (a->notify, NULL); } tsk_item_free (t); } } } /*------------------------------------------------------------------------------*/ #endif /* HAVE_LIBNOTIFY */ /*------------------------------------------------------------------------------*/ gboolean tsk_show_warning_notification (TASK_ITEM *item, GUI *appGUI) { guint32 current_date, warning_date; gint current_time, warning_time; if (tsk_check_notification_id (item->id, NOTIFY_WARNING, appGUI)) return FALSE; if (item->warning_days > 0 || item->warning_time > 0) { current_date = utl_date_get_current_julian (); current_time = utl_time_get_current_seconds (); utl_subtract_from_date (item->due_date_julian, item->due_time, item->warning_days, item->warning_time * 60, &warning_date, &warning_time); if (warning_date < current_date + (warning_time <= current_time) ? 1 : 0) { if (item->repeat == TRUE && item->offline_ignore == TRUE) { if (warning_date < appGUI->run_date + (warning_time < appGUI->run_time) ? 1 : 0) { return FALSE; } } return TRUE; } } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean tsk_show_task_notification (TASK_ITEM *item, GUI *appGUI) { if (item->due_date_julian == 0 || tsk_check_notification_id (item->id, NOTIFY_ALARM, appGUI)) return FALSE; if (utl_date_time_in_the_past_js (item->due_date_julian, item->due_time)) { return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean tsk_delete_ntask_notification(TASK_ITEM *item) { if(item->done) { return TRUE; } else if(!utl_date_time_in_the_past_js(item->due_date_julian, item->due_time)) { return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void notify_task(TASK_ITEM *item, GUI *appGUI) { #ifdef HAVE_LIBNOTIFY TASK_NTF *a; gchar *datestr, *text, *textdesc; #endif /* HAVE_LIBNOTIFY */ gboolean sound_flag = TRUE; if (!appGUI->tsk->notifications_enable) { return; } if (item == NULL) { return; } if (tsk_delete_ntask_notification(item)) { notify_task_delete(item->id, appGUI); } else if (item->active == TRUE && item->done == FALSE) { if (tsk_show_task_notification(item, appGUI) == TRUE) { if (item->alarm_command != NULL) { if (strlen(item->alarm_command)) { gui_save_data_and_run_command(item->alarm_command, appGUI); } } #ifdef HAVE_LIBNOTIFY datestr = utl_date_time_print_default(item->due_date_julian, item->due_time, FALSE); text = g_strdup_printf("%s", datestr); g_free(datestr); textdesc = NULL; if (item->desc != NULL && strlen(item->desc)) textdesc = g_strdup_printf("%s\n%.100s", text, item->desc); a = g_malloc(sizeof (TASK_NTF)); a->id = item->id; a->type = NOTIFY_ALARM; a->time = -1; a->date = 0; if (textdesc != NULL) #ifdef HAVE_LIBNOTIFY7 a->notify = notify_notification_new(item->summary, textdesc, GTK_STOCK_DIALOG_WARNING); #else a->notify = notify_notification_new(item->summary, textdesc, GTK_STOCK_DIALOG_WARNING, NULL); #endif /* HAVE_LIBNOTIFY7 */ else #ifdef HAVE_LIBNOTIFY7 a->notify = notify_notification_new(item->summary, text, GTK_STOCK_DIALOG_WARNING); #else a->notify = notify_notification_new(item->summary, text, GTK_STOCK_DIALOG_WARNING, NULL); #endif /* HAVE_LIBNOTIFY7 */ g_free(textdesc); g_free(text); notify_notification_set_timeout(a->notify, NOTIFY_EXPIRES_NEVER); switch (tsk_get_priority_index(item->priority)) { case LOW_PRIORITY: notify_notification_set_urgency(a->notify, NOTIFY_URGENCY_LOW); break; case MEDIUM_PRIORITY: notify_notification_set_urgency(a->notify, NOTIFY_URGENCY_NORMAL); break; case HIGH_PRIORITY: notify_notification_set_urgency(a->notify, NOTIFY_URGENCY_CRITICAL); break; } if (item->postpone_time > 0) { notify_notification_add_action(a->notify, "postpone", _("Remind me later"), (NotifyActionCallback) tsk_postpone_notify_cb, appGUI, NULL); } if (tsk_get_category_state(item->category, STATE_TASKS, appGUI) == TRUE) { notify_notification_add_action(a->notify, "show_task", _("Show task"), (NotifyActionCallback) tsk_show_task_cb, appGUI, NULL); } notify_notification_add_action(a->notify, "done", _("Done"), (NotifyActionCallback) tsk_done_cb, appGUI, NULL); #endif /* HAVE_LIBNOTIFY */ if (gtk_status_icon_get_visible(appGUI->osmo_trayicon)) { #ifdef HAVE_LIBNOTIFY #ifndef HAVE_LIBNOTIFY7 notify_notification_attach_to_status_icon(a->notify, appGUI->osmo_trayicon); #endif /* HAVE_LIBNOTIFY7 */ #endif /* HAVE_LIBNOTIFY */ gtk_status_icon_set_from_stock(appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_TASK); if (config.blink_on_events) { gtk_status_icon_set_blinking(appGUI->osmo_trayicon, TRUE); } } if (strlen(config.global_notification_command)) { gui_save_data_and_run_command(config.global_notification_command, appGUI); } if (item->sound_enable && sound_flag) { utl_play_alarm_sound(config.sound_alarm_repeat); sound_flag = FALSE; } #ifdef HAVE_LIBNOTIFY /* Delete alarm warning */ notify_task_delete(item->id, appGUI); if (item->ndialog_enable == TRUE) { if (!notify_notification_show(a->notify, NULL)) { g_warning("Failed to send notification"); return; } } appGUI->tsk->notifications = g_slist_prepend(appGUI->tsk->notifications, a); #endif /* HAVE_LIBNOTIFY */ } else if (tsk_show_warning_notification(item, appGUI)) { #ifdef HAVE_LIBNOTIFY datestr = utl_date_time_print_default(item->due_date_julian, item->due_time, FALSE); text = g_strdup_printf("%s\n%s", item->summary, datestr); g_free(datestr); textdesc = NULL; if (item->desc != NULL && strlen(item->desc)) textdesc = g_strdup_printf("%s\n%.100s", text, item->desc); a = g_malloc(sizeof (TASK_NTF)); a->id = item->id; a->type = NOTIFY_WARNING; a->time = -1; a->date = 0; if (textdesc != NULL) #ifdef HAVE_LIBNOTIFY7 a->notify = notify_notification_new(_("Alarm warning!"), textdesc, GTK_STOCK_DIALOG_INFO); #else a->notify = notify_notification_new(_("Alarm warning!"), textdesc, GTK_STOCK_DIALOG_INFO, NULL); #endif /* HAVE_LIBNOTIFY7 */ else #ifdef HAVE_LIBNOTIFY7 a->notify = notify_notification_new(_("Alarm warning!"), text, GTK_STOCK_DIALOG_INFO); #else a->notify = notify_notification_new(_("Alarm warning!"), text, GTK_STOCK_DIALOG_INFO, NULL); #endif /* HAVE_LIBNOTIFY7 */ notify_notification_set_timeout(a->notify, NOTIFY_EXPIRES_NEVER); notify_notification_set_urgency(a->notify, NOTIFY_URGENCY_NORMAL); if (tsk_get_category_state(item->category, STATE_TASKS, appGUI) == TRUE) notify_notification_add_action(a->notify, "show_task", _("Show task"), (NotifyActionCallback) tsk_show_task_cb, appGUI, NULL); #endif /* HAVE_LIBNOTIFY */ if (gtk_status_icon_get_visible(appGUI->osmo_trayicon)) { #ifdef HAVE_LIBNOTIFY #ifndef HAVE_LIBNOTIFY7 notify_notification_attach_to_status_icon(a->notify, appGUI->osmo_trayicon); #endif /* HAVE_LIBNOTIFY7 */ #endif /* HAVE_LIBNOTIFY */ gtk_status_icon_set_from_stock(appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_TASK); if (config.blink_on_events) { gtk_status_icon_set_blinking(appGUI->osmo_trayicon, TRUE); } } if (item->sound_enable && sound_flag) { utl_play_alarm_sound(config.sound_alarm_repeat); sound_flag = FALSE; } #ifdef HAVE_LIBNOTIFY if (item->ndialog_enable == TRUE) { if (!notify_notification_show(a->notify, NULL)) { g_warning("Failed to send notification"); return; } } appGUI->tsk->notifications = g_slist_prepend(appGUI->tsk->notifications, a); #endif /* HAVE_LIBNOTIFY */ } } } /*------------------------------------------------------------------------------*/ void notify_tasks(GUI *appGUI) { GtkTreeIter iter; TASK_ITEM *item; gint i, due_time; guint32 julian_day; gchar *priority; gboolean done; if (appGUI->tsk->notifications_enable == FALSE) { return; } #ifdef HAVE_LIBNOTIFY show_postponed_notification(appGUI); #endif /* HAVE_LIBNOTIFY */ i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, NULL, i++)) { item = tsk_get_item(&iter, appGUI); notify_task(item, appGUI); if (item->ndialog_enable == FALSE) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_DONE, &done, TA_COLUMN_DUE_DATE_JULIAN, &julian_day, TA_COLUMN_DUE_TIME, &due_time, TA_COLUMN_PRIORITY, &priority, -1); if (tsk_get_priority_index (priority) == HIGH_PRIORITY && config.tasks_high_in_bold == TRUE) /* high priority ? */ { gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DUE_DATE, get_date_time_full_str (julian_day, due_time), TA_COLUMN_COLOR, get_date_color (julian_day, due_time, done, appGUI), TA_COLUMN_BOLD, PANGO_WEIGHT_BOLD,-1); } else { gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DUE_DATE, get_date_time_full_str (julian_day, due_time), TA_COLUMN_COLOR, get_date_color (julian_day, due_time, done, appGUI), TA_COLUMN_BOLD, PANGO_WEIGHT_NORMAL,-1); } g_free (priority); } tsk_item_free(item); } } /*------------------------------------------------------------------------------*/ void ignore_offline_tasks(GUI *appGUI) { GtkTreeIter iter; TASK_ITEM *item; gint i; i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, NULL, i++)) { item = tsk_get_item(&iter, appGUI); if (item->repeat == TRUE && item->offline_ignore == TRUE) { if (utl_date_time_compare_js(item->due_date_julian, item->due_time, appGUI->run_date, appGUI->run_time) < 0) { tasks_repeat_done(&iter, item, appGUI); } } tsk_item_free(item); } } /*------------------------------------------------------------------------------*/ void notify_task_delete (guint id, GUI *appGUI) { #ifdef HAVE_LIBNOTIFY GSList *node; TASK_NTF *a; for (node = appGUI->tsk->notifications; node != NULL; node = node->next) { a = (TASK_NTF *) node->data; if (a->id == id) { notify_notification_close (a->notify, NULL); appGUI->tsk->notifications = g_slist_remove (appGUI->tsk->notifications, a); g_free (a); break; } } #endif /* HAVE_LIBNOTIFY */ } #endif /* TASKS_ENABLED */ /*------------------------------------------------------------------------------*/ gboolean time_handler (GUI *appGUI) { static gint minute = -1; static guint32 last_refresh_date = 0; gint current_minute; guint32 current_date; if (config.di_show_current_time_seconds == TRUE) { update_clock (appGUI); } current_minute = get_current_minute (); current_date = utl_date_get_current_julian (); if (minute != current_minute) { #ifdef TASKS_ENABLED /* TODO: would it be simplier to ignore all offline tasks at the program start? */ ignore_offline_tasks(appGUI); notify_tasks (appGUI); #endif /* TASKS_ENABLED */ minute = current_minute; if (config.di_show_current_time_seconds == FALSE) { update_clock (appGUI); } gui_systray_tooltip_update (appGUI); } if (current_date != last_refresh_date) { #ifdef TASKS_ENABLED refresh_tasks (appGUI); #endif /* TASKS_ENABLED */ /* update systray status */ gui_systray_update_icon (appGUI); last_refresh_date = current_date; } return TRUE; } /*------------------------------------------------------------------------------*/ gboolean check_tasks_contacts (guint32 julian_day, GUI *appGUI) { if (appGUI->calendar_only == TRUE || appGUI->all_pages_added == FALSE) { return FALSE; } #ifdef CONTACTS_ENABLED /* check contacts */ if (check_contacts (julian_day, appGUI) == TRUE) { return TRUE; } #endif /* CONTACTS_ENABLED */ #ifdef TASKS_ENABLED /* check tasks */ return tsk_check_tasks (julian_day, julian_day, STATE_CALENDAR, appGUI); #else return FALSE; #endif /* TASKS_ENABLED */ } /*------------------------------------------------------------------------------*/ #ifdef CONTACTS_ENABLED gboolean check_contacts (guint32 julian_day, GUI *appGUI) { GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; GDate *date = NULL; guint32 julian; gint age, year, flag; model = GTK_TREE_MODEL (appGUI->cnt->contacts_list_store); g_return_val_if_fail (model != NULL, FALSE); date = g_date_new (); g_return_val_if_fail (date != NULL, FALSE); year = julian_to_year (julian_day); flag = FALSE; path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, COLUMN_BIRTH_DAY_DATE, &julian, -1); if (g_date_valid_julian (julian) == TRUE) { g_date_set_julian (date, julian); age = year - g_date_get_year (date); if (age >= 0) { if (g_date_valid_dmy (g_date_get_day (date), g_date_get_month (date), year) == FALSE) { g_date_subtract_days (date, 1); } g_date_set_year (date, year); julian = g_date_get_julian (date); if (julian_day == julian) { flag = TRUE; break; } } } gtk_tree_path_next (path); } gtk_tree_path_free (path); g_date_free (date); return flag; } #endif /* CONTACTS_ENABLED */ /*------------------------------------------------------------------------------*/ void button_event_checker_window_delete_cb (GtkButton *button, gpointer user_data) {} void button_event_checker_window_close_cb (GtkButton *button, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_widget_destroy (appGUI->event_checker_window); gui_quit_osmo (appGUI); } /*------------------------------------------------------------------------------*/ void button_event_checker_show_osmo_window_cb (GtkButton *button, gpointer user_data) { GUI *appGUI = (GUI *)user_data; appGUI->check_events = FALSE; gtk_widget_destroy (appGUI->event_checker_window); gui_systray_initialize (appGUI); gtk_widget_show (appGUI->main_window); gtk_window_move (GTK_WINDOW (appGUI->main_window), config.window_x, config.window_y); } /*------------------------------------------------------------------------------*/ void event_checker_select_item (GUI *appGUI) { GtkTreeIter iter; GtkTreeModel *model; guint32 julian_day; GDate *date; date = g_date_new (); g_return_if_fail (date != NULL); if (gtk_tree_selection_get_selected (appGUI->event_checker_list_selection, &model, &iter)) { gtk_tree_model_get (model, &iter, CE_COLUMN_DATE_JULIAN, &julian_day, -1); if (g_date_valid_julian (julian_day) == TRUE) { g_date_set_julian (date, julian_day); cal_jump_to_date (date, appGUI); update_aux_calendars (appGUI); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_CALENDAR); button_event_checker_show_osmo_window_cb (NULL, appGUI); } } g_date_free (date); } /*------------------------------------------------------------------------------*/ gint event_checker_list_dbclick_cb(GtkWidget * widget, GdkEventButton * event, gpointer func_data) { GUI *appGUI = (GUI *)func_data; if ((event->type==GDK_2BUTTON_PRESS) && (event->button == 1)) { event_checker_select_item (appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint event_checker_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Return: event_checker_select_item (appGUI); return TRUE; case GDK_Escape: button_event_checker_window_close_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ static gboolean add_note_to_event_window (struct note *n, GUI *appGUI) { GtkTreeIter iter; gchar *note_str, *date_str, *stripped; note_str = cal_note_remove_empty_lines (n->note); stripped = utl_gui_text_strip_tags (note_str); g_free (note_str); date_str = g_strdup_printf ("%s\n(%s)", julian_to_str (n->date, config.date_format, config.override_locale_settings), utl_get_julian_day_name (n->date)); gtk_list_store_append (appGUI->event_checker_list_store, &iter); gtk_list_store_set (appGUI->event_checker_list_store, &iter, CE_COLUMN_DATE, date_str, CE_COLUMN_DATE_JULIAN, n->date, CE_COLUMN_EVENT_TYPE, _("Day note"), CE_COLUMN_EVENT_LINE, stripped, -1); g_free (stripped); g_free (date_str); return TRUE; } /*------------------------------------------------------------------------------*/ gboolean create_event_checker_window (GUI *appGUI) { GtkWidget *scrolledwindow; GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *close_button; GtkWidget *show_osmo_button; GtkTreeViewColumn *column, *julian_day_column; GtkCellRenderer *renderer; #if defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) GtkTreePath *path; GtkTreeIter iter; gchar date_str[BUFFER_SIZE]; guint32 j; #endif guint32 start_date, current_date; gboolean day_notes_flag, tasks_flag = FALSE; #ifdef TASKS_ENABLED gchar *summary, *category; guint32 julian_day; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED gboolean birthdays_flag; guint32 date, age; GDate *new_cdate; gchar tmpbuf[BUFFER_SIZE], template[BUFFER_SIZE]; gchar *first_name, *last_name; #endif /* CONTACTS_ENABLED */ start_date = config.lastrun_date; /* - */ current_date = utl_date_get_current_julian () + appGUI->check_ndays_events; /* + */ /* check day notes */ day_notes_flag = cal_check_notes (start_date, current_date, appGUI); #ifdef TASKS_ENABLED /* check tasks */ tasks_flag = FALSE; if (appGUI->tsk->tasks_list_store != NULL) { path = gtk_tree_path_new_first(); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, path) == TRUE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_DUE_DATE_JULIAN, &julian_day, TA_COLUMN_CATEGORY, &category, -1); j = start_date; while (j <= current_date) { if (j == julian_day && (tsk_get_category_state (category, STATE_EITHER, appGUI) == TRUE)) { tasks_flag = TRUE; break; } j++; }; if (tasks_flag == TRUE) { g_free (category); break; } g_free (category); gtk_tree_path_next(path); } gtk_tree_path_free(path); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* check birthdays */ birthdays_flag = FALSE; if (appGUI->cnt->contacts_list_store != NULL) { path = gtk_tree_path_new_first(); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, path) == TRUE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, COLUMN_BIRTH_DAY_DATE, &date, -1); if (date != 0) { new_cdate = g_date_new_julian (date); if (new_cdate != NULL) { age = g_date_get_year (appGUI->cal->date) - g_date_get_year (new_cdate); if (age >= 0) { j = start_date; while (j <= current_date) { g_date_set_year (new_cdate, julian_to_year(j)); date = g_date_get_julian (new_cdate); if (j == date) { birthdays_flag = TRUE; break; } j++; }; } g_date_free(new_cdate); } } if (birthdays_flag == TRUE) break; gtk_tree_path_next(path); } gtk_tree_path_free(path); } #endif /* CONTACTS_ENABLED */ /* any events available ? */ #ifdef CONTACTS_ENABLED if (day_notes_flag == FALSE && tasks_flag == FALSE && birthdays_flag == FALSE) { #else if (day_notes_flag == FALSE && tasks_flag == FALSE) { #endif /* CONTACTS_ENABLED */ return FALSE; /* if not then quit */ } appGUI->event_checker_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->event_checker_window), _("Events")); gtk_window_set_position (GTK_WINDOW (appGUI->event_checker_window), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW(appGUI->event_checker_window), 750, 650); gtk_window_set_modal (GTK_WINDOW (appGUI->event_checker_window), TRUE); g_signal_connect (G_OBJECT (appGUI->event_checker_window), "delete_event", G_CALLBACK(button_event_checker_window_delete_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->event_checker_window), "key_press_event", G_CALLBACK (event_checker_key_press_cb), appGUI); gtk_container_set_border_width (GTK_CONTAINER (appGUI->event_checker_window), 8); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->event_checker_window), vbox1); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); appGUI->event_checker_list_store = gtk_list_store_new (CHECK_EVENTS_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING); appGUI->event_checker_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(appGUI->event_checker_list_store)); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(appGUI->event_checker_list), TRUE); gtk_widget_show (appGUI->event_checker_list); GTK_WIDGET_SET_FLAGS (appGUI->event_checker_list, GTK_CAN_DEFAULT); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->event_checker_list); g_signal_connect(G_OBJECT(appGUI->event_checker_list), "button_press_event", G_CALLBACK(event_checker_list_dbclick_cb), appGUI); appGUI->event_checker_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->event_checker_list)); /* create columns */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes (_("Date"), renderer, "text", CE_COLUMN_DATE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->event_checker_list), column); renderer = gtk_cell_renderer_text_new(); g_object_set (G_OBJECT(renderer), "xpad", 8, NULL); julian_day_column = gtk_tree_view_column_new_with_attributes ("Julian", renderer, "text", CE_COLUMN_DATE_JULIAN, NULL); gtk_tree_view_column_set_visible (julian_day_column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->event_checker_list), julian_day_column); gtk_tree_view_column_set_sort_column_id (julian_day_column, CE_COLUMN_DATE_JULIAN); renderer = gtk_cell_renderer_text_new(); g_object_set (G_OBJECT(renderer), "xpad", 8, NULL); column = gtk_tree_view_column_new_with_attributes (_("Type"), renderer, "text", CE_COLUMN_EVENT_TYPE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->event_checker_list), column); renderer = gtk_cell_renderer_text_new(); g_object_set (G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new_with_attributes (_("Event"), renderer, "text", CE_COLUMN_EVENT_LINE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->event_checker_list), column); /* insert day notes */ if (day_notes_flag == TRUE) { cal_notes_foreach (start_date, current_date, add_note_to_event_window, appGUI); } #ifdef TASKS_ENABLED /* insert tasks */ if (tasks_flag == TRUE) { path = gtk_tree_path_new_first(); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, path) == TRUE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_DUE_DATE_JULIAN, &julian_day, TA_COLUMN_SUMMARY, &summary, TA_COLUMN_CATEGORY, &category, -1); j = start_date; while (j <= current_date) { if (j == julian_day && (tsk_get_category_state (category, STATE_EITHER, appGUI) == TRUE)) { gtk_list_store_append(appGUI->event_checker_list_store, &iter); g_snprintf (date_str, BUFFER_SIZE, "%s\n(%s)", julian_to_str (julian_day, config.date_format, config.override_locale_settings), utl_get_julian_day_name (julian_day)); gtk_list_store_set(appGUI->event_checker_list_store, &iter, CE_COLUMN_DATE, date_str, CE_COLUMN_DATE_JULIAN, julian_day, CE_COLUMN_EVENT_TYPE, _("Task"), CE_COLUMN_EVENT_LINE, summary, -1); } j++; }; g_free (summary); g_free (category); gtk_tree_path_next(path); } gtk_tree_path_free(path); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* insert birthdays */ if (birthdays_flag == TRUE) { sprintf(template, "(%s)", _("None")); path = gtk_tree_path_new_first(); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, path) == TRUE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, COLUMN_BIRTH_DAY_DATE, &date, COLUMN_FIRST_NAME, &first_name, COLUMN_LAST_NAME, &last_name, -1); if (date != 0) { new_cdate = g_date_new_julian (date); if (new_cdate != NULL) { age = g_date_get_year (appGUI->cal->date) - g_date_get_year(new_cdate); if (age >= 0) { j = start_date; while (j <= current_date) { g_date_set_year (new_cdate, julian_to_year(j)); date = g_date_get_julian (new_cdate); if (j == date) { if (g_utf8_collate(first_name, template) == 0) { sprintf(tmpbuf, "%s", last_name); } else if (g_utf8_collate(last_name, template) == 0) { sprintf(tmpbuf, "%s", first_name); } else { sprintf(tmpbuf, "%s %s", first_name, last_name); } gtk_list_store_append(appGUI->event_checker_list_store, &iter); sprintf (date_str, "%s\n(%s)", julian_to_str (j, config.date_format, config.override_locale_settings), utl_get_julian_day_name (j)); gtk_list_store_set(appGUI->event_checker_list_store, &iter, CE_COLUMN_DATE, date_str, CE_COLUMN_DATE_JULIAN, j, CE_COLUMN_EVENT_TYPE, _("Birthday"), CE_COLUMN_EVENT_LINE, tmpbuf, -1); } j++; }; } g_date_free(new_cdate); } } g_free(first_name); g_free(last_name); gtk_tree_path_next(path); } gtk_tree_path_free(path); } #endif /* CONTACTS_ENABLED */ g_signal_emit_by_name(julian_day_column, "clicked"); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 8); show_osmo_button = gtk_button_new_with_label (_("Show Osmo")); gtk_widget_show (show_osmo_button); GTK_WIDGET_UNSET_FLAGS(show_osmo_button, GTK_CAN_FOCUS); g_signal_connect(show_osmo_button, "clicked", G_CALLBACK(button_event_checker_show_osmo_window_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), show_osmo_button); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); g_signal_connect(close_button, "clicked", G_CALLBACK(button_event_checker_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), close_button); gtk_widget_show(appGUI->event_checker_window); return TRUE; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/gui_logo.h000664 001750 001750 00000262724 12561325524 015313 0ustar00pasppasp000000 000000 /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ #ifdef __SUNPRO_C #pragma align 4 (osmo_logo) #endif #ifdef __GNUC__ static const guint8 osmo_logo[] __attribute__ ((__aligned__ (4))) = #else static const guint8 osmo_logo[] = #endif { "" /* Pixbuf magic (0x47646b50) */ "GdkP" /* length: header (24) + pixel_data (28709) */ "\0\0p=" /* pixdata_type (0x2010002) */ "\2\1\0\2" /* rowstride (1920) */ "\0\0\7\200" /* width (480) */ "\0\0\1\340" /* height (175) */ "\0\0\0\257" /* pixel_data: */ "\230\377\377\377\0\5#4F\20#4F6#4FR#4Fm#4F\177\300#4F\200\5#4F|#4Fd#4" "FJ#4F/#4F\11\230\377\377\377\0\5#4F\1#4F\33#4F8#4FV#4Fm\300#4Fp\5#4F" "n#4FX#4F;#4F\36#4F\3\230\377\377\377\0\4#4F\22#4F/#4FJ#4Fe\377#4Fp\5" "#4Fo#4F^#4FB#4F'#4F\10\233\377\377\377\0\6#4F\5#4FF#4F\223#4F\270#4F" "\322#4F\354\301#4F\377\6#4F\374#4F\345#4F\311#4F\255#4Fo#4F\24\251\377" "\377\377\0\4#4F\6#4FR#4F\260#4F\372\310#4F\377\4#4F\364#4F\252#4FV#4" "F\13\223\377\377\377\0\3#4F4#4F\216#4F\346\310#4F\377\4#4F\356#4F\235" "#4FE#4F\3\222\377\377\377\0\3#4F\"#4Fv#4F\313\377#4F\377\210#4F\377\4" "#4F\365#4F\247#4FL#4F\5\226\377\377\377\0\3#4F2#4F\243#4F\357\313#4F" "\377\3#4F\372#4F\255#4F&\246\377\377\377\0\2#4F6#4F\334\316#4F\377\3" "#4F\357#4Fo#4F\4\217\377\377\377\0\2#4F*#4F\310\316#4F\377\2#4F\343#" "4FS\217\377\377\377\0\2#4F\37#4F\254\377#4F\377\216#4F\377\2#4F\340#" "4FD\223\377\377\377\0\3#4F\40#4F\245#4F\376\317#4F\377\2#4F\363#4F[\243" "\377\377\377\0\3#4F\1#4F\200#4F\373\321#4F\377\2#4F\325#4FD\214\377\377" "\377\0\3#4F\3#4Fx#4F\370\321#4F\377\2#4F\265#4F\40\213\377\377\377\0" "\3#4F\6#4F\177#4F\366\377#4F\377\221#4F\377\2#4F\232#4F\13\217\377\377" "\377\0\3#4F\1#4F~#4F\370\323#4F\377\1#4F\206\242\377\377\377\0\1#4F\271" "\324#4F\377\2#4F\376#4Fy\212\377\377\377\0\2#4F\1#4F\244\324#4F\377\2" "#4F\356#4F6\211\377\377\377\0\2#4F\14#4F\273\377#4F\377\224#4F\377\2" "#4F\271#4F\5\215\377\377\377\0\2#4F\15#4F\261\326#4F\377\1#4FT\240\377" "\377\377\0\1#4Fw\327#4F\377\2#4F\233#4F\4\210\377\377\377\0\1#4F\224" "\326#4F\377\2#4F\361#4F<\207\377\377\377\0\2#4F\23#4F\311\377#4F\377" "\226#4F\377\2#4F\244#4F\1\213\377\377\377\0\2#4FF\326\327#4F\377\2" "#4F\362#4F'\236\377\377\377\0\2#4F4#4F\376\330#4F\377\2#4F\270#4F\10" "\206\377\377\377\0\1#4F|\330#4F\377\2#4F\364#4F>\205\377\377\377\0\2" "#4F\15#4F\324\377#4F\377\230#4F\377\1#4F~\212\377\377\377\0\2#4F!#4F" "\347\331#4F\377\1#4F\271\236\377\377\377\0\1#4F\335\332#4F\377\2#4F\261" "#4F\4\204\377\377\377\0\2#4F,#4F\373\331#4F\377\2#4F\353#4F\37\204\377" "\377\377\0\1#4F\250\377#4F\377\231#4F\377\2#4F\372#4F0\210\377\377\377" "\0\2#4F\24#4F\331\333#4F\377\1#4F<\234\377\377\377\0\1#4Fm\334#4F\377" "\2#4F\240#4F\1\203\377\377\377\0\1#4F\301\333#4F\377\2#4F\317#4F\11\202" "\377\377\377\0\1#4Fj\377#4F\377\233#4F\377\2#4F\317#4F\4\206\377\377" "\377\0\2#4F\12#4F\310\334#4F\377\1#4F\355\233\377\377\377\0\2#4F\31#" "4F\370\335#4F\377\1#4F\204\202\377\377\377\0\1#4FX\335#4F\377\4#4F\241" "\377\377\377\0#4F\34#4F\370\377#4F\377\234#4F\377\1#4F\207\205\377\377" "\377\0\2#4F\3#4F\264\336#4F\377\1#4FE\231\377\377\377\0\2#4F\1#4F\273" "\336#4F\377\4#4F\374#4F2\377\377\377\0#4F\276\336#4F\377\2#4F6#4F\221" "\377#4F\377\235#4F\377\2#4F\373#4F\23\204\377\377\377\0\1#4F\227\337" "#4F\377\1#4F\306\231\377\377\377\0\1#4Ft\340#4F\377\3#4F\315#4F\36#4" "F\375\336#4F\377\2#4F\301#4F\366\377#4F\377\236#4F\377\1#4F\244\203\377" "\377\377\0\2#4F'#4F\376\337#4F\377\2#4F\376#4F$\227\377\377\377\0\2#" "4F2#4F\371\341#4F\377\1#4F\353\377#4F\377\377#4F\377\2#4F\375#4F/\202" "\377\377\377\0\1#4F\231\341#4F\377\1#4F\231\226\377\377\377\0\2#4F\13" "#4F\331\377#4F\377\377#4F\377\344#4F\377\4#4F\301\377\377\377\0#4F\6" "#4F\366\341#4F\377\2#4F\370#4F\30\225\377\377\377\0\1#4F\235\377#4F\377" "\377#4F\377\346#4F\377\2#4Fz#4F\200\343#4F\377\1#4F\210\224\377\377\377" "\0\1#4FU\377#4F\377\377#4F\377\377#4F\377\315#4F\377\2#4F\361#4F\17\222" "\377\377\377\0\2#4F\36#4F\357\377#4F\377\377#4F\377\377#4F\377\316#4" "F\377\1#4Fw\221\377\377\377\0\2#4F\3#4F\302\377#4F\377\377#4F\377\377" "#4F\377\317#4F\377\2#4F\347#4F\7\220\377\377\377\0\1#4F}\205#4F\377\202" "%6H\377\202$5G\377\377#4F\377\325#4F\377\1$5G\377\377#4F\377\361#4F\377" "\1#4Ff\215\377\377\377\0\15\377\377\377\2\377\377\377\7BP`@*:L\373.\77" "P\377Ubr\377w\204\225\377\211\227\247\377\223\241\262\377\222\243\264" "\377\204\230\254\377s\213\240\377c~\225\377\276Xu\215\377\5Vq\211\377" "Mg}\377D[q\3779Od\377&8J\377\232#4F\377\2$5G\377%6G\377\202&7H\377\12" "$5G\377+;L\377N^m\377t\203\225\377\207\227\247\377\213\233\255\377\204" "\230\253\377w\216\243\377i\202\231\377[w\217\377\276Xu\215\377\4Sn\205" "\377Jcy\377@Xm\3773H\\\377\240#4F\377\10""9HY\377kx\210\377\210\224\245" "\377\206\226\250\377\204\226\250\377|\222\246\377p\210\235\377`|\223" "\377\375Xu\215\377\5Vr\211\377Mf}\377B[q\3778Nc\377%6H\377\237#4F\377" "\10+;M\377R_o\377ix\211\377s\203\226\377w\211\233\377w\214\240\377q\211" "\237\377`{\223\377\277Xu\215\377\5Xt\213\377Oi\200\377E]t\377;Qf\377" "'9K\377\203#4F\377\2#4F\333#4F\2\213\377\377\377\0\15\377\377\377\1\377" "\377\377\15\322\326\3318t\177\213\351\252\262\276\377\320\326\341\377" "\313\326\343\377\300\317\337\377\264\307\331\377\251\277\323\377\235" "\266\314\377\221\256\306\377\205\246\300\377\303\202\244\276\377\4\177" "\241\272\377h\207\240\377Mf}\377,\77R\377\226#4F\377\15$5G\377*;K\377" "7GW\377=M]\377fr\202\377\264\275\313\377\312\322\340\377\305\322\341" "\377\272\312\334\377\256\302\326\377\243\273\317\377\227\262\311\377" "\213\252\303\377\304\202\244\276\377\3w\231\262\377]z\221\377>Uj\377" "\227#4F\377\1&7H\377\202(9J\377\12=L]\377\217\232\252\377\272\303\322" "\377\305\317\336\377\276\316\336\377\263\305\330\377\247\275\322\377" "\233\266\314\377\217\255\305\377\204\245\277\377\377\202\244\276\377" "\203\202\244\276\377\3|\235\267\377`~\227\377@Xn\377\227#4F\377\202$" "5G\377\13#4F\377'8J\377]jz\377\235\247\270\377\275\310\326\377\275\313" "\333\377\265\307\331\377\251\277\323\377\236\266\315\377\221\256\306" "\377\206\246\300\377\304\202\244\276\377\6~\240\272\377e\203\233\377" "D\\r\377$5G\377#4F\377#4FU\213\377\377\377\0\13\377\377\377\4\376\376" "\376.\317\323\332\351\362\363\370\377\361\363\370\377\341\347\360\377" "\307\324\342\377\261\305\330\377\244\274\320\377\231\263\312\377\215" "\253\304\377\310\202\244\276\377\3\177\241\272\377Xu\214\377*O\377\12x\203\220\377\317\324\340\377\322\332\350\377" "\307\324\343\377\274\313\335\377\261\304\330\377\246\275\322\377\233" "\265\314\377\216\255\306\377\202\245\277\377\310\202\244\276\377\3m\215" "\246\3771EY\377#4F\314\213\377\377\377\0\12\365\364\373&\340\343\354" "\351\363\364\371\377\372\373\375\377\372\373\374\377\352\356\364\377" "\302\322\337\377\243\273\320\377\224\260\307\377\211\250\301\377\313" "\202\244\276\377\2|\237\270\377Ok\201\377\223#4F\377\12""0AP\377\253" "\262\275\377\361\363\370\377\370\371\374\377\365\366\372\377\340\347" "\357\377\275\316\335\377\247\275\322\377\231\264\313\377\216\254\304" "\377\314\202\244\276\377\2c\201\231\377(:M\377\221#4F\377\14%6H\3776" "FV\377\224\234\247\377\355\356\364\377\360\362\370\377\344\352\362\377" "\315\330\346\377\267\310\333\377\252\300\323\377\235\267\314\377\222" "\257\306\377\206\247\301\377\377\202\244\276\377\212\202\244\276\377" "\2\200\242\273\377Ok\201\377\222#4F\377\14(8I\377@O_\377s~\212\377\316" "\324\335\377\343\347\360\377\324\335\352\377\305\322\342\377\270\311" "\333\377\256\301\326\377\241\272\317\377\225\260\310\377\210\250\302" "\377\313\202\244\276\377\3~\240\272\377E]t\377#4FD\211\377\377\377\0" "\12\361\360\371\21\341\344\357\326\341\346\360\377\360\363\370\377\372" "\373\375\377\371\372\374\377\346\354\362\377\270\312\332\377\220\256" "\305\377\203\244\276\377\316\202\244\276\377\2g\206\237\377)Uk\377\205#4F\377\1m\216\247\377\217\200\242\275\377\322" "\200\243\275\377\1|\236\271\377\205#4F\377\1,\77R\377\377\200\243\275" "\377\241\200\243\275\377\1+\77S\377\205#4F\377\1Jdz\377\225\200\243\275" "\377\315\200\243\276\377\1x\235\271d\204\377\377\377\0\1x\234\271Q\342" "\177\242\275\377\1Tq\210\377\205#4F\377\1h\207\240\377\342\177\242\275" "\377\1*=O\377\204#4F\377\1""2G\\\377\342\177\242\275\377\275\200\242" "\275\377\2\177\242\275\377$6H\377\205#4F\377\1c\202\233\377\227\200\242" "\275\377\313\200\243\275\377\1v\233\270(\204\377\377\377\0\2r\230\266" "\26~\241\274\376\240~\241\274\377\301~\242\275\377\1h\207\240\377\205" "#4F\377\1`~\226\377\224~\242\275\377\316\177\242\275\377\1""3H\\\377" "\204#4F\377\1""6Mb\377\377\177\242\275\377\240\177\242\275\377\1x\233" "\265\377\206#4F\377\1x\233\265\377\341\177\242\275\377\1~\241\274\353" "\206\377\377\377\0\1{\237\273\327\341~\241\274\377\1t\226\260\377\205" "#4F\377\1Sn\206\377\342~\241\274\377\1""6K`\377\204#4F\377\1""5K_\377" "\347~\241\274\377\270~\242\275\377\1i\212\244\377\205#4F\377\1-@S\377" "\235~\242\275\377\305\177\242\275\377\1y\236\272\253\206\377\377\377" "\0\1w\234\271\227\341}\241\274\377\2}\240\273\377'9K\377\204#4F\377\1" "D^t\377\342}\241\274\377\1""8Oc\377\204#4F\377\1""3J^\377\216}\241\274" "\377\377~\241\274\377\222~\241\274\377\1Yw\220\377\205#4F\377\1>Vk\377" "\342~\241\274\377\1u\233\270]\206\377\377\377\0\1t\232\267N\250|\240" "\274\377\272}\240\274\377\1""6K_\377\204#4F\377\1""7M`\377\342}\240\274" "\377\1;Rf\377\204#4F\377\1""1G[\377\220}\240\274\377\377}\241\274\377" "\220}\241\274\377\1Id|\377\205#4F\377\1Oj\201\377\341}\241\274\377\2" "}\240\274\371n\225\264\15\206\377\377\377\0\2m\225\264\10{\237\273\370" "\341|\240\273\377\1D]r\377\204#4F\377\1);M\377\342|\240\273\377\1=Tj" "\377\204#4F\377\1/EY\377\223|\240\273\377\334|\240\274\377\260}\240\274" "\377\1""9Pf\377\205#4F\377\1_}\226\377\341}\240\274\377\1y\236\272\303" "\210\377\377\377\0\1x\235\271\306\341{\237\273\377\1Rn\205\377\205#4" "F\377\1t\227\262\377\240{\237\273\377\301|\237\273\377\1@Xn\377\204#" "4F\377\1.BV\377\225|\237\273\377\377|\240\273\377\213|\240\273\377\1" "(;O\377\205#4F\377\1n\217\251\377\341|\240\273\377\1v\233\270z\210\377" "\377\377\0\1u\232\270\203\341{\237\273\377\1_}\226\377\205#4F\377\1i" "\211\243\377\341{\237\273\377\1BZq\377\204#4F\377\1,@S\377\377{\237\273" "\377\237{\237\273\377\1r\225\261\377\205#4F\377\2%6H\377z\235\270\377" "\252{\237\273\377\267|\237\273\377\1p\227\265%\210\377\377\377\0\1r\230" "\2668\341z\236\272\377\1k\214\246\377\205#4F\377\1[z\222\377\245z\236" "\272\377\274z\237\272\377\1C]s\377\204#4F\377\1*>Q\377\232z\237\272\377" "\377{\237\273\377\205{\237\273\377\1d\204\236\377\205#4F\377\1""3I]\377" "\341{\237\273\377\1y\235\272\333\211\377\377\377\0\2O\177\244\1x\235" "\271\356\262y\236\272\377\256z\236\272\377\2w\232\264\377$5G\377\204" "#4F\377\1Oj\201\377\341z\236\272\377\1F`w\377\204#4F\377\1(Vl\377\340u\233\270\377\1Vt\215\377\205#4F\377\1o\224\261\377" "\377u\233\270\377\235u\233\270\377\1""2G]\377\205#4F\377\1f\210\243\377" "\305u\233\270\377\233v\233\270\377\1n\225\264+\216\377\377\377\0\1p\227" "\265\215\340t\232\267\377\1BYo\377\204#4F\377\1""2FY\377\340t\232\267" "\377\1Wv\220\377\205#4F\377\1n\222\260\377\262t\232\267\377\334u\232" "\267\377\215u\233\270\377\2s\231\266\377$6H\377\204#4F\377\2#5G\377r" "\227\264\377\337u\233\270\377\1s\232\267\340\217\377\377\377\0\1n\225" "\264D\311s\232\267\377\227t\232\267\377\1Ni\200\377\204#4F\377\2%7I\377" "s\230\265\377\337t\232\267\377\1Yy\223\377\205#4F\377\1l\221\255\377" "\377t\232\267\377\234t\232\267\377\1g\213\247\377\205#4F\377\1/EX\377" "\340t\232\267\377\1q\230\265\232\217\377\377\377\0\2e\217\260\5r\231" "\266\364\337s\231\267\377\1Zx\221\377\205#4F\377\1j\215\251\377\337s" "\231\267\377\1Z{\225\377\205#4F\377\1j\216\253\377\267s\231\267\377\334" "s\232\267\377\210t\232\267\377\1Yz\224\377\205#4F\377\1\77Xn\377\340" "t\232\267\377\1n\225\264K\220\377\377\377\0\1p\227\265\274\337r\231\266" "\377\1e\206\240\377\205#4F\377\1^\177\231\377\304r\231\266\377\233s\231" "\266\377\1\\}\230\377\205#4F\377\1h\215\252\377\272s\231\266\377\341" "s\231\267\377\1Li\201\377\205#4F\377\1Mk\203\377\337s\231\267\377\2s" "\231\266\363o\226\264\5\220\377\377\377\0\1m\225\264y\337r\230\266\377" "\2n\221\255\377&6H\377\204#4F\377\1Sq\211\377\337r\230\266\377\1]\177" "\232\377\205#4F\377\1f\213\247\377\274r\230\266\377\337r\231\266\377" "\1=Vm\377\205#4F\377\1[|\227\377\323r\231\266\377\214s\231\266\377\1" "p\227\265\264\221\377\377\377\0\1k\223\262.\340q\230\266\377\1.\77R\377" "\204#4F\377\1Fbx\377\337q\230\266\377\1_\201\235\377\205#4F\377\1e\211" "\246\377\277q\230\266\377\334r\230\266\377\1.CX\377\205#4F\377\1h\214" "\251\377\337r\230\266\377\1n\225\264h\222\377\377\377\0\1o\227\265\350" "\275p\227\265\377\242q\227\265\377\1:Pc\377\204#4F\377\1;Sg\377\264q" "\227\265\377\253q\230\266\377\1a\203\237\377\205#4F\377\1c\207\243\377" "\377q\230\266\377\233q\230\266\377\2n\224\262\377#5G\377\204#4F\377\1" "':K\377\337q\230\266\377\2q\230\266\375k\223\262\26\222\377\377\377\0" "\1m\225\264\251\337p\227\265\377\1G_u\377\204#4F\377\1.CV\377\337p\227" "\265\377\1b\205\241\377\205#4F\377\1a\205\241\377\377p\227\265\377\212" "p\227\265\377\221q\227\265\377\1b\205\242\377\205#4F\377\1""6Lb\377\304" "q\227\265\377\233q\230\266\377\1o\226\265\315\223\377\377\377\0\1k\223" "\262d\302o\226\265\377\235o\227\265\377\1Qm\206\377\204#4F\377\2%5G\377" "n\223\261\377\270o\227\265\377\246p\227\265\377\1c\207\243\377\205#4" "F\377\1_\203\237\377\377p\227\265\377\233p\227\265\377\1Uu\217\377\205" "#4F\377\1D_w\377\337p\227\265\377\1m\225\263\204\223\377\377\377\0\2" "g\221\261\31o\226\264\376\336o\226\264\377\1\\|\225\377\205#4F\377\1" "e\210\244\377\273o\226\264\377\243o\226\265\377\1d\212\246\377\205#4" "F\377\1^\201\235\377\377o\226\265\377\217o\226\265\377\214o\227\265\377" "\1Gd|\377\205#4F\377\1Rq\213\377\311o\227\265\377\226p\227\265\377\1" "j\223\2622\224\377\377\377\0\1m\225\263\327\336n\226\264\377\2f\210\243" "\377$5G\377\204#4F\377\1Yz\224\377\336n\226\264\377\1e\213\250\377\205" "#4F\377\1\\\177\233\377\264n\226\264\377\346o\226\264\377\1""9Ri\377" "\205#4F\377\1^\201\235\377\314o\226\264\377\222o\226\265\377\1n\226\264" "\345\225\377\377\377\0\1k\223\262\226\310m\225\264\377\226n\225\264\377" "\2k\222\257\377):K\377\204#4F\377\1Ol\204\377\336n\225\264\377\1g\214" "\252\377\205#4F\377\1Z}\231\377\267n\225\264\377\343n\226\264\377\1+" "\77S\377\205#4F\377\1j\220\256\377\336n\226\264\377\1l\224\263\237\225" "\377\377\377\0\1i\222\261O\313m\225\263\377\224m\225\264\377\1""3EX\377" "\204#4F\377\1C^u\377\336m\225\264\377\1i\216\255\377\205#4F\377\1X{\227" "\377\377m\225\264\377\226m\225\264\377\204n\225\264\377\1i\220\256\377" "\205#4F\377\1,AT\377\337n\225\264\377\1j\222\262Q\225\377\377\377\0\2" "h\221\261\12l\224\263\371\336l\224\263\377\1\77Ui\377\204#4F\377\1""8" "Nd\377\305l\224\263\377\231m\225\263\377\1j\220\257\377\205#4F\377\1" "Wy\225\377\377m\225\263\377\231m\225\263\377\2m\225\264\377]\200\234" "\377\205#4F\377\1:Sj\377\336m\225\264\377\2m\225\263\366h\221\261\10" "\226\377\377\377\0\1j\223\262\305\336l\224\263\377\1Ic{\377\204#4F\377" "\1,\77R\377\336l\224\263\377\1k\223\261\377\205#4F\377\1Vw\223\377\377" "l\224\263\377\232l\224\263\377\1Pp\212\377\205#4F\377\1He~\377\327l\224" "\263\377\207m\225\263\377\1k\223\262\270\227\377\377\377\0\1i\222\261" "\202\321k\223\262\377\215k\224\263\377\1Tr\212\377\204#4F\377\2$5G\377" "i\217\255\377\336k\224\263\377\205#4F\377\1Tu\221\377\301k\224\263\377" "\330l\224\263\377\1C_x\377\205#4F\377\1Tu\221\377\336l\224\263\377\1" "i\222\261m\227\377\377\377\0\1f\220\2609\324j\223\262\377\212k\223\262" "\377\1^\177\231\377\205#4F\377\1_\203\237\377\336k\223\262\377\1%7J\377" "\204#4F\377\1Rs\216\377\377k\223\262\377\232k\223\262\377\1""6Nd\377" "\205#4F\377\1`\206\243\377\335k\224\263\377\2k\224\263\376f\220\260\34" "\227\377\377\377\0\2e\217\260\2i\222\262\357\335j\223\262\377\2d\211" "\245\377'8I\377\204#4F\377\1Uv\220\377\336j\223\262\377\1':L\377\204" "#4F\377\1Pr\215\377\377j\223\262\377\232j\223\262\377\1(Zq\377\336i\222\262\377" "\1e\217\2609\231\377\377\377\0\1d\217\257$\336h\221\261\377\1BYo\377" "\204#4F\377\1""4J_\377\336h\221\261\377\1-BV\377\204#4F\377\1Ll\206\377" "\315h\221\261\377\313i\222\261\377\1Lk\206\377\205#4F\377\1Kj\205\377" "\335i\222\261\377\2h\221\261\351O\177\244\1\232\377\377\377\0\1f\220" "\260\340\335g\221\261\377\1Lh\177\377\204#4F\377\1*[s\377\210c\215\256\377\377c\216\256\377\217c" "\216\256\377\2b\215\255\377$6I\377\204#4F\377\1.CX\377\243c\216\256\377" "\272c\216\257\377\1a\214\255\77\237\377\377\377\0\1a\214\255x\327b\215" "\256\377\6`\214\255\377^\212\254\377[\210\252\377Y\206\251\377V\204\250" "\377Kt\225\377\205#4F\377\1Cj\212\377\246O\177\244\377\6Q\201\245\377" "T\203\247\377W\205\250\377Z\207\252\377]\211\253\377`\213\255\377\260" "b\215\256\377\1=Yq\377\204#4F\377\1=Yq\377\346b\215\256\377\260c\215" "\256\377\1Y\200\237\377\205#4F\377\1:Ul\377\334c\215\256\377\2b\215\256" "\355e\217\260\2\237\377\377\377\0\1_\213\2540\231a\214\255\377\267a\214" "\256\377\7a\214\255\377^\212\254\377Z\207\252\377W\205\250\377U\203\247" "\377R\201\246\377P\200\244\377\205O\177\244\377\1M{\240\377\205#4F\377" "\1=`}\377\254O\177\244\377\7P\177\244\377R\201\246\377U\204\247\377X" "\206\251\377[\210\252\377^\212\254\377a\214\255\377\251b\215\256\377" "\1\77\\t\377\204#4F\377\1S\377\300O\177" "\244\377\7P\200\245\377R\201\246\377U\203\247\377W\205\250\377Z\207\252" "\377]\211\253\377_\213\254\377\225`\213\255\377\1Bb|\377\204#4F\377\1" "7Rj\377\331`\213\255\377\275`\214\255\377\1-BV\377\204#4F\377\1':M\377" "\334`\214\255\377\1`\213\255\302\242\377\377\377\0\1\\\210\253\34\276" "_\213\254\377\4^\212\254\377[\207\252\377W\205\250\377S\202\246\377\232" "O\177\244\377\1<^z\377\204#4F\377\2$5G\377N~\242\377\232O\177\244\377" "\7L{\236\377Jv\231\377Hs\225\377Fo\220\377Ck\213\377Ah\207\377\77d\202" "\377\245=a~\377\4\77b\177\377Ae\201\377Dg\203\377Gi\204\377\221Hj\205" "\377\1""7Pg\377\204#4F\377\1""7Pg\377\334_\213\254\377\271`\213\255\377" "\2^\211\252\377$5G\377\204#4F\377\1""3Ja\377\334`\213\255\377\1_\213" "\254w\243\377\377\377\0\1^\212\254\327\272^\212\254\377\3Z\207\252\377" "V\204\250\377S\202\246\377\236O\177\244\377\1Bi\210\377\205#4F\377\1" "Ht\226\377\225O\177\244\377\5Ly\235\377Bj\211\3779Zv\3770Kc\377(Zs\377\334_\213\254\377\1]\211\253(\243" "\377\377\377\0\1]\211\253\225\265^\212\254\377\4]\211\253\377Z\207\252" "\377V\204\250\377R\201\246\377\242O\177\244\377\1It\227\377\205#4F\377" "\1Bh\210\377\223O\177\244\377\3Lz\236\3776Up\377$5H\377\312#4F\377\1" "4Md\377\377^\212\254\377\226^\212\254\377\1Jm\211\377\205#4F\377\1Gi" "\205\377\241^\212\254\377\272_\212\254\377\1^\212\254\334\244\377\377" "\377\0\1\\\210\253O\262]\211\253\377\3Y\207\251\377V\204\250\377R\201" "\246\377\246O\177\244\377\2N~\243\377$5H\377\204#4F\377\1;]z\377\222" "O\177\244\377\2Ag\206\377&:M\377\314#4F\377\5/H_\377S\202\246\377V\204" "\250\377X\206\251\377[\207\252\377\203]\211\253\377\377^\212\254\377" "\217^\212\254\377\1@^w\377\205#4F\377\1Qx\226\377\333^\212\254\377\1" "]\211\253\222\244\377\377\377\0\2[\210\252\15\\\211\253\372\223\\\211" "\253\377\231]\211\253\377\4[\210\252\377X\206\251\377U\204\247\377R\201" "\246\377\253O\177\244\377\1*@U\377\204#4F\377\1""5Rl\377\221O\177\244" "\377\2M{\237\377&9L\377\315#4F\377\1.F\\\377\205O\177\244\377\5Q\200" "\245\377S\202\246\377V\204\247\377X\205\251\377Z\207\252\377\377]\211" "\253\377\214]\211\253\377\1""5Nf\377\205#4F\377\1[\206\247\377\333]\211" "\253\377\1\\\211\253E\245\377\377\377\0\1[\210\252\304\247\\\210\253" "\377\5[\210\252\377Y\206\251\377V\204\250\377S\202\246\377P\200\245\377" "\257O\177\244\377\1""0Kc\377\204#4F\377\1.G^\377\221O\177\244\377\1F" "p\221\377\316#4F\377\1-E[\377\213O\177\244\377\6Q\200\245\377S\202\246" "\377U\204\247\377X\205\250\377Z\207\252\377\\\210\253\377\327\\\211\253" "\377\255]\211\253\377\1*\77S\377\204#4F\377\1+@U\377\333]\211\253\377" "\2[\210\252\361[\210\252\4\245\377\377\377\0\1Z\207\252\201\243[\210" "\252\377\4Y\206\251\377W\205\250\377T\203\247\377Q\201\245\377\264O\177" "\244\377\1""7Vq\377\204#4F\377\1(b\200\377\205#4F\377\1M|\240\377\221O\177\244\377\1@" "f\205\377\315#4F\377\1+BX\377\227O\177\244\377\6Q\200\245\377S\202\246" "\377U\203\247\377W\205\250\377Y\206\251\377[\207\252\377\367[\210\252" "\377\1Ow\225\377\205#4F\377\1@_z\377\256[\210\252\377\246\\\210\253\377" "\4Z\207\252\377W\205\250\377S\202\246\377P\177\244\377\203O\177\244\377" "\1O\177\244\\\246\377\377\377\0\13O\177\244\3S\202\246\360S\202\246\377" "T\203\247\377U\203\247\377U\204\247\377V\204\250\377W\205\250\377X\205" "\251\377X\206\251\377Y\206\251\377\205Z\207\252\377\4Z\207\251\377Y\206" "\251\377X\206\251\377X\205\251\377\202W\205\250\377\6V\204\250\377U\204" "\247\377U\203\247\377T\203\247\377R\201\246\377Q\200\245\377\300O\177" "\244\377\1Dm\216\377\205#4F\377\1Gq\223\377\222O\177\244\377\2\77e\203" "\377*AV\377\313#4F\377\1*AV\377\235O\177\244\377\6P\200\245\377R\201" "\246\377T\203\247\377V\204\250\377X\206\251\377Z\207\252\377\315[\207" "\252\377\244[\210\252\377\1Fh\204\377\205#4F\377\1In\213\377\321[\210" "\252\377\3Y\206\251\377U\203\247\377Q\201\245\377\206O\177\244\377\2" "O\177\244\375O\177\244\23\247\377\377\377\0\1O\177\244\256\212O\177\244" "\377\3P\177\244\377P\200\245\377P\177\244\377\315O\177\244\377\1Ky\234" "\377\205#4F\377\1Af\205\377\224O\177\244\377\3Ag\206\377/I`\377':N\377" "\310#4F\377\1*\77T\377\243O\177\244\377\7P\200\245\377R\201\246\377T" "\202\246\377U\204\247\377W\205\250\377X\206\251\377Y\207\251\377\352" "Z\207\252\377\1;Zs\377\205#4F\377\1S{\235\377\315Z\207\252\377\4X\205" "\250\377U\203\247\377R\201\246\377P\200\244\377\211O\177\244\377\1O\177" "\244\304\250\377\377\377\0\1O\177\244j\333O\177\244\377\1&8L\377\204" "#4F\377\1:[w\377\227O\177\244\377\12Kx\233\377Cj\212\377;]y\3774Qj\377" "1Le\377/Ia\377.F\\\377+BX\377*\77T\377(S\377\252O\177\244\377\10P\200" "\244\377Q\200\245\377R\201\246\377T\202\246\377U\203\247\377V\204\250" "\377X\205\250\377Y\206\251\377\303Y\207\251\377\237Z\207\251\377\1""2" "Kb\377\204#4F\377\2%7J\377Y\206\250\377\266Z\207\251\377\222Z\207\252" "\377\4Y\206\251\377V\204\250\377T\202\246\377Q\201\245\377\216O\177\244" "\377\1O\177\244x\250\377\377\377\0\1O\177\244%\333O\177\244\377\1,DZ" "\377\204#4F\377\1""4Pi\377\323O\177\244\377\4Lz\236\377Dl\215\377<]z" "\377,AW\377\210#4F\377\1(=Q\377\262O\177\244\377\10P\177\244\377Q\200" "\245\377R\201\246\377S\202\246\377U\203\247\377V\204\250\377W\205\250" "\377X\206\251\377\332Y\206\251\377\1(;O\377\204#4F\377\1.F\\\377\305" "Y\206\251\377\4W\205\250\377U\203\247\377S\202\246\377P\200\245\377\222" "O\177\244\377\1O\177\244,\251\377\377\377\0\1O\177\244\340\332O\177\244" "\377\1""3Oh\377\204#4F\377\1-E\\\377\326O\177\244\377\3N~\242\3779Yt" "\377#5H\377\206#4F\377\1'Q\377\204#4F\377\1M{\237\377\377O\177\244\377\222O\177" "\244\377\1""3Pi\377\204#4F\377\2$6I\377N~\243\377\331O\177\244\377\1" "O\177\2443\256\377\377\377\0\1O\177\2440\331O\177\244\377\1Iu\230\377" "\205#4F\377\1Em\216\377\331O\177\244\377\1)@T\377\204#4F\377\1Lz\235" "\377\377O\177\244\377\222O\177\244\377\1,CX\377\204#4F\377\1+BX\377\331" "O\177\244\377\2O\177\244\346O\177\244\1\256\377\377\377\0\2O\177\244" "\1O\177\244\352\330O\177\244\377\2O~\243\377$6I\377\204#4F\377\1>b\200" "\377\331O\177\244\377\1+BW\377\204#4F\377\1Ky\234\377\377O\177\244\377" "\221O\177\244\377\2O~\243\377%7I\377\204#4F\377\1""3Pi\377\331O\177\244" "\377\1O\177\244\233\260\377\377\377\0\1O\177\244\247\331O\177\244\377" "\1*AV\377\204#4F\377\1""8Wr\377\331O\177\244\377\1,C[\377\204#4F\377" "\1Jw\232\377\377O\177\244\377\221O\177\244\377\1It\226\377\205#4F\377" "\1;]z\377\331O\177\244\377\1O\177\244O\260\377\377\377\0\1O\177\244b" "\331O\177\244\377\1""1Ld\377\204#4F\377\1""1Ld\377\331O\177\244\377\1" "*AW\377\204#4F\377\1Jv\231\377\377O\177\244\377\221O\177\244\377\1Ag" "\206\377\205#4F\377\1Ck\213\377\330O\177\244\377\2O\177\244\367O\177" "\244\13\260\377\377\377\0\1O\177\244\36\331O\177\244\377\1""8Wr\377\204" "#4F\377\1+AW\377\331O\177\244\377\1+BW\377\204#4F\377\1It\227\377\377" "O\177\244\377\221O\177\244\377\1""9Zv\377\205#4F\377\1Kx\234\377\330" "O\177\244\377\1O\177\244\266\262\377\377\377\0\1O\177\244\331\330O\177" "\244\377\1>c\201\377\204#4F\377\1%7I\377\331O\177\244\377\1,DZ\377\204" "#4F\377\1Hs\225\377\377O\177\244\377\221O\177\244\377\1""2Mf\377\204" "#4F\377\1':N\377\331O\177\244\377\1O\177\244j\262\377\377\377\0\1O\177" "\244\224\330O\177\244\377\1En\217\377\205#4F\377\1Jv\231\377\330O\177" "\244\377\1-F\\\377\204#4F\377\1Gr\223\377\377O\177\244\377\221O\177\244" "\377\1*@U\377\204#4F\377\1/H_\377\331O\177\244\377\1O\177\244\36\262" "\377\377\377\0\1O\177\244O\330O\177\244\377\1Ly\235\377\205#4F\377\1" "Ck\213\377\330O\177\244\377\1/H_\377\204#4F\377\1Gq\222\377\377O\177" "\244\377\220O\177\244\377\2N}\242\377$5G\377\204#4F\377\1""6Up\377\330" "O\177\244\377\1O\177\244\322\263\377\377\377\0\2O\177\244\16O\177\244" "\373\330O\177\244\377\1&:M\377\204#4F\377\1=`}\377\330O\177\244\377\1" "0Ja\377\204#4F\377\1Fo\220\377\377O\177\244\377\220O\177\244\377\1Gq" "\223\377\205#4F\377\1>c\201\377\330O\177\244\377\1O\177\244\206\264\377" "\377\377\0\1O\177\244\306\330O\177\244\377\1-E[\377\204#4F\377\1.G^\377" "\267:\\x\377\10;]z\377=`}\377\77c\201\377Af\205\377Bj\211\377Dl\215\377" "Fp\221\377Ky\234\377\231O\177\244\377\1""1Lc\377\204#4F\377\1En\217\377" "\257O\177\244\377\4Lz\235\377\77e\203\377Bj\211\377M|\241\377\263O\177" "\244\377\4M|\241\377Bi\210\377@e\204\377Lz\236\377\245O\177\244\377\1" "\77e\203\377\205#4F\377\1Fp\222\377\330O\177\244\377\1O\177\244:\264" "\377\377\377\0\1O\177\244\201\330O\177\244\377\1""4Pi\377\304#4F\377" "\5'S\377\256O\177\244\377\2Gq\223\377$5G\377\206#4F\377" "\1(=Q\377\243O\177\244\377\1)>R\377\204#4F\377\1""2Nf\377\330O\177\244" "\377\1O\177\244U\266\377\377\377\0\1O\177\244\263\327O\177\244\377\1" "Hr\224\377\313#4F\377\1.F]\377\221O\177\244\377\1""5Sm\377\204#4F\377" "\1Bi\210\377\254O\177\244\377\1""7Wq\377\210#4F\377\1Iu\230\377\255O" "\177\244\377\1""5Sl\377\210#4F\377\1Ly\235\377\241O\177\244\377\1M|\240" "\377\205#4F\377\1:[w\377\327O\177\244\377\2O\177\244\372O\177\244\17" "\266\377\377\377\0\1O\177\244n\327O\177\244\377\2N}\241\377#5G\377\312" "#4F\377\1$6H\377\221O\177\244\377\1""6Up\377\204#4F\377\1Ag\207\377\254" "O\177\244\377\1)\77S\377\210#4F\377\1\77c\201\377\254O\177\244\377\2" "M|\240\377%8K\377\210#4F\377\1Dl\215\377\241O\177\244\377\1Fo\220\377" "\205#4F\377\1Bi\210\377\327O\177\244\377\1O\177\244\275\267\377\377\377" "\0\1O\177\244)\330O\177\244\377\1)>R\377\312#4F\377\1,DZ\377\221O\177" "\244\377\1""8Wr\377\204#4F\377\1@f\205\377\253O\177\244\377\1Gr\223\377" "\211#4F\377\1""4Qk\377\254O\177\244\377\1\77c\201\377\211#4F\377\1=`" "}\377\241O\177\244\377\1>b\200\377\205#4F\377\1Jv\231\377\327O\177\244" "\377\1O\177\244q\270\377\377\377\0\1O\177\244\344\327O\177\244\377\1" "/I`\377\311#4F\377\2,CY\377Hs\225\377\221O\177\244\377\1""9Yu\377\204" "#4F\377\1@e\203\377\253O\177\244\377\1\77d\202\377\211#4F\377\1""0Jb" "\377\254O\177\244\377\1""4Pi\377\211#4F\377\1<_|\377\241O\177\244\377" "\1""6Up\377\204#4F\377\1&8L\377\330O\177\244\377\1O\177\244%\270\377" "\377\377\0\1O\177\244\240\327O\177\244\377\1""6To\377\307#4F\377\2,C" "Y\377Bh\207\377\223O\177\244\377\1:[w\377\204#4F\377\1\77d\202\377\253" "O\177\244\377\1:\\x\377\211#4F\377\1/I`\377\254O\177\244\377\1+BX\377" "\211#4F\377\1\77c\201\377\241O\177\244\377\1/H_\377\204#4F\377\1.F\\" "\377\327O\177\244\377\1O\177\244\331\271\377\377\377\0\1O\177\244[\327" "O\177\244\377\1=`}\377\275#4F\377\12$5G\377%8K\377';N\377)>S\377+AW\377" "-F\\\3775Rl\377=`}\377Em\216\377M{\237\377\225O\177\244\377\1;]z\377" "\204#4F\377\1>b\200\377\253O\177\244\377\1""6Tn\377\211#4F\377\1.G^\377" "\253O\177\244\377\2N~\243\377$6I\377\211#4F\377\1Ag\207\377\241O\177" "\244\377\1';O\377\204#4F\377\1""5Sm\377\327O\177\244\377\1O\177\244\215" "\271\377\377\377\0\2O\177\244\27O\177\244\376\225O\177\244\377\13N}\241" "\377Fp\221\377>b\200\3775Sm\3771Ld\377/I`\377-F\\\377+BX\377*\77T\377" "(S\377+AW\377,DZ\377.G^\3770Jb\377" "3Ng\3779Zv\377Ag\206\377It\227\377O~\243\377\221O\177\244\377\1Ck\213" "\377\204#4F\377\1-E[\377\267L{\236\377\1N}\241\377\237O\177\244\377\1" "<_|\377\204#4F\377\1=a~\377\253O\177\244\377\1""1Lc\377\211#4F\377\1" ".F\\\377\253O\177\244\377\1Hs\225\377\212#4F\377\1Dl\214\377\240O\177" "\244\377\1Lz\235\377\205#4F\377\1=a~\377\226O\177\244\377\12Iu\227\377" "Ah\207\377:[v\3773Oh\3770Kb\377.G^\377-D[\377+AW\377)>S\377';O\377\233" "&9L\377\12(a\177" "\377Fp\221\377N}\241\377\222O\177\244\377\1O\177\244A\272\377\377\377" "\0\1O\177\244\321\223O\177\244\377\3\77e\203\377+BX\377$5G\377\256#4" "F\377\4%7J\377-E\\\377\77d\202\377N~\242\377\216O\177\244\377\1Jv\231" "\377\204#4F\377\1(S\377\221O\177\244\377\1@e\203\377\267#4F\377\1""3Oh\377\215" "O\177\244\377\1O\177\244\\\273\377\377\377\0\2O\177\244\12O\177\244\371" "\220O\177\244\377\1""0Ja\377\267#4F\377\1)>R\377\215O\177\244\377\1""2" "Me\377\204#4F\377\1Ag\205\377\326O\177\244\377\1Ag\206\377\204#4F\377" "\1:\\x\377\253O\177\244\377\1&:M\377\211#4F\377\1""3Pi\377\253O\177\244" "\377\1/I`\377\211#4F\377\1+AV\377\241O\177\244\377\1.F\\\377\204#4F\377" "\1""1Lc\377\220O\177\244\377\2M{\237\377&9L\377\267#4F\377\1""4Qj\377" "\214O\177\244\377\2O\177\244\375O\177\244\23\274\377\377\377\0\1O\177" "\244\276\220O\177\244\377\2Gr\223\377$6I\377\266#4F\377\1%7J\377\215" "O\177\244\377\1""8Xt\377\204#4F\377\1:\\x\377\326O\177\244\377\1Bi\210" "\377\204#4F\377\1""9Zv\377\253O\177\244\377\1%7I\377\211#4F\377\1""6" "Tn\377\253O\177\244\377\1*@U\377\211#4F\377\1""0Jb\377\241O\177\244\377" "\1&9L\377\204#4F\377\1""9Yt\377\220O\177\244\377\1Ky\234\377\267#4F\377" "\2':N\377Kx\233\377\214O\177\244\377\1O\177\244\304\275\377\377\377\0" "\1O\177\244z\221O\177\244\377\2<_|\377$5H\377\265#4F\377\1:[v\377\215" "O\177\244\377\1\77d\202\377\204#4F\377\1""4Qj\377\326O\177\244\377\1" "Ck\213\377\204#4F\377\1""9Yt\377\253O\177\244\377\212#4F\377\1""8Xs\377" "\253O\177\244\377\1%7J\377\211#4F\377\1""6Tn\377\240O\177\244\377\1K" "w\232\377\205#4F\377\1Ag\205\377\221O\177\244\377\1""3Oh\377\265#4F\377" "\2%8K\377Cj\211\377\215O\177\244\377\1O\177\244x\275\377\377\377\0\1" "O\177\2445\222O\177\244\377\3Jw\232\3777Wq\377&8L\377\261#4F\377\2,D" "Z\377En\217\377\216O\177\244\377\1Fo\220\377\204#4F\377\1.F\\\377\326" "O\177\244\377\1Dm\215\377\204#4F\377\1""8Xs\377\252O\177\244\377\1M|" "\240\377\212#4F\377\1:\\x\377\252O\177\244\377\1Ky\234\377\212#4F\377" "\1;]z\377\240O\177\244\377\1Cj\212\377\205#4F\377\1It\226\377\222O\177" "\244\377\2Ag\205\377)>R\377\261#4F\377\3(=Q\377;]z\377M{\237\377\216" "O\177\244\377\1O\177\244,\275\377\377\377\0\2O\177\244\2O\177\244\355" "\223O\177\244\377\6M{\237\377Bj\211\377;]y\3773Oh\377+BX\377$6I\377\247" "#4F\377\5$6H\377+BX\3774Qj\377<_{\377En\216\377\220O\177\244\377\1Lz" "\236\377\204#4F\377\1';O\377\326O\177\244\377\1Fo\220\377\204#4F\377" "\1""7Vq\377\252O\177\244\377\1Ly\235\377\212#4F\377\1=`}\377\252O\177" "\244\377\1Fp\221\377\212#4F\377\1Ag\206\377\240O\177\244\377\1;]z\377" "\204#4F\377\2%7J\377O~\243\377\223O\177\244\377\5N}\241\377Cj\211\377" ":[w\3772Mf\377)\77T\377\250#4F\377\6&8L\377-E\\\3775Rl\377=`}\377Dm\215" "\377N~\243\377\217O\177\244\377\1O\177\244\337\277\377\377\377\0\1O\177" "\244\253\230O\177\244\377\10N~\243\377Ky\234\377Iu\227\377Gq\223\377" "En\217\377Ck\213\377Ag\206\377\77d\202\377\232\77c\201\377\7Ag\205\377" "Cj\212\377En\216\377Gq\223\377Iu\227\377Kx\234\377N~\242\377\225O\177" "\244\377\1':N\377\204#4F\377\1M{\240\377\325O\177\244\377\1Gq\222\377" "\204#4F\377\1""6Up\377\252O\177\244\377\1Jv\231\377\212#4F\377\1\77d" "\202\377\252O\177\244\377\1Ag\205\377\212#4F\377\1Gq\222\377\240O\177" "\244\377\1""4Pi\377\204#4F\377\1,DZ\377\231O\177\244\377\7M|\240\377" "Kw\232\377Ht\226\377Fp\222\377Dm\215\377Bi\211\377@f\204\377\232\77c" "\201\377\7\77e\203\377Bh\207\377Dl\214\377Fo\220\377Hr\224\377Jv\231" "\377Ly\235\377\225O\177\244\377\1O\177\244\224\277\377\377\377\0\1O\177" "\244g\326O\177\244\377\1.F\\\377\204#4F\377\1Gq\222\377\325O\177\244" "\377\1Hs\225\377\204#4F\377\1""6Tn\377\252O\177\244\377\1Hs\225\377\212" "#4F\377\1Bh\207\377\252O\177\244\377\1;]z\377\212#4F\377\1Lz\236\377" "\240O\177\244\377\1,CY\377\204#4F\377\1""4Qk\377\326O\177\244\377\1O" "\177\244H\277\377\377\377\0\1O\177\244\"\326O\177\244\377\1""4Qj\377" "\204#4F\377\1@f\205\377\325O\177\244\377\1Iu\227\377\204#4F\377\1""5" "Sl\377\252O\177\244\377\1Fp\221\377\212#4F\377\1Dl\214\377\252O\177\244" "\377\1""6To\377\211#4F\377\1&8L\377\241O\177\244\377\1%7J\377\204#4F" "\377\1<_|\377\325O\177\244\377\2O\177\244\364O\177\244\7\300\377\377" "\377\0\1O\177\244\335\325O\177\244\377\1;]y\377\204#4F\377\1:[w\377\325" "O\177\244\377\1Jv\231\377\204#4F\377\1""4Qj\377\252O\177\244\377\1Dm" "\216\377\212#4F\377\1Fp\222\377\252O\177\244\377\1""1Kc\377\211#4F\377" "\1+BX\377\240O\177\244\377\1Iu\227\377\205#4F\377\1Dl\215\377\325O\177" "\244\377\1O\177\244\257\301\377\377\377\0\1O\177\244\230\325O\177\244" "\377\1Ah\207\377\204#4F\377\1""4Pi\377\325O\177\244\377\1Ky\234\377\204" "#4F\377\1""3Pi\377\252O\177\244\377\1Cj\212\377\212#4F\377\1It\226\377" "\252O\177\244\377\1+BX\377\211#4F\377\1""1Lc\377\240O\177\244\377\1A" "h\207\377\205#4F\377\1Lz\235\377\325O\177\244\377\1O\177\244c\301\377" "\377\377\0\1O\177\244S\325O\177\244\377\1Hs\225\377\204#4F\377\1-E\\" "\377\325O\177\244\377\1L{\236\377\204#4F\377\1""3Ng\377\252O\177\244" "\377\1Ag\206\377\212#4F\377\1Kx\234\377\252O\177\244\377\1&9L\377\211" "#4F\377\1""6Up\377\240O\177\244\377\1:[w\377\204#4F\377\1(a\177\377\211#4F\377" "\1$5G\377\252O\177\244\377\1Gr\224\377\212#4F\377\1Bh\210\377\240O\177" "\244\377\1+AV\377\204#4F\377\1""8Wr\377\325O\177\244\377\1O\177\244\177" "\303\377\377\377\0\1O\177\244\205\325O\177\244\377\1""0Jb\377\204#4F" "\377\1Fp\222\377\325O\177\244\377\1$5G\377\203#4F\377\1""0Kb\377\252" "O\177\244\377\1<^{\377\211#4F\377\1&9L\377\252O\177\244\377\1Bi\210\377" "\212#4F\377\1Gr\223\377\237O\177\244\377\2N~\242\377$5H\377\204#4F\377" "\1\77e\203\377\325O\177\244\377\1O\177\2443\303\377\377\377\0\1O\177" "\244@\325O\177\244\377\1""6Up\377\204#4F\377\1@e\204\377\325O\177\244" "\377\1%7J\377\203#4F\377\1""0Ia\377\252O\177\244\377\1:[w\377\211#4F" "\377\1(=Q\377\252O\177\244\377\1=`}\377\212#4F\377\1M{\240\377\237O\177" "\244\377\1Hr\224\377\205#4F\377\1Gr\224\377\324O\177\244\377\2O\177\244" "\346O\177\244\1\303\377\377\377\0\2O\177\244\6O\177\244\365\324O\177" "\244\377\1=a~\377\204#4F\377\1:[v\377\325O\177\244\377\1&9L\377\203#" "4F\377\1/H_\377\252O\177\244\377\1""8Xt\377\211#4F\377\1+AW\377\252O" "\177\244\377\1""7Wq\377\211#4F\377\1&:M\377\240O\177\244\377\1@e\204" "\377\204#4F\377\2$6H\377N~\242\377\324O\177\244\377\1O\177\244\233\305" "\377\377\377\0\1O\177\244\267\324O\177\244\377\1Dl\214\377\204#4F\377" "\1""3Pi\377\325O\177\244\377\1';O\377\203#4F\377\1.G^\377\252O\177\244" "\377\1""7Vp\377\211#4F\377\1-E\\\377\252O\177\244\377\1""2Nf\377\211" "#4F\377\1,CY\377\240O\177\244\377\1""8Xt\377\204#4F\377\1+BW\377\325" "O\177\244\377\1O\177\244N\305\377\377\377\0\1O\177\244r\324O\177\244" "\377\1Kw\232\377\204#4F\377\1-E[\377\325O\177\244\377\1(=Q\377\203#4" "F\377\1-E\\\377\252O\177\244\377\1""5Sl\377\211#4F\377\1""0Ia\377\252" "O\177\244\377\1-D[\377\211#4F\377\1""1Me\377\240O\177\244\377\1""1Lc" "\377\204#4F\377\1""3Oh\377\324O\177\244\377\2O\177\244\367O\177\244\12" "\304\377\377\377\0\2\312\323\343\2j\221\2627\205U\203\247\377\1Q\201" "\245\377\311O\177\244\377\1Q\200\245\377\205U\203\247\377\2-\77Q\377" "$5G\377\202#4F\377\1.AT\377\205U\203\247\377\1R\201\245\377\312O\177" "\244\377\205U\203\247\377\2""1F[\377&7I\377\202#4F\377\1""3K`\377\205" "U\203\247\377\1Q\201\245\377\236O\177\244\377\1P\200\245\377\205U\203" "\247\377\2:Vo\377%6H\377\207#4F\377\2%6H\3779Sl\377\205U\203\247\377" "\1P\200\244\377\236O\177\244\377\1P\200\245\377\205U\203\247\377\2/B" "V\377%6H\377\207#4F\377\2%6H\377>\\v\377\205U\203\247\377\1P\200\245" "\377\224O\177\244\377\1P\200\245\377\205U\203\247\377\2""1FZ\377&7I\377" "\202#4F\377\2&7I\377Bc~\377\205U\203\247\377\312O\177\244\377\205U\203" "\247\377\2W\204\250\271\312\323\343\10\304\377\377\377\0\3\310\322\342" "\0\310\322\342\25[\207\252\352\204Z\206\252\377\1V\204\250\377\311O\177" "\244\377\1Q\200\245\377\205Z\206\252\377\2:Pd\377'8J\377\202#4F\377\2" "0@R\377W\202\244\377\204Z\206\252\377\1V\204\250\377\312O\177\244\377" "\205Z\206\252\377\2""9Nc\377)9K\377\202#4F\377\1:Pd\377\205Z\206\252" "\377\1T\202\246\377\236O\177\244\377\1R\201\245\377\205Z\206\252\377" "\2\77Xp\377%6H\377\207#4F\377\2(9K\377A]v\377\205Z\206\252\377\1P\200" "\245\377\236O\177\244\377\1S\202\246\377\204Z\206\252\377\3Y\205\247" "\3772BT\377$5G\377\207#4F\377\2):L\377Jj\206\377\205Z\206\252\377\1P" "\177\244\377\224O\177\244\377\1S\202\246\377\204Z\206\252\377\3X\204" "\246\3772CU\377&6H\377\202#4F\377\2+P\377\202#4F\377\1I]q\377\205i\221" "\261\377\1\\\210\253\377\236O\177\244\377\1Y\206\251\377\205i\221\261" "\377\2Ncx\377%6G\377\207#4F\377\2""5FW\377Zw\221\377\204i\221\261\377" "\1h\220\260\377\237O\177\244\377\1e\216\257\377\204i\221\261\377\2\\" "{\225\377;K]\377\210#4F\377\2@Qb\377h\217\257\377\204i\221\261\377\1" "`\213\255\377\225O\177\244\377\1h\220\261\377\204i\221\261\377\2Wq\212" "\3778IZ\377\202#4F\377\2%6H\377Pf{\377\205i\221\261\377\1Z\207\252\377" "\310O\177\244\377\1X\205\251\377\205i\221\261\377\2x\233\271\242\302" "\316\336\31\307\377\377\377\0\2\300\315\335P\377\202#4F\377\1Nat\377\205n\224\264\377\1`\213\254\377\236" "O\177\244\377\1\\\210\253\377\205n\224\264\377\1Sg{\377\210#4F\377\2" ";L]\377b\177\231\377\204n\224\264\377\1k\222\262\377\237O\177\244\377" "\1m\224\263\377\204n\224\264\377\2^y\221\3779J\\\377\210#4F\377\1Oas" "\377\205n\224\264\377\1_\212\254\377\224O\177\244\377\1T\202\246\377" "\205n\224\264\377\2Wm\202\3774EV\377\202#4F\377\2,=O\377\\v\215\377\205" "n\224\264\377\1W\205\250\377\310O\177\244\377\1f\217\257\377\205n\224" "\264\377\2\225\260\310p\300\315\335\10\307\377\377\377\0\2\276\313\333" "1\201\242\275\264\204s\227\266\377\2r\227\265\377Q\200\245\377\310O\177" "\244\377\1e\216\257\377\204s\227\266\377\2q\225\262\377N^o\377\202#4" "F\377\2%6H\377[o\203\377\205s\227\266\377\1a\213\255\377\310O\177\244" "\377\1V\204\250\377\205s\227\266\377\2^t\211\377.>P\377\202#4F\377\1" "Rdw\377\205s\227\266\377\1c\215\256\377\236O\177\244\377\1_\212\254\377" "\205s\227\266\377\1Wj}\377\210#4F\377\2BRc\377i\206\240\377\204s\227" "\266\377\1m\223\263\377\236O\177\244\377\1S\202\246\377\205s\227\266" "\377\2`x\216\3776FX\377\207#4F\377\2'8J\377\\o\204\377\205s\227\266\377" "\1]\211\253\377\224O\177\244\377\1^\212\254\377\205s\227\266\377\2Xj" "}\377->P\377\202#4F\377\2""7GY\377g\204\235\377\205s\227\266\377\1S\201" "\246\377\307O\177\244\377\1T\202\246\377\205s\227\266\377\2u\231\267" "\361\273\311\332B\310\377\377\377\0\3\274\312\332\36\227\260\310\215" "x\233\270\377\204w\232\270\377\1^\212\254\377\310O\177\244\377\1e\216" "\257\377\205w\232\270\377\1Xk~\377\203#4F\377\2\\m\177\377\200\240\275" "\377\204w\232\270\377\1n\224\263\377\310O\177\244\377\1Y\206\251\377" "\205w\232\270\377\2dz\220\377->P\377\202#4F\377\1Tgy\377\205w\232\270" "\377\1g\220\260\377\236O\177\244\377\1c\215\256\377\205w\232\270\377" "\1Yk}\377\210#4F\377\2GWi\377o\215\247\377\204w\232\270\377\1o\225\264" "\377\236O\177\244\377\1[\207\252\377\205w\232\270\377\2bw\213\3770AR" "\377\207#4F\377\2/\77Q\377d{\220\377\205w\232\270\377\1Y\206\251\377" "\224O\177\244\377\1m\224\263\377\204w\232\270\377\3u\227\264\377Xhy\377" "$5G\377\202#4F\377\2BRd\377q\221\254\377\204w\232\270\377\1u\231\267" "\377\310O\177\244\377\1d\215\256\377\205w\232\270\377\2\203\243\276\303" "\274\312\332$\310\377\377\377\0\4\272\311\331\7\304\320\337\203\225\260" "\307\375\207\246\301\377\203{\235\272\377\1q\226\265\377\310O\177\244" "\377\1d\216\257\377\205{\235\272\377\1f{\217\377\203#4F\377\4[iz\377" "\230\261\307\377\215\251\303\377\177\240\274\377\202{\235\272\377\2z" "\235\271\377Q\200\245\377\307O\177\244\377\1`\212\254\377\205{\235\272" "\377\2k\201\226\377(9K\377\202#4F\377\3n~\216\377\224\257\307\377\207" "\245\300\377\203{\235\272\377\1o\225\264\377\236O\177\244\377\1f\217" "\260\377\205{\235\272\377\1[m\177\377\210#4F\377\2M^o\377u\223\255\377" "\204{\235\272\377\1q\226\265\377\236O\177\244\377\1g\220\260\377\205" "{\235\272\377\2dw\211\377'8J\377\207#4F\377\2""8I[\377n\207\235\377\205" "{\235\272\377\1U\203\247\377\223O\177\244\377\1S\202\246\377\205{\235" "\272\377\2u\223\255\377L\\n\377\203#4F\377\2P`r\377z\234\270\377\204" "{\235\272\377\1r\227\265\377\307O\177\244\377\2P\177\244\377w\232\270" "\377\205{\235\272\377\2\225\260\307\227\272\311\331\5\311\377\377\377" "\0\5\303\320\337`\263\305\330\350\236\266\315\377\223\256\307\377\207" "\245\300\377\202\177\240\274\377\1\\\210\252\377\307O\177\244\377\1c" "\215\256\377\205\177\240\274\377\2p\207\234\377$5G\377\202#4F\377\5=" "M_\377\251\272\315\377\241\270\316\377\225\257\310\377\210\246\301\377" "\202\177\240\274\377\1\\\210\253\377\307O\177\244\377\1f\217\260\377" "\205\177\240\274\377\1n\204\231\377\203#4F\377\7y\206\225\375\250\275" "\322\377\234\264\313\377\217\253\305\377\201\241\275\377\177\240\274" "\377w\232\270\377\236O\177\244\377\1j\222\262\377\205\177\240\274\377" "\1]m\177\377\210#4F\377\2cq\202\377\206\241\270\377\204\177\240\274\377" "\1q\227\265\377\236O\177\244\377\1u\232\267\377\204\177\240\274\377\2" "~\237\272\377Zk|\377\210#4F\377\2CTf\377u\220\247\377\204\177\240\274" "\377\2~\240\273\377P\200\244\377\223O\177\244\377\1b\214\255\377\205" "\177\240\274\377\2t\216\245\377:K\\\377\203#4F\377\2n\177\221\377\207" "\246\300\377\204\177\240\274\377\1m\224\263\377\307O\177\244\377\1^\211" "\253\377\205\177\240\274\377\2\200\241\274\372\253\277\322N\312\377\377" "\377\0\11\266\306\326+\307\323\342\321\264\305\330\377\251\275\321\377" "\235\265\313\377\213\250\301\377\203\243\275\377{\236\272\377S\202\246" "\377\306O\177\244\377\1b\214\255\377\205\203\243\275\377\2v\216\243\377" "(9K\377\202#4F\377\10(9K\377\251\267\310\377\265\306\331\377\251\276" "\322\377\235\265\313\377\212\250\301\377\203\243\275\377k\223\262\377" "\307O\177\244\377\1n\224\263\377\205\203\243\275\377\1i~\222\377\203" "#4F\377\7\204\217\235\377\273\311\332\377\257\302\325\377\243\272\317" "\377\214\251\302\377\203\243\275\377\177\240\273\377\236O\177\244\377" "\1o\225\263\377\204\203\243\275\377\2\202\242\274\377^o\200\377\210#" "4F\377\4n}\214\377\232\257\304\377\223\256\306\377\206\245\277\377\202" "\203\243\275\377\1u\231\266\377\235O\177\244\377\2R\201\245\377\202\242" "\275\377\204\203\243\275\377\2~\232\262\377L]n\377\210#4F\377\2P`r\377" "}\231\261\377\204\203\243\275\377\1|\236\272\377\224O\177\244\377\1w" "\233\267\377\205\203\243\275\377\2q\206\232\377'8J\377\202#4F\377\5%" "6H\377\214\234\254\377\236\266\314\377\221\255\305\377\205\245\276\377" "\202\203\243\275\377\1h\220\260\377\307O\177\244\377\1v\232\267\377\205" "\203\243\275\377\2\217\253\303\316\266\306\326\27\312\377\377\377\0\6" "\264\305\325\4\314\326\343\252\311\324\343\375\274\313\334\377\261\303" "\326\377\242\271\316\377\202\206\245\277\377\2}\237\272\377T\202\246" "\377\305O\177\244\377\1d\215\256\377\205\206\245\277\377\2|\224\251\377" "->P\377\203#4F\377\10\222\240\261\377\310\323\343\377\274\313\334\377" "\260\302\326\377\235\265\314\377\206\245\277\377\203\243\275\377S\202" "\246\377\306O\177\244\377\1{\235\271\377\205\206\245\277\377\1cx\213" "\377\203#4F\377\5\217\231\247\325\321\331\347\370\301\316\337\377\265" "\306\331\377\236\266\314\377\202\206\245\277\377\1U\203\247\377\235O" "\177\244\377\1s\230\266\377\204\206\245\277\377\2\205\243\274\377`q\202" "\377\210#4F\377\10n}\214\377\256\276\317\377\245\273\320\377\232\263" "\312\377\214\251\302\377\206\245\277\377\204\243\276\377P\200\244\377" "\234O\177\244\377\1g\220\260\377\205\206\245\277\377\2}\226\254\377<" "M^\377\210#4F\377\2^o\200\377\204\240\271\377\204\206\245\277\377\1x" "\233\270\377\223O\177\244\377\1e\216\257\377\205\206\245\277\377\2\206" "\244\276\377]n\200\377\203#4F\377\10*;M\377\242\257\277\377\260\302\326" "\377\244\272\317\377\230\262\311\377\210\246\300\377\206\245\277\377" "d\215\256\377\306O\177\244\377\1j\221\261\377\206\206\245\277\377\1\237" "\266\313\212\314\377\377\377\0\6\275\314\332H\337\343\357\362\317\331" "\346\377\305\321\341\377\272\312\333\377\236\266\313\377\202\212\250" "\300\377\2\200\241\274\377U\203\247\377\304O\177\244\377\1t\231\266\377" "\205\212\250\300\377\2}\223\247\377'8J\377\203#4F\377\10ap\201\377\331" "\336\353\377\316\327\346\377\302\317\337\377\266\307\330\377\221\255" "\304\377\212\250\300\377t\230\266\377\305O\177\244\377\1]\210\253\377" "\205\212\250\300\377\2\210\246\276\377Yj|\377\202#4F\377\11#4F\372\254" "\266\303d\343\346\361\366\323\333\350\377\307\323\342\377\271\311\332" "\377\214\251\301\377\212\250\300\377p\226\264\377\235O\177\244\377\1" "x\233\270\377\204\212\250\300\377\2\210\245\274\377`r\203\377\210#4F" "\377\10Rbs\377\277\311\327\377\270\310\331\377\255\300\323\377\241\270" "\315\377\213\251\301\377\212\250\300\377f\217\257\377\233O\177\244\377" "\2Y\206\251\377\206\246\277\377\205\212\250\300\377\2z\216\240\377):" "L\377\210#4F\377\2m\177\220\377\211\247\300\377\204\212\250\300\377\1" "r\230\265\377\222O\177\244\377\2]\211\253\377\207\246\277\377\205\212" "\250\300\377\2\202\233\261\375DUg\377\203#4F\377\10$5G\377\262\275\312" "\377\302\317\337\377\267\307\331\377\253\277\322\377\222\255\304\377" "\212\250\300\377k\222\261\377\305O\177\244\377\2k\222\261\377\211\250" "\300\377\205\212\250\300\377\2\224\257\305\331\262\304\3249\314\377\377" "\377\0\7\260\303\323\1\336\343\356\313\342\346\361\375\327\336\353\377" "\315\326\345\377\302\317\337\377\231\262\311\377\202\215\252\302\377" "\2\204\245\276\377V\204\250\377\302O\177\244\377\2X\205\250\377\213\251" "\301\377\205\215\252\302\377\1k\200\223\377\204#4F\377\6""5FX\377\324" "\331\345\377\336\343\357\377\323\333\350\377\310\323\342\377\262\304" "\326\377\202\215\252\302\377\1q\227\264\377\303O\177\244\377\2V\204\247" "\377\206\246\277\377\205\215\252\302\377\2\207\240\265\377EWh\377\202" "#4F\377\7#4F\222\265\306\326\15\353\354\365\366\342\346\361\377\330\336" "\353\377\315\326\345\377\253\277\322\377\202\215\252\302\377\1g\220\260" "\377\234O\177\244\377\1|\237\272\377\204\215\252\302\377\2\213\246\275" "\377ar\204\377\207#4F\377\12#4F\376/@R\364\277\310\325\375\311\324\343" "\377\276\314\335\377\263\304\327\377\234\264\312\377\215\252\302\377" "\212\250\301\377\\\210\252\377\231O\177\244\377\2\\\210\252\377\210\247" "\300\377\205\215\252\302\377\5\210\242\270\377i{\214\377#4F\365#4F\340" "#4F\362\205#4F\377\2$5G\377~\221\242\377\205\215\252\302\377\1l\223\262" "\377\221O\177\244\377\2c\215\256\377\213\251\301\377\205\215\252\302" "\377\3\216\253\303\373\223\247\270\275(9K\370\204#4F\377\10\251\263\302" "\377\323\333\350\377\307\323\342\377\274\313\334\377\241\270\315\377" "\215\252\302\377\203\243\275\377P\200\244\377\302O\177\244\377\2W\205" "\250\377y\234\270\377\206\215\252\302\377\3\217\254\303\367\254\300\321" "\237\260\303\323\6\315\377\377\377\0\7\303\320\3360\353\353\365\367\350" "\352\364\377\336\343\356\377\324\333\351\377\310\324\342\377\241\270" "\314\377\202\220\254\303\377\3\214\251\301\377n\224\263\377R\201\245" "\377\277O\177\244\377\2Y\206\251\377\205\244\275\377\205\220\254\303" "\377\2\216\251\277\377Rev\377\205#4F\377\6\207\224\243\377\356\356\367" "\377\343\346\361\377\330\337\353\377\315\327\345\377\253\277\322\377" "\202\220\254\303\377\2\201\242\274\377]\211\253\377\300O\177\244\377" "\2c\215\255\377\211\247\277\377\206\220\254\303\377\14}\222\244\377&" "7I\377#4F\377#4F\356#4F\24\377\377\377\0\332\340\353\257\360\360\371" "\377\347\351\363\377\334\342\356\377\321\331\347\377\242\271\315\377" "\202\220\254\303\377\2\201\242\274\377^\211\253\377\232O\177\244\377" "\1\201\242\274\377\204\220\254\303\377\2\215\250\275\377`r\203\377\202" "#4F\377\20#4F\301#4F^#4F(#4F\33#4F\16#4F\2\377\377\377\0\316\327\344" "\276\332\340\354\374\316\327\346\377\303\320\337\377\270\310\331\377" "\227\261\307\377\220\254\303\377\214\252\301\377d\215\256\377\226O\177" "\244\377\3P\200\244\377o\225\263\377\216\253\302\377\205\220\254\303" "\377\3\220\254\303\375\241\266\310\305\231\254\2742\202\377\377\377\0" "\4#4F\1#4FFZ#4F\312\202#4F\377\2/@R\377\205\232\254\377\205\220\254" "\303\377\1e\216\256\377\217O\177\244\377\2[\207\252\377\177\240\273\377" "\207\220\254\303\377\4\236\266\312\321\256\301\3218#4F7#4F\345\203#4" "F\377\11\222\236\255\377\342\345\360\377\330\336\353\377\315\327\345" "\377\275\314\334\377\223\256\304\377\220\254\303\377z\235\270\377S\202" "\246\377\277O\177\244\377\3T\203\246\377t\230\265\377\216\253\302\377" "\206\220\254\303\377\3\221\255\303\372\244\272\314\301\256\301\3218\317" "\377\377\377\0\10\331\337\353b\357\356\370\374\356\356\370\377\344\347" "\362\377\333\340\355\377\321\331\347\377\263\305\326\377\227\261\306" "\377\202\223\256\304\377\6\217\254\302\377{\236\271\377g\220\257\377" "]\211\253\377V\204\250\377Q\200\245\377\264O\177\244\377\7P\177\244\377" "T\202\246\377X\206\250\377]\211\253\377g\220\260\377|\237\272\377\221" "\255\303\377\206\223\256\304\377\2\213\242\264\3777HZ\377\204#4F\377" "\10#4F\3756GY\260\331\336\352\352\360\357\370\377\347\351\364\377\335" "\342\356\377\322\333\350\377\260\303\325\377\203\223\256\304\377\4\204" "\244\275\377l\223\262\377\\\210\252\377T\202\246\377\266O\177\244\377" "\6P\200\244\377V\204\247\377]\211\253\377d\216\256\377r\230\265\377\211" "\250\277\377\207\223\256\304\377\5\216\247\272\377Tfw\377#4F\377#4F\372" "#4FB\202\377\377\377\0\7\267\310\327*\345\347\362\363\356\356\370\377" "\353\354\366\377\341\345\360\377\325\335\351\377\247\274\317\377\203" "\223\256\304\377\3~\240\272\377_\212\254\377T\202\246\377\227O\177\244" "\377\1\206\246\276\377\204\223\256\304\377\4\220\252\276\377_q\202\377" "#4F\365#4FR\207\377\377\377\0\7\271\311\330L\344\347\362\366\335\342" "\356\377\323\333\350\377\310\324\342\377\272\311\332\377\231\262\307" "\377\202\223\256\304\377\2\203\243\274\377]\211\253\377\223O\177\244" "\377\2[\207\252\377\205\245\276\377\207\223\256\304\377\2\240\270\313" "\325\254\300\320u\206\377\377\377\0\5#4F\1#4F^#4F\363=O`\377\213\241" "\264\377\205\223\256\304\377\1]\211\253\377\213O\177\244\377\5P\200\245" "\377Y\206\251\377d\216\256\377x\234\270\377\222\256\304\377\207\223\256" "\304\377\2\233\264\310\345\254\300\320\200\202\377\377\377\0\2#4F\31" "#4F\302\202#4F\377\6P`q\377\357\356\367\377\346\350\363\377\334\341\355" "\377\322\332\347\377\266\306\330\377\202\223\256\304\377\4\215\252\301" "\377r\227\264\377]\210\252\377Q\200\245\377\270O\177\244\377\5U\203\247" "\377_\212\253\377h\221\260\377u\231\266\377\217\254\302\377\207\223\256" "\304\377\3\225\260\305\370\246\274\315\306\254\300\320e\321\377\377\377" "\0\11\341\345\357x\354\354\366\372\357\357\370\377\353\354\366\377\341" "\345\360\377\330\336\353\377\313\326\344\377\253\277\322\377\227\262" "\306\377\206\225\260\305\377\2\220\255\303\377\212\250\300\377\204\206" "\246\276\377\204\207\246\276\377\202\207\247\277\377\210\210\247\277" "\377\206\211\250\277\377\202\211\250\300\377\204\212\250\300\377\202" "\212\251\300\377\206\213\251\300\377\202\213\251\301\377\210\214\252" "\301\377\2\215\253\301\377\221\256\303\377\214\225\260\305\377\2\223" "\255\301\377cv\207\377\203#4F\377\14#4F\375#4F\250#4F*\377\377\377\0" "\274\313\332h\350\352\364\370\356\356\367\377\354\354\366\377\341\345" "\360\377\327\336\352\377\304\321\340\377\244\272\315\377\205\225\260" "\305\377\5\222\256\304\377\212\250\300\377\201\242\274\377z\235\270\377" "y\234\270\377\202y\235\270\377\203z\235\270\377\204{\236\271\377\1|\236" "\271\377\203|\237\271\377\202}\237\272\377\1}\240\272\377\204~\240\272" "\377\203\177\241\273\377\202\200\241\273\377\202\200\242\273\377\1\201" "\242\273\377\203\201\242\274\377\203\202\243\274\377\202\203\243\274" "\377\202\203\244\275\377\203\204\244\275\377\2\204\245\275\377\205\245" "\275\377\202\205\245\276\377\5\206\245\276\377\206\246\276\377\207\247" "\277\377\216\253\302\377\224\260\305\377\213\225\260\305\377\5\224\256" "\302\377}\221\242\377):L\377#4F\377#4Fa\204\377\377\377\0\10\310\324" "\341\223\351\352\364\373\354\355\366\377\357\357\370\377\345\347\362" "\377\333\340\354\377\274\313\333\377\231\263\310\377\204\225\260\305" "\377\30\220\254\302\377\205\245\275\377z\235\270\377s\230\265\377s\231" "\265\377t\231\266\377u\232\266\377v\232\266\377w\233\267\377x\234\267" "\377y\234\270\377y\235\270\377z\235\270\377{\236\271\377|\237\271\377" "}\237\272\377~\240\272\377\177\241\273\377\200\241\273\377\201\242\273" "\377\201\242\274\377\202\243\274\377\203\244\275\377\223\257\304\377" "\204\225\260\305\377\3\223\254\300\377^p\201\376#4F<\211\377\377\377" "\0\7\306\322\340\242\354\354\366\376\341\345\360\377\327\336\352\377" "\315\327\345\377\300\316\335\377\237\267\312\377\203\225\260\305\377" "\5\207\246\276\377\200\241\273\377y\234\270\377r\230\265\377l\224\262" "\377\213l\223\262\377\4p\226\263\377u\232\266\377\203\243\274\377\224" "\260\305\377\207\225\260\305\377\3\235\266\311\345\252\277\317\257\252" "\277\317\20\210\377\377\377\0\3#4FPL_p\376\220\250\272\377\205\225\260" "\305\377\15\200\242\273\377~\240\272\377\177\241\273\377\200\241\273" "\377\201\242\273\377\201\242\274\377\202\243\274\377\203\244\275\377" "\204\244\275\377\205\245\275\377\206\245\276\377\213\251\300\377\224" "\260\305\377\212\225\260\305\377\3\232\264\310\356\251\276\316\244\252" "\277\317\20\203\377\377\377\0\13#4F\1#4Fg#4F\357#4F\377\260\272\310\377" "\357\356\370\377\353\353\365\377\340\344\357\377\326\335\352\377\272" "\312\332\377\226\261\306\377\204\225\260\305\377\2\223\257\304\377\217" "\254\302\377\265\215\252\301\377\1\222\256\304\377\213\225\260\305\377" "\4\230\262\306\366\247\275\316\314\252\277\317\204\252\277\317\3\322" "\377\377\377\0\13\333\341\354d\351\352\364\370\354\355\366\377\361\360" "\371\377\350\352\364\377\337\343\357\377\325\335\351\377\312\325\343" "\377\264\305\326\377\241\271\313\377\231\263\306\377\302\230\262\306" "\377\7\227\260\304\377\210\235\256\377*;M\377#4F\377#4F\365#4F\236#4" "F*\204\377\377\377\0\13\300\316\333\204\346\350\362\370\354\355\366\377" "\360\357\370\377\346\350\363\377\334\341\355\377\322\332\347\377\301" "\317\335\377\255\300\322\377\237\267\312\377\231\263\307\377\302\230" "\262\306\377\5\227\260\303\377\207\234\255\3771CT\377#4F\346#4FH\205" "\377\377\377\0\12\250\275\315\2\310\323\340\262\347\351\363\374\353\354" "\365\377\360\357\370\377\351\352\365\377\337\344\357\377\322\333\347" "\377\270\311\331\377\243\272\314\377\236\230\262\306\377\2\226\256\301" "\377i}\216\316\212\377\377\377\0\11\250\275\315\17\323\333\347\332\357" "\357\370\377\345\350\362\377\334\341\355\377\322\332\347\377\310\324" "\342\377\263\305\326\377\237\267\312\377\233\230\262\306\377\3\237\267" "\311\347\250\275\315\265\250\275\315\33\212\377\377\377\0\2n\202\222" "\304\225\255\277\377\233\230\262\306\377\3\236\266\310\354\247\275\315" "\246\250\275\315\16\206\377\377\377\0\14#4F\30#4F\252J\\n\377\331\336" "\351\377\355\355\367\377\356\356\367\377\344\347\362\377\333\340\354" "\377\315\327\344\377\263\305\325\377\240\267\312\377\231\262\306\377" "\303\230\262\306\377\4\233\264\307\365\246\274\314\325\250\275\315s\250" "\275\315\1\324\377\377\377\0\16\323\333\347N\336\343\356\361\352\353" "\365\376\356\356\367\377\355\355\367\377\344\347\362\377\334\341\355" "\377\323\333\350\377\312\325\343\377\277\316\335\377\262\305\325\377" "\247\275\316\377\237\270\312\377\233\264\307\377\275\232\264\307\377" "\6\232\263\305\377\223\251\272\377FYj\377#4F\314#4Fh#4F\16\207\377\377" "\377\0\15\272\312\330\217\343\346\360\371\353\354\365\376\357\357\370" "\377\352\353\365\377\340\345\360\377\327\336\353\377\315\327\345\377" "\303\320\337\377\271\312\331\377\256\302\322\377\243\272\314\377\233" "\265\307\377\276\232\264\307\377\5\231\262\304\377\220\246\267\377:K" "]\374#4F\243#4F\23\207\377\377\377\0\16\246\274\314\11\302\317\335\306" "\345\347\362\374\351\353\364\377\356\356\367\377\355\355\367\377\344" "\347\362\377\332\340\354\377\320\331\347\377\303\321\337\377\263\306" "\326\377\250\276\317\377\240\270\312\377\234\265\310\377\231\232\264" "\307\377\2\230\260\302\377\211\236\256\210\213\377\377\377\0\14\257\302" "\321\26\323\333\347\341\360\357\370\377\351\353\364\377\340\344\357\377" "\326\335\352\377\314\327\344\377\303\320\336\377\266\307\327\377\251" "\276\317\377\237\270\312\377\233\265\307\377\225\232\264\307\377\4\234" "\265\307\372\242\271\312\350\246\274\314\271\246\274\314\27\213\377\377" "\377\0\2\223\250\270\253\231\261\303\377\231\232\264\307\377\4\234\265" "\307\373\241\271\312\351\246\274\314\245\246\274\314\13\211\377\377\377" "\0\16#4F@r\202\222\330\333\340\353\377\353\354\366\377\360\360\371\377" "\350\352\364\377\337\343\356\377\325\335\351\377\313\326\343\377\301" "\317\336\377\265\307\327\377\252\277\320\377\242\271\314\377\233\265" "\307\377\275\232\264\307\377\4\233\264\307\375\237\267\311\357\245\273" "\314\321\246\274\314Y\327\377\377\377\0\16\251\277\316\"\307\323\340" "\302\343\347\361\373\354\354\366\376\360\357\370\377\352\353\365\377" "\342\345\360\377\331\340\354\377\321\332\347\377\310\324\342\377\277" "\316\334\377\266\310\326\377\254\301\320\377\243\273\313\377\273\234" "\266\307\377\4\233\264\305\377\212\241\261\371FYj\250#4F1\213\377\377" "\377\0\15\265\307\325^\317\330\345\346\350\352\364\375\356\356\367\377" "\355\355\367\377\344\347\362\377\333\341\355\377\322\333\350\377\311" "\325\343\377\277\316\335\377\265\310\327\377\253\301\321\377\241\271" "\312\377\273\234\266\307\377\5\234\265\307\377\232\262\303\377}\222\243" "\370\77Rc\225#4F\34\212\377\377\377\0\16\244\273\313\4\275\314\332w\331" "\337\353\360\350\352\364\376\354\355\366\377\360\360\371\377\347\351" "\363\377\336\343\357\377\325\335\352\377\314\327\344\377\302\321\337" "\377\270\312\331\377\257\303\323\377\245\274\314\377\230\234\266\307" "\377\2\233\263\304\377\240\266\306j\214\377\377\377\0\14\244\273\313" "\23\312\325\342\324\356\356\367\376\355\355\367\377\344\347\361\377\332" "\340\354\377\321\332\346\377\307\324\340\377\276\315\333\377\265\307" "\326\377\253\300\320\377\242\272\312\377\222\234\266\307\377\5\235\266" "\310\375\241\271\311\362\244\273\313\350\244\273\313\213\244\273\313" "\14\214\377\377\377\0\2\243\272\312\271\234\265\306\377\227\234\266\307" "\377\5\235\266\310\375\241\271\311\362\244\273\313\321\244\273\313U\244" "\273\313\1\214\377\377\377\0\15\224\245\265\204\330\336\351\374\352\353" "\365\377\356\356\367\377\354\355\366\377\343\346\361\377\331\340\353" "\377\320\331\345\377\306\323\340\377\275\315\332\377\263\306\325\377" "\252\300\317\377\241\271\312\377\272\234\266\307\377\5\235\266\310\376" "\240\270\311\364\243\273\313\344\244\273\313\201\244\273\313\20\332\377" "\377\377\0\16\262\305\324B\306\323\340\324\336\343\356\375\355\355\367" "\377\357\357\370\377\347\351\363\377\336\343\356\377\326\335\351\377" "\316\330\345\377\305\322\340\377\275\314\333\377\264\306\326\377\253" "\300\320\377\242\272\313\377\267\236\267\310\377\4\237\267\310\376\240" "\270\310\371\232\261\301\243\242\272\312\13\216\377\377\377\0\15\242" "\272\312\11\263\305\324\211\320\332\346\364\352\353\365\376\361\360\371" "\377\350\352\364\377\336\343\356\377\325\335\350\377\314\326\343\377" "\303\320\336\377\271\312\331\377\260\304\324\377\242\272\312\377\271" "\236\267\310\377\4\236\267\307\375\231\261\301\356\200\226\247\200#4" "F\4\216\377\377\377\0\16\254\301\320\13\313\326\343\242\337\344\357\371" "\353\354\365\377\357\357\370\377\352\354\365\377\341\345\360\377\331" "\337\353\377\320\331\346\377\307\323\342\377\276\315\334\377\265\306" "\327\377\253\300\321\377\237\270\311\377\226\236\267\310\377\2\236\266" "\307\376\242\272\312b\215\377\377\377\0\14\242\272\312\1\305\322\337" "~\334\342\355\363\360\360\371\377\347\351\363\377\336\343\356\377\325" "\335\351\377\314\327\343\377\303\320\336\377\271\312\330\377\260\304" "\323\377\247\275\315\377\217\236\267\310\377\5\237\270\310\376\240\271" "\311\371\242\272\312\364\242\272\312\325\242\272\312@\216\377\377\377" "\0\1\240\270\310\346\226\236\267\310\377\5\237\270\311\376\240\271\311" "\371\242\272\312\355\242\272\312~\242\272\312\13\217\377\377\377\0\15" "\271\312\330/\311\324\340\333\342\346\360\376\355\355\367\377\357\357" "\370\377\346\351\363\377\335\342\355\377\324\334\350\377\313\326\342" "\377\301\317\335\377\270\311\330\377\257\303\322\377\246\275\315\377" "\267\236\267\310\377\5\237\270\311\376\240\271\311\371\242\272\312\364" "\242\272\312\240\242\272\312\40\336\377\377\377\0\15\241\271\311,\275" "\314\332\226\323\333\347\351\344\347\361\377\354\355\366\377\344\347" "\361\377\334\341\354\377\323\334\347\377\313\326\342\377\303\320\335" "\377\272\312\330\377\262\305\323\377\252\277\316\377\264\241\271\311" "\377\4\241\271\311\374\240\271\311\275\241\271\311l\241\271\311\35\222" "\377\377\377\0\13\241\271\311\7\252\277\316X\277\316\333\304\322\333" "\346\374\340\344\357\377\337\344\356\377\331\340\353\377\320\332\345" "\377\307\323\340\377\276\315\333\377\251\277\316\377\267\241\271\311" "\377\4\240\271\311\355\241\271\311\231\241\271\311A\241\271\311\2\222" "\377\377\377\0\14\245\273\313\22\274\314\331\242\317\331\345\372\352" "\353\365\377\356\356\367\377\345\350\362\377\334\342\355\377\323\334" "\347\377\312\325\342\377\302\317\335\377\271\311\327\377\250\276\315" "\377\227\241\271\311\377\1\241\271\311[\217\377\377\377\0\14\241\271" "\311\10\275\314\332\223\330\337\352\372\347\351\363\377\342\346\360\377" "\331\340\353\377\320\332\345\377\310\324\340\377\276\315\333\377\266" "\307\325\377\255\301\320\377\244\273\313\377\216\241\271\311\377\3\241" "\271\311\372\241\271\311\225\241\271\311\14\216\377\377\377\0\1\241\271" "\311\20\226\241\271\311\377\4\241\271\311\376\241\271\311\342\241\271" "\311\245\241\271\311\40\223\377\377\377\0\15\244\273\313K\277\316\333" "\270\326\335\351\367\350\352\363\377\351\353\364\377\341\345\357\377" "\330\337\352\377\317\331\345\377\306\323\337\377\276\315\332\377\265" "\307\325\377\254\301\320\377\243\273\312\377\264\241\271\311\377\4\241" "\271\311\363\241\271\311\315\241\271\311\247\241\271\3115\343\377\377" "\377\0\13\241\271\311\20\265\307\3255\314\327\343n\323\334\347\227\326" "\336\351\263\320\331\345\274\307\323\340\300\301\317\334\273\272\312" "\330\264\264\306\324\255\245\274\313\241\202\241\271\311\235\202\241" "\271\311\234\202\241\271\311\233\202\241\271\311\232\202\241\271\311" "\231\202\241\271\311\230\202\241\271\311\227\202\241\271\311\226\202" "\241\271\311\225\202\241\271\311\224\202\241\271\311\223\202\241\271" "\311\222\202\241\271\311\221\202\241\271\311\220\202\241\271\311\217" "\202\241\271\311\216\202\241\271\311\215\202\241\271\311\214\202\241" "\271\311\213\203\241\271\311\212\202\241\271\311\211\11\241\271\311\210" "\241\271\311\207\241\271\311{\241\271\311k\241\271\311Z\241\271\311I" "\241\271\3119\241\271\311(\241\271\311\15\230\377\377\377\0\21\241\271" "\311\11\241\271\311+\241\271\311I\252\277\317o\262\305\323\224\265\307" "\325\263\265\307\325\315\247\275\315\322\241\271\311\316\241\271\311" "\315\241\271\311\314\241\271\311\313\241\271\311\312\241\271\311\311" "\241\271\311\310\241\271\311\307\241\271\311\306\202\241\271\311\305" "\34\241\271\311\304\241\271\311\303\241\271\311\302\241\271\311\301\241" "\271\311\300\241\271\311\277\241\271\311\276\241\271\311\275\241\271" "\311\274\241\271\311\273\241\271\311\272\241\271\311\271\241\271\311" "\270\241\271\311\267\241\271\311\266\241\271\311\265\241\271\311\264" "\241\271\311\263\241\271\311\262\241\271\311\261\241\271\311\260\241" "\271\311\257\241\271\311\256\241\271\311\255\241\271\311\254\241\271" "\311\253\241\271\311\252\241\271\311\251\202\241\271\311\250\16\241\271" "\311\247\241\271\311\246\241\271\311\245\241\271\311\244\241\271\311" "\243\241\271\311\242\241\271\311\241\241\271\311\240\241\271\311\224" "\241\271\311z\241\271\311_\241\271\311D\241\271\311)\241\271\311\17\230" "\377\377\377\0\"\241\271\311\2\245\274\313$\275\314\332`\312\325\342" "\234\317\330\344\303\316\330\344\334\307\323\340\355\302\317\335\360" "\275\314\332\354\253\300\317\343\241\271\311\335\241\271\311\332\241" "\271\311\326\241\271\311\323\241\271\311\320\241\271\311\315\241\271" "\311\312\241\271\311\307\241\271\311\304\241\271\311\301\241\271\311" "\276\241\271\311\273\241\271\311\270\241\271\311\264\241\271\311\261" "\241\271\311\256\241\271\311\253\241\271\311\250\241\271\311\245\241" "\271\311\242\241\271\311\237\241\271\311\234\241\271\311\232\241\271" "\3111\221\377\377\377\0\12\241\271\311\24\244\273\313t\272\312\330\245" "\310\324\340\312\307\323\340\333\303\320\335\352\276\315\332\371\271" "\312\327\377\264\306\324\377\256\302\321\377\211\241\271\311\377\6\241" "\271\311\372\241\271\311\346\241\271\311\320\241\271\311\254\241\271" "\311]\241\271\311\20\220\377\377\377\0\30\241\271\311*\241\271\311\334" "\241\271\311\330\241\271\311\324\241\271\311\320\241\271\311\314\241" "\271\311\311\241\271\311\306\241\271\311\303\241\271\311\277\241\271" "\311\274\241\271\311\271\241\271\311\266\241\271\311\262\241\271\311" "\257\241\271\311\254\241\271\311\251\241\271\311\246\241\271\311\242" "\241\271\311\235\241\271\311}\241\271\311V\241\271\3110\241\271\311\12" "\230\377\377\377\0\14\241\271\311\2\241\271\3115\245\273\313X\265\307" "\325w\275\314\332\220\274\313\331\234\267\310\326\234\263\306\324\230" "\260\303\322\225\254\300\317\221\250\276\315\215\244\273\313\212\257" "\241\271\311\210\4\241\271\311\202\241\271\311a\241\271\311<\241\271" "\311\27\267\377\377\377\0"}; osmo-0.2.14/src/gui.h000664 001750 001750 00000070210 12561325524 014256 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GUI_H #define _GUI_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CONTACTS_ENABLED #ifdef HAVE_LIBWEBKIT #include #endif /* LIBWEBKIT */ #endif /* CONTACTS_ENABLED */ #ifdef HAVE_LIBNOTIFY #ifdef TASKS_ENABLED #include #endif /* TASKS_ENABLED */ #endif /* HAVE_LIBNOTIFY */ #ifdef HAVE_LIBGRINGOTTS #include #endif /* HAVE_LIBGRINGOTTS */ #define TRANSLATION_DOMAIN "osmo" #define MAX_MONTHS 12 #define MAX_WEEKS 6 #define DAYS_PER_WEEK 7 #define FULL_YEAR_COLS 37 #define OPAQUE 65535 #define BUFFER_SIZE 2048 #ifdef NOTES_ENABLED #define DEFAULT_NOTE_FONT "Sans 12" #endif /* NOTES_ENABLED */ enum notebook_page { PAGE_CALENDAR = 0, #ifdef TASKS_ENABLED PAGE_TASKS, #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED PAGE_CONTACTS, #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED PAGE_NOTES, #endif /* NOTES_ENABLED */ NUMBER_OF_TABS }; #define MAX_VISIBLE_TASK_COLUMNS 6 enum { /* tasks columns */ TA_COLUMN_DONE = 0, /* V */ TA_COLUMN_TYPE, /* V */ TA_COLUMN_DUE_DATE, /* V */ TA_COLUMN_DUE_DATE_JULIAN, TA_COLUMN_DUE_TIME, TA_COLUMN_START_DATE_JULIAN, TA_COLUMN_DONE_DATE_JULIAN, TA_COLUMN_PRIORITY, /* V */ TA_COLUMN_CATEGORY, /* V */ TA_COLUMN_SUMMARY, /* V */ TA_COLUMN_DESCRIPTION, TA_COLUMN_COLOR, TA_COLUMN_BOLD, TA_COLUMN_ACTIVE, TA_COLUMN_OFFLINE_IGNORE, TA_COLUMN_SOUND_ENABLE, TA_COLUMN_NDIALOG_ENABLE, TA_COLUMN_REPEAT, TA_COLUMN_REPEAT_DAY, TA_COLUMN_REPEAT_MONTH_INTERVAL, TA_COLUMN_REPEAT_DAY_INTERVAL, TA_COLUMN_REPEAT_START_DAY, TA_COLUMN_REPEAT_TIME_START, TA_COLUMN_REPEAT_TIME_END, TA_COLUMN_REPEAT_TIME_INTERVAL, TA_COLUMN_REPEAT_COUNTER, TA_COLUMN_ALARM_COMMAND, TA_COLUMN_WARNING_DAYS, TA_COLUMN_WARNING_TIME, TA_COLUMN_POSTPONE_TIME, TA_COLUMN_ID, TASKS_NUM_COLUMNS }; #define MAX_VISIBLE_CONTACT_COLUMNS 3 enum { /* contacts columns */ COLUMN_GROUP = 0 /* V */, COLUMN_FIRST_NAME /* V */, COLUMN_LAST_NAME, /* V */ COLUMN_SECOND_NAME, COLUMN_NICK_NAME, COLUMN_TAGS, COLUMN_BIRTH_DAY_DATE, COLUMN_NAME_DAY_DATE, COLUMN_HOME_ADDRESS, COLUMN_HOME_POST_CODE, COLUMN_HOME_CITY, COLUMN_HOME_STATE, COLUMN_HOME_COUNTRY, COLUMN_WORK_ORGANIZATION, COLUMN_WORK_DEPARTMENT, COLUMN_WORK_ADDRESS, COLUMN_WORK_POST_CODE, COLUMN_WORK_CITY, COLUMN_WORK_STATE, COLUMN_WORK_COUNTRY, COLUMN_WORK_FAX, COLUMN_HOME_PHONE_1, COLUMN_HOME_PHONE_2, COLUMN_HOME_PHONE_3, COLUMN_HOME_PHONE_4, COLUMN_WORK_PHONE_1, COLUMN_WORK_PHONE_2, COLUMN_WORK_PHONE_3, COLUMN_WORK_PHONE_4, COLUMN_CELL_PHONE_1, COLUMN_CELL_PHONE_2, COLUMN_CELL_PHONE_3, COLUMN_CELL_PHONE_4, COLUMN_EMAIL_1, COLUMN_EMAIL_2, COLUMN_EMAIL_3, COLUMN_EMAIL_4, COLUMN_WWW_1, COLUMN_WWW_2, COLUMN_WWW_3, COLUMN_WWW_4, COLUMN_IM_GG, COLUMN_IM_YAHOO, COLUMN_IM_MSN, COLUMN_IM_ICQ, COLUMN_IM_AOL, COLUMN_IM_JABBER, COLUMN_IM_SKYPE, COLUMN_IM_TLEN, COLUMN_BLOG, COLUMN_PHOTO, COLUMN_INFO, COLUMN_ID, CONTACTS_NUM_COLUMNS }; #define MAX_VISIBLE_NOTE_COLUMNS 5 enum { /* notes columns */ N_COLUMN_TYPE = 0, /* V */ N_COLUMN_NAME, /* V */ N_COLUMN_CATEGORY, /* V */ N_COLUMN_LAST_CHANGES_DATE, /* V */ N_COLUMN_LAST_CHANGES_DATE_JULIAN, N_COLUMN_LAST_CHANGES_TIME, N_COLUMN_CREATE_DATE, /* V */ N_COLUMN_CREATE_DATE_JULIAN, N_COLUMN_CREATE_TIME, N_COLUMN_REMEMBER_EDITOR_LINE, N_COLUMN_EDITOR_LINE, N_COLUMN_EDITOR_READONLY, N_COLUMN_FILENAME, N_COLUMN_FONTNAME, N_COLUMN_ENCRYPTED, NOTES_NUM_COLUMNS }; enum { SELECTOR = 0, EDITOR }; enum { WRT_CALENDAR_NOTES = 1, WRT_TASKS = 1 << 1, WRT_CONTACTS = 1 << 2, WRT_NOTES = 1 << 3 }; enum { PORTRAIT = 0, LANDSCAPE }; typedef struct { GtkWidget *calendar; gboolean dont_update; /* calendar toolbar */ GtkUIManager *calendar_uim_widget; GtkToolbar *calendar_toolbar; GtkBox *vbox; PangoFontDescription *fd_cal_font; /* date label */ GtkWidget *date_label; PangoFontDescription *fd_day_name_font; /* current selected date */ GDate *date; /* used for 'jump to' button in date calculator */ guint julian_jumpto; /* day notes */ GSList *notes_list; GtkWidget *notes_button; GtkWidget *notes_vbox; GtkWidget *note_label; GtkWidget *calendar_note_textview; GtkWidget *day_info_vbox; GtkWidget *day_info_scrolledwindow; GtkWidget *time_label; GtkWidget *day_number_label; GtkWidget *day_number_year_label; GtkWidget *week_number_label; GtkWidget *moon_icon; GtkWidget *moon_phase_label; GtkWidget *marked_days_label; GtkWidget *weekend_days_label; GtkWidget *day_category_label; GtkWidget *day_desc_textview; GtkTextBuffer *day_desc_text_buffer; GtkTextIter day_desc_iter; PangoFontDescription *fd_notes_font; GtkWidget *ta_bold_button; GtkWidget *ta_italic_button; GtkWidget *ta_underline_button; GtkWidget *ta_strikethrough_button; GtkWidget *ta_highlight_button; /* calendar popup menu */ GtkWidget *popup_menu; GtkWidget *popup_menu_select_day_color_entry; /* month selector popup menu */ GtkWidget *month_selector_menu; /* auxilary calendars */ GtkWidget *aux_cal_expander; GtkWidget *aux_calendars_table; GtkWidget *calendars_table; GtkWidget *prev_month_label; GtkWidget *next_month_label; GtkWidget *calendar_prev; GtkWidget *calendar_next; /* date selector buttons */ GtkWidget *prev_day_button; GtkWidget *next_day_button; GtkWidget *prev_month_button; GtkWidget *next_month_button; /* day note toolbar */ GtkWidget *n_select_color_button; GtkWidget *n_timeline_button; GtkWidget *n_clear_button; GtkWidget *n_close_button; /* day category color selector */ GtkWidget *select_bg_color_window; GtkListStore *colors_category_store; GtkTreeSelection *colors_category_select; /* full year calendar */ gint last_selected_year; GtkWidget *fullyear_window; GtkWidget *fycal_table_1; GtkWidget *fycal_table_2; GtkWidget *fy_spinbutton; GtkWidget *fy_alternative_view_checkbutton; GtkWidget *cyear_button; GtkWidget *fy_calendars[MAX_MONTHS]; GtkWidget *calendar_buttons[MAX_MONTHS*(MAX_WEEKS*DAYS_PER_WEEK-(MAX_WEEKS-1))]; /* jump to date */ GtkWidget *jumpto_window; guint jday; guint jmonth; guint jyear; GtkWidget *day_entry; GtkWidget *month_entry; GtkWidget *year_entry; /* insert timeline */ GtkWidget *insert_timeline_window; GtkWidget *tl_start_h_spinbutton; GtkWidget *tl_start_m_spinbutton; GtkWidget *tl_end_h_spinbutton; GtkWidget *tl_end_m_spinbutton; GtkWidget *tl_step_spinbutton; GtkWidget *insert_timeline_button; GtkWidget *cancel_button; /* date calculator */ GtkWidget *window_date_calculator; GtkWidget *spinbutton_start_year; GtkWidget *spinbutton_start_month; GtkWidget *spinbutton_start_day; GtkWidget *spinbutton_start_hour; GtkWidget *spinbutton_start_minute; GtkWidget *spinbutton_start_second; GtkWidget *spinbutton_end_year; GtkWidget *spinbutton_end_month; GtkWidget *spinbutton_end_day; GtkWidget *spinbutton_end_hour; GtkWidget *spinbutton_end_minute; GtkWidget *spinbutton_end_second; GtkWidget *label_result_1; GtkWidget *label_result_1_2; GtkWidget *label_result_2; GtkWidget *label_result_3; GtkWidget *spinbutton2_start_year; GtkWidget *spinbutton2_start_month; GtkWidget *spinbutton2_start_day; GtkWidget *spinbutton2_start_hour; GtkWidget *spinbutton2_start_minute; GtkWidget *spinbutton2_start_second; GtkWidget *spinbutton2_end_year; GtkWidget *spinbutton2_end_month; GtkWidget *spinbutton2_end_day; GtkWidget *spinbutton2_end_week; GtkWidget *spinbutton2_end_hour; GtkWidget *spinbutton2_end_minute; GtkWidget *spinbutton2_end_second; GtkWidget *label2_result; GtkWidget *radiobutton_add; GtkWidget *ignore_weekend_days_checkbutton; gboolean datecal_bio; /* iCalendar */ GtkWidget *events_window; GtkWidget *ical_combobox; GtkWidget *n_items_label; GSList *ics_files_list; GtkWidget *ical_events_list; GtkTreeSelection *ical_events_list_selection; GtkListStore *ical_events_list_store; GtkTreeModel *ical_events_sort; GtkWidget *ical_export_window; GtkWidget *output_file_entry; GtkWidget *ical_export_vpaned; GtkWidget *export_begin_period_calendar; GtkWidget *export_end_period_calendar; GtkWidget *export_day_note_textview; GtkWidget *export_events_list_treeview; GtkTreeSelection *export_events_list_selection; GtkListStore *export_events_list_store; GtkWidget *use_date_period_checkbutton; /* notes browser */ GtkWidget *day_notes_window; GtkWidget *day_notes_list; GtkTreeSelection *day_notes_list_selection; GtkListStore *day_notes_list_store; GtkWidget *past_notes_checkbutton; GtkWidget *notes_month_spinbutton; GtkWidget *notes_year_spinbutton; GtkWidget *notes_filter_combobox; GtkWidget *notes_search_entry; GtkWidget *notes_search_checkbutton; /* print */ GtkWidget *window_print_options; GtkWidget *print_padding_spinbutton; GtkWidget *print_event_length_spinbutton; GtkWidget *print_tasks_checkbutton; GtkWidget *print_birthdays_checkbutton; GtkWidget *print_namedays_checkbutton; GtkWidget *print_day_notes_checkbutton; GtkWidget *print_ical_checkbutton; GtkWidget *print_month_name_font_entry; GtkWidget *print_day_name_font_entry; GtkWidget *print_day_num_font_entry; GtkWidget *print_event_font_entry; GtkWidget *print_portrait_radiobutton; #ifdef HAVE_LIBWEBKIT WebKitWebView *html_webkitview; WebKitWebSettings *webkit_settings; gdouble html_scroll_position; #endif /* LIBWEBKIT */ } CALENDAR; #ifdef TASKS_ENABLED typedef struct { /* tasks toolbar */ GtkToolbar *tasks_toolbar; GtkBox *vbox; /* number of items label */ GtkWidget *n_items_label; GtkWidget *tasks_find_entry; GtkWidget *tasks_find_clear_button; GtkWidget *desc_textview; GtkWidget *tasks_desc_textview; GtkWidget *tasks_list; GtkTreeSelection *tasks_list_selection; GtkWidget *scrolled_win; GtkListStore *tasks_list_store; GtkWidget *panel_hbox; GtkWidget *panel_scrolledwindow; GtkTreeModel *tasks_filter; GtkTreeModel *tasks_sort; GtkWidget *tasks_paned; GtkWidget *cf_combobox; GtkWidget *priority_combobox; GtkWidget *category_combobox; GtkTreeViewColumn *tasks_columns[TASKS_NUM_COLUMNS]; GtkTextTag *font_tag_object; GtkCellRenderer *done_renderer; gint filter_index; GtkUIManager *tasks_uim_widget; guint next_id; /* tasks items */ GtkWidget *td_calendar; GtkWidget *time_expander; GtkWidget *due_date_entry; GtkWidget *tasks_add_window; GtkWidget *td_calendar_window; gboolean tasks_accept_state, tasks_edit_state; GtkWidget *tasks_ok_button; GtkWidget *summary_entry; guint32 tasks_due_julian_day; gint tasks_due_time; GtkWidget *aw_days_spinbutton; GtkWidget *aw_hours_spinbutton; GtkWidget *aw_minutes_spinbutton; GtkWidget *postpone_spinbutton; GtkWidget *alarm_cmd_entry; GtkWidget *alarm_cmd_valid_image; GtkWidget *recurrent_task_vbox; GtkWidget *rt_enable_checkbutton; GtkWidget *rt_frame; GtkWidget *ignore_alarm_checkbutton; GtkWidget *rt_start_hour_spinbutton; GtkWidget *rt_start_minute_spinbutton; GtkWidget *rt_end_hour_spinbutton; GtkWidget *rt_end_minute_spinbutton; GtkWidget *rt_interval_hour_spinbutton; GtkWidget *rt_interval_minute_spinbutton; GtkWidget *dp_1_checkbutton; GtkWidget *dp_2_checkbutton; GtkWidget *dp_3_checkbutton; GtkWidget *dp_4_checkbutton; GtkWidget *dp_5_checkbutton; GtkWidget *dp_6_checkbutton; GtkWidget *dp_7_checkbutton; GtkWidget *rt_dp_day_spinbutton; GtkWidget *rt_dp_month_spinbutton; GtkWidget *repeat_counter_spinbutton; GtkWidget *checkb_sound_enable; GtkWidget *checkb_ndialog_enable; GSList *notifications; gboolean notifications_enable; #ifdef HAVE_LIBWEBKIT WebKitWebView *html_webkitview; WebKitWebSettings *webkit_settings; #endif /* LIBWEBKIT */ } TASKS; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED typedef struct { /* contacts toolbar */ GtkToolbar *contacts_toolbar; GtkBox *vbox; GtkWidget *add_contact_button; GtkWidget *edit_contact_button; GtkWidget *delete_contact_button; GtkWidget *contacts_find_entry; GtkWidget *contacts_find_clear_button; GtkWidget *contacts_find_combobox; GtkWidget *contacts_paned; GtkWidget *panel_hbox; GtkWidget *scrolled_win; GtkWidget *contacts_list; GtkTreeSelection *contacts_list_selection; GtkListStore *contacts_list_store; GtkTreeModel *contacts_filter; GtkTreeModel *contacts_sort; GtkWidget *contacts_panel_scrolledwindow; GtkUIManager *contacts_uim_widget; gint contacts_link_index; gint contacts_www_link_index; gint contacts_email_link_index; gint contacts_blog_link_index; gboolean write_flag; GtkWidget *next_field_button[CONTACTS_NUM_COLUMNS]; GtkTreeViewColumn *contacts_columns[CONTACTS_NUM_COLUMNS]; gchar **contact_fields_tags_name; GtkWidget *contacts_add_window; GtkWidget *contacts_ok_button; GtkWidget *contacts_browse_button; GtkWidget *add_info_textview; GtkWidget *photo_browse_button; GtkWidget *birth_day_date_button; GtkWidget *name_day_date_button; GtkWidget *combobox_group; GtkWidget *contact_entries[CONTACTS_NUM_COLUMNS]; GtkWidget *select_date_window; GtkWidget *select_date_calendar; gboolean contacts_accept_state; gboolean contacts_edit_state; guint32 birthday_date; guint32 nameday_date; /* show birthdays */ GtkWidget *birthdays_window; GtkWidget *birthdays_list; GtkTreeSelection *birthdays_list_selection; GtkListStore *birthdays_list_store; /* export contacts */ GtkWidget *export_window; GtkWidget *export_button; GtkWidget *output_file_entry; GtkWidget *first_row_header_check_button; GtkWidget *check_buttons[CONTACTS_NUM_COLUMNS]; /* import contacts */ GtkWidget *import_window; GtkWidget *import_sel_window; GtkWidget *import_button; GtkWidget *value_labels[CONTACTS_NUM_COLUMNS]; GtkWidget *field_type_comboboxes[CONTACTS_NUM_COLUMNS]; GtkWidget *first_row_as_header_check_button; GtkWidget *current_record_spinbutton; GtkObject *current_record_spinbutton_adj; GtkWidget *n_records_label; gint field_type[CONTACTS_NUM_COLUMNS]; guint max_fields; gchar *file_buffer; gsize file_length; PangoFontDescription *fd_ai_font; #ifdef HAVE_LIBWEBKIT WebKitWebView *html_webkitview; WebKitWebSettings *webkit_settings; #endif /* LIBWEBKIT */ GtkWidget *input_file_entry; GtkWidget *import_type_combobox; GtkWidget *bluetooth_radiobutton; GtkWidget *usb_radiobutton; GtkWidget *bluetooth_address_entry; GtkWidget *file_import_vbox; GtkWidget *import_vbox; GtkWidget *bluetooth_params_hbox; GtkWidget *usb_params_hbox; GtkWidget *bluetooth_channel_spinbutton; GtkWidget *usb_interface_spinbutton; GtkWidget *use_wbxml_checkbutton; } CONTACTS; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED typedef struct { /* notes toolbar */ GtkToolbar *notes_toolbar_selector; GtkToolbar *notes_toolbar_editor; GtkBox *vbox; GtkWidget *vbox_selector; GtkWidget *vbox_editor; GtkWidget *scrolled_win; GtkUIManager *notes_uim_selector_widget; GtkUIManager *notes_uim_editor_widget; gboolean editor_active; /* selector */ GtkWidget *notes_list; GtkListStore *notes_list_store; GtkTreeSelection *notes_list_selection; GtkWidget *notes_find_entry; GtkWidget *notes_find_clear_button; GtkWidget *add_entry_window; GtkWidget *edit_entry_window; GtkWidget *enter_password_window; GtkWidget *add_entry_ok_button; GtkWidget *note_name_entry; GtkWidget *password_entry; GtkWidget *spassword_entry; GtkWidget *category_combobox; GtkWidget *note_normal_radiobutton; GtkWidget *remember_cursor_checkbutton; GtkTreeViewColumn *notes_columns[NOTES_NUM_COLUMNS]; gchar *filename; gboolean encrypted; #ifdef HAVE_LIBGRINGOTTS GRG_CTX context; GRG_KEY keyholder; #endif /* HAVE_LIBGRINGOTTS */ /* category filter */ GtkTreeModel *notes_filter; GtkTreeModel *notes_sort; gint filter_index; GtkWidget *cf_combobox; GtkWidget *n_items_label; /* editor */ PangoFontDescription *fd_notes_font; GtkWidget *title_label; GtkWidget *font_picker; GtkWidget *editor_textview; GtkWidget *editor_scrolledwindow; GtkWidget *ro_editor_scrolledwindow; GtkWidget *editor_viewport; GtkWidget *ro_editor_viewport; gboolean changed; gboolean find_next_flag; gboolean buffer_check_modify_enable; gboolean find_hbox_visible; gboolean note_read_only; GtkWidget *nrow_label_t; GtkWidget *nrow_label; GtkWidget *ncol_label_t; GtkWidget *ncol_label; GtkWidget *find_hbox; GtkWidget *find_entry; GtkWidget *find_case_checkbutton; GtkWidget *readonly_checkbutton; #ifdef HAVE_LIBWEBKIT WebKitWebView *html_webkitview; WebKitWebSettings *webkit_settings; #endif /* LIBWEBKIT */ /* read-only: scrollbar position */ gdouble htmlViewPosition; } NOTES; #endif /* NOTES_ENABLED */ typedef struct { /* calendar */ GtkWidget *calendar_vbox; GtkWidget *event_marker_type_combobox; GtkWidget *today_marker_type_combobox; GtkWidget *header_color_picker; GtkWidget *weekend_color_picker; GtkWidget *selection_color_picker; GtkWidget *mark_color_picker; GtkWidget *mark_current_day_color_picker; GtkWidget *birthday_mark_color_picker; GtkWidget *cft_hscale; GtkWidget *cft_label_1, *cft_label_2, *cft_label_3; GtkWidget *show_day_names_checkbutton; GtkWidget *no_month_change_checkbutton; GtkWidget *show_week_numbers_checkbutton; GtkWidget *week_start_monday_checkbutton; GtkWidget *simple_view_in_fy_calendar_checkbutton; GtkWidget *enable_auxilary_calendars_checkbutton; GtkWidget *strikethrough_past_notes_checkbutton; GtkWidget *ascending_sorting_in_day_notes_checkbutton; GtkWidget *spell_checker_in_day_notes_checkbutton; GtkWidget *enable_block_cursor_checkbutton; GtkWidget *date_header_format_entry; GtkWidget *day_marker_entry; GtkWidget *day_name_font_entry; GtkWidget *calendar_font_entry; GtkWidget *notes_font_entry; GtkWidget *calendar_category_entry; GtkListStore *calendar_category_store; GtkWidget *calendar_category_treeview; GtkTreeSelection *calendar_category_select; GtkWidget *calendar_category_add_button; GtkWidget *calendar_category_edit_button; GtkWidget *calendar_category_remove_button; GtkWidget *day_category_color_picker; GtkWidget *color_edit_window; GtkWidget *color_edit_picker; GtkWidget *color_edit_name_entry; GtkWidget *color_edit_ok_button; GtkWidget *ical_edit_window; GtkWidget *ical_edit_name_entry; GtkWidget *ical_edit_filename_entry; GtkWidget *ical_edit_disable_checkbutton; GtkWidget *ical_edit_filename_browse_button; GtkWidget *ical_edit_ok_button; GtkWidget *calendar_ical_files_add_button; GtkWidget *calendar_ical_files_edit_button; GtkWidget *calendar_ical_files_remove_button; GtkWidget *calendar_ical_files_browse_button; GtkWidget *calendar_ical_files_name_entry; GtkWidget *calendar_ical_files_filename_entry; GtkListStore *calendar_ical_files_store; GtkWidget *calendar_ical_files_treeview; GtkTreeSelection *calendar_ical_files_select; GtkWidget *di_show_current_time_checkbutton; GtkWidget *di_show_current_time_seconds_checkbutton; GtkWidget *di_show_day_number_checkbutton; GtkWidget *di_show_current_day_distance_checkbutton; GtkWidget *di_show_marked_days_checkbutton; GtkWidget *di_show_week_number_checkbutton; GtkWidget *di_show_weekend_days_checkbutton; GtkWidget *di_show_day_category_checkbutton; GtkWidget *di_show_moon_phase_checkbutton; GtkWidget *di_show_notes_checkbutton; GtkWidget *di_show_zodiac_sign_checkbutton; #ifdef TASKS_ENABLED /* tasks */ GtkWidget *tasks_vbox; GtkWidget *ti_font_entry; GtkWidget *due_today_color_picker; GtkWidget *due_7days_color_picker; GtkWidget *past_due_color_picker; GtkWidget *tasks_category_entry; GtkListStore *tasks_category_store; GtkWidget *tasks_category_treeview; GtkTreeSelection *tasks_category_select; GtkWidget *tasks_category_add_button; GtkWidget *tasks_category_remove_button; GtkWidget *ct_bold_items_checkbutton; GtkWidget *ct_delete_items_checkbutton; GtkWidget *ct_hide_items_checkbutton; GtkWidget *ct_add_item_checkbutton; GtkWidget *ct_remember_category_checkbutton; GtkWidget *vc_due_date_checkbutton; GtkWidget *vc_type_checkbutton; GtkWidget *vc_category_checkbutton; GtkWidget *vc_priority_checkbutton; GtkWidget *postpone_time_spinbutton; GtkWidget *sound_alarm_repeat_spinbutton; GtkWidget *global_notification_cmd_entry; GtkWidget *global_notification_valid_image; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /* contacts */ GtkWidget *contacts_vbox; GtkWidget *contacts_hide_group_column_checkbutton; GtkWidget *contacts_group_entry; GtkListStore *contacts_group_store; GtkWidget *contacts_group_treeview; GtkWidget *cn_font_size_spinbutton; GtkWidget *ci_font_size_spinbutton; GtkTreeSelection *contacts_group_select; GtkWidget *contacts_group_add_button; GtkWidget *contacts_group_remove_button; GtkWidget *contacts_photo_size_combobox; GtkWidget *contact_tag_color_picker; GtkWidget *contact_link_color_picker; GtkWidget *vc_age_checkbutton; GtkWidget *vc_birthday_date_checkbutton; GtkWidget *vc_zodiac_sign_checkbutton; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED /* notes */ GtkWidget *notes_vbox; GtkWidget *editor_font_entry; GtkWidget *notes_enc_algorithm_combobox; GtkWidget *notes_enc_hashing_combobox; GtkWidget *notes_comp_algorithm_combobox; GtkWidget *notes_comp_ratio_combobox; GtkWidget *notes_category_entry; GtkListStore *notes_category_store; GtkWidget *notes_category_treeview; GtkTreeSelection *notes_category_select; GtkWidget *notes_category_add_button; GtkWidget *notes_category_remove_button; GtkWidget *nvc_type_checkbutton; GtkWidget *nvc_category_checkbutton; GtkWidget *nvc_last_changes_checkbutton; GtkWidget *nvc_created_checkbutton; GtkWidget *cn_remember_category_checkbutton; GtkWidget *cn_use_system_date_checkbutton; #endif /* NOTES_ENABLED */ /* general */ GtkWidget *general_vbox; GtkWidget *layout_combobox; GtkWidget *tabs_position_combobox; GtkWidget *override_locale_label_1; GtkWidget *override_locale_label_2; GtkWidget *override_locale_label_3; GtkWidget *date_format_combobox; GtkWidget *time_format_combobox; GtkWidget *entry_web_browser; GtkWidget *entry_email_client; GtkWidget *entry_sound_player; GtkWidget *entry_spell_lang; GtkWidget *enable_tooltips_checkbutton; GtkWidget *override_locale_checkbutton; GtkWidget *disable_underline_in_links_checkbutton; GtkWidget *default_stock_icons_checkbutton; GtkWidget *enable_rules_hint_checkbutton; GtkWidget *remember_latest_tab_checkbutton; GtkWidget *save_data_checkbutton; GtkWidget *enable_systray_checkbutton; GtkWidget *start_minimised_checkbutton; GtkWidget *blink_on_events_checkbutton; GtkWidget *ignore_day_note_events_checkbutton; GtkWidget *hide_calendar_checkbutton; GtkWidget *hide_tasks_checkbutton; GtkWidget *hide_contacts_checkbutton; GtkWidget *hide_notes_checkbutton; /* preferences */ GtkWidget *window; GtkWidget *notebook; GtkWidget *general; GtkWidget *calendar; GtkWidget *tasks; GtkWidget *notes; GtkWidget *contacts; } OPTIONS; typedef struct { /* gui */ GtkWidget *main_window; GtkWidget *notebook; gboolean all_pages_added; gboolean window_visible; gint current_tab; gint number_of_tabs; /* tray icon */ GtkStatusIcon *osmo_trayicon; GtkWidget *trayicon_popup_menu; gboolean no_tray; GtkWidget *trayicon_menu_calendar_item; #ifdef TASKS_ENABLED GtkWidget *trayicon_menu_tasks_item; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED GtkWidget *trayicon_menu_contacts_item; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED GtkWidget *trayicon_menu_notes_item; #endif /* NOTES_ENABLED */ /* command line parameters */ gboolean calendar_only; gboolean check_events; gint check_ndays_events; gchar *config_path; gboolean tiny_gui; #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) /* backup */ GSList *file_list; #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ /* links handling */ gboolean hovering_over_link; GdkCursor *hand_cursor; GdkCursor *regular_cursor; GtkTextTag *gui_url_tag; /* check events */ GtkWidget *event_checker_window; GtkWidget *event_checker_list; GtkTreeSelection *event_checker_list_selection; GtkListStore *event_checker_list_store; /* about page */ GtkWidget *about_radiobutton; GtkWidget *license_radiobutton; GtkWidget *help_radiobutton; GtkWidget *scrolled_window; GtkWidget *about_textview; GtkBox *about_vbox; gint about_counter; gint about_link_index; GSList *about_links_list; GtkTextIter about_entry_iter; GtkTextBuffer *about_entry_buffer; /* miscellaneous */ guint32 run_date; gint key_counter; gint run_time; gint save_status; gchar version[7]; /* print */ gint print_font_size; gint print_nlines; gint print_npages; gint print_lines_per_page; /* modules */ CALENDAR *cal; #ifdef TASKS_ENABLED TASKS *tsk; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED CONTACTS *cnt; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED NOTES *nte; #endif /* NOTES_ENABLED */ OPTIONS *opt; } GUI; typedef struct { gpointer *data; GUI *appGUI; } MESSAGE; gboolean gui_create_window (GUI *appGUI); void gui_add_to_notebook (GtkWidget *widget, gchar *text, GUI *appGUI); void gui_save_all_data (GUI *appGUI); void gui_save_data_and_run_command (gchar *command, GUI *appGUI); void gui_quit_osmo (GUI *appGUI); void gui_quit_osmo_cb (GtkComboBox *widget, GUI *appGUI); void gui_systray_initialize (GUI *appGUI); void gui_systray_update_icon (GUI *appGUI); void gui_systray_tooltip_update (GUI *appGUI); #endif /* _GUI_H */ osmo-0.2.14/src/tasks.c000664 001750 001750 00000236135 12561325524 014624 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2014 Tomasz MÄ…ka * (C) 2007-2014 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "about.h" #include "backup.h" #include "calendar.h" #include "calendar_utils.h" #include "calendar_widget.h" #include "i18n.h" #include "tasks_preferences_gui.h" #include "options_prefs.h" #include "preferences_gui.h" #include "stock_icons.h" #include "tasks.h" #include "tasks_items.h" #include "tasks_export.h" #include "tasks_print.h" #include "tasks_utils.h" #include "utils.h" #include "utils_gui.h" #include "check_events.h" #ifdef TASKS_ENABLED /*============================================================================*/ static void show_about_window_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *window = opt_create_about_window (appGUI); gtk_widget_show (window); } /*============================================================================*/ static void show_preferences_window_cb (GtkWidget *widget, GUI *appGUI) { appGUI->opt->window = opt_create_preferences_window (appGUI); gtk_widget_show (appGUI->opt->window); gint page = gtk_notebook_page_num (GTK_NOTEBOOK (appGUI->opt->notebook), appGUI->opt->tasks); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->opt->notebook), page); } /*============================================================================*/ gint task_calculate_new_date (TASK_ITEM *item, GUI *appGUI, guint32 *new_date, gint *new_time) { GDate *cdate; guint32 current_julian; gint current_time; gint i, cycles; gboolean repeat_time, repeat_date, set_start_time; gboolean month_mode_flag = item->repeat_month_interval > 0 && item->repeat_day_interval == 0; repeat_time = repeat_date = FALSE; set_start_time = TRUE; cycles = 0; current_julian = utl_date_get_current_julian (); current_time = utl_time_get_current_seconds (); *new_date = item->due_date_julian; *new_time = item->due_time; if (item->repeat_time_start < item->repeat_time_end && item->repeat_time_interval > 0 && item->due_time >= 0) repeat_time = TRUE; if (item->repeat_month_interval > 0 || item->repeat_day_interval > 0) repeat_date = TRUE; if (repeat_time) { for (i = item->repeat_time_start; i <= item->repeat_time_end; i += item->repeat_time_interval) { if (i * 60 > item->due_time && i * 60 > current_time) { *new_time = i * 60; set_start_time = FALSE; break; } } if (set_start_time && repeat_date) *new_time = item->repeat_time_start * 60; } if (*new_time < current_time || item->due_time < 0) current_julian++; if (item->due_date_julian < current_julian && repeat_date) { cdate = g_date_new_julian (item->due_date_julian); while (*new_date < current_julian) { g_date_add_months (cdate, item->repeat_month_interval); g_date_add_days (cdate, item->repeat_day_interval); if (month_mode_flag) { utl_date_set_valid_day (cdate, item->repeat_start_day); utl_date_set_nearest_weekday (cdate, item->repeat_day, TRUE); } else utl_date_set_nearest_weekday (cdate, item->repeat_day, FALSE); *new_date = g_date_get_julian (cdate); cycles++; if (item->repeat_counter != 0 && cycles >= item->repeat_counter) { g_date_free (cdate); return cycles; } } if (repeat_time) *new_time = item->repeat_time_start * 60; g_date_free (cdate); } return cycles; } /*------------------------------------------------------------------------------*/ void tasks_repeat_done (GtkTreeIter *iter, TASK_ITEM *item, GUI *appGUI) { guint32 new_date; gint new_time; gint cycles; g_return_if_fail (item->repeat == TRUE); cycles = task_calculate_new_date (item, appGUI, &new_date, &new_time); if (item->repeat_counter == 0 || item->repeat_counter > cycles) { if (item->repeat_counter > cycles) { gtk_list_store_set (appGUI->tsk->tasks_list_store, iter, TA_COLUMN_REPEAT_COUNTER, item->repeat_counter - cycles, -1); } if (new_date == item->due_date_julian && new_time == item->due_time) { if (config.delete_completed) gtk_list_store_remove (appGUI->tsk->tasks_list_store, iter); else gtk_list_store_set (appGUI->tsk->tasks_list_store, iter, TA_COLUMN_COLOR, get_date_color (item->due_date_julian, item->due_time, TRUE, appGUI), TA_COLUMN_DONE, TRUE, -1); } else { gtk_list_store_set (appGUI->tsk->tasks_list_store, iter, TA_COLUMN_COLOR, get_date_color (new_date, new_time, FALSE, appGUI), TA_COLUMN_DUE_DATE_JULIAN, new_date, TA_COLUMN_DUE_DATE, get_date_time_full_str (new_date, new_time), TA_COLUMN_DUE_TIME, new_time, TA_COLUMN_DONE, FALSE, -1); } } else { if (config.delete_completed) gtk_list_store_remove (appGUI->tsk->tasks_list_store, iter); else gtk_list_store_set (appGUI->tsk->tasks_list_store, iter, TA_COLUMN_REPEAT_COUNTER, 0, TA_COLUMN_COLOR, get_date_color (new_date, new_time, TRUE, appGUI), TA_COLUMN_DUE_DATE_JULIAN, new_date, TA_COLUMN_DUE_DATE, get_date_time_full_str (new_date, new_time), TA_COLUMN_DUE_TIME, new_time, TA_COLUMN_DONE, TRUE, -1); } } /*------------------------------------------------------------------------------*/ void panel_close_desc_cb (GtkWidget *widget, gpointer data) { GtkPaned *paned; GUI *appGUI = (GUI *)data; paned = GTK_PANED (appGUI->tsk->tasks_paned); gtk_paned_set_position(paned, paned->max_position); } /*------------------------------------------------------------------------------*/ void tasks_item_selected (GtkTreeSelection *selection, gpointer data) { GtkTreeIter iter; gint selection_size; GtkTreeModel *model; gchar *text; guint32 start_date_julian, done_date_julian, due_date_julian; gint due_time; gchar tmpbuf[BUFFER_SIZE]; gboolean repeat, prev_state, next_state; #ifndef HAVE_LIBWEBKIT GtkTextBuffer *text_buffer; GtkTextIter titer; GtkTextChildAnchor *anchor; GtkWidget *hseparator; #else gchar *toutput = g_strdup (""), *output; PangoFontDescription *font_desc; #endif /* HAVE_LIBWEBKIT */ GUI *appGUI = (GUI *)data; #ifndef HAVE_LIBWEBKIT text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview)); utl_gui_clear_text_buffer (text_buffer, &titer); #endif /* HAVE_LIBWEBKIT */ selection_size = gtk_tree_selection_count_selected_rows(selection); if (selection_size > 1) { gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/delete"), TRUE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/prev_date"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/next_date"), FALSE); #ifdef HAVE_LIBWEBKIT webkit_web_view_load_string (WEBKIT_WEB_VIEW (appGUI->tsk->html_webkitview), "", "text/html", "UTF-8", "file://"); #endif /* HAVE_LIBWEBKIT */ } else if (selection_size == 1) { gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/edit"), TRUE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/delete"), TRUE); iter = utl_gui_get_first_selection_iter(selection, &model); gtk_tree_model_get (model, &iter, TA_COLUMN_DESCRIPTION, &text, TA_COLUMN_DUE_DATE_JULIAN, &due_date_julian, TA_COLUMN_START_DATE_JULIAN, &start_date_julian, TA_COLUMN_DONE_DATE_JULIAN, &done_date_julian, TA_COLUMN_DUE_TIME, &due_time, TA_COLUMN_REPEAT, &repeat, -1); if (repeat == TRUE) { prev_state = FALSE; next_state = utl_date_time_in_the_past_js (due_date_julian, due_time); } else { prev_state = next_state = (due_date_julian != 0) ? TRUE : FALSE; } gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/prev_date"), prev_state); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/next_date"), next_state); g_snprintf (tmpbuf, BUFFER_SIZE, "\n%s: %s\n", _("Started"), julian_to_str (start_date_julian, DATE_FULL, config.override_locale_settings)); if (text != NULL) { #ifndef HAVE_LIBWEBKIT gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, text, -1, "info_font", NULL); gtk_text_buffer_insert (text_buffer, &titer, "\n", -1); #endif /* HAVE_LIBWEBKIT */ } if (start_date_julian) { #ifdef HAVE_LIBWEBKIT if (text == NULL) toutput = utl_strconcat (toutput, "", tmpbuf, "
", NULL); else toutput = utl_strconcat (toutput, "

", tmpbuf, "
", NULL); #else gtk_text_buffer_insert (text_buffer, &titer, "\n", -1); anchor = gtk_text_buffer_create_child_anchor (text_buffer, &titer); gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, tmpbuf, -1, "italic", NULL); #endif /* HAVE_LIBWEBKIT */ if (done_date_julian != 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s: %s\n", _("Finished"), julian_to_str (done_date_julian, DATE_FULL, config.override_locale_settings)); #ifdef HAVE_LIBWEBKIT toutput = utl_strconcat (toutput, "", tmpbuf, "", NULL); #else gtk_text_buffer_insert_with_tags_by_name (text_buffer, &titer, tmpbuf, -1, "italic", NULL); #endif /* HAVE_LIBWEBKIT */ } #ifdef HAVE_LIBWEBKIT if (text == NULL) text = g_strdup (""); font_desc = pango_font_description_from_string((gchar *) config.task_info_font); output = utl_text_to_html_page (text, pango_font_description_get_family (font_desc), NULL, NULL, NULL, NULL, toutput); g_free (toutput); g_object_set (appGUI->tsk->webkit_settings, "default-font-size", PANGO_PIXELS(pango_font_description_get_size (font_desc)), NULL); webkit_web_view_load_string (WEBKIT_WEB_VIEW (appGUI->tsk->html_webkitview), output, "text/html", "UTF-8", "file://"); g_free (output); pango_font_description_free (font_desc); #else gtk_text_view_set_buffer (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), text_buffer); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); if (!config.gui_layout) gtk_widget_set_size_request (hseparator, 320, -1); else gtk_widget_set_size_request (hseparator, 200, -1); gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), hseparator, anchor); #endif /* HAVE_LIBWEBKIT */ } g_free (text); } else { gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/delete"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/prev_date"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/next_date"), FALSE); #ifdef HAVE_LIBWEBKIT webkit_web_view_load_string (WEBKIT_WEB_VIEW (appGUI->tsk->html_webkitview), "", "text/html", "UTF-8", "file://"); #endif /* HAVE_LIBWEBKIT */ } } /*------------------------------------------------------------------------------*/ void tasks_add_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; tasks_add_edit_dialog_show (FALSE, 0, utl_time_get_current_seconds (), appGUI); } /*------------------------------------------------------------------------------*/ void tasks_edit_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; if (gtk_tree_selection_count_selected_rows(appGUI->tsk->tasks_list_selection) == 1) tasks_add_edit_dialog_show (TRUE, appGUI->tsk->tasks_due_julian_day, appGUI->tsk->tasks_due_time, appGUI); } /*------------------------------------------------------------------------------*/ void tasks_remove_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; tasks_remove_dialog_show (appGUI); } /*------------------------------------------------------------------------------*/ void task_modify_due_date (GtkTreeRowReference *ref, gint value, GUI *appGUI) { GtkTreeIter iter, *e_iter; guint32 due_date; gint due_time; guint id; TASK_ITEM *item; GtkTreePath *path; GtkTreeModel *model; model = gtk_tree_row_reference_get_model(ref); path = gtk_tree_row_reference_get_path(ref); if (path != NULL) { if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get(model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &due_date, TA_COLUMN_DUE_TIME, &due_time, TA_COLUMN_ID, &id, -1); e_iter = tsk_get_iter(id, appGUI); g_return_if_fail(e_iter != NULL); item = tsk_get_item(e_iter, appGUI); g_return_if_fail(item != NULL); if (item->repeat == TRUE) tasks_repeat_done(e_iter, item, appGUI); else if (due_date != 0) { due_date += value; gtk_list_store_set(appGUI->tsk->tasks_list_store, e_iter, TA_COLUMN_COLOR, get_date_color(due_date, due_time, FALSE, appGUI), TA_COLUMN_DUE_DATE_JULIAN, due_date, TA_COLUMN_DUE_DATE, get_date_time_full_str(due_date, due_time), -1); } tsk_item_free(item); } gtk_tree_path_free(path); } } /*------------------------------------------------------------------------------*/ void tasks_increment_due_date (GtkTreeRowReference *ref, GUI *appGUI) { task_modify_due_date(ref, 1, appGUI); } /*------------------------------------------------------------------------------*/ void tasks_decrement_due_date (GtkTreeRowReference *ref, GUI *appGUI) { task_modify_due_date(ref, -1, appGUI); } /*------------------------------------------------------------------------------*/ void tasks_modify_due_date (GFunc modify_function, GUI *appGUI) { utl_gui_foreach_selected(appGUI->tsk->tasks_list_selection, GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), modify_function, appGUI); } /*------------------------------------------------------------------------------*/ void tasks_change_due_date_to_prev_date_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; tasks_modify_due_date ((GFunc)tasks_decrement_due_date, appGUI); } /*------------------------------------------------------------------------------*/ void tasks_change_due_date_to_next_date_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; tasks_modify_due_date ((GFunc)tasks_increment_due_date, appGUI); } /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBICAL void tasks_export_visible_items_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; export_tasks_to_file (appGUI); } #endif /* HAVE_LIBICAL */ /*------------------------------------------------------------------------------*/ #ifdef PRINTING_SUPPORT void tasks_print_visible_items_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *) data; tasks_print (appGUI); } #endif /* PRINTING_SUPPORT */ /*------------------------------------------------------------------------------*/ void done_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer user_data) { GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; gboolean done_status; guint32 done_date, category; GtkTreeModel *model; guint id; GUI *appGUI = (GUI *) user_data; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); category = gtk_combo_box_get_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox)); sort_path = gtk_tree_path_new_from_string (path_str); if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (model, &iter, path); /* get toggled iter */ gtk_tree_model_get (model, &iter, TA_COLUMN_DONE, &done_status, TA_COLUMN_ID, &id, -1); if (done_status == FALSE) done_date = utl_date_get_current_julian (); else done_date = 0; gtk_list_store_set (GTK_LIST_STORE (model), &iter, TA_COLUMN_DONE, !done_status, TA_COLUMN_DONE_DATE_JULIAN, done_date, -1); if (done_status == FALSE && config.delete_completed) gtk_list_store_remove (GTK_LIST_STORE (model), &iter); gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } gtk_tree_path_free (sort_path); } cal_set_day_info (appGUI); refresh_tasks (appGUI); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), category); if (config.save_data_after_modification) write_tasks_entries (appGUI); } /*------------------------------------------------------------------------------*/ gchar * get_date_color (guint32 julian_day, gint time, gboolean done, GUI *appGUI) { static gchar due_date_color[MAXCOLORNAME]; GdkColor *color; gint current_time; gint32 r; current_time = utl_time_get_current_seconds (); color = &appGUI->main_window->style->text[GTK_STATE_NORMAL]; g_snprintf (due_date_color, MAXCOLORNAME, "#%02X%02X%02X", color->red * 256 / 65536, color->green * 256 / 65536, color->blue * 256 / 65536); if (julian_day != 0 && done == FALSE) { r = julian_day - utl_date_get_current_julian (); if (r == 0) { if (time >= 0 && current_time > time) g_strlcpy (due_date_color, config.past_due_color, MAXCOLORNAME); else g_strlcpy (due_date_color, config.due_today_color, MAXCOLORNAME); } else if (r > 0 && r < 7) g_strlcpy (due_date_color, config.due_7days_color, MAXCOLORNAME); else if (r < 0) g_strlcpy (due_date_color, config.past_due_color, MAXCOLORNAME); } return due_date_color; } /*------------------------------------------------------------------------------*/ void set_categories (GUI *appGUI) { GtkTreeIter iter; gchar *category; gboolean tasks_state; gint i, n; n = utl_gui_get_combobox_items (GTK_COMBO_BOX (appGUI->tsk->cf_combobox)); for (i = n-1; i >= 0; i--) gtk_combo_box_remove_text (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), i); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), _("All items")); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, TC_COLUMN_NAME, &category, TC_COLUMN_TASKS, &tasks_state, -1); if (tasks_state == TRUE) gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), category); g_free (category); } if (config.remember_category_in_tasks == TRUE) gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), config.current_category_in_tasks); else gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), 0); } /*------------------------------------------------------------------------------*/ void refresh_tasks (GUI *appGUI) { GtkTreeIter iter; gint i = 0, due_time; guint32 julian_day; gchar *priority; gboolean done; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_DONE, &done, TA_COLUMN_DUE_DATE_JULIAN, &julian_day, TA_COLUMN_DUE_TIME, &due_time, TA_COLUMN_PRIORITY, &priority, -1); if (tsk_get_priority_index (priority) == HIGH_PRIORITY && config.tasks_high_in_bold == TRUE) /* high priority ? */ { gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DUE_DATE, get_date_time_full_str (julian_day, due_time), TA_COLUMN_COLOR, get_date_color (julian_day, due_time, done, appGUI), TA_COLUMN_BOLD, PANGO_WEIGHT_BOLD,-1); } else { gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DUE_DATE, get_date_time_full_str (julian_day, due_time), TA_COLUMN_COLOR, get_date_color (julian_day, due_time, done, appGUI), TA_COLUMN_BOLD, PANGO_WEIGHT_NORMAL,-1); } g_free (priority); } } /*------------------------------------------------------------------------------*/ void update_tasks_number (GUI *appGUI) { gint i; gchar tmpbuf[BUFFER_SIZE]; i = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (appGUI->tsk->tasks_filter), NULL); if (i > 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%4d %s", i, ngettext ("entry", "entries", i)); #ifdef PRINTING_SUPPORT gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/print"), TRUE); #endif /* PRINTING_SUPPORT */ #ifdef HAVE_LIBICAL gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/export"), TRUE); #endif /* HAVE_LIBICAL */ } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("no entries")); #ifdef PRINTING_SUPPORT gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/print"), FALSE); #endif /* PRINTING_SUPPORT */ #ifdef HAVE_LIBICAL gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/export"), FALSE); #endif /* HAVE_LIBICAL */ } gtk_label_set_markup (GTK_LABEL (appGUI->tsk->n_items_label), tmpbuf); } void task_list_row_changed_cb (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, GUI *appGUI) { TASK_ITEM *item = tsk_get_item(iter, appGUI); notify_task(item, appGUI); tsk_item_free(item); } void task_filter_row_inserted_cb (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) { update_tasks_number ((GUI *) user_data); } void task_filter_row_deleted_cb (GtkTreeModel *tree_model, GtkTreePath *path, gpointer user_data) { update_tasks_number ((GUI *) user_data); } /*------------------------------------------------------------------------------*/ guint get_number_of_visible_tasks_with_date (GUI *appGUI) { guint32 date, n; GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; sort_path = gtk_tree_path_new_first (); n = 0; while (gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, sort_path) == TRUE) { if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, path); gtk_tree_model_get (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_DUE_DATE_JULIAN, &date, -1); if (date != 0) n++; gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } } gtk_tree_path_next (sort_path); } return n; } /*------------------------------------------------------------------------------*/ void add_item_to_list (TASK_ITEM *item, GUI *appGUI) { GtkTreeIter iter; GdkPixbuf *image; GtkWidget *helper; const gchar *stock_id; gchar *date_time_str; gtk_list_store_append (appGUI->tsk->tasks_list_store, &iter); gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DONE, item->done, TA_COLUMN_DUE_DATE_JULIAN, item->due_date_julian, TA_COLUMN_START_DATE_JULIAN, item->start_date_julian, TA_COLUMN_DONE_DATE_JULIAN, item->done_date_julian, TA_COLUMN_DUE_TIME, item->due_time, TA_COLUMN_PRIORITY, item->priority, TA_COLUMN_CATEGORY, item->category, TA_COLUMN_SUMMARY, item->summary, TA_COLUMN_DESCRIPTION, item->desc, TA_COLUMN_SOUND_ENABLE, item->sound_enable, TA_COLUMN_NDIALOG_ENABLE, item->ndialog_enable, TA_COLUMN_COLOR, get_date_color (item->due_date_julian, item->due_time, item->done, appGUI), TA_COLUMN_ACTIVE, item->active, TA_COLUMN_OFFLINE_IGNORE, item->offline_ignore, TA_COLUMN_REPEAT, item->repeat, TA_COLUMN_REPEAT_DAY, item->repeat_day, TA_COLUMN_REPEAT_MONTH_INTERVAL, item->repeat_month_interval, TA_COLUMN_REPEAT_DAY_INTERVAL, item->repeat_day_interval, TA_COLUMN_REPEAT_START_DAY, item->repeat_start_day, TA_COLUMN_REPEAT_TIME_START, item->repeat_time_start, TA_COLUMN_REPEAT_TIME_END, item->repeat_time_end, TA_COLUMN_REPEAT_TIME_INTERVAL, item->repeat_time_interval, TA_COLUMN_REPEAT_COUNTER, item->repeat_counter, TA_COLUMN_ALARM_COMMAND, item->alarm_command, TA_COLUMN_WARNING_DAYS, item->warning_days, TA_COLUMN_WARNING_TIME, item->warning_time, TA_COLUMN_POSTPONE_TIME, item->postpone_time, TA_COLUMN_ID, item->id, -1); helper = gtk_image_new (); stock_id = (item->repeat == TRUE) ? OSMO_STOCK_TYPE_RECURRENT : OSMO_STOCK_TYPE_NORMAL; image = gtk_widget_render_icon (helper, stock_id, GTK_ICON_SIZE_MENU, NULL); gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_TYPE, image, -1); g_object_unref (image); date_time_str = utl_date_time_print_default (item->due_date_julian, item->due_time, FALSE); gtk_list_store_set (appGUI->tsk->tasks_list_store, &iter, TA_COLUMN_DUE_DATE, date_time_str, -1); g_free (date_time_str); } /*------------------------------------------------------------------------------*/ gint list_dbclick_cb (GtkWidget * widget, GdkEventButton * event, gpointer data) { GUI *appGUI = (GUI *) data; if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) { if (config.add_edit == FALSE) tasks_edit_item_cb (NULL, appGUI); else tasks_add_edit_dialog_show (FALSE, 0, utl_time_get_current_seconds (), appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean tasks_list_filter_cb (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { gchar *category; gchar *value; gboolean done, result; GUI *appGUI = (GUI *) data; gtk_tree_model_get (model, iter, TA_COLUMN_DONE, &done, TA_COLUMN_CATEGORY, &category, TA_COLUMN_SUMMARY, &value, -1); if (tsk_get_category_state(category, STATE_TASKS, appGUI) == FALSE) { result = FALSE; } else if (config.hide_completed && done == TRUE) { result = FALSE; } else if (appGUI->tsk->filter_index && (utl_gui_list_store_get_text_index(appGUI->opt->tasks_category_store, category) != appGUI->tsk->filter_index)) { result = FALSE; } else if (value == NULL) { result = FALSE; } else { const gchar *text = gtk_entry_get_text(GTK_ENTRY(appGUI->tsk->tasks_find_entry)); if (text == NULL) { result = TRUE; } else if (!g_utf8_strlen(text, -1)) { result = TRUE; } else { result = utl_text_strcasestr(value, text); } } g_free(category); g_free(value); return result; } /*------------------------------------------------------------------------------*/ void category_filter_cb (GtkComboBox *widget, gpointer data) { GUI *appGUI = (GUI *) data; appGUI->tsk->filter_index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); if (appGUI->tsk->filter_index != -1) { gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter)); } } /*------------------------------------------------------------------------------*/ gint tasks_column_sort_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { gboolean done_a, done_b; gchar *priority_a, *priority_b; guint32 due_date_a, due_date_b; gint due_time_a, due_time_b; gboolean repeat_a, repeat_b; gchar *summary_a, *summary_b; gchar *category_a, *category_b; gint diff; gint sort_column = GPOINTER_TO_INT(user_data); if (iter_a == NULL || iter_b == NULL) { return 0; } switch(sort_column) { case TA_COLUMN_DUE_DATE: gtk_tree_model_get (model, iter_a, TA_COLUMN_DUE_TIME, &due_time_a, TA_COLUMN_DUE_DATE_JULIAN, &due_date_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_DUE_TIME, &due_time_b, TA_COLUMN_DUE_DATE_JULIAN, &due_date_b, -1); if (!due_date_a) due_date_a = 1 << 31; if (!due_date_b) due_date_b = 1 << 31; diff = utl_date_time_compare_js(due_date_a, due_time_a, due_date_b, due_time_b); break; case TA_COLUMN_PRIORITY: gtk_tree_model_get (model, iter_a, TA_COLUMN_PRIORITY, &priority_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_PRIORITY, &priority_b, -1); diff = tsk_get_priority_index (priority_a) - tsk_get_priority_index (priority_b); g_free (priority_a); g_free (priority_b); break; case TA_COLUMN_DONE: gtk_tree_model_get (model, iter_a, TA_COLUMN_DONE, &done_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_DONE, &done_b, -1); diff = done_a - done_b; break; case TA_COLUMN_TYPE: gtk_tree_model_get (model, iter_a, TA_COLUMN_REPEAT, &repeat_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_REPEAT, &repeat_b, -1); diff = repeat_a - repeat_b; break; case TA_COLUMN_SUMMARY: gtk_tree_model_get (model, iter_a, TA_COLUMN_SUMMARY, &summary_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_SUMMARY, &summary_b, -1); diff = utl_text_strcmp(summary_a, summary_b); g_free (summary_a); g_free (summary_b); break; case TA_COLUMN_CATEGORY: gtk_tree_model_get (model, iter_a, TA_COLUMN_CATEGORY, &category_a, -1); gtk_tree_model_get (model, iter_b, TA_COLUMN_CATEGORY, &category_b, -1); diff = utl_text_strcmp(category_a, category_b); g_free (category_a); g_free (category_b); break; default: diff = 0; } return diff; } /*------------------------------------------------------------------------------*/ void tasks_sort_column_changed_cb (GtkTreeSortable *sortable, gpointer user_data) { GtkSortType sort_order; gtk_tree_sortable_get_sort_column_id(sortable, &config.tasks_sorting_column, &sort_order); config.tasks_sorting_order = sort_order; } /*------------------------------------------------------------------------------*/ void tasks_select_first_position_in_list (GUI *appGUI) { GtkTreeIter iter; GtkTreePath *path; /* set cursor at first position */ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter) == TRUE) { path = gtk_tree_model_get_path (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->tsk->tasks_list), path, NULL, TRUE); gtk_tree_path_free (path); } } } /*------------------------------------------------------------------------------*/ gboolean category_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ void add_tasks_toolbar_widget (GtkUIManager *tasks_uim_widget, GtkWidget *widget, gpointer data) { GtkWidget *handle_box; GUI *appGUI = (GUI *) data; if (GTK_IS_TOOLBAR (widget)) { appGUI->tsk->tasks_toolbar = GTK_TOOLBAR (widget); handle_box = gtk_handle_box_new (); gtk_widget_show (handle_box); gtk_container_add (GTK_CONTAINER (handle_box), widget); gtk_box_pack_start (appGUI->tsk->vbox, handle_box, FALSE, FALSE, 0); g_signal_connect_swapped (widget, "destroy", G_CALLBACK (gtk_widget_destroy), handle_box); } else gtk_box_pack_start (GTK_BOX (appGUI->tsk->vbox), widget, FALSE, FALSE, 0); gtk_widget_show (widget); } /*------------------------------------------------------------------------------*/ void tasks_selection_activate (gboolean active, GUI *appGUI) { if (active == TRUE) g_signal_connect (G_OBJECT (appGUI->tsk->tasks_list_selection), "changed", G_CALLBACK (tasks_item_selected), appGUI); else g_signal_handlers_disconnect_by_func (G_OBJECT (appGUI->tsk->tasks_list_selection), G_CALLBACK (tasks_item_selected), appGUI); } /*------------------------------------------------------------------------------*/ void store_task_columns_info (GUI *appGUI) { gint n; config.tasks_column_idx_0 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_DONE], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); config.tasks_column_idx_1 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); config.tasks_column_idx_2 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); config.tasks_column_idx_3 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); config.tasks_column_idx_4 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); config.tasks_column_idx_5 = utl_gui_get_column_position (appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY], GTK_TREE_VIEW (appGUI->tsk->tasks_list), MAX_VISIBLE_TASK_COLUMNS, appGUI); n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 0)); if (n > 1) config.tasks_column_idx_0_width = n; n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 1)); if (n > 1) config.tasks_column_idx_1_width = n; n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 2)); if (n > 1) config.tasks_column_idx_2_width = n; n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 3)); if (n > 1) config.tasks_column_idx_3_width = n; n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 4)); if (n > 1) config.tasks_column_idx_4_width = n; n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 5)); if (n > 1) config.tasks_column_idx_5_width = n; } /*------------------------------------------------------------------------------*/ void set_tasks_columns_width (GUI *appGUI) { GtkTreeViewColumn *col; gint w; w = 2 * utl_gui_get_sw_vscrollbar_width (appGUI->tsk->scrolled_win); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 0); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_0_width > 0) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_0_width); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 1); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_1_width > 0) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_1_width); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 2); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_2_width > 0) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_2_width); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 3); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_3_width > 0) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_3_width); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 4); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_4_width > 0) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_4_width); col = gtk_tree_view_get_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), 5); if (gtk_tree_view_column_get_visible (col) == TRUE && config.tasks_column_idx_5_width > w) gtk_tree_view_column_set_fixed_width (col, config.tasks_column_idx_5_width - w); } /*------------------------------------------------------------------------------*/ gboolean tasks_search_entry_changed_cb (GtkEditable *editable, gpointer user_data) { GtkTreePath *path; GtkTreeIter iter; gint i; GUI *appGUI = (GUI *) user_data; gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter)); if (g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->tsk->tasks_find_entry)), -1)) { i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->tsk->tasks_filter), &iter, NULL, i++)); if (i-1 != 0) { path = gtk_tree_path_new_first (); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->tsk->tasks_list), path, NULL, FALSE); gtk_tree_path_free (path); } } } return FALSE; } /*------------------------------------------------------------------------------*/ void gui_clear_find_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (appGUI->tsk->tasks_find_entry)), -1)) { gtk_entry_set_text (GTK_ENTRY (appGUI->tsk->tasks_find_entry), ""); refresh_tasks (appGUI); } gtk_widget_grab_focus (appGUI->tsk->tasks_find_entry); } /*------------------------------------------------------------------------------*/ #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) static void button_create_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_create (appGUI); } static void button_restore_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_restore (appGUI); } #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ void tasks_paned_position_change_cb (GObject *gobject, GParamSpec *pspec, GUI *appGUI) { config.tasks_pane_pos = gtk_paned_get_position (GTK_PANED (appGUI->tsk->tasks_paned)); } /*------------------------------------------------------------------------------*/ void gui_create_tasks (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *vbox3; GtkWidget *table; GtkWidget *label; GtkWidget *hseparator; GtkWidget *close_button; GtkCellRenderer *renderer; GtkWidget *top_viewport; GtkWidget *bottom_viewport; GError *error = NULL; GtkActionGroup *action_group = NULL; gchar tmpbuf[BUFFER_SIZE]; gint i, n; #ifndef HAVE_LIBWEBKIT GtkTextBuffer *text_buffer; #endif /* HAVE_LIBWEBKIT */ const gchar *ui_info = " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" #if 0 " \n" #endif #ifdef HAVE_LIBICAL " \n" #endif #ifdef PRINTING_SUPPORT " \n" " \n" #endif /* PRINTING_SUPPORT */ " \n" #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) " \n" " \n" " \n" " \n" #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ " \n" " \n" " \n" " \n"; GtkActionEntry entries[] = { { "add", OSMO_STOCK_TASKS_ADD, _("New task"), NULL, _("New task"), G_CALLBACK(tasks_add_item_cb)}, { "edit", OSMO_STOCK_TASKS_EDIT, _("Edit task"), NULL, _("Edit task"), G_CALLBACK(tasks_edit_item_cb)}, { "delete", OSMO_STOCK_TASKS_REMOVE, _("Remove task"), NULL, _("Remove task"), G_CALLBACK(tasks_remove_item_cb)}, { "prev_date", OSMO_STOCK_TASKS_PREV_DATE, _("Change due date to previous date"), NULL, _("Change due date to previous date"), G_CALLBACK(tasks_change_due_date_to_prev_date_cb)}, { "next_date", OSMO_STOCK_TASKS_NEXT_DATE, _("Change due date to next date"), NULL, _("Change due date to next date"), G_CALLBACK(tasks_change_due_date_to_next_date_cb)}, #if 0 { "import", OSMO_STOCK_TASKS_IMPORT, _("Import tasks"), NULL, _("Import tasks"), NULL }, #endif #ifdef HAVE_LIBICAL { "export", OSMO_STOCK_TASKS_EXPORT, _("Export tasks"), NULL, _("Export tasks"), G_CALLBACK(tasks_export_visible_items_cb)}, #endif #ifdef PRINTING_SUPPORT { "print", OSMO_STOCK_PRINT, _("Print visible tasks list"), NULL, _("Print visible tasks list"), G_CALLBACK(tasks_print_visible_items_cb)}, #endif /* PRINTING_SUPPORT */ #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) { "backup_data", OSMO_STOCK_BACKUP, _("Backup data"), NULL, _("Backup data"), G_CALLBACK(button_create_backup_cb)}, { "restore_data", OSMO_STOCK_RESTORE, _("Restore data"), NULL, _("Restore data"), G_CALLBACK(button_restore_backup_cb)}, #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ { "preferences", OSMO_STOCK_PREFERENCES, _("Preferences"), NULL, _("Preferences"), G_CALLBACK (show_preferences_window_cb)}, { "about", OSMO_STOCK_ABOUT, _("About"), NULL, _("About"), G_CALLBACK (show_about_window_cb)}, { "quit", GTK_STOCK_QUIT, _("Quit"), NULL, _("Quit"), G_CALLBACK (gui_quit_osmo_cb)}, }; gint columns_order[MAX_VISIBLE_TASK_COLUMNS]; gint ta_columns[MAX_VISIBLE_TASK_COLUMNS] = { TA_COLUMN_DONE, TA_COLUMN_TYPE, TA_COLUMN_DUE_DATE, TA_COLUMN_PRIORITY, TA_COLUMN_CATEGORY, TA_COLUMN_SUMMARY }; guint n_entries = G_N_ELEMENTS (entries); appGUI->tsk->filter_index = 0; vbox1 = gtk_vbox_new (FALSE, 1); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Tasks")); gui_add_to_notebook (vbox1, tmpbuf, appGUI); appGUI->tsk->vbox = GTK_BOX (vbox1); if (config.hide_tasks == TRUE) gtk_widget_hide (GTK_WIDGET (appGUI->tsk->vbox)); /*-------------------------------------------------------------------------------------*/ action_group = gtk_action_group_new ("_actions"); gtk_action_group_add_actions (action_group, entries, n_entries, appGUI); gtk_action_group_set_sensitive (action_group, TRUE); appGUI->tsk->tasks_uim_widget = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (appGUI->tsk->tasks_uim_widget, action_group, 0); g_signal_connect (appGUI->tsk->tasks_uim_widget, "add_widget", G_CALLBACK (add_tasks_toolbar_widget), appGUI); if (!gtk_ui_manager_add_ui_from_string (appGUI->tsk->tasks_uim_widget, ui_info, -1, &error)) { g_message ("building toolbar failed: %s", error->message); g_error_free (error); } gtk_ui_manager_ensure_update (appGUI->tsk->tasks_uim_widget); gtk_toolbar_set_style (appGUI->tsk->tasks_toolbar, GTK_TOOLBAR_ICONS); /*-------------------------------------------------------------------------------------*/ gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/delete"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/prev_date"), FALSE); gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/next_date"), FALSE); #ifdef PRINTING_SUPPORT gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/print"), FALSE); #endif /* PRINTING_SUPPORT */ /*-------------------------------------------------------------------------------------*/ if (!config.gui_layout) { appGUI->tsk->tasks_paned = gtk_vpaned_new (); } else { appGUI->tsk->tasks_paned = gtk_hpaned_new (); } gtk_widget_show (appGUI->tsk->tasks_paned); gtk_box_pack_start (GTK_BOX (vbox1), appGUI->tsk->tasks_paned, TRUE, TRUE, 0); top_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (top_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (top_viewport), GTK_SHADOW_NONE); gtk_paned_pack1 (GTK_PANED (appGUI->tsk->tasks_paned), top_viewport, FALSE, TRUE); vbox3 = gtk_vbox_new (FALSE, 1); gtk_widget_show (vbox3); gtk_container_add (GTK_CONTAINER (top_viewport), vbox3); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, TRUE, 6); table = gtk_table_new (2, 4, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox3), table, FALSE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Category")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->tsk->cf_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->tsk->cf_combobox); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->tsk->cf_combobox), FALSE); GTK_WIDGET_UNSET_FLAGS (appGUI->tsk->cf_combobox, GTK_CAN_FOCUS); if (appGUI->tiny_gui == TRUE) { gtk_table_attach (GTK_TABLE (table), appGUI->tsk->cf_combobox, 1, 2, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); } else { gtk_table_attach (GTK_TABLE (table), appGUI->tsk->cf_combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); } g_signal_connect (G_OBJECT (appGUI->tsk->cf_combobox), "changed", G_CALLBACK (category_filter_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->tsk->cf_combobox), "focus", G_CALLBACK (category_combo_box_focus_cb), NULL); appGUI->tsk->n_items_label = gtk_label_new (""); gtk_widget_show (appGUI->tsk->n_items_label); if (appGUI->tiny_gui == FALSE) gtk_widget_set_size_request (appGUI->tsk->n_items_label, 100, -1); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->n_items_label, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (appGUI->tsk->n_items_label), TRUE); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Search")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->tsk->tasks_find_entry = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (appGUI->tsk->tasks_find_entry), 128); gtk_widget_show (appGUI->tsk->tasks_find_entry); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_find_entry), "changed", G_CALLBACK (tasks_search_entry_changed_cb), appGUI); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->tasks_find_entry, 1, 4, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->tsk->tasks_find_clear_button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (appGUI->tsk->tasks_find_clear_button); GTK_WIDGET_UNSET_FLAGS (appGUI->tsk->tasks_find_clear_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->tsk->tasks_find_clear_button), GTK_RELIEF_NONE); if (config.enable_tooltips) gtk_widget_set_tooltip_text (appGUI->tsk->tasks_find_clear_button, _("Clear")); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_find_clear_button), "clicked", G_CALLBACK (gui_clear_find_cb), appGUI); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->tasks_find_clear_button, 4, 5, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, TRUE, 6); appGUI->tsk->scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->tsk->scrolled_win); gtk_box_pack_start (GTK_BOX (vbox3), appGUI->tsk->scrolled_win, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (appGUI->tsk->scrolled_win), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->tsk->scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); appGUI->tsk->tasks_list_store = gtk_list_store_new (TASKS_NUM_COLUMNS, /* columns are defined in gui.h */ G_TYPE_BOOLEAN, /* TA_COLUMN_DONE */ GDK_TYPE_PIXBUF, /* TA_COLUMN_TYPE */ G_TYPE_STRING, /* TA_COLUMN_DUE_DATE */ G_TYPE_UINT, /* TA_COLUMN_DUE_DATE_JULIAN */ G_TYPE_INT, /* TA_COLUMN_DUE_TIME */ G_TYPE_UINT, /* TA_COLUMN_START_DATE_JULIAN */ G_TYPE_UINT, /* TA_COLUMN_DONE_DATE_JULIAN */ G_TYPE_STRING, /* TA_COLUMN_PRIORITY */ G_TYPE_STRING, /* TA_COLUMN_CATEGORY */ G_TYPE_STRING, /* TA_COLUMN_SUMMARY */ G_TYPE_STRING, /* TA_COLUMN_DESCRIPTION */ G_TYPE_STRING, /* TA_COLUMN_COLOR */ G_TYPE_UINT, /* TA_COLUMN_BOLD */ G_TYPE_BOOLEAN, /* TA_COLUMN_ACTIVE */ G_TYPE_BOOLEAN, /* TA_COLUMN_OFFLINE_IGNORE */ G_TYPE_BOOLEAN, /* TA_COLUMN_SOUND_ENABLE */ G_TYPE_BOOLEAN, /* TA_COLUMN_NDIALOG_ENABLE */ G_TYPE_BOOLEAN, /* TA_COLUMN_REPEAT */ G_TYPE_INT, /* TA_COLUMN_REPEAT_DAY */ G_TYPE_INT, /* TA_COLUMN_REPEAT_MONTH_INTERVAL */ G_TYPE_INT, /* TA_COLUMN_REPEAT_DAY_INTERVAL */ G_TYPE_INT, /* TA_COLUMN_REPEAT_START_DAY */ G_TYPE_INT, /* TA_COLUMN_REPEAT_TIME_START */ G_TYPE_INT, /* TA_COLUMN_REPEAT_TIME_END */ G_TYPE_INT, /* TA_COLUMN_REPEAT_TIME_INTERVAL */ G_TYPE_INT, /* TA_COLUMN_REPEAT_COUNTER */ G_TYPE_STRING, /* TA_COLUMN_ALARM_COMMAND */ G_TYPE_INT, /* TA_COLUMN_WARNING_DAYS */ G_TYPE_INT, /* TA_COLUMN_WARNING_TIME */ G_TYPE_INT, /* TA_COLUMN_POSTPONE_TIME */ G_TYPE_INT /* TA_COLUMN_ID */ ); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_list_store), "row-changed", G_CALLBACK (task_list_row_changed_cb), appGUI); appGUI->tsk->tasks_filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), NULL); gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), (GtkTreeModelFilterVisibleFunc) tasks_list_filter_cb, appGUI, NULL); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_filter), "row-inserted", G_CALLBACK (task_filter_row_inserted_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_filter), "row-deleted", G_CALLBACK (task_filter_row_deleted_cb), appGUI); appGUI->tsk->tasks_sort = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (appGUI->tsk->tasks_filter)); appGUI->tsk->tasks_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->tsk->tasks_sort)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->tsk->tasks_list), config.rules_hint); gtk_widget_show (appGUI->tsk->tasks_list); gtk_widget_modify_fg (GTK_WIDGET (appGUI->tsk->tasks_list), GTK_STATE_SELECTED, (& GTK_WIDGET (appGUI->tsk->tasks_list)->style->base[GTK_STATE_SELECTED])); gtk_widget_modify_fg (GTK_WIDGET(appGUI->tsk->tasks_list), GTK_STATE_NORMAL, (& GTK_WIDGET (appGUI->tsk->tasks_list)->style->bg[GTK_STATE_NORMAL])); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_list), "button_press_event", G_CALLBACK (list_dbclick_cb), appGUI); appGUI->tsk->tasks_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->tsk->tasks_list)); gtk_tree_selection_set_mode (appGUI->tsk->tasks_list_selection, GTK_SELECTION_MULTIPLE); tasks_selection_activate (TRUE, appGUI); /* create columns */ renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DONE] = gtk_tree_view_column_new_with_attributes (_("Done"), renderer, "active", TA_COLUMN_DONE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DONE]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DONE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DONE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DONE]), GTK_TREE_VIEW_COLUMN_FIXED); g_signal_connect (renderer, "toggled", G_CALLBACK (done_toggled), appGUI); renderer = gtk_cell_renderer_pixbuf_new (); /* icon */ appGUI->tsk->tasks_columns[TA_COLUMN_TYPE] = gtk_tree_view_column_new_with_attributes (_("Type"), renderer, "pixbuf", TA_COLUMN_TYPE, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE], config.tsk_visible_type_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_TYPE]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_TYPE]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE] = gtk_tree_view_column_new_with_attributes(_("Due date"), renderer, "text", TA_COLUMN_DUE_DATE, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE], config.tsk_visible_due_date_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY] = gtk_tree_view_column_new_with_attributes (_("Priority"), renderer, "text", TA_COLUMN_PRIORITY, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY], config.tsk_visible_priority_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_PRIORITY]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY] = gtk_tree_view_column_new_with_attributes (_("Category"), renderer, "text", TA_COLUMN_CATEGORY, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY], config.tsk_visible_category_column); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_CATEGORY]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_cell_renderer_set_fixed_size (renderer, 0, -1); appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY] = gtk_tree_view_column_new_with_attributes (_("Summary"), renderer, "text", TA_COLUMN_SUMMARY, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (appGUI->tsk->tasks_columns[TA_COLUMN_SUMMARY]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_DUE_DATE_JULIAN, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE_JULIAN], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DUE_DATE_JULIAN]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DUE_TIME] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_DUE_TIME, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DUE_TIME], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DUE_TIME]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_START_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_START_DATE_JULIAN, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_START_DATE_JULIAN], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_START_DATE_JULIAN]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_DONE_DATE_JULIAN, "strikethrough", TA_COLUMN_DONE, "foreground", TA_COLUMN_COLOR, "weight", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DONE_DATE_JULIAN]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_DESCRIPTION] = gtk_tree_view_column_new_with_attributes (_("Description"), renderer, "text", TA_COLUMN_DESCRIPTION, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_DESCRIPTION], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_DESCRIPTION]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_COLOR] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_COLOR, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_COLOR], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_COLOR]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_BOLD] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_BOLD, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_BOLD], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_BOLD]); renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_ACTIVE] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", TA_COLUMN_ACTIVE, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_ACTIVE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_ACTIVE]); renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_OFFLINE_IGNORE] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", TA_COLUMN_OFFLINE_IGNORE, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_OFFLINE_IGNORE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_OFFLINE_IGNORE]); renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_SOUND_ENABLE] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", TA_COLUMN_SOUND_ENABLE, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_SOUND_ENABLE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_SOUND_ENABLE]); renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_NDIALOG_ENABLE] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", TA_COLUMN_NDIALOG_ENABLE, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_NDIALOG_ENABLE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_NDIALOG_ENABLE]); renderer = gtk_cell_renderer_toggle_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "active", TA_COLUMN_REPEAT, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_DAY, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_MONTH_INTERVAL] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_MONTH_INTERVAL, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_MONTH_INTERVAL], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_MONTH_INTERVAL]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY_INTERVAL] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_DAY_INTERVAL, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY_INTERVAL], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_DAY_INTERVAL]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_START_DAY] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_START_DAY, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_START_DAY], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_START_DAY]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_START] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_TIME_START, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_START], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_START]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_END] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_TIME_END, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_END], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_END]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_INTERVAL] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_TIME_INTERVAL, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_INTERVAL], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_TIME_INTERVAL]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_COUNTER] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_REPEAT_COUNTER, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_COUNTER], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_REPEAT_COUNTER]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_ALARM_COMMAND] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_ALARM_COMMAND, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_ALARM_COMMAND], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_ALARM_COMMAND]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_DAYS] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_WARNING_DAYS, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_DAYS], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_DAYS]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_TIME] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_WARNING_TIME, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_TIME], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_WARNING_TIME]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_POSTPONE_TIME] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_POSTPONE_TIME, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_POSTPONE_TIME], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_POSTPONE_TIME]); renderer = gtk_cell_renderer_text_new (); appGUI->tsk->tasks_columns[TA_COLUMN_ID] = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", TA_COLUMN_ID, NULL); gtk_tree_view_column_set_visible (appGUI->tsk->tasks_columns[TA_COLUMN_ID], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[TA_COLUMN_ID]); /* restore columns order */ columns_order[0] = config.tasks_column_idx_0; columns_order[1] = config.tasks_column_idx_1; columns_order[2] = config.tasks_column_idx_2; columns_order[3] = config.tasks_column_idx_3; columns_order[4] = config.tasks_column_idx_4; columns_order[5] = config.tasks_column_idx_5; n = MAX_VISIBLE_TASK_COLUMNS-1; while (n >= 0) { for (i = 0; i < MAX_VISIBLE_TASK_COLUMNS; i++) { if (n == columns_order[i]) { gtk_tree_view_move_column_after (GTK_TREE_VIEW (appGUI->tsk->tasks_list), appGUI->tsk->tasks_columns[ta_columns[i]], NULL); n--; } } } set_tasks_columns_width (appGUI); /* configure list options */ gtk_container_add (GTK_CONTAINER (appGUI->tsk->scrolled_win), appGUI->tsk->tasks_list); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (appGUI->tsk->tasks_list), FALSE); /* configure sorting */ for (i = 0; i < MAX_VISIBLE_TASK_COLUMNS; i++) { gtk_tree_view_column_set_sort_column_id (appGUI->tsk->tasks_columns[ta_columns[i]], ta_columns[i]); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (appGUI->tsk->tasks_sort), ta_columns[i], tasks_column_sort_function, GINT_TO_POINTER(ta_columns[i]), NULL); } /* restore sorting */ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (appGUI->tsk->tasks_sort), config.tasks_sorting_column, config.tasks_sorting_order); g_signal_connect (appGUI->tsk->tasks_sort, "sort-column-changed", G_CALLBACK (tasks_sort_column_changed_cb), appGUI); /*----------------------------------------------------------------------------*/ bottom_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (bottom_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (bottom_viewport), GTK_SHADOW_NONE); gtk_paned_pack2 (GTK_PANED (appGUI->tsk->tasks_paned), bottom_viewport, TRUE, TRUE); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_container_set_border_width (GTK_CONTAINER (vbox2), 0); gtk_container_add (GTK_CONTAINER (bottom_viewport), vbox2); appGUI->tsk->panel_hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->tsk->panel_hbox, FALSE, FALSE, 0); gtk_widget_show (appGUI->tsk->panel_hbox); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Task details")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (appGUI->tsk->panel_hbox), label, FALSE, FALSE, 0); if (!config.gui_layout) { close_button = utl_gui_create_button(GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, FALSE); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(close_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (close_button, _("Close description panel")); } gtk_box_pack_end (GTK_BOX (appGUI->tsk->panel_hbox), close_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (panel_close_desc_cb), appGUI); } appGUI->tsk->panel_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->tsk->panel_scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->tsk->panel_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (appGUI->tsk->panel_scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->tsk->panel_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef HAVE_LIBWEBKIT appGUI->tsk->webkit_settings = webkit_web_settings_new (); g_object_set (appGUI->tsk->webkit_settings, "enable-scripts", FALSE, NULL); g_object_set (appGUI->tsk->webkit_settings, "enable-plugins", FALSE, NULL); appGUI->tsk->html_webkitview = WEBKIT_WEB_VIEW (webkit_web_view_new ()); webkit_web_view_set_settings (appGUI->tsk->html_webkitview, appGUI->tsk->webkit_settings); webkit_web_view_set_editable (appGUI->tsk->html_webkitview, FALSE); g_signal_connect (appGUI->tsk->html_webkitview, "console-message", G_CALLBACK (utl_webkit_console_msg), appGUI); g_signal_connect (appGUI->tsk->html_webkitview, "populate-popup", G_CALLBACK (utl_webkit_on_menu), appGUI); g_signal_connect (appGUI->tsk->html_webkitview, "navigation-policy-decision-requested", G_CALLBACK (utl_webkit_link_clicked), appGUI); gtk_widget_show (GTK_WIDGET (appGUI->tsk->html_webkitview)); gtk_container_add (GTK_CONTAINER (appGUI->tsk->panel_scrolledwindow), GTK_WIDGET (appGUI->tsk->html_webkitview)); #else appGUI->tsk->tasks_desc_textview = gtk_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), 4); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), 4); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), 4); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), FALSE); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview), FALSE); gtk_widget_show (appGUI->tsk->tasks_desc_textview); gtk_container_add (GTK_CONTAINER (appGUI->tsk->panel_scrolledwindow), appGUI->tsk->tasks_desc_textview); text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->tsk->tasks_desc_textview)); gtk_text_buffer_create_tag (text_buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); appGUI->tsk->font_tag_object = gtk_text_buffer_create_tag (text_buffer, "info_font", "font", (gchar *) config.task_info_font, NULL); #endif /* HAVE_LIBWEBKIT */ g_signal_connect(G_OBJECT(appGUI->tsk->tasks_paned), "notify::position", G_CALLBACK(tasks_paned_position_change_cb), appGUI); gtk_paned_set_position (GTK_PANED (appGUI->tsk->tasks_paned), config.tasks_pane_pos); gtk_widget_grab_focus (appGUI->tsk->tasks_find_entry); } /*------------------------------------------------------------------------------*/ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/stock_icons.h000664 001750 001750 00000016404 12561325524 016015 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _STOCK_ICONS_H #define _STOCK_ICONS_H #include "gui.h" #define OSMO_STOCK_BUTTON_ADD "osmo-button-add" #define OSMO_STOCK_BUTTON_CLEAR "osmo-button-clear" #define OSMO_STOCK_BUTTON_CLOSE "osmo-button-close" #define OSMO_STOCK_BUTTON_CANCEL "osmo-button-cancel" #define OSMO_STOCK_BUTTON_JUMPTO "osmo-button-jumpto" #define OSMO_STOCK_BUTTON_CONTACTS_EXPORT "osmo-button-contacts-export" #define OSMO_STOCK_BUTTON_CONTACTS_IMPORT "osmo-button-contacts-import" #define OSMO_STOCK_BUTTON_EDIT "osmo-button-edit" #define OSMO_STOCK_BUTTON_DOWN "osmo-button-down" #define OSMO_STOCK_BUTTON_INFO "osmo-button-info" #define OSMO_STOCK_BUTTON_INSERT_TIMELINE "osmo-button-insert_timeline" #define OSMO_STOCK_BUTTON_NEXT_YEAR "osmo-button-next_year" #define OSMO_STOCK_BUTTON_NO "osmo-button-no" #define OSMO_STOCK_BUTTON_OK "osmo-button-ok" #define OSMO_STOCK_BUTTON_OPEN "osmo-button-open" #define OSMO_STOCK_BUTTON_PREV_YEAR "osmo-button-prev_year" #define OSMO_STOCK_BUTTON_REMOVE "osmo-button-remove" #define OSMO_STOCK_BUTTON_SELECT_COLOR "osmo-button-select_color" #define OSMO_STOCK_BUTTON_SELECT_DATE "osmo-button-select_date" #define OSMO_STOCK_BUTTON_SELECT_FONT "osmo-button-select_font" #define OSMO_STOCK_BUTTON_TODAY "osmo-button-today" #define OSMO_STOCK_BUTTON_YES "osmo-button-yes" #define OSMO_STOCK_SYSTRAY_BIRTHDAY "osmo-systray-birthday" #define OSMO_STOCK_SYSTRAY_NORMAL "osmo-systray-normal" #define OSMO_STOCK_SYSTRAY_NOTE "osmo-systray-note" #define OSMO_STOCK_SYSTRAY_TASK "osmo-systray-task" #define OSMO_STOCK_SYSTRAY_MENU_CALENDAR "osmo-systray-menu-calendar" #define OSMO_STOCK_SYSTRAY_MENU_TASKS "osmo-systray-menu-tasks" #define OSMO_STOCK_SYSTRAY_MENU_CONTACTS "osmo-systray-menu-contacts" #define OSMO_STOCK_SYSTRAY_MENU_NOTES "osmo-systray-menu-notes" #define OSMO_STOCK_BACKUP "osmo-backup" #define OSMO_STOCK_RESTORE "osmo-restore" #define OSMO_STOCK_OPEN_URL "osmo-open-url" #define OSMO_STOCK_ABOUT "osmo-about" #define OSMO_STOCK_CALENDAR "osmo-calendar" #define OSMO_STOCK_CLOSE "osmo-close" #define OSMO_STOCK_CALCULATOR "osmo-calculator" #define OSMO_STOCK_CONTACTS_ADD "osmo-contacts-add" #define OSMO_STOCK_CONTACTS_BIRTHDAYS "osmo-contacts-birthdays" #define OSMO_STOCK_CONTACTS_EDIT "osmo-contacts-edit" #define OSMO_STOCK_CONTACTS_EXPORT "osmo-contacts-export" #define OSMO_STOCK_CONTACTS_IMPORT "osmo-contacts-import" #define OSMO_STOCK_CONTACTS_REMOVE "osmo-contacts-remove" #define OSMO_STOCK_CONTACTS "osmo-contacts" #define OSMO_STOCK_EDIT_NOTE "osmo-edit_note" #define OSMO_STOCK_EDITOR_BOLD "osmo-editor-bold" #define OSMO_STOCK_EDITOR_BOLD_S "osmo-editor-bold-s" #define OSMO_STOCK_EDITOR_CLEAR "osmo-editor-clear" #define OSMO_STOCK_EDITOR_FIND "osmo-editor-find" #define OSMO_STOCK_EDITOR_HIGHLIGHT "osmo-editor-highlight" #define OSMO_STOCK_EDITOR_HIGHLIGHT_S "osmo-editor-highlight-s" #define OSMO_STOCK_EDITOR_INFO "osmo-editor-info" #define OSMO_STOCK_EDITOR_INSERT_DATE_TIME "osmo-editor-insert_date_time" #define OSMO_STOCK_EDITOR_INSERT_SEPARATOR "osmo-editor-insert_separator" #define OSMO_STOCK_EDITOR_ITALIC "osmo-editor-italic" #define OSMO_STOCK_EDITOR_ITALIC_S "osmo-editor-italic-s" #define OSMO_STOCK_EDITOR_SAVE "osmo-editor-save" #define OSMO_STOCK_EDITOR_SPELL_CHECKER "osmo-editor-spell_checker" #define OSMO_STOCK_EDITOR_STRIKETHROUGH "osmo-editor-strikethrough" #define OSMO_STOCK_EDITOR_STRIKETHROUGH_S "osmo-editor-strikethrough-s" #define OSMO_STOCK_EDITOR_UNDERLINE "osmo-editor-underline" #define OSMO_STOCK_EDITOR_UNDERLINE_S "osmo-editor-underline-s" #define OSMO_STOCK_FULLYEAR "osmo-fullyear" #define OSMO_STOCK_HELP "osmo-help" #define OSMO_STOCK_INFO_HELP "osmo-info-help" #define OSMO_STOCK_JUMPTO "osmo-jumpto" #define OSMO_STOCK_LICENSE "osmo-license" #define OSMO_STOCK_LIST_INVALID "osmo-list-invalid" #define OSMO_STOCK_LIST_VALID "osmo-list-valid" #define OSMO_STOCK_NEXT_DAY "osmo-next-day" #define OSMO_STOCK_NEXT_MONTH "osmo-next-month" #define OSMO_STOCK_NEXT_YEAR "osmo-next-year" #define OSMO_STOCK_NOTES_ADD "osmo-notes-add" #define OSMO_STOCK_NOTES_EDIT "osmo-notes-edit" #define OSMO_STOCK_NOTES_REMOVE "osmo-notes-remove" #define OSMO_STOCK_NOTES "osmo-notes" #define OSMO_STOCK_PREFERENCES "osmo-preferences" #define OSMO_STOCK_PREV_DAY "osmo-prev-day" #define OSMO_STOCK_PREV_MONTH "osmo-prev-month" #define OSMO_STOCK_PREV_YEAR "osmo-prev-year" #define OSMO_STOCK_TASKS_ADD "osmo-tasks-add" #define OSMO_STOCK_TASKS_EDIT "osmo-tasks-edit" #define OSMO_STOCK_TASKS_REMOVE "osmo-tasks-remove" #define OSMO_STOCK_TASKS_IMPORT "osmo-tasks-import" #define OSMO_STOCK_TASKS_EXPORT "osmo-tasks-export" #define OSMO_STOCK_TASKS_PREV_DATE "osmo-tasks-prev-date" #define OSMO_STOCK_TASKS_NEXT_DATE "osmo-tasks-next-date" #define OSMO_STOCK_TASKS "osmo-tasks" #define OSMO_STOCK_TODAY "osmo-today" #define OSMO_STOCK_PRINT "osmo-print" #define OSMO_STOCK_TYPE_NORMAL "osmo-type-normal" #define OSMO_STOCK_TYPE_ENCRYPTED "osmo-type-encrypted" //#define OSMO_STOCK_TYPE_RECURRENT_INACTIVE "osmo-type-recurrent-inactive" #define OSMO_STOCK_TYPE_RECURRENT "osmo-type-recurrent" void osmo_register_stock_icons (void); #endif /* _STOCK_ICONS_H */ osmo-0.2.14/src/tasks_preferences_gui.h000664 001750 001750 00000002225 12561325524 020045 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_PREFERENCES_GUI_H #define _TASKS_PREFERENCES_GUI_H #include "gui.h" enum { TC_COLUMN_NAME = 0, TC_COLUMN_CALENDAR, TC_COLUMN_TASKS }; GtkWidget * tsk_create_preferences_page (GtkWidget *notebook, GUI *appGUI); #endif /* _TASKS_PREFERENCES_GUI_H */ osmo-0.2.14/src/calendar_notes.h000664 001750 001750 00000004671 12561325524 016463 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_NOTES_H #define _CALENDAR_NOTES_H #include "gui.h" #define CALENDAR_NOTES_NAME "osmo_calendar_notes" #define CALENDAR_DAY_CATEGORIES_NAME "day_categories" #define CALENDAR_NOTES_FILENAME "calendar_notes.xml" struct note { guint32 date; gchar *color; gchar *note; }; enum { DN_FILTER_CURRENT_MONTH = 0, DN_FILTER_SELECTED_MONTH, DN_FILTER_CURRENT_YEAR, DN_FILTER_SELECTED_YEAR, DN_FILTER_SELECTED_MONTH_YEAR, DN_FILTER_ALL_NOTES }; enum { DN_COLUMN_DATE = 0, DN_COLUMN_DATE_JULIAN, DN_COLUMN_NOTE_LINE, DN_COLUMN_DONE, DAY_NOTES_NUM_COLUMNS }; gboolean cal_check_note (guint32 julian, GUI *appGUI); gboolean cal_check_notes (guint32 julian_start, guint32 julian_end, GUI *appGUI); void cal_notes_foreach (guint32 julian_start, guint32 julian_end, gboolean (*cnfunc)(), GUI *appGUI); gchar * cal_get_note (guint32 julian, GUI *appGUI); gchar * cal_get_note_color (guint32 julian, GUI *appGUI); void cal_replace_note_color (gchar *old_color, gchar *new_color, GUI *appGUI); void cal_add_note (guint32 julian, gchar *color_str, gchar *text_note, GUI *appGUI); void cal_remove_note (guint32 julian, GUI *appGUI); void cal_free_notes_list (GUI *appGUI); void cal_read_notes (GUI *appGUI); void cal_write_notes (GUI *appGUI); void cal_notes_browser (GUI *appGUI); gchar * cal_note_remove_empty_lines (gchar *note); #endif /* _CALENDAR_NOTES_H */ osmo-0.2.14/src/tasks_utils.c000664 001750 001750 00000024430 12561325524 016035 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "i18n.h" #include "tasks_preferences_gui.h" #include "tasks_utils.h" #ifdef TASKS_ENABLED /*------------------------------------------------------------------------------*/ gboolean tsk_check_tasks (guint32 julian_start, guint32 julian_end, gint type, GUI *appGUI) { GtkTreeModel *model = NULL; GtkTreePath *path; GtkTreeIter iter; gchar *category; guint32 julian; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); if (model == NULL) return FALSE; path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &julian, TA_COLUMN_CATEGORY, &category, -1); if (julian >= julian_start && julian <= julian_end) if (tsk_get_category_state (category, type, appGUI) == TRUE) { g_free (category); gtk_tree_path_free (path); return TRUE; } g_free (category); gtk_tree_path_next (path); } gtk_tree_path_free (path); return FALSE; } /*------------------------------------------------------------------------------*/ void tsk_tasks_foreach (guint32 julian_start, guint32 julian_end, gboolean (*ttfunc)(), GUI *appGUI) { GtkTreeModel *model = NULL; GtkTreePath *path; GtkTreeIter iter; gchar *category; guint32 julian; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); if (model == NULL) return; path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &julian, TA_COLUMN_CATEGORY, &category, -1); if (julian >= julian_start && julian <= julian_end) if (tsk_get_category_state (category, STATE_EITHER, appGUI) == TRUE) { if ((*ttfunc)(julian, model, &iter, appGUI) == TRUE) { g_free (category); break; } } g_free (category); gtk_tree_path_next (path); } gtk_tree_path_free (path); } /*------------------------------------------------------------------------------*/ gint tsk_get_tasks_num (guint32 julian, gboolean check_only, gboolean show_done, gint hidden_category, GUI *appGUI) { GtkTreeModel *model = NULL; GtkTreePath *path; GtkTreeIter iter; guint32 tsk_julian; gchar *buf; gint tasks = 0; gint done; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_val_if_fail (model != NULL, 0); path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &tsk_julian, TA_COLUMN_CATEGORY, &buf, TA_COLUMN_DONE, &done, -1); if (tsk_julian == julian && (show_done || !done) && tsk_get_category_state (buf, hidden_category, appGUI)) { tasks++; } g_free (buf); if (check_only && tasks) break; gtk_tree_path_next (path); } gtk_tree_path_free (path); return tasks; } /*------------------------------------------------------------------------------*/ char * tsk_get_tasks_str (guint32 julian, gboolean show_done, gint hidden_category, GUI *appGUI) { GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; char buffer[BUFFER_SIZE], tmpbuf[BUFFER_SIZE]; char *summ, *categ; guint32 tsk_julian; gint time; gint done; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_val_if_fail (model != NULL, NULL); path = gtk_tree_path_new_first (); buffer[0] = '\0'; while (gtk_tree_model_get_iter (model, &iter, path) == TRUE) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_DATE_JULIAN, &tsk_julian, TA_COLUMN_CATEGORY, &categ, TA_COLUMN_DONE, &done, -1); if (tsk_julian == julian && (show_done || !done) && tsk_get_category_state (categ, hidden_category, appGUI)) { gtk_tree_model_get (model, &iter, TA_COLUMN_DUE_TIME, &time, TA_COLUMN_SUMMARY, &summ, -1); if (time >= 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "\n[%02d:%02d] %s", time / 3600, time / 60 % 60, summ); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "\n%s", summ); } g_strlcat (buffer, tmpbuf, BUFFER_SIZE); g_free (summ); } g_free (categ); gtk_tree_path_next (path); } gtk_tree_path_free (path); g_strstrip (buffer); return g_strdup (buffer); } /*------------------------------------------------------------------------------*/ gboolean tsk_get_category_state (gchar *category_name, gint type, GUI *appGUI) { GtkTreeModel *model = NULL; GtkTreeIter iter; gboolean state, state_calendar, state_tasks; gchar *name; gint i; if (type == STATE_NONE || category_name == NULL) return TRUE; model = GTK_TREE_MODEL (appGUI->opt->tasks_category_store); g_return_val_if_fail (model != NULL, TRUE); i = 0; while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i++)) { gtk_tree_model_get (model, &iter, TC_COLUMN_NAME, &name, -1); if (name != NULL && !strcmp (category_name, name)) { gtk_tree_model_get (model, &iter, TC_COLUMN_CALENDAR, &state_calendar, TC_COLUMN_TASKS, &state_tasks, -1); state = (type == STATE_CALENDAR && state_calendar) || (type == STATE_TASKS && state_tasks) || (type == STATE_EITHER && (state_calendar || state_tasks)); g_free (name); return state; } g_free (name); } return TRUE; } /*------------------------------------------------------------------------------*/ gchar * tsk_get_priority_text (gint index) { gchar *priority_table[] = { N_("Low"), N_("Medium"), N_("High") }; g_return_val_if_fail (index >= LOW_PRIORITY && index <= HIGH_PRIORITY, NULL); return gettext (priority_table[index]); } /*------------------------------------------------------------------------------*/ gint tsk_get_priority_index (gchar *text) { gchar *priority_table[] = { N_("Low"), N_("Medium"), N_("High") }; gint i; /* FIXME */ /* g_return_val_if_fail (text != NULL, -1);*/ if (text == NULL) return -1; for (i = 0; i < 3; i++) { if (!strcmp (gettext (priority_table[i]), text)) break; } return (i == 3 ? -1: i); } /*------------------------------------------------------------------------------*/ GtkTreeIter * tsk_get_iter (guint id, GUI *appGUI) { static GtkTreeIter iter; GtkTreeModel *model; gint i, n; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_val_if_fail (model != NULL, NULL); i = 0; while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i++)) { gtk_tree_model_get (model, &iter, TA_COLUMN_ID, &n, -1); if (n == id) return &iter; } return NULL; } /*============================================================================*/ TASK_ITEM * tsk_get_item_id (guint id, GUI *appGUI) { GtkTreeIter *iter; iter = tsk_get_iter (id, appGUI); if (iter == NULL) return NULL; return tsk_get_item (iter, appGUI); } /*============================================================================*/ TASK_ITEM * tsk_get_item (GtkTreeIter *iter, GUI *appGUI) { GtkTreeModel *model; TASK_ITEM *item; model = GTK_TREE_MODEL (appGUI->tsk->tasks_list_store); g_return_val_if_fail (model != NULL, NULL); item = g_new0 (TASK_ITEM, 1); gtk_tree_model_get (model, iter, TA_COLUMN_ID, &(item->id), TA_COLUMN_DONE, &(item->done), TA_COLUMN_DUE_DATE_JULIAN, &(item->due_date_julian), TA_COLUMN_DUE_TIME, &(item->due_time), TA_COLUMN_START_DATE_JULIAN, &(item->start_date_julian), TA_COLUMN_DONE_DATE_JULIAN, &(item->done_date_julian), TA_COLUMN_ACTIVE, &(item->active), TA_COLUMN_OFFLINE_IGNORE, &(item->offline_ignore), TA_COLUMN_SOUND_ENABLE, &(item->sound_enable), TA_COLUMN_NDIALOG_ENABLE, &(item->ndialog_enable), TA_COLUMN_REPEAT, &(item->repeat), TA_COLUMN_REPEAT_DAY, &(item->repeat_day), TA_COLUMN_REPEAT_MONTH_INTERVAL, &(item->repeat_month_interval), TA_COLUMN_REPEAT_DAY_INTERVAL, &(item->repeat_day_interval), TA_COLUMN_REPEAT_START_DAY, &(item->repeat_start_day), TA_COLUMN_REPEAT_TIME_START, &(item->repeat_time_start), TA_COLUMN_REPEAT_TIME_END, &(item->repeat_time_end), TA_COLUMN_REPEAT_TIME_INTERVAL, &(item->repeat_time_interval), TA_COLUMN_REPEAT_COUNTER, &(item->repeat_counter), TA_COLUMN_WARNING_DAYS, &(item->warning_days), TA_COLUMN_WARNING_TIME, &(item->warning_time), TA_COLUMN_POSTPONE_TIME, &(item->postpone_time), TA_COLUMN_PRIORITY, &(item->priority), TA_COLUMN_ALARM_COMMAND, &(item->alarm_command), TA_COLUMN_CATEGORY, &(item->category), TA_COLUMN_SUMMARY, &(item->summary), TA_COLUMN_DESCRIPTION, &(item->desc), -1); return item; } /*------------------------------------------------------------------------------*/ void tsk_item_free (TASK_ITEM *item) { g_return_if_fail (item != NULL); g_free (item->alarm_command); g_free (item->priority); g_free (item->category); g_free (item->summary); g_free (item->desc); g_free (item); item = NULL; } /*------------------------------------------------------------------------------*/ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/calendar_timeline.c000664 001750 001750 00000032252 12561325524 017130 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_timeline.h" #include "i18n.h" #include "calendar.h" #include "options_prefs.h" #include "stock_icons.h" /*------------------------------------------------------------------------------*/ void insert_timeline_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_widget_destroy (appGUI->cal->insert_timeline_window); } /*------------------------------------------------------------------------------*/ void button_insert_timeline_window_close_cb (GtkWidget *widget, gpointer data) { insert_timeline_window_close_cb (widget, NULL, data); } /*------------------------------------------------------------------------------*/ gint insert_timeline_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { insert_timeline_window_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void insert_timeline_action_cb (GtkButton *button, gpointer user_data) { gint ts, te, m; GtkTextBuffer *text_buffer; GtkTextIter titer; char tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->cal->calendar_note_textview)); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &titer, -1); ts = config.timeline_start; te = config.timeline_end + config.timeline_step; do { m = ts / 60; sprintf(tmpbuf, "%02d:%02d - \n", m, ts-m*60); gtk_text_buffer_insert(text_buffer, &titer, tmpbuf, -1); ts += config.timeline_step; } while (ts < te); insert_timeline_window_close_cb (NULL, NULL, appGUI); enable_disable_note_buttons(appGUI); } /*------------------------------------------------------------------------------*/ void fill_timeline(GUI *appGUI) { gint i; i = config.timeline_start / 60; gtk_spin_button_set_value (GTK_SPIN_BUTTON(appGUI->cal->tl_start_h_spinbutton), i); gtk_spin_button_set_value (GTK_SPIN_BUTTON(appGUI->cal->tl_start_m_spinbutton), config.timeline_start-i*60); i = config.timeline_end / 60; gtk_spin_button_set_value (GTK_SPIN_BUTTON(appGUI->cal->tl_end_h_spinbutton), i); gtk_spin_button_set_value (GTK_SPIN_BUTTON(appGUI->cal->tl_end_m_spinbutton), config.timeline_end-i*60); gtk_spin_button_set_value (GTK_SPIN_BUTTON(appGUI->cal->tl_step_spinbutton), (gdouble)config.timeline_step); } /*------------------------------------------------------------------------------*/ void timeline_changed_cb (GtkSpinButton *spinbutton, gpointer user_data) { gint i, j; GUI *appGUI = (GUI *)user_data; i = (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(appGUI->cal->tl_start_h_spinbutton)) * 60 + (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(appGUI->cal->tl_start_m_spinbutton)); j = (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(appGUI->cal->tl_end_h_spinbutton)) * 60 + (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(appGUI->cal->tl_end_m_spinbutton)); if (i < j) { config.timeline_start = i; config.timeline_end = j; config.timeline_step = (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(appGUI->cal->tl_step_spinbutton)); } else { fill_timeline(appGUI); } } /*------------------------------------------------------------------------------*/ void calendar_create_insert_timeline_window (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *label; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *timeline_table; GtkWidget *frame; GtkWidget *alignment; GtkObject *tl_start_h_spinbutton_adj; GtkObject *tl_start_m_spinbutton_adj; GtkObject *tl_end_h_spinbutton_adj; GtkObject *tl_end_m_spinbutton_adj; GtkObject *tl_step_spinbutton_adj; gint win_xpos, win_ypos; char tmpbuf[BUFFER_SIZE]; appGUI->cal->insert_timeline_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->insert_timeline_window), _("Insert timeline")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->insert_timeline_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->insert_timeline_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->insert_timeline_window), "delete_event", G_CALLBACK(insert_timeline_window_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->insert_timeline_window), "key_press_event", G_CALLBACK (insert_timeline_key_press_cb), appGUI); gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->insert_timeline_window), GTK_WINDOW(appGUI->main_window)); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->insert_timeline_window), 8); gtk_window_set_resizable (GTK_WINDOW (appGUI->cal->insert_timeline_window), FALSE); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->insert_timeline_window), vbox1); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); sprintf(tmpbuf, "%s", _("Timeline")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_padding (GTK_MISC (label), 0, 4); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 12, 12, 0); timeline_table = gtk_table_new (1, 9, FALSE); gtk_widget_show (timeline_table); gtk_container_set_border_width (GTK_CONTAINER (timeline_table), 4); gtk_table_set_col_spacings (GTK_TABLE (timeline_table), 8); gtk_table_set_row_spacings (GTK_TABLE (timeline_table), 4); gtk_container_add (GTK_CONTAINER (alignment), timeline_table); sprintf(tmpbuf, "%s:", _("From (hour)")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (timeline_table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); tl_start_h_spinbutton_adj = gtk_adjustment_new (1, 0, 24, 1, 10, 0); appGUI->cal->tl_start_h_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (tl_start_h_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->tl_start_h_spinbutton); gtk_table_attach (GTK_TABLE (timeline_table), appGUI->cal->tl_start_h_spinbutton, 1, 2, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->tl_start_h_spinbutton), TRUE); sprintf(tmpbuf, "%s:", _("Step (minutes)")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (timeline_table), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); tl_step_spinbutton_adj = gtk_adjustment_new (1, 1, 120, 1, 10, 0); appGUI->cal->tl_step_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (tl_step_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->tl_step_spinbutton); gtk_table_attach (GTK_TABLE (timeline_table), appGUI->cal->tl_step_spinbutton, 1, 2, 2, 3, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->tl_step_spinbutton), TRUE); sprintf(tmpbuf, "%s:", _("To (hour)")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (timeline_table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); tl_end_h_spinbutton_adj = gtk_adjustment_new (1, 1, 23, 1, 10, 0); appGUI->cal->tl_end_h_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (tl_end_h_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->tl_end_h_spinbutton); gtk_table_attach (GTK_TABLE (timeline_table), appGUI->cal->tl_end_h_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->tl_end_h_spinbutton), TRUE); label = gtk_label_new (":"); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (timeline_table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = gtk_label_new (":"); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (timeline_table), label, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); tl_start_m_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->tl_start_m_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (tl_start_m_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->tl_start_m_spinbutton); gtk_table_attach (GTK_TABLE (timeline_table), appGUI->cal->tl_start_m_spinbutton, 3, 4, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->tl_start_m_spinbutton), TRUE); tl_end_m_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->cal->tl_end_m_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (tl_end_m_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->tl_end_m_spinbutton); gtk_table_attach (GTK_TABLE (timeline_table), appGUI->cal->tl_end_m_spinbutton, 3, 4, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->tl_end_m_spinbutton), TRUE); fill_timeline(appGUI); g_signal_connect (G_OBJECT (appGUI->cal->tl_start_h_spinbutton), "value-changed", G_CALLBACK (timeline_changed_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->tl_step_spinbutton), "value-changed", G_CALLBACK (timeline_changed_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->tl_end_h_spinbutton), "value-changed", G_CALLBACK (timeline_changed_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->tl_start_m_spinbutton), "value-changed", G_CALLBACK (timeline_changed_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->tl_end_m_spinbutton), "value-changed", G_CALLBACK (timeline_changed_cb), appGUI); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); appGUI->cal->cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (appGUI->cal->cancel_button); g_signal_connect(appGUI->cal->cancel_button, "clicked", G_CALLBACK(button_insert_timeline_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), appGUI->cal->cancel_button); appGUI->cal->insert_timeline_button = utl_gui_create_labeled_button (GTK_STOCK_PASTE, OSMO_STOCK_BUTTON_INSERT_TIMELINE, _("Insert")); gtk_widget_show (appGUI->cal->insert_timeline_button); g_signal_connect(appGUI->cal->insert_timeline_button, "clicked", G_CALLBACK(insert_timeline_action_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), appGUI->cal->insert_timeline_button); gtk_window_get_position (GTK_WINDOW(appGUI->cal->insert_timeline_window), &win_xpos, &win_ypos); gtk_window_move (GTK_WINDOW (appGUI->cal->insert_timeline_window), win_xpos-5, win_ypos-40); gtk_widget_show(appGUI->cal->insert_timeline_window); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/calendar_calc.h000664 001750 001750 00000002026 12561325524 016225 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * (C) 2007 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_CALC_H #define _CALENDAR_CALC_H #include "gui.h" void calendar_create_calc_window (GUI *appGUI); #endif /* _CALENDAR_CALC_H */ osmo-0.2.14/src/contacts_items.c000664 001750 001750 00000156721 12561325524 016520 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts_items.h" #include "i18n.h" #include "contacts.h" #include "tasks.h" #include "calendar.h" #include "calendar_notes.h" #include "calendar_widget.h" #include "calendar_utils.h" #include "utils.h" #include "utils_date.h" #include "utils_gui.h" #include "options_prefs.h" #include "stock_icons.h" #ifdef CONTACTS_ENABLED /*------------------------------------------------------------------------------*/ void contacts_fill_ids (GUI *appGUI) { GtkTreeIter iter; gint i; i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, NULL, i++)) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_ID, i, -1); } } /*------------------------------------------------------------------------------*/ void contacts_add_edit_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_window_get_size (GTK_WINDOW(appGUI->cnt->contacts_add_window), &config.contacts_addedit_win_w, &config.contacts_addedit_win_h); gdk_window_get_root_origin (appGUI->cnt->contacts_add_window->window, &config.contacts_addedit_win_x, &config.contacts_addedit_win_y); gtk_widget_destroy(appGUI->cnt->contacts_add_window); } /*------------------------------------------------------------------------------*/ void contacts_item_entered_cb (GtkWidget *widget, gpointer data) { GtkTextBuffer *text_buffer; GtkTextIter iter_a, iter_b; GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; gint i; gboolean free_str; const gchar *text; GUI *appGUI = (GUI *)data; if (appGUI->cnt->contacts_edit_state == TRUE) { gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), &sort_path, NULL); if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->cnt->contacts_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, path); gtk_list_store_remove(appGUI->cnt->contacts_list_store, &iter); gtk_tree_path_free(path); } gtk_tree_path_free(filter_path); } gtk_tree_path_free(sort_path); } } gtk_list_store_append(appGUI->cnt->contacts_list_store, &iter); for(i=0; icnt->birthday_date) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, i, appGUI->cnt->birthday_date, -1); } } else if (i == COLUMN_NAME_DAY_DATE) { if (appGUI->cnt->nameday_date) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, i, appGUI->cnt->nameday_date, -1); } } else { if (i == COLUMN_GROUP) { text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(appGUI->cnt->combobox_group)); free_str = TRUE; } else if (i == COLUMN_INFO) { text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->cnt->add_info_textview)); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &iter_a, 0); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &iter_b, -1); text = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(text_buffer), &iter_a, &iter_b, TRUE); free_str = TRUE; } else { text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); } if (text != NULL) { if (strlen(text)) { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, i, text, -1); if (free_str == TRUE) { g_free((gchar *)text); } } } } } } appGUI->cnt->write_flag = TRUE; contacts_add_edit_window_close_cb (NULL, NULL, appGUI); pango_font_description_free(appGUI->cnt->fd_ai_font); path = gtk_tree_model_get_path (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), path, NULL, FALSE); gtk_tree_path_free(path); } gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter)); set_export_active(appGUI); gui_systray_tooltip_update(appGUI); contacts_fill_ids (appGUI); cal_refresh_marks (appGUI); update_aux_calendars (appGUI); if (config.save_data_after_modification) { write_contacts_entries (appGUI); } } /*------------------------------------------------------------------------------*/ void contacts_remove(GtkTreeRowReference *ref, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter, filter_iter, sort_iter; GtkTreeModel *model; model = gtk_tree_row_reference_get_model(ref); path = gtk_tree_row_reference_get_path(ref); if (path != NULL) { if (gtk_tree_model_get_iter(model, &sort_iter, path)) { gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(model), &filter_iter, &sort_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model))), &iter, &filter_iter); gtk_list_store_remove(appGUI->cnt->contacts_list_store, &iter); } gtk_tree_path_free(path); } } /*------------------------------------------------------------------------------*/ void contacts_remove_dialog_show (GUI *appGUI) { gint response; gchar tmpbuf[BUFFER_SIZE]; sprintf (tmpbuf, "%s\n\n%s", _("Selected contact will be removed."), _("Are you sure?")); response = utl_gui_create_dialog(GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->main_window)); if (response == GTK_RESPONSE_YES) { contacts_selection_activate (FALSE, appGUI); utl_gui_foreach_selected(appGUI->cnt->contacts_list_selection, GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), (GFunc)contacts_remove, appGUI); contacts_selection_activate (TRUE, appGUI); contacts_select_first_position_in_list(appGUI); g_signal_emit_by_name(G_OBJECT(appGUI->cal->calendar), "day-selected"); set_export_active(appGUI); gui_systray_tooltip_update(appGUI); if (config.save_data_after_modification) { write_contacts_entries (appGUI); } } } /*------------------------------------------------------------------------------*/ void button_contacts_add_edit_window_close_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; contacts_add_edit_window_close_cb (widget, NULL, appGUI); pango_font_description_free(appGUI->cnt->fd_ai_font); } /*------------------------------------------------------------------------------*/ gint contacts_add_edit_key_release_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: contacts_add_edit_window_close_cb (NULL, NULL, appGUI); return TRUE; } if(strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->cnt->contact_entries[COLUMN_FIRST_NAME]))) || strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->cnt->contact_entries[COLUMN_LAST_NAME])))) { appGUI->cnt->contacts_accept_state = TRUE; } else { appGUI->cnt->contacts_accept_state = FALSE; } gtk_widget_set_sensitive(appGUI->cnt->contacts_ok_button, appGUI->cnt->contacts_accept_state); return FALSE; } /*------------------------------------------------------------------------------*/ gint show_hide_fields_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { const gchar *text; MESSAGE *msg = (MESSAGE *)data; gint i = (size_t) msg->data; if (event->keyval == GDK_Return) { text = gtk_entry_get_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[i])); if(strlen(text) && i != COLUMN_HOME_PHONE_4 && i != COLUMN_WORK_PHONE_4 && i != COLUMN_CELL_PHONE_4 && i != COLUMN_EMAIL_4 && i != COLUMN_WWW_4) { gtk_widget_show (msg->appGUI->cnt->contact_entries[i+1]); gtk_widget_grab_focus (msg->appGUI->cnt->contact_entries[i+1]); } return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean group_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ void group_combobox_changed_cb (GtkComboBox *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_widget_grab_focus (appGUI->cnt->contact_entries[COLUMN_FIRST_NAME]); } /*------------------------------------------------------------------------------*/ void select_date_close_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; gtk_widget_destroy(appGUI->cnt->select_date_window); } /*------------------------------------------------------------------------------*/ void select_date_selected_cb (GuiCalendar *s_calendar, gpointer user_data) { guint day, month, year; gchar *temp; guint32 julian_day; MESSAGE *msg = (MESSAGE *)user_data; gui_calendar_get_date (s_calendar, &year, &month, &day); gtk_widget_destroy(msg->appGUI->cnt->select_date_window); julian_day = utl_date_dmy_to_julian (day, month + 1, year); if (msg->data == (gpointer)COLUMN_BIRTH_DAY_DATE) { temp = julian_to_str (julian_day, DATE_FULL, config.override_locale_settings); gtk_entry_set_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE]), temp); msg->appGUI->cnt->birthday_date = julian_day; } else if (msg->data == (gpointer)COLUMN_NAME_DAY_DATE) { temp = julian_to_str (julian_day, DATE_NAME_DAY, config.override_locale_settings); gtk_entry_set_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE]), temp); msg->appGUI->cnt->nameday_date = julian_day; } } /*------------------------------------------------------------------------------*/ void select_date_ok_cb (GtkWidget *widget, gpointer data) { MESSAGE *msg = (MESSAGE *)data; select_date_selected_cb (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), msg); } /*------------------------------------------------------------------------------*/ void select_date_nodate_cb (GuiCalendar *s_calendar, gpointer user_data) { MESSAGE *msg = (MESSAGE *)user_data; gtk_widget_destroy(msg->appGUI->cnt->select_date_window); if (msg->data == (gpointer)COLUMN_BIRTH_DAY_DATE) { gtk_entry_set_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE]), ""); msg->appGUI->cnt->birthday_date = 0; } else if (msg->data == (gpointer)COLUMN_NAME_DAY_DATE) { gtk_entry_set_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE]), ""); msg->appGUI->cnt->nameday_date = 0; } } /*------------------------------------------------------------------------------*/ void next_field_button_clicked_cb (GtkWidget *widget, gpointer user_data) { const gchar *text; MESSAGE *msg = (MESSAGE *)user_data; gint i = (size_t) msg->data; text = gtk_entry_get_text (GTK_ENTRY(msg->appGUI->cnt->contact_entries[i])); if(strlen(text) && i != COLUMN_HOME_PHONE_4 && i != COLUMN_WORK_PHONE_4 && i != COLUMN_CELL_PHONE_4 && i != COLUMN_EMAIL_4 && i != COLUMN_WWW_4) { gtk_widget_hide (msg->appGUI->cnt->next_field_button[i]); gtk_widget_show (msg->appGUI->cnt->contact_entries[i+1]); if (msg->appGUI->cnt->next_field_button[i+1] != NULL) { gtk_widget_show (msg->appGUI->cnt->next_field_button[i+1]); } gtk_widget_grab_focus (msg->appGUI->cnt->contact_entries[i+1]); } } /*------------------------------------------------------------------------------*/ void date_select_cb (GtkWidget *widget, gpointer user_data) { GDate *cdate = NULL; GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *alignment; GtkWidget *nodate_button; GtkWidget *close_button; GtkWidget *ok_button; static MESSAGE msg_selected; MESSAGE *msg = (MESSAGE *)user_data; msg->appGUI->cnt->select_date_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(msg->appGUI->cnt->select_date_window), GTK_WIN_POS_MOUSE); gtk_window_set_modal(GTK_WINDOW(msg->appGUI->cnt->select_date_window), TRUE); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(msg->appGUI->cnt->select_date_window), GTK_WINDOW(msg->appGUI->cnt->contacts_add_window)); } gtk_window_set_decorated(GTK_WINDOW(msg->appGUI->cnt->select_date_window), FALSE); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (msg->appGUI->cnt->select_date_window), vbox1); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox1), alignment, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); msg->appGUI->cnt->select_date_calendar = gui_calendar_new(); gui_calendar_set_cursor_type (GUI_CALENDAR(msg->appGUI->cnt->select_date_calendar), CURSOR_BLOCK); gui_calendar_set_color (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_marker (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), config.today_marker_type, TODAY_MARKER); gui_calendar_set_color (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), config.weekend_color, 0, WEEKEND_COLOR); gtk_widget_show(msg->appGUI->cnt->select_date_calendar); msg_selected.data = msg->data; msg_selected.appGUI = msg->appGUI; g_signal_connect (GTK_OBJECT (msg->appGUI->cnt->select_date_calendar), "day_selected_double_click", G_CALLBACK (select_date_selected_cb), &msg_selected); gtk_container_add (GTK_CONTAINER (alignment), msg->appGUI->cnt->select_date_calendar); gui_calendar_set_display_options (GUI_CALENDAR (msg->appGUI->cnt->select_date_calendar), (config.display_options & !GUI_CALENDAR_NO_MONTH_CHANGE) | GUI_CALENDAR_SHOW_HEADING | GUI_CALENDAR_SHOW_DAY_NAMES | (config.display_options & GUI_CALENDAR_WEEK_START_MONDAY)); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox1), alignment, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); hbox1 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (alignment), hbox1); nodate_button = gtk_button_new_with_mnemonic (_("No date")); gtk_widget_show (nodate_button); gtk_box_pack_start (GTK_BOX (hbox1), nodate_button, FALSE, FALSE, 4); g_signal_connect (G_OBJECT (nodate_button), "clicked", G_CALLBACK (select_date_nodate_cb), &msg_selected); ok_button = utl_gui_create_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, FALSE); GTK_WIDGET_UNSET_FLAGS(ok_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(ok_button), GTK_RELIEF_NONE); gtk_widget_show (ok_button); gtk_box_pack_end (GTK_BOX (hbox1), ok_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (ok_button), "clicked", G_CALLBACK (select_date_ok_cb), &msg_selected); close_button = utl_gui_create_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, FALSE); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(close_button), GTK_RELIEF_NONE); gtk_widget_show (close_button); gtk_box_pack_end (GTK_BOX (hbox1), close_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (select_date_close_cb), msg->appGUI); gtk_widget_show (msg->appGUI->cnt->select_date_window); if (msg->data == (gpointer)COLUMN_BIRTH_DAY_DATE) { if (g_date_valid_julian(msg->appGUI->cnt->birthday_date)) { cdate = g_date_new_julian (msg->appGUI->cnt->birthday_date); if (cdate != NULL) { gui_calendar_select_month(GUI_CALENDAR(msg->appGUI->cnt->select_date_calendar), g_date_get_month(cdate)-1, g_date_get_year(cdate)); gui_calendar_select_day(GUI_CALENDAR(msg->appGUI->cnt->select_date_calendar), g_date_get_day(cdate)); } } } } /*------------------------------------------------------------------------------*/ void photo_file_select_cb (GtkWidget *widget, gpointer user_data) { GtkWidget *dialog; GUI *appGUI = (GUI *)user_data; dialog = gtk_file_chooser_dialog_new(_("Select photo"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gtk_entry_set_text (GTK_ENTRY(appGUI->cnt->contact_entries[COLUMN_PHOTO]), gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog))); } gtk_widget_destroy(dialog); } /*------------------------------------------------------------------------------*/ void photo_clear_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_entry_set_text (GTK_ENTRY(appGUI->cnt->contact_entries[COLUMN_PHOTO]), ""); } /*------------------------------------------------------------------------------*/ void show_hide_multiple_fields(GUI *appGUI) { gint i; const gchar *text; for(i=COLUMN_HOME_PHONE_2; icnt->contact_entries[i]); text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); if (!strlen(text)) break; gtk_widget_show (appGUI->cnt->contact_entries[i]); } for(i=COLUMN_WORK_PHONE_2; icnt->contact_entries[i]); text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); if (!strlen(text)) break; gtk_widget_show (appGUI->cnt->contact_entries[i]); } for(i=COLUMN_CELL_PHONE_2; icnt->contact_entries[i]); text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); if (!strlen(text)) break; gtk_widget_show (appGUI->cnt->contact_entries[i]); } for(i=COLUMN_EMAIL_2; icnt->contact_entries[i]); text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); if (!strlen(text)) break; gtk_widget_show (appGUI->cnt->contact_entries[i]); } for(i=COLUMN_WWW_2; icnt->contact_entries[i]); text = gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contact_entries[i])); if (!strlen(text)) break; gtk_widget_show (appGUI->cnt->contact_entries[i]); } } /*------------------------------------------------------------------------------*/ void contacts_add_edit_dialog_show (gboolean contacts_edit_mode, GUI *appGUI) { GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *table; GtkWidget *cancel_button; GtkWidget *contacts_add_scrolledwindow; GtkWidget *viewport; GtkWidget *label; GtkWidget *scrolledwindow; GtkWidget *photo_clear_button; GtkTreeIter iter; GtkTreeModel *model; GtkTextIter titer; GtkTextBuffer *text_buffer; gchar *text; gint pos, i; guint32 date; gchar tmpbuf[BUFFER_SIZE]; static MESSAGE msg_date[2]; /* birthday, name day */ static MESSAGE msg_index[CONTACTS_NUM_COLUMNS]; gchar *contact_replace_tags[] = { N_("Address"), N_("Postcode"), N_("City"), N_("State"), N_("Country") }; appGUI->cnt->contacts_add_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->cnt->contacts_add_window), 6); if(contacts_edit_mode == TRUE) { gtk_window_set_title (GTK_WINDOW (appGUI->cnt->contacts_add_window), _("Edit contact")); } else { gtk_window_set_title (GTK_WINDOW (appGUI->cnt->contacts_add_window), _("Add contact")); } appGUI->cnt->birthday_date = appGUI->cnt->nameday_date = 0; if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cnt->contacts_add_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_modal(GTK_WINDOW(appGUI->cnt->contacts_add_window), TRUE); gtk_window_set_default_size (GTK_WINDOW(appGUI->cnt->contacts_add_window), config.contacts_addedit_win_w, config.contacts_addedit_win_h); gtk_window_move (GTK_WINDOW (appGUI->cnt->contacts_add_window), config.contacts_addedit_win_x, config.contacts_addedit_win_y); g_signal_connect (G_OBJECT (appGUI->cnt->contacts_add_window), "key_release_event", G_CALLBACK (contacts_add_edit_key_release_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cnt->contacts_add_window), "delete_event", G_CALLBACK(contacts_add_edit_window_close_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cnt->contacts_add_window), vbox1); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); /*-------------------------------------------------------------------------*/ contacts_add_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (contacts_add_scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox2), contacts_add_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contacts_add_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport); gtk_container_add (GTK_CONTAINER (contacts_add_scrolledwindow), viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT(viewport), GTK_SHADOW_ETCHED_IN); table = gtk_table_new (60, 5, FALSE); /* FIXME: don't use hardcoded values */ gtk_widget_show (table); gtk_container_add (GTK_CONTAINER (viewport), table); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); /*** PERSONAL ***/ pos = 0; sprintf(tmpbuf, "%s", _("Personal")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; sprintf(tmpbuf, "%s:", _("Group")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->combobox_group = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cnt->combobox_group); g_signal_connect(G_OBJECT(appGUI->cnt->combobox_group), "focus", G_CALLBACK(group_combo_box_focus_cb), NULL); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->combobox_group, 2, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); utl_gui_create_category_combobox (GTK_COMBO_BOX(appGUI->cnt->combobox_group), appGUI->opt->contacts_group_store, TRUE); gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->cnt->combobox_group), 0); pos++; for(i=COLUMN_FIRST_NAME; icnt->contact_fields_tags_name[i*2])); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[i] = gtk_entry_new (); if (i == COLUMN_FIRST_NAME) { appGUI->cnt->next_field_button[i] = utl_gui_create_button (GTK_STOCK_GO_DOWN, OSMO_STOCK_BUTTON_DOWN, FALSE); gtk_widget_show (appGUI->cnt->next_field_button[i]); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->next_field_button[i], GTK_CAN_FOCUS); } gtk_widget_show (appGUI->cnt->contact_entries[i]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 5, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; } /* BIRTHDAY DATE */ sprintf(tmpbuf, "%s:", gettext(appGUI->cnt->contact_fields_tags_name[COLUMN_BIRTH_DAY_DATE*2])); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE] = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE], GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE]), FALSE); gtk_widget_show (appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[COLUMN_BIRTH_DAY_DATE], 2, 4, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cnt->birth_day_date_button = utl_gui_stock_button (OSMO_STOCK_BUTTON_SELECT_DATE, FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->birth_day_date_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cnt->birth_day_date_button); msg_date[0].data = (gpointer)COLUMN_BIRTH_DAY_DATE; msg_date[0].appGUI = appGUI; g_signal_connect (G_OBJECT (appGUI->cnt->birth_day_date_button), "clicked", G_CALLBACK (date_select_cb), &msg_date[0]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->birth_day_date_button, 4, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; /* NAMEDAY DATE */ sprintf(tmpbuf, "%s:", gettext(appGUI->cnt->contact_fields_tags_name[COLUMN_NAME_DAY_DATE*2])); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE] = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE], GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE]), FALSE); gtk_widget_show (appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[COLUMN_NAME_DAY_DATE], 2, 4, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cnt->name_day_date_button = utl_gui_stock_button (OSMO_STOCK_BUTTON_SELECT_DATE, FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->name_day_date_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cnt->name_day_date_button); msg_date[1].data = (gpointer)COLUMN_NAME_DAY_DATE; msg_date[1].appGUI = appGUI; g_signal_connect (G_OBJECT (appGUI->cnt->name_day_date_button), "clicked", G_CALLBACK (date_select_cb), &msg_date[1]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->name_day_date_button, 4, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; /* PHOTO */ sprintf(tmpbuf, "%s:", gettext(appGUI->cnt->contact_fields_tags_name[COLUMN_PHOTO*2])); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[COLUMN_PHOTO] = gtk_entry_new (); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->contact_entries[COLUMN_PHOTO], GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cnt->contact_entries[COLUMN_PHOTO]), FALSE); gtk_widget_show (appGUI->cnt->contact_entries[COLUMN_PHOTO]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[COLUMN_PHOTO], 2, 3, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cnt->photo_browse_button = utl_gui_create_button (GTK_STOCK_DIRECTORY, OSMO_STOCK_BUTTON_OPEN, FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->photo_browse_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cnt->photo_browse_button); g_signal_connect (G_OBJECT (appGUI->cnt->photo_browse_button), "clicked", G_CALLBACK (photo_file_select_cb), appGUI); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->photo_browse_button, 3, 4, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); photo_clear_button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (photo_clear_button); g_signal_connect (G_OBJECT (photo_clear_button), "clicked", G_CALLBACK (photo_clear_cb), appGUI); gtk_table_attach (GTK_TABLE (table), photo_clear_button, 4, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; /*** HOME ***/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (table), hseparator, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); pos++; sprintf(tmpbuf, "%s", _("Home")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; for(i=COLUMN_HOME_ADDRESS; icnt->contact_entries[i] = gtk_entry_new (); gtk_widget_show (appGUI->cnt->contact_entries[i]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 5, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; } /*** WORK ***/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (table), hseparator, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); pos++; sprintf(tmpbuf, "%s", _("Work")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; for(i=COLUMN_WORK_ORGANIZATION; i= COLUMN_WORK_ADDRESS && i <= COLUMN_WORK_COUNTRY) { sprintf(tmpbuf, "%s:", gettext(contact_replace_tags[i-COLUMN_WORK_ADDRESS])); } else { sprintf(tmpbuf, "%s:", gettext(appGUI->cnt->contact_fields_tags_name[i*2])); } label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[i] = gtk_entry_new (); gtk_widget_show (appGUI->cnt->contact_entries[i]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 5, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); pos++; } /*** PHONES ***/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (table), hseparator, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); pos++; sprintf(tmpbuf, "%s", _("Phones")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; for(i=COLUMN_HOME_PHONE_1; icnt->contact_fields_tags_name[i*2])); label = gtk_label_new (tmpbuf); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[i] = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 4, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); msg_index[i].appGUI = appGUI; msg_index[i].data = GINT_TO_POINTER(i); g_signal_connect (G_OBJECT (appGUI->cnt->contact_entries[i]), "key_press_event", G_CALLBACK (show_hide_fields_key_press_cb), &msg_index[i]); if (i != COLUMN_HOME_PHONE_4 && i != COLUMN_WORK_PHONE_4 && i != COLUMN_CELL_PHONE_4) { appGUI->cnt->next_field_button[i] = utl_gui_create_button (GTK_STOCK_GO_DOWN, OSMO_STOCK_BUTTON_DOWN, FALSE); gtk_widget_hide (appGUI->cnt->next_field_button[i]); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->next_field_button[i], GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (appGUI->cnt->next_field_button[i]), "clicked", G_CALLBACK (next_field_button_clicked_cb), &msg_index[i]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->next_field_button[i], 4, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } else { appGUI->cnt->next_field_button[i] = NULL; } if(i == COLUMN_HOME_PHONE_1 || i == COLUMN_WORK_PHONE_1 || i == COLUMN_CELL_PHONE_1) { gtk_widget_show (label); gtk_widget_show (appGUI->cnt->contact_entries[i]); gtk_widget_show (appGUI->cnt->next_field_button[i]); } pos++; } /*** INTERNET ***/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (table), hseparator, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); pos++; sprintf(tmpbuf, "%s", _("Internet")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; for(i=COLUMN_EMAIL_1; icnt->contact_fields_tags_name[i*2])); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 2, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 4, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cnt->contact_entries[i] = gtk_entry_new (); gtk_widget_show (appGUI->cnt->contact_entries[i]); msg_index[i].appGUI = appGUI; msg_index[i].data = GINT_TO_POINTER(i); g_signal_connect (G_OBJECT (appGUI->cnt->contact_entries[i]), "key_press_event", G_CALLBACK (show_hide_fields_key_press_cb), &msg_index[i]); if (i == COLUMN_EMAIL_1 || i == COLUMN_EMAIL_2 || i == COLUMN_EMAIL_3 || i == COLUMN_WWW_1 || i == COLUMN_WWW_2 || i == COLUMN_WWW_3) { appGUI->cnt->next_field_button[i] = utl_gui_create_button (GTK_STOCK_GO_DOWN, OSMO_STOCK_BUTTON_DOWN, FALSE); gtk_widget_hide (appGUI->cnt->next_field_button[i]); GTK_WIDGET_UNSET_FLAGS(appGUI->cnt->next_field_button[i], GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (appGUI->cnt->next_field_button[i]), "clicked", G_CALLBACK (next_field_button_clicked_cb), &msg_index[i]); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 4, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->cnt->next_field_button[i], 4, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } else { appGUI->cnt->next_field_button[i] = NULL; gtk_table_attach (GTK_TABLE (table), appGUI->cnt->contact_entries[i], 2, 5, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); } if(i == COLUMN_EMAIL_1 || i == COLUMN_WWW_1) { gtk_widget_show (appGUI->cnt->next_field_button[i]); } if((i > COLUMN_EMAIL_1 && i < COLUMN_WWW_1) || (i > COLUMN_WWW_1 && i < COLUMN_IM_GG)) { gtk_widget_hide (label); gtk_widget_hide (appGUI->cnt->contact_entries[i]); } pos++; } /*** Additional info ***/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (table), hseparator, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); pos++; sprintf(tmpbuf, "%s", _("Additional info")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 5, 0); pos++; scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 5, pos, pos+1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); appGUI->cnt->add_info_textview = gtk_text_view_new (); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->cnt->add_info_textview); /*gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->cnt->add_info_textview), GTK_WRAP_WORD);*/ gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW(appGUI->cnt->add_info_textview), 4); gtk_text_view_set_left_margin (GTK_TEXT_VIEW(appGUI->cnt->add_info_textview), 4); gtk_text_view_set_right_margin (GTK_TEXT_VIEW(appGUI->cnt->add_info_textview), 4); gtk_widget_set_size_request (appGUI->cnt->add_info_textview, -1, 350); gtk_widget_show (appGUI->cnt->add_info_textview); /*appGUI->cnt->fd_ai_font = pango_font_description_from_string(config.contact_item_font);*/ appGUI->cnt->fd_ai_font = pango_font_description_from_string("Monospace"); gtk_widget_modify_font (GTK_WIDGET(appGUI->cnt->add_info_textview), appGUI->cnt->fd_ai_font); /*-------------------------------------------------------------------------*/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 2); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 16); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_contacts_add_edit_window_close_cb), appGUI); appGUI->cnt->contacts_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); gtk_widget_show (appGUI->cnt->contacts_ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->cnt->contacts_ok_button); g_signal_connect(appGUI->cnt->contacts_ok_button, "clicked", G_CALLBACK(contacts_item_entered_cb), appGUI); appGUI->cnt->contacts_edit_state = contacts_edit_mode; appGUI->cnt->contacts_accept_state = FALSE; if (contacts_edit_mode == TRUE) { appGUI->cnt->contacts_accept_state = TRUE; iter = utl_gui_get_first_selection_iter(appGUI->cnt->contacts_list_selection, &model); for(i=0; i < CONTACTS_NUM_COLUMNS; i++) { if (i != COLUMN_ID) { if (i == COLUMN_BIRTH_DAY_DATE || i == COLUMN_NAME_DAY_DATE) { gtk_tree_model_get (model, &iter, i, &date, -1); if (date == 0) { text = NULL; } else { if (i == COLUMN_BIRTH_DAY_DATE) { appGUI->cnt->birthday_date = date; text = g_strdup((const gchar *)julian_to_str(date, DATE_FULL, config.override_locale_settings)); } else { appGUI->cnt->nameday_date = date; text = g_strdup((const gchar *)julian_to_str(date, DATE_NAME_DAY, config.override_locale_settings)); } } } else { gtk_tree_model_get (model, &iter, i, &text, -1); } if (text != NULL) { if (i == COLUMN_GROUP) { gtk_combo_box_set_active (GTK_COMBO_BOX(appGUI->cnt->combobox_group), utl_gui_list_store_get_text_index (appGUI->opt->contacts_group_store, text)); } else if (i == COLUMN_INFO) { text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(appGUI->cnt->add_info_textview)); utl_gui_clear_text_buffer (text_buffer, &titer); gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER(text_buffer), &titer, 0); gtk_text_buffer_insert (text_buffer, &titer, text, -1); gtk_text_view_set_buffer (GTK_TEXT_VIEW(appGUI->cnt->add_info_textview), text_buffer); } else { gtk_entry_set_text (GTK_ENTRY(appGUI->cnt->contact_entries[i]), text); if (appGUI->cnt->next_field_button[i] != NULL) { gtk_widget_show (appGUI->cnt->next_field_button[i]); } } g_free(text); } } } show_hide_multiple_fields(appGUI); } gtk_widget_set_sensitive(appGUI->cnt->contacts_ok_button, appGUI->cnt->contacts_accept_state); g_signal_connect(G_OBJECT(appGUI->cnt->combobox_group), "changed", G_CALLBACK(group_combobox_changed_cb), appGUI); gtk_widget_show(appGUI->cnt->contacts_add_window); gtk_widget_grab_focus (appGUI->cnt->contact_entries[COLUMN_FIRST_NAME]); } /*------------------------------------------------------------------------------*/ void read_contacts_entries (GUI *appGUI) { xmlDocPtr doc; xmlChar *key; xmlNodePtr node, cnode, main_node; xmlNodePtr group_node; GtkTreeIter iter; gint j; guint32 date; gchar tmpbuf[BUFFER_SIZE]; if (g_file_test (prefs_get_config_filename(CONTACTS_ENTRIES_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR) == FALSE) return; if((doc = xmlParseFile(prefs_get_config_filename(CONTACTS_ENTRIES_FILENAME, appGUI)))) { if(!(node = xmlDocGetRootElement(doc))) { xmlFreeDoc(doc); return; } if (xmlStrcmp(node->name, (const xmlChar *) CONTACTS_NAME)) { xmlFreeDoc(doc); return; } main_node = node->xmlChildrenNode; while (main_node != NULL) { if(!xmlStrcmp(main_node->name, (xmlChar *) CONTACTS_GROUP_ENTRIES_NAME)) { group_node = main_node->xmlChildrenNode; while (group_node != NULL) { if ((!xmlStrcmp(group_node->name, (const xmlChar *) "name"))) { key = xmlNodeGetContent (group_node->xmlChildrenNode); if (key != NULL) { if GTK_IS_LIST_STORE(appGUI->opt->contacts_group_store) { gtk_list_store_append(appGUI->opt->contacts_group_store, &iter); gtk_list_store_set(appGUI->opt->contacts_group_store, &iter, 0, (gchar *) key, -1); } xmlFree (key); } } group_node = group_node->next; } } /*---------------------------------------------------------------------------------------*/ if(!xmlStrcmp(main_node->name, (xmlChar *) CONTACTS_ENTRIES_NAME)) { /* read note */ node = main_node->xmlChildrenNode; while (node != NULL) { if(!xmlStrcmp(node->name, (xmlChar *) "record")) { cnode = node->xmlChildrenNode; gtk_list_store_append(appGUI->cnt->contacts_list_store, &iter); sprintf(tmpbuf, "(%s)", _("None")); gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_GROUP, tmpbuf, -1); gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_FIRST_NAME, tmpbuf, -1); gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, COLUMN_LAST_NAME, tmpbuf, -1); while (cnode != NULL) { for (j = COLUMN_GROUP; j < CONTACTS_NUM_COLUMNS; j++) { if (j != COLUMN_ID) { if ((!xmlStrcmp(cnode->name, (const xmlChar *) appGUI->cnt->contact_fields_tags_name[j*2+1]))) { key = xmlNodeGetContent(cnode->xmlChildrenNode); if (key != NULL) { if (j == COLUMN_BIRTH_DAY_DATE || j == COLUMN_NAME_DAY_DATE) { sscanf((gchar *) key, "%d", &date); gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, j, date, -1); } else { gtk_list_store_set(appGUI->cnt->contacts_list_store, &iter, j, key, -1); } xmlFree(key); } } } } cnode = cnode->next; } } node = node->next; } } /*---------------------------------------------------------------------------------------*/ main_node = main_node->next; } xmlFree(node); xmlFreeDoc(doc); appGUI->cnt->write_flag = TRUE; contacts_fill_ids (appGUI); } else { appGUI->cnt->write_flag = FALSE; /* FIXME: add translation here */ sprintf (tmpbuf, "Contacts file is malformed. Please edit\n%s\nfile manually to fix its structure and restart the Osmo.", prefs_get_config_filename(CONTACTS_ENTRIES_FILENAME, appGUI)); utl_gui_create_dialog (GTK_MESSAGE_ERROR, tmpbuf, NULL); } } /*------------------------------------------------------------------------------*/ void write_contacts_entries (GUI *appGUI) { gint i, j; xmlDocPtr doc; xmlNodePtr main_node, node, note_node; xmlAttrPtr attr; GtkTreeIter iter; gchar *item; guint32 date; gchar temp[BUFFER_SIZE]; if (((appGUI->save_status & WRT_CONTACTS) != 0) || appGUI->cnt->write_flag == FALSE) return; appGUI->save_status |= WRT_CONTACTS; doc = xmlNewDoc ((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); main_node = xmlNewNode (NULL, (const xmlChar *) CONTACTS_NAME); xmlDocSetRootElement (doc, main_node); node = xmlNewChild (main_node, NULL, (const xmlChar *) CONTACTS_GROUP_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->contacts_group_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->opt->contacts_group_store), &iter, 0, &item, -1); utl_xml_put_str ("name", item, node, doc); g_free (item); } node = xmlNewChild (main_node, NULL, (const xmlChar *) CONTACTS_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, NULL, i++)) { note_node = xmlNewChild (node, NULL, (const xmlChar *) "record", (xmlChar *) NULL); for (j = COLUMN_GROUP; j < CONTACTS_NUM_COLUMNS; j++) { if (j != COLUMN_ID) { if (j == COLUMN_BIRTH_DAY_DATE || j == COLUMN_NAME_DAY_DATE) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, j, &date, -1); sprintf(temp, "%d", date); utl_xml_put_str (appGUI->cnt->contact_fields_tags_name[j*2+1], temp, note_node, doc); } else { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, j, &item, -1); if (item != NULL) { if (strlen(item)) { utl_xml_put_str (appGUI->cnt->contact_fields_tags_name[j*2+1], item, note_node, doc); } } g_free (item); } } } } xmlSaveFormatFileEnc (prefs_get_config_filename(CONTACTS_ENTRIES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeProp (attr); xmlFreeDoc (doc); appGUI->save_status &= ~WRT_CONTACTS; } /*------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/calendar_print.h000664 001750 001750 00000001714 12561325524 016462 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_PRINT_H #define _CALENDAR_PRINT_H void calendar_create_print_window (GUI *appGUI); #endif /* _CALENDAR_PRINT_H */ osmo-0.2.14/src/calendar_fullyear.c000664 001750 001750 00000065534 12561325524 017156 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_fullyear.h" #include "i18n.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "options_prefs.h" #include "calendar.h" #include "calendar_notes.h" #include "calendar_ical.h" #include "calendar_widget.h" #include "calendar_utils.h" #include "stock_icons.h" /*------------------------------------------------------------------------*/ void fullyear_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; appGUI->cal->last_selected_year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton)); if (config.fullscreen == FALSE) { gtk_window_get_size (GTK_WINDOW (appGUI->cal->fullyear_window), &config.fy_window_size_x, &config.fy_window_size_y); } gtk_widget_destroy (appGUI->cal->fullyear_window); } /*------------------------------------------------------------------------------*/ void button_fullyear_window_close_cb (GtkButton *button, gpointer user_data) { fullyear_window_close_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ void select_date_day_cb (GtkWidget *widget, gpointer user_data) { GDate *date; MESSAGE *msg = (MESSAGE *) user_data; date = g_date_new_julian ((size_t) msg->data); g_return_if_fail (date != NULL); cal_jump_to_date (date, msg->appGUI); g_date_free (date); update_aux_calendars (msg->appGUI); fullyear_window_close_cb (GTK_WIDGET (widget), NULL, msg->appGUI); } /*------------------------------------------------------------------------*/ void display_calendar (guint year, GUI *appGUI) { static MESSAGE selected_date[MAX_MONTHS * FULL_YEAR_COLS]; GDate *cdate; gint calendar_table[MAX_MONTHS * FULL_YEAR_COLS]; guint current_day, current_month, current_year; guint month; gint i, idx, day, first_day, days; gchar tmpbuf[BUFFER_SIZE], tmpbuf2[BUFFER_SIZE]; for (i = 0; i < MAX_MONTHS * FULL_YEAR_COLS; i++) { calendar_table[i] = -1; } cdate = g_date_new (); g_return_if_fail (cdate != NULL); for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { g_date_set_dmy (cdate, 1, month, year); first_day = g_date_get_weekday (cdate); days = g_date_get_days_in_month (month, year); for (i = 1; i <= days; i++) { calendar_table[(month - 1) * FULL_YEAR_COLS + first_day + i - 2] = i; } } g_date_set_time_t (cdate, time (NULL)); current_day = g_date_get_day (cdate); current_month = g_date_get_month (cdate); current_year = g_date_get_year (cdate); for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { for (i = 0; i < FULL_YEAR_COLS; i++) { idx = (month - 1) * FULL_YEAR_COLS + i; g_signal_handlers_disconnect_by_func (G_OBJECT (appGUI->cal->calendar_buttons[idx]), G_CALLBACK (select_date_day_cb), &selected_date[idx]); day = calendar_table[idx]; if (day > 0) { if (day == current_day && month == current_month && year == current_year) { g_snprintf (tmpbuf2, BUFFER_SIZE, "%2d", day); } else { g_snprintf (tmpbuf2, BUFFER_SIZE, "%2d", day); } if (i % 7 + 1 == G_DATE_SATURDAY || i % 7 + 1 == G_DATE_SUNDAY) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", tmpbuf2); } else if (month % 2 == 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", tmpbuf2); } else { g_strlcpy (tmpbuf, tmpbuf2, BUFFER_SIZE); } g_date_set_dmy (cdate, (GDateDay) day, month, (GDateYear) gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton))); selected_date[idx].data = (gpointer) ((size_t)g_date_get_julian (cdate)); selected_date[idx].appGUI = appGUI; g_signal_connect (G_OBJECT (appGUI->cal->calendar_buttons[idx]), "clicked", G_CALLBACK (select_date_day_cb), &selected_date[idx]); gtk_button_set_label (GTK_BUTTON (appGUI->cal->calendar_buttons[idx]), ""); gtk_label_set_markup (GTK_LABEL (GTK_BIN (appGUI->cal->calendar_buttons[idx])->child), tmpbuf); gtk_widget_show (appGUI->cal->calendar_buttons[idx]); } else { gtk_button_set_label (GTK_BUTTON (appGUI->cal->calendar_buttons[idx]), ""); gtk_widget_hide (GTK_WIDGET (appGUI->cal->calendar_buttons[idx])); } } } g_date_free (cdate); } /*------------------------------------------------------------------------*/ void change_to_current_year_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), utl_date_get_current_year ()); } /*------------------------------------------------------------------------*/ void change_to_next_year_cb (GtkWidget *widget, gpointer user_data) { guint year; GUI *appGUI = (GUI *) user_data; year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton)); year++; gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), year); } /*------------------------------------------------------------------------*/ void change_to_previous_year_cb (GtkWidget *widget, gpointer user_data) { guint year; GUI *appGUI = (GUI *) user_data; year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton)); if (year > JULIAN_GREGORIAN_YEAR) { year--; } gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), year); } /*------------------------------------------------------------------------*/ void change_year_spin_button_cb (GtkSpinButton *spinbutton, gpointer user_data) { guint i, month, year; GUI *appGUI = (GUI *) user_data; year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinbutton)); if (year == utl_date_get_current_year ()) { gtk_widget_set_sensitive (appGUI->cal->cyear_button, FALSE); } else { gtk_widget_set_sensitive (appGUI->cal->cyear_button, TRUE); } display_calendar (year, appGUI); for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { i = month - 1; gui_calendar_select_month (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), month - 1, year); mark_events (appGUI->cal->fy_calendars[i], month - 1, year, appGUI); } } /*------------------------------------------------------------------------*/ void year_info_cb (GtkWidget *widget, gpointer user_data) { guint month, year, w_days; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *) user_data; year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton)); w_days = 0; for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { w_days += utl_get_weekend_days_in_month_my (month, year); } g_snprintf (tmpbuf, BUFFER_SIZE, "%s: %d\n%s: %s\n\n%s: %s\n\n%s: %d\n%s: %d\n%s: %d (%.1f%%)", _("Year"), year, _("Leap year"), g_date_is_leap_year (year) ? _("Yes"):_("No"), _("Chinese year animal"), get_chinese_year_name (year), _("Number of days"), utl_get_days_per_year (year), _("Number of weeks"), utl_weeks_in_year (year), _("Number of weekend days"), w_days, (double) w_days / utl_get_days_per_year (year) * 100.0); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW (appGUI->cal->fullyear_window)); } /*------------------------------------------------------------------------------*/ gint fullyear_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; switch (event->keyval) { case GDK_Escape: gtk_widget_destroy (appGUI->cal->fullyear_window); return TRUE; case GDK_F1: g_signal_emit_by_name (G_OBJECT(appGUI->cal->fy_alternative_view_checkbutton), "clicked"); return TRUE; case GDK_F2: year_info_cb (NULL, appGUI); return TRUE; case GDK_F3: change_to_current_year_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void alternative_view_cb (GtkToggleButton *togglebutton, gpointer user_data) { GUI *appGUI = (GUI *) user_data; config.fy_alternative_view = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton)); if (config.fy_alternative_view == TRUE) { gtk_widget_hide (appGUI->cal->fycal_table_1); gtk_widget_show (appGUI->cal->fycal_table_2); } else { gtk_widget_hide (appGUI->cal->fycal_table_2); gtk_widget_show (appGUI->cal->fycal_table_1); } } /*------------------------------------------------------------------------------*/ void calendar_dbclick_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; GDate *date = g_date_new (); gui_calendar_get_gdate (GUI_CALENDAR (widget), date); cal_jump_to_date (date, appGUI); update_aux_calendars (appGUI); g_date_free (date); fullyear_window_close_cb (GTK_WIDGET (widget), NULL, appGUI); } /*------------------------------------------------------------------------------*/ void calendar_create_fullyear_window (GUI *appGUI) { GtkWidget *vbox1, *vbox2; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *close_button; GtkWidget *hbox1; GtkWidget *prev_button; GtkWidget *info_button; GtkObject *fy_spinbutton_adj; GtkWidget *next_button; GtkWidget *fycal_scrolledwindow; GtkWidget *fycal_viewport; GtkWidget *vseparator; GtkWidget *label; GtkWidget *fycal_label, *fycal_vbox; gchar tmpbuf[BUFFER_SIZE], buffer[BUFFER_SIZE]; gint i, j, x, y, idx; GDate *cdate; guint month, year; gint rotate = FALSE; cdate = g_date_new (); g_return_if_fail (cdate != NULL); g_date_set_time_t (cdate, time (NULL)); appGUI->cal->fullyear_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->fullyear_window), _("Full-year calendar")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->fullyear_window), GTK_WIN_POS_CENTER_ALWAYS); gtk_window_set_default_size (GTK_WINDOW (appGUI->cal->fullyear_window), config.fy_window_size_x, config.fy_window_size_y); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->fullyear_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->fullyear_window), "delete_event", G_CALLBACK (fullyear_window_close_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->cal->fullyear_window), GTK_WINDOW (appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->fullyear_window), 8); g_signal_connect (G_OBJECT (appGUI->cal->fullyear_window), "key_press_event", G_CALLBACK (fullyear_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->fullyear_window), vbox1); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 4); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Year")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, TRUE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_padding (GTK_MISC (label), 0, 4); fy_spinbutton_adj = gtk_adjustment_new (utl_date_get_current_year (), JULIAN_GREGORIAN_YEAR, 9999, 1, 10, 0); appGUI->cal->fy_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (fy_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->fy_spinbutton); g_signal_connect(appGUI->cal->fy_spinbutton, "value-changed", G_CALLBACK(change_year_spin_button_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->fy_spinbutton, FALSE, FALSE, 8); gtk_widget_set_size_request (appGUI->cal->fy_spinbutton, 80, -1); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), TRUE); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), GTK_UPDATE_IF_VALID); info_button = utl_gui_create_button (GTK_STOCK_INFO, OSMO_STOCK_BUTTON_INFO, FALSE); GTK_WIDGET_UNSET_FLAGS(info_button, GTK_CAN_FOCUS); gtk_widget_show (info_button); g_signal_connect (info_button, "clicked", G_CALLBACK (year_info_cb), appGUI); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (info_button, _("Year info")); } gtk_button_set_relief (GTK_BUTTON (info_button), GTK_RELIEF_NONE); gtk_box_pack_start (GTK_BOX (hbox1), info_button, FALSE, FALSE, 2); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_start (GTK_BOX (hbox1), vseparator, FALSE, FALSE, 8); prev_button = utl_gui_create_button (GTK_STOCK_GO_BACK, OSMO_STOCK_BUTTON_PREV_YEAR, FALSE); GTK_WIDGET_UNSET_FLAGS (prev_button, GTK_CAN_FOCUS); gtk_widget_show (prev_button); g_signal_connect (prev_button, "clicked", G_CALLBACK (change_to_previous_year_cb), appGUI); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (prev_button, _("Previous year")); } gtk_button_set_relief (GTK_BUTTON (prev_button), GTK_RELIEF_NONE); gtk_box_pack_start (GTK_BOX (hbox1), prev_button, FALSE, FALSE, 2); appGUI->cal->cyear_button = utl_gui_create_button (GTK_STOCK_HOME, OSMO_STOCK_BUTTON_TODAY, FALSE); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->cyear_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->cal->cyear_button); g_signal_connect (appGUI->cal->cyear_button, "clicked", G_CALLBACK (change_to_current_year_cb), appGUI); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cal->cyear_button, _("Current year")); } gtk_button_set_relief (GTK_BUTTON (appGUI->cal->cyear_button), GTK_RELIEF_NONE); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->cyear_button, FALSE, FALSE, 2); next_button = utl_gui_create_button (GTK_STOCK_GO_FORWARD, OSMO_STOCK_BUTTON_NEXT_YEAR, FALSE); GTK_WIDGET_UNSET_FLAGS(next_button, GTK_CAN_FOCUS); gtk_widget_show (next_button); g_signal_connect (next_button, "clicked", G_CALLBACK (change_to_next_year_cb), appGUI); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (next_button, _("Next year")); } gtk_button_set_relief (GTK_BUTTON (next_button), GTK_RELIEF_NONE); gtk_box_pack_start (GTK_BOX (hbox1), next_button, FALSE, FALSE, 2); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_start (GTK_BOX (hbox1), vseparator, FALSE, FALSE, 8); appGUI->cal->fy_alternative_view_checkbutton = gtk_check_button_new_with_mnemonic (_("Alternative view")); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->fy_alternative_view_checkbutton, GTK_CAN_FOCUS); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->cal->fy_alternative_view_checkbutton), config.fy_alternative_view); g_signal_connect (G_OBJECT (appGUI->cal->fy_alternative_view_checkbutton), "toggled", G_CALLBACK (alternative_view_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->fy_alternative_view_checkbutton, FALSE, FALSE, 2); gtk_widget_show (appGUI->cal->fy_alternative_view_checkbutton); fycal_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (fycal_scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), fycal_scrolledwindow, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (fycal_scrolledwindow), 4); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (fycal_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); fycal_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (fycal_viewport); gtk_container_add (GTK_CONTAINER (fycal_scrolledwindow), fycal_viewport); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (fycal_viewport), vbox2); /*-------------------------------------------------------------------------------------*/ /* First view */ if (config.fy_simple_view == TRUE) { appGUI->cal->fycal_table_1 = gtk_table_new (MAX_MONTHS + 2, FULL_YEAR_COLS + 1, FALSE); } else { appGUI->cal->fycal_table_1 = gtk_table_new (MAX_MONTHS + 4, FULL_YEAR_COLS + 3, FALSE); } if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->fy_alternative_view_checkbutton)) == FALSE) { gtk_widget_show (appGUI->cal->fycal_table_1); } gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->fycal_table_1, TRUE, TRUE, 0); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); if (config.fy_simple_view == TRUE) { gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), vseparator, 1, 2, 0, 14, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); } else { gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), vseparator, 1, 2, 0, 16, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); } hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, 2, 39, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); if (config.fy_simple_view == FALSE) { vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), vseparator, FULL_YEAR_COLS + 2, FULL_YEAR_COLS + 3, 0, 16, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, 2, 39, MAX_MONTHS + 2, MAX_MONTHS + 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, 0, 1, MAX_MONTHS + 2, MAX_MONTHS + 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, FULL_YEAR_COLS + 3, FULL_YEAR_COLS + 4, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), hseparator, FULL_YEAR_COLS + 3, FULL_YEAR_COLS + 4, MAX_MONTHS + 2, MAX_MONTHS + 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); } g_date_set_day (cdate, 1); for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { g_date_set_month (cdate, month); g_date_strftime (buffer, BUFFER_SIZE, config.fy_simple_view ? "%b" : "%B", cdate); g_snprintf (tmpbuf, BUFFER_SIZE, (month % 2) ? "%s" : "%s", buffer); label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), label, 0, 1, month + 1, month + 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label), 8, 0); gtk_label_set_markup (GTK_LABEL (label), tmpbuf); if (config.fy_simple_view == FALSE) { label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), label, FULL_YEAR_COLS + 3, FULL_YEAR_COLS + 4, month + 1, month + 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label), 8, 0); gtk_label_set_markup (GTK_LABEL (label), tmpbuf); } } /* start with monday */ g_date_set_dmy (cdate, 1, 1, 2007); for (i = 0; i < FULL_YEAR_COLS; i++) { g_date_set_day (cdate, (i % DAYS_PER_WEEK) + 1); g_date_strftime (buffer, BUFFER_SIZE, "%a", cdate); if (g_utf8_strlen (buffer, -1) > 2) rotate = TRUE; if (i % 7 + 1 == G_DATE_SATURDAY || i % 7 + 1 == G_DATE_SUNDAY) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", buffer); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", buffer); } label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), label, i + 2, i + 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label), 4, 0); if (rotate) gtk_label_set_angle (GTK_LABEL (label), 90); gtk_label_set_markup (GTK_LABEL (label), tmpbuf); if (config.fy_simple_view == FALSE) { label = gtk_label_new (NULL); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), label, i + 2, i + 3, MAX_MONTHS + 3, MAX_MONTHS + 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label), 4, 0); if (rotate) gtk_label_set_angle (GTK_LABEL (label), 90); gtk_label_set_markup (GTK_LABEL (label), tmpbuf); } } for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { for (j = 0; j < FULL_YEAR_COLS; j++) { i = month - 1; idx = i * FULL_YEAR_COLS + j; appGUI->cal->calendar_buttons[idx] = gtk_button_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->calendar_buttons[idx], GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (appGUI->cal->calendar_buttons[idx]), GTK_RELIEF_NONE); gtk_widget_show (appGUI->cal->calendar_buttons[idx]); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_1), appGUI->cal->calendar_buttons[idx], j+2, j+3, i+2, i+3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } } display_calendar (utl_date_get_current_year (), appGUI); gtk_widget_set_sensitive (appGUI->cal->cyear_button, FALSE); /*-------------------------------------------------------------------------------------*/ /* Second view */ appGUI->cal->fycal_table_2 = gtk_table_new (3, 4, FALSE); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->fy_alternative_view_checkbutton)) == TRUE) { gtk_widget_show (appGUI->cal->fycal_table_2); } gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->fycal_table_2, TRUE, TRUE, 0); for (i = y = 0; y < 3; y++) { for (x = 0; x < 4; x++, i++) { fycal_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (fycal_vbox); gtk_table_attach (GTK_TABLE (appGUI->cal->fycal_table_2), fycal_vbox, x, x + 1, y, y + 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); fycal_label = gtk_label_new (NULL); gtk_widget_show (fycal_label); gtk_box_pack_start (GTK_BOX (fycal_vbox), fycal_label, FALSE, FALSE, 0); appGUI->cal->fy_calendars[i] = gui_calendar_new (); g_signal_connect (appGUI->cal->fy_calendars[i], "day_selected_double_click", G_CALLBACK (calendar_dbclick_cb), appGUI); gtk_widget_show (appGUI->cal->fy_calendars[i]); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->fy_calendars[i], GTK_CAN_FOCUS); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), (config.display_options & (GUI_CALENDAR_SHOW_DAY_NAMES | GUI_CALENDAR_WEEK_START_MONDAY)) | GUI_CALENDAR_NO_MONTH_CHANGE); gui_calendar_enable_cursor (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), FALSE); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.mark_color, 0, EVENT_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.selection_color, 0, SELECTOR_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.weekend_color, 0, WEEKEND_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.birthday_mark_color, 0, BIRTHDAY_MARKER_COLOR); gui_calendar_set_day_note_marker_symbol (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.day_note_marker); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.today_marker_type, TODAY_MARKER); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), config.event_marker_type, EVENT_MARKER); year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton)); month = i + 1; gui_calendar_select_month (GUI_CALENDAR (appGUI->cal->fy_calendars[i]), month - 1, year); mark_events (appGUI->cal->fy_calendars[i], month - 1, year, appGUI); g_date_set_dmy (cdate, 1, month, year); g_date_strftime (buffer, BUFFER_SIZE, "%B", cdate); gtk_label_set_text (GTK_LABEL (fycal_label), buffer); gtk_box_pack_start (GTK_BOX (fycal_vbox), appGUI->cal->fy_calendars[i], FALSE, FALSE, 0); } } if (appGUI->cal->last_selected_year == -1) { gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), utl_date_get_current_year ()); } else { gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->fy_spinbutton), appGUI->cal->last_selected_year); } /*-------------------------------------------------------------------------------------*/ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); g_signal_connect (close_button, "clicked", G_CALLBACK (button_fullyear_window_close_cb), appGUI); gtk_container_add (GTK_CONTAINER (hbuttonbox), close_button); gtk_widget_show (appGUI->cal->fullyear_window); } /*------------------------------------------------------------------------*/ osmo-0.2.14/src/tasks.h000664 001750 001750 00000006176 12561325524 014631 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2014 Tomasz Maka * (C) 2007-2014 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_H #define _TASKS_H #include "gui.h" #define TASKS_NAME "osmo_tasks" #define TASKS_ENTRIES_NAME "tasks_entries" #define TASKS_CATEGORY_ENTRIES_NAME "category_entries" #define TASKS_ENTRIES_FILENAME "tasks_entries.xml" #define MAX_SUMMARY_SIZE 512 /* max summary string size */ #define MAX_DATE_SIZE 12 /* max data string size */ #define WHOLE_WEEK 127 typedef struct { guint id; gboolean done; guint32 due_date_julian; gint due_time; guint32 start_date_julian; guint32 done_date_julian; gchar *priority; gchar *category; gchar *summary; gchar *desc; gboolean active; gboolean offline_ignore; gboolean sound_enable; gboolean ndialog_enable; gboolean repeat; gint repeat_day; gint repeat_month_interval; gint repeat_day_interval; gint repeat_start_day; gint repeat_time_start; gint repeat_time_end; gint repeat_time_interval; gint repeat_counter; gchar *alarm_command; gint warning_days; gint warning_time; gint postpone_time; } TASK_ITEM; enum { LOW_PRIORITY = 0, MEDIUM_PRIORITY, HIGH_PRIORITY }; void gui_create_tasks (GUI *appGUI); gint get_priority_index (gchar *text); gchar* get_priority_text (gint index); gint task_calculate_new_date (TASK_ITEM *item, GUI *appGUI, guint32 *new_date, gint *new_time); void tasks_repeat_done (GtkTreeIter *iter, TASK_ITEM *item, GUI *appGUI); void tasks_select_first_position_in_list (GUI *appGUI); //void apply_task_attributes (GUI *appGUI); void set_categories (GUI *appGUI); void refresh_tasks (GUI *appGUI); void store_task_columns_info (GUI *appGUI); void set_tasks_columns_width (GUI *appGUI); void add_item_to_list (TASK_ITEM *item, GUI *appGUI); gchar* get_date_color (guint32 julian_day, gint time, gboolean done, GUI *appGUI); void tasks_selection_activate (gboolean active, GUI *appGUI); guint get_number_of_visible_tasks_with_date (GUI *appGUI); #endif /* _TASKS_H */ osmo-0.2.14/src/gui.c000664 001750 001750 00000167224 12561325524 014265 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gui.h" #include "about.h" #include "i18n.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "calendar.h" #include "calendar_notes.h" #include "calendar_fullyear.h" #include "calendar_widget.h" #include "calendar_jumpto.h" #include "calendar_calc.h" #ifdef HAVE_LIBICAL #include "calendar_ical.h" #endif /* HAVE_LIBICAL */ #include "calendar_utils.h" #include "notes.h" #include "notes_items.h" #include "tasks.h" #include "tasks_items.h" #include "tasks_utils.h" #include "notes_items.h" #include "contacts.h" #include "contacts_items.h" #include "options_prefs.h" #include "check_events.h" #include "stock_icons.h" #include "preferences_gui.h" #include "calendar_preferences_gui.h" #include "config.h" #ifdef HAVE_GTKSPELL #include #endif /* HAVE_GTKSPELL */ #include "gui_icon.h" struct osmo_prefs config; /*------------------------------------------------------------------------------*/ void gui_quit_osmo_cb (GtkComboBox *widget, GUI *appGUI) { gui_quit_osmo (appGUI); } /*------------------------------------------------------------------------------*/ void gui_save_data_and_run_command (gchar *command, GUI *appGUI) { gui_save_all_data (appGUI); utl_run_command (command, FALSE); } /*------------------------------------------------------------------------------*/ void gui_save_all_data (GUI *appGUI) { cal_write_notes (appGUI); #ifdef TASKS_ENABLED store_task_columns_info (appGUI); write_tasks_entries (appGUI); #endif /* TASKS_ENABLED */ #ifdef HAVE_LIBICAL write_ical_entries (appGUI); ics_calendar_refresh (appGUI); #endif /* HAVE_LIBICAL */ #ifdef CONTACTS_ENABLED store_contact_columns_info (appGUI); write_contacts_entries (appGUI); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED store_note_columns_info (appGUI); write_notes_entries (appGUI); #endif /* NOTES_ENABLED */ prefs_write_config (appGUI); } /*------------------------------------------------------------------------------*/ void gui_toggle_window_visibility (GUI *appGUI) { if (appGUI->no_tray == FALSE) { appGUI->window_visible = !appGUI->window_visible; if (appGUI->window_visible == TRUE) { gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_window_set_default_size (GTK_WINDOW(appGUI->main_window), config.window_size_x, config.window_size_y); gtk_window_move (GTK_WINDOW (appGUI->main_window), config.window_x, config.window_y); gtk_widget_show (appGUI->main_window); } else { if (appGUI->calendar_only == FALSE) { gui_save_all_data (appGUI); gtk_window_get_size (GTK_WINDOW(appGUI->main_window), &config.window_size_x, &config.window_size_y); gdk_window_get_root_origin (GDK_WINDOW(appGUI->main_window->window), &config.window_x, &config.window_y); } gtk_widget_hide (appGUI->main_window); } } } /*------------------------------------------------------------------------------*/ void gui_toggle_fullscreen (GUI *appGUI) { if (config.fullscreen == FALSE) { gtk_window_fullscreen (GTK_WINDOW(appGUI->main_window)); config.fullscreen = TRUE; } else { gtk_window_unfullscreen (GTK_WINDOW(appGUI->main_window)); config.fullscreen = FALSE; } } /*------------------------------------------------------------------------------*/ void gui_quit_osmo (GUI *appGUI) { #ifdef NOTES_ENABLED if (appGUI->nte->editor_active == TRUE) { editor_close_cb (NULL, appGUI); } #endif /* NOTES_ENABLED */ if (appGUI->osmo_trayicon != NULL) { gtk_status_icon_set_visible (appGUI->osmo_trayicon, FALSE); } if (appGUI->calendar_only == FALSE) { if (appGUI->current_tab == PAGE_CALENDAR #ifdef TASKS_ENABLED || appGUI->current_tab == PAGE_TASKS #endif /* TASKS ENABLED */ #if defined(NOTES_ENABLED) && defined(CONTACTS_ENABLED) || appGUI->current_tab == PAGE_CONTACTS || appGUI->current_tab == PAGE_NOTES) { #elif CONTACTS_ENABLED || appGUI->current_tab == PAGE_CONTACTS) { #else ) { #endif /* NOTES_ENABLED && CONTACTS_ENABLED */ config.latest_tab = appGUI->current_tab; } #ifdef CONTACTS_ENABLED config.find_mode = gtk_combo_box_get_active (GTK_COMBO_BOX(appGUI->cnt->contacts_find_combobox)); #endif /* CONTACTS_ENABLED */ #ifdef TASKS_ENABLED config.current_category_in_tasks = gtk_combo_box_get_active (GTK_COMBO_BOX(appGUI->tsk->cf_combobox)); #endif /* TASKS_ENABLED */ #ifdef NOTES_ENABLED config.current_category_in_notes = gtk_combo_box_get_active (GTK_COMBO_BOX(appGUI->nte->cf_combobox)); #endif /* NOTES_ENABLED */ gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), FALSE); if (appGUI->window_visible == TRUE) { if (!config.fullscreen) { gtk_window_get_size (GTK_WINDOW(appGUI->main_window), &config.window_size_x, &config.window_size_y); } } } if (appGUI->window_visible == TRUE) { gdk_window_get_root_origin (GDK_WINDOW(appGUI->main_window->window), &config.window_x, &config.window_y); } pango_font_description_free(appGUI->cal->fd_day_name_font); pango_font_description_free(appGUI->cal->fd_cal_font); pango_font_description_free(appGUI->cal->fd_notes_font); if (appGUI->calendar_only == FALSE) { config.lastrun_date = utl_date_get_current_julian (); config.lastrun_time = utl_time_get_current_seconds (); gui_save_all_data (appGUI); #ifdef HAVE_LIBNOTIFY #ifdef TASKS_ENABLED free_notifications_list (appGUI); #endif /* TASKS_ENABLED */ #endif /* HAVE_LIBNOTIFY */ cal_free_notes_list (appGUI); } utl_gui_url_remove_links (&appGUI->about_links_list, &appGUI->about_link_index); gtk_main_quit (); } /*------------------------------------------------------------------------------*/ void gui_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } else { gui_quit_osmo (appGUI); } } /*------------------------------------------------------------------------------*/ void gui_activate_find_fields (GUI *appGUI) { #ifdef NOTES_ENABLED if (appGUI->current_tab == PAGE_NOTES) { gtk_widget_grab_focus (GTK_WIDGET(appGUI->nte->notes_find_entry)); } #endif /* NOTES_ENABLED */ #ifdef TASKS_ENABLED if (appGUI->current_tab == PAGE_TASKS) { gtk_widget_grab_focus (GTK_WIDGET(appGUI->tsk->tasks_find_entry)); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (appGUI->current_tab == PAGE_CONTACTS) { gtk_widget_grab_focus (GTK_WIDGET(appGUI->cnt->contacts_find_entry)); } #endif /* CONTACTS_ENABLED */ } /*------------------------------------------------------------------------------*/ gint get_first_active_page (GUI *appGUI) { if (!config.hide_calendar) return PAGE_CALENDAR; #ifdef TASKS_ENABLED if (!config.hide_tasks) return PAGE_TASKS; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (!config.hide_contacts) return PAGE_CONTACTS; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED if (!config.hide_notes) return PAGE_NOTES; #endif /* NOTES_ENABLED */ return PAGE_CALENDAR; } /*------------------------------------------------------------------------------*/ void set_visible_page (gint page, gboolean dir, GUI *appGUI) { gboolean flag; gint n = 1; if (dir == FALSE) n = -1; page += n; flag = TRUE; while (flag) { flag = FALSE; switch (page) { case PAGE_CALENDAR: if (config.hide_calendar) { page += n; flag = TRUE; } break; #ifdef TASKS_ENABLED case PAGE_TASKS: if (config.hide_tasks) { page += n; flag = TRUE; } break; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED case PAGE_CONTACTS: if (config.hide_contacts) { page += n; flag = TRUE; } break; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED case PAGE_NOTES: if (config.hide_notes) { page += n; flag = TRUE; } break; #endif /* NOTES_ENABLED */ } } if (dir == FALSE) { appGUI->current_tab = (page < 0) ? appGUI->number_of_tabs-1:page; } else { appGUI->current_tab = (page == appGUI->number_of_tabs) ? get_first_active_page(appGUI):page; } gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), appGUI->current_tab); gui_activate_find_fields (appGUI); } /*------------------------------------------------------------------------------*/ static gint get_visible_tabs (GUI *appGUI) { gint i = 0; if (!config.hide_calendar) i++; #ifdef TASKS_ENABLED if (!config.hide_tasks) i++; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (!config.hide_contacts) i++; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED if (!config.hide_notes) i++; #endif /* NOTES_ENABLED */ return i; } /*------------------------------------------------------------------------------*/ static void select_tab (gint tab, GUI *appGUI) { gint i, n = 0; if (tab >= get_visible_tabs (appGUI)) return; for (i = PAGE_CALENDAR; i < NUMBER_OF_TABS; i++) { if (i == PAGE_CALENDAR && !config.hide_calendar) n++; #ifdef TASKS_ENABLED if (i == PAGE_TASKS && !config.hide_tasks) n++; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (i == PAGE_CONTACTS && !config.hide_contacts) n++; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED if (i == PAGE_NOTES && !config.hide_notes) n++; #endif /* NOTES_ENABLED */ if (n == tab + 1) { gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), i); break; } } gui_activate_find_fields (appGUI); } /*------------------------------------------------------------------------------*/ void key_counter_add (gint value, GUI *appGUI) { GtkWidget *dialog = NULL; gchar tmpbuff[BUFFER_SIZE]; appGUI->key_counter += value; if (appGUI->key_counter == 57) { g_snprintf (tmpbuff, BUFFER_SIZE, "%d times!", config.run_counter); dialog = gtk_dialog_new_with_buttons ("Counter", GTK_WINDOW(appGUI->main_window), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, OSMO_STOCK_BUTTON_CLOSE, GTK_RESPONSE_NO, NULL); utl_gui_fill_iconlabel (dialog, OSMO_STOCK_INFO_HELP, tmpbuff); gtk_widget_show (dialog); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } else if (appGUI->key_counter == 41) { appGUI->cal->datecal_bio = TRUE; } } /*------------------------------------------------------------------------------*/ gint key_press_cb (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { gint page; page = gtk_notebook_get_current_page (GTK_NOTEBOOK(appGUI->notebook)); /************************************************************************/ /*** CALENDAR PAGE ***/ /************************************************************************/ if(page == PAGE_CALENDAR) { if (!config.day_notes_visible) { switch (event->keyval) { case GDK_Left: calendar_btn_prev_day(appGUI); return TRUE; case GDK_Right: calendar_btn_next_day(appGUI); return TRUE; case GDK_Up: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Up */ utl_gui_sw_vscrollbar_move_position (appGUI->cal->day_info_scrolledwindow, SW_MOVE_UP); return TRUE; } else { calendar_btn_prev_week(appGUI); return TRUE; } return FALSE; case GDK_Down: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Up */ utl_gui_sw_vscrollbar_move_position (appGUI->cal->day_info_scrolledwindow, SW_MOVE_DOWN); return TRUE; } else { calendar_btn_next_week(appGUI); return TRUE; } return FALSE; case GDK_Home: calendar_btn_prev_year(appGUI); return TRUE; case GDK_End: calendar_btn_next_year(appGUI); return TRUE; case GDK_Return: if (appGUI->calendar_only == FALSE) { gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), !gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button))); } return TRUE; case GDK_space: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Space */ config.enable_day_mark = !config.enable_day_mark; cal_refresh_marks (appGUI); cal_set_day_info (appGUI); update_aux_calendars (appGUI); return TRUE; } else { calendar_set_today (appGUI); return TRUE; } case GDK_Delete: if (appGUI->calendar_only == FALSE) { calendar_clear_text_cb (NULL, appGUI); } return TRUE; case GDK_g: calendar_create_jumpto_window (appGUI); return TRUE; case GDK_f: calendar_create_fullyear_window (appGUI); return TRUE; case GDK_c: calendar_create_color_selector_window (TRUE, appGUI); key_counter_add (13, appGUI); return TRUE; case GDK_d: calendar_create_calc_window (appGUI); return TRUE; case GDK_a: if (!config.gui_layout) { gtk_expander_set_expanded (GTK_EXPANDER (appGUI->cal->aux_cal_expander), !gtk_expander_get_expanded (GTK_EXPANDER (appGUI->cal->aux_cal_expander))); } key_counter_add (5, appGUI); return TRUE; case GDK_b: if (appGUI->calendar_only == FALSE) { cal_notes_browser (appGUI); } key_counter_add (11, appGUI); return TRUE; case GDK_i: key_counter_add (9, appGUI); return TRUE; case GDK_o: key_counter_add (21, appGUI); return TRUE; } } switch (event->keyval) { case GDK_Escape: if (appGUI->calendar_only == FALSE) { if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button)) == FALSE) { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } else { gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(appGUI->cal->notes_button), FALSE); } } return TRUE; case GDK_Left: if (event->state & GDK_MOD1_MASK) { /* ALT + Left */ calendar_btn_prev_day(appGUI); return TRUE; } return FALSE; case GDK_Right: if (event->state & GDK_MOD1_MASK) { /* ALT + Right */ calendar_btn_next_day(appGUI); return TRUE; } return FALSE; case GDK_Up: if (event->state & GDK_MOD1_MASK) { /* ALT + Up */ calendar_btn_prev_week(appGUI); return TRUE; } return FALSE; case GDK_Down: if (event->state & GDK_MOD1_MASK) { /* ALT + Down */ calendar_btn_next_week(appGUI); return TRUE; } return FALSE; case GDK_b: if (event->state & GDK_CONTROL_MASK) { /* CTRL + b */ g_signal_emit_by_name(G_OBJECT(appGUI->cal->ta_bold_button), "clicked"); return TRUE; } return FALSE; case GDK_i: if (event->state & GDK_CONTROL_MASK) { /* CTRL + i */ g_signal_emit_by_name(G_OBJECT(appGUI->cal->ta_italic_button), "clicked"); return TRUE; } return FALSE; case GDK_m: if (event->state & GDK_CONTROL_MASK) { /* CTRL + m */ g_signal_emit_by_name(G_OBJECT(appGUI->cal->ta_highlight_button), "clicked"); return TRUE; } return FALSE; case GDK_u: if (event->state & GDK_CONTROL_MASK) { /* CTRL + u */ g_signal_emit_by_name(G_OBJECT(appGUI->cal->ta_underline_button), "clicked"); return TRUE; } return FALSE; case GDK_t: if (event->state & GDK_CONTROL_MASK) { /* CTRL + t */ g_signal_emit_by_name(G_OBJECT(appGUI->cal->ta_strikethrough_button), "clicked"); return TRUE; } return FALSE; } } #ifdef TASKS_ENABLED /************************************************************************/ /*** TASKS PAGE ***/ /************************************************************************/ if(page == PAGE_TASKS) { switch (event->keyval) { case GDK_Escape: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } else { if (strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->tsk->tasks_find_entry)))) { gtk_entry_set_text(GTK_ENTRY(appGUI->tsk->tasks_find_entry), ""); } else { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } } return TRUE; case GDK_Return: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (event->state & GDK_CONTROL_MASK) { /* CTRL + Enter */ if (gtk_tree_selection_count_selected_rows (appGUI->tsk->tasks_list_selection) == 1) { tasks_add_edit_dialog_show (TRUE, 0, utl_time_get_current_seconds (), appGUI); return TRUE; } } return TRUE; } else { gtk_widget_grab_focus(GTK_WIDGET(appGUI->tsk->tasks_list)); return TRUE; } case GDK_space: /* don't use space key for marking task as done */ if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { return TRUE; } else { return FALSE; } case GDK_h: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (event->state & GDK_CONTROL_MASK) { /* CTRL + h */ config.hide_completed = !config.hide_completed; gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(appGUI->tsk->tasks_filter)); } return TRUE; } return FALSE; case GDK_Delete: if (gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (gtk_tree_selection_count_selected_rows(appGUI->tsk->tasks_list_selection) > 0) { tasks_remove_dialog_show(appGUI); return TRUE; } } return FALSE; case GDK_Insert: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { tasks_add_edit_dialog_show (FALSE, 0, utl_time_get_current_seconds (), appGUI); return TRUE; } return FALSE; case GDK_Left: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (appGUI->tsk->filter_index > 0) { appGUI->tsk->filter_index--; gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->tsk->cf_combobox), appGUI->tsk->filter_index); } return TRUE; } return FALSE; case GDK_Right: if(gtk_widget_is_focus(appGUI->tsk->tasks_find_entry) == FALSE) { if (appGUI->tsk->filter_index < utl_gui_get_combobox_items(GTK_COMBO_BOX(appGUI->tsk->cf_combobox))-1) { appGUI->tsk->filter_index++; gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->tsk->cf_combobox), appGUI->tsk->filter_index); } return TRUE; } return FALSE; case GDK_y: key_counter_add (26, appGUI); return FALSE; case GDK_l: if (event->state & GDK_CONTROL_MASK) { /* CTRL + l */ gtk_widget_grab_focus(GTK_WIDGET(appGUI->tsk->tasks_find_entry)); return TRUE; } return FALSE; } } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED /************************************************************************/ /*** CONTACTS PAGE ***/ /************************************************************************/ if(page == PAGE_CONTACTS) { switch (event->keyval) { case GDK_Escape: if (gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } else { if (strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->cnt->contacts_find_entry)))) { gtk_entry_set_text(GTK_ENTRY(appGUI->cnt->contacts_find_entry), ""); } else { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } } return TRUE; case GDK_Return: if(gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { if (event->state & GDK_CONTROL_MASK) { /* CTRL + Enter */ if (gtk_tree_selection_count_selected_rows (appGUI->cnt->contacts_list_selection) == 1) { contacts_add_edit_dialog_show (TRUE, appGUI); return TRUE; } } if (gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { utl_gui_sw_vscrollbar_move_position (appGUI->cnt->contacts_panel_scrolledwindow, SW_MOVE_DOWN); return TRUE; } return TRUE; } else { gtk_widget_grab_focus(GTK_WIDGET(appGUI->cnt->contacts_list)); return TRUE; } return FALSE; case GDK_BackSpace: if(gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { utl_gui_sw_vscrollbar_move_position (appGUI->cnt->contacts_panel_scrolledwindow, SW_MOVE_UP); return TRUE; } return FALSE; case GDK_Delete: if(gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { if (gtk_tree_selection_count_selected_rows(appGUI->cnt->contacts_list_selection) > 0) { contacts_remove_dialog_show(appGUI); return TRUE; } } return FALSE; case GDK_Insert: if(gtk_widget_is_focus(appGUI->cnt->contacts_find_entry) == FALSE) { contacts_add_edit_dialog_show (FALSE, appGUI); return TRUE; } return FALSE; case GDK_Down: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Down */ if (config.find_mode < CONTACTS_FF_ALL_FIELDS) { config.find_mode++; } gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), config.find_mode); return TRUE; } return FALSE; case GDK_Up: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Up */ if (config.find_mode > CONTACTS_FF_FIRST_NAME) { config.find_mode--; } gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), config.find_mode); return TRUE; } return FALSE; case GDK_l: if (event->state & GDK_CONTROL_MASK) { /* CTRL + l */ gtk_widget_grab_focus(GTK_WIDGET(appGUI->cnt->contacts_find_entry)); return TRUE; } return FALSE; } } #endif /* CONTACTS_ENABLED */ /************************************************************************/ /*** NOTES PAGE ***/ /************************************************************************/ #ifdef NOTES_ENABLED if(page == PAGE_NOTES) { if (appGUI->nte->editor_active == FALSE) { /* SELECTOR */ switch (event->keyval) { case GDK_Return: if(gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { if (gtk_tree_selection_count_selected_rows (appGUI->nte->notes_list_selection) == 1) { if (event->state & GDK_CONTROL_MASK) { /* CTRL + Enter */ notes_edit_dialog_show(appGUI->nte->notes_list, appGUI->nte->notes_filter, appGUI); } else { notes_enter_password (appGUI); } return TRUE; } return FALSE; } else { gtk_widget_grab_focus(GTK_WIDGET(appGUI->nte->notes_list)); return TRUE; } case GDK_Delete: if (gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { if (gtk_tree_selection_count_selected_rows(appGUI->nte->notes_list_selection) > 0) { notes_remove_dialog_show(appGUI); return TRUE; } } return FALSE; case GDK_Insert: if(gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { notes_add_entry (appGUI); return TRUE; } return FALSE; case GDK_Left: if(gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { if (appGUI->nte->filter_index > 0) { appGUI->nte->filter_index--; gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->nte->cf_combobox), appGUI->nte->filter_index); } return TRUE; } return FALSE; case GDK_Right: if(gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { if (appGUI->nte->filter_index < utl_gui_get_combobox_items(GTK_COMBO_BOX(appGUI->nte->cf_combobox))-1) { appGUI->nte->filter_index++; gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->nte->cf_combobox), appGUI->nte->filter_index); } return TRUE; } return FALSE; case GDK_Escape: if(gtk_widget_is_focus(appGUI->nte->notes_find_entry) == FALSE) { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } else { if (strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->notes_find_entry)))) { gtk_entry_set_text(GTK_ENTRY(appGUI->nte->notes_find_entry), ""); } else { if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } } } return TRUE; case GDK_l: if (event->state & GDK_CONTROL_MASK) { /* CTRL + l */ gtk_widget_grab_focus(GTK_WIDGET(appGUI->nte->notes_find_entry)); return TRUE; } return FALSE; } } else { /* EDITOR */ switch (event->keyval) { case GDK_w: if (event->state & GDK_CONTROL_MASK) { /* CTRL + w */ editor_close_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_Escape: if (appGUI->nte->find_hbox_visible == FALSE) { editor_close_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_b: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + b */ g_signal_emit_by_name(G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/bold")), "clicked"); return TRUE; } return FALSE; case GDK_i: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + i */ g_signal_emit_by_name(G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/italic")), "clicked"); return TRUE; } return FALSE; case GDK_m: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + m */ g_signal_emit_by_name(G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/mark_color")), "clicked"); return TRUE; } return FALSE; case GDK_u: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + u */ g_signal_emit_by_name(G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/underline")), "clicked"); return TRUE; } return FALSE; case GDK_t: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + t */ g_signal_emit_by_name(G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/strike")), "clicked"); return TRUE; } return FALSE; case GDK_s: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + s */ editor_save_buffer_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_f: if (event->state & GDK_CONTROL_MASK) { /* CTRL + f */ editor_find_text_show_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_n: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + n */ clear_text_attributes_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_o: if ((event->state & GDK_CONTROL_MASK) && !appGUI->nte->note_read_only) { /* CTRL + o */ open_url_links_cb (NULL, appGUI); return TRUE; } return FALSE; case GDK_period: if ((event->state & GDK_CONTROL_MASK)) { /* CTRL + . */ text_info_cb (NULL, appGUI); return TRUE; } return FALSE; } } } #endif /* NOTES_ENABLED */ /************************************************************************/ /*** GLOBAL SHORTCUTS ***/ /************************************************************************/ switch (event->keyval) { case GDK_Escape: if (config.enable_systray == TRUE && appGUI->no_tray == FALSE && appGUI->calendar_only == FALSE) { gui_toggle_window_visibility (appGUI); } return FALSE; case GDK_q: if (event->state & GDK_CONTROL_MASK) { /* CTRL + Q */ gui_quit_osmo (appGUI); } return FALSE; case GDK_Page_Up: #ifdef NOTES_ENABLED if (appGUI->nte->editor_active == FALSE) { #endif /* NOTES_ENABLED */ if (event->state & GDK_CONTROL_MASK) { /* CTRL + Page_Up */ set_visible_page(appGUI->current_tab, FALSE, appGUI); return TRUE; } else if (page == PAGE_CALENDAR) { if (config.day_notes_visible) { if (event->state & GDK_MOD1_MASK) { /* ALT + Page_Up */ calendar_btn_prev_month(appGUI); return TRUE; } } else { calendar_btn_prev_month(appGUI); return TRUE; } } #ifdef NOTES_ENABLED } #endif /* NOTES_ENABLED */ return FALSE; case GDK_Page_Down: #ifdef NOTES_ENABLED if (appGUI->nte->editor_active == FALSE) { #endif /* NOTES_ENABLED */ if (event->state & GDK_CONTROL_MASK) { /* CTRL + Page_Down */ set_visible_page(appGUI->current_tab, TRUE, appGUI); return TRUE; } else if (page == PAGE_CALENDAR) { if (config.day_notes_visible) { if (event->state & GDK_MOD1_MASK) { /* ALT + Page_Down */ calendar_btn_next_month(appGUI); return TRUE; } } else { calendar_btn_next_month(appGUI); return TRUE; } } #ifdef NOTES_ENABLED } #endif /* NOTES_ENABLED */ return FALSE; case GDK_F1: select_tab (0, appGUI); return TRUE; case GDK_1: if ((event->state & GDK_MOD1_MASK)) { /* ALT + 1 */ #if defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) if (event->state & GDK_CONTROL_MASK) { /* CTRL + ALT + 1 */ opt_hide_modules (!config.hide_calendar, config.hide_tasks, config.hide_contacts, config.hide_notes, FALSE, appGUI); select_tab (0, appGUI); } else { #endif select_tab (0, appGUI); #if defined(TASKS_ENABLED) || defined(CONTACTS_ENABLED) || defined(NOTES_ENABLED) } #endif return TRUE; } return FALSE; case GDK_F2: select_tab (1, appGUI); return TRUE; case GDK_2: if ((event->state & GDK_MOD1_MASK)) { /* ALT + 2 */ #ifdef TASKS_ENABLED if (event->state & GDK_CONTROL_MASK) { /* CTRL + ALT + 2 */ opt_hide_modules (config.hide_calendar, !config.hide_tasks, config.hide_contacts, config.hide_notes, FALSE, appGUI); select_tab (0, appGUI); } else { #endif /* TASKS_ENABLED */ select_tab (1, appGUI); #ifdef TASKS_ENABLED } #endif /* TASKS_ENABLED */ return TRUE; } return FALSE; case GDK_F3: select_tab (2, appGUI); return TRUE; case GDK_3: if ((event->state & GDK_MOD1_MASK)) { /* ALT + 3 */ #ifdef CONTACTS_ENABLED if (event->state & GDK_CONTROL_MASK) { /* CTRL + ALT + 3 */ opt_hide_modules (config.hide_calendar, config.hide_tasks, !config.hide_contacts, config.hide_notes, FALSE, appGUI); select_tab (0, appGUI); } else { #endif /* CONTACTS_ENABLED */ select_tab (2, appGUI); #ifdef CONTACTS_ENABLED } #endif /* CONTACTS_ENABLED */ return TRUE; } return FALSE; case GDK_F4: select_tab (3, appGUI); return TRUE; case GDK_4: if ((event->state & GDK_MOD1_MASK)) { /* ALT + 4 */ #ifdef NOTES_ENABLED if (event->state & GDK_CONTROL_MASK) { /* CTRL + ALT + 4 */ opt_hide_modules (config.hide_calendar, config.hide_tasks, config.hide_contacts, !config.hide_notes, FALSE, appGUI); select_tab (0, appGUI); } else { #endif /* NOTES_ENABLED */ select_tab (3, appGUI); #ifdef NOTES_ENABLED } #endif /* NOTES_ENABLED */ return TRUE; } return FALSE; case GDK_F5: gtk_widget_show (GTK_WIDGET(opt_create_preferences_window (appGUI))); return TRUE; case GDK_F6: gtk_widget_show (GTK_WIDGET(opt_create_about_window (appGUI))); return TRUE; case GDK_F11: /* full screen */ gui_toggle_fullscreen (appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void notebook_sw_cb (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data) { GUI *appGUI = (GUI *)user_data; #ifdef NOTES_ENABLED if (appGUI->nte->editor_active == TRUE) { editor_close_cb (NULL, appGUI); } #endif /* NOTES_ENABLED */ appGUI->current_tab = page_num; } /*------------------------------------------------------------------------------*/ #if (GTK_CHECK_VERSION(2,16,0)) gboolean trayicon_clicked_cb (GtkStatusIcon *status_icon, GdkEventButton *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (event->button == 1) { /* LMB */ gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gui_toggle_window_visibility (appGUI); return TRUE; } else if (event->button == 2) { /* MMB */ gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); return TRUE; } return FALSE; } #else void trayicon_clicked_cb (GtkStatusIcon *status_icon, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gui_toggle_window_visibility (appGUI); } #endif /* GTK_CHECK_VERSION */ /*------------------------------------------------------------------------------*/ void trayicon_popup_cb (GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_menu_popup(GTK_MENU(appGUI->trayicon_popup_menu), NULL, NULL, NULL, NULL, button, activate_time); } void systray_popup_menu_quit_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *)user_data; gui_quit_osmo (appGUI); } void systray_popup_menu_show_calendar_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } gtk_window_deiconify (GTK_WINDOW(appGUI->main_window)); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_CALENDAR); } #ifdef TASKS_ENABLED void systray_popup_menu_show_tasks_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } gtk_window_deiconify (GTK_WINDOW(appGUI->main_window)); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_TASKS); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED void systray_popup_menu_show_contacts_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } gtk_window_deiconify (GTK_WINDOW(appGUI->main_window)); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_CONTACTS); } #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED void systray_popup_menu_show_notes_selected_cb (gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } gtk_window_deiconify (GTK_WINDOW(appGUI->main_window)); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->notebook), PAGE_NOTES); } #endif /* NOTES_ENABLED */ void systray_popup_menu_show_options_selected_cb (GUI *appGUI) { if (appGUI->window_visible == FALSE) { gtk_widget_show (appGUI->main_window); appGUI->window_visible = TRUE; } gtk_window_deiconify (GTK_WINDOW (appGUI->main_window)); gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); gtk_status_icon_set_blinking (appGUI->osmo_trayicon, FALSE); gtk_widget_show (opt_create_preferences_window (appGUI)); } /*------------------------------------------------------------------------------*/ void gui_systray_tooltip_update (GUI *appGUI) { gchar *tstr, *dstr, *text; if (appGUI->osmo_trayicon == NULL) return; dstr = utl_date_print_j (utl_date_get_current_julian (), DATE_FULL, config.override_locale_settings); tstr = utl_time_print_default (utl_time_get_current_seconds (), FALSE); text = g_strdup_printf ("%s, %s", dstr, tstr); gtk_status_icon_set_tooltip (appGUI->osmo_trayicon, text); g_free (tstr); g_free (dstr); g_free (text); } /*------------------------------------------------------------------------------*/ void gui_systray_update_icon (GUI *appGUI) { guint32 julian_day; gboolean flag = FALSE; if (appGUI->window_visible == TRUE) return; julian_day = utl_date_get_current_julian (); if (config.ignore_day_note_events == FALSE) { if (cal_check_note (julian_day, appGUI) == TRUE) { gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NOTE); flag = TRUE; } } #ifdef TASKS_ENABLED if (tsk_check_tasks (julian_day, julian_day, STATE_NONE, appGUI)) { gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_TASK); flag = TRUE; } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED if (check_contacts(julian_day, appGUI) == TRUE) { gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_BIRTHDAY); flag = TRUE; } #endif /* CONTACTS_ENABLED */ if (flag == FALSE) { gtk_status_icon_set_from_stock (appGUI->osmo_trayicon, OSMO_STOCK_SYSTRAY_NORMAL); } else { if (config.blink_on_events) { gtk_status_icon_set_blinking (appGUI->osmo_trayicon, TRUE); } } } /*------------------------------------------------------------------------------*/ void gui_systray_initialize (GUI *appGUI) { GtkWidget *menu_entry; GtkWidget *systray_menu_separator; if (appGUI->calendar_only == TRUE) { return; } appGUI->trayicon_popup_menu = gtk_menu_new(); appGUI->trayicon_menu_calendar_item = gtk_image_menu_item_new_with_label (_("Show calendar")); gtk_menu_shell_append (GTK_MENU_SHELL(appGUI->trayicon_popup_menu), appGUI->trayicon_menu_calendar_item); g_signal_connect_swapped (G_OBJECT(appGUI->trayicon_menu_calendar_item), "activate", G_CALLBACK(systray_popup_menu_show_calendar_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (appGUI->trayicon_menu_calendar_item), gtk_image_new_from_stock(OSMO_STOCK_SYSTRAY_MENU_CALENDAR, GTK_ICON_SIZE_MENU)); if (config.hide_calendar == FALSE) { gtk_widget_show (appGUI->trayicon_menu_calendar_item); } #ifdef TASKS_ENABLED appGUI->trayicon_menu_tasks_item = gtk_image_menu_item_new_with_label (_("Show tasks")); gtk_menu_shell_append (GTK_MENU_SHELL(appGUI->trayicon_popup_menu), appGUI->trayicon_menu_tasks_item); g_signal_connect_swapped (G_OBJECT(appGUI->trayicon_menu_tasks_item), "activate", G_CALLBACK(systray_popup_menu_show_tasks_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (appGUI->trayicon_menu_tasks_item), gtk_image_new_from_stock(OSMO_STOCK_SYSTRAY_MENU_TASKS, GTK_ICON_SIZE_MENU)); if (config.hide_tasks == FALSE) { gtk_widget_show (appGUI->trayicon_menu_tasks_item); } #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED appGUI->trayicon_menu_contacts_item = gtk_image_menu_item_new_with_label (_("Show contacts")); gtk_menu_shell_append (GTK_MENU_SHELL(appGUI->trayicon_popup_menu), appGUI->trayicon_menu_contacts_item); g_signal_connect_swapped (G_OBJECT(appGUI->trayicon_menu_contacts_item), "activate", G_CALLBACK(systray_popup_menu_show_contacts_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (appGUI->trayicon_menu_contacts_item), gtk_image_new_from_stock(OSMO_STOCK_SYSTRAY_MENU_CONTACTS, GTK_ICON_SIZE_MENU)); if (config.hide_contacts == FALSE) { gtk_widget_show (appGUI->trayicon_menu_contacts_item); } #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED appGUI->trayicon_menu_notes_item = gtk_image_menu_item_new_with_label (_("Show notes")); gtk_menu_shell_append (GTK_MENU_SHELL(appGUI->trayicon_popup_menu), appGUI->trayicon_menu_notes_item); g_signal_connect_swapped (G_OBJECT(appGUI->trayicon_menu_notes_item), "activate", G_CALLBACK(systray_popup_menu_show_notes_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (appGUI->trayicon_menu_notes_item), gtk_image_new_from_stock(OSMO_STOCK_SYSTRAY_MENU_NOTES, GTK_ICON_SIZE_MENU)); if (config.hide_notes == FALSE) { gtk_widget_show (appGUI->trayicon_menu_notes_item); } #endif /* NOTES_ENABLED */ systray_menu_separator = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->trayicon_popup_menu), systray_menu_separator); gtk_widget_show(systray_menu_separator); menu_entry = gtk_image_menu_item_new_with_label (_("Show options")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->trayicon_popup_menu), menu_entry); g_signal_connect_swapped(G_OBJECT(menu_entry), "activate", G_CALLBACK(systray_popup_menu_show_options_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_entry), gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU)); gtk_widget_show(menu_entry); systray_menu_separator = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->trayicon_popup_menu), systray_menu_separator); gtk_widget_show(systray_menu_separator); menu_entry = gtk_image_menu_item_new_with_label (_("Quit")); gtk_menu_shell_append(GTK_MENU_SHELL(appGUI->trayicon_popup_menu), menu_entry); g_signal_connect_swapped(G_OBJECT(menu_entry), "activate", G_CALLBACK(systray_popup_menu_quit_selected_cb), appGUI); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_entry), gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_MENU)); gtk_widget_show(menu_entry); /* create tray icon */ appGUI->osmo_trayicon = gtk_status_icon_new_from_stock(OSMO_STOCK_SYSTRAY_NORMAL); #if (GTK_CHECK_VERSION(2,16,0)) g_signal_connect(G_OBJECT(appGUI->osmo_trayicon), "button-release-event", G_CALLBACK(trayicon_clicked_cb), appGUI); #else g_signal_connect(G_OBJECT(appGUI->osmo_trayicon), "activate", G_CALLBACK(trayicon_clicked_cb), appGUI); #endif /* GTK_CHECK_VERSION */ g_signal_connect(G_OBJECT(appGUI->osmo_trayicon), "popup-menu", G_CALLBACK(trayicon_popup_cb), appGUI); appGUI->window_visible = TRUE; if (config.enable_systray == TRUE) { gtk_status_icon_set_visible (appGUI->osmo_trayicon, TRUE); while (g_main_context_iteration (NULL, FALSE)); if (gtk_status_icon_is_embedded (appGUI->osmo_trayicon) == FALSE) { appGUI->no_tray = TRUE; gtk_status_icon_set_visible (appGUI->osmo_trayicon, FALSE); gtk_widget_show(appGUI->main_window); } else { appGUI->no_tray = FALSE; gtk_status_icon_set_visible (appGUI->osmo_trayicon, TRUE); if (config.start_minimised_in_systray) { appGUI->window_visible = FALSE; } else { gtk_widget_show (appGUI->main_window); } } } else { gtk_status_icon_set_visible (appGUI->osmo_trayicon, FALSE); gtk_widget_show (appGUI->main_window); } gui_systray_update_icon (appGUI); gui_systray_tooltip_update (appGUI); } /*------------------------------------------------------------------------------*/ gboolean gui_create_window (GUI *appGUI) { GdkScreen *screen; gint sw, sh; gint fdSTDERR, fdSTDERRn; GdkPixbuf *icon; /* disable STDERR temporary - to suppress messages from webkit */ fdSTDERR = dup (STDERR_FILENO); fdSTDERRn = open("/dev/null", O_WRONLY); dup2 (fdSTDERRn, STDERR_FILENO); close (fdSTDERRn); appGUI->all_pages_added = FALSE; appGUI->cal->fd_day_name_font = pango_font_description_from_string(config.day_name_font); appGUI->cal->fd_cal_font = pango_font_description_from_string(config.calendar_font); appGUI->cal->fd_notes_font = pango_font_description_from_string(config.notes_font); appGUI->main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->main_window), "Osmo " VERSION_MAJOR "." VERSION_MINOR "." VERSION_MICRO); gtk_widget_set_events(appGUI->main_window, GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK); icon = gdk_pixbuf_new_from_inline(-1, osmo_icon, FALSE, NULL); gtk_window_set_icon (GTK_WINDOW(appGUI->main_window), icon); g_object_unref(icon); screen = gdk_screen_get_default (); if (screen != NULL) { sw = gdk_screen_get_width (screen); sh = gdk_screen_get_height (screen); if (config.window_x >= sw || config.window_x < 0) config.window_x = 0; if (config.window_y >= sh || config.window_y < 0) config.window_y = 0; } gtk_window_move (GTK_WINDOW (appGUI->main_window), config.window_x, config.window_y); gtk_widget_realize (appGUI->main_window); if (appGUI->calendar_only == FALSE) { gtk_window_set_default_size (GTK_WINDOW(appGUI->main_window), config.window_size_x, config.window_size_y); } else { gtk_window_set_default_size (GTK_WINDOW(appGUI->main_window), 500, -1); } gtk_window_set_resizable (GTK_WINDOW (appGUI->main_window), TRUE); g_signal_connect (G_OBJECT (appGUI->main_window), "delete-event", G_CALLBACK(gui_window_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->main_window), "key_press_event", G_CALLBACK (key_press_cb), appGUI); osmo_register_stock_icons (); utl_gui_url_initialize (appGUI); appGUI->notebook = gtk_notebook_new (); GTK_WIDGET_UNSET_FLAGS (appGUI->notebook, GTK_CAN_FOCUS); gtk_widget_show (appGUI->notebook); gtk_notebook_set_tab_pos (GTK_NOTEBOOK(appGUI->notebook), config.tabs_position); gtk_container_add (GTK_CONTAINER(appGUI->main_window), appGUI->notebook); g_signal_connect (G_OBJECT(appGUI->notebook), "switch-page", G_CALLBACK(notebook_sw_cb), appGUI); gtk_notebook_set_scrollable (GTK_NOTEBOOK(appGUI->notebook), appGUI->tiny_gui); if (appGUI->calendar_only == TRUE) { gtk_notebook_set_show_tabs (GTK_NOTEBOOK(appGUI->notebook), FALSE); } appGUI->opt->calendar_ical_files_store = gtk_list_store_new (ICAL_NUMBER_OF_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); appGUI->opt->calendar_category_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); gui_create_calendar(appGUI->notebook, appGUI); if (appGUI->calendar_only == FALSE) { #ifdef TASKS_ENABLED appGUI->opt->tasks_category_store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); gui_create_tasks (appGUI); #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED appGUI->opt->contacts_group_store = gtk_list_store_new (1, G_TYPE_STRING); gui_create_contacts (appGUI); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED gui_create_notes (appGUI); #endif /* NOTES_ENABLED */ #ifdef HAVE_GTKSPELL if (config.day_note_spell_checker == TRUE) { GtkSpell *edSpell = gtkspell_new_attach (GTK_TEXT_VIEW (appGUI->cal->calendar_note_textview), NULL, NULL); if (config.override_locale_settings == TRUE) { gtkspell_set_language (edSpell, config.spell_lang, NULL); } else { gtkspell_set_language (edSpell, g_getenv ("LANG"), NULL); } } #endif /* HAVE_GTKSPELL */ if (!config.gui_layout) { if (config.enable_auxilary_calendars == TRUE) { gtk_widget_show (appGUI->cal->aux_cal_expander); } else { gtk_widget_hide (appGUI->cal->aux_cal_expander); } } cal_read_notes (appGUI); #ifdef HAVE_LIBICAL ics_initialize_timezone (); read_ical_entries (appGUI); #endif /* HAVE_LIBICAL */ #ifdef TASKS_ENABLED read_tasks_entries (appGUI); set_categories (appGUI); refresh_tasks (appGUI); #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED read_contacts_entries (appGUI); set_export_active (appGUI); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED appGUI->opt->notes_category_store = gtk_list_store_new (1, G_TYPE_STRING); read_notes_entries (appGUI); utl_gui_create_category_combobox (GTK_COMBO_BOX (appGUI->nte->cf_combobox), appGUI->opt->notes_category_store, FALSE); if (config.remember_category_in_notes == TRUE) { gtk_combo_box_set_active (GTK_COMBO_BOX(appGUI->nte->cf_combobox), config.current_category_in_notes); } else { gtk_combo_box_set_active (GTK_COMBO_BOX(appGUI->nte->cf_combobox), 0); } #endif /* NOTES_ENABLED */ #ifdef TASKS_ENABLED refresh_tasks (appGUI); appGUI->tsk->notifications_enable = TRUE; #endif /* TASKS_ENABLED */ appGUI->number_of_tabs = NUMBER_OF_TABS; if(config.remember_latest_tab == TRUE) { appGUI->current_tab = config.latest_tab; } else { appGUI->current_tab = PAGE_CALENDAR; } } else { appGUI->number_of_tabs = 1; appGUI->current_tab = 0; } appGUI->all_pages_added = TRUE; calendar_set_today (appGUI); update_aux_calendars (appGUI); if (config.toolbar_exit_button == FALSE) { if (appGUI->calendar_only == FALSE) { gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cal->calendar_uim_widget, "/toolbar/quit")); #ifdef CONTACTS_ENABLED gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/quit")); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/quit")); #endif /* NOTES_ENABLED */ #ifdef TASKS_ENABLED gtk_widget_hide (gtk_ui_manager_get_widget (appGUI->tsk->tasks_uim_widget, "/toolbar/quit")); #endif /* TASKS_ENABLED */ } } if (config.fullscreen == TRUE) { gtk_window_fullscreen (GTK_WINDOW(appGUI->main_window)); } if (appGUI->check_events == TRUE) { return create_event_checker_window (appGUI); } else { gui_systray_initialize (appGUI); } if (appGUI->calendar_only == TRUE) { gtk_widget_show (appGUI->main_window); } gtk_notebook_set_current_page(GTK_NOTEBOOK(appGUI->notebook), appGUI->current_tab); /* enable STDERR */ dup2 (fdSTDERR, STDERR_FILENO); close (fdSTDERR); return TRUE; } /*------------------------------------------------------------------------------*/ void gui_add_to_notebook (GtkWidget *widget, gchar *text, GUI *appGUI) { GtkWidget *label; label = gtk_label_new(NULL); if (config.tabs_position == GTK_POS_LEFT) { gtk_label_set_angle (GTK_LABEL(label), 90.0); } else if (config.tabs_position == GTK_POS_RIGHT) { gtk_label_set_angle (GTK_LABEL(label), -90.0); } gtk_label_set_markup (GTK_LABEL (label), text); gtk_notebook_append_page(GTK_NOTEBOOK(appGUI->notebook), widget, label); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/utils_time.c000664 001750 001750 00000031150 12561325524 015643 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * (C) 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "options_prefs.h" #include "utils_time.h" /*============================================================================*/ TIME * utl_time_new (void) { TIME *t = g_slice_new (TIME); return t; } /*============================================================================*/ TIME * utl_time_new_hms (gint hour, gint minute, gint second) { TIME *t; g_return_val_if_fail (utl_time_valid_hms (hour, minute, second), NULL); t = g_slice_new (TIME); t->hour = hour; t->minute = minute; t->second = second; return t; } /*============================================================================*/ TIME * utl_time_new_seconds (gint seconds) { TIME *t; g_return_val_if_fail (utl_time_valid_seconds (seconds), NULL); t = g_slice_new (TIME); utl_time_set_seconds (t, seconds); return t; } /*============================================================================*/ TIME * utl_time_new_now (void) { TIME *t; struct tm *ptm; time_t tmm; tmm = time (NULL); ptm = localtime (&tmm); t = g_slice_new (TIME); utl_time_set_hms (t, ptm->tm_hour, ptm->tm_min, (ptm->tm_sec < 60) ? ptm->tm_sec : 59); return t; } /*============================================================================*/ void utl_time_set_hms (TIME *t, gint hour, gint minute, gint second) { g_return_if_fail (t != NULL); g_return_if_fail (utl_time_valid_hms (hour, minute, second)); t->hour = hour; t->minute = minute; t->second = second; } /*============================================================================*/ void utl_time_set_hour (TIME *t, gint hour) { g_return_if_fail (t != NULL); g_return_if_fail (utl_time_valid_hour (hour)); t->hour = hour; } /*============================================================================*/ void utl_time_set_minute (TIME *t, gint minute) { g_return_if_fail (t != NULL); g_return_if_fail (utl_time_valid_minute (minute)); t->minute = minute; } /*============================================================================*/ void utl_time_set_second (TIME *t, gint second) { g_return_if_fail (t != NULL); g_return_if_fail (utl_time_valid_second (second)); t->second = second; } /*============================================================================*/ void utl_time_set_seconds (TIME *t, gint seconds) { g_return_if_fail (t != NULL); g_return_if_fail (utl_time_valid_seconds (seconds)); t->hour = seconds / 3600; seconds %= 3600; t->minute = seconds / 60; seconds %= 60; t->second = seconds; } /*============================================================================*/ void utl_time_get_hms (const TIME *t, gint *hour, gint *minute, gint *second) { g_return_if_fail (utl_time_valid (t)); if (hour != NULL) *hour = t->hour; if (minute != NULL) *minute = t->minute; if (second != NULL) *second = t->second; } /*============================================================================*/ gint utl_time_get_hour (const TIME *t) { g_return_val_if_fail (utl_time_valid (t), 0); return t->hour; } /*============================================================================*/ gint utl_time_get_minute (const TIME *t) { g_return_val_if_fail (utl_time_valid (t), 0); return t->minute; } /*============================================================================*/ gint utl_time_get_second (const TIME *t) { g_return_val_if_fail (utl_time_valid (t), 0); return t->second; } /*============================================================================*/ gint utl_time_get_seconds (const TIME *t) { g_return_val_if_fail (utl_time_valid (t), 0); return t->hour * 3600 + t->minute * 60 + t->second; } /*============================================================================*/ gint utl_time_get_current_hour () { TIME *time; gint current_hour; time = utl_time_new_now (); current_hour = time->hour; utl_time_free (time); return current_hour; } /*============================================================================*/ gint utl_time_get_current_minute () { TIME *time; gint current_minute; time = utl_time_new_now (); current_minute = time->minute; utl_time_free (time); return current_minute; } /*============================================================================*/ gint utl_time_get_current_seconds () { TIME *t = utl_time_new_now (); gint seconds = utl_time_get_seconds (t); utl_time_free (t); return seconds; } /*============================================================================*/ gint utl_time_add (TIME *f_time, TIME *s_time) { gint days; g_return_val_if_fail (utl_time_valid (s_time), 0); days = utl_time_add_hours (f_time, s_time->hour); days += utl_time_add_minutes (f_time, s_time->minute); days += utl_time_add_seconds (f_time, s_time->second); return days; } /*============================================================================*/ gint utl_time_add_hours (TIME *t, gint hours) { gint days; hours += utl_time_get_hour (t); days = hours / 24; utl_time_set_hour (t, hours % 24); return days; } /*============================================================================*/ gint utl_time_add_minutes (TIME *t, gint minutes) { gint hours; minutes += utl_time_get_minute (t); hours = minutes / 60; utl_time_set_minute (t, minutes % 60); return (hours > 0 ? utl_time_add_hours (t, hours) : 0); } /*============================================================================*/ gint utl_time_add_seconds (TIME *t, gint seconds) { gint minutes; seconds += utl_time_get_second (t); minutes = seconds / 60; utl_time_set_second (t, seconds % 60); return (minutes > 0 ? utl_time_add_minutes (t, minutes) : 0); } /*============================================================================*/ gint utl_time_subtract (TIME *f_time, TIME *s_time) { gint days; g_return_val_if_fail (utl_time_valid (s_time), 0); days = utl_time_subtract_hours (f_time, s_time->hour); days += utl_time_subtract_minutes (f_time, s_time->minute); days += utl_time_subtract_seconds (f_time, s_time->second); return days; } /*============================================================================*/ gint utl_time_subtract_hours (TIME *time, gint hours) { gint days, h; days = hours / 24; hours %= 24; h = utl_time_get_hour (time); if (h < hours) { h += 24; days++; } utl_time_set_hour (time, h - hours); return days; } /*============================================================================*/ gint utl_time_subtract_minutes (TIME *time, gint minutes) { gint hours, m; hours = minutes / 60; minutes %= 60; m = utl_time_get_minute (time); if (m < minutes) { m += 60; hours++; } utl_time_set_minute (time, m - minutes); return (hours > 0 ? utl_time_subtract_hours (time, hours) : 0); } /*============================================================================*/ gint utl_time_subtract_seconds (TIME *t, gint seconds) { gint minutes, s; minutes = seconds / 60; seconds %= 60; s = utl_time_get_second (t); if (s < seconds) { s += 60; minutes++; } utl_time_set_second (t, s - seconds); return (minutes > 0 ? utl_time_subtract_minutes (t, minutes) : 0); } /*============================================================================*/ void utl_time_clamp (TIME *t, const TIME *tmin, const TIME *tmax) { if (tmin != NULL && tmax != NULL) g_return_if_fail (utl_time_compare (tmin, tmax) <= 0); gint s = utl_time_get_seconds (t); if (tmin != NULL) if (s < utl_time_get_seconds (tmin)) *t = *tmin; if (tmax != NULL) if (s > utl_time_get_seconds (tmax)) *t = *tmax; } /*============================================================================*/ gint utl_time_compare (const TIME *time1, const TIME *time2) { gint s1 = utl_time_get_seconds (time1); gint s2 = utl_time_get_seconds (time2); return (s1 > s2 ? 1 : (s1 == s2 ? 0 : -1)); } /*============================================================================*/ gboolean utl_time_order (TIME *time1, TIME *time2) { if (utl_time_compare (time1, time2) > 0) { TIME tmp = *time1; *time1 = *time2; *time2 = tmp; return TRUE; } else return FALSE; } /*============================================================================*/ gint utl_time_seconds_between (const TIME *time1, const TIME *time2) { return utl_time_get_seconds (time2) - utl_time_get_seconds (time1); } /*============================================================================*/ gchar * utl_time_print (const TIME *t, gint time_format, gint override_locale) { gchar time_str[BUFFER_SIZE], *format; struct tm timer; g_return_val_if_fail (utl_time_valid (t), NULL); utl_time_get_hms (t, &(timer.tm_hour), &(timer.tm_min), &(timer.tm_sec)); format = utl_time_get_format_str (time_format, override_locale); strftime (time_str, BUFFER_SIZE-1, format, &timer); return g_strdup (time_str); } /*============================================================================*/ gchar * utl_time_print_s (gint seconds, gint time_format, gint override_locale) { g_return_val_if_fail (utl_time_valid_seconds (seconds), NULL); TIME *t = utl_time_new_seconds (seconds); gchar *timestr = utl_time_print (t, time_format, override_locale); utl_time_free (t); return timestr; } /*============================================================================*/ gchar * utl_time_print_default (gint seconds, gboolean with_sec) { g_return_val_if_fail (utl_time_valid_seconds (seconds), NULL); TIME *t = utl_time_new_seconds (seconds); gchar *timestr = utl_time_print (t, config.time_format + (with_sec ? 2 : 0), config.override_locale_settings); utl_time_free (t); return timestr; } /*============================================================================*/ gchar * utl_time_get_format_str (gint time_format, gint override_locale) { static gchar *time_format_str[] = { "%R", "%I:%M %p", "%T", "%r", "%Z", "%X" }; if (!override_locale) return time_format_str[TIME_LOCALE]; /*g_return_val_if_fail (time_format >= TIME_HH_MM &&*/ /*time_format <= TIME_TIMEZONE, NULL);*/ if (time_format >= TIME_HH_MM && time_format <= TIME_TIMEZONE) { return time_format_str[time_format]; } else { return time_format_str[0]; } } /*============================================================================*/ gint utl_time_hms_to_seconds (gint hour, gint minute, gint second) { g_return_val_if_fail (utl_time_valid_hms (hour, minute, second), 0); return hour * 3600 + minute * 60 + second; } /*============================================================================*/ gboolean utl_time_valid (const TIME *t) { g_return_val_if_fail (t != NULL, FALSE); return (utl_time_valid_hms (t->hour, t->minute, t->second)); } /*============================================================================*/ gboolean utl_time_valid_hms (gint hour, gint minute, gint second) { return (utl_time_valid_hour (hour) && utl_time_valid_minute (minute) && utl_time_valid_second (second)); } /*============================================================================*/ gboolean utl_time_valid_hour (gint hour) { return (hour >= 0 && hour < 24); } /*============================================================================*/ gboolean utl_time_valid_minute (gint minute) { return (minute >= 0 && minute < 60); } /*============================================================================*/ gboolean utl_time_valid_second (gint second) { return (second >= 0 && second < 60); } /*============================================================================*/ gboolean utl_time_valid_seconds (gint seconds) { return (seconds >= 0 && seconds < 86400); } /*============================================================================*/ void utl_time_free (TIME *t) { g_return_if_fail (t != NULL); g_slice_free (TIME, t); t = NULL; } /*============================================================================*/ osmo-0.2.14/src/tasks_print.c000664 001750 001750 00000023375 12561325524 016040 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "i18n.h" #include "utils.h" #include "utils_gui.h" #ifdef TASKS_ENABLED #ifdef PRINTING_SUPPORT /*------------------------------------------------------------------------------*/ static void request_page_setup (GtkPrintOperation *operation, GtkPrintContext *context, int page_nr, GtkPageSetup *setup) { /* GtkPaperSize *a4_size = gtk_paper_size_new ("iso_a4");*/ /* gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_LANDSCAPE);*/ /* gtk_page_setup_set_paper_size (setup, a4_size);*/ /* gtk_paper_size_free (a4_size);*/ } /*------------------------------------------------------------------------------*/ void tasks_begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { PangoLayout *layout; PangoFontDescription *desc; gdouble page_height; gint letter_height, task_height; GUI *appGUI = (GUI *) user_data; layout = gtk_print_context_create_pango_layout (context); desc = pango_font_description_from_string ("mono"); pango_font_description_set_size (desc, appGUI->print_font_size * PANGO_SCALE); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); pango_layout_set_text (layout, "M", -1); pango_layout_get_pixel_size (layout, NULL, &letter_height); g_object_unref (layout); task_height = 2 * letter_height; page_height = gtk_print_context_get_height (context); appGUI->print_nlines = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (appGUI->tsk->tasks_filter), NULL); appGUI->print_lines_per_page = floor (page_height / task_height) - 1; g_return_if_fail (appGUI->print_lines_per_page > 0); appGUI->print_npages = (appGUI->print_nlines - 1) / appGUI->print_lines_per_page + 1; gtk_print_operation_set_n_pages (operation, appGUI->print_npages); } /*------------------------------------------------------------------------------*/ void tasks_draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint npage, gpointer user_data) { PangoLayout *layout; PangoFontDescription *desc; GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; cairo_t *cr; gchar *summary, *date, *priority; gchar buffer[BUFFER_SIZE]; /* gdouble page_width, page_height, ycursor;*/ gdouble page_width, ycursor; gint text_width, text_height, task_height; gint i, imin, imax; GUI *appGUI = (GUI *) user_data; cr = gtk_print_context_get_cairo_context (context); page_width = gtk_print_context_get_width (context); /* page_height = gtk_print_context_get_height (context);*/ layout = gtk_print_context_create_pango_layout (context); desc = pango_font_description_from_string ("mono"); pango_font_description_set_size (desc, appGUI->print_font_size * PANGO_SCALE); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); pango_layout_set_text (layout, "M", -1); pango_layout_get_pixel_size (layout, NULL, &task_height); task_height *= 2; cairo_set_line_width (cr, 1); cairo_move_to (cr, 0, 0); g_snprintf (buffer, BUFFER_SIZE, "%s", _("Tasks list")); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); pango_cairo_show_layout (cr, layout); ycursor = task_height; if (appGUI->print_npages > 1) { ycursor = text_height; g_snprintf (buffer, BUFFER_SIZE, "%d/%d", npage + 1, appGUI->print_npages); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, page_width - text_width - 4, ycursor - text_height); pango_cairo_show_layout (cr, layout); ycursor = task_height; } ycursor += 0.3 * task_height; cairo_rectangle (cr, 0, task_height, page_width, task_height); cairo_set_source_rgb (cr, 0.9, 0.9, 0.9); cairo_fill_preserve (cr); cairo_set_source_rgb (cr, 0, 0, 0); cairo_stroke (cr); /* TRANSLATORS: "No." is an abbreviation of word "number" */ g_snprintf (buffer, BUFFER_SIZE, "%s", _("No.")); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.05 * page_width - text_width, ycursor); pango_cairo_show_layout (cr, layout); g_snprintf (buffer, BUFFER_SIZE, "%s", _("Summary")); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.07 * page_width, ycursor); pango_cairo_show_layout (cr, layout); g_snprintf (buffer, BUFFER_SIZE, "%s", _("Due date")); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.66 * page_width, ycursor); pango_cairo_show_layout (cr, layout); g_snprintf (buffer, BUFFER_SIZE, "%s", _("Priority")); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.88 * page_width, ycursor); pango_cairo_show_layout (cr, layout); ycursor += 0.7 * task_height; sort_path = gtk_tree_path_new_first (); i = 0; imin = appGUI->print_lines_per_page * npage; imax = appGUI->print_lines_per_page * (npage + 1); while (gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, sort_path) == TRUE) { if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { if (i >= imin && i < imax) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, path); gtk_tree_model_get (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_SUMMARY, &summary, TA_COLUMN_DUE_DATE, &date, TA_COLUMN_PRIORITY, &priority, -1); ycursor += 0.3 * task_height; g_snprintf (buffer, BUFFER_SIZE, "%d.", i + 1); pango_layout_set_markup (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.05 * page_width - text_width, ycursor); pango_cairo_show_layout (cr, layout); g_snprintf (buffer, BUFFER_SIZE, "%.52s", summary); pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.07 * page_width, ycursor); pango_cairo_show_layout (cr, layout); pango_layout_set_text (layout, date, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.66 * page_width, ycursor); pango_cairo_show_layout (cr, layout); pango_layout_set_text (layout, priority, -1); pango_layout_get_pixel_size (layout, &text_width, &text_height); cairo_move_to (cr, 0.88 * page_width, ycursor); pango_cairo_show_layout (cr, layout); ycursor += 0.7 * task_height; cairo_move_to (cr, 0, ycursor); cairo_line_to (cr, page_width, ycursor); cairo_stroke (cr); g_free (summary); g_free (date); g_free (priority); } i++; gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } } gtk_tree_path_next (sort_path); } cairo_move_to (cr, 0, task_height); cairo_line_to (cr, 0, ycursor); cairo_move_to (cr, 0.06 * page_width, task_height); cairo_line_to (cr, 0.06 * page_width, ycursor); cairo_move_to (cr, 0.65 * page_width, task_height); cairo_line_to (cr, 0.65 * page_width, ycursor); cairo_move_to (cr, 0.87 * page_width, task_height); cairo_line_to (cr, 0.87 * page_width, ycursor); cairo_move_to (cr, page_width, task_height); cairo_line_to (cr, page_width, ycursor); cairo_stroke (cr); g_object_unref (layout); } /*------------------------------------------------------------------------------*/ void tasks_print (GUI *appGUI) { GtkPrintOperation *print; GtkPrintOperationResult result; GError *error = NULL; gchar buffer[BUFFER_SIZE]; print = gtk_print_operation_new (); appGUI->print_lines_per_page = 0; appGUI->print_nlines = 0; appGUI->print_npages = 0; g_signal_connect (print, "begin_print", G_CALLBACK (tasks_begin_print), appGUI); g_signal_connect (print, "draw_page", G_CALLBACK (tasks_draw_page), appGUI); g_signal_connect (print, "request_page_setup", G_CALLBACK (request_page_setup), NULL); result = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW (appGUI->main_window), &error); if (result == GTK_PRINT_OPERATION_RESULT_ERROR) { g_snprintf (buffer, BUFFER_SIZE, "%s: %s", _("Error printing"), error->message); utl_gui_create_dialog (GTK_MESSAGE_ERROR, buffer, GTK_WINDOW (appGUI->main_window)); g_error_free (error); } g_object_unref (print); } /*------------------------------------------------------------------------------*/ #endif /* PRINTING_SUPPORT */ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/about.c000664 001750 001750 00000112746 12561325524 014612 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "about.h" #include "gui_logo.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils_gui.h" static void display_license (GUI *appGUI); static void display_help (GUI *appGUI); static void add_credits_section (const gchar *section_title, OsmoCreditEntry *credits, guint32 n_credits, GUI *appGUI); static void display_about (GUI *appGUI); static void about_switch_buttons (gboolean left, GUI *appGUI); static void button_released_cb (GtkButton *button, GUI *appGUI); static void gui_create_about (GtkWidget *vbox_top, GUI *appGUI); static OsmoCreditEntry credits_programming[] = { { NULL, "Tomasz MÄ…ka", "pasp@users.sourceforge.net" }, { NULL, "Piotr MÄ…ka", "silloz@users.sourceforge.net" } }; static OsmoCreditEntry credits_graphics[] = { { NULL, "Maja KocoÅ„", "http://pinky-babble.org" } }; static OsmoCreditEntry credits_contributors[] = { { NULL, "Markus Dahms", "mad@automagically.de" }, { NULL, "Nacho Alonso González", "nacho.alonso.gonzalez@gmail.com" }, { NULL, "Maxim Gordienko", "mgordienko@users.sourceforge.net" } }; static OsmoCreditEntry credits_translators[] = { { "bg", "Borislav Totev", "btotev@hotmail.com" }, { "ca", "Roger Adell", "roger.adell@gmail.com" }, { "cs", "Jaroslav Lichtblau", "dragonlord@seznam.cz" }, { "da", "Joakim Seeberg", "joak@users.sourceforge.net" }, /* da */ { NULL, "Joe Hansen", "joedalton2@yahoo.dk" }, /* da */ { "de", "Markus Dahms", "mad@automagically.de" }, /* de */ { NULL, "Mario Blättermann", "mariobl@gnome.org" }, /* de */ { NULL, "Roland Siegbert", "roland.siegbert@gmail.com" }, /* de */ { "el", "Konstantinos Tsakaloglou", "tsakf@yahoo.com" }, { "en_GB", "Steve Cook (Yorvyk)", "yorvik.ubunto@googlemail.com" }, { "es", "Nacho Alonso González", "nacho.alonso.gonzalez@gmail.com" }, { "fi", "Toivo Miettinen", "toivo.miettinen@panuma.fi" }, { "fr", "Jean-Jacques Moulinier", "postmaster@moulinier.net" }, /* fr */ { NULL, "Rémi Roupsard", "remi.roupsard@gmail.com"}, /* fr */ { NULL, "Lylliann Essandre", "lylambda@gmail.com"}, /* fr */ { "gl", "Miguel Anxo Bouzada", "mbouzada@gmail.com"}, /* gl */ { NULL, "xesusmosquera", "xesusmosquera@gmail.com"}, /* gl */ { "gl_ES", "Miguel Anxo Bouzada", "mbouzada@gmail.com"}, /* gl_ES */ { NULL, "xesusmosquera", "xesusmosquera@gmail.com"}, /* gl_ES */ { "he", "Hebrew", "Hebrew@transifex"}, { "hu", "Peter Polonkai", "polesz@nedudu.hu" }, { "it", "Bautz", "bautz@email.com" }, /* it */ { NULL, "Calogero Bonasia", "kbonasia@gmail.com" }, /* it */ { "ja", "Norihiro Yoneda", "aoba@avis.ne.jp" }, { "lt", "Vaidotas Kazla", "joshas@gmail.com" }, /* lt */ { NULL, "Moo", "Moo@transifex" }, /* lt */ { "nl", "Tiger!P", "tigerp@tigerp.net" }, { "pl", "Piotr MÄ…ka", "silloz@users.sourceforge.net" }, { "pt", "Bruno Miguel", "brunoalexandremiguel@gmail.com" }, { "pt_BR", "Ãtila Camurça", "camurca.home@gmail.com" }, /* pt_BR */ { NULL, "Alexandro Casanova", "shorterfire@gmail.com" }, /* pt_BR */ { "ro", "Alexandru GavriÈ™", "alexandrugavrish@gmail.com" }, /* ro */ { "ru", "Vyacheslav A. Trishkin", "dedovsk@mail.ru" }, /* ru */ { NULL, "Alexander Vozhennikov", "vodka_ploho@mail.ru" }, /* ru */ { NULL, "Sergey Panasenko", "nitay@users.sourceforge.net" }, /* ru */ { NULL, "Dmitry Korzhevin", "dkorzhevin@lsupport.net" }, /* ru */ { "sr", "Саша Петровић", "salepetronije@gmail.com" }, /* sr */ { "sv", "Niklas Grahn", "terra.unknown@yahoo.com" }, { "te", "Praveen Illa", "mail2ipn@gmail.com" }, { "tr", "Hasan Yılmaz", "hasanyilmaz@users.sourceforge.net" }, { "uk", "Sergey Panasenko", "nitay@users.sourceforge.net" }, /* uk */ { NULL, "Dmitry Korzhevin", "dkorzhevin@lsupport.net" }, /* uk */ { NULL, "Yury Bulka", "yurkobb@gmail.com" }, /* uk */ { "ur", "Muhammad Ali Makki", "makkiabufaris@aol.com" }, /* ur */ { "ur_PK", "Muhammad Ali Makki", "makkiabufaris@aol.com" }, /* ur_pk */ { "zh_CN", "Sasaqqdan", "sasaqqdan@gmail.com" }, /* zh_cn */ { NULL, "Darcsis", "darcsis@gmail.com" } /* zh_cn */ }; /* ========================================================================== */ static void close_window (GtkWidget *widget, GtkWidget *window) { gtk_widget_destroy (window); } /* ========================================================================== */ static gint key_press (GtkWidget *widget, GdkEventKey *event, GUI *appGUI) { switch (event->keyval) { case GDK_Escape: close_window (NULL, widget); return TRUE; case GDK_Page_Down: about_switch_buttons (FALSE, appGUI); return TRUE; case GDK_Page_Up: about_switch_buttons (TRUE, appGUI); return TRUE; } return FALSE; } /* ========================================================================== */ GtkWidget * opt_create_about_window (GUI *appGUI) { GtkWidget *window, *vbox_top; GtkWidget *hbuttonbox, *button_close; window = utl_gui_create_window (_("About"), 510, 600, appGUI); gtk_widget_set_events (window, GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK); g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (key_press), appGUI); vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_add (GTK_CONTAINER (window), vbox_top); gui_create_about (vbox_top, appGUI); /* Close button */ hbuttonbox = gtk_hbutton_box_new (); gtk_box_pack_start (GTK_BOX (vbox_top), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), HBOX_SPACING); button_close = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_container_add (GTK_CONTAINER (hbuttonbox), button_close); GTK_WIDGET_SET_FLAGS (button_close, GTK_CAN_DEFAULT); g_signal_connect (G_OBJECT (button_close), "clicked", G_CALLBACK (close_window), window); gtk_widget_grab_focus (button_close); gtk_widget_show_all (vbox_top); return window; } /* ========================================================================== */ static void display_license (GUI *appGUI) { const gchar license_text[] = { "\nThis 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." "\n\n" "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." "\n\n" "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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." }; utl_gui_clear_text_buffer (appGUI->about_entry_buffer, &appGUI->about_entry_iter); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, license_text, -1); gtk_widget_grab_focus (GTK_WIDGET (appGUI->scrolled_window)); } /* ========================================================================== */ static void display_help (GUI *appGUI) { const gchar *general_keys_text[] = { N_("Ctrl+PageUp"), N_("switch to previous tab"), N_("Ctrl+PageDn"), N_("switch to next tab"), "Alt+1...6, F1-F4", N_("switch to selected page"), "F5", N_("show options window"), "F6", N_("show about window"), "F11", N_("toggle fullscreen mode"), N_("PageUp/PageDn"), N_("switch page in options and about tab"), "Ctrl+q", N_("exit") }; const gchar *calendar_keys_text[] = { N_("Space"), N_("select current date"), N_("Ctrl+Space"), N_("toggle personal data visibility"), N_("Arrows"), N_("change day"), N_("Ctrl+Up/Down"), N_("scroll the contents in the day info panel"), N_("PageUp/PageDn"), N_("change month"), N_("Home/End"), N_("change year"), "a", N_("toggle calendars for the previous and next month"), "b", N_("day notes browser"), "c", N_("assign background color to day note"), "d", N_("date calculator"), "f", N_("show full-year calendar"), "g", N_("jump to date"), N_("Delete"), N_("remove day note") }; const gchar *calendar_editor_keys_text[] = { N_("Alt+Arrows"), N_("change day"), N_("Esc"), N_("close editor"), "Ctrl+b", N_("toggle bold"), "Ctrl+i", N_("toggle italic"), "Ctrl+u", N_("toggle underline"), "Ctrl+t", N_("toggle strikethrough"), "Ctrl+m", N_("toggle highlight") }; const gchar *calendar_fy_keys_text[] = { N_("Arrows Up/Down"), N_("change year"), "F1", N_("toggle alternative view"), "F2", N_("year info"), "F3", N_("set current year"), N_("Esc"), N_("close full-year calendar") }; #ifdef TASKS_ENABLED const gchar *tasks_keys_text[] = { N_("Alt+a, Insert"), N_("add task"), N_("Alt+e, Ctrl+Enter"), N_("edit task"), N_("Alt+r, Delete"), N_("remove task"), "Ctrl+h", N_("toggle hidden tasks"), "Ctrl+l", N_("activate search field"), N_("Left, Right"), N_("change category filter"), N_("Esc"), N_("close task info panel") }; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED const gchar *contacts_keys_text[] = { N_("Insert"), N_("add contact"), N_("Ctrl+Enter"), N_("edit contact"), N_("Delete"), N_("remove contact"), "Ctrl+l", N_("activate search field"), N_("Ctrl+Up/Down"), N_("change search mode"), N_("Esc"), N_("close contact details panel") }; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED const gchar *notes_selector_keys_text[] = { N_("Enter"), N_("open note"), N_("Insert"), N_("add note"), N_("Delete"), N_("remove note"), N_("Ctrl+Enter"), N_("edit note name and category"), "Ctrl+l", N_("activate search field"), N_("Left, Right"), N_("change category filter") }; const gchar *notes_editor_keys_text[] = { "Ctrl+w", N_("close note editor"), "Ctrl+s", N_("save note"), "Ctrl+f", N_("find text"), "Ctrl+b", N_("toggle bold"), "Ctrl+i", N_("toggle italic"), "Ctrl+u", N_("toggle underline"), "Ctrl+t", N_("toggle strikethrough"), "Ctrl+m", N_("toggle highlight"), "Ctrl+n", N_("clear selection attributes") }; #endif /* NOTES_ENABLED */ gchar *str; gint i; utl_gui_clear_text_buffer (appGUI->about_entry_buffer, &appGUI->about_entry_iter); str = g_strdup_printf ("\n%s\n\n", _("OSMO was designed keeping in mind the user convenience, so there are many key shortcuts. Here is the full list:")); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); /* ============================== */ str = g_strdup_printf ("* %s\n", _("General")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (general_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (general_keys_text[i*2]), gettext (general_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); /* ============================== */ str = g_strdup_printf ("* %s\n", _("Calendar")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (calendar_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (calendar_keys_text[i*2]), gettext (calendar_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } str = g_strdup_printf ("\t%s:\n", _("Note editor")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (calendar_editor_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (calendar_editor_keys_text[i*2]), gettext (calendar_editor_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } str = g_strdup_printf ("\t%s:\n", _("Full-year calendar")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (calendar_fy_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (calendar_fy_keys_text[i*2]), gettext (calendar_fy_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); /* ============================== */ #ifdef TASKS_ENABLED str = g_strdup_printf ("* %s\n", _("Tasks")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (tasks_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (tasks_keys_text[i*2]), gettext (tasks_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); #endif /* TASKS_ENABLED */ /* ============================== */ #ifdef CONTACTS_ENABLED str = g_strdup_printf ("* %s\n", _("Contacts")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (contacts_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (contacts_keys_text[i*2]), gettext (contacts_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); #endif /* CONTACTS_ENABLED */ /* ============================== */ #ifdef NOTES_ENABLED str = g_strdup_printf ("* %s\n", _("Notes")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); str = g_strdup_printf ("\t%s:\n", _("Selector")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (notes_selector_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (notes_selector_keys_text[i*2]), gettext (notes_selector_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } str = g_strdup_printf ("\t%s:\n", _("Editor")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); for (i = 0; i < G_N_ELEMENTS (notes_editor_keys_text) / 2; i++) { str = g_strdup_printf ("\t<%s> - %s\n", gettext (notes_editor_keys_text[i*2]), gettext (notes_editor_keys_text[i*2+1])); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); #endif /* NOTES_ENABLED */ gtk_widget_grab_focus (GTK_WIDGET (appGUI->scrolled_window)); } /* ========================================================================== */ static void add_credits_section (const gchar *section_title, OsmoCreditEntry *credits, guint32 n_credits, GUI *appGUI) { gint32 i, j, d; gchar *s; s = g_strdup_printf ("\n %s:\n", section_title); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, s, -1, "bold", NULL); g_free (s); for (i = 0; i < n_credits; i++) { if (credits[i].tag) { if(strlen(credits[i].tag) > 2) { s = g_strdup_printf (" [%s]", credits[i].tag); } else { s = g_strdup_printf (" [%s] ", credits[i].tag); } } else { s = g_strdup (" "); } gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, s, -1, "fixed", NULL); g_free (s); s = g_strdup_printf (" %s <", credits[i].name); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, s, -1); g_free (s); j = d = 0; while (credits[i].email[j] != '\0') if (credits[i].email[j++] == '.') d++; if (d == 0) { gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, credits[i].email, -1); } else { utl_gui_url_insert_link (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, &appGUI->about_entry_iter, config.link_color, NULL, credits[i].email, FALSE, appGUI); } gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, ">\n", -1); } } /* ========================================================================== */ static void display_about (GUI *appGUI) { gchar *str; utl_gui_url_remove_links (&appGUI->about_links_list, &appGUI->about_link_index); utl_gui_clear_text_buffer (appGUI->about_entry_buffer, &appGUI->about_entry_iter); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); str = g_strdup_printf ("%s\n", _("A handy personal organizer")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "big", "center", NULL); g_free (str); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); utl_gui_url_insert_link (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, &appGUI->about_entry_iter, config.link_color, NULL, OSMO_WEBSITE, TRUE, appGUI); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); str = g_strdup_printf ("\n(%s %s, %s)\n\n", _("compiled on"), __DATE__, __TIME__); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "center", "italic", NULL); g_free (str); add_credits_section (_("Programming"), credits_programming, G_N_ELEMENTS (credits_programming), appGUI); add_credits_section (_("Graphics"), credits_graphics, G_N_ELEMENTS (credits_graphics), appGUI); add_credits_section (_("Contributors"), credits_contributors, G_N_ELEMENTS (credits_contributors), appGUI); add_credits_section (_("Translators"), credits_translators, G_N_ELEMENTS (credits_translators), appGUI); /* Links */ str = g_strdup_printf ("\n %s:\n", _("Mailing lists")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\t ", -1); utl_gui_url_insert_link (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, &appGUI->about_entry_iter, config.link_color, NULL, MAILING_LIST, FALSE, appGUI); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); str = g_strdup_printf ("\n %s:\n", _("Bug tracker")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\t ", -1); utl_gui_url_insert_link (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, &appGUI->about_entry_iter, config.link_color, NULL, BUG_TRACKER, FALSE, appGUI); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); str = g_strdup_printf ("\n %s:\n", _("Feature requests")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\t ", -1); utl_gui_url_insert_link (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, &appGUI->about_entry_iter, config.link_color, NULL, FEATURE_REQUESTS, FALSE, appGUI); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, "\n", -1); /* Available modules */ str = g_strdup_printf ("\n %s:\n", _("Available modules")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); str = g_strdup_printf (" [+]\t%s\n", _("Calendar")); gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef TASKS_ENABLED str = g_strdup_printf (" [+]\t%s\n", _("Tasks")); #else str = g_strdup_printf (" [-]\t%s\n", _("Tasks")); #endif /* TASKS_ENABLED */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef CONTACTS_ENABLED str = g_strdup_printf (" [+]\t%s\n", _("Contacts")); #else str = g_strdup_printf (" [-]\t%s\n", _("Contacts")); #endif /* CONTACTS_ENABLED */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef NOTES_ENABLED str = g_strdup_printf (" [+]\t%s\n", _("Notes")); #else str = g_strdup_printf (" [-]\t%s\n", _("Notes")); #endif /* NOTES_ENABLED */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); /* Compiled-in features */ str = g_strdup_printf ("\n %s:\n", _("Compiled-in features")); gtk_text_buffer_insert_with_tags_by_name (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1, "bold", NULL); g_free (str); #ifdef HAVE_LIBICAL str = g_strdup_printf (" [+]\t%s (libical)\n", _("iCalendar support")); #else str = g_strdup_printf (" [-]\t%s (libical)\n", _("iCalendar support")); #endif /* HAVE_LIBICAL */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef HAVE_LIBGRINGOTTS str = g_strdup_printf (" [+]\t%s (libgringotts)\n", _("Encrypted notes support")); #else str = g_strdup_printf (" [-]\t%s (libgringotts)\n", _("Encrypted notes support")); #endif /* HAVE_LIBGRINGOTTS */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) str = g_strdup_printf (" [+]\t%s (libarchive + libgringotts)\n", _("Backup support")); #else str = g_strdup_printf (" [-]\t%s (libarchive + libgringotts)\n", _("Backup support")); #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef PRINTING_SUPPORT str = g_strdup_printf (" [+]\t%s\n", _("Printing support")); #else str = g_strdup_printf (" [-]\t%s\n", _("Printing support")); #endif /* PRINTING_SUPPORT */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); #ifdef HAVE_GTKSPELL str = g_strdup_printf (" [+]\t%s (gtkspell)\n", _("Spell checker support")); #else str = g_strdup_printf (" [-]\t%s (gtkspell)\n", _("Spell checker support")); #endif /* HAVE_GTKSPELL */ gtk_text_buffer_insert (appGUI->about_entry_buffer, &appGUI->about_entry_iter, str, -1); g_free (str); gtk_widget_grab_focus (GTK_WIDGET (appGUI->scrolled_window)); } /* ========================================================================== */ static void about_switch_buttons (gboolean left, GUI *appGUI) { if (left == TRUE && appGUI->about_counter > 0) { --appGUI->about_counter; } else if (left == FALSE && appGUI->about_counter < 2) { appGUI->about_counter++; } if (appGUI->about_counter == 0){ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->about_radiobutton), TRUE); g_signal_emit_by_name (G_OBJECT (appGUI->about_radiobutton), "released"); } else if (appGUI->about_counter == 1) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->help_radiobutton), TRUE); g_signal_emit_by_name (G_OBJECT (appGUI->help_radiobutton), "released"); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->license_radiobutton), TRUE); g_signal_emit_by_name (G_OBJECT (appGUI->license_radiobutton), "released"); } } /* ========================================================================== */ static void button_released_cb (GtkButton *button, GUI *appGUI) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->about_radiobutton)) == TRUE) { display_about (appGUI); appGUI->about_counter = 0; } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->help_radiobutton)) == TRUE) { display_help (appGUI); appGUI->about_counter = 1; } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->license_radiobutton)) == TRUE) { display_license (appGUI); appGUI->about_counter = 2; } } /* ========================================================================== */ void gui_create_about (GtkWidget *vbox_top, GUI *appGUI) { GtkWidget *hbox = NULL, *vbox = NULL; GtkWidget *label; GtkWidget *hseparator; GtkWidget *logo_area; GdkPixbuf *logo, *logo_scaled = NULL; GtkWidget *viewport; GtkWidget *hbuttonbox = NULL; GSList *radiobutton_group = NULL; char *str; appGUI->about_counter = 0; appGUI->about_vbox = GTK_BOX (vbox_top); logo_area = gtk_image_new (); logo = gdk_pixbuf_new_from_inline (-1, osmo_logo, FALSE, NULL); gtk_widget_show (logo_area); gtk_box_pack_start (GTK_BOX (vbox_top), logo_area, FALSE, TRUE, 0); if (appGUI->tiny_gui == TRUE) { logo_scaled = gdk_pixbuf_scale_simple (logo, gdk_pixbuf_get_width (logo) / 2, gdk_pixbuf_get_height (logo) / 2, GDK_INTERP_HYPER); } #ifndef REV str = g_strdup_printf ("%s %s", _("version"), VERSION); #else str = g_strdup_printf ("%s %d", _("SVN revision"), REV); #endif label = gtk_label_new (str); g_free (str); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (vbox_top), label, FALSE, TRUE, 4); if (logo_scaled != NULL) { gtk_image_set_from_pixbuf (GTK_IMAGE (logo_area), logo_scaled); g_object_unref (logo_scaled); } else { gtk_image_set_from_pixbuf (GTK_IMAGE (logo_area), logo); g_object_unref (logo); } /*--------------------------------------------------------------------------*/ vbox = gtk_vbox_new (FALSE, 4); gtk_widget_show (vbox); gtk_box_pack_start (GTK_BOX (vbox_top), vbox, FALSE, TRUE, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, TRUE, 0); if (appGUI->tiny_gui == TRUE) { hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); } else { hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); } if (appGUI->tiny_gui == TRUE) { appGUI->about_radiobutton = utl_gui_stock_label_radio_button (NULL, OSMO_STOCK_ABOUT, GTK_ICON_SIZE_LARGE_TOOLBAR); } else { appGUI->about_radiobutton = utl_gui_stock_label_radio_button (_("About"), OSMO_STOCK_ABOUT, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->about_radiobutton); } gtk_widget_show (appGUI->about_radiobutton); gtk_button_set_relief (GTK_BUTTON (appGUI->about_radiobutton), GTK_RELIEF_NONE); GTK_WIDGET_UNSET_FLAGS (appGUI->about_radiobutton, GTK_CAN_FOCUS); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->about_radiobutton), radiobutton_group); radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->about_radiobutton)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->about_radiobutton), TRUE); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (appGUI->about_radiobutton), FALSE); g_signal_connect (G_OBJECT (appGUI->about_radiobutton), "released", G_CALLBACK (button_released_cb), appGUI); if (appGUI->tiny_gui == TRUE) { appGUI->help_radiobutton = utl_gui_stock_label_radio_button (NULL, OSMO_STOCK_HELP, GTK_ICON_SIZE_LARGE_TOOLBAR); } else { appGUI->help_radiobutton = utl_gui_stock_label_radio_button (_("Key shortcuts"), OSMO_STOCK_HELP, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->help_radiobutton); } gtk_widget_show (appGUI->help_radiobutton); gtk_button_set_relief (GTK_BUTTON (appGUI->help_radiobutton), GTK_RELIEF_NONE); GTK_WIDGET_UNSET_FLAGS (appGUI->help_radiobutton, GTK_CAN_FOCUS); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->help_radiobutton), radiobutton_group); radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->help_radiobutton)); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (appGUI->help_radiobutton), FALSE); g_signal_connect (G_OBJECT (appGUI->help_radiobutton), "released", G_CALLBACK (button_released_cb), appGUI); if (appGUI->tiny_gui == TRUE) { appGUI->license_radiobutton = utl_gui_stock_label_radio_button (NULL, OSMO_STOCK_LICENSE, GTK_ICON_SIZE_LARGE_TOOLBAR); } else { appGUI->license_radiobutton = utl_gui_stock_label_radio_button (_("License"), OSMO_STOCK_LICENSE, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->license_radiobutton); } gtk_widget_show (appGUI->license_radiobutton); gtk_button_set_relief (GTK_BUTTON (appGUI->license_radiobutton), GTK_RELIEF_NONE); GTK_WIDGET_UNSET_FLAGS (appGUI->license_radiobutton, GTK_CAN_FOCUS); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->license_radiobutton), radiobutton_group); radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->license_radiobutton)); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (appGUI->license_radiobutton), FALSE); g_signal_connect (G_OBJECT (appGUI->license_radiobutton), "released", G_CALLBACK (button_released_cb), appGUI); if (appGUI->tiny_gui == TRUE) { gtk_box_pack_end (GTK_BOX (hbox), appGUI->license_radiobutton, FALSE, TRUE, 0); gtk_box_pack_end (GTK_BOX (hbox), appGUI->help_radiobutton, FALSE, TRUE, 0); gtk_box_pack_end (GTK_BOX (hbox), appGUI->about_radiobutton, FALSE, TRUE, 0); } hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, TRUE, 0); /*--------------------------------------------------------------------------*/ appGUI->scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox_top), appGUI->scrolled_window, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_show (appGUI->scrolled_window); viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport); gtk_container_set_border_width (GTK_CONTAINER (viewport), 0); gtk_container_add (GTK_CONTAINER (appGUI->scrolled_window), viewport); appGUI->about_entry_buffer = gtk_text_buffer_new (NULL); gtk_text_buffer_get_iter_at_offset (appGUI->about_entry_buffer, &appGUI->about_entry_iter, 0); gtk_text_buffer_create_tag (appGUI->about_entry_buffer, "fixed", "family", "monospace", NULL); gtk_text_buffer_create_tag (appGUI->about_entry_buffer, "bold", "weight", PANGO_WEIGHT_ULTRABOLD, NULL); gtk_text_buffer_create_tag (appGUI->about_entry_buffer, "big", "size", 16 * PANGO_SCALE, NULL); gtk_text_buffer_create_tag (appGUI->about_entry_buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); gtk_text_buffer_create_tag (appGUI->about_entry_buffer, "center", "justification", GTK_JUSTIFY_CENTER, NULL); gtk_text_buffer_get_iter_at_offset (appGUI->about_entry_buffer, &appGUI->about_entry_iter, 0); appGUI->about_textview = gtk_text_view_new_with_buffer (appGUI->about_entry_buffer); gtk_container_set_border_width (GTK_CONTAINER (appGUI->about_textview), 1); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->about_textview), FALSE); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->about_textview), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->about_textview), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (appGUI->about_textview), 2); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (appGUI->about_textview), 6); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (appGUI->about_textview), 6); gtk_widget_show (appGUI->about_textview); gtk_container_add (GTK_CONTAINER (viewport), appGUI->about_textview); utl_gui_url_setup (&appGUI->about_links_list, &appGUI->about_link_index, appGUI->about_textview, appGUI); display_about (appGUI); } /* ========================================================================== */ osmo-0.2.14/src/contacts_import.h000664 001750 001750 00000002332 12561325524 016702 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_IMPORT_H #define _CONTACTS_IMPORT_H #include "gui.h" enum { IMPORT_TYPE_FILE = 0, IMPORT_TYPE_SYNCML }; enum { SYNCML_BLUETOOTH = 0, SYNCML_USB }; void import_contacts_show_dialog (GUI *appGUI); gboolean import_contacts_from_csv_file (GUI *appGUI); gboolean add_csv_records (gchar *filename, GUI *appGUI); #endif /* _CONTACTS_IMPORT_H */ osmo-0.2.14/src/utils_date.h000664 001750 001750 00000007045 12561325524 015635 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _UTILS_DATE_H #define _UTILS_DATE_H #include "gui.h" #define LEAP_YEAR 2008 enum { DATE_DD_MM_YYYY = 0, /* do not change order */ DATE_MM_DD_YYYY, DATE_YYYY_MM_DD, DATE_YYYY_DD_MM, DATE_NAME_DAY, DATE_DAY_OF_WEEK_NAME, DATE_FULL, /* last entry */ DATE_LOCALE }; enum { D_BAD_DAY = 0, D_MONDAY = 1, D_TUESDAY = 2, D_WEDNESDAY = 4, D_THURSDAY = 8, D_FRIDAY = 16, D_SATURDAY = 32, D_SUNDAY = 64, D_WEEK = 127 }; GDate * utl_date_new_current (void); guint utl_date_get_current_day (void); guint utl_date_get_current_month (void); guint utl_date_get_current_year (void); guint32 utl_date_get_current_julian (void); void utl_date_get_current_dmy (gint *day, gint *month, gint *year); guint utl_date_get_days_in_month (const GDate *date); gboolean utl_date_set_valid_day (GDate *date, gint day); gboolean utl_date_set_valid_dmy (gint *day, gint month, gint year); void utl_date_diff (const GDate *date1, const GDate *date2, gint *day, gint *month, gint *year); gboolean utl_date_order (GDate *date1, GDate *date2); void utl_date_set_nearest_weekday (GDate *date, gint weekdays, gboolean month_mode); gchar * utl_date_print (const GDate *d, gint date_format, gint override_locale); gchar * utl_date_print_j (guint32 julian, gint date_format, gint override_locale); gchar * utl_date_get_format_str (gint date_format, gint override_locale); void utl_date_get_dmy (const GDate *date, gint *day, gint *month, gint *year); void utl_date_julian_to_dmy (guint32 julian, gint *day, gint *month, gint *year); guint32 utl_date_dmy_to_julian (guint day, guint month, guint year); /* Deprecated: */ guint utl_get_month_length (guint leap_year, guint month); guint utl_get_days_in_months (guint leap_year, guint month); glong utl_year_to_days (guint year); glong utl_calc_days (guint year, guint mm, guint dd); glong utl_dates_difference (guint year1, guint mm1, guint dd1, guint year2, guint mm2, guint dd2); guint utl_day_of_week (guint year, guint mm, guint dd); guint utl_weeks_in_year (guint year); guint utl_get_week_number (guint year, guint mm, guint dd); gboolean utl_week_of_year (guint *week, guint *year, guint mm, guint dd); #endif /* _UTILS_DATE_H */ osmo-0.2.14/src/utils_date.c000664 001750 001750 00000024035 12561325524 015626 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "i18n.h" #include "utils.h" #include "utils_date.h" /*============================================================================*/ GDate * utl_date_new_current (void) { GDate *d = g_date_new (); g_date_set_time_t (d, time (NULL)); return d; } /*============================================================================*/ guint utl_date_get_current_day (void) { GDate *d = utl_date_new_current (); guint day = g_date_get_day (d); g_date_free (d); return day; } /*============================================================================*/ guint utl_date_get_current_month (void) { GDate *d = utl_date_new_current (); guint month = g_date_get_month (d); g_date_free (d); return month; } /*============================================================================*/ guint utl_date_get_current_year (void) { GDate *d = utl_date_new_current (); guint year = g_date_get_year (d); g_date_free (d); return year; } /*============================================================================*/ guint32 utl_date_get_current_julian (void) { GDate *d = utl_date_new_current (); guint32 julian = g_date_get_julian (d); g_date_free (d); return julian; } /*============================================================================*/ void utl_date_get_current_dmy (gint *day, gint *month, gint *year) { GDate *d = utl_date_new_current (); if (day != NULL) *day = g_date_get_day (d); if (month != NULL) *month = g_date_get_month (d); if (year != NULL) *year = g_date_get_year (d); g_date_free (d); } /*============================================================================*/ guint utl_date_get_days_in_month (const GDate *date) { g_return_val_if_fail (g_date_valid (date), 0); return g_date_get_days_in_month (g_date_get_month (date), g_date_get_year (date)); } /*============================================================================*/ gboolean utl_date_set_valid_day (GDate *date, gint day) { gint days = utl_date_get_days_in_month (date); if (day > days) { g_date_set_day (date, days); return TRUE; } g_date_set_day (date, day); return FALSE; } /*============================================================================*/ gboolean utl_date_set_valid_dmy (gint *day, gint month, gint year) { gint days = g_date_get_days_in_month (month, year); if (*day > days) { *day = days; return TRUE; } return FALSE; } /*============================================================================*/ void utl_date_diff (const GDate *date1, const GDate *date2, gint *day, gint *month, gint *year) { g_return_if_fail (g_date_valid (date1)); g_return_if_fail (g_date_valid (date2)); g_return_if_fail (g_date_compare (date1, date2) <= 0); *day = g_date_get_day (date2) - g_date_get_day (date1); *month = g_date_get_month (date2) - g_date_get_month (date1); *year = g_date_get_year (date2) - g_date_get_year (date1); if (*day < 0) { *day += utl_date_get_days_in_month (date1); *month -= 1; } if (*month < 0) { *month += 12; *year -= 1; } } /*============================================================================*/ gboolean utl_date_order (GDate *date1, GDate *date2) { g_return_val_if_fail (g_date_valid (date1), FALSE); g_return_val_if_fail (g_date_valid (date2), FALSE); if (g_date_compare (date1, date2) > 0) { GDate tmp = *date1; *date1 = *date2; *date2 = tmp; return TRUE; } else return FALSE; } /*============================================================================*/ void utl_date_set_nearest_weekday (GDate *date, gint weekdays, gboolean month_mode) { gint day, start_day, days_in_month; gint i, j; if (weekdays == D_WEEK) return; g_return_if_fail (weekdays > D_BAD_DAY && weekdays <= D_WEEK); g_return_if_fail (g_date_valid (date)); day = g_date_get_weekday (date) - 1; if (month_mode == TRUE) { days_in_month = utl_date_get_days_in_month (date); start_day = g_date_get_day (date); for (i = 0; i < 7; i++) { if (weekdays & (1 << ((day + i) % 7))) break; } for (j = 0; j < 7; j++) { if (weekdays & (1 << ((day + 7 - j) % 7))) break; } if (start_day + i > days_in_month) i = 7; if (start_day - j < 1) j = 7; if (i <= j) { if (i > 0) g_date_add_days (date, i); } else { if (j > 0) g_date_subtract_days (date, j); } } else { for (i = 0; i < 7; i++) { if (weekdays & (1 << ((day + i) % 7))) break; } if (i > 0) g_date_add_days (date, i); } } /*============================================================================*/ gchar * utl_date_print (const GDate *d, gint date_format, gint override_locale) { gchar date_str[BUFFER_SIZE], *format; g_return_val_if_fail (g_date_valid (d), NULL); format = utl_date_get_format_str (date_format, override_locale); g_date_strftime (date_str, BUFFER_SIZE, format, d); return g_strdup (date_str); } /*============================================================================*/ gchar * utl_date_print_j (guint32 julian, gint date_format, gint override_locale) { gchar *date_str; if (g_date_valid_julian (julian)) { GDate *d = g_date_new_julian (julian); date_str = utl_date_print (d, date_format, override_locale); g_date_free (d); } else date_str = g_strdup (_("No date")); return date_str; } /*============================================================================*/ gchar * utl_date_get_format_str (gint date_format, gint override_locale) { gchar *date_format_str[] = { "%d-%m-%Y", "%m-%d-%Y", "%Y-%m-%d", "%Y-%d-%m", "%e %B", "%A", "%e %B %Y", "%x" }; if (!override_locale) return date_format_str[DATE_LOCALE]; g_return_val_if_fail (date_format >= DATE_DD_MM_YYYY && date_format <= DATE_FULL, NULL); return date_format_str[date_format]; } /*============================================================================*/ void utl_date_get_dmy (const GDate *date, gint *day, gint *month, gint *year) { g_return_if_fail (g_date_valid (date)); if (day != NULL) *day = g_date_get_day (date); if (month != NULL) *month = g_date_get_month (date); if (year != NULL) *year = g_date_get_year (date); } /*============================================================================*/ void utl_date_julian_to_dmy (guint32 julian, gint *day, gint *month, gint *year) { g_return_if_fail (g_date_valid_julian (julian)); GDate *d = g_date_new_julian (julian); if (day != NULL) *day = g_date_get_day (d); if (month != NULL) *month = g_date_get_month (d); if (year != NULL) *year = g_date_get_year (d); g_date_free (d); } /*============================================================================*/ guint32 utl_date_dmy_to_julian (guint day, guint month, guint year) { g_return_val_if_fail (g_date_valid_dmy (day, month, year), 0); GDate *d = g_date_new_dmy (day, month, year); guint32 julian = g_date_get_julian (d); g_date_free (d); return julian; } /*============================================================================*/ /* * lib_date routines * Copyright (c) 1995, 1996, 1997, 1998 by Steffen Beyer * */ guint utl_get_month_length (guint leap_year, guint month) { const guint month_length[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; return month_length[leap_year][month]; } guint utl_get_days_in_months (guint leap_year, guint month) { const guint days_in_months[2][14] = { { 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, { 0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } }; return days_in_months[leap_year][month]; } glong utl_year_to_days (guint year) { return( year * 365L + (year / 4) - (year / 100) + (year / 400) ); } glong utl_calc_days (guint year, guint mm, guint dd) { gboolean lp; if (year < 1) return(0L); if ((mm < 1) || (mm > 12)) return(0L); if ((dd < 1) || (dd > utl_get_month_length((lp = g_date_is_leap_year(year)), mm))) return(0L); return( utl_year_to_days(--year) + utl_get_days_in_months(lp, mm) + dd ); } glong utl_dates_difference (guint year1, guint mm1, guint dd1, guint year2, guint mm2, guint dd2) { return (utl_calc_days(year2, mm2, dd2) - utl_calc_days(year1, mm1, dd1)); } guint utl_day_of_week (guint year, guint mm, guint dd) { glong days; days = utl_calc_days(year, mm, dd); if (days > 0L) { days--; days %= 7L; days++; } return( (guint) days ); } guint utl_weeks_in_year (guint year) { return(52 + ((utl_day_of_week(year, 1, 1) == 4) || (utl_day_of_week(year, 12, 31) == 4))); } guint utl_get_week_number (guint year, guint mm, guint dd) { guint first; first = utl_day_of_week(year,1,1) - 1; return( (guint) ( (utl_dates_difference(year,1,1, year,mm,dd) + first) / 7L ) + (first < 4) ); } gboolean utl_week_of_year (guint *week, guint *year, guint mm, guint dd) { if (g_date_valid_dmy (dd, mm, *year)) { *week = utl_get_week_number(*year, mm, dd); if (*week == 0) *week = utl_weeks_in_year(--(*year)); else if (*week > utl_weeks_in_year(*year)) { *week = 1; (*year)++; } return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/tasks_export.c000664 001750 001750 00000015276 12561325524 016226 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "tasks_export.h" #include "i18n.h" #include "utils.h" #include "utils_gui.h" #include "tasks.h" #include "tasks_utils.h" #include "calendar_utils.h" #include "options_prefs.h" #if defined(TASKS_ENABLED) && defined(HAVE_LIBICAL) #include #include #include #include /*-------------------------------------------------------------------------------------*/ gboolean export_tasks_to_file (GUI *appGUI) { gchar tmpbuf[BUFFER_SIZE]; gint n, ret; gint day, month, year, due_time; guint32 julian_day; gchar *filename, *summary, *date, *priority, *description, *category; GtkWidget *dialog; GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; icalset *ics_file; struct icaltimetype atime; icalcomponent *event, *calendar; icalproperty *prop; if (get_number_of_visible_tasks_with_date (appGUI) == 0) { utl_gui_create_dialog (GTK_MESSAGE_ERROR, _("No tasks with defined date found."), GTK_WINDOW(appGUI->main_window)); return FALSE; } dialog = gtk_file_chooser_dialog_new (_("Save tasks"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position (GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(dialog), FALSE); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER(dialog), utl_add_timestamp_to_filename ("tasks", "ics")); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER(dialog), TRUE); ret = gtk_dialog_run(GTK_DIALOG(dialog)); if (ret == GTK_RESPONSE_CANCEL || ret == GTK_RESPONSE_DELETE_EVENT) { gtk_widget_destroy(dialog); return FALSE; } filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); gtk_widget_destroy(dialog); if (utl_gui_check_overwrite_file (filename, appGUI->main_window, appGUI) != 0) { return FALSE; } else { g_unlink (filename); } ics_file = icalset_new_file (filename); if (ics_file == NULL) { g_free (filename); return FALSE; } calendar = icalcomponent_new (ICAL_VCALENDAR_COMPONENT); prop = icalproperty_new_prodid ("//Clay//NONSGML Osmo PIM//EN"); icalcomponent_add_property (calendar, prop); prop = icalproperty_new_version (VERSION); icalcomponent_add_property (calendar, prop); sort_path = gtk_tree_path_new_first (); n = 0; while (gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, sort_path) == TRUE) { if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, path); gtk_tree_model_get (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_SUMMARY, &summary, TA_COLUMN_DESCRIPTION, &description, TA_COLUMN_CATEGORY, &category, TA_COLUMN_DUE_DATE, &date, TA_COLUMN_DUE_TIME, &due_time, TA_COLUMN_DUE_DATE_JULIAN, &julian_day, TA_COLUMN_PRIORITY, &priority, -1); if (julian_day != 0) { event = icalcomponent_new (ICAL_VEVENT_COMPONENT); utl_date_julian_to_dmy (julian_day, &day, &month, &year); atime.day = day; atime.month = month; atime.year = year; if (due_time == -1) { atime.is_date = TRUE; } else { atime.hour = due_time / 3600; atime.minute = (due_time % 3600) / 60; atime.second = 0; atime.is_date = FALSE; } g_snprintf (tmpbuf, BUFFER_SIZE, "id%d%d%d%d@clayo.org", year, month, day, n); prop = icalproperty_new_uid (tmpbuf); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_priority (tsk_get_priority_index(priority)); icalcomponent_add_property (event, prop); icalproperty_free (prop); if (g_utf8_collate(category, _("None"))) { prop = icalproperty_new_categories (category); icalcomponent_add_property (event, prop); icalproperty_free (prop); } prop = icalproperty_new_summary (summary); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_description (description); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_dtstamp (atime); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_dtstart (atime); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_dtend (atime); icalcomponent_add_property (event, prop); icalproperty_free (prop); icalcomponent_add_component (calendar, event); icalcomponent_free (event); g_free (summary); g_free (description); g_free (category); n++; } gtk_tree_path_free (path); } gtk_tree_path_free (filter_path); } } gtk_tree_path_next (sort_path); } icalset_add_component (ics_file, calendar); icalfileset_commit (ics_file); icalcomponent_free (calendar); g_free(filename); sprintf (tmpbuf, "%d %s", n, _("tasks exported")); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW(appGUI->main_window)); return TRUE; } /*-------------------------------------------------------------------------------------*/ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/notes.c000664 001750 001750 00000255266 12561325524 014635 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "about.h" #include "backup.h" #include "notes.h" #include "i18n.h" #include "calendar.h" #include "calendar_notes.h" #include "options_prefs.h" #include "preferences_gui.h" #include "notes_items.h" #include "calendar_utils.h" #include "utils.h" #include "utils_date.h" #include "utils_date_time.h" #include "utils_gui.h" #include "stock_icons.h" #include "gtksourceiter.h" #ifdef NOTES_ENABLED #ifdef HAVE_LIBGRINGOTTS #include #endif /* HAVE_LIBGRINGOTTS */ #ifdef HAVE_GTKSPELL #include #endif /* HAVE_GTKSPELL */ /*============================================================================*/ static void show_about_window_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *window = opt_create_about_window (appGUI); gtk_widget_show (window); } /*============================================================================*/ static void show_preferences_window_cb (GtkWidget *widget, GUI *appGUI) { appGUI->opt->window = opt_create_preferences_window (appGUI); gtk_widget_show (appGUI->opt->window); gint page = gtk_notebook_page_num (GTK_NOTEBOOK (appGUI->opt->notebook), appGUI->opt->notes); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->opt->notebook), page); } /*------------------------------------------------------------------------------*/ void notes_show_selector_editor (gint mode, GUI *appGUI) { GtkTextBuffer *buffer; GtkTextMark *cursor; GtkTextIter iter; GtkTreeIter n_iter; GtkTreePath *path, *sort_path, *filter_path; gchar *name, *fontname; gint line; gboolean remember_cursor, readonly = FALSE; gchar tmpbuf[BUFFER_SIZE]; if (mode == SELECTOR) { gtk_widget_show (appGUI->nte->vbox_selector); gtk_widget_hide (appGUI->nte->vbox_editor); gtk_widget_grab_focus (appGUI->nte->notes_find_entry); appGUI->nte->editor_active = FALSE; } else if (mode == EDITOR) { appGUI->nte->htmlViewPosition = 0; gtk_widget_hide (appGUI->nte->find_hbox); gtk_widget_hide (appGUI->nte->vbox_selector); gtk_widget_show (appGUI->nte->vbox_editor); gtk_entry_set_text(GTK_ENTRY(appGUI->nte->find_entry), ""); gtk_widget_grab_focus (appGUI->nte->editor_textview); appGUI->nte->editor_active = TRUE; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->nte->notes_list), &sort_path, NULL); if (sort_path == NULL) return; filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->nte->notes_sort), sort_path); gtk_tree_path_free (sort_path); if (filter_path == NULL) return; path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), filter_path); gtk_tree_path_free (filter_path); gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &n_iter, path); gtk_tree_model_get (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &n_iter, N_COLUMN_NAME, &name, N_COLUMN_EDITOR_LINE, &line, N_COLUMN_REMEMBER_EDITOR_LINE, &remember_cursor, N_COLUMN_EDITOR_READONLY, &readonly, N_COLUMN_FONTNAME, &fontname, -1); sprintf (tmpbuf, "%s", name); gtk_label_set_markup (GTK_LABEL (appGUI->nte->title_label), tmpbuf); appGUI->nte->fd_notes_font = pango_font_description_from_string(fontname); gtk_widget_modify_font (GTK_WIDGET(appGUI->nte->editor_textview), appGUI->nte->fd_notes_font); gtk_font_button_set_font_name (GTK_FONT_BUTTON(appGUI->nte->font_picker), fontname); g_free(name); g_free(fontname); gtk_tree_path_free (path); /* restore cursor position */ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); if (remember_cursor == TRUE) { gtk_text_buffer_get_iter_at_line (GTK_TEXT_BUFFER (buffer), &iter, line); gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (buffer), &iter); cursor = gtk_text_buffer_get_mark (buffer, "insert"); gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (appGUI->nte->editor_textview), cursor, 0.0, TRUE, 0.0, 0.0); } else { gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &iter); gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (buffer), &iter); gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (appGUI->nte->editor_textview), &iter, 0.0, FALSE, 0.0, 0.0); } /* read-only */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->nte->readonly_checkbutton), readonly); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->nte->editor_textview), !readonly); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->nte->editor_textview), !readonly); gtk_widget_set_sensitive (appGUI->nte->font_picker, !readonly); appGUI->nte->note_read_only = readonly; #ifdef HAVE_LIBWEBKIT update_readonly_view (appGUI); #endif /* HAVE_LIBWEBKIT */ } } /*------------------------------------------------------------------------------*/ void editor_save_buffer_cb (GtkWidget *widget, gpointer user_data) { GtkTextBuffer *buffer; guchar *text; guint32 current_date; gint current_time; GtkTreeIter iter, filter_iter, sort_iter; GtkTreeModel *model; GUI *appGUI = (GUI *)user_data; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); text = (unsigned char*) utl_gui_text_buffer_get_text_with_tags (buffer); if (appGUI->nte->encrypted == TRUE) { #ifdef HAVE_LIBGRINGOTTS if (appGUI->nte->keyholder != NULL && appGUI->nte->context != NULL && appGUI->nte->filename != NULL) { grg_encrypt_file (appGUI->nte->context, appGUI->nte->keyholder, (unsigned char*) notes_get_full_filename(appGUI->nte->filename, appGUI), (guchar *) text, -1); grg_free (appGUI->nte->context, text, -1); } #endif /* HAVE_LIBGRINGOTTS */ } else { g_file_set_contents (notes_get_full_filename(appGUI->nte->filename, appGUI), (gchar *) text, strlen((gchar *) text), NULL); } appGUI->nte->changed = FALSE; gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/save"), FALSE); sort_iter = utl_gui_get_first_selection_iter(appGUI->nte->notes_list_selection, &model); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(appGUI->nte->notes_sort), &filter_iter, &sort_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), &iter, &filter_iter); current_date = utl_date_get_current_julian(); current_time = utl_time_get_current_seconds(); gtk_list_store_set(appGUI->nte->notes_list_store, &iter, N_COLUMN_LAST_CHANGES_DATE, get_date_time_str(current_date, current_time), N_COLUMN_LAST_CHANGES_DATE_JULIAN, current_date, N_COLUMN_LAST_CHANGES_TIME, current_time, -1); } /*------------------------------------------------------------------------------*/ void editor_find_text_show_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_widget_show (appGUI->nte->find_hbox); gtk_widget_grab_focus (appGUI->nte->find_entry); appGUI->nte->find_hbox_visible = TRUE; } /*------------------------------------------------------------------------------*/ void editor_find_text_hide_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; utl_gui_change_bg_widget_state (appGUI->nte->find_entry, NULL, appGUI); gtk_widget_hide (appGUI->nte->find_hbox); gtk_widget_grab_focus (appGUI->nte->editor_textview); appGUI->nte->find_hbox_visible = FALSE; } /*------------------------------------------------------------------------------*/ void editor_close_cb (GtkWidget *widget, gpointer user_data) { GtkTextBuffer *buffer; GtkTextIter iter_s, iter_e, l_iter; GtkTreeIter n_iter; GtkTreePath *path, *sort_path, *filter_path; gint response, line; GtkTextMark *cursor; gchar tmpbuf[BUFFER_SIZE]; GtkClipboard *clipboard; GUI *appGUI = (GUI *)user_data; if (appGUI->nte->changed == TRUE) { sprintf (tmpbuf, "%s\n\n%s", _("The note has changed."), _("Do you want to save it?")); response = utl_gui_create_dialog (GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->main_window)); if (response == GTK_RESPONSE_YES) { editor_save_buffer_cb (NULL, appGUI); } else if (response != GTK_RESPONSE_NO) { return; } } #ifdef HAVE_GTKSPELL gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/spell_check")), FALSE); #endif /* HAVE_GTKSPELL */ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); #ifdef HAVE_LIBGRINGOTTS if (appGUI->nte->keyholder != NULL && appGUI->nte->context != NULL) { grg_key_free (appGUI->nte->context, appGUI->nte->keyholder); appGUI->nte->keyholder = NULL; grg_context_free (appGUI->nte->context); appGUI->nte->context = NULL; /* clear clipboards for encrypted notes */ clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); gtk_clipboard_clear(clipboard); gtk_clipboard_set_text(clipboard, "", 0); clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); gtk_clipboard_clear(clipboard); gtk_clipboard_set_text(clipboard, "", 0); } #endif /* HAVE_LIBGRINGOTTS */ if (appGUI->nte->filename != NULL) { g_free(appGUI->nte->filename); appGUI->nte->filename = NULL; } cursor = gtk_text_buffer_get_mark (buffer, "insert"); gtk_text_buffer_get_iter_at_mark (buffer, &l_iter, cursor); line = gtk_text_iter_get_line (&l_iter); gtk_text_buffer_get_bounds(buffer, &iter_s, &iter_e); gtk_text_buffer_delete(buffer, &iter_s, &iter_e); appGUI->nte->buffer_check_modify_enable = FALSE; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->nte->notes_list), &sort_path, NULL); if (sort_path == NULL) return; filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->nte->notes_sort), sort_path); gtk_tree_path_free (sort_path); if (filter_path == NULL) return; path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), filter_path); gtk_tree_path_free (filter_path); gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &n_iter, path); gtk_list_store_set (appGUI->nte->notes_list_store, &n_iter, N_COLUMN_EDITOR_LINE, line, N_COLUMN_EDITOR_READONLY, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->nte->readonly_checkbutton)), N_COLUMN_FONTNAME, gtk_font_button_get_font_name (GTK_FONT_BUTTON(appGUI->nte->font_picker)), -1); gtk_tree_path_free (path); notes_show_selector_editor (SELECTOR, appGUI); gtk_widget_grab_focus (appGUI->nte->notes_list); } /*------------------------------------------------------------------------------*/ void set_text_attribute_cb (GtkWidget *widget, gpointer user_data) { GtkTextBuffer *buffer; gchar *tagname; GUI *appGUI = (GUI *)user_data; tagname = (gchar*) g_object_get_data (G_OBJECT (widget), "tag"); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); utl_gui_text_buffer_toggle_tags (buffer, tagname); g_signal_emit_by_name(G_OBJECT(buffer), "changed"); } /*------------------------------------------------------------------------------*/ void clear_text_attributes_cb (GtkButton *button, gpointer user_data) { GtkTextIter start, end; GtkTextBuffer *buffer; GUI *appGUI = (GUI *)user_data; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); gtk_text_buffer_get_selection_bounds (buffer, &start, &end); gtk_text_buffer_remove_all_tags (buffer, &start, &end); } /*------------------------------------------------------------------------------*/ void open_url_links_cb (GtkButton *button, gpointer user_data) { GtkTextIter start, end; GtkTextBuffer *buffer; GtkWidget *info_dialog; gchar *text; gint n, response = -1; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); gtk_text_buffer_get_selection_bounds (buffer, &start, &end); text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &start, &end, FALSE); n = utl_open_count_url_links (text, TRUE); if (n == 0) { utl_gui_create_dialog (GTK_MESSAGE_INFO, _("No URLs found in the selection..."), GTK_WINDOW(appGUI->main_window)); } else if (n == 1) { utl_open_count_url_links (text, FALSE); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%d %s\n\n%s", n, _("URLs will be opened in the default browser."), _("Do you want to continue?")); info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(appGUI->main_window), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, tmpbuf, NULL); gtk_window_set_title(GTK_WINDOW(info_dialog), _("Question")); gtk_window_set_position(GTK_WINDOW(info_dialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_widget_show (info_dialog); response = gtk_dialog_run(GTK_DIALOG(info_dialog)); gtk_widget_destroy(info_dialog); if (response == GTK_RESPONSE_YES) { utl_open_count_url_links (text, FALSE); } } } /*------------------------------------------------------------------------------*/ void add_notes_toolbar_selector_widget (GtkUIManager *notes_uim_widget, GtkWidget *widget, gpointer user_data) { GtkWidget *handle_box; GUI *appGUI = (GUI *)user_data; if (GTK_IS_TOOLBAR (widget)) { appGUI->nte->notes_toolbar_selector = GTK_TOOLBAR (widget); handle_box = gtk_handle_box_new (); gtk_widget_show (handle_box); gtk_container_add (GTK_CONTAINER (handle_box), widget); gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox_selector), handle_box, FALSE, FALSE, 0); g_signal_connect_swapped (widget, "destroy", G_CALLBACK (gtk_widget_destroy), handle_box); } else { gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox_selector), widget, FALSE, FALSE, 0); } gtk_widget_show (widget); } /*------------------------------------------------------------------------------*/ void add_notes_toolbar_editor_widget (GtkUIManager *notes_uim_widget, GtkWidget *widget, gpointer user_data) { GtkWidget *handle_box; GUI *appGUI = (GUI *)user_data; if (GTK_IS_TOOLBAR (widget)) { appGUI->nte->notes_toolbar_editor = GTK_TOOLBAR (widget); handle_box = gtk_handle_box_new (); gtk_widget_show (handle_box); gtk_container_add (GTK_CONTAINER (handle_box), widget); gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox_editor), handle_box, FALSE, FALSE, 0); g_signal_connect_swapped (widget, "destroy", G_CALLBACK (gtk_widget_destroy), handle_box); } else { gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox_editor), widget, FALSE, FALSE, 0); } gtk_widget_show (widget); } /*------------------------------------------------------------------------------*/ void notes_add_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; notes_add_entry (appGUI); } /*------------------------------------------------------------------------------*/ void notes_edit_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; notes_edit_dialog_show(appGUI->nte->notes_list, appGUI->nte->notes_filter, appGUI); } /*------------------------------------------------------------------------------*/ void notes_delete_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; notes_remove_dialog_show(appGUI); } /*------------------------------------------------------------------------------*/ void insert_current_date_and_time_cb (GtkWidget *widget, GUI *appGUI) { time_t tmm; gchar *datestr; if (config.use_system_date_in_notes == TRUE) { tmm = time (NULL); gtk_text_buffer_insert_at_cursor (gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)), asctime (localtime (&tmm)), -1); } else { datestr = utl_date_time_print_default (utl_date_get_current_julian (), utl_time_get_current_seconds (), FALSE); gtk_text_buffer_insert_at_cursor (gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)), datestr, -1); g_free (datestr); } } /*------------------------------------------------------------------------------*/ void insert_separator_cb (GtkWidget *widget, gpointer data) { gint chars, i; gchar tmpbuf[BUFFER_SIZE]; PangoLayout *layout; PangoRectangle logical_rect; GtkWidget *vscrollbar; GUI *appGUI = (GUI *)data; memset (tmpbuf, 0, BUFFER_SIZE); tmpbuf[0] = config.text_separator; layout = gtk_widget_create_pango_layout (appGUI->nte->editor_textview, NULL); pango_layout_set_font_description (layout, appGUI->nte->fd_notes_font); pango_layout_set_text (layout, tmpbuf, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (appGUI->nte->editor_scrolledwindow)); if (GTK_WIDGET_VISIBLE(vscrollbar) == TRUE) { chars = ((appGUI->nte->editor_textview)->allocation.width) / logical_rect.width; } else { chars = ((appGUI->nte->editor_textview)->allocation.width - utl_gui_get_sw_vscrollbar_width (appGUI->nte->editor_scrolledwindow)) / logical_rect.width; } chars = (chars > BUFFER_SIZE) ? BUFFER_SIZE - 2 : chars; g_object_unref (G_OBJECT(layout)); i = 0; tmpbuf[i++] = '\n'; while (i < chars) tmpbuf[i++] = config.text_separator; tmpbuf[i++] = '\n'; gtk_text_buffer_insert_at_cursor (gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)), tmpbuf, -1); } /*------------------------------------------------------------------------------*/ gchar * get_buffer_info_string (GtkTextBuffer *buffer, gboolean selection) { GtkTextIter start_iter, end_iter; gchar tmpbuf[BUFFER_SIZE]; gchar *text; PangoLogAttr *attrs; gint i, words, lines, chars, white_chars, bytes; if (selection == TRUE && gtk_text_buffer_get_has_selection (buffer) == FALSE) return g_strdup(""); if (selection == TRUE && gtk_text_buffer_get_has_selection (buffer) == TRUE) { gtk_text_buffer_get_selection_bounds (buffer, &start_iter, &end_iter); } else { gtk_text_buffer_get_start_iter (buffer, &start_iter); gtk_text_buffer_get_end_iter (buffer, &end_iter); } text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &start_iter, &end_iter, FALSE); if (text == NULL) return g_strdup(""); words = 0; white_chars = 0; lines = gtk_text_buffer_get_line_count (buffer); bytes = strlen (text); chars = g_utf8_strlen (text, -1); attrs = g_new0 (PangoLogAttr, chars + 1); /* based on code by Paolo Maggi */ pango_get_log_attrs (text, -1, 0, pango_language_from_string ("C"), attrs, chars + 1); for (i=0; i < chars; i++) { if (attrs[i].is_white) white_chars++; if (attrs[i].is_word_start) words++; } if (chars == 0) lines = 0; g_snprintf (tmpbuf, BUFFER_SIZE, "%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n", _("Words"), words, _("Lines"), lines, _("Characters"), chars, _("White characters"), white_chars, _("Bytes"), bytes); g_free (text); g_free (attrs); return g_strdup(tmpbuf); } /*------------------------------------------------------------------------------*/ void text_info_cb (GtkWidget *widget, gpointer user_data) { GtkTreePath *path, *sort_path, *filter_path; GtkTreeIter n_iter; GtkTextBuffer *buffer; guint32 modified_date, created_date; gint modified_time, created_time; gchar *modified_date_str, *created_date_str, *date_str, *day_str; gchar *txtinfo_normal, *txtinfo_selection; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->nte->notes_list), &sort_path, NULL); if (sort_path == NULL) return; filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->nte->notes_sort), sort_path); gtk_tree_path_free (sort_path); if (filter_path == NULL) return; path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), filter_path); gtk_tree_path_free (filter_path); gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &n_iter, path); gtk_tree_model_get (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &n_iter, N_COLUMN_LAST_CHANGES_DATE_JULIAN, &modified_date, N_COLUMN_LAST_CHANGES_TIME, &modified_time, N_COLUMN_CREATE_DATE_JULIAN, &created_date, N_COLUMN_CREATE_TIME, &created_time, -1); date_str = utl_date_time_print_default (modified_date, modified_time, FALSE); day_str = utl_date_print_j (modified_date, DATE_DAY_OF_WEEK_NAME, config.override_locale_settings); modified_date_str = g_strdup_printf ("%s (%s)", date_str, day_str); g_free (date_str); g_free (day_str); date_str = utl_date_time_print_default (created_date, created_time, FALSE); day_str = utl_date_print_j (created_date, DATE_DAY_OF_WEEK_NAME, config.override_locale_settings); created_date_str = g_strdup_printf ("%s (%s)", date_str, day_str); g_free (date_str); g_free (day_str); txtinfo_normal = get_buffer_info_string (buffer, FALSE); txtinfo_selection = get_buffer_info_string (buffer, TRUE); if (strlen(txtinfo_selection)) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n\n%s\n%s:\n\n%s\n\n%s: %s\n%s: %s", _("Document"), txtinfo_normal, _("Selection"), txtinfo_selection, _("Created"), created_date_str, _("Modified"), modified_date_str); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n\n%s\n\n%s: %s\n%s: %s", _("Document"), txtinfo_normal, _("Created"), created_date_str, _("Modified"), modified_date_str); } g_free (txtinfo_selection); g_free (txtinfo_normal); g_free (modified_date_str); g_free (created_date_str); gtk_tree_path_free (path); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW (appGUI->main_window)); } /*------------------------------------------------------------------------------*/ gint notes_list_dbclick_cb(GtkWidget * widget, GdkEventButton * event, gpointer func_data) { GUI *appGUI = (GUI *)func_data; if ((event->type==GDK_2BUTTON_PRESS) && (event->button == 1)) { if (gtk_tree_selection_count_selected_rows (appGUI->nte->notes_list_selection) == 1) { notes_enter_password (appGUI); } return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void text_buffer_modified_cb (GtkTextBuffer *textbuffer, gpointer user_data) { GUI *appGUI = (GUI *)user_data; if (appGUI->nte->buffer_check_modify_enable == FALSE) { appGUI->nte->changed = FALSE; gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/save"), FALSE); } else { appGUI->nte->changed = TRUE; gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/save"), TRUE); } } /*------------------------------------------------------------------------------*/ void notes_item_selected (GtkTreeSelection *selection, gpointer data) { gint selection_size; GUI *appGUI = (GUI *)data; selection_size = gtk_tree_selection_count_selected_rows (selection); gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/edit"), selection_size == 1); gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/delete"), selection_size > 0); } /*------------------------------------------------------------------------------*/ void find (gchar *find_text, GtkTextIter *iter, gboolean forward, GUI *appGUI) { GtkTextBuffer *buffer; GtkTextIter match_start, match_end; GtkTextMark *found_pos; gboolean flags, result; if (strlen(find_text)) { #ifdef HAVE_LIBWEBKIT if (iter == NULL) { /* webkit */ flags = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->nte->find_case_checkbutton)); result = webkit_web_view_search_text (WEBKIT_WEB_VIEW (appGUI->nte->html_webkitview), find_text, flags, forward, TRUE); if (result) { utl_gui_change_bg_widget_state (appGUI->nte->find_entry, COLOR_BG_OK, appGUI); } else { utl_gui_change_bg_widget_state (appGUI->nte->find_entry, COLOR_BG_FAIL, appGUI); } } else { #endif /* HAVE_LIBWEBKIT */ flags = GTK_SOURCE_SEARCH_TEXT_ONLY; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->nte->find_case_checkbutton)) == FALSE) { flags |= GTK_SOURCE_SEARCH_CASE_INSENSITIVE; } buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); if (forward == TRUE) { result = gtk_source_iter_forward_search (iter, find_text, flags, &match_start, &match_end, NULL); } else { result = gtk_source_iter_backward_search (iter, find_text, flags, &match_start, &match_end, NULL); } if (result) { utl_gui_change_bg_widget_state (appGUI->nte->find_entry, COLOR_BG_OK, appGUI); gtk_text_buffer_select_range (buffer, &match_start, &match_end); if (forward == TRUE) { gtk_text_buffer_create_mark (buffer, "last_pos", &match_end, FALSE); } else { gtk_text_buffer_create_mark (buffer, "last_pos", &match_start, FALSE); } found_pos = gtk_text_buffer_create_mark (buffer, "found_pos", &match_end, FALSE); gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (appGUI->nte->editor_textview), found_pos); gtk_text_buffer_delete_mark (buffer, found_pos); appGUI->nte->find_next_flag = TRUE; } else { utl_gui_change_bg_widget_state (appGUI->nte->find_entry, COLOR_BG_FAIL, appGUI); if (gtk_text_buffer_get_mark (buffer, "last_pos") != NULL) { gtk_text_buffer_delete_mark_by_name (buffer, "last_pos"); } appGUI->nte->find_next_flag = FALSE; } } #ifdef HAVE_LIBWEBKIT } #endif /* HAVE_LIBWEBKIT */ } /*------------------------------------------------------------------------------*/ void find_entry_action (gboolean forward, GUI *appGUI) { gchar *find_text; gboolean wkflag; GtkTextBuffer *buffer; GtkTextMark *last_pos; GtkTextIter iter; find_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->find_entry))); wkflag = FALSE; #ifdef HAVE_LIBWEBKIT wkflag = TRUE; #endif /* HAVE_LIBWEBKIT */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->nte->readonly_checkbutton)) && wkflag == TRUE) { find (find_text, NULL, forward, appGUI); } else { buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); if (appGUI->nte->find_next_flag == TRUE) { last_pos = gtk_text_buffer_get_mark (buffer, "last_pos"); if (last_pos == NULL) { appGUI->nte->find_next_flag = FALSE; g_free(find_text); return; } gtk_text_buffer_get_iter_at_mark (buffer, &iter, last_pos); find (find_text, &iter, forward, appGUI); } else { if (forward == TRUE) { gtk_text_buffer_get_start_iter (buffer, &iter); } else { gtk_text_buffer_get_end_iter (buffer, &iter); } find (find_text, &iter, forward, appGUI); } g_free(find_text); } } /*------------------------------------------------------------------------------*/ gint find_entry_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { editor_find_text_hide_cb (widget, appGUI); appGUI->nte->find_next_flag = FALSE; return TRUE; } else if (event->keyval == GDK_Return) { find_entry_action (TRUE, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void case_sensitive_toggle_cb (GtkToggleButton *togglebutton, gpointer data) { GUI *appGUI = (GUI *)data; appGUI->nte->find_next_flag = FALSE; } /*------------------------------------------------------------------------------*/ gboolean notes_category_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ void update_notes_items (GUI *appGUI) { GtkTreeIter iter; gint i; gchar tmpbuf[BUFFER_SIZE]; i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->nte->notes_filter), &iter, NULL, i++)); --i; if (!i) { sprintf (tmpbuf, "%s", _("no entries")); } else { sprintf (tmpbuf, "%4d %s", i, ngettext ("entry", "entries", i)); } gtk_label_set_markup (GTK_LABEL (appGUI->nte->n_items_label), tmpbuf); } /*------------------------------------------------------------------------------*/ void refresh_notes (GUI *appGUI) { GtkTreeIter iter; gint i; guint32 last_changes_date, create_date; gint last_changes_time, create_time; gchar *last_changes_time_str, *create_time_str; i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, N_COLUMN_LAST_CHANGES_DATE_JULIAN, &last_changes_date, N_COLUMN_LAST_CHANGES_TIME, &last_changes_time, N_COLUMN_CREATE_DATE_JULIAN, &create_date, N_COLUMN_CREATE_TIME, &create_time, -1); last_changes_time_str = g_strdup(get_date_time_str(last_changes_date, last_changes_time)); create_time_str = g_strdup(get_date_time_str(create_date, create_time)); gtk_list_store_set(appGUI->nte->notes_list_store, &iter, N_COLUMN_LAST_CHANGES_DATE, last_changes_time_str, N_COLUMN_CREATE_DATE, create_time_str, -1); g_free(last_changes_time_str); g_free(create_time_str); } update_notes_items(appGUI); } /*------------------------------------------------------------------------------*/ void notes_category_filter_cb (GtkComboBox *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; appGUI->nte->filter_index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); if (appGUI->nte->filter_index != -1) { gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter)); update_notes_items (appGUI); } } /*------------------------------------------------------------------------------*/ gboolean notes_list_filter_cb (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { gchar *category; gchar *value; gboolean result; GUI *appGUI = (GUI *)data; gtk_tree_model_get(model, iter, N_COLUMN_NAME, &value, N_COLUMN_CATEGORY, &category, -1); if (appGUI->nte->filter_index && (utl_gui_list_store_get_text_index(appGUI->opt->notes_category_store, category) != appGUI->nte->filter_index)) { result = FALSE; } else if (value == NULL) { result = FALSE; } else { const gchar *text = gtk_entry_get_text(GTK_ENTRY(appGUI->nte->notes_find_entry)); if (text == NULL) { result = TRUE; } else if (!g_utf8_strlen(text, -1)) { result = TRUE; } else { result = utl_text_strcasestr(value, text); } } g_free(category); g_free(value); return result; } /*------------------------------------------------------------------------------*/ gint notes_column_sort_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { gboolean type_a, type_b; gchar *name_a, *name_b; gchar *category_a, *category_b; guint32 last_changes_date_a, last_changes_date_b, create_date_a, create_date_b; gint last_changes_time_a, last_changes_time_b, create_time_a, create_time_b; gint diff; gint sort_column = GPOINTER_TO_INT(user_data); if(iter_a == NULL || iter_b == NULL) { return 0; } switch (sort_column) { case N_COLUMN_TYPE: gtk_tree_model_get(model, iter_a, N_COLUMN_ENCRYPTED, &type_a, -1); gtk_tree_model_get(model, iter_b, N_COLUMN_ENCRYPTED, &type_b, -1); if (type_a == type_b) { diff = 0; } else { diff = type_a == TRUE ? 1 : -1; } break; case N_COLUMN_NAME: gtk_tree_model_get(model, iter_a, N_COLUMN_NAME, &name_a, -1); gtk_tree_model_get(model, iter_b, N_COLUMN_NAME, &name_b, -1); diff = utl_text_strcmp(name_a, name_b); g_free(name_a); g_free(name_b); break; case N_COLUMN_CATEGORY: gtk_tree_model_get(model, iter_a, N_COLUMN_CATEGORY, &category_a, -1); gtk_tree_model_get(model, iter_b, N_COLUMN_CATEGORY, &category_b, -1); diff = utl_text_strcmp(category_a, category_b); g_free(category_a); g_free(category_b); break; case N_COLUMN_LAST_CHANGES_DATE: gtk_tree_model_get(model, iter_a, N_COLUMN_LAST_CHANGES_DATE_JULIAN, &last_changes_date_a, N_COLUMN_LAST_CHANGES_TIME, &last_changes_time_a, -1); gtk_tree_model_get(model, iter_b, N_COLUMN_LAST_CHANGES_DATE_JULIAN, &last_changes_date_b, N_COLUMN_LAST_CHANGES_TIME, &last_changes_time_b, -1); diff = utl_date_time_compare_js(last_changes_date_a, last_changes_time_a, last_changes_date_b, last_changes_time_b); break; case N_COLUMN_CREATE_DATE: gtk_tree_model_get(model, iter_a, N_COLUMN_CREATE_DATE_JULIAN, &create_date_a, N_COLUMN_CREATE_TIME, &create_time_a, -1); gtk_tree_model_get(model, iter_b, N_COLUMN_CREATE_DATE_JULIAN, &create_date_b, N_COLUMN_CREATE_TIME, &create_time_b, -1); diff = utl_date_time_compare_js(create_date_a, create_time_a, create_date_b, create_time_b); break; default: diff = 0; } return diff; } /*------------------------------------------------------------------------------*/ void notes_sort_column_changed_cb (GtkTreeSortable *sortable, gpointer user_data) { GtkSortType sort_order; gtk_tree_sortable_get_sort_column_id(sortable, &config.notes_sorting_column, &sort_order); config.notes_sorting_order = sort_order; } /*------------------------------------------------------------------------------*/ #ifdef HAVE_GTKSPELL void notes_spell_check_cb (GtkToggleToolButton *toggle_tool_button, gpointer data) { GUI *appGUI = (GUI *)data; GtkSpell *edSpell; if (gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (toggle_tool_button)) == TRUE) { edSpell = gtkspell_new_attach (GTK_TEXT_VIEW(appGUI->nte->editor_textview), NULL, NULL); if (config.override_locale_settings == TRUE) { gtkspell_set_language (edSpell, config.spell_lang, NULL); } else { gtkspell_set_language (edSpell, g_getenv ("LANG"), NULL); } } else { gtkspell_detach (gtkspell_get_from_text_view (GTK_TEXT_VIEW(appGUI->nte->editor_textview))); } } #endif /* HAVE_GTKSPELL */ /*------------------------------------------------------------------------------*/ void store_note_columns_info (GUI *appGUI) { gint n; config.notes_column_idx_0 = utl_gui_get_column_position (appGUI->nte->notes_columns[N_COLUMN_TYPE], GTK_TREE_VIEW(appGUI->nte->notes_list), MAX_VISIBLE_NOTE_COLUMNS, appGUI); config.notes_column_idx_1 = utl_gui_get_column_position (appGUI->nte->notes_columns[N_COLUMN_NAME], GTK_TREE_VIEW(appGUI->nte->notes_list), MAX_VISIBLE_NOTE_COLUMNS, appGUI); config.notes_column_idx_2 = utl_gui_get_column_position (appGUI->nte->notes_columns[N_COLUMN_CATEGORY], GTK_TREE_VIEW(appGUI->nte->notes_list), MAX_VISIBLE_NOTE_COLUMNS, appGUI); config.notes_column_idx_3 = utl_gui_get_column_position (appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE], GTK_TREE_VIEW(appGUI->nte->notes_list), MAX_VISIBLE_NOTE_COLUMNS, appGUI); config.notes_column_idx_4 = utl_gui_get_column_position (appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE], GTK_TREE_VIEW(appGUI->nte->notes_list), MAX_VISIBLE_NOTE_COLUMNS, appGUI); n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 0)); if (n > 1) { config.notes_column_idx_0_width = n; } n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 1)); if (n > 1) { config.notes_column_idx_1_width = n; } n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 2)); if (n > 1) { config.notes_column_idx_2_width = n; } n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 3)); if (n > 1) { config.notes_column_idx_3_width = n; } n = gtk_tree_view_column_get_width (gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 4)); if (n > 1) { config.notes_column_idx_4_width = n; } } /*------------------------------------------------------------------------------*/ void set_note_columns_width (GUI *appGUI) { GtkTreeViewColumn *col; gint w; w = 2 * utl_gui_get_sw_vscrollbar_width (appGUI->nte->scrolled_win); col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 0); if (gtk_tree_view_column_get_visible(col) == TRUE && config.notes_column_idx_0_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.notes_column_idx_0_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 1); if (gtk_tree_view_column_get_visible(col) == TRUE && config.notes_column_idx_1_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.notes_column_idx_1_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 2); if (gtk_tree_view_column_get_visible(col) == TRUE && config.notes_column_idx_2_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.notes_column_idx_2_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 3); if (gtk_tree_view_column_get_visible(col) == TRUE && config.notes_column_idx_3_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.notes_column_idx_3_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->nte->notes_list), 4); if (gtk_tree_view_column_get_visible(col) == TRUE && config.notes_column_idx_4_width > w) { gtk_tree_view_column_set_fixed_width (col, config.notes_column_idx_4_width - w); } } /*------------------------------------------------------------------------------*/ void editor_cursor_move_cb (GtkTextBuffer *buffer, GtkTextIter *new_location, GtkTextMark *mark, gpointer user_data) { GtkTextIter iter; gint row, col, nrow, ncol; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->nte->readonly_checkbutton))) { return; } gtk_text_buffer_get_iter_at_mark(buffer, &iter, gtk_text_buffer_get_insert(buffer)); row = gtk_text_iter_get_line (&iter) + 1; nrow = gtk_text_buffer_get_line_count (buffer); sprintf(tmpbuf, "%d/%d", row, nrow); gtk_label_set_markup (GTK_LABEL (appGUI->nte->nrow_label), tmpbuf); col = gtk_text_iter_get_line_offset (&iter) + 1; ncol = gtk_text_iter_get_chars_in_line (&iter); if (ncol < col) ncol = col; sprintf(tmpbuf, "%d/%d", col, ncol); gtk_label_set_markup (GTK_LABEL (appGUI->nte->ncol_label), tmpbuf); } /*------------------------------------------------------------------------------*/ void update_readonly_view (GUI *appGUI) { gchar *output = g_strdup (""); gchar *text; GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); text = utl_gui_text_buffer_get_text_with_tags (buffer); output = utl_text_to_html_page (text, pango_font_description_get_family (appGUI->nte->fd_notes_font), NULL, NULL, NULL, NULL, NULL); g_free(text); #ifdef HAVE_LIBWEBKIT g_object_set (appGUI->nte->webkit_settings, "default-font-size", PANGO_PIXELS(pango_font_description_get_size (appGUI->nte->fd_notes_font)), NULL); webkit_web_view_load_string (WEBKIT_WEB_VIEW (appGUI->nte->html_webkitview), output, "text/html", "UTF-8", "file://"); #endif /* HAVE_LIBWEBKIT */ g_free(output); } /*------------------------------------------------------------------------------*/ void readonly_toggle_cb (GtkToggleButton *togglebutton, gpointer data) { GUI *appGUI = (GUI *)data; GtkAdjustment *vadj = NULL; gchar *btnlist[] = { "/toolbar/bold", "/toolbar/italic", "/toolbar/underline", "/toolbar/strike", "/toolbar/insert_date_time", "/toolbar/insert_separator", "/toolbar/clear", "/toolbar/mark_color", "/toolbar/open_links" }; guint nbtns = G_N_ELEMENTS (btnlist), i; gboolean s = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->nte->readonly_checkbutton)); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->nte->editor_textview), !s); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->nte->editor_textview), !s); gtk_widget_set_sensitive (appGUI->nte->font_picker, !s); if (s == TRUE) { /* read-only */ update_readonly_view (appGUI); gtk_label_set_text(GTK_LABEL(appGUI->nte->nrow_label), "-"); gtk_label_set_text(GTK_LABEL(appGUI->nte->ncol_label), "-"); #ifdef HAVE_LIBWEBKIT gtk_widget_hide(appGUI->nte->editor_viewport); gtk_widget_show(appGUI->nte->ro_editor_viewport); #endif /* HAVE_LIBWEBKIT */ while (gtk_events_pending ()) gtk_main_iteration (); /* FIXME: update drawing of scrolled window */ /* probably use 'size-allocate' signal later */ vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(appGUI->nte->ro_editor_scrolledwindow)); gtk_adjustment_set_value(GTK_ADJUSTMENT(vadj), appGUI->nte->htmlViewPosition); gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW(appGUI->nte->ro_editor_scrolledwindow), GTK_ADJUSTMENT(vadj)); } else { vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(appGUI->nte->ro_editor_scrolledwindow)); appGUI->nte->htmlViewPosition = gtk_adjustment_get_value(GTK_ADJUSTMENT(vadj)); #ifdef HAVE_LIBWEBKIT gtk_widget_show(appGUI->nte->editor_viewport); gtk_widget_hide(appGUI->nte->ro_editor_viewport); #endif /* HAVE_LIBWEBKIT */ editor_cursor_move_cb (gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)), NULL, NULL, appGUI); gtk_widget_grab_focus (appGUI->nte->editor_textview); } appGUI->nte->note_read_only = s; for (i=0; i < nbtns; i++) { gtk_widget_set_sensitive (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, btnlist[i]), !s); } } /*------------------------------------------------------------------------------*/ gboolean notes_search_entry_changed_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GtkTreePath *path; GtkTreeIter iter; gint i; GUI *appGUI = (GUI *)user_data; gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter)); if(strlen(gtk_entry_get_text (GTK_ENTRY(appGUI->nte->notes_find_entry)))) { i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->nte->notes_filter), &iter, NULL, i++)); if (i-1 != 0) { path = gtk_tree_path_new_first(); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->nte->notes_list), path, NULL, FALSE); gtk_tree_path_free (path); } } } update_notes_items (appGUI); return FALSE; } /*------------------------------------------------------------------------------*/ void nte_clear_find_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->notes_find_entry)))) { gtk_entry_set_text(GTK_ENTRY(appGUI->nte->notes_find_entry), ""); notes_search_entry_changed_cb (NULL, NULL, appGUI); } gtk_widget_grab_focus (appGUI->nte->notes_find_entry); } /*------------------------------------------------------------------------------*/ void nte_font_selected (GtkFontButton *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; pango_font_description_free(appGUI->nte->fd_notes_font); appGUI->nte->fd_notes_font = pango_font_description_from_string(gtk_font_button_get_font_name (GTK_FONT_BUTTON(widget))); gtk_widget_modify_font (GTK_WIDGET(appGUI->nte->editor_textview), appGUI->nte->fd_notes_font); } /*------------------------------------------------------------------------------*/ void editor_find_backward_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; find_entry_action (FALSE, appGUI); } void editor_find_forward_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *)user_data; find_entry_action (TRUE, appGUI); } /*------------------------------------------------------------------------------*/ #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) static void button_create_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_create (appGUI); } static void button_restore_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_restore (appGUI); } #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ void gui_create_notes (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hbox1; GtkTextBuffer *buffer; GError *error = NULL; GtkActionGroup *action_group_selector = NULL; GtkActionGroup *action_group_editor = NULL; GtkCellRenderer *renderer; GtkWidget *hseparator; GtkWidget *label; GtkWidget *vseparator; GtkWidget *close_button; GtkWidget *find_backward_button; GtkWidget *find_forward_button; GtkWidget *table; gint i, n; gchar tmpbuf[BUFFER_SIZE]; const gchar *ui_info_selector = " \n" " \n" " \n" " \n" " \n" " \n" #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) " \n" " \n" " \n" " \n" #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ " \n" " \n" " \n" " \n"; GtkActionEntry entries_selector[] = { { "new", OSMO_STOCK_NOTES_ADD, _("New note"), NULL, _("Add note"), G_CALLBACK(notes_add_item_cb)}, { "edit", OSMO_STOCK_NOTES_EDIT, _("Edit note"), NULL, _("Edit note"), G_CALLBACK(notes_edit_item_cb)}, { "delete", OSMO_STOCK_NOTES_REMOVE, _("Delete note"), NULL, _("Remove note"), G_CALLBACK(notes_delete_item_cb)}, #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) { "backup_data", OSMO_STOCK_BACKUP, _("Backup data"), NULL, _("Backup data"), G_CALLBACK(button_create_backup_cb)}, { "restore_data", OSMO_STOCK_RESTORE, _("Restore data"), NULL, _("Restore data"), G_CALLBACK(button_restore_backup_cb)}, #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ { "preferences", OSMO_STOCK_PREFERENCES, _("Preferences"), NULL, _("Preferences"), G_CALLBACK (show_preferences_window_cb)}, { "about", OSMO_STOCK_ABOUT, _("About"), NULL, _("About"), G_CALLBACK (show_about_window_cb)}, { "quit", GTK_STOCK_QUIT, _("Quit"), NULL, _("Quit"), G_CALLBACK (gui_quit_osmo_cb)}, }; guint n_entries_selector = G_N_ELEMENTS (entries_selector); const gchar *ui_info_editor = " \n" " \n" " \n" #ifdef HAVE_GTKSPELL " \n" #endif /* HAVE_GTKSPELL */ " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n"; GtkActionEntry entries_editor[] = { { "find", OSMO_STOCK_EDITOR_FIND, _("Find"), NULL, _("Find"), G_CALLBACK (editor_find_text_show_cb) }, { "bold", OSMO_STOCK_EDITOR_BOLD, _("Bold"), NULL, _("Bold"), NULL }, { "italic", OSMO_STOCK_EDITOR_ITALIC, _("Italic"), NULL, _("Italic"), NULL }, { "underline", OSMO_STOCK_EDITOR_UNDERLINE, _("Underline"), NULL, _("Underline"), NULL }, { "strike", OSMO_STOCK_EDITOR_STRIKETHROUGH, _("Strikethrough"), NULL, _("Strikethrough"), NULL }, { "mark_color", OSMO_STOCK_EDITOR_HIGHLIGHT, _("Highlight"), NULL, _("Highlight"), NULL }, { "clear", OSMO_STOCK_EDITOR_CLEAR, _("Clear attributes"), NULL, _("Clear attributes"), G_CALLBACK (clear_text_attributes_cb)}, { "open_links", OSMO_STOCK_OPEN_URL, _("Open URL links"), NULL, _("Open URL links"), G_CALLBACK (open_url_links_cb)}, { "save", OSMO_STOCK_EDITOR_SAVE, _("Save note"), NULL, _("Save note"), G_CALLBACK (editor_save_buffer_cb)}, { "insert_date_time", OSMO_STOCK_EDITOR_INSERT_DATE_TIME, _("Insert current date and time"), NULL, _("Insert current date and time"), G_CALLBACK(insert_current_date_and_time_cb)}, { "insert_separator", OSMO_STOCK_EDITOR_INSERT_SEPARATOR, _("Insert separator"), NULL, _("Insert separator"), G_CALLBACK(insert_separator_cb)}, { "text_info", OSMO_STOCK_EDITOR_INFO, _("Statistics"), NULL, _("Statistics"), G_CALLBACK(text_info_cb)}, { "close", OSMO_STOCK_CLOSE, _("Close editor"), NULL, _("Close editor"), G_CALLBACK (editor_close_cb)}, }; guint n_entries_editor = G_N_ELEMENTS (entries_editor); gint columns_order[MAX_VISIBLE_NOTE_COLUMNS]; gint nt_columns[MAX_VISIBLE_NOTE_COLUMNS] = { N_COLUMN_TYPE, N_COLUMN_NAME, N_COLUMN_CATEGORY, N_COLUMN_LAST_CHANGES_DATE, N_COLUMN_CREATE_DATE }; #ifdef HAVE_GTKSPELL GtkToggleActionEntry t_entries_editor[] = { { "spell_check", OSMO_STOCK_EDITOR_SPELL_CHECKER, _("Toggle spell checker"), NULL, _("Toggle spell checker"), NULL, FALSE } }; guint n_t_entries_editor = G_N_ELEMENTS (t_entries_editor); #endif /* HAVE_GTKSPELL */ vbox1 = gtk_vbox_new (FALSE, 1); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), 8); sprintf(tmpbuf, "%s", _("Notes")); gui_add_to_notebook (vbox1, tmpbuf, appGUI); appGUI->nte->vbox = GTK_BOX(vbox1); if (config.hide_notes == TRUE) { gtk_widget_hide(GTK_WIDGET(appGUI->nte->vbox)); } appGUI->nte->vbox_selector = gtk_vbox_new (FALSE, 1); gtk_widget_show (appGUI->nte->vbox_selector); gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox), appGUI->nte->vbox_selector, TRUE, TRUE, 0); appGUI->nte->vbox_editor = gtk_vbox_new (FALSE, 1); gtk_widget_show (appGUI->nte->vbox_editor); gtk_box_pack_start (GTK_BOX(appGUI->nte->vbox), appGUI->nte->vbox_editor, TRUE, TRUE, 0); /*-------------------------------------------------------------------------------------*/ action_group_selector = gtk_action_group_new ("_actions"); gtk_action_group_add_actions (action_group_selector, entries_selector, n_entries_selector, appGUI); gtk_action_group_set_sensitive(action_group_selector, TRUE); appGUI->nte->notes_uim_selector_widget = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (appGUI->nte->notes_uim_selector_widget, action_group_selector, 0); g_signal_connect (appGUI->nte->notes_uim_selector_widget, "add_widget", G_CALLBACK (add_notes_toolbar_selector_widget), appGUI); if (!gtk_ui_manager_add_ui_from_string (appGUI->nte->notes_uim_selector_widget, ui_info_selector, -1, &error)) { g_message ("building toolbar failed: %s", error->message); g_error_free (error); } gtk_ui_manager_ensure_update (appGUI->nte->notes_uim_selector_widget); gtk_toolbar_set_style (appGUI->nte->notes_toolbar_selector, GTK_TOOLBAR_ICONS); /*-------------------------------------------------------------------------------------*/ action_group_editor = gtk_action_group_new ("_actions"); gtk_action_group_add_actions (action_group_editor, entries_editor, n_entries_editor, appGUI); #ifdef HAVE_GTKSPELL gtk_action_group_add_toggle_actions (action_group_editor, t_entries_editor, n_t_entries_editor, appGUI); #endif /* HAVE_GTKSPELL */ gtk_action_group_set_sensitive(action_group_editor, TRUE); appGUI->nte->notes_uim_editor_widget = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (appGUI->nte->notes_uim_editor_widget, action_group_editor, 0); g_signal_connect (appGUI->nte->notes_uim_editor_widget, "add_widget", G_CALLBACK (add_notes_toolbar_editor_widget), appGUI); if (!gtk_ui_manager_add_ui_from_string (appGUI->nte->notes_uim_editor_widget, ui_info_editor, -1, &error)) { g_message ("building toolbar failed: %s", error->message); g_error_free (error); } gtk_ui_manager_ensure_update (appGUI->nte->notes_uim_editor_widget); gtk_toolbar_set_style (appGUI->nte->notes_toolbar_editor, GTK_TOOLBAR_ICONS); /*-------------------------------------------------------------------------------------*/ gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_selector_widget, "/toolbar/delete"), FALSE); /* selector */ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_selector), hseparator, FALSE, TRUE, 6); if (!config.gui_layout) { /* vertical */ table = gtk_table_new (2, 4, FALSE); } else { table = gtk_table_new (1, 6, FALSE); } gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_selector), table, FALSE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); sprintf(tmpbuf, "%s:", _("Category")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->nte->cf_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->nte->cf_combobox); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->nte->cf_combobox), FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->cf_combobox, GTK_CAN_FOCUS); g_signal_connect(appGUI->nte->cf_combobox, "changed", G_CALLBACK(notes_category_filter_cb), appGUI); g_signal_connect(G_OBJECT(appGUI->nte->cf_combobox), "focus", G_CALLBACK(notes_category_combo_box_focus_cb), NULL); appGUI->nte->n_items_label = gtk_label_new (""); gtk_widget_show (appGUI->nte->n_items_label); if (appGUI->tiny_gui == FALSE) { gtk_widget_set_size_request (appGUI->nte->n_items_label, 100, -1); } gtk_label_set_use_markup (GTK_LABEL (appGUI->nte->n_items_label), TRUE); if (!config.gui_layout) { /* vertical */ gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); if (appGUI->tiny_gui == TRUE) { gtk_table_attach (GTK_TABLE (table), appGUI->nte->cf_combobox, 1, 2, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); } else { gtk_table_attach (GTK_TABLE (table), appGUI->nte->cf_combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); } gtk_table_attach (GTK_TABLE (table), appGUI->nte->n_items_label, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } else { gtk_table_attach (GTK_TABLE (table), label, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->cf_combobox, 4, 5, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->n_items_label, 5, 6, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } sprintf(tmpbuf, "%s:", _("Search")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->nte->notes_find_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(appGUI->nte->notes_find_entry), 128); gtk_widget_show (appGUI->nte->notes_find_entry); g_signal_connect (G_OBJECT(appGUI->nte->notes_find_entry), "key_release_event", G_CALLBACK(notes_search_entry_changed_cb), appGUI); appGUI->nte->notes_find_clear_button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (appGUI->nte->notes_find_clear_button); GTK_WIDGET_UNSET_FLAGS (appGUI->nte->notes_find_clear_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->nte->notes_find_clear_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->nte->notes_find_clear_button, _("Clear")); } g_signal_connect (G_OBJECT (appGUI->nte->notes_find_clear_button), "clicked", G_CALLBACK (nte_clear_find_cb), appGUI); if (!config.gui_layout) { /* vertical */ gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->notes_find_entry, 1, 5, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->notes_find_clear_button, 5, 6, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 4); } else { gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->notes_find_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); gtk_table_attach (GTK_TABLE (table), appGUI->nte->notes_find_clear_button, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); } hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_selector), hseparator, FALSE, TRUE, 6); /*-------------------------------------------------------------------------------------*/ appGUI->nte->editor_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (appGUI->nte->editor_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (appGUI->nte->editor_viewport), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_selector), appGUI->nte->editor_viewport, TRUE, TRUE, 0); appGUI->nte->scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->nte->scrolled_win); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->nte->scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (appGUI->nte->editor_viewport), appGUI->nte->scrolled_win); appGUI->nte->notes_list_store = gtk_list_store_new(NOTES_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_BOOLEAN, G_TYPE_UINT, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); appGUI->nte->notes_filter = gtk_tree_model_filter_new(GTK_TREE_MODEL(appGUI->nte->notes_list_store), NULL); gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), (GtkTreeModelFilterVisibleFunc)notes_list_filter_cb, appGUI, NULL); appGUI->nte->notes_sort = gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(appGUI->nte->notes_filter)); appGUI->nte->notes_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(appGUI->nte->notes_sort)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(appGUI->nte->notes_list), config.rules_hint); gtk_tree_view_set_enable_search (GTK_TREE_VIEW(appGUI->nte->notes_list), FALSE); gtk_widget_show (appGUI->nte->notes_list); GTK_WIDGET_SET_FLAGS (appGUI->nte->notes_list, GTK_CAN_DEFAULT); gtk_container_add (GTK_CONTAINER (appGUI->nte->scrolled_win), appGUI->nte->notes_list); g_signal_connect(G_OBJECT(appGUI->nte->notes_list), "button_press_event", G_CALLBACK(notes_list_dbclick_cb), appGUI); appGUI->nte->notes_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->nte->notes_list)); gtk_tree_selection_set_mode (appGUI->nte->notes_list_selection, GTK_SELECTION_MULTIPLE); g_signal_connect(G_OBJECT(appGUI->nte->notes_list_selection), "changed", G_CALLBACK(notes_item_selected), appGUI); /* create columns */ renderer = gtk_cell_renderer_pixbuf_new(); /* icon */ appGUI->nte->notes_columns[N_COLUMN_TYPE] = gtk_tree_view_column_new_with_attributes(_("Type"), renderer, "pixbuf", N_COLUMN_TYPE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_TYPE]); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_TYPE], config.nte_visible_type_column); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_TYPE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_TYPE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_TYPE]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); appGUI->nte->notes_columns[N_COLUMN_NAME] = gtk_tree_view_column_new_with_attributes(_("Note name"), renderer, "text", N_COLUMN_NAME, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_NAME], TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_NAME]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_NAME]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_NAME]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_NAME]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_CATEGORY] = gtk_tree_view_column_new_with_attributes(_("Category"), renderer, "text", N_COLUMN_CATEGORY, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CATEGORY], config.nte_visible_category_column); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_CATEGORY]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CATEGORY]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CATEGORY]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CATEGORY]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE] = gtk_tree_view_column_new_with_attributes(_("Last changes"), renderer, "text", N_COLUMN_LAST_CHANGES_DATE, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE], config.nte_visible_last_changes_column); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_LAST_CHANGES_DATE_JULIAN, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE_JULIAN], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_DATE_JULIAN]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_TIME] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_LAST_CHANGES_TIME, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_TIME], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_LAST_CHANGES_TIME]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE] = gtk_tree_view_column_new_with_attributes(_("Created"), renderer, "text", N_COLUMN_CREATE_DATE, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE], config.nte_visible_created_column); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE]); gtk_tree_view_column_set_reorderable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE]), TRUE); gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE]), TRUE); gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN(appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE]), GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE_JULIAN] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_CREATE_DATE_JULIAN, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE_JULIAN], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_CREATE_DATE_JULIAN]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_CREATE_TIME] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_CREATE_TIME, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_CREATE_TIME], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_CREATE_TIME]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_REMEMBER_EDITOR_LINE] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_REMEMBER_EDITOR_LINE, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_REMEMBER_EDITOR_LINE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_REMEMBER_EDITOR_LINE]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_EDITOR_LINE] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_EDITOR_LINE, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_EDITOR_LINE], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_EDITOR_LINE]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_EDITOR_READONLY] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_EDITOR_READONLY, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_EDITOR_READONLY], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_EDITOR_READONLY]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_FILENAME] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_FILENAME, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_FILENAME], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_FILENAME]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_FONTNAME] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_FONTNAME, NULL); gtk_tree_view_column_set_visible (appGUI->nte->notes_columns[N_COLUMN_FONTNAME], FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_FONTNAME]); renderer = gtk_cell_renderer_text_new(); appGUI->nte->notes_columns[N_COLUMN_ENCRYPTED] = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", N_COLUMN_ENCRYPTED, NULL); gtk_tree_view_column_set_visible(appGUI->nte->notes_columns[N_COLUMN_ENCRYPTED], FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[N_COLUMN_ENCRYPTED]); /* restore columns order */ columns_order[0] = config.notes_column_idx_0; columns_order[1] = config.notes_column_idx_1; columns_order[2] = config.notes_column_idx_2; columns_order[3] = config.notes_column_idx_3; columns_order[4] = config.notes_column_idx_4; n = MAX_VISIBLE_NOTE_COLUMNS-1; while (n >= 0) { for (i = 0; i < MAX_VISIBLE_NOTE_COLUMNS; i++) { if (n == columns_order[i]) { gtk_tree_view_move_column_after(GTK_TREE_VIEW(appGUI->nte->notes_list), appGUI->nte->notes_columns[nt_columns[i]], NULL); n--; } } } set_note_columns_width (appGUI); /* configure sorting */ for (i = 0; i < MAX_VISIBLE_NOTE_COLUMNS; i++) { gtk_tree_view_column_set_sort_column_id(appGUI->nte->notes_columns[nt_columns[i]], nt_columns[i]); gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(appGUI->nte->notes_sort), nt_columns[i], notes_column_sort_function, GINT_TO_POINTER(nt_columns[i]), NULL); } /* restore sorting */ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(appGUI->nte->notes_sort), config.notes_sorting_column, config.notes_sorting_order); g_signal_connect(appGUI->nte->notes_sort, "sort-column-changed", G_CALLBACK(notes_sort_column_changed_cb), appGUI); /*-------------------------------------------------------------------------------------*/ /* editor */ hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), hseparator, FALSE, TRUE, 4); appGUI->nte->title_label = gtk_label_new (""); gtk_widget_show (appGUI->nte->title_label); gtk_label_set_ellipsize (GTK_LABEL(appGUI->nte->title_label), PANGO_ELLIPSIZE_END); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), appGUI->nte->title_label, FALSE, FALSE, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), hseparator, FALSE, TRUE, 4); appGUI->nte->editor_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (appGUI->nte->editor_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (appGUI->nte->editor_viewport), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), appGUI->nte->editor_viewport, TRUE, TRUE, 0); appGUI->nte->editor_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->nte->editor_scrolledwindow); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->nte->editor_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (appGUI->nte->editor_viewport), appGUI->nte->editor_scrolledwindow); appGUI->nte->editor_textview = gtk_text_view_new (); gtk_widget_show (appGUI->nte->editor_textview); gtk_container_add (GTK_CONTAINER (appGUI->nte->editor_scrolledwindow), appGUI->nte->editor_textview); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->nte->editor_textview), GTK_WRAP_WORD_CHAR); gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(appGUI->nte->editor_textview), 4); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(appGUI->nte->editor_textview), 8); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(appGUI->nte->editor_textview), 8); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (appGUI->nte->editor_textview)); appGUI->nte->buffer_check_modify_enable = FALSE; g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (text_buffer_modified_cb), appGUI); g_signal_connect (G_OBJECT (buffer), "mark_set", G_CALLBACK(editor_cursor_move_cb), appGUI); gtk_text_buffer_create_tag (buffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL); g_object_set_data (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/bold")), "tag", "bold"); g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/bold")), "clicked", G_CALLBACK (set_text_attribute_cb), appGUI); gtk_text_buffer_create_tag (buffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); g_object_set_data (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/italic")), "tag", "italic"); g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/italic")), "clicked", G_CALLBACK (set_text_attribute_cb), appGUI); gtk_text_buffer_create_tag (buffer, "strike", "strikethrough", TRUE, NULL); g_object_set_data (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/strike")), "tag", "strike"); g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/strike")), "clicked", G_CALLBACK (set_text_attribute_cb), appGUI); gtk_text_buffer_create_tag (buffer, "underline", "underline", PANGO_UNDERLINE_SINGLE, NULL); g_object_set_data (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/underline")), "tag", "underline"); g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/underline")), "clicked", G_CALLBACK (set_text_attribute_cb), appGUI); gtk_text_buffer_create_tag (buffer, "mark_color", "background", "#FFFF00", NULL); g_object_set_data (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/mark_color")), "tag", "mark_color"); g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/mark_color")), "clicked", G_CALLBACK (set_text_attribute_cb), appGUI); #ifdef HAVE_GTKSPELL g_signal_connect (G_OBJECT(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/spell_check")), "toggled", G_CALLBACK(notes_spell_check_cb), appGUI); #endif /* HAVE_GTKSPELL */ /* read-only view */ #ifdef HAVE_LIBWEBKIT appGUI->nte->ro_editor_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (appGUI->nte->ro_editor_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (appGUI->nte->ro_editor_viewport), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), appGUI->nte->ro_editor_viewport, TRUE, TRUE, 0); appGUI->nte->ro_editor_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->nte->ro_editor_scrolledwindow); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->nte->ro_editor_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (appGUI->nte->ro_editor_viewport), appGUI->nte->ro_editor_scrolledwindow); appGUI->nte->webkit_settings = webkit_web_settings_new (); g_object_set (appGUI->nte->webkit_settings, "enable-scripts", FALSE, NULL); g_object_set (appGUI->nte->webkit_settings, "enable-plugins", FALSE, NULL); appGUI->nte->html_webkitview = WEBKIT_WEB_VIEW (webkit_web_view_new ()); webkit_web_view_set_settings (appGUI->nte->html_webkitview, appGUI->nte->webkit_settings); webkit_web_view_set_editable (appGUI->nte->html_webkitview, FALSE); g_signal_connect (appGUI->nte->html_webkitview, "console-message", G_CALLBACK (utl_webkit_console_msg), appGUI); g_signal_connect (appGUI->nte->html_webkitview, "populate-popup", G_CALLBACK (utl_webkit_on_menu), appGUI); g_signal_connect (appGUI->nte->html_webkitview, "navigation-policy-decision-requested", G_CALLBACK (utl_webkit_link_clicked), appGUI); gtk_widget_show (GTK_WIDGET(appGUI->nte->html_webkitview)); gtk_container_add (GTK_CONTAINER (appGUI->nte->ro_editor_scrolledwindow), GTK_WIDGET(appGUI->nte->html_webkitview)); gtk_widget_hide(appGUI->nte->ro_editor_viewport); #endif /* HAVE_LIBWEBKIT */ hbox1 = gtk_hbox_new (FALSE, 1); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), hbox1, FALSE, FALSE, 2); appGUI->nte->readonly_checkbutton = gtk_check_button_new_with_mnemonic (_("Read-only")); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->readonly_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->nte->readonly_checkbutton); gtk_box_pack_end (GTK_BOX (hbox1), appGUI->nte->readonly_checkbutton, FALSE, FALSE, 4); g_signal_connect (GTK_TOGGLE_BUTTON(appGUI->nte->readonly_checkbutton), "toggled", G_CALLBACK (readonly_toggle_cb), appGUI); appGUI->nte->font_picker = gtk_font_button_new (); gtk_widget_show (appGUI->nte->font_picker); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->font_picker, GTK_CAN_FOCUS); g_signal_connect (GTK_FONT_BUTTON(appGUI->nte->font_picker), "font-set", G_CALLBACK (nte_font_selected), appGUI); gtk_box_pack_end (GTK_BOX (hbox1), appGUI->nte->font_picker, FALSE, FALSE, 4); sprintf(tmpbuf, "%s:", _("Line")); appGUI->nte->nrow_label_t = gtk_label_new (tmpbuf); gtk_widget_show (appGUI->nte->nrow_label_t); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->nte->nrow_label_t, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (appGUI->nte->nrow_label_t), TRUE); sprintf(tmpbuf, "%s", "1/1"); appGUI->nte->nrow_label = gtk_label_new (tmpbuf); gtk_widget_show (appGUI->nte->nrow_label); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->nte->nrow_label, FALSE, FALSE, 8); gtk_label_set_use_markup (GTK_LABEL (appGUI->nte->nrow_label), TRUE); sprintf(tmpbuf, "%s:", _("Column")); appGUI->nte->ncol_label_t = gtk_label_new (tmpbuf); gtk_widget_show (appGUI->nte->ncol_label_t); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->nte->ncol_label_t, FALSE, FALSE, 8); gtk_label_set_use_markup (GTK_LABEL (appGUI->nte->ncol_label_t), TRUE); sprintf(tmpbuf, "%s", "1/1"); appGUI->nte->ncol_label = gtk_label_new (tmpbuf); gtk_widget_show (appGUI->nte->ncol_label); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->nte->ncol_label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (appGUI->nte->ncol_label), TRUE); appGUI->nte->find_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (appGUI->nte->find_hbox); gtk_box_pack_start (GTK_BOX (appGUI->nte->vbox_editor), appGUI->nte->find_hbox, FALSE, FALSE, 0); appGUI->nte->find_next_flag = FALSE; sprintf(tmpbuf, "%s:", _("Find")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (appGUI->nte->find_hbox), label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->nte->find_entry = gtk_entry_new (); gtk_widget_show (appGUI->nte->find_entry); gtk_box_pack_start (GTK_BOX (appGUI->nte->find_hbox), appGUI->nte->find_entry, TRUE, TRUE, 4); g_signal_connect (G_OBJECT (appGUI->nte->find_entry), "key_press_event", G_CALLBACK (find_entry_key_press_cb), appGUI); find_backward_button = utl_gui_stock_button (GTK_STOCK_GO_BACK, FALSE); GTK_WIDGET_UNSET_FLAGS(find_backward_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(find_backward_button), GTK_RELIEF_NONE); gtk_widget_show (find_backward_button); gtk_box_pack_start (GTK_BOX (appGUI->nte->find_hbox), find_backward_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (find_backward_button), "clicked", G_CALLBACK (editor_find_backward_cb), appGUI); find_forward_button = utl_gui_stock_button (GTK_STOCK_GO_FORWARD, FALSE); gtk_button_set_relief (GTK_BUTTON(find_forward_button), GTK_RELIEF_NONE); GTK_WIDGET_UNSET_FLAGS(find_forward_button, GTK_CAN_FOCUS); gtk_widget_show (find_forward_button); gtk_box_pack_start (GTK_BOX (appGUI->nte->find_hbox), find_forward_button, FALSE, FALSE, 1); g_signal_connect (G_OBJECT (find_forward_button), "clicked", G_CALLBACK (editor_find_forward_cb), appGUI); appGUI->nte->find_case_checkbutton = gtk_check_button_new_with_mnemonic (_("case sensitive")); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->find_case_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->nte->find_case_checkbutton); gtk_box_pack_start (GTK_BOX (appGUI->nte->find_hbox), appGUI->nte->find_case_checkbutton, FALSE, FALSE, 4); g_signal_connect (GTK_TOGGLE_BUTTON(appGUI->nte->find_case_checkbutton), "toggled", G_CALLBACK (case_sensitive_toggle_cb), appGUI); close_button = utl_gui_create_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, FALSE); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(close_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (close_button, _("Close find entry")); } gtk_box_pack_end (GTK_BOX (appGUI->nte->find_hbox), close_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (editor_find_text_hide_cb), appGUI); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_end (GTK_BOX (appGUI->nte->find_hbox), vseparator, FALSE, TRUE, 0); gtk_widget_hide (appGUI->nte->find_hbox); appGUI->nte->changed = FALSE; gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->nte->notes_uim_editor_widget, "/toolbar/save"), FALSE); /*-------------------------------------------------------------------------------------*/ notes_show_selector_editor (SELECTOR, appGUI); appGUI->nte->filename = NULL; #ifdef HAVE_LIBGRINGOTTS appGUI->nte->context = NULL; appGUI->nte->keyholder = NULL; #endif /* HAVE_LIBGRINGOTTS */ } /*------------------------------------------------------------------------------*/ gboolean check_if_encrypted (gchar *filename, GUI *appGUI) { gchar *contents; gboolean result = FALSE; if (g_file_get_contents (notes_get_full_filename(filename, appGUI), &contents, NULL, NULL) == TRUE) { if (contents[0] == 'O' && contents[1] == 'S' && contents[2] == 'M' && g_ascii_isalnum(contents[3])) { result = TRUE; } g_free (contents); } return result; } /*------------------------------------------------------------------------------*/ void check_notes_type (GUI *appGUI) { GtkTreeIter iter; gint i; gchar *filename; GdkPixbuf *image; GtkWidget *helper; gboolean encrypted; helper = gtk_image_new(); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, N_COLUMN_FILENAME, &filename, -1); encrypted = check_if_encrypted(filename, appGUI); if (encrypted == TRUE) { image = gtk_widget_render_icon(helper, OSMO_STOCK_TYPE_ENCRYPTED, GTK_ICON_SIZE_MENU, NULL); } else { image = gtk_widget_render_icon(helper, OSMO_STOCK_TYPE_NORMAL, GTK_ICON_SIZE_MENU, NULL); } g_free(filename); gtk_list_store_set(appGUI->nte->notes_list_store, &iter, N_COLUMN_TYPE, image, N_COLUMN_ENCRYPTED, encrypted, -1); g_object_unref(image); } } /*------------------------------------------------------------------------------*/ #endif /* NOTES_ENABLED */ osmo-0.2.14/src/calendar_timeline.h000664 001750 001750 00000002010 12561325524 017122 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_INSERT_TIMELINE_H #define _CALENDAR_INSERT_TIMELINE_H #include "utils_gui.h" void calendar_create_insert_timeline_window (GUI *appGUI); #endif /* _CALENDAR_INSERT_TIMELINE_H */ osmo-0.2.14/src/utils_gui.h000664 001750 001750 00000013347 12561325524 015506 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _UTILS_GUI_H #define _UTILS_GUI_H #include "gui.h" typedef struct { GUI *appGUI; gchar *config; GtkWidget *entry; PangoFontDescription **font; GtkWidget *widget; gboolean save; } FONT_SEL; enum { SW_MOVE_UP = 0, SW_MOVE_DOWN }; #define VBOX_SPACING 8 #define HBOX_SPACING 8 #define ALIGNMENT_PADDING_TOP 4 #define ALIGNMENT_PADDING_RIGHT 4 #define ALIGNMENT_PADDING_BOTTOM 4 #define ALIGNMENT_PADDING_LEFT 12 #define CHECKBOX_PADDING 0 #define WINDOW_BORDER 8 #define BORDER_WIDTH 8 #define COLOR_BG_OK "#fff77a" #define COLOR_BG_FAIL "#ff7770" #define TAG (0xe000) GtkWidget * utl_gui_create_label (const gchar *format, const gchar *name); GtkWidget * utl_gui_create_window (const gchar *name, gint width, gint height, GUI *appGUI); GtkWidget * utl_gui_create_labeled_button (const gchar *gtk_name, const gchar *osmo_name, gchar *label); GtkWidget * utl_gui_create_button (const gchar *gtk_name, const gchar *osmo_name, gboolean toggle); GtkWidget * utl_gui_create_frame (GtkWidget *container, const gchar *name); GtkWidget * utl_gui_create_vbox_in_frame (GtkWidget *container, const gchar *name); GtkWidget * utl_gui_create_hbox_in_frame (GtkWidget *container, const gchar *name); GtkWidget * utl_gui_create_table_in_frame (GtkWidget *container, const gchar *name, guint rows, guint columns); GtkWidget * utl_gui_create_icon_with_label (const gchar *stock_id, const gchar *label_str); GtkWidget * utl_gui_insert_in_scrolled_window (GtkWidget *widget, GtkShadowType type); void utl_gui_font_select_cb (GtkWidget *widget, gpointer user_data); gint utl_gui_get_sw_vscrollbar_width (GtkWidget *scrolled_window); void utl_gui_sw_vscrollbar_move_position (GtkWidget *scrolled_window, gint direction); gint utl_gui_get_column_position (GtkTreeViewColumn *column, GtkTreeView *treeview, gint M, GUI *appGUI); gint utl_gui_get_combobox_items (GtkComboBox *combo_box); void utl_gui_create_category_combobox (GtkComboBox *combo_box, GtkListStore *store, gboolean none); gchar* utl_gui_text_buffer_get_text_with_tags (GtkTextBuffer *buffer); void utl_gui_text_buffer_set_text_with_tags (GtkTextBuffer *buffer, const gchar *text, gboolean clear); void utl_gui_text_buffer_toggle_tags (GtkTextBuffer *buffer, const gchar *tag_name); void utl_gui_text_buffer_remove_tags (GtkTextBuffer *buffer); gchar * utl_gui_text_strip_tags (gchar *text); void utl_gui_clear_text_buffer (GtkTextBuffer *buffer, GtkTextIter *iter); void utl_gui_change_bg_widget_state (GtkWidget *widget, gchar *color_str, GUI *appGUI); GdkPixbuf* utl_gui_create_color_swatch (gchar *color); void utl_gui_fill_iconlabel (GtkWidget *dialog, gchar *stock_icon, gchar *message); void utl_gui_update_command_status (GtkEditable *editable, GtkWidget *icon_widget, GUI *appGUI); gint utl_gui_create_dialog (gint dialog_type, gchar *message, GtkWindow *parent); gint utl_gui_check_overwrite_file (gchar *filename, GtkWidget *window, GUI *appGUI); gint utl_gui_list_store_get_text_index (GtkListStore *store, gchar *text); GtkWidget* utl_gui_stock_button (const gchar *bstock, gboolean toggle); GtkWidget* utl_gui_stock_name_button (const gchar *bstock, gchar *blabel); GtkWidget* utl_gui_stock_label_radio_button (gchar *label, const gchar *stock, GtkIconSize size); GtkWidget* utl_gui_image_label_radio_button (gchar *label, const guint8 *pix); void utl_gui_url_initialize (GUI *appGUI); void utl_gui_url_setup (GSList **links_list, gint *link_index, GtkWidget *textview, GUI *appGUI); void utl_gui_url_insert_link (GSList **links_list, gint *link_index, GtkWidget *textview, GtkTextIter *iter, gchar *color, gchar *font, gchar *text, gboolean center, GUI *appGUI); void utl_gui_url_remove_links (GSList **links_list, gint *link_index); void utl_gui_foreach_selected (GtkTreeSelection *selection, GtkTreeModel *model, GFunc foreach_function, gpointer user_data); GtkTreeIter utl_gui_get_first_selection_iter (GtkTreeSelection *selection, GtkTreeModel **model); #endif /* _UTILS_GUI_H */ osmo-0.2.14/src/calendar_preferences_gui.h000664 001750 001750 00000002555 12561325524 020477 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_PREFERENCES_GUI_H #define _CALENDAR_PREFERENCES_GUI_H #include "gui.h" enum { ICAL_COLUMN_VALID_ICON = 0, ICAL_COLUMN_NAME, ICAL_COLUMN_FILENAME, ICAL_COLUMN_VALID_FLAG, ICAL_COLUMN_ENABLE_DESC, ICAL_COLUMN_FULL_DATE, ICAL_COLUMN_MARK, ICAL_COLUMN_DISABLED, ICAL_COLUMN_STATE, ICAL_NUMBER_OF_COLUMNS /* This must be last item */ }; GtkWidget * cal_create_preferences_page (GtkWidget *notebook, GUI *appGUI); #endif /* _CALENDAR_PREFERENCES_GUI_H */ osmo-0.2.14/src/calendar_jumpto.h000664 001750 001750 00000001737 12561325524 016651 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_JUMPTO_H #define _CALENDAR_JUMPTO_H #include "gui.h" void calendar_create_jumpto_window (GUI *appGUI); #endif /* _CALENDAR_JUMPTO_H */ osmo-0.2.14/src/Makefile.am000664 001750 001750 00000006032 12561325524 015356 0ustar00pasppasp000000 000000 AUTOMAKE_OPTIONS = -Wno-portability REVISION := $(shell if test -e .svn; then echo -DREV=\"`LC_ALL=C svn info | sed -n '/^Rev/p'| sed -e 's/^Revision:\ //'`\"; fi;) VERSION_MAJOR := $(shell echo $(VERSION) | awk -F "." '{print $$1}') VERSION_MINOR := $(shell echo $(VERSION) | awk -F "." '{print $$2}') VERSION_MICRO := $(shell echo $(VERSION) | awk -F "." '{print $$3}') AM_CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" $(REVISION) -DDATADIR=\"$(datadir)\" \ -DSOUNDSDIR=\"$(datadir)/sounds\" -DVERSION_MAJOR=\"$(VERSION_MAJOR)\" -DVERSION_MINOR=\"$(VERSION_MINOR)\" -DVERSION_MICRO=\"$(VERSION_MICRO)\" \ @GTK_CFLAGS@ @XML_CPPFLAGS@ -Wall dnl -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DG_DISABLE_CAST_CHECKS AM_CFLAGS = @CFLAGS@ bin_PROGRAMS = osmo osmo_SOURCES = about.c about.h \ backup.c backup.h \ calendar.c calendar.h \ calendar_calc.c calendar_calc.h \ calendar_fullyear.c calendar_fullyear.h \ calendar_ical.c calendar_ical.h \ calendar_jumpto.c calendar_jumpto.h \ calendar_moon.h \ calendar_notes.c calendar_notes.h \ calendar_print.c calendar_print.h \ calendar_preferences_gui.c calendar_preferences_gui.h \ calendar_timeline.c calendar_timeline.h \ calendar_utils.c calendar_utils.h \ calendar_widget.c calendar_widget.h \ check_events.c check_events.h \ contacts.c contacts.h \ contacts_birthdays.c contacts_birthdays.h \ contacts_import.c contacts_import.h \ contacts_import_csv.c contacts_import_csv.h \ contacts_export.c contacts_export.h \ contacts_items.c contacts_items.h \ contacts_preferences_gui.c contacts_preferences_gui.h \ gui.c gui.h \ gui_icon.h gui_logo.h \ gtksourceiter.c gtksourceiter.h \ i18n.h \ main.c \ notes.c notes.h \ notes_items.c notes_items.h \ notes_preferences_gui.c notes_preferences_gui.h \ options_prefs.c options_prefs.h \ preferences_gui.c preferences_gui.h \ stock_icons.c stock_icons.h stock_icons_data.h \ tasks.c tasks.h \ tasks_export.c tasks_export.h \ tasks_items.c tasks_items.h \ tasks_print.c tasks_print.h \ tasks_preferences_gui.c tasks_preferences_gui.h \ tasks_utils.c tasks_utils.h \ utils.c utils.h \ utils_gui.c utils_gui.h \ utils_date.c utils_date.h \ utils_date_time.c utils_date_time.h \ utils_time.c utils_time.h \ vcf.c vcf.h AM_CFLAGS += @LIBNOTIFY_CFLAGS@ LIBS += @LIBNOTIFY_LIBS@ if HAVE_LIBWEBKIT AM_CFLAGS += @LIBWEBKIT_CFLAGS@ LIBS += @LIBWEBKIT_LIBS@ endif if HAVE_LIBICAL AM_CFLAGS += @LIBICAL_CFLAGS@ LIBS += @LIBICAL_LIBS@ endif if HAVE_GTKSPELL AM_CFLAGS += @GTKSPELL_CFLAGS@ LIBS += @GTKSPELL_LIBS@ endif if CONFIGPATH AM_CFLAGS += -DCONFIG_PATH=\"$(configpath)\" endif if CONFIGDIR AM_CFLAGS += -DCONFIG_DIR=\"$(configdir)\" endif osmo_LDADD = $(LIBINTL) @GTK_LIBS@ -lm @XML_LIBS@ @GTHREAD_LIBS@ #if WIN32 #AM_CFLAGS = \ # -mms-bitfields \ # -mwindows #endif osmo-0.2.14/src/contacts.h000664 001750 001750 00000004577 12561325524 015325 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_H #define _CONTACTS_H #include "gui.h" #define CONTACTS_NAME "osmo_contacts" #define CONTACTS_ENTRIES_NAME "contacts_records" #define CONTACTS_GROUP_ENTRIES_NAME "contacts_groups" #define CONTACTS_ENTRIES_FILENAME "contacts_records.xml" #define GOOGLE_MAPS_QUERY "http://maps.google.com/maps?q=" #define BING_MAPS_QUERY "http://www.bing.com/maps/default.aspx?where1=" #define OSM_MAPS_QUERY "http://nominatim.openstreetmap.org/search?q=" /* photo widths */ #define PHOTO_SMALL 80 #define PHOTO_MEDIUM 120 #define PHOTO_LARGE 160 enum { CONTACTS_FF_FIRST_NAME = 0, CONTACTS_FF_LAST_NAME, CONTACTS_FF_TAGS, CONTACTS_FF_ALL_FIELDS }; enum { HOME_ADDRESS = 0, WORK_ADDRESS }; void gui_create_contacts (GUI *appGUI); void set_export_active (GUI *appGUI); void store_contact_columns_info (GUI *appGUI); void set_contacts_columns_width (GUI *appGUI); void contacts_select_first_position_in_list (GUI *appGUI); void insert_photo (gchar *photo_filename, GtkTextIter *iter, GUI *appGUI); gboolean check_address (gint address_type, GUI *appGUI); void show_contact_location_on_map (gint address_type, GUI *appGUI); void contacts_selection_activate (gboolean active, GUI *appGUI); gint query (GUI* appGUI, gchar* matchWith); #endif /* _CONTACTS_H */ osmo-0.2.14/src/contacts.c000664 001750 001750 00000153406 12561325524 015314 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "about.h" #include "backup.h" #include "contacts.h" #include "i18n.h" #include "contacts_items.h" #include "utils.h" #include "utils_date.h" #include "utils_gui.h" #include "options_prefs.h" #include "preferences_gui.h" #include "stock_icons.h" #include "contacts_birthdays.h" #include "contacts_import.h" #include "contacts_export.h" #include "calendar_utils.h" #ifdef CONTACTS_ENABLED /*============================================================================*/ static void show_about_window_cb (GtkWidget *widget, GUI *appGUI) { GtkWidget *window = opt_create_about_window (appGUI); gtk_widget_show (window); } /*============================================================================*/ static void show_preferences_window_cb (GtkWidget *widget, GUI *appGUI) { appGUI->opt->window = opt_create_preferences_window (appGUI); gtk_widget_show (appGUI->opt->window); gint page = gtk_notebook_page_num (GTK_NOTEBOOK (appGUI->opt->notebook), appGUI->opt->contacts); gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->opt->notebook), page); } /*------------------------------------------------------------------------------*/ void set_export_active (GUI *appGUI) { GtkTreeIter iter; guint n; gboolean state; n = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->cnt->contacts_filter), &iter, NULL, n++)); state = (n == 1) ? FALSE : TRUE; gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/export"), state); } /*------------------------------------------------------------------------------*/ gboolean find_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ void contacts_panel_close_desc_cb (GtkWidget *widget, gpointer data) { GtkPaned *paned; GUI *appGUI = (GUI *)data; paned = GTK_PANED (appGUI->cnt->contacts_paned); gtk_paned_set_position(paned, paned->max_position); } /*------------------------------------------------------------------------------*/ gboolean contacts_list_filter_cb (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { const gchar *text; gchar *value; gint i; guint32 date; gboolean result; GUI *appGUI = (GUI *)data; text = gtk_entry_get_text(GTK_ENTRY(appGUI->cnt->contacts_find_entry)); if (text == NULL) { return TRUE; } if (!g_utf8_strlen(text, -1)) { return TRUE; } if (config.find_mode == CONTACTS_FF_ALL_FIELDS) { result = FALSE; for (i = 0; i < CONTACTS_NUM_COLUMNS && !result; i++) { if (i != COLUMN_PHOTO && i != COLUMN_ID) { if (i == COLUMN_BIRTH_DAY_DATE || i == COLUMN_NAME_DAY_DATE) { gtk_tree_model_get(model, iter, i, &date, -1); if (date == 0) { value = NULL; } else { if (i == COLUMN_BIRTH_DAY_DATE) { value = g_strdup((const gchar *) julian_to_str(date, DATE_FULL, config.override_locale_settings)); } else { value = g_strdup((const gchar *) julian_to_str(date, DATE_NAME_DAY, config.override_locale_settings)); } } } else { gtk_tree_model_get(model, iter, i, &value, -1); } if (value != NULL) { result = utl_text_strcasestr(value, text); g_free(value); } } } } else { if (config.find_mode == CONTACTS_FF_FIRST_NAME) { gtk_tree_model_get(model, iter, COLUMN_FIRST_NAME, &value, -1); } else if (config.find_mode == CONTACTS_FF_LAST_NAME) { gtk_tree_model_get(model, iter, COLUMN_LAST_NAME, &value, -1); } else if (config.find_mode == CONTACTS_FF_TAGS) { gtk_tree_model_get(model, iter, COLUMN_TAGS, &value, -1); } if (value == NULL) { result = FALSE; } else { result = utl_text_strcasestr(value, text); } g_free(value); } return result; } /*------------------------------------------------------------------------------*/ void contacts_select_first_position_in_list (GUI *appGUI) { GtkTreeIter iter; GtkTreePath *path; /* set cursor at first position */ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter) == TRUE) { path = gtk_tree_model_get_path (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter); if (path != NULL) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), path, NULL, FALSE); gtk_tree_path_free (path); } } } /*------------------------------------------------------------------------------*/ void contacts_item_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; gint selection_size; gboolean address_available = FALSE, additional_info = FALSE; guint32 date; gchar *fname, *sname, *lname, *html, *text; gchar tmpbuf[BUFFER_SIZE], htmpbuf[BUFFER_SIZE]; gint i; selection_size = gtk_tree_selection_count_selected_rows(selection); if (selection_size > 1) { gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/delete"), TRUE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/map_location"), FALSE); #ifdef HAVE_LIBWEBKIT webkit_web_view_load_string(WEBKIT_WEB_VIEW(appGUI->cnt->html_webkitview), "", "text/html", "UTF-8", "file://"); #endif /* LIBWEBKIT */ } else if (selection_size == 1) { gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/edit"), TRUE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/delete"), TRUE); address_available = check_address(HOME_ADDRESS, appGUI); if (address_available == FALSE) { address_available = check_address(WORK_ADDRESS, appGUI); } gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/map_location"), address_available); /****************************************************************/ html = g_strdup_printf( "\n\n\n" "\n\n\n\n", config.contact_item_font_size, config.contact_name_font_size, config.contact_link_color, config.contact_tag_color, config.photo_width); /****************************************************************/ iter = utl_gui_get_first_selection_iter(selection, &model); gtk_tree_model_get(model, &iter, COLUMN_FIRST_NAME, &fname, COLUMN_SECOND_NAME, &sname, COLUMN_LAST_NAME, &lname, COLUMN_PHOTO, &text, -1); if (!fname) fname = g_strdup(""); if (!sname) sname = g_strdup(""); if (!lname) lname = g_strdup(""); g_snprintf(htmpbuf, BUFFER_SIZE, "

%s %s %s

\n", fname, sname, lname); html = utl_strconcat(html, htmpbuf, NULL); g_free(fname); g_free(sname); g_free(lname); /* insert photo */ if (text != NULL) { #ifdef HAVE_LIBWEBKIT g_snprintf(htmpbuf, BUFFER_SIZE, "\"\"", text); #endif /* HAVE_LIBWEBKIT */ html = utl_strconcat(html, htmpbuf, NULL); g_free(text); } g_snprintf(htmpbuf, BUFFER_SIZE, "\n"); html = utl_strconcat(html, htmpbuf, NULL); for (i = 0; i < CONTACTS_NUM_COLUMNS; i++) { if ((i == COLUMN_ID) || (i == COLUMN_PHOTO) || (i == COLUMN_FIRST_NAME) || (i == COLUMN_SECOND_NAME) || (i == COLUMN_LAST_NAME) || (i == COLUMN_GROUP)) continue; if (i == COLUMN_BIRTH_DAY_DATE || i == COLUMN_NAME_DAY_DATE) { gtk_tree_model_get(model, &iter, i, &date, -1); if (date == 0) { text = NULL; } else { if (i == COLUMN_BIRTH_DAY_DATE) { text = g_strdup((const gchar *) julian_to_str(date, DATE_FULL, config.override_locale_settings)); } else { text = g_strdup((const gchar *) julian_to_str(date, DATE_NAME_DAY, config.override_locale_settings)); } } } else { gtk_tree_model_get(model, &iter, i, &text, -1); } if (text == NULL || !strlen(text)) continue; g_snprintf(htmpbuf, BUFFER_SIZE, ""); html = utl_strconcat(html, htmpbuf, NULL); if ((i >= COLUMN_HOME_PHONE_2 && i <= COLUMN_HOME_PHONE_4) || (i >= COLUMN_WORK_PHONE_2 && i <= COLUMN_WORK_PHONE_4) || (i >= COLUMN_CELL_PHONE_2 && i <= COLUMN_CELL_PHONE_4) || (i >= COLUMN_EMAIL_2 && i <= COLUMN_EMAIL_4) || (i >= COLUMN_WWW_2 && i <= COLUMN_WWW_4)) { tmpbuf[0] = '\0'; } else { sprintf(tmpbuf, "%s:", gettext(appGUI->cnt->contact_fields_tags_name[2 * i])); } if (i == COLUMN_INFO) { gchar *tmp = utl_text_to_html(text, FALSE, TRUE); if (tmp != NULL) { additional_info = TRUE; gchar *tmp2 = utl_text_replace(tmp, REGEX_URL, "\\0"); g_free(tmp); gchar *tmp3 = utl_text_replace(tmp2, REGEX_EMAIL, "\\0"); g_free(tmp2); g_snprintf(htmpbuf, BUFFER_SIZE, "
%s
\n
%s
\n", tmpbuf, tmp3); html = utl_strconcat(html, htmpbuf, NULL); g_free(tmp3); } } else { g_snprintf(htmpbuf, BUFFER_SIZE, "%s", tmpbuf); html = utl_strconcat(html, htmpbuf, NULL); } if (i == COLUMN_BLOG || (i >= COLUMN_EMAIL_1 && i <= COLUMN_EMAIL_4) || (i >= COLUMN_WWW_1 && i <= COLUMN_WWW_4)) { gchar *protocol; if (i >= COLUMN_EMAIL_1 && i <= COLUMN_EMAIL_4) { protocol = "mailto:"; } else if (i >= COLUMN_WWW_1 && i <= COLUMN_WWW_4 && !utl_text_match(text, REGEX_URI_PROTO)) { protocol = "http://"; } else { protocol = ""; } g_snprintf(htmpbuf, BUFFER_SIZE, "%s\n", protocol, text, text); html = utl_strconcat(html, htmpbuf, NULL); } else if (i != COLUMN_INFO) { g_snprintf(htmpbuf, BUFFER_SIZE, "%s\n", text); html = utl_strconcat(html, htmpbuf, NULL); } } if (additional_info == TRUE) { g_snprintf(htmpbuf, BUFFER_SIZE, "\n\n"); } else { g_snprintf(htmpbuf, BUFFER_SIZE, "\n\n\n"); } html = utl_strconcat(html, htmpbuf, NULL); #ifdef HAVE_LIBWEBKIT webkit_web_view_load_string(WEBKIT_WEB_VIEW(appGUI->cnt->html_webkitview), html, "text/html", "UTF-8", "file://"); #endif /* LIBWEBKIT */ g_free(html); } else { gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/delete"), FALSE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget(appGUI->cnt->contacts_uim_widget, "/toolbar/map_location"), FALSE); #ifdef HAVE_LIBWEBKIT webkit_web_view_load_string(WEBKIT_WEB_VIEW(appGUI->cnt->html_webkitview), "", "text/html", "UTF-8", "file://"); #endif /* LIBWEBKIT */ } set_export_active(appGUI); } /*------------------------------------------------------------------------------*/ void add_contacts_toolbar_widget (GtkUIManager *contacts_uim_widget, GtkWidget *widget, gpointer user_data) { GtkWidget *handle_box; GUI *appGUI = (GUI *)user_data; if (GTK_IS_TOOLBAR (widget)) { appGUI->cnt->contacts_toolbar = GTK_TOOLBAR (widget); handle_box = gtk_handle_box_new (); gtk_widget_show (handle_box); gtk_container_add (GTK_CONTAINER (handle_box), widget); gtk_box_pack_start (appGUI->cnt->vbox, handle_box, FALSE, FALSE, 0); g_signal_connect_swapped (widget, "destroy", G_CALLBACK (gtk_widget_destroy), handle_box); } else { gtk_box_pack_start (appGUI->cnt->vbox, widget, FALSE, FALSE, 0); } gtk_widget_show (widget); } /*------------------------------------------------------------------------------*/ gboolean contacts_search_entry_changed_cb (GtkEditable *editable, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter)); set_export_active (appGUI); return FALSE; } /*------------------------------------------------------------------------------*/ void contacts_find_type_selected_cb (GtkComboBox *widget, gpointer user_data) { GtkTreeIter iter; GtkTreePath *path; gint i; GUI *appGUI = (GUI *)user_data; config.find_mode = gtk_combo_box_get_active (widget); if(strlen(gtk_entry_get_text (GTK_ENTRY(appGUI->cnt->contacts_find_entry)))) { gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter)); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->cnt->contacts_filter), &iter, NULL, i++)); path = gtk_tree_path_new_first(); if (path != NULL && i-1) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (appGUI->cnt->contacts_list), path, NULL, FALSE); gtk_tree_path_free (path); } } } /*------------------------------------------------------------------------------*/ gint contacts_column_sort_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gint sort_column, GUI *appGUI) { gchar *last_name_a, *last_name_b; gchar *group_a, *group_b; gchar *first_name_a, *first_name_b; gint diff; if (iter_a == NULL || iter_b == NULL) { return 0; } switch(sort_column) { case COLUMN_GROUP: gtk_tree_model_get(model, iter_a, COLUMN_GROUP, &group_a, -1); gtk_tree_model_get(model, iter_b, COLUMN_GROUP, &group_b, -1); diff = utl_text_strcmp(group_a, group_b); g_free(group_a); g_free(group_b); break; case COLUMN_FIRST_NAME: gtk_tree_model_get(model, iter_a, COLUMN_FIRST_NAME, &first_name_a, -1); gtk_tree_model_get(model, iter_b, COLUMN_FIRST_NAME, &first_name_b, -1); diff = utl_text_strcmp(first_name_a, first_name_b); g_free(first_name_a); g_free(first_name_b); break; case COLUMN_LAST_NAME: gtk_tree_model_get(model, iter_a, COLUMN_LAST_NAME, &last_name_a, -1); gtk_tree_model_get(model, iter_b, COLUMN_LAST_NAME, &last_name_b, -1); diff = utl_text_strcmp(last_name_a, last_name_b); g_free(last_name_a); g_free(last_name_b); break; default: diff = 0; } return diff; } /*------------------------------------------------------------------------------*/ gint contacts_column_sort_by_group_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { return contacts_column_sort_function(model, iter_a, iter_b, COLUMN_GROUP, (GUI *)user_data); } /*------------------------------------------------------------------------------*/ gint contacts_column_sort_by_first_name_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { return contacts_column_sort_function(model, iter_a, iter_b, COLUMN_FIRST_NAME, (GUI *)user_data); } /*------------------------------------------------------------------------------*/ gint contacts_column_sort_by_last_name_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { return contacts_column_sort_function(model, iter_a, iter_b, COLUMN_LAST_NAME, (GUI *)user_data); } /*------------------------------------------------------------------------------*/ void contacts_sort_column_changed_cb (GtkTreeSortable *sortable, gpointer user_data) { GtkSortType sort_order; gtk_tree_sortable_get_sort_column_id(sortable, &config.contacts_sorting_column, &sort_order); config.contacts_sorting_order = sort_order; } /*------------------------------------------------------------------------------*/ void contacts_add_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; contacts_add_edit_dialog_show (FALSE, appGUI); } /*------------------------------------------------------------------------------*/ void contacts_edit_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; if (gtk_tree_selection_count_selected_rows (appGUI->cnt->contacts_list_selection) == 1) { contacts_add_edit_dialog_show (TRUE, appGUI); } } /*------------------------------------------------------------------------------*/ void contacts_remove_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; contacts_remove_dialog_show(appGUI); } /*------------------------------------------------------------------------------*/ void contacts_birthdays_item_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; contacts_create_birthdays_window (appGUI); } /*------------------------------------------------------------------------------*/ void contacts_map_location_cb (GtkWidget *widget, gpointer data) { gint response = -1; GtkWidget *info_dialog = NULL; GtkWidget *hbox; GtkWidget *home_addr_radiobutton; GtkWidget *work_addr_radiobutton; GSList *hw_radiobutton_group = NULL; GUI *appGUI = (GUI *)data; if (gtk_tree_selection_count_selected_rows (appGUI->cnt->contacts_list_selection) == 1) { if (check_address (HOME_ADDRESS, appGUI) && check_address (WORK_ADDRESS, appGUI)) { info_dialog = gtk_message_dialog_new (GTK_WINDOW(appGUI->main_window), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK_CANCEL, "\n%s:", _("Please select address")); gtk_window_set_title(GTK_WINDOW(info_dialog), _("Information")); gtk_widget_show (info_dialog); hbox = gtk_hbox_new (FALSE, 4); gtk_box_pack_start (GTK_BOX(GTK_DIALOG(info_dialog)->vbox), hbox, FALSE, TRUE, 2); gtk_widget_show (hbox); work_addr_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Work")); gtk_widget_show (work_addr_radiobutton); gtk_box_pack_end (GTK_BOX(hbox), work_addr_radiobutton, FALSE, TRUE, 2); gtk_radio_button_set_group (GTK_RADIO_BUTTON (work_addr_radiobutton), hw_radiobutton_group); hw_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (work_addr_radiobutton)); home_addr_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Home")); gtk_widget_show (home_addr_radiobutton); gtk_box_pack_end (GTK_BOX(hbox), home_addr_radiobutton, FALSE, TRUE, 2); gtk_radio_button_set_group (GTK_RADIO_BUTTON (home_addr_radiobutton), hw_radiobutton_group); hw_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (home_addr_radiobutton)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (home_addr_radiobutton), TRUE); response = gtk_dialog_run(GTK_DIALOG(info_dialog)); if (response == GTK_RESPONSE_OK) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (home_addr_radiobutton)) == TRUE) { show_contact_location_on_map (HOME_ADDRESS, appGUI); } else { show_contact_location_on_map (WORK_ADDRESS, appGUI); } } gtk_widget_destroy(info_dialog); } else { if (check_address (HOME_ADDRESS, appGUI)) { show_contact_location_on_map (HOME_ADDRESS, appGUI); } else { show_contact_location_on_map (WORK_ADDRESS, appGUI); } } } } /*------------------------------------------------------------------------------*/ void contacts_export_items_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; contacts_create_export_window(appGUI); } /*------------------------------------------------------------------------------*/ void contacts_import_items_cb (GtkWidget *widget, gpointer data) { GUI *appGUI = (GUI *)data; import_contacts_from_csv_file (appGUI); } /*------------------------------------------------------------------------------*/ gint contacts_list_dbclick_cb(GtkWidget * widget, GdkEventButton * event, gpointer func_data) { GUI *appGUI = (GUI *)func_data; if ((event->type==GDK_2BUTTON_PRESS) && (event->button == 1)) { contacts_edit_item_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void contacts_selection_activate (gboolean active, GUI *appGUI) { if (active == TRUE) { g_signal_connect(G_OBJECT(appGUI->cnt->contacts_list_selection), "changed", G_CALLBACK(contacts_item_selected_cb), appGUI); } else { g_signal_handlers_disconnect_by_func (G_OBJECT (appGUI->cnt->contacts_list_selection), G_CALLBACK (contacts_item_selected_cb), appGUI); } } /*------------------------------------------------------------------------------*/ void store_contact_columns_info (GUI *appGUI) { gint n; config.contacts_column_idx_0 = utl_gui_get_column_position (appGUI->cnt->contacts_columns[COLUMN_GROUP], GTK_TREE_VIEW(appGUI->cnt->contacts_list), MAX_VISIBLE_CONTACT_COLUMNS, appGUI); config.contacts_column_idx_1 = utl_gui_get_column_position (appGUI->cnt->contacts_columns[COLUMN_FIRST_NAME], GTK_TREE_VIEW(appGUI->cnt->contacts_list), MAX_VISIBLE_CONTACT_COLUMNS, appGUI); config.contacts_column_idx_2 = utl_gui_get_column_position (appGUI->cnt->contacts_columns[COLUMN_LAST_NAME], GTK_TREE_VIEW(appGUI->cnt->contacts_list), MAX_VISIBLE_CONTACT_COLUMNS, appGUI); n = gtk_tree_view_column_get_width(gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), 0)); if (n > 1) { config.contacts_column_idx_0_width = n; } n = gtk_tree_view_column_get_width(gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), 1)); if (n > 1) { config.contacts_column_idx_1_width = n; } n = gtk_tree_view_column_get_width(gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), 2)); if (n > 1) { config.contacts_column_idx_2_width = n; } } /*------------------------------------------------------------------------------*/ void set_contacts_columns_width (GUI *appGUI) { GtkTreeViewColumn *col; gint w; w = 2 * utl_gui_get_sw_vscrollbar_width (appGUI->cnt->scrolled_win); col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), COLUMN_GROUP); if (gtk_tree_view_column_get_visible(col) == TRUE && config.contacts_column_idx_0_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.contacts_column_idx_0_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), COLUMN_FIRST_NAME); if (gtk_tree_view_column_get_visible(col) == TRUE && config.contacts_column_idx_1_width > 0) { gtk_tree_view_column_set_fixed_width (col, config.contacts_column_idx_1_width); } col = gtk_tree_view_get_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), COLUMN_LAST_NAME); if (gtk_tree_view_column_get_visible(col) == TRUE && config.contacts_column_idx_2_width > w) { gtk_tree_view_column_set_fixed_width (col, config.contacts_column_idx_2_width - w); } } /*------------------------------------------------------------------------------*/ void cnt_clear_find_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->cnt->contacts_find_entry)))) { gtk_entry_set_text(GTK_ENTRY(appGUI->cnt->contacts_find_entry), ""); } gtk_widget_grab_focus (appGUI->cnt->contacts_find_entry); } /*------------------------------------------------------------------------------*/ static void create_contact_fields(GUI *appGUI) { static gchar *contact_fields_tags_name[] = { N_("Group"), "group", N_("First name"), "first_name", N_("Last name"), "last_name", N_("Second name"), "second_name", N_("Nickname"), "nickname", N_("Tags"), "tags", N_("Birthday date"), "birthday_date", N_("Name day date"), "name_day_date", /*--------------------------------------------------*/ N_("Home address"), "home_address", N_("Home postcode"), "home_postcode", N_("Home city"), "home_city", N_("Home state"), "home_state", N_("Home country"), "home_country", /*--------------------------------------------------*/ N_("Organization"), "organization", N_("Department"), "department", /*--------------------------------------------------*/ N_("Work address"), "work_address", N_("Work postcode"), "work_postcode", N_("Work city"), "work_city", N_("Work state"), "work_state", N_("Work country"), "work_country", /*--------------------------------------------------*/ N_("Fax"), "work_fax", /*--------------------------------------------------*/ N_("Home phone"), "home_phone_1", N_("Home phone 2"), "home_phone_2", N_("Home phone 3"), "home_phone_3", N_("Home phone 4"), "home_phone_4", N_("Work phone"), "work_phone_1", N_("Work phone 2"), "work_phone_2", N_("Work phone 3"), "work_phone_3", N_("Work phone 4"), "work_phone_4", N_("Cell phone"), "cell_phone_1", N_("Cell phone 2"), "cell_phone_2", N_("Cell phone 3"), "cell_phone_3", N_("Cell phone 4"), "cell_phone_4", N_("E-Mail"), "email_1", N_("E-Mail 2"), "email_2", N_("E-Mail 3"), "email_3", N_("E-Mail 4"), "email_4", N_("WWW"), "www_1", N_("WWW 2"), "www_2", N_("WWW 3"), "www_3", N_("WWW 4"), "www_4", /*--------------------------------------------------*/ N_("IM Gadu-Gadu"), "im_gg", N_("IM Yahoo"), "im_yahoo", N_("IM MSN"), "im_msn", N_("IM ICQ"), "im_icq", N_("IM AOL"), "im_aol", N_("IM Jabber"), "im_jabber", N_("IM Skype"), "im_skype", N_("IM Tlen"), "im_tlen", N_("Blog"), "blog", N_("Photo"), "photo_path", N_("Additional info"), "additional_info", "ID", "id" }; appGUI->cnt->contact_fields_tags_name = contact_fields_tags_name; } /*------------------------------------------------------------------------------*/ void create_contacts_list_store(GUI* appGUI) { GType contact_columns_types[CONTACTS_NUM_COLUMNS]; gint i; for(i=0; i< CONTACTS_NUM_COLUMNS; i++) { if (i == COLUMN_BIRTH_DAY_DATE || i == COLUMN_NAME_DAY_DATE || i == COLUMN_ID) { contact_columns_types[i] = G_TYPE_UINT; } else { contact_columns_types[i] = G_TYPE_STRING; } } appGUI->cnt->contacts_list_store = gtk_list_store_newv(CONTACTS_NUM_COLUMNS, &contact_columns_types[0]); } /*------------------------------------------------------------------------------*/ #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) static void button_create_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_create (appGUI); } static void button_restore_backup_cb (GtkWidget *widget, GUI *appGUI) { backup_restore (appGUI); } #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ void contacts_paned_position_change_cb (GObject *gobject, GParamSpec *pspec, GUI *appGUI) { config.contacts_pane_pos = gtk_paned_get_position (GTK_PANED (appGUI->cnt->contacts_paned)); } /*------------------------------------------------------------------------------*/ void gui_create_contacts(GUI *appGUI) { GtkWidget *vbox1; GtkWidget *vbox2; GtkWidget *vbox3; GtkWidget *hbox2; GtkWidget *hseparator; GtkWidget *label; GtkWidget *top_viewport; GtkWidget *bottom_viewport; GtkWidget *close_button; GtkCellRenderer *renderer[CONTACTS_NUM_COLUMNS]; gint i, n; GError *error = NULL; GtkActionGroup *action_group = NULL; gchar tmpbuf[BUFFER_SIZE]; gint columns_order[MAX_VISIBLE_CONTACT_COLUMNS]; gint co_columns[MAX_VISIBLE_CONTACT_COLUMNS] = { COLUMN_GROUP, COLUMN_FIRST_NAME, COLUMN_LAST_NAME }; const gchar *ui_info = " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) " \n" " \n" " \n" " \n" #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ " \n" " \n" " \n" " \n"; GtkActionEntry entries[] = { { "add", OSMO_STOCK_CONTACTS_ADD, _("New contact"), NULL, _("New contact"), G_CALLBACK(contacts_add_item_cb)}, { "delete", OSMO_STOCK_CONTACTS_REMOVE, _("Remove contact"), NULL, _("Remove contact"), G_CALLBACK(contacts_remove_item_cb)}, { "edit", OSMO_STOCK_CONTACTS_EDIT, _("Edit contact"), NULL, _("Edit contact"), G_CALLBACK(contacts_edit_item_cb)}, { "birthdays", OSMO_STOCK_CONTACTS_BIRTHDAYS, _("Show birthdays"), NULL, _("Show birthdays"), G_CALLBACK(contacts_birthdays_item_cb)}, { "map_location", OSMO_STOCK_OPEN_URL, _("Show contact location on the map"), NULL, _("Show contact location on the map"), G_CALLBACK(contacts_map_location_cb)}, { "import", OSMO_STOCK_CONTACTS_IMPORT, _("Import contacts"), NULL, _("Import contacts"), G_CALLBACK(contacts_import_items_cb)}, { "export", OSMO_STOCK_CONTACTS_EXPORT, _("Export contacts"), NULL, _("Export contacts"), G_CALLBACK(contacts_export_items_cb)}, #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) { "backup_data", OSMO_STOCK_BACKUP, _("Backup data"), NULL, _("Backup data"), G_CALLBACK(button_create_backup_cb)}, { "restore_data", OSMO_STOCK_RESTORE, _("Restore data"), NULL, _("Restore data"), G_CALLBACK(button_restore_backup_cb)}, #endif /* BACKUP_SUPPORT && HAVE_LIBGRINGOTTS */ { "preferences", OSMO_STOCK_PREFERENCES, _("Preferences"), NULL, _("Preferences"), G_CALLBACK (show_preferences_window_cb)}, { "about", OSMO_STOCK_ABOUT, _("About"), NULL, _("About"), G_CALLBACK (show_about_window_cb)}, { "quit", GTK_STOCK_QUIT, _("Quit"), NULL, _("Quit"), G_CALLBACK (gui_quit_osmo_cb)}, }; guint n_entries = G_N_ELEMENTS (entries); create_contact_fields(appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), 8); sprintf(tmpbuf, "%s", _("Contacts")); gui_add_to_notebook (vbox1, tmpbuf, appGUI); appGUI->cnt->vbox = GTK_BOX(vbox1); if (config.hide_contacts == TRUE) { gtk_widget_hide(GTK_WIDGET(appGUI->cnt->vbox)); } /*-------------------------------------------------------------------------------------*/ action_group = gtk_action_group_new ("_actions"); gtk_action_group_add_actions (action_group, entries, n_entries, appGUI); gtk_action_group_set_sensitive(action_group, TRUE); appGUI->cnt->contacts_uim_widget = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (appGUI->cnt->contacts_uim_widget, action_group, 0); g_signal_connect (appGUI->cnt->contacts_uim_widget, "add_widget", G_CALLBACK (add_contacts_toolbar_widget), appGUI); if (!gtk_ui_manager_add_ui_from_string (appGUI->cnt->contacts_uim_widget, ui_info, -1, &error)) { g_message ("building toolbar failed: %s", error->message); g_error_free (error); } gtk_ui_manager_ensure_update (appGUI->cnt->contacts_uim_widget); gtk_toolbar_set_style (appGUI->cnt->contacts_toolbar, GTK_TOOLBAR_ICONS); /*-------------------------------------------------------------------------------------*/ gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/edit"), FALSE); gtk_widget_set_sensitive(gtk_ui_manager_get_widget (appGUI->cnt->contacts_uim_widget, "/toolbar/delete"), FALSE); /******************************************************************************************/ if (!config.gui_layout) { appGUI->cnt->contacts_paned = gtk_vpaned_new(); } else { appGUI->cnt->contacts_paned = gtk_hpaned_new(); } gtk_widget_show (appGUI->cnt->contacts_paned); gtk_box_pack_start(GTK_BOX(vbox1), appGUI->cnt->contacts_paned, TRUE, TRUE, 0); top_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (top_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (top_viewport), GTK_SHADOW_NONE); gtk_paned_pack1 (GTK_PANED (appGUI->cnt->contacts_paned), top_viewport, FALSE, TRUE); vbox3 = gtk_vbox_new (FALSE, 1); gtk_widget_show (vbox3); gtk_container_add (GTK_CONTAINER (top_viewport), vbox3); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, FALSE, 6); sprintf(tmpbuf, "%s:", _("Search")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL(label), TRUE); gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, TRUE, 0); appGUI->cnt->contacts_find_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(appGUI->cnt->contacts_find_entry), 128); gtk_widget_show (appGUI->cnt->contacts_find_entry); g_signal_connect (G_OBJECT(appGUI->cnt->contacts_find_entry), "changed", G_CALLBACK(contacts_search_entry_changed_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox2), appGUI->cnt->contacts_find_entry, TRUE, TRUE, 0); appGUI->cnt->contacts_find_clear_button = utl_gui_create_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, FALSE); gtk_widget_show (appGUI->cnt->contacts_find_clear_button); GTK_WIDGET_UNSET_FLAGS (appGUI->cnt->contacts_find_clear_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(appGUI->cnt->contacts_find_clear_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (appGUI->cnt->contacts_find_clear_button, _("Clear")); } g_signal_connect (G_OBJECT (appGUI->cnt->contacts_find_clear_button), "clicked", G_CALLBACK (cnt_clear_find_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox2), appGUI->cnt->contacts_find_clear_button, FALSE, FALSE, 0); appGUI->cnt->contacts_find_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cnt->contacts_find_combobox); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), FALSE); gtk_box_pack_start (GTK_BOX (hbox2), appGUI->cnt->contacts_find_combobox, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (appGUI->cnt->contacts_find_combobox), "changed", G_CALLBACK (contacts_find_type_selected_cb), appGUI); g_signal_connect(G_OBJECT(appGUI->cnt->contacts_find_combobox), "focus", G_CALLBACK(find_combo_box_focus_cb), appGUI); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), _("First Name")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), _("Last Name")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), _("Tags")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), _("All fields")); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox3), hseparator, FALSE, FALSE, 6); appGUI->cnt->scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->cnt->scrolled_win); gtk_box_pack_start (GTK_BOX (vbox3), appGUI->cnt->scrolled_win, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (appGUI->cnt->scrolled_win), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->cnt->scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); create_contacts_list_store(appGUI); appGUI->cnt->contacts_filter = gtk_tree_model_filter_new(GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), NULL); gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter), (GtkTreeModelFilterVisibleFunc)contacts_list_filter_cb, appGUI, NULL); appGUI->cnt->contacts_sort = gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(appGUI->cnt->contacts_filter)); appGUI->cnt->contacts_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(appGUI->cnt->contacts_sort)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(appGUI->cnt->contacts_list), config.rules_hint); gtk_widget_show (appGUI->cnt->contacts_list); GTK_WIDGET_SET_FLAGS (appGUI->cnt->contacts_list, GTK_CAN_DEFAULT); gtk_widget_modify_fg(GTK_WIDGET(appGUI->cnt->contacts_list), GTK_STATE_SELECTED, (& GTK_WIDGET(appGUI->cnt->contacts_list)->style->base[GTK_STATE_SELECTED])); g_signal_connect(G_OBJECT(appGUI->cnt->contacts_list), "button_press_event", G_CALLBACK(contacts_list_dbclick_cb), appGUI); appGUI->cnt->contacts_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->cnt->contacts_list)); gtk_tree_selection_set_mode (appGUI->cnt->contacts_list_selection, GTK_SELECTION_MULTIPLE); contacts_selection_activate (TRUE, appGUI); /* columns setup */ for (i = COLUMN_GROUP; i < CONTACTS_NUM_COLUMNS; i++) { renderer[i] = gtk_cell_renderer_text_new(); appGUI->cnt->contacts_columns[i] = gtk_tree_view_column_new_with_attributes(gettext(appGUI->cnt->contact_fields_tags_name[i*2]), renderer[i], "text", i, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->cnt->contacts_list), appGUI->cnt->contacts_columns[i]); if(i != COLUMN_FIRST_NAME && i != COLUMN_LAST_NAME && i != COLUMN_GROUP) { gtk_tree_view_column_set_visible (appGUI->cnt->contacts_columns[i], FALSE); } else { if (config.hide_group_column == TRUE && i == COLUMN_GROUP) { gtk_tree_view_column_set_visible (appGUI->cnt->contacts_columns[i], FALSE); } gtk_tree_view_column_set_reorderable (appGUI->cnt->contacts_columns[i], TRUE); gtk_tree_view_column_set_resizable (appGUI->cnt->contacts_columns[i], TRUE); gtk_tree_view_column_set_sizing (appGUI->cnt->contacts_columns[i], GTK_TREE_VIEW_COLUMN_FIXED); } } gtk_container_add (GTK_CONTAINER (appGUI->cnt->scrolled_win), appGUI->cnt->contacts_list); gtk_tree_view_set_enable_search (GTK_TREE_VIEW(appGUI->cnt->contacts_list), FALSE); /* restore columns order */ columns_order[0] = config.contacts_column_idx_0; columns_order[1] = config.contacts_column_idx_1; columns_order[2] = config.contacts_column_idx_2; n = MAX_VISIBLE_CONTACT_COLUMNS-1; while (n >= 0) { for (i = 0; i < MAX_VISIBLE_CONTACT_COLUMNS; i++) { if (n == columns_order[i]) { gtk_tree_view_move_column_after(GTK_TREE_VIEW(appGUI->cnt->contacts_list), appGUI->cnt->contacts_columns[co_columns[i]], NULL); n--; } } } set_contacts_columns_width (appGUI); /* configure sorting */ for (i = 0; i < MAX_VISIBLE_CONTACT_COLUMNS; i++) { gtk_tree_view_column_set_sort_column_id (appGUI->cnt->contacts_columns[co_columns[i]], co_columns[i]); } gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (appGUI->cnt->contacts_sort), COLUMN_GROUP, contacts_column_sort_by_group_function, appGUI, NULL); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (appGUI->cnt->contacts_sort), COLUMN_FIRST_NAME, contacts_column_sort_by_first_name_function, appGUI, NULL); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (appGUI->cnt->contacts_sort), COLUMN_LAST_NAME, contacts_column_sort_by_last_name_function, appGUI, NULL); /* restore sorting */ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (appGUI->cnt->contacts_sort), config.contacts_sorting_column, config.contacts_sorting_order); g_signal_connect (appGUI->cnt->contacts_sort, "sort-column-changed", G_CALLBACK (contacts_sort_column_changed_cb), appGUI); bottom_viewport = gtk_viewport_new (NULL, NULL); gtk_widget_show (bottom_viewport); gtk_viewport_set_shadow_type (GTK_VIEWPORT (bottom_viewport), GTK_SHADOW_NONE); gtk_paned_pack2 (GTK_PANED (appGUI->cnt->contacts_paned), bottom_viewport, TRUE, TRUE); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_container_set_border_width (GTK_CONTAINER (vbox2), 0); gtk_container_add (GTK_CONTAINER (bottom_viewport), vbox2); appGUI->cnt->panel_hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cnt->panel_hbox, FALSE, FALSE, 0); gtk_widget_show(appGUI->cnt->panel_hbox); sprintf(tmpbuf, "%s:", _("Contact details")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (appGUI->cnt->panel_hbox), label, FALSE, FALSE, 0); if (!config.gui_layout) { close_button = utl_gui_create_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, FALSE); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON(close_button), GTK_RELIEF_NONE); if (config.enable_tooltips) { gtk_widget_set_tooltip_text (close_button, _("Close contact panel")); } gtk_box_pack_end (GTK_BOX (appGUI->cnt->panel_hbox), close_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (contacts_panel_close_desc_cb), appGUI); } appGUI->cnt->contacts_panel_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (appGUI->cnt->contacts_panel_scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cnt->contacts_panel_scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (appGUI->cnt->contacts_panel_scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (appGUI->cnt->contacts_panel_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef HAVE_LIBWEBKIT appGUI->cnt->webkit_settings = webkit_web_settings_new (); g_object_set (appGUI->cnt->webkit_settings, "default-font-size", config.contact_item_font_size, NULL); g_object_set (appGUI->cnt->webkit_settings, "enable-scripts", FALSE, NULL); g_object_set (appGUI->cnt->webkit_settings, "enable-plugins", FALSE, NULL); appGUI->cnt->html_webkitview = WEBKIT_WEB_VIEW (webkit_web_view_new ()); webkit_web_view_set_settings (appGUI->cnt->html_webkitview, appGUI->cnt->webkit_settings); webkit_web_view_set_editable (appGUI->cnt->html_webkitview, FALSE); g_signal_connect (appGUI->cnt->html_webkitview, "console-message", G_CALLBACK (utl_webkit_console_msg), appGUI); g_signal_connect (appGUI->cnt->html_webkitview, "populate-popup", G_CALLBACK (utl_webkit_on_menu), appGUI); g_signal_connect (appGUI->cnt->html_webkitview, "navigation-policy-decision-requested", G_CALLBACK (utl_webkit_link_clicked), appGUI); gtk_widget_show (GTK_WIDGET(appGUI->cnt->html_webkitview)); gtk_container_add (GTK_CONTAINER (appGUI->cnt->contacts_panel_scrolledwindow), GTK_WIDGET(appGUI->cnt->html_webkitview)); #endif /* LIBWEBKIT */ gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cnt->contacts_find_combobox), config.find_mode); gtk_tree_sortable_sort_column_changed((GtkTreeSortable *)appGUI->cnt->contacts_sort); gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter)); g_signal_connect(G_OBJECT(appGUI->cnt->contacts_paned), "notify::position", G_CALLBACK(contacts_paned_position_change_cb), appGUI); gtk_paned_set_position(GTK_PANED(appGUI->cnt->contacts_paned), config.contacts_pane_pos); gtk_widget_grab_focus (appGUI->cnt->contacts_find_entry); } /*------------------------------------------------------------------------------*/ gboolean check_address (gint address_type, GUI *appGUI) { GtkTreeIter iter; GtkTreeModel *model; gchar *text = NULL; gint n = 0; gint c1, c2, c3; if (gtk_tree_selection_count_selected_rows(appGUI->cnt->contacts_list_selection) == 1) { if (address_type == HOME_ADDRESS) { c1 = COLUMN_HOME_ADDRESS; c2 = COLUMN_HOME_CITY; c3 = COLUMN_HOME_COUNTRY; } else { c1 = COLUMN_WORK_ADDRESS; c2 = COLUMN_WORK_CITY; c3 = COLUMN_WORK_COUNTRY; } iter = utl_gui_get_first_selection_iter(appGUI->cnt->contacts_list_selection, &model); gtk_tree_model_get (model, &iter, c1, &text, -1); if (text == NULL) return FALSE; if (strlen(text)) n++; g_free (text); gtk_tree_model_get (model, &iter, c2, &text, -1); if (text == NULL) return FALSE; if (strlen(text)) n++; g_free (text); gtk_tree_model_get (model, &iter, c3, &text, -1); if (text == NULL) return FALSE; if (strlen(text)) n++; g_free (text); } return (n == 3); } /*------------------------------------------------------------------------------*/ void show_contact_location_on_map (gint address_type, GUI *appGUI) { GtkTreeIter iter; GtkTreeModel *model; gboolean pn_flag = FALSE; gint i; gchar *text = NULL, *mapsURL = NULL; gchar maps_url[BUFFER_SIZE]; gint cbegin, cend, cskip1, cskip2; if (gtk_tree_selection_count_selected_rows(appGUI->cnt->contacts_list_selection) == 1) { if (address_type == HOME_ADDRESS) { cbegin = COLUMN_HOME_ADDRESS; cend = COLUMN_HOME_COUNTRY; cskip1 = COLUMN_HOME_POST_CODE; cskip2 = COLUMN_HOME_STATE; } else { cbegin = COLUMN_WORK_ADDRESS; cend = COLUMN_WORK_COUNTRY; cskip1 = COLUMN_WORK_POST_CODE; cskip2 = COLUMN_WORK_STATE; } iter = utl_gui_get_first_selection_iter(appGUI->cnt->contacts_list_selection, &model); i = config.maps_provider % 3; if (i == 0) { g_snprintf(maps_url, BUFFER_SIZE, "%s", GOOGLE_MAPS_QUERY); } else if (i == 1) { g_snprintf(maps_url, BUFFER_SIZE, "%s", BING_MAPS_QUERY); } else { g_snprintf(maps_url, BUFFER_SIZE, "%s", OSM_MAPS_QUERY); } for (i = cbegin; i <= cend; i++) { if (i == cskip1 || i == cskip2) continue; gtk_tree_model_get (model, &iter, i, &text, -1); if (text != NULL) { if (pn_flag) { g_strlcat (maps_url, ",", BUFFER_SIZE); } g_strlcat (maps_url, text, BUFFER_SIZE); pn_flag = TRUE; g_free (text); } } mapsURL = utl_text_to_html(maps_url, TRUE, FALSE); utl_run_helper(mapsURL, WWW); free(mapsURL); } } /*------------------------------------------------------------------------------*/ gboolean queryFilter(GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { gboolean matches; gchar* value; gchar* matchWith = data; /* we don't want to match the empty string to match everything */ if (!g_utf8_strlen(matchWith, -1)) return FALSE; /* try first name */ value = NULL; gtk_tree_model_get(model, iter, COLUMN_FIRST_NAME, &value, -1); if(value != NULL) { matches = utl_text_strcasestr(value, matchWith); g_free (value); if (matches) return TRUE; } /* and last name */ value = NULL; gtk_tree_model_get(model, iter, COLUMN_LAST_NAME, &value, -1); if(value != NULL) { matches = utl_text_strcasestr(value, matchWith); g_free (value); if (matches) return TRUE; } return FALSE; } gint query(GUI* appGUI, gchar *matchWith) { GtkTreeIter iter; GtkTreePath *sort_path, *filter_path, *path; gchar *text; gint n = 0, col; create_contact_fields(appGUI); create_contacts_list_store(appGUI); read_contacts_entries(appGUI); appGUI->cnt->contacts_filter = gtk_tree_model_filter_new (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), NULL); gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter), queryFilter, /* < this is where the actual filtering takes place */ matchWith, NULL); /* FIXME: for some reason mutt ignores the first line */ printf("\n"); /* here we loop over all matching contacts and print the e-mail adresses */ appGUI->cnt->contacts_sort = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL(appGUI->cnt->contacts_filter)); sort_path = gtk_tree_path_new_first (); while (gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, sort_path) && sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->cnt->contacts_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->cnt->contacts_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, path); for (col = COLUMN_EMAIL_1; col <= COLUMN_EMAIL_4; col++) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->cnt->contacts_list_store), &iter, col, &text, -1); if (text) { printf("%s\n", text); n++; } } } } gtk_tree_path_next (sort_path); } return n; /* returns number of found emails */ } /*------------------------------------------------------------------------------*/ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/notes_items.c000664 001750 001750 00000150357 12561325524 016031 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2014 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "notes_items.h" #include "i18n.h" #include "options_prefs.h" #include "notes.h" #include "notes_preferences_gui.h" #include "calendar.h" #include "calendar_notes.h" #include "calendar_widget.h" #include "calendar_utils.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "stock_icons.h" #ifdef NOTES_ENABLED #ifdef HAVE_LIBGRINGOTTS #include #endif /* HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ gboolean notes_get_active_state (GUI *appGUI) { gint b, c; gint a = strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->note_name_entry))); if (appGUI->nte->encrypted == FALSE) { return a; } if (appGUI->nte->password_entry != NULL) { b = strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->password_entry))); } else { b = 1; } if (appGUI->nte->spassword_entry != NULL) { c = strlen(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->spassword_entry))); } else { c = 1; } return (a && b && c); } /*------------------------------------------------------------------------------*/ void notes_edit_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; appGUI->nte->password_entry = NULL; appGUI->nte->spassword_entry = NULL; gtk_widget_destroy(appGUI->nte->edit_entry_window); } /*------------------------------------------------------------------------------*/ void button_notes_edit_close_cb (GtkWidget *widget, gpointer data) { notes_edit_close_cb (widget, NULL, data); } /*------------------------------------------------------------------------------*/ void notes_edit_action_cb (GtkWidget *widget, gpointer data) { GtkTreePath *path, *sort_path, *filter_path; GtkTreeIter iter; gchar *category; gboolean flag, remember_cursor; gint i, n; GUI *appGUI = (GUI *)data; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->nte->notes_list), &sort_path, NULL); if (sort_path == NULL) return; filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->nte->notes_sort), sort_path); gtk_tree_path_free (sort_path); if (filter_path == NULL) return; path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->nte->notes_filter), filter_path); gtk_tree_path_free (filter_path); if (path != NULL) { n = gtk_combo_box_get_active (GTK_COMBO_BOX(appGUI->nte->category_combobox)); if (n == 0) { category = g_strdup(_("None")); } else { i = 0; flag = FALSE; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, 0, &category, -1); if (i == n) { flag = TRUE; break; } g_free(category); } if (flag != TRUE) { category = g_strdup(_("None")); } } remember_cursor = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->nte->remember_cursor_checkbutton)); gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, path); gtk_list_store_set(appGUI->nte->notes_list_store, &iter, N_COLUMN_NAME, gtk_entry_get_text(GTK_ENTRY(appGUI->nte->note_name_entry)), N_COLUMN_CATEGORY, category, N_COLUMN_REMEMBER_EDITOR_LINE, remember_cursor, -1); g_free (category); gtk_tree_path_free (path); notes_edit_close_cb (widget, NULL, data); if (config.save_data_after_modification) { write_notes_entries (appGUI); } } } /*------------------------------------------------------------------------------*/ gint notes_edit_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { notes_edit_close_cb (NULL, NULL, appGUI); return TRUE; } else if (event->keyval == GDK_Return) { notes_edit_action_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gint notes_add_entry_changed_cb (GtkEditable *editable, gpointer data) { GUI *appGUI = (GUI *)data; gtk_widget_set_sensitive(appGUI->nte->add_entry_ok_button, notes_get_active_state (appGUI)); return FALSE; } /*------------------------------------------------------------------------------*/ void notes_edit_dialog_show (GtkWidget *list, GtkTreeModel *model, GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *label; GtkWidget *frame; GtkWidget *table; GtkWidget *alignment; GtkTreeIter iter; gchar *c_category, *category, *name; gchar tmpbuf[BUFFER_SIZE]; gboolean remember_cursor; gint i, n; appGUI->nte->edit_entry_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->nte->edit_entry_window), 4); gtk_window_set_title (GTK_WINDOW (appGUI->nte->edit_entry_window), _("Edit entry")); gtk_window_set_default_size (GTK_WINDOW (appGUI->nte->edit_entry_window), 400, -1); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->nte->edit_entry_window), GTK_WINDOW (appGUI->main_window)); } gtk_window_set_position (GTK_WINDOW (appGUI->nte->edit_entry_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (appGUI->nte->edit_entry_window), TRUE); g_signal_connect (G_OBJECT (appGUI->nte->edit_entry_window), "delete_event", G_CALLBACK (notes_edit_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->nte->edit_entry_window), "key_press_event", G_CALLBACK (notes_edit_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (appGUI->nte->edit_entry_window), vbox1); table = gtk_table_new (1, 2, FALSE); gtk_box_pack_start (GTK_BOX (vbox1), table, FALSE, TRUE, 0); frame = gtk_frame_new (NULL); gtk_table_attach (GTK_TABLE (table), frame, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->note_name_entry = gtk_entry_new (); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->note_name_entry); gtk_entry_set_invisible_char (GTK_ENTRY (appGUI->nte->note_name_entry), 8226); g_signal_connect (G_OBJECT (appGUI->nte->note_name_entry), "changed", G_CALLBACK (notes_add_entry_changed_cb), appGUI); sprintf (tmpbuf, "%s:", _("Note name")); label = gtk_label_new (tmpbuf); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->category_combobox = gtk_combo_box_new_text (); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->category_combobox); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->nte->category_combobox), _("None")); sprintf (tmpbuf, "%s:", _("Category")); label = gtk_label_new (tmpbuf); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->remember_cursor_checkbutton = gtk_check_button_new_with_mnemonic (_("Remember cursor position")); GTK_WIDGET_UNSET_FLAGS (appGUI->nte->remember_cursor_checkbutton, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->remember_cursor_checkbutton); sprintf (tmpbuf, "%s:", _("Options")); label = gtk_label_new (tmpbuf); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hseparator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); GTK_WIDGET_UNSET_FLAGS (cancel_button, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (button_notes_edit_close_cb), appGUI); appGUI->nte->add_entry_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); GTK_WIDGET_UNSET_FLAGS (appGUI->nte->add_entry_ok_button, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->nte->add_entry_ok_button); g_signal_connect (G_OBJECT (appGUI->nte->add_entry_ok_button), "clicked", G_CALLBACK (notes_edit_action_cb), appGUI); iter = utl_gui_get_first_selection_iter(appGUI->nte->notes_list_selection, &model); gtk_tree_model_get(model, &iter, N_COLUMN_NAME, &name, N_COLUMN_CATEGORY, &c_category, N_COLUMN_REMEMBER_EDITOR_LINE, &remember_cursor, -1); gtk_entry_set_text(GTK_ENTRY(appGUI->nte->note_name_entry), name); i = n = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, 0, &category, -1); gtk_combo_box_append_text(GTK_COMBO_BOX(appGUI->nte->category_combobox), category); if (!strcmp(category, c_category)) n = i; g_free(category); } gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->nte->category_combobox), n); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(appGUI->nte->remember_cursor_checkbutton), remember_cursor); g_free(c_category); g_free(name); gtk_widget_show_all(appGUI->nte->edit_entry_window); } /*------------------------------------------------------------------------------*/ void notes_remove(GtkTreeRowReference *ref, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter, filter_iter, sort_iter; gchar *filename; GtkTreeModel *model; model = gtk_tree_row_reference_get_model(ref); path = gtk_tree_row_reference_get_path(ref); if (path != NULL) { if (gtk_tree_model_get_iter(model, &sort_iter, path)) { gtk_tree_model_get(model, &sort_iter, N_COLUMN_FILENAME, &filename, -1); g_unlink(notes_get_full_filename(filename, appGUI)); g_free(filename); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(model), &filter_iter, &sort_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model))), &iter, &filter_iter); gtk_list_store_remove(appGUI->nte->notes_list_store, &iter); } gtk_tree_path_free(path); } } /*------------------------------------------------------------------------------*/ void notes_remove_dialog_show (GUI *appGUI) { gint response; gchar tmpbuf[BUFFER_SIZE]; sprintf(tmpbuf, "%s\n%s\n\n%s", _("Selected note will be removed."), _("No further data recovery will be possible."), _("Are you sure?")); response = utl_gui_create_dialog(GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->main_window)); if (response == GTK_RESPONSE_YES) { utl_gui_foreach_selected(appGUI->nte->notes_list_selection, GTK_TREE_MODEL(appGUI->nte->notes_list_store), (GFunc) notes_remove, appGUI); update_notes_items(appGUI); check_notes_type(appGUI); if (config.save_data_after_modification) { write_notes_entries(appGUI); } } } /*------------------------------------------------------------------------------*/ void notes_add_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; #ifdef HAVE_LIBGRINGOTTS appGUI->nte->password_entry = NULL; appGUI->nte->spassword_entry = NULL; #endif /* HAVE_LIBGRINGOTTS */ gtk_widget_destroy(appGUI->nte->add_entry_window); } /*------------------------------------------------------------------------------*/ void button_notes_add_close_cb (GtkWidget *widget, gpointer data) { notes_add_close_cb (widget, NULL, data); } /*------------------------------------------------------------------------------*/ gint notes_add_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { notes_add_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void notes_add_entry_action_cb (GtkWidget *widget, gpointer data) { gchar *name; gchar *empty_str, *current_filename; gchar *category, *create_date_str; guint32 current_date; GtkTreeIter iter; gint current_time; gint i, n; gboolean flag, remember_cursor; #ifdef HAVE_LIBGRINGOTTS gchar *pass = NULL, *spass = NULL; GRG_CTX context; GRG_KEY keyholder; #endif /* HAVE_LIBGRINGOTTS */ GUI *appGUI = (GUI *)data; #ifdef HAVE_LIBGRINGOTTS if (appGUI->nte->encrypted == TRUE) { pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->password_entry))); spass = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->spassword_entry))); if (g_utf8_collate (pass, spass) != 0) { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("Passwords do not match!"), GTK_WINDOW(appGUI->main_window)); gtk_widget_grab_focus (appGUI->nte->password_entry); g_free(pass); g_free(spass); return; } } #endif /* HAVE_LIBGRINGOTTS */ name = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->note_name_entry))); n = gtk_combo_box_get_active (GTK_COMBO_BOX(appGUI->nte->category_combobox)); empty_str = g_strdup(""); remember_cursor = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->nte->remember_cursor_checkbutton)); notes_add_close_cb (NULL, NULL, appGUI); current_date = utl_date_get_current_julian (); current_time = utl_time_get_current_seconds (); current_filename = g_strdup (notes_get_new_filename (appGUI)); #ifdef HAVE_LIBGRINGOTTS if (appGUI->nte->encrypted == TRUE) { context = grg_context_initialize_defaults ((unsigned char*) "OSM"); keyholder = grg_key_gen ((unsigned char*) pass, -1); grg_ctx_set_crypt_algo (context, get_enc_algorithm_value()); grg_ctx_set_hash_algo (context, get_enc_hashing_value()); grg_ctx_set_comp_algo (context, get_comp_algorithm_value()); grg_ctx_set_comp_ratio (context, get_comp_ratio_value()); grg_encrypt_file (context, keyholder, (unsigned char*) notes_get_full_filename (current_filename, appGUI), (guchar *) empty_str, -1); grg_free (context, empty_str, -1); grg_key_free (context, keyholder); grg_context_free (context); } else { g_file_set_contents (notes_get_full_filename(current_filename, appGUI), (gchar *) empty_str, strlen(empty_str), NULL); } #endif /* HAVE_LIBGRINGOTTS */ if (n == 0) { category = g_strdup(_("None")); } else { i = 0; flag = FALSE; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, 0, &category, -1); if (i == n) { flag = TRUE; break; } g_free(category); } if (flag != TRUE) { category = g_strdup(_("None")); } } create_date_str = g_strdup(get_date_time_str (current_date, current_time)); gtk_list_store_append(appGUI->nte->notes_list_store, &iter); gtk_list_store_set(appGUI->nte->notes_list_store, &iter, N_COLUMN_NAME, name, N_COLUMN_CATEGORY, category, N_COLUMN_LAST_CHANGES_DATE, create_date_str, N_COLUMN_LAST_CHANGES_DATE_JULIAN, current_date, N_COLUMN_LAST_CHANGES_TIME, current_time, N_COLUMN_CREATE_DATE, create_date_str, N_COLUMN_CREATE_DATE_JULIAN, current_date, N_COLUMN_CREATE_TIME, current_time, N_COLUMN_REMEMBER_EDITOR_LINE, remember_cursor, N_COLUMN_EDITOR_LINE, 0, N_COLUMN_FILENAME, current_filename, N_COLUMN_FONTNAME, DEFAULT_NOTE_FONT, -1); g_free (category); g_free (create_date_str); update_notes_items(appGUI); check_notes_type (appGUI); if (config.save_data_after_modification) { write_notes_entries (appGUI); } g_free(current_filename); g_free(name); #ifdef HAVE_LIBGRINGOTTS if (appGUI->nte->encrypted == TRUE) { g_free(pass); g_free(spass); } #endif /* HAVE_LIBGRINGOTTS */ } /*------------------------------------------------------------------------------*/ gint notes_add_ok_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Return && notes_get_active_state (appGUI) == TRUE) { notes_add_entry_action_cb (NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void note_type_cb (GtkWidget *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->nte->note_normal_radiobutton)) == TRUE) { appGUI->nte->encrypted = FALSE; } else { appGUI->nte->encrypted = TRUE; } gtk_widget_set_sensitive (appGUI->nte->password_entry, appGUI->nte->encrypted); gtk_widget_set_sensitive (appGUI->nte->spassword_entry, appGUI->nte->encrypted); gtk_widget_set_sensitive(appGUI->nte->add_entry_ok_button, notes_get_active_state (appGUI)); } /*------------------------------------------------------------------------------*/ void notes_add_entry (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *label; GtkWidget *frame; GtkWidget *table; GtkWidget *alignment; #ifdef HAVE_LIBGRINGOTTS GtkWidget *hbox1; GtkWidget *note_encrypted_radiobutton; GSList *note_normal_radiobutton_group = NULL; #endif /* HAVE_LIBGRINGOTTS */ gchar tmpbuf[BUFFER_SIZE]; gint i; gchar *category; GtkTreeIter iter; appGUI->nte->encrypted = FALSE; /* default mode */ appGUI->nte->add_entry_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->nte->add_entry_window), 4); gtk_window_set_title (GTK_WINDOW (appGUI->nte->add_entry_window), _("Add note")); gtk_window_set_default_size (GTK_WINDOW(appGUI->nte->add_entry_window), 450, -1); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->nte->add_entry_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_position(GTK_WINDOW(appGUI->nte->add_entry_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal(GTK_WINDOW(appGUI->nte->add_entry_window), TRUE); g_signal_connect (G_OBJECT (appGUI->nte->add_entry_window), "delete_event", G_CALLBACK(notes_add_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->nte->add_entry_window), "key_press_event", G_CALLBACK (notes_add_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->nte->add_entry_window), vbox1); table = gtk_table_new (1, 2, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox1), table, FALSE, TRUE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_table_attach (GTK_TABLE (table), frame, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->note_name_entry = gtk_entry_new (); gtk_widget_show (appGUI->nte->note_name_entry); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->note_name_entry); gtk_entry_set_invisible_char (GTK_ENTRY (appGUI->nte->note_name_entry), 8226); g_signal_connect (G_OBJECT (appGUI->nte->note_name_entry), "changed", G_CALLBACK (notes_add_entry_changed_cb), appGUI); sprintf (tmpbuf, "%s:", _("Note name")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->category_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->nte->category_combobox); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->category_combobox); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->nte->category_combobox), _("None")); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, 0, &category, -1); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->nte->category_combobox), category); g_free(category); } gtk_combo_box_set_active (GTK_COMBO_BOX(appGUI->nte->category_combobox), gtk_combo_box_get_active (GTK_COMBO_BOX (appGUI->nte->cf_combobox))); sprintf (tmpbuf, "%s:", _("Category")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); #ifdef HAVE_LIBGRINGOTTS frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (alignment), hbox1); appGUI->nte->note_normal_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Plain")); gtk_widget_show (appGUI->nte->note_normal_radiobutton); g_signal_connect (appGUI->nte->note_normal_radiobutton, "toggled", G_CALLBACK (note_type_cb), appGUI); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->note_normal_radiobutton, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->nte->note_normal_radiobutton, TRUE, TRUE, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (appGUI->nte->note_normal_radiobutton), note_normal_radiobutton_group); note_normal_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (appGUI->nte->note_normal_radiobutton)); note_encrypted_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Encrypted")); gtk_widget_show (note_encrypted_radiobutton); GTK_WIDGET_UNSET_FLAGS(note_encrypted_radiobutton, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (hbox1), note_encrypted_radiobutton, TRUE, TRUE, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (note_encrypted_radiobutton), note_normal_radiobutton_group); note_normal_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (note_encrypted_radiobutton)); sprintf (tmpbuf, "%s:", _("Note type")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->password_entry = gtk_entry_new (); gtk_widget_show (appGUI->nte->password_entry); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->password_entry); gtk_entry_set_invisible_char (GTK_ENTRY (appGUI->nte->password_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (appGUI->nte->password_entry), FALSE); g_signal_connect (G_OBJECT (appGUI->nte->password_entry), "changed", G_CALLBACK (notes_add_entry_changed_cb), appGUI); gtk_widget_set_sensitive (appGUI->nte->password_entry, FALSE); sprintf (tmpbuf, "%s:", _("Enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->spassword_entry = gtk_entry_new (); gtk_widget_show (appGUI->nte->spassword_entry); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->spassword_entry); gtk_entry_set_invisible_char (GTK_ENTRY (appGUI->nte->spassword_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (appGUI->nte->spassword_entry), FALSE); g_signal_connect (G_OBJECT (appGUI->nte->spassword_entry), "changed", G_CALLBACK (notes_add_entry_changed_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->nte->spassword_entry), "key_press_event", G_CALLBACK (notes_add_ok_key_press_cb), appGUI); gtk_widget_set_sensitive (appGUI->nte->spassword_entry, FALSE); sprintf (tmpbuf, "%s:", _("Re-enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); #endif /* HAVE_LIBGRINGOTTS */ frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->remember_cursor_checkbutton = gtk_check_button_new_with_mnemonic (_("Remember cursor position")); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->remember_cursor_checkbutton, GTK_CAN_FOCUS); gtk_widget_show (appGUI->nte->remember_cursor_checkbutton); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->remember_cursor_checkbutton); sprintf (tmpbuf, "%s:", _("Options")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); GTK_WIDGET_UNSET_FLAGS(cancel_button, GTK_CAN_FOCUS); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (button_notes_add_close_cb), appGUI); appGUI->nte->add_entry_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); GTK_WIDGET_UNSET_FLAGS(appGUI->nte->add_entry_ok_button, GTK_CAN_FOCUS); gtk_widget_show (appGUI->nte->add_entry_ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->nte->add_entry_ok_button); g_signal_connect (G_OBJECT (appGUI->nte->add_entry_ok_button), "clicked", G_CALLBACK (notes_add_entry_action_cb), appGUI); gtk_widget_set_sensitive(appGUI->nte->add_entry_ok_button, FALSE); gtk_widget_show (appGUI->nte->add_entry_window); } /*------------------------------------------------------------------------------*/ void notes_enter_password_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; appGUI->nte->password_entry = NULL; appGUI->nte->spassword_entry = NULL; gtk_widget_destroy(appGUI->nte->enter_password_window); } /*------------------------------------------------------------------------------*/ void button_enter_password_close_cb (GtkWidget *widget, gpointer data) { notes_enter_password_close_cb (widget, NULL, data); } /*------------------------------------------------------------------------------*/ void notes_enter_editor_action (GUI *appGUI) { GtkTextBuffer *buffer; gchar *txtnote; gchar *current_filename; GtkTreeIter iter; GtkTreeModel *model; iter = utl_gui_get_first_selection_iter(appGUI->nte->notes_list_selection, &model); gtk_tree_model_get(model, &iter, N_COLUMN_FILENAME, ¤t_filename, -1); appGUI->nte->filename = g_strdup(current_filename); g_file_get_contents(notes_get_full_filename(current_filename, appGUI), &txtnote, NULL, NULL); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->nte->editor_textview)); utl_gui_text_buffer_set_text_with_tags(buffer, (const gchar *) txtnote, TRUE); notes_show_selector_editor(EDITOR, appGUI); appGUI->nte->buffer_check_modify_enable = TRUE; g_free(txtnote); g_free(current_filename); } /*------------------------------------------------------------------------------*/ #ifdef HAVE_LIBGRINGOTTS void notes_enter_password_action_cb (GtkWidget *widget, gpointer data) { gchar *pass, *current_filename; GtkTreeIter iter; GtkTreeModel *model; GtkTextBuffer *buffer; unsigned char *txtnote; long txtlen; gint ret; GUI *appGUI = (GUI *) data; pass = g_strdup(gtk_entry_get_text(GTK_ENTRY(appGUI->nte->password_entry))); notes_enter_password_close_cb(widget, NULL, data); iter = utl_gui_get_first_selection_iter(appGUI->nte->notes_list_selection, &model); gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, N_COLUMN_FILENAME, ¤t_filename, -1); appGUI->nte->filename = g_strdup(notes_get_full_filename(current_filename, appGUI)); appGUI->nte->context = grg_context_initialize_defaults((unsigned char*) "OSM"); appGUI->nte->keyholder = grg_key_gen((unsigned char*) pass, -1); grg_ctx_set_crypt_algo(appGUI->nte->context, get_enc_algorithm_value()); grg_ctx_set_hash_algo(appGUI->nte->context, get_enc_hashing_value()); grg_ctx_set_comp_algo(appGUI->nte->context, get_comp_algorithm_value()); grg_ctx_set_comp_ratio(appGUI->nte->context, get_comp_ratio_value()); ret = grg_decrypt_file(appGUI->nte->context, appGUI->nte->keyholder, (unsigned char *) appGUI->nte->filename, &txtnote, &txtlen); if (ret != GRG_OK) { utl_gui_create_dialog(GTK_MESSAGE_ERROR, _("Incorrect password!"), GTK_WINDOW(appGUI->main_window)); g_free(pass); grg_key_free(appGUI->nte->context, appGUI->nte->keyholder); appGUI->nte->keyholder = NULL; grg_context_free(appGUI->nte->context); appGUI->nte->context = NULL; g_free(appGUI->nte->filename); appGUI->nte->filename = NULL; return; } else { buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->nte->editor_textview)); utl_gui_text_buffer_set_text_with_tags(buffer, (const gchar *) txtnote, TRUE); notes_show_selector_editor(EDITOR, appGUI); appGUI->nte->buffer_check_modify_enable = TRUE; } g_free(current_filename); g_free(pass); } /*------------------------------------------------------------------------------*/ gint notes_enter_password_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { notes_enter_password_close_cb (NULL, NULL, appGUI); return TRUE; } else if (event->keyval == GDK_Return) { notes_enter_password_action_cb (NULL, appGUI); return TRUE; } return FALSE; } #endif /* HAVE_LIBGRINGOTTS */ /*------------------------------------------------------------------------------*/ void notes_enter_password (GUI *appGUI) { gchar tmpbuf[BUFFER_SIZE]; GtkTreeIter iter; GtkTreeModel *model; gchar *current_filename; #ifdef HAVE_LIBGRINGOTTS GtkWidget *frame; GtkWidget *alignment; GtkWidget *ok_button; GtkWidget *cancel_button; GtkWidget *label; GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; #endif /* HAVE_LIBGRINGOTTS */ iter = utl_gui_get_first_selection_iter(appGUI->nte->notes_list_selection, &model); gtk_tree_model_get (model, &iter, N_COLUMN_FILENAME, ¤t_filename, -1); #ifndef HAVE_LIBGRINGOTTS if (check_if_encrypted (current_filename, appGUI) == TRUE) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s\n\n(%s)", _("Cannot open the note."), _("encryption support is disabled")); utl_gui_create_dialog (GTK_MESSAGE_ERROR, tmpbuf, GTK_WINDOW(appGUI->main_window)); g_free (current_filename); return; } else { appGUI->nte->encrypted = FALSE; appGUI->nte->changed = FALSE; notes_enter_editor_action (appGUI); } #else if (check_if_encrypted (current_filename, appGUI) == TRUE) { appGUI->nte->encrypted = TRUE; appGUI->nte->enter_password_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (appGUI->nte->enter_password_window), 4); gtk_window_set_title (GTK_WINDOW (appGUI->nte->enter_password_window), _("Authorization")); gtk_window_set_default_size (GTK_WINDOW(appGUI->nte->enter_password_window), 350, -1); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->nte->enter_password_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_position(GTK_WINDOW(appGUI->nte->enter_password_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal(GTK_WINDOW(appGUI->nte->enter_password_window), TRUE); g_signal_connect (G_OBJECT (appGUI->nte->enter_password_window), "delete_event", G_CALLBACK(notes_enter_password_close_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->nte->enter_password_window), "key_press_event", G_CALLBACK (notes_enter_password_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->nte->enter_password_window), vbox1); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->nte->password_entry = gtk_entry_new (); gtk_widget_show (appGUI->nte->password_entry); gtk_container_add (GTK_CONTAINER (alignment), appGUI->nte->password_entry); gtk_entry_set_invisible_char (GTK_ENTRY (appGUI->nte->password_entry), 8226); gtk_entry_set_visibility (GTK_ENTRY (appGUI->nte->password_entry), FALSE); sprintf (tmpbuf, "%s:", _("Enter password")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); GTK_WIDGET_UNSET_FLAGS(cancel_button, GTK_CAN_FOCUS); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (G_OBJECT (cancel_button), "clicked", G_CALLBACK (button_enter_password_close_cb), appGUI); ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); GTK_WIDGET_UNSET_FLAGS(ok_button, GTK_CAN_FOCUS); gtk_widget_show (ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), ok_button); g_signal_connect (G_OBJECT (ok_button), "clicked", G_CALLBACK (notes_enter_password_action_cb), appGUI); gtk_widget_show (appGUI->nte->enter_password_window); } else { appGUI->nte->encrypted = FALSE; appGUI->nte->changed = FALSE; notes_enter_editor_action (appGUI); } #endif /* HAVE_LIBGRINGOTTS */ g_free (current_filename); } /*------------------------------------------------------------------------------*/ void read_notes_entries (GUI *appGUI) { xmlDocPtr doc; xmlChar *key; xmlNodePtr node, cnode, category_node, main_node; GtkTreeIter iter; gchar *name, *category, *create_date_str, *fontname; gchar *notes_dir, *str, *dir, *fullpath; gint last_changes_time, create_time, editor_line; guint32 last_changes_date_julian, create_date_julian; gboolean remember_editor_line, editor_readonly; notes_dir = g_strdup(prefs_get_config_filename(NOTES_DIRNAME, appGUI)); if (g_file_test (notes_dir, G_FILE_TEST_IS_DIR | G_FILE_TEST_EXISTS) == FALSE) { g_mkdir (notes_dir, 0755); } g_free(notes_dir); if (g_file_test (prefs_get_config_filename(NOTES_ENTRIES_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR) == FALSE) return; if((doc = xmlParseFile(prefs_get_config_filename(NOTES_ENTRIES_FILENAME, appGUI)))) { if(!(node = xmlDocGetRootElement(doc))) { xmlFreeDoc(doc); return; } if (xmlStrcmp(node->name, (const xmlChar *) NOTES_NAME)) { xmlFreeDoc(doc); return; } main_node = node->xmlChildrenNode; while (main_node != NULL) { if(!xmlStrcmp(main_node->name, (xmlChar *) NOTES_CATEGORY_ENTRIES_NAME)) { /* read note */ category_node = main_node->xmlChildrenNode; while (category_node != NULL) { if ((!xmlStrcmp(category_node->name, (const xmlChar *) "name"))) { key = xmlNodeListGetString(doc, category_node->xmlChildrenNode, 1); if (key != NULL) { gtk_list_store_append(appGUI->opt->notes_category_store, &iter); gtk_list_store_set(appGUI->opt->notes_category_store, &iter, 0, (gchar *) key, -1); } xmlFree(key); } category_node = category_node->next; } } /*---------------------------------------------------------------------------------------*/ if(!xmlStrcmp(main_node->name, (xmlChar *) NOTES_ENTRIES_NAME)) { /* read note */ node = main_node->xmlChildrenNode; while (node != NULL) { if(!xmlStrcmp(node->name, (xmlChar *) "entry")) { cnode = node->xmlChildrenNode; remember_editor_line = FALSE; editor_readonly = FALSE; editor_line = 0; fontname = NULL; while (cnode != NULL) { utl_xml_get_str ("name", &name, cnode); utl_xml_get_str ("category", &category, cnode); utl_xml_get_uint ("last_changes_date", &last_changes_date_julian, cnode); utl_xml_get_int ("last_changes_time", &last_changes_time, cnode); utl_xml_get_uint ("create_date", &create_date_julian, cnode); utl_xml_get_int ("create_time", &create_time, cnode); utl_xml_get_int ("remember_editor_line", &remember_editor_line, cnode); utl_xml_get_int ("editor_line", &editor_line, cnode); utl_xml_get_int ("read_only", &editor_readonly, cnode); utl_xml_get_str ("fontname", &fontname, cnode); if ((!xmlStrcmp(cnode->name, (const xmlChar *) "filename"))) { key = xmlNodeListGetString(doc, cnode->xmlChildrenNode, 1); if (key != NULL) { str = g_path_get_basename ((gchar *) key); dir = g_path_get_dirname ((gchar *) key); if (str && dir) { if (dir[0] == '.') { fullpath = g_strdup (notes_get_full_filename (str, appGUI)); } else { fullpath = (gchar *) key; } gtk_list_store_append (appGUI->nte->notes_list_store, &iter); create_date_str = g_strdup(get_date_time_str (create_date_julian, create_time)); if (fontname == NULL) { fontname = g_strdup(DEFAULT_NOTE_FONT); } gtk_list_store_set (appGUI->nte->notes_list_store, &iter, N_COLUMN_NAME, name, N_COLUMN_CATEGORY, category, N_COLUMN_LAST_CHANGES_DATE, get_date_time_str (last_changes_date_julian, last_changes_time), N_COLUMN_LAST_CHANGES_DATE_JULIAN, last_changes_date_julian, N_COLUMN_LAST_CHANGES_TIME, last_changes_time, N_COLUMN_CREATE_DATE, create_date_str, N_COLUMN_CREATE_DATE_JULIAN, create_date_julian, N_COLUMN_CREATE_TIME, create_time, N_COLUMN_REMEMBER_EDITOR_LINE, remember_editor_line, N_COLUMN_FONTNAME, fontname, N_COLUMN_EDITOR_LINE, editor_line, N_COLUMN_EDITOR_READONLY, editor_readonly, -1); g_free (create_date_str); if (dir[0] == '.') { gtk_list_store_set (appGUI->nte->notes_list_store, &iter, N_COLUMN_FILENAME, (gchar *)key, -1); g_free (fullpath); } else { gtk_list_store_set (appGUI->nte->notes_list_store, &iter, N_COLUMN_FILENAME, str, -1); } g_free (str); g_free (dir); g_free (name); g_free (fontname); g_free (category); fontname = NULL; } xmlFree (key); } } cnode = cnode->next; } } node = node->next; } } /*---------------------------------------------------------------------------------------*/ main_node = main_node->next; } xmlFree(node); xmlFreeDoc(doc); notes_cleanup_files (appGUI); check_notes_type (appGUI); } } /*------------------------------------------------------------------------------*/ void write_notes_entries (GUI *appGUI) { gint i; xmlDocPtr doc; xmlNodePtr main_node, node, note_node; xmlAttrPtr attr; GtkTreeIter iter; gchar *category, *name, *note_filename, *note_fontname; gint last_changes_time, create_time, editor_line; guint32 last_changes_date_julian, create_date_julian; gboolean remember_editor_line, editor_readonly; xmlChar *escaped; if ((appGUI->save_status & WRT_NOTES) != 0) return; appGUI->save_status |= WRT_NOTES; doc = xmlNewDoc((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); main_node = xmlNewNode(NULL, (const xmlChar *) NOTES_NAME); xmlDocSetRootElement(doc, main_node); node = xmlNewChild(main_node, NULL, (const xmlChar *) NOTES_CATEGORY_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->notes_category_store), &iter, 0, &category, -1); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) category); xmlNewChild(node, NULL, (const xmlChar *) "name", (xmlChar *) escaped); g_free(category); xmlFree (escaped); } node = xmlNewChild(main_node, NULL, (const xmlChar *) NOTES_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->nte->notes_list_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->nte->notes_list_store), &iter, N_COLUMN_NAME, &name, N_COLUMN_CATEGORY, &category, N_COLUMN_LAST_CHANGES_DATE_JULIAN, &last_changes_date_julian, N_COLUMN_LAST_CHANGES_TIME, &last_changes_time, N_COLUMN_CREATE_DATE_JULIAN, &create_date_julian, N_COLUMN_CREATE_TIME, &create_time, N_COLUMN_REMEMBER_EDITOR_LINE, &remember_editor_line, N_COLUMN_EDITOR_LINE, &editor_line, N_COLUMN_EDITOR_READONLY, &editor_readonly, N_COLUMN_FONTNAME, ¬e_fontname, N_COLUMN_FILENAME, ¬e_filename, -1); note_node = xmlNewChild (node, NULL, (const xmlChar *) "entry", (xmlChar *) NULL); utl_xml_put_str ("name", name, note_node, doc); g_free (name); utl_xml_put_str ("category", category, note_node, doc); g_free (category); utl_xml_put_uint ("last_changes_date", last_changes_date_julian, note_node); utl_xml_put_int ("last_changes_time", last_changes_time, note_node); utl_xml_put_uint ("create_date", create_date_julian, note_node); utl_xml_put_int ("create_time", create_time, note_node); utl_xml_put_int ("remember_editor_line", remember_editor_line, note_node); utl_xml_put_int ("editor_line", editor_line, note_node); utl_xml_put_int ("read_only", editor_readonly, note_node); utl_xml_put_str ("fontname", note_fontname, note_node, doc); utl_xml_put_str ("filename", note_filename, note_node, doc); g_free (note_filename); } xmlSaveFormatFileEnc (prefs_get_config_filename (NOTES_ENTRIES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeProp (attr); xmlFreeDoc (doc); appGUI->save_status &= ~WRT_NOTES; } /*------------------------------------------------------------------------------*/ gchar * notes_get_new_filename (GUI *appGUI) { guint i; static gchar fullpath[PATH_MAX]; for(i=0; i < 99999999; i++) { g_snprintf(fullpath, PATH_MAX-1, "%s%c%08d.osm", prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, i); if (g_file_test (fullpath, G_FILE_TEST_EXISTS) == FALSE) break; } g_snprintf(fullpath, PATH_MAX-1, "%08d.osm", i); return fullpath; } /*------------------------------------------------------------------------------*/ void notes_cleanup_files (GUI *appGUI) { gchar fullpath[PATH_MAX]; GDir *dpath; gboolean found; gint i; const gchar *item_name; gchar *note_filename; GtkTreeIter iter; g_snprintf(fullpath, PATH_MAX-1, "%s", prefs_get_config_filename(NOTES_DIRNAME, appGUI)); dpath = g_dir_open (fullpath, 0, NULL); if (dpath != NULL) { while ((item_name = g_dir_read_name (dpath)) != NULL) { found = FALSE; g_snprintf(fullpath, PATH_MAX-1, "%s%c%s", prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, item_name); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->nte->notes_list_store), &iter, N_COLUMN_FILENAME, ¬e_filename, -1); if (!strncmp(notes_get_full_filename(note_filename, appGUI), fullpath, PATH_MAX)) { found = TRUE; g_free(note_filename); break; } g_free(note_filename); } if (found == FALSE) { g_unlink (fullpath); } } g_dir_close (dpath); } } /*------------------------------------------------------------------------------*/ gchar * notes_get_full_filename (gchar *filename, GUI *appGUI) { static gchar fullname[PATH_MAX]; gchar *str; g_snprintf (fullname, PATH_MAX-1, "%s%c%s", prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, filename); if (g_file_test (fullname, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS) == FALSE) { str = g_path_get_basename (fullname); if (str) { g_snprintf (fullname, PATH_MAX-1, "%s%c%s", prefs_get_config_filename(NOTES_DIRNAME, appGUI), G_DIR_SEPARATOR, str); g_free (str); } } return fullname; } /*------------------------------------------------------------------------------*/ #endif /* NOTES_ENABLED */ osmo-0.2.14/src/utils_gui.c000664 001750 001750 00000107017 12561325524 015477 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gui.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils.h" #include "utils_gui.h" /* ========================================================================= */ GtkWidget * utl_gui_create_label (const gchar *format, const gchar *name) { gchar *str = g_strdup_printf (format, name); GtkWidget *label = gtk_label_new (str); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_free (str); return label; } /* ========================================================================= */ GtkWidget * utl_gui_create_window (const gchar *name, gint width, gint height, GUI *appGUI) { GtkWidget *window; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), name); gtk_window_set_default_size (GTK_WINDOW (window), width, height); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (window), TRUE); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (window), WINDOW_BORDER); return window; } /* ========================================================================= */ GtkWidget * utl_gui_create_labeled_button(const gchar *gtk_name, const gchar *osmo_name, gchar *label) { if (config.default_stock_icons) { return gtk_button_new_from_stock(gtk_name); } else { return utl_gui_stock_name_button(osmo_name, label); } } /* ========================================================================= */ GtkWidget * utl_gui_create_button (const gchar *gtk_name, const gchar *osmo_name, gboolean toggle) { if (config.default_stock_icons) { return utl_gui_stock_button (gtk_name, toggle); } else { return utl_gui_stock_button (osmo_name, toggle); } } /* ========================================================================= */ GtkWidget * utl_gui_create_frame (GtkWidget *container, const gchar *name) { GtkWidget *frame, *label, *alignment; frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); /* gtk_container_add (GTK_CONTAINER (container), frame);*/ gtk_box_pack_start (GTK_BOX (container), frame, FALSE, FALSE, 0); label = utl_gui_create_label ("%s", name); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_frame_set_label_widget (GTK_FRAME (frame), label); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), ALIGNMENT_PADDING_TOP, ALIGNMENT_PADDING_BOTTOM, ALIGNMENT_PADDING_LEFT, ALIGNMENT_PADDING_RIGHT); return alignment; } /* ========================================================================= */ GtkWidget * utl_gui_create_vbox_in_frame (GtkWidget *container, const gchar *name) { GtkWidget *frame, *box; frame = utl_gui_create_frame (container, name); box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (frame), box); return box; } /* ========================================================================= */ GtkWidget * utl_gui_create_hbox_in_frame (GtkWidget *container, const gchar *name) { GtkWidget *frame, *box; frame = utl_gui_create_frame (container, name); box = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (frame), box); return box; } /* ========================================================================= */ GtkWidget * utl_gui_create_table_in_frame (GtkWidget *container, const gchar *name, guint rows, guint columns) { GtkWidget *frame, *table; frame = utl_gui_create_frame (container, name); table = gtk_table_new (rows, columns, FALSE); gtk_container_add (GTK_CONTAINER (frame), table); return table; } /* ========================================================================= */ GtkWidget * utl_gui_create_icon_with_label (const gchar *stock_id, const gchar *label_str) { GtkWidget *vbox_icon, *image, *label; vbox_icon = gtk_vbox_new (FALSE, 0); image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_box_pack_start (GTK_BOX (vbox_icon), image, TRUE, TRUE, 0); label = gtk_label_new (label_str); gtk_box_pack_start (GTK_BOX (vbox_icon), label, FALSE, FALSE, 0); gtk_widget_show_all (vbox_icon); return vbox_icon; } /* ========================================================================= */ GtkWidget * utl_gui_insert_in_scrolled_window (GtkWidget *widget, GtkShadowType type) { GtkWidget *scrolledwindow, *viewport; scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport = gtk_viewport_new (NULL, NULL); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), type); gtk_container_add (GTK_CONTAINER (scrolledwindow), viewport); gtk_container_add (GTK_CONTAINER (viewport), widget); return scrolledwindow; } /* ========================================================================= */ void utl_gui_font_select_cb (GtkWidget *widget, gpointer user_data) { GtkWidget *font_selector; gchar *font_name; gint response; FONT_SEL *sel = (FONT_SEL *) user_data; g_return_if_fail (sel->config != NULL); font_selector = gtk_font_selection_dialog_new (_("Select a font...")); gtk_window_set_modal (GTK_WINDOW (font_selector), TRUE); gtk_window_set_position (GTK_WINDOW (font_selector), GTK_WIN_POS_MOUSE); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (font_selector), GTK_WINDOW (sel->appGUI->main_window)); } gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (font_selector), sel->config); gtk_widget_show (font_selector); response = gtk_dialog_run (GTK_DIALOG (font_selector)); if (response == GTK_RESPONSE_OK) { font_name = gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG (font_selector)); if (sel->save == TRUE) g_strlcpy (sel->config, font_name, MAXFONTNAME); if (sel->entry != NULL) gtk_entry_set_text (GTK_ENTRY (sel->entry), font_name); if (sel->font != NULL) { pango_font_description_free (*sel->font); *sel->font = pango_font_description_from_string (font_name); if (sel->widget != NULL) gtk_widget_modify_font (GTK_WIDGET (sel->widget), *sel->font); } g_free (font_name); } gtk_widget_destroy (font_selector); } /*------------------------------------------------------------------------------*/ gint utl_gui_get_sw_vscrollbar_width (GtkWidget *scrolled_window) { GtkWidget *vscrollbar; GValue *value; gint width; value = g_new0 (GValue, 1); value = g_value_init (value, G_TYPE_INT); vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scrolled_window)); gtk_widget_style_get_property (vscrollbar, "slider-width", value); width = g_value_get_int (value); g_value_unset (value); g_free (value); return width; } /*------------------------------------------------------------------------------*/ gint utl_gui_get_combobox_items (GtkComboBox *combo_box) { return gtk_tree_model_iter_n_children (gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)), NULL); } /*------------------------------------------------------------------------------*/ void utl_gui_create_category_combobox (GtkComboBox *combo_box, GtkListStore *store, gboolean none) { GtkTreeIter iter; gchar *category; gint i, n; n = utl_gui_get_combobox_items(combo_box); gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), -1); for (i = n-1; i >= 0; i--) { gtk_combo_box_remove_text (GTK_COMBO_BOX (combo_box), i); } if (none == TRUE) { gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), _("None")); } else { gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), _("All items")); } i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &category, -1); gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), category); g_free(category); } } /*------------------------------------------------------------------------------*/ gint utl_gui_get_column_position (GtkTreeViewColumn *column, GtkTreeView *treeview, gint M, GUI *appGUI) { gint i, n = -1; for (i = 0; i < M; i++) { if (gtk_tree_view_get_column (GTK_TREE_VIEW(treeview), i) == column) n = i; } return n; } /*------------------------------------------------------------------------------*/ gchar * utl_gui_text_buffer_get_text_with_tags (GtkTextBuffer *buffer) { GtkTextIter start, prev; GSList *tags = NULL, *i; gchar tag_char_utf8[7] = {0}; gchar *text = g_strdup (""), *oldtext = NULL, *tmp; gboolean done = FALSE; gunichar TAG_CHAR = TAG; /* Unicode chars in the Private Use Area. */ gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &start); g_unichar_to_utf8 (TAG_CHAR, tag_char_utf8); prev = start; while (!done) { tmp = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &prev, &start, TRUE); oldtext = text; text = g_strconcat (text, tmp, NULL); g_free (oldtext); g_free (tmp); tags = gtk_text_iter_get_toggled_tags (&start, TRUE); for (i = tags; i; i = i->next) { gchar *name; g_object_get (G_OBJECT (i->data), "name", &name, NULL); oldtext = text; text = g_strconcat (text, tag_char_utf8, name, tag_char_utf8, NULL); g_free (oldtext); g_free (name); } g_slist_free (tags); tags = gtk_text_iter_get_toggled_tags (&start, FALSE); for (i = tags; i; i = i->next) { gchar *name; g_object_get (G_OBJECT (i->data), "name", &name, NULL); oldtext = text; text = g_strconcat (text, tag_char_utf8, "/", name, tag_char_utf8, NULL); g_free (oldtext); g_free (name); } g_slist_free (tags); if (gtk_text_iter_is_end (&start)) done = TRUE; prev = start; gtk_text_iter_forward_to_tag_toggle (&start, NULL); } return text; } /*------------------------------------------------------------------------------*/ void utl_gui_text_buffer_set_text_with_tags (GtkTextBuffer *buffer, const gchar *text, gboolean clear) { GtkTextIter start, end; GList *tags = NULL; gchar **tokens; gint count; gchar tag_char_utf8[7] = {0}; gunichar TAG_CHAR = TAG; /* Unicode chars in the Private Use Area. */ if (!text) return; gtk_text_buffer_begin_user_action (GTK_TEXT_BUFFER (buffer)); if (clear == TRUE) { gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (buffer), &start, &end); gtk_text_buffer_delete (GTK_TEXT_BUFFER (buffer), &start, &end); } gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (buffer), &start, &end); g_unichar_to_utf8 (TAG_CHAR, tag_char_utf8); tokens = g_strsplit (text, tag_char_utf8, 0); for (count = 0; tokens[count]; count++) { if (count % 2 == 0) { gint offset; GList *j; offset = gtk_text_iter_get_offset (&end); gtk_text_buffer_insert (GTK_TEXT_BUFFER (buffer), &end, tokens[count], -1); gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (buffer), &start, offset); for (j = tags; j; j = j->next) { gtk_text_buffer_apply_tag_by_name (GTK_TEXT_BUFFER (buffer), j->data, &start, &end); } } else { if (tokens[count][0] != '/') { tags = g_list_prepend (tags, tokens[count]); } else { GList *element = g_list_find_custom (tags, &(tokens[count][1]), (GCompareFunc) g_ascii_strcasecmp); if (element) { tags = g_list_delete_link (tags, element); } } } } gtk_text_buffer_end_user_action (GTK_TEXT_BUFFER (buffer)); g_strfreev (tokens); } /*------------------------------------------------------------------------------*/ void utl_gui_text_buffer_toggle_tags (GtkTextBuffer *buffer, const gchar *tag_name) { GtkTextTagTable *tag_table; GtkTextTag *tag; GtkTextIter start, end, titer; gboolean itagged; tag_table = gtk_text_buffer_get_tag_table (buffer); tag = gtk_text_tag_table_lookup (tag_table, tag_name); g_return_if_fail (tag != NULL); gtk_text_buffer_get_selection_bounds (buffer, &start, &end); itagged = TRUE; for (titer = start; !gtk_text_iter_equal (&titer, &end); gtk_text_iter_forward_char (&titer)) { if ((itagged = gtk_text_iter_has_tag (&titer, tag)) == FALSE) { break; } } if (itagged) { gtk_text_buffer_remove_tag (buffer, tag, &start, &end); } else { gtk_text_buffer_apply_tag (buffer, tag, &start, &end); } } /*------------------------------------------------------------------------------*/ gchar * utl_gui_text_strip_tags (gchar *text) { gchar *output = g_strdup(""), *oldoutput = NULL; gchar tag_char_utf8[7] = {0}; GList *tags = NULL; gchar **tokens; gint count; gunichar TAG_CHAR = TAG; /* Unicode chars in the Private Use Area. */ g_return_val_if_fail (output != NULL, NULL); g_unichar_to_utf8 (TAG_CHAR, tag_char_utf8); tokens = g_strsplit (text, tag_char_utf8, 0); for (count = 0; tokens[count]; count++) { if (count % 2 == 0) { oldoutput = output; output = g_strconcat (output, tokens[count], NULL); g_free (oldoutput); } else { if (tokens[count][0] != '/') { tags = g_list_prepend (tags, tokens[count]); } else { GList *element = g_list_find_custom (tags, &(tokens[count][1]), (GCompareFunc) g_ascii_strcasecmp); if (element) { tags = g_list_delete_link (tags, element); } } } } g_strfreev (tokens); return output; } /*------------------------------------------------------------------------------*/ void utl_gui_text_buffer_remove_all_tags (GtkTextBuffer *buffer) { GtkTextIter start, end; gtk_text_buffer_get_bounds (buffer, &start, &end); gtk_text_buffer_remove_all_tags (buffer, &start, &end); } /*------------------------------------------------------------------------------*/ void utl_gui_change_bg_widget_state (GtkWidget *widget, gchar *color_str, GUI *appGUI) { GdkColor color; if (color_str != NULL) { gdk_color_parse (color_str, &color); gtk_widget_modify_base (widget, GTK_STATE_NORMAL, &color); } else { gtk_widget_modify_base (widget, GTK_STATE_NORMAL, &(appGUI->main_window)->style->base[GTK_WIDGET_STATE (appGUI->main_window)]); } } /*------------------------------------------------------------------------------*/ GdkPixbuf* utl_gui_create_color_swatch (gchar *color) { gchar *swatch[] = { "32 14 2 1", ". c #FFFFFF", "- c #000000", "--------------------------------", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "-..............................-", "--------------------------------" }; gchar color_str[] = ". c #000000"; sprintf (color_str, ". c %s", color); swatch[1] = color_str; return gdk_pixbuf_new_from_xpm_data ((gchar const **)swatch); } /*------------------------------------------------------------------------------*/ void utl_gui_fill_iconlabel (GtkWidget *dialog, gchar *stock_icon, gchar *message) { GtkWidget *hbox1; GtkWidget *image; GtkWidget *label; hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox), hbox1, TRUE, TRUE, 16); image = gtk_image_new_from_stock (stock_icon, GTK_ICON_SIZE_DIALOG); gtk_widget_show (image); gtk_box_pack_start (GTK_BOX (hbox1), image, FALSE, TRUE, 16); label = gtk_label_new (NULL); gtk_widget_show (label); gtk_label_set_markup (GTK_LABEL(label), message); gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 16); } /*------------------------------------------------------------------------------*/ gint utl_gui_create_dialog (gint dialog_type, gchar *message, GtkWindow *parent) { GtkWidget *info_dialog = NULL; gint response = -1; switch (dialog_type) { case GTK_MESSAGE_QUESTION: if (config.default_stock_icons) { info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, message, NULL); gtk_window_set_title (GTK_WINDOW(info_dialog), _("Question")); } else { info_dialog = gtk_dialog_new_with_buttons (_("Question"), GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, OSMO_STOCK_BUTTON_NO, GTK_RESPONSE_NO, OSMO_STOCK_BUTTON_YES, GTK_RESPONSE_YES, NULL); utl_gui_fill_iconlabel (info_dialog, "gtk-dialog-question", message); } break; case GTK_MESSAGE_INFO: if (config.default_stock_icons) { info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, message, NULL); gtk_window_set_title (GTK_WINDOW(info_dialog), _("Information")); } else { info_dialog = gtk_dialog_new_with_buttons (_("Information"), GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, OSMO_STOCK_BUTTON_CLOSE, GTK_RESPONSE_NO, NULL); utl_gui_fill_iconlabel (info_dialog, "gtk-dialog-info", message); } break; case GTK_MESSAGE_ERROR: if (config.default_stock_icons) { info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, message, NULL); gtk_window_set_title (GTK_WINDOW(info_dialog), _("Error")); } else { info_dialog = gtk_dialog_new_with_buttons (_("Error"), GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, OSMO_STOCK_BUTTON_CLOSE, GTK_RESPONSE_NO, NULL); utl_gui_fill_iconlabel (info_dialog, "gtk-dialog-error", message); } break; case GTK_MESSAGE_WARNING: if (config.default_stock_icons) { info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, message, NULL); gtk_window_set_title (GTK_WINDOW(info_dialog), _("Warning")); } else { info_dialog = gtk_dialog_new_with_buttons (_("Warning"), GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, OSMO_STOCK_BUTTON_CLOSE, GTK_RESPONSE_NO, NULL); utl_gui_fill_iconlabel (info_dialog, "gtk-dialog-warning", message); } break; }; if (info_dialog != NULL) { gtk_widget_show (info_dialog); response = gtk_dialog_run(GTK_DIALOG(info_dialog)); gtk_widget_destroy (info_dialog); } return response; } /*------------------------------------------------------------------------------*/ void utl_gui_update_command_status (GtkEditable *editable, GtkWidget *icon_widget, GUI *appGUI) { GdkPixbuf *image; gchar *cmd; gint i; if (strlen(gtk_editable_get_chars(editable, 0, -1))) { cmd = g_strdup(gtk_editable_get_chars(editable, 0, -1)); for (i=0; i < strlen(cmd); i++) { if (cmd[i] == ' ') cmd[i] = 0; } gtk_widget_show (icon_widget); if (utl_is_valid_command (cmd) == TRUE) { image = gtk_widget_render_icon (icon_widget, OSMO_STOCK_LIST_VALID, GTK_ICON_SIZE_MENU, NULL); } else { image = gtk_widget_render_icon (icon_widget, OSMO_STOCK_LIST_INVALID, GTK_ICON_SIZE_MENU, NULL); } gtk_image_set_from_pixbuf (GTK_IMAGE(icon_widget), image); g_object_unref (image); g_free (cmd); } else { gtk_widget_hide (icon_widget); } } /*------------------------------------------------------------------------------*/ gint utl_gui_check_overwrite_file (gchar *filename, GtkWidget *window, GUI *appGUI) { gint response; if (g_file_test(filename, G_FILE_TEST_IS_REGULAR) == TRUE) { response = utl_gui_create_dialog(GTK_MESSAGE_QUESTION, _("Selected file exist! Overwrite?"), GTK_WINDOW(window)); if (response == GTK_RESPONSE_NO || response == GTK_RESPONSE_DELETE_EVENT) { return -1; } } return 0; } /*------------------------------------------------------------------------------*/ void utl_gui_clear_text_buffer (GtkTextBuffer *buffer, GtkTextIter *iter) { GtkTextIter iter_s, iter_e; gtk_text_buffer_get_bounds (buffer, &iter_s, &iter_e); gtk_text_buffer_delete (buffer, &iter_s, &iter_e); if (iter != NULL) gtk_text_buffer_get_iter_at_offset (buffer, iter, 0); } /*------------------------------------------------------------------------------*/ gint utl_gui_list_store_get_text_index (GtkListStore *store, gchar *text) { GtkTreeIter iter; gint i, f; gchar *category; i = f = 0; if (text != NULL) { while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &category, -1); if (category != NULL) { if (!strcmp(category, text)) { f = 1; break; } g_free(category); } } if (f) { g_free(category); } } return (f ? i:0); } /*------------------------------------------------------------------------------*/ void utl_gui_sw_vscrollbar_move_position (GtkWidget *scrolled_window, gint direction) { GtkAdjustment *adj; adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW(scrolled_window)); if (direction == SW_MOVE_UP) { if (adj->value > 0.0) { adj->value -= adj->step_increment; adj->value = adj->value < 0.0 ? 0.0 : adj->value; gtk_adjustment_value_changed (GTK_ADJUSTMENT(adj)); } } else if (direction == SW_MOVE_DOWN) { if (adj->value+adj->page_size < adj->upper) { adj->value += adj->step_increment; gtk_adjustment_value_changed (GTK_ADJUSTMENT(adj)); } } } /*------------------------------------------------------------------------------*/ GtkWidget* utl_gui_stock_button (const gchar *bstock, gboolean toggle) { GtkWidget *button; GtkWidget *alignment; GtkWidget *hbox; GtkWidget *image; if(toggle == FALSE) { button = g_object_new (GTK_TYPE_BUTTON, "visible", TRUE, NULL); } else { button = g_object_new (GTK_TYPE_TOGGLE_BUTTON, "visible", TRUE, NULL); } alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (alignment), hbox); image = gtk_image_new_from_stock (bstock, GTK_ICON_SIZE_BUTTON); if (image) gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); gtk_widget_show_all (alignment); gtk_container_add (GTK_CONTAINER (button), alignment); return button; } /*------------------------------------------------------------------------------*/ GtkWidget* utl_gui_stock_name_button (const gchar *bstock, gchar *blabel) { GtkWidget *button; GtkWidget *alignment; GtkWidget *hbox; GtkWidget *image; GtkWidget *label; button = g_object_new (GTK_TYPE_BUTTON, "visible", TRUE, NULL); alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (alignment), hbox); image = gtk_image_new_from_stock (bstock, GTK_ICON_SIZE_BUTTON); if (image) gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); label = gtk_label_new (blabel); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_widget_show_all (alignment); gtk_container_add (GTK_CONTAINER (button), alignment); return button; } /*------------------------------------------------------------------------------*/ GtkWidget* utl_gui_image_label_radio_button (gchar *label, const guint8 *pix) { GtkWidget *button; GtkWidget *alignment; GtkWidget *hbox; GtkWidget *image; GdkPixbuf *icon; button = g_object_new (GTK_TYPE_RADIO_BUTTON, "visible", TRUE, NULL); alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (alignment), hbox); icon = gdk_pixbuf_new_from_inline (-1, pix, FALSE, NULL); image = gtk_image_new_from_pixbuf(icon); gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); if (label != NULL && label != (gchar *)-1) { gtk_box_pack_start (GTK_BOX (hbox), g_object_new (GTK_TYPE_LABEL, "label", label, "use_underline", TRUE, NULL), FALSE, TRUE, 0); } gtk_widget_show_all (alignment); gtk_container_add (GTK_CONTAINER (button), alignment); return button; } /*------------------------------------------------------------------------------*/ GtkWidget* utl_gui_stock_label_radio_button (gchar *label, const gchar *stock, GtkIconSize size) { GtkWidget *button; GtkWidget *alignment; GtkWidget *hbox; GtkWidget *image; button = g_object_new (GTK_TYPE_RADIO_BUTTON, "visible", TRUE, NULL); alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (alignment), hbox); image = gtk_image_new_from_stock (stock, size); if (image) { gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); } if (label != NULL && label != (gchar *)-1) { gtk_box_pack_start (GTK_BOX (hbox), g_object_new (GTK_TYPE_LABEL, "label", label, "use_underline", TRUE, NULL), FALSE, TRUE, 0); } gtk_widget_show_all (alignment); gtk_container_add (GTK_CONTAINER (button), alignment); return button; } /*------------------------------------------------------------------------------*/ void utl_gui_url_initialize (GUI *appGUI) { appGUI->hand_cursor = gdk_cursor_new (GDK_HAND2); appGUI->regular_cursor = gdk_cursor_new (GDK_XTERM); appGUI->hovering_over_link = FALSE; appGUI->gui_url_tag = NULL; } /*------------------------------------------------------------------------------*/ void utl_gui_url_insert_link (GSList **links_list, gint *link_index, GtkWidget *textview, GtkTextIter *iter, gchar *color, gchar *font, gchar *text, gboolean center, GUI *appGUI) { GtkJustification justify = center ? GTK_JUSTIFY_CENTER : GTK_JUSTIFY_LEFT; PangoUnderline underline = config.disable_underline_links ? PANGO_UNDERLINE_NONE : PANGO_UNDERLINE_SINGLE; appGUI->gui_url_tag = gtk_text_buffer_create_tag (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)), NULL, "foreground", color, "font", font, "justification", justify, "underline", underline, NULL); g_object_set_data (G_OBJECT (appGUI->gui_url_tag), "link", GINT_TO_POINTER (*link_index)); *links_list = g_slist_append (*links_list, g_strdup (text)); gtk_text_buffer_insert_with_tags (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)), iter, text, -1, appGUI->gui_url_tag, NULL); (*link_index)++; } /*------------------------------------------------------------------------------*/ void utl_gui_url_remove_links (GSList **links_list, gint *link_index) { if (link_index) *link_index = 1; if (*links_list != NULL) { g_slist_foreach (*links_list, (GFunc) g_free, NULL); g_slist_free (*links_list); *links_list = NULL; } } /*------------------------------------------------------------------------------*/ void utl_gui_url_set_cursor_if_appropriate (GtkTextView *textview, gint x, gint y, GUI *appGUI) { GSList *tags = NULL, *tagp = NULL; /*GtkTextBuffer *buffer;*/ GtkTextIter iter; gboolean hovering = FALSE; GtkTextTag *tag; int *slink; /* buffer = gtk_text_view_get_buffer (textview);*/ gtk_text_view_get_iter_at_location (textview, &iter, x, y); tags = gtk_text_iter_get_tags (&iter); for (tagp = tags; tagp != NULL; tagp = tagp->next) { tag = tagp->data; slink = g_object_get_data (G_OBJECT (tag), "link"); if (slink != 0) { hovering = TRUE; break; } } if (hovering != appGUI->hovering_over_link) { appGUI->hovering_over_link = hovering; if (appGUI->hovering_over_link) { gdk_window_set_cursor (gtk_text_view_get_window (textview, GTK_TEXT_WINDOW_TEXT), appGUI->hand_cursor); } else { gdk_window_set_cursor (gtk_text_view_get_window (textview, GTK_TEXT_WINDOW_TEXT), appGUI->regular_cursor); } } if (tags) { g_slist_free (tags); } } /*------------------------------------------------------------------------------*/ gboolean utl_gui_url_event_after (GtkWidget *textview, GdkEvent *ev, GSList **links_list) { GtkTextIter start, end, iter; GtkTextBuffer *buffer; GdkEventButton *event; gint x, y; GSList *tags = NULL, *tagp = NULL; GtkTextTag *tag; gchar *link; gint slink; gchar tmpbuf[BUFFER_SIZE]; if (ev->type != GDK_BUTTON_RELEASE) return FALSE; event = (GdkEventButton *) ev; if (event->button != 1) return FALSE; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); gtk_text_buffer_get_selection_bounds (buffer, &start, &end); if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end)) return FALSE; gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (textview), GTK_TEXT_WINDOW_WIDGET, event->x, event->y, &x, &y); gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (textview), &iter, x, y); tags = gtk_text_iter_get_tags (&iter); for (tagp = tags; tagp != NULL; tagp = tagp->next) { tag = tagp->data; slink = (size_t) g_object_get_data (G_OBJECT (tag), "link"); if (slink != 0) { link = g_slist_nth_data (*links_list, slink-1); g_snprintf (tmpbuf, BUFFER_SIZE, "\"%s\"", link); utl_run_helper (tmpbuf, utl_get_link_type (link)); break; } } if (tags) g_slist_free (tags); return FALSE; } /*------------------------------------------------------------------------------*/ gboolean utl_gui_url_motion_notify_event (GtkWidget *textview, GdkEventMotion *event, gpointer data) { gint x, y; GUI *appGUI = (GUI *)data; gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (textview), GTK_TEXT_WINDOW_WIDGET, event->x, event->y, &x, &y); utl_gui_url_set_cursor_if_appropriate (GTK_TEXT_VIEW (textview), x, y, appGUI); gdk_window_get_pointer (textview->window, NULL, NULL, NULL); return FALSE; } /*------------------------------------------------------------------------------*/ gboolean utl_gui_url_visibility_notify_event (GtkWidget *textview, GdkEventVisibility *event, gpointer data) { gint wx, wy, bx, by; GUI *appGUI = (GUI *)data; gdk_window_get_pointer (textview->window, &wx, &wy, NULL); gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (textview), GTK_TEXT_WINDOW_WIDGET, wx, wy, &bx, &by); utl_gui_url_set_cursor_if_appropriate (GTK_TEXT_VIEW (textview), bx, by, appGUI); return FALSE; } /*------------------------------------------------------------------------------*/ void utl_gui_url_setup (GSList **links_list, gint *link_index, GtkWidget *textview, GUI *appGUI) { utl_gui_url_remove_links (links_list, link_index); *link_index = 1; appGUI->hovering_over_link = FALSE; appGUI->gui_url_tag = NULL; g_signal_connect (textview, "event-after", G_CALLBACK (utl_gui_url_event_after), links_list); g_signal_connect (textview, "motion-notify-event", G_CALLBACK (utl_gui_url_motion_notify_event), appGUI); g_signal_connect (textview, "visibility-notify-event", G_CALLBACK (utl_gui_url_visibility_notify_event), appGUI); } /*------------------------------------------------------------------------------*/ void utl_gui_foreach_selected(GtkTreeSelection *selection, GtkTreeModel *model, GFunc foreach_function, gpointer user_data) { GList *selected_rows, *selected_refs, *l; selected_rows = gtk_tree_selection_get_selected_rows(selection, &model); for (l = selected_rows, selected_refs = NULL; l; l = l->next) { selected_refs = g_list_prepend(selected_refs, gtk_tree_row_reference_new(model, (GtkTreePath *) l->data)); } g_list_foreach(selected_refs, foreach_function, user_data); utl_free_list(selected_rows, (GDestroyNotify) gtk_tree_path_free); utl_free_list(selected_refs, (GDestroyNotify) gtk_tree_row_reference_free); } /*------------------------------------------------------------------------------*/ GtkTreeIter utl_gui_get_first_selection_iter(GtkTreeSelection *selection, GtkTreeModel **model) { GtkTreeIter iter; GList *selected_rows; selected_rows = gtk_tree_selection_get_selected_rows(selection, model); gtk_tree_model_get_iter(*model, &iter, selected_rows->data); utl_free_list(selected_rows, (GDestroyNotify) gtk_tree_path_free); return iter; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/calendar_ical.c000664 001750 001750 00000212130 12561325524 016225 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_ical.h" #include "i18n.h" #include "calendar.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "calendar_notes.h" #include "calendar_widget.h" #include "options_prefs.h" #include "calendar_preferences_gui.h" #include "stock_icons.h" #ifdef HAVE_LIBICAL #include #include #include #include /*------------------------------------------------------------------------------*/ void ics_initialize_timezone (void) { gchar *tz_search_paths [] = { "/usr/share/zoneinfo/", "/opt/usr/share/libical/zoneinfo/", "/usr/share/libical/zoneinfo/", "/usr/local/share/libical/zoneinfo/" }; gint i; #define N_SEARCH_PATHS (sizeof (tz_search_paths) / sizeof (tz_search_paths [0])) for (i = 0; i < N_SEARCH_PATHS; i++) { if (!g_access (tz_search_paths[i], F_OK | R_OK)) { set_zone_directory (tz_search_paths[i]); break; } } } /*------------------------------------------------------------------------------*/ gchar* ics_read_stream (gchar *s, size_t size, void *d) { return fgets (s, size, (FILE*)d); } /*------------------------------------------------------------------------------*/ gchar* str_remove_backslash (gchar *text) { static gchar tmpbuf[BUFFER_SIZE]; gint i, j; i = j = 0; while (text[i] != '\0') { if (text[i] == '\\' && text[i+1] != 'n') i++; tmpbuf[j++] = text[i++]; } tmpbuf[j] = '\0'; return tmpbuf; } /*------------------------------------------------------------------------------*/ void add_ics_entry_to_day_info_panel (gchar *name, struct ics_entry *item, gboolean desc_flag, gchar **html, GUI *appGUI) { gchar tmpbuf[BUFFER_SIZE]; gchar *tmp_str = NULL, *tmp = NULL; if (name != NULL) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s:\n", name); if (html != NULL) { *(html) = utl_strconcat (*(html), "", tmpbuf, "", NULL); } else { gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "bold", NULL); } } if (item->description != NULL) { tmp_str = utl_text_replace (item->description, "\\\\n", "\n"); } if (item->seconds_begin != 0 && item->seconds_end != 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "[ %s, %s - %s ]\n%s", utl_get_julian_day_name (item->julian), utl_time_print_s (item->seconds_begin, TIME_HH_MM, config.override_locale_settings), utl_time_print_s (item->seconds_end, TIME_HH_MM, config.override_locale_settings), str_remove_backslash (item->summary)); } else if (item->seconds_begin != 0 && item->seconds_end == 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "[ %s, %s ]\n%s", utl_get_julian_day_name (item->julian), utl_time_print_s (item->seconds_begin, TIME_HH_MM, config.override_locale_settings), str_remove_backslash (item->summary)); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", str_remove_backslash (item->summary)); } if (html != NULL) { *(html) = utl_strconcat (*(html), tmpbuf, "
", NULL); } else { tmp = utl_strconcat (tmpbuf, "\n", NULL); gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmp, -1); g_free (tmp); } if (item->description != NULL && desc_flag == TRUE) { if (html != NULL) { g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)\n", str_remove_backslash (tmp_str)); *(html) = utl_strconcat (*(html), "", tmpbuf, "
", NULL); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "(%s)\n\n", str_remove_backslash (tmp_str)); gtk_text_buffer_insert_with_tags_by_name (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, tmpbuf, -1, "italic", NULL); } } else { if (html == NULL) { gtk_text_buffer_insert (appGUI->cal->day_desc_text_buffer, &appGUI->cal->day_desc_iter, "\n", -1); } } if (item->description != NULL) { g_free (tmp_str); } } /*------------------------------------------------------------------------------*/ void ics_add_item (struct ics_file *file_entry, icalproperty *dtime_begin, icalproperty *dtime_end, icalproperty *summary, icalproperty *description) { icaltimetype tt; struct ics_entry *item; item = g_malloc (sizeof (struct ics_entry)); tt = icaltime_from_string (icalproperty_get_value_as_string (dtime_begin)); if (tt.day == 29 && tt.month == 2 && !g_date_valid_dmy (tt.day, tt.month, tt.year)) { item->julian = utl_date_dmy_to_julian (tt.day, tt.month, LEAP_YEAR); } else { item->julian = utl_date_dmy_to_julian (tt.day, tt.month, tt.year); } item->seconds_begin = utl_time_hms_to_seconds (tt.hour, tt.minute, tt.second); tt = icaltime_from_string (icalproperty_get_value_as_string (dtime_end)); item->seconds_end = utl_time_hms_to_seconds (tt.hour, tt.minute, tt.second); item->summary = g_strdup (icalproperty_get_value_as_string (summary)); if (description != NULL) { item->description = g_strdup (icalproperty_get_value_as_string (description)); } else { item->description = NULL; } file_entry->entries_list = g_slist_prepend (file_entry->entries_list, item); } /*------------------------------------------------------------------------------*/ gint ics_parse_file (struct ics_file *file_entry, gchar *name, gchar *filename, gboolean desc_flag, gboolean count_only, GUI *appGUI) { FILE *ics_stream; icalparser *ics_parser; icalcomponent *ics_component; icalcomponent *h, *l; icalproperty *tb, *te, *p, *r; gint n = 0; ics_parser = icalparser_new (); g_return_val_if_fail (ics_parser != NULL, n); ics_stream = fopen (filename, "r"); if (ics_stream == NULL) { icalparser_free (ics_parser); return n; } icalparser_set_gen_data (ics_parser, ics_stream); ics_component = icalparser_parse (ics_parser, ics_read_stream); if (ics_component == NULL) { fclose (ics_stream); icalparser_free (ics_parser); return n; } if (icalcomponent_get_first_component (ics_component, ICAL_VEVENT_COMPONENT) != NULL) { for (h = icalcomponent_get_first_component (ics_component, ICAL_VEVENT_COMPONENT); h; h = icalcomponent_get_next_component (ics_component, ICAL_VEVENT_COMPONENT)) { tb = icalcomponent_get_first_property (h, ICAL_DTSTART_PROPERTY); if (tb == NULL) continue; te = icalcomponent_get_first_property (h, ICAL_DTEND_PROPERTY); if (te == NULL) continue; p = icalcomponent_get_first_property (h, ICAL_SUMMARY_PROPERTY); if (p != NULL && count_only == FALSE) { r = icalcomponent_get_first_property (h, ICAL_DESCRIPTION_PROPERTY); ics_add_item (file_entry, tb, te, p, r); } n++; } } else if (icalcomponent_get_first_component (ics_component, ICAL_VCALENDAR_COMPONENT) != NULL) { for (l = icalcomponent_get_first_component (ics_component, ICAL_VCALENDAR_COMPONENT); l; l = icalcomponent_get_next_component (ics_component, ICAL_VCALENDAR_COMPONENT)) { h = icalcomponent_get_first_component (l, ICAL_VEVENT_COMPONENT); tb = icalcomponent_get_first_property (h, ICAL_DTSTART_PROPERTY); if (tb == NULL) continue; te = icalcomponent_get_first_property (h, ICAL_DTEND_PROPERTY); if (te == NULL) continue; p = icalcomponent_get_first_property (h, ICAL_SUMMARY_PROPERTY); if (p != NULL && count_only == FALSE) { r = icalcomponent_get_first_property (h, ICAL_DESCRIPTION_PROPERTY); ics_add_item (file_entry, tb, te, p, r); } n++; } } else if (icalcomponent_get_first_component (ics_component, ICAL_VTODO_COMPONENT) != NULL) { for (l = icalcomponent_get_first_component (ics_component, ICAL_VTODO_COMPONENT); l; l = icalcomponent_get_next_component (ics_component, ICAL_VTODO_COMPONENT)) { tb = icalcomponent_get_first_property (l, ICAL_DTSTART_PROPERTY); if (tb == NULL) continue; te = icalcomponent_get_first_property (l, ICAL_DTEND_PROPERTY); if (te == NULL) continue; p = icalcomponent_get_first_property (l, ICAL_SUMMARY_PROPERTY); if (p != NULL && count_only == FALSE) { r = icalcomponent_get_first_property (l, ICAL_DESCRIPTION_PROPERTY); ics_add_item (file_entry, tb, te, p, r); } n++; } } icalcomponent_free (ics_component); fclose (ics_stream); icalparser_free (ics_parser); return n; } /*------------------------------------------------------------------------------*/ void ics_check_if_valid (GUI *appGUI) { gint i; gchar *ical_filename, *ical_name; GtkTreeIter iter; GdkPixbuf *image; GtkWidget *helper; const gchar *stock_id; gboolean status, disable; helper = gtk_image_new (); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_DISABLED, &disable, -1); status = !g_access (ical_filename, F_OK | R_OK); if (status == TRUE) { if (ics_parse_file (NULL, ical_name, ical_filename, FALSE, TRUE, appGUI) == 0) { status = FALSE; } } stock_id = (status == TRUE) ? OSMO_STOCK_LIST_VALID : OSMO_STOCK_LIST_INVALID; image = gtk_widget_render_icon (helper, stock_id, GTK_ICON_SIZE_MENU, NULL); gtk_list_store_set(appGUI->opt->calendar_ical_files_store, &iter, ICAL_COLUMN_VALID_ICON, image, ICAL_COLUMN_VALID_FLAG, status, ICAL_COLUMN_STATE, (status && !disable), -1); g_object_unref (image); g_free (ical_name); g_free (ical_filename); } } /*------------------------------------------------------------------------------*/ gboolean ics_check_event (guint32 julian, GUI *appGUI) { GtkTreeIter iter; GSList *node, *node2; struct ics_file *entry; struct ics_entry *item; gboolean valid_ics, year_flag, mark_flag, disabled; gboolean found; gchar *ical_filename; gint i; if (!g_date_valid_julian (julian)) return FALSE; found = FALSE; for (node = appGUI->cal->ics_files_list; node != NULL; node = node->next) { entry = node->data; i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_VALID_FLAG, &valid_ics, ICAL_COLUMN_DISABLED, &disabled, ICAL_COLUMN_MARK, &mark_flag, ICAL_COLUMN_FULL_DATE, &year_flag, -1); if (!strcmp (entry->filename, ical_filename)) { g_free (ical_filename); break; } g_free (ical_filename); } if (entry->entries_list != NULL && valid_ics == TRUE && disabled == FALSE && mark_flag == TRUE && year_flag == TRUE) { for (node2 = entry->entries_list; node2 != NULL; node2 = node2->next) { item = node2->data; if (item->julian == julian) { found = TRUE; break; } } } if (found == TRUE) break; } return found; } /*------------------------------------------------------------------------------*/ gint sFunc (struct ics_entry *a, struct ics_entry *b) { return (a->seconds_begin > b->seconds_begin); } void calendar_display_ics (GDate *date, gchar **html, GUI *appGUI) { GtkTreeIter iter; GSList *node, *node2; GSList *sorted_list; struct ics_file *entry; struct ics_entry *item, *sitem; gboolean valid_ics, desc_flag, year_flag, mark_flag, title_flag, disabled; gchar *ical_name, *ical_filename; gint i, day, month, year; gint jd, jm, jy; utl_date_get_dmy (date, &day, &month, &year); for (node = appGUI->cal->ics_files_list; node != NULL; node = node->next) { entry = node->data; i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_VALID_FLAG, &valid_ics, ICAL_COLUMN_DISABLED, &disabled, ICAL_COLUMN_ENABLE_DESC, &desc_flag, ICAL_COLUMN_MARK, &mark_flag, ICAL_COLUMN_FULL_DATE, &year_flag, -1); if (!strcmp (entry->filename, ical_filename)) { g_free (ical_filename); break; } g_free (ical_name); g_free (ical_filename); } title_flag = FALSE; sorted_list = NULL; if (entry->entries_list != NULL && valid_ics == TRUE && disabled == FALSE) { for (node2 = entry->entries_list; node2 != NULL; node2 = node2->next) { item = node2->data; utl_date_julian_to_dmy (item->julian, &jd, &jm, &jy); if (day == jd && month == jm) { if (year_flag == FALSE || year == jy) { sitem = g_malloc (sizeof (struct ics_entry)); if (sitem != NULL) { sitem->julian = item->julian; sitem->seconds_begin = item->seconds_begin; sitem->seconds_end = item->seconds_end; sitem->summary = item->summary; sitem->description = item->description; sorted_list = g_slist_insert_sorted (sorted_list, sitem, (GCompareFunc)sFunc); } } } } /* add to panel sorted items */ if (sorted_list != NULL) { for (node2 = sorted_list; node2 != NULL; node2 = node2->next) { item = node2->data; if (title_flag == FALSE) { add_ics_entry_to_day_info_panel (ical_name, item, desc_flag, html, appGUI); title_flag = TRUE; } else { add_ics_entry_to_day_info_panel (NULL, item, desc_flag, html, appGUI); } } } g_slist_foreach (sorted_list, (GFunc) g_free, NULL); g_slist_free (sorted_list); } g_free (ical_name); } } /*------------------------------------------------------------------------------*/ void ics_calendar_init (GUI *appGUI) { struct ics_file *ics_file_entry; gchar *ical_name, *ical_filename; GtkTreeIter iter; gint i; gboolean flag, desc_flag, disabled; ics_initialize_timezone (); appGUI->cal->ics_files_list = NULL; i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_VALID_FLAG, &flag, ICAL_COLUMN_DISABLED, &disabled, ICAL_COLUMN_ENABLE_DESC, &desc_flag, -1); if (flag == TRUE && disabled == FALSE) { ics_file_entry = g_malloc(sizeof(struct ics_file)); if (ics_file_entry != NULL) { ics_file_entry->filename = g_strdup(ical_filename); ics_file_entry->entries_list = NULL; ics_parse_file (ics_file_entry, ical_name, ical_filename, desc_flag, FALSE, appGUI); appGUI->cal->ics_files_list = g_slist_append (appGUI->cal->ics_files_list, ics_file_entry); } } g_free (ical_name); g_free (ical_filename); } } /*------------------------------------------------------------------------------*/ void ics_calendar_close (GUI *appGUI) { GSList *node, *node2; struct ics_file *entry; struct ics_entry *item; for (node = appGUI->cal->ics_files_list; node != NULL; node = node->next) { entry = node->data; g_free (entry->filename); if (entry->entries_list != NULL) { for (node2 = entry->entries_list; node2 != NULL; node2 = node2->next) { item = node2->data; g_free (item->summary); g_free (item->description); g_free (item); } g_slist_free (entry->entries_list); entry->entries_list = NULL; } g_free (entry); } g_slist_free (appGUI->cal->ics_files_list); appGUI->cal->ics_files_list = NULL; } /*------------------------------------------------------------------------------*/ void read_ical_entries (GUI *appGUI) { xmlDocPtr doc; xmlChar *key; xmlNodePtr node, entry_node, main_node; gboolean desc_flag = FALSE, mark_flag = FALSE, disabled = FALSE; gchar item_name[BUFFER_SIZE], item_filename[BUFFER_SIZE]; GtkTreeIter iter; if (g_file_test (prefs_get_config_filename(ICAL_ENTRIES_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR) == FALSE) return; if((doc = xmlParseFile(prefs_get_config_filename(ICAL_ENTRIES_FILENAME, appGUI)))) { if(!(node = xmlDocGetRootElement(doc))) { xmlFreeDoc(doc); return; } if (xmlStrcmp(node->name, (const xmlChar *) ICAL_NAME)) { xmlFreeDoc(doc); return; } main_node = node->xmlChildrenNode; while (main_node != NULL) { if(!xmlStrcmp(main_node->name, (xmlChar *) "entry")) { entry_node = main_node->xmlChildrenNode; while (entry_node != NULL) { if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "name"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { strncpy (item_name, (gchar *) key, BUFFER_SIZE-1); xmlFree(key); } } if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "filename"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { strncpy (item_filename, (gchar *) key, BUFFER_SIZE-1); xmlFree(key); } } if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "disabled"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { disabled = atoi((gchar *) key); xmlFree(key); } } if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "description"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { desc_flag = atoi((gchar *) key); xmlFree(key); } } if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "mark"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { mark_flag = atoi((gchar *) key); xmlFree(key); } } if ((!xmlStrcmp(entry_node->name, (const xmlChar *) "use_year"))) { key = xmlNodeListGetString(doc, entry_node->xmlChildrenNode, 1); if (key != NULL) { gtk_list_store_append(appGUI->opt->calendar_ical_files_store, &iter); gtk_list_store_set(appGUI->opt->calendar_ical_files_store, &iter, ICAL_COLUMN_NAME, item_name, ICAL_COLUMN_FILENAME, item_filename, ICAL_COLUMN_ENABLE_DESC, desc_flag, ICAL_COLUMN_MARK, mark_flag, ICAL_COLUMN_DISABLED, disabled, ICAL_COLUMN_STATE, !disabled, ICAL_COLUMN_FULL_DATE, atoi((gchar *) key), -1); xmlFree(key); } } entry_node = entry_node->next; } } main_node = main_node->next; } xmlFreeDoc(doc); } ics_check_if_valid (appGUI); ics_calendar_init (appGUI); } /*------------------------------------------------------------------------------*/ void write_ical_entries (GUI *appGUI) { xmlDocPtr doc; xmlNodePtr main_node, entry_node; xmlAttrPtr attr; GtkTreeIter iter; gint i; gchar *ical_name, *ical_filename; gboolean desc_flag, mark_flag, year_flag, disabled; gchar tmpbuf[BUFFER_SIZE]; doc = xmlNewDoc((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); main_node = xmlNewNode(NULL, (const xmlChar *) ICAL_NAME); xmlDocSetRootElement(doc, main_node); i = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_FILENAME, &ical_filename, ICAL_COLUMN_ENABLE_DESC, &desc_flag, ICAL_COLUMN_MARK, &mark_flag, ICAL_COLUMN_FULL_DATE, &year_flag, ICAL_COLUMN_DISABLED, &disabled, -1); entry_node = xmlNewChild (main_node, NULL, (const xmlChar *) "entry", (xmlChar *) NULL); xmlNewChild (entry_node, NULL, (const xmlChar *) "name", (xmlChar *) ical_name); g_free (ical_name); xmlNewChild (entry_node, NULL, (const xmlChar *) "filename", (xmlChar *) ical_filename); g_free (ical_filename); sprintf (tmpbuf, "%d", disabled); xmlNewChild (entry_node, NULL, (const xmlChar *) "disabled", (xmlChar *) tmpbuf); sprintf (tmpbuf, "%d", desc_flag); xmlNewChild (entry_node, NULL, (const xmlChar *) "description", (xmlChar *) tmpbuf); sprintf (tmpbuf, "%d", mark_flag); xmlNewChild (entry_node, NULL, (const xmlChar *) "mark", (xmlChar *) tmpbuf); sprintf (tmpbuf, "%d", year_flag); xmlNewChild (entry_node, NULL, (const xmlChar *) "use_year", (xmlChar *) tmpbuf); } xmlSaveFormatFileEnc (prefs_get_config_filename(ICAL_ENTRIES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeProp (attr); xmlFreeDoc (doc); ics_calendar_close (appGUI); } /*------------------------------------------------------------------------------*/ void ics_calendar_refresh (GUI *appGUI) { ics_calendar_close (appGUI); ics_calendar_init (appGUI); cal_set_day_info (appGUI); } /*------------------------------------------------------------------------------*/ void ical_events_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_window_get_size (GTK_WINDOW (appGUI->cal->events_window), &config.ib_window_size_x, &config.ib_window_size_y); gtk_widget_destroy (appGUI->cal->events_window); } /*------------------------------------------------------------------------------*/ void button_ical_events_window_close_cb (GtkButton *button, gpointer user_data) { ical_events_window_close_cb (GTK_WIDGET(button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint ical_events_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: ical_events_window_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void ical_events_list_create (gint calendar, GUI *appGUI) { struct ics_file *entry; struct ics_entry *item; GtkTreeIter iter; GSList *node; gboolean year_flag = FALSE, valid_flag, disabled; guint32 julian; gint j, n, cday, cmonth, cyear; gint jd, jm, jy; gchar tmpbuf[BUFFER_SIZE]; gtk_list_store_clear (GTK_LIST_STORE (appGUI->cal->ical_events_list_store)); utl_date_get_current_dmy (&cday, &cmonth, &cyear); /* get year flag */ j = n = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, NULL, j++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_FULL_DATE, &year_flag, ICAL_COLUMN_VALID_FLAG, &valid_flag, ICAL_COLUMN_DISABLED, &disabled, -1); if (valid_flag == FALSE || disabled == TRUE) continue; if (n == calendar) break; n++; } entry = g_slist_nth_data (appGUI->cal->ics_files_list, calendar); if (entry->entries_list == NULL) return; for (j = 0, node = entry->entries_list; node != NULL; node = node->next, j++) { item = g_slist_nth_data (entry->entries_list, j); gtk_list_store_append (appGUI->cal->ical_events_list_store, &iter); julian = item->julian; utl_date_julian_to_dmy (julian, &jd, &jm, &jy); if (year_flag == TRUE) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s (%s)", julian_to_str (julian, config.date_format, config.override_locale_settings), utl_date_print_j (julian, DATE_DAY_OF_WEEK_NAME, config.override_locale_settings)); gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_DATE, tmpbuf, -1); if (item->seconds_begin != 0 && item->seconds_end !=0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s - %s", utl_time_print_s (item->seconds_begin, TIME_HH_MM, config.override_locale_settings), utl_time_print_s (item->seconds_end, TIME_HH_MM, config.override_locale_settings)); gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_TIME, tmpbuf, -1); } else if (item->seconds_begin != 0) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", utl_time_print_s (item->seconds_begin, TIME_HH_MM, config.override_locale_settings)); gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_TIME, tmpbuf, -1); } else { gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_TIME, "-", -1); } } else { julian = utl_date_dmy_to_julian (jd, jm, LEAP_YEAR); gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_DATE, julian_to_str (julian, DATE_NAME_DAY, config.override_locale_settings), I_COLUMN_TIME, "-", -1); } gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_DATE_JULIAN, julian, I_COLUMN_TIME_B_SECONDS, item->seconds_begin, I_COLUMN_TIME_E_SECONDS, item->seconds_end, I_COLUMN_SUMMARY, str_remove_backslash (item->summary), I_COLUMN_FONT_WEIGHT, PANGO_WEIGHT_NORMAL, -1); if (jd == cday && jm == cmonth && (year_flag == FALSE || jy == cyear)) gtk_list_store_set (appGUI->cal->ical_events_list_store, &iter, I_COLUMN_FONT_WEIGHT, PANGO_WEIGHT_BOLD, -1); } } /*------------------------------------------------------------------------------*/ void calendar_update_items (gint calendar, GUI *appGUI) { struct ics_file *entry; gchar tmpbuf[BUFFER_SIZE]; gint i; entry = g_slist_nth_data (appGUI->cal->ics_files_list, calendar); g_return_if_fail (entry->entries_list != NULL); i = g_slist_length (entry->entries_list); g_snprintf (tmpbuf, BUFFER_SIZE, "%4d %s", i, ngettext ("event", "events", i)); gtk_label_set_markup (GTK_LABEL (appGUI->cal->n_items_label), tmpbuf); } /*------------------------------------------------------------------------------*/ void calendar_selected_cb (GtkComboBox *widget, gpointer user_data) { gint n; GUI *appGUI = (GUI *)user_data; n = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); calendar_update_items (n, appGUI); ical_events_list_create (n, appGUI); /* sort trigger */ gtk_tree_sortable_set_sort_column_id ((GtkTreeSortable *)appGUI->cal->ical_events_sort, I_COLUMN_DATE_JULIAN, GTK_SORT_ASCENDING); } /*------------------------------------------------------------------------------*/ gint custom_ical_events_sort_function (GtkTreeModel *model, GtkTreeIter *iter_a, GtkTreeIter *iter_b, gpointer user_data) { guint32 julian_a, julian_b, julian_s; gint time_a, time_b, time_s; if(iter_a == NULL || iter_b == NULL) { return 0; } gtk_tree_model_get (model, iter_a, I_COLUMN_DATE_JULIAN, &julian_a, I_COLUMN_TIME_B_SECONDS, &time_a, -1); gtk_tree_model_get (model, iter_b, I_COLUMN_DATE_JULIAN, &julian_b, I_COLUMN_TIME_B_SECONDS, &time_b, -1); julian_s = julian_a - julian_b; time_s = time_a - time_b; if (julian_s == 0 && time_s != 0) return time_s; if (julian_s != 0) return julian_s; return 0; } /*------------------------------------------------------------------------------*/ void ical_events_browser (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *close_button; GtkTreeIter iter; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *scrolledwindow; GtkWidget *table; GtkWidget *label; gchar tmpbuf[BUFFER_SIZE]; gchar *ical_name; gboolean valid, disabled; gint i, k; i = k = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, NULL, i++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_VALID_FLAG, &valid, ICAL_COLUMN_DISABLED, &disabled, -1); if (valid == TRUE && disabled == FALSE) k++; } if (k < 1) { utl_gui_create_dialog (GTK_MESSAGE_INFO, _("No valid calendars defined"), GTK_WINDOW(appGUI->main_window)); return; } appGUI->cal->events_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->events_window), _("iCalendar events")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->events_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW(appGUI->cal->events_window), config.ib_window_size_x, config.ib_window_size_y); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->events_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->events_window), "delete_event", G_CALLBACK(ical_events_window_close_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->events_window), GTK_WINDOW(appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->events_window), 8); g_signal_connect (G_OBJECT (appGUI->cal->events_window), "key_press_event", G_CALLBACK (ical_events_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->events_window), vbox1); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 6); table = gtk_table_new (1, 4, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox1), table, FALSE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); sprintf(tmpbuf, "%s:", _("Calendar")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); appGUI->cal->ical_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cal->ical_combobox); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->cal->ical_combobox), FALSE); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->ical_combobox, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (table), appGUI->cal->ical_combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); g_signal_connect(appGUI->cal->ical_combobox, "changed", G_CALLBACK(calendar_selected_cb), appGUI); k = 0; while (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, NULL, k++)) { gtk_tree_model_get(GTK_TREE_MODEL(appGUI->opt->calendar_ical_files_store), &iter, ICAL_COLUMN_NAME, &ical_name, ICAL_COLUMN_VALID_FLAG, &valid, ICAL_COLUMN_DISABLED, &disabled, -1); if (valid == TRUE && disabled == FALSE) { gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->ical_combobox), ical_name); } g_free (ical_name); } appGUI->cal->n_items_label = gtk_label_new (""); gtk_widget_show (appGUI->cal->n_items_label); gtk_widget_set_size_request (appGUI->cal->n_items_label, 100, -1); gtk_table_attach (GTK_TABLE (table), appGUI->cal->n_items_label, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (appGUI->cal->n_items_label), TRUE); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 6); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); appGUI->cal->ical_events_list_store = gtk_list_store_new(ICAL_EVENTS_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT); appGUI->cal->ical_events_sort = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL(appGUI->cal->ical_events_list_store)); appGUI->cal->ical_events_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL(appGUI->cal->ical_events_sort)); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(appGUI->cal->ical_events_list), FALSE); gtk_widget_show (appGUI->cal->ical_events_list); GTK_WIDGET_SET_FLAGS (appGUI->cal->ical_events_list, GTK_CAN_DEFAULT); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->cal->ical_events_list); /* create columns */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer, "text", I_COLUMN_DATE, "weight", I_COLUMN_FONT_WEIGHT, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Julian", renderer, "text", I_COLUMN_DATE_JULIAN, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); g_signal_emit_by_name(column, "clicked"); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Time"), renderer, "text", I_COLUMN_TIME, "weight", I_COLUMN_FONT_WEIGHT, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Begin seconds", renderer, "text", I_COLUMN_TIME_B_SECONDS, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("End seconds", renderer, "text", I_COLUMN_TIME_E_SECONDS, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new_with_attributes(_("Summary"), renderer, "text", I_COLUMN_SUMMARY, "weight", I_COLUMN_FONT_WEIGHT, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", I_COLUMN_FONT_WEIGHT, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->ical_events_list), column); gtk_tree_sortable_set_sort_func ((GtkTreeSortable *)appGUI->cal->ical_events_sort, I_COLUMN_DATE_JULIAN, (GtkTreeIterCompareFunc)custom_ical_events_sort_function, NULL, NULL); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); g_signal_connect(close_button, "clicked", G_CALLBACK(button_ical_events_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), close_button); gtk_widget_show(appGUI->cal->events_window); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->cal->ical_combobox), 0); gtk_widget_grab_focus (close_button); } /*------------------------------------------------------------------------------*/ void ical_export_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *)user_data; config.ical_export_pane_pos = gtk_paned_get_position(GTK_PANED(appGUI->cal->ical_export_vpaned)); gtk_widget_destroy (appGUI->cal->ical_export_window); } /*------------------------------------------------------------------------------*/ void button_ical_export_window_close_cb (GtkButton *button, gpointer user_data) { ical_export_window_close_cb (GTK_WIDGET(button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint ical_export_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { switch(event->keyval) { case GDK_Escape: ical_export_window_close_cb (GTK_WIDGET(widget), NULL, user_data); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void update_notes_marks (GuiCalendar *calendar, GUI *appGUI) { guint32 julian; gint i, days; GDate *date = g_date_new (); gui_calendar_clear_marks (GUI_CALENDAR(calendar), DAY_NOTE_MARK); gui_calendar_get_gdate (GUI_CALENDAR (calendar), date); days = utl_date_get_days_in_month (date); g_date_set_day (date, 1); julian = g_date_get_julian (date); for (i = 0; i < days; i++) if (cal_check_note (julian + i, appGUI) == TRUE) gui_calendar_mark_day (GUI_CALENDAR (calendar), i + 1, DAY_NOTE_MARK); g_date_free (date); } /*------------------------------------------------------------------------------*/ void use_date_period_cb (GtkToggleButton *togglebutton, gpointer user_data) { gboolean state; GUI *appGUI = (GUI *)user_data; state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton)); gtk_widget_set_sensitive (appGUI->cal->export_end_period_calendar, state); if (state == TRUE) { update_notes_marks (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), appGUI); } else { gui_calendar_clear_marks (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), DAY_NOTE_MARK); } } /*------------------------------------------------------------------------------*/ void select_file_cb (GtkWidget *widget, gpointer data) { GtkWidget *dialog; gchar f_filename[PATH_MAX]; GUI *appGUI = (GUI *)data; dialog = gtk_file_chooser_dialog_new(_("Select output file"), GTK_WINDOW(appGUI->main_window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), FALSE); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { g_strlcpy (f_filename, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)), PATH_MAX-1); if (g_str_has_suffix (f_filename, ".ics") == FALSE && g_str_has_suffix (f_filename, ".ICS") == FALSE) { g_strlcat(f_filename, ".ics", PATH_MAX-1); } gtk_entry_set_text (GTK_ENTRY(appGUI->cal->output_file_entry), f_filename); } gtk_widget_destroy(dialog); } /*------------------------------------------------------------------------------*/ void calendar_begin_end_day_selected_cb (GuiCalendar *calendar, gpointer user_data) { GUI *appGUI = (GUI *) user_data; update_notes_marks (GUI_CALENDAR (calendar), appGUI); } /*------------------------------------------------------------------------------*/ gint get_export_items (GUI *appGUI) { GtkTreeIter iter; gint i; i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->cal->export_events_list_store), &iter, NULL, i++)); return i-1; } /*------------------------------------------------------------------------------*/ void add_export_item_to_list (guint32 julian, GUI *appGUI) { GtkTreeIter iter; gchar *text, *stripped; gint i; gchar tmpbuf[BUFFER_SIZE]; if (cal_check_note (julian, appGUI) == TRUE) { text = cal_get_note (julian, appGUI); stripped = utl_gui_text_strip_tags (text); i = 0; do { tmpbuf[i] = stripped[i]; i++; } while (stripped[i] != '\n' && i < BUFFER_SIZE); tmpbuf[i] = '\0'; gtk_list_store_append (appGUI->cal->export_events_list_store, &iter); gtk_list_store_set (appGUI->cal->export_events_list_store, &iter, IE_COLUMN_DATE, julian_to_str (julian, DATE_FULL, config.override_locale_settings), IE_COLUMN_DATE_JULIAN, julian, IE_COLUMN_SUMMARY, tmpbuf, IE_COLUMN_DESCRIPTION, stripped, -1); g_free (stripped); } } /*------------------------------------------------------------------------------*/ void button_add_date_cb (GtkButton *button, GUI *appGUI) { guint32 julian, begin_julian, end_julian; GDate *date = g_date_new (); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->use_date_period_checkbutton)) == FALSE) { gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), date); add_export_item_to_list (g_date_get_julian (date), appGUI); } else { gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), date); begin_julian = g_date_get_julian (date); gui_calendar_get_gdate (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), date); end_julian = g_date_get_julian (date); if (begin_julian > end_julian) { julian = begin_julian; begin_julian = end_julian; end_julian = julian; } for (julian = begin_julian; julian <= end_julian; julian++) { add_export_item_to_list (julian, appGUI); } } g_date_free (date); } /*------------------------------------------------------------------------------*/ void summary_edited_cb (GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; GUI *appGUI = (GUI *)user_data; if (g_ascii_strcasecmp (new_text, "") != 0) { model = gtk_tree_view_get_model (GTK_TREE_VIEW(appGUI->cal->export_events_list_treeview)); if (gtk_tree_model_get_iter_from_string (model, &iter, path)) { gtk_list_store_set(appGUI->cal->export_events_list_store, &iter, IE_COLUMN_SUMMARY, new_text, -1); } } } /*------------------------------------------------------------------------------*/ void button_remove_date_cb (GtkButton *button, gpointer user_data) { GtkTreeIter iter; GtkTreePath *path; GUI *appGUI = (GUI *)user_data; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->cal->export_events_list_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL(appGUI->cal->export_events_list_store), &iter, path); gtk_list_store_remove (appGUI->cal->export_events_list_store, &iter); } } /*------------------------------------------------------------------------------*/ void button_clear_list_cb (GtkButton *button, gpointer user_data) { gint response; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; if (!get_export_items (appGUI)) return; sprintf (tmpbuf, "%s\n\n%s", _("The list will be cleared and all entries will be lost."), _("Are you sure?")); response = utl_gui_create_dialog (GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->cal->ical_export_window)); if (response == GTK_RESPONSE_YES) { gtk_list_store_clear (appGUI->cal->export_events_list_store); } } /*------------------------------------------------------------------------------*/ void export_list_item_selected (GtkTreeSelection *selection, gpointer user_data) { GtkTreeIter iter; GtkTextIter titer; GtkTreeModel *model; GtkTextBuffer *text_buffer; gchar *text; GUI *appGUI = (GUI *)user_data; text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(appGUI->cal->export_day_note_textview)); utl_gui_clear_text_buffer (text_buffer, &titer); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, IE_COLUMN_DESCRIPTION, &text, -1); gtk_text_buffer_insert (text_buffer, &titer, text, -1); g_free (text); } } /*------------------------------------------------------------------------------*/ void ical_export_cb (GtkButton *button, gpointer user_data) { GtkTreeIter iter; gchar *filename; gint i; guint32 julian_day; gint day, month, year; gchar *summary, *description; icalcomponent *event, *calendar; icalproperty *prop; icalset *ics_file; struct icaltimetype atime; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)user_data; filename = g_strdup (gtk_entry_get_text(GTK_ENTRY(appGUI->cal->output_file_entry))); if (get_export_items(appGUI) == 0 || strlen(filename) == 0) { g_free (filename); return; } if (utl_gui_check_overwrite_file (filename, appGUI->cal->ical_export_window, appGUI) != 0) { return; } else { g_unlink (filename); } ics_file = icalset_new_file (filename); if (ics_file == NULL) { ical_export_window_close_cb (NULL, NULL, user_data); g_free (filename); return; } i = 0; calendar = icalcomponent_new (ICAL_VCALENDAR_COMPONENT); prop = icalproperty_new_prodid ("//Clay//NONSGML Osmo PIM//EN"); icalcomponent_add_property (calendar, prop); prop = icalproperty_new_version (VERSION); icalcomponent_add_property (calendar, prop); while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->cal->export_events_list_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->cal->export_events_list_store), &iter, IE_COLUMN_DATE_JULIAN, &julian_day, IE_COLUMN_SUMMARY, &summary, IE_COLUMN_DESCRIPTION, &description, -1); event = icalcomponent_new (ICAL_VEVENT_COMPONENT); utl_date_julian_to_dmy (julian_day, &day, &month, &year); atime.day = day; atime.month = month; atime.year = year; atime.is_date = 1; g_snprintf (tmpbuf, BUFFER_SIZE, "id%d%d%d%d@clayo.org", year, month, day, i); prop = icalproperty_new_uid (tmpbuf); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_summary (summary); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_description (description); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_dtstart (atime); icalcomponent_add_property (event, prop); icalproperty_free (prop); prop = icalproperty_new_dtend (atime); icalcomponent_add_property (event, prop); icalproperty_free (prop); icalcomponent_add_component (calendar, event); icalcomponent_free (event); g_free (summary); g_free (description); } icalset_add_component (ics_file, calendar); icalfileset_commit (ics_file); icalcomponent_free (calendar); g_free (filename); if (i >= 2) { sprintf(tmpbuf, "%s %d %s.\n", _("Done!"), i-1, ngettext ("event exported", "events exported", i-1)); utl_gui_create_dialog (GTK_MESSAGE_INFO, tmpbuf, GTK_WINDOW(appGUI->cal->ical_export_window)); } ical_export_window_close_cb (NULL, NULL, user_data); } /*------------------------------------------------------------------------------*/ void ical_export (GUI *appGUI) { GtkWidget *vbox1, *vbox2; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *export_button; GtkWidget *cancel_button; GtkWidget *hbox1, *hbox2, *hbox3, *hbox4; GtkWidget *frame; GtkWidget *alignment; GtkWidget *browse_dir_button; GtkWidget *label; GtkWidget *add_item_button; GtkWidget *remove_item_button; GtkWidget *clear_list_button; GtkWidget *el_scrolledwindow; GtkWidget *dn_scrolledwindow; GtkTreeViewColumn *column; GtkCellRenderer *renderer; gchar tmpbuf[BUFFER_SIZE]; appGUI->cal->ical_export_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->ical_export_window), _("iCalendar export")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->ical_export_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW(appGUI->cal->ical_export_window), 600, 650); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->ical_export_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->ical_export_window), "delete_event", G_CALLBACK(ical_export_window_close_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->ical_export_window), GTK_WINDOW(appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->ical_export_window), 8); g_signal_connect (G_OBJECT (appGUI->cal->ical_export_window), "key_press_event", G_CALLBACK (ical_export_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->ical_export_window), vbox1); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); sprintf(tmpbuf, "%s:", _("Day Selector")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); vbox2 = gtk_vbox_new (FALSE, 8); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (alignment), vbox2); hbox1 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0); appGUI->cal->export_begin_period_calendar = gui_calendar_new (); gtk_widget_show (appGUI->cal->export_begin_period_calendar); gui_calendar_set_cursor_type (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), CURSOR_BLOCK); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), config.today_marker_type, TODAY_MARKER); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), (config.display_options & !GUI_CALENDAR_NO_MONTH_CHANGE) | GUI_CALENDAR_SHOW_HEADING | GUI_CALENDAR_SHOW_DAY_NAMES | (config.display_options & GUI_CALENDAR_WEEK_START_MONDAY)); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->export_begin_period_calendar, TRUE, TRUE, 0); update_notes_marks (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->export_begin_period_calendar), "day-selected", G_CALLBACK (calendar_begin_end_day_selected_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->export_begin_period_calendar), "day-selected-double-click", G_CALLBACK (button_add_date_cb), appGUI); appGUI->cal->export_end_period_calendar = gui_calendar_new (); gtk_widget_show (appGUI->cal->export_end_period_calendar); gui_calendar_set_cursor_type (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), CURSOR_BLOCK); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->export_begin_period_calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_marker (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), config.today_marker_type, TODAY_MARKER); gui_calendar_set_color (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->cal->export_end_period_calendar), (config.display_options & !GUI_CALENDAR_NO_MONTH_CHANGE) | GUI_CALENDAR_SHOW_HEADING | GUI_CALENDAR_SHOW_DAY_NAMES | (config.display_options & GUI_CALENDAR_WEEK_START_MONDAY)); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->export_end_period_calendar, TRUE, TRUE, 0); gtk_widget_set_sensitive (appGUI->cal->export_end_period_calendar, FALSE); g_signal_connect (G_OBJECT (appGUI->cal->export_end_period_calendar), "day-selected", G_CALLBACK (calendar_begin_end_day_selected_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->cal->export_end_period_calendar), "day-selected-double-click", G_CALLBACK (button_add_date_cb), appGUI); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, TRUE, 0); appGUI->cal->use_date_period_checkbutton = gtk_check_button_new_with_mnemonic (_("Use date period")); gtk_widget_show (appGUI->cal->use_date_period_checkbutton); GTK_WIDGET_UNSET_FLAGS (appGUI->cal->use_date_period_checkbutton, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (appGUI->cal->use_date_period_checkbutton), "toggled", G_CALLBACK (use_date_period_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox2), appGUI->cal->use_date_period_checkbutton, FALSE, FALSE, 0); add_item_button = utl_gui_create_labeled_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, _("Add")); gtk_widget_show (add_item_button); GTK_WIDGET_UNSET_FLAGS (add_item_button, GTK_CAN_FOCUS); gtk_box_pack_end (GTK_BOX (hbox2), add_item_button, FALSE, FALSE, 0); g_signal_connect(add_item_button, "clicked", G_CALLBACK(button_add_date_cb), appGUI); appGUI->cal->ical_export_vpaned = gtk_vpaned_new (); gtk_widget_show (appGUI->cal->ical_export_vpaned); gtk_box_pack_start (GTK_BOX (vbox2), appGUI->cal->ical_export_vpaned, TRUE, TRUE, 0); gtk_paned_set_position(GTK_PANED(appGUI->cal->ical_export_vpaned), config.ical_export_pane_pos); el_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (el_scrolledwindow); gtk_paned_pack1 (GTK_PANED (appGUI->cal->ical_export_vpaned), el_scrolledwindow, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (el_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (el_scrolledwindow), GTK_SHADOW_IN); appGUI->cal->export_events_list_store = gtk_list_store_new (ICAL_EXPORT_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING); appGUI->cal->export_events_list_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(appGUI->cal->export_events_list_store)); gtk_widget_show (appGUI->cal->export_events_list_treeview); gtk_container_add (GTK_CONTAINER (el_scrolledwindow), appGUI->cal->export_events_list_treeview); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (appGUI->cal->export_events_list_treeview), TRUE); appGUI->cal->export_events_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->cal->export_events_list_treeview)); g_signal_connect (G_OBJECT(appGUI->cal->export_events_list_selection), "changed", G_CALLBACK(export_list_item_selected), appGUI); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Date"), renderer, "text", IE_COLUMN_DATE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->cal->export_events_list_treeview), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", IE_COLUMN_DATE_JULIAN, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->cal->export_events_list_treeview), column); renderer = gtk_cell_renderer_text_new(); g_object_set (G_OBJECT(renderer), "xpad", 2, NULL); g_object_set (G_OBJECT(renderer), "editable", TRUE, "editable-set", TRUE, NULL); g_object_set (G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (summary_edited_cb), appGUI); column = gtk_tree_view_column_new_with_attributes(_("Summary"), renderer, "text", IE_COLUMN_SUMMARY, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->cal->export_events_list_treeview), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", IE_COLUMN_DESCRIPTION, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(appGUI->cal->export_events_list_treeview), column); dn_scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (dn_scrolledwindow); gtk_paned_pack2 (GTK_PANED (appGUI->cal->ical_export_vpaned), dn_scrolledwindow, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dn_scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (dn_scrolledwindow), GTK_SHADOW_IN); appGUI->cal->export_day_note_textview = gtk_text_view_new (); gtk_widget_show (appGUI->cal->export_day_note_textview); gtk_container_add (GTK_CONTAINER (dn_scrolledwindow), appGUI->cal->export_day_note_textview); gtk_text_view_set_editable (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), FALSE); gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), GTK_WRAP_WORD_CHAR); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), FALSE); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), 4); gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), 4); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), 4); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (appGUI->cal->export_day_note_textview), 4); hbox4 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox4); gtk_box_pack_start (GTK_BOX (vbox2), hbox4, FALSE, TRUE, 0); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_end (GTK_BOX (hbox4), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); clear_list_button = utl_gui_create_labeled_button (GTK_STOCK_CLEAR, OSMO_STOCK_BUTTON_CLEAR, _("Clear")); gtk_widget_show (clear_list_button); GTK_WIDGET_UNSET_FLAGS (clear_list_button, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbuttonbox), clear_list_button); g_signal_connect(clear_list_button, "clicked", G_CALLBACK(button_clear_list_cb), appGUI); remove_item_button = utl_gui_create_labeled_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, _("Remove")); gtk_widget_show (remove_item_button); GTK_WIDGET_UNSET_FLAGS (remove_item_button, GTK_CAN_FOCUS); gtk_container_add (GTK_CONTAINER (hbuttonbox), remove_item_button); g_signal_connect(remove_item_button, "clicked", G_CALLBACK(button_remove_date_cb), appGUI); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); sprintf(tmpbuf, "%s:", _("Output filename")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox3 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox3); gtk_container_add (GTK_CONTAINER (alignment), hbox3); appGUI->cal->output_file_entry = gtk_entry_new (); gtk_widget_show (appGUI->cal->output_file_entry); gtk_box_pack_start (GTK_BOX (hbox3), appGUI->cal->output_file_entry, TRUE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->output_file_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE(appGUI->cal->output_file_entry), FALSE); browse_dir_button = utl_gui_create_labeled_button (GTK_STOCK_OPEN, OSMO_STOCK_BUTTON_OPEN, _("Browse")); gtk_widget_show (browse_dir_button); GTK_WIDGET_UNSET_FLAGS(browse_dir_button, GTK_CAN_FOCUS); g_signal_connect(browse_dir_button, "clicked", G_CALLBACK(select_file_cb), appGUI); gtk_box_pack_start (GTK_BOX (hbox3), browse_dir_button, FALSE, FALSE, 0); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT); g_signal_connect(cancel_button, "clicked", G_CALLBACK(button_ical_export_window_close_cb), appGUI); export_button = gtk_button_new_with_label (_("Export")); gtk_widget_show (export_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), export_button); GTK_WIDGET_SET_FLAGS (export_button, GTK_CAN_DEFAULT); g_signal_connect(export_button, "clicked", G_CALLBACK(ical_export_cb), appGUI); gtk_widget_show(appGUI->cal->ical_export_window); } /*------------------------------------------------------------------------------*/ #endif /* HAVE_LIBICAL */ osmo-0.2.14/src/calendar_notes.c000664 001750 001750 00000074205 12561325524 016456 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar_notes.h" #include "i18n.h" #include "utils.h" #include "utils_gui.h" #include "utils_date.h" #include "options_prefs.h" #include "calendar.h" #include "stock_icons.h" /*------------------------------------------------------------------------------*/ gboolean cal_check_note (guint32 julian, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date == julian) return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean cal_check_notes (guint32 julian_start, guint32 julian_end, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date >= julian_start && n->date <= julian_end) return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void cal_notes_foreach (guint32 julian_start, guint32 julian_end, gboolean (*cnfunc)(), GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date >= julian_start && n->date <= julian_end) if ((*cnfunc)(n, appGUI) == TRUE) break; } } /*------------------------------------------------------------------------------*/ gchar * cal_get_note (guint32 julian, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date == julian) return n->note; } return NULL; } /*------------------------------------------------------------------------------*/ gchar * cal_get_note_color (guint32 julian, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date == julian) return n->color; } return NULL; } /*------------------------------------------------------------------------------*/ void cal_replace_note_color (gchar *old_color, gchar *new_color, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->color != NULL && strncmp (n->color, old_color, MAXCOLORNAME) == 0) { g_free (n->color); n->color = g_strdup (new_color); } } } /*------------------------------------------------------------------------------*/ void cal_add_note (guint32 julian, gchar *color_str, gchar *text_note, GUI *appGUI) { struct note *n; g_return_if_fail (text_note != NULL); n = g_slice_new (struct note); n->date = julian; n->color = g_strdup (color_str); n->note = g_strdup (text_note); cal_remove_note (julian, appGUI); appGUI->cal->notes_list = g_slist_append (appGUI->cal->notes_list, n); } /*------------------------------------------------------------------------------*/ void cal_remove_note (guint32 julian, GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; if (n->date == julian) { g_free (n->color); g_free (n->note); g_slice_free (struct note, n); appGUI->cal->notes_list = g_slist_remove (appGUI->cal->notes_list, n); break; } } } /*------------------------------------------------------------------------------*/ void cal_free_notes_list (GUI *appGUI) { GSList *node; struct note *n; for (node = appGUI->cal->notes_list; node != NULL; node = node->next) { n = (struct note *) node->data; g_free (n->color); g_free (n->note); g_slice_free (struct note, n); } g_slist_free (appGUI->cal->notes_list); appGUI->cal->notes_list = NULL; } /*------------------------------------------------------------------------------*/ void cal_read_notes (GUI *appGUI) { xmlDocPtr doc; xmlChar *key, *prop; xmlNodePtr node, cnode, category_node; GtkTreeIter iter; GdkPixbuf *image; guint32 julian; gint day, month, year; gchar *color_str, *note; appGUI->cal->notes_list = NULL; if (g_file_test (prefs_get_config_filename (CALENDAR_NOTES_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR) == FALSE) return; if ((doc = xmlParseFile (prefs_get_config_filename (CALENDAR_NOTES_FILENAME, appGUI)))) { if (!(node = xmlDocGetRootElement (doc))) return; if (!xmlStrcmp (node->name, (xmlChar *) CALENDAR_NOTES_NAME)) { /* read note */ node = node->xmlChildrenNode; while (node != NULL) { if (!xmlStrcmp (node->name, (xmlChar *) CALENDAR_DAY_CATEGORIES_NAME)) { category_node = node->xmlChildrenNode; while (category_node != NULL) { if ((!xmlStrcmp (category_node->name, (const xmlChar *) "name"))) { key = xmlNodeListGetString (doc, category_node->xmlChildrenNode, 1); prop = xmlGetProp (category_node, (const xmlChar *) "color"); if (key != NULL) { image = utl_gui_create_color_swatch ((gchar *) prop); gtk_list_store_append (appGUI->opt->calendar_category_store, &iter); gtk_list_store_set (appGUI->opt->calendar_category_store, &iter, 0, image, 1, prop, 2, (gchar *) key, -1); g_object_unref (image); xmlFree (prop); xmlFree (key); } } category_node = category_node->next; } } if (!xmlStrcmp (node->name, (xmlChar *) "note")) { cnode = node->xmlChildrenNode; julian = 0; day = month = year = 0; color_str = NULL; note = NULL; while (cnode != NULL) { utl_xml_get_int ("day", &day, cnode); utl_xml_get_int ("month", &month, cnode); utl_xml_get_int ("year", &year, cnode); utl_xml_get_uint ("date", &julian, cnode); utl_xml_get_str ("color", &color_str, cnode); utl_xml_get_str ("message", ¬e, cnode); cnode = cnode->next; } if (note != NULL && (g_date_valid_dmy (day, month, year) || g_date_valid_julian (julian))) { if (g_date_valid_julian (julian) == FALSE) julian = utl_date_dmy_to_julian (day, month, year); cal_add_note (julian, color_str, note, appGUI); g_free (color_str); g_free (note); } } node = node->next; } } xmlFree (node); xmlFreeDoc (doc); } } /*------------------------------------------------------------------------------*/ void cal_write_notes (GUI *appGUI) { xmlDocPtr doc; xmlNodePtr main_node, node, note_node, dc_node; xmlAttrPtr attr; GtkTreeIter iter; GSList *lnode; struct note *a; gchar *category, *color_str; gint i; xmlChar *escaped; if ((appGUI->save_status & WRT_CALENDAR_NOTES) != 0) return; appGUI->save_status |= WRT_CALENDAR_NOTES; doc = xmlNewDoc ((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); main_node = xmlNewNode (NULL, (const xmlChar *) CALENDAR_NOTES_NAME); xmlDocSetRootElement (doc, main_node); node = xmlNewChild (main_node, NULL, (const xmlChar *) CALENDAR_DAY_CATEGORIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, 1, &color_str, 2, &category, -1); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) category); dc_node = xmlNewChild (node, NULL, (const xmlChar *) "name", (xmlChar *) escaped); g_free (category); xmlFree (escaped); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) color_str); xmlNewProp (dc_node, (const xmlChar *) "color", (xmlChar *) escaped); g_free (color_str); xmlFree (escaped); } for (i = 0, lnode = appGUI->cal->notes_list; lnode; lnode = lnode->next, i++) { a = g_slist_nth_data (appGUI->cal->notes_list, i); note_node = xmlNewChild (main_node, NULL, (const xmlChar *) "note", (xmlChar *) NULL); utl_xml_put_uint ("date", a->date, note_node); utl_xml_put_str ("color", a->color, note_node, doc); utl_xml_put_str ("message", a->note, note_node, doc); } xmlSaveFormatFileEnc (prefs_get_config_filename (CALENDAR_NOTES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeProp (attr); xmlFreeDoc (doc); appGUI->save_status &= ~WRT_CALENDAR_NOTES; } /*------------------------------------------------------------------------------*/ void day_notes_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_window_get_size (GTK_WINDOW (appGUI->cal->day_notes_window), &config.cb_window_size_x, &config.cb_window_size_y); gtk_widget_destroy (appGUI->cal->day_notes_window); } /*------------------------------------------------------------------------------*/ void button_day_notes_window_close_cb (GtkButton *button, gpointer user_data) { day_notes_window_close_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint day_notes_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; switch (event->keyval) { case GDK_Escape: day_notes_window_close_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ gboolean notes_filter_combo_box_focus_cb (GtkWidget *widget, GtkDirectionType *arg1, gpointer user_data) { return TRUE; } /*------------------------------------------------------------------------------*/ gchar * cal_note_remove_empty_lines (gchar *note) { gchar *tmp_note; gint j, k; tmp_note = g_strdup (note); j = k = 0; while (note[j++] == '\n'); --j; while (note[j] != '\0') { if (note[j] == '\n') { while (note[j++] == '\n'); --j; if (note[j] != '\0'){ tmp_note[k++] = '\n'; } } else { tmp_note[k++] = note[j++]; } } tmp_note[k] = '\0'; return tmp_note; } /*------------------------------------------------------------------------------*/ void notes_display_items (guint32 julian_start, guint32 julian_end, const gchar *search_string, GUI *appGUI) { GSList *lnode; struct note *day_note; guint32 julian_day; GtkTreeIter iter; gchar *tmp_note, *stripped; gboolean show_flag; gint i, n_items; gchar tmpbuf[BUFFER_SIZE]; if (appGUI->cal->day_notes_list == NULL || appGUI->cal->day_notes_list_store == NULL) return; n_items = 0; gtk_list_store_clear (GTK_LIST_STORE (appGUI->cal->day_notes_list_store)); for (i = 0, lnode = appGUI->cal->notes_list; lnode != NULL; lnode = lnode->next, i++) { day_note = g_slist_nth_data (appGUI->cal->notes_list, i); julian_day = day_note->date; tmp_note = cal_note_remove_empty_lines (day_note->note); stripped = utl_gui_text_strip_tags (tmp_note); g_free (tmp_note); if (search_string == NULL) { show_flag = TRUE; } else { if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(appGUI->cal->notes_search_checkbutton))) { show_flag = utl_text_strstr(stripped, search_string); } else { show_flag = utl_text_strcasestr(stripped, search_string); } } if (((julian_start == 0 && julian_end == 0) || (julian_day >= julian_start && julian_day <= julian_end)) && show_flag) { gtk_list_store_append (appGUI->cal->day_notes_list_store, &iter); gtk_list_store_set (appGUI->cal->day_notes_list_store, &iter, DN_COLUMN_DATE, julian_to_str (julian_day, config.date_format, config.override_locale_settings), DN_COLUMN_DATE_JULIAN, julian_day, DN_COLUMN_NOTE_LINE, stripped, DN_COLUMN_DONE, FALSE, -1); if (julian_day < utl_date_get_current_julian () && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->cal->past_notes_checkbutton))) { gtk_list_store_set (appGUI->cal->day_notes_list_store, &iter, DN_COLUMN_DONE, TRUE, -1); } n_items++; } g_free (stripped); } if (!n_items) { g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("no entries")); } else { g_snprintf (tmpbuf, BUFFER_SIZE, "%4d %s", n_items, ngettext ("entry", "entries", n_items)); } gtk_label_set_markup (GTK_LABEL (appGUI->cal->n_items_label), tmpbuf); } /*------------------------------------------------------------------------------*/ void refresh_notes_list (GUI *appGUI) { guint32 julian_start, julian_end; gint month, year; gint filter_mode; const gchar *search_string; filter_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(appGUI->cal->notes_filter_combobox)); search_string = gtk_entry_get_text(GTK_ENTRY(appGUI->cal->notes_search_entry)); gtk_widget_hide (appGUI->cal->notes_month_spinbutton); gtk_widget_hide (appGUI->cal->notes_year_spinbutton); if (filter_mode == DN_FILTER_SELECTED_MONTH) { gtk_widget_show (appGUI->cal->notes_month_spinbutton); } else if (filter_mode == DN_FILTER_SELECTED_YEAR) { gtk_widget_show (appGUI->cal->notes_year_spinbutton); } else if (filter_mode == DN_FILTER_SELECTED_MONTH_YEAR) { gtk_widget_show (appGUI->cal->notes_month_spinbutton); gtk_widget_show (appGUI->cal->notes_year_spinbutton); } julian_start = julian_end = 0; month = utl_date_get_current_month (); year = utl_date_get_current_year (); switch (filter_mode) { case DN_FILTER_CURRENT_MONTH: julian_start = utl_date_dmy_to_julian (1, month, year); julian_end = utl_date_dmy_to_julian (g_date_get_days_in_month (month, year), month, year); break; case DN_FILTER_SELECTED_MONTH: month = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->notes_month_spinbutton)); julian_start = utl_date_dmy_to_julian (1, month, year); julian_end = utl_date_dmy_to_julian (g_date_get_days_in_month (month, year), month, year); break; case DN_FILTER_CURRENT_YEAR: julian_start = utl_date_dmy_to_julian (1, 1, year); julian_end = utl_date_dmy_to_julian (g_date_get_days_in_month (12, year), 12, year); break; case DN_FILTER_SELECTED_YEAR: year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->notes_year_spinbutton)); julian_start = utl_date_dmy_to_julian (1, 1, year); julian_end = utl_date_dmy_to_julian (g_date_get_days_in_month (12, year), 12, year); break; case DN_FILTER_SELECTED_MONTH_YEAR: month = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->notes_month_spinbutton)); year = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->notes_year_spinbutton)); julian_start = utl_date_dmy_to_julian (1, month, year); julian_end = utl_date_dmy_to_julian (g_date_get_days_in_month (month, year), month, year); break; case DN_FILTER_ALL_NOTES: julian_start = julian_end = 0; break; } notes_display_items (julian_start, julian_end, search_string, appGUI); } /*------------------------------------------------------------------------------*/ void notes_filter_changed_cb (GtkComboBox *widget, gpointer user_data) { GUI *appGUI = (GUI *) user_data; config.day_notes_browser_filter = gtk_combo_box_get_active (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox)); refresh_notes_list (appGUI); } /*------------------------------------------------------------------------------*/ void search_entry_changed_cb(GtkEditable *editable, GUI *appGUI) { refresh_notes_list(appGUI); } /*------------------------------------------------------------------------------*/ gint day_notes_list_dbclick_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; guint32 julian_day; GDate *date; GUI *appGUI = (GUI *) user_data; date = g_date_new (); g_return_val_if_fail (date != NULL, FALSE); if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1)) { if (gtk_tree_selection_get_selected (appGUI->cal->day_notes_list_selection, &model, &iter)) { gtk_tree_model_get (model, &iter, DN_COLUMN_DATE_JULIAN, &julian_day, -1); if (g_date_valid_julian (julian_day) == TRUE) { g_date_set_julian (date, julian_day); cal_jump_to_date (date, appGUI); update_aux_calendars (appGUI); button_day_notes_window_close_cb (NULL, appGUI); } } g_date_free (date); return TRUE; } g_date_free (date); return FALSE; } /*------------------------------------------------------------------------------*/ void browser_case_sensitive_cb (GtkToggleButton *togglebutton, GUI *appGUI) { refresh_notes_list(appGUI); } /*------------------------------------------------------------------------------*/ void browser_past_notes_cb (GtkToggleButton *togglebutton, GUI *appGUI) { refresh_notes_list (appGUI); } /*------------------------------------------------------------------------------*/ void cal_notes_browser (GUI *appGUI) { GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *scrolledwindow; GtkWidget *hseparator; GtkWidget *hbuttonbox; GtkWidget *close_button; GtkWidget *notes_tools_table; GtkWidget *label; GtkObject *notes_month_spinbutton_adj; GtkObject *notes_year_spinbutton_adj; GtkTreeViewColumn *column; GtkCellRenderer *renderer; gchar tmpbuf[BUFFER_SIZE]; appGUI->cal->day_notes_list = NULL; appGUI->cal->day_notes_list_store = NULL; appGUI->cal->day_notes_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (appGUI->cal->day_notes_window), _("Calendar notes")); gtk_window_set_position (GTK_WINDOW (appGUI->cal->day_notes_window), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_default_size (GTK_WINDOW(appGUI->cal->day_notes_window), config.cb_window_size_x, config.cb_window_size_y); gtk_window_set_modal (GTK_WINDOW (appGUI->cal->day_notes_window), TRUE); g_signal_connect (G_OBJECT (appGUI->cal->day_notes_window), "delete_event", G_CALLBACK(day_notes_window_close_cb), appGUI); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->cal->day_notes_window), GTK_WINDOW(appGUI->main_window)); } gtk_container_set_border_width (GTK_CONTAINER (appGUI->cal->day_notes_window), 8); g_signal_connect (G_OBJECT (appGUI->cal->day_notes_window), "key_press_event", G_CALLBACK (day_notes_key_press_cb), appGUI); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->cal->day_notes_window), vbox1); notes_tools_table = gtk_table_new (6, 3, FALSE); gtk_widget_show (notes_tools_table); gtk_box_pack_start (GTK_BOX (vbox1), notes_tools_table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (notes_tools_table), 3); gtk_table_set_col_spacings (GTK_TABLE (notes_tools_table), 2); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (notes_tools_table), hseparator, 0, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 2); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (notes_tools_table), hseparator, 0, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 2); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_table_attach (GTK_TABLE (notes_tools_table), hseparator, 0, 3, 5, 6, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 2); sprintf(tmpbuf, "%s:", _("Search")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (notes_tools_table), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_table_attach (GTK_TABLE (notes_tools_table), hbox1, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); notes_month_spinbutton_adj = gtk_adjustment_new (1, 1, 12, 1, 5, 0); appGUI->cal->notes_month_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (notes_month_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->notes_month_spinbutton); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->notes_month_spinbutton, TRUE, TRUE, 0); g_signal_connect (appGUI->cal->notes_month_spinbutton, "value-changed", G_CALLBACK (notes_filter_changed_cb), appGUI); notes_year_spinbutton_adj = gtk_adjustment_new (utl_date_get_current_year (), 1, 9999, 1, 10, 0); appGUI->cal->notes_year_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (notes_year_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->cal->notes_year_spinbutton); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->cal->notes_year_spinbutton, TRUE, TRUE, 0); g_signal_connect (appGUI->cal->notes_year_spinbutton, "value-changed", G_CALLBACK (notes_filter_changed_cb), appGUI); sprintf(tmpbuf, "%s:", _("Filter")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (notes_tools_table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->cal->notes_filter_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->cal->notes_filter_combobox); g_signal_connect(G_OBJECT(appGUI->cal->notes_filter_combobox), "focus", G_CALLBACK(notes_filter_combo_box_focus_cb), NULL); g_signal_connect(G_OBJECT(appGUI->cal->notes_filter_combobox), "changed", G_CALLBACK(notes_filter_changed_cb), appGUI); gtk_table_attach (GTK_TABLE (notes_tools_table), appGUI->cal->notes_filter_combobox, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("Current month")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("Selected month")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("Current year")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("Selected year")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("Selected month and year")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->cal->notes_filter_combobox), _("All notes")); appGUI->cal->n_items_label = gtk_label_new (""); gtk_widget_show (appGUI->cal->n_items_label); gtk_widget_set_size_request (appGUI->cal->n_items_label, 100, -1); gtk_table_attach (GTK_TABLE (notes_tools_table), appGUI->cal->n_items_label, 2, 3, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (appGUI->cal->n_items_label), TRUE); appGUI->cal->notes_search_entry = gtk_entry_new (); gtk_widget_show (appGUI->cal->notes_search_entry); gtk_table_attach (GTK_TABLE (notes_tools_table), appGUI->cal->notes_search_entry, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->cal->notes_search_entry), "changed", G_CALLBACK (search_entry_changed_cb), appGUI); appGUI->cal->notes_search_checkbutton = gtk_check_button_new_with_mnemonic (_("Case sensitive")); g_signal_connect (G_OBJECT (appGUI->cal->notes_search_checkbutton), "toggled", G_CALLBACK (browser_case_sensitive_cb), appGUI); gtk_widget_show (appGUI->cal->notes_search_checkbutton); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->notes_search_checkbutton, GTK_CAN_FOCUS); gtk_table_attach (GTK_TABLE (notes_tools_table), appGUI->cal->notes_search_checkbutton, 2, 3, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->cal->past_notes_checkbutton = gtk_check_button_new_with_mnemonic (_("Strikethrough past day notes")); GTK_WIDGET_UNSET_FLAGS(appGUI->cal->past_notes_checkbutton, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (appGUI->cal->past_notes_checkbutton), "toggled", G_CALLBACK (browser_past_notes_cb), appGUI); gtk_widget_show (appGUI->cal->past_notes_checkbutton); gtk_table_attach (GTK_TABLE (notes_tools_table), appGUI->cal->past_notes_checkbutton, 0, 2, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 2); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); appGUI->cal->day_notes_list_store = gtk_list_store_new(DAY_NOTES_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_BOOLEAN); appGUI->cal->day_notes_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(appGUI->cal->day_notes_list_store)); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(appGUI->cal->day_notes_list), TRUE); gtk_widget_show (appGUI->cal->day_notes_list); GTK_WIDGET_SET_FLAGS (appGUI->cal->day_notes_list, GTK_CAN_DEFAULT); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->cal->day_notes_list); g_signal_connect(G_OBJECT(appGUI->cal->day_notes_list), "button_press_event", G_CALLBACK(day_notes_list_dbclick_cb), appGUI); appGUI->cal->day_notes_list_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (appGUI->cal->day_notes_list)); /* create columns */ renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer, "text", DN_COLUMN_DATE, "strikethrough", DN_COLUMN_DONE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->day_notes_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Julian", renderer, "text", DN_COLUMN_DATE_JULIAN, "strikethrough", DN_COLUMN_DONE, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->day_notes_list), column); gtk_tree_view_column_set_sort_column_id (column, DN_COLUMN_DATE_JULIAN); g_signal_emit_by_name(column, "clicked"); if (config.ascending_sorting_in_day_notes_browser == FALSE) { g_signal_emit_by_name(column, "clicked"); } renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new_with_attributes(_("Note"), renderer, "text", DN_COLUMN_NOTE_LINE, "strikethrough", DN_COLUMN_DONE, NULL); gtk_tree_view_column_set_visible (column, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->day_notes_list), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", DN_COLUMN_DONE, NULL); gtk_tree_view_column_set_visible (column, FALSE); gtk_tree_view_append_column(GTK_TREE_VIEW(appGUI->cal->day_notes_list), column); gtk_combo_box_set_active(GTK_COMBO_BOX(appGUI->cal->notes_filter_combobox), config.day_notes_browser_filter); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_box_pack_start (GTK_BOX (vbox1), hseparator, FALSE, TRUE, 4); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 4); close_button = utl_gui_create_labeled_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); gtk_widget_show (close_button); GTK_WIDGET_UNSET_FLAGS(close_button, GTK_CAN_FOCUS); g_signal_connect(close_button, "clicked", G_CALLBACK(button_day_notes_window_close_cb), appGUI); gtk_container_add(GTK_CONTAINER(hbuttonbox), close_button); gtk_widget_show(appGUI->cal->day_notes_window); gtk_widget_grab_focus (appGUI->cal->day_notes_list); } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/calendar.h000664 001750 001750 00000005624 12561325524 015252 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CALENDAR_H #define _CALENDAR_H #include "gui.h" #include "calendar_utils.h" void gui_create_calendar (GtkWidget *notebook, GUI *appGUI); void cal_jump_to_date (GDate *cdate, GUI *appGUI); void calendar_set_today (GUI *appGUI); void calendar_update_date (guint day, guint month, guint year, GUI *appGUI); void calendar_update_note (guint uday, guint umonth, guint uyear, gchar *color, GUI *appGUI); void calendar_clear_text_cb (GtkWidget *widget, gpointer data); void enable_disable_note_buttons (GUI *appGUI); gchar * get_marker_symbol (gint idx); gchar * calendar_get_note_text (GUI *appGUI); void calendar_create_color_selector_window (gboolean window_pos, GUI *appGUI); void calendar_create_popup_menu (GtkWidget *menu, GUI *appGUI); void cal_set_day_info (GUI *appGUI); void mark_events (GtkWidget *calendar, guint month, guint year, GUI *appGUI); void cal_refresh_marks (GUI *appGUI); void update_clock (GUI *appGUI); void update_aux_calendars (GUI *appGUI); void calendar_mark_events (GtkWidget *calendar, guint32 julian_day, guint i, GUI *appGUI); void calendar_store_note (GUI *appGUI); void calendar_btn_prev_day (GUI *appGUI); void calendar_btn_next_day (GUI *appGUI); void calendar_btn_prev_week (GUI *appGUI); void calendar_btn_next_week (GUI *appGUI); void calendar_btn_prev_month (GUI *appGUI); void calendar_btn_next_month (GUI *appGUI); void calendar_btn_prev_year (GUI *appGUI); void calendar_btn_next_year (GUI *appGUI); #endif /* _CALENDAR_H */ osmo-0.2.14/src/utils_date_time.h000664 001750 001750 00000003323 12561325524 016646 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz MÄ…ka * 2007-2009 Piotr MÄ…ka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _UTILS_DATE_TIME_H #define _UTILS_DATE_TIME_H #include "utils_date.h" #include "utils_time.h" gint utl_date_time_compare (GDate *date1, TIME *time1, GDate *date2, TIME *time2); gint utl_date_time_compare_js (guint32 julian1, gint seconds1, guint32 julian2, gint seconds2); gboolean utl_date_time_in_the_past_js (guint32 julian, gint seconds); gchar* utl_date_time_print (GDate *d, gint date_format, TIME *t, gint time_format, gint override_locale); gchar* utl_date_time_print_js (guint32 julian, gint date_format, gint seconds, gint time_format, gint override_locale); gchar* utl_date_time_print_default (guint32 julian, gint seconds, gboolean with_sec); gboolean utl_date_time_order (GDate *date1, TIME *time1, GDate *date2, TIME *time2); #endif /* _UTILS_DATE_TIME_H */ osmo-0.2.14/src/tasks_items.c000664 001750 001750 00000244442 12561325524 016025 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "calendar.h" #include "calendar_notes.h" #include "calendar_utils.h" #include "calendar_widget.h" #include "check_events.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "tasks.h" #include "tasks_items.h" #include "tasks_preferences_gui.h" #include "tasks_utils.h" #include "utils.h" #include "utils_gui.h" #include "utils_time.h" #ifdef TASKS_ENABLED /*------------------------------------------------------------------------------*/ void tasks_item_entered_cb (GtkWidget *widget, gpointer data) { GtkTextBuffer *text_buffer; GtkTextIter iter_a, iter_b; GtkTreePath *sort_path, *filter_path, *path; GtkTreeIter iter; guint32 fstartdate; guint id; TASK_ITEM *item; GDate *cdate; gchar tmpbuf[BUFFER_SIZE]; GUI *appGUI = (GUI *)data; item = g_new0 (TASK_ITEM, 1); if (appGUI->tsk->tasks_edit_state == TRUE) { gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->tsk->tasks_list), &sort_path, NULL); if (sort_path != NULL) { filter_path = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT(appGUI->tsk->tasks_sort), sort_path); if (filter_path != NULL) { path = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER(appGUI->tsk->tasks_filter), filter_path); if (path != NULL) { gtk_tree_model_get_iter(GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, path); gtk_tree_model_get (GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), &iter, TA_COLUMN_ID, &id, TA_COLUMN_START_DATE_JULIAN, &fstartdate, -1); /* FIXME */ gtk_list_store_remove(appGUI->tsk->tasks_list_store, &iter); gtk_tree_path_free(path); } gtk_tree_path_free(filter_path); } gtk_tree_path_free(sort_path); } } text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(appGUI->tsk->desc_textview)); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &iter_a, 0); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &iter_b, -1); item->done = FALSE; item->due_date_julian = appGUI->tsk->tasks_due_julian_day; item->due_time = appGUI->tsk->tasks_due_time; if(appGUI->tsk->tasks_edit_state == TRUE) { item->start_date_julian = fstartdate; item->id = id; } else { item->start_date_julian = utl_date_get_current_julian (); item->id = appGUI->tsk->next_id++; } item->active = TRUE; item->sound_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_sound_enable)); item->ndialog_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_ndialog_enable)); item->repeat = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->rt_enable_checkbutton)); item->offline_ignore = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->ignore_alarm_checkbutton)); item->warning_days = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->aw_days_spinbutton)); item->warning_time = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->aw_hours_spinbutton)) * 60 + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->aw_minutes_spinbutton)); item->postpone_time = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->tsk->postpone_spinbutton)); item->alarm_command = g_strdup((gchar *) gtk_entry_get_text(GTK_ENTRY(appGUI->tsk->alarm_cmd_entry))); item->repeat_time_start = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_start_hour_spinbutton)) * 60 + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_start_minute_spinbutton)); item->repeat_time_end = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_end_hour_spinbutton)) * 60 + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_end_minute_spinbutton)); item->repeat_time_interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_interval_hour_spinbutton)) * 60 + gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_interval_minute_spinbutton)); item->repeat_day_interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_dp_day_spinbutton)); item->repeat_month_interval = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->rt_dp_month_spinbutton)); item->repeat_counter = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(appGUI->tsk->repeat_counter_spinbutton)); item->priority = g_strdup(gtk_combo_box_get_active_text(GTK_COMBO_BOX(appGUI->tsk->priority_combobox))); item->category = g_strdup(gtk_combo_box_get_active_text(GTK_COMBO_BOX(appGUI->tsk->category_combobox))); item->summary = g_strdup((gchar *) gtk_entry_get_text(GTK_ENTRY(appGUI->tsk->summary_entry))); item->desc = g_strdup(gtk_text_buffer_get_text(GTK_TEXT_BUFFER(text_buffer), &iter_a, &iter_b, TRUE)); if (g_date_valid_julian (item->due_date_julian)) { cdate = g_date_new_julian (item->due_date_julian); item->repeat_start_day = g_date_get_day (cdate); g_date_free (cdate); } else { item->repeat_start_day = 0; } item->repeat_day = 0; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_1_checkbutton))) item->repeat_day |= 1; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_2_checkbutton))) item->repeat_day |= 2; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_3_checkbutton))) item->repeat_day |= 4; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_4_checkbutton))) item->repeat_day |= 8; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_5_checkbutton))) item->repeat_day |= 16; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_6_checkbutton))) item->repeat_day |= 32; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_7_checkbutton))) item->repeat_day |= 64; if (item->repeat == TRUE && item->repeat_day == 0) { tsk_item_free (item); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Please select at least one day when recurrency is enabled.")); utl_gui_create_dialog (GTK_MESSAGE_ERROR, tmpbuf, GTK_WINDOW (appGUI->tsk->tasks_add_window)); return; } item->done_date_julian = 0; #ifdef HAVE_LIBNOTIFY if (appGUI->tsk->tasks_edit_state) notify_task_delete (id, appGUI); #endif /* HAVE_LIBNOTIFY */ add_item_to_list (item, appGUI); gui_systray_tooltip_update(appGUI); gtk_widget_destroy (appGUI->tsk->tasks_add_window); tasks_select_first_position_in_list (appGUI); g_signal_emit_by_name (G_OBJECT(appGUI->cal->calendar), "day-selected"); refresh_tasks (appGUI); tsk_item_free (item); cal_refresh_marks (appGUI); update_aux_calendars (appGUI); if (config.save_data_after_modification) { write_tasks_entries (appGUI); } } /*------------------------------------------------------------------------------*/ static void tasks_date_related_set_state (gboolean state, GUI *appGUI) { gtk_widget_set_sensitive (appGUI->tsk->checkb_sound_enable, state); gtk_widget_set_sensitive (appGUI->tsk->checkb_ndialog_enable, state); gtk_widget_set_sensitive (appGUI->tsk->aw_days_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->aw_hours_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->aw_minutes_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->postpone_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->alarm_cmd_entry, state); gtk_widget_set_sensitive (appGUI->tsk->alarm_cmd_valid_image, state); gtk_widget_set_sensitive (appGUI->tsk->rt_enable_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_dp_day_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->repeat_counter_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_dp_month_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_1_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_2_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_3_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_4_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_5_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_6_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->dp_7_checkbutton, state); gtk_widget_set_sensitive (appGUI->tsk->ignore_alarm_checkbutton, state); } /*------------------------------------------------------------------------------*/ void tasks_time_related_set_state (gboolean state, GUI *appGUI) { gtk_widget_set_sensitive (appGUI->tsk->aw_hours_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->aw_minutes_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_start_hour_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_start_minute_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_end_hour_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_end_minute_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_interval_hour_spinbutton, state); gtk_widget_set_sensitive (appGUI->tsk->rt_interval_minute_spinbutton, state); } /*------------------------------------------------------------------------------*/ void day_selected_cb (GuiCalendar *calendar, GUI *appGUI) { TIME *tm; GDate *d = g_date_new (); gui_calendar_get_gdate (calendar, d); appGUI->tsk->tasks_due_julian_day = g_date_get_julian (d); g_date_free (d); tasks_date_related_set_state (TRUE, appGUI); if (gtk_expander_get_expanded (GTK_EXPANDER (appGUI->tsk->time_expander)) == TRUE) { tm = utl_time_new_hms (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_hour)), gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_minute)), 0); appGUI->tsk->tasks_due_time = utl_time_get_seconds (tm); utl_time_free (tm); tasks_time_related_set_state (TRUE, appGUI); } else { appGUI->tsk->tasks_due_time = -1; tasks_time_related_set_state (FALSE, appGUI); } gtk_widget_destroy (appGUI->tsk->td_calendar_window); gtk_entry_set_text (GTK_ENTRY (appGUI->tsk->due_date_entry), get_date_time_full_str (appGUI->tsk->tasks_due_julian_day, appGUI->tsk->tasks_due_time)); } /*------------------------------------------------------------------------------*/ void close_calendar_cb (GtkWidget *widget, GdkEvent *event, GUI *appGUI) { gtk_widget_destroy (appGUI->tsk->td_calendar_window); } /*------------------------------------------------------------------------------*/ void button_close_calendar_cb (GtkButton *button, gpointer user_data) { close_calendar_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ void button_ok_calendar_cb (GtkButton *button, gpointer user_data) { GUI *appGUI = (GUI *) user_data; day_selected_cb (GUI_CALENDAR (appGUI->tsk->td_calendar), appGUI); } /*------------------------------------------------------------------------------*/ void calendar_set_date (GDate *cdate, GUI *appGUI) { gui_calendar_select_month (GUI_CALENDAR (appGUI->tsk->td_calendar), g_date_get_month (cdate) - 1, g_date_get_year (cdate)); gui_calendar_select_day (GUI_CALENDAR (appGUI->tsk->td_calendar), g_date_get_day (cdate)); day_selected_cb (GUI_CALENDAR (appGUI->tsk->td_calendar), appGUI); } /*------------------------------------------------------------------------------*/ void set_today_calendar_cb (GtkWidget *widget, GUI *appGUI) { GDate *date = utl_date_new_current (); calendar_set_date (date, appGUI); g_date_free (date); } /*------------------------------------------------------------------------------*/ void set_tomorrow_calendar_cb (GtkWidget *widget, GUI *appGUI) { GDate *date = utl_date_new_current (); g_date_add_days (date, 1); calendar_set_date (date, appGUI); g_date_free (date); } /*------------------------------------------------------------------------------*/ void nodate_calendar_cb (GtkWidget *widget, GUI *appGUI) { gtk_entry_set_text (GTK_ENTRY(appGUI->tsk->due_date_entry), _("No date")); appGUI->tsk->tasks_due_julian_day = 0; appGUI->tsk->tasks_due_time = -1; tasks_date_related_set_state (FALSE, appGUI); tasks_time_related_set_state (FALSE, appGUI); close_calendar_cb (widget, NULL, appGUI); } /*------------------------------------------------------------------------------*/ gint sd_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; if (event->keyval == GDK_Escape) { close_calendar_cb (NULL, NULL, appGUI); return TRUE; } return FALSE; } /*------------------------------------------------------------------------------*/ void select_date_cb (GtkWidget *widget, gpointer data) { GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *alignment; GtkWidget *today_button; GtkWidget *tomorrow_button; GtkWidget *nodate_button; GtkWidget *close_button; GtkWidget *ok_button; GtkWidget *table; GtkWidget *label; GtkObject *spinbutton_adjustment; GDate *dt; TIME *tm; GUI *appGUI = (GUI *)data; appGUI->tsk->td_calendar_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_position (GTK_WINDOW (appGUI->tsk->td_calendar_window), GTK_WIN_POS_MOUSE); gtk_window_set_modal (GTK_WINDOW (appGUI->tsk->td_calendar_window), TRUE); if (config.fullscreen == FALSE) { gtk_window_set_transient_for (GTK_WINDOW (appGUI->tsk->td_calendar_window), GTK_WINDOW (appGUI->tsk->tasks_add_window)); } gtk_window_set_decorated (GTK_WINDOW (appGUI->tsk->td_calendar_window), FALSE); g_signal_connect (G_OBJECT (appGUI->tsk->td_calendar_window), "key_press_event", G_CALLBACK (sd_key_press_cb), appGUI); gtk_window_set_resizable (GTK_WINDOW (appGUI->tsk->td_calendar_window), FALSE); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (appGUI->tsk->td_calendar_window), vbox1); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox1), alignment, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); /* calendar */ appGUI->tsk->td_calendar = gui_calendar_new(); gui_calendar_set_cursor_type (GUI_CALENDAR (appGUI->tsk->td_calendar), CURSOR_BLOCK); gui_calendar_set_color (GUI_CALENDAR (appGUI->tsk->td_calendar), config.selection_color, config.selector_alpha, SELECTOR_COLOR); gui_calendar_set_marker (GUI_CALENDAR (appGUI->tsk->td_calendar), config.today_marker_type, TODAY_MARKER); gui_calendar_set_color (GUI_CALENDAR (appGUI->tsk->td_calendar), config.mark_current_day_color, config.mark_current_day_alpha, TODAY_MARKER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->tsk->td_calendar), config.header_color, 0, HEADER_COLOR); gui_calendar_set_color (GUI_CALENDAR (appGUI->tsk->td_calendar), config.weekend_color, 0, WEEKEND_COLOR); gtk_widget_show (appGUI->tsk->td_calendar); g_signal_connect (GTK_OBJECT (appGUI->tsk->td_calendar), "day_selected_double_click", G_CALLBACK (day_selected_cb), appGUI); gui_calendar_set_display_options (GUI_CALENDAR (appGUI->tsk->td_calendar), (config.display_options & !GUI_CALENDAR_NO_MONTH_CHANGE) | GUI_CALENDAR_SHOW_HEADING | GUI_CALENDAR_SHOW_DAY_NAMES | (config.display_options & GUI_CALENDAR_WEEK_START_MONDAY)); gtk_container_add (GTK_CONTAINER (alignment), appGUI->tsk->td_calendar); /* time selector */ appGUI->tsk->time_expander = gtk_expander_new (_("Set time")); GTK_WIDGET_UNSET_FLAGS(appGUI->tsk->time_expander, GTK_CAN_FOCUS); gtk_box_pack_start (GTK_BOX (vbox1), appGUI->tsk->time_expander, FALSE, FALSE, 0); gtk_widget_show (appGUI->tsk->time_expander); table = gtk_table_new (2, 3, FALSE); gtk_widget_show (table); gtk_container_add (GTK_CONTAINER (appGUI->tsk->time_expander), table); gtk_container_set_border_width (GTK_CONTAINER (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 4); label = gtk_label_new (_("Hour")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); label = gtk_label_new (_("Minute")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (get_current_hour(), 0, 23, 1, 10, 0); appGUI->cal->spinbutton_start_hour = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_hour); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_hour, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); spinbutton_adjustment = gtk_adjustment_new (get_current_minute(), 0, 59, 1, 10, 0); appGUI->cal->spinbutton_start_minute = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->cal->spinbutton_start_minute); gtk_table_attach (GTK_TABLE (table), appGUI->cal->spinbutton_start_minute, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); /* update status */ if (g_date_valid_julian (appGUI->tsk->tasks_due_julian_day)) { dt = g_date_new_julian (appGUI->tsk->tasks_due_julian_day); gui_calendar_select_month (GUI_CALENDAR (appGUI->tsk->td_calendar), g_date_get_month (dt) - 1, g_date_get_year (dt)); gui_calendar_select_day (GUI_CALENDAR (appGUI->tsk->td_calendar), g_date_get_day (dt)); g_date_free (dt); if (appGUI->tsk->tasks_due_time >= 0) { tm = utl_time_new_seconds (appGUI->tsk->tasks_due_time); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_hour), utl_time_get_hour (tm)); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->cal->spinbutton_start_minute), utl_time_get_minute (tm)); gtk_expander_set_expanded (GTK_EXPANDER (appGUI->tsk->time_expander), TRUE); utl_time_free (tm); } } /* auxilary buttons */ alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox1), alignment, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (alignment), 4); hbox1 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (alignment), hbox1); today_button = gtk_button_new_with_mnemonic (_("Today")); gtk_widget_show (today_button); gtk_box_pack_start (GTK_BOX (hbox1), today_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (today_button), "clicked", G_CALLBACK (set_today_calendar_cb), appGUI); tomorrow_button = gtk_button_new_with_mnemonic (_("Tomorrow")); gtk_widget_show (tomorrow_button); gtk_box_pack_start (GTK_BOX (hbox1), tomorrow_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (tomorrow_button), "clicked", G_CALLBACK (set_tomorrow_calendar_cb), appGUI); nodate_button = gtk_button_new_with_mnemonic (_("No date")); gtk_widget_show (nodate_button); gtk_box_pack_start (GTK_BOX (hbox1), nodate_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (nodate_button), "clicked", G_CALLBACK (nodate_calendar_cb), appGUI); ok_button = utl_gui_create_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, FALSE); gtk_button_set_relief (GTK_BUTTON (ok_button), GTK_RELIEF_NONE); gtk_widget_show (ok_button); gtk_box_pack_end (GTK_BOX (hbox1), ok_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (ok_button), "clicked", G_CALLBACK (button_ok_calendar_cb), appGUI); close_button = utl_gui_create_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, FALSE); GTK_WIDGET_UNSET_FLAGS (close_button, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE); gtk_widget_show (close_button); gtk_box_pack_end (GTK_BOX (hbox1), close_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (close_button), "clicked", G_CALLBACK (button_close_calendar_cb), appGUI); gtk_widget_show (appGUI->tsk->td_calendar_window); } /*------------------------------------------------------------------------------*/ void tasks_add_edit_window_close_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GUI *appGUI = (GUI *) user_data; gtk_window_get_size (GTK_WINDOW (appGUI->tsk->tasks_add_window), &config.tasks_addedit_win_w, &config.tasks_addedit_win_h); gdk_window_get_root_origin (GDK_WINDOW (appGUI->tsk->tasks_add_window->window), &config.tasks_addedit_win_x, &config.tasks_addedit_win_y); gtk_widget_destroy (appGUI->tsk->tasks_add_window); } /*------------------------------------------------------------------------------*/ void button_tasks_add_edit_window_close_cb (GtkButton *button, gpointer user_data) { tasks_add_edit_window_close_cb (GTK_WIDGET (button), NULL, user_data); } /*------------------------------------------------------------------------------*/ gint tasks_add_edit_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) { GUI *appGUI = (GUI *)data; switch(event->keyval) { case GDK_Escape: tasks_add_edit_window_close_cb (appGUI->tsk->tasks_add_window, NULL, appGUI); return TRUE; case GDK_Return: if (gtk_widget_is_focus(appGUI->tsk->desc_textview) == FALSE) { if (appGUI->tsk->tasks_accept_state == TRUE ) { g_signal_emit_by_name(G_OBJECT(appGUI->tsk->tasks_ok_button), "clicked"); return TRUE; } } else if (event->state & GDK_CONTROL_MASK) { /* CTRL + Return */ g_signal_emit_by_name(G_OBJECT(appGUI->tsk->tasks_ok_button), "clicked"); return TRUE; } return FALSE; } return FALSE; } /*------------------------------------------------------------------------------*/ void tasks_add_edit_summary_changed_cb (GtkEditable *editable, gpointer data) { GUI *appGUI = (GUI *)data; if (strlen (gtk_entry_get_text (GTK_ENTRY (editable)))) { appGUI->tsk->tasks_accept_state = TRUE; } else { appGUI->tsk->tasks_accept_state = FALSE; } gtk_widget_set_sensitive (appGUI->tsk->tasks_ok_button, appGUI->tsk->tasks_accept_state); } /*------------------------------------------------------------------------------*/ void tasks_remove(GtkTreeRowReference *ref, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter, filter_iter, sort_iter; guint id; GtkTreeModel *model; model = gtk_tree_row_reference_get_model(ref); path = gtk_tree_row_reference_get_path(ref); if (path != NULL) { if (gtk_tree_model_get_iter(model, &sort_iter, path)) { gtk_tree_model_get(model, &sort_iter, TA_COLUMN_ID, &id, -1); #ifdef HAVE_LIBNOTIFY notify_task_delete(id, appGUI); #endif /* HAVE_LIBNOTIFY */ gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(model), &filter_iter, &sort_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model))), &iter, &filter_iter); gtk_list_store_remove(appGUI->tsk->tasks_list_store, &iter); } gtk_tree_path_free(path); } } /*------------------------------------------------------------------------------*/ void tasks_remove_dialog_show (GUI *appGUI) { gint response; gchar tmpbuf[BUFFER_SIZE]; sprintf(tmpbuf, "%s\n\n%s", _("Selected task will be removed."), _("Are you sure?")); response = utl_gui_create_dialog(GTK_MESSAGE_QUESTION, tmpbuf, GTK_WINDOW(appGUI->main_window)); if (response == GTK_RESPONSE_YES) { tasks_selection_activate (FALSE, appGUI); utl_gui_foreach_selected(appGUI->tsk->tasks_list_selection, GTK_TREE_MODEL(appGUI->tsk->tasks_list_store), (GFunc)tasks_remove, appGUI); tasks_selection_activate (TRUE, appGUI); tasks_select_first_position_in_list(appGUI); g_signal_emit_by_name(G_OBJECT(appGUI->cal->calendar), "day-selected"); gui_systray_tooltip_update(appGUI); if (config.save_data_after_modification) { write_tasks_entries(appGUI); } } } /*------------------------------------------------------------------------------*/ void recurrent_task_enable_cb (GtkToggleButton *togglebutton, gpointer user_data) { GUI *appGUI = (GUI *)user_data; gtk_widget_set_sensitive (appGUI->tsk->recurrent_task_vbox, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(togglebutton))); } /*------------------------------------------------------------------------------*/ gint alarm_cmd_entry_changed_cb (GtkEditable *editable, gpointer user_data) { GUI *appGUI = (GUI *) user_data; utl_gui_update_command_status (GTK_EDITABLE(appGUI->tsk->alarm_cmd_entry), appGUI->tsk->alarm_cmd_valid_image, appGUI); return FALSE; } /*------------------------------------------------------------------------------*/ void tasks_add_edit_dialog_show (gboolean tasks_edit_mode, guint32 julian_date, gint time, GUI *appGUI) { GtkWidget *hbox1, *hbox2, *hbox3; GtkWidget *vbox0, *vbox1, *vbox2, *vbox3, *vbox4; GtkWidget *vbox5, *vbox6; GtkWidget *label; GtkWidget *select_date_button; GtkWidget *scrolledwindow; GtkWidget *hseparator; GtkWidget *vseparator; GtkWidget *hbuttonbox; GtkWidget *cancel_button; GtkWidget *frame; GtkWidget *alignment; GtkWidget *m_table; GtkWidget *table; GtkWidget *notebook; GtkObject *aw_days_spinbutton_adj; GtkObject *aw_hours_spinbutton_adj; GtkObject *aw_minutes_spinbutton_adj; GtkObject *rt_start_hour_spinbutton_adj; GtkObject *rt_start_minute_spinbutton_adj; GtkObject *rt_end_hour_spinbutton_adj; GtkObject *rt_end_minute_spinbutton_adj; GtkObject *rt_interval_hour_spinbutton_adj; GtkObject *rt_interval_minute_spinbutton_adj; GtkObject *rt_dp_day_spinbutton_adj; GtkObject *rt_dp_month_spinbutton_adj; GtkObject *repeat_counter_spinbutton_adj; GtkObject *spinbutton_adjustment; GtkTreeIter iter, filter_iter, sort_iter; GtkTreeModel *model; GtkTextIter titer; GtkTextBuffer *text_buffer; TASK_ITEM *item; gchar tmpbuf[BUFFER_SIZE]; appGUI->tsk->tasks_add_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); if(tasks_edit_mode == TRUE) { gtk_window_set_title (GTK_WINDOW (appGUI->tsk->tasks_add_window), _("Edit task")); } else { gtk_window_set_title (GTK_WINDOW (appGUI->tsk->tasks_add_window), _("Add task")); appGUI->tsk->tasks_due_julian_day = 0; appGUI->tsk->tasks_due_time = -1; } gtk_window_move (GTK_WINDOW (appGUI->tsk->tasks_add_window), config.tasks_addedit_win_x, config.tasks_addedit_win_y); gtk_window_set_default_size (GTK_WINDOW(appGUI->tsk->tasks_add_window), config.tasks_addedit_win_w, config.tasks_addedit_win_h); if (config.fullscreen == FALSE) { gtk_window_set_transient_for(GTK_WINDOW(appGUI->tsk->tasks_add_window), GTK_WINDOW(appGUI->main_window)); } gtk_window_set_modal(GTK_WINDOW(appGUI->tsk->tasks_add_window), TRUE); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_add_window), "key_press_event", G_CALLBACK (tasks_add_edit_key_press_cb), appGUI); g_signal_connect (G_OBJECT (appGUI->tsk->tasks_add_window), "delete_event", G_CALLBACK(tasks_add_edit_window_close_cb), appGUI); vbox0 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox0); gtk_container_add (GTK_CONTAINER (appGUI->tsk->tasks_add_window), vbox0); notebook = gtk_notebook_new (); GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS); gtk_widget_show (notebook); gtk_notebook_set_tab_pos (GTK_NOTEBOOK(notebook), GTK_POS_TOP); gtk_container_set_border_width (GTK_CONTAINER(notebook), 6); gtk_box_pack_start (GTK_BOX (vbox0), notebook, TRUE, TRUE, 0); /* First Tab */ vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); label = gtk_label_new (_("Basic")); gtk_widget_show (label); gtk_notebook_append_page (GTK_NOTEBOOK(notebook), vbox1, label); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0); m_table = gtk_table_new (4, 4, FALSE); gtk_widget_show (m_table); gtk_table_set_row_spacings (GTK_TABLE (m_table), 6); gtk_table_set_col_spacings (GTK_TABLE (m_table), 4); gtk_container_set_border_width (GTK_CONTAINER(m_table), 6); gtk_box_pack_start (GTK_BOX (vbox2), m_table, FALSE, FALSE, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Summary")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (m_table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Due date")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (m_table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->tsk->summary_entry = gtk_entry_new (); g_signal_connect (G_OBJECT (appGUI->tsk->summary_entry), "changed", G_CALLBACK (tasks_add_edit_summary_changed_cb), appGUI); gtk_widget_show (appGUI->tsk->summary_entry); gtk_table_attach (GTK_TABLE (m_table), appGUI->tsk->summary_entry, 1, 4, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); appGUI->tsk->due_date_entry = gtk_entry_new (); gtk_widget_show (appGUI->tsk->due_date_entry); GTK_WIDGET_UNSET_FLAGS(appGUI->tsk->due_date_entry, GTK_CAN_FOCUS); gtk_editable_set_editable (GTK_EDITABLE (appGUI->tsk->due_date_entry), FALSE); gtk_table_attach (GTK_TABLE (m_table), appGUI->tsk->due_date_entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); select_date_button = utl_gui_stock_name_button (OSMO_STOCK_BUTTON_SELECT_DATE, _("Select date and time")); gtk_widget_show (select_date_button); GTK_WIDGET_UNSET_FLAGS(select_date_button, GTK_CAN_FOCUS); g_signal_connect(select_date_button, "clicked", G_CALLBACK(select_date_cb), appGUI); gtk_table_attach (GTK_TABLE (m_table), select_date_button, 2, 4, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Category")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (m_table), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->tsk->category_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->tsk->category_combobox); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->tsk->category_combobox), FALSE); gtk_table_attach (GTK_TABLE (m_table), appGUI->tsk->category_combobox, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); utl_gui_create_category_combobox (GTK_COMBO_BOX (appGUI->tsk->category_combobox), appGUI->opt->tasks_category_store, TRUE); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->category_combobox), utl_gui_list_store_get_text_index (appGUI->opt->tasks_category_store, gtk_combo_box_get_active_text (GTK_COMBO_BOX (appGUI->tsk->cf_combobox)))); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Priority")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_table_attach (GTK_TABLE (m_table), label, 2, 3, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); appGUI->tsk->priority_combobox = gtk_combo_box_new_text (); gtk_widget_show (appGUI->tsk->priority_combobox); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), _("Low")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), _("Medium")); gtk_combo_box_append_text (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), _("High")); gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), FALSE); gtk_table_attach (GTK_TABLE (m_table), appGUI->tsk->priority_combobox, 3, 4, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), MEDIUM_PRIORITY); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox2), alignment, FALSE, FALSE, 2); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 6, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Description")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_container_add (GTK_CONTAINER (alignment), label); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 6); gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); appGUI->tsk->desc_textview = gtk_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (appGUI->tsk->desc_textview), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(appGUI->tsk->desc_textview), 4); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(appGUI->tsk->desc_textview), 4); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(appGUI->tsk->desc_textview), 4); gtk_widget_show (appGUI->tsk->desc_textview); gtk_container_add (GTK_CONTAINER (scrolledwindow), appGUI->tsk->desc_textview); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox3); gtk_container_add (GTK_CONTAINER (alignment), hbox3); appGUI->tsk->checkb_sound_enable = gtk_check_button_new_with_mnemonic (_("Enable sound notification")); gtk_widget_show (appGUI->tsk->checkb_sound_enable); gtk_box_pack_start (GTK_BOX (hbox3), appGUI->tsk->checkb_sound_enable, TRUE, TRUE, 0); gtk_widget_set_sensitive (appGUI->tsk->checkb_sound_enable, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_sound_enable), TRUE); appGUI->tsk->checkb_ndialog_enable = gtk_check_button_new_with_mnemonic (_("Enable notification dialog")); gtk_widget_show (appGUI->tsk->checkb_ndialog_enable); gtk_box_pack_start (GTK_BOX (hbox3), appGUI->tsk->checkb_ndialog_enable, TRUE, TRUE, 0); gtk_widget_set_sensitive (appGUI->tsk->checkb_ndialog_enable, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_ndialog_enable), TRUE); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Options")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); /* Second Tab */ vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox5); label = gtk_label_new (_("Advanced")); gtk_widget_show (label); gtk_notebook_append_page (GTK_NOTEBOOK(notebook), vbox5, label); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_container_set_border_width (GTK_CONTAINER (frame), 2); gtk_box_pack_start (GTK_BOX (vbox5), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); vbox6 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox6); gtk_container_add (GTK_CONTAINER (frame), vbox6); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); gtk_box_pack_start (GTK_BOX (vbox6), hbox2, FALSE, TRUE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (hbox2), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Alarm warning")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 4, 0, 12, 0); table = gtk_table_new (1, 6, FALSE); gtk_widget_show (table); gtk_container_add (GTK_CONTAINER (alignment), table); gtk_table_set_col_spacings (GTK_TABLE (table), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Days")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Hours")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Minutes")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 4, 5, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); aw_days_spinbutton_adj = gtk_adjustment_new (0, 0, 10000, 1, 10, 0); appGUI->tsk->aw_days_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (aw_days_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->aw_days_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->aw_days_spinbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); aw_hours_spinbutton_adj = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->tsk->aw_hours_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (aw_hours_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->aw_hours_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->aw_hours_spinbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); aw_minutes_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->tsk->aw_minutes_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (aw_minutes_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->aw_minutes_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->aw_minutes_spinbutton, 5, 6, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); vseparator = gtk_vseparator_new (); gtk_widget_show (vseparator); gtk_box_pack_start (GTK_BOX (hbox2), vseparator, FALSE, FALSE, 8); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (hbox2), frame, FALSE, FALSE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Postpone time")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 4, 0, 12, 0); table = gtk_table_new (1, 2, FALSE); gtk_widget_show (table); gtk_container_add (GTK_CONTAINER (alignment), table); gtk_table_set_col_spacings (GTK_TABLE (table), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Minutes")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); spinbutton_adjustment = gtk_adjustment_new (config.postpone_time, 0, 1440, 1, 10, 0); appGUI->tsk->postpone_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adjustment), 1, 0); gtk_widget_show (appGUI->tsk->postpone_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->postpone_spinbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox6), frame, FALSE, FALSE, 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); sprintf(tmpbuf, "%s:", _("Alarm command")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 4, 0, 12, 0); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (alignment), hbox1); appGUI->tsk->alarm_cmd_entry = gtk_entry_new (); gtk_widget_show (appGUI->tsk->alarm_cmd_entry); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->tsk->alarm_cmd_entry, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (appGUI->tsk->alarm_cmd_entry), "changed", G_CALLBACK (alarm_cmd_entry_changed_cb), appGUI); appGUI->tsk->alarm_cmd_valid_image = gtk_image_new(); gtk_widget_show (appGUI->tsk->alarm_cmd_valid_image); gtk_box_pack_start (GTK_BOX (hbox1), appGUI->tsk->alarm_cmd_valid_image, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (vbox6), frame, FALSE, FALSE, 4); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); sprintf(tmpbuf, "%s:", _("Recurrent task")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 4, 0, 12, 0); vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_box_pack_start (GTK_BOX (vbox6), vbox4, FALSE, FALSE, 0); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox4), alignment, FALSE, FALSE, 2); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 4, 0); appGUI->tsk->rt_enable_checkbutton = gtk_check_button_new_with_mnemonic (_("Enable")); gtk_widget_show (appGUI->tsk->rt_enable_checkbutton); gtk_container_add (GTK_CONTAINER (alignment), appGUI->tsk->rt_enable_checkbutton); g_signal_connect (G_OBJECT (appGUI->tsk->rt_enable_checkbutton), "toggled", G_CALLBACK (recurrent_task_enable_cb), appGUI); appGUI->tsk->recurrent_task_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (appGUI->tsk->recurrent_task_vbox); gtk_box_pack_start (GTK_BOX (vbox4), appGUI->tsk->recurrent_task_vbox, FALSE, FALSE, 0); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->tsk->recurrent_task_vbox), frame, TRUE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 2, 0, 12, 0); m_table = gtk_table_new (2, 3, FALSE); gtk_widget_show (m_table); gtk_container_add (GTK_CONTAINER (alignment), m_table); gtk_table_set_col_spacings (GTK_TABLE (m_table), 16); label = gtk_label_new (_("Start")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (m_table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = gtk_label_new (_("End")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (m_table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label = gtk_label_new (_("Interval")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (m_table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); table = gtk_table_new (2, 2, FALSE); gtk_widget_show (table); gtk_table_attach (GTK_TABLE (m_table), table, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Hour")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Minute")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); rt_start_hour_spinbutton_adj = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->tsk->rt_start_hour_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_start_hour_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_start_hour_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_start_hour_spinbutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); rt_start_minute_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->tsk->rt_start_minute_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_start_minute_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_start_minute_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_start_minute_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); table = gtk_table_new (2, 2, FALSE); gtk_widget_show (table); gtk_table_attach (GTK_TABLE (m_table), table, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Hour")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Minute")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); rt_end_hour_spinbutton_adj = gtk_adjustment_new (23, 0, 23, 1, 10, 0); appGUI->tsk->rt_end_hour_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_end_hour_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_end_hour_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_end_hour_spinbutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); rt_end_minute_spinbutton_adj = gtk_adjustment_new (59, 0, 59, 1, 10, 0); appGUI->tsk->rt_end_minute_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_end_minute_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_end_minute_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_end_minute_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); table = gtk_table_new (2, 2, FALSE); gtk_widget_show (table); gtk_table_attach (GTK_TABLE (m_table), table, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Hour")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Minute")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); rt_interval_hour_spinbutton_adj = gtk_adjustment_new (0, 0, 23, 1, 10, 0); appGUI->tsk->rt_interval_hour_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_interval_hour_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_interval_hour_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_interval_hour_spinbutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); rt_interval_minute_spinbutton_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); appGUI->tsk->rt_interval_minute_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_interval_minute_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_interval_minute_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_interval_minute_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Time period")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->tsk->recurrent_task_vbox), frame, TRUE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Date period")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 2, 0, 12, 0); vbox3 = gtk_vbox_new (FALSE, 6); gtk_widget_show (vbox3); gtk_container_add (GTK_CONTAINER (alignment), vbox3); table = gtk_table_new (1, 6, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox3), table, FALSE, TRUE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); rt_dp_day_spinbutton_adj = gtk_adjustment_new (0, 0, 100000, 1, 10, 0); appGUI->tsk->rt_dp_day_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_dp_day_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_dp_day_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_dp_day_spinbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); rt_dp_month_spinbutton_adj = gtk_adjustment_new (0, 0, 10000, 1, 10, 0); appGUI->tsk->rt_dp_month_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (rt_dp_month_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->rt_dp_month_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->rt_dp_month_spinbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); repeat_counter_spinbutton_adj = gtk_adjustment_new (0, 0, 10000, 1, 10, 0); appGUI->tsk->repeat_counter_spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (repeat_counter_spinbutton_adj), 1, 0); gtk_widget_show (appGUI->tsk->repeat_counter_spinbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->repeat_counter_spinbutton, 5, 6, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Days")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Months")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Repeat")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 4, 5, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); g_snprintf (tmpbuf, BUFFER_SIZE, "%s:", _("Repeat in the following days")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); table = gtk_table_new (2, 4, FALSE); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox3), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 8); appGUI->tsk->dp_1_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (1, FALSE)); gtk_widget_show (appGUI->tsk->dp_1_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_1_checkbutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_1_checkbutton), TRUE); appGUI->tsk->dp_2_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (2, FALSE)); gtk_widget_show (appGUI->tsk->dp_2_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_2_checkbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_2_checkbutton), TRUE); appGUI->tsk->dp_3_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (3, FALSE)); gtk_widget_show (appGUI->tsk->dp_3_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_3_checkbutton, 2, 3, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_3_checkbutton), TRUE); appGUI->tsk->dp_4_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (4, FALSE)); gtk_widget_show (appGUI->tsk->dp_4_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_4_checkbutton, 3, 4, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_4_checkbutton), TRUE); appGUI->tsk->dp_5_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (5, FALSE)); gtk_widget_show (appGUI->tsk->dp_5_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_5_checkbutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_5_checkbutton), TRUE); appGUI->tsk->dp_6_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (6, FALSE)); gtk_widget_show (appGUI->tsk->dp_6_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_6_checkbutton, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_6_checkbutton), TRUE); appGUI->tsk->dp_7_checkbutton = gtk_check_button_new_with_mnemonic (utl_get_day_name (7, FALSE)); gtk_widget_show (appGUI->tsk->dp_7_checkbutton); gtk_table_attach (GTK_TABLE (table), appGUI->tsk->dp_7_checkbutton, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_7_checkbutton), TRUE); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_box_pack_start (GTK_BOX (appGUI->tsk->recurrent_task_vbox), frame, TRUE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0); appGUI->tsk->ignore_alarm_checkbutton = gtk_check_button_new_with_mnemonic (_("Ignore alarm when task expired offline")); gtk_widget_show (appGUI->tsk->ignore_alarm_checkbutton); gtk_container_add (GTK_CONTAINER (alignment), appGUI->tsk->ignore_alarm_checkbutton); g_snprintf (tmpbuf, BUFFER_SIZE, "%s", _("Options")); label = gtk_label_new (tmpbuf); gtk_widget_show (label); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_widget_set_sensitive (GTK_WIDGET(appGUI->tsk->recurrent_task_vbox), FALSE); /* Common */ tasks_time_related_set_state (FALSE, appGUI); tasks_date_related_set_state (FALSE, appGUI); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); gtk_box_pack_start (GTK_BOX (vbox0), alignment, FALSE, FALSE, 0); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 6, 6); hseparator = gtk_hseparator_new (); gtk_widget_show (hseparator); gtk_container_add (GTK_CONTAINER (alignment), hseparator); hbuttonbox = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox); gtk_box_pack_start (GTK_BOX (vbox0), hbuttonbox, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox), 6); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); gtk_box_set_spacing (GTK_BOX (hbuttonbox), 16); cancel_button = utl_gui_create_labeled_button (GTK_STOCK_CANCEL, OSMO_STOCK_BUTTON_CANCEL, _("Cancel")); gtk_widget_show (cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), cancel_button); g_signal_connect (cancel_button, "clicked", G_CALLBACK (button_tasks_add_edit_window_close_cb), appGUI); appGUI->tsk->tasks_ok_button = utl_gui_create_labeled_button (GTK_STOCK_OK, OSMO_STOCK_BUTTON_OK, _("OK")); gtk_widget_show (appGUI->tsk->tasks_ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox), appGUI->tsk->tasks_ok_button); g_signal_connect (appGUI->tsk->tasks_ok_button, "clicked", G_CALLBACK (tasks_item_entered_cb), appGUI); appGUI->tsk->tasks_edit_state = tasks_edit_mode; appGUI->tsk->tasks_accept_state = FALSE; gtk_entry_set_text (GTK_ENTRY(appGUI->tsk->due_date_entry), _("No date")); if (julian_date != 0 ) { appGUI->tsk->tasks_due_julian_day = julian_date; appGUI->tsk->tasks_due_time = -1; gtk_entry_set_text (GTK_ENTRY (appGUI->tsk->due_date_entry), get_date_time_full_str (appGUI->tsk->tasks_due_julian_day, appGUI->tsk->tasks_due_time)); } if (tasks_edit_mode == TRUE) { appGUI->tsk->tasks_accept_state = TRUE; /* fill gui fields */ text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(appGUI->tsk->desc_textview)); utl_gui_clear_text_buffer (GTK_TEXT_BUFFER(text_buffer), &titer); sort_iter = utl_gui_get_first_selection_iter(appGUI->tsk->tasks_list_selection, &model); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(appGUI->tsk->tasks_sort), &filter_iter, &sort_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(appGUI->tsk->tasks_filter), &iter, &filter_iter); item = tsk_get_item (&iter, appGUI); if (item != NULL) { appGUI->tsk->tasks_due_julian_day = item->due_date_julian; appGUI->tsk->tasks_due_time = item->due_time; gtk_entry_set_text (GTK_ENTRY (appGUI->tsk->due_date_entry), get_date_time_full_str (item->due_date_julian, item->due_time)); gtk_entry_set_text(GTK_ENTRY(appGUI->tsk->summary_entry), item->summary); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->category_combobox), utl_gui_list_store_get_text_index (appGUI->opt->tasks_category_store, item->category)); gtk_combo_box_set_active (GTK_COMBO_BOX (appGUI->tsk->priority_combobox), tsk_get_priority_index (item->priority)); gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(text_buffer), &titer, 0); if (item->desc != NULL) { gtk_text_buffer_insert(text_buffer, &titer, item->desc, -1); gtk_text_view_set_buffer(GTK_TEXT_VIEW(appGUI->tsk->desc_textview), text_buffer); } if (item->due_date_julian != 0) { tasks_date_related_set_state (TRUE, appGUI); if (item->due_time != -1) { tasks_time_related_set_state (TRUE, appGUI); } else { tasks_time_related_set_state (FALSE, appGUI); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->aw_days_spinbutton), item->warning_days); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->aw_hours_spinbutton), item->warning_time / 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->aw_minutes_spinbutton), item->warning_time % 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->postpone_spinbutton), item->postpone_time); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_start_hour_spinbutton), item->repeat_time_start / 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_start_minute_spinbutton), item->repeat_time_start % 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_end_hour_spinbutton), item->repeat_time_end / 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_end_minute_spinbutton), item->repeat_time_end % 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_interval_hour_spinbutton), item->repeat_time_interval / 60); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_interval_minute_spinbutton), item->repeat_time_interval % 60); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->rt_enable_checkbutton), item->repeat); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->ignore_alarm_checkbutton), item->offline_ignore); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_sound_enable), item->sound_enable); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->checkb_ndialog_enable), item->ndialog_enable); if (item->alarm_command) { gtk_entry_set_text(GTK_ENTRY(appGUI->tsk->alarm_cmd_entry), item->alarm_command); utl_gui_update_command_status (GTK_EDITABLE(appGUI->tsk->alarm_cmd_entry), appGUI->tsk->alarm_cmd_valid_image, appGUI); } gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_dp_day_spinbutton), item->repeat_day_interval); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->rt_dp_month_spinbutton), item->repeat_month_interval); gtk_spin_button_set_value (GTK_SPIN_BUTTON (appGUI->tsk->repeat_counter_spinbutton), item->repeat_counter); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_1_checkbutton), item->repeat_day & 1); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_2_checkbutton), item->repeat_day & 2); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_3_checkbutton), item->repeat_day & 4); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_4_checkbutton), item->repeat_day & 8); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_5_checkbutton), item->repeat_day & 16); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_6_checkbutton), item->repeat_day & 32); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (appGUI->tsk->dp_7_checkbutton), item->repeat_day & 64); } tsk_item_free (item); } } gtk_widget_set_sensitive(appGUI->tsk->tasks_ok_button, appGUI->tsk->tasks_accept_state); gtk_widget_show(appGUI->tsk->tasks_add_window); gtk_widget_grab_focus(appGUI->tsk->summary_entry); } /*------------------------------------------------------------------------------*/ void read_tasks_entries (GUI *appGUI) { xmlDocPtr doc; xmlChar *key; xmlNodePtr node, cnode, category_node, main_node; GtkTreeIter iter; gchar *calendar_prop, *tasks_prop; gboolean calendar_state, tasks_state; TASK_ITEM *item; gint priority_n; gchar *prop; gint tasks_version; if (g_file_test (prefs_get_config_filename (TASKS_ENTRIES_FILENAME, appGUI), G_FILE_TEST_IS_REGULAR) == FALSE) return; if ((doc = xmlParseFile (prefs_get_config_filename (TASKS_ENTRIES_FILENAME, appGUI)))) { if (!(node = xmlDocGetRootElement (doc))) { xmlFreeDoc (doc); return; } if (xmlStrcmp (node->name, (const xmlChar *) TASKS_NAME)) { xmlFreeDoc (doc); return; } else { prop = (gchar *) xmlGetProp (node, (const xmlChar *) "version"); if (prop != NULL) { tasks_version = atoi (prop); xmlFree (prop); } else tasks_version = 0; } main_node = node->xmlChildrenNode; while (main_node != NULL) { if (!xmlStrcmp (main_node->name, (xmlChar *) TASKS_CATEGORY_ENTRIES_NAME)) { /* read note */ category_node = main_node->xmlChildrenNode; while (category_node != NULL) { calendar_state = tasks_state = TRUE; if ((!xmlStrcmp (category_node->name, (const xmlChar *) "name"))) { key = xmlNodeListGetString (doc, category_node->xmlChildrenNode, 1); calendar_prop = (gchar *) xmlGetProp (category_node, (const xmlChar *) "calendar"); if (calendar_prop != NULL) { calendar_state = atoi (calendar_prop); xmlFree (calendar_prop); } tasks_prop = (gchar *) xmlGetProp (category_node, (const xmlChar *) "tasks"); if (tasks_prop != NULL) { tasks_state = atoi (tasks_prop); xmlFree (tasks_prop); } if (key != NULL) { gtk_list_store_append (appGUI->opt->tasks_category_store, &iter); gtk_list_store_set (appGUI->opt->tasks_category_store, &iter, TC_COLUMN_NAME, (gchar *) key, TC_COLUMN_CALENDAR, calendar_state, TC_COLUMN_TASKS, tasks_state, -1); xmlFree (key); } } category_node = category_node->next; } } /*---------------------------------------------------------------------------------------*/ if (!xmlStrcmp (main_node->name, (xmlChar *) TASKS_ENTRIES_NAME)) { node = main_node->xmlChildrenNode; while (node != NULL) { if (!xmlStrcmp (node->name, (xmlChar *) "entry")) { cnode = node->xmlChildrenNode; item = g_new0 (TASK_ITEM, 1); if (item == NULL) continue; item->id = 0; item->done = FALSE; item->active = TRUE; item->offline_ignore = FALSE; item->repeat = FALSE; item->repeat_day = 127; item->repeat_day_interval = 0; item->repeat_start_day = 0; item->repeat_month_interval = 0; item->repeat_time_start = 0; item->repeat_time_end = 0; item->repeat_time_interval = 0; item->repeat_counter = 0; item->alarm_command = NULL; item->warning_days = 0; item->warning_time = 0; item->postpone_time = 0; item->due_date_julian = 0; item->due_time = -1; item->start_date_julian = 0; item->done_date_julian = 0; item->priority = NULL; item->category = NULL; item->summary = NULL; item->desc = NULL; item->sound_enable = TRUE; item->ndialog_enable = TRUE; priority_n = MEDIUM_PRIORITY; while (cnode != NULL) { utl_xml_get_uint ("id", &(item->id), cnode); utl_xml_get_int ("status", &(item->done), cnode); utl_xml_get_uint ("due_date", &(item->due_date_julian), cnode); utl_xml_get_int ("due_time", &(item->due_time), cnode); utl_xml_get_uint ("start_date", &(item->start_date_julian), cnode); utl_xml_get_uint ("done_date", &(item->done_date_julian), cnode); utl_xml_get_int ("active", &(item->active), cnode); utl_xml_get_int ("offline_ignore", &(item->offline_ignore), cnode); utl_xml_get_int ("repeat", &(item->repeat), cnode); utl_xml_get_int ("repeat_day", &(item->repeat_day), cnode); utl_xml_get_int ("repeat_month_interval", &(item->repeat_month_interval), cnode); utl_xml_get_int ("repeat_day_interval", &(item->repeat_day_interval), cnode); utl_xml_get_int ("repeat_start_day", &(item->repeat_start_day), cnode); utl_xml_get_int ("repeat_time_start", &(item->repeat_time_start), cnode); utl_xml_get_int ("repeat_time_end", &(item->repeat_time_end), cnode); utl_xml_get_int ("repeat_time_interval", &(item->repeat_time_interval), cnode); utl_xml_get_int ("repeat_counter", &(item->repeat_counter), cnode); utl_xml_get_int ("warning_days", &(item->warning_days), cnode); utl_xml_get_int ("warning_time", &(item->warning_time), cnode); utl_xml_get_int ("postpone_time", &(item->postpone_time), cnode); utl_xml_get_int ("sound_enable", &(item->sound_enable), cnode); utl_xml_get_int ("notification_dialog_enable", &(item->ndialog_enable), cnode); utl_xml_get_int ("priority", &priority_n, cnode); utl_xml_get_str ("alarm_command", &(item->alarm_command), cnode); utl_xml_get_str ("category", &(item->category), cnode); utl_xml_get_str ("summary", &(item->summary), cnode); utl_xml_get_str ("description", &(item->desc), cnode); cnode = cnode->next; } if (item->summary != NULL) { item->priority = g_strdup (tsk_get_priority_text (priority_n)); if (item->due_date_julian == 0) { item->due_time = -1; item->warning_days = 0; item->warning_time = 0; item->repeat = FALSE; item->active = TRUE; item->postpone_time = 0; } else if (item->due_time == -1){ item->warning_time = 0; } if (tasks_version < 208) item->active = TRUE; if (item->id == 0) { g_return_if_fail (tasks_version < 208); item->id = appGUI->tsk->next_id++; } else if (item->id >= appGUI->tsk->next_id) appGUI->tsk->next_id = item->id + 1; add_item_to_list (item, appGUI); } tsk_item_free (item); } node = node->next; } } /*---------------------------------------------------------------------------------------*/ main_node = main_node->next; } xmlFree (node); xmlFreeDoc (doc); } } /*------------------------------------------------------------------------------*/ void write_tasks_entries (GUI *appGUI) { xmlDocPtr doc; xmlNodePtr main_node, node, note_node, dc_node; xmlAttrPtr attr; GtkTreeIter iter; gchar *name; gint tc_calendar, tc_tasks; TASK_ITEM *item; gchar temp[BUFFER_SIZE]; gint i; xmlChar *escaped; if ((appGUI->save_status & WRT_TASKS) != 0) return; appGUI->save_status |= WRT_TASKS; doc = xmlNewDoc ((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); xmlFreeProp (attr); main_node = xmlNewNode (NULL, (const xmlChar *) TASKS_NAME); attr = xmlNewProp (main_node, (const xmlChar *) "version", (const xmlChar *) appGUI->version); xmlDocSetRootElement (doc, main_node); node = xmlNewChild (main_node, NULL, (const xmlChar *) TASKS_CATEGORY_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->tasks_category_store), &iter, TC_COLUMN_NAME, &name, TC_COLUMN_CALENDAR, &tc_calendar, TC_COLUMN_TASKS, &tc_tasks, -1); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) name); dc_node = xmlNewChild (node, NULL, (const xmlChar *) "name", (xmlChar *) escaped); xmlFree (escaped); g_snprintf (temp, BUFFER_SIZE, "%d", tc_calendar); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) temp); xmlNewProp (dc_node, (const xmlChar *) "calendar", (xmlChar *) escaped); xmlFree (escaped); g_snprintf (temp, BUFFER_SIZE, "%d", tc_tasks); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) temp); xmlNewProp (dc_node, (const xmlChar *) "tasks", (xmlChar *) escaped); xmlFree (escaped); g_free (name); } node = xmlNewChild (main_node, NULL, (const xmlChar *) TASKS_ENTRIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->tsk->tasks_list_store), &iter, NULL, i++)) { item = tsk_get_item (&iter, appGUI); if (item != NULL) { note_node = xmlNewChild (node, NULL, (const xmlChar *) "entry", (xmlChar *) NULL); utl_xml_put_int ("id", item->id, note_node); utl_xml_put_int ("status", item->done, note_node); utl_xml_put_uint ("due_date", item->due_date_julian, note_node); utl_xml_put_int ("due_time", item->due_time, note_node); utl_xml_put_uint ("start_date", item->start_date_julian, note_node); utl_xml_put_uint ("done_date", item->done_date_julian, note_node); utl_xml_put_int ("active", item->active, note_node); utl_xml_put_int ("offline_ignore", item->offline_ignore, note_node); utl_xml_put_int ("repeat", item->repeat, note_node); utl_xml_put_int ("repeat_day", item->repeat_day, note_node); utl_xml_put_int ("repeat_month_interval", item->repeat_month_interval, note_node); utl_xml_put_int ("repeat_day_interval", item->repeat_day_interval, note_node); utl_xml_put_int ("repeat_start_day", item->repeat_start_day, note_node); utl_xml_put_int ("repeat_time_start", item->repeat_time_start, note_node); utl_xml_put_int ("repeat_time_end", item->repeat_time_end, note_node); utl_xml_put_int ("repeat_time_interval", item->repeat_time_interval, note_node); utl_xml_put_int ("repeat_counter", item->repeat_counter, note_node); utl_xml_put_int ("warning_days", item->warning_days, note_node); utl_xml_put_int ("warning_time", item->warning_time, note_node); utl_xml_put_int ("postpone_time", item->postpone_time, note_node); utl_xml_put_int ("sound_enable", item->sound_enable, note_node); utl_xml_put_int ("notification_dialog_enable", item->ndialog_enable, note_node); utl_xml_put_int ("priority", tsk_get_priority_index (gettext (item->priority)), note_node); utl_xml_put_str ("alarm_command", item->alarm_command, note_node, doc); utl_xml_put_str ("category", item->category, note_node, doc); utl_xml_put_str ("summary", item->summary, note_node, doc); utl_xml_put_str ("description", item->desc, note_node, doc); tsk_item_free (item); } } xmlSaveFormatFileEnc (prefs_get_config_filename (TASKS_ENTRIES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeDoc (doc); appGUI->save_status &= ~WRT_TASKS; } /*------------------------------------------------------------------------------*/ #endif /* TASKS_ENABLED */ osmo-0.2.14/src/contacts_preferences_gui.h000664 001750 001750 00000002130 12561325524 020531 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _CONTACTS_PREFERENCES_GUI_H #define _CONTACTS_PREFERENCES_GUI_H #include "gui.h" GtkWidget * cnt_create_preferences_page (GtkWidget *notebook, GUI *appGUI); #endif /* _CONTACTS_PREFERENCES_GUI_H */ osmo-0.2.14/src/contacts_preferences_gui.c000664 001750 001750 00000047127 12561325524 020543 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007-2009 Tomasz Maka * 2007-2009 Piotr Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "contacts.h" #include "contacts_preferences_gui.h" #include "i18n.h" #include "options_prefs.h" #include "stock_icons.h" #include "utils_gui.h" #ifdef CONTACTS_ENABLED /* ========================================================================== */ static void checkbutton_clicked_cb (GtkToggleButton *togglebutton, gint *option) { *option = gtk_toggle_button_get_active (togglebutton); } /* ========================================================================== */ static void contacts_photo_size_changed_cb (GtkComboBox *widget, GUI *appGUI) { gint sizes[] = { PHOTO_SMALL, PHOTO_MEDIUM, PHOTO_LARGE }; gint i; i = gtk_combo_box_get_active (widget); config.photo_width = sizes[i % 3]; g_signal_emit_by_name (appGUI->cnt->contacts_list_selection, "changed"); } /* ========================================================================== */ static void contact_link_color_changed_cb (GtkColorButton *widget, GUI *appGUI) { GdkColor color; gtk_color_button_get_color (widget, &color); g_snprintf (config.contact_link_color, MAXCOLORNAME, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_object_set (G_OBJECT (appGUI->gui_url_tag), "foreground-gdk", &color, NULL); g_signal_emit_by_name (G_OBJECT (appGUI->cnt->contacts_list_selection), "changed"); } /* ========================================================================== */ static void contact_tag_color_changed_cb (GtkColorButton *widget, GUI *appGUI) { GdkColor color; gtk_color_button_get_color (widget, &color); g_snprintf (config.contact_tag_color, MAXCOLORNAME, "#%02X%02X%02X", color.red * 256 / 65536, color.green * 256 / 65536, color.blue * 256 / 65536); g_signal_emit_by_name (appGUI->cnt->contacts_list_selection, "changed"); } /* ========================================================================== */ static void cn_font_size_changed_cb (GtkSpinButton *spinbutton, GUI *appGUI) { config.contact_name_font_size = (gint) gtk_spin_button_get_value (spinbutton); g_signal_emit_by_name (G_OBJECT (appGUI->cnt->contacts_list_selection), "changed"); } static void ci_font_size_changed_cb (GtkSpinButton *spinbutton, GUI *appGUI) { config.contact_item_font_size = (gint) gtk_spin_button_get_value (spinbutton); #ifdef HAVE_LIBWEBKIT g_object_set (appGUI->cnt->webkit_settings, "default-font-size", config.contact_item_font_size, NULL); #endif /* LIBWEBKIT */ g_signal_emit_by_name (G_OBJECT (appGUI->cnt->contacts_list_selection), "changed"); } /* ========================================================================== */ static void create_appearance_section (GtkWidget *appearance_vbox, GUI *appGUI) { GtkWidget *table, *colors_hbox, *fonts_hbox, *photo_hbox, *spinbutton; GtkWidget *label, *color_button, *combobox; GtkObject *adjustment; GdkColor color; gint i = 0; table = gtk_table_new (5, 5, FALSE); gtk_box_pack_start (GTK_BOX (appearance_vbox), table, FALSE, FALSE, 0); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 8); label = utl_gui_create_label ("%s:", _("Colors")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); colors_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), colors_hbox, 1, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Color of contact tags")); gdk_color_parse (config.contact_tag_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (contact_tag_color_changed_cb), appGUI); appGUI->opt->contact_tag_color_picker = color_button; color_button = gtk_color_button_new (); if (config.enable_tooltips) gtk_widget_set_tooltip_text (color_button, _("Color of links")); gdk_color_parse (config.contact_link_color, &color); gtk_color_button_set_color (GTK_COLOR_BUTTON (color_button), &color); gtk_box_pack_start (GTK_BOX (colors_hbox), color_button, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (color_button), "color-set", G_CALLBACK (contact_link_color_changed_cb), appGUI); appGUI->opt->contact_link_color_picker = color_button; i++; label = utl_gui_create_label ("%s:", _("Font size")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); fonts_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), fonts_hbox, 1, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); adjustment = gtk_adjustment_new (0, 8, 48, 1, 10, 0); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0); if (config.enable_tooltips) gtk_widget_set_tooltip_text (spinbutton, _("Name font size")); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton), config.contact_name_font_size); gtk_box_pack_start (GTK_BOX (fonts_hbox), spinbutton, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (spinbutton), "value-changed", G_CALLBACK (cn_font_size_changed_cb), appGUI); appGUI->opt->cn_font_size_spinbutton = spinbutton; adjustment = gtk_adjustment_new (0, 8, 48, 1, 10, 0); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0); if (config.enable_tooltips) gtk_widget_set_tooltip_text (spinbutton, _("Item font size")); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinbutton), config.contact_item_font_size); gtk_box_pack_start (GTK_BOX (fonts_hbox), spinbutton, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (spinbutton), "value-changed", G_CALLBACK (ci_font_size_changed_cb), appGUI); appGUI->opt->ci_font_size_spinbutton = spinbutton; i++; label = utl_gui_create_label ("%s:", _("Photo size")); gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); photo_hbox = gtk_hbox_new (FALSE, 8); gtk_table_attach (GTK_TABLE (table), photo_hbox, 1, 4, i, i+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); combobox = gtk_combo_box_new_text (); gtk_box_pack_start (GTK_BOX (photo_hbox), combobox, FALSE, FALSE, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Small")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Medium")); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), _("Large")); appGUI->opt->contacts_photo_size_combobox = combobox; g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (contacts_photo_size_changed_cb), appGUI); if (config.photo_width == PHOTO_LARGE) { gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 2); } else if (config.photo_width == PHOTO_MEDIUM) { gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 1); } else { gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); } } /* ========================================================================== */ static void contacts_hide_group_column_changed_cb (GtkToggleButton *widget, GUI *appGUI) { config.hide_group_column = gtk_toggle_button_get_active (widget); gtk_tree_view_column_set_visible (appGUI->cnt->contacts_columns[COLUMN_GROUP], !config.hide_group_column); set_contacts_columns_width (appGUI); } /* ========================================================================== */ static void maps_provider_changed_cb (GtkComboBox *widget, GUI *appGUI) { config.maps_provider = gtk_combo_box_get_active (widget); } /* ========================================================================== */ static void create_miscellaneous_section (GtkWidget *miscellaneous_vbox, GUI *appGUI) { GtkWidget *checkbutton; GtkWidget *maps_hbox; GtkWidget *label; GtkWidget *combobox; checkbutton = gtk_check_button_new_with_mnemonic (_("Hide group column")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.hide_group_column); gtk_box_pack_start (GTK_BOX (miscellaneous_vbox), checkbutton, TRUE, TRUE, 4); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (contacts_hide_group_column_changed_cb), appGUI); appGUI->opt->contacts_hide_group_column_checkbutton = checkbutton; maps_hbox = gtk_hbox_new (FALSE, 8); gtk_box_pack_start (GTK_BOX (miscellaneous_vbox), maps_hbox, TRUE, TRUE, 4); label = utl_gui_create_label ("%s:", _("Maps provider")); gtk_box_pack_start (GTK_BOX (maps_hbox), label, FALSE, FALSE, 0); combobox = gtk_combo_box_new_text (); gtk_box_pack_start (GTK_BOX (maps_hbox), combobox, FALSE, FALSE, 0); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Google"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "Bing"); gtk_combo_box_append_text (GTK_COMBO_BOX (combobox), "OpenStreetMap"); g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (maps_provider_changed_cb), appGUI); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), config.maps_provider); } /* ========================================================================== */ static void contacts_group_remove_cb (GtkWidget *widget, GUI *appGUI) { GtkTreePath *path; GtkTreeIter iter; gtk_tree_view_get_cursor (GTK_TREE_VIEW (appGUI->opt->contacts_group_treeview), &path, NULL); if (path != NULL) { gtk_tree_model_get_iter (GTK_TREE_MODEL (appGUI->opt->contacts_group_store), &iter, path); gtk_list_store_remove (appGUI->opt->contacts_group_store, &iter); gtk_tree_path_free (path); } } /* ========================================================================== */ static void contacts_group_cell_edited_cb (GtkCellRendererText *renderer, gchar *path, gchar *new_text, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (g_ascii_strcasecmp (new_text, "") != 0) { model = gtk_tree_view_get_model (GTK_TREE_VIEW (appGUI->opt->contacts_group_treeview)); if (gtk_tree_model_get_iter_from_string (model, &iter, path)) gtk_list_store_set (appGUI->opt->contacts_group_store, &iter, 0, new_text, -1); } } /* ========================================================================== */ static void contacts_group_add_cb (GtkWidget *widget, GUI *appGUI) { GtkTreeIter iter; const gchar *category_name; gchar *item; gint i = 0; category_name = gtk_entry_get_text (GTK_ENTRY (appGUI->opt->contacts_group_entry)); if (!strlen (category_name)) return; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->contacts_group_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->contacts_group_store), &iter, 0, &item, -1); if (!strcmp (category_name, item)) { g_free (item); return; } g_free (item); } gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->contacts_group_store), &iter, NULL, 0); gtk_list_store_append (appGUI->opt->contacts_group_store, &iter); gtk_list_store_set (appGUI->opt->contacts_group_store, &iter, 0, category_name, -1); gtk_entry_set_text (GTK_ENTRY (appGUI->opt->contacts_group_entry), ""); gtk_widget_set_sensitive (appGUI->opt->contacts_group_add_button, FALSE); } /* ========================================================================== */ static void contacts_group_selected_cb (GtkTreeSelection *selection, GUI *appGUI) { GtkTreeModel *model; GtkTreeIter iter; if (gtk_tree_selection_get_selected (selection, &model, &iter)) gtk_widget_set_sensitive (appGUI->opt->contacts_group_remove_button, TRUE); else gtk_widget_set_sensitive (appGUI->opt->contacts_group_remove_button, FALSE); } /* ========================================================================== */ static gint contacts_group_entry_key_release_cb (GtkEntry *widget, GdkEventKey *event, GUI *appGUI) { gboolean state = FALSE; if (strlen (gtk_entry_get_text (widget))) state = TRUE; gtk_widget_set_sensitive (appGUI->opt->contacts_group_add_button, state); if (event->keyval == GDK_Return) { if (state) contacts_group_add_cb (NULL, appGUI); return TRUE; } return FALSE; } /* ========================================================================== */ static void create_groups_section (GtkWidget *groups_vbox, GUI *appGUI) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *table, *scrolledwindow, *treeview; table = gtk_table_new (4, 3, FALSE); gtk_box_pack_start (GTK_BOX (groups_vbox), table, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (table), 8); gtk_table_set_row_spacings (GTK_TABLE (table), 8); gtk_table_set_col_spacings (GTK_TABLE (table), 4); appGUI->opt->contacts_group_entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), appGUI->opt->contacts_group_entry, 0, 1, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (appGUI->opt->contacts_group_entry), "key_release_event", G_CALLBACK (contacts_group_entry_key_release_cb), appGUI); scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 3, 0, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (appGUI->opt->contacts_group_store)); gtk_container_add (GTK_CONTAINER (scrolledwindow), treeview); gtk_container_set_border_width (GTK_CONTAINER (treeview), 4); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeview), FALSE); gtk_widget_set_size_request (treeview, -1, 80); appGUI->opt->contacts_group_treeview = treeview; appGUI->opt->contacts_group_select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (appGUI->opt->contacts_group_select), "changed", G_CALLBACK (contacts_group_selected_cb), appGUI); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, "editable-set", TRUE, NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (contacts_group_cell_edited_cb), appGUI); column = gtk_tree_view_column_new_with_attributes (NULL, renderer, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); appGUI->opt->contacts_group_add_button = utl_gui_create_button (GTK_STOCK_ADD, OSMO_STOCK_BUTTON_ADD, FALSE); gtk_widget_set_sensitive (appGUI->opt->contacts_group_add_button, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->contacts_group_add_button, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (appGUI->opt->contacts_group_add_button, "clicked", G_CALLBACK (contacts_group_add_cb), appGUI); appGUI->opt->contacts_group_remove_button = utl_gui_create_button (GTK_STOCK_REMOVE, OSMO_STOCK_BUTTON_REMOVE, FALSE); gtk_widget_set_sensitive (appGUI->opt->contacts_group_remove_button, FALSE); gtk_table_attach (GTK_TABLE (table), appGUI->opt->contacts_group_remove_button, 2, 3, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); g_signal_connect (appGUI->opt->contacts_group_remove_button, "clicked", G_CALLBACK (contacts_group_remove_cb), appGUI); } /* ========================================================================== */ static void create_visible_columns_section (GtkWidget *visible_columns_vbox, GUI *appGUI) { GtkWidget *table, *checkbutton; table = gtk_table_new (1, 3, FALSE); gtk_box_pack_start (GTK_BOX (visible_columns_vbox), table, FALSE, FALSE, 0); gtk_table_set_row_spacings (GTK_TABLE (table), 4); gtk_table_set_col_spacings (GTK_TABLE (table), 8); checkbutton = gtk_check_button_new_with_mnemonic (_("Age")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.cnt_visible_age_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.cnt_visible_age_column)); appGUI->opt->vc_age_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Birthday date")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.cnt_visible_birthday_date_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.cnt_visible_birthday_date_column)); appGUI->opt->vc_birthday_date_checkbutton = checkbutton; checkbutton = gtk_check_button_new_with_mnemonic (_("Zodiac sign")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), config.cnt_visible_zodiac_sign_column); gtk_table_attach (GTK_TABLE (table), checkbutton, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); g_signal_connect (G_OBJECT (checkbutton), "toggled", G_CALLBACK (checkbutton_clicked_cb), &(config.cnt_visible_zodiac_sign_column)); appGUI->opt->vc_zodiac_sign_checkbutton = checkbutton; } /* ========================================================================== */ GtkWidget * cnt_create_preferences_page (GtkWidget *notebook, GUI *appGUI) { GtkWidget *vbox_top, *vbox_icon, *vbox, *scrolledwindow; vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); scrolledwindow = utl_gui_insert_in_scrolled_window (vbox_top, GTK_SHADOW_ETCHED_IN); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow), 2); vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_CONTACTS, _("Contacts")); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); create_appearance_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Miscellaneous")); create_miscellaneous_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Groups")); create_groups_section (vbox, appGUI); vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Visible columns in birthday browser")); create_visible_columns_section (vbox, appGUI); gtk_tree_view_column_set_visible (appGUI->cnt->contacts_columns[COLUMN_GROUP], !config.hide_group_column); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow, vbox_icon); gtk_widget_show_all (scrolledwindow); return scrolledwindow; } /* ========================================================================== */ #endif /* CONTACTS_ENABLED */ osmo-0.2.14/src/tasks_export.h000664 001750 001750 00000001722 12561325524 016222 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _TASKS_EXPORT_H #define _TASKS_EXPORT_H #include "gui.h" gboolean export_tasks_to_file (GUI *appGUI); #endif /* _TASKS_EXPORT_H */ osmo-0.2.14/src/main.c000664 001750 001750 00000023745 12561325524 014424 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "gui.h" #include "calendar.h" #include "calendar_utils.h" #include "utils.h" #include "utils_date.h" #include "utils_gui.h" #include "i18n.h" #include "check_events.h" #include "options_prefs.h" #include "contacts.h" #ifdef BACKUP_SUPPORT #include "backup.h" #endif /* BACKUP_SUPPORT */ #define RUN_FLAG_FILE "lock" /*------------------------------------------------------------------------------*/ int main(int argc, char **argv) { GUI *appGUI = NULL; CALENDAR *cal = NULL; #ifdef TASKS_ENABLED TASKS *tsk = NULL; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED CONTACTS *cnt = NULL; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED NOTES *nte = NULL; #endif /* NOTES_ENABLED */ OPTIONS *opt = NULL; GtkWidget *info_dialog; gchar tmpbuf[BUFFER_SIZE]; gint response = -1; #ifndef WIN32 struct flock *s_lock = NULL; #endif /* WIN32 */ int fhandle = 0; gchar* output_codeset = NULL; GOptionContext *cmd_context; gboolean cmd_calendar = FALSE; gboolean cmd_check_events = FALSE; gint cmd_check_ndays_events = 0; gchar *cmd_cfg_path = NULL; #ifdef CONTACTS_ENABLED gchar *cmd_mutt_query = NULL; #endif /* CONTACTS_ENABLED */ /* FIXME: temporary disabled gboolean cmd_tiny_gui = FALSE; */ GOptionEntry cmd_options[] = { { "calendar", 'c', 0, G_OPTION_ARG_NONE, &cmd_calendar, N_("Show small calendar window"), NULL }, { "check", 'e', 0, G_OPTION_ARG_NONE, &cmd_check_events, N_("Check for events since last run"), NULL }, { "days", 'd', 0, G_OPTION_ARG_INT, &cmd_check_ndays_events, N_("Number of days to check forward for events (default: 0)"), NULL }, { "config", 's', 0, G_OPTION_ARG_STRING, &cmd_cfg_path, N_("Set absolute path for settings and data files"), "STRING" }, #ifdef CONTACTS_ENABLED { "mutt-query", 'q', 0, G_OPTION_ARG_STRING, &cmd_mutt_query, N_("Match contacts with given string"), "STRING" }, #endif /* CONTACTS_ENABLED */ /* FIXME: temporary disabled { "tinygui", 't', 0, G_OPTION_ARG_NONE, &cmd_tiny_gui, N_("Modify GUI to use Osmo on low resolutions"), NULL }, */ { NULL } }; appGUI = g_new0 (GUI, 1); g_return_val_if_fail (appGUI != NULL, -1); cal = g_new0 (CALENDAR, 1); g_return_val_if_fail (cal != NULL, -1); #ifdef TASKS_ENABLED tsk = g_new0 (TASKS, 1); g_return_val_if_fail (tsk != NULL, -1); #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED cnt = g_new0 (CONTACTS, 1); g_return_val_if_fail (cnt != NULL, -1); #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED nte = g_new0 (NOTES, 1); g_return_val_if_fail (nte != NULL, -1); #endif /* NOTES_ENABLED */ opt = g_new0 (OPTIONS, 1); g_return_val_if_fail (opt != NULL, -1); /* register modules */ appGUI->cal = cal; #ifdef TASKS_ENABLED appGUI->tsk = tsk; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED appGUI->cnt = cnt; #endif /* CONTACTS_ENABLED */ #ifdef NOTES_ENABLED appGUI->nte = nte; #endif /* NOTES_ENABLED */ appGUI->opt = opt; appGUI->run_date = utl_date_get_current_julian (); appGUI->run_time = utl_time_get_current_seconds (); appGUI->key_counter = 0; /* default values */ appGUI->hovering_over_link = FALSE; appGUI->hand_cursor = NULL; appGUI->regular_cursor = NULL; appGUI->gui_url_tag = NULL; appGUI->trayicon_popup_menu = NULL; appGUI->calendar_only = FALSE; appGUI->cal->datecal_bio = FALSE; appGUI->check_events = FALSE; appGUI->tiny_gui = FALSE; appGUI->save_status = 0; appGUI->print_font_size = 10; g_sprintf (appGUI->version, "%02d%02d%02d", atoi(VERSION_MAJOR), atoi(VERSION_MINOR), atoi(VERSION_MICRO)); appGUI->cal->last_selected_year = -1; appGUI->cal->date = utl_date_new_current (); appGUI->about_links_list = NULL; #ifdef TASKS_ENABLED appGUI->tsk->next_id = 1; appGUI->tsk->tasks_list_store = NULL; appGUI->tsk->notifications = NULL; appGUI->tsk->notifications_enable = FALSE; #endif /* TASKS_ENABLED */ #ifdef CONTACTS_ENABLED appGUI->cnt->contacts_uim_widget = NULL; appGUI->cnt->export_button = NULL; appGUI->cnt->output_file_entry = NULL; appGUI->cnt->write_flag = TRUE; #endif /* CONTACTS_ENABLED */ if (!(output_codeset = bind_textdomain_codeset(PACKAGE, NULL))) { output_codeset = g_strdup("UTF-8"); } else { output_codeset = g_strdup(output_codeset); } setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); if (bind_textdomain_codeset(PACKAGE, output_codeset) == NULL) { fprintf(stderr, "Error setting gettext output codeset to %s\n", output_codeset); g_free (output_codeset); goto finish; } textdomain (PACKAGE); g_free (output_codeset); if (argc == 2 && (!strncmp(argv[1], "--help", 6) || (argv[1][0] == '-' && argv[1][1] == '?'))) { fprintf(stderr, "\nOSMO v%s (%s)\n", VERSION, _("handy personal organizer")); fprintf(stderr, "Copyright (c) 2007-2011 Tomasz Maka \n\n"); } cmd_context = g_option_context_new(NULL); g_option_context_add_main_entries(cmd_context, cmd_options, TRANSLATION_DOMAIN); g_option_context_parse(cmd_context, &argc, &argv, NULL); g_option_context_free(cmd_context); appGUI->calendar_only = cmd_calendar; appGUI->check_events = cmd_check_events; appGUI->check_ndays_events = cmd_check_ndays_events; appGUI->config_path = cmd_cfg_path; /* FIXME: temporary disabled appGUI->tiny_gui = cmd_tiny_gui; */ if (prefs_get_config_filename (CONFIG_FILENAME, appGUI) == NULL) { fprintf(stderr, "%s\n", _("ERROR: Cannot create config files")); goto finish; } #if defined(BACKUP_SUPPORT) && defined(HAVE_LIBGRINGOTTS) backup_restore_run (appGUI); #endif /* BACKUP_SUPPORT & HAVE_LIBGRINGOTTS */ #ifndef WIN32 s_lock = g_new0 (struct flock, 1); s_lock->l_type = F_WRLCK; s_lock->l_whence = SEEK_SET; s_lock->l_start = 0; s_lock->l_len = 0; #endif /* WIN32 */ prefs_read_config (appGUI); gtk_init (&argc, &argv); #ifdef CONTACTS_ENABLED if (cmd_mutt_query) { query (appGUI, cmd_mutt_query); goto finish; } #endif /* CONTACTS_ENABLED */ if (appGUI->calendar_only == FALSE) { close(creat(prefs_get_config_filename (RUN_FLAG_FILE, appGUI), S_IRUSR | S_IWUSR)); /* create lock file */ fhandle = open(prefs_get_config_filename (RUN_FLAG_FILE, appGUI), O_RDWR); #ifndef WIN32 if (fhandle) { if (fcntl(fhandle, F_SETLK, s_lock) == -1) { close (fhandle); g_snprintf (tmpbuf, BUFFER_SIZE, "%s %s\n\n%s", _("Another copy of OSMO is already running."), _("Simultaneously use two or more copies of OSMO can be a cause of data loss."), _("Do you really want to continue?")); info_dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW_TOPLEVEL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, tmpbuf, NULL); gtk_window_set_title(GTK_WINDOW(info_dialog), _("Warning")); gtk_window_set_position(GTK_WINDOW(info_dialog), GTK_WIN_POS_CENTER); gtk_widget_show (info_dialog); response = gtk_dialog_run(GTK_DIALOG(info_dialog)); gtk_widget_destroy(info_dialog); if (response == GTK_RESPONSE_NO || response == GTK_RESPONSE_DELETE_EVENT) { goto finish; } } } #endif /* WIN32 */ } #ifdef HAVE_LIBNOTIFY #ifdef TASKS_ENABLED notify_init("Osmo notification"); #endif /* TASKS_ENABLED */ #endif /* HAVE_LIBNOTIFY */ if (appGUI->calendar_only != TRUE) { /* setup timer at 1000ms (1s) interval */ g_timeout_add (1000, (GtkFunction) time_handler, appGUI); } config.run_counter++; g_set_application_name ("Osmo " VERSION_MAJOR "." VERSION_MINOR "." VERSION_MICRO); gtk_window_set_default_icon_name ("osmo"); if (gui_create_window (appGUI) == TRUE) { gdk_threads_enter (); gtk_main (); gdk_threads_leave (); } if (appGUI->calendar_only == FALSE) { config.lastrun_date = utl_date_get_current_julian (); config.lastrun_time = utl_time_get_current_seconds (); } if (appGUI->check_events == FALSE) { prefs_write_config (appGUI); } if (fhandle && appGUI->calendar_only == FALSE) { #ifndef WIN32 s_lock->l_type = F_UNLCK; fcntl(fhandle, F_SETLK, s_lock); #endif /* WIN32 */ close (fhandle); } finish: g_date_free (appGUI->cal->date); utl_gui_url_remove_links (&appGUI->about_links_list, NULL); if (appGUI->hand_cursor != NULL) { gdk_cursor_unref (appGUI->hand_cursor); gdk_cursor_unref (appGUI->regular_cursor); } g_free (opt); #ifdef NOTES_ENABLED g_free (nte); #endif /* NOTES_ENABLED */ #ifdef CONTACTS_ENABLED g_free (cnt); #endif /* CONTACTS_ENABLED */ #ifdef TASKS_ENABLED g_free (tsk); #endif /* TASKS_ENABLED */ g_free (cal); g_free (appGUI); #ifndef WIN32 g_free (s_lock); #endif /* WIN32 */ return 0; } /*------------------------------------------------------------------------------*/ osmo-0.2.14/src/notes.h000664 001750 001750 00000004153 12561325524 014625 0ustar00pasppasp000000 000000 /* * Osmo - a handy personal organizer * * Copyright (C) 2007 Tomasz Maka * * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _NOTES_H #define _NOTES_H #include "gui.h" #define NOTES_NAME "osmo_notes" #define NOTES_ENTRIES_NAME "notes_entries" #define NOTES_CATEGORY_ENTRIES_NAME "category_entries" #define NOTES_DIRNAME "notes" #define NOTES_ENTRIES_FILENAME "notes_entries.xml" void notes_show_selector_editor (gint mode, GUI *appGUI); void gui_create_notes (GUI *appGUI); void update_notes_items (GUI *appGUI); void update_readonly_view (GUI *appGUI); void refresh_notes (GUI *appGUI); gboolean check_if_encrypted (gchar *filename, GUI *appGUI); void check_notes_type (GUI *appGUI); void store_note_columns_info (GUI *appGUI); void set_note_columns_width (GUI *appGUI); void editor_find_text_show_cb (GtkWidget *widget, gpointer appGUI); void clear_text_attributes_cb (GtkButton *button, gpointer appGUI); void editor_save_buffer_cb (GtkWidget *widget, gpointer appGUI); void editor_close_cb (GtkWidget *widget, gpointer appGUI); void open_url_links_cb (GtkButton *button, gpointer appGUI); void text_info_cb (GtkWidget *widget, gpointer appGUI); #endif /* _NOTES_H */ osmo-0.2.14/config.h.in000664 001750 001750 00000007571 12561325526 014571 0ustar00pasppasp000000 000000 /* config.h.in. Generated from configure.ac by autoheader. */ /* Defined if backup support is enabled */ #undef BACKUP_SUPPORT /* Contacts module enabled */ #undef CONTACTS_ENABLED /* Defined if doing a debug build */ #undef DEBUG_BUILD /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Definded to 1 if compile with gtkspell support */ #undef HAVE_GTKSPELL /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Defined to 1 if compile with libarchive support */ #undef HAVE_LIBARCHIVE /* Defined to 1 if compile with libgringotts support */ #undef HAVE_LIBGRINGOTTS /* Definded to 1 if compile with libical support */ #undef HAVE_LIBICAL /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H /* Definded to 1 if compile with libnotify support */ #undef HAVE_LIBNOTIFY /* Definded to 1 if compile with libnotify >= 0.7.0 support */ #undef HAVE_LIBNOTIFY7 /* Definded to 1 if compile with libwebkit support */ #undef HAVE_LIBWEBKIT /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have Pango-1.20 */ #undef HAVE_PANGO_1_20 /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* HTML render type */ #undef HTMLRENDER /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Notes module enabled */ #undef NOTES_ENABLED /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Defined if printing support is enabled */ #undef PRINTING_SUPPORT /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Tasks module enabled */ #undef TASKS_ENABLED /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `unsigned int' if does not define. */ #undef size_t osmo-0.2.14/Makefile.am000664 001750 001750 00000000152 12561325524 014564 0ustar00pasppasp000000 000000 SUBDIRS = src data po ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = README AUTHORS TRANSLATORS COPYING ChangeLog