Пример #1
0
    def __init__(self, locals={}, savepath=None, content=None, parent=None):
        super(CommandShell, self).__init__(content=(content or self.DEFAULT_CONTENT), filename=savepath, parent=parent)
        self._locals = locals
        self.__ui_string = """
<ui>
  <menubar name='Menubar'>
    <menu action='ToolsMenu'>
      <menuitem action='Eval'/>    
      <separator/>
      <menuitem action='Reset'/>
    </menu>
  </menubar>
</ui>        
"""    
        actions = [
            ('ToolsMenu', None, 'Tools'),
            ('Eval', None, '_Eval', '<control>Return', 'Evaluate current input', self.__eval_cb),            
            ('Reset', None, '_Reset', None, 'Reset to default content', self.__reset_cb),
            ]
        self.__actiongroup = ag = gtk.ActionGroup('ShellActions')        
        ag.add_actions(actions)
        self._ui.insert_action_group(ag, 1)
        self._ui.add_ui_from_string(self.__ui_string)

        if self.gtksourceview_mode:
            try:
                import gtksourceview2
                pylang = gtksourceview2.language_manager_get_default().get_language('python')
            except ImportError, e:
                import gtksourceview
                pylang = gtksourceview.SourceLanguagesManager().get_language_from_mime_type("text/x-python")
                self.input.set_highlight(True)
            self.input.set_language(pylang)
Пример #2
0
 def set_code_mode(self, codemode):
     if not self.gtksourceview_mode:
         return
     # Non-code is the default
     if not codemode:
         return
     self.input_view.modify_font(pango.FontDescription("monospace"))
     fs = Filesystem.getInstance()
     try:
         mimetype = fs.get_file_sync(self.__filename).mimetype
     except FileStatError as e:
         mimetype = None
     target_lang = None
     if gtksourceview2_avail:
         import gtksourceview2
         langman = gtksourceview2.language_manager_get_default()
         for language_id in langman.get_language_ids():
             language = langman.get_language(language_id)
             for langmime in language.get_mime_types():
                 if mimetype == langmime:
                     target_lang = language
                     break
             if target_lang:
                 break
         self.input.set_highlight_syntax(True)
     else:
         import gtksourceview
         target_lang = gtksourceview.SourceLanguagesManager(
         ).get_language_from_mime_type(mimetype)
         self.input.set_highlight(True)
     if target_lang:
         self.input.set_language(target_lang)
Пример #3
0
 def __init__(self, uimanager):
     gtksourceview.SourceBuffer.__init__(self)
     lm = gtksourceview.SourceLanguagesManager()
     lang = lm.get_language_from_mime_type('text/x-python')
     self.set_language(lang)
     self.set_highlight(True)
     self.script_factory = self.factory_mapping['Level2'](True)
     self._recording = False
     self._uimanager = uimanager
     self._addToUIManager()
Пример #4
0
    def __init__(self, filename=None, encoding="utf-8"):
        gtksourceview.SourceBuffer.__init__(self)
        binding.Component.__init__(self, None)

        lm = gtksourceview.SourceLanguagesManager()
        self.languages_manager = lm
        language = lm.get_language_from_mime_type("text/x-python")
        self.set_highlight(True)
        self.set_language(language)
        self.search_mark = self.create_mark('search', self.get_start_iter())

        self.filename = filename
        self.encoding = encoding
Пример #5
0
    def __init__(self, locals={}, savepath=None, content=None, parent=None):
        super(CommandShell, self).__init__(content=(content
                                                    or self.DEFAULT_CONTENT),
                                           filename=savepath,
                                           parent=parent)
        self._locals = locals
        self.__ui_string = """
<ui>
  <menubar name='Menubar'>
    <menu action='ToolsMenu'>
      <menuitem action='Eval'/>    
      <separator/>
      <menuitem action='Reset'/>
    </menu>
  </menubar>
</ui>        
"""
        actions = [
            ('ToolsMenu', None, 'Tools'),
            ('Eval', None, '_Eval', '<control>Return',
             'Evaluate current input', self.__eval_cb),
            ('Reset', None, '_Reset', None, 'Reset to default content',
             self.__reset_cb),
        ]
        self.__actiongroup = ag = gtk.ActionGroup('ShellActions')
        ag.add_actions(actions)
        self._ui.insert_action_group(ag, 1)
        self._ui.add_ui_from_string(self.__ui_string)

        if self.gtksourceview_mode:
            try:
                import gtksourceview2
                pylang = gtksourceview2.language_manager_get_default(
                ).get_language('python')
            except ImportError as e:
                import gtksourceview
                pylang = gtksourceview.SourceLanguagesManager(
                ).get_language_from_mime_type("text/x-python")
                self.input.set_highlight(True)
            self.input.set_language(pylang)

        # Doesn't make sense when we're not backed by a file
        self._ui.get_action_groups()[0].get_action('Revert').set_sensitive(
            False)

        self.input.move_mark_by_name("insert", self.input.get_end_iter())
        self.input.move_mark_by_name("selection_bound",
                                     self.input.get_end_iter())

        self.set_title('Hotwire Command Shell')
        self.input_view.modify_font(pango.FontDescription("monospace"))
