예제 #1
0
파일: HgCommon.py 프로젝트: pombreda/decada
def HgCreate(path, **argsdict):
    # src=, , passwd=argsdict.get('passwd', '')
    remote = argsdict.get('remote', '')
    username = Profile_Get('HG_USER', 'str', '')
    uname = argsdict.get('uname', '')
    if username == '' or uname != '':
        username = uname
    passwd = argsdict.get('passwd', '')
    password = Profile_Get('HG_PASSWD', 'str', '')
    if password == '' or passwd != '':
        password = passwd
    repo = HgIface.HgInter(path, src=remote, uname=username, passwd=password)
    return repo
예제 #2
0
 def OnClose(self, event):
     profiler.TheProfile.Write(Profile_Get('MYPROFILE'))
     Deca.world.HgRepository.close()
     event.GetId()
     self._mgr.UnInit()
     del self._mgr
     self.Destroy()
예제 #3
0
파일: HgCommon.py 프로젝트: pombreda/decada
def HgSync(repo, frame, rev=None, insecure=True, do_pull=True):
    status = repo.Local
    repo.SwitchToRemote()
    if repo.User == '':
        dlg = UserPassDlg(frame)
        dlg.DlgLabel = _("Code repository account:")
        if dlg.ShowModal() == wx.ID_OK:
            repo.User = dlg.txtUname.GetValue()
            repo.Password = dlg.txtPassword.GetValue()
            Profile_Set('HG_USER', repo.User)
            Profile_Set('HG_PASSWD', repo.Password)
            repo.reopen()
        dlg.Destroy()
    # and now - time to pull
    remote_repo = Profile_Get('HG_REPOSITORY')
    if remote_repo is None:
        remote_repo = repo.Repo.paths().get('default')
    if remote_repo is None:
        remote_repo = repo.Repo.paths().get('default-push')
    if remote_repo is None:
        dlg = wx.TextEntryDialog(frame, _("Code repository URL:"), _('Push'))
        if dlg.ShowModal() == wx.ID_OK and dlg.GetValue() != '':
            remote_repo = dlg.GetValue()
            Profile_Set('HG_REPOSITORY', remote_repo)
        dlg.Destroy()
    if remote_repo is not None:
        repo.sync(remote_repo, rev=rev, insecure=insecure, do_pull=do_pull)
    if status:
        repo.SwitchToLocal()
예제 #4
0
    def __init__(self, parent):
        """Initialize the Shell"""
        shell.Shell.__init__(self, parent)  #, locals=dict()

        # Get the color scheme to use
        style = Profile_Get(PYSHELL_STYLE)
        if style is None:
            style = Profile_Get('SYNTHEME')

        ed_style.StyleMgr.__init__(self, self.GetStyleSheet(style))

        # Attributes
        self.SetStyleBits(5)
        self._shell_style = style
        mgr = syntax.SyntaxMgr(ed_glob.CONFIG['CACHE_DIR'])
        syn_data = mgr.GetSyntaxData('py')
        synspec = syn_data.SyntaxSpec
        self.SetLexer(wx.stc.STC_LEX_PYTHON)
        self.SetSyntax(synspec)
예제 #5
0
 def OnNewWorld(self, event):
     if Deca.world.Modified:
         resp = wx.MessageBox(_("Do you want to save current work?"),
                              _("Sampo Framework"),
                              wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION)
         if resp == wx.CANCEL:
             return
         if resp == wx.YES:
             self.OnSaveWorld(event)
     while self.nbook.GetPageCount() > 0:
         self.ClosePage(0)
     Deca.CreateWorld()
     profiler.TheProfile.Load(
         os.path.join(ed_glob.CONFIG['PROFILE_DIR'], "default.ppb"))
     profiler.TheProfile.Update()
     if Profile_Get('SHOW_CONSOLE', 'bool', True):
         self.shell.Show()
         self.AddTab(self.shell, self.shell.Title)
     wx.GetApp().ReloadTranslation()
     self.UpdateColors(Profile_Get('SYNTHEME', 'default'))
     self.explorer.UpdateWorldTree()
     self.SetTitle(_('[Untitled] - Sampo Framework'))
