Ejemplo n.º 1
0
    def __init__(self, parent, app=None):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          size=wx.Size(300, 200),
                          style=wx.TAB_TRAVERSAL)

        sizer = wx.BoxSizer(wx.VERTICAL)

        mrecorder = recorder(self)
        self.notebook = aui.AuiNotebook(self, wx.ID_ANY, wx.DefaultPosition,
                                        wx.DefaultSize,
                                        aui.AUI_NB_DEFAULT_STYLE)
        self.notebook.AddPage(mrecorder, mrecorder.title, True, wx.NullBitmap)
        self.notebook.AddPage(console(self), console.title, False,
                              wx.NullBitmap)
        self.notebook.AddPage(plglist(self), plglist.title, False,
                              wx.NullBitmap)
        self.notebook.AddPage(plgtree(self), plgtree.title, False,
                              wx.NullBitmap)
        self.notebook.AddPage(toltree(self), toltree.title, False,
                              wx.NullBitmap)
        for i in range(5):
            self.notebook.GetPage(i).app = parent
        Source.manager('widget').add('Macros Recorder', mrecorder)
        sizer.Add(self.notebook, 1, wx.EXPAND | wx.ALL, 0)
        self.SetSizer(sizer)
        self.Fit()
        self.Layout()
Ejemplo n.º 2
0
 def _alert(self, info, title='ImagePy'):
     lang = Source.manager('config').get('language')
     dics = Source.manager('dictionary').gets(tag=lang) 
     dialog = wx.MessageDialog(self, info, title, wx.OK)
     self.translate([i[1] for i in dics])(dialog)
     dialog.ShowModal() == wx.ID_OK
     dialog.Destroy()
Ejemplo n.º 3
0
def build_dictionary(path):
    for lang in [osp.split(i)[1] for i in glob(path + '/*') if osp.isdir(i)]:
        for dirpath, dirnames, filenames in os.walk(path + '/' + lang):
            for filename in filenames:
                if filename[-3:] != 'dic': continue
                with open(os.path.join(dirpath, filename),
                          encoding='utf-8') as f:
                    lines = f.read().replace('\r', '').split('\n')
                dic = []
                for line in lines:
                    if line == '':
                        dic[-1] = (dic[-1][0][0], dict(dic[-1]))
                    elif line[0] == '\t':
                        dic[-1].append(line[1:].split('::'))
                    else:
                        dic.append([line.split('::')])
                if isinstance(dic[-1], list):
                    dic[-1] = (dic[-1][0][0], dict(dic[-1]))
                dic = dict(dic)
                for i in dic:
                    obj = Source.manager('dictionary').get(i, tag=lang)
                    if not obj is None: obj.update(dic[i])
                    else: Source.manager('dictionary').add(i, dic[i], lang)
        common = Source.manager('dictionary').get('common', tag=lang)
        if common is None: return
        objs = Source.manager('dictionary').gets(tag=lang)
        for i in objs:
            i[1].update(common)
Ejemplo n.º 4
0
def extend_tools(path, lst, err):
    rst = []
    for i in lst:
        if i[-3:] in ('.mc', '.md', '.wf', 'rpt'):
            pt = os.path.join(root_dir, path)
            # if i[-3:] == '.md':print(pt)
            f = open(pt + '/' + i)
            cmds = f.readlines()
            f.close()
            rst.append((Macros(i[:-3], [getpath(pt, i) for i in cmds]),
                        os.path.join(root_dir, path) + '/' + i[:-3] + '.gif'))
        else:
            #try:
            rpath = path.replace('/', '.').replace('\\', '.')
            #rpath = rpath[rpath.index('imagepy.'):]

            plg = __import__('imagepy.' + rpath + '.' + i, '', '', [''])
            if hasattr(plg, 'plgs'):
                for i, j in plg.plgs:
                    rst.append((i, path + '/' + j))
            else:
                rst.append((plg.Plugin, os.path.join(root_dir, path) + '/' +
                            i.split('_')[0] + '.gif'))
            #except Exception as e:
            #    err.append((path, i, sys.exc_info()[1]))
    for i in rst:
        Source.manager('tool').add(obj=i[0], name=i[0].title)
    return rst
