The branch, eden has been updated
via ae977805644cf705f179900a5b659a68b692b35a (commit)
via 24da3e1d86ca038b6f4ce9c751521403648739f9 (commit)
from f703dd817cda6f053e5a8498d3d1bc44c52ac902 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=ae977805644cf705f179900a5b659a68b692b35a
commit ae977805644cf705f179900a5b659a68b692b35a
Author: Martijn Kaijser <[email protected]>
Date: Sun Nov 18 11:14:30 2012 +0100
[script.xbmcbackup] 0.1.8
diff --git a/script.xbmcbackup/addon.xml b/script.xbmcbackup/addon.xml
index 338d24a..616932a 100644
--- a/script.xbmcbackup/addon.xml
+++ b/script.xbmcbackup/addon.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.xbmcbackup"
- name="XBMC Backup" version="0.1.6" provider-name="robweber">
+ name="XBMC Backup" version="0.1.8" provider-name="robweber">
<requires>
<import addon="xbmc.python" version="2.0"/>
</requires>
@@ -9,13 +9,29 @@
</extension>
<extension point="xbmc.service" library="scheduler.py" start="startup" />
<extension point="xbmc.addon.metadata">
- <summary lang="fr">Sauvegarder et restaurer vos bases de données XBMC et
vos fichiers de configuration en cas de crash ou de fichiers
corrompus.</summary>
<summary lang="de">Die XBMC Datenbank sichern und bei Dateiverlust oder
Beschädigung wiederherstellen.</summary>
<summary lang="en">Backup and restore your XBMC database and configuration
files in the event of a crash or file corruption.</summary>
- <description lang="fr">Avez-vous déjà perdu votre configuration XBMC
et espéré avoir fait une sauvegarde ? Maintenant, vous pouvez le faire en un
simple click. Vous pouvez exporter vos bases de données, playlists,
miniatures, addons et autres fichiers de configuration vers n'importe quel
endroit accessible depuis XBMC.</description>
+ <summary lang="es">Haz copia de seguridad de tu base de datos y
configuración y recupera todo en caso de fallo.</summary>
+ <summary lang="es_MX">Respalda y restaura tu base de datos y archivos de
configuración de XBMC dado el evento de un cuelgue o corrupción de archivos.
</summary>
+ <summary lang="fr">Sauvegarder et restaurer vos bases de données XBMC et
vos fichiers de configuration en cas de crash ou de fichiers
corrompus.</summary>
+ <summary lang="he">××××× ×ש×××ר ××¡× ×× ×ª×× ××
××§××¦× ××××ר×ת ×©× XBMC ×××§×¨× ×©× ×§×¨××¡× ×× ×§×צ××
פ×××××.</summary>
+ <summary lang="lt">AtsarginÄ kopija katra atkuria jÅ«sų XBMC duomenų
bazÄ ir konfigÅ«racijos failus avarijos ar failo sugadinimo metu.</summary>
+ <summary lang="pl">Stwórz kopiÄ bezpieczeÅÅtwa oraz przywrÃ³Ä twojÄ
bazÄ XBMC ÅÄ
cznie z plikami konfiguracyjnymi w przypadku awarii lub
uszkodzenia plików.</summary>
+ <summary lang="pt_BR">Backup e restaure o banco de dados do XBMC e seus
arquivos de configuração, no caso de falha ou corrupção de arquivo</summary>
+ <summary lang="sk">Zálohovanie a obnova XBMC databázy a konfiguraÄných
súborov pre prÃpad havárie alebo poÅ¡kodenia súboru.</summary>
+ <summary lang="sv">Ta backupp av eller återställ din XBMC-databas och
konfigurationsfiler i händelse av en krash eller filkorruption.</summary>
<description lang="de">Jemals deine XBMC Konfiguration zerschossen und dir
dann gewünscht, dass ein Backup existiert? Jetzt kannst du eine Sicherung mit
nur einem Klick erzeugen. Du kannst deine Datenbanen, Playlisten, Thumbnails,
Addons und andere Details zu einem Ort deiner Wahl sichern.</description>
<description lang="en">Ever hosed your XBMC configuration and wished you'd
had a backup? Now you can with one easy click. You can export your database,
playlist, thumbnails, addons and other configuration details to any source
writeable by XBMC. Backups can be run on demand or via a scheduler.
</description>
+ <description lang="es_MX">¿Alguna vez haz echado a perder tu
configuración de XBMC y haz deseado tener un respaldo? Ahora puedes tenerlo
con un simple click. Puedes exportar tu base de datos, listas de reproducción,
miniaturas, addons y otros detalles de configuración correspondientes a
cualquier fuente que pueda escribir XBMC. Los respaldos pueden ser efectuados a
pedido o mediante una programación temporal</description>
+ <description lang="fr">Avez-vous déjà perdu votre configuration XBMC et
espéré avoir fait une sauvegarde ? Maintenant, vous pouvez le faire en un
simple click. Vous pouvez exporter vos bases de données, playlists,
miniatures, addons et autres fichiers de configuration vers n'importe quel
endroit accessible depuis XBMC.</description>
+ <description lang="he">Ever hosed your XBMC configuration and wished you'd
had a backup? Now you can with one easy click. You can export your database,
playlist, thumbnails, addons and other configuration details to any source
writeable by XBMC. Backups can be run on demand or via a scheduler.
</description>
+ <description lang="lt">Kada naujinate ir konfiguruojate savo XBMC ar
susimastÄte, kad jums reikalinga atsarginÄ kopija? Dabar galite tai atlikti
vienu spustelÄjimu. Savo duomenų bazes, atkÅ«rimÄ
, miniatiūras, priedus ir
kitas konfigūracijos failus galite eksportuoti iš bet kokio šaltinio.
AtsarginÄ(-Äs) kopija(-os) gali bÅ«ti paleistos pareikalavus arba per
tvarkaraštį.</description>
+ <description lang="pl">StraciÅeÅ kiedyÅ swojÄ
konfiguracjÄ XBMC i
marzyÅeÅ o tym by mieÄ backup? Teraz już możesz i to w prosty sposób.
Możesz eksportowaÄ twojÄ
bazÄ, playlisty, miniatury, dodatki oraz wiele
wiÄcej do dowolnego źródÅÄ
prosto z XBMC. Kopia bezpieczeÅstwa może byÄ
uruchomiona na rzÄ
danie lub przez plan.</description>
+ <description lang="pt_BR">Sempre se preocupou com sua configuração do
XBMC e desejou ter backup? Agora você pode, e somente com um simples clique.
Você pode exportar seu banco de dados, lista de reprodução, miniaturas,
addons e outros detalhes de configuração para qualquer fonte gravável pelo
XBMC. Os backups podem ser executados sob demanda ou ser
agendados.</description>
+ <description lang="sk">Už ste niekedy poškodili konfiguráciu XBMC a
priali si mať zálohu? Teraz môžete - na jeden klik. Môžete exportovať
Vašu databázu, playlist, náhľady, doplnky a konfigurácie na ktorýkoľvek
zdroj zapisovateľný XBMC. Zálohy môžu byť púšťané na požiadanie
alebo plánovaÄom. </description>
+ <description lang="sv">Har du någonsin tappat bort din XBMC konfiguration
och önskat att du hade en backup? Nu kan du enkelt med ett klick. Du kan
exportera din databas, spellista, minityrer, tillägg och andra
konfigurationsdetaljer till valfri källa som är skrivbar för XBMC. Backupper
kan köras på begäran eller via scheman.</description>
<platform>all</platform>
- <language></language>
</extension>
</addon>
+
+
diff --git a/script.xbmcbackup/changelog.txt b/script.xbmcbackup/changelog.txt
index 3d9005b..49511c5 100644
--- a/script.xbmcbackup/changelog.txt
+++ b/script.xbmcbackup/changelog.txt
@@ -1,16 +1,24 @@
-[b]Version 0.1.6[/b]
+Version 0.1.8
+
+moved eden to new branch, frodo is now master
+
+Version 0.1.7
+
+minor bug fixes and translations updates
+
+Version 0.1.6
merged scheduler branch with master, can now schedule backups on an interval
-[b]Version 0.1.5[/b]
+Version 0.1.5
pulled xbmcbackup class into separate library
-[b]Version 0.1.4[/b]
+Version 0.1.4
added more verbose error message for incorrect paths
-[b]Version 0.1.3[/b]
+Version 0.1.3
backup folder format - thanks zeroram
@@ -22,53 +30,53 @@ updated utf-8 encoding for all logging
backup now uses date as folder name, restore allows user to type date of last
backup
-[b]Version 0.1.2[/b]
+Version 0.1.2
added French language translation - thanks mikebzh44
added some utf-8 encoding tags to filenames
-[b]Version 0.1.1[/b]
+Version 0.1.1
added check for key in vfs.py - Thanks Martijn!
-[b]Version 0.1.0[/b]
+Version 0.1.0
removed transparency from icon.png
-[b]Version 0.0.9 [/b]
+Version 0.0.9
modified vfs.py again to filter out xsp files (smart playlists). Created
running list for these types of compressed files
added enable/disable logging toggle in settings
-[b]Version 0.0.8[/b]
+Version 0.0.8
modified vfs.py script to exclude handling zip files as directories, added
keymap and peripheral data folders in the "config" section
-[b]Version 0.0.7[/b]
+Version 0.0.7
removed "restore.txt" file and now write file listing to memory list instead
-[b]Version 0.0.6[/b]
+Version 0.0.6
Added the vfs module created by paddycarey
File Selection is now followed for both backup and restore options
-[b]Version 0.0.5[/b]
+Version 0.0.5
Added option to manually type a path rather than browse for one (only one used)
Show progress bar right away so you know this is doing something
-[b]Version 0.0.4[/b]
+Version 0.0.4
Finished code for restore mode.
-[b]Version 0.0.3[/b]
+Version 0.0.3
Added progress bar and "silent" option for running on startup or as a script
-[b]Version 0.0.2[/b]
+Version 0.0.2
First version, should backup directories as needed
diff --git a/script.xbmcbackup/resources/language/French/strings.xml
b/script.xbmcbackup/resources/language/French/strings.xml
index 1ffc3cc..cbaa96f 100644
--- a/script.xbmcbackup/resources/language/French/strings.xml
+++ b/script.xbmcbackup/resources/language/French/strings.xml
@@ -1,33 +1,48 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<string id="30010">Sauvegarde XBMC</string>
- <string id="30011">Général</string>
- <string id="30012">Sélection des fichiers</string>
-
+ <string id="30011">Général</string>
+ <string id="30012">Sélection des fichiers</string>
+ <string id="30013">Planification</string>
<string id="30016">Sauvegarde</string>
<string id="30017">Restauration</string>
<string id="30018">Parcourir</string>
<string id="30019">Saisir</string>
<string id="30020">Parcourir le chemin de sauvegarde</string>
- <string id="30021">Nom du répertoire de sauvegarde</string>
+ <string id="30021">Nom du répertoire de sauvegarde</string>
<string id="30022">Mode silencieux</string>
<string id="30023">Mode</string>
<string id="30024">Saisir le chemin de sauvegarde</string>
<string id="30025">Mode de saisie du chemin</string>
-
<string id="30030">Addons de l'utilisaeur</string>
- <string id="30031">Données des addons</string>
- <string id="30032">Bases de données</string>
- <string id="30033">Playlists</string>
+ <string id="30031">Données des addons</string>
+ <string id="30032">Base de données</string>
+ <string id="30033">Playliste</string>
<string id="30034">Miniatures / Fanart</string>
<string id="30035">Fichiers de configuration</string>
-
<string id="30045">Erreur : chemin distant n'existe pas</string>
- <string id="30046">Démarrage</string>
+ <string id="30046">Démarrage</string>
<string id="30047">Dossier Local</string>
<string id="30048">Dossier Distant</string>
<string id="30049">Collecte de la liste des fichiers</string>
<string id="30050">Le chemin distant existe - d'anciens fichiers peuvent
s'y trouver !</string>
- <string id="30051">Création de la liste des fichiers</string>
+ <string id="30051">Création de la liste des fichiers</string>
<string id="30052">Ecriture du fichier</string>
-</strings>
\ No newline at end of file
+ <string id="30053">Démarrage de la sauvegarde planifiée</string>
+ <string id="30060">Activer le planificateur</string>
+ <string id="30061">Planifier</string>
+ <string id="30062">Heure</string>
+ <string id="30063">Jour de la semaine</string>
+ <string id="30064">Planification Cron</string>
+ <string id="30065">Dimanche</string>
+ <string id="30066">Lundi</string>
+ <string id="30067">Mardi</string>
+ <string id="30068">Mercredi</string>
+ <string id="30069">Jeudi</string>
+ <string id="30070">Vendredi</string>
+ <string id="30071">Samedi</string>
+ <string id="30072">Chaque jour</string>
+ <string id="30073">Chaque semaine</string>
+ <string id="30074">Premier jour du mois</string>
+ <string id="30075">Planification personnalisée</string>
+</strings>
diff --git a/script.xbmcbackup/resources/language/German/strings.xml
b/script.xbmcbackup/resources/language/German/strings.xml
index 05755bd..4fc9465 100644
--- a/script.xbmcbackup/resources/language/German/strings.xml
+++ b/script.xbmcbackup/resources/language/German/strings.xml
@@ -1,33 +1,48 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="30010">XBMC Backup</string>
- <string id="30011">Allgemein</string>
- <string id="30012">Datenauswahl</string>
-
- <string id="30016">Sichern</string>
- <string id="30017">Wiederherstellen</string>
- <string id="30018">Verzeichnis wählen</string>
- <string id="30019">Verzeichnis eintippen</string>
- <string id="30020">Entferntes Verzeichnis wählen</string>
- <string id="30021">Sicherungsverzeichnisname</string>
- <string id="30022">Im Hintergrund arbeiten</string>
- <string id="30023">Modus</string>
- <string id="30024">Entferntes Verzeichnis</string>
- <string id="30025">Typ Entferntes Verzeichnis</string>
-
- <string id="30030">Benutzer Addons</string>
- <string id="30031">Addon Data</string>
- <string id="30032">Datenbanken</string>
- <string id="30033">Playlisten</string>
- <string id="30034">Thumbnails/Fanart</string>
- <string id="30035">Config Dateien</string>
-
- <string id="30045">Fehler: Entferntes Verzeichnis nicht
konfiguriert</string>
- <string id="30046">Starte</string>
- <string id="30047">Lokales Verzeichnis</string>
- <string id="30048">Entferntes Verzeichnis</string>
- <string id="30049">Dateiliste wird erzeugt</string>
- <string id="30050">Entferntes Verzeichnis existiert - es könnte
bereits Dateien beinhalten!</string>
- <string id="30051">Dateiliste wird erzeugt</string>
- <string id="30052">Schreibe Datei</string>
+ <string id="30010">XBMC Backup</string>
+ <string id="30011">Allgemein</string>
+ <string id="30012">Datenauswahl</string>
+ <string id="30013">Zeitplan</string>
+ <string id="30016">Sichern</string>
+ <string id="30017">Wiederherstellen</string>
+ <string id="30018">Verzeichnis wählen</string>
+ <string id="30019">Verzeichnis eintippen</string>
+ <string id="30020">Entferntes Verzeichnis wählen</string>
+ <string id="30021">Sicherungsverzeichnisname</string>
+ <string id="30022">Im Hintergrund arbeiten</string>
+ <string id="30023">Modus</string>
+ <string id="30024">Entferntes Verzeichnis</string>
+ <string id="30025">Typ Entferntes Verzeichnis</string>
+ <string id="30030">Benutzer Addons</string>
+ <string id="30031">Addon Daten</string>
+ <string id="30032">Datenbanken</string>
+ <string id="30033">Playlisten</string>
+ <string id="30034">Thumbnails/Fanart</string>
+ <string id="30035">Config Dateien</string>
+ <string id="30045">Fehler: Entferntes Verzeichnis nicht
konfiguriert</string>
+ <string id="30046">Starte</string>
+ <string id="30047">Lokales Verzeichnis</string>
+ <string id="30048">Entferntes Verzeichnis</string>
+ <string id="30049">Dateiliste wird erzeugt</string>
+ <string id="30050">Entferntes Verzeichnis existiert - es könnte bereits
Dateien beinhalten!</string>
+ <string id="30051">Dateiliste wird erzeugt</string>
+ <string id="30052">Schreibe Datei</string>
+ <string id="30053">Starte geplantes backup</string>
+ <string id="30060">Zeitplaner einschalten</string>
+ <string id="30061">Zeitplan</string>
+ <string id="30062">Stunde</string>
+ <string id="30063">Wochentag</string>
+ <string id="30064">Cron Plan</string>
+ <string id="30065">Sonntag</string>
+ <string id="30066">Montag</string>
+ <string id="30067">Dienstag</string>
+ <string id="30068">Mittwoch</string>
+ <string id="30069">Donnerstag</string>
+ <string id="30070">Freitag</string>
+ <string id="30071">Samstag</string>
+ <string id="30072">Jeden Tag</string>
+ <string id="30073">Jede Woche</string>
+ <string id="30074">Erster Tag eines Monats</string>
+ <string id="30075">Benutzerdefiniert</string>
</strings>
diff --git a/script.xbmcbackup/scheduler.py b/script.xbmcbackup/scheduler.py
index 04e821f..42f00c7 100644
--- a/script.xbmcbackup/scheduler.py
+++ b/script.xbmcbackup/scheduler.py
@@ -44,8 +44,9 @@ class BackupScheduler:
#run the job in backup mode, hiding the dialog box
backup = XbmcBackup()
backup.run(XbmcBackup.Backup,True)
-
- self.findNextRun(now)
+ self.findNextRun(now,True)
+ else:
+ self.findNextRun(now)
time.sleep(10)
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=24da3e1d86ca038b6f4ce9c751521403648739f9
commit 24da3e1d86ca038b6f4ce9c751521403648739f9
Author: Martijn Kaijser <[email protected]>
Date: Sun Nov 18 11:12:26 2012 +0100
[script.linphone] 0.0.8
diff --git a/script.linphone/addon.xml b/script.linphone/addon.xml
index d6021f7..aedbf7d 100644
--- a/script.linphone/addon.xml
+++ b/script.linphone/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.linphone"
name="Linphonec"
- version="0.0.6"
+ version="0.0.8"
provider-name="PostMet Corporation">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/script.linphone/phone_book.pb b/script.linphone/phone_book.pb
index 9e26dfe..0637a08 100644
--- a/script.linphone/phone_book.pb
+++ b/script.linphone/phone_book.pb
@@ -1 +1 @@
-{}
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/script.linphone/resources/lib/gui.py
b/script.linphone/resources/lib/gui.py
index cafb26f..6699d32 100644
--- a/script.linphone/resources/lib/gui.py
+++ b/script.linphone/resources/lib/gui.py
@@ -7,7 +7,7 @@
# *
# * zip script.linphone.zip script.linphone/* -r
-import os, sys
+import os, sys, ast
import xbmc
import xbmcgui
import time
@@ -30,6 +30,9 @@ _ = sys.modules[ "__main__" ].__language__
RIGHT_SHIFT = 340
DOWN_SHIFT = 100
+SIZE_KEYCODE = 58
+SELFVIEW_KEYCODE = 59
+
WIDTH = int(xbmcgui.Window().getWidth())
HEIGHT = int(xbmcgui.Window().getHeight())
RIGHT_SHIFT = int(WIDTH * 350 / 1280)
@@ -38,6 +41,30 @@ PERCENT1 = ((HEIGHT - RIGHT_SHIFT) * 100) / HEIGHT
PERCENT2 = ((WIDTH - DOWN_SHIFT) * 100) / WIDTH
PERCENT = int((PERCENT1 + PERCENT2) / 2)
+VIEW_SIZE = 4
+SELF_VIEW_POS = 1
+
+proport = float(WIDTH) / HEIGHT
+
+if proport < 1.6:
+ min_width = 800
+ min_height = int(800 / proport)
+else:
+ min_width = int(500 * proport)
+ min_height = 500
+
+step = int((WIDTH - RIGHT_SHIFT - min_width) / 2)
+
+VIEW_SIZES = [[], [], [], [], []]
+VIEW_SIZES[0] = [min_width, min_height]
+#VIEW_SIZES[1] = [WIDTH - RIGHT_SHIFT - step * 2, int((WIDTH - RIGHT_SHIFT -
step * 2)/ proport)]
+VIEW_SIZES[1] = [WIDTH - RIGHT_SHIFT - step , int((WIDTH - RIGHT_SHIFT -
step )/ proport)]
+VIEW_SIZES[2] = [WIDTH - RIGHT_SHIFT, int((WIDTH - RIGHT_SHIFT) / proport)]
+VIEW_SIZES[3] = [WIDTH - RIGHT_SHIFT / 2, int((WIDTH - RIGHT_SHIFT / 2) /
proport)]
+VIEW_SIZES[4] = [WIDTH, HEIGHT]
+
+SELF_VIEWS = [-1, 0, 3, 1, 2]
+
wm = pyinotify.WatchManager()
mask = pyinotify.IN_MODIFY # watched events
last_log_pos = 0
@@ -68,14 +95,14 @@ class GUI( xbmcgui.WindowXML ):
wm.add_watch('/home/' + SYSTEM_USER + '/linphone.log', mask)
LP_WIN = self
- self.slider.setPercent(PERCENT)
- xlog(PERCENT)
+ #self.slider.setPercent(PERCENT)
self.btn_settings.setLabel(__language__(30501))
#self.btn_recieved.setLabel(__language__(30503))1
- if (list_type == 'contacts'):
- self.list_contacts.addItems(pb.keys()[-10:])
+ if list_type == 'contacts':
+ for row in pb:
+ self.list_contacts.addItem(row[0])
else:
- self.list_contacts.addItems(last_calls[-10:])
+ self.list_contacts.addItems(last_calls)
LP_WIN.btn_hangup.setVisible(False)
LP_WIN.btn_answer.setVisible(False)
@@ -96,15 +123,19 @@ class GUI( xbmcgui.WindowXML ):
self.control_btn_recent_id = 5003
#self.control_btn_recieved_id = 5007 #2px
self.control_list_contacts_id = 5008
- self.control_slider_id = 5009
+ #self.control_slider_id = 5009
+ self.control_btn_scaler_id = 5010
self.control_btn_add_contact_id = 5011
+ self.control_btn_self_view_id = 5012
self.control_label_status_id = 5051
self.control_btn_context_id = 5019
#controls
self.btn_hangup = self.getControl(self.control_btn_hangup_id)
self.btn_contacts = self.getControl(self.control_btn_contacts_id)
- self.slider = self.getControl(self.control_slider_id)
+ #self.slider = self.getControl(self.control_slider_id)
+ self.btn_scaler = self.getControl(self.control_btn_scaler_id)
+ self.btn_self_view = self.getControl(self.control_btn_self_view_id)
self.btn_close = self.getControl(self.control_btn_close_id)
self.btn_call_to = self.getControl(self.control_btn_call_to_id)
self.btn_answer = self.getControl(self.control_btn_answer_id)
@@ -119,9 +150,7 @@ class GUI( xbmcgui.WindowXML ):
list_top_pos = int(HEIGHT / 720) + 90
self.addControl(xbmcgui.ControlImage(970, list_top_pos - 3, 306, 306,
__cwd__ + '/resources/skins/Default/media/list_bg.png'))
-
- self.list_contacts = xbmcgui.ControlList(973, list_top_pos, 300, 300,
font = 'font12', selectedColor = "0xFF000000", textColor = '0xFFFFFFFF',
buttonTexture = 'button-nofocus.png', buttonFocusTexture = 'button-focus.png',
itemHeight = 25, space = 2)
-
+ self.list_contacts = xbmcgui.ControlList(973, list_top_pos, 300, 330,
font = 'font12', selectedColor = "0xFF000000", textColor = '0xFFFFFFFF',
buttonTexture = 'button-nofocus.png', buttonFocusTexture = 'button-focus.png',
itemHeight = 25, space = 2)
self.addControl(self.list_contacts)
self.control_list_contacts_id = self.list_contacts.getId()
@@ -131,9 +160,11 @@ class GUI( xbmcgui.WindowXML ):
self.list_contacts.controlRight(self.btn_context)
if is_full_ver > 0:
- self.slider.setVisible(True)
+ self.btn_scaler.setVisible(True)
+ self.btn_self_view.setVisible(True)
else:
- self.slider.setVisible(False)
+ self.btn_scaler.setVisible(False)
+ self.btn_self_view.setVisible(False)
self.btn_recent.controlDown(self.list_contacts)
self.btn_contacts.controlDown(self.list_contacts)
self.btn_call_to.controlUp(self.list_contacts)
@@ -154,32 +185,41 @@ class GUI( xbmcgui.WindowXML ):
global call_status
global list_type
global selected_list_item
+ global current_name
xlog("(onClick)CONTROL ID = "+str(controlId))
- if controlId == self.control_slider_id:
- prev_percent = PERCENT
- PERCENT = int(self.slider.getPercent())
- height = int((PERCENT * HEIGHT) / 100.0)
- width = int((PERCENT * WIDTH) / 100.0)
- if width < 800 or height < 500:
- self.slider.setPercent(prev_percent)
- else:
- xlog("HEIGHT = %s, WIDTH = %s" % (height, width))
- linphoneGeneric("pwindow size %s %s" % (width, height) )
- linphoneGeneric("scale size %s %s" % (width, height) )
+ if controlId == self.control_btn_self_view_id:
+ self.changeSelfViewPos()
+
+ if controlId == self.control_btn_scaler_id:
+ self.changeViewSize()
+
+ #if controlId == self.control_slider_id:
+ # prev_percent = PERCENT
+ # PERCENT = int(self.slider.getPercent())
+ # height = int((PERCENT * HEIGHT) / 100.0)
+ # width = int((PERCENT * WIDTH) / 100.0)
+ # if width < 800 or height < 500:
+ # self.slider.setPercent(prev_percent)
+ # else:
+ # xlog("HEIGHT = %s, WIDTH = %s" % (height, width))
+ # linphoneGeneric("pwindow size %s %s" % (width, height) )
+ # linphoneGeneric("scale size %s %s" % (width, height) )
if controlId == self.control_list_contacts_id:
self.item = self.list_contacts.getSelectedItem()
LP_WIN.label_status.setLabel("Status: Dialing...")
if list_type == 'contacts':
- linphoneCall(pb[self.item.getLabel()])
+ for row in pb:
+ if row[0] == self.item.getLabel():
+ linphoneCall(row[1])
else:
linphoneCall(self.item.getLabel())
if controlId == self.control_btn_recent_id:
if list_type != 'recent':
self.list_contacts.reset()
- self.list_contacts.addItems(last_calls[-10:])
+ self.list_contacts.addItems(last_calls)
list_type = 'recent'
self.btn_recent.setLabel(' Recent', 'font14', '0xFFFFFFFF')
self.btn_contacts.setLabel(' Contacts', 'font12',
'0xFFAAAAAA')
@@ -187,7 +227,8 @@ class GUI( xbmcgui.WindowXML ):
if controlId == self.control_btn_contacts_id:
if list_type != 'contacts':
self.list_contacts.reset()
- self.list_contacts.addItems(pb.keys())
+ for row in pb:
+ self.list_contacts.addItem(row[0])
list_type = 'contacts'
self.btn_recent.setLabel(' Recent', 'font12', '0xFFAAAAAA')
self.btn_contacts.setLabel(' Contacts', 'font14',
'0xFFFFFFFF')
@@ -224,9 +265,10 @@ class GUI( xbmcgui.WindowXML ):
xlog("M-media Size = %s" % multimedia_size)
#linphoneGeneric("vsize " + multimedia_size)
initLinphone()
-
if controlId == self.control_btn_add_contact_id:
linphoneGeneric("pwindow hide")
+ current_name = ''
+ selected_list_item = 0
contact_win = AddContact( "add_contact.xml" , __cwd__, "Default")
contact_win.doModal()
del contact_win
@@ -269,6 +311,28 @@ class GUI( xbmcgui.WindowXML ):
linphoneGeneric("pwindow show")
return ret
+ def changeSelfViewPos(self):
+ global SELF_VIEW_POS
+ global SELF_VIEWS
+ if SELF_VIEW_POS < 4:
+ SELF_VIEW_POS = SELF_VIEW_POS + 1;
+ else:
+ SELF_VIEW_POS = 0
+ linphoneGeneric("pwindow selfview %s" % (SELF_VIEWS[SELF_VIEW_POS]))
+
+ def changeViewSize(self):
+ global VIEW_SIZE
+ global VIEW_SIZES
+ if VIEW_SIZE < 4:
+ VIEW_SIZE = VIEW_SIZE + 1
+ else:
+ VIEW_SIZE = 0
+ width = VIEW_SIZES[VIEW_SIZE][0]
+ height = VIEW_SIZES[VIEW_SIZE][1]
+ xlog("SCALER %s, WIDTH = %s, HEIGHT = %s" % (VIEW_SIZE, width, height))
+ linphoneGeneric("pwindow size %s %s" % (width, height) )
+ linphoneGeneric("scale size %s %s" % (width, height) )
+
##--------- Focus -----------##
def onFocus( self, controlId ):
pass
@@ -279,6 +343,13 @@ class GUI( xbmcgui.WindowXML ):
if action.getId() == 10:
linphoneTerminate()
+ if action.getId() == SELFVIEW_KEYCODE and is_full_ver:
+ self.changeSelfViewPos()
+
+ if action.getId() == SIZE_KEYCODE and is_full_ver:
+ self.changeViewSize()
+
+
class EventHandler(pyinotify.ProcessEvent):
def process_IN_MODIFY(self, event):
global LP_WIN
@@ -311,17 +382,25 @@ class ContactAction(xbmcgui.WindowXMLDialog):
self.label_uri = self.getControl(self.control_label_uri_id)
item = LP_WIN.list_contacts.getSelectedItem()
self.label_name.setLabel(item.getLabel())
- self.label_uri.setLabel(pb[item.getLabel()])
+ for row in pb:
+ if row[0] == item.getLabel():
+ self.label_uri.setLabel(row[1])
def onClick(self, controlId):
global pb
+ global current_name
+ global selected_list_item
if controlId == self.control_btn_close_id:
+ selected_list_item = 0
+ current_name = ''
self.close()
if controlId == self.control_btn_call_id:
item = LP_WIN.list_contacts.getSelectedItem()
if list_type == 'contacts':
- linphoneCall(pb[item.getLabel()])
+ for row in pb:
+ if row[0] == item.getLabel():
+ self.label_uri.setLabel(row[1])
self.close()
if controlId == self.control_btn_edit_id:
@@ -332,17 +411,21 @@ class ContactAction(xbmcgui.WindowXMLDialog):
if controlId == self.control_btn_delete_id:
if list_type == 'contacts' and selected_list_item:
- del pb[selected_list_item]
+ pbb = []
+ for row in pb:
+ if row[0] != selected_list_item:
+ pbb.append(row)
+ pb = pbb
set_phone_book(pb)
LP_WIN.list_contacts.reset()
- LP_WIN.list_contacts.addItems(pb.keys())
+ for row in pb:
+ LP_WIN.list_contacts.addItem(row[0])
self.close()
def onAction(self, action):
if action.getId() == 10:
self.close()
-
class AddContact(xbmcgui.WindowXMLDialog):
global current_name
@@ -368,7 +451,9 @@ class AddContact(xbmcgui.WindowXMLDialog):
self.win_label.setLabel("Edit contact")
self.btn_name.setLabel(selected_list_item)
current_name = selected_list_item
- self.btn_uri.setLabel(pb[selected_list_item])
+ for row in pb:
+ if row[0] == selected_list_item:
+ self.btn_uri.setLabel(row[1])
def onClick(self, controlId):
global pb
@@ -394,12 +479,17 @@ class AddContact(xbmcgui.WindowXMLDialog):
self.number = self.btn_uri.getLabel()
if len(self.name) > 1 and len(self.number) > 3:
if selected_list_item and current_name != self.name:
- del pb[current_name]
- pb[self.name] = self.number
+ pbb = []
+ for row in pb:
+ if row[0] != current_name:
+ pbb.append(row)
+ pb = pbb
+ pb.append([self.name, self.number])
set_phone_book(pb)
if list_type == 'contacts':
LP_WIN.list_contacts.reset()
- LP_WIN.list_contacts.addItems(pb.keys())
+ for row in pb:
+ LP_WIN.list_contacts.addItem(row[0])
selected_list_item = 0
current_name = ''
self.close()
@@ -437,6 +527,21 @@ def linphonecsh(cmd):
xlog(cmd)
return os.system("/usr/local/bin/linphonecsh " + cmd)
+def limitLinphonecCodecs():
+ lines = sub.Popen("linphonecsh generic 'vcodec list'", shell=True,
stdout=sub.PIPE).stdout.readlines()
+ cindex = 0
+ for line in lines:
+ if 'H264' not in line and 'enabled' in line:
+ linphoneGeneric("vcodec disable %s" % (cindex))
+ cindex = cindex + 1
+
+ lines = sub.Popen("linphonecsh generic 'codec list'", shell=True,
stdout=sub.PIPE).stdout.readlines()
+ cindex = 0
+ for line in lines:
+ if 'PCMU' not in line and 'PCMA' not in line and 'enabled' in line:
+ linphoneGeneric("codec disable %s" % (cindex))
+ cindex = cindex + 1
+
def linphoneCall(target):
global calling_to
global call_status
@@ -456,6 +561,7 @@ def linphoneTerminate():
global last_calls
global last_try_exit
global last_try_exit_cnt
+ global notifier
xbmc.log("##### [%s] - Debug msg: %s" % (__scriptname__,
call_status),level=xbmc.LOGDEBUG )
tpass = (time.time() - last_try_exit)
@@ -490,7 +596,8 @@ def linphoneTerminate():
time.sleep(1)
# LP_WIN.exit_script()
LP_WIN.close()
- # os.system('killall -9 xbmc.bin')
+ #os.system('killall -9 xbmc.bin')
+
def checkLogFile(self, the_event):
global last_log_pos
@@ -515,7 +622,7 @@ def checkLogFile(self, the_event):
LP_WIN.btn_answer.setVisible(False)
LP_WIN.btn_hangup.setVisible(True)
fixUpDown(False, True)
- if 'LinphoneCallIncomingReceived' in logdata:
+ if 'LinphoneCallIncomingReceived' in logdata or '-CALL_NEW' in logdata:
call_status = 'ringing'
LP_WIN.btn_answer.setVisible(True)
LP_WIN.btn_hangup.setVisible(True)
@@ -557,18 +664,70 @@ def xlog(msg):
xbmc.log("##### [%s] - Debug msg: %s" %
(__scriptname__,msg,),level=xbmc.LOGDEBUG )
def fixUpDown(answer, hangup):
+ # 5001 - Call to, 5002 - Dial, 5004 - Hangup, 5005 - Settings, 5010 -
Size, 5011 - Add contact, 5012 - SelfView
+
+ #5001Down, 5011Down - answer:5002 / hangup:5004 / full:5010 / 5005
if answer:
- ctrl_down = 5002
- ctrl_up = 5002
+ b5001Down = 5002
elif hangup:
- ctrl_down = 5004
- ctrl_up = 5004
+ b5001Down = 5004
+ elif is_full_ver:
+ b5001Down = 5010
else:
- ctrl_down = 5009
- ctrl_up = 5011
+ b5001Down = 5005
+ LP_WIN.getControl(5001).controlDown(LP_WIN.getControl(b5001Down))
+ LP_WIN.getControl(5011).controlDown(LP_WIN.getControl(b5001Down))
+
+ #5002Right, 5002Left - hangup:5004 / 5002
+ #5004Right, 5004Left - answer:5002 / 5004
+ if answer and hangup:
+ LP_WIN.getControl(5002).controlRight(LP_WIN.getControl(5004)) # from
Dial to Hangup
+ LP_WIN.getControl(5004).controlLeft(LP_WIN.getControl(5002))
+ elif answer:
+ LP_WIN.getControl(5002).controlRight(LP_WIN.getControl(5002))
+ elif hangup:
+ LP_WIN.getControl(5004).controlLeft(LP_WIN.getControl(5004))
- LP_WIN.getControl(5011).controlDown(LP_WIN.getControl(ctrl_down))
- LP_WIN.getControl(5009).controlUp(LP_WIN.getControl(ctrl_up))
+ #5002Down, 5004Down - full:5010 / 5005
+ b500xDown = 5010 if is_full_ver else 5005
+ if answer:
+ LP_WIN.getControl(5002).controlDown(LP_WIN.getControl(b500xDown))
+ if hangup:
+ LP_WIN.getControl(5004).controlDown(LP_WIN.getControl(b500xDown))
+
+ #5010Up - answer:5002 / hangup:5004 / 5001
+ #5012Up - answer:5002 / hangup:5004 / 5001
+ if answer:
+ b500xUp = 5002
+ elif hangup:
+ b500xUp = 5004
+ else:
+ b500xUp = 5001
+ LP_WIN.getControl(5010).controlUp(LP_WIN.getControl(b500xUp))
+ LP_WIN.getControl(5012).controlUp(LP_WIN.getControl(b500xUp))
+
+ #5005Up - full:5010 / answer:5002 / hangup:5004 / 5001
+ b5005Up = 5010 if is_full_ver else b500xUp
+ LP_WIN.getControl(5005).controlUp(LP_WIN.getControl(b5005Up))
+
+ #if answer:
+ # ctrl_down = 5002
+ # ctrl_up = 5002
+ #elif hangup:
+ # ctrl_down = 5004
+ # ctrl_up = 5004
+ #else:
+ # ctrl_down = 5010
+ # ctrl_up = 5011
+ #LP_WIN.getControl(5011).controlDown(LP_WIN.getControl(ctrl_down))
+ #LP_WIN.getControl(5010).controlUp(LP_WIN.getControl(ctrl_up))
+ #if answer and hangup:
+ # LP_WIN.getControl(5002).controlRight(LP_WIN.getControl(5004)) # from
Dial to Hangup
+ # LP_WIN.getControl(5004).controlLeft(LP_WIN.getControl(5002))
+ #elif answer:
+ # LP_WIN.getControl(5004).controlLeft(LP_WIN.getControl(5004))
+ #elif hangup:
+ # LP_WIN.getControl(5002).controlLeft(LP_WIN.getControl(5002))
def initLinphone():
##------------------Initialisation Settings----------------------##
@@ -605,7 +764,7 @@ def initLinphone():
##----------------STARTING LINPHONE------------------------##
- if auto_answer:
+ if auto_answer == "true":
auto_answer = '-a'
else:
auto_answer = ''
@@ -712,19 +871,21 @@ def get_phone_book():
except IOError:
os.system("touch " + __cwd__ + "/phone_book.pb")
f = open(__cwd__ + "/phone_book.pb", "r+")
- f.write("{}")
+ f.write("[]")
f.seek(0)
str_pb = f.read()
str_pb = str_pb.replace("\n", "")
- book = eval(str_pb)
+ str_pb = eval(str_pb)
f.close()
- return book
+ return str_pb
def set_phone_book(pb):
f = open(__cwd__ + "/phone_book.pb", "w")
- str_pb = str(pb)
- str_pb = str_pb.replace("', u'", "', \nu'")
+ str_pb = repr(pb)
+ str_pb = str_pb.replace("], [", "], \n[")
+ str_pb = str_pb.replace("[u'", "['")
+ str_pb = str_pb.replace("', u'", "', '")
f.write(str_pb)
f.close()
@@ -732,6 +893,7 @@ def sound_card_list_creating(soundcard_list):
try:
f = open(__cwd__ + '/soundcards', 'w')
except:
+ limitLinphonecCodecs()
os.system("touch %s" % __cwd__ + '/soundcards')
f = open(__cwd__ + '/soundcards', 'w')
for i in soundcard_list:
@@ -771,7 +933,7 @@ pb = get_phone_book()
placed, recieved, last_calls = parsing('/home/' + SYSTEM_USER + '/.linphonerc')
cmd = str()
-# ppa.launchpad.net
# 91.189.95.83
# register_only_when_network_is_up
# reg_sendregister=0
+#dpkg -i .deb
\ No newline at end of file
diff --git a/script.linphone/resources/skins/Default/720p/script-linphone.xml
b/script.linphone/resources/skins/Default/720p/script-linphone.xml
index 1f00e98..ea6f97d 100644
--- a/script.linphone/resources/skins/Default/720p/script-linphone.xml
+++ b/script.linphone/resources/skins/Default/720p/script-linphone.xml
@@ -184,7 +184,7 @@
<onleft>5002</onleft>
<onright>5002</onright>
<onup>5001</onup>
- <ondown>5009</ondown>
+ <ondown>5010</ondown>
<visible></visible>
</control>
@@ -201,11 +201,12 @@
<onleft>5004</onleft>
<onright>5004</onright>
<onup>5001</onup>
- <ondown>5009</ondown>
+ <ondown>5010</ondown>
<visible></visible>
</control>
- <control type="slider" id="5009">
+
+ <!--<control type="slider" id="5009">
<description>Slider</description>
<posx>980</posx>
<posy>610</posy>
@@ -219,6 +220,38 @@
<textureslidersnibfocus>slider-nib-focus.png</textureslidersnibfocus>
<onup>5001</onup>
<ondown>5005</ondown>
+ </control>-->
+
+ <control type="button" id="5010">
+ <description>Scaler</description>
+ <posx>980</posx>
+ <posy>600</posy>
+ <width>140</width>
+ <height>35</height>
+ <label>Size</label>
+ <font>font13</font>
+ <visible></visible>
+ <pulseonselect>true</pulseonselect>
+ <textoffsetx>45</textoffsetx>
+ <onup>5001</onup>
+ <onright>5012</onright>
+ <ondown>5005</ondown>
+ </control>
+
+ <control type="button" id="5012">
+ <description>Self View</description>
+ <posx>1140</posx>
+ <posy>600</posy>
+ <width>140</width>
+ <height>35</height>
+ <label>Self View</label>
+ <font>font13</font>
+ <visible></visible>
+ <pulseonselect>true</pulseonselect>
+ <textoffsetx>20</textoffsetx>
+ <onup>5001</onup>
+ <onleft>5010</onleft>
+ <ondown>5005</ondown>
</control>
<control type="button" id ="5005">
@@ -226,23 +259,24 @@
<posx>980</posx>
<posy>650</posy>
<width>300</width>
- <height>40</height>
+ <height>35</height>
<label>Settings</label>
<font>font13</font>
<texturefocus>button-focus.png</texturefocus>
<texturenofocus>button-nofocus.png</texturenofocus>
+ <textoffsetx>45</textoffsetx>
<onleft>5005</onleft>
<onright>5005</onright>
- <onup>5009</onup>
+ <onup>5010</onup>
<ondown>5003</ondown>
<visible></visible>
</control>
<control type="label" id="5051">
<description>debug</description>
- <posx>980</posx>
- <posy>380</posy>
- <width>350</width>
+ <posx>380</posx>
+ <posy>700</posy>
+ <width>700</width>
<visible>true</visible>
<align>left</align>
<aligny>center</aligny>
@@ -250,7 +284,7 @@
<label></label>
<haspath>false</haspath>
<font>font11</font>
- <textcolor>FFB2D4F5</textcolor>
+ <textcolor>55555555</textcolor>
<wrapmultiline>false</wrapmultiline>
<scrollspeed>50</scrollspeed>
<scrollsuffix> - </scrollsuffix>
@@ -302,4 +336,4 @@
</control>-->
</controls>
-</window>
+</window>
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
script.linphone/addon.xml | 2 +-
script.linphone/phone_book.pb | 2 +-
script.linphone/resources/lib/gui.py | 270 ++++++++++++++++----
.../skins/Default/720p/script-linphone.xml | 54 ++++-
script.xbmcbackup/addon.xml | 24 ++-
script.xbmcbackup/changelog.txt | 38 ++-
.../resources/language/Afrikaans/strings.xml | 48 ++++
.../resources/language/Arabic/strings.xml | 48 ++++
.../resources/language/Basque/strings.xml | 48 ++++
.../resources/language/Belarusian/strings.xml | 48 ++++
.../resources/language/Bulgarian/strings.xml | 48 ++++
.../resources/language/Catalan/strings.xml | 48 ++++
.../language/Chinese (Simple)/strings.xml | 48 ++++
.../language/Chinese (Traditional)/strings.xml | 48 ++++
.../resources/language/Croatian/strings.xml | 48 ++++
.../resources/language/Czech/strings.xml | 48 ++++
.../resources/language/Danish/strings.xml | 48 ++++
.../resources/language/Dutch/strings.xml | 48 ++++
.../resources/language/English (US)/strings.xml | 48 ++++
.../resources/language/Esperanto/strings.xml | 48 ++++
.../resources/language/Estonian/strings.xml | 48 ++++
.../resources/language/Finnish/strings.xml | 48 ++++
.../resources/language/French/strings.xml | 41 ++-
.../resources/language/Galician/strings.xml | 48 ++++
.../resources/language/German/strings.xml | 77 ++++---
.../resources/language/Greek/strings.xml | 48 ++++
.../resources/language/Hebrew/strings.xml | 48 ++++
.../language/Hindi (Devanagiri)/strings.xml | 48 ++++
.../resources/language/Hungarian/strings.xml | 48 ++++
.../resources/language/Icelandic/strings.xml | 48 ++++
.../resources/language/Indonesian/strings.xml | 48 ++++
.../resources/language/Italian/strings.xml | 48 ++++
.../resources/language/Japanese/strings.xml | 48 ++++
.../resources/language/Korean/strings.xml | 48 ++++
.../resources/language/Lithuanian/strings.xml | 48 ++++
.../resources/language/Malay/strings.xml | 48 ++++
.../resources/language/Malayalam/strings.xml | 48 ++++
.../resources/language/Norwegian/strings.xml | 48 ++++
.../resources/language/Polish/strings.xml | 48 ++++
.../language/Portuguese (Brazil)/strings.xml | 48 ++++
.../resources/language/Portuguese/strings.xml | 48 ++++
.../resources/language/Romanian/strings.xml | 48 ++++
.../resources/language/Russian/strings.xml | 48 ++++
.../language/Serbian (Cyrillic)/strings.xml | 48 ++++
.../resources/language/Serbian/strings.xml | 48 ++++
.../resources/language/Slovak/strings.xml | 48 ++++
.../resources/language/Slovenian/strings.xml | 48 ++++
.../language/Spanish (Argentina)/strings.xml | 48 ++++
.../language/Spanish (Mexico)/strings.xml | 48 ++++
.../resources/language/Spanish/strings.xml | 48 ++++
.../resources/language/Swedish/strings.xml | 48 ++++
.../resources/language/Thai/strings.xml | 48 ++++
.../resources/language/Turkish/strings.xml | 48 ++++
.../resources/language/Ukrainian/strings.xml | 48 ++++
.../resources/language/Vietnamese/strings.xml | 48 ++++
script.xbmcbackup/scheduler.py | 5 +-
56 files changed, 2638 insertions(+), 131 deletions(-)
create mode 100644 script.xbmcbackup/resources/language/Afrikaans/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Arabic/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Basque/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Belarusian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Bulgarian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Catalan/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Chinese
(Simple)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Chinese
(Traditional)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Croatian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Czech/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Danish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Dutch/strings.xml
create mode 100644 script.xbmcbackup/resources/language/English
(US)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Esperanto/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Estonian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Finnish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Galician/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Greek/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Hebrew/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Hindi
(Devanagiri)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Hungarian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Icelandic/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Indonesian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Italian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Japanese/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Korean/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Lithuanian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Malay/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Malayalam/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Norwegian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Polish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Portuguese
(Brazil)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Portuguese/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Romanian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Russian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Serbian
(Cyrillic)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Serbian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Slovak/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Slovenian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Spanish
(Argentina)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Spanish
(Mexico)/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Spanish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Swedish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Thai/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Turkish/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Ukrainian/strings.xml
create mode 100644 script.xbmcbackup/resources/language/Vietnamese/strings.xml
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons