Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
import wx.stc
if wx.Platform == '__WXMSW__':
faces = { 'times': 'Times New Roman',
'mono' : 'Courier New',
'helv' : 'Arial',
'other': 'Comic Sans MS',
'size' : 10,
}
else:
faces = { 'times': 'Times',
'mono' : 'Courier',
'helv' : 'Helvetica',
'other': 'new century schoolbook',
'size' : 12,
}
NAVIGATION_KEYS = [
wx.WXK_END,
wx.WXK_HOME,
wx.WXK_LEFT,
wx.WXK_UP,
wx.WXK_RIGHT,
wx.WXK_DOWN,
wx.WXK_PAGEUP,
wx.WXK_PAGEDOWN,
wx.WXK_NUMPAD_HOME,
wx.WXK_NUMPAD_LEFT,
wx.WXK_NUMPAD_UP,
wx.WXK_NUMPAD_RIGHT,
wx.WXK_NUMPAD_DOWN,
wx.WXK_NUMPAD_PAGEUP,
wx.WXK_NUMPAD_PAGEDOWN,
wx.WXK_NUMPAD_END]
def GetCursorPos(old, new):
if old == "":
return 0
old_length = len(old)
new_length = len(new)
common_length = min(old_length, new_length)
i = 0
for i in xrange(common_length):
if old[i] != new[i]:
break
if old_length < new_length:
if common_length > 0 and old[i] != new[i]:
return i + new_length - old_length
else:
return i + new_length - old_length + 1
elif old_length > new_length or i < min(old_length, new_length) - 1:
if common_length > 0 and old[i] != new[i]:
return i
else:
return i + 1
else:
return None
class CustomStyledTextCtrl(wx.stc.StyledTextCtrl):
def __init__(self, *args, **kwargs):
wx.stc.StyledTextCtrl.__init__(self, *args, **kwargs)
self.Bind(wx.EVT_MOTION, self.OnMotion)
def OnMotion(self, event):
if wx.Platform == '__WXMSW__':
if not event.Dragging():
x, y = event.GetPosition()
margin_width = reduce(
lambda x, y: x + y,
[self.GetMarginWidth(i)
for i in xrange(3)],
0)
if x <= margin_width:
self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
else:
self.SetCursor(wx.StockCursor(wx.CURSOR_IBEAM))
else:
event.Skip()
else:
event.Skip()
def AppendText(self, text):
self.GotoPos(self.GetLength())
self.AddText(text)