Ejemplo n.º 5
0
def extend_tools(path, lst, err):
    rst = []
    for i in lst:
        if i[-3:] in ('.mc', '.md', '.wf', 'rpt'):
            p = os.path.join(os.path.join(root_dir, path),
                             i).replace('\\', '/')
            rst.append((Macros(i[:-3], ['Open>{"path":"%s"}' % p]),
                        os.path.join(root_dir, path) + '/' + i[:-3] + '.gif'))

            #rst.append((Macros(i[:-3], [getpath(pt, i) for i in cmds]),
            #    os.path.join(root_dir, path)+'/'+i[:-3]+'.gif'))
        else:
            try:
                rpath = path.replace('/', '.').replace('\\', '.')
                plg = __import__('imagepy.' + rpath + '.' + i, '', '', [''])
                if hasattr(plg, 'plgs'):
                    for i, j in plg.plgs:
                        rst.append((i, path + '/' + j))
                else:
                    rst.append((plg.Plugin, os.path.join(root_dir, path) +
                                '/' + i.split('_')[0] + '.gif'))
            except Exception as e:
                err.append((path, i, sys.exc_info()[1]))
    for i in rst:
        Source.manager('tool').add(obj=i[0], name=i[0].title)
    return rst
Ejemplo n.º 6
0
 def load_menu(self, data):
     self.menubar.clear()
     lang = Source.manager('config').get('language')
     ls = Source.manager('dictionary').gets(tag=lang)
     short = Source.manager('shortcut').gets()
     acc = self.menubar.load(data, dict([i[:2] for i in short]))
     self.translate(dict([(i,j[i]) for i,j,_ in ls]))(self.menubar)
     self.SetAcceleratorTable(acc)
Ejemplo n.º 7
0
 def on_close(self, event):
     print('close')
     #ConfigManager.write()
     self.auimgr.UnInit()
     del self.auimgr
     self.Destroy()
     Source.manager('config').write()
     sys.exit()
Ejemplo n.º 8
0
 def on_select(self, event):
     plg = self.tre_plugins.GetItemData(event.GetItem())
     if plg != None:
         self.plg = plg
         name = self.tre_plugins.GetItemText(event.GetItem())
         lang = Source.manager('config').get('language')
         doc = Source.manager('document').get(name, tag=lang)
         doc = doc or Source.manager('document').get(name, tag='English')
         self.txt_info.set_cont(doc or 'No Document!')
Ejemplo n.º 9
0
def load_dictionary():
    lans = glob(root_dir + '/lang/*')
    lans += glob(root_dir + '/plugins/*/lang/*')
    lans = [i for i in lans if os.path.isdir(i)]
    lans = [os.path.split(i) for i in lans]
    lan = sorted(set([i[1] for i in lans]))
    Source.manager('dictionary').add('language', lan)
    lans = sorted(set([i[0] for i in lans]))
    for i in lans:
        loader.build_dictionary(i)
Ejemplo n.º 10
0
 def load(self):
     lst = Source.manager('plugin').names()
     self.plgs = [[
         i, Source.manager('shotcut').get(item='shotcut', name=i)
     ] for i in lst]
     for i in self.plgs:
         if i[1] == None: i[1] = ''
     self.plgs.sort()
     self.buf = self.plgs
     self.lst_plgs.set_data(self.plgs)
Ejemplo n.º 11
0
 def load_tool(self, data, default=None):
     self.toolbar.clear()
     lang = Source.manager('config').get('language')
     ls = Source.manager('dictionary').gets(tag=lang)
     dic = dict([(i,j[i]) for i,j,_ in ls])
     for i, (name, tols) in enumerate(data[1]):
         name = dic[name] if name in dic else name
         self.toolbar.add_tools(name, tols, i==0)
     default = dic[default] if default in dic else default
     if not default is None: self.toolbar.add_pop(os.path.join(root_dir, 'tools/drop.gif'), default)
     self.toolbar.Layout()
Ejemplo n.º 12
0
 def load_widget(self, data):
     self.widgets.clear()
     lang = Source.manager('config').get('language')
     self.widgets.load(data)
     for cbk in self.widgets.GetChildren():
         for i in range(cbk.GetPageCount()):
             dic = Source.manager('dictionary').get(cbk.GetPageText(i), tag=lang) or {}
             translate = self.translate(dic)
             title = cbk.GetPageText(i)
             cbk.SetPageText(i, dic[title] if title in dic else title)
             self.translate(dic)(cbk.GetPage(i))
