3 # Copyright (C) 2006 by Aiwota Programmer
4 # aiwotaprog@tetteke.tk
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.
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.
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
31 from FukuiNoNamari import config
32 from FukuiNoNamari import thread_window
33 from FukuiNoNamari import board_window
34 from FukuiNoNamari import dbus_object
35 from FukuiNoNamari import uri_opener
36 from FukuiNoNamari import session
37 from FukuiNoNamari import bookmark_list
39 # where are these values ?
40 DBUS_NAME_FLAG_ALLOW_REPLACEMENT = 1
41 DBUS_NAME_FLAG_REPLACE_EXISTING = 2
42 DBUS_NAME_FLAG_DO_NOT_QUEUE = 4
43 DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1
44 DBUS_REQUEST_NAME_REPLY_IN_QUEUE = 2
45 DBUS_REQUEST_NAME_REPLY_EXISTS = 3
46 DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
48 dbus_bus_name = "tk.tetteke.FukuiNoNamari"
49 dbus_object_path = "/tk/tetteke/FukuiNoNamari"
50 dbus_object.dbus_interface_name = "tk.tetteke.FukuiNoNamari"
53 print """usage: hage1 uri"""
57 opts, args = getopt.getopt(
58 sys.argv[1:], "h", ["help"])
59 except getopt.GetoptError, msg:
63 for option, value in opts:
64 if option in ("-h", "--help"):
70 if __name__ == "__main__":
75 # check if an instance exists
76 session_bus = dbus.SessionBus()
77 dbus_proxy_object = session_bus.get_object(
78 "org.freedesktop.DBus", "/org/freedesktop/DBus")
79 dbus_iface = dbus.Interface(dbus_proxy_object, "org.freedesktop.DBus")
80 req_name_ret = dbus_iface.RequestName(
81 dbus_bus_name, DBUS_NAME_FLAG_DO_NOT_QUEUE)
83 if req_name_ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER or \
84 req_name_ret == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
85 # the instance does not exist. start normally.
87 bus_name = dbus.service.BusName(dbus_bus_name, bus=session_bus)
88 obj = dbus_object.DBusFukuiNoNamariObject(bus_name, dbus_object_path)
90 gnome.init(config.APPNAME, config.APPVERSION)
91 gobject.threads_init()
93 bookmark_path = os.path.join(config.get_config_dir_path(),
95 bookmark_list.init(bookmark_path, "http://menu.2ch.net/bbsmenu.html")
99 from FukuiNoNamari.BbsType import bbs_type_judge_uri
100 from FukuiNoNamari.BbsType import bbs_type_exception
103 uri_opener.open_uri(uri)
104 except bbs_type_exception.BbsTypeError, msg:
110 # the instance exists. send message and exit.
112 proxy_object = session_bus.get_object(dbus_bus_name, dbus_object_path)
113 iface = dbus.Interface(proxy_object, dbus_object.dbus_interface_name)
117 from FukuiNoNamari.BbsType import bbs_type_judge_uri
118 from FukuiNoNamari.BbsType import bbs_type_exception
122 except bbs_type_exception.BbsTypeError, msg: