コード例 #1
0
ファイル: ezhuthi.py プロジェクト: Python3pkg/Ezhil-Lang
    def refresh_tags(self):
        if not self.tag_text:
            # for console buffer
            self.tag_fail  = self.console_buffer.create_tag("fail",
                weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="red")
            self.tag_pass  = self.console_buffer.create_tag("pass",
                weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="green")

        EzhilSyntaxHighlightingEditor.refresh_tags(self)
コード例 #2
0
    def refresh_tags(self):
        if not self.tag_text:
            # for console buffer
            self.tag_fail  = self.console_buffer.create_tag("fail",
                weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="red")
            self.tag_pass  = self.console_buffer.create_tag("pass",
                weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="green")

        EzhilSyntaxHighlightingEditor.refresh_tags(self)
コード例 #3
0
 def __init__(self):
     XMLtoDocVisitor.__init__(self)
     self.highlighter = EzhilSyntaxHighlightingEditor()
     self.highlighter.append_mode = True
     self.chapters = {}
     self.tag = {}
     self.pageno = 0
     self.default_font = "Sans 18"
     self.default_font_title = "Sans 24"
     self.textbuffer = None
     self.layoutpos = {"title":u"","section":0}
コード例 #4
0
 def __init__(self):
     XMLtoDocVisitor.__init__(self)
     self.highlighter = EzhilSyntaxHighlightingEditor()
     self.highlighter.append_mode = True
     self.chapters = {}
     self.tag = {}
     self.pageno = 0
     self.default_font = "Sans 18"
     self.default_font_chapter = "Serif 16"
     self.default_font_title = "Sans 24"
     self.textbuffer = None
     self.layoutpos = {"title":u"","section":0}
コード例 #5
0
    def __init__(self, filename=None, autorun=False):
        EditorState.__init__(self)
        EzhilSyntaxHighlightingEditor.__init__(self)
        Editor._instance = self
        self.autorun = autorun
        self.builder.add_from_file(getResourceFile("editor.glade"))
        if filename:
            self.filename = filename
        ## construct the GUI from GLADE
        self.window = self.builder.get_object("ezhilEditorWindow")
        try:
            d = Gtk.CssProvider.get_default()
            ## style = formatString( "style \"my-style\" { font_name = \"Mono %i\" }"
            ## class \"*\" style \"my-style\"", fontSize);
            ## gtk_rc_parse_string( style )
            d.load_from_data("default * { font : \"Latha 7\" }")
            self.window.set_icon_from_file(
                getResourceFile("img", "ezhil_square_2015_128px.png"))
        except Exception as ie:
            print(u"Message: loading image or CSS style failed - %s" % ie)
        self.window.set_resizable(False)  #fix the window
        self.window.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
        self.console_textview = self.builder.get_object(
            "codeExecutionTextView")

        self.help_browser = None
        self.example_browser = None
        self.menuKbd = self.builder.get_object("toggleKeyboard")
        self.menuKbd.connect("activate", lambda wid: self.toggleKeyboard(wid))
        self.toolitemKbd = self.builder.get_object("KbdBtn")
        self.toolitemKbd.connect(
            "clicked", lambda wid: self.toggleKeyboardAndKeyword(wid))

        self.exampleMenu = self.builder.get_object("exampleBrowserItem")
        self.exampleMenu.connect("activate",
                                 lambda wid: self.exampleBrowser(wid))

        self.helpItem = self.builder.get_object("HelpBtn")
        self.helpItem.connect("clicked", lambda wid: self.helpBrowser(wid))
        self.helpMenuItem = self.builder.get_object("helpMenuItem")
        self.helpMenuItem.connect("activate",
                                  lambda wid: self.helpBrowser(wid))

        self.toolitemFont = self.builder.get_object("FontBtn")
        self.toolitemFont.connect("clicked", lambda wid: self.chooseFont(wid))

        self.menuKeyword = self.builder.get_object("toggleKeyword")
        self.menuKeyword.connect("activate",
                                 lambda wid: self.toggleKeyword(wid))

        ## self.console_textview.set_editable(False)
        self.console_textview.set_cursor_visible(False)
        self.console_textview.set_buffer(UndoableBuffer())
        self.console_buffer = self.console_textview.get_buffer()
        self.scrolled_codeview = self.builder.get_object("scrolledwindow1")
        self.textview = self.builder.get_object("codeEditorTextView")
        self.StatusBar = self.builder.get_object("editorStatus")
        self.textview.set_buffer(UndoableBuffer())
        popup1 = PopupForTextView(self.textview, 'EXECUTE_SELECTION')
        self.textview_popup_handler = [
            popup1
        ]  #,PopupForTextView(self.textview,'SHOW_HELP',popup1)]
        self.textbuffer = self.textview.get_buffer()
        self.scrolled_codeview.set_policy(Gtk.PolicyType.AUTOMATIC,
                                          Gtk.PolicyType.AUTOMATIC)
        self.tag_text = None
        self.tag_literal = None
        self.tag_comment = None
        self.tag_fail = None
        self.tag_found = None
        self.tag_operator = None
        self.tag_pass = None
        self.refresh_tags()
        # add keywords bar
        self.keywords8 = [
            u"பதிப்பி",
            u"முடி",
            u"நிரல்பாகம்",
            u"தொடர்",
            u"நிறுத்து",
            u"ஒவ்வொன்றாக",
            u"இல்",
            u"ஆனால்",
            u"இல்லைஆனால்",
            u"இல்லை",
            u"ஆக",
            u"வரை",
            u"பின்கொடு",
        ]
        self.operators16 = [
            u"@", u"+", u"-", u"*", u"/", u"%", u"^", u"==", u">", u"<", u">=",
            u"<=", u"!=", u"!=", u"!", u",", u"(", u")", u"{", u"}", u"()",
            u"[]"
        ]
        self.forms = [
            u"@(  )\t ஆனால் \n இல்லை  \n முடி", u" @(  )\t வரை \n முடி",
            u"நிரல்பாகம்\t உதாரணம் () \n முடி"
        ]

        self.widget_keywords = self.builder.get_object("hbox_keywords8")
        self.widget_operators = self.builder.get_object("hbox_operators16")
        self.widget_forms = self.builder.get_object("hbox_forms")
        self.build_keyword_btns()

        # on screen keyboard
        self.editorBox = self.builder.get_object("editorBox")
        self.oskeyboard = None
        self.toggleKeyboard()

        # connect abt menu and toolbar item
        self.abt_menu = self.builder.get_object("aboutMenuItem")
        self.abt_menu.connect("activate", Editor.show_about_status)

        self.abt_btn = self.builder.get_object("AboutBtn")
        self.abt_btn.connect("clicked", Editor.show_about_status)

        self.cut_menu = self.builder.get_object("cut_item")
        self.cut_menu.connect("activate", Editor.cut_action)

        self.paste_menu = self.builder.get_object("paste_item")
        self.paste_menu.connect("activate", Editor.paste_action)

        self.cp_menu = self.builder.get_object("copy_item")
        self.cp_menu.connect("activate", Editor.copy_action)

        self.close_menu = self.builder.get_object("closeMenuItem")
        self.close_menu.connect("activate", Editor.close_file)

        # for undo-redo buttons
        self.undo_btn = self.builder.get_object("UndoBtn")
        self.redo_btn = self.builder.get_object("RedoBtn")
        self.undo_btn.connect("clicked", Editor.undo_action)
        self.redo_btn.connect("clicked", Editor.redo_action)

        # for code textview
        #self.textview.connect("backspace",Editor.on_codebuffer_edited)
        #self.textview.connect("delete-from-cursor",Editor.on_codebuffer_edited)
        #self.textview.connect("insert-at-cursor",Editor.on_codebuffer_edited)

        # search action in text buffer
        search_menu = self.builder.get_object("search_item")
        search_menu.connect("activate", Editor.on_search_clicked)

        # open : editor action
        self.open_menu = self.builder.get_object("openMenuItem")
        self.open_menu.connect("activate", Editor.open_file)
        self.open_btn = self.builder.get_object("OpenBtn")
        self.open_btn.connect("clicked", Editor.open_file)

        # new : editor action
        self.new_menu = self.builder.get_object("newMenuItem")
        self.new_menu.connect("activate", Editor.reset_new)
        self.new_btn = self.builder.get_object("NewBtn")
        self.new_btn.connect("clicked", Editor.reset_new)

        # run : editor action
        self.run_menu = self.builder.get_object("runMenuItem")
        self.run_menu.connect("activate", Editor.run_ezhil_code)
        self.run_btn = self.builder.get_object("RunBtn")
        run_signal = self.run_btn.connect("clicked", Editor.run_ezhil_code)

        # save : editor action save
        self.save_btn = self.builder.get_object("SaveBtn")
        self.save_btn.connect("clicked", Editor.save_file)
        self.save_menu = self.builder.get_object("menuItemSave")
        self.save_menu.connect("activate", Editor.save_file)
        self.saveas_menu = self.builder.get_object("menuItemSaveAs")
        self.saveas_menu.connect("activate", Editor.saveas_file)

        # clear buffer : clear run buffer
        self.clear_btn = self.builder.get_object("clearbuffer")
        self.clear_btn.connect("clicked", Editor.clear_buffer)

        # hookup the exit
        self.exit_btn = self.builder.get_object("ExitBtn")
        self.exit_btn.connect("clicked", Editor.exit_editor)
        self.exit_menu = self.builder.get_object("quitMenuItem")
        self.exit_menu.connect("activate", Editor.exit_editor)
        # exit by 'x' btn
        self.window.connect("destroy", Editor.exit_editor)
        self.window.show_all()

        self.load_file()
        if autorun:
            self.do_autorun()
        GLib.timeout_add(500, self.display_tinylicense)