Ejemplo n.º 13
0
def extend_widgets(path, lst, err):
    rst = []
    for i in lst:
        try:
            rpath = path.replace('/', '.').replace('\\', '.')
            plg = __import__('imagepy.' + rpath + '.' + i, '', '', [''])
            rst.append(plg.Plugin)
        except Exception as e:
            err.append((path, i, sys.exc_info()[1]))
    for i in rst:
        Source.manager('widget').add(obj=i, name=i.title)
    return rst
Ejemplo n.º 14
0
def build_document(path):
    docs = []
    for lang in [osp.split(i)[1] for i in glob(path + '/*') if osp.isdir(i)]:
        for dirpath, dirnames, filenames in os.walk(path + '/' + lang):
            for filename in filenames:
                if filename[-3:] != '.md': continue
                docs.append(os.path.join(dirpath, filename))
                f = open(docs[-1], encoding='utf-8')
                cont = f.read()
                f.close()
                Source.manager('document').add(filename[:-3], cont, lang)
    return docs
Ejemplo n.º 15
0
def add_recent(path):
    global recent, rlist
    if path in recent:
        idx = recent.index(path)
        recent.insert(0, recent.pop(idx))
        rlist.insert(0, rlist.pop(idx))
    else:
        recent.insert(0, path)
        rlist.insert(0, f(path))
    if len(recent) >= 5:
        recent.pop(-1)
        rlist.pop(-1)

    Source.manager('config').add('recent', recent)
Ejemplo n.º 16
0
    def getpath(self, title, filt, io, name=''):
        filt = '|'.join(['%s files (*.%s)|*.%s'%(i.upper(),i,i) for i in filt])
        dic = {'open':wx.FD_OPEN, 'save':wx.FD_SAVE}
        dialog = wx.FileDialog(self, title, '', name, filt, dic[io])
        rst = dialog.ShowModal()
        path = dialog.GetPath() if rst == wx.ID_OK else None
        dialog.Destroy()
        return path


        lang = Source.manager('config').get('language')
        doc = Source.manager('document').get(self.title, tag=lang)
        doc = doc or Source.manager('document').get(tol.title, tag='English')
        self.app.show_md(doc or 'No Document!', self.title)
Ejemplo n.º 17
0
    def show_widget(self, panel, title='Widgets'):
        obj = self.manager('widget').get(panel.title)
        if obj is None:
            obj = panel(self, self)
            self.manager('widget').add(panel.title, obj)
            self.auimgr.AddPane(obj, aui.AuiPaneInfo().Caption(title).Left().Layer( 15 ).PinButton( True )
                .Float().Resizable().FloatingSize( wx.DefaultSize ).Dockable(True)) #.DestroyOnClose())
        lang = Source.manager('config').get('language')
        dic = Source.manager('dictionary').get(obj.title, tag=lang) or {}
        info = self.auimgr.GetPane(obj)
        info.Show(True).Caption(dic[obj.title] if obj.title in dic else obj.title)
        self.translate(dic)(obj)

        self.Layout()
        self.auimgr.Update()
Ejemplo n.º 18
0
 def show_para(self, title, view, para, on_handle=None, on_ok=None, 
     on_cancel=None, on_help=None, preview=False, modal=True):
     lang = Source.manager('config').get('language')
     dic = Source.manager('dictionary').get(name=title, tag=lang)
     doc = Source.manager('document').get(title, tag=lang)
     doc = doc or Source.manager('document').get(title, tag='English')
     on_help = lambda x=doc:self.show_md(x or 'No Document!', title)
     dialog = ParaDialog(self, title)
     dialog.init_view(view, para, preview, modal=modal, app=self)
     self.translate(dic)(dialog)
     dialog.Bind('cancel', on_cancel)
     dialog.Bind('parameter', on_handle)
     dialog.Bind('commit', on_ok)
     dialog.Bind('help', on_help)
     return dialog.show()
Ejemplo n.º 19
0
 def run(self, ips, imgs, para=None):
     fp, fn = os.path.split(para['path'])
     fn, fe = os.path.splitext(fn)
     writer = Source.manager('writer').gets(name=fe[1:].lower(),
                                            tag=self.tag)
     if len(writer) == 1:
         writer[0][1](para['path'], ips.img if self.tag == 'img' else imgs)