Пример #6
0
    def __init__(self, filename=None, encoding="utf-8"):
        gtksourceview.SourceBuffer.__init__(self)

        lm = gtksourceview.SourceLanguagesManager()
        self.languages_manager = lm
        language = lm.get_language_from_mime_type("text/x-python")
        self.set_highlight(True)
        self.set_language(language)

        self.filename = filename
        self.encoding = encoding

        self.search_component = _SearchMethod(self)
        self.replace_component = _ReplaceMethod(self)
Пример #7
0
    def _init_gtksourceview1(self):
        try:
            import gtksourceview
            srcbuf = gtksourceview.SourceBuffer()
            langman = gtksourceview.SourceLanguagesManager()
            lang = langman.get_language_from_mime_type("text/x-csrc")
            srcbuf.set_language(lang)
            srcbuf.set_highlight(True)
            srcview = gtksourceview.SourceView(srcbuf)
            srcview.set_show_line_numbers(True)
            return (1, srcview, srcbuf)

        except:
            L.warning('Cannot load gtksourceview 1')
            return None
Пример #8
0
 def _new_tab(self, f, buff=None):
     l = [n for n in self.wins if n[1] == f]
     if len(l) == 0:
         lm = gtksourceview.SourceLanguagesManager()
         if buff is None:
             buff = CulebraBuffer()
             self.new = True
         buff.set_data('languages-manager', lm)
         font_desc = pango.FontDescription('monospace 10')
         if font_desc:
             self.editor.modify_font(font_desc)
         buff.connect('insert-text', self.insert_at_cursor_cb)
         buff.set_data("save", False)
         self.editor.set_buffer(buff)
         self.editor.grab_focus()
         buff.set_data('filename', f)
         self.wins.append([buff, f])
         self.current_buffer = len(self.wins) - 1
Пример #9
0
def main(args=[]):
    # create buffer
    lm = gtksourceview.SourceLanguagesManager()
    buffer = gtksourceview.SourceBuffer()
    buffer.set_data('languages-manager', lm)

    # parse arguments
    if len(args) > 2:
        open_file(buffer, args[1])
    else:
        open_file(buffer, args[0])

    # create first window
    window = create_main_window(buffer)
    window.set_default_size(500, 500)
    window.show()

    # main loop
    gtk.main()
Пример #10
0
import gtk
from .base import BaseTextView
import gtksourceview

from pida.services.language import DOCTYPES

MAPPINGS = {}
LANG_MANAGER = gtksourceview.SourceLanguagesManager()


def build_mapping():
    global MAPPINGS, LANG_MANAGER
    for lang in LANG_MANAGER.get_available_languages():
        best = DOCTYPES.get_fuzzy(lang.get_name())
        if best:
            MAPPINGS[best.internal] = lang


build_mapping()


class SourceTextView(BaseTextView, gtksourceview.SourceView):
    """
    Simple gtk.TextView based Field without syntax highlighting
    """
    has_syntax_highlighting = True

    def __init__(self):
        buffer_ = gtksourceview.SourceBuffer()
        gtksourceview.SourceView.__init__(self, buffer_)