예제 #6
0
 def DoSaveWorld(self, event):
     if event.GetId() == self.ID_SaveWorldAs:
         dlg = wx.FileDialog(self,
                             wildcard="DECA files|*.deca|All files|*.*",
                             style=wx.FD_SAVE)
         if dlg.ShowModal() == wx.ID_OK:
             fname = dlg.Path
             if os.path.splitext(fname)[1].lower() != '.deca':
                 fname += '.deca'
             dlg.Destroy()
         else:
             dlg.Destroy()
             return
     else:
         fname = None
     if Deca.world.Initial:
         # request filename
         dlg = wx.FileDialog(self,
                             wildcard="DECA files|*.deca|All files|*.*",
                             style=wx.FD_SAVE)
         if dlg.ShowModal() == wx.ID_OK:
             fname = dlg.Path
             if os.path.splitext(fname)[1].lower() != '.deca':
                 fname += '.deca'
             dlg.Destroy()
         else:
             dlg.Destroy()
             return
     profiler.TheProfile.Write(Profile_Get('MYPROFILE'))
     # save window position
     Profile_Set('WINDOW_POS', self.GetPositionTuple())
     Profile_Set('WINDOW_SIZE', self.GetSizeTuple())
     Profile_Set('WINDOW_STATE', self.IsMaximized())
     Profile_Set('WINDOW_LAYOUT', self._mgr.SavePerspective())
     Profile_Set('HG_USER', Deca.world.HgRepository.User)
     Profile_Set('HG_PASSWD', Deca.world.HgRepository.Password)
     Profile_Set('HG_AUTOFILES', Deca.world.HgRepository.AddRemove)
     # save open tabs
     pg_list = []
     active_idx = self.nbook.GetSelection()
     for idx in range(self.nbook.GetPageCount()):
         pg = self.nbook.GetPage(idx)
         if pg.Tag != "Console":
             pg_list.append((pg.Tag, pg.GetParams(), idx == active_idx))
     Profile_Set('VIEW_PAGES', pg_list)
     Deca.world.Save(fname)
     self.SetTitle(
         _('[%s] - Sampo Framework') %
         os.path.basename(Deca.world.Filename))
예제 #7
0
    def OnPaneViewMenu(self, event):
        if event.IsDropDownClicked():
            tb = event.GetEventObject()
            tb.SetToolSticky(event.GetId(), True)
            # create the popup menu
            cntxMenu = wx.Menu()
            it = cntxMenu.AppendItem(
                wx.MenuItem(cntxMenu, self.ID_ViewExplorer,
                            _("View world &explorer"), wx.EmptyString,
                            wx.ITEM_CHECK))
            if self._mgr.GetPane('explorer').IsShown():
                it.Check(True)
            it = cntxMenu.AppendItem(
                wx.MenuItem(cntxMenu, self.ID_ViewProps,
                            _("View &properties pane"), wx.EmptyString,
                            wx.ITEM_CHECK))
            if self._mgr.GetPane('props').IsShown():
                it.Check(True)
            it = cntxMenu.AppendItem(
                wx.MenuItem(cntxMenu, self.ID_ViewLogger, _("View &logs pane"),
                            wx.EmptyString, wx.ITEM_CHECK))
            if self._mgr.GetPane('logger').IsShown():
                it.Check(True)
            it = cntxMenu.AppendItem(
                wx.MenuItem(cntxMenu, self.ID_ViewConsole, _("View &console"),
                            wx.EmptyString, wx.ITEM_CHECK))
            for idx in range(self.nbook.GetPageCount()):
                pg = self.nbook.GetPage(idx)
                if pg.Tag == 'Console':
                    it.Check(True)
            if not Profile_Get('ALLOW_CONSOLE', 'bool', True):
                it.Enable(False)
            # line up our menu with the button
            rect = tb.GetToolRect(event.GetId())
            pt = tb.ClientToScreen(rect.GetBottomLeft())
            pt = self.ScreenToClient(pt)

            self.PopupMenu(cntxMenu, pos=pt)
            # make sure the button is "un-stuck"
            tb.SetToolSticky(event.GetId(), False)
        pass
