OSDN Git Service

Add bookmark.
[fukui-no-namari/fukui-no-namari.git] / src / fukui-no-namari
1 #!/usr/bin/env python
2
3 # Copyright (C) 2006 by Aiwota Programmer
4 # aiwotaprog@tetteke.tk
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
20 import pygtk
21 pygtk.require('2.0')
22 import gtk
23 import gnome.ui
24 import gobject
25 import getopt
26 import sys
27 import dbus
28 import dbus.service
29 import os.path
30
31 APPNAME = 'Fukui-no-Namari'
32 APPVERSION = '0.1'
33
34 from FukuiNoNamari import config
35 config.APPNAME = APPNAME.lower()
36 from FukuiNoNamari import thread_window
37 from FukuiNoNamari import board_window
38 from FukuiNoNamari import dbus_object
39 from FukuiNoNamari import uri_opener
40 from FukuiNoNamari import session
41 from FukuiNoNamari import bookmark_list
42
43 # where are these values ?
44 DBUS_NAME_FLAG_ALLOW_REPLACEMENT = 1
45 DBUS_NAME_FLAG_REPLACE_EXISTING = 2
46 DBUS_NAME_FLAG_DO_NOT_QUEUE = 4
47 DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1
48 DBUS_REQUEST_NAME_REPLY_IN_QUEUE = 2
49 DBUS_REQUEST_NAME_REPLY_EXISTS = 3
50 DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
51
52 dbus_bus_name = "tk.tetteke.FukuiNoNamari"
53 dbus_object_path = "/tk/tetteke/FukuiNoNamari"
54 dbus_object.dbus_interface_name = "tk.tetteke.FukuiNoNamari"
55
56 def usage():
57     print """usage: hage1 uri"""
58
59 def getoption():
60     try:
61         opts, args = getopt.getopt(
62             sys.argv[1:], "h", ["help"])
63     except getopt.GetoptError, msg:
64         print msg
65         usage()
66         sys.exit(2)
67     for option, value in opts:
68         if option in ("-h", "--help"):
69             usage()
70             sys.exit()
71     return args
72
73     
74 if __name__ == "__main__":
75
76     # get option
77     uris = getoption()
78
79     # check if an instance exists
80     session_bus = dbus.SessionBus()
81     dbus_proxy_object = session_bus.get_object(
82         "org.freedesktop.DBus", "/org/freedesktop/DBus")
83     dbus_iface = dbus.Interface(dbus_proxy_object, "org.freedesktop.DBus")
84     req_name_ret = dbus_iface.RequestName(
85         dbus_bus_name, DBUS_NAME_FLAG_DO_NOT_QUEUE)
86
87     if req_name_ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER or \
88        req_name_ret == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
89         # the instance does not exist. start normally.
90
91         bus_name = dbus.service.BusName(dbus_bus_name, bus=session_bus)
92         obj = dbus_object.DBusFukuiNoNamariObject(bus_name, dbus_object_path)
93
94         gnome.init(APPNAME, APPVERSION)
95         gobject.threads_init()
96
97         bookmark_path = os.path.join(config.get_config_dir_path(),
98                                      "bookmarks.txt")
99         bookmark_list.init(bookmark_path, "http://menu.2ch.net/bbsmenu.html")
100
101         # open some windows
102         if uris:
103             from FukuiNoNamari.BbsType import bbs_type_judge_uri
104             from FukuiNoNamari.BbsType import bbs_type_exception
105             for uri in uris:
106                 try:
107                     uri_opener.open_uri(uri)
108                 except bbs_type_exception.BbsTypeError, msg:
109                     print msg
110
111         session.start()
112
113     else:
114         # the instance exists. send message and exit.
115
116         proxy_object = session_bus.get_object(dbus_bus_name, dbus_object_path)
117         iface = dbus.Interface(proxy_object, dbus_object.dbus_interface_name)
118
119         # open some windows
120         if uris:
121             from FukuiNoNamari.BbsType import bbs_type_judge_uri
122             from FukuiNoNamari.BbsType import bbs_type_exception
123             for uri in uris:
124                 try:
125                     iface.open_uri(uri)
126                 except bbs_type_exception.BbsTypeError, msg:
127                     print msg