Пример #11
0
class Editor:
    """Wraps a gtrksourceview widget and adds a few abstraction methods."""
    def __init__(self,parent,title=''):
        self.parent = parent
        self.logger = logging.getLogger("gvr.Editors.Editor")
        self.logger.debug("Using gtksourceview version %s" % SRCVIEW)
        # remove any children from previous sessions
        for child in self.parent.get_children():
            self.parent.remove(child)       
        # Look for the locale to which the syntax highlighting should be set
        # We assume the locale is available, if not there won't be any higlighting.
        try:
            loc = utils.get_locale()[:2]
        except Exception,info:
            self.logger.exception("Error in checking locale")
            loc = ''
        if loc:
            mime = 'gvr_%s' % loc
        else:
            mime = 'gvr_en'
        
        if SRCVIEW == 1:
            srctagtable = gtksourceview.SourceTagTable()
            self.srcbuffer = gtksourceview.SourceBuffer(table=srctagtable)
            man = gtksourceview.SourceLanguagesManager()
            lang = man.get_language_from_mime_type('text/x-'+mime)
            self.logger.debug("gtksourceview buffer syntax higlight set to %s" % mime)
            self.srcbuffer.set_language(lang)
            self.srcbuffer.set_highlight(True)
            self.srcview = gtksourceview.SourceView(buffer=self.srcbuffer)
            self.srcview.set_tabs_width(4)
        else:
            self.srcbuffer = gtksourceview2.Buffer()
            self.srcview = gtksourceview2.View(buffer=self.srcbuffer)
            man = gtksourceview2.LanguageManager()
            self.logger.debug("set search path to %s" % utils.GTKSOURCEVIEWPATH)
            man.set_search_path([utils.GTKSOURCEVIEWPATH])
            #man.set_search_path(["/tmp/language-specs"])
            #print dir(man)
            # Horrible hacks, gtksourceview2 on XO differs from Ubuntu :-(
            # Reminder, if XO changes their gtksourceview2 again it will probably
            # break GvRng here.
            # And of course the 767 version changes gtksourceview2 again :-(
            # You should never change existing programs and leave the original name unchanged.
            # I commented out the XO bit in case we need it when there's another change.
##            if utils.platform == 'XO':
##                langs = man.list_languages()
##                self.srcbuffer.set_highlight(True)
##                for lang in langs:
##                    for m in lang.get_mime_types():
##                        if m == 'text/x-'+mime:
##                            self.logger.debug("XO gtksourceview buffer syntax higlight set to %s" % lang)
##                            self.srcbuffer.set_language(lang)
##            else:
            langs = man.get_language_ids()
            self.srcbuffer.set_highlight_syntax(True)
            self.logger.debug("Found language files:%s" % langs)
            for id in langs:
                if id == mime:
                    self.logger.debug("gtksourceview buffer syntax higlight set to %s" % mime)
                    self.srcbuffer.set_language(man.get_language(id))
                    break
            self.srcview.set_tab_width(4)
            
        # some methods that are the same on version 1 and 2    
        self.tag_h = self.srcbuffer.create_tag(background='lightblue')
        self.srcbuffer.set_max_undo_levels(10)
        self.srcview.set_show_line_numbers(True)
        self.srcview.set_insert_spaces_instead_of_tabs(True)
        #self.srcview.set_wrap_mode(gtk.WRAP_CHAR)        
        self.parent.add(self.srcview)
        self.parent.show_all()
        
        self.old_start_iter = None