コード例 #6
0
class DocLayoutWidgetActions(XMLtoDocVisitor):
    def __init__(self):
        XMLtoDocVisitor.__init__(self)
        self.highlighter = EzhilSyntaxHighlightingEditor()
        self.highlighter.append_mode = True
        self.chapters = {}
        self.tag = {}
        self.pageno = 0
        self.default_font = "Sans 18"
        self.default_font_chapter = "Serif 16"
        self.default_font_title = "Sans 24"
        self.textbuffer = None
        self.layoutpos = {"title":u"","section":0}

    def build_tags(self,textbuffer):
        self.tag["comment"] = textbuffer.create_tag("comment",
            weight=Pango.Weight.SEMIBOLD,foreground="red",font=self.default_font)
        self.tag["bold"] = textbuffer.create_tag("bold",
            weight=Pango.Weight.BOLD,font=self.default_font,foreground="black")
        self.tag["italic"] = textbuffer.create_tag("italic",
            style=Pango.Style.ITALIC,font=self.default_font,foreground="black")
        self.tag["underline"]  = textbuffer.create_tag("underline",
            underline=Pango.Underline.SINGLE,font=self.default_font,foreground="black")

        self.tag["code"]  = textbuffer.create_tag("code",
            style=Pango.Style.ITALIC,font=self.default_font,foreground="green")
        # use for chapter title
        self.tag["title"]  = textbuffer.create_tag("title",
            weight=Pango.Weight.BOLD,foreground="blue",font=self.default_font_title)
        self.tag["keyword"]  = textbuffer.create_tag("keyword",
            weight=Pango.Weight.BOLD,foreground="blue",font=self.default_font)
        # use for text/section tags
        self.tag["chapter"] = textbuffer.create_tag("chapter",
            weight=Pango.Weight.SEMIBOLD,foreground="black",font=self.default_font_chapter)
        self.tag["text"] = textbuffer.create_tag("text",font=self.default_font,foreground="black")
        self.tag["literal"]  = textbuffer.create_tag("literal",
            style=Pango.Style.ITALIC,font=self.default_font,foreground="green")
        self.tag["operator"] = textbuffer.create_tag("operator",
            weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="olive")
        self.tag["found"] = textbuffer.create_tag("found",font=self.default_font,
            background="yellow")
        self.tag["list"]  = textbuffer.create_tag("list",
            weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="purple")
        self.tag["pass"]  = textbuffer.create_tag("pass",
            weight=Pango.Weight.SEMIBOLD,font=self.default_font,foreground="green")

        self.highlighter.tag_comment = self.tag["comment"]
        self.highlighter.tag_keyword  = self.tag["keyword"]
        self.highlighter.tag_literal = self.tag["literal"]
        self.highlighter.tag_operator = self.tag["operator"]
        self.highlighter.tag_found = self.tag["found"]
        self.highlighter.tag_text = self.tag["text"]
        self.highlighter.tag_fail = self.tag["list"]
        self.highlighter.tag_pass = self.tag["pass"]

    def visit_fmt(self,*args):
        #pprint.pprint(args)
        child = args[0]
        fmt = args[1]
        if fmt.startswith("i"):
            tag = self.tag["italic"]
        elif fmt.startswith("b"):
            tag = self.tag["italic"]
        elif fmt.startswith("u"):
            tag = self.tag["underline"]
        else:
            raise Exception("Tag %s not implemented"%fmt)
        self.append_text_with_tag(child.childNodes[0].data,tag)

    def visit_chapter(self,*args):
        child = args[0]
        # skip chapter 0 - ithu managatti mathiri irukku
        title = ((self.pageno > 0) and u"%d) "%self.pageno or u" ") + child.getAttribute("title")+u"\n"
        self.layoutpos["title"]=title
        self.append_text_with_tag(title,self.tag["title"])

    def visit_section(self,*args):
        child = args[0]
        self.layoutpos["section"] += 1
        self.append_text_with_tag(u"_"*100+u"\n",self.tag["text"])
        self.append_text_with_tag(u"பிரிவு %d\n"%self.layoutpos["section"], self.tag["found"])

    def visit_code(self,*args):
        child = args[0]
        #print("Code => %s"%str(child))
        ref_text = None
        for node in child.childNodes:
            if node.nodeType == node.TEXT_NODE:
                ref_text = node
                break
        if ref_text:
            self.highlighter.run_syntax_highlighting(ref_text.data)
        pass

    def visit_text(self,text):
        child = text
        #print("Text => %s"%str(child))
        self.append_text_with_tag(child.data,self.pageno == 0 and self.tag["chapter"] or self.tag["text"])

    def visit_list(self,*args):
        child = args[0]
        #print("List => %s"%str(child))
        ref_text = None
        for node in child.childNodes:
            if node.nodeType == node.TEXT_NODE:
                ref_text = node
                break
        self.append_text_with_tag(u"\n",self.tag["list"])
        if ref_text:
            idx = 0
            for _,line in enumerate(re.split("\n+",ref_text.data.strip())):
                line = line.strip()
                line = re.sub("^\*","    ",line)
                if len(line) < 1:
                    continue
                idx = idx + 1
                self.append_text_with_tag(u"    %d)"%idx+line+u"\n",self.tag["list"])
        pass

    def append_text_with_tag(self,text,tag):
        textbuffer = self.textbuffer
        self.highlighter.textbuffer = self.textbuffer
        textbuffer.insert_at_cursor( text )
        n_end = textbuffer.get_end_iter()
        n_start = textbuffer.get_iter_at_offset(textbuffer.get_char_count()-len(text))
        textbuffer.apply_tag(tag,n_start,n_end)
        return

    def render_page(self,pageno,textbuffer):
        if len(self.tag.keys()) == 0:
            self.build_tags(textbuffer)
        self.pageno = pageno
        self.textbuffer = textbuffer

        # reset
        self.layoutpos = {"title":u"","section":0}
        self.textbuffer.set_text(u"")

        dom = self.chapters[pageno]['dom']
        self.visit(dom)
        #print("==========END VISITOR=======")
        #with codecs.open(self.chapters[pageno]['file'],'r','utf-8') as fp:
        #    data = fp.read()
        # str_val = dom.getElementsByTagName("chapter")[0].getAttribute("title")
        # print("Title => %s"%str_val)
        # textbuffer.set_text( str_val )
        # n_end = textbuffer.get_end_iter()
        # n_start = textbuffer.get_iter_at_offset(textbuffer.get_char_count()-len(str_val))
        # textbuffer.apply_tag(self.tag["title"],n_start,n_end)

        return True

    def update_toc(self,box,parent):
        toc_list = [u"<chapter title=\"தமிழில் நிரல் எழுது - புத்தக உள்ளீடு\">",]
        for pos,chapter in self.chapters.items():
            btn = Gtk.Button(u"%d. <b>%s</b>"%(pos,chapter['title']))
            btn.get_children()[0].set_use_markup(True)
            btn.set_alignment(0.0,0.0)
            btn.connect('clicked',parent.on_navigate_to,chapter['title'],pos)
            box.pack_start(btn,True,True,0)
            toc_list.append(u"<section>%s</section>"%chapter['title'])
        toc_list.append(u"</chapter>")
        toc_str = u"\n".join(toc_list)
        toc_dom = xml_parse_string(PYTHON3 and toc_str or u'{0}'.format(toc_str).encode('utf-8'))
        self.chapters[0] = {'dom':toc_dom,'title':u'தமிழில் நிரல் எழுது - புத்தக உள்ளீடு','file':u':auto:'}
        return True