예제 #8
0
 def OnContextMenu(self, event):
     upd = False
     if event.GetId() == self.ID_ViewExplorer:
         upd = True
         p = self._mgr.GetPane('explorer')
         if p.IsShown():
             self._mgr.ClosePane(p)
         else:
             p.Show()
     elif event.GetId() == self.ID_ViewProps:
         upd = True
         p = self._mgr.GetPane('props')
         if p.IsShown():
             self._mgr.ClosePane(p)
         else:
             p.Show()
     elif event.GetId() == self.ID_ViewLogger:
         upd = True
         p = self._mgr.GetPane('logger')
         if p.IsShown():
             self._mgr.ClosePane(p)
         else:
             p.Show()
     elif event.GetId() == self.ID_ViewConsole:
         present = False
         for idx in range(self.nbook.GetPageCount()):
             pg = self.nbook.GetPage(idx)
             if pg.Tag == 'Console':
                 self.ClosePage(idx)
                 Profile_Set('SHOW_CONSOLE', False)
                 present = True
                 break
         self.nbook.Update()
         if not present and Profile_Get('ALLOW_CONSOLE', 'bool', True):
             self.shell.Show()
             self.AddTab(self.shell, self.shell.Title)
             Profile_Set('SHOW_CONSOLE', True)
     if upd:
         self._mgr.Update()
예제 #9
0
    def __init__(self,
                 parent,
                 title="",
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.DEFAULT_FRAME_STYLE | wx.SUNKEN_BORDER
                 | wx.CLIP_CHILDREN):

        self.log = wx.GetApp().GetLog()
        #self.log.write("Images will now be provided by SampoArt\n")
        wx.ArtProvider.PushProvider(ed_art.EditraArt())

        wx.Frame.__init__(self, parent, wx.ID_ANY, title, pos, size, style)

        self._perspectives = []
        self.n = 0
        self.x = 0

        util.SetWindowIcon(self)

        self.style = Profile_Get('SYNTHEME', 'str', 'default')
        self.statusbar = self.CreateStatusBar(3)  #, wx.ST_SIZEGRIP
        self.statusbar.SetStatusWidths([-1, 24, 150])
        self.statusbar.SetStatusText(_("Welcome To Sampo Framework"), 0)
        self._status_icon = wx.StaticBitmap(
            self.statusbar, wx.ID_ANY,
            wx.Image(os.path.join("pixmaps", "ledgray.png")).ConvertToBitmap())
        self._gauge = wx.Gauge(self.statusbar, wx.ID_ANY)
        self._gauge.SetRange(100)

        # tell FrameManager to manage this frame
        self._mgr = aui.AuiManager()
        self._mgr.SetManagedWindow(self)

        #   Open sub-menu
        self._open_menu = wx.Menu()
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_FOLDER), wx.ART_MENU,
                                        wx.Size(16, 16))
        mi = self._open_menu.AppendItem(
            wx.MenuItem(self._open_menu, self.ID_OpenWorldFile,
                        _("&Open world")))
        mi.SetBitmap(tbmp)
        self._open_menu.AppendItem(
            wx.MenuItem(self._open_menu, self.ID_OpenWorldMerge,
                        _("Merge with another world")))
        self._open_menu.AppendItem(
            wx.MenuItem(self._open_menu, self.ID_OpenWorldReduced,
                        _("Open world without restoring views")))

        self._save_menu = wx.Menu()
        self._save_menu.AppendItem(
            wx.MenuItem(self._save_menu, self.ID_SaveWorld, _("&Save world")))
        self._save_menu.AppendItem(
            wx.MenuItem(self._save_menu, self.ID_SaveWorldAs,
                        _("Save world &as...")))
        # min size for the frame itself isn't completely done.
        # see the end up FrameManager::Update() for the test
        # code. For now, just hard code a frame minimum size
        self.SetMinSize(wx.Size(400, 300))

        # create some toolbars
        tb1 = aui.AuiToolBar(self, -1)
        tb1.SetToolBitmapSize(wx.Size(16, 16))
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_NEW), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_CreateWorld, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("New world"), _("Create new empty world"), None)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_FOLDER), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_OpenWorld, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("Open world"), _("Open world from storage"), None)
        tb1.SetToolDropDown(self.ID_OpenWorld, True)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_SAVE), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_SaveWorld, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("Save world"), _("Save world to storage"), None)
        tb1.SetToolDropDown(self.ID_SaveWorld, True)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_PREF), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_Settings, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("Options"), _("Tune the framework"), None)
        tb1.AddSeparator()
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_LAYER),
                                        wx.ART_MENU, wx.Size(16, 16))
        tb1.AddTool(Explorer.expPanel.ID_AddLayer, '', tbmp,
                    tbmp, wx.ITEM_NORMAL, _("Add layer"),
                    _("Create new empty layer"), None)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_IMAGES),
                                        wx.ART_MENU, wx.Size(16, 16))
        tb1.AddTool(self.ID_ImageLib, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("Images"), _("Edit images library"), None)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_DECA_ENGINE),
                                        wx.ART_MENU, wx.Size(16, 16))
        tb1.AddTool(Explorer.expPanel.ID_RefreshEngines, '', tbmp, tbmp,
                    wx.ITEM_NORMAL, _("Reload engines"),
                    _("Rebuild engines tree and reinitialize packages"), None)
        tb1.AddSeparator()
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_COMPUTER), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_ViewMenu, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("View"), _("Select visible components"), None)
        tb1.SetToolDropDown(self.ID_ViewMenu, True)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_HELP), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_HelpView, '', tbmp, tbmp, wx.ITEM_NORMAL,
                    _("Help"), _("Show the help browser"), None)
        tbmp = wx.ArtProvider_GetBitmap(str(ed_glob.ID_ABOUT), wx.ART_MENU,
                                        wx.Size(16, 16))
        tb1.AddTool(self.ID_About, '', tbmp, tbmp, wx.ITEM_NORMAL, _("About"),
                    _("About the framework"), None)
        tb1.Realize()

        self.tb2 = None

        # add a bunch of panes
        self.propgrid = PropertySheet.PropGridPanel(self)
        self._mgr.AddPane(
            self.propgrid,
            aui.AuiPaneInfo().Name("props").Caption(
                "Properties").Right().CloseButton(True).MaximizeButton(True))
        self.propgrid.SetPropObject(Deca.world)
        self.explorer = Explorer.expPanel(self, wx.Point(0, 0),
                                          wx.Size(160, 250))
        self.explorer.UpdateWorldTree()
        self._mgr.AddPane(
            self.explorer,
            aui.AuiPaneInfo().Name("explorer").Caption("World").Left().Layer(
                1).Position(1).CloseButton(True).MaximizeButton(True))

        self.logger = Logger.LogView(self)
        self._mgr.AddPane(
            self.logger,
            aui.AuiPaneInfo().Name("logger").Caption("Logs & Messages").Bottom(
            ).Layer(1).Position(1).CloseButton(True).MaximizeButton(True))
        self.log.Frame = self.logger

        # create some center panes
        self.nbook = aui.AuiNotebook(self)
        self.shell = PyShellView(self.nbook)
        if Profile_Get('ALLOW_CONSOLE', 'bool', True):
            self.AddTab(self.shell, self.shell.Title)
        self.UpdateIndexes()

        self._mgr.AddPane(self.nbook,
                          aui.AuiPaneInfo().Name("notebook").CenterPane())

        # add the toolbars to the manager

        self._mgr.AddPane(
            tb1,
            aui.AuiPaneInfo().Name("tb1").Caption("MainToolbar").ToolbarPane().
            Top().Row(0).Position(0).LeftDockable(False).RightDockable(False))

        # make some default perspectives

        perspective_all = self._mgr.SavePerspective()

        all_panes = self._mgr.GetAllPanes()

        for ii in xrange(len(all_panes)):
            all_panes[ii].MinimizeMode(aui.AUI_MINIMIZE_CAPT_SMART
                                       | (all_panes[ii].GetMinimizeMode()
                                          & aui.AUI_MINIMIZE_POS_MASK))
            if not all_panes[ii].IsToolbar():
                all_panes[ii].Hide()

        self._mgr.GetPane("props").Show()
        self._mgr.GetPane("explorer").Show().Left().Layer(0).Row(0).Position(0)
        self._mgr.GetPane("logger").Show().Bottom().Layer(0).Row(0).Position(0)
        self._mgr.GetPane("notebook").Show()

        perspective_default = self._mgr.SavePerspective()

        self._perspectives.append(perspective_default)
        self._perspectives.append(perspective_all)

        # "commit" all changes made to FrameManager
        self._mgr.Update()

        #self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
        self.sizeChanged = False
        self.Bind(wx.EVT_SIZE, self.OnSize)
        self.Bind(wx.EVT_IDLE, self.OnIdle)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnPageClose)

        # Show How To Use The Closing Panes Event
        self.Bind(aui.EVT_AUI_PANE_CLOSE, self.OnPaneClose)

        self.Bind(wx.EVT_MENU, self.OnNewWorld, id=self.ID_CreateWorld)
        self.Bind(wx.EVT_MENU, self.DoOpenWorld, id=self.ID_OpenWorldFile)
        self.Bind(wx.EVT_MENU, self.DoOpenWorld, id=self.ID_OpenWorldReduced)
        self.Bind(wx.EVT_MENU, self.DoOpenWorld, id=self.ID_OpenWorldMerge)
        self.Bind(aui.EVT_AUITOOLBAR_TOOL_DROPDOWN,
                  self.OnOpenWorld,
                  id=self.ID_OpenWorld)
        self.Bind(wx.EVT_MENU, self.DoSaveWorld, id=self.ID_SaveWorld)
        self.Bind(aui.EVT_AUITOOLBAR_TOOL_DROPDOWN,
                  self.OnSaveWorld,
                  id=self.ID_SaveWorld)
        self.Bind(wx.EVT_MENU, self.DoSaveWorld, id=self.ID_SaveWorldAs)

        self.Bind(wx.EVT_MENU, self.OnSettings, id=self.ID_Settings)
        self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
        self.Bind(wx.EVT_MENU, self.OnAbout, id=self.ID_About)
        self.Bind(wx.EVT_MENU, self.OnHelpView, id=self.ID_HelpView)
        self.Bind(wx.EVT_MENU, self.OnImageLib, id=self.ID_ImageLib)
        self.Bind(wx.EVT_MENU,
                  self.OnNewLayer,
                  id=Explorer.expPanel.ID_AddLayer)
        self.Bind(wx.EVT_MENU,
                  self.OnRefreshWorld,
                  id=Explorer.expPanel.ID_RefreshEngines)

        #self.Bind(wx.EVT_MENU, self.OnContextMenu, id=self.ID_ViewMenu)
        self.Bind(aui.EVT_AUITOOLBAR_TOOL_DROPDOWN,
                  self.OnPaneViewMenu,
                  id=self.ID_ViewMenu)
        self.Bind(wx.EVT_MENU, self.OnContextMenu, id=self.ID_ViewExplorer)
        self.Bind(wx.EVT_MENU, self.OnContextMenu, id=self.ID_ViewProps)
        self.Bind(wx.EVT_MENU, self.OnContextMenu, id=self.ID_ViewLogger)
        self.Bind(wx.EVT_MENU, self.OnContextMenu, id=self.ID_ViewConsole)

        self.Bind(wx.EVT_MENU,
                  self.DispatchToControl,
                  id=ed_glob.ID_SHOW_AUTOCOMP)
        self.Bind(wx.EVT_MENU, self.DispatchToControl, id=wx.ID_SAVE)
        self.Bind(wx.EVT_MENU, self.DispatchToControl, id=wx.ID_OPEN)
        self.Bind(wx.EVT_MENU, self.DispatchToControl, id=wx.ID_FIND)
        accel_tbl = wx.AcceleratorTable([
            (wx.ACCEL_CTRL, ord(' '), ed_glob.ID_SHOW_AUTOCOMP),
            (wx.ACCEL_CTRL, ord('Q'), wx.ID_EXIT),
            (wx.ACCEL_CTRL, ord('S'), wx.ID_SAVE),
            (wx.ACCEL_CTRL, ord('O'), wx.ID_OPEN),
            (wx.ACCEL_CTRL, ord('F'), wx.ID_FIND)
        ])
        self.SetAcceleratorTable(accel_tbl)
        self.UpdateColors(self.style)
        wx.CallAfter(self._FixTbarsView)