Пример #12
0
    def __init__(self, buffer=None):
        menu_items = [
            (_("/_File"), None, None, 0, "<Branch>"),
            (_("/File/_New"), "<control>N", self.do_new, 0, None),
            (_("/File/_Open"), "<control>O", self.do_open, 0, None),
            (_("/File/_Save"), "<control>S", self.do_save, 0, None),
            (_("/File/Save _As..."), None, self.do_save_as, 0, None),
            (_("/File/sep1"), None, None, 0, "<Separator>"),
            (_("/File/_Close"), "<control>W", self.do_close, 0, None),
            (_("/File/E_xit"), "<control>Q", self.do_exit, 0, None),
            (_("/_Edit"), None, None, 0, "<Branch>"),
            (_("/Edit/Undo"), "<control>Z", self.do_undo, 0, None),
            (_("/Edit/Redo"), "<control><shift>Z", self.do_redo, 0, None),
            (_("/Edit/sep1"), None, None, 0, "<Separator>"),
            (_("/Edit/Find..."), "<control>F", self.do_search, 0, None),
            (_("/_Settings"), None, None, 0, "<Branch>"),
            (_("/Settings/Wrap _Off"), None, self.do_wrap_changed,
             gtk.WRAP_NONE, "<RadioItem>"),
            (_("/Settings/Wrap _Words"), None, self.do_wrap_changed,
             gtk.WRAP_WORD, _("/Settings/Wrap Off")),
            (_("/Settings/Wrap _Chars"), None, self.do_wrap_changed,
             gtk.WRAP_CHAR, _("/Settings/Wrap Off")),
            (_("/_Run"), None, None, 0, "<Branch>"),
            (_("/Run/_Run script"), "<control>R", self.run_script, False,
             None), (_("/Run/sep1"), None, None, 0, "<Separator>"),
            (_("/Run/Run socket server"), None, self.do_socketserver_changed,
             True, "<ToggleItem>"),
            (_("/Run/Show variables window"), None, self.do_varwindow_changed,
             True, "<ToggleItem>"),
            (_("/Run/Run fullscreen"), None, self.do_fullscreen_changed, True,
             "<ToggleItem>"), (_("/_Help"), None, None, 0, "<Branch>"),
            (_("/Help/_About"), None, self.do_about, 0, None)
        ]

        if not buffer:
            buffer = Buffer()
        gtk.Window.__init__(self)

        TestText.views.push(self)

        buffer.ref()

        if not TestText.colormap:
            TestText.colormap = self.get_colormap()

        self.connect("delete_event", self.delete_event_cb)

        self.accel_group = gtk.AccelGroup()
        self.item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>",
                                            self.accel_group)
        self.item_factory.set_data("view", self)
        self.item_factory.create_items(menu_items)

        self.add_accel_group(self.accel_group)

        hpaned = gtk.HPaned()
        vbox = gtk.VBox(False, 0)
        hpaned.add1(vbox)
        self.add(hpaned)

        vbox.pack_start(self.item_factory.get_widget("<main>"), False, False,
                        0)

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)

        self.text_view = gtksourceview.SourceView(buffer)
        self.text_view.set_wrap_mode(gtk.WRAP_WORD)
        self.text_view.set_show_line_numbers(True)
        self.text_view.set_auto_indent(True)
        self.text_view.set_insert_spaces_instead_of_tabs(True)
        # FIXME: the following 2 lines don't have any effect :/
        self.text_view.tab_width = 4
        self.text_view.indent_width = 4
        self.text_view.connect("expose_event", self.tab_stops_expose)

        self.bhid = buffer.connect("mark_set", self.cursor_set_callback)

        if View.FONT is None:
            # Get font or fallback
            context = self.text_view.get_pango_context()
            fonts = context.list_families()
            for font in fonts:
                if font.get_name() == 'Bitstream Vera Sans Mono':
                    View.FONT = 'Bitstream Vera Sans Mono 8'
                    break
            else:
                print 'Bitstream Vera Font not found.'
                print 'Download and install it from here'
                print 'http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/'
                View.FONT = 'Mono 8'

        self.text_view.modify_font(pango.FontDescription(View.FONT))

        vbox.pack_start(sw, True, True, 0)
        sw.add(self.text_view)

        # this creates a console error and output window besides script window
        self.console_error = ConsoleWindow()
        # we create an instance for stdout filter
        self.stdout_filter = Stdout_Filter(self.console_error)
        # we redirect stderr
        sys.stderr = self.console_error
        # stdout is redirected too, but through the filter in order to get different color for text
        sys.stdout = self.stdout_filter
        # error-console window is added to container as second child
        hpaned.add2(self.console_error.text_window)
        hpaned.set_position(450)
        # message displayed in console-error window at start, the double true values passed makes it render with system message tag
        self.console_error.write(
            _("This is a console window, error messages and script output are shown here,\n you can clear the window selecting and deleting the content\n\n"
              ), True, True)

        self.set_default_size(800, 500)
        self.text_view.grab_focus()

        self.set_view_title()
        self.init_menus()

        # options toggle
        self.use_varwindow = False
        self.use_socketserver = False
        self.go_fullscreen = False

        # setup syntax highlighting
        manager = gtksourceview.SourceLanguagesManager()
        language = manager.get_language_from_mime_type("text/x-python")
        buffer.set_language(language)
        buffer.set_highlight(True)

        self.shoebot_window = None

        try:
            self.set_icon_from_file(ICON_FILE)
        except gobject.GError:
            # icon not found = no icon
            pass

        self.show_all()
