manqod-server-console 1.29.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/ruby
2
+ #this file is part of manqod-server-console
3
+ #manqod is distributed under the CDDL licence
4
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
5
+
6
+ path=File::expand_path(File.join(File.dirname(__FILE__),".."))
7
+ @@etc=File::expand_path(File.join(path,"etc/"))
8
+ $LOAD_PATH.unshift(File::expand_path(File.join(path,"lib/")))
9
+
10
+ INFO=0
11
+ WARNING=1
12
+ ERROR=2
13
+
14
+ require 'rubygems'
15
+ begin
16
+ require 'gtk2'
17
+ rescue LoadError => err
18
+ print "install ruby-gtk2\n"
19
+ exit
20
+ end
21
+
22
+ require 'Gtk.rb'
23
+ require 'ServerSelector.rb'
24
+ require 'ServerConsole.rb'
25
+ require 'ConnectionProperties.rb'
26
+
27
+
28
+ ServerSelector.new
29
+
30
+ Gtk.main
31
+
@@ -0,0 +1,18 @@
1
+ LICENCE:
2
+ the owner of this program(manqod) is Dobai-Pataky Balint(dpblnt dot gmail dot com)
3
+ manqod is distributed under the CDDL licence(http://www.opensource.org/licenses/cddl1.php)
4
+ don't worry this only means the following
5
+ * you can use it, copy it, modify it
6
+ * if you want your modifications to be distributed send them back to me, i'll merge them in
7
+ * nobody can sell it
8
+
9
+
10
+
11
+ manqod is a program witten in ruby, using ruby-gtk2 for the GKT+ toolkit
12
+ it's goal is to give us a frontend to manage our data in an sql server
13
+
14
+ this is the console of the server
15
+
16
+ copy server.conf.example to server.conf
17
+ uncomment and set the url
18
+
@@ -0,0 +1,18 @@
1
+ #
2
+ # for the host part you can use a fqdn or an ip
3
+ #
4
+ #server_uri = "druby://192.168.1.1:5549"
5
+
6
+ # the server needs to connect back to clients, so client sends it's address on initial connection
7
+ # by default the manqod-server-console will use your address returned by gethostname and send that to the server
8
+ # use client_uri, if you don't have a fqdn, or the server is not be able to resolve your fqdn, or can't reach you by the resolved fqdn
9
+ #
10
+ # for the port part you can set a fix the port or set it to 0, than your OS will assign one for us
11
+ #
12
+ #client_uri = "druby://192.168.1.2:0"
13
+
14
+ { "localhost" => {
15
+ :uri => "druby://192.168.1.1:5549",
16
+ :bind => "druby://:0"
17
+ }
18
+ }
@@ -0,0 +1,113 @@
1
+ #this file is part of manqod-server-console
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class ConnectionProperties < Gtk::Dialog
6
+ def initialize(parent_window,cn,manqod_server)
7
+ @manqod_server=manqod_server
8
+ @cn=cn
9
+ conn=@manqod_server.conn(@cn)
10
+
11
+ super("Connection Properties",parent_window,Gtk::Dialog::MODAL,[Gtk::Stock::OK,Gtk::Dialog::RESPONSE_ACCEPT],[Gtk::Stock::CANCEL,Gtk::Dialog::RESPONSE_REJECT])
12
+ dh=Gtk::Table.new(2,1)
13
+ dh.attach2("Conenction: ",Gtk::Label.new(@cn))
14
+ @name=dh.attach2("Visible connection name: ",Gtk::Entry.new.set_text(conn["name"]))
15
+ @uri=dh.attach2("URI:",Gtk::Entry.new.set_text(conn["uri"]))
16
+ @cache_host=dh.attach2("Memcache host:",Gtk::Entry.new.set_text(conn["cache_host"]))
17
+ @sql_host=dh.attach2("SQL host:",Gtk::Entry.new.set_text(conn["sql_host"]))
18
+ @sql_user=dh.attach2("SQL user:",Gtk::Entry.new.set_text(conn["sql_user"]))
19
+ @sql_password=dh.attach2("SQL password:",Gtk::Entry.new.set_text(conn["sql_password"]))
20
+ @sql_db=dh.attach2("SQL database:",Gtk::Entry.new.set_text(conn["sql_db"]))
21
+
22
+ dh.attach2("SQL database functions:",Gtk::HButtonBox.new.
23
+ pack_start(check_db=Gtk::Button.new("check")).
24
+ pack_start(pstruct_db=Gtk::Button.new("populate\nstructure"))).
25
+ pack_start(pmanqod_db=Gtk::Button.new("pupulate\nmanqod"))
26
+
27
+ @admin_uri=dh.attach2("Admin URI:",Gtk::Entry.new.set_text(conn["admin_uri"]))
28
+ @client_uri=dh.attach2("Client URI:",Gtk::Entry.new.set_text(conn["client_uri"]))
29
+ @auto_load=dh.attach2("Auto load on startup:",Gtk::CheckButton.new.set_active(conn["auto_load"]))
30
+ @auto_load_order=dh.attach2("Auto load order:",Gtk::Entry.new.set_text(conn["auto_load_order"]))
31
+ @client_default=dh.attach2("Default for clients:",Gtk::CheckButton.new.set_active(conn["client_default"]))
32
+
33
+ vbox.pack_start(dh)
34
+
35
+ #check and create database and permission
36
+ check_db.signal_connect("clicked",@cn){|me,cn|
37
+ begin
38
+ save_conn
39
+ @manqod_server.check_sql_db(cn)
40
+ Gtk::warn("Mysql connection is OK")
41
+ rescue =>err
42
+ begin
43
+ Gtk::warn("checking #{cn.inspect} failed",err,ERROR)
44
+ dialog=Gtk::Dialog.new("Crate database and permissions",self,Gtk::Dialog::MODAL,[Gtk::Stock::OK,Gtk::Dialog::RESPONSE_ACCEPT],[Gtk::Stock::CANCEL,Gtk::Dialog::RESPONSE_REJECT])
45
+ holder=Gtk::Table.new(2,1)
46
+ su=holder.attach2("Super User Username",Gtk::Entry.new.set_text("root"))
47
+ sup=holder.attach2("Super User Password",Gtk::Entry.new.set_visibility(false))
48
+ dialog.vbox.pack_start(holder)
49
+ dialog.show_all
50
+ if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT
51
+ @manqod_server.create_sql_db_and_perms(cn,su.text,sup.text)
52
+ Gtk::warn("Mysql database and permissions created.\nCheck again.")
53
+ end
54
+ rescue =>err2
55
+ Gtk::warn("SU on #{@cn.inspect} failed",err2,ERROR)
56
+ ensure
57
+ dialog.destroy
58
+ end
59
+ end
60
+ }
61
+ #populate manqod db
62
+ pmanqod_db.signal_connect("clicked",@cn){|me,cn|
63
+ begin
64
+ save_conn
65
+ @manqod_server.populate_manqod_db(cn)
66
+ Gtk::warn("Population of #{cn} was succesful")
67
+ rescue =>err
68
+ Gtk::warn("Population of #{cn.inspect} failed",err,ERROR)
69
+ end
70
+ }
71
+ #populate manqod db structure
72
+ pstruct_db.signal_connect("clicked",@cn){|me,cn|
73
+ begin
74
+ save_conn
75
+ @manqod_server.populate_manqod_db(cn,true)
76
+ Gtk::warn("Structure population of #{cn} was succesful")
77
+ rescue =>err
78
+ Gtk::warn("Structure population of #{cn.inspect} failed",err,ERROR)
79
+ end
80
+ }
81
+
82
+ end
83
+
84
+ def run
85
+ show_all
86
+ ret=super()
87
+ if ret==Gtk::Dialog::RESPONSE_ACCEPT
88
+ save_conn
89
+ end
90
+ ret=@name.text
91
+ destroy
92
+ ret
93
+ end
94
+ def save_conn
95
+ begin
96
+ @manqod_server.set_conn_variables(@cn,{"name" => @name.text,
97
+ "uri" => @uri.text,
98
+ "cache_host" => @cache_host.text,
99
+ "sql_host" => @sql_host.text,
100
+ "sql_user" => @sql_user.text,
101
+ "sql_password" => @sql_password.text,
102
+ "sql_db" => @sql_db.text,
103
+ "admin_uri" => @admin_uri.text,
104
+ "client_uri" => @client_uri.text,
105
+ "auto_load" => @auto_load.active?,
106
+ "auto_load_order" => @auto_load_order.text,
107
+ "client_default" => @client_default.active?}
108
+ )
109
+ rescue => err
110
+ retry if Gtk::warn("restoring #{@cn.inspect} failed",err,ERROR,true)
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,55 @@
1
+ #this file is part of manqod-server-console
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ module Gtk
6
+ def self.warn(subject,details=nil,level=INFO,canretry=false)
7
+ subject="#{subject}\n#{details.message}" if details && details.class != String
8
+ print "#{subject}\n"
9
+ details="#{details.backtrace.join("\n\t")}" if details && details.class != String
10
+ print "#{details}\n" unless details.nil?
11
+
12
+ dialog=Gtk::MessageDialog.new(nil,Gtk::Dialog::Flags::MODAL,
13
+ case level
14
+ when ERROR then Gtk::MessageDialog::ERROR
15
+ when WARNING then Gtk::MessageDialog::WARNING
16
+ when INFO then Gtk::MessageDialog::INFO
17
+ else Gtk::MessageDialog::OTHER
18
+ end,
19
+ if canretry
20
+ Gtk::MessageDialog::ButtonsType::YES_NO
21
+ else
22
+ Gtk::MessageDialog::ButtonsType::CLOSE
23
+ end,
24
+ subject)
25
+ # dialog.set_secondary_text("please report it!")
26
+ dialog.vbox.pack_start(expander=Gtk::Expander.new("details",true).add(Gtk::TextView.new(Gtk::TextBuffer.new.set_text(details)))) unless details.nil?
27
+ dialog.vbox.pack_end(Gtk::Label.new("retry?"),false,false) if canretry
28
+ # dialog.set_size_request(400,300)
29
+ dialog.show_all
30
+ ret=dialog.run
31
+ dialog.destroy
32
+ ret == Gtk::Dialog::ResponseType::YES
33
+ end
34
+ def self.ask(question)
35
+ print question,": "
36
+ dialog=Gtk::MessageDialog.new(nil,Gtk::Dialog::Flags::MODAL,Gtk::MessageDialog::QUESTION,Gtk::MessageDialog::ButtonsType::YES_NO,question)
37
+ # dialog.set_size_request(400,300)
38
+ dialog.show_all
39
+ ret=dialog.run == Gtk::Dialog::ResponseType::YES
40
+ dialog.destroy
41
+ print ret,"\n"
42
+ ret
43
+ end
44
+
45
+ class Table
46
+ def attach2(text,obj)
47
+ n=self.n_rows
48
+ self.attach_defaults(Gtk::Label.new(text).set_xalign(0),0,1,n,n+1)
49
+ self.attach_defaults(obj,1,2,n,n+1)
50
+ self.n_rows=n+1
51
+ obj
52
+ end
53
+ end
54
+ end
55
+
@@ -0,0 +1,281 @@
1
+ #this file is part of manqod-server-console
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class ServerConsole < Gtk::Window
6
+ class MyStore < Gtk::TreeStore
7
+ def find_iter(col_num,col_data)
8
+ found_iter=nil
9
+ each{|model,path,iter|
10
+ if iter[col_num]==col_data
11
+ found_iter=iter
12
+ break
13
+ end
14
+ }
15
+ found_iter
16
+ end
17
+ end
18
+ def initialize(name,server_uri,client_uri)
19
+ super("Manqod Server Console on #{name}")
20
+ signal_connect("destroy") {|me| Gtk.main_quit}
21
+ set_size_request(600,400)
22
+ require 'drb'
23
+ DRb.start_service(client_uri)
24
+ @manqod_server=DRb::DRbObject.new(nil,server_uri)
25
+ begin
26
+ @manqod_server.alive?
27
+ rescue =>err
28
+ retry if Gtk::warn("no server?","tried: #{server_uri}\n#{err}\n",ERROR,true)
29
+ exit
30
+ end
31
+
32
+
33
+ #type,conn_name,conn_display,moditem_id,moditem_display
34
+ #types:0=connection,1=moditem
35
+ tree_store=MyStore.new(Integer,String,String,Integer,String,String)
36
+ view=Gtk::TreeView.new(tree_store)
37
+
38
+
39
+
40
+ renderer = Gtk::CellRendererText.new
41
+ #view.append_column(conn_col=Gtk::TreeViewColumn.new("connections", renderer, :text => 0))
42
+ view.append_column(conn_col=Gtk::TreeViewColumn.new("Server", renderer, :text => 2))
43
+ view.append_column(moditem_col = Gtk::TreeViewColumn.new("List", renderer, :text => 4))
44
+ view.append_column(cnt_col = Gtk::TreeViewColumn.new("Rows", renderer, :text => 5))
45
+ view.set_expander_column(moditem_col).set_enable_tree_lines(true)
46
+
47
+ begin
48
+ @manqod_server.conn_list{|conn_name,conn|
49
+ iter=tree_store.append(nil)
50
+ iter[0]=0
51
+ iter[1]=conn_name
52
+ iter[2]=conn["name"]
53
+ }
54
+ rescue =>err
55
+ retry if Gtk::warn("cannot fill connections list!\nserver is gone?","tried: #{server_uri}\n#{err}\n#{err.backtrace.join("\n")}",ERROR,true)
56
+ end
57
+
58
+ begin
59
+ @manqod_server.dbs.each_pair{|conn_name,db|
60
+ piter=tree_store.find_iter(1,conn_name)
61
+ begin
62
+ db.each_moditem{|drb_list_model|
63
+ iter=tree_store.append(piter)
64
+ iter[0]=1
65
+ iter[3]=drb_list_model.get_id
66
+ iter[4]=drb_list_model.moditem["display"]
67
+ iter[5]=drb_list_model.rowcount.to_s
68
+ }
69
+ rescue => err
70
+ p err
71
+ end
72
+ }
73
+ rescue =>err
74
+ retry if Gtk::warn("cannot get dbs!\nserver is gone?","tried: #{server_uri}\n#{err}\n#{err.backtrace.join("\n")}",ERROR,true)
75
+ end
76
+
77
+
78
+ def edit_connection(view,tree_store,parent_window)
79
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]==0
80
+ cn=cur_iter[1]
81
+ else
82
+ Gtk::warn("select a connection first!")
83
+ return
84
+ end
85
+ begin
86
+ cp=ConnectionProperties.new(parent_window,cn,@manqod_server)
87
+ cur_iter[2]=cp.run
88
+ rescue =>err
89
+ retry if Gtk::warn("tried to edit #{cn}",err,ERROR)
90
+ end
91
+ end
92
+
93
+ holder=Gtk::VBox.new
94
+ holder.pack_start(buttons=Gtk::Toolbar.new,false,false)
95
+ holder.pack_end(Gtk::ScrolledWindow.new.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC).add(view))
96
+ buttons.append(Gtk::Stock::NEW,"create a new connection"){
97
+ if Gtk::ask("create a new connection?")
98
+ dialog=Gtk::Dialog.new("Connection Properties",self,Gtk::Dialog::MODAL,[Gtk::Stock::OK,Gtk::Dialog::RESPONSE_ACCEPT],[Gtk::Stock::CANCEL,Gtk::Dialog::RESPONSE_REJECT])
99
+ dh=Gtk::Table.new(2,1)
100
+ dh.attach_defaults(Gtk::Label.new("connection name"),0,1,0,1)
101
+ dh.attach_defaults(name=Gtk::Entry.new,1,2,0,1)
102
+ name.text="new"
103
+ dialog.vbox.pack_start(dh)
104
+ dialog.show_all
105
+ if dialog.run==Gtk::Dialog::RESPONSE_ACCEPT
106
+ iter=tree_store.append(nil);
107
+ iter[0]=0
108
+ iter[1]=name.text
109
+ iter[2]=name.text
110
+ view.set_cursor(iter.path,nil,false)
111
+ begin
112
+ @manqod_server.create_conn(name.text)
113
+ @manqod_server.set_conn_variables(name.text,{"name" => name.text,
114
+ "uri" => "druby://:5550",
115
+ "cache_host" => "localhost",
116
+ "sql_host" => "localhost",
117
+ "sql_user" => "root",
118
+ "sql_password" => "",
119
+ "sql_db" => "manqod",
120
+ "admin_uri" => "druby://127.0.0.1:5549",
121
+ "client_uri" => "druby://127.0.0.1:5549",
122
+ "auto_load" => true,
123
+ "auto_load_order" => "1",
124
+ "client_default" => false}
125
+ )
126
+ rescue =>err
127
+ retry if Gtk::warn("Creating new connection failed",err,ERROR,true)
128
+ end
129
+ end
130
+ dialog.destroy
131
+ end
132
+ }
133
+ buttons.append(Gtk::Stock::PROPERTIES,"set the connection's properties"){edit_connection(view,tree_store,self)}
134
+ buttons.append(Gtk::Stock::REMOVE,"remove the connection"){
135
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]==0
136
+ if Gtk::ask("delete the connection from the server?")
137
+ cn=cur_iter[1]
138
+ begin
139
+ @manqod_server.remove_conn(cn)
140
+ rescue => err
141
+ retry if Gtk::warn("server is gone?\ntried: #{server_uri}",err,ERROR,true)
142
+ end
143
+ tree_store.remove(cur_iter)
144
+ end
145
+ else
146
+ Gtk::warn("select a connection first!")
147
+ end
148
+ }
149
+ buttons.append_space
150
+ buttons.append(Gtk::Stock::EXECUTE,"start the selected server thread"){
151
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]==0
152
+ cn=cur_iter[1]
153
+ begin
154
+ @manqod_server.load_conn(cn)
155
+ @manqod_server.dbs[cn].moditems.each_pair{|moditem_id,drb_list_model|
156
+ iter=tree_store.append(cur_iter)
157
+ iter[0]=1
158
+ iter[3]=moditem_id
159
+ iter[4]=drb_list_model.moditem["display"]
160
+ }
161
+ rescue
162
+ retry if Gtk::warn("Starting server thread #{cn} failed",err,ERROR,true)
163
+ end
164
+ else
165
+ Gtk::warn("select a connection first!")
166
+ end
167
+ }
168
+ buttons.append(Gtk::Stock::STOP,"stop the selected server thread"){
169
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]==0
170
+ cn=cur_iter[1]
171
+ if Gtk::ask("stop server thread #{cn}?")
172
+ while cur_iter.has_child? do if i=cur_iter.clone.first_child then tree_store.remove(i) end end
173
+ # tree_store.each{|model,path,iter| tree_store.remove(iter) if iter.parent == cur_iter}
174
+ begin
175
+ @manqod_server.free_conn(cn)
176
+ rescue =>err
177
+ retry if Gtk::warn("Stop server thread #{cn} failed",err,ERROR,true)
178
+ end
179
+ end
180
+ else
181
+ Gtk::warn("select a server to stop")
182
+ end
183
+ }
184
+ buttons.append(Gtk::Stock::REFRESH,"reload the selected server thread"){
185
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]==0
186
+ cn=cur_iter[1]
187
+ if Gtk::ask("reload server thread #{cn}?")
188
+ while cur_iter.has_child? do if i=cur_iter.clone.first_child then tree_store.remove(i) end end
189
+ begin
190
+ @manqod_server.reload_conn(cn)
191
+ @manqod_server.dbs[cn].moditems.each_pair{|moditem_id,drb_list_model|
192
+ iter=tree_store.append(cur_iter)
193
+ iter[0]=1
194
+ iter[3]=moditem_id
195
+ iter[4]=drb_list_model.moditem["display"]
196
+ }
197
+ rescue =>err
198
+ retry if Gtk::warn("Reload server thread #{cn} failed",err,ERROR,true)
199
+ end
200
+ end
201
+ else
202
+ Gtk::warn("select a server thread to reload")
203
+ end
204
+ }
205
+ buttons.append_space
206
+ buttons.append(Gtk::Stock::REFRESH,"reload the selected list"){
207
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]!=0
208
+ cn=cur_iter.parent[1]
209
+ if Gtk::ask("reload item #{cur_iter[3]} on server thread #{cn}?")
210
+ begin
211
+ @manqod_server.dbs[cn].reload_moditem(cur_iter[3])
212
+ rescue =>err
213
+ retry if Gtk::warn("Reload list #{cn} failed",err,ERROR,true)
214
+ end
215
+ end
216
+ else
217
+ Gtk::warn("select an item to reload")
218
+ end
219
+ }
220
+ buttons.append(Gtk::Stock::JUMP_TO,"download selected list"){
221
+ if view.cursor[0] and cur_iter=tree_store.get_iter(view.cursor[0]) and cur_iter[0]!=0
222
+ cn=cur_iter.parent[1]
223
+ if Gtk::ask("download item #{cur_iter[3]} on server thread #{cn}?")
224
+ begin
225
+ list=@manqod_server.dbs[cn].moditem(cur_iter[3]).filtered_fetch2
226
+ print "downloaded #{list.size} rows\n"
227
+ rescue =>err
228
+ retry if Gtk::warn("Download test of #{cn} failed",err,ERROR,true)
229
+ end
230
+ end
231
+ else
232
+ Gtk::warn("select an item to download")
233
+ end
234
+ }
235
+ buttons.append_space
236
+ buttons.append(Gtk::Stock::STOP,"Stop manqod server"){
237
+ if Gtk::ask("Are you sure you want to stop the manqod server and all it's server threads?")
238
+ begin
239
+ @manqod_server.stop
240
+ rescue =>err
241
+ retry if Gtk::warn("Stop server failed",err,ERROR,true)
242
+ end
243
+ Gtk.main_quit if Gtk::ask("Nothing to do here anymore,\nDo you wan to Quit?")
244
+ end
245
+ }
246
+ buttons.append(Gtk::Stock::ABOUT,"about the registered users"){
247
+
248
+ wu=Gtk::Window.new('Manqod Server Console')
249
+ wu.move(position[0]+size[0]+10,position[1])
250
+ wu.set_size_request(200,size[1])
251
+
252
+ tree_store=Gtk::ListStore.new(String,String)
253
+ view=Gtk::TreeView.new(tree_store)
254
+ renderer = Gtk::CellRendererText.new
255
+ view.append_column(Gtk::TreeViewColumn.new("Connection", renderer, :text => 0))
256
+ view.append_column(Gtk::TreeViewColumn.new("Nick", renderer, :text => 1))
257
+ wu.add(view)
258
+ wu.show_all
259
+
260
+ begin
261
+ @manqod_server.connected_clients.each_pair{|rpc,db|
262
+ iter=tree_store.append
263
+ iter[0]=db
264
+ begin
265
+ iter[1]=rpc.nick
266
+ rescue =>e
267
+ #connection failed
268
+ end
269
+ }
270
+ rescue =>err
271
+ retry if Gtk::warn("Fetching client list failed",err,ERROR,true)
272
+ end
273
+
274
+ }
275
+ buttons.append(Gtk::Stock::QUIT,"leave manqod-server-console"){Gtk.main_quit if Gtk::ask("Really Quit?")}
276
+ buttons.set_toolbar_style(Gtk::Toolbar::ICONS)
277
+ add(holder)
278
+ show_all
279
+ end
280
+ end
281
+
@@ -0,0 +1,42 @@
1
+ #this file is part of manqod-server-console
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class ServerSelector < Gtk::Window
6
+ def initialize
7
+ super()
8
+ servers={ "localhost" =>{ :uri => "druby://127.0.0.1:5549", :bind => "druby://:0"}}
9
+ begin
10
+ path=File::expand_path(File.join(File.join(File::dirname(__FILE__),".."),"etc"))
11
+ conf=""
12
+ conf=File.new(File::expand_path(File.join(path,"server.conf"))).read
13
+ servers=eval(conf)
14
+ rescue => err
15
+ Gtk.warn("no server.conf","#{err}\n\nusing default:\n#{servers.inspect}\n")
16
+ end
17
+ add(Gtk::HBox.new.
18
+ pack_start(Gtk::Label.new("Select server")).
19
+ pack_start(server_combo=Gtk::ComboBox.new(model=Gtk::ListStore.new(String,String,String)).
20
+ pack_start(renderer=Gtk::CellRendererText.new,true).add_attribute(renderer,:text,0)
21
+ ).
22
+ pack_start(ok=Gtk::Button.new(Gtk::Stock::CONNECT)).
23
+ pack_start(quit=Gtk::Button.new(Gtk::Stock::QUIT))
24
+ )
25
+ quit.signal_connect("clicked"){|me|
26
+ Gtk.main_quit if Gtk::ask("Are you sure, you want to quit?")
27
+ }
28
+ ok.signal_connect("clicked"){|me|
29
+ if i=server_combo.active_iter
30
+ ServerConsole.new(i[0],i[1],i[2])
31
+ hide
32
+ end
33
+ }
34
+ servers.each_pair{|conn,addr|
35
+ i=model.append
36
+ i[0]=conn
37
+ i[1]=addr[:uri]
38
+ i[2]=addr[:bind]
39
+ }
40
+ show_all
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: manqod-server-console
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 29
8
+ - 0
9
+ version: 1.29.0
10
+ platform: ruby
11
+ authors:
12
+ - Dobai-Pataky Balint
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-02-20 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: gtk2
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ description: Manqod is a desktop application for small companies to organize their data on an interface customised for them by themselves
34
+ email: dpblnt@gmail.com
35
+ executables:
36
+ - manqod-server-console
37
+ extensions: []
38
+
39
+ extra_rdoc_files: []
40
+
41
+ files:
42
+ - bin/manqod-server-console
43
+ - doc/README
44
+ - doc/server.conf.example
45
+ - lib/ServerConsole.rb
46
+ - lib/ConnectionProperties.rb
47
+ - lib/Gtk.rb
48
+ - lib/ServerSelector.rb
49
+ has_rdoc: true
50
+ homepage: http://manqod.sourceforge.net/
51
+ licenses:
52
+ - CDDL
53
+ post_install_message:
54
+ rdoc_options: []
55
+
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ segments:
64
+ - 1
65
+ - 8
66
+ - 5
67
+ version: 1.8.5
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project:
79
+ rubygems_version: 1.3.7
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Manqod is a desktop application for small companies to organize their data on an interface customised for them by themselves. This is the server console.
83
+ test_files: []
84
+