예제 #10
0
    def DoOpenWorld(self, event):
        evt_id = event.GetId()
        if evt_id == self.ID_OpenWorldFile or evt_id == self.ID_OpenWorldReduced:
            if Deca.world.Modified:
                resp = wx.MessageBox(_("Do you want to save current work?"),
                                     _("Sampo Framework"),
                                     wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION)
                if resp == wx.CANCEL:
                    return
                if resp == wx.YES:
                    self.OnSaveWorld(event)
            # request filename
            dlg = wx.FileDialog(self,
                                wildcard="DECA files|*.deca|All files|*.*",
                                style=wx.FD_OPEN)
            if dlg.ShowModal() == wx.ID_OK:
                while self.nbook.GetPageCount() > 0:
                    self.ClosePage(0)
                self.nbook.Update()
                Deca.CreateWorld(dlg.Path)
                profiler.TheProfile.Load(
                    os.path.join(ed_glob.CONFIG['PROFILE_DIR'], "default.ppb"))
                wx.GetApp().ReloadTranslation()
                profiler.TheProfile.Update()
                if Deca.world.HgRepository.User == '':
                    Deca.world.HgRepository.User = Profile_Get(
                        'HG_USER', 'str', '')
                    Deca.world.HgRepository.Password = Profile_Get(
                        'HG_PASSWD', 'str', '')
                    Deca.world.HgRepository.reopen()
                try:
                    HgCommon.HgSync(Deca.world.HgRepository, None)
                    Deca.world.HgRepository.SwitchToLocal()
                    if Deca.world.HgRepository.IsWdChanged:
                        Deca.world.HgRepository.commit(
                            'Automatic sync to server on startup')
                except Exception as cond:
                    self.log("[Source control][err] Synchronize failed: %s" %
                             cond)
                finally:
                    Deca.world.HgRepository.SwitchToLocal()

                if Profile_Get('SHOW_CONSOLE', 'bool', True):
                    self.shell.Show()
                    self.AddTab(self.shell, self.shell.Title)
                if evt_id == self.ID_OpenWorldFile:
                    pg_list = Profile_Get('VIEW_PAGES', 'list', [])
                    for pg in pg_list:
                        tag = pg[0]
                        #self.log("[DoOpenWorld][dbg] page = %s" % str(pg))
                        if tag == "Text":
                            fn = ''
                            if pg[1][1] == ScEditor.EditorPanel.ED_TypeScript:
                                fn = os.path.join(Deca.world.EnginesPath,
                                                  pg[1][0])
                            elif pg[1][
                                    1] == ScEditor.EditorPanel.ED_TypeReport:
                                fn = os.path.join(Deca.world.ReportsPath,
                                                  pg[1][0])
                            if os.path.exists(fn):
                                self.CreateTextWindow(fn,
                                                      pg[1][1],
                                                      activate=pg[2])
                        elif tag == "Text Shape":
                            fn = os.path.join(Deca.world.ShapesPath, pg[1])
                            if os.path.exists(fn):
                                px = ShapeEdPanel(self)
                                px.tx.LoadFile(fn)
                                ttl = px.tx.GetTitleString()
                                self.AddTab(px, ttl, active=pg[2])
                        elif tag == "Graph":
                            px = ScGraph.GraphPanel(pg[1], self)
                            self.AddTab(px, pg[1], active=pg[2])
                        elif tag == "Repo":
                            px = ObjRepo.RepositoryPanel(self)
                            self.AddTab(px, px.Title, active=pg[2])
                        elif tag == "RepoView":
                            px = RepoView.RepoView(self)
                            self.AddTab(px, px.Title, active=pg[2])
                        elif tag == "HtmlView":
                            px = HtmlView.HtmlPanel(self)
                            self.AddTab(px, px.Title, active=pg[2])
                        elif tag == "ImgView":
                            px = ObjRepo.RepositoryPanel(self)
                            self.AddTab(px, px.Title, active=pg[2])
                    # for each saved page
                # if need to restore pages
                self.UpdateColors(Profile_Get('SYNTHEME', default='default'))
                self.explorer.UpdateWorldTree()
                # restore window position
                pdata = Profile_Get('WINDOW_STATE', default=False)
                self.Maximize(pdata)
                pdata = Profile_Get('WINDOW_POS')  #, default=None
                if pdata:
                    self.SetPosition(pdata)
                pdata = Profile_Get('WINDOW_SIZE')  #, default=None
                if pdata:
                    self.SetSize(pdata)
                pdata = Profile_Get('WINDOW_LAYOUT')  #, default=None
                if pdata:
                    self._mgr.LoadPerspective(pdata)
                Deca.world.HgRepository.User = Profile_Get('HG_USER', '')
                Deca.world.HgRepository.Password = Profile_Get('HG_PASSWD', '')
                Deca.world.HgRepository.AddRemove = Profile_Get(
                    'HG_AUTOFILES', '')
                self.SetTitle(
                    _('[%s] - Sampo Framework') %
                    os.path.basename(Deca.world.Filename))
            # if file selected
            dlg.Destroy()
        elif evt_id == self.ID_OpenWorldMerge:
            wx.MessageBox(_("Not implemented yet!"), _("Sampo Framework"))
        else:
            event.Skip()