Пример #13
0
class HotEditorWindow(gtk.Window):
    def __init__(self,
                 filename=None,
                 content=None,
                 title=None,
                 parent=None,
                 autosave=False):
        gtk.Window.__init__(self, type=gtk.WINDOW_TOPLEVEL)
        vbox = gtk.VBox()
        self.add(vbox)
        self.__ui_string = """
<ui>
  <menubar name='Menubar'>
    <menu action='FileMenu'>
      <menuitem action='Save'/>
      <menuitem action='SaveAs'/>
      <separator/>
      <menuitem action='ReadOnly'/>
      <separator/>
      <menuitem action='Revert'/>
      <separator/>
      <menuitem action='Close'/>
    </menu>
    <menu action='EditMenu'>
      <menuitem action='Undo'/>
      <menuitem action='Redo'/>
      <separator/>
      <menuitem action='Find'/>
      <menuitem action='GotoLine'/>
    </menu>
    <menu action='ToolsMenu'>
      <menuitem action='About'/>
    </menu>
  </menubar>
</ui>
"""
        self.__create_ui()
        vbox.pack_start(self._ui.get_widget('/Menubar'), expand=False)

        self.__filename = os.path.abspath(filename)
        self.__autosave = autosave
        self.__modified = False
        self.__last_len = 0

        self.__save_text_id = 0

        self.gtksourceview_mode = gtksourceview_avail

        if gtksourceview_avail:
            self.input = SourceBuffer()
            self.input_view = SourceView(self.input)
            if gtksourceview2_avail:
                self.input.connect('notify::can-undo',
                                   lambda *args: self.__sync_undoredo())
                self.input.connect('notify::can-redo',
                                   lambda *args: self.__sync_undoredo())
            else:
                self.input.connect('can-undo',
                                   lambda *args: self.__sync_undoredo())
                self.input.connect('can-redo',
                                   lambda *args: self.__sync_undoredo())
        else:
            self.input = gtk.TextBuffer()
            self.input_view = gtk.TextView(self.input)
        self.input_view.set_wrap_mode(gtk.WRAP_WORD)
        self.input_view.connect("key-press-event",
                                self.__handle_key_press_event)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
        scroll.add(self.input_view)

        vbox.pack_start(scroll, True, True)

        if filename and os.path.isfile(self.__filename):
            _logger.debug("reading %s", self.__filename)
            f = open_text_file(self.__filename, 'r')
            self.__original_text = f.read()
        else:
            self.__original_text = content

        if self.__original_text:
            if gtksourceview_avail:
                self.input.begin_not_undoable_action()
            self.input.set_property('text', self.__original_text)
            self.__last_len = self.input.get_char_count()
            if gtksourceview_avail:
                self.input.end_not_undoable_action()

        self.input.move_mark_by_name('insert', self.input.get_start_iter())
        self.input.move_mark_by_name('selection_bound',
                                     self.input.get_start_iter())

        self.input.connect('mark-set', self.__on_mark_set)

        self.__searcharea = InlineSearchArea(self.input_view)
        self.__searcharea.connect('close', self.__on_search_close)
        self.__searcharea.show_all()
        self.__searcharea.hide()
        self.__searcharea.set_no_show_all(True)
        vbox.pack_start(self.__searcharea, expand=False)

        self.__status_hbox = gtk.HBox()
        self.__statusbar = gtk.Statusbar()
        self.__status_hbox.pack_start(self.__statusbar, expand=True)
        self.__statusbar_ctx = self.__statusbar.get_context_id("HotEditor")
        self.__pos_status = gtk.Statusbar()
        self.__pos_status.set_size_request(160, 10)  # Taken from GEdit
        self.__pos_context = self.__pos_status.get_context_id("HotEditor")
        self.__status_hbox.pack_start(self.__pos_status, expand=False)
        vbox.pack_start(self.__status_hbox, expand=False)
        self.__sync_undoredo()
        self.__sync_modified_sensitivity()

        self.input.connect("changed", self.__handle_text_changed)

        self.connect("delete-event", self.__handle_delete_event)
        self.__sync_title()
        if parent:
            self.set_transient_for(parent)
        self.set_size_request(800, 600)

    def __on_search_close(self, sa):
        self.__searcharea.hide()

    def set_read_only(self, readonly):
        readonly_toggle = self.__actiongroup.get_action('ReadOnly')
        readonly_toggle.set_active(readonly)

    def set_code_mode(self, codemode):
        if not self.gtksourceview_mode:
            return
        # Non-code is the default
        if not codemode:
            return
        self.input_view.modify_font(pango.FontDescription("monospace"))
        fs = Filesystem.getInstance()
        try:
            mimetype = fs.get_file_sync(self.__filename).mimetype
        except FileStatError, e:
            mimetype = None
        target_lang = None
        if gtksourceview2_avail:
            import gtksourceview2
            langman = gtksourceview2.language_manager_get_default()
            for language_id in langman.get_language_ids():
                language = langman.get_language(language_id)
                for langmime in language.get_mime_types():
                    if mimetype == langmime:
                        target_lang = language
                        break
                if target_lang:
                    break
            self.input.set_highlight_syntax(True)
        else:
            import gtksourceview
            target_lang = gtksourceview.SourceLanguagesManager(
            ).get_language_from_mime_type(mimetype)
            self.input.set_highlight(True)
        if target_lang:
            self.input.set_language(target_lang)
