From 65940eac4fd4fe2e15d8f7cf3fbc0def1b264824 Mon Sep 17 00:00:00 2001 From: Stavros Sachtouris <saxtouri@admin.grnet.gr> Date: Wed, 8 Jul 2015 15:15:23 +0300 Subject: [PATCH] Support GUI control of language and sync_on_start --- agkyra/config.py | 2 + agkyra/nwgui/menu.html | 4 +- agkyra/nwgui/protocol.js | 4 +- agkyra/nwgui/settings.html | 77 +++++++++++++++++---- agkyra/nwgui/static/images/language/el.png | Bin 0 -> 1282 bytes agkyra/nwgui/static/images/language/en.png | Bin 0 -> 3943 bytes agkyra/protocol.py | 19 ++++- agkyra/scripts/cli.py | 2 +- agkyra/scripts/gui.py | 2 +- agkyra/scripts/server.py | 2 +- agkyra/ui_data/common_el.json | 2 + agkyra/ui_data/common_en.json | 2 + agkyra/ui_data/languages.json | 10 +++ 13 files changed, 103 insertions(+), 23 deletions(-) create mode 100644 agkyra/nwgui/static/images/language/el.png create mode 100644 agkyra/nwgui/static/images/language/en.png create mode 100644 agkyra/ui_data/languages.json diff --git a/agkyra/config.py b/agkyra/config.py index 9f35d25..d1de923 100644 --- a/agkyra/config.py +++ b/agkyra/config.py @@ -59,6 +59,8 @@ SYNC_PREFIX = 'sync' config.DEFAULTS = { 'global': { 'agkyra_dir': AGKYRA_DIR, + 'sync_on_start': 'on', + 'language': 'en' }, CLOUD_PREFIX: { # <cloud>: { diff --git a/agkyra/nwgui/menu.html b/agkyra/nwgui/menu.html index eed7d93..50bb6e1 100644 --- a/agkyra/nwgui/menu.html +++ b/agkyra/nwgui/menu.html @@ -117,10 +117,10 @@ var settings_menu = new gui.MenuItem({ $.each(globals.settings, function(key, val) {old_settings[key]=val;}); windows['settings'] = gui.Window.open("settings.html", { toolbar: false, focus: true, - width: 860, height: 620 + width: 860, height: 860 }); windows['settings'].on('closed', function() { - log_debug('Settings windows is closed'); + log_debug('Settings windows is closed'); globals.settings_are_open = false; var new_settings = import_settings(); $.each(new_settings, function(key, setting) { diff --git a/agkyra/nwgui/protocol.js b/agkyra/nwgui/protocol.js index 9e9b4b9..a75b717 100644 --- a/agkyra/nwgui/protocol.js +++ b/agkyra/nwgui/protocol.js @@ -37,7 +37,9 @@ var globals = { url: null, container: null, directory: null, - exclude: null + exclude: null, + language: 'en', + sync_on_start: true }, status: {synced: 0, unsynced: 0, failed: 0, code: STATUS['UNINITIALIZED']}, authenticated: false, diff --git a/agkyra/nwgui/settings.html b/agkyra/nwgui/settings.html index 7622a04..c8b35de 100644 --- a/agkyra/nwgui/settings.html +++ b/agkyra/nwgui/settings.html @@ -24,9 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. <script type="text/javascript"> var path = require('path'); var fs = require('fs'); - var COMMON = JSON.parse( - fs.readFileSync(path.join('..', 'ui_data/common_en.json'))); - var SETTINGS = COMMON.SETTINGS; + var LANG = JSON.parse(fs.readFileSync(path.join('..', 'ui_data/languages.json'))); var errors = { cloud_url_empty: 'Provide a Cloud Authentication URL', @@ -41,6 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. var fs = require('fs'); var exclude = null; + var cur_lang = 'en'; $(document).ready(function() { var url = get_setting('url') if (url) { @@ -62,7 +61,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. $('#exclude').val( fs.readFileSync(exclude, encoding='utf-8')); } catch (err) {console.log(err);} + if (!get_setting('language')) set_setting('language', cur_lang); + if (get_setting('sync_on_start')) $('#start_sync_box').click(); + }); + cur_lang = get_setting('language'); + function update_exclude(new_content) { if (exclude) fs.writeFile(exclude, new_content); } @@ -192,6 +196,42 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. return cloud && token && container && directory; } + function check_start_sync() { + settings['sync_on_start'] = $('#start_sync_box').is(':checked'); + } + + function localize() { + settings['language'] = cur_lang; + var COMMON = JSON.parse( + fs.readFileSync(path.join('..', 'ui_data/common_' + cur_lang + '.json'))); + var SETTINGS = COMMON.SETTINGS; + document.getElementById('title').innerHTML = SETTINGS.TITLE; + document.getElementById('appearance_label').innerHTML = SETTINGS.APPEARANCE; + document.getElementById('language_label').innerHTML = SETTINGS.LANGUAGE; + document.getElementById('cloud_label').innerHTML = SETTINGS.CLOUD; + document.getElementById('url_label').innerHTML = SETTINGS.URL; + document.getElementById('token_label').innerHTML = SETTINGS.TOKEN; + document.getElementById('get_creds').innerHTML = SETTINGS.RETRIEVE; + document.getElementById('sync_label').innerHTML = SETTINGS.SYNC; + document.getElementById('container_label').innerHTML = SETTINGS.CONTAINER; + document.getElementById('directory_label').innerHTML = SETTINGS.DIRECTORY; + document.getElementById('dirdialogue_label').innerHTML = SETTINGS.DIRDIALOGUE; + document.getElementById('sync_button').innerHTML = SETTINGS.SAVE; + + var lang_code = ''; + for (key in LANG) { + var lang = LANG[key]; + var checked = '' + if (key === cur_lang) checked = 'checked' + lang_code += '<div class="small-1 columns">' + + '<input type="radio" name="language" value="' + key + '" ' + + checked + + ' onclick="cur_lang=\'' + key + '\'; localize();">' + + lang.name + '<img src="' + lang.icon + '"/></input></div>'; + } + document.getElementById('language_space').innerHTML = lang_code; + } + window.setInterval(function() { // Refresh get_creds visibility, until refresh_endpoints // changes are in effect @@ -209,12 +249,30 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. <h2><img src="static/images/about.png"/> <span id="title">User Settings</span></h2> </header> <form> + <fieldset> + <legend id="appearance_label">Appearance</legend> + <div class="clearfix"> + <div class="small-3 columns"> + <label id="language_label" for="language_space" class="right inline">Language</label> + </div> + <div class="small-9 columns" id="language_space"> + <!-- This will be filled by scripts --> + </div> + </div> + <div class="clearfix"> + <div class="small-3 columns"> + <label id="start_sync_label" for="start_sync" class="right inline">Sync on start up</label> + </div> + <div class="small-9 columns" id="start_sync"> + <input type="checkbox" name="start_sync_box" id="start_sync_box" onchange="check_start_sync();"/> + </div> + </div> + </fieldset> <fieldset> <legend id="cloud_label">Cloud</legend> <div class="clearfix"> <div class="small-3 columns"> <label id="url_label" for="cloud-url" class="right inline">Cloud URL</label> - </div> <div class="small-9 columns" id="cloud-error"> <input type="text" id="cloud-url" placeholder="Authentication URL" @@ -294,16 +352,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. </form> </div> <script type="text/javascript"> - document.getElementById('title').innerHTML = SETTINGS.TITLE; - document.getElementById('cloud_label').innerHTML = SETTINGS.CLOUD; - document.getElementById('url_label').innerHTML = SETTINGS.URL; - document.getElementById('token_label').innerHTML = SETTINGS.TOKEN; - document.getElementById('get_creds').innerHTML = SETTINGS.RETRIEVE; - document.getElementById('sync_label').innerHTML = SETTINGS.SYNC; - document.getElementById('container_label').innerHTML = SETTINGS.CONTAINER; - document.getElementById('directory_label').innerHTML = SETTINGS.DIRECTORY; - document.getElementById('dirdialogue_label').innerHTML = SETTINGS.DIRDIALOGUE; - document.getElementById('sync_button').innerHTML = SETTINGS.SAVE; + localize(); </script> </body> </html> diff --git a/agkyra/nwgui/static/images/language/el.png b/agkyra/nwgui/static/images/language/el.png new file mode 100644 index 0000000000000000000000000000000000000000..1d630715a32389edfccb3d1eac7f9715fbf7b892 GIT binary patch literal 1282 zcmV+d1^xPoP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v<T_9UNOiB$faG1dmBX zK~y-)eUyD@)nydNKhN)Z?(cWE-R*karpBC8GtjgbEGsBqCu-$ODOnOlRFJ(W6;xD2 z8AVhuQz|7Rqi8`1C5f1sB}InW%F4=oY17Tk?e5;Y?f&lD@8$HzW>$t@cz8Gm&X;q( z=kSI9;PH(cnR4abN<`E@(lMaobRZ&X)WyryqBWcTTaG#_!*B&Dfr`2r55DlpvKf~) zjIK>Meh_fDqo=rI{~t%cUVHz1AkF_k#eu$|;LDanYSz?=qu%^r`&-vsG<Lx;H{$(t zyjQfgEZZ0ws>{QwvWRuGquaEf=-9gEo@IAze0_cY%KKJ_0M0)<ysc@g_3pan+9#g5 ztLvuA>Pj_<xV@(}ho=<fwv7NwCfAVne0;A+|A1R;ZSOR5@7*xs<MnrDZfKkx0;n-_ z@8I~Zw*e|wzOtp?i^Sxq#Z%PqVO4y4JV%J4%r*#cRYRPT@8kPE`Fx(7n`Qs6$BHW! zHdX*Z*(KMZnDZO!8{c<=QIp<SJbmiT)rm^SlvUw44#t>&>GQ>r6e5tx7D)~i=*jfa z-j&R^w*J}N{qx>cE!#Hdtw-nY)~la<ws`*N5w~lj9H+bj$F|X0pCx$2vanDnt<hSe zw2iTyvZ6%pYT33qUw{2-J*eT;cRoA$idj#o@?lg|4db)bS5X;_u<c-yFcjkDhW<jp zwUeqb)|tZyi#alxG@hGb{L(cK<PLoJngw8DwaenMs9#eVr8?$dslg(n6)0#=7ueU< z$3Vd+TMTeZ!Qd}Y@Py8kD=V&_wj96!h&Jb?-BMU-hbT{wA;P0QIl8kYL=?udcy4Da zeFcwH&Lf%i=*hSwQ@!NU-G2U5@A$t7<BswpDkKa;Qf`qj6aWGd0s&)zh+rFwm~8-s zR^Z@JDN$S%Rh=1?O`j&5QK!FoY}te*H6uq+T~kAOL?HtAU0shLXRcMwEGP&=^0_?8 zWDlvHgn4Yk&wKX(MviQ;)P#p#T0HaeB_qQqwSi467UD!AD5X#qs3ArX5QHEQN}fk{ zpr77kA1B(A?0KhY-AB#OYo(idRQPahwVL;6iwqw#T31%9vWhs-vM9FE*xEvCYp|;z zpcDv2&!>>jQ*a0H`@6$Lq3iI#_NJM>Up%Gd)0biFv_P_%^mz^AmIPR$jaHVWu`GoE zp+FE0ju`|2L8%B{4y(`?PE1%<+paCE!f4r#xV^z?Z&HAD<2{cz|Nh;V(skruP)eT^ zDfEd*UPOvRFDFvSNGWwvx{mzfANu}lnSIO3SEoU=(nN=pwhUN?@za+oAYR{i+uAQa z-zlxX?Dvyxhr~VACZ$w|6jL4Io@$ex*5Bmtfqnk&-Mgh~>cXdicw+K&g{48;7(##0 z1uvK=?U{M~i#p$Za(3gE9bCBl5o+riablqL(53}SE~LA5@%^S3Z=HK#%X=fI^vg91 zgo9rJ!Py2IuSuvr*N)(rIGGMZY{WEGf9XYnz_GnQP|O}siF!|5H%%$!aZXtOHUu+g sm5z?POxvKVKvzwgsm+{K`dk!$0g)mh25c!kM*si-07*qoM6N<$f)qe@0{{R3 literal 0 HcmV?d00001 diff --git a/agkyra/nwgui/static/images/language/en.png b/agkyra/nwgui/static/images/language/en.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6ff425b5aa46118dbf89dc3811c0774a2eeed9 GIT binary patch literal 3943 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 BSKt5u literal 0 HcmV?d00001 diff --git a/agkyra/protocol.py b/agkyra/protocol.py index 4ccf689..4987932 100644 --- a/agkyra/protocol.py +++ b/agkyra/protocol.py @@ -234,7 +234,9 @@ class WebSocketProtocol(WebSocket): "url": <auth url>, "container": <container>, "directory": <local directory>, - "exclude": <file path> + "exclude": <file path>, + "language": <en|el>, + "sync_on_start": <true|false> } or {<ERROR>: <ERROR CODE>} -- PUT SETTINGS -- @@ -244,7 +246,9 @@ class WebSocketProtocol(WebSocket): "url": <auth url>, "container": <container>, "directory": <local directory>, - "exclude": <file path> + "exclude": <file path>, + "language": <en|el>, + "sync_on_start": <true|false> } HELPER: {"CREATED": 201, "action": "put settings",} or {<ERROR>: <ERROR CODE>, "action": "get settings",} @@ -266,7 +270,7 @@ class WebSocketProtocol(WebSocket): settings = dict( token=None, url=None, container=None, directory=None, - exclude=None) + exclude=None, sync_on_start=True, language="en") cnf = AgkyraConfig() essentials = ('url', 'token', 'container', 'directory') @@ -380,6 +384,10 @@ class WebSocketProtocol(WebSocket): self.settings['url'] = None self.set_status(code=STATUS['SETTINGS MISSING']) + self.settings['sync_on_start'] = ( + self.cnf.get('global', 'sync_on_start') == 'on') + self.settings['language'] = self.cnf.get('global', 'language') + # for option in ('container', 'directory', 'exclude'): for option in ('container', 'directory'): try: @@ -425,6 +433,11 @@ class WebSocketProtocol(WebSocket): self.cnf.set_sync(sync, option, self.settings[option] or '') changes = True + self.cnf.set('global', 'language', self.settings.get('language', 'en')) + sync_on_start = self.settings.get('sync_on_start', False) + self.cnf.set( + 'global', 'sync_on_start', 'on' if sync_on_start else 'off') + if changes: self.cnf.write() LOG.debug('Settings saved') diff --git a/agkyra/scripts/cli.py b/agkyra/scripts/cli.py index 8f59589..45ec8c2 100755 --- a/agkyra/scripts/cli.py +++ b/agkyra/scripts/cli.py @@ -34,7 +34,7 @@ FORMATTER = logging.Formatter( "%(name)s:%(lineno)s %(levelname)s:%(asctime)s:%(message)s") HANDLER.setFormatter(FORMATTER) LOGGER.addHandler(HANDLER) -LOGGER.setLevel(logging.DEBUG) +LOGGER.setLevel(logging.INFO) def main(): diff --git a/agkyra/scripts/gui.py b/agkyra/scripts/gui.py index f826d36..ddc6953 100755 --- a/agkyra/scripts/gui.py +++ b/agkyra/scripts/gui.py @@ -34,7 +34,7 @@ FORMATTER = logging.Formatter( "%(name)s:%(lineno)s %(levelname)s:%(asctime)s:%(message)s") HANDLER.setFormatter(FORMATTER) LOGGER.addHandler(HANDLER) -LOGGER.setLevel(logging.DEBUG) +LOGGER.setLevel(logging.INFO) def main(): diff --git a/agkyra/scripts/server.py b/agkyra/scripts/server.py index 6096a46..fd86a13 100644 --- a/agkyra/scripts/server.py +++ b/agkyra/scripts/server.py @@ -26,7 +26,7 @@ FORMATTER = logging.Formatter( "%(name)s:%(lineno)s %(levelname)s:%(asctime)s:%(message)s") HANDLER.setFormatter(FORMATTER) LOGGER.addHandler(HANDLER) -LOGGER.setLevel(logging.DEBUG) +LOGGER.setLevel(logging.INFO) def main(): diff --git a/agkyra/ui_data/common_el.json b/agkyra/ui_data/common_el.json index 2d97b77..ed37091 100644 --- a/agkyra/ui_data/common_el.json +++ b/agkyra/ui_data/common_el.json @@ -48,6 +48,8 @@ }, "SETTINGS": { "TITLE": "Ξ‘Ο ΞΈΞΌΞ―ΟΞ΅ΞΉΟ ΟΟΞ�ΟΟΞ·", + "APPEARANCE": "ΞΞΌΟάνιΟΞ·", + "LANGUAGE": "ΞΞ»ΟΟΟΞ±", "CLOUD": "ΞΟΞΏΞΌΞ±ΞΊΟΟ ΟΞΌΞΞ½ΞΏ ΟΟΟΟΞ·ΞΌΞ± (Ξ½ΞΟΞΏΟ)", "URL": "URL Ξ½ΞΟΞΏΟ Ο", "TOKEN": "ΞλΡιδί token", diff --git a/agkyra/ui_data/common_en.json b/agkyra/ui_data/common_en.json index a05f75f..7c67bd0 100644 --- a/agkyra/ui_data/common_en.json +++ b/agkyra/ui_data/common_en.json @@ -48,6 +48,8 @@ }, "SETTINGS": { "TITLE": "User Settings", + "APPEARANCE": "Appearance", + "LANGUAGE": "Language", "CLOUD": "Cloud", "URL": "Cloud URL", "TOKEN": "User Token", diff --git a/agkyra/ui_data/languages.json b/agkyra/ui_data/languages.json new file mode 100644 index 0000000..c32b5b9 --- /dev/null +++ b/agkyra/ui_data/languages.json @@ -0,0 +1,10 @@ +{ + "en": { + "name": "English", + "icon": "static/images/language/en.png" + }, + "el": { + "name": "Ξλληνικά", + "icon": "static/images/language/el.png" + } +} \ No newline at end of file -- GitLab