コード例 #7
0
    def __init__(self,filename=None,autorun=False):
        EditorState.__init__(self)
        EzhilSyntaxHighlightingEditor.__init__(self)
        Editor._instance = self
        self.autorun = autorun
        self.builder.add_from_file(getResourceFile("editor.glade"))
        if filename:
            self.filename = filename
        ## construct the GUI from GLADE
        self.window = self.builder.get_object("ezhilEditorWindow")
        try:
            d = Gtk.CssProvider.get_default()
            ## style = formatString( "style \"my-style\" { font_name = \"Mono %i\" }"
            ## class \"*\" style \"my-style\"", fontSize);
            ## gtk_rc_parse_string( style )
            d.load_from_data("default * { font : \"Latha 7\" }")
            self.window.set_icon_from_file(getResourceFile("img","ezhil_square_2015_128px.png"))
        except Exception as ie:
            print(u"Message: loading image or CSS style failed - %s"%ie)
        self.window.set_resizable(False) #fix the window
        self.window.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
        self.console_textview = self.builder.get_object("codeExecutionTextView")

        self.help_browser = None
        self.example_browser = None
        self.menuKbd = self.builder.get_object("toggleKeyboard")
        self.menuKbd.connect("activate", lambda wid: self.toggleKeyboard(wid))
        self.toolitemKbd = self.builder.get_object("KbdBtn")
        self.toolitemKbd.connect("clicked",lambda wid: self.toggleKeyboardAndKeyword(wid))
        
        self.exampleMenu = self.builder.get_object("exampleBrowserItem")
        self.exampleMenu.connect("activate",lambda wid: self.exampleBrowser(wid))
        
        self.helpItem = self.builder.get_object("HelpBtn")
        self.helpItem.connect("clicked",lambda wid: self.helpBrowser(wid))
        self.helpMenuItem = self.builder.get_object("helpMenuItem")
        self.helpMenuItem.connect("activate",lambda wid: self.helpBrowser(wid))
        
        self.toolitemFont = self.builder.get_object("FontBtn")
        self.toolitemFont.connect("clicked", lambda wid: self.chooseFont(wid))
        
        self.menuKeyword = self.builder.get_object("toggleKeyword")
        self.menuKeyword.connect("activate",lambda wid: self.toggleKeyword(wid))
        
        ## self.console_textview.set_editable(False)
        self.console_textview.set_cursor_visible(False)
        self.console_textview.set_buffer(UndoableBuffer())
        self.console_buffer = self.console_textview.get_buffer()
        self.scrolled_codeview = self.builder.get_object("scrolledwindow1")
        self.textview = self.builder.get_object("codeEditorTextView")
        self.StatusBar = self.builder.get_object("editorStatus")
        self.textview.set_buffer(UndoableBuffer())
        popup1 = PopupForTextView(self.textview,'EXECUTE_SELECTION')
        self.textview_popup_handler = [popup1]#,PopupForTextView(self.textview,'SHOW_HELP',popup1)]
        self.textbuffer = self.textview.get_buffer()
        self.scrolled_codeview.set_policy(Gtk.PolicyType.AUTOMATIC,Gtk.PolicyType.AUTOMATIC)
        self.tag_text = None
        self.tag_literal = None
        self.tag_comment = None
        self.tag_fail = None
        self.tag_found = None
        self.tag_operator = None
        self.tag_pass = None
        self.refresh_tags()
        # add keywords bar
        self.keywords8 = [u"பதிப்பி",u"முடி",u"நிரல்பாகம்",u"தொடர்",u"நிறுத்து",u"ஒவ்வொன்றாக",u"இல்",u"ஆனால்",u"இல்லைஆனால்",u"இல்லை", u"ஆக",u"வரை",u"பின்கொடு",]
        self.operators16 = [u"@",u"+",u"-",u"*",u"/",u"%",u"^",u"==",u">",u"<",u">=",u"<=",u"!=",u"!=",u"!",u",",u"(",u")",u"{",u"}",u"()",u"[]"]
        self.forms = [u"@(  )\t ஆனால் \n இல்லை  \n முடி",u" @(  )\t வரை \n முடி",u"நிரல்பாகம்\t உதாரணம் () \n முடி"]
        
        self.widget_keywords = self.builder.get_object("hbox_keywords8")
        self.widget_operators = self.builder.get_object("hbox_operators16")
        self.widget_forms = self.builder.get_object("hbox_forms")
        self.build_keyword_btns()

        # on screen keyboard
        self.editorBox = self.builder.get_object("editorBox")
        self.oskeyboard = None
        self.toggleKeyboard()

        # connect abt menu and toolbar item
        self.abt_menu = self.builder.get_object("aboutMenuItem")
        self.abt_menu.connect("activate",Editor.show_about_status)
        
        self.abt_btn = self.builder.get_object("AboutBtn")
        self.abt_btn.connect("clicked",Editor.show_about_status)

        self.cut_menu = self.builder.get_object("cut_item")
        self.cut_menu.connect("activate",Editor.cut_action)

        self.paste_menu = self.builder.get_object("paste_item")
        self.paste_menu.connect("activate",Editor.paste_action)

        self.cp_menu = self.builder.get_object("copy_item")
        self.cp_menu.connect("activate",Editor.copy_action)

        self.close_menu = self.builder.get_object("closeMenuItem")
        self.close_menu.connect("activate",Editor.close_file)
        
        # for undo-redo buttons
        self.undo_btn = self.builder.get_object("UndoBtn")
        self.redo_btn = self.builder.get_object("RedoBtn")
        self.undo_btn.connect("clicked",Editor.undo_action)
        self.redo_btn.connect("clicked",Editor.redo_action)

        # for code textview
        #self.textview.connect("backspace",Editor.on_codebuffer_edited)
        #self.textview.connect("delete-from-cursor",Editor.on_codebuffer_edited)
        #self.textview.connect("insert-at-cursor",Editor.on_codebuffer_edited)
        
        # search action in text buffer
        search_menu = self.builder.get_object("search_item")
        search_menu.connect("activate",Editor.on_search_clicked)
        
        # open : editor action
        self.open_menu = self.builder.get_object("openMenuItem")
        self.open_menu.connect("activate",Editor.open_file)
        self.open_btn = self.builder.get_object("OpenBtn")
        self.open_btn.connect("clicked",Editor.open_file)
        
        # new : editor action
        self.new_menu = self.builder.get_object("newMenuItem")
        self.new_menu.connect("activate",Editor.reset_new)
        self.new_btn = self.builder.get_object("NewBtn")
        self.new_btn.connect("clicked",Editor.reset_new)
        
        # run : editor action
        self.run_menu = self.builder.get_object("runMenuItem")
        self.run_menu.connect("activate",Editor.run_ezhil_code)
        self.run_btn = self.builder.get_object("RunBtn")
        run_signal = self.run_btn.connect("clicked",Editor.run_ezhil_code)
        
        # save : editor action save
        self.save_btn = self.builder.get_object("SaveBtn")
        self.save_btn.connect("clicked",Editor.save_file)
        self.save_menu = self.builder.get_object("menuItemSave")
        self.save_menu.connect("activate",Editor.save_file)
        self.saveas_menu = self.builder.get_object("menuItemSaveAs")
        self.saveas_menu.connect("activate",Editor.saveas_file)

        # clear buffer : clear run buffer
        self.clear_btn = self.builder.get_object("clearbuffer")
        self.clear_btn.connect("clicked",Editor.clear_buffer)
        
        # hookup the exit
        self.exit_btn = self.builder.get_object("ExitBtn")
        self.exit_btn.connect("clicked",Editor.exit_editor)
        self.exit_menu = self.builder.get_object("quitMenuItem")
        self.exit_menu.connect("activate",Editor.exit_editor)
        # exit by 'x' btn
        self.window.connect("destroy",Editor.exit_editor)
        self.window.show_all()
        
        self.load_file()
        if autorun:
            self.do_autorun()
        GLib.timeout_add(500,self.display_tinylicense)