Example #1
0
 def ask_new_url(parent):
     app0 = wx.GetApp().TopWindow
     ret, m = dialog.textentry(app0, "Enter new url", "Mercurial Clone",
                               parent.value_suggestion())
     if not ret:
         return None
     return {'url': str(m)}
Example #2
0
 def ask_new_url(parent):
     app0 = wx.GetApp().TopWindow
     ret, m = dialog.textentry(app0,
                               "Enter new url", "Mercurial Clone", 
                               parent.value_suggestion())
     if not ret: return None
     return {'url':str(m)}
Example #3
0
 def onHGMakeRepo(self, evt):
     app0 = wx.GetApp().TopWindow
     ret, m = dialog.textentry(app0, "Enter variable name",
                               "Create repo object", 'repo')
     if not ret: return None
     repo = hgapi.Repo(self.owndir())
     self.write2shell(repo, m)
Example #4
0
 def onHGMakeRepo(self, evt):
     app0 = wx.GetApp().TopWindow
     ret, m = dialog.textentry(app0,
              "Enter variable name", "Create repo object", 'repo')
     if not ret: return None
     repo = hgapi.Repo(self.owndir())
     self.write2shell(repo, m)
Example #5
0
def onNewConnection(self, e):

    app = self.td.get_app()
    ret, new_name = dialog.textentry(app, "Enter the name of new connection",
                                     "Add Connection", "")
    if ret:
        self.add_connection(new_name)
Example #6
0
    def onAddNewText(self, e=None):
        from ifigure.mto.py_file import PyText
        obj = PyText()
        iname = self.get_next_name('untitled')

        parent = self.get_app()
        ret, name = dialog.textentry(parent,
                                     "Enter a text name", "New text...", iname)
        self.add_child(name, obj)
        obj.mk_owndir()
        path = os.path.join(obj.owndir(), obj.name + '.txt')
        print(('creating file ', path))
        open(path, 'a').close()
        obj.set_path_pathmode(path)
        obj.store_mtime()

        w = None if e is None else e.GetEventObject()
        from ifigure.mto.treedict import str_td
        path = str_td(path)
        path.td = obj.get_full_path()
        ifigure.events.SendEditFileEvent(self, w=w, file=path)

        if e is not None:
            e.Skip()
        return obj
Example #7
0
def onNewConnection(self, e):

   
    app = self.td.get_app()
    ret, new_name=dialog.textentry(app,
             "Enter the name of new connection", "Add Connection", "")
    if ret:
        self.add_connection(new_name)
Example #8
0
 def onAddModel(self, e):
     id=e.GetEventObject()
     app=id.GetTopLevelParent()
     ret, new_name=dialog.textentry(app,
                   "Enter the name of new model", 
                   "Add Model", "")
     if ret:
         child=PyModel()
         imodel=self.add_child(new_name, child)
         child.onAddFolder(name = 'scripts')
     e.Skip() ## call update project tree widget
Example #9
0
 def onAddData(self, e):
     id=e.GetEventObject()
     app=id.GetTopLevelParent()
     ret, name = dialog.textentry(app,
                 "Enter a data name", 
                 "New Data...", "data")
     if not ret: return
     data = PyData()
     name = self.get_next_name(name)
     self.add_child(name, data)
     e.Skip() ## call update project tree widget
 def OnAddNS(self, evt):
     import ifigure.widgets.dialog as dialog
     indices = self.tree.GetIndexOfItem(self.tree.GetSelection())
     mm = self.model.GetItem(indices)
     txt = self.model.GetItemText(indices)
     ret, txt = dialog.textentry(self, "Enter namespace name", "New NS...",
                                 txt.lower())
     if not ret: return
     mm.new_ns(txt)
     self.tree.RefreshItems()
     evt.Skip()
Example #11
0
 def onNew(self, evt):
     ret, new_name=dialog.textentry(self,
                   "Enter the name of file type", 
                   "Add New FileType", '')
     if not ret: return
     if not new_name in self.get_names():
         v = {'name':new_name, 'ext':'*.*',
              'action':'', 'action_txt': '', 'use':True}
     self.var['file'].append(v)
     self.update_cb()
     self.cb.SetValue(new_name)
     self._cb_value = new_name
     self.set_elp()
Example #12
0
def onAddSec(self, e):
    import   ifigure.widgets.dialog as dialog

    parent = e.GetEventObject()
    ret, name = dialog.textentry(parent, 
                   "Enter section name", 
                   "Add Section...", 'section')
    if not ret: return

    var0 = self.td.getvar0()
    if not name in var0:
       var0[name] = Namelist()
       app = wx.GetApp().TopWindow
       app.proj_tree_viewer.update_content_widget(self.td)
    def OnRenameItem(self, evt):
        indices = self.tree.GetIndexOfItem(self.tree.GetSelection())
        mm = self.model.GetItem(indices)

        from ifigure.widgets.dialog import textentry
        ret, name = textentry(
            parent=self,
            message='Enter new name',
            title='Rename',
            def_string=mm.name() + '_renamed',
        )
        if not ret: return
        mm.rename(name)
        self.tree.RefreshItems()
Example #14
0
    def onExportToShell(self, evt):
        fpath=self.path2fullpath('file_pathmode', 'file_path')
        fid = open(fpath, 'r')
        lines = fid.readlines()
        fid.close()

        id=evt.GetEventObject()
        app=id.GetTopLevelParent()
        ret, new_name=dialog.textentry(app,
                      "Enter the name of new variable", 
                      "Export Text File to Shell", "")
        if ret:
            flag = self.write2shell(lines, new_name)            
            app.shell.SendShellEnterEvent()
        e.Skip() ## call update project tree widget
Example #15
0
    def onExportToShell(self, evt):
        fpath = self.path2fullpath('file_pathmode', 'file_path')
        fid = open(fpath, 'r')
        lines = fid.readlines()
        fid.close()

        id = evt.GetEventObject()
        app = id.GetTopLevelParent()
        ret, new_name = dialog.textentry(app,
                                         "Enter the name of new variable",
                                         "Export Text File to Shell", "")
        if ret:
            flag = self.write2shell(lines, new_name)
            app.shell.SendShellEnterEvent()
        e.Skip()  # call update project tree widget
Example #16
0
    def onAddNewScript(self, e=None, name='', temp='', parent=None, dest=None):
        # new script
        # copy template to owndir
        # open it by editor
        import ifigure.mto.py_script as py_script
        if temp == '':
            temp = os.path.join(
                ifigure.__path__[0], 'template', 'script', '_blank_script.py')

        child = py_script.PyScript()
        if name == '':
            iname = '_'.join([x for x in os.path.basename(temp)[
                             :-3].split('_') if len(x) != 0])
            if parent is None:
                parent = self.get_app()
            ret, name = dialog.textentry(parent,
                                         "Enter a script name", "New Script...", iname)
            if not ret:
                return
            if self.has_child(name):
                name = self.get_next_name(name)
        idx = self.add_child(name, child)

        if dest is None:
            child.mk_owndir()
            dest = child.owndir()
        dest = os.path.join(dest, name+'.py')
        i = 1
        while os.path.exists(dest):
            name0 = name+str(i)+'.py'
            dest = os.path.join(child.owndir(), name0)
            i = i + 1
        shutil.copyfile(temp, dest)
        child.load_script(dest)

        w = None
        if e is not None:
            w = e.GetEventObject()
        from ifigure.mto.treedict import str_td
        dest = str_td(dest)
        dest.td = child.get_full_path()
        ifigure.events.SendEditFileEvent(self, w=w, file=dest)

        if e is not None:
            e.Skip()
        return child
Example #17
0
def onRenameSec(self, e):  
    import   ifigure.widgets.dialog as dialog
    parent = e.GetEventObject() 
    var0 = self.td.getvar0()
    ret, name = dialog.textselect(parent, 
                   "Select section name", 
                   "Rename Section...", 
                    choices = var0.keys())
    if not ret: return  
    ret, name1 = dialog.textentry(parent, 
                   "Enter new section name", 
                   "Rename Section...", name+'_renamed')
    if not ret: return  

    var0[name1] = var0[name]
    del var0[name]
    app = wx.GetApp().TopWindow
    app.proj_tree_viewer.update_content_widget(self.td)
