#-- dndtester.glade --
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="DNDTester">
<property name="visible">True</property>
<property name="title" translatable="yes">D'N'D Tester</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="destroy" handler="on_dndtester_destroy" />
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
<property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkTextView" id="log">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="overwrite">False</property>
<property name="accepts_tab">True</property>
<property name="justification">GTK_JUSTIFY_LEFT</property>
<property name="wrap_mode">GTK_WRAP_NONE</property>
<property name="cursor_visible">True</property>
<property name="pixels_above_lines">0</property>
<property name="pixels_below_lines">0</property>
<property name="pixels_inside_wrap">0</property>
<property name="left_margin">0</property>
<property name="right_margin">0</property>
<property name="indent">0</property>
<property name="text" translatable="yes"></property>
<signal name="drag_data_received" handler="on_log_drag_data_received"/>
</widget>
</child>
</widget>
</child>
</widget>
</glade-interface>
#-- / dndtester.glade --
# dndtester.py
import pygtk
pygtk.require("2.0")
import gtk
import gtk.glade
class DNDTester(object):
def __init__(self):
filename = 'dndtester.glade'
windowname = 'DNDTester'
self.wTree = gtk.glade.XML(filename, windowname)
self.log_buffer = gtk.TextBuffer()
self.setupWidgets()
def setupWidgets(self):
HANDLERS_AND_METHODS = {
"on_dndtester_destroy": self.destroy,
"on_drag_data_received": self.on_log_drag_data_received
}
log = self.wTree.get_widget("log")
log.set_buffer(self.log_buffer)
self.wTree.signal_autoconnect(HANDLERS_AND_METHODS)
def on_log_drag_data_received(self, data):
self.log_buffer.insert_at_cursor(data+'\n', len(data))
def destroy(self, data):
gtk.mainquit()
if __name__ == "__main__":
app = DNDTester()
gtk.mainloop()