OSDN Git Service

update on the implementation of menu items(2)
authorShyouzou Sugitani <shy@users.sourceforge.jp>
Mon, 7 Jan 2013 13:18:40 +0000 (22:18 +0900)
committerShyouzou Sugitani <shy@users.sourceforge.jp>
Mon, 7 Jan 2013 13:18:40 +0000 (22:18 +0900)
ChangeLog
lib/ninix/menu.py
lib/ninix_main.py

index 1ea62a1..c0a2503 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon January 7 2013   Shyouzou Sugitani <shy@users.sourceforge.jp>
+       * お気に入り/ポータルメニューでバナーを表示するようにした.
+         (表示方法はゴースト等のサムネイルと同様.)
+         ローカル(ghost/master/banner/)にファイルがある場合のみ表示する.
+         (URLが渡された場合の画像取得は行なっていない.)
+
 Sun January 6 2013   Shyouzou Sugitani <shy@users.sourceforge.jp>
        * ゴースト/バルーン/サーフェス/着せ替えそれぞれにあるサムネイルを
          メニューのゴースト召喚/交代, バルーン切り替え, シェル切り替えの
index 6a5c839..c55a545 100644 (file)
@@ -420,17 +420,37 @@ class Menu:
                         if len(entry) < 2:
                             continue
                         url = entry[1]
-                        ## FIXME
-                        #if len(entry) > 2:
-                        #    bannar = entry[2]
-                        #else:
-                        #    bannar = None
+                        if len(entry) > 2:
+                            base_path = self.request_parent(
+                                'GET', 'get_prefix')
+                            filename = entry[2].lower()
+                            head, tail = os.path.splitext(filename)
+                            if not tail:
+                                for ext in ['.png', '.jpg', '.gif']:
+                                    filename = ''.join((filename, ext))
+                                    banner = os.path.join(
+                                        base_path, b'ghost/master/banner',
+                                        os.fsencode(filename))
+                                    if not os.path.exists(banner):
+                                        banner = None
+                                    else:
+                                        break
+                            else:
+                                banner = os.path.join(
+                                    base_path, b'ghost/master/banner',
+                                    os.fsencode(filename))
+                                if not os.path.exists(banner):
+                                    banner = None
+                        else:
+                            banner = None
                         item = Gtk.MenuItem(title)
                         item.connect(
                             'activate',
                             lambda a, i: self.request_parent(
                                 'NOTIFY', 'notify_site_selection', i),
                             (title, url))
+                        item.set_has_tooltip(True)
+                        item.connect('query-tooltip', self.on_tooltip, banner)
                     menu.add(item)
                     item.show()
                 menuitem = self.ui_manager.get_widget(
@@ -456,17 +476,36 @@ class Menu:
                     if len(entry) < 2:
                         continue
                     url = entry[1]
-                    ## FIXME
-                    #if len(entry) > 2:
-                    #    bannar = entry[2]
-                    #else:
-                    #    bannar = None
+                    if len(entry) > 2:
+                        base_path = self.request_parent('GET', 'get_prefix')
+                        filename = entry[2].lower()
+                        head, tail = os.path.splitext(filename)
+                        if not tail:
+                            for ext in ['.png', '.jpg', '.gif']:
+                                filename = ''.join((filename, ext))
+                                banner = os.path.join(
+                                    base_path, b'ghost/master/banner',
+                                    os.fsencode(filename))
+                                if not os.path.exists(banner):
+                                    banner = None
+                                else:
+                                    break
+                        else:
+                            banner = os.path.join(
+                                base_path, b'ghost/master/banner',
+                                os.fsencode(filename))
+                            if not os.path.exists(banner):
+                                banner = None
+                    else:
+                        banner = None
                     item = Gtk.MenuItem(title)
                     item.connect(
                         'activate',
                         lambda a, i: self.request_parent(
                             'NOTIFY', 'notify_site_selection', i),
                         (title, url))
+                    item.set_has_tooltip(True)
+                    item.connect('query-tooltip', self.on_tooltip, banner)
                 menu.add(item)
                 item.show()
             menuitem =  self.ui_manager.get_widget(
index 2fb8054..34d3297 100644 (file)
@@ -593,6 +593,7 @@ class Application:
             'notify_other': self.communicate.notify_other,
             'reset_sstp_flag': self.sstp_controler.reset_sstp_flag,
             'get_sstp_port': self.sstp_controler.get_sstp_port,
+            'get_prefix': self.get_sakura_prefix,
             }
         handler = handlers.get(event,
                                getattr(self, event,
@@ -676,6 +677,9 @@ class Application:
                 continue
             yield sakura
 
+    def get_sakura_prefix(self):
+        return self.__menu_owner.get_prefix()
+
     def getstring(self, name):
         return self.__menu_owner.getstring(name)