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
30 APPNAME = 'Fukui-no-Namari'
33 from FukuiNoNamari import config
34 config.APPNAME = APPNAME.lower()
35 from FukuiNoNamari import thread_window
36 from FukuiNoNamari import board_window
37 from FukuiNoNamari import dbus_object
38 from FukuiNoNamari import uri_opener
39 from FukuiNoNamari import session
41 # where are these values ?
42 DBUS_NAME_FLAG_ALLOW_REPLACEMENT = 1
43 DBUS_NAME_FLAG_REPLACE_EXISTING = 2
44 DBUS_NAME_FLAG_DO_NOT_QUEUE = 4
45 DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1
46 DBUS_REQUEST_NAME_REPLY_IN_QUEUE = 2
47 DBUS_REQUEST_NAME_REPLY_EXISTS = 3
48 DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
50 dbus_bus_name = "tk.tetteke.FukuiNoNamari"
51 dbus_object_path = "/tk/tetteke/FukuiNoNamari"
52 dbus_object.dbus_interface_name = "tk.tetteke.FukuiNoNamari"
55 print """usage: hage1 uri"""
59 opts, args = getopt.getopt(
60 sys.argv[1:], "h", ["help"])
61 except getopt.GetoptError, msg:
65 for option, value in opts:
66 if option in ("-h", "--help"):
72 if __name__ == "__main__":
77 # check if an instance exists
78 session_bus = dbus.SessionBus()
79 dbus_proxy_object = session_bus.get_object(
80 "org.freedesktop.DBus", "/org/freedesktop/DBus")
81 dbus_iface = dbus.Interface(dbus_proxy_object, "org.freedesktop.DBus")
82 req_name_ret = dbus_iface.RequestName(
83 dbus_bus_name, DBUS_NAME_FLAG_DO_NOT_QUEUE)
85 if req_name_ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER or \
86 req_name_ret == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
87 # the instance does not exist. start normally.
89 bus_name = dbus.service.BusName(dbus_bus_name, bus=session_bus)
90 obj = dbus_object.DBusFukuiNoNamariObject(bus_name, dbus_object_path)
92 gnome.init(APPNAME, APPVERSION)
93 gobject.threads_init()
97 from FukuiNoNamari.BbsType import bbs_type_judge_uri
98 from FukuiNoNamari.BbsType import bbs_type_exception
101 uri_opener.open_uri(uri)
102 except bbs_type_exception.BbsTypeError, msg:
108 # the instance exists. send message and exit.
110 proxy_object = session_bus.get_object(dbus_bus_name, dbus_object_path)
111 iface = dbus.Interface(proxy_object, dbus_object.dbus_interface_name)
115 from FukuiNoNamari.BbsType import bbs_type_judge_uri
116 from FukuiNoNamari.BbsType import bbs_type_exception
120 except bbs_type_exception.BbsTypeError, msg: