From b78e381f389df96bbe1ba5f61372ae4d3680f319 Mon Sep 17 00:00:00 2001 From: Capocchi L Date: Fri, 30 Oct 2020 20:45:43 +0100 Subject: [PATCH 1/2] improve the plot with step and label for y axis --- PlotGUI.py | 34 ++++++++++++++++++++++++++++++++++ SpreadSheet.py | 35 +++++++++++++++++++++++++++-------- new_arch.zip | Bin 0 -> 3754 bytes plugins/state_trajectory.py | 12 ++++++------ 4 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 new_arch.zip diff --git a/PlotGUI.py b/PlotGUI.py index 91be9d4c..77790901 100644 --- a/PlotGUI.py +++ b/PlotGUI.py @@ -30,6 +30,13 @@ _ = wx.GetTranslation +import wx.lib.agw.aui as aui +import matplotlib as mpl + +from matplotlib.backends.backend_wxagg import ( + FigureCanvasWxAgg as FigureCanvas, + NavigationToolbar2WxAgg as NavigationToolbar) + # for spectrum try: from numpy import * @@ -89,6 +96,33 @@ def PlotManager(parent, label, atomicModel, xl, yl): frame.CenterOnParent() frame.Show() +class PlotPanel(wx.Panel): + def __init__(self, parent, id=-1, dpi=None, **kwargs): + wx.Panel.__init__(self, parent, id=id, **kwargs) + self.figure = mpl.figure.Figure(dpi=dpi, figsize=(2, 2)) + self.canvas = FigureCanvas(self, -1, self.figure) + self.toolbar = NavigationToolbar(self.canvas) + self.toolbar.Realize() + + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.Add(self.canvas, 1, wx.EXPAND) + sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND) + self.SetSizer(sizer) + self.SetAutoLayout(True) + +class PlotNotebook(wx.Panel): + def __init__(self, parent, id=-1): + wx.Panel.__init__(self, parent, id=id) + self.nb = aui.AuiNotebook(self) + sizer = wx.BoxSizer() + sizer.Add(self.nb, 1, wx.EXPAND) + self.SetSizer(sizer) + self.SetAutoLayout(True) + + def add(self, name="plot"): + page = PlotPanel(self.nb) + self.nb.AddPage(page, name) + return page.figure class PlotFrame(wx.Frame): def __init__(self, parent=None, id=wx.NewIdRef(), title="Time Plotting"): diff --git a/SpreadSheet.py b/SpreadSheet.py index cb85be78..c0dcb10f 100644 --- a/SpreadSheet.py +++ b/SpreadSheet.py @@ -417,7 +417,7 @@ def OnGraph(self, event): ### globals containt the time and value variables after exec of the statement exec(str(s), globals()) except Exception as info: - sys.stdout.write(info) + sys.stdout.write(str(info)) else: ### if value is a list, we must choose an index to plot amoung the values of the list if isinstance(value, list): @@ -434,8 +434,8 @@ def OnGraph(self, event): if select in range(0,len(value)-1) and not isinstance(value[select], str): data.append((time, float(value[select]))) else: - wx.MessageBox(_('Value to plot must be digit!'), _('Warning'), wx.OK | wx.ICON_WARNING) - break + #wx.MessageBox(_('Value to plot must be digit!'), _('Warning'), wx.OK | wx.ICON_WARNING) + data.append((time, value[select])) ### first if int is digit or if float is digit else: @@ -443,13 +443,32 @@ def OnGraph(self, event): if v.isdigit() or v.replace(".", "", 1).isdigit(): data.append((time,float(value))) else: - wx.MessageBox(_('Type of data should be float or int : %s')%str(value), _('Info')) - break + #wx.MessageBox(_('Type of data should be float or int: %s')%str(value), _('Info')) + data.append((time, value)) if data: - frame = StaticPlot(self, wx.NewIdRef(), title, data) - frame.Center() - frame.Show() + ### if the first value of y is str, we plot with tick in y axe + if isinstance(data[0][-1], str): + x,y = zip(*data) + frame = wx.Frame(self, -1, _('Plotter')) + plotter = PlotNotebook(frame) + axes1 = plotter.add(title).gca() + axes1.set_xlabel(_('Time'), fontsize=16) + axes1.set_ylabel(_('State'), fontsize=16) + axes1.step(x, y) + axes1.grid(True) + axes1.set_title(title) + + #axes2 = plotter.add('figure 2').gca() + #axes2.plot([1, 2, 3, 4, 5], [2, 1, 4, 2, 3]) + + frame.Show() + + ### values of y is digits + else: + frame = StaticPlot(self, wx.NewIdRef(), title, data) + frame.Center() + frame.Show() ##if __name__ == '__main__': ## import builtins diff --git a/new_arch.zip b/new_arch.zip new file mode 100644 index 0000000000000000000000000000000000000000..78bf120295f1a95f5a88f0bad05986fa3dadd10c GIT binary patch literal 3754 zcmcgv+iv5=8FtdNsOBO-fIPr-jZ|`At0Z->Wn>FDvYiNPYn7E(K;fpuh#XO~OOXR| zsH_s?BF~a{*ayf<^tum_tMmc-{WFqm?K(k#1eGmn=0Bh2(`fYM5AS`rN3Wm0|JN6P z`|s=5KmK`dkKTU*?W}*@)T@1d^zjjo@>pfbDX+}z=!7VYJ$m$r9sRy9#)o1dPxrHpp|nwX=A=HkNBKMBXO)@fMY*w1t6hnzkeOlpX_1IbeJ$3iwc01E zyefEpj|}~ORggH3g^~QP+$a}K;04~1?;Qol-1km{e1MrNaNEz43Q(uM6>7^R{te^bbmE^}ru9gW?n4o+FEUa#}>i^-Vx zt*;p}FmuTlc7&i}B^ay4a>m0@Wy*wMqm=24l&y9@&q`BNk;#juBjLI0sJW{Nb2T#2 z6k7Ag{F`sL1hPMxi&8e~gY&D4`r%-BIT#LZ{&BDlLB29Kg~&=pvuWcvE zO@nTI(s}&2{(N}-{N|#5036^AguP=pctePWgJPf}Y!ltlc+0HyZ;Q6gd`Ds9!bL$2 zTqy0iB5?yRlR&(R@n51>ti`ZL6VKAfK@aWvf1_`<7KAzG>Bgo66oq zmR(2z|5reYwXK2LY6&c$v9vh0fiKGCEMAH%auwKhaRV-2vmdBvAx%}RVFW-lR>?v% zHkN0A&T?+ccgP8vsNMwbXK`%75@5JNK>pQSMRTr7o&po+GUhL;((tLod`LU^5?HWC zl~OIL)LsSdfRhqrqwR$#AK!lQ?;q;%f8N{MqxT265Ycd`#b{-}$eIAgD9ZIJEM&s) z090+hGnn>RBf3_vR8}^}VkxGnWFr;5Ol929)6`)c(>{yBa9XLFztrQ3v^rTZ|W?FrViO z>9%ym5{sDWHWUAMuXiEn71JFi8nNyo4*Htb$5`NYg&}471guo|*koVC@rmrBdL9!4 zpWYr;#Pxla5Y?^&Ht+**kCE1(*P<24P0k7>QfPxBCio<_wZeqaeuq8NewQH%|Cmkk z=?h4lu!Q;vv^BUTA(%dH5}&4d^b*Y8ZV#b>?xKqx8yX$>Fc+Ysu@2DESD?39B#J_; zn0xA=!x|G5KY-Iz2gmF(@Njt)m%jUikrOh~W90-DYI!UnmBh)n{I}&>0pwdP$j?-Y zOj~VK#m83547(0X$kq(mVAlmNz*c2|L+p=HHEbOOVt?ZH!k9u$D Date: Sat, 31 Oct 2020 17:44:45 +0100 Subject: [PATCH 2/2] Add local definition for xw 4.1.0 (corrected in 4.1.1 perhaps) --- ControlNotebook.py | 3 +++ LibPanel.py | 3 +++ devsimpy.py | 5 +++-- new_arch.zip | Bin 3754 -> 0 bytes 4 files changed, 9 insertions(+), 2 deletions(-) delete mode 100644 new_arch.zip diff --git a/ControlNotebook.py b/ControlNotebook.py index 713f60ed..0d544ea3 100644 --- a/ControlNotebook.py +++ b/ControlNotebook.py @@ -23,6 +23,9 @@ import wx import os +import gettext +_ = gettext.gettext + from Patterns.Observer import Observer from LibPanel import LibPanel from PropPanel import PropPanel diff --git a/LibPanel.py b/LibPanel.py index 5f0c602c..c596164d 100644 --- a/LibPanel.py +++ b/LibPanel.py @@ -23,6 +23,9 @@ import wx import os +import gettext +_ = gettext.gettext + from LibraryTree import LibraryTree import Menu diff --git a/devsimpy.py b/devsimpy.py index 483fba21..aa26d48e 100644 --- a/devsimpy.py +++ b/devsimpy.py @@ -502,13 +502,15 @@ def Seti18n(self): self.locale.AddCatalogLookupPathPrefix(localedir) self.locale.AddCatalog(domain) - # language config from .devsimpy file if self.language == 'en': + locale.setlocale(locale.LC_ALL, 'en') translation = gettext.translation(domain, localedir, languages=['en']) # English elif self.language =='fr': + locale.setlocale(locale.LC_ALL, 'fr') translation = gettext.translation(domain, localedir, languages=['fr']) # French else: + locale.setlocale(locale.LC_ALL, '') #installing os language by default translation = gettext.translation(domain, localedir, [self.locale.GetCanonicalName()], fallback = True) @@ -2465,7 +2467,6 @@ def OnInit(self): splash = AdvancedSplashScreen(self) splash.Show() - return True def SetExceptionHook(self): diff --git a/new_arch.zip b/new_arch.zip deleted file mode 100644 index 78bf120295f1a95f5a88f0bad05986fa3dadd10c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmcgv+iv5=8FtdNsOBO-fIPr-jZ|`At0Z->Wn>FDvYiNPYn7E(K;fpuh#XO~OOXR| zsH_s?BF~a{*ayf<^tum_tMmc-{WFqm?K(k#1eGmn=0Bh2(`fYM5AS`rN3Wm0|JN6P z`|s=5KmK`dkKTU*?W}*@)T@1d^zjjo@>pfbDX+}z=!7VYJ$m$r9sRy9#)o1dPxrHpp|nwX=A=HkNBKMBXO)@fMY*w1t6hnzkeOlpX_1IbeJ$3iwc01E zyefEpj|}~ORggH3g^~QP+$a}K;04~1?;Qol-1km{e1MrNaNEz43Q(uM6>7^R{te^bbmE^}ru9gW?n4o+FEUa#}>i^-Vx zt*;p}FmuTlc7&i}B^ay4a>m0@Wy*wMqm=24l&y9@&q`BNk;#juBjLI0sJW{Nb2T#2 z6k7Ag{F`sL1hPMxi&8e~gY&D4`r%-BIT#LZ{&BDlLB29Kg~&=pvuWcvE zO@nTI(s}&2{(N}-{N|#5036^AguP=pctePWgJPf}Y!ltlc+0HyZ;Q6gd`Ds9!bL$2 zTqy0iB5?yRlR&(R@n51>ti`ZL6VKAfK@aWvf1_`<7KAzG>Bgo66oq zmR(2z|5reYwXK2LY6&c$v9vh0fiKGCEMAH%auwKhaRV-2vmdBvAx%}RVFW-lR>?v% zHkN0A&T?+ccgP8vsNMwbXK`%75@5JNK>pQSMRTr7o&po+GUhL;((tLod`LU^5?HWC zl~OIL)LsSdfRhqrqwR$#AK!lQ?;q;%f8N{MqxT265Ycd`#b{-}$eIAgD9ZIJEM&s) z090+hGnn>RBf3_vR8}^}VkxGnWFr;5Ol929)6`)c(>{yBa9XLFztrQ3v^rTZ|W?FrViO z>9%ym5{sDWHWUAMuXiEn71JFi8nNyo4*Htb$5`NYg&}471guo|*koVC@rmrBdL9!4 zpWYr;#Pxla5Y?^&Ht+**kCE1(*P<24P0k7>QfPxBCio<_wZeqaeuq8NewQH%|Cmkk z=?h4lu!Q;vv^BUTA(%dH5}&4d^b*Y8ZV#b>?xKqx8yX$>Fc+Ysu@2DESD?39B#J_; zn0xA=!x|G5KY-Iz2gmF(@Njt)m%jUikrOh~W90-DYI!UnmBh)n{I}&>0pwdP$j?-Y zOj~VK#m83547(0X$kq(mVAlmNz*c2|L+p=HHEbOOVt?ZH!k9u$D