OSDN Git Service

step one, change file name.
[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
30 from Hage1 import thread_window
31 from Hage1 import board_window
32 from Hage1 import config
33 from Hage1 import dbus_object
34 from Hage1 import uri_opener
35 from Hage1 import session
36
37 APPNAME = 'Hage1'
38 APPVERSION = '0.1'
39
40 # where are these values ?
41 DBUS_NAME_FLAG_ALLOW_REPLACEMENT = 1
42 DBUS_NAME_FLAG_REPLACE_EXISTING = 2
43 DBUS_NAME_FLAG_DO_NOT_QUEUE = 4
44 DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1
45 DBUS_REQUEST_NAME_REPLY_IN_QUEUE = 2
46 DBUS_REQUEST_NAME_REPLY_EXISTS = 3
47 DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER = 4
48
49 dbus_bus_name = "tk.tetteke.Hage1"
50 dbus_object_path = "/tk/tetteke/Hage1"
51 dbus_object.dbus_interface_name = "tk.tetteke.Hage1"
52
53 def usage():
54     print """usage: hage1 uri"""
55
56 def getoption():
57     try:
58         opts, args = getopt.getopt(
59             sys.argv[1:], "h", ["help"])
60     except getopt.GetoptError, msg:
61         print msg
62         usage()
63         sys.exit(2)
64     for option, value in opts:
65         if option in ("-h", "--help"):
66             usage()
67             sys.exit()
68     return args
69
70     
71 if __name__ == "__main__":
72
73     # get option
74     uris = getoption()
75
76     # check if an instance exists
77     session_bus = dbus.SessionBus()
78     dbus_proxy_object = session_bus.get_object(
79         "org.freedesktop.DBus", "/org/freedesktop/DBus")
80     dbus_iface = dbus.Interface(dbus_proxy_object, "org.freedesktop.DBus")
81     req_name_ret = dbus_iface.RequestName(
82         dbus_bus_name, DBUS_NAME_FLAG_DO_NOT_QUEUE)
83
84     if req_name_ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER or \
85        req_name_ret == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
86         # the instance does not exist. start normally.
87
88         bus_name = dbus.service.BusName(dbus_bus_name, bus=session_bus)
89         obj = dbus_object.DBusHage1Object(bus_name, dbus_object_path)
90
91         gnome.init(APPNAME, APPVERSION)
92         gobject.threads_init()
93         config.APPNAME = APPNAME
94
95         # open some windows
96         if uris:
97             from Hage1.BbsType import bbs_type_judge_uri
98             from Hage1.BbsType import bbs_type_exception
99             for uri in uris:
100                 try:
101                     uri_opener.open_uri(uri)
102                 except bbs_type_exception.BbsTypeError, msg:
103                     print msg
104
105         session.start()
106
107     else:
108         # the instance exists. send message and exit.
109
110         proxy_object = session_bus.get_object(dbus_bus_name, dbus_object_path)
111         iface = dbus.Interface(proxy_object, dbus_object.dbus_interface_name)
112
113         # open some windows
114         if uris:
115             from Hage1.BbsType import bbs_type_judge_uri
116             from Hage1.BbsType import bbs_type_exception
117             for uri in uris:
118                 try:
119                     iface.open_uri(uri)
120                 except bbs_type_exception.BbsTypeError, msg:
121                     print msg