From 99c2661b4573329f928e50fe0518459bdb9e8516 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sun, 28 Nov 2010 17:31:29 +0200 Subject: [PATCH] Rewritten GetPartialText; moved in util.py --- gui/fleetBrowser.py | 17 +++-------------- util.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index ecbd8bc87..e96dca5fe 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -4,6 +4,7 @@ from gui import bitmapLoader import gui.mainFrame from gui.PFListPane import PFListPane import service.fleet +from util import GetPartialText from wx.lib.buttons import GenBitmapButton @@ -429,12 +430,12 @@ class FleetItem(wx.Window): bdc.SetFont(self.fontBig) fnx,fny = bdc.GetTextExtent(self.fleetName) - pfn = self.GetPartialText(self.fleetName, bdc, self.copyPosX - 16 - self.padding - tx - textStart, 1) + pfn = GetPartialText(bdc, self.fleetName, self.copyPosX - 16 - self.padding - tx - textStart) bdc.DrawText(pfn, textStart, (rect.height/2 - fny) / 2) bdc.SetFont(self.fontSmall) fcx,fcy = bdc.GetTextExtent(fleetCount) - pfc = self.GetPartialText(fleetCount, bdc, self.copyPosX - 16 - self.padding - tx - textStart, 1) + pfc = GetPartialText(bdc, fleetCount, self.copyPosX - 16 - self.padding - tx - textStart) bdc.DrawText(pfc, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) bdc.SetFont(self.fontSmall) @@ -474,18 +475,6 @@ class FleetItem(wx.Window): self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding) - def GetPartialText(self, text, dc , maxWidth, minChars): - textwidths = dc.GetPartialTextExtents(text + "...") - count = 0 - - for i in textwidths: - if i <= maxWidth: - count +=1 - else: - break - - return "%s%s" % (text[:count if count > minChars else minChars], "..." if len(text) > count else "" ) - def AdjustFleetNameEditSize(self, start,end): fnEditSize = self.tcFleetName.GetSize() wSize = self.GetSize() diff --git a/util.py b/util.py index a9d1eb396..21df79ac6 100644 --- a/util.py +++ b/util.py @@ -94,6 +94,37 @@ def fromClipboard(): return None + + +def GetPartialText(dc, text , maxWidth): + ellipsis = "..." + base_w, h = dc.GetTextExtent(ellipsis) + + lenText = len(text) + drawntext = text + w, dummy = dc.GetTextExtent(text) + + while lenText > 1: + + if w + base_w <= maxWidth: + break + + w_c, h_c = dc.GetTextExtent(drawntext[-1]) + drawntext = drawntext[0:-1] + lenText -= 1 + w -= w_c + + while len(ellipsis) > 0 and w + base_w > maxWidth: + ellipsis = ellipsis[0:-1] + base_w, h = dc.GetTextExtent(ellipsis) + if len(text) > lenText: + return drawntext + ellipsis + else: + return text + + + + def set_float(val,default=None): """ utility to set a floating value, useful for converting from strings """ if val in (None,''): return default