Hello community, here is the log from the commit of package translator for openSUSE:Factory checked in at 2018-04-04 11:05:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/translator (Old) and /work/SRC/openSUSE:Factory/.translator.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "translator" Wed Apr 4 11:05:27 2018 rev:4 rq:593090 version:1.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/translator/translator.changes 2018-02-24 16:39:17.501639155 +0100 +++ /work/SRC/openSUSE:Factory/.translator.new/translator.changes 2018-04-04 11:05:35.155675764 +0200 @@ -1,0 +2,10 @@ +Sat Mar 17 16:09:57 UTC 2018 - avvissu@yandex.by + +- Update to 1.2.0: + * Merge pull request #37 from + mkinitcpio/#35-Ugly_selected_text_highlight + * Fix #24 Fix #13 + * Remove space + * Fix text selection style + +------------------------------------------------------------------- Old: ---- Translator-1.1.0.tar.gz New: ---- Translator-1.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ translator.spec ++++++ --- /var/tmp/diff_new_pack.0hacQb/_old 2018-04-04 11:05:36.267635464 +0200 +++ /var/tmp/diff_new_pack.0hacQb/_new 2018-04-04 11:05:36.267635464 +0200 @@ -17,7 +17,7 @@ Name: translator -Version: 1.1.0 +Version: 1.2.0 Release: 0 Summary: Translation program License: GPL-3.0+ ++++++ Translator-1.1.0.tar.gz -> Translator-1.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/CMakeLists.txt new/Translator-1.2.0/CMakeLists.txt --- old/Translator-1.1.0/CMakeLists.txt 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/CMakeLists.txt 2018-03-14 17:40:12.000000000 +0100 @@ -32,6 +32,7 @@ vala_precompile(VALA_C ${EXEC_NAME} src/Main.vala + src/utils/TranslatorError.vala src/LangInfo.vala src/widgets/PopoverCombo.vala src/TranslatorApplication.vala diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/data/com.github.rapidfingers.translator.appdata.xml new/Translator-1.2.0/data/com.github.rapidfingers.translator.appdata.xml --- old/Translator-1.1.0/data/com.github.rapidfingers.translator.appdata.xml 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/data/com.github.rapidfingers.translator.appdata.xml 2018-03-14 17:40:12.000000000 +0100 @@ -62,5 +62,14 @@ </ul> </description> </release> + <release version="1.2.0" date="2018-03-14"> + <description> + <ul> + <li>Toast message if no connection to server</li> + <li>Fix ugly text selection color</li> + <li>Minor bugfix</li> + </ul> + </description> + </release> </releases> </component> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/debian/changelog new/Translator-1.2.0/debian/changelog --- old/Translator-1.1.0/debian/changelog 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/debian/changelog 2018-03-14 17:40:12.000000000 +0100 @@ -1,3 +1,9 @@ +translate (1.2.0) precise; urgency=low + * Toast message if no connection to server + * Fix ugly text selection color + * Minor bugfix + -- Grabli66 <grabli66@gmail.com> Tue, 14 March 2018 19:39:00 -0500 + translate (1.1.0) precise; urgency=low * System icons * Better dark theme look diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/src/AsyncTaskExecuter.vala new/Translator-1.2.0/src/AsyncTaskExecuter.vala --- old/Translator-1.1.0/src/AsyncTaskExecuter.vala 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/src/AsyncTaskExecuter.vala 2018-03-14 17:40:12.000000000 +0100 @@ -1,13 +1,16 @@ +/// For executing task on thread private class AsyncTask : GLib.Object { private bool _isActive; private int _timeout; private AsyncTaskExecuter _parent; + /// Constructor public AsyncTask(AsyncTaskExecuter parent, int timeout) { _parent = parent; _timeout = timeout; } + /// Execute on thread public void Run() { try { Thread.usleep(_timeout); @@ -23,8 +26,12 @@ }); _isActive = false; - } catch (Error e) { - stderr.printf(e.message); + } + catch(TranslatorError e) { + _parent.OnError(e); + } + catch (Error e) { + stderr.printf(e.message); } } @@ -38,20 +45,39 @@ } } +/// Executer of AsyncTask public class AsyncTaskExecuter : GLib.Object { + /// Thread pool private ThreadPool<AsyncTask> _pool; + + /// Async task to execute private AsyncTask _task; + + /// Timeout of execution protected int ExecuteTimeout = 300000; // Timeout before executing - public virtual void OnExecute() {} + /// On error signal + public signal void error(TranslatorError error); + + /// Main working method + public virtual void OnExecute() throws TranslatorError {} + + /// On work result public virtual void OnResult() {} + /// On error + public void OnError(TranslatorError err) { + error(err); + } + + /// Constructor public AsyncTaskExecuter() { _pool = new ThreadPool<AsyncTask>.with_owned_data ((worker) => { worker.Start (); }, 7, false); } + /// Run task protected void Run() { if (_task != null) { _task.Stop(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/src/TranslatorService.vala new/Translator-1.2.0/src/TranslatorService.vala --- old/Translator-1.1.0/src/TranslatorService.vala 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/src/TranslatorService.vala 2018-03-14 17:40:12.000000000 +0100 @@ -6,14 +6,17 @@ private string _to; private string _text; + /// On result public signal void result(string[] text); + /// Constructor public TranslateService() { base(); } - public override void OnExecute() { - var ntext = Soup.URI.encode(_text, null); + /// Task main working method + public override void OnExecute() throws TranslatorError { + var ntext = Soup.URI.encode(_text, null); var request = @"https://translate.yandex.net/api/v1.5/tr.json/translate?key=$(API_KEY)&l...)"; var root = WebJsonClient.Get(request); var data = new Gee.ArrayList<string>(); @@ -31,10 +34,12 @@ } } + /// On result public override void OnResult() { result(_result); } + /// Start to translate public void Translate(string from, string to, string text) { _from = from; _to = to; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/src/TranslatorWindow.vala new/Translator-1.2.0/src/TranslatorWindow.vala --- old/Translator-1.1.0/src/TranslatorWindow.vala 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/src/TranslatorWindow.vala 2018-03-14 17:40:12.000000000 +0100 @@ -1,7 +1,9 @@ // Main translator window public class TranslateWindow : Gtk.ApplicationWindow { - private TranslateService service; + /// Service for translating + private TranslateService _translateService; + /// Dictionary service private DictionaryService _dictService; private GlobalSettings global = GlobalSettings.instance(); @@ -41,6 +43,9 @@ private Gtk.TextTag _normalTag; private Gtk.Label _dictLangLabel; + /// Toast for messages + private Granite.Widgets.Toast _toast; + private static int DEFAULT_WIDTH = 0; private static int DEFAULT_HEIGHT = 640; @@ -71,7 +76,10 @@ var style = @" GtkTextView { background-color: RGBA(255,0,0,0); - } + } + GtkTextView:selected { + background-color: #3689e6; + } .dark-separator { color: #888; } @@ -84,16 +92,27 @@ Granite.Widgets.Utils.set_theming_for_screen (this.get_screen (), style, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } + /// On service error + private void onServiceError(TranslatorError error) { + _isTranslating = false; + _progressSpinner.active = false; + + _toast.title = _(error.message); + _toast.send_notification(); + } + // Constructor // TODO: separate to methods public TranslateWindow() { langs = global.getLangs(); - service = new TranslateService(); - service.result.connect(onTranslate); + _translateService = new TranslateService(); + _translateService.result.connect(onTranslate); + _translateService.error.connect(onServiceError); _dictService = new DictionaryService(); _dictService.result.connect(onDictResult); + _dictService.error.connect(onServiceError); this.window_position = Gtk.WindowPosition.CENTER; this.set_gravity(Gdk.Gravity.CENTER); @@ -183,6 +202,8 @@ var paned = new Gtk.Paned(Gtk.Orientation.VERTICAL); _leftBox.pack_start(paned); + var topOverlay = new Gtk.Overlay(); + topText = new Gtk.TextView(); topText.set_margin_left(7); topText.set_margin_top(7); @@ -194,6 +215,10 @@ topScroll.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC); topScroll.add (topText); + _toast = new Granite.Widgets.Toast(""); + topOverlay.add(topScroll); + topOverlay.add_overlay(_toast); + /// Translate destination var bottomOverlay = new Gtk.Overlay(); @@ -213,9 +238,10 @@ _progressSpinner = new Gtk.Spinner (); _progressSpinner.active = false; _progressSpinner.margin = 70; - + + bottomOverlay.add(bottomScroll); - bottomOverlay.add_overlay(_progressSpinner); + bottomOverlay.add_overlay(_progressSpinner); var topBox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); var topLabelBox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); @@ -229,7 +255,7 @@ topLabelBox.pack_start(topLabelLang, false, true, 5); topLabelBox.pack_end(topLabelLen, false, true, 5); - topBox.pack_start(topScroll); + topBox.pack_start(topOverlay); topBox.pack_start(topLabelBox, false, true, 0); var bottomBox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); @@ -378,12 +404,14 @@ } } + /// On change value in left combobox private void onLeftComboChange() { onLangChange(false); } + /// On change value in right combobox private void onRightComboChange(LangInfo info) { - onLangChange(true); + onLangChange(true); } // Swap languages @@ -413,7 +441,7 @@ _isTranslating = true; _progressSpinner.active = true; - service.Translate(leftLang.id, rightLang.id, topText.buffer.text); + _translateService.Translate(leftLang.id, rightLang.id, topText.buffer.text); } /// On translate complete diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/src/WebJsonClient.vala new/Translator-1.2.0/src/WebJsonClient.vala --- old/Translator-1.1.0/src/WebJsonClient.vala 2018-02-14 19:45:17.000000000 +0100 +++ new/Translator-1.2.0/src/WebJsonClient.vala 2018-03-14 17:40:12.000000000 +0100 @@ -1,6 +1,10 @@ +/// For fetch json from url public class WebJsonClient : GLib.Object { - private static Json.Parser _parser; + /// No connection to server code + private const int NO_CONNECTION = 2; + /// Json parser + private static Json.Parser _parser; private static Json.Parser parser { get { if (_parser == null) _parser = new Json.Parser(); @@ -8,7 +12,8 @@ } } - public static Json.Object Get(string request) { + /// Get json from url + public static Json.Object Get(string request) throws TranslatorError { var session = new Soup.SessionSync (); session.timeout = GlobalSettings.SERVER_RESPOND_TIMEOUT; session.proxy_uri = GlobalSettings.getProxyUri(); @@ -16,7 +21,11 @@ var url = new Soup.URI(request); var message = new Soup.Message.from_uri ("GET", url); - var status = session.send_message (message); + var status = session.send_message(message); + if (status == NO_CONNECTION) { + throw new TranslatorError.NoConnection(_("No connection to server")); + } + var mess = (string)message.response_body.data; parser.load_from_data (mess); return parser.get_root ().get_object (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Translator-1.1.0/src/utils/TranslatorError.vala new/Translator-1.2.0/src/utils/TranslatorError.vala --- old/Translator-1.1.0/src/utils/TranslatorError.vala 1970-01-01 01:00:00.000000000 +0100 +++ new/Translator-1.2.0/src/utils/TranslatorError.vala 2018-03-14 17:40:12.000000000 +0100 @@ -0,0 +1,5 @@ +/// Exceptions +public errordomain TranslatorError { + /// No connection error + NoConnection; +} \ No newline at end of file