Ejemplo n.º 20
0
 def one(cmds, after):
     cmd = cmds.pop(0)
     title, para = cmd.split('>')
     plg = Source.manager('plugin').get(name=title)()
     after = lambda cmds=cmds: one(cmds, one)
     if len(cmds) == 0: after = callafter
     wx.CallAfter(plg.start, self, eval(para), after)
Ejemplo n.º 21
0
def start():
    from skimage.data import camera, astronaut
    import wx.lib.agw.advancedsplash as AS

    app = wx.App(False)
    '''
    bitmap = wx.Bitmap('data/logolong.png', wx.BITMAP_TYPE_PNG)
    shadow = wx.Colour(255,255,255)

    asp = AS.AdvancedSplash(None, bitmap=bitmap, timeout=1000,
        agwStyle=AS.AS_TIMEOUT |
        AS.AS_CENTER_ON_PARENT |
        AS.AS_SHADOW_BITMAP,
        shadowcolour=shadow)
    asp.Update()'''

    uistyle = Source.manager('config').get('uistyle') or 'imagepy'
    frame = ImageJ(None) if uistyle == 'imagej' else ImagePy(None)
    frame.load_menu(extend_plgs(loader.build_plugins('menus')))
    frame.load_tool(extend_tols(loader.build_tools('tools')), 'Transform')
    frame.load_widget(extend_wgts(loader.build_widgets('widgets')))
    frame.Fit()
    #frame.show_img([camera()], 'camera')
    #frame.show_img([astronaut()], 'astronaut')
    frame.Show()
    app.MainLoop()
Ejemplo n.º 22
0
 def run(self, ips, imgs, para = None):
     path = para['path']+'/'+para['name']
     write = Source.manager('writer').get(para['format'])
     print(path)
     for i in range(len(imgs)):
         self.progress(i, len(imgs))
         name = '%s-%.4d.%s'%(path,i,para['format'])
         write(name, imgs[i])
Ejemplo n.º 23
0
 def run(self, ips, imgs, para=None):
     cmap = Source.manager('colormap').get(para['LUT'])
     imglut = color_code(imgs[para['Start image'] - 1:para['End image']],
                         cmap)
     self.app.show_img([imglut], 'Color-coded %s' % ips.title)
     if para['Creatbar']:
         cmapshow = np.ones([32, 256, 3]) * cmap
         self.app.show_img([cmapshow.astype('uint8')], 'Color bar')
Ejemplo n.º 24
0
 def __init__(self):
     for i in Source.manager('plugin').names():
         if not isinstance(i, str) or i == 'Command Line':
             #print(PluginsManager.plgs[i])
             continue
         name = ''.join(list(filter(str.isalnum, i)))
         exec(
             "self.run_%s = lambda para=None, plg=Source.manager('plugin').get(i):plg().start(cmds['app'], para)"
             % name)
Ejemplo n.º 25
0
def extend_plugins(path, lst, err):
    rst = []
    for i in lst:
        if isinstance(i, tuple) or i == '-': rst.append(i)
        elif i[-3:] == 'rpt':
            pt = os.path.join(root_dir, path)
            rst.append(Report(i[:-4], pt + '/' + i))
            # Source.manager('plugin').add(obj=rst[-1], name=rst[-1].title)
        elif i[-3:] in {'.md', '.mc', '.wf'}:
            p = os.path.join(os.path.join(root_dir, path),
                             i).replace('\\', '/')
            rst.append(Macros(i[:-3], ['Open>{"path":"%s"}' % p]))
            # Source.manager('plugin').add(rst[-1].title, rst[-1])
        elif i[-6:] in ['wgt.py', 'gts.py']:
            try:
                rpath = path.replace('/', '.').replace('\\', '.')
                plg = __import__('imagepy.' + rpath + '.' + i[:-3], '', '',
                                 [''])
                if hasattr(plg, 'wgts'):
                    rst.extend(
                        [j if j == '-' else Widget(j) for j in plg.wgts])
                    for p in plg.wgts:
                        if not isinstance(p, str):
                            Source.manager('widget').add(p.title, p)
                else:
                    rst.append(Widget(plg.Plugin))
            except Exception as e:
                err.append((path, i, sys.exc_info()[1]))
        else:
            try:
                rpath = path.replace('/', '.').replace('\\', '.')
                plg = __import__('imagepy.' + rpath + '.' + i[:-3], '', '',
                                 [''])
                if hasattr(plg, 'plgs'):
                    rst.extend([j for j in plg.plgs])
                    for p in plg.plgs:
                        if not isinstance(p, str): pass
                        # Source.manager('plugin').add(p.title, p)
                else:
                    rst.append(plg.Plugin)
                    # Source.manager('plugin').add(plg.Plugin.title, plg.Plugin)
            except Exception as e:
                err.append((path, i, sys.exc_info()[1]))
    return rst
