From 3f7e31a336efa7836a66d09ef9a37cf653614d54 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 9 Oct 2010 10:45:23 +0300 Subject: [PATCH 1/5] Display optimizations in ItemStats AffectedBy: Stage 1 --- gui/itemStats.py | 58 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/gui/itemStats.py b/gui/itemStats.py index 9f5831e96..a77324e18 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -400,8 +400,12 @@ class ItemAffectedBy (wx.Panel): wx.Panel.__init__ (self, parent) self.stuff = stuff self.item = item + self.toggleView = 1 + self.expand = -1 + mainSizer = wx.BoxSizer(wx.VERTICAL) + self.affectedBy = wx.TreeCtrl(self, style = wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER) mainSizer.Add(self.affectedBy, 1, wx.ALL|wx.EXPAND, 0) @@ -410,8 +414,8 @@ class ItemAffectedBy (wx.Panel): mainSizer.Add( self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer( wx.HORIZONTAL ) - self.totalAttrsLabel = wx.StaticText( self, wx.ID_ANY, u" ", wx.DefaultPosition, wx.DefaultSize, 0 ) - bSizer.Add( self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT) + self.toggleExpandBtn = wx.ToggleButton( self, wx.ID_ANY, u"Expand/collapse", wx.DefaultPosition, wx.DefaultSize, 0 ) + bSizer.Add( self.toggleExpandBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.toggleViewBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer.Add( self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL) @@ -422,11 +426,48 @@ class ItemAffectedBy (wx.Panel): self.refreshBtn.Bind( wx.EVT_BUTTON, self.RefreshTree ) self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleViewMode) + self.toggleExpandBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleExpand) + mainSizer.Add( bSizer, 0, wx.ALIGN_RIGHT) self.SetSizer(mainSizer) self.PopulateTree() self.Layout() + def ExpandCollapseTree(self): + + self.Freeze() + if self.expand == 1: + self.affectedBy.ExpandAll() + else: + try: + self.affectedBy.CollapseAll() + except: + pass + + self.Thaw() + + def ToggleExpand(self,event): + self.expand *= -1 + self.ExpandCollapseTree() + + def ToggleViewTree(self): + self.Freeze() + + root = self.affectedBy.GetRootItem() + child,cookie = self.affectedBy.GetFirstChild(root) + while child.IsOk(): + item,childcookie = self.affectedBy.GetFirstChild(child) + while item.IsOk(): + change = self.affectedBy.GetPyData(item) + display = self.affectedBy.GetItemText(item) + self.affectedBy.SetItemText(item,change) + self.affectedBy.SetPyData(item,display) + item,childcookie = self.affectedBy.GetNextChild(child,childcookie) + + child,cookie = self.affectedBy.GetNextChild(root,cookie) + + self.Thaw() + def UpdateTree(self): self.Freeze() self.affectedBy.DeleteAllItems() @@ -439,7 +480,7 @@ class ItemAffectedBy (wx.Panel): def ToggleViewMode(self, event): self.toggleView *=-1 - self.UpdateTree() + self.ToggleViewTree() event.Skip() def PopulateTree(self): @@ -483,7 +524,7 @@ class ItemAffectedBy (wx.Panel): if counter > 0: for attrName, attrModifier, attrAmount in attrData: attrInfo = self.stuff.item.attributes.get(attrName) - displayName = (attrInfo.displayName if self.toggleView ==1 else attrInfo.name) if attrInfo else "" + displayName = attrInfo.displayName if attrInfo else "" if attrInfo: if attrInfo.icon is not None: @@ -500,5 +541,12 @@ class ItemAffectedBy (wx.Panel): else: penalized = "" - self.affectedBy.AppendItem(child, "%s %s%.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized), attrIcon) + if self.toggleView == 1: + treeitem = self.affectedBy.AppendItem(child, "%s %s%.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized), attrIcon) + self.affectedBy.SetPyData(treeitem,"%s %s%.2f %s" % (attrName, attrModifier, attrAmount, penalized)) + else: + treeitem = self.affectedBy.AppendItem(child, "%s %s%.2f %s" % (attrName, attrModifier, attrAmount, penalized), attrIcon) + self.affectedBy.SetPyData(treeitem,"%s %s%.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized)) + + self.ExpandCollapseTree() From bc0d6d713ca2068327f5ccc16cb96cf67d764c9a Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 9 Oct 2010 10:53:33 +0300 Subject: [PATCH 2/5] Small text display tweaks --- gui/itemStats.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gui/itemStats.py b/gui/itemStats.py index a77324e18..ae5523ba9 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -414,7 +414,7 @@ class ItemAffectedBy (wx.Panel): mainSizer.Add( self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer( wx.HORIZONTAL ) - self.toggleExpandBtn = wx.ToggleButton( self, wx.ID_ANY, u"Expand/collapse", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.toggleExpandBtn = wx.ToggleButton( self, wx.ID_ANY, u"Expand / Collapse", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer.Add( self.toggleExpandBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.toggleViewBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, wx.DefaultSize, 0 ) @@ -542,11 +542,11 @@ class ItemAffectedBy (wx.Panel): penalized = "" if self.toggleView == 1: - treeitem = self.affectedBy.AppendItem(child, "%s %s%.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized), attrIcon) - self.affectedBy.SetPyData(treeitem,"%s %s%.2f %s" % (attrName, attrModifier, attrAmount, penalized)) + treeitem = self.affectedBy.AppendItem(child, "%s %s %.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized), attrIcon) + self.affectedBy.SetPyData(treeitem,"%s %s %.2f %s" % (attrName, attrModifier, attrAmount, penalized)) else: - treeitem = self.affectedBy.AppendItem(child, "%s %s%.2f %s" % (attrName, attrModifier, attrAmount, penalized), attrIcon) - self.affectedBy.SetPyData(treeitem,"%s %s%.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized)) + treeitem = self.affectedBy.AppendItem(child, "%s %s %.2f %s" % (attrName, attrModifier, attrAmount, penalized), attrIcon) + self.affectedBy.SetPyData(treeitem,"%s %s %.2f %s" % ((displayName if displayName != "" else attrName), attrModifier, attrAmount, penalized)) self.ExpandCollapseTree() From 6b8abcd63fce0ab5a3b60588cb6b4fd77873a0b5 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 9 Oct 2010 11:37:08 +0300 Subject: [PATCH 3/5] Fixed ticket #91 --- gui/builtinStatsViews/resourcesViewFull.py | 5 ++-- gui/pygauge.py | 33 ++++++++++++---------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/gui/builtinStatsViews/resourcesViewFull.py b/gui/builtinStatsViews/resourcesViewFull.py index 264adb426..ee417f16f 100644 --- a/gui/builtinStatsViews/resourcesViewFull.py +++ b/gui/builtinStatsViews/resourcesViewFull.py @@ -115,7 +115,8 @@ class ResourcesViewFull(StatsView): # Gauges modif. - Darriele - gauge = PG.PyGauge(parent, wx.ID_ANY, 100) + gauge = PG.PyGauge(parent, wx.ID_ANY, 1) + gauge.SetRange(1,True) gauge.SetMinSize((self.getTextExtentW("1.999M/1.99M MW"), 23)) gauge.SetFractionDigits(2) @@ -173,7 +174,7 @@ class ResourcesViewFull(StatsView): gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) - gauge.SetRange(100) + gauge.SetRange(0.01,True) gauge.SetValue(0) i+=1 diff --git a/gui/pygauge.py b/gui/pygauge.py index d3c58b8c4..538db261f 100644 --- a/gui/pygauge.py +++ b/gui/pygauge.py @@ -66,7 +66,7 @@ class PyGauge(wx.PyWindow): self.SetBackgroundColour(wx.Colour(51,51,51)) self._tooltip = wx.ToolTip("") self.SetToolTip(self._tooltip) - self._tooltip.SetTip("0/100") + self._tooltip.SetTip("0/0") self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) @@ -155,7 +155,7 @@ class PyGauge(wx.PyWindow): self._animStep = 0 self._timer.Start(self._period) - def SetRange(self, range): + def SetRange(self, range, reinit = False): """ Sets the range of the gauge. The gauge length is its value as a proportion of the range. @@ -168,17 +168,20 @@ class PyGauge(wx.PyWindow): range = float(range) - if range <= 0: - self._range = 1 + if reinit is False: + self._oldPercentage = self._percentage + self._percentage = (self._value/self._range) * 100 else: - self._range = range - - self._oldPercentage = self._percentage - self._percentage = (self._value/self._range) * 100 - + self._oldPercentage = self._percentage + self._percentage = 0 + self._value = 0 self.Animate() - self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range)) + if range <= 0: + self._range = 0.01 + else: + self._range = range + self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._range if self._range >0.01 else 0)) def GetValue(self): @@ -321,15 +324,15 @@ class PyGauge(wx.PyWindow): if ((t) < (1/2.75)): return c*(7.5625*t*t) + b - else: + else: if (t < (2/2.75)): t-=(1.5/2.75) - return c*(7.5625*t*t + .75) + b - else: + return c*(7.5625*t*t + .75) + b + else: if (t < (2.5/2.75)): t-=(2.25/2.75) - return c*(7.5625*(t)*t + .9375) + b - else: + return c*(7.5625*(t)*t + .9375) + b + else: t-=(2.625/2.75) return c*(7.5625*(t)*t + .984375) + b From c3e15885fdc9cae30784d471d418934c2366c80c Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 9 Oct 2010 11:47:06 +0300 Subject: [PATCH 4/5] Fixed a weird behaviour (tab changing on wxgtk) in itemstats notebook container --- gui/itemStats.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gui/itemStats.py b/gui/itemStats.py index ae5523ba9..f15b58ebe 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -123,12 +123,18 @@ class ItemStatsContainer ( wx.Panel ): self.affectedby = ItemAffectedBy(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.affectedby, "Affected by") + self.nbContainer.Bind(wx.EVT_LEFT_DOWN, self.mouseHit) self.SetSizer(mainSizer) self.Layout() def __del__( self ): pass + def mouseHit(self, event): + tab, _ = self.nbContainer.HitTest(event.Position) + if tab != -1: + self.nbContainer.SetSelection(tab) + ########################################################################### ## Class AutoListCtrl ########################################################################### From 649acba4ebd2eea2e5b0beb2be312d2498c40b51 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 9 Oct 2010 12:34:07 +0300 Subject: [PATCH 5/5] Made the text inside pygauges a little more bigger (for wxmac) --- gui/pygauge.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gui/pygauge.py b/gui/pygauge.py index 538db261f..fc8548570 100644 --- a/gui/pygauge.py +++ b/gui/pygauge.py @@ -298,8 +298,14 @@ class PyGauge(wx.PyWindow): dc.DrawRectangleRect(r) dc.SetTextForeground(wx.Colour(255,255,255)) - fontLabel = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL) - dc.SetFont(fontLabel) + + if "__WXMAC__" in wx.PlatformInfo : + self.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) + else: + standardFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) + standardFont.SetPointSize(8) + dc.SetFont(standardFont) + formatStr = "{0:." + str(self._fractionDigits) + "f}%" dc.DrawLabel(formatStr.format(value), rect, wx.ALIGN_CENTER)