Example #18
0
 def onAddModel(self, e=None):
     model = PyModel()
     basename = model.get_namebase()
     name=self.get_next_name(basename)
     if e is not None:
        id=e.GetEventObject()
        app=id.GetTopLevelParent()
        ret, new_name=dialog.textentry(app,
                  "Enter the name of new model", 
                  "Add Model", name)
        if not ret: return
     else:
        new_name = name
     self._onAddSomething(model, ['isPySolver', 'isFigBook', 'isPySol'], 
                          name = new_name)
     if not cbook.ProxyAlive(self._pmodel):
        self._pmodel=weakref.proxy(model)
     if e is not None: e.Skip()
     return model
Example #19
0
 def onAddModel(self, e=None):
     model = PyModel()
     basename = model.get_namebase()
     name = self.get_next_name(basename)
     if e is not None:
         id = e.GetEventObject()
         app = id.GetTopLevelParent()
         ret, new_name = dialog.textentry(app,
                                          "Enter the name of new model",
                                          "Add Model", name)
         if not ret: return
     else:
         new_name = name
     self._onAddSomething(model, ['isPySolver', 'isFigBook', 'isPySol'],
                          name=new_name)
     if not cbook.ProxyAlive(self._pmodel):
         self._pmodel = weakref.proxy(model)
     if e is not None: e.Skip()
     return model
Example #20
0
    def onAddNewScript(self, e=None, name='', temp='', parent=None, dest=None):
        # new script 
        # copy template to owndir
        # open it by editor
        import ifigure.mto.py_script as py_script
        if temp == '':
           temp=os.path.join(ifigure.__path__[0], 'template', 'script', '_blank_script.py')

        child=py_script.PyScript()
        if name is '':
            iname = '_'.join([x for x in os.path.basename(temp)[:-3].split('_') if len(x) !=0])
            if parent is None:
                parent = self.get_app()
            ret, name = dialog.textentry(parent, 
                            "Enter a script name", "New Script...", iname)
            if not ret: return
            if self.has_child(name):
                 name=self.get_next_name(name)
        idx=self.add_child(name, child)

        if dest is None:
            child.mk_owndir()
            dest = child.owndir()
        dest = os.path.join(dest, name+'.py')
        i = 1
        while os.path.exists(dest):
            name0 = name+str(i)+'.py'
            dest = os.path.join(child.owndir(), name0)
            i = i + 1
        shutil.copyfile(temp, dest)        
        child.load_script(dest)    

        w = None
        if e is not None: w = e.GetEventObject()
        from ifigure.mto.treedict import str_td
        dest = str_td(dest)
        dest.td = child.get_full_path()
        ifigure.events.SendEditFileEvent(self, w=w, file=dest)

        if e is not None: e.Skip()
        return child
Example #21
0
    def onAddNewText(self, e=None):
         from ifigure.mto.py_file import PyText
         obj = PyText()
         iname=self.get_next_name('untitled')

         parent = self.get_app()
         ret, name = dialog.textentry(parent, 
                     "Enter a text name", "New text...", iname)
         self.add_child(name, obj)
         obj.mk_owndir()
         path = os.path.join(obj.owndir(), obj.name + '.txt')
         print('creating file ', path)
         open(path, 'a').close()
         obj.set_path_pathmode(path)
         obj.store_mtime()

         w = None if e is None else e.GetEventObject()
         from ifigure.mto.treedict import str_td
         path = str_td(path)
         path.td = obj.get_full_path()
         ifigure.events.SendEditFileEvent(self, w=w, file=path)

         if e is not None: e.Skip()
         return obj
Example #22
0
       def onHGupdate(self, evt=None, m=None):
           repo = hgapi.Repo(self.owndir())
           app0 = wx.GetApp().TopWindow
           if m is None:
              latest = repo.revisions(slice(-1,-1))[0].rev
              ret, m = dialog.textentry(app0,
                    "Enter revision #", "Mercurial Update", str(latest))
              if not ret: return None
           status = repo.hg_status()
           for key in status:
               if key == '?': continue
               if len(status[key]) != 0:
                    print(status)
                    ret, m = dialog.message(app0,
                                "Local repo status is not clean. \n(" + 
                                 self.get_full_path()+')', 
                                "Mercurial Update Error")
                    self.hg_set_projtreeviewer_status(repo)
