Mercurial > traipse
comparison orpg/networking/mplay_server_gui.py @ 31:fc48380f0c9f ornery-orc
Traipse Beta 'OpenRPG' {100503-00}
Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for
developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to
the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user.
Update Summary (Patch-2)
New Features:
New Namespace method with two new syntaxes
New Namespace Internal is context sensitive, always!
New Namespace External is 'as narrow as you make it'
New Namespace FutureCheck helps ensure you don't receive an incorrect node
New Namespace 2.0 documentation in the User Manual
New Namespace plugin, Allows Traipse users to use the Standard syntax !@ :: @!
New Mini Library with minis from Devin Knight
New PluginDB access for URL2Link plugin
New to Forms, they now show their content in Design Mode
New to Update Manager, checks Repo for updates on software start
New to Mini Lib node, change title in design mode
New to Game Tree, never lose a node, appends a number to the end of corrupted trees
New to Server GUI, Traipse Suite's Debug Console
New Warhammer PC Sheet
Updates:
Update to White Board layer, uses a pencil image for color button
Update to Grid Layer, uses a grid image for color button
Update to Chat Window, size of drop down menus
Update to default lobby message
Update to template Text node
Update to 4e PC Sheet node
Update to how display names are acquired
Update to Server, added some 'Pious' technology
Update to features node
Fixes:
Fix to Server GUI startup errors
Fix to Server GUI Rooms tab updating
Fix to Chat and Settings if non existant die roller is picked
Fix to Dieroller and .open() used with .vs(). Successes are correctly calculated
Fix to Alias Lib's Export to Tree, Open, Save features
Fix to alias node, now works properly
Fix to Splitter node, minor GUI cleanup
Fix to Backgrounds not loading through remote loader
Fix to Node name errors
Fix to rolling dice in chat Whispers
Fix to Splitters Sizing issues
Fix to URL2Link plugin, modified regex compilation should remove memory leak
Fix to mapy.py, a roll back due to zoomed grid issues
Fix to whiteboard_handler, Circles work by you clicking the center of the circle
Fix to Servers parse_incoming_dom which was outdated and did not respect XML
Fix to a broken link in the server welcome message
Fix to InterParse and logger requiring traceback
Fix to Update Manager Status Bar
Fix to failed image and erroneous pop up
Fix to Mini Lib node that was preventing use
Fix to plugins that parce dice but did not call InterParse
Fix to nodes for name changing by double click
Fix to Game Tree, node ordering on drag and drop corrected
Fix to Game Tree, corrupted error message was not showing
Fix to Update Manager, checks for internet connection
Fix to Update Manager, Auto Update corrections
Fix to Server GUI's broadcast, room, player messaging
author | sirebral |
---|---|
date | Mon, 03 May 2010 03:30:11 -0500 |
parents | ff154cf3350c |
children | d02e9197c066 |
comparison
equal
deleted
inserted
replaced
30:8e77f169f324 | 31:fc48380f0c9f |
---|---|
19 from meta_server_lib import post_server_data, remove_server | 19 from meta_server_lib import post_server_data, remove_server |
20 from mplay_server import mplay_server, server | 20 from mplay_server import mplay_server, server |
21 | 21 |
22 from xml.dom import minidom | 22 from xml.dom import minidom |
23 from orpg.orpgCore import component | 23 from orpg.orpgCore import component |
24 from orpg.tools.orpg_log import debug | 24 from orpg.tools.orpg_log import debug, DebugConsole |
25 from orpg.tools.orpg_settings import settings | 25 from orpg.tools.orpg_settings import settings |
26 | 26 |
27 from xml.etree.ElementTree import ElementTree, Element, iselement | 27 from xml.etree.ElementTree import ElementTree, Element, iselement |
28 from xml.etree.ElementTree import fromstring, tostring, parse | 28 from xml.etree.ElementTree import fromstring, tostring, parse |
29 | 29 |
149 | 149 |
150 def AddGroup(self, data): | 150 def AddGroup(self, data): |
151 (room, room_id, players, passworded) = data | 151 (room, room_id, players, passworded) = data |
152 i = self.InsertStringItem(0, str(room_id)) | 152 i = self.InsertStringItem(0, str(room_id)) |
153 self.SetStringItem(i, 1, room) | 153 self.SetStringItem(i, 1, room) |
154 self.SetStringItem(i, 2, players) | 154 self.SetStringItem(i, 2, str(players)) |
155 self.SetStringItem(i, 3, str(passworded)) | 155 self.SetStringItem(i, 3, passworded) |
156 | 156 |
157 def DeleteGroup(self, data): | 157 def DeleteGroup(self, data): |
158 i = self.FindItem(-1, str(data)) | 158 i = self.FindItem(-1, str(data)) |
159 self.DeleteItem(i) | 159 self.DeleteItem(i) |
160 | 160 |
161 def UpdateGroup(self, data): | 161 def UpdateGroup(self, data): |
162 (room, room_id, players) = data | 162 (room, room_id, players) = data |
163 i = self.FindItem( -1, str(room_id)) | 163 i = self.FindItem( -1, str(room_id)) |
164 self.SetStringItem( i, 1, room ) | 164 self.SetStringItem( i, 1, room ) |
165 if players: self.SetStringItem(i, 2, str(players)) | 165 self.SetStringItem(i, 2, str(players)) |
166 ### Need to add room for Password Updates ### | 166 ### Need to add room for Password Updates ### |
167 | 167 |
168 class Connections(wx.ListCtrl): | 168 class Connections(wx.ListCtrl): |
169 def __init__( self, parent, main ): | 169 def __init__( self, parent, main ): |
170 wx.ListCtrl.__init__( self, parent, -1, wx.DefaultPosition, | 170 wx.ListCtrl.__init__( self, parent, -1, wx.DefaultPosition, |
319 elif menuItem == 2: | 319 elif menuItem == 2: |
320 message = 'Banishment' | 320 message = 'Banishment' |
321 BanMsg = wx.TextEntryDialog( self, "Enter A Message To Send:", | 321 BanMsg = wx.TextEntryDialog( self, "Enter A Message To Send:", |
322 "Ban Message", message, wx.OK|wx.CANCEL|wx.CENTRE ) | 322 "Ban Message", message, wx.OK|wx.CANCEL|wx.CENTRE ) |
323 if BanMsg.ShowModal() == wx.ID_OK: message = BanMsg.GetValue() | 323 if BanMsg.ShowModal() == wx.ID_OK: message = BanMsg.GetValue() |
324 else: message = '' | 324 else: return |
325 Silent = wx.MessageDialog(None, 'Silent Ban?', 'Question', | 325 Silent = wx.MessageDialog(None, 'Silent Ban?', 'Question', |
326 wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) | 326 wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) |
327 if Silent.ShowModal() == wx.ID_YES: silent = 1 | 327 if Silent.ShowModal() == wx.ID_YES: silent = 1 |
328 else: silent = 0 | 328 else: silent = 0 |
329 self.main.server.server.admin_ban(playerID, message, silent) | 329 self.main.server.server.admin_ban(playerID, message, silent) |
330 self.remove( playerID ) | 330 self.remove( playerID ) |
331 elif menuItem == 4: | 331 elif menuItem == 4: |
332 msg = self.GetMessageInput( "Send a message to player" ) | 332 msg = self.GetMessageInput( "Send a message to player" ) |
333 if len(msg): self.main.server.server.send( msg, playerID, str(groupID) ) | 333 |
334 broadcast = '<chat type="1" version="1.0"><font color="#FF0000">' +msg+ '</font></chat>' | |
335 chat = Element('chat') | |
336 chat.set('type', '1') | |
337 chat.set('version', '1.0') | |
338 chat.text = broadcast | |
339 msg = self.main.server.server.buildMsg(str(playerID), '0', '1', msg) | |
340 | |
341 if len(msg): self.main.server.server.players[playerID].outbox.put(msg) | |
334 #Leave this in for now. | 342 #Leave this in for now. |
335 elif menuItem == 5: | 343 elif menuItem == 5: |
336 msg = self.GetMessageInput( "Send message to room of this player") | 344 msg = self.GetMessageInput( "Send message to room of this player") |
345 | |
346 broadcast = '<chat type="1" version="1.0"><font color="#FF0000">' +msg+ '</font></chat>' | |
347 chat = Element('chat') | |
348 chat.set('type', '1') | |
349 chat.set('version', '1.0') | |
350 chat.text = broadcast | |
351 msg = self.main.server.server.buildMsg('all', '0', '1', tostring(chat)) | |
352 | |
337 if len(msg): self.main.server.server.send_to_group('0', str(groupID), msg ) | 353 if len(msg): self.main.server.server.send_to_group('0', str(groupID), msg ) |
338 elif menuItem == 6: | 354 elif menuItem == 6: |
339 msg = self.GetMessageInput( "Broadcast Server Message" ) | 355 msg = self.GetMessageInput( "Broadcast Server Message" ) |
340 if len(msg): self.main.server.server.broadcast( msg ) | 356 if len(msg): self.main.server.server.broadcast(msg ) |
341 elif menuItem == 3: | 357 elif menuItem == 3: |
342 version_string = self.main.server.server.obtain_by_id(playerID, 'client_string') | 358 version_string = self.main.server.server.obtain_by_id(playerID, 'client_string') |
343 if version_string: wx.MessageBox("Running client version " + version_string,"Version") | 359 if version_string: wx.MessageBox("Running client version " + version_string,"Version") |
344 else: wx.MessageBox("No client version available for this player", "Version") | 360 else: wx.MessageBox("No client version available for this player", "Version") |
345 | 361 |
352 | 368 |
353 class ServerGUI(wx.Frame): | 369 class ServerGUI(wx.Frame): |
354 STATUS = SERVER_STOPPED | 370 STATUS = SERVER_STOPPED |
355 def __init__(self, parent, id, title): | 371 def __init__(self, parent, id, title): |
356 wx.Frame.__init__(self, parent, id, title, size = (760, 560) ) | 372 wx.Frame.__init__(self, parent, id, title, size = (760, 560) ) |
357 if wx.Platform == '__WXMSW__': icon = wx.Icon( dir_struct["icon"]+'WAmisc9.ico', wx.BITMAP_TYPE_ICO ) | 373 if wx.Platform == '__WXMSW__': icon = wx.Icon(dir_struct["icon"]+'WAmisc9.ico', wx.BITMAP_TYPE_ICO) |
358 else: icon = wx.Icon( dir_struct["icon"]+'connect.gif', wx.BITMAP_TYPE_GIF ) | 374 else: icon = wx.Icon(dir_struct["icon"]+'connect.gif', wx.BITMAP_TYPE_GIF) |
359 self.SetIcon(icon) | 375 self.SetIcon(icon) |
360 self.serverName = "Server Name" | 376 self.serverName = "Server Name" |
361 self.bootPwd = "" | 377 self.bootPwd = "" |
362 self.do_log = True | 378 self.do_log = True |
363 | 379 |
382 cb["data_sent"] = self.OnDataSent | 398 cb["data_sent"] = self.OnDataSent |
383 cb["create_group"] = self.OnCreateGroup | 399 cb["create_group"] = self.OnCreateGroup |
384 cb["delete_group"] = self.OnDeleteGroup | 400 cb["delete_group"] = self.OnDeleteGroup |
385 cb["join_group"] = self.OnJoinGroup | 401 cb["join_group"] = self.OnJoinGroup |
386 cb['update_group'] = self.OnUpdateGroup | 402 cb['update_group'] = self.OnUpdateGroup |
403 cb['exception'] = self.OnException | |
387 cb["role"] = self.OnSetRole | 404 cb["role"] = self.OnSetRole |
388 self.callbacks = cb | 405 self.callbacks = cb |
389 | 406 |
390 # Misc. | 407 # Misc. |
391 self.conf = ServerConfig(self) | 408 self.conf = ServerConfig(self) |
399 """ Build the GUI menu. """ | 416 """ Build the GUI menu. """ |
400 self.mainMenu = wx.MenuBar() | 417 self.mainMenu = wx.MenuBar() |
401 | 418 |
402 # File Menu | 419 # File Menu |
403 menu = wx.Menu() | 420 menu = wx.Menu() |
404 menu.Append( 1, 'Start', 'Start server.') | 421 menu.Append(1, 'Start', 'Start server.') |
405 menu.Append( 2, 'Stop', 'Shutdown server.') | 422 menu.Append(2, 'Stop', 'Shutdown server.') |
406 menu.AppendSeparator() | 423 menu.AppendSeparator() |
407 menu.Append( 3, 'E&xit', 'Exit application.') | 424 menu.Append(3, 'E&xit', 'Exit application.') |
408 self.Bind(wx.EVT_MENU, self.OnStart, id=1) | 425 self.Bind(wx.EVT_MENU, self.OnStart, id=1) |
409 self.Bind(wx.EVT_MENU, self.OnStop, id=2) | 426 self.Bind(wx.EVT_MENU, self.OnStop, id=2) |
410 self.Bind(wx.EVT_MENU, self.OnExit, id=3) | 427 self.Bind(wx.EVT_MENU, self.OnExit, id=3) |
411 self.mainMenu.Append(menu, '&Server') | 428 self.mainMenu.Append(menu, '&Server') |
412 | 429 |
413 # Registration Menu | 430 # Registration Menu |
414 menu = wx.Menu() | 431 menu = wx.Menu() |
415 menu.Append( 4, 'Register', 'Register with OpenRPG server directory.') | 432 menu.Append(4, 'Register', 'Register with OpenRPG server directory.') |
416 menu.Append( 5, 'Unregister', 'Unregister from OpenRPG server directory.') | 433 menu.Append(5, 'Unregister', 'Unregister from OpenRPG server directory.') |
417 self.Bind(wx.EVT_MENU, self.OnRegister, id=4) | 434 self.Bind(wx.EVT_MENU, self.OnRegister, id=4) |
418 self.Bind(wx.EVT_MENU, self.OnUnregister, id=5) | 435 self.Bind(wx.EVT_MENU, self.OnUnregister, id=5) |
419 self.mainMenu.Append( menu, '&Registration' ) | 436 self.mainMenu.Append( menu, '&Registration' ) |
420 | 437 |
421 # Server Configuration Menu | 438 # Server Configuration Menu |
422 menu = wx.Menu() | 439 menu = wx.Menu() |
423 menu.Append( 6, 'Ban List', 'Modify Ban List.') | 440 menu.Append(6, 'Ban List', 'Modify Ban List.') |
424 menu.Append(11, 'Zombies', 'Set auto-kick time for zombie clients') | 441 menu.Append(11, 'Zombies', 'Set auto-kick time for zombie clients') |
425 menu.Append(14, 'Send Size', 'Adjust the send size limit') | 442 menu.Append(14, 'Send Size', 'Adjust the send size limit') |
426 menu.AppendSeparator() | 443 menu.AppendSeparator() |
427 menu.Append( 7, 'Start Ping', 'Ping players to validate remote connection.' ) | 444 menu.Append(7, 'Start Ping', 'Ping players to validate remote connection.' ) |
428 menu.Append( 8, 'Stop Ping', 'Stop validating player connections.' ) | 445 menu.Append(8, 'Stop Ping', 'Stop validating player connections.' ) |
429 menu.Append( 9, 'Ping Interval', 'Change the ping interval.' ) | 446 menu.Append(9, 'Ping Interval', 'Change the ping interval.' ) |
430 menu.AppendSeparator() | 447 menu.AppendSeparator() |
431 menu.AppendCheckItem( 10, 'Server Logging', 'Turn on or off the Server GUI Log').Check(self.do_log) | 448 menu.AppendCheckItem(10, 'Server Logging', |
449 'Turn on or off the Server GUI Log').Check(self.do_log) | |
432 menu.AppendCheckItem(12, 'Room Passwords', 'Allow or Deny Room Passwords').Check(False) | 450 menu.AppendCheckItem(12, 'Room Passwords', 'Allow or Deny Room Passwords').Check(False) |
433 menu.AppendCheckItem(13, 'Remote Admin', 'Allow or Deny Remote Admin').Check(False) | 451 menu.AppendCheckItem(13, 'Remote Admin', 'Allow or Deny Remote Admin').Check(False) |
434 menu.AppendCheckItem(15, 'Remote Kill', 'Allow or Deny Remote Admin Server Kill').Check(False) | 452 menu.AppendCheckItem(15, 'Remote Kill', 'Allow or Deny Remote Admin Server Kill').Check(False) |
435 self.Bind(wx.EVT_MENU, self.ModifyBanList, id=6) | 453 self.Bind(wx.EVT_MENU, self.ModifyBanList, id=6) |
436 self.Bind(wx.EVT_MENU, self.PingPlayers, id=7) | 454 self.Bind(wx.EVT_MENU, self.PingPlayers, id=7) |
437 self.Bind(wx.EVT_MENU, self.StopPingPlayers, id=8) | 455 self.Bind(wx.EVT_MENU, self.StopPingPlayers, id=8) |
438 self.Bind(wx.EVT_MENU, self.ConfigPingInterval, id=9) | 456 self.Bind(wx.EVT_MENU, self.ConfigPingInterval, id=9) |
439 self.Bind(wx.EVT_MENU, self.LogToggle, id=10) | 457 self.Bind(wx.EVT_MENU, self.LogToggle, id=10) |
440 self.mainMenu.Append( menu, '&Configuration' ) | 458 self.mainMenu.Append( menu, '&Configuration') |
441 self.SetMenuBar( self.mainMenu ) | 459 |
442 | 460 # Traipse Suite of Additions. |
443 self.mainMenu.Enable( 2, False ) | 461 self.traipseSuite = wx.Menu() |
444 self.mainMenu.Enable( 4, False ) | 462 self.debugger = DebugConsole(self) |
445 self.mainMenu.Enable( 5, False ) | 463 self.mainMenu.Insert(3, self.traipseSuite, "&Traipse Suite") |
464 | |
465 #Debugger Console | |
466 self.debugConsole = wx.MenuItem(self.traipseSuite, -1, "Debug Console", "Debug Console") | |
467 self.Bind(wx.EVT_MENU, self.OnMB_DebugConsole, self.debugConsole) | |
468 self.traipseSuite.AppendItem(self.debugConsole) | |
469 | |
470 self.SetMenuBar(self.mainMenu) | |
471 | |
472 self.mainMenu.Enable(2, False) | |
473 self.mainMenu.Enable(4, False) | |
474 self.mainMenu.Enable(5, False) | |
446 | 475 |
447 # Disable the ping menu items | 476 # Disable the ping menu items |
448 self.mainMenu.Enable( 7, False ) | 477 self.mainMenu.Enable(7, False) |
449 self.mainMenu.Enable( 8, False ) | 478 self.mainMenu.Enable(8, False) |
450 self.mainMenu.Enable( 9, False ) | 479 self.mainMenu.Enable(9, False) |
451 | 480 |
452 # Disable placeholders | 481 # Disable placeholders |
453 self.mainMenu.Enable( 11, False ) | 482 self.mainMenu.Enable(11, False) |
454 self.mainMenu.Enable( 14, False ) | 483 self.mainMenu.Enable(14, False) |
455 self.mainMenu.Enable( 12, False ) | 484 self.mainMenu.Enable(12, False) |
456 self.mainMenu.Enable( 13, False ) | 485 self.mainMenu.Enable(13, False) |
457 self.mainMenu.Enable( 15, False ) | 486 self.mainMenu.Enable(15, False) |
487 | |
488 def OnException(self, error): | |
489 self.TraipseSuiteWarn('debug') | |
490 self.debugger.console.AppendText(".. " + str(error) +'\n') | |
491 | |
492 def OnMB_DebugConsole(self, evt): | |
493 self.TraipseSuiteWarnCleanup('debug') | |
494 if self.debugger.IsShown() == True: self.debugger.Hide() | |
495 else: self.debugger.Show() | |
496 | |
497 def TraipseSuiteWarn(self, menuitem): | |
498 ### Allows for the reuse of the 'Attention' menu. | |
499 ### component.get('frame').TraipseSuiteWarn('item') ### Portable | |
500 self.mainMenu.Remove(3) | |
501 self.mainMenu.Insert(3, self.traipseSuite, "&Traipse Suite!") | |
502 if menuitem == 'debug': | |
503 if self.debugger.IsShown() == True: | |
504 self.mainMenu.Remove(3) | |
505 self.mainMenu.Insert(3, self.traipseSuite, "&Traipse Suite") | |
506 else: | |
507 self.debugConsole.SetBitmap(wx.Bitmap(dir_struct["icon"] + 'spotlight.png')) | |
508 self.traipseSuite.RemoveItem(self.debugConsole) | |
509 self.traipseSuite.AppendItem(self.debugConsole) | |
510 | |
511 def TraipseSuiteWarnCleanup(self, menuitem): | |
512 ### Allows for portable cleanup of the 'Attention' menu. | |
513 ### component.get('frame').TraipseSuiteWarnCleanup('item') ### Portable | |
514 self.mainMenu.Remove(3) | |
515 self.mainMenu.Insert(3, self.traipseSuite, "&Traipse Suite") | |
516 if menuitem == 'debug': | |
517 self.traipseSuite.RemoveItem(self.debugConsole) | |
518 self.debugConsole.SetBitmap(wx.Bitmap(dir_struct["icon"] + 'clear.gif')) | |
519 self.traipseSuite.AppendItem(self.debugConsole) | |
520 | |
458 def build_body(self): | 521 def build_body(self): |
459 """ Create the ViewNotebook and logger. """ | 522 """ Create the ViewNotebook and logger. """ |
460 splitter = wx.SplitterWindow(self, -1, style=wx.NO_3D | wx.SP_3D) | 523 splitter = wx.SplitterWindow(self, -1, style=wx.NO_3D | wx.SP_3D) |
461 nb = wx.Notebook( splitter, -1 ) | 524 nb = wx.Notebook(splitter, -1) |
462 self.conns = Connections(nb, self) | 525 self.conns = Connections(nb, self) |
463 self.groups = Groups(nb, self) | 526 self.groups = Groups(nb, self) |
464 self.msgWindow = HTMLMessageWindow( nb ) | 527 self.msgWindow = HTMLMessageWindow(nb) |
465 nb.AddPage(self.conns, "Players") | 528 nb.AddPage(self.conns, "Players") |
466 nb.AddPage(self.groups, 'Rooms') | 529 nb.AddPage(self.groups, 'Rooms') |
467 nb.AddPage( self.msgWindow, "Messages" ) | 530 nb.AddPage(self.msgWindow, "Messages") |
468 | 531 |
469 log = wx.TextCtrl(splitter, -1, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) | 532 log = wx.TextCtrl(splitter, -1, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL) |
470 wx.Log.SetActiveTarget( wx.LogTextCtrl(log) ) | 533 wx.Log.SetActiveTarget(wx.LogTextCtrl(log)) |
471 splitter.SplitHorizontally(nb, log, 400) | 534 splitter.SplitHorizontally(nb, log, 400) |
472 splitter.SetMinimumPaneSize(40) | 535 splitter.SetMinimumPaneSize(40) |
473 self.nb = nb | 536 self.nb = nb |
474 self.log = log | 537 self.log = log |
475 | 538 |
520 self.conns.update(data) | 583 self.conns.update(data) |
521 | 584 |
522 def OnDataSent(self, bytes): | 585 def OnDataSent(self, bytes): |
523 self.total_messages_sent += 1 | 586 self.total_messages_sent += 1 |
524 self.total_data_sent += bytes | 587 self.total_data_sent += bytes |
525 self.sb.SetStatusText("Sent: %s (%d)" % (format_bytes(self.total_data_sent), self.total_messages_sent), 1) | 588 self.sb.SetStatusText("Sent: %s (%d)" % (format_bytes(self.total_data_sent), |
589 self.total_messages_sent), 1) | |
526 | 590 |
527 def OnDataRecv(self, bytes): | 591 def OnDataRecv(self, bytes): |
528 self.total_messages_received += 1 | 592 self.total_messages_received += 1 |
529 self.total_data_received += bytes | 593 self.total_data_received += bytes |
530 self.sb.SetStatusText("Recv: %s (%d)" % (format_bytes(self.total_data_received), self.total_messages_received), 2) | 594 self.sb.SetStatusText("Recv: %s (%d)" % (format_bytes(self.total_data_received), |
595 self.total_messages_received), 2) | |
531 | 596 |
532 def OnCreateGroup( self, data ): | 597 def OnCreateGroup( self, data ): |
533 (room, room_id, player, pwd) = data | 598 (room, room_id, player, pwd) = data |
534 self.groups.AddGroup(data) | 599 self.groups.AddGroup(data) |
535 self.conns.roomList[room_id] = room | 600 self.conns.roomList[room_id] = room |
567 if configDoc.get("admin"): self.bootPwd = configDoc.get("admin") | 632 if configDoc.get("admin"): self.bootPwd = configDoc.get("admin") |
568 elif configDoc.get("boot"): self.bootPwd = configDoc.get("boot") | 633 elif configDoc.get("boot"): self.bootPwd = configDoc.get("boot") |
569 except: pass | 634 except: pass |
570 if self.serverName == '': | 635 if self.serverName == '': |
571 self.serverName = 'Server Name' | 636 self.serverName = 'Server Name' |
572 serverNameEntry = wx.TextEntryDialog(self, "Please Enter The Server Name You Wish To Use:", | 637 serverNameEntry = wx.TextEntryDialog(self, |
573 "Server's Name", self.serverName, wx.OK|wx.CANCEL|wx.CENTRE ) | 638 "Please Enter The Server Name You Wish To Use:", |
639 "Server's Name", | |
640 self.serverName, wx.OK|wx.CANCEL|wx.CENTRE) | |
574 if serverNameEntry.ShowModal() == wx.ID_OK: self.serverName = serverNameEntry.GetValue() | 641 if serverNameEntry.ShowModal() == wx.ID_OK: self.serverName = serverNameEntry.GetValue() |
575 if self.bootPwd == '': | 642 if self.bootPwd == '': |
576 serverPasswordEntry = wx.TextEntryDialog(self, | 643 serverPasswordEntry = wx.TextEntryDialog(self, |
577 "Please Enter The Server Admin Password:", "Server's Password", | 644 "Please Enter The Server Admin Password:", |
578 self.bootPwd, wx.OK|wx.CANCEL|wx.CENTRE) | 645 "Server's Password", |
646 self.bootPwd, wx.OK|wx.CANCEL|wx.CENTRE) | |
579 if serverPasswordEntry.ShowModal() == wx.ID_OK: self.bootPwd = serverPasswordEntry.GetValue() | 647 if serverPasswordEntry.ShowModal() == wx.ID_OK: self.bootPwd = serverPasswordEntry.GetValue() |
580 if len(self.serverName): | 648 if len(self.serverName): |
581 wx.BeginBusyCursor() | 649 wx.BeginBusyCursor() |
582 self.server = ServerMonitor(self.callbacks, self.conf, self.serverName, self.bootPwd) | 650 self.server = ServerMonitor(self.callbacks, self.conf, self.serverName, self.bootPwd) |
583 self.server.start() | 651 self.server.start() |
584 self.STATUS = SERVER_RUNNING | 652 self.STATUS = SERVER_RUNNING |
585 self.sb.SetStatusText("Running", 3) | 653 self.sb.SetStatusText("Running", 3) |
586 self.SetTitle(__appname__ + "- (running) - (unregistered)") | 654 self.SetTitle(__appname__ + "- (running) - (unregistered)") |
587 self.mainMenu.Enable( 1, False ) | 655 self.mainMenu.Enable(1, False) |
588 self.mainMenu.Enable( 2, True ) | 656 self.mainMenu.Enable(2, True) |
589 self.mainMenu.Enable( 4, True ) | 657 self.mainMenu.Enable(4, True) |
590 wx.EndBusyCursor() | 658 wx.EndBusyCursor() |
591 else: self.show_error("Server is already running.", "Error Starting Server") | 659 else: self.show_error("Server is already running.", "Error Starting Server") |
592 | 660 |
593 def OnStop(self, event = None): | 661 def OnStop(self, event = None): |
594 """ Stop server. """ | 662 """ Stop server. """ |
596 self.OnUnregister() | 664 self.OnUnregister() |
597 self.server.stop() | 665 self.server.stop() |
598 self.STATUS = SERVER_STOPPED | 666 self.STATUS = SERVER_STOPPED |
599 self.sb.SetStatusText("Stopped", 3) | 667 self.sb.SetStatusText("Stopped", 3) |
600 self.SetTitle(__appname__ + "- (stopped) - (unregistered)") | 668 self.SetTitle(__appname__ + "- (stopped) - (unregistered)") |
601 self.mainMenu.Enable( 1, True ) | 669 self.mainMenu.Enable(1, True) |
602 self.mainMenu.Enable( 2, False ) | 670 self.mainMenu.Enable(2, False) |
603 self.mainMenu.Enable( 4, False ) | 671 self.mainMenu.Enable(4, False) |
604 self.mainMenu.Enable( 5, False ) | 672 self.mainMenu.Enable(5, False) |
605 self.conns.DeleteAllItems() | 673 self.conns.DeleteAllItems() |
606 | 674 |
607 def OnRegister(self, event = None): | 675 def OnRegister(self, event = None): |
608 """ Call into mplay_server's register() function. | 676 """ Call into mplay_server's register() function. |
609 This will begin registerThread(s) to keep server | 677 This will begin registerThread(s) to keep server |
611 """ | 679 """ |
612 if len( self.serverName ): | 680 if len( self.serverName ): |
613 wx.BeginBusyCursor() | 681 wx.BeginBusyCursor() |
614 self.server.server.register(self.serverName) | 682 self.server.server.register(self.serverName) |
615 self.sb.SetStatusText( ("%s" % (self.serverName)), 4 ) | 683 self.sb.SetStatusText( ("%s" % (self.serverName)), 4 ) |
616 self.mainMenu.Enable( 4, False ) | 684 self.mainMenu.Enable(4, False) |
617 self.mainMenu.Enable( 5, True ) | 685 self.mainMenu.Enable(5, True) |
618 #self.mainMenu.Enable( 2, False ) | 686 #self.mainMenu.Enable( 2, False ) |
619 self.SetTitle(__appname__ + "- (running) - (registered)") | 687 self.SetTitle(__appname__ + "- (running) - (registered)") |
620 wx.EndBusyCursor() | 688 wx.EndBusyCursor() |
621 | 689 |
622 def OnUnregister(self, event = None): | 690 def OnUnregister(self, event = None): |
625 and result in the server being de-listed | 693 and result in the server being de-listed |
626 from all metas | 694 from all metas |
627 """ | 695 """ |
628 wx.BeginBusyCursor() | 696 wx.BeginBusyCursor() |
629 self.server.server.unregister() | 697 self.server.server.unregister() |
630 self.sb.SetStatusText( "Unregistered", 4 ) | 698 self.sb.SetStatusText("Unregistered", 4) |
631 self.mainMenu.Enable( 5, False ) | 699 self.mainMenu.Enable(5, False) |
632 self.mainMenu.Enable( 4, True ) | 700 self.mainMenu.Enable(4, True) |
633 #self.mainMenu.Enable( 2, True ) | 701 #self.mainMenu.Enable( 2, True ) |
634 self.SetTitle(__appname__ + "- (running) - (unregistered)") | 702 self.SetTitle(__appname__ + "- (running) - (unregistered)") |
635 wx.EndBusyCursor() | 703 wx.EndBusyCursor() |
636 | 704 |
637 def ModifyBanList(self, event): | 705 def ModifyBanList(self, event): |