Guest User

wxpython controlled by twisted jsonrpc

a guest
Mar 1st, 2012
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.12 KB | None | 0 0
  1. import  wx
  2. from twisted.internet import wxreactor
  3. wxreactor.install()
  4. from twisted.application import service
  5. from twisted.internet import reactor
  6. from twisted.web import server
  7. from txjsonrpc.web import jsonrpc    
  8. import json
  9. #---------------------------------------------------------------------------
  10.  
  11. class MyFrame(wx.Frame):
  12.     def __init__(
  13.             self, parent, ID, title, pos=wx.DefaultPosition,
  14.             size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE
  15.             ):
  16.  
  17.         wx.Frame.__init__(self, parent, ID, title, pos, size, style)
  18.         # begin wxGlade: MyFrame.__init__
  19.         self.text_ctrl_status = wx.TextCtrl(self, -1, "Status Quick brown fox jumps offer the lazy dog", style=wx.TE_READONLY)
  20.         self.sizer_3_staticbox = wx.StaticBox(self, -1, "STATUS")
  21.         self.text_ctrl_nomor = wx.TextCtrl(self, -1, "Nomor Quick brown fox jumps offer the lazy dog", style=wx.TE_READONLY)
  22.         self.sizer_4_staticbox = wx.StaticBox(self, -1, "Nomor")
  23.         self.text_ctrl_nama = wx.TextCtrl(self, -1, "Bapak Bino Oetomo (0817261234567890)")
  24.         self.sizer_11_staticbox = wx.StaticBox(self, -1, "Nama/Phone")
  25.         self.text_ctrl_alamat = wx.TextCtrl(self, -1, "Arteri Utara 107-A\nRT-3 / RW-5\nNandan", style=wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_WORDWRAP)
  26.         self.sizer_12_staticbox = wx.StaticBox(self, -1, "Alamat")
  27.         self.text_ctrl_arahan = wx.TextCtrl(self, -1, "Dari tugu , Keutara\nPrapatan Ringroad, belok kanan masuk Jalur lambat\nKiri pertama masuk utara\nCustomer ada di pojok barat utara\nEx. Resto Asia", style=wx.TE_MULTILINE | wx.TE_READONLY)
  28.         self.sizer_13_staticbox = wx.StaticBox(self, -1, "Arahan")
  29.  
  30.         # end wxGlade
  31.  
  32.         self.ShowFullScreen(True, style=wx.FULLSCREEN_ALL)
  33.         # begin wxGlade: MyFrame.__set_properties
  34.         self.SetTitle("Sistem Kendali Armada Taxi")
  35.         self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans"))
  36.         self.text_ctrl_status.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 1, "Sans"))
  37.         self.text_ctrl_nomor.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 1, "Sans"))
  38.         self.text_ctrl_nama.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans"))
  39.         self.text_ctrl_alamat.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans"))
  40.         self.text_ctrl_arahan.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Sans"))
  41.         # end wxGlade
  42.         self.sizer_3_staticbox.SetForegroundColour((255,0,0))
  43.         self.sizer_3_staticbox.SetFont(wx.Font(12, wx.DEFAULT, wx.BOLD, wx.BOLD, 1, "Sans"))
  44.         self.sizer_4_staticbox.SetForegroundColour((255,0,0))
  45.         self.sizer_4_staticbox.SetFont(wx.Font(12, wx.DEFAULT, wx.BOLD, wx.BOLD, 1, "Sans"))
  46.         self.sizer_11_staticbox.SetForegroundColour((255,0,0))
  47.         self.sizer_11_staticbox.SetFont(wx.Font(12, wx.DEFAULT, wx.BOLD, wx.BOLD, 1, "Sans"))
  48.         self.sizer_12_staticbox.SetForegroundColour((255,0,0))
  49.         self.sizer_12_staticbox.SetFont(wx.Font(12, wx.DEFAULT, wx.BOLD, wx.BOLD, 1, "Sans"))
  50.         self.sizer_13_staticbox.SetForegroundColour((255,0,0))
  51.         self.sizer_13_staticbox.SetFont(wx.Font(12, wx.DEFAULT, wx.BOLD, wx.BOLD, 1, "Sans"))
  52.  
  53.         # begin wxGlade: MyFrame.__do_layout
  54.         sizer_1 = wx.BoxSizer(wx.VERTICAL)
  55.         sizer_9 = wx.BoxSizer(wx.VERTICAL)
  56.         sizer_10 = wx.BoxSizer(wx.VERTICAL)
  57.         self.sizer_13_staticbox.Lower()
  58.         sizer_13 = wx.StaticBoxSizer(self.sizer_13_staticbox, wx.VERTICAL)
  59.         self.sizer_12_staticbox.Lower()
  60.         sizer_12 = wx.StaticBoxSizer(self.sizer_12_staticbox, wx.VERTICAL)
  61.         self.sizer_11_staticbox.Lower()
  62.         sizer_11 = wx.StaticBoxSizer(self.sizer_11_staticbox, wx.VERTICAL)
  63.         sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
  64.         self.sizer_4_staticbox.Lower()
  65.         sizer_4 = wx.StaticBoxSizer(self.sizer_4_staticbox, wx.HORIZONTAL)
  66.         self.sizer_3_staticbox.Lower()
  67.         sizer_3 = wx.StaticBoxSizer(self.sizer_3_staticbox, wx.HORIZONTAL)
  68.         sizer_3.Add(self.text_ctrl_status, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
  69.         sizer_2.Add(sizer_3, 1, 0, 0)
  70.         sizer_4.Add(self.text_ctrl_nomor, 1, wx.ALIGN_CENTER_VERTICAL, 0)
  71.         sizer_2.Add(sizer_4, 1, 0, 0)
  72.         sizer_1.Add(sizer_2, 0, wx.EXPAND, 1)
  73.         sizer_11.Add(self.text_ctrl_nama, 1, wx.EXPAND, 0)
  74.         sizer_10.Add(sizer_11, 0, wx.EXPAND, 0)
  75.         sizer_12.Add(self.text_ctrl_alamat, 1, wx.EXPAND, 0)
  76.         sizer_10.Add(sizer_12, 0, wx.EXPAND, 0)
  77.         sizer_13.Add(self.text_ctrl_arahan, 1, wx.EXPAND, 0)
  78.         sizer_10.Add(sizer_13, 1, wx.EXPAND, 0)
  79.         sizer_9.Add(sizer_10, 1, wx.EXPAND, 0)
  80.         sizer_1.Add(sizer_9, 1, wx.EXPAND, 0)
  81.         self.SetSizer(sizer_1)
  82.         sizer_1.Fit(self)
  83.         self.Layout()
  84.         # end wxGlade
  85.  
  86.     def OnCloseMe(self, event):
  87.         self.Close(True)
  88.         reactor.stop()
  89.  
  90.     def OnCloseWindow(self, event):
  91.         self.Destroy()
  92.         reactor.stop()
  93.  
  94. #---------------------------------------------------------------------------
  95.  
  96. class MyRPC(wx.App, jsonrpc.JSONRPC):
  97.     def OnInit(self):
  98.         self.frame = MyFrame(None, -1, '')
  99.         self.frame.Show(True)
  100.         self.SetTopWindow(self.frame)
  101.         self.allowNone = True
  102.         self.useDateTime = False
  103.         return True
  104.     """
  105.    text_ctrl_status --->MODE
  106.    text_ctrl_nomor --->AUCID
  107.    text_ctrl_nama --->CUSNAME
  108.    text_ctrl_alamat --->CUSADDR/CUSCLUE
  109.    text_ctrl_arahan --->CUSDIR
  110.    """
  111.     # some XML-RPC function calls for twisted server
  112.     def jsonrpc_stop(self,x='stop'):
  113.         """Closes the wx application."""
  114.         print "INI STOP"
  115.         self.frame.Close() # Sending closing event
  116.         return 'Shutdown initiated'
  117.  
  118.     def jsonrpc_title(self, x):
  119.         """Return all passed args."""
  120.         self.frame.SetTitle(x)
  121.         return x.upper()
  122.  
  123.     def jsonrpc_setdisplay(self,line):        
  124.         self.frame.text_ctrl_status.SetValue(line['MODE'])
  125.         self.frame.text_ctrl_nomor.SetValue(str(line['AUCID']))
  126.         self.frame.text_ctrl_nama.SetValue(line['CUSNAME'])
  127.         if line['MODE']=='AUCTION':
  128.             self.frame.text_ctrl_alamat.SetValue(line['CUSCLUE'])
  129.         else:
  130.             self.frame.text_ctrl_alamat.SetValue(line['CUSADDR'])
  131.         self.frame.text_ctrl_arahan.SetValue(line['CUSDIR'])
  132.         self.frame.ShowFullScreen(True, style=wx.FULLSCREEN_ALL)
  133.         return 'OK'
  134.  
  135.     def jsonrpc_hidescreen(self,x):
  136.         #Here to hide the screen
  137.         return 'OK'
  138.  
  139.     def jsonrpc_risescreen(self,x):
  140.         #Here to Show/Rise/recreate the screen
  141.         return 'OK'
  142.  
  143.    
  144. if __name__ == '__main__':
  145.  
  146.     # Initiliaze MyApp
  147.     app = MyRPC(False) # False -> printing stdout/stderr to shell,
  148.                              # not in an additional wx window
  149.    
  150.     # Make wx application twisted aware
  151.     # Must have to start "wxreactor.install()" on top before
  152.     reactor.registerWxApp(app)    
  153.  
  154.     # Make a XML-RPC Server listening to port 50009
  155.     reactor.listenTCP(50009, server.Site(app))
  156.  
  157.     # Start both reactor parts (wx MainLoop and XML-RPC server)
  158.     reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment