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):