예제 #11
0
파일: RepoOpts.py 프로젝트: pombreda/decada
    def __init__(self, parent):
        wx.Dialog.__init__(self,
                           parent,
                           id=wx.ID_ANY,
                           title=_("Repository paramenters"),
                           pos=wx.DefaultPosition,
                           size=wx.Size(399, 222),
                           style=wx.CAPTION | wx.CLOSE_BOX | wx.RESIZE_BORDER
                           | wx.SYSTEM_MENU)

        self.SetSizeHintsSz(wx.DefaultSize, maxSize=wx.DefaultSize)

        bSizer = wx.BoxSizer(wx.VERTICAL)

        gbSizer = wx.GridBagSizer(0, 0)
        gbSizer.AddGrowableCol(1)
        gbSizer.AddGrowableRow(4)
        gbSizer.SetFlexibleDirection(wx.BOTH)
        gbSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)

        self.stURL = wx.StaticText(self, wx.ID_ANY, _("Repo URL"),
                                   wx.DefaultPosition, wx.DefaultSize, 0)
        self.stURL.Wrap(-1)
        gbSizer.Add(self.stURL,
                    pos=wx.GBPosition(0, 0),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                    border=5)

        self.txtURL = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                  wx.DefaultPosition, wx.DefaultSize, 0)
        gbSizer.Add(self.txtURL,
                    pos=wx.GBPosition(0, 1),
                    span=wx.GBSpan(1, 2),
                    flag=wx.ALL | wx.EXPAND,
                    border=2)

        self.stUname = wx.StaticText(self, wx.ID_ANY, _("Username"),
                                     wx.DefaultPosition, wx.DefaultSize, 0)
        self.stUname.Wrap(-1)
        gbSizer.Add(self.stUname,
                    pos=wx.GBPosition(1, 0),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                    border=5)

        self.txtUname = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                    wx.DefaultPosition, wx.DefaultSize, 0)
        gbSizer.Add(self.txtUname,
                    pos=wx.GBPosition(1, 1),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALL | wx.EXPAND,
                    border=2)

        self.stPasswd = wx.StaticText(self, wx.ID_ANY, _("Password"),
                                      wx.DefaultPosition, wx.DefaultSize, 0)
        self.stPasswd.Wrap(-1)
        gbSizer.Add(self.stPasswd,
                    pos=wx.GBPosition(2, 0),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                    border=5)

        self.txtPasswd = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString,
                                     wx.DefaultPosition, wx.DefaultSize,
                                     wx.TE_PASSWORD)
        gbSizer.Add(self.txtPasswd,
                    pos=wx.GBPosition(2, 1),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALL | wx.EXPAND,
                    border=2)

        self.stStatus = wx.StaticText(self, wx.ID_ANY, ("Status"),
                                      wx.DefaultPosition, wx.DefaultSize, 0)
        self.stStatus.Wrap(-1)
        gbSizer.Add(self.stStatus,
                    pos=wx.GBPosition(3, 0),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                    border=5)

        self.txtStatus = wx.StaticText(self, wx.ID_ANY, _("Unknown"),
                                       wx.DefaultPosition, wx.DefaultSize, 0)
        self.txtStatus.Wrap(-1)
        gbSizer.Add(self.txtStatus,
                    pos=wx.GBPosition(3, 1),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL,
                    border=5)

        self.btnCheck = wx.Button(self, wx.ID_ANY, _("Check"),
                                  wx.DefaultPosition, wx.DefaultSize, 0)
        gbSizer.Add(self.btnCheck,
                    pos=wx.GBPosition(3, 2),
                    span=wx.GBSpan(1, 1),
                    flag=wx.ALL,
                    border=2)

        bSizer.Add(gbSizer, proportion=1, flag=wx.EXPAND, border=5)

        sdbSizer = wx.StdDialogButtonSizer()
        self.sdbSizerOK = wx.Button(self, wx.ID_OK)
        sdbSizer.AddButton(self.sdbSizerOK)
        self.sdbSizerCancel = wx.Button(self, wx.ID_CANCEL)
        sdbSizer.AddButton(self.sdbSizerCancel)
        sdbSizer.Realize()
        bSizer.Add(sdbSizer, proportion=0, flag=wx.ALL | wx.EXPAND, border=5)

        self.SetSizer(bSizer)
        self.Layout()

        self.Centre(wx.BOTH)

        # Connect Events
        self.btnCheck.Bind(wx.EVT_BUTTON, self.OnCheck)
        self.sdbSizerOK.Bind(wx.EVT_BUTTON, self.OnOK)

        # Fill data
        data = Profile_Get('HG_REPOSITORY', 'str', '')
        self.txtURL.SetValue(data)
        data = Profile_Get('HG_USER', 'str', '')
        self.txtUname.SetValue(data)
        data = Profile_Get('HG_PASSWD', 'str', '')
        self.txtPasswd.SetValue(data)
