From 60b48030dd0388c332c97b29d31fe5d889f084fe Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 23 Nov 2010 18:45:50 +0200 Subject: [PATCH 1/6] Always adjust fleet name text edit ctrl size/position, this fixes a weird behaviour on wxgtk when the textctrl is shown for the first time(textctrl IsShown() returns False right after we show it ?) --- gui/fleetBrowser.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 3ded27b59..5bb76706e 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -451,17 +451,16 @@ class FleetItem(wx.Window): self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding) def AdjustFleetNameEditSize(self, start,end): - if self.tcFleetName.IsShown(): - fnEditSize = self.tcFleetName.GetSize() - wSize = self.GetSize() - fnEditPosX = end - fnEditPosY = (wSize.height - fnEditSize.height)/2 - if fnEditPosX < start: - self.tcFleetName.SetSize((self.editWidth + fnEditPosX - start,-1)) - self.tcFleetName.SetPosition((start,fnEditPosY)) - else: - self.tcFleetName.SetSize((self.editWidth,-1)) - self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY)) + fnEditSize = self.tcFleetName.GetSize() + wSize = self.GetSize() + fnEditPosX = end + fnEditPosY = (wSize.height - fnEditSize.height)/2 + if fnEditPosX < start: + self.tcFleetName.SetSize((self.editWidth + fnEditPosX - start,-1)) + self.tcFleetName.SetPosition((start,fnEditPosY)) + else: + self.tcFleetName.SetSize((self.editWidth,-1)) + self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY)) def OnEditLostFocus(self, event): From 5bc15ddd44fac02328d7af582e9008c2fb7fc1ab Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 23 Nov 2010 19:21:04 +0200 Subject: [PATCH 2/6] Moar ICONZ --- gui/fleetBrowser.py | 8 +++++--- icons/fleet_item_big.png | Bin 0 -> 1813 bytes 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 icons/fleet_item_big.png diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 5bb76706e..eb196c17d 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -257,6 +257,7 @@ class FleetItem(wx.Window): self.renameBmp = bitmapLoader.getBitmap("fit_rename_small", "icons") self.deleteBmp = bitmapLoader.getBitmap("fit_delete_small","icons") self.acceptBmp = bitmapLoader.getBitmap("faccept_small", "icons") + self.fleetBmp = bitmapLoader.getBitmap("fleet_item_big", "icons") self.copyBmpGrey = self.GreyBitmap(self.copyBmp) self.renameBmpGrey = self.GreyBitmap(self.renameBmp) @@ -396,18 +397,20 @@ class FleetItem(wx.Window): bdc.SetTextForeground(wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )) bdc.Clear() + bdc.DrawBitmap(self.fleetBmp, 0, (rect.height - self.fleetBmp.GetHeight())/2) + textStart = self.padding + self.fleetBmp.GetWidth() suffix = "%d ships" % self.fleetCount if self.fleetCount >1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships" fleetCount = "Fleet size: %s" % suffix bdc.SetFont(self.fontBig) fnx,fny = bdc.GetTextExtent(self.fleetName) - bdc.DrawText(self.fleetName, self.padding, (rect.height/2 - fny)/2) + bdc.DrawText(self.fleetName, textStart, (rect.height/2 - fny)/2) bdc.SetFont(self.fontSmall) fcx,fcy = bdc.GetTextExtent(fleetCount) - bdc.DrawText(fleetCount, self.padding, rect.height/2 + (rect.height/2 -fcy) / 2 ) + bdc.DrawText(fleetCount, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) btnWidth,btnHeight = self.btnSize self.deletePosX = rect.width - btnWidth - self.padding self.renamePosX = self.deletePosX - btnWidth @@ -447,7 +450,6 @@ class FleetItem(wx.Window): bdc.DrawBitmap(self.renameBmpGrey, self.renamePosX + 1, self.renamePosY + 1 ) bdc.DrawBitmap(self.deleteBmpGrey, self.deletePosX + 1, self.deletePosY + 1 ) - textStart = self.padding self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding) def AdjustFleetNameEditSize(self, start,end): diff --git a/icons/fleet_item_big.png b/icons/fleet_item_big.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4817263b63398bb732b4c826452220391b795b GIT binary patch literal 1813 zcmV+w2kQ8VP)EbtL^EL$iBS_`D>YR_M?vJZi+~F(EV6gs_kR6j*GLl53Ngv_%-p#% zXU;jl^Z0$|yBGL>7n-8zZ{+_?oYjCjmyq1=ErC=ZEeeQ=1LD8)1QLKm4G;+cCcwl3 z?01#`%P?#Tkh0ifS@QJrTX!j0Ceo--B+n%lGZ!b5LXo;EJ9~BQyGQq38@iUx(NwPc zhV`>ijvo;kOD706)#n z{&{!DIlskhBwC=&L{mr7jXI%b<4Ur#yy${nAvb($;3au^>+XWJt2F{>iw2|-VBmoykPYOrfR5vN`VaMos@pqTO?&nobjJq76Ecb1a83#`Hza-G z3QLA-aI7=n^7N|#?-VfQ1zdAZ;798#wvBb$2Iq;QUM`d2rN92=*|x3=nS1sfbjSI{ z#^R+*6>EQ7QE;W@;wKKr9o`M1UtDT2V_@WxTk!Tq18O!Qjx{7FEwhg}Zq7CVW=GAM zroIpUd71^N!ct4kRfl!uE3dsB0xvG+Uuk%2ZJ+H*0>e-VgB`YJ$M_w2k9|x(><^}@ z1@C(-KtGXV+I(*4wrsB$P*T)x{(v5K%xh#VKOv~AeO>ftK&=DU7-+Sog zsx{>m?9Sb<2Yno4D0y^ArOXrfWU_zcyk^9CfB*~u=(1-vE>B;e&%xK+6<_E;swsJ4 z_4=wRieetxym`acy!3gQGBFry(9KtA;+0uJf52wW$ye+>^m5hu>MgA8y0twpU8VD9O&-5`XB zU#S`Z7pIMUanG+e1&3{yiNoGTc0E^3N*8AeMRM+~EtcFjy05nc?ry;};MFu>|MW%l zvx=gQQU$+zLrHG$hmEfjLMBM#;l1Q18_Gz$F7h;h%;}w<-T@kbTJZR6xB7=Y&e5J_ zzk1;%baq)G9~f!KOquVfedG7rHf?!^vt74d)&gfVJU^;cM|iv*-<0U`4&R!bN{!L$ z5_y)AT*$Q?x{`7d#!fd8W?lR z6*4GOlZv~BMs#bQc#5%Iw_er(XCi z+h>)JOdi$(XB5Ct1Ylj1Wm*Udkut!p0(v=7>esphhtqoh-fv62>@%uwu-QCPS{5o)+GVR01!O`_dZWR z77n5ckB15y%fo?`08A7`tvdSWeS;=rEQyYcAgh+=_*jO196$M+lM3k9$Xr zOp6`-l5S2S+rDkxd4{GM0n`GhRVw%cg%(p=xP#PxcmJZy$`}BpQp)p1QF_GV^$!4W zBUF`|V;Pw!Nf#uEbYT`1&NcxWKny~&rV#qz2m;U}G~-?XPE1=g|4U~3H$x#b!`lGv zAoQ_85bA^qA^yxd;B4)=@H>Eel~M>1nuK-tJ%axLc$Kr}E5cjv00000NkvXXu0mjf D;;~lN literal 0 HcmV?d00001 From e3bdeb0fc65c048577e193e8732aff01ad1fc7dc Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 23 Nov 2010 19:57:09 +0200 Subject: [PATCH 3/6] Implemented show rename ctrl on new/copy --- gui/fleetBrowser.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index eb196c17d..0c8d0f8ec 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -40,6 +40,7 @@ class FleetBrowser(wx.Panel): self.Layout() self.filter = "" + self.fleetIDMustEditName = -1 self.Bind(wx.EVT_SIZE, self.SizeRefreshList) @@ -56,6 +57,7 @@ class FleetBrowser(wx.Panel): newFleet = self.sFleet.addFleet() self.sFleet.renameFleet(newFleet, fleetName) + self.fleetIDMustEditName = newFleet.ID self.AddItem(newFleet.ID, newFleet.name, newFleet.count()) def SelectFleetItem(self, event): @@ -70,6 +72,7 @@ class FleetBrowser(wx.Panel): fleetName = fleet.name + " Copy" self.sFleet.renameFleet(fleet,fleetName) + self.fleetIDMustEditName = fleet.ID self.AddItem(fleet.ID, fleet.name, fleet.count()) self.fleetItemContainer.SelectWidgetByFleetID(fleet.ID) @@ -237,6 +240,7 @@ class FleetItem(wx.Window): # self.mainFrame = gui.mainFrame.MainFrame.getInstance() # self.fleetBrowser = self.mainFrame.fleetBrowser # print self.fleetBrowser + self.fleetBrowser = self.Parent self.fleetID = fleetID self.fleetName = fleetName self.fleetCount = fleetCount @@ -285,7 +289,15 @@ class FleetItem(wx.Window): self.editWidth = 150 self.tcFleetName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fleetName, wx.DefaultPosition, (self.editWidth,-1), wx.TE_PROCESS_ENTER) - self.tcFleetName.Show(False) + + if self.fleetBrowser.fleetIDMustEditName != self.fleetID: + self.tcFleetName.Show(False) + else: + self.tcFleetName.SetFocus() + self.tcFleetName.SelectAll() + self.btnRename.SetBitmapLabel(self.acceptBmp, False) + self.editHasFocus = True + self.fleetBrowser.fleetIDMustEditName = -1 self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None) @@ -312,7 +324,7 @@ class FleetItem(wx.Window): if self.editHasFocus: self.HideEdit() else: - wx.PostEvent(self.Parent.Parent, FleetItemSelect(fleetID = self.fleetID)) + wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID)) event.Skip() def OnRenameBtn(self, event): @@ -333,14 +345,14 @@ class FleetItem(wx.Window): if self.editHasFocus: self.HideEdit() else: - wx.PostEvent(self.Parent.Parent, FleetItemDelete(fleetID = self.fleetID)) + wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID)) event.Skip() def OnCopyBtn(self, event): if self.editHasFocus: self.HideEdit() else: - wx.PostEvent(self.Parent.Parent, FleetItemCopy(fleetID = self.fleetID)) + wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID)) event.Skip() def RenameFit(self, event): @@ -349,7 +361,7 @@ class FleetItem(wx.Window): newFleetName = self.tcFleetName.GetValue() self.fleetName = newFleetName - wx.PostEvent(self.Parent.Parent, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName)) + wx.PostEvent(self.fleetBrowser, FleetItemRename(fleetID = self.fleetID, fleetName = self.fleetName)) self.Refresh() def IsSelected(self): From cd110b14df4d9676be2e337405cff740cf43cf24 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 23 Nov 2010 20:40:00 +0200 Subject: [PATCH 4/6] Trim fleetName/fleet size accordingly to available free space --- gui/fleetBrowser.py | 46 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 0c8d0f8ec..3f1b8781f 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -413,16 +413,7 @@ class FleetItem(wx.Window): textStart = self.padding + self.fleetBmp.GetWidth() suffix = "%d ships" % self.fleetCount if self.fleetCount >1 else "%d ship" % self.fleetCount if self.fleetCount == 1 else "No ships" fleetCount = "Fleet size: %s" % suffix - bdc.SetFont(self.fontBig) - fnx,fny = bdc.GetTextExtent(self.fleetName) - - bdc.DrawText(self.fleetName, textStart, (rect.height/2 - fny)/2) - - bdc.SetFont(self.fontSmall) - fcx,fcy = bdc.GetTextExtent(fleetCount) - - bdc.DrawText(fleetCount, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) btnWidth,btnHeight = self.btnSize self.deletePosX = rect.width - btnWidth - self.padding self.renamePosX = self.deletePosX - btnWidth @@ -431,6 +422,10 @@ class FleetItem(wx.Window): # - self.padding self.renamePosY = self.deletePosY = self.copyPosY = (rect.height - btnHeight) / 2 + tx = 0 + + bdc.SetFont(self.fontSmall) + if self.highlighted: brush = wx.Brush(self.btnbgcolour) pen = wx.Pen(self.btnbgcolour) @@ -462,6 +457,39 @@ class FleetItem(wx.Window): bdc.DrawBitmap(self.renameBmpGrey, self.renamePosX + 1, self.renamePosY + 1 ) bdc.DrawBitmap(self.deleteBmpGrey, self.deletePosX + 1, self.deletePosY + 1 ) + bdc.SetFont(self.fontBig) + + fnx,fny = bdc.GetTextExtent(self.fleetName) + + fnwidths = bdc.GetPartialTextExtents(self.fleetName) + + count = 0 + maxsize = self.copyPosX - 8 - tx - textStart + for i in fnwidths: + if i <= maxsize: + count +=1 + else: + break + count -= 2 + bdc.DrawText(self.fleetName[:count] + ".." if count < len(self.fleetName) - 2 else self.fleetName , textStart, (rect.height/2 - fny)/2) + + bdc.SetFont(self.fontSmall) + + fcx,fcy = bdc.GetTextExtent(fleetCount) + + fnwidths = bdc.GetPartialTextExtents(fleetCount) + + count = 0 + maxsize = self.copyPosX - 8 - tx - textStart + for i in fnwidths: + if i <= maxsize: + count +=1 + else: + break + + count -= 2 + bdc.DrawText(fleetCount[:count] + ".." if count < len(fleetCount) - 2 else fleetCount, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) + self.AdjustFleetNameEditSize(textStart, self.copyPosX - self.editWidth - self.padding) def AdjustFleetNameEditSize(self, start,end): From b320f7b11485c153f45e9273632ffbc6f3f74c9d Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Wed, 24 Nov 2010 03:23:27 +0200 Subject: [PATCH 5/6] Clean-up + proper partial text in fleet browser item --- gui/fleetBrowser.py | 62 +++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 3f1b8781f..99d02afa9 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -422,7 +422,17 @@ class FleetItem(wx.Window): # - self.padding self.renamePosY = self.deletePosY = self.copyPosY = (rect.height - btnHeight) / 2 - tx = 0 + tx,ty = bdc.GetTextExtent(self.buttonsTip) + + bdc.SetFont(self.fontBig) + fnx,fny = bdc.GetTextExtent(self.fleetName) + pfn = self.GetPartialText(self.fleetName, bdc, self.copyPosX - 16 - self.padding - tx - textStart, 1) + 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) + bdc.DrawText(pfc, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) bdc.SetFont(self.fontSmall) @@ -433,8 +443,6 @@ class FleetItem(wx.Window): bdc.SetPen(pen) bdc.SetBrush(brush) - tx,ty = bdc.GetTextExtent(self.buttonsTip) - bdc.DrawRoundedRectangle(self.copyPosX - 8 - tx - self.padding, self.copyPosY-1, rect.width,20, 8) bdc.DrawText(self.buttonsTip,self.copyPosX - tx - self.padding, self.copyPosY + 8 - ty/2) @@ -450,48 +458,31 @@ class FleetItem(wx.Window): self.btnCopy.Show(False) self.btnRename.Show(False) self.btnDelete.Show(False) + bdc.DrawBitmap(self.copyBmpGrey, self.copyPosX + 1, self.copyPosY + 1 ) + if self.editHasFocus: bdc.DrawBitmap(self.acceptBmpGrey, self.renamePosX + 1, self.renamePosY + 1 ) else: bdc.DrawBitmap(self.renameBmpGrey, self.renamePosX + 1, self.renamePosY + 1 ) + bdc.DrawBitmap(self.deleteBmpGrey, self.deletePosX + 1, self.deletePosY + 1 ) - bdc.SetFont(self.fontBig) - - fnx,fny = bdc.GetTextExtent(self.fleetName) - - fnwidths = bdc.GetPartialTextExtents(self.fleetName) - - count = 0 - maxsize = self.copyPosX - 8 - tx - textStart - for i in fnwidths: - if i <= maxsize: - count +=1 - else: - break - count -= 2 - bdc.DrawText(self.fleetName[:count] + ".." if count < len(self.fleetName) - 2 else self.fleetName , textStart, (rect.height/2 - fny)/2) - - bdc.SetFont(self.fontSmall) - - fcx,fcy = bdc.GetTextExtent(fleetCount) - - fnwidths = bdc.GetPartialTextExtents(fleetCount) - - count = 0 - maxsize = self.copyPosX - 8 - tx - textStart - for i in fnwidths: - if i <= maxsize: - count +=1 - else: - break - - count -= 2 - bdc.DrawText(fleetCount[:count] + ".." if count < len(fleetCount) - 2 else fleetCount, textStart, rect.height/2 + (rect.height/2 -fcy) / 2 ) 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() @@ -504,7 +495,6 @@ class FleetItem(wx.Window): self.tcFleetName.SetSize((self.editWidth,-1)) self.tcFleetName.SetPosition((fnEditPosX,fnEditPosY)) - def OnEditLostFocus(self, event): if self.highlighted == 1: self.editHasFocus = True From 6ac53ad215771405be96d1e5418d53f2797e03cf Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Wed, 24 Nov 2010 11:12:05 +0200 Subject: [PATCH 6/6] Fixed an oopsie in Fleet Item draw --- gui/fleetBrowser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 99d02afa9..30991baf8 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -422,6 +422,7 @@ class FleetItem(wx.Window): # - self.padding self.renamePosY = self.deletePosY = self.copyPosY = (rect.height - btnHeight) / 2 + bdc.SetFont(self.fontSmall) tx,ty = bdc.GetTextExtent(self.buttonsTip) bdc.SetFont(self.fontBig)