~kaozilon/totem/test

« back to all changes in this revision

Viewing changes to src/plugins/pythonconsole/console.py

  • Committer: Bazaar Package Importer
  • Author(s): Raphaël Hertzog, Josselin Mouette, Emilio Pozuelo Monfort, Sjoerd Simons, Frederic Peters, Michael Biebl, Raphaël Hertzog
  • Date: 2011-04-10 18:12:25 UTC
  • mfrom: (1.4.6 upstream) (5.1.19 sid)
  • Revision ID: james.westby@ubuntu.com-20110410181225-srhkesant1gx38pw
Tags: 3.0.0-1
* Team upload to experimental.

[ Josselin Mouette ]
* Only suggest totem-mozilla. Closes: #599638.
* totem-coherence depends on totem-plugins. Closes: #607436.

[ Emilio Pozuelo Monfort ]
* New upstream development release.
  - debian/patches/80_webm.patch,
    debian/patches/81_mpegts.patch,
    debian/patches/82_youtube_api.patch:
    + Removed, applied upstream.
  - debian/patches/90_autotools.patch:
    + Removed, no longer needed.
  - debian/patches/70_bbc_plugin.patch:
    + Disabled, needs porting.
  - debian/control.in:
    + Updated build dependencies and dependencies.
    + Removed transitional totem-xine and totem-gstreamer packages.
    + Don't build totem-coherence for now, it hasn't been ported
      to PyGI and so it's that plugin or all the others.
  - debian/totem-common.install:
    + Don't install the gconf schemas, they're gone. Install the
      gsettings files instead.
  - debian/totem.install:
    + Ship libtotem here.
  - debian/control.in,
    debian/rules,
    debian/gir1.2-totem-1.0.install:
    + Add a gir package and update the plugins package dependencies
      for the new gir dependencies.
* debian/rules,
  debian/control.in,
  debian/source/format:
  - Switch to source format 3.0 (quilt).
* debian/control.in:
  - Remove obsolete build dependency on libhal-dev. Closes: #615214.

[ Sjoerd Simons ]
* New upstream release (2.91.7)
* debian/totem-plugins.install:
  * Don't install the grommit plugin
  * Install the chapters plugin

[ Frederic Peters ]
* New upstream release (2.91.91)
* debian/control.in: bump build-dep on libpeas.
* debian/control.in, debian/totem-plugins.install:
  * The galago plugin has been renamed to im-status, and no longer uses
    libgalago.

[ Michael Biebl ]
* debian/control.in:
  - Add Build-Depends on libtracker-sparql-0.10-dev for media search support
    using Tracker.

[ Raphaël Hertzog ]
* New upstream release (3.0.0).
* Added Build-Depends on gstreamer0.10-gconf.
* Bumped minimal version of build-dependency on totem-plparser-dev to
  2.32.4-2 to match the ./configure requirements and to ensure libquvi-dev
  is there as required by the totem-plparser.pc.
* Add some copyright notices to debian/copyright to please lintian.
* Call dh_pysupport on totem to generate the python dependency for
  totem-bugreport.py
* Tell dh_makeshlibs to skip /usr/lib/nautilus. This avoids generating
  an shlib entry for the plugin it contains.
* Tweaked the totem description to fix lintian warning description-
  synopsis-starts-with-article.
* Updated dependencies of totem-coherence to match the new code using
  introspection but keep the package disabled as python-coherence is
  still PyGTK based and thus incompatible.
* Add lintian overrides for menu-icon-missing (icon is in totem-
  common).
* Add gnome-icon-theme-symbolic to totem's dependencies.
* Bump build-dep on libgdata >= 0.8.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
import re
38
38
import traceback
39
39
import gobject
40
 
import pango
41
 
import gtk
 
40
from gi.repository import Pango
 
41
from gi.repository import Gtk
 
42
from gi.repository import Gdk
42
43
 
43
 
class PythonConsole(gtk.ScrolledWindow):
 
44
class PythonConsole(Gtk.ScrolledWindow):
44
45
        def __init__(self, namespace = {}, destroy_cb = None):
45
 
                gtk.ScrolledWindow.__init__(self)
 
46
                Gtk.ScrolledWindow.__init__(self)
46
47
 
47
48
                self.destroy_cb = destroy_cb
48
 
                self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC);
49
 
                self.set_shadow_type(gtk.SHADOW_IN)
50
 
                self.view = gtk.TextView()
51
 
                self.view.modify_font(pango.FontDescription('Monospace'))
 
49
                self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
 
50
                self.set_shadow_type(Gtk.ShadowType.IN)
 
51
                self.view = Gtk.TextView()
 
52
                self.view.modify_font(Pango.font_description_from_string('Monospace'))
52
53
                self.view.set_editable(True)
53
 
                self.view.set_wrap_mode(gtk.WRAP_WORD_CHAR)
 
54
                self.view.set_wrap_mode(Gtk.WrapMode.CHAR)
54
55
                self.add(self.view)
55
56
                self.view.show()
56
57
 
87
88
                
88
89
                
89
90
        def __key_press_event_cb(self, view, event):
90
 
                if event.keyval == gtk.keysyms.d and event.state == gtk.gdk.CONTROL_MASK:
 
91
                modifier_mask = Gtk.accelerator_get_default_mod_mask()
 
92
                event_state = event.state & modifier_mask
 
93
 
 
94
                if event.keyval == Gdk.KEY_d and event_state == Gdk.ModifierType.CONTROL_MASK:
91
95
                        self.destroy()
92
96
                
93
 
                elif event.keyval == gtk.keysyms.Return and event.state == gtk.gdk.CONTROL_MASK:
 
97
                elif event.keyval == Gdk.KEY_Return and event_state == Gdk.ModifierType.CONTROL_MASK:
94
98
                        # Get the command
95
99
                        buffer = view.get_buffer()
96
100
                        inp_mark = buffer.get_mark("input")
97
101
                        inp = buffer.get_iter_at_mark(inp_mark)
98
102
                        cur = buffer.get_end_iter()
99
 
                        line = buffer.get_text(inp, cur)
 
103
                        line = buffer.get_text(inp, cur, True)
100
104
                        self.current_command = self.current_command + line + "\n"
101
105
                        self.history_add(line)
102
106
 
116
120
                        gobject.idle_add(self.scroll_to_end)
117
121
                        return True
118
122
                
119
 
                elif event.keyval == gtk.keysyms.Return:
 
123
                elif event.keyval == Gdk.KEY_Return:
120
124
                        # Get the marks
121
125
                        buffer = view.get_buffer()
122
126
                        lin_mark = buffer.get_mark("input-line")
125
129
                        # Get the command line
126
130
                        inp = buffer.get_iter_at_mark(inp_mark)
127
131
                        cur = buffer.get_end_iter()
128
 
                        line = buffer.get_text(inp, cur)
 
132
                        line = buffer.get_text(inp, cur, True)
129
133
                        self.current_command = self.current_command + line + "\n"
130
134
                        self.history_add(line)
131
135
 
160
164
                        gobject.idle_add(self.scroll_to_end)
161
165
                        return True
162
166
 
163
 
                elif event.keyval == gtk.keysyms.KP_Down or event.keyval == gtk.keysyms.Down:
 
167
                elif event.keyval == Gdk.KEY_KP_Down or event.keyval == Gdk.KEY_Down:
164
168
                        # Next entry from history
165
169
                        view.emit_stop_by_name("key_press_event")
166
170
                        self.history_down()
167
171
                        gobject.idle_add(self.scroll_to_end)
168
172
                        return True
169
173
 
170
 
                elif event.keyval == gtk.keysyms.KP_Up or event.keyval == gtk.keysyms.Up:
 
174
                elif event.keyval == Gdk.KEY_KP_Up or event.keyval == Gdk.KEY_Up:
171
175
                        # Previous entry from history
172
176
                        view.emit_stop_by_name("key_press_event")
173
177
                        self.history_up()
174
178
                        gobject.idle_add(self.scroll_to_end)
175
179
                        return True
176
180
 
177
 
                elif event.keyval == gtk.keysyms.KP_Left or event.keyval == gtk.keysyms.Left or \
178
 
                     event.keyval == gtk.keysyms.BackSpace:
 
181
                elif event.keyval == Gdk.KEY_KP_Left or event.keyval == Gdk.KEY_Left or \
 
182
                     event.keyval == Gdk.KEY_BackSpace:
179
183
                        buffer = view.get_buffer()
180
184
                        inp = buffer.get_iter_at_mark(buffer.get_mark("input"))
181
185
                        cur = buffer.get_iter_at_mark(buffer.get_insert())
182
186
                        return inp.compare(cur) == 0
183
187
 
184
 
                elif event.keyval == gtk.keysyms.Home:
 
188
                elif event.keyval == Gdk.KEY_Home:
185
189
                        # Go to the begin of the command instead of the begin of the line
186
190
                        buffer = view.get_buffer()
187
191
                        inp = buffer.get_iter_at_mark(buffer.get_mark("input"))
188
 
                        if event.state == gtk.gdk.SHIFT_MASK:
 
192
                        if event_state == Gdk.ModifierType.SHIFT_MASK:
189
193
                                buffer.move_mark_by_name("insert", inp)
190
194
                        else:
191
195
                                buffer.place_cursor(inp)
200
204
                buffer = self.view.get_buffer()
201
205
                inp = buffer.get_iter_at_mark(buffer.get_mark("input"))
202
206
                cur = buffer.get_end_iter()
203
 
                return buffer.get_text(inp, cur)
 
207
                return buffer.get_text(inp, cur, True)
204
208
        
205
209
        def set_command_line(self, command):
206
210
                buffer = self.view.get_buffer()
232
236
        
233
237
        def scroll_to_end(self):
234
238
                iter = self.view.get_buffer().get_end_iter()
235
 
                self.view.scroll_to_iter(iter, 0.0)
 
239
                self.view.scroll_to_iter(iter, 0.0, False, 0.5, 0.5)
236
240
                return False
237
241
 
238
242
        def write(self, text, tag = None):
239
 
                buffer = self.view.get_buffer()
 
243
                buf = self.view.get_buffer()
240
244
                if tag is None:
241
 
                        buffer.insert(buffer.get_end_iter(), text)
 
245
                    buf.insert(buf.get_end_iter(), text)
242
246
                else:
243
 
                        buffer.insert_with_tags(buffer.get_end_iter(), text, tag)
 
247
                    buf.insert_with_tags(buf.get_end_iter(), text, tag)
 
248
 
244
249
                gobject.idle_add(self.scroll_to_end)
245
250
        
246
251
        def eval(self, command, display_command = False):
264
269
                buffer.insert(cur, ">>> ")
265
270
                cur = buffer.get_end_iter()
266
271
                buffer.move_mark_by_name("input", cur)
267
 
                self.view.scroll_to_iter(buffer.get_end_iter(), 0.0)
 
272
                self.view.scroll_to_iter(buffer.get_end_iter(), 0.0, False, 0.5, 0.5)
268
273
        
269
274
        def __run(self, command):
270
275
                sys.stdout, self.stdout = self.stdout, sys.stdout
271
276
                sys.stderr, self.stderr = self.stderr, sys.stderr
272
 
                
 
277
               
273
278
                try:
274
279
                        try:
275
280
                                r = eval(command, self.namespace, self.namespace)
288
293
 
289
294
        def destroy(self):
290
295
                pass
291
 
                #gtk.ScrolledWindow.destroy(self)
 
296
                #Gtk.ScrolledWindow.destroy(self)
292
297
                
293
298
class OutFile:
294
299
        """A fake output file object. It sends output to a TK test widget,