| Index: third_party/twisted_8_1/twisted/words/im/gtkcommon.py
|
| diff --git a/third_party/twisted_8_1/twisted/words/im/gtkcommon.py b/third_party/twisted_8_1/twisted/words/im/gtkcommon.py
|
| deleted file mode 100644
|
| index e2a1dc7bf84ae1a2f9c028aef23c78a1cc004b37..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/words/im/gtkcommon.py
|
| +++ /dev/null
|
| @@ -1,190 +0,0 @@
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -import os, re
|
| -
|
| -from twisted.python import reflect
|
| -from twisted.python import util
|
| -from twisted.manhole.ui.pywidgets import isCursorOnFirstLine, isCursorOnLastLine
|
| -
|
| -import string
|
| -import gtk
|
| -from libglade import GladeXML
|
| -
|
| -GLADE_FILE = util.sibpath(__file__, "instancemessenger.glade")
|
| -SETTINGS_FILE = os.path.expanduser("~/.InstanceMessenger")
|
| -
|
| -OFFLINE = 0
|
| -ONLINE = 1
|
| -AWAY = 2
|
| -
|
| -True = gtk.TRUE
|
| -False = gtk.FALSE
|
| -
|
| -
|
| -class InputOutputWindow:
|
| -
|
| - def __init__(self, rootName, inputName, outputName):
|
| - self.xml = openGlade(GLADE_FILE, root=rootName)
|
| - wid = self.xml.get_widget
|
| - self.entry = wid(inputName)
|
| - #self.entry.set_word_wrap(gtk.TRUE)
|
| - self.output = wid(outputName)
|
| - #self.output.set_word_wrap(gtk.TRUE)
|
| - self.widget = wid(rootName)
|
| - self.history = []
|
| - self.histpos = 0
|
| - self.linemode = True
|
| - self.currentlyVisible = 0
|
| - self.win = None
|
| - autoConnectMethods(self)
|
| -
|
| - def show(self):
|
| - if not self.currentlyVisible:
|
| - self.win = w = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL)
|
| - self.connectid = w.connect("destroy", self.hidden)
|
| - w.add(self.widget)
|
| - w.set_title(self.getTitle())
|
| - w.show_all()
|
| - self.entry.grab_focus()
|
| - self.currentlyVisible = 1
|
| -
|
| - def hidden(self, w):
|
| - self.win = None
|
| - w.remove(self.widget)
|
| - self.currentlyVisible = 0
|
| -
|
| - def hide(self):
|
| - if self.currentlyVisible:
|
| - self.win.remove(self.widget)
|
| - self.currentlyVisible = 0
|
| - self.win.disconnect(self.connectid)
|
| - self.win.destroy()
|
| -
|
| -
|
| - def handle_key_press_event(self, entry, event):
|
| - stopSignal = False
|
| - # ASSUMPTION: Assume Meta == mod4
|
| - isMeta = event.state & gtk.GDK.MOD4_MASK
|
| -
|
| - ##
|
| - # Return handling
|
| - ##
|
| - if event.keyval == gtk.GDK.Return:
|
| - isShift = event.state & gtk.GDK.SHIFT_MASK
|
| - if isShift:
|
| - self.linemode = True
|
| - entry.insert_defaults('\n')
|
| - else:
|
| - stopSignal = True
|
| - text = entry.get_chars(0,-1)
|
| - if not text:
|
| - return
|
| - self.entry.delete_text(0, -1)
|
| - self.linemode = False
|
| - self.sendText(text)
|
| - self.history.append(text)
|
| - self.histpos = len(self.history)
|
| -
|
| - ##
|
| - # History handling
|
| - ##
|
| - elif ((event.keyval == gtk.GDK.Up and isCursorOnFirstLine(entry))
|
| - or (isMeta and event.string == 'p')):
|
| - print "history up"
|
| - self.historyUp()
|
| - stopSignal = True
|
| - elif ((event.keyval == gtk.GDK.Down and isCursorOnLastLine(entry))
|
| - or (isMeta and event.string == 'n')):
|
| - print "history down"
|
| - self.historyDown()
|
| - stopSignal = True
|
| -
|
| - ##
|
| - # Tab Completion
|
| - ##
|
| - elif event.keyval == gtk.GDK.Tab:
|
| - oldpos = entry.get_point()
|
| - word, pos = self.getCurrentWord(entry)
|
| - result = self.tabComplete(word)
|
| -
|
| - #If there are multiple potential matches, then we spit
|
| - #them out and don't insert a tab, so the user can type
|
| - #a couple more characters and try completing again.
|
| - if len(result) > 1:
|
| - for nick in result:
|
| - self.output.insert_defaults(nick + " ")
|
| - self.output.insert_defaults('\n')
|
| - stopSignal = True
|
| -
|
| - elif result: #only happens when len(result) == 1
|
| - entry.freeze()
|
| - entry.delete_text(*pos)
|
| - entry.set_position(pos[0])
|
| - entry.insert_defaults(result[0])
|
| - entry.set_position(oldpos+len(result[0])-len(word))
|
| - entry.thaw()
|
| - stopSignal = True
|
| -
|
| - if stopSignal:
|
| - entry.emit_stop_by_name("key_press_event")
|
| - return True
|
| -
|
| - def tabComplete(self, word):
|
| - """Override me to implement tab completion for your window,
|
| - I should return a list of potential matches."""
|
| - return []
|
| -
|
| - def getCurrentWord(self, entry):
|
| - i = entry.get_point()
|
| - text = entry.get_chars(0,-1)
|
| - word = re.split(r'\s', text)[-1]
|
| - start = string.rfind(text, word)
|
| - end = start+len(word)
|
| - return (word, (start, end))
|
| -
|
| - def historyUp(self):
|
| - if self.histpos > 0:
|
| - self.entry.delete_text(0, -1)
|
| - self.histpos = self.histpos - 1
|
| - self.entry.insert_defaults(self.history[self.histpos])
|
| - self.entry.set_position(0)
|
| -
|
| - def historyDown(self):
|
| - if self.histpos < len(self.history) - 1:
|
| - self.histpos = self.histpos + 1
|
| - self.entry.delete_text(0, -1)
|
| - self.entry.insert_defaults(self.history[self.histpos])
|
| - elif self.histpos == len(self.history) - 1:
|
| - self.histpos = self.histpos + 1
|
| - self.entry.delete_text(0, -1)
|
| -
|
| -
|
| -def createMethodDict(o, d=None):
|
| - if d is None:
|
| - d = {}
|
| - for base in reflect.allYourBase(o.__class__) + [o.__class__]:
|
| - for n in dir(base):
|
| - m = getattr(o, n)
|
| - #print 'd[%s] = %s' % (n, m)
|
| - d[n] = m
|
| - #print d
|
| - return d
|
| -
|
| -def autoConnectMethods(*objs):
|
| - o = {}
|
| - for obj in objs:
|
| - createMethodDict(obj, o)
|
| - # print 'connecting', o
|
| - objs[0].xml.signal_autoconnect(o)
|
| -
|
| -
|
| -
|
| -def openGlade(*args, **kwargs):
|
| - # print "opening glade file"
|
| - r = GladeXML(*args, **kwargs)
|
| - if r._o:
|
| - return r
|
| - else:
|
| - raise IOError("Couldn't open Glade XML: %s; %s" % (args, kwargs))
|
|
|