From 2886e1a7e573c945968ac6906fb8d6ce10b17494 Mon Sep 17 00:00:00 2001 From: ccremers Date: Wed, 13 Dec 2006 15:43:10 +0000 Subject: [PATCH] - Hopefully improved the attack displays. Needs checking. --- gui/Gui/Attackwindow.py | 56 +++++++++++++++++++++++----------------- gui/Gui/Scytherthread.py | 4 ++- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/gui/Gui/Attackwindow.py b/gui/Gui/Attackwindow.py index 63b82f4..545c99f 100644 --- a/gui/Gui/Attackwindow.py +++ b/gui/Gui/Attackwindow.py @@ -18,6 +18,9 @@ if Preference.usePIL(): #--------------------------------------------------------------------------- class AttackDisplay(wx.ScrolledWindow): + """ + Display an attack (inside a tab or not) + """ def __init__(self, daddy, parent, attack): self.win = daddy @@ -28,10 +31,7 @@ class AttackDisplay(wx.ScrolledWindow): # [CC][X] The below statement might be iffy on older versions. # (Python 2.3? What settings?) # Cf. bug report Vimal Subra - # So for now, we just don't set it. It's not that important, and - # if it helps avoiding breaking the tool, then we just throw it - # out for now. This *is* a beta, remember. - #self.SetBackgroundColour(wx.Colour(255,255,255)) + self.SetBackgroundColour(wx.Colour(255,255,255)) self.Bind(wx.EVT_SIZE, self.OnSize) self.Image = wx.StaticBitmap(self, -1, wx.EmptyBitmap(1,1)) @@ -66,15 +66,17 @@ class AttackDisplay(wx.ScrolledWindow): if not self.win.fit: return + # This is needed, don't ask me why. self.SetScrollbars(0,0,0,0,0,0) - (sw,sh) = self.GetClientSizeTuple() - (W,H) = (sw,sh) - def makefit(W,H): + (framewidth,frameheight) = self.GetClientSizeTuple() + (virtualwidth,virtualheight) = (framewidth,frameheight) + + def makefit(width,height): if self.win.fit: # determine scaling factors for fitting - wfactor = float(sw) / W - hfactor = float(sh) / H + wfactor = float(framewidth) / width + hfactor = float(frameheight) / height # select smallest factor (so it will fit) if hfactor < wfactor: @@ -83,42 +85,49 @@ class AttackDisplay(wx.ScrolledWindow): factor = wfactor # apply scaling factor - W = W * factor - H = H * factor - return (int(W),int(H)) + width = width * factor + height = height * factor + else: + factor = 1.0 + + return (factor, int(width), int(height)) if self.attack.filetype == "png": bmp = self.original if not bmp.Ok(): bmp = wx.EmptyImage(1,1) else: - (W,H) = (bmp.GetWidth(), bmp.GetHeight()) + (originalwidth,originalheight) = (bmp.GetWidth(), bmp.GetHeight()) if self.win.fit: - (W,H) = makefit(W,H) - bmp = self.original.Scale(W,H) + (factor, virtualwidth, virtualheight) = makefit(originalwidth,originalheight) + bmp = self.original.Scale(virtualwidth,virtualheight) self.Image.SetBitmap(wx.BitmapFromImage(bmp)) elif self.attack.filetype == "ps": pil = self.original.copy() - (W,H) = pil.size - (W,H) = makefit(W,H) + (originalwidth,originalheight) = pil.size + (factor, virtualwidth, virtualheight) = makefit(originalwidth,originalheight) # we really only want antialias when it's smaller - pil.thumbnail((W,H),Image.ANTIALIAS) + if factor < 1.0: + pil.thumbnail((virtualwidth,virtualheight),Image.ANTIALIAS) + else: + pil.thumbnail((virtualwidth,virtualheight)) image = wx.EmptyImage(pil.size[0],pil.size[1]) image.SetData(pil.convert('RGB').tostring()) self.Image.SetBitmap(image.ConvertToBitmap()) + else: print "Unknown file type %s." % (self.attack.filetype) + self.SetVirtualSize((virtualwidth,virtualheight)) #self.box.SetItemMinSize(self.Image.GetContainingSizer()) self.box.Layout() - # wx.StaticBitmap(self, -1, bmp, (0, 0), (bmp.GetWidth(), bmp.GetHeight())) step = 20 - xn = int(W / step) + 1 - yn = int(H / step) + 1 + xn = int(virtualwidth / step) + 1 + yn = int(virtualheight / step) + 1 self.SetScrollbars(step,step,xn,yn,0,0) self.Refresh() @@ -127,8 +136,9 @@ class AttackDisplay(wx.ScrolledWindow): class AttackWindow(wx.Frame): def __init__(self,cl): - super(AttackWindow, self).__init__(None, size=(400,700)) - self.SetBackgroundColour('Default') + super(AttackWindow, self).__init__(None, size=(800,800)) + # [CC][X] Same here; no background set for safety. + #self.SetBackgroundColour('Default') self.claim = cl # TODO maybe fitting defaults should come from Preferences. diff --git a/gui/Gui/Scytherthread.py b/gui/Gui/Scytherthread.py index a617d7e..1f143b1 100644 --- a/gui/Gui/Scytherthread.py +++ b/gui/Gui/Scytherthread.py @@ -138,7 +138,9 @@ class AttackThread(threading.Thread): fp.write(l) if l.startswith("digraph"): # Write additional stuff for this graph - graphLine("dpi=96") + # + # [CC][x] This dpi setting messed up quite a bit + #graphLine("dpi=96") graphLine("rankdir=TB") graphLine("nodesep=0.1") graphLine("ranksep=0.001")