예제 #12
0
파일: HgCommon.py 프로젝트: pombreda/decada
def HgPush(repo, frame, force=False, insecure=True):
    status = repo.Local
    repo.SwitchToLocal()
    message = ''
    if repo.User == '':
        dlg = UserPassDlg(frame)
        dlg.DlgLabel = _("Code repository account:")
        if dlg.ShowModal() == wx.ID_OK:
            repo.User = dlg.txtUname.GetValue()
            repo.Password = dlg.txtPassword.GetValue()
            Profile_Set('HG_USER', repo.User)
            Profile_Set('HG_PASSWD', repo.Password)
            repo.reopen()
        dlg.Destroy()
    if repo.IsWdChanged:
        dlg = wx.TextEntryDialog(frame, _("Describe revision:"), _('Commit'))
        dlg.SetValue("Auto-commit")
        if dlg.ShowModal() == wx.ID_OK and dlg.GetValue() != '':
            message = dlg.GetValue()
            try:
                repo.commit(message)
            except Exception as cond:
                wx.GetApp().log("[SourceControl] err: %s" % cond)
            # committed
            dlg.Destroy()
        else:
            dlg.Destroy()
            if not status:
                repo.SwitchToRemote()
            return
    repo.SwitchToRemote()
    if repo.IsWdChanged:
        if message == '':
            dlg = wx.TextEntryDialog(frame, _("Describe revision:"),
                                     _('Commit'))
            dlg.SetValue("Auto-commit")
            if dlg.ShowModal() == wx.ID_OK and dlg.GetValue() != '':
                message = dlg.GetValue()
                dlg.Destroy()
            else:
                if status:
                    repo.SwitchToLocal()
                dlg.Destroy()
                return
        try:
            repo.commit(message)
        except Exception as cond:
            wx.GetApp().log("[SourceControl] err: %s" % cond)
        # committed
    # and now - time to push
    remote_repo = Profile_Get('HG_REPOSITORY')
    if remote_repo is None:
        remote_repo = repo.Repo.paths().get('default')
    if remote_repo is None:
        remote_repo = repo.Repo.paths().get('default-push')
    if remote_repo is None:
        dlg = wx.TextEntryDialog(frame, _("Code repository URL:"), _('Push'))
        if dlg.ShowModal() == wx.ID_OK and dlg.GetValue() != '':
            remote_repo = dlg.GetValue()
            Profile_Set('HG_REPOSITORY', remote_repo)
        dlg.Destroy()
    if remote_repo is not None:
        repo.push(remote_repo, force=force, insecure=insecure)
    if status:
        repo.SwitchToLocal()