[Debian-islamic-commits] [monajat] 02/12: Imported Upstream version 2.6.5
أحمد المحمودي (Ahmed El-Mahmoudy)
aelmahmoudy at sabily.org
Sat Apr 12 17:06:04 UTC 2014
This is an automated email from the git hooks/post-receive script.
aelmahmoudy-guest pushed a commit to branch master
in repository monajat.
commit dd30f9eb3bd012003b6ce944728f17d1ddf67794
Author: أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy at sabily.org>
Date: Thu Apr 10 17:54:06 2014 +0200
Imported Upstream version 2.6.5
---
Makefile | 100 ++
TODO | 4 +
convert-from-old.py | 26 +-
gen-mo.sh | 12 -
...tostart.desktop => monajat-autostart.desktop.in | 7 +-
monajat.spec | 142 +-
monajat/applet.py | 1437 +++++++++++---------
monajat/itl.py | 513 +++----
monajat/monajat.py | 297 ++--
monajat/sqlGenerator.py | 84 +-
monajat/utils.py | 66 +-
po/Makefile | 44 +
po/POTFILES.am | 3 +
po/ar.po | 103 +-
po/az.po | 110 +-
po/bn.po | 101 +-
po/bs.po | 189 +++
po/de.po | 110 +-
po/en_GB.po | 100 +-
po/es.po | 110 +-
po/fa.po | 99 +-
po/fr.po | 99 +-
po/he.po | 99 +-
po/hu.po | 99 +-
po/id.po | 118 +-
po/jv.po | 110 +-
po/ku.po | 99 +-
po/monajat.pot | 167 ---
po/ms.po | 112 +-
po/nds.po | 124 +-
po/nl.po | 110 +-
po/pt.po | 109 +-
po/ru.po | 110 +-
po/sv.po | 173 ++-
po/tr.po | 110 +-
po/tt.po | 99 +-
screenlets/Monajat/MonajatScreenlet.py | 544 ++++----
setup.py | 42 +-
update-pot.sh | 10 -
39 files changed, 3497 insertions(+), 2494 deletions(-)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..18c8b01
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,100 @@
+APPNAME := monajat
+VERSION := $(shell awk '/Version:/ { print $$2 }' $(APPNAME).spec)
+DESTDIR = /
+DATADIR = $(DESTDIR)/usr/share
+DOCDIR = $(DATADIR)/doc/$(APPNAME)-$(VERSION)
+XDGDIR = $(DESTDIR)/etc/xdg
+SOURCES = $(wildcard *.desktop.in)
+TARGETS = ${SOURCES:.in=}
+
+ECHO := echo
+NAKE := make
+PYTHON := python2
+INSTALL := install
+INTLTOOL_MERGE := intltool-merge
+RM := $(shell which rm | egrep '/' | sed 's/\s//g')
+
+
+all: $(TARGETS) db
+
+icons:
+ @for i in 96 72 64 48 36 32 24 22 16; do \
+ convert -background none monajat-data/$(APPNAME).svg -resize $${i}x$${i} $(APPNAME)-$${i}.png; \
+ done
+db:
+ @$(PYTHON) gen-db.py
+
+pos:
+ @$(MAKE) -C po all
+
+install: all
+ @$(ECHO) "*** Installing..."
+ @$(PYTHON) setup.py install -O2 --root $(DESTDIR)
+ @$(ECHO) "Copying: $(APPNAME)-autostart.desktop -> $(XDGDIR)/autostart/"
+ @$(INSTALL) -d $(XDGDIR)/autostart/
+ @$(INSTALL) -m 0644 $(APPNAME)-autostart.desktop $(XDGDIR)/autostart/
+ @$(INSTALL) -d $(DATADIR)
+ @cp -r screenlets $(DATADIR)
+ @$(INSTALL) -d $(DOCDIR)
+ @$(INSTALL) -d $(DATADIR)/icons/hicolor/scalable/apps;
+ @$(INSTALL) -m 0644 -D monajat-data/$(APPNAME).svg $(DATADIR)/icons/hicolor/scalable/apps/
+# @for i in 96 72 64 48 36 32 24 22 16; do \
+# $(INSTALL) -d $(DATADIR)/icons/hicolor/$${i}x$${i}/apps; \
+# $(INSTALL) -m 0644 -D $(APPNAME)-$${i}.png $(DATADIR)/icons/hicolor/$${i}x$${i}/apps/$(APPNAME).png; \
+# done
+ for i in README COPYING TODO NEWS; do\
+ $(ECHO) "Copying: $${i} -> $(DOCDIR)";\
+ $(INSTALL) -m 0644 -D $${i} $(DOCDIR)/$${i}; \
+ done
+
+uninstall:
+ @$(ECHO) "*** Uninstalling..."
+ @$(ECHO) "- Removing: $(XDGDIR)/autostart/$(APPNAME)-autostart.desktop"
+ @$(RM) -f $(XDGDIR)/autostart/$(APPNAME)-autostart.desktop
+ @$(ECHO) "- Removing: $(DOCDIR)"
+ @$(RM) -rf $(DOCDIR)
+ @$(ECHO) "- Removing: $(DESTDIR)/usr/share/locale/*/LC_MESSAGES/$(APPNAME).mo"
+ @$(RM) -f $(DESTDIR)/usr/share/locale/*/LC_MESSAGES/$(APPNAME).mo
+ @$(ECHO) "- Removing: $(DESTDIR)/usr/bin/$(APPNAME)"
+ @$(RM) -f $(DESTDIR)/usr/bin/$(APPNAME)
+ @$(ECHO) "- Removing: $(DESTDIR)/usr/lib/python*/site-packages/$(APPNAME)"
+ @$(RM) -rf $(DESTDIR)/usr/lib/python*/site-packages/$(APPNAME)
+ @$(ECHO) "- Removing: $(DESTDIR)/usr/lib/python*/site-packages/$(APPNAME)*"
+ @$(RM) -r $(DESTDIR)/usr/lib/python*/site-packages/$(APPNAME)*
+ @$(ECHO) "- Removing: $(DATADIR)/screenlets"
+ @$(RM) -rf $(DATADIR)/screenlets
+ @$(ECHO) "- Removing: $(DATADIR)/$(APPNAME)"
+ @$(RM) -rf $(DATADIR)/$(APPNAME)
+ @$(ECHO) "- Removing: $(DATADIR)/icons/hicolor/scalable/apps/$(APPNAME).svg"
+ @$(RM) -f $(DATADIR)/icons/hicolor/scalable/apps/$(APPNAME).svg
+ @$(ECHO) "- Removing: $(DATADIR)/icons/hicolor/*/apps/$(APPNAME).png"
+ @$(RM) -f $(DATADIR)/icons/hicolor/*/apps/$(APPNAME).png;
+ @$(ECHO) "- Removing: $(DESTDIR)/usr/bin/$(APPNAME)-*"
+ @$(RM) -f $(DESTDIR)/usr/bin/$(APPNAME)-*
+
+
+%.desktop: %.desktop.in pos
+ @$(ECHO) "*** Generating Database..."
+ @$(INTLTOOL_MERGE) -d po $< $@
+
+clean_restor_pos:
+ @make clean
+ @$(ECHO) "*** Retoring pos..."
+ @git checkout po/* 2>/dev/null || :
+
+clean:
+ @$(ECHO) "*** Cleaning..."
+ @$(MAKE) -C po clean
+ @$(ECHO) "- Removing: $(TARGETS)"
+ @$(RM) -f $(TARGETS)
+ @$(ECHO) "- Removing: locale build"
+ @$(RM) -rf locale build
+ @$(ECHO) "- Removing: *.pyc"
+ @$(RM) -f *.pyc
+ @$(ECHO) "- Removing: */*.pyc"
+ @$(RM) -f */*.pyc
+ @$(ECHO) "- Removing: $(APPNAME)-*.png"
+ @$(RM) -f $(APPNAME)-*.png
+ @$(ECHO) "- Removing: monajat-data/data.db"
+ @$(RM) -f monajat-data/data.db
+
diff --git a/TODO b/TODO
index f8a2eea..b7e102d 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,6 @@
+
+- rewrite monajat screenlets ( may use gtk3 + css )
+
- display which city
- if caps got buttons and html but no hyperlinks show a button to display reference
- the phrase "it's merits" should be in the language choosed by user not desktop language - FIXMED
@@ -18,3 +21,4 @@
- rematch the Hadith numbers with the one from the publisher we want to use.
- put links to web sites having the full text of the hadith
+
diff --git a/convert-from-old.py b/convert-from-old.py
index 577bfd2..4674ace 100755
--- a/convert-from-old.py
+++ b/convert-from-old.py
@@ -13,22 +13,22 @@ tw=textwrap.TextWrapper()
tw.break_on_hyphens=False
for i in glob('doa/??/*.xml'):
- fo=i[:-3].lower()+'txt'
- lang=i[4:6]
- r=os.path.basename(i)[0].upper()
- n=digits_re.findall(i)
- c=open(i,"rt").read().decode('utf-8').replace(u'\u200F','')
- l="\n".join(map(lambda i: space_re.sub(' ',i).strip(),lines_re.findall(c))).strip()
- # d is ignored because we want unified d
- d=" ".join(map(lambda i: space_re.sub(' ',i).strip(),desc_re.findall(c))).strip()
+ fo=i[:-3].lower()+'txt'
+ lang=i[4:6]
+ r=os.path.basename(i)[0].upper()
+ n=digits_re.findall(i)
+ c=open(i,"rt").read().decode('utf-8').replace(u'\u200F','')
+ l="\n".join(map(lambda i: space_re.sub(' ',i).strip(),lines_re.findall(c))).strip()
+ # d is ignored because we want unified d
+ d=" ".join(map(lambda i: space_re.sub(' ',i).strip(),desc_re.findall(c))).strip()
- t="\n".join(map(lambda p: tw.fill(p), l.split('\n\n')))
- if n: D=':'.join(n)
- else: D=d
- o="""@lang=%s
+ t="\n".join(map(lambda p: tw.fill(p), l.split('\n\n')))
+ if n: D=':'.join(n)
+ else: D=d
+ o="""@lang=%s
@ref=%s
@id=%s
@text
%s""" % (lang,r,D,t)
- open(fo,"wt").write(o.encode('utf-8'))
+ open(fo,"wt").write(o.encode('utf-8'))
diff --git a/gen-mo.sh b/gen-mo.sh
deleted file mode 100755
index ae163cf..0000000
--- a/gen-mo.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/bash
-pushd po
-for i in *.po
-do
-po=$i
-msgmerge "$po" "monajat.pot" > "$po.tmp" && \
-mv "$po.tmp" "$po"
-mkdir -p "../locale/${po/.po/}/LC_MESSAGES/"
-msgfmt -o "../locale/${po/.po/}/LC_MESSAGES/monajat.mo" "$po"
-done
-popd
-
diff --git a/monajat-autostart.desktop b/monajat-autostart.desktop.in
similarity index 51%
rename from monajat-autostart.desktop
rename to monajat-autostart.desktop.in
index 974cfff..449344d 100644
--- a/monajat-autostart.desktop
+++ b/monajat-autostart.desktop.in
@@ -1,8 +1,7 @@
[Desktop Entry]
-Name=Monajat Applet for supplications
-Name[ar]=بريمج مناجاة للأذكار
-Comment=Monajat in system tray icon
-Comment[ar]=بريمج مناجاة للأذكار
+Encoding=UTF-8
+_Name=Monajat Applet for supplications
+_Comment=Monajat in system tray icon
Exec=/usr/bin/monajat-applet --auto
Terminal=false
Type=Application
diff --git a/monajat.spec b/monajat.spec
index 6528966..c245ba8 100644
--- a/monajat.spec
+++ b/monajat.spec
@@ -1,60 +1,73 @@
-Name: monajat
-Summary: Monajat Islamic Supplications
-URL: http://git.ojuba.org/cgit/monajat/about/
-Version: 2.6.3
-Release: 1%{?dist}
-Source0: http://git.ojuba.org/cgit/monajat/snapshot/%{name}-%{version}.tar.bz2
-License: GPLv2
-Group: System Environment/Base
-BuildArch: noarch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: gettext
-BuildRequires: python, python-setuptools
+%global owner ojuba-org
+%global commit #Write commit number here
+
+Name: monajat
+Summary: Monajat Islamic Supplications
+URL: http://ojuba.org
+Version: 2.6.5
+Release: 2%{?dist}
+Source: https://github.com/%{owner}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
+License: WAQFv2 and GPLv2
+Group: System Environment/Base
+BuildArch: noarch
+Requires: python, libitl
+Requires: libitl
+Requires: pygobject3 >= 3.0.2
+BuildRequires: gettext
+BuildRequires: python
+BuildRequires: python-setuptools
+BuildRequires: python2-devel
# /usr/share/gnome-shell/extensions/Monajat at ojuba.org
-%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
-
%description
Monajat Islamic Supplications
%package database
-Group: System Environment/Base
-Summary: Monajat Islamic Supplications database
-BuildArch: noarch
+Group: System Environment/Base
+Summary: Monajat Islamic Supplications database
+BuildArch: noarch
+
%description database
Monajat Islamic Supplications
This is the database used by monajat.
-%package python
-Group: System Environment/Base
-Summary: Monajat Islamic Supplications
-BuildArch: noarch
-Requires: python, %{name}-database, libitl
-%description python
+%package -n python-monajat
+Group: System Environment/Base
+Summary: Monajat Islamic Supplications
+BuildArch: noarch
+Requires: python
+Requires: %{name}-database
+Requires: libitl
+
+%description -n python-monajat
Monajat Islamic Supplications
This is the python monajat library needed by all monajat front ends
%package applet
-Summary: Monajat Islamic Supplications for Desktop Tray Applet
-Group: System Environment/Base
-BuildArch: noarch
-Requires: %{name}-python
+Summary: Monajat Islamic Supplications for Desktop Tray Applet
+Group: System Environment/Base
+BuildArch: noarch
+Requires: python-monajat
# TODO: is it better to say gnome-python2-extras ?
-Requires: pygtk2, notify-python, desktop-notification-daemon
+Requires: pygtk2
+Requires: notify-python
+Requires: desktop-notification-daemon
+
%description applet
Monajat Islamic Supplications
This package contains the Desktop Tray Applet
%package mod
-Summary: Monajat Islamic Supplications for console
-Group: System Environment/Base
-BuildArch: noarch
-Requires: %{name}-python
+Summary: Monajat Islamic Supplications for console
+Group: System Environment/Base
+BuildArch: noarch
+Requires: python-monajat
+
%description mod
Monajat Islamic Supplications
@@ -62,60 +75,46 @@ This package contains a console application that can be used in issue message
or in the profile
%package screenlets
-Summary: Monajat Islamic Supplications for Screenlets
-Group: System Environment/Base
-BuildArch: noarch
-Requires: screenlets
-Requires: %{name}-python
+Summary: Monajat Islamic Supplications for Screenlets
+Group: System Environment/Base
+BuildArch: noarch
+Requires: screenlets
+Requires: python-monajat
+
%description screenlets
Monajat Islamic Supplications
This package contains screenlets version
%prep
-%setup -q
+%setup -q -n %{name}-%{commit}
+
%build
-./update-pot.sh
-./gen-mo.sh
+make %{?_smp_mflags}
%install
-rm -rf $RPM_BUILD_ROOT
-
-# ./gen-db.py # should be done by setup.py
-
-%{__python} setup.py install \
- --root=$RPM_BUILD_ROOT \
- --optimize=2
-rm $RPM_BUILD_ROOT/%{python_sitelib}/%{name}/sql*.py*
-mkdir -p $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/scalable/apps/
-ln -s ../../../../%{name}/%{name}.svg $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
-
-# install the screenlets
-mkdir -p $RPM_BUILD_ROOT/%{_datadir}/
-cp -r screenlets $RPM_BUILD_ROOT/%{_datadir}/
-
-%clean
-rm -rf $RPM_BUILD_ROOT
+%makeinstall DESTDIR=$RPM_BUILD_ROOT
%files database
%{_datadir}/%{name}/data.db
-%files python
-%doc README COPYING TODO
-%{python_sitelib}/%{name}/__init__.py*
-%{python_sitelib}/%{name}/%{name}.py*
-%{python_sitelib}/%{name}/itl.py*
-%{python_sitelib}/*.egg-info
+%files -n python-monajat
+%doc README COPYING TODO NEWS
+%{_defaultdocdir}/%{name}-%{version}/*
+%{python2_sitelib}/%{name}/*.py*
+%{python2_sitelib}/*.egg-info
%{_datadir}/locale/*/*/*.mo
%files applet
-%{python_sitelib}/%{name}/applet.py*
-%{python_sitelib}/%{name}/utils.py*
+#%{python2_sitelib}/%{name}/applet.py*
+#%{python2_sitelib}/%{name}/utils.py*
%{_bindir}/%{name}-applet
%{_datadir}/%{name}/cities.db
%{_datadir}/%{name}/athan.ogg
%{_datadir}/%{name}/%{name}.svg
+
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
+#%{_datadir}/icons/hicolor/*/apps/%{name}.png
/etc/xdg/autostart/*
%files mod
@@ -125,6 +124,18 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/screenlets/*
%changelog
+* Sun Feb 16 2014 Mosaab Alzoubi <moceap at hotmail.com> - 2.6.5-2
+- General Revision.
+
+* Sat Jul 23 2011 Muayyad Saleh Alsadi <alsadi at ojuba.org> - 2.6.4-1
+- use notify object per notification
+- fix unicode
+- fix installation files
+- cities search fix
+- speed up search cities
+- port SoundPlayer to Gst
+- Port to gtk3
+
* Sat Jul 23 2011 Muayyad Saleh Alsadi <alsadi at ojuba.org> - 2.6.0-1
- play Athan audio file
@@ -151,4 +162,3 @@ rm -rf $RPM_BUILD_ROOT
* Thu Aug 6 2009 Muayyad Saleh AlSadi <alsadi at ojuba.org> - 0.1.0-1
- initial packing
-
diff --git a/monajat/applet.py b/monajat/applet.py
index bb5e750..2c49b6d 100644
--- a/monajat/applet.py
+++ b/monajat/applet.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# -*- Mode: Python; py-indent-offset: 4 -*-
import os, os.path
import itl
from monajat import Monajat
@@ -6,647 +7,853 @@ from utils import init_dbus
import locale, gettext
import re
-import glib
-import gtk
-import pynotify
+from gi.repository import Gtk, Gdk, Notify, Gst, GObject
import cgi
import math
import json
import time
-import gst
# in gnome3 ['actions', 'action-icons', 'body', 'body-markup', 'icon-static', 'persistence']
# in gnome2 ['actions', 'body', 'body-hyperlinks', 'body-markup', 'icon-static', 'sound']
# "resident"
-class SoundPlayer:
- def __init__(self, fn=None, change_play_status=None):
- if not fn: fn=""
- self.fn=fn
- self.change_play_status=change_play_status
- self.gst_player = gst.element_factory_make("playbin2", "player")
- self.gst_player.set_property("uri", "file://" + fn)
- bus = self.gst_player.get_bus()
- bus.add_signal_watch()
- bus.connect("message", self.on_message)
+class SoundPlayer(object):
+ def __init__(self, fn = "", change_play_status = None):
+ """ SoundPlayer Using gst """
+ self.fn = fn
+ self.change_play_status = change_play_status
+ Gst.init_check(None)
+ self.gst_player = Gst.ElementFactory.make("playbin", "Ojuba-SoundPlayer")
+ self.gst_player.set_property("uri", "file://" + fn)
+ bus = self.gst_player.get_bus()
+ bus.add_signal_watch()
+ #bus.connect("message", self.on_message)
+ bus.connect('message::eos', self.on_message)
+ bus.connect('message::error', self.on_message)
+
+ def play(self):
+ fn = self.fn
+ if fn and os.path.isfile(fn):
+ self.gst_player.set_state(Gst.State.PLAYING)
- def play(self):
- fn=self.fn
- if fn and os.path.isfile(fn):
- self.gst_player.set_state(gst.STATE_PLAYING)
-
- def stop(self):
- self.gst_player.set_state(gst.STATE_NULL)
-
- def set_filename(self,fn):
- if not fn: fn=""
- self.fn=fn
- self.gst_player.set_property("uri", "file://" + fn)
+ def stop(self):
+ self.gst_player.set_state(Gst.State.NULL)
- def on_message(self, bus, message):
- t = message.type
- # print t
- if t == gst.MESSAGE_EOS:
- if self.change_play_status: self.change_play_status()
- self.gst_player.set_state(gst.STATE_NULL)
- elif t == gst.MESSAGE_ERROR:
- self.gst_player.set_state(gst.STATE_NULL)
- err, debug = message.parse_error()
- print "Error: %s" % err, debug
-
-normalize_tb={
+ def set_filename(self,fn):
+ if not fn or not os.path.isfile(fn):
+ return
+ self.fn = fn
+ self.gst_player.set_property("uri", "file://" + fn)
+
+ def on_message(self, bus, message):
+ if message:
+ print message
+ self.gst_player.set_state(Gst.State.NULL)
+
+normalize_tb = {
65: 97, 66: 98, 67: 99, 68: 100, 69: 101, 70: 102, 71: 103, 72: 104, 73: 105, 74: 106, 75: 107, 76: 108, 77: 109, 78: 110, 79: 111, 80: 112, 81: 113, 82: 114, 83: 115, 84: 116, 85: 117, 86: 118, 87: 119, 88: 120, 89: 121, 90: 122,
1600: None, 1569: 1575, 1570: 1575, 1571: 1575, 1572: 1575, 1573: 1575, 1574: 1575,
-1577: 1607, # teh marboota -> haa
+1577: 1607, # teh marboota -> haa
1611: None, 1612: None, 1613: None, 1614: None, 1615: None, 1616: None, 1617: None, 1618: None, 1609: 1575}
-
-class ConfigDlg(gtk.Dialog):
- def __init__(self, applet):
- gtk.Dialog.__init__(self)
- self.applet=applet
- self.m=applet.m
- self.set_size_request(300,400)
- self.set_resizable(False) # FIXME: reconsider this
- self.connect('delete-event', lambda w,*a: w.hide() or True)
- self.connect('response', lambda w,*a: w.hide() or True)
- self.set_title(_('Monajat Configuration'))
- self.add_button(_('Cancel'), gtk.RESPONSE_CANCEL)
- self.add_button(_('Save'), gtk.RESPONSE_OK)
- tabs=gtk.Notebook()
- self.get_content_area().add(tabs)
- vb=gtk.VBox()
- tabs.append_page(vb, gtk.Label(_('Generic')))
- self.auto_start = b = gtk.CheckButton(_("Auto start"))
- self.auto_start.set_active(not os.path.exists(self.applet.skip_auto_fn))
- vb.pack_start(b, False, False, 2)
- self.show_merits = b = gtk.CheckButton(_("Show merits"))
- self.show_merits.set_active(self.applet.conf['show_merits'])
- vb.pack_start(b, False, False, 2)
- hb = gtk.HBox()
- vb.pack_start(hb, False, False, 2)
- hb.pack_start(gtk.Label(_('Language:')), False, False, 2)
- self.lang = b = gtk.combo_box_new_text()
- hb.pack_start(b, False, False, 2)
- selected = 0
- for i,j in enumerate(self.applet.m.langs):
- b.append_text(j)
- if self.m.lang==j: selected=i
- b.set_active(selected)
-
- hb = gtk.HBox()
- vb.pack_start(hb, False, False, 2)
- hb.pack_start(gtk.Label(_('Time:')), False, False, 2)
- hb.pack_start(gtk.HBox(), True, True, 2)
- self.timeout = b = gtk.SpinButton(gtk.Adjustment(5, 0, 90, 5, 5))
- b.set_value(self.applet.conf['minutes'])
- hb.pack_start(b, False, False, 2)
- hb.pack_start(gtk.Label(_('minutes')), False, False, 2)
-
- vb=gtk.VBox()
- tabs.append_page(vb, gtk.Label(_('Location')))
-
- hb=gtk.HBox()
- vb.pack_start(hb, False, False, 2)
- e=gtk.Entry()
- e.connect('activate', self._city_search_cb)
- hb.pack_start(e, False, False, 2)
-
- s = gtk.TreeStore(str, bool, int, str) # label, is_city, id, normalized label
- self.cities_tree=tree=gtk.TreeView(s)
- col=gtk.TreeViewColumn('Location', gtk.CellRendererText(), text=0)
- col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
- tree.insert_column(col, -1)
- tree.set_enable_search(True)
- tree.set_search_column(3)
- tree.set_headers_visible(False)
- tree.set_tooltip_column(0)
-
- scroll=gtk.ScrolledWindow()
- scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
- scroll.add(tree)
- vb.pack_start(scroll, True, True, 2)
-
- self.sound_player = SoundPlayer(self.applet.conf['athan_media_file'], self.change_play_status)
- vb=gtk.VBox()
- tabs.append_page(vb, gtk.Label(_('Notification')))
- hb=gtk.HBox()
- vb.pack_start(hb, False, True, 3)
- hb.pack_start(gtk.Label(_('Sound:')), False, True, 2)
- self.sound_file = b = gtk.FileChooserButton(_('Choose Athan media file'))
- self.sound_file.set_filename(self.applet.conf['athan_media_file'])
- ff=gtk.FileFilter()
- ff.set_name(_('Sound Files'))
- ff.add_pattern('*.ogg')
- ff.add_pattern('*.mp3')
- b.add_filter(ff)
- ff=gtk.FileFilter()
- ff.set_name(_('All files'))
- ff.add_pattern('*')
- b.add_filter(ff)
- self.play_b=pb=gtk.Button(_('Play'))
- pb.connect('clicked', self.play_cb)
- hb.pack_end(pb, False, False, 2)
- hb.pack_end(b, True, True, 5)
+def to_uincode(Str):
+ try:
+ Str = str(Str)
+ except UnicodeEncodeError:
+ pass
+ if type(Str) == unicode:
+ return Str.translate(normalize_tb)
+ else:
+ return Str.decode('utf-8').translate(normalize_tb)
+
+class ConfigDlg(Gtk.Dialog):
+ def __init__(self, applet):
+ Gtk.Dialog.__init__(self)
+ self.applet = applet
+ self.m = applet.m
+ self.cities_ls = self.get_cities()
+ #self.set_size_request(300,400)
+ self.set_resizable(False) # FIXME: reconsider this
+ self.connect('delete-event', lambda w,*a: w.hide() or True)
+ self.connect('response', lambda w,*a: w.hide() or True)
+ self.set_title(_('Monajat Configuration'))
+ self.add_button(_('Cancel'), Gtk.ResponseType.CANCEL)
+ self.add_button(_('Save'), Gtk.ResponseType.OK)
+ tabs = Gtk.Notebook()
+ tabs.set_size_request(-1,350)
+ self.get_content_area().add(tabs)
+ vb = Gtk.VBox(False, 2)
+ tabs.append_page(vb, Gtk.Label(_('Generic')))
+ self.auto_start = b = Gtk.CheckButton(_("Auto start"))
+ self.auto_start.set_active(not os.path.exists(self.applet.skip_auto_fn))
+ vb.pack_start(b, False, False, 2)
+ self.show_merits = b = Gtk.CheckButton(_("Show merits"))
+ self.show_merits.set_active(self.applet.conf['show_merits'])
+ vb.pack_start(b, False, False, 2)
+ hb = Gtk.HBox()
+ vb.pack_start(hb, False, False, 2)
+ hb.pack_start(Gtk.Label(_('Language:')), False, False, 2)
+ self.lang = b = Gtk.ComboBoxText.new()
+ hb.pack_end(b, False, False, 2)
+ selected = 0
+ for i,j in enumerate(self.applet.m.langs):
+ b.append_text(j)
+ if self.m.lang == j:
+ selected=i
+ b.set_active(selected)
+
+ hb = Gtk.HBox()
+ vb.pack_start(hb, False, False, 2)
+ hb.pack_start(Gtk.Label(_('Time:')), False, False, 2)
+ hb.pack_start(Gtk.HBox(), True, True, 2)
+ adj = Gtk.Adjustment(5, 0, 90, 5, 5)
+ self.timeout = b = Gtk.SpinButton()
+ b.set_adjustment(adj)
+ b.set_value(self.applet.conf['minutes'])
+ hb.pack_start(b, False, False, 2)
+ hb.pack_start(Gtk.Label(_('minutes')), False, False, 2)
+
+ vb = Gtk.VBox(False, 2)
+ tabs.append_page(vb, Gtk.Label(_('Location')))
+
+ hb = Gtk.HBox()
+ hb.pack_start(Gtk.Label(_('Current city:')), False, False, 2)
+ vb.pack_start(hb, False, False, 6)
+ hb = Gtk.HBox()
+ vb.pack_start(hb, False, False, 2)
+ # read cuurent city full name
+ c = self.get_city('id', self.applet.conf['city_id'])
+ if c:
+ c = c[0]
+ self.user_city = c['name']
+ else:
+ c = {}
+ c['country'] = _('Please, Secify your city')
+ c['state'] = ''
+ c['name'] = ''
+ c['locale_name'] = ''
+ self.user_city = 'Makka'
+ # set locale_name='' instead of None
+ c['locale_name'] = c['locale_name'] or ''
+ cl = '%(country)s - %(state)s - %(name)s %(locale_name)s' % c
+ self.cur_city_l = l = Gtk.Entry()
+ l.set_editable(False)
+ l.set_text(cl)
+ hb.pack_start(l, True, True, 2)
+
+ hb = Gtk.HBox()
+ hb.pack_start(Gtk.Label(_('Change city:')), False, False, 2)
+ vb.pack_start(hb, False, False, 8)
+ self.Search_e = e = Gtk.Entry()
+ e.connect('activate', self._city_search_cb)
+ hb.pack_start(e, True, True, 2)
+
+ s = Gtk.TreeStore(str, bool, int, str) # label, is_city, id, normalized label
+ self.cities_tree = tree = Gtk.TreeView(s)
+ col = Gtk.TreeViewColumn('Location', Gtk.CellRendererText(), text=0)
+ col.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
+ tree.insert_column(col, -1)
+ tree.set_enable_search(True)
+ tree.set_search_column(3)
+ tree.set_headers_visible(False)
+ tree.set_tooltip_column(0)
+
+ scroll = Gtk.ScrolledWindow()
+ scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
+ scroll.add(tree)
+ vb.pack_start(scroll, True, True, 2)
+ self.sound_player = SoundPlayer(self.applet.conf['athan_media_file'],
+ self.change_play_status)
+ vb = Gtk.VBox(False, 2)
+ tabs.append_page(vb, Gtk.Label(_('Notification')))
+ hb = Gtk.HBox()
+ vb.pack_start(hb, False, True, 3)
+ hb.pack_start(Gtk.Label(_('Sound:')), False, True, 2)
+ self.sound_file = b = Gtk.FileChooserButton(_('Choose Athan media file'))
+
+ if os.path.isfile(self.applet.conf['athan_media_file']):
+ self.sound_file.set_filename(self.applet.conf['athan_media_file'])
+ ff = Gtk.FileFilter()
+ ff.set_name(_('Sound Files'))
+ ff.add_pattern('*.ogg')
+ ff.add_pattern('*.mp3')
+ b.add_filter(ff)
+ ff = Gtk.FileFilter()
+ ff.set_name(_('All files'))
+ ff.add_pattern('*')
+ b.add_filter(ff)
+ self.play_b = pb = Gtk.Button(_('Play'))
+ pb.connect('clicked', self.play_cb)
+ hb.pack_end(pb, False, False, 2)
+ hb.pack_end(b, True, True, 5)
+
+ hb = Gtk.HBox()
+ vb.pack_start(hb, False, False, 3)
+ self.notify_before_b = b = Gtk.CheckButton(_("Notify before"))
+ adj = Gtk.Adjustment(5, 5, 20, 5, 5)
+ self.notify_before_t = t = Gtk.SpinButton()
+ t.set_adjustment(adj)
+ b.set_active(self.applet.conf['notify_before_min'] != 0)
+ t.set_value(self.applet.conf['notify_before_min'])
+ hb.pack_start(b,True,True,2)
+ hb.pack_start(t,False,False,2)
+ hb.pack_start(Gtk.Label(_('minutes')),False,False,2)
+ self._city_search_cb(self.Search_e, self.user_city)
+ #self._fill_cities()
+
+ def change_play_status(self, status = None):
+ if status == None:
+ status = self.sound_player.gst_player.get_state()
+ if status == Gst.State.PLAYING:
+ self.sound_file.set_sensitive(False)
+ self.play_b.set_property('label', _('Stop'))
+ else:
+ self.sound_file.set_sensitive(True)
+ self.play_b.set_property('label', _('Play'))
+
+ def play_cb(self, b):
+ fn = self.sound_file.get_filename()
+ if not fn:
+ fn = ''
+ if b.get_label() == _('Play'):
+ if not os.path.isfile(fn):
+ return
+ self.change_play_status(Gst.State.PLAYING)
+ self.sound_player.set_filename(fn)
+ self.sound_player.play()
+ else:
+ self.change_play_status(Gst.State.NULL)
+ self.sound_player.stop()
+
+ def get_cities(self):
+ rows = self.m.cities_c.execute('SELECT * FROM cities')
+ rows = map(lambda a: dict(a), rows.fetchall())
+ return rows
+
+ def get_city(self, f='id', v=''):
+ '''
+ filter self.cities_ls
+ '''
+ return filter(lambda a: a[f] == v, self.cities_ls)
+
+ def _city_search_cb(self, e, v = None):
+ e.modify_fg(Gtk.StateType.NORMAL, None)
+ if v:
+ txt = v
+ else:
+ txt = e.get_text().strip().lower()
+ txt = to_uincode(txt)
+ if self.user_city == txt:
+ self._search_cb(txt)
+ return
+ else:
+ self.user_city = txt
+ rows = filter(lambda a: txt in str(a['name']).lower() or \
+ txt in to_uincode(a['locale_name']) or \
+ txt in str(a['state']).lower() or \
+ txt in str(a['country']).lower(), self.cities_ls)
+
+ country, country_i = None, None
+ state, state_i = None, None
+ city_path = None
+ s = self.cities_tree.get_model()
+ s.clear()
+ for r in rows:
+ #r = dict(R)
+ if country != r['country']:
+ country_i = s.append(None,
+ (r['country'],
+ False,
+ 0,
+ r['country'].lower().translate(normalize_tb)))
+ if state != r['state']:
+ state_i = s.append(country_i,(r['state'],
+ False,
+ 0,
+ r['state'].lower().translate(normalize_tb)))
+ country = r['country']
+ state = r['state']
+ if r['locale_name']:
+ city = u'%s - %s' % (r['name'], r['locale_name'])
+ else:
+ city = r['name']
+ city_i = s.append(state_i,(city,
+ True,
+ r['id'],
+ city.lower().translate(normalize_tb)))
+ self._search_cb(txt)
- hb = gtk.HBox()
- vb.pack_start(hb, False, False, 3)
- self.notify_before_b = b = gtk.CheckButton(_("Notify before"))
- self.notify_before_t = t = gtk.SpinButton(gtk.Adjustment(5, 5, 20, 5, 5))
- b.set_active(self.applet.conf['notify_before_min']!=0)
- t.set_value(self.applet.conf['notify_before_min'])
- hb.pack_start(b,True,True,2)
- hb.pack_start(t,False,False,2)
- hb.pack_start(gtk.Label(_('minutes')),False,False,2)
+ def _search_cb(self, txt):
+ # FIXME: if same as last successful search text don't update first_match_path
+ # FIXME: and if self.city_found same as first_match_path highlight in red
+ # we can use self.search_last_path to fix search
+ if type(txt) == unicode:
+ txt = txt.encode('utf-8')
+ e = self.Search_e
+ e.modify_fg(Gtk.StateType.NORMAL, None)
+ tree = self.cities_tree
+ store, p = tree.get_selection().get_selected_rows()
+ if p:
+ current = p[0]
+ else:
+ current = None
+ limit = None
+ def tree_walk_cb(model, path, i, *a):
+ if current and path <= current:
+ return False
+ if limit and path >= limit:
+ return True
+ f = txt in store.get_value(i, 3)
+ if f:
+ tree.expand_to_path(path)
+ tree.scroll_to_cell(path)
+ tree.get_selection().select_iter(i)
+ self.city_found = path
+ return True
+ self.city_found = None
+ store.foreach(tree_walk_cb, tree)
+ if not self.city_found:
+ limit = current
+ current = None
+ store.foreach(tree_walk_cb, tree)
+ if not self.city_found:
+ e.modify_fg(Gtk.StateType.NORMAL, Gdk.color_parse("#FF0000"))
+
+ def _fill_cities(self):
+ # FIXME: rerwite one fuction for fill cities and search, to reduce time
+ tree = self.cities_tree
+ s = tree.get_model()
+ rows = self.m.cities_c.execute('SELECT * FROM cities')
+ country, country_i = None, None
+ state, state_i = None, None
+ city_path = None
+ for R in rows:
+ r = dict(R)
+ if country != r['country']:
+ country_i = s.append(None,
+ (r['country'],
+ False,
+ 0,
+ r['country'].lower().translate(normalize_tb)))
+ if state != r['state']:
+ state_i = s.append(country_i,(r['state'],
+ False,
+ 0,
+ r['state'].lower().translate(normalize_tb)))
+ country = r['country']
+ state = r['state']
+ if r['locale_name']:
+ city=u'%s - %s' % (r['name'], r['locale_name'])
+ else:
+ city=r['name']
+ city_i = s.append(state_i,(city,
+ True,
+ r['id'],
+ city.lower().translate(normalize_tb)))
+ if self.applet.conf.get('city_id',None) == r['id']:
+ city_path = s.get_path(city_i)
+ if city_path:
+ tree.expand_to_path(city_path)
+ tree.get_selection().select_path(city_path)
+ tree.scroll_to_cell(city_path)
+
+ def run(self, *a, **kw):
+ self.auto_start.set_active(not os.path.exists(self.applet.skip_auto_fn))
+ return Gtk.Dialog.run(self, *a, **kw)
+
+class applet(object):
+ locale_re = re.compile('^[a-z]+_[A-Z]+$', re.I)
+ skip_auto_fn = os.path.expanduser('~/.monajat-applet-skip-auto')
- self._fill_cities()
+ def _init_locale(self, lang):
+ try:
+ l = locale.setlocale(locale.LC_MESSAGES, (lang, 'UTF-8'))
+ except:
+ pass
+ else:
+ if l:
+ os.environ['LC_MESSAGES'] = l
+ return
+ for l in locale.locale_alias.keys():
+ if not l.startswith(lang+'_') or not self.locale_re.match(l):
+ continue
+ l, c = l.split('_',1)
+ l = l + "_" + c.upper() + ".UTF-8"
+ try:
+ locale.setlocale(locale.LC_MESSAGES, l)
+ except locale.Error:
+ pass
+ else:
+ os.environ['LC_MESSAGES'] = l
+ return
+
+ def __init__(self):
+ self.conf_dlg = None
+ self.chngbody = time.time()
+ self.minutes_counter = 0
+ self.m = Monajat() # you may pass width like 20 chars
+ self.sound_player = SoundPlayer()
+ self.load_conf()
+ self.prayer_items = []
+ kw = self.conf_to_prayer_args()
+ self.prayer = itl.PrayerTimes(**kw)
+ self._init_locale(self.m.lang)
+ ld = os.path.join(self.m.get_prefix(), '..', 'locale')
+ gettext.install('monajat', ld, unicode=0)
+ self.ptnames = [_("Fajr"),
+ _("Sunrise"),
+ _("Dhuhr"),
+ _("Asr"),
+ _("Maghrib"),
+ _("Isha'a")]
+ self.clip1 = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
+ self.clip2 = Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY)
+ self.init_menu()
+
+
+ self.statusicon = Gtk.StatusIcon ()
+ self.statusicon.connect('popup-menu',self.popup_cb)
+ self.statusicon.connect('activate',self.next_cb)
+ self.statusicon.set_title(_("Monajat"))
+ self.statusicon.set_from_file(os.path.join(self.m.get_prefix(),'monajat.svg'))
+
+ Notify.init(_("Monajat"))
+ self.init_notify_cb()
+ print self.notifycaps
+
+ self.notif_last_athan = -1
+ self.next_athan_delta = -1
+ self.next_athan_i = -1
+ self.last_athan = -1
+ self.last_time = 0
+ self.first_notif_done = False
+ self.start_time = time.time()
+ GObject.timeout_add(1, self.timer_cb)
+
+ def init_notify_cb(self):
+ self.notifycaps = Notify.get_server_caps ()
+ self.notify = Notify.Notification()
+ self.notify.set_property('icon-name', os.path.join(self.m.get_prefix(),'monajat.svg'))
+ self.notify.set_property('summary', _("Monajat") )
+ if 'actions' in self.notifycaps:
+ self.notify.add_action("previous", _("Back"), self.notify_cb, None)
+ self.notify.add_action("next", _("Forward"), self.notify_cb, None)
+ self.notify.add_action("copy", _("copy"), self.notify_cb, None)
+
+ def show_notify_cb(self, body, *args):
+ self.notify.set_property('body', body )
+ self.notify.show()
+
+ def config_cb(self, *a):
+ if self.conf_dlg == None:
+ self.conf_dlg = ConfigDlg(self)
+ self.conf_dlg.show_all()
+ r = self.conf_dlg.run()
+ if r == Gtk.ResponseType.OK:
+ self.save_auto_start()
+ self.save_conf()
+
+ def default_conf(self):
+ self.conf = {}
+ self.conf['show_merits'] = '1'
+ self.conf['lang'] = self.m.lang
+ self.conf['minutes'] = '10'
+ self.conf['athan_media_file'] = os.path.join(self.m.prefix, 'athan.ogg')
+ print self.conf['athan_media_file']
+ self.conf['notify_before_min'] = '10'
+
+ def conf_to_prayer_args(self):
+ kw = {}
+ if not self.conf.has_key('city_id'): return kw
+ c = self.m.cities_c
+ try:
+ c_id = int(self.conf['city_id'])
+ except ValueError:
+ return kw
+ except TypeError:
+ return kw
+ r = c.execute('SELECT * FROM cities AS c LEFT JOIN dst AS d ON d.i=dst_id WHERE c.id=?', (c_id,)).fetchone()
+ # set defaults to Makkah (14244)
+ if not r:
+ r = c.execute('SELECT * FROM cities AS c LEFT JOIN dst AS d ON d.i=dst_id WHERE c.id=?',
+ (14244,)).fetchone()
+ kw = dict(r)
+ if "alt" not in kw or not kw["alt"]:
+ kw["alt"] = 0.0
+ kw["tz"] = kw["utc"]
+ # NOTE: get DST from machine local setting
+ kw["dst"] = time.localtime().tm_isdst
+ # FIXME: dst should have the following 3 options
+ # a. auto from system, b. auto from algorithm, c. specified to 0/1 by user
+ #dst=kw["dst_id"]
+ #if not dst: kw["dst"]=0
+ #else:
+ # # FIXME: add DST logic here
+ # kw["dst"]=1
+ print kw
+ #lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10
+ return kw
+
+
+ def parse_conf(self, s):
+ self.default_conf()
+ l1 = map(lambda k: k.split('=',1),
+ filter(lambda j: j,
+ map(lambda i: i.strip(),s.splitlines())) )
+ l2 = map(lambda a: (a[0].strip(),a[1].strip()),filter(lambda j: len(j)==2,l1))
+ r = dict(l2)
+ self.conf.update(dict(l2))
+ return len(l1) == len(l2)
+
+ def load_conf(self):
+ s = ''
+ fn = os.path.expanduser('~/.monajat-applet.rc')
+ if os.path.exists(fn):
+ try:
+ s = open(fn,'rt').read()
+ except OSError:
+ pass
+ self.parse_conf(s)
+ if self.conf.has_key('city_id'):
+ # make sure city_id is set using the same db
+ if not self.conf.has_key('cities_db_ver') \
+ or self.conf['cities_db_ver'] != self.m.cities_db_ver:
+ del self.conf['city_id']
+ # make sure it's integer
+ try:
+ c_id = int(self.conf['city_id'])
+ except ValueError:
+ self.conf['city_id'] = 14244
+ except TypeError:
+ self.conf['city_id'] = 14244
+ else:
+ self.conf['city_id'] = c_id
+ else:
+ # set default to makkah (14244)
+ self.conf['city_id'] = 14244
+ # set athan media file exists
+ self.sound_player.set_filename(self.conf['athan_media_file'])
+ # fix types
+ try:
+ self.conf['minutes'] = math.ceil(float(self.conf['minutes'])/5.0)*5
+ except ValueError:
+ self.conf['minutes'] = 0
+ try:
+ self.conf['show_merits'] = int(self.conf['show_merits'])
+ except ValueError:
+ self.conf['show_merits'] = 1
+ try:
+ self.conf['notify_before_min'] = int(float(self.conf['notify_before_min']))
+ except ValueError:
+ self.conf['notify_before_min'] = 10
+ self.m.set_lang(self.conf['lang'])
+ self.m.clear()
+
+ def apply_conf(self):
+ kw = self.conf_to_prayer_args()
+ self.prayer = itl.PrayerTimes(**kw)
+ self.update_prayer()
+ self.sound_player.set_filename(self.conf['athan_media_file'])
+ self.m.clear()
+ self.m.set_lang(self.conf['lang'])
+ self.render_body(self.m.go_forward())
+
+ def save_conf(self):
+ self.conf['cities_db_ver'] = self.m.cities_db_ver
+ self.conf['show_merits'] = int(self.conf_dlg.show_merits.get_active())
+ self.conf['lang'] = self.conf_dlg.lang.get_active_text()
+ self.conf['minutes'] = int(self.conf_dlg.timeout.get_value())
+ self.conf['athan_media_file'] = self.conf_dlg.sound_file.get_filename()
+ self.conf['notify_before_min'] = int(self.conf_dlg.notify_before_b.get_active() \
+ and self.conf_dlg.notify_before_t.get_value())
+ m, p = self.conf_dlg.cities_tree.get_selection().get_selected_rows()
+ if p:
+ city_id = m[p[0]][2]
+ if city_id:
+ self.conf['city_id'] = city_id
+ print "** saving conf", self.conf
+ fn = os.path.expanduser('~/.monajat-applet.rc')
+ s = '\n'.join(map(lambda k: "%s=%s" % (k,str(self.conf[k])), self.conf.keys()))
+ try:
+ open(fn,'wt').write(s)
+ except OSError:
+ pass
+ self.apply_conf()
+
+ def athan_show_notif(self):
+ self.last_time = time.time()
+ self.first_notif_done = True
+ s = self.ptnames[self.last_athan]
+ self.show_notify_cb(_('''It's now time for %s prayer''') % s)
+ return True
- def change_play_status(self, status=None):
- if status==None: status=self.sound_player.gst_player.get_state()
- if status==gst.STATE_PLAYING:
- self.sound_file.set_sensitive(False)
- self.play_b.set_property('label', _('Stop'))
- else:
- self.sound_file.set_sensitive(True)
- self.play_b.set_property('label', _('Play'))
-
- def play_cb(self, b):
- fn=self.sound_file.get_filename()
- if not fn: fn=''
- if b.get_label() == _('Play'):
- if not os.path.isfile(fn): return
- self.change_play_status(gst.STATE_PLAYING)
- self.sound_player.set_filename(fn)
- self.sound_player.play()
- else:
- self.change_play_status(gst.STATE_NULL)
- self.sound_player.stop()
-
- def _city_search_cb(self, e):
- # FIXME: if same as last successful search text don't update first_match_path
- # FIXME: and if self.city_found same as first_match_path highlight in red
- txt=e.get_text().strip().lower()
- if type(txt)==unicode: txt=txt.translate(normalize_tb)
- else: txt=txt.decode('utf-8').translate(normalize_tb)
- e.modify_base(gtk.STATE_NORMAL, None)
- tree=self.cities_tree
- store, p=tree.get_selection().get_selected_rows()
- if p: current=p[0]
- else: current=None
- limit=None
- def tree_walk_cb(model, path, i):
- if current and path<=current: return False
- if limit and path>=limit: return True
- if txt in store.get_value(i,3):
- tree.expand_to_path(path)
- tree.scroll_to_cell(path)
- tree.get_selection().select_iter(i)
- self.city_found=path
+ def athan_notif_cb(self):
+ i, t, dt = self.prayer.get_next_time_stamp()
+ if i < 0:
+ return False
+ dt = max(dt, 0)
+ i = i%6
+ self.next_athan_delta = dt
+ self.next_athan_i = i
+ if dt < 30 and i != self.last_athan:
+ print "it's time for prayer number:", i
+ self.last_athan = i
+ self.sound_player.play()
+ self.athan_show_notif()
+ return True
+ return False
+
+ def timer_cb(self, *args):
+ if not 'actions' in self.notifycaps:
+ self.init_notify_cb()
+ print self.notifycaps
+ dt = int(time.time()-self.last_time)
+ if self.prayer.update():
+ self.update_prayer()
+ if self.athan_notif_cb(): return True
+ if not self.first_notif_done:
+ if int(time.time()-self.start_time) >= 10:
+ self.next_cb()
+ return True
+ if self.conf['notify_before_min'] \
+ and self.next_athan_delta <= self.conf['notify_before_min']*60 \
+ and self.next_athan_i != self.notif_last_athan:
+ self.notif_last_athan = self.next_athan_i
+ self.next_cb()
+ elif self.conf['minutes'] and dt >= self.conf['minutes']*60:
+ self.next_cb()
return True
- self.city_found=None
- store.foreach(tree_walk_cb)
- if not self.city_found:
- limit=current
- current=None
- store.foreach(tree_walk_cb)
- if not self.city_found:
- e.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#FFCCCC"))
-
- def _fill_cities(self):
- tree=self.cities_tree
- s=tree.get_model()
- rows=self.m.cities_c.execute('SELECT * FROM cities')
- country, country_i = None, None
- state, state_i=None, None
- city_path=None
- for R in rows:
- r=dict(R)
- if country!=r['country']:
- country_i=s.append(None,(r['country'], False, 0, r['country'].lower().translate(normalize_tb)))
- if state!=r['state']:
- state_i=s.append(country_i,(r['state'], False, 0, r['state'].lower().translate(normalize_tb)))
- country=r['country']
- state=r['state']
- if r['locale_name']: city=u'%s - %s' % (r['name'], r['locale_name'])
- else: city=r['name']
- city_i=s.append(state_i,(city, True, r['id'], city.lower().translate(normalize_tb)))
- if self.applet.conf.get('city_id',None)==r['id']: city_path=s.get_path(city_i)
- if city_path:
- tree.expand_to_path(city_path)
- tree.get_selection().select_path(city_path)
- tree.scroll_to_cell(city_path)
-
- def run(self, *a, **kw):
- self.auto_start.set_active(not os.path.exists(self.applet.skip_auto_fn))
- return gtk.Dialog.run(self, *a, **kw)
-class applet(object):
- skip_auto_fn=os.path.expanduser('~/.monajat-applet-skip-auto')
- def __init__(self):
- self.conf_dlg=None
- self.chngbody=time.time()
- self.minutes_counter=0
- self.m=Monajat() # you may pass width like 20 chars
- self.sound_player=SoundPlayer()
- self.load_conf()
- self.prayer_items=[]
- kw=self.conf_to_prayer_args()
- self.prayer=itl.PrayerTimes(**kw)
- try:
- l=locale.setlocale(locale.LC_MESSAGES, (self.m.lang, 'UTF-8'))
- if l: os.environ['LC_MESSAGES']=l
- except locale.Error: pass
- ld=os.path.join(self.m.get_prefix(),'..','locale')
- gettext.install('monajat', ld, unicode=0)
- self.ptnames=[_("Fajr"), _("Sunrise"), _("Dhuhr"), _("Asr"), _("Maghrib"), _("Isha'a")]
- self.clip1=gtk.Clipboard(selection="CLIPBOARD")
- self.clip2=gtk.Clipboard(selection="PRIMARY")
- self.init_about_dialog()
- self.init_menu()
- #self.s=gtk.status_icon_new_from_file(os.path.join(self.m.get_prefix(),'monajat.svg'))
- #self.s.connect('popup-menu',self.popup_cb)
- #self.s.connect('activate',self.next_cb)
- pynotify.init('MonajatApplet')
- self.notifycaps = pynotify.get_server_caps ()
- print self.notifycaps
- self.notify=pynotify.Notification("MonajatApplet")
- self.notify.set_property('icon-name','monajat')
- self.notify.set_property('summary', _("Monajat") )
- if 'actions' in self.notifycaps:
- self.notify.add_action("previous", _("previous"), self.notify_cb)
- self.notify.add_action("next", _("next"), self.notify_cb)
- self.notify.add_action("copy", _("copy"), self.notify_cb)
- # FIXME: maybe we should have notify object per notification
- #self.notify.set_timeout(5000) # FIXME: commented out to fix https://bugs.launchpad.net/ubuntu/+source/monajat/+bug/844680
- #self.notify.set_urgency(pynotify.URGENCY_LOW)
- self.notify.set_hint('resident', True)
- #self.notify.set_hint('transient', True)
-
- self.statusicon = gtk.StatusIcon ()
- #self.notify.attach_to_status_icon(self.statusicon)
- self.statusicon.connect('popup-menu',self.popup_cb)
- self.statusicon.connect('activate',self.next_cb)
- self.statusicon.set_title(_("Monajat"))
- self.statusicon.set_from_file(os.path.join(self.m.get_prefix(),'monajat.svg'))
-
- self.notif_last_athan=-1
- self.next_athan_delta=-1
- self.next_athan_i=-1
- self.last_athan=-1
- self.last_time=0
- self.first_notif_done=False
- self.start_time=time.time()
- glib.timeout_add_seconds(1, self.timer_cb)
-
- def config_cb(self, *a):
- if self.conf_dlg==None:
- self.conf_dlg=ConfigDlg(self)
- self.conf_dlg.show_all()
- r=self.conf_dlg.run()
- if r==gtk.RESPONSE_OK:
- self.save_auto_start()
- self.save_conf()
-
- def default_conf(self):
- self.conf={}
- self.conf['show_merits']='1'
- self.conf['lang']=self.m.lang
- self.conf['minutes']='10'
- self.conf['athan_media_file']=os.path.join(self.m.prefix, 'athan.ogg')
- self.conf['notify_before_min']='10'
-
- def conf_to_prayer_args(self):
- kw={}
- if not self.conf.has_key('city_id'): return kw
- c=self.m.cities_c
- try: c_id=int(self.conf['city_id'])
- except ValueError: return kw
- except TypeError: return kw
- r=c.execute('SELECT * FROM cities AS c LEFT JOIN dst AS d ON d.i=dst_id WHERE c.id=?', (c_id,)).fetchone()
- # FIXME: if not r: defaults to Makka
- kw=dict(r)
- if "alt" not in kw or not kw["alt"]: kw["alt"]=0.0
- kw["tz"]=kw["utc"]
- # NOTE: get DST from machine local setting
- kw["dst"]=time.localtime().tm_isdst
- # FIXME: dst should have the following 3 options
- # a. auto from system, b. auto from algorithm, c. specified to 0/1 by user
- #dst=kw["dst_id"]
- #if not dst: kw["dst"]=0
- #else:
- # # FIXME: add DST logic here
- # kw["dst"]=1
- print kw
- #lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10
- return kw
-
-
- def parse_conf(self, s):
- self.default_conf()
- l1=map(lambda k: k.split('=',1), filter(lambda j: j,map(lambda i: i.strip(),s.splitlines())) )
- l2=map(lambda a: (a[0].strip(),a[1].strip()),filter(lambda j: len(j)==2,l1))
- r=dict(l2)
- self.conf.update(dict(l2))
- return len(l1)==len(l2)
-
- def load_conf(self):
- s=''
- fn=os.path.expanduser('~/.monajat-applet.rc')
- if os.path.exists(fn):
- try: s=open(fn,'rt').read()
- except OSError: pass
- self.parse_conf(s)
- if self.conf.has_key('city_id'):
- # make sure city_id is set using the same db
- if not self.conf.has_key('cities_db_ver') or \
- self.conf['cities_db_ver']!=self.m.cities_db_ver:
- del self.conf['city_id']
- # make sure it's integer
- try: c_id=int(self.conf['city_id'])
- except ValueError: del self.conf['city_id']
- except TypeError: del self.conf['city_id']
- else: self.conf['city_id']=c_id
- # set athan media file exists
- self.sound_player.set_filename(self.conf['athan_media_file'])
- # fix types
- try: self.conf['minutes']=math.ceil(float(self.conf['minutes'])/5.0)*5
- except ValueError: self.conf['minutes']=0
- try: self.conf['show_merits']=int(self.conf['show_merits'])
- except ValueError: self.conf['show_merits']=1
- try: self.conf['notify_before_min']=int(float(self.conf['notify_before_min']))
- except ValueError: self.conf['notify_before_min']=10
- self.m.set_lang(self.conf['lang'])
- self.m.clear()
-
- def apply_conf(self):
- kw=self.conf_to_prayer_args()
- self.prayer=itl.PrayerTimes(**kw)
- self.update_prayer()
- self.sound_player.set_filename(self.conf['athan_media_file'])
- self.m.clear()
- self.m.set_lang(self.conf['lang'])
- self.render_body(self.m.go_forward())
-
- def save_conf(self):
- self.conf['cities_db_ver']=self.m.cities_db_ver
- self.conf['show_merits']=int(self.conf_dlg.show_merits.get_active())
- self.conf['lang']=self.conf_dlg.lang.get_active_text()
- self.conf['minutes']=int(self.conf_dlg.timeout.get_value())
- self.conf['athan_media_file']=self.conf_dlg.sound_file.get_filename()
- self.conf['notify_before_min']=int(self.conf_dlg.notify_before_b.get_active() and self.conf_dlg.notify_before_t.get_value())
- m, p=self.conf_dlg.cities_tree.get_selection().get_selected_rows()
- if p:
- city_id=m[p[0]][2]
- if city_id: self.conf['city_id']=city_id
- print "** saving conf", self.conf
- fn=os.path.expanduser('~/.monajat-applet.rc')
- s='\n'.join(map(lambda k: "%s=%s" % (k,str(self.conf[k])), self.conf.keys()))
- try: open(fn,'wt').write(s)
- except OSError: pass
- self.apply_conf()
-
- def athan_show_notif(self):
- self.last_time=time.time()
- self.first_notif_done=True
- s=self.ptnames[self.last_athan]
- self.notify.set_property('body', _('''It's now time for %s prayer''') % s)
- self.notify.show()
-
- def athan_notif_cb(self):
- i, t, dt=self.prayer.get_next_time_stamp()
- if i<0: return False
- dt=max(dt, 0)
- i=i%6
- self.next_athan_delta=dt
- self.next_athan_i=i
- if dt<30 and i!=self.last_athan:
- print "it's time for prayer number:", i
- self.last_athan=i
- self.sound_player.play()
- self.athan_show_notif()
- return True
- return False
-
- def timer_cb(self, *args):
- dt=int(time.time()-self.last_time)
- if self.prayer.update():
- self.update_prayer()
- if self.athan_notif_cb(): return True
- if not self.first_notif_done:
- if int(time.time()-self.start_time)>=10:
+ def fuzzy_delta(self):
+ if self.next_athan_i < 0 :
+ return ""
+ t = max(int(self.next_athan_delta), 0)
+ d = {"prayer" : self.ptnames[self.next_athan_i]}
+ d['hours'] = t/3600
+ t %= 3600
+ d['minutes'] = t/60
+ if d["hours"]:
+ if d["minutes"] < 5:
+ r = _("""%(hours)d hours till %(prayer)s prayer""") % d
+ else:
+ r = _("""%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer""") % d
+ elif d["minutes"] >= 2:
+ r = _("""less than %(minutes)d minutes till %(prayer)s prayer""") % d
+ else:
+ r = _("""less than a minute till %(prayer)s prayer""") % d
+ if "body-markup" in self.notifycaps:
+ return "<b>%s</b>\n\n" % cgi.escape(r)
+ return "%s\n\n" % r
+
+ def body_to_str(self, body):
+ if type(body) == unicode:
+ return body.encode('utf-8')
+ return body
+
+ def render_body(self, m):
+ merits = m['merits']
+ if not self.conf['show_merits']:
+ merits = None
+ if "body-markup" in self.notifycaps:
+ body = cgi.escape(m['text'])
+ if merits:
+ body = """{}\n\n<b>{}</b>: {}""".format(self.body_to_str(body),
+ _("Its Merits"),
+ self.body_to_str(cgi.escape(merits)))
+ else:
+ body = m['text']
+ if merits:
+ body = """{}\n\n** {} **: {}""".format(self.body_to_str(body),
+ _("Its Merits"),
+ self.body_to_str(merits))
+ if type(body) == unicode:
+ body = body.encode('utf-8')
+ if "body-hyperlinks" in self.notifycaps:
+ L = []
+ links = m.get('links',u'').split(u'\n')
+ for l in links:
+ ll = l.split(u'\t',1)
+ url = cgi.escape(ll[0])
+ if len(ll) > 1:
+ t = cgi.escape(ll[1])
+ else:
+ t = url
+ print url, t
+ L.append(u"""<a href='{}'>{}</a>""".format(url,t))
+ l = u"\n\n".join(L)
+ body += self.body_to_str("\n\n" + l)
+ # if we are close to time show it before supplication
+ if self.next_athan_delta >= 0 and self.next_athan_delta <= 600:
+ body = self.fuzzy_delta() + self.body_to_str(body)
+ else:
+ body = """{}\n\n{}""".format(self.body_to_str(body), self.fuzzy_delta())
+ #body = body + "\n\n" + self.fuzzy_delta()
+ #timeNP,isnear, istime = self.nextprayer_note(self.get_nextprayer(self.prayer.get_prayers()))
+ #if not isnear: body+=timeNP
+ #else: body=timeNP+body
+ self.show_notify_cb(body)
+ return body
+
+ def dbus_cb(self, *args):
+ self.minutes_counter = 1
self.next_cb()
- return True
- if self.conf['notify_before_min'] and self.next_athan_delta<=self.conf['notify_before_min']*60 and self.next_athan_i!=self.notif_last_athan:
- self.notif_last_athan=self.next_athan_i
- self.next_cb()
- elif self.conf['minutes'] and dt>=self.conf['minutes']*60:
- self.next_cb()
- return True
-
- def hide_cb(self, w, *args): w.hide(); return True
-
- def fuzzy_delta(self):
- if self.next_athan_i<0: return ""
- t=max(int(self.next_athan_delta),0)
- d={"prayer":self.ptnames[self.next_athan_i]}
- d['hours']=t/3600
- t%=3600
- d['minutes']=t/60
- if d["hours"]:
- if d["minutes"]<5:
- r=_("""%(hours)d hours till %(prayer)s prayer""") % d
- else:
- r=_("""%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer""") % d
- elif d["minutes"]>=2:
- r=_("""less than %(minutes)d minutes till %(prayer)s prayer""") % d
- else:
- r=_("""less than a minute till %(prayer)s prayer""") % d
- if "body-markup" in self.notifycaps:
- return "<b>%s</b>\n\n" % cgi.escape(r)
- return "%s\n\n" % r
-
- def render_body(self, m):
- merits=m['merits']
- if not self.conf['show_merits']: merits=None
- if "body-markup" in self.notifycaps:
- body=cgi.escape(m['text'])
- if merits: body+="""\n\n<b>%s</b>: %s""" % (_("Its Merits"),cgi.escape(merits))
- else:
- body=m['text']
- if merits: body+="""\n\n** %s **: %s""" % (_("Its Merits"),merits)
-
- if "body-hyperlinks" in self.notifycaps:
- L=[]
- links=m.get('links',u'').split(u'\n')
- for l in links:
- ll=l.split(u'\t',1)
- url=cgi.escape(ll[0])
- if len(ll)>1: t=cgi.escape(ll[1])
- else: t=url
- L.append(u"""<a href='%s'>%s</a>""" % (url,t))
- l=u"\n\n".join(L)
- body+=u"\n\n"+l
- # if we are close to time show it before supplication
- if self.next_athan_delta>=0 and self.next_athan_delta<=600:
- body=self.fuzzy_delta()+body
- else:
- body=body+"\n\n"+self.fuzzy_delta()
- #timeNP,isnear, istime = self.nextprayer_note(self.get_nextprayer(self.prayer.get_prayers()))
- #if not isnear: body+=timeNP
- #else: body=timeNP+body
- self.notify.set_property('body', body)
- return body
-
- def dbus_cb(self, *args):
- self.minutes_counter=1
- self.next_cb()
- return 0
-
- def next_cb(self,*args):
- self.last_time=time.time()
- self.first_notif_done=True
- try: self.notify.close()
- except glib.GError: pass
- self.render_body(self.m.go_forward())
- self.notify.show()
- return True
-
- def prev_cb(self, *args):
- self.last_time=time.time()
- try: self.notify.close()
- except glib.GError: pass
- self.render_body(self.m.go_back())
- self.notify.show()
-
- def copy_cb(self,*args):
- r=self.m.get_current()
- self.clip1.set_text(r['text'])
- self.clip2.set_text(r['text'])
-
- def init_about_dialog(self):
- # FIXME: please add more the authors
- self.about_dlg=gtk.AboutDialog()
- self.about_dlg.set_default_response(gtk.RESPONSE_CLOSE)
- self.about_dlg.connect('delete-event', self.hide_cb)
- self.about_dlg.connect('response', self.hide_cb)
- try: self.about_dlg.set_program_name("Monajat")
- except: pass
- self.about_dlg.set_name(_("Monajat"))
- #self.about_dlg.set_version(version)
- self.about_dlg.set_copyright("Copyright © 2009 sabily.org")
- self.about_dlg.set_comments(_("Monajat supplications"))
- self.about_dlg.set_license("""\
- 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.
+ return 0
+
+ def next_cb(self, *args):
+ self.last_time = time.time()
+ self.first_notif_done = True
+ self.render_body(self.m.go_forward())
+ return True
+
+ def prev_cb(self, *args):
+ self.first_notif_done = True
+ self.render_body(self.m.go_back())
+ return True
+
+ def copy_cb(self, *args):
+ r = self.m.get_current()
+ self.clip1.set_text(r['text'], -1)
+ self.clip2.set_text(r['text'], -1)
+
+ def show_about_dialog(self):
+ # FIXME: please add more the authors
+ dlg = Gtk.AboutDialog()
+ dlg.set_default_response(Gtk.ResponseType.CLOSE)
+ dlg.set_icon_from_file(os.path.join(self.m.get_prefix(),'monajat.svg'))
+ try:
+ dlg.set_program_name("Monajat")
+ except:
+ pass
+ dlg.set_name(_("Monajat"))
+ #dlg.set_version(version)
+ dlg.set_copyright("Copyright © 2009 sabily.org")
+ dlg.set_comments(_("Monajat supplications"))
+ dlg.set_license("""\
+ 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.
""")
- self.about_dlg.set_website("https://launchpad.net/monajat")
- self.about_dlg.set_website_label("Monajat web site")
- self.about_dlg.set_authors(["Fadi al-katout <cutout33 at gmail.com>",
- "Muayyad Saleh Alsadi <alsadi at ojuba.org>",
- "Ehab El-Gedawy <ehabsas at gmail.com>",
- "Mahyuddin Susanto <udienz at ubuntu.com>",
- "عبدالرحيم دوبيلار <abdulrahiem at sabi.li>",
- "أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy at sabily.org>"])
- def save_auto_start(self):
- b=self.conf_dlg.auto_start.get_active()
- if b and os.path.exists(self.skip_auto_fn):
- try: os.unlink(self.skip_auto_fn)
- except OSError: pass
- elif not b:
- open(self.skip_auto_fn,'wt').close()
-
- def update_prayer(self):
- if not self.prayer_items: return
- pt=self.prayer.get_prayers()
- j=0
- ptn=list(self.ptnames)
- ptn[1]=''
- for p,t in zip(ptn, pt):
- if not p: continue
- i = gtk.MenuItem
- self.prayer_items[j].set_label(u"%-10s %s" % (p, t.format(),))
- j+=1
-
- def init_menu(self):
- self.menu = gtk.Menu()
- i = gtk.ImageMenuItem(gtk.STOCK_COPY)
- i.set_always_show_image(True)
- i.connect('activate', self.copy_cb)
- self.menu.add(i)
-
- i = gtk.ImageMenuItem(gtk.STOCK_GO_FORWARD)
- i.set_always_show_image(True)
- i.connect('activate', self.next_cb)
- self.menu.add(i)
-
- i = gtk.ImageMenuItem(gtk.STOCK_GO_BACK)
- i.set_always_show_image(True)
- i.connect('activate', self.prev_cb)
- self.menu.add(i)
-
- self.menu.add(gtk.SeparatorMenuItem())
-
- self.prayer_items=[]
- for j in range(5):
- i = gtk.MenuItem("-")
- self.prayer_items.append(i)
- self.menu.add(i)
- self.update_prayer()
-
- self.menu.add(gtk.SeparatorMenuItem())
-
- i = gtk.MenuItem(_("Configure"))
- i.connect('activate', self.config_cb)
- self.menu.add(i)
+ dlg.set_website("https://launchpad.net/monajat")
+ dlg.set_website_label("Monajat web site")
+ dlg.set_authors(["Fadi al-katout <cutout33 at gmail.com>",
+ "Muayyad Saleh Alsadi <alsadi at ojuba.org>",
+ "Ehab El-Gedawy <ehabsas at gmail.com>",
+ "Mahyuddin Susanto <udienz at ubuntu.com>",
+ "عبدالرحيم دوبيلار <abdulrahiem at sabi.li>",
+ "أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy at sabily.org>"])
+ dlg.run()
+ dlg.destroy()
+
+ def save_auto_start(self):
+ b = self.conf_dlg.auto_start.get_active()
+ if b and os.path.exists(self.skip_auto_fn):
+ try:
+ os.unlink(self.skip_auto_fn)
+ except OSError:
+ pass
+ elif not b:
+ open(self.skip_auto_fn,'wt').close()
- self.menu.add(gtk.SeparatorMenuItem())
-
- i = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
- i.set_always_show_image(True)
- i.connect('activate', lambda *args: self.about_dlg.run())
- self.menu.add(i)
+ def update_prayer(self):
+ if not self.prayer_items: return
+ pt = self.prayer.get_prayers()
+ j = 0
+ ptn = list(self.ptnames)
+ ptn[1] = ''
+ for p,t in zip(ptn, pt):
+ if not p: continue
+ i = Gtk.MenuItem
+ self.prayer_items[j].set_label("{: <15} {}".format(p, t.format(),))
+ j += 1
- i = gtk.ImageMenuItem(gtk.STOCK_QUIT)
- i.set_always_show_image(True)
- i.connect('activate', gtk.main_quit)
- self.menu.add(i)
-
- self.menu.show_all()
-
- def popup_cb(self, s, button, time):
- self.menu.popup(None, None, gtk.status_icon_position_menu, button, time, s)
-
- def time_set_cb(self, m, t):
- self.conf['minutes']=t
- self.minutes_counter=1
- self.save_conf()
-
- def lang_cb(self, m, l):
- if not m.get_active(): return
- self.m.set_lang(l)
- self.save_conf()
-
- def notify_cb(self,notify,action):
- try: self.notify.close()
- except glib.GError: pass
- if action=="exit": gtk.main_quit()
- elif action=="copy": self.copy_cb()
- elif action=="next": self.next_cb()
- elif action=="previous": self.prev_cb()
+ def init_menu(self):
+ self.menu = Gtk.Menu()
+ i = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_COPY, None)
+ i.set_always_show_image(True)
+ i.connect('activate', self.copy_cb)
+ self.menu.add(i)
+
+ i = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_GO_FORWARD, None)
+ i.set_always_show_image(True)
+ i.connect('activate', self.next_cb)
+ self.menu.add(i)
+
+ i = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_GO_BACK, None)
+ i.set_always_show_image(True)
+ i.connect('activate', self.prev_cb)
+ self.menu.add(i)
+
+ self.menu.add(Gtk.SeparatorMenuItem.new())
+
+ self.prayer_items = []
+ for j in range(5):
+ i = Gtk.MenuItem("-")
+ self.prayer_items.append(i)
+ self.menu.add(i)
+ self.update_prayer()
+
+ self.menu.add(Gtk.SeparatorMenuItem.new())
+
+ i = Gtk.MenuItem(_("Configure"))
+ i.connect('activate', self.config_cb)
+ self.menu.add(i)
+
+ self.menu.add(Gtk.SeparatorMenuItem.new())
+
+ i = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_ABOUT, None)
+ i.set_always_show_image(True)
+ i.connect('activate', lambda *args: self.show_about_dialog())
+ self.menu.add(i)
+
+ i = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_QUIT, None)
+ i.set_always_show_image(True)
+ i.connect('activate', Gtk.main_quit)
+ self.menu.add(i)
+
+ self.menu.show_all()
+
+ def popup_cb(self, s, button, time):
+
+ self.menu.popup(None,
+ None,
+ self.statusicon.position_menu,
+ self.statusicon,
+ 3,
+ Gtk.get_current_event_time())
+
+
+ def time_set_cb(self, m, t):
+ self.conf['minutes'] = t
+ self.minutes_counter = 1
+ self.save_conf()
+
+ def lang_cb(self, m, l):
+ if not m.get_active(): return
+ self.m.set_lang(l)
+ self.save_conf()
+
+ def notify_cb(self, notify, action, *a):
+ if action == "exit":
+ Gtk.main_quit()
+ elif action == "copy":
+ self.copy_cb()
+ elif action == "next":
+ self.next_cb()
+ elif action == "previous":
+ self.prev_cb()
def applet_main():
- gtk.window_set_default_icon_name('monajat')
- a=applet()
- init_dbus(a.dbus_cb)
- gtk.main()
+ Gtk.Window.set_default_icon_name('monajat')
+ a = applet()
+ init_dbus(a.dbus_cb)
+ Gtk.main()
if __name__ == "__main__":
- applet_main()
+ applet_main()
diff --git a/monajat/itl.py b/monajat/itl.py
index 385f990..6770298 100644
--- a/monajat/itl.py
+++ b/monajat/itl.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# -*- Mode: Python; py-indent-offset: 4 -*-
"""
ITL binding for python
"""
@@ -6,289 +7,293 @@ import time
from ctypes import *
class Date(Structure):
- """
- This holds the current date info.
- """
- _fields_ = [
- ('day', c_int),
- ('month', c_int),
- ('year', c_int),
- ]
- def update(self):
"""
- return True if changed
+ This holds the current date info.
"""
- d=time.localtime()
- if d.tm_year==self.year and d.tm_mon==self.month and d.tm_mday==self.day: return False
- self.day, self.month, self.year = d.tm_mday, d.tm_mon, d.tm_year
- return True
+ _fields_ = [
+ ('day', c_int),
+ ('month', c_int),
+ ('year', c_int),
+ ]
+ def update(self):
+ """
+ return True if changed
+ """
+ try:
+ d = time.localtime()
+ except TypeError:
+ return False
+ if d.tm_year == self.year and d.tm_mon == self.month and d.tm_mday == self.day:
+ return False
+ self.day, self.month, self.year = d.tm_mday, d.tm_mon, d.tm_year
+ return True
class Location(Structure):
- """
- This holds the location info.
+ """
+ This holds the location info.
- degreeLong - Longitude in decimal degree.
- degreeLat - Latitude in decimal degree.
- gmtDiff - GMT difference at regular time.
- dst - Daylight savings time switch (0 if not used).
- Setting this to 1 should add 1 hour to all the
- calculated prayer times
- seaLevel - Height above Sea level in meters
- pressure - Atmospheric pressure in millibars (the
- astronomical standard value is 1010)
- temperature - Temperature in Celsius degree (the astronomical
- standard value is 10)
- """
- _fields_ = [
- ('degreeLong', c_double), # Longitude in decimal degree.
- ('degreeLat', c_double), # Latitude in decimal degree.
- ('gmtDiff', c_double), # GMT difference at regular time.
- ('dst', c_int), # Daylight savings time switch (0 if not used).
- # Setting this to 1 should add 1 hour to all the
- # calculated prayer times
- ('seaLevel', c_double), # Height above Sea level in meters
- ('pressure', c_double), # Atmospheric pressure in millibars (the
- # astronomical standard value is 1010)
- ('temperature', c_double) # Temperature in Celsius degree (the astronomical
- # standard value is 10)
- ]
+ degreeLong - Longitude in decimal degree.
+ degreeLat - Latitude in decimal degree.
+ gmtDiff - GMT difference at regular time.
+ dst - Daylight savings time switch (0 if not used).
+ Setting this to 1 should add 1 hour to all the
+ calculated prayer times
+ seaLevel - Height above Sea level in meters
+ pressure - Atmospheric pressure in millibars (the
+ astronomical standard value is 1010)
+ temperature - Temperature in Celsius degree (the astronomical
+ standard value is 10)
+ """
+ _fields_ = [
+ ('degreeLong', c_double), # Longitude in decimal degree.
+ ('degreeLat', c_double), # Latitude in decimal degree.
+ ('gmtDiff', c_double), # GMT difference at regular time.
+ ('dst', c_int), # Daylight savings time switch (0 if not used).
+ # Setting this to 1 should add 1 hour to all the
+ # calculated prayer times
+ ('seaLevel', c_double), # Height above Sea level in meters
+ ('pressure', c_double), # Atmospheric pressure in millibars (the
+ # astronomical standard value is 1010)
+ ('temperature', c_double) # Temperature in Celsius degree (the astronomical
+ # standard value is 10)
+ ]
class Method(Structure):
- """
- This structure holds the calculation method used. NOTE: Before explicitly
- setting any of these values, it is more safe to default initialize them
- by calling 'getMethod(0, &method)'
+ """
+ This structure holds the calculation method used. NOTE: Before explicitly
+ setting any of these values, it is more safe to default initialize them
+ by calling 'getMethod(0, &method)'
- double fajrAng; /* Fajr angle */
- double ishaaAng; /* Ishaa angle */
- double imsaakAng; /* The angle difference between Imsaak and Fajr (
- default is 1.5)*/
- int fajrInv; /* Fajr Interval is the amount of minutes between
- Fajr and Shurooq (0 if not used) */
- int ishaaInv; /* Ishaa Interval is the amount if minutes between
- Ishaa and Maghrib (0 if not used) */
- int imsaakInv; /* Imsaak Interval is the amount of minutes between
- Imsaak and Fajr. The default is 10 minutes before
- Fajr if Fajr Interval is set */
- int round; /* Method used for rounding seconds:
- 0: No Rounding. "Prayer.seconds" is set to the
- amount of computed seconds.
- 1: Normal Rounding. If seconds are equal to
- 30 or above, add 1 minute. Sets
- "Prayer.seconds" to zero.
- 2: Special Rounding. Similar to normal rounding
- but we always round down for Shurooq and
- Imsaak times. (default)
- 3: Aggressive Rounding. Similar to Special
- Rounding but we add 1 minute if the seconds
- value is equal to 1 second or more. */
- int mathhab; /* Assr prayer shadow ratio:
- 1: Shaf'i (default)
- 2: Hanafi */
- double nearestLat; /* Latitude Used for the 'Nearest Latitude' extreme
- methods. The default is 48.5 */
- int extreme; /* Extreme latitude calculation method (see
- below) */
- int offset; /* Enable Offsets switch (set this to 1 to
- activate). This option allows you to add or
- subtract any amount of minutes to the daily
- computed prayer times based on values (in
- minutes) for each prayer in the offList array */
- double offList[6]; /* For Example: If you want to add 30 seconds to
- Maghrib and subtract 2 minutes from Ishaa:
- offset = 1
- offList[4] = 0.5
- offList[5] = -2
- ..and than call getPrayerTimes as usual. */
- --
- Supported methods for Extreme Latitude calculations (Method.extreme) -
- (see the file "./doc/method-info.txt" for details) :
-
- 0: none. if unable to calculate, leave as 99:99
- 1: Nearest Latitude: All prayers Always
- 2: Nearest Latitude: Fajr Ishaa Always
- 3: Nearest Latitude: Fajr Ishaa if invalid
- 4: Nearest Good Day: All prayers Always
- 5: Nearest Good Day: Fajr Ishaa if invalid (default)
- 6: 1/7th of Night: Fajr Ishaa Always
- 7: 1/7th of Night: Fajr Ishaa if invalid
- 8: 1/7th of Day: Fajr Ishaa Always
- 9: 1/7th of Day: Fajr Ishaa if invalid
- 10: Half of the Night: Fajr Ishaa Always
- 11: Half of the Night: Fajr Ishaa if invalid
- 12: Minutes from Shorooq/Maghrib: Fajr Ishaa Always (e.g. Maghrib=Ishaa)
- 13: Minutes from Shorooq/Maghrib: Fajr Ishaa If invalid
- --
- /* This function is used to auto fill the Method structure with predefined
- data. The supported auto-fill methods for calculations at normal
- circumstances are:
-
- 0: none. Set to default or 0
- 1: Egyptian General Authority of Survey
- 2: University of Islamic Sciences, Karachi (Shaf'i)
- 3: University of Islamic Sciences, Karachi (Hanafi)
- 4: Islamic Society of North America
- 5: Muslim World League (MWL)
- 6: Umm Al-Qurra, Saudi Arabia
- 7: Fixed Ishaa Interval (always 90)
- 8: Egyptian General Authority of Survey (Egypt)
- (see the file "./doc/method-info.txt" for more details)
- */
- """
- _fields_ = [
- ('fajrAng', c_double),
- ('ishaaAng', c_double),
- ('imsaakAng', c_double),
- ('fajrInv', c_int),
- ('ishaaInv', c_int),
- ('imsaakInv', c_int),
- ('round', c_int),
- ('mathhab', c_int),
- ('nearestLat', c_double),
- ('extreme', c_int),
- ('offset', c_int),
- ('offList', c_double*6),
- ]
+ double fajrAng; /* Fajr angle */
+ double ishaaAng; /* Ishaa angle */
+ double imsaakAng; /* The angle difference between Imsaak and Fajr (
+ default is 1.5)*/
+ int fajrInv; /* Fajr Interval is the amount of minutes between
+ Fajr and Shurooq (0 if not used) */
+ int ishaaInv; /* Ishaa Interval is the amount if minutes between
+ Ishaa and Maghrib (0 if not used) */
+ int imsaakInv; /* Imsaak Interval is the amount of minutes between
+ Imsaak and Fajr. The default is 10 minutes before
+ Fajr if Fajr Interval is set */
+ int round; /* Method used for rounding seconds:
+ 0: No Rounding. "Prayer.seconds" is set to the
+ amount of computed seconds.
+ 1: Normal Rounding. If seconds are equal to
+ 30 or above, add 1 minute. Sets
+ "Prayer.seconds" to zero.
+ 2: Special Rounding. Similar to normal rounding
+ but we always round down for Shurooq and
+ Imsaak times. (default)
+ 3: Aggressive Rounding. Similar to Special
+ Rounding but we add 1 minute if the seconds
+ value is equal to 1 second or more. */
+ int mathhab; /* Assr prayer shadow ratio:
+ 1: Shaf'i (default)
+ 2: Hanafi */
+ double nearestLat; /* Latitude Used for the 'Nearest Latitude' extreme
+ methods. The default is 48.5 */
+ int extreme; /* Extreme latitude calculation method (see
+ below) */
+ int offset; /* Enable Offsets switch (set this to 1 to
+ activate). This option allows you to add or
+ subtract any amount of minutes to the daily
+ computed prayer times based on values (in
+ minutes) for each prayer in the offList array */
+ double offList[6]; /* For Example: If you want to add 30 seconds to
+ Maghrib and subtract 2 minutes from Ishaa:
+ offset = 1
+ offList[4] = 0.5
+ offList[5] = -2
+ ..and than call getPrayerTimes as usual. */
+ --
+ Supported methods for Extreme Latitude calculations (Method.extreme) -
+ (see the file "./doc/method-info.txt" for details) :
+
+ 0: none. if unable to calculate, leave as 99:99
+ 1: Nearest Latitude: All prayers Always
+ 2: Nearest Latitude: Fajr Ishaa Always
+ 3: Nearest Latitude: Fajr Ishaa if invalid
+ 4: Nearest Good Day: All prayers Always
+ 5: Nearest Good Day: Fajr Ishaa if invalid (default)
+ 6: 1/7th of Night: Fajr Ishaa Always
+ 7: 1/7th of Night: Fajr Ishaa if invalid
+ 8: 1/7th of Day: Fajr Ishaa Always
+ 9: 1/7th of Day: Fajr Ishaa if invalid
+ 10: Half of the Night: Fajr Ishaa Always
+ 11: Half of the Night: Fajr Ishaa if invalid
+ 12: Minutes from Shorooq/Maghrib: Fajr Ishaa Always (e.g. Maghrib=Ishaa)
+ 13: Minutes from Shorooq/Maghrib: Fajr Ishaa If invalid
+ --
+ /* This function is used to auto fill the Method structure with predefined
+ data. The supported auto-fill methods for calculations at normal
+ circumstances are:
+
+ 0: none. Set to default or 0
+ 1: Egyptian General Authority of Survey
+ 2: University of Islamic Sciences, Karachi (Shaf'i)
+ 3: University of Islamic Sciences, Karachi (Hanafi)
+ 4: Islamic Society of North America
+ 5: Muslim World League (MWL)
+ 6: Umm Al-Qurra, Saudi Arabia
+ 7: Fixed Ishaa Interval (always 90)
+ 8: Egyptian General Authority of Survey (Egypt)
+ (see the file "./doc/method-info.txt" for more details)
+ */
+ """
+ _fields_ = [
+ ('fajrAng', c_double),
+ ('ishaaAng', c_double),
+ ('imsaakAng', c_double),
+ ('fajrInv', c_int),
+ ('ishaaInv', c_int),
+ ('imsaakInv', c_int),
+ ('round', c_int),
+ ('mathhab', c_int),
+ ('nearestLat', c_double),
+ ('extreme', c_int),
+ ('offset', c_int),
+ ('offList', c_double*6),
+ ]
class Prayer(Structure):
- """
- This structure holds the prayer time output for a single prayer. */
- int hour; /* prayer time hour */
- int minute; /* prayer time minute */
- int second; /* prayer time second */
- int isExtreme; /* Extreme calculation status. The 'getPrayerTimes'
- function sets this variable to 1 to indicate that
- this particular prayer time has been calculated
- through extreme latitude methods and NOT by
- conventional means of calculation. */
- """
- _fields_ = [
- ('hour', c_int),
- ('minute', c_int),
- ('second', c_int),
- ('isExtreme', c_int),
- ]
- def format(self, h=12):
- if h!=12:
- return "%02d:%02d" % (self.hour, self.minute,)
- return "%02d:%02d %s" % ((self.hour % 12) or 12, self.minute, self.hour>=12 and "PM" or "AM")
+ """
+ This structure holds the prayer time output for a single prayer. */
+ int hour; /* prayer time hour */
+ int minute; /* prayer time minute */
+ int second; /* prayer time second */
+ int isExtreme; /* Extreme calculation status. The 'getPrayerTimes'
+ function sets this variable to 1 to indicate that
+ this particular prayer time has been calculated
+ through extreme latitude methods and NOT by
+ conventional means of calculation. */
+ """
+ _fields_ = [
+ ('hour', c_int),
+ ('minute', c_int),
+ ('second', c_int),
+ ('isExtreme', c_int),
+ ]
+ def format(self, h=12):
+ if h!=12:
+ return "%02d:%02d" % (self.hour, self.minute,)
+ return "%02d:%02d %s" % ((self.hour % 12) or 12, self.minute, self.hour>=12 and "PM" or "AM")
try: itl=cdll.LoadLibrary("libitl.so.0")
except OSError as e: raise e
def getMethod(i, method=None):
- """
- returns the set method
- """
- if method==None:
- method=Method()
- itl.getMethod(7, pointer(method))
- return method
+ """
+ returns the set method
+ """
+ if method==None:
+ method=Method()
+ itl.getMethod(7, pointer(method))
+ return method
def getPrayerTimes(loc, method, date, ptList=None):
- if ptList==None:
- ptList=(Prayer*6)()
- itl.getPrayerTimes(pointer(loc), pointer(method), pointer(date), pointer(ptList))
- return ptList
+ if ptList==None:
+ ptList=(Prayer*6)()
+ itl.getPrayerTimes(pointer(loc), pointer(method), pointer(date), pointer(ptList))
+ return ptList
class PrayerTimes:
- def __init__(self, method_n=6, lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10, **kw):
- """
- location defaults to Mecca
- method defaults to Umm Al-Qurra
- """
- self.location=Location()
- self.date=Date()
- self.stamps=[]
- self.stamp_date=Date()
- self.method=Method()
- self.ptList=(Prayer*6)()
- self.location.degreeLong=lon
- self.location.degreeLat=lat
- self.location.gmtDiff=tz
- self.location.dst=dst
- print tz,dst
- self.location.seaLevel = alt
- self.location.pressure = pressure
- self.location.temperature= temp
- self.set_method(method_n)
-
- def set_location(self, lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10):
- self.location.degreeLong=lon
- self.location.degreeLat=lat
- self.location.gmtDiff=tz
- self.location.dst=dst
- self.location.seaLevel = alt
- self.location.pressure = pressure
- self.location.temperature= temp
- # self.get_prayers(False) not needed as implied by next line
- self.get_prayer_time_stamps(False)
+ def __init__(self, method_n=6, lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10, **kw):
+ """
+ location defaults to Mecca
+ method defaults to Umm Al-Qurra
+ """
+ self.location=Location()
+ self.date=Date()
+ self.stamps=[]
+ self.stamp_date=Date()
+ self.method=Method()
+ self.ptList=(Prayer*6)()
+ self.location.degreeLong=lon
+ self.location.degreeLat=lat
+ self.location.gmtDiff=tz
+ self.location.dst=dst
+ print tz,dst
+ self.location.seaLevel = alt
+ self.location.pressure = pressure
+ self.location.temperature= temp
+ self.set_method(method_n)
+
+ def set_location(self, lat=21.43, lon=39.77, tz=3.0, dst=0, alt=0, pressure=1010, temp=10):
+ self.location.degreeLong=lon
+ self.location.degreeLat=lat
+ self.location.gmtDiff=tz
+ self.location.dst=dst
+ self.location.seaLevel = alt
+ self.location.pressure = pressure
+ self.location.temperature= temp
+ # self.get_prayers(False) not needed as implied by next line
+ self.get_prayer_time_stamps(False)
- def set_method(self, n):
- getMethod(n, self.method)
- self.get_prayers(False)
- return self.method
+ def set_method(self, n):
+ getMethod(n, self.method)
+ self.get_prayers(False)
+ return self.method
- def update(self):
- if not self.date.update(): return False
- self.get_prayers(False)
- return True
+ def update(self):
+ if not self.date.update(): return False
+ self.get_prayers(False)
+ return True
- def get_prayers(self, cache=True):
- if cache and not self.date.update(): return self.ptList
- return getPrayerTimes(self.location, self.method, self.date, self.ptList)
+ def get_prayers(self, cache=True):
+ if cache and not self.date.update(): return self.ptList
+ return getPrayerTimes(self.location, self.method, self.date, self.ptList)
- def get_prayer_time_stamps(self, cache=True):
- if cache and self.stamps and not self.stamp_date.update(): return self.stamps
- t=int(time.time())
- d=time.localtime()
- t-=d.tm_hour*3600+d.tm_min*60+d.tm_sec
- self.stamps=map(lambda p: t+p.hour*3600+p.minute*60+p.second, self.get_prayers(cache))
- self.stamps.append(self.stamps[0]+86400)
- return self.stamps
+ def get_prayer_time_stamps(self, cache=True):
+ if cache and self.stamps and not self.stamp_date.update(): return self.stamps
+ t=int(time.time())
+ d=time.localtime()
+ t-=d.tm_hour*3600+d.tm_min*60+d.tm_sec
+ self.stamps=map(lambda p: t+p.hour*3600+p.minute*60+p.second, self.get_prayers(cache))
+ self.stamps.append(self.stamps[0]+86400)
+ return self.stamps
- def get_next_time_stamp(self, delta=0.0):
- t=time.time()
- l=self.get_prayer_time_stamps()
- for i,j in enumerate(l):
- if i==1: continue
- if t-j<=delta: return i, j, j-t
- return -1, -1, -1
+ def get_next_time_stamp(self, delta=0.0):
+ t=time.time()
+ l=self.get_prayer_time_stamps()
+ for i,j in enumerate(l):
+ if i==1: continue
+ if t-j<=delta: return i, j, j-t
+ return -1, -1, -1
- def get_date_prayers(self, y, m, d, ptList=None):
- date=Date()
- date.day=d
- date.month=m
- date.year=y
- return getPrayerTimes(self.location, self.method, date, ptList)
+ def get_date_prayers(self, y, m, d, ptList=None):
+ date=Date()
+ date.day=d
+ date.month=m
+ date.year=y
+ return getPrayerTimes(self.location, self.method, date, ptList)
if __name__ == "__main__":
- # high level examples for Mecca
- pt=PrayerTimes()
- for i in pt.get_prayers():
- print i.hour, i.minute, i.second
- # low level examples for Abu Dhabi
- loc=Location()
- date=Date()
- # fill the Date structure
- date.update()
- # fill the location info. structure
- loc.degreeLat = 24.4833
- loc.degreeLong = 54.35
- loc.gmtDiff = 4
- loc.dst = 0
- loc.seaLevel = 0
- loc.pressure = 1010
- loc.temperature= 10
- # auto fill the method structure. Have a look at prayer.h for a
- # list of supported methods
- method=getMethod(7)
- method.round = 0
- ptList=getPrayerTimes(loc, method, date)
- for i in ptList:
- print i.hour, i.minute, i.second
+ # high level examples for Mecca
+ pt=PrayerTimes()
+ for i in pt.get_prayers():
+ print i.hour, i.minute, i.second
+ # low level examples for Abu Dhabi
+ loc=Location()
+ date=Date()
+ # fill the Date structure
+ date.update()
+ # fill the location info. structure
+ loc.degreeLat = 24.4833
+ loc.degreeLong = 54.35
+ loc.gmtDiff = 4
+ loc.dst = 0
+ loc.seaLevel = 0
+ loc.pressure = 1010
+ loc.temperature= 10
+ # auto fill the method structure. Have a look at prayer.h for a
+ # list of supported methods
+ method=getMethod(7)
+ method.round = 0
+ ptList=getPrayerTimes(loc, method, date)
+ for i in ptList:
+ print i.hour, i.minute, i.second
diff --git a/monajat/monajat.py b/monajat/monajat.py
index 9023aad..83b4273 100644
--- a/monajat/monajat.py
+++ b/monajat/monajat.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# -*- Mode: Python; py-indent-offset: 4 -*-
import locale
try: locale.setlocale(locale.LC_ALL, '')
except locale.Error: pass
@@ -9,47 +10,47 @@ import sqlite3
from random import randint
class HistoryEngine():
- def __init__(self, size=10000):
- self.size=size
- self.stack=[]
- self.i=-1
-
- def get_current(self):
- if self.i>=0: return self.stack[self.i]
- else: return None
-
- def clear(self):
- self.i=-1
- self.stack=[]
-
- def go_back(self,n=1):
- if self.i>n-1:
- self.i-=n
- return self.get_current()
- return None
-
- def go_forward(self,n=1):
- if self.i<len(self.stack)-n:
- self.i+=n
- return self.get_current()
- return None
-
- def go_first(self):
- if len(self.stack)>0:
- self.i=0
- return self.get_current()
- return None
-
- def go_last(self):
- if len(self.stack)>0:
- self.i=len(self.stack)-1
- return self.get_current()
- return None
-
- def push(self,uid):
- self.stack=self.stack[-self.size+1:]
- self.stack.append(uid)
- self.i=len(self.stack)-1
+ def __init__(self, size=10000):
+ self.size=size
+ self.stack=[]
+ self.i=-1
+
+ def get_current(self):
+ if self.i>=0: return self.stack[self.i]
+ else: return None
+
+ def clear(self):
+ self.i=-1
+ self.stack=[]
+
+ def go_back(self,n=1):
+ if self.i>n-1:
+ self.i-=n
+ return self.get_current()
+ return None
+
+ def go_forward(self,n=1):
+ if self.i<len(self.stack)-n:
+ self.i+=n
+ return self.get_current()
+ return None
+
+ def go_first(self):
+ if len(self.stack)>0:
+ self.i=0
+ return self.get_current()
+ return None
+
+ def go_last(self):
+ if len(self.stack)>0:
+ self.i=len(self.stack)-1
+ return self.get_current()
+ return None
+
+ def push(self,uid):
+ self.stack=self.stack[-self.size+1:]
+ self.stack.append(uid)
+ self.i=len(self.stack)-1
SQL_GET_LANG_START="""SELECT rowid FROM monajat WHERE lang=? LIMIT 1"""
@@ -58,110 +59,110 @@ SQL_GET_LANGS="""SELECT DISTINCT lang FROM monajat"""
SQL_GET="""SELECT rowid,* FROM monajat WHERE rowid=? LIMIT 1"""
class Monajat (object):
- def __init__(self, width=-1):
- self.h=HistoryEngine()
- self.tw=textwrap.TextWrapper()
- self.tw.break_on_hyphens=False
- self.width=width
- if width!=-1: self.tw.width=width
-
- self.prefix=self.guess_prefix()
- self.db=os.path.join(self.prefix,'data.db')
- self.cn=sqlite3.connect(self.db)
- self.c=self.cn.cursor()
- self.langs=map(lambda a: a[0],self.c.execute(SQL_GET_LANGS).fetchall())
- self.lang_boundary={}
- for l in self.langs:
- i=self.c.execute(SQL_GET_LANG_START, (l,)).fetchone()[0]
- f=self.c.execute(SQL_GET_LANG_END, (l,)).fetchone()[0]
- self.lang_boundary[l]=(i,f)
- self.cn.row_factory=sqlite3.Row
- self.c=self.cn.cursor()
- self.fallback_lang='ar'
- self.set_lang()
- self.cities_db=os.path.join(self.prefix,'cities.db')
- self.cities_cn=sqlite3.connect(self.cities_db)
- self.cities_cn.row_factory=sqlite3.Row
- self.cities_c=self.cities_cn.cursor()
- r=self.cities_c.execute('select v from params where k=?', ('ver',)).fetchone()
- print dict(r)
- if r: self.cities_db_ver=r['v']
- else: self.cities_db_ver='0'
-
- def set_lang(self,lang=None):
- self.h.go_last()
- l=lang or self.guess_lang() or self.fallback_lang
- if l not in self.langs: l=self.fallback_lang
- self.lang=l
-
- def guess_lang(self):
- a=locale.getlocale(locale.LC_MESSAGES)
- if a and a[0]: a=a[0].split('_')
- else: return None
- return a[0]
-
- def guess_prefix(self):
- b='monajat'
- fallback_bin='/usr/bin/'
- fallback_prefix=os.path.join(fallback_bin,'..','share',b)
- e=os.path.realpath(os.path.dirname(sys.argv[0]) or fallback_bin)
- d=os.path.join(e,'monajat-data')
- if os.path.isdir(d): return d
- else:
- d=os.path.join(e,'..','share',b)
- if os.path.isdir(d): return d
- else: return fallback_prefix
-
- def get_prefix(self):
- return self.prefix
-
- def text_warp(self,text):
- l=text.split('\n\n')
- if self.width==-1:
- return "\n".join(map(lambda p: p.replace('\n',' '), l))
- else:
- return "\n".join(map(lambda p: self.tw.fill(p), l))
-
- def get(self,uid=None, lang=None):
- if not lang: lang=self.lang
- if lang not in self.langs: raise IndexError
-
- i,f=self.lang_boundary[lang]
- if not uid:
- uid=randint(i,f)
- self.h.push(uid)
- r=dict(self.c.execute(SQL_GET, (uid,)).fetchone())
- r['text']=self.text_warp(r['text'])
- if r['merits']: r['merits']=self.text_warp(r['merits'])
- return r
-
- def get_current(self):
- u=self.h.get_current()
- if not u: return self.get()
- return self.get(uid=u)
-
- def go_forward(self):
- u=self.h.go_forward()
- r=self.get(uid=u)
- return r
-
- def go_back(self):
- u=self.h.go_back()
- if not u: return self.get_current()
- r=self.get(uid=u)
- return r
-
- def go_first(self):
- u=self.h.go_first()
- if not u: return self.get_current()
- r=self.get(uid=u)
- return r
-
- def go_last(self):
- u=self.h.go_last()
- if not u: return self.get_current()
- r=self.get(uid=u)
- return r
-
- def clear(self):
- self.h.clear()
+ def __init__(self, width=-1):
+ self.h=HistoryEngine()
+ self.tw=textwrap.TextWrapper()
+ self.tw.break_on_hyphens=False
+ self.width=width
+ if width!=-1: self.tw.width=width
+
+ self.prefix=self.guess_prefix()
+ self.db=os.path.join(self.prefix,'data.db')
+ self.cn=sqlite3.connect(self.db)
+ self.c=self.cn.cursor()
+ self.langs=map(lambda a: a[0],self.c.execute(SQL_GET_LANGS).fetchall())
+ self.lang_boundary={}
+ for l in self.langs:
+ i=self.c.execute(SQL_GET_LANG_START, (l,)).fetchone()[0]
+ f=self.c.execute(SQL_GET_LANG_END, (l,)).fetchone()[0]
+ self.lang_boundary[l]=(i,f)
+ self.cn.row_factory=sqlite3.Row
+ self.c=self.cn.cursor()
+ self.fallback_lang='ar'
+ self.set_lang()
+ self.cities_db=os.path.join(self.prefix,'cities.db')
+ self.cities_cn=sqlite3.connect(self.cities_db)
+ self.cities_cn.row_factory=sqlite3.Row
+ self.cities_c=self.cities_cn.cursor()
+ r=self.cities_c.execute('select v from params where k=?', ('ver',)).fetchone()
+ print dict(r)
+ if r: self.cities_db_ver=r['v']
+ else: self.cities_db_ver='0'
+
+ def set_lang(self,lang=None):
+ self.h.go_last()
+ l=lang or self.guess_lang() or self.fallback_lang
+ if l not in self.langs: l=self.fallback_lang
+ self.lang=l
+
+ def guess_lang(self):
+ a=locale.getlocale(locale.LC_MESSAGES)
+ if a and a[0]: a=a[0].split('_')
+ else: return None
+ return a[0]
+
+ def guess_prefix(self):
+ b='monajat'
+ fallback_bin='/usr/bin/'
+ fallback_prefix=os.path.join(fallback_bin,'..','share',b)
+ e=os.path.realpath(os.path.dirname(sys.argv[0]) or fallback_bin)
+ d=os.path.join(e,'monajat-data')
+ if os.path.isdir(d): return d
+ else:
+ d=os.path.join(e,'..','share',b)
+ if os.path.isdir(d): return d
+ else: return fallback_prefix
+
+ def get_prefix(self):
+ return self.prefix
+
+ def text_warp(self,text):
+ l=text.split('\n\n')
+ if self.width==-1:
+ return "\n".join(map(lambda p: p.replace('\n',' '), l))
+ else:
+ return "\n".join(map(lambda p: self.tw.fill(p), l))
+
+ def get(self,uid=None, lang=None):
+ if not lang: lang=self.lang
+ if lang not in self.langs: raise IndexError
+
+ i,f=self.lang_boundary[lang]
+ if not uid:
+ uid=randint(i,f)
+ self.h.push(uid)
+ r=dict(self.c.execute(SQL_GET, (uid,)).fetchone())
+ r['text']=self.text_warp(r['text'])
+ if r['merits']: r['merits']=self.text_warp(r['merits'])
+ return r
+
+ def get_current(self):
+ u=self.h.get_current()
+ if not u: return self.get()
+ return self.get(uid=u)
+
+ def go_forward(self):
+ u=self.h.go_forward()
+ r=self.get(uid=u)
+ return r
+
+ def go_back(self):
+ u=self.h.go_back()
+ if not u: return self.get_current()
+ r=self.get(uid=u)
+ return r
+
+ def go_first(self):
+ u=self.h.go_first()
+ if not u: return self.get_current()
+ r=self.get(uid=u)
+ return r
+
+ def go_last(self):
+ u=self.h.go_last()
+ if not u: return self.get_current()
+ r=self.get(uid=u)
+ return r
+
+ def clear(self):
+ self.h.clear()
diff --git a/monajat/sqlGenerator.py b/monajat/sqlGenerator.py
index eb68e17..8772435 100755
--- a/monajat/sqlGenerator.py
+++ b/monajat/sqlGenerator.py
@@ -4,20 +4,20 @@ import sqlite3
from glob import glob
clear_record={
- 'lang':None,'ref':None,'id':None,
- 'text':None, 'merits':None,
- 'links':None,'media':None
+ 'lang':None,'ref':None,'id':None,
+ 'text':None, 'merits':None,
+ 'links':None,'media':None
}
SCHEMA="""
CREATE TABLE "monajat" (
- "lang" TEXT,
- "ref" TEXT,
- "id" TEXT,
- "text" TEXT,
- "merits" TEXT,
- "links" TEXT,
- "media" TEXT
+ "lang" TEXT,
+ "ref" TEXT,
+ "id" TEXT,
+ "text" TEXT,
+ "merits" TEXT,
+ "links" TEXT,
+ "media" TEXT
);
CREATE INDEX LangIndex on monajat (lang);
@@ -27,40 +27,40 @@ CREATE INDEX RefIndex on monajat (ref);
SQL_ADD_ROW="""INSERT INTO monajat (lang, ref, id, text, merits, links, media) VALUES (:lang, :ref, :id, :text, :merits, :links, :media)"""
def parse(f):
- parsed=clear_record.copy()
- a=map(lambda l: l.decode('utf-8').rstrip(),open(f,"rt").readlines())
- key=None
- for n,l in enumerate(a):
- if l.startswith(u'@'):
- if key: parsed[key]=u'\n'.join(values)
- kv=l[1:].split(u'=',1)
- key=kv[0].strip()
- if len(kv)==2: values=[kv[1]]
- else: values=[]
- else:
- if not key: raise SyntaxError, "error parsing file [%s] at line [%d]" % (f,n+1)
- values.append(l.strip())
- if key: parsed[key]=u'\n'.join(values)
- return parsed
+ parsed=clear_record.copy()
+ a=map(lambda l: l.decode('utf-8').rstrip(),open(f,"rt").readlines())
+ key=None
+ for n,l in enumerate(a):
+ if l.startswith(u'@'):
+ if key: parsed[key]=u'\n'.join(values)
+ kv=l[1:].split(u'=',1)
+ key=kv[0].strip()
+ if len(kv)==2: values=[kv[1]]
+ else: values=[]
+ else:
+ if not key: raise SyntaxError, "error parsing file [%s] at line [%d]" % (f,n+1)
+ values.append(l.strip())
+ if key: parsed[key]=u'\n'.join(values)
+ return parsed
def generate(prefix):
- db=os.path.join(prefix,'data.db')
- pat=os.path.join(prefix,'*','*.txt')
- files=glob(pat)
- files.sort()
- try: os.unlink(db)
- except OSError: pass
- cn=sqlite3.connect(db, isolation_level=None)
- c=cn.cursor()
- c.executescript(SCHEMA)
- c.execute('BEGIN TRANSACTION')
- #for f in sys.argv[1:]:
- for f in files:
- print "adding [%s]..." % f
- c.execute(SQL_ADD_ROW, parse(f))
- c.execute('END TRANSACTION')
- cn.commit()
+ db=os.path.join(prefix,'data.db')
+ pat=os.path.join(prefix,'*','*.txt')
+ files=glob(pat)
+ files.sort()
+ try: os.unlink(db)
+ except OSError: pass
+ cn=sqlite3.connect(db, isolation_level=None)
+ c=cn.cursor()
+ c.executescript(SCHEMA)
+ c.execute('BEGIN TRANSACTION')
+ #for f in sys.argv[1:]:
+ for f in files:
+ print "adding [%s]..." % f
+ c.execute(SQL_ADD_ROW, parse(f))
+ c.execute('END TRANSACTION')
+ cn.commit()
if __name__ == "__main__":
- generate('monajat-data')
+ generate('monajat-data')
diff --git a/monajat/utils.py b/monajat/utils.py
index ecef499..fcfdd40 100644
--- a/monajat/utils.py
+++ b/monajat/utils.py
@@ -1,42 +1,44 @@
+# -*- coding: utf-8 -*-
+# -*- Mode: Python; py-indent-offset: 4 -*-
import sys
bus, bus_name, bus_object=None,None,None
try:
- import dbus
- import dbus.service
- from dbus.mainloop.glib import DBusGMainLoop
+ import dbus
+ import dbus.service
+ from dbus.mainloop.glib import DBusGMainLoop
- dbus_loop = DBusGMainLoop(set_as_default=True)
- bus = dbus.SessionBus()
+ dbus_loop = DBusGMainLoop(set_as_default=True)
+ bus = dbus.SessionBus()
except ImportError: pass
def init_dbus(cb, interface="org.ojuba.Monajat"):
- global bus_name, bus_object
- if not bus: return
- class Manager(dbus.service.Object):
- def __init__(self, cb, bus, path):
- dbus.service.Object.__init__(self,bus,path)
- self.cb=cb
+ global bus_name, bus_object
+ if not bus: return
+ class Manager(dbus.service.Object):
+ def __init__(self, cb, bus, path):
+ dbus.service.Object.__init__(self,bus,path)
+ self.cb=cb
- @dbus.service.method(interface, in_signature='as', out_signature='i')
- def call(self,a):
- return self.cb()
+ @dbus.service.method(interface, in_signature='as', out_signature='i')
+ def call(self,a):
+ return self.cb()
- # values from /usr/include/dbus-1.0/dbus/dbus-shared.h
- r=bus.request_name(interface, flags=0x4)
- if r!=1:
- print "Another process own this service, pass request to it: "
- trials=0; appletbus=False
- while(appletbus==False and trials<20):
- print ".",
- try:
- appletbus=bus.get_object(interface,"/Manager"); break
- except:
- appletbus=False
- time.sleep(1); trials+=1
- print "*"
- if appletbus: exit(appletbus.call(sys.argv[1:],dbus_interface=interface))
- else: print "unable to connect"
- exit(-1)
- bus_name = dbus.service.BusName(interface, bus)
- bus_object = Manager(cb, bus, '/Manager')
+ # values from /usr/include/dbus-1.0/dbus/dbus-shared.h
+ r=bus.request_name(interface, flags=0x4)
+ if r!=1:
+ print "Another process own this service, pass request to it: "
+ trials=0; appletbus=False
+ while(appletbus==False and trials<20):
+ print ".",
+ try:
+ appletbus=bus.get_object(interface,"/Manager"); break
+ except:
+ appletbus=False
+ time.sleep(1); trials+=1
+ print "*"
+ if appletbus: exit(appletbus.call(sys.argv[1:],dbus_interface=interface))
+ else: print "unable to connect"
+ exit(-1)
+ bus_name = dbus.service.BusName(interface, bus)
+ bus_object = Manager(cb, bus, '/Manager')
diff --git a/po/Makefile b/po/Makefile
new file mode 100644
index 0000000..63d8bb4
--- /dev/null
+++ b/po/Makefile
@@ -0,0 +1,44 @@
+APPNAME := monajat
+export APPNAME
+POFILES := $(wildcard *.po)
+MOFILES := $(patsubst %.po,%.mo,$(POFILES))
+CRE_POTFILESin := for i in $(shell cat POTFILES.am ); do echo ../$${i} | sed 's/\s/\n/g; s/\.\.\///g' ; done > POTFILES.in
+
+CAT := cat
+ECHO := echo
+MKDIR := mkdir
+MSGFMT := msgfmt
+INTLTOOL_UPDATE := intltool-update
+RM := $(shell which rm | egrep '/' | sed 's/\s*//g')
+MV := $(shell which mv | egrep '/' | sed 's/\s*//g')
+
+all: $(APPNAME).pot $(MOFILES)
+
+$(APPNAME).pot:
+ @$(CRE_POTFILESin)
+ @$(ECHO) "*** Building $(APPNAME).pot: $(SOURCES)"
+ @$(CAT) POTFILES.in
+ @$(INTLTOOL_UPDATE) -g $(APPNAME) -p
+
+%.mo: %.po
+ @$(ECHO) "- Merging translations into $*.mo"
+ @$(MSGFMT) $*.po -o $*.mo
+ @$(MKDIR) -p ../locale/$*/LC_MESSAGES/ || :
+ @$(ECHO) "- Moving: $*.mo -> ../locale/$*/LC_MESSAGES/$(APPNAME).mo"
+ @$(MV) $*.mo ../locale/$*/LC_MESSAGES/$(APPNAME).mo
+ @$(RM) -f *.tmp
+
+%.po: $(APPNAME).pot
+ @$(ECHO) "- Updating: $*.po"
+ @$(INTLTOOL_UPDATE) -g $(APPNAME) -d $*
+
+clean:
+ @$(ECHO) "*** Cleaning pos..."
+ @$(ECHO) "- Removing: $(APPNAME).pot"
+ @$(RM) -f $(APPNAME).pot
+ @$(ECHO) "- Removing: *.tmp"
+ @$(RM) -f *.tmp
+ @$(ECHO) "- Removing: *.mo"
+ @$(RM) -f *.mo
+ @$(ECHO) "- Removing: POTFILES.in"
+ @$(RM) -f POTFILES.in
diff --git a/po/POTFILES.am b/po/POTFILES.am
new file mode 100644
index 0000000..6d6322a
--- /dev/null
+++ b/po/POTFILES.am
@@ -0,0 +1,3 @@
+*.desktop.in
+monajat/*.py
+screenlets/Monajat/*.py
diff --git a/po/ar.po b/po/ar.po
index e63ac32..5ab7e3a 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat 0.1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2009-12-17 08:12+0000\n"
"Last-Translator: Muayyad Alsadi <Unknown>\n"
"Language-Team: Arabic <ar at li.org>\n"
@@ -18,151 +18,172 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-01-06 04:35+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr "بريمج مناجاة للأذكار"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr "بريمج مناجاة للأذكار"
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr "إعدادات مناجاة"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr "إلغاء"
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr "حفظ"
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr "عام"
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr "بدء تلقائي"
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "إظهار فضائل الذكر"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr "اللغة:"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr "الوقت:"
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr "دقيقة"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr "الموقع"
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr "التنبيه"
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr "الصوت:"
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr "اختر ملف الأذان"
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr "ملفات الصوت"
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr "كل الملفات"
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr "تشغيل"
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr "التنبيه قبل"
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr "توقيف"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr "الفجر"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr "الشروق"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr "الظهر"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr "العصر"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr "المغرب"
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr "العشاء"
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "مناجاة"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "سابق"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr "للخلف"
-#: monajat/applet.py:271
-msgid "next"
-msgstr "لاحق"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr "للأمام"
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "نسخ"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr "حان الآن وقت أذان %s"
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr "بقي %(hours)d ساعة على أذان %(prayer)s"
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr "بقي %(hours)d ساعة و %(minutes)d دقيقة على أذان %(prayer)s"
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr "بقي أقل من %(minutes)d دقيقة على أذان %(prayer)s"
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr "بقي أقل من دقيقة على أذان %(prayer)s"
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "فضائله"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "برنامج الأذكار مناجاة"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr "إعداد"
diff --git a/po/az.po b/po/az.po
index 30f3c00..959e2db 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-08-12 07:55+0000\n"
"Last-Translator: Khanlar <Unknown>\n"
"Language-Team: Azerbaijani <az at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-08-13 05:52+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Gizli dua yalvarışlar"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Gizli dua yalvarışlar"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Mahiyyəti göstərmək"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Dil"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Vaxt dəqiqtə"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Gizli dua"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "əvvəlki"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "sonrakı"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "surətini çıxarmaq"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Onun mahiyyəti"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Gizli dua yalvarışlar"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "əvvəlki"
+
+#~ msgid "next"
+#~ msgstr "sonrakı"
diff --git a/po/bn.po b/po/bn.po
index 3c8dfcb..69792cc 100644
--- a/po/bn.po
+++ b/po/bn.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2009-08-13 16:06+0300\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2011-07-30 15:22+0000\n"
"Last-Translator: himel <Unknown>\n"
"Language-Team: Bengali <bn at li.org>\n"
@@ -18,152 +18,173 @@ msgstr ""
"X-Launchpad-Export-Date: 2011-07-31 04:35+0000\n"
"X-Generator: Launchpad (build 13405)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "মোনাজাত"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 0000000..12f422e
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,189 @@
+# Bosnian translation for monajat
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the monajat package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: monajat\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
+"PO-Revision-Date: 2011-11-27 19:13+0000\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: Bosnian <bs at li.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-11-28 05:18+0000\n"
+"X-Generator: Launchpad (build 14381)\n"
+
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
+msgid "Monajat Configuration"
+msgstr ""
+
+#: ../monajat/applet.py:81
+msgid "Cancel"
+msgstr ""
+
+#: ../monajat/applet.py:82
+msgid "Save"
+msgstr ""
+
+#: ../monajat/applet.py:87
+msgid "Generic"
+msgstr ""
+
+#: ../monajat/applet.py:88
+msgid "Auto start"
+msgstr ""
+
+#: ../monajat/applet.py:91
+msgid "Show merits"
+msgstr ""
+
+#: ../monajat/applet.py:96
+msgid "Language:"
+msgstr ""
+
+#: ../monajat/applet.py:108
+msgid "Time:"
+msgstr ""
+
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
+msgid "minutes"
+msgstr ""
+
+#: ../monajat/applet.py:118
+msgid "Location"
+msgstr ""
+
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
+msgid "Notification"
+msgstr ""
+
+#: ../monajat/applet.py:172
+msgid "Sound:"
+msgstr ""
+
+#: ../monajat/applet.py:173
+msgid "Choose Athan media file"
+msgstr ""
+
+#: ../monajat/applet.py:178
+msgid "Sound Files"
+msgstr ""
+
+#: ../monajat/applet.py:183
+msgid "All files"
+msgstr ""
+
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
+msgid "Play"
+msgstr ""
+
+#: ../monajat/applet.py:193
+msgid "Notify before"
+msgstr ""
+
+#: ../monajat/applet.py:210
+msgid "Stop"
+msgstr ""
+
+#: ../monajat/applet.py:404
+msgid "Fajr"
+msgstr ""
+
+#: ../monajat/applet.py:405
+msgid "Sunrise"
+msgstr ""
+
+#: ../monajat/applet.py:406
+msgid "Dhuhr"
+msgstr ""
+
+#: ../monajat/applet.py:407
+msgid "Asr"
+msgstr ""
+
+#: ../monajat/applet.py:408
+msgid "Maghrib"
+msgstr ""
+
+#: ../monajat/applet.py:409
+msgid "Isha'a"
+msgstr ""
+
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
+msgid "Monajat"
+msgstr ""
+
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
+
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
+
+#: ../monajat/applet.py:426
+msgid "copy"
+msgstr ""
+
+#: ../monajat/applet.py:589
+#, python-format
+msgid "It's now time for %s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:636
+#, python-format
+msgid "%(hours)d hours till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:638
+#, python-format
+msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:640
+#, python-format
+msgid "less than %(minutes)d minutes till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:642
+#, python-format
+msgid "less than a minute till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
+msgid "Its Merits"
+msgstr ""
+
+#: ../monajat/applet.py:727
+msgid "Monajat supplications"
+msgstr ""
+
+#: ../monajat/applet.py:800
+msgid "Configure"
+msgstr ""
diff --git a/po/de.po b/po/de.po
index c3e1213..33c609d 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-02-14 06:18+0000\n"
"Last-Translator: Sabily Team <sabily.team at lists.launchpad.net>\n"
"Language-Team: German <de at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-02-15 04:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Monajat Gebete"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Monajat Gebete"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Zeige Vorzüge"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Sprache"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Zeit in Minuten"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "Vorherige"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "Nächste"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "Kopieren"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Seine Vorzüge"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Monajat Gebete"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "Vorherige"
+
+#~ msgid "next"
+#~ msgstr "Nächste"
diff --git a/po/en_GB.po b/po/en_GB.po
index 5555b55..ff588bb 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-12-12 12:59+0000\n"
"Last-Translator: Lewis Cawte <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB at li.org>\n"
@@ -18,154 +18,176 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-12-13 04:56+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Monajat supplications"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Monajat supplications"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Show merits"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Language"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Time in minutes"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Its Merits"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Monajat supplications"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/es.po b/po/es.po
index dc418b9..b095ac3 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2011-03-20 22:14+0000\n"
"Last-Translator: hhlp <os390l at gmail.com>\n"
"Language-Team: Spanish <es at li.org>\n"
@@ -18,158 +18,186 @@ msgstr ""
"X-Launchpad-Export-Date: 2011-03-21 04:41+0000\n"
"X-Generator: Launchpad (build 12559)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Súplicas"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Súplicas"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr "Cancelar"
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr "Guardar"
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Mostrar méritos"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Idioma:"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Tiempo en minutos"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "anterior"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "siguiente"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "copiar"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Sus méritos"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Súplicas"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+#~ msgid "previous"
+#~ msgstr "anterior"
+
+#~ msgid "next"
+#~ msgstr "siguiente"
+
#~ msgid "Language"
#~ msgstr "Idioma"
diff --git a/po/fa.po b/po/fa.po
index 40ade59..6f85b62 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2009-11-24 23:44+0000\n"
"Last-Translator: Launchpad Translations Administrators <rosetta at launchpad."
"net>\n"
@@ -19,151 +19,172 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-01-06 04:35+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr ""
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index b4c01d7..beb669f 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-01-18 10:57+0000\n"
"Last-Translator: Sabily Team <sabily.team at lists.launchpad.net>\n"
"Language-Team: French <fr at li.org>\n"
@@ -18,151 +18,172 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-01-19 04:40+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/he.po b/po/he.po
index 10dc3f1..1cdf79c 100644
--- a/po/he.po
+++ b/po/he.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-01-18 10:43+0000\n"
"Last-Translator: Launchpad Translations Administrators <rosetta at launchpad."
"net>\n"
@@ -19,151 +19,172 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-01-19 04:40+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/hu.po b/po/hu.po
index b075471..d5d9981 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2011-02-20 22:39+0000\n"
"Last-Translator: Launchpad Translations Administrators <rosetta at launchpad."
"net>\n"
@@ -19,152 +19,173 @@ msgstr ""
"X-Launchpad-Export-Date: 2011-02-21 04:47+0000\n"
"X-Generator: Launchpad (build 12351)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr ""
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/id.po b/po/id.po
index 22af821..cebdfc9 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,165 +7,193 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
-"PO-Revision-Date: 2010-12-02 06:43+0000\n"
-"Last-Translator: Adi Nugroho <adi88nugroho at gmail.com>\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
+"PO-Revision-Date: 2011-10-01 09:58+0000\n"
+"Last-Translator: Zen.I <Unknown>\n"
"Language-Team: Indonesian <id at li.org>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-12-03 05:02+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2011-10-02 04:47+0000\n"
+"X-Generator: Launchpad (build 14071)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Doa dalam Munajat"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Doa dalam Munajat"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Menunjukkan manfaat"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Bahasa"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Waktu dalam menit"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Munajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "sebelumnya"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "berikutnya"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "salin"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Manfaat"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Doa dalam Munajat"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "sebelumnya"
+
+#~ msgid "next"
+#~ msgstr "lanjut"
diff --git a/po/jv.po b/po/jv.po
index cde4f99..49c988c 100644
--- a/po/jv.po
+++ b/po/jv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-07-05 05:32+0000\n"
"Last-Translator: Arief Setiadi Wibowo <q_thrynx at yahoo.com>\n"
"Language-Team: Javanese <jv at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-07-06 03:35+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Donga munajat"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Donga munajat"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Tuduhake paedahe"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Basa"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Wektu ing itungan menit"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Munajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "sakdurunge"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "sakbanjure"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "salin"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Paedahe"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Donga munajat"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "sakdurunge"
+
+#~ msgid "next"
+#~ msgstr "sakbanjure"
diff --git a/po/ku.po b/po/ku.po
index 9657691..cbb4da1 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-01-18 10:46+0000\n"
"Last-Translator: Sabily Team <sabily.team at lists.launchpad.net>\n"
"Language-Team: Kurdish <ku at li.org>\n"
@@ -18,151 +18,172 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-01-19 04:40+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr ""
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr ""
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/po/monajat.pot b/po/monajat.pot
deleted file mode 100644
index fa917a2..0000000
--- a/po/monajat.pot
+++ /dev/null
@@ -1,167 +0,0 @@
-# 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 <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: monajat/applet.py:67
-msgid "Monajat Configuration"
-msgstr ""
-
-#: monajat/applet.py:68
-msgid "Cancel"
-msgstr ""
-
-#: monajat/applet.py:69
-msgid "Save"
-msgstr ""
-
-#: monajat/applet.py:73
-msgid "Generic"
-msgstr ""
-
-#: monajat/applet.py:74
-msgid "Auto start"
-msgstr ""
-
-#: monajat/applet.py:77
-msgid "Show merits"
-msgstr ""
-
-#: monajat/applet.py:82
-msgid "Language:"
-msgstr ""
-
-#: monajat/applet.py:93
-msgid "Time:"
-msgstr ""
-
-#: monajat/applet.py:98 monajat/applet.py:154
-msgid "minutes"
-msgstr ""
-
-#: monajat/applet.py:101
-msgid "Location"
-msgstr ""
-
-#: monajat/applet.py:126
-msgid "Notification"
-msgstr ""
-
-#: monajat/applet.py:129
-msgid "Sound:"
-msgstr ""
-
-#: monajat/applet.py:130
-msgid "Choose Athan media file"
-msgstr ""
-
-#: monajat/applet.py:133
-msgid "Sound Files"
-msgstr ""
-
-#: monajat/applet.py:138
-msgid "All files"
-msgstr ""
-
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
-msgid "Play"
-msgstr ""
-
-#: monajat/applet.py:148
-msgid "Notify before"
-msgstr ""
-
-#: monajat/applet.py:162
-msgid "Stop"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Fajr"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Sunrise"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Dhuhr"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Asr"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Maghrib"
-msgstr ""
-
-#: monajat/applet.py:255
-msgid "Isha'a"
-msgstr ""
-
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
-msgid "Monajat"
-msgstr ""
-
-#: monajat/applet.py:270
-msgid "previous"
-msgstr ""
-
-#: monajat/applet.py:271
-msgid "next"
-msgstr ""
-
-#: monajat/applet.py:272
-msgid "copy"
-msgstr ""
-
-#: monajat/applet.py:405
-#, python-format
-msgid "It's now time for %s prayer"
-msgstr ""
-
-#: monajat/applet.py:449
-#, python-format
-msgid "%(hours)d hours till %(prayer)s prayer"
-msgstr ""
-
-#: monajat/applet.py:451
-#, python-format
-msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
-msgstr ""
-
-#: monajat/applet.py:453
-#, python-format
-msgid "less than %(minutes)d minutes till %(prayer)s prayer"
-msgstr ""
-
-#: monajat/applet.py:455
-#, python-format
-msgid "less than a minute till %(prayer)s prayer"
-msgstr ""
-
-#: monajat/applet.py:465 monajat/applet.py:468
-msgid "Its Merits"
-msgstr ""
-
-#: monajat/applet.py:525
-msgid "Monajat supplications"
-msgstr ""
-
-#: monajat/applet.py:593
-msgid "Configure"
-msgstr ""
diff --git a/po/ms.po b/po/ms.po
index 17c4704..eb0081b 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-12-20 05:12+0000\n"
"Last-Translator: Muhammad Syawal bin Halimun <Unknown>\n"
"Language-Team: Malay <ms at li.org>\n"
@@ -18,154 +18,178 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-12-21 13:25+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
-#, fuzzy
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr "Doa dalam Monajat"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr "Doa dalam Monajat"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Paparkan ciri"
-#: monajat/applet.py:82
-#, fuzzy
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr "Bahasa"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
-#, fuzzy
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr "Masa dalam minit"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "sebelumnya"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "seterusnya"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "salin"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Ciri"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Doa dalam Monajat"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "sebelumnya"
+
+#~ msgid "next"
+#~ msgstr "seterusnya"
diff --git a/po/nds.po b/po/nds.po
index fee8665..926e897 100644
--- a/po/nds.po
+++ b/po/nds.po
@@ -6,166 +6,194 @@
msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2009-08-13 16:06+0300\n"
-"PO-Revision-Date: 2011-08-21 09:38+0000\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
+"PO-Revision-Date: 2011-12-18 15:26+0000\n"
"Last-Translator: Jens Dodenhoff <Unknown>\n"
"Language-Team: Low German <nds at li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-08-22 04:35+0000\n"
-"X-Generator: Launchpad (build 13697)\n"
+"X-Launchpad-Export-Date: 2011-12-19 04:46+0000\n"
+"X-Generator: Launchpad (build 14525)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Monajat Beden"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr "Monajat Beede"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Opwies Bedüdens"
-#: monajat/applet.py:82
-#, fuzzy
+#: ../monajat/applet.py:96
msgid "Language:"
msgstr "Sprak"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
-#, fuzzy
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
msgid "minutes"
msgstr "Tiet in Minuuten"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "Torüg"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "Wieder"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "Koperen"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
-msgstr "Sien Bedüden"
+msgstr "Sien Döögd"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Monajat Beden"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "Verleden"
+
+#~ msgid "next"
+#~ msgstr "Nåkåmen"
+
+#~ msgid "Time in minutes"
+#~ msgstr "Tiet in Minuuten"
diff --git a/po/nl.po b/po/nl.po
index 6440631..2df3f26 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-11-04 17:38+0000\n"
"Last-Translator: Yucel <Unknown>\n"
"Language-Team: Dutch <nl at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-11-05 04:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Monajat smeekbeden"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Monajat smeekbeden"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Toon verdiensten"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Taal"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Tijd in minuten"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Monajat"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "vorige"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "volgende"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "kopiëren"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Zijn eigen Verdiensten"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Monajat smeekbeden"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "vorige"
+
+#~ msgid "next"
+#~ msgstr "volgende"
diff --git a/po/pt.po b/po/pt.po
index b8a6427..3a22a71 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-10-01 18:29+0000\n"
"Last-Translator: Diogo Lavareda <diogolavareda9 at hotmail.com>\n"
"Language-Team: Portuguese <pt at li.org>\n"
@@ -18,153 +18,180 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-10-02 04:58+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Idioma"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Tempo em minutos"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr ""
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "anterior"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "próximo"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "copiar"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "anterior"
+
+#~ msgid "next"
+#~ msgstr "próximo"
diff --git a/po/ru.po b/po/ru.po
index 1e6054a..5b4ce14 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-05-24 23:09+0000\n"
"Last-Translator: Sabily Team <sabily.team at lists.launchpad.net>\n"
"Language-Team: Russian <ru at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-05-26 03:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Молитвы"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Молитвы"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Показать достоинства"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Язык"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Время в минутах"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Сокровенные молитвы (Мунаджат)"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "предыдущая"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "cледующая"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "скопировать"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Его заслуги"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Молитвы"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "предыдущая"
+
+#~ msgid "next"
+#~ msgstr "cледующая"
diff --git a/po/sv.po b/po/sv.po
index b759060..5a243ca 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -6,49 +6,184 @@
msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2009-08-13 16:06+0300\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2011-09-05 22:50+0000\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: Swedish <sv at li.org>\n"
+"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-06 04:39+0000\n"
+"X-Launchpad-Export-Date: 2011-09-07 04:34+0000\n"
"X-Generator: Launchpad (build 13861)\n"
-#: monajat/applet.py:31 monajat/applet.py:107
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
+msgid "Monajat Configuration"
+msgstr ""
+
+#: ../monajat/applet.py:81
+msgid "Cancel"
+msgstr ""
+
+#: ../monajat/applet.py:82
+msgid "Save"
+msgstr ""
+
+#: ../monajat/applet.py:87
+msgid "Generic"
+msgstr ""
+
+#: ../monajat/applet.py:88
+msgid "Auto start"
+msgstr ""
+
+#: ../monajat/applet.py:91
+msgid "Show merits"
+msgstr ""
+
+#: ../monajat/applet.py:96
+msgid "Language:"
+msgstr ""
+
+#: ../monajat/applet.py:108
+msgid "Time:"
+msgstr ""
+
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
+msgid "minutes"
+msgstr ""
+
+#: ../monajat/applet.py:118
+msgid "Location"
+msgstr ""
+
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
+msgid "Notification"
+msgstr ""
+
+#: ../monajat/applet.py:172
+msgid "Sound:"
+msgstr ""
+
+#: ../monajat/applet.py:173
+msgid "Choose Athan media file"
+msgstr ""
+
+#: ../monajat/applet.py:178
+msgid "Sound Files"
+msgstr ""
+
+#: ../monajat/applet.py:183
+msgid "All files"
+msgstr ""
+
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
+msgid "Play"
+msgstr ""
+
+#: ../monajat/applet.py:193
+msgid "Notify before"
+msgstr ""
+
+#: ../monajat/applet.py:210
+msgid "Stop"
+msgstr ""
+
+#: ../monajat/applet.py:404
+msgid "Fajr"
+msgstr ""
+
+#: ../monajat/applet.py:405
+msgid "Sunrise"
+msgstr ""
+
+#: ../monajat/applet.py:406
+msgid "Dhuhr"
+msgstr ""
+
+#: ../monajat/applet.py:407
+msgid "Asr"
+msgstr ""
+
+#: ../monajat/applet.py:408
+msgid "Maghrib"
+msgstr ""
+
+#: ../monajat/applet.py:409
+msgid "Isha'a"
+msgstr ""
+
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr ""
-#: monajat/applet.py:33
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:34
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:35
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:59 monajat/applet.py:62
-msgid "Its Merits"
+#: ../monajat/applet.py:589
+#, python-format
+msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:110
-msgid "Monajat supplications"
+#: ../monajat/applet.py:636
+#, python-format
+msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:146
-msgid "Show merits"
+#: ../monajat/applet.py:638
+#, python-format
+msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:158
-msgid "Language"
+#: ../monajat/applet.py:640
+#, python-format
+msgid "less than %(minutes)d minutes till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:642
+#, python-format
+msgid "less than a minute till %(prayer)s prayer"
+msgstr ""
+
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
+msgid "Its Merits"
+msgstr ""
+
+#: ../monajat/applet.py:727
+msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:170
-msgid "Time in minutes"
+#: ../monajat/applet.py:800
+msgid "Configure"
msgstr ""
diff --git a/po/tr.po b/po/tr.po
index 14cb788..7b13389 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2010-06-04 18:48+0000\n"
"Last-Translator: Murat Bişkin <mbiskin at gmail.com>\n"
"Language-Team: Turkish <tr at li.org>\n"
@@ -18,154 +18,182 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-06-05 03:31+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+#, fuzzy
+msgid "Monajat Applet for supplications"
+msgstr "Yakarış duaları"
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
#, fuzzy
msgid "Monajat Configuration"
msgstr "Yakarış duaları"
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr "Değerlendirmeleri göster"
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Dil"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Dakika olarak"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Yakarış"
-#: monajat/applet.py:270
-msgid "previous"
-msgstr "önceki"
+#: ../monajat/applet.py:424
+msgid "Back"
+msgstr ""
-#: monajat/applet.py:271
-msgid "next"
-msgstr "sonraki"
+#: ../monajat/applet.py:425
+msgid "Forward"
+msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr "kopyala"
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr "Değerlendirmeler"
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr "Yakarış duaları"
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
+
+#~ msgid "previous"
+#~ msgstr "önceki"
+
+#~ msgid "next"
+#~ msgstr "sonraki"
diff --git a/po/tt.po b/po/tt.po
index 4a9c94b..cddee9d 100644
--- a/po/tt.po
+++ b/po/tt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: monajat\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-23 16:03+0300\n"
+"POT-Creation-Date: 2012-07-06 19:11+0200\n"
"PO-Revision-Date: 2011-05-05 09:55+0000\n"
"Last-Translator: Ilnar Salimzyan <Unknown>\n"
"Language-Team: Tatar <tt at li.org>\n"
@@ -18,154 +18,175 @@ msgstr ""
"X-Launchpad-Export-Date: 2011-05-06 04:33+0000\n"
"X-Generator: Launchpad (build 12959)\n"
-#: monajat/applet.py:67
+#: ../monajat-autostart.desktop.in.h:1
+msgid "Monajat Applet for supplications"
+msgstr ""
+
+#: ../monajat-autostart.desktop.in.h:2
+msgid "Monajat in system tray icon"
+msgstr ""
+
+#: ../monajat/applet.py:80
msgid "Monajat Configuration"
msgstr ""
-#: monajat/applet.py:68
+#: ../monajat/applet.py:81
msgid "Cancel"
msgstr ""
-#: monajat/applet.py:69
+#: ../monajat/applet.py:82
msgid "Save"
msgstr ""
-#: monajat/applet.py:73
+#: ../monajat/applet.py:87
msgid "Generic"
msgstr ""
-#: monajat/applet.py:74
+#: ../monajat/applet.py:88
msgid "Auto start"
msgstr ""
-#: monajat/applet.py:77
+#: ../monajat/applet.py:91
msgid "Show merits"
msgstr ""
-#: monajat/applet.py:82
+#: ../monajat/applet.py:96
#, fuzzy
msgid "Language:"
msgstr "Тел"
-#: monajat/applet.py:93
+#: ../monajat/applet.py:108
msgid "Time:"
msgstr ""
-#: monajat/applet.py:98 monajat/applet.py:154
+#: ../monajat/applet.py:115 ../monajat/applet.py:201
#, fuzzy
msgid "minutes"
msgstr "Вакыт арасы (минутларда)"
-#: monajat/applet.py:101
+#: ../monajat/applet.py:118
msgid "Location"
msgstr ""
-#: monajat/applet.py:126
+#: ../monajat/applet.py:121
+msgid "Current city:"
+msgstr ""
+
+#: ../monajat/applet.py:132
+msgid "Please, Secify your city"
+msgstr ""
+
+#: ../monajat/applet.py:146
+msgid "Change city:"
+msgstr ""
+
+#: ../monajat/applet.py:169
msgid "Notification"
msgstr ""
-#: monajat/applet.py:129
+#: ../monajat/applet.py:172
msgid "Sound:"
msgstr ""
-#: monajat/applet.py:130
+#: ../monajat/applet.py:173
msgid "Choose Athan media file"
msgstr ""
-#: monajat/applet.py:133
+#: ../monajat/applet.py:178
msgid "Sound Files"
msgstr ""
-#: monajat/applet.py:138
+#: ../monajat/applet.py:183
msgid "All files"
msgstr ""
-#: monajat/applet.py:141 monajat/applet.py:165 monajat/applet.py:170
+#: ../monajat/applet.py:186 ../monajat/applet.py:213 ../monajat/applet.py:219
msgid "Play"
msgstr ""
-#: monajat/applet.py:148
+#: ../monajat/applet.py:193
msgid "Notify before"
msgstr ""
-#: monajat/applet.py:162
+#: ../monajat/applet.py:210
msgid "Stop"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:404
msgid "Fajr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:405
msgid "Sunrise"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:406
msgid "Dhuhr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:407
msgid "Asr"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:408
msgid "Maghrib"
msgstr ""
-#: monajat/applet.py:255
+#: ../monajat/applet.py:409
msgid "Isha'a"
msgstr ""
-#: monajat/applet.py:268 monajat/applet.py:282 monajat/applet.py:522
+#: ../monajat/applet.py:420 ../monajat/applet.py:422 ../monajat/applet.py:437
+#: ../monajat/applet.py:724 ../screenlets/Monajat/MonajatScreenlet.py:239
msgid "Monajat"
msgstr "Мөнәҗәт"
-#: monajat/applet.py:270
-msgid "previous"
+#: ../monajat/applet.py:424
+msgid "Back"
msgstr ""
-#: monajat/applet.py:271
-msgid "next"
+#: ../monajat/applet.py:425
+msgid "Forward"
msgstr ""
-#: monajat/applet.py:272
+#: ../monajat/applet.py:426
msgid "copy"
msgstr ""
-#: monajat/applet.py:405
+#: ../monajat/applet.py:589
#, python-format
msgid "It's now time for %s prayer"
msgstr ""
-#: monajat/applet.py:449
+#: ../monajat/applet.py:636
#, python-format
msgid "%(hours)d hours till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:451
+#: ../monajat/applet.py:638
#, python-format
msgid "%(hours)d hours and %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:453
+#: ../monajat/applet.py:640
#, python-format
msgid "less than %(minutes)d minutes till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:455
+#: ../monajat/applet.py:642
#, python-format
msgid "less than a minute till %(prayer)s prayer"
msgstr ""
-#: monajat/applet.py:465 monajat/applet.py:468
+#: ../monajat/applet.py:654 ../monajat/applet.py:658
msgid "Its Merits"
msgstr ""
-#: monajat/applet.py:525
+#: ../monajat/applet.py:727
msgid "Monajat supplications"
msgstr ""
-#: monajat/applet.py:593
+#: ../monajat/applet.py:800
msgid "Configure"
msgstr ""
diff --git a/screenlets/Monajat/MonajatScreenlet.py b/screenlets/Monajat/MonajatScreenlet.py
index 00133c3..53fb223 100755
--- a/screenlets/Monajat/MonajatScreenlet.py
+++ b/screenlets/Monajat/MonajatScreenlet.py
@@ -7,8 +7,8 @@
# the terms and conditions of this license.
# Thank you for using free software!
-# MonajatScreenlet (c) Muayyad Saleh Alsadi <alsadi at ojuba.org>
-# based on ClearRssScreenlet (c) Whise <helder.fraga at hotmail.com>
+# MonajatScreenlet (c) Muayyad Saleh Alsadi <alsadi at ojuba.org>
+# based on ClearRssScreenlet (c) Whise <helder.fraga at hotmail.com>
import gettext
@@ -25,297 +25,297 @@ import cgi
is_manager = screenlets.utils.is_manager_running_me()
try:
- from monajat import monajat
+ from monajat import monajat
except:
- if not is_manager:
- screenlets.show_message(None,"You don't have monajat installed!\nInstall monajat-python.")
- sys.exit()
- else:
- print "You don't have monajat installed!\nInstall monajat-python."
- sys.exit()
+ if not is_manager:
+ screenlets.show_message(None,"You don't have monajat installed!\nInstall monajat-python.")
+ sys.exit()
+ else:
+ print "You don't have monajat installed!\nInstall monajat-python."
+ sys.exit()
class MonajatScreenlet(screenlets.Screenlet):
- """Monajat Screenlet for Islamic supplications"""
-
- __name__ = 'MonajatScreenlet'
- __version__ = '0.1'
- __author__ = 'Muayyad Saleh Alsadi <alsadi at ojuba.org>'
- __desc__ = 'Screenlet for periodic Islamic supplications'
-
- #Internals
- __timeout = None
- scrol = 180
- text_x = 10
- text_y = 10
- font = 'Sans 11' # TODO: make it sans
- font_name = font.split(' ')[0]
- rgba_color = (1, 1, 1, 0.9)
- update_interval = 5
- a = ''
- __button_pressed = 1
- p_layout = None
- background_color = (0.65, 0.71, 0.34, 0.8)
- __m=monajat.Monajat() # you may pass width like 20 chars
- lang=__m.lang
+ """Monajat Screenlet for Islamic supplications"""
+
+ __name__ = 'MonajatScreenlet'
+ __version__ = '0.1'
+ __author__ = 'Muayyad Saleh Alsadi <alsadi at ojuba.org>'
+ __desc__ = 'Screenlet for periodic Islamic supplications'
+
+ #Internals
+ __timeout = None
+ scrol = 180
+ text_x = 10
+ text_y = 10
+ font = 'Sans 11' # TODO: make it sans
+ font_name = font.split(' ')[0]
+ rgba_color = (1, 1, 1, 0.9)
+ update_interval = 5
+ a = ''
+ __button_pressed = 1
+ p_layout = None
+ background_color = (0.65, 0.71, 0.34, 0.8)
+ __m=monajat.Monajat() # you may pass width like 20 chars
+ lang=__m.lang
- def __init__(self, **keyword_args):
- """Create a Monajat instance"""
- screenlets.Screenlet.__init__(self, width=200, height=200,
- uses_theme=True, **keyword_args)
- self.__clip1=gtk.Clipboard(selection="CLIPBOARD")
- self.__clip2=gtk.Clipboard(selection="PRIMARY")
- self.theme_name = "default"
- #self.add_menuitem("next", "next")
- self.add_options_group('Monajat', 'Monajat settings:')
- self.add_option(StringOption('Monajat', 'lang', self.lang,
- 'Language', 'set text language', choices=self.__m.langs))
- self.add_option(IntOption('Monajat', 'update_interval',
- self.update_interval, 'Update interval',
- 'The interval for refreshing Monajat text (in minutes)', min=1, max=60))
- self.add_option(FontOption('Monajat','font',
- self.font_name, 'Text Font',
- 'Text font'))
- self.add_option(ColorOption('Monajat', 'rgba_color',
- self.rgba_color, 'Default Color',
- 'The default color of the text ...'))
- self.add_option(ColorOption('Monajat','background_color',
- self.background_color, 'Back color (only with default theme)', 'only works with default theme'))
- self.update_interval = self.update_interval
- gobject.timeout_add(int(100), self.show_text)
-
+ def __init__(self, **keyword_args):
+ """Create a Monajat instance"""
+ screenlets.Screenlet.__init__(self, width=200, height=200,
+ uses_theme=True, **keyword_args)
+ self.__clip1=gtk.Clipboard(selection="CLIPBOARD")
+ self.__clip2=gtk.Clipboard(selection="PRIMARY")
+ self.theme_name = "default"
+ #self.add_menuitem("next", "next")
+ self.add_options_group('Monajat', 'Monajat settings:')
+ self.add_option(StringOption('Monajat', 'lang', self.lang,
+ 'Language', 'set text language', choices=self.__m.langs))
+ self.add_option(IntOption('Monajat', 'update_interval',
+ self.update_interval, 'Update interval',
+ 'The interval for refreshing Monajat text (in minutes)', min=1, max=60))
+ self.add_option(FontOption('Monajat','font',
+ self.font_name, 'Text Font',
+ 'Text font'))
+ self.add_option(ColorOption('Monajat', 'rgba_color',
+ self.rgba_color, 'Default Color',
+ 'The default color of the text ...'))
+ self.add_option(ColorOption('Monajat','background_color',
+ self.background_color, 'Back color (only with default theme)', 'only works with default theme'))
+ self.update_interval = self.update_interval
+ gobject.timeout_add(int(100), self.show_text)
+
- def __setattr__(self, name, value):
- screenlets.Screenlet.__setattr__(self, name, value)
- if name in ('lang','text_x', 'text_y', 'font_name',
- 'rgba_color', 'background_color'):
- if self.window:
- self.redraw_canvas()
- if name == "update_interval":
- if value > 0:
- self.__dict__['update_interval'] = value
- if self.__timeout:
- gobject.source_remove(self.__timeout)
- self.__timeout = gobject.timeout_add(int(value * 60000), self.timer_cb)
- else:
- self.__dict__['update_interval'] = 1
- pass
- if name == 'font': self.font_name = str(value).split(' ')[0]
+ def __setattr__(self, name, value):
+ screenlets.Screenlet.__setattr__(self, name, value)
+ if name in ('lang','text_x', 'text_y', 'font_name',
+ 'rgba_color', 'background_color'):
+ if self.window:
+ self.redraw_canvas()
+ if name == "update_interval":
+ if value > 0:
+ self.__dict__['update_interval'] = value
+ if self.__timeout:
+ gobject.source_remove(self.__timeout)
+ self.__timeout = gobject.timeout_add(int(value * 60000), self.timer_cb)
+ else:
+ self.__dict__['update_interval'] = 1
+ pass
+ if name == 'font': self.font_name = str(value).split(' ')[0]
- def net_menu_cb(self, m, url):
- os.system('xdg-open "%s"' % url)
+ def net_menu_cb(self, m, url):
+ os.system('xdg-open "%s"' % url)
- def create_net_menu(self):
- mm = gtk.Menu()
- links=self.__m.get_current().get('links',u'').split(u'\n')
- for l in links:
- ll=l.split(u'\t',1)
- url=ll[0]
- if len(ll)>1: t=cgi.escape(ll[1])
- else: t=cgi.escape(url)
- i= gtk.MenuItem(t)
- i.connect("activate", self.net_menu_cb,url)
- i.show()
- mm.add(i)
- self.net_menu.set_submenu(mm)
+ def create_net_menu(self):
+ mm = gtk.Menu()
+ links=self.__m.get_current().get('links',u'').split(u'\n')
+ for l in links:
+ ll=l.split(u'\t',1)
+ url=ll[0]
+ if len(ll)>1: t=cgi.escape(ll[1])
+ else: t=cgi.escape(url)
+ i= gtk.MenuItem(t)
+ i.connect("activate", self.net_menu_cb,url)
+ i.show()
+ mm.add(i)
+ self.net_menu.set_submenu(mm)
- def on_init (self):
- print "Screenlet has been initialized."
- # add default menuitems
- self.add_default_menuitems(screenlets.DefaultMenuItem.XML)
- self.net_menu=self.add_menuitem('internet', 'More from internet')
- self.create_net_menu()
- self.add_submenuitem('lang', 'Language', self.__m.langs)
- self.add_default_menuitems()
- import locale
- try:
- os.environ['LANG']=self.lang
- locale.setlocale(locale.LC_ALL, locale.getdefaultlocale(envvars=('LANG',))[0]+'.UTF-8')
- except locale.Error: pass
- if self.lang!=self.__m.lang:
- self.__m.clear()
- self.__m.set_lang(self.lang)
- ld=os.path.join(self.__m.get_prefix(),'..','locale')
- gettext.install('monajat', ld, unicode=0)
- self.refresh_text()
+ def on_init (self):
+ print "Screenlet has been initialized."
+ # add default menuitems
+ self.add_default_menuitems(screenlets.DefaultMenuItem.XML)
+ self.net_menu=self.add_menuitem('internet', 'More from internet')
+ self.create_net_menu()
+ self.add_submenuitem('lang', 'Language', self.__m.langs)
+ self.add_default_menuitems()
+ import locale
+ try:
+ os.environ['LANG']=self.lang
+ locale.setlocale(locale.LC_ALL, locale.getdefaultlocale(envvars=('LANG',))[0]+'.UTF-8')
+ except locale.Error: pass
+ if self.lang!=self.__m.lang:
+ self.__m.clear()
+ self.__m.set_lang(self.lang)
+ ld=os.path.join(self.__m.get_prefix(),'..','locale')
+ gettext.install('monajat', ld, unicode=0)
+ self.refresh_text()
- def menuitem_callback(self, widget, id):
- screenlets.Screenlet.menuitem_callback(self, widget, id)
- if id in self.__m.langs:
- self.__m.set_lang(id)
- self.lang=id
- self.__m.go_forward()
- self.refresh_text()
- if id=="next":
- if len(self.__m.get_current()['text'])> self.scrol:
- self.scrol = self.scrol + 180
- self.redraw_canvas()
- if id=="prev":
- if self.scrol > 180:
- self.scrol = self.scrol - 180
- self.redraw_canvas()
- if id=="option_changed":
- self.option_changed()
- if id=="copy":
- r=self.__m.get_current()['text']
- self.__clip1.set_text(r)
- self.__clip2.set_text(r)
- if id=="refresh":
- self.refresh_text()
- if id=="prev_item":
- self.scrol = 180
- self.__m.go_back()
- self.refresh_text()
- if id=="next_item":
- self.scrol = 180
- self.__m.go_forward()
- self.refresh_text()
+ def menuitem_callback(self, widget, id):
+ screenlets.Screenlet.menuitem_callback(self, widget, id)
+ if id in self.__m.langs:
+ self.__m.set_lang(id)
+ self.lang=id
+ self.__m.go_forward()
+ self.refresh_text()
+ if id=="next":
+ if len(self.__m.get_current()['text'])> self.scrol:
+ self.scrol = self.scrol + 180
+ self.redraw_canvas()
+ if id=="prev":
+ if self.scrol > 180:
+ self.scrol = self.scrol - 180
+ self.redraw_canvas()
+ if id=="option_changed":
+ self.option_changed()
+ if id=="copy":
+ r=self.__m.get_current()['text']
+ self.__clip1.set_text(r)
+ self.__clip2.set_text(r)
+ if id=="refresh":
+ self.refresh_text()
+ if id=="prev_item":
+ self.scrol = 180
+ self.__m.go_back()
+ self.refresh_text()
+ if id=="next_item":
+ self.scrol = 180
+ self.__m.go_forward()
+ self.refresh_text()
- def on_mouse_down(self, event):
-
- if event.type == gtk.gdk.BUTTON_PRESS:
- return self.detect_button(event.x, event.y)
- else:
- return True
- return False
+ def on_mouse_down(self, event):
+
+ if event.type == gtk.gdk.BUTTON_PRESS:
+ return self.detect_button(event.x, event.y)
+ else:
+ return True
+ return False
- def on_mouse_up(self, event):
- # do the active button's action
- if self.__button_pressed:
- if self.__button_pressed == 3:
- if len(self.__m.get_current()['text'])> self.scrol:
- self.scrol = self.scrol + 180
- self.redraw_canvas()
- elif self.__button_pressed == 2:
- self.scrol = 180
- self.redraw_canvas()
- elif self.__button_pressed == 1:
- if self.scrol > 180:
- self.scrol = self.scrol - 180
- self.redraw_canvas()
- elif self.__button_pressed == 4:
- self.scrol = 180
- self.__m.go_forward()
- self.redraw_canvas()
- elif self.__button_pressed == 5:
- r=self.__m.get_current()
- self.__clip1.set_text(r['text'])
- self.__clip2.set_text(r['text'])
- elif self.__button_pressed == 6:
- self.scrol = 180
- self.__m.go_back()
- self.redraw_canvas()
+ def on_mouse_up(self, event):
+ # do the active button's action
+ if self.__button_pressed:
+ if self.__button_pressed == 3:
+ if len(self.__m.get_current()['text'])> self.scrol:
+ self.scrol = self.scrol + 180
+ self.redraw_canvas()
+ elif self.__button_pressed == 2:
+ self.scrol = 180
+ self.redraw_canvas()
+ elif self.__button_pressed == 1:
+ if self.scrol > 180:
+ self.scrol = self.scrol - 180
+ self.redraw_canvas()
+ elif self.__button_pressed == 4:
+ self.scrol = 180
+ self.__m.go_forward()
+ self.redraw_canvas()
+ elif self.__button_pressed == 5:
+ r=self.__m.get_current()
+ self.__clip1.set_text(r['text'])
+ self.__clip2.set_text(r['text'])
+ elif self.__button_pressed == 6:
+ self.scrol = 180
+ self.__m.go_back()
+ self.redraw_canvas()
- self.__button_pressed = 0
- self.redraw_canvas()
- return False
+ self.__button_pressed = 0
+ self.redraw_canvas()
+ return False
- def detect_button(self, x, y):
- x /= (self.scale)
- y /= (self.scale)
- button_det = 0
- if y >= 183 and y <= 196.7:
- if x >= 9 and x <= 62:
- button_det = 4+int((x-9)/18)
- elif x >= 135 and x <= 187:
- button_det = 1+int((x-135)/18)
- print button_det
+ def detect_button(self, x, y):
+ x /= (self.scale)
+ y /= (self.scale)
+ button_det = 0
+ if y >= 183 and y <= 196.7:
+ if x >= 9 and x <= 62:
+ button_det = 4+int((x-9)/18)
+ elif x >= 135 and x <= 187:
+ button_det = 1+int((x-135)/18)
+ print button_det
- self.__button_pressed = button_det
- if button_det:
- self.redraw_canvas()
- return True # we must return boolean for Screenlet.button_press
- else:
- return False
+ self.__button_pressed = button_det
+ if button_det:
+ self.redraw_canvas()
+ return True # we must return boolean for Screenlet.button_press
+ else:
+ return False
- def on_draw(self, ctx):
- ctx.scale(self.scale, self.scale)
+ def on_draw(self, ctx):
+ ctx.scale(self.scale, self.scale)
- ctx.set_operator(cairo.OPERATOR_OVER)
- if self.theme:
- ctx.set_source_rgba(*self.background_color)
- if self.theme_name == 'default':self.draw_rounded_rectangle(ctx,0,0,17,200,200)
- self.theme.render(ctx,'background')
- ctx.save()
- try: name = _("Monajat")
- except NameError: return # gettext is not loaded yet
- self.bidi_dir=pango.ALIGN_CENTER
- #self.bidi_dir=pango.ALIGN_LEFT
- #if self.__m.lang in ['ar','fa']:
- # self.bidi_dir=pango.ALIGN_RIGHT
- #if gtk.widget_get_default_direction()==gtk.TEXT_DIR_LTR:
- # self.bidi_dir=pango.ALIGN_LEFT
- #else:
- # self.bidi_dir=pango.ALIGN_RIGHT
- r=self.__m.get_current()
- self.create_net_menu()
- text = r['text']
- om = '<span font_desc="'+self.font_name+'">'
- cm = '</span>'
- if len(text)> self.scrol:
- self.a = '...>>>'
- else:
- self.a = ''
- self.b = '\n'
- if self.scale > 1 or self.scale <= 0.7:
- self.b =''
- text = self.strip_ml_tags(text)
- ctx.set_source_rgba(*self.rgba_color)
- t = "<b>" + name + "</b>" + "\n" + self.b + text[:self.scrol][self.scrol-180:] + self.a
- self.draw_text(ctx, t , self.text_x, self.text_y, self.font_name, 9.5, (self.width - self.text_x) , self.bidi_dir)
- ctx.fill()
- ctx.restore()
-
- def on_draw_shape(self,ctx):
- ctx.rectangle(0,0,self.width,self.height)
- ctx.fill()
- self.on_draw(ctx)
+ ctx.set_operator(cairo.OPERATOR_OVER)
+ if self.theme:
+ ctx.set_source_rgba(*self.background_color)
+ if self.theme_name == 'default':self.draw_rounded_rectangle(ctx,0,0,17,200,200)
+ self.theme.render(ctx,'background')
+ ctx.save()
+ try: name = _("Monajat")
+ except NameError: return # gettext is not loaded yet
+ self.bidi_dir=pango.ALIGN_CENTER
+ #self.bidi_dir=pango.ALIGN_LEFT
+ #if self.__m.lang in ['ar','fa']:
+ # self.bidi_dir=pango.ALIGN_RIGHT
+ #if gtk.widget_get_default_direction()==gtk.TEXT_DIR_LTR:
+ # self.bidi_dir=pango.ALIGN_LEFT
+ #else:
+ # self.bidi_dir=pango.ALIGN_RIGHT
+ r=self.__m.get_current()
+ self.create_net_menu()
+ text = r['text']
+ om = '<span font_desc="'+self.font_name+'">'
+ cm = '</span>'
+ if len(text)> self.scrol:
+ self.a = '...>>>'
+ else:
+ self.a = ''
+ self.b = '\n'
+ if self.scale > 1 or self.scale <= 0.7:
+ self.b =''
+ text = self.strip_ml_tags(text)
+ ctx.set_source_rgba(*self.rgba_color)
+ t = "<b>" + name + "</b>" + "\n" + self.b + text[:self.scrol][self.scrol-180:] + self.a
+ self.draw_text(ctx, t , self.text_x, self.text_y, self.font_name, 9.5, (self.width - self.text_x) , self.bidi_dir)
+ ctx.fill()
+ ctx.restore()
+
+ def on_draw_shape(self,ctx):
+ ctx.rectangle(0,0,self.width,self.height)
+ ctx.fill()
+ self.on_draw(ctx)
- def strip_ml_tags(self,in_text):
-
- # convert in_text to a mutable object (e.g. list)
- s_list = list(in_text)
- i,j = 0,0
-
- while i < len(s_list):
- # iterate until a left-angle bracket is found
- if s_list[i] == '<':
- while s_list[i] != '>':
-
- s_list.pop(i)
-
- # pops the right-angle bracket, too
- s_list.pop(i)
- else:
- i=i+1
-
- # convert the list back into text
- join_char=''
- return join_char.join(s_list)
+ def strip_ml_tags(self,in_text):
+
+ # convert in_text to a mutable object (e.g. list)
+ s_list = list(in_text)
+ i,j = 0,0
+
+ while i < len(s_list):
+ # iterate until a left-angle bracket is found
+ if s_list[i] == '<':
+ while s_list[i] != '>':
+
+ s_list.pop(i)
+
+ # pops the right-angle bracket, too
+ s_list.pop(i)
+ else:
+ i=i+1
+
+ # convert the list back into text
+ join_char=''
+ return join_char.join(s_list)
- def timer_cb(self):
- """Show a new supplication"""
- self.__m.go_last()
- self.__m.go_forward()
- return self.refresh_text()
+ def timer_cb(self):
+ """Show a new supplication"""
+ self.__m.go_last()
+ self.__m.go_forward()
+ return self.refresh_text()
- def refresh_text(self):
- """Redraw canvas to update the text, used by the timeout function"""
- print("Refreshing text...")
- self.scrol = 180
- self.redraw_canvas()
- print("Done!")
- return True
-
- def show_text(self):
- """Show text on startup properly, return false to do it only once"""
- print("Loading text...")
- self.redraw_canvas()
- print("Done!")
- return False
+ def refresh_text(self):
+ """Redraw canvas to update the text, used by the timeout function"""
+ print("Refreshing text...")
+ self.scrol = 180
+ self.redraw_canvas()
+ print("Done!")
+ return True
+
+ def show_text(self):
+ """Show text on startup properly, return false to do it only once"""
+ print("Loading text...")
+ self.redraw_canvas()
+ print("Done!")
+ return False
# If the program is run directly or passed as an argument to the python
# interpreter then create a Screenlet instance and show it
if __name__ == "__main__":
- import screenlets.session
- screenlets.session.create_session(MonajatScreenlet)
+ import screenlets.session
+ screenlets.session.create_session(MonajatScreenlet)
diff --git a/setup.py b/setup.py
index 3472e3f..0d26a79 100644
--- a/setup.py
+++ b/setup.py
@@ -9,8 +9,8 @@ import os, sys
locales=map(lambda i: ('share/'+i,[''+i+'/monajat.mo',]),glob('locale/*/LC_MESSAGES'))
# data files
data_files=[
- ('share/monajat', ['monajat-data/data.db', 'monajat-data/cities.db', 'monajat-data/athan.ogg', 'monajat-data/monajat.svg'] ),
- ('/etc/xdg/autostart',['monajat-autostart.desktop']),
+ ('share/monajat', ['monajat-data/data.db', 'monajat-data/cities.db', 'monajat-data/athan.ogg', 'monajat-data/monajat.svg'] ),
+ ('/etc/xdg/autostart',['monajat-autostart.desktop']),
]
data_files.extend(locales)
@@ -18,29 +18,29 @@ from distutils.command.build import build
from distutils.command.clean import clean
class my_build(build):
- def run(self):
- build.run(self)
- # generate data
- import monajat.sqlGenerator
- if not os.path.isfile('monajat-data/data.db'):
- monajat.sqlGenerator.generate('monajat-data')
+ def run(self):
+ build.run(self)
+ # generate data
+ import monajat.sqlGenerator
+ if not os.path.isfile('monajat-data/data.db'):
+ monajat.sqlGenerator.generate('monajat-data')
class my_clean(clean):
- def run(self):
- clean.run(self)
- try: os.unlink('monajat-data/data.db')
- except OSError: pass
+ def run(self):
+ clean.run(self)
+ try: os.unlink('monajat-data/data.db')
+ except OSError: pass
# do the install
setup (name='monajat', version='2.3.0',
- description='Monajat Islamic Supplications',
- author='Muayyad Saleh Alsadi',
- author_email='sabily.team at lists.launchpad.net',
- url='http://git.ojuba.org/cgit/monajat/about/',
- license='GPLv2',
- packages=['monajat'],
- scripts=['monajat-applet', 'monajat-mod'],
- cmdclass={'build': my_build, 'clean': my_clean},
- data_files=data_files
+ description='Monajat Islamic Supplications',
+ author='Muayyad Saleh Alsadi',
+ author_email='sabily.team at lists.launchpad.net',
+ url='http://git.ojuba.org/cgit/monajat/about/',
+ license='GPLv2',
+ packages=['monajat'],
+ scripts=['monajat-applet', 'monajat-mod'],
+ cmdclass={'build': my_build, 'clean': my_clean},
+ data_files=data_files
)
diff --git a/update-pot.sh b/update-pot.sh
deleted file mode 100755
index 376a16b..0000000
--- a/update-pot.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#! /bin/bash
-xgettext -o "po/monajat.pot" monajat/*.py
-pushd po
-for i in *.po
-do
-po=$i
-msgmerge "$po" "monajat.pot" > "$po.tmp" && \
-mv "$po.tmp" "$po"
-done
-popd
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-islamic/packages/monajat.git
More information about the Debian-islamic-commits
mailing list