#                    self._status = '!'
                    return None

           repo.hg_update(long(m))

           parent = self.get_parent()
           owndir = self.owndir()
           name = self._name
           ichild = self.get_ichild()
           url, root, path = self.get_mercurial_url()
           
           self.destroy(clean_owndir=False)

           del_old_treedata = False
           load_fpath = True
           
           fpath=os.path.join(owndir, ".tree_data_hg")
           if not os.path.exists(fpath): 
               fpath=os.path.join(owndir, ".tree_data")
               if not os.path.exists(fpath): 
                  print((url, root, path))
                  td = handle_pure_file_repo(parent, name, owndir)
                  load_fpath = False
               else:
                  dlg=wx.MessageDialog(None, 
                                    'HG update succeeded but .tree_data_hg is not found.',
                       'Old style for HG repo',
                                     wx.OK)
                  ret=dlg.ShowModal()
                  dlg.Destroy()
                  fpath=os.path.join(owndir, ".tree_data")
                  del_old_treedata = True
           if load_fpath:
               fid= open(fpath, 'rb')
               td, olist, nlist = TreeDict().load(fid, keep_zorder=True)
               fid.close()
               parent.add_child(name, td, keep_zorder = True)
           parent.move_child(td.get_ichild(), ichild)
           if load_fpath:
               for obj in td.walk_tree():
                   obj.init_after_load(olist, nlist)
           if del_old_treedata:
               os.remove(fpath)

           if url is not None:
               td.set_mercurial_url(root, path)
           if evt is not None:
#               evt.GetEventObject().update_widget_request2()
               ifigure.events.SendFileSystemChangedEvent(parent, reload = True)
               evt.Skip()
           return td
Example #23
0
        def onHGupdate(self, evt=None, m=None):
            repo = hgapi.Repo(self.owndir())
            app0 = wx.GetApp().TopWindow
            if m is None:
                latest = repo.revisions(slice(-1, -1))[0].rev
                ret, m = dialog.textentry(app0, "Enter revision #",
                                          "Mercurial Update", str(latest))
                if not ret: return None
            status = repo.hg_status()
            for key in status:
                if key == '?': continue
                if len(status[key]) != 0:
                    print(status)
                    ret, m = dialog.message(
                        app0, "Local repo status is not clean. \n(" +
                        self.get_full_path() + ')', "Mercurial Update Error")
                    self.hg_set_projtreeviewer_status(repo)
                    #                    self._status = '!'
                    return None

            repo.hg_update(long(m))

            parent = self.get_parent()
            owndir = self.owndir()
            name = self._name
            ichild = self.get_ichild()
            url, root, path = self.get_mercurial_url()

            self.destroy(clean_owndir=False)

            del_old_treedata = False
            load_fpath = True

            fpath = os.path.join(owndir, ".tree_data_hg")
            if not os.path.exists(fpath):
                fpath = os.path.join(owndir, ".tree_data")
                if not os.path.exists(fpath):
                    print((url, root, path))
                    td = handle_pure_file_repo(parent, name, owndir)
                    load_fpath = False
                else:
                    dlg = wx.MessageDialog(
                        None,
                        'HG update succeeded but .tree_data_hg is not found.',
                        'Old style for HG repo', wx.OK)
                    ret = dlg.ShowModal()
                    dlg.Destroy()
                    fpath = os.path.join(owndir, ".tree_data")
                    del_old_treedata = True
            if load_fpath:
                fid = open(fpath, 'rb')
                td, olist, nlist = TreeDict().load(fid, keep_zorder=True)
                fid.close()
                parent.add_child(name, td, keep_zorder=True)
            parent.move_child(td.get_ichild(), ichild)
            if load_fpath:
                for obj in td.walk_tree():
                    obj.init_after_load(olist, nlist)
            if del_old_treedata:
                os.remove(fpath)

            if url is not None:
                td.set_mercurial_url(root, path)
            if evt is not None:
                #               evt.GetEventObject().update_widget_request2()
                ifigure.events.SendFileSystemChangedEvent(parent, reload=True)
                evt.Skip()
            return td