Пример #14
0
    def __init__(self, plugin=None, quit_cb=None):
        gtk.EventBox.__init__(self)
        self.search_string = None
        self.last_search_iter = None
        self.completion_win = None
        self.insert_string = None
        self.cursor_iter = None
        self.plugin = plugin
        self.wins = []
        self.current_word = ""
        self.wl = []
        self.ac_w = None
        self.set_size_request(470, 300)
        self.connect("delete_event", self.file_exit)
        self.quit_cb = quit_cb
        self.vbox = gtk.VBox()
        self.add(self.vbox)
        self.vbox.show()
        self.menubar, self.toolbar = self.create_menu()
        hdlbox = gtk.HandleBox()
        self.vbox.pack_start(hdlbox, expand=False)
        hdlbox.show()
        hdlbox.add(self.menubar)
        self.menubar.show()
        hdlbox = gtk.HandleBox()
        self.vbox.pack_start(hdlbox, expand=False)
        hdlbox.show()
        hdlbox.add(self.toolbar)
        self.toolbar.show()
        self.vpaned = gtk.VPaned()
        self.vbox.pack_start(self.vpaned, expand=True, fill=True)
        self.vpaned.show()
        self.vbox1 = gtk.VBox()
        self.vpaned.add1(self.vbox1)
        self.vbox.show()
        self.vbox1.show()
        self.hpaned = gtk.HPaned()
        self.vbox1.pack_start(self.hpaned, True, True)
        self.hpaned.set_border_width(5)
        self.hpaned.show()
        # the gtksourceview
        lm = gtksourceview.SourceLanguagesManager()
        buff = CulebraBuffer()
        self.new = True
        buff.set_data('languages-manager', lm)
        #        self.editor = gtksourceview.SourceView(buff)
        self.editor = CulebraView(buff)
        self.plugin.pida.mainwindow.connect('delete-event', self.file_exit)
        font_desc = pango.FontDescription('monospace 10')
        if font_desc:
            self.editor.modify_font(font_desc)

        buff.connect('insert-text', self.insert_at_cursor_cb)
        buff.set_data("save", False)
        manager = buff.get_data('languages-manager')
        language = manager.get_language_from_mime_type("text/x-python")
        buff.set_highlight(True)
        buff.set_language(language)
        scrolledwin2 = gtk.ScrolledWindow()
        scrolledwin2.add(self.editor)
        self.editor.set_auto_indent(True)
        self.editor.set_show_line_numbers(True)
        self.editor.set_show_line_markers(True)
        self.editor.set_tabs_width(4)
        self.editor.connect('key-press-event', self.text_key_press_event_cb)
        self.editor.connect('move-cursor', self.move_cursor)
        self.editor.set_margin(80)
        self.editor.set_show_margin(True)
        self.editor.set_smart_home_end(True)
        self.editor.set_highlight_current_line(True)
        scrolledwin2.show()
        self.editor.show()
        self.editor.grab_focus()
        buff.set_data('filename', "untitled.py")
        self.wins.append([buff, "untitled.py"])
        self.current_buffer = 0
        self.hpaned.add2(scrolledwin2)
        self.hpaned.set_position(200)
        self.dirty = 0
        self.clipboard = gtk.Clipboard(selection='CLIPBOARD')
        self.dirname = "."
        # sorry, ugly
        self.filetypes = {}
        return