Ejemplo n.º 26
0
 def show_para(self,
               title,
               view,
               para,
               on_handle=None,
               on_ok=None,
               on_cancel=None,
               on_help=None,
               preview=False,
               modal=True):
     lang = Source.manager('config').get('language')
     dic = Source.manager('dictionary').get(name=title, tag=lang)
     dialog = ParaDialog(self, title, dic or {})
     dialog.init_view(view, para, preview, modal=modal, app=self)
     dialog.Bind('cancel', on_cancel)
     dialog.Bind('parameter', on_handle)
     dialog.Bind('commit', on_ok)
     dialog.Bind('help', on_help)
     return dialog.show()
Ejemplo n.º 27
0
 def load(self, ips):
     self.slength = len(ips.imgs)
     self.para['End image'] = self.slength
     self.view = [(list, 'LUT', Source.manager('colormap').names(), str,
                   'LUT', ''),
                  (int, 'Start image', (1, self.slength), 0, 'Start image',
                   '1~%d' % self.slength),
                  (int, 'End image', (2, self.slength), 0, 'End image',
                   'start~%d' % self.slength),
                  (bool, 'Creatbar', 'Creat time color scale bar')]
     return True
Ejemplo n.º 28
0
 def run(self, para=None):
     add_recent(para['path'])
     fp, fn = os.path.split(para['path'])
     fn, fe = os.path.splitext(fn)
     readers = Source.manager('reader').gets(name=fe[1:], tag=self.tag)
     if len(readers) == 0:
         return self.app.alert('no reader found for %s file' % fe[1:])
     if not self.tag is None:
         self.app.show(self.tag, readers[0][1](para['path']), fn)
     else:
         self.app.show(readers[0][2], readers[0][1](para['path']), fn)
Ejemplo n.º 29
0
 def _load_all(self):
     lang = Source.manager('config').get('language')
     dic = Source.manager('dictionary').get('common', tag=lang) or {}
     self.auimgr.GetPane(self.widgets).Caption('Widgets')
     for i in self.auimgr.GetAllPanes():
         i.Caption(dic[i.caption] if i.caption in dic else i.caption)
     self.auimgr.Update()
     plgs, errplg = load_plugins()
     for name, plg in self.flatten(plgs): self.add_plugin(name, plg)
     self.load_menu(plgs)
     dtool = Source.manager('tools').get('default')
     tols, errtol = load_tools()
     self.load_tool(tols, dtool or 'Transform')
     wgts, errwgt = load_widgets()
     self.load_widget(wgts)
     err = errplg + errtol + errwgt
     if len(err)>0:
         err = [('File', 'Name', 'Error')] + err
         cont = '\n'.join(['%-30s\t%-20s\t%s'%i for i in err])
         self.show_txt(cont, 'loading error log')
Ejemplo n.º 30
0
 def run(self, ips, imgs, para = None):
     shp = ips.img.shape[:2]
     imgs = [np.zeros(shp, dtype=np.uint8) for i in range([1, len(imgs)][para['slice']])]
     newips = ImagePlus(imgs, ips.title+'-mark')
     newips.back = ips
     idx = ['None', 'Max', 'Min', 'Mask', '2-8mix', '4-6mix', '5-5mix', '6-4mix', '8-2mix']
     modes = ['set', 'max', 'min', 'msk', 0.2, 0.4, 0.5, 0.6, 0.8]
     newips.lut = Source.manager('colormap').get(para['cm'])
     newips.chan_mode = modes[idx.index(para['mode'])]
     #newips.range = (0, para['n'])
     IPy.show_ips(newips)