From f7cbc25efc87dd1d6bb713d8b3bfc642c12b0d77 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sun, 23 Apr 2017 11:50:41 +0200 Subject: [PATCH] Add basic app menu with shortcut for closing (see #14) --- data/de.coderkun.mcg.gresource.xml | 1 + data/menu.ui | 12 +++++++++++ locale/de/LC_MESSAGES/mcg.mo | Bin 1577 -> 1668 bytes locale/de/LC_MESSAGES/mcg.po | 33 +++++++++++++++++------------ locale/en/LC_MESSAGES/mcg.mo | Bin 1494 -> 1582 bytes locale/en/LC_MESSAGES/mcg.po | 33 +++++++++++++++++------------ mcg/application.py | 19 +++++++++++++++++ 7 files changed, 70 insertions(+), 28 deletions(-) create mode 100644 data/menu.ui diff --git a/data/de.coderkun.mcg.gresource.xml b/data/de.coderkun.mcg.gresource.xml index f11ba02..cc74286 100644 --- a/data/de.coderkun.mcg.gresource.xml +++ b/data/de.coderkun.mcg.gresource.xml @@ -2,6 +2,7 @@ gtk.glade + menu.ui mcg.css noise-texture.png diff --git a/data/menu.ui b/data/menu.ui new file mode 100644 index 0000000..1c9d77a --- /dev/null +++ b/data/menu.ui @@ -0,0 +1,12 @@ + + + +
+ + app.quit + _Quit + <Primary>q + +
+
+
diff --git a/locale/de/LC_MESSAGES/mcg.mo b/locale/de/LC_MESSAGES/mcg.mo index 134b06a8eee1c6de6d0c9fb77d0b533948bd3d8f..5111d9eb609c576a2a25b3291f62124cbb7f4a96 100644 GIT binary patch delta 657 zcmZ3<)52SSPl#nI0|Ntt1Oo$u3ylRR#uzIgB7t1_lEr1_m|;1_nbW1_o9J z1_lcz1_p5k1_nDOi25)l1_oIM28Lp&{6r=O1_1^JhUrWU4D1XH3@exz7&sXi7&b65 zFmNz1FzkY=I}9fCI$vR1_p-LObiVC3=9mvpnNW7 z2w##JBCpBJz`zS~ATt944+8^(8#4pLeMSa`U}lH|j9DQbuw`XnkYiwAaAsv-P-3WO zU`PTp7#Lci3RbW(FmN+4Fsx%`VBi9|m=$8cQC5hB=b`HEvqD1VDOBAXsQ7m%|1T@V z#~f@73?d8+41#P741x>{3~Fo)45A>1g820e3=Dp35FaG4K`hK?gIHL_#=roI1yHbo zA_JruM8hyB%0LEzLIq?2OdLdmLR5?aVlIf!%m6VH6opI-5D$W)(GVnwj6psI#h)+( z#CIS$P_TmH5)`aLlUbQ|u*3(JW=`JCw4B{o!O+mk#AI?Nvm%VWc_OnvqjH39Kz?dU zW{GZaYGP4xMnGaohOVKNLP}yuqJC~_Ua4Mb=H&Y<*E!;yQd9F%Qu8KnWi0^!`29j- delta 567 zcmZqSUCC2_Pl#nI0|NttI0FNN3l`Y>2t_3=5eU7+4q>7*;?f)wka4|D5@GvkiNH8-n>}F(OP-TW#{E!9W@YgI13~~$%3?Eq-7?eOBVFl6k3=GDs z5CvhZ3=G^13=A=>3=CWh3=A2p5Ce)?Ar7d8s_SKigvey5x>->1rBMEARt5$U1_p+0 ztPBi-3=9mXSs55a85kJuLiwLrAs%C8V_@K_XJB9uVS`vC&&I$23U!cTP;`KT5flj^ z-+^cl21S7wNDl+V5uhLj1uMwGAbF65pwI-dnHV4;0t$Xm2nvA&85kIZ86X}7aXFb8 sAg*DUtjn}x@@uB0>_!TPCRV1VlczH)!q}VlGy5}6He$UtS&*$50GfO)`2YX_ diff --git a/locale/de/LC_MESSAGES/mcg.po b/locale/de/LC_MESSAGES/mcg.po index 5afbf78..7209ae9 100644 --- a/locale/de/LC_MESSAGES/mcg.po +++ b/locale/de/LC_MESSAGES/mcg.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: MPDCoverGrid\n" -"POT-Creation-Date: 2017-04-22 14:55+0200\n" -"PO-Revision-Date: 2017-04-22 14:55+0200\n" +"POT-Creation-Date: 2017-04-23 11:44+0200\n" +"PO-Revision-Date: 2017-04-23 11:44+0200\n" "Last-Translator: coderkun \n" "Language-Team: \n" "Language: de\n" @@ -14,6 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: data/gtk.glade\n" +"X-Poedit-SearchPath-1: data/menu.ui\n" #: data/gtk.glade:21 msgid "Tracklist" @@ -55,50 +56,54 @@ msgstr "nach Titel" msgid "sort by year" msgstr "nach Jahr" -#: data/gtk.glade:435 +#: data/gtk.glade:436 msgid "Enter hostname or IP address" msgstr "Hostnamen oder IP-Adresse eingeben" -#: data/gtk.glade:447 +#: data/gtk.glade:448 msgid "Enter URL or local path" msgstr "URL oder lokalen Pfad eingeben" -#: data/gtk.glade:459 +#: data/gtk.glade:460 msgid "Enter password or leave blank" msgstr "Passwort eingeben oder leer lassen" -#: data/gtk.glade:484 +#: data/gtk.glade:485 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:496 +#: data/gtk.glade:497 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:508 +#: data/gtk.glade:509 msgid "Password:" msgstr "Passwort:" -#: data/gtk.glade:520 +#: data/gtk.glade:521 msgid "Image Directory:" msgstr "Bildordner:" -#: data/gtk.glade:544 data/gtk.glade:1200 +#: data/gtk.glade:545 data/gtk.glade:1201 msgid "Server" msgstr "Server" -#: data/gtk.glade:697 data/gtk.glade:1185 +#: data/gtk.glade:698 data/gtk.glade:1186 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:808 data/gtk.glade:1234 +#: data/gtk.glade:809 data/gtk.glade:1235 msgid "Playlist" msgstr "Wiedergabeliste" -#: data/gtk.glade:835 +#: data/gtk.glade:836 msgid "search library" msgstr "durchsuche Bibliothek" -#: data/gtk.glade:976 data/gtk.glade:1289 +#: data/gtk.glade:977 data/gtk.glade:1290 msgid "Library" msgstr "Bibliothek" + +#: data/menu.ui:7 +msgid "_Quit" +msgstr "_Beenden" diff --git a/locale/en/LC_MESSAGES/mcg.mo b/locale/en/LC_MESSAGES/mcg.mo index 70a23a78e46f4e5a69b2f96f329c686ed328373a..685ce84d757778e3f3cc0972ff9c6559883a47b2 100644 GIT binary patch delta 653 zcmcb{y^g2;o)F7a1_lNO2?hoR83qQ1I}8jAstgPaa~MIQ3=9TL3=C`x3=D=$3=FIc z3=9@b3=HB73=DQm5cOe93=Fai3=G9k`H4&n3<3-c4AYqy7}yyY7*;SbFmN(3Fl=CA zVBlb2VAus!cNk)BJ;O;R1_l-e28IhziK|czx1s!}ObiTs3=9mfnHU)O85kITLHS(F z5WXZcL|&7bfq@s~KxPI89tH*mH)aNggNzIe!ORd3h_XUFAj1mrfD$Xn1N96HR;&;o zghLgSvO;`N%?j~B4=cn6Q&=HBmB7$28s+p5P^h2Q6|a&F;oOe9K-~L zs2BspVi2F10b&Oz3Yi!f7`PcAp0pdH594J^paR~}mp~*${K<85S}zFt9K%Fsy(|tc7aW%*4RJ$H2g_mx+OapMinl43vKd%6|>z|7K!f z;ALQ7;9_QA;9+23kYHwDn9In(pvnw!_+b`^!%wk59DacX;_w$NAcxm8FtD;h6ezPo zT&~Fqak&*M#N|$`5SRNv)rGP`431`HVBlh4U`T?B=R(yNvqBtR%L;LL50pO#%3lpt zw;N<`Jp%*7QK*IISQ!{Vp)LxI4p1{U=U$|I06*JpkM_#1SBuW z00~VHn~4DuBB0<0g`f~fkb!|gn1O+T8_MQnW`MYsVX`jMj>)f?ma-cu7@Am_noge1 ftO#YBZQjpp$T-=6Y02artm2bjGucfRW|Ia0QerQ| diff --git a/locale/en/LC_MESSAGES/mcg.po b/locale/en/LC_MESSAGES/mcg.po index a238dce..aea4d94 100644 --- a/locale/en/LC_MESSAGES/mcg.po +++ b/locale/en/LC_MESSAGES/mcg.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: MPDCoverGrid\n" -"POT-Creation-Date: 2017-04-22 14:55+0200\n" -"PO-Revision-Date: 2017-04-22 14:56+0200\n" +"POT-Creation-Date: 2017-04-23 11:44+0200\n" +"PO-Revision-Date: 2017-04-23 11:44+0200\n" "Last-Translator: coderkun \n" "Language-Team: \n" "Language: en\n" @@ -13,6 +13,7 @@ msgstr "" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SearchPath-0: data/gtk.glade\n" +"X-Poedit-SearchPath-1: data/menu.ui\n" #: data/gtk.glade:21 msgid "Tracklist" @@ -54,50 +55,54 @@ msgstr "by Title" msgid "sort by year" msgstr "by Year" -#: data/gtk.glade:435 +#: data/gtk.glade:436 msgid "Enter hostname or IP address" msgstr "Enter hostname or IP address" -#: data/gtk.glade:447 +#: data/gtk.glade:448 msgid "Enter URL or local path" msgstr "Enter URL or local path" -#: data/gtk.glade:459 +#: data/gtk.glade:460 msgid "Enter password or leave blank" msgstr "Enter password or leave blank" -#: data/gtk.glade:484 +#: data/gtk.glade:485 msgid "Host:" msgstr "Host:" -#: data/gtk.glade:496 +#: data/gtk.glade:497 msgid "Port:" msgstr "Port:" -#: data/gtk.glade:508 +#: data/gtk.glade:509 msgid "Password:" msgstr "Password:" -#: data/gtk.glade:520 +#: data/gtk.glade:521 msgid "Image Directory:" msgstr "Image Directory:" -#: data/gtk.glade:544 data/gtk.glade:1200 +#: data/gtk.glade:545 data/gtk.glade:1201 msgid "Server" msgstr "Server" -#: data/gtk.glade:697 data/gtk.glade:1185 +#: data/gtk.glade:698 data/gtk.glade:1186 msgid "Cover" msgstr "Cover" -#: data/gtk.glade:808 data/gtk.glade:1234 +#: data/gtk.glade:809 data/gtk.glade:1235 msgid "Playlist" msgstr "Playlist" -#: data/gtk.glade:835 +#: data/gtk.glade:836 msgid "search library" msgstr "search library" -#: data/gtk.glade:976 data/gtk.glade:1289 +#: data/gtk.glade:977 data/gtk.glade:1290 msgid "Library" msgstr "Library" + +#: data/menu.ui:7 +msgid "_Quit" +msgstr "_Quit" diff --git a/mcg/application.py b/mcg/application.py index d6770ab..38dba7a 100644 --- a/mcg/application.py +++ b/mcg/application.py @@ -56,6 +56,8 @@ class Application(Gtk.Application): self._load_css() self._setup_locale() self._load_ui() + self._setup_actions() + self._load_appmenu() def do_activate(self): @@ -65,6 +67,10 @@ class Application(Gtk.Application): self._window.present() + def on_quit(self, action, param): + self.quit() + + def _setup_logging(self): logging.basicConfig( level=self._verbosity, @@ -105,5 +111,18 @@ class Application(Gtk.Application): self._builder.add_from_resource(self._get_resource_path('gtk.glade')) + def _setup_actions(self): + action = Gio.SimpleAction.new("quit", None) + action.connect('activate', self.on_quit) + self.add_action(action) + + + def _load_appmenu(self): + builder = Gtk.Builder() + builder.set_translation_domain(Application.DOMAIN) + builder.add_from_resource(self._get_resource_path('menu.ui')) + self.set_app_menu(builder.get_object('app-menu')) + + def _get_resource_path(self, path): return "/{}/{}".format(Application.ID.replace('.', '/'), path)