X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=wx%2Fgui%2Fmain.py;fp=wx%2Fgui%2Fmain.py;h=85aa2d6baa15abda486d6aa25bc85445f14e6d78;hp=1aa686c2cd8058d6c9b3e01c1cfdc5c2595bb8a4;hb=9f03f91142fe3b2d37089d164f1670cf8dc4beb6;hpb=6468644eca8b699a42a9c68048da87b90764f385 diff --git a/wx/gui/main.py b/wx/gui/main.py index 1aa686c..85aa2d6 100644 --- a/wx/gui/main.py +++ b/wx/gui/main.py @@ -26,30 +26,20 @@ from __future__ import division import os import wx from wx.lib.pubsub import Publisher -from wx.lib.embeddedimage import PyEmbeddedImage +from lib.embeddedimage import PyEmbeddedImage import thread import time +import lib.images as images ICON_SIZE = 64 ID_INVERT_SELECTION = wx.NewId() ID_SELECT_ODD = wx.NewId() ID_SELECT_EVEN = wx.NewId() +ID_ONE_PAGE_PER_FILE = wx.NewId() -# TODO: move into images.py -blank = PyEmbeddedImage( - "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAAZiS0dE" - "AP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kHDAscKjCK/4UAAABo" - "SURBVHja7dABAcBAEAIgXf/Ofo8dRKDblqPa5stxAgQIECBAgAABAgQIECBAgAABAgQIECBA" - "gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEPALTbLLAQ8OIAV9" - "8WNeKwAAAABJRU5ErkJggg==") -getblankData = blank.GetData -getblankImage = blank.GetImage -getblankBitmap = blank.GetBitmap - -stop_width=8 -stop_height=8 -stop_data="""\xd5\x07\x07\xd5\x08\x08\xd5\x09\x09\xd4\x0a\x0a\xd4\x0a\x0a\xd5\x09\x09\xd5\x08\x08\xd5\x07\x07\xd5\x08\x08\xd4\x12\x12\xd4<<\xd1--\xd1,-\xd4;;\xd5\x12\x12\xd6\x08\x08\xd5\x0a\x0a\xd2@@\xd4\xc6\xc7\xd5kk\xd2gi\xd2\xc4\xc6\xd4<<\xd6\x0a\x0a\xd4\x0c\x0c\xcb66\xd6gi\xe3\xeb\xed\xe1\xeb\xed\xd4bc\xd3++\xd5\x0c\x0c\xd4\x0b\x0b\xd0--\xd3hi\xe2\xeb\xed\xe2\xed\xee\xd5cd\xd3++\xd5\x0c\x0c\xd5\x09\x09\xd4:;\xd3\xc5\xc7\xd3ij\xd3jj\xd3\xc5\xc7\xd4<<\xd6\x0a\x0a\xd5\x08\x08\xd4\x12\x12\xd5<=\xd2..\xd1,,\xd4;;\xd5\x12\x12\xd6\x08\x08\xd5\x07\x07\xd6\x08\x08\xd6\x0a\x0a\xd5\x0b\x0b\xd4\x0b\x0b\xd5\x09\x09\xd5\x08\x08\xd5\x07\x07""" +ID_DOC_INFO = wx.NewId() +ID_PREVIEW_TYPE = wx.NewId() class _AppendThumbnailThread: @@ -74,22 +64,20 @@ class _AppendThumbnailThread: if pos == 0: width, height = thumb.width, thumb.height else: - if abs(width - thumb.width) > 2 or \ - abs(height - thumb.height) > 2: - different_sizes = True + if not different_sizes: + if abs(width - thumb.width) > 2 or \ + abs(height - thumb.height) > 2: + different_sizes = True + wx.CallAfter(Publisher.sendMessage, "DIFF_SIZES") wx.CallAfter(self.__win.AppendThumbnail, pos, - thumb.asImage(ICON_SIZE, ICON_SIZE)) + thumb.asImage(ICON_SIZE, ICON_SIZE), thumb) wx.CallAfter(Publisher.sendMessage, "THUMBNAIL_ADDED", {'pagenr':pos+1,}) - time.sleep(.05) + time.sleep(.01) if not self.__keep_running: break - else: - if different_sizes: - wx.CallAfter(Publisher.sendMessage, "DIFF_SIZES") - time.sleep(.10) wx.CallAfter(Publisher.sendMessage, "THUMBNAIL_DONE") time.sleep(.10) @@ -123,6 +111,10 @@ class PagePreviewWindow(wx.ScrolledWindow): def DisplayPage(self, page): thread.start_new_thread(self.__DisplayPageThread, (page,)) + def Clear(self): + self.__buffer = wx.EmptyBitmap(1, 1) + self.Refresh() + def __OnPaint(self, event): dc = wx.BufferedPaintDC(self, self.__buffer, wx.BUFFER_VIRTUAL_AREA) @@ -132,7 +124,10 @@ class PagePreviewWindow(wx.ScrolledWindow): dc = wx.BufferedDC(None, self.__buffer) dc.Clear() dc.DrawRectangle(0, 0, w+2, h+2) - dc.DrawBitmap(wx.BitmapFromBuffer(w, h, page), 1, 1, True) + #dc.DrawBitmap(wx.BitmapFromBuffer(w, h, page), 1, 1, True) + dc.DrawBitmap(wx.BitmapFromImage( + wx.ImageFromData(w, h, page)), 1, 1, True) + self.Refresh() def __DisplayPageThread(self, page): @@ -149,19 +144,20 @@ class PageListCtrl(wx.ListView): self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu) def OnContextMenu(self, event): - menu = wx.Menu() - menu.Append(wx.ID_SELECTALL, u"Select All\tCTRL-A") - menu.AppendSeparator() - menu.Append(wx.ID_SAVE, u"Save SWF (all pages)\tCTRL-W") - menu.Append(wx.ID_SAVEAS, u"Save SWF (selected pages)\tCTRL-S") - self.PopupMenu(menu) - menu.Destroy() + if self.GetItemCount(): + menu = wx.Menu() + menu.Append(wx.ID_SELECTALL, u"Select All\tCTRL-A") + menu.AppendSeparator() + menu.Append(wx.ID_SAVE, u"Save SWF (all pages)\tCTRL-W") + menu.Append(wx.ID_SAVEAS, u"Save SWF (selected pages)\tCTRL-S") + self.PopupMenu(menu) + menu.Destroy() def DisplayEmptyThumbnails(self, pages): self.DeleteAllItems() self.imglist = wx.ImageList(ICON_SIZE, ICON_SIZE, mask=True) self.AssignImageList(self.imglist, wx.IMAGE_LIST_NORMAL) - bmp = getblankBitmap() + bmp = images.getblankBitmap() for pos in range(pages): self.imglist.Add(bmp) self.InsertImageStringItem(pos, u"Page %s" % (pos+1), pos) @@ -171,12 +167,17 @@ class PageListCtrl(wx.ListView): t.Start() return t - def AppendThumbnail(self, pos, thumb): - bmp = wx.BitmapFromBuffer(ICON_SIZE, ICON_SIZE, thumb) + def AppendThumbnail(self, pos, thumb, page): + #bmp = wx.BitmapFromBuffer(ICON_SIZE, ICON_SIZE, thumb) + bmp = wx.BitmapFromImage( + wx.ImageFromData(ICON_SIZE, ICON_SIZE, + thumb)) self.imglist.Replace(pos, bmp) + self.SetItemText(pos, u"Page %s\n(%sx%s)" % (pos+1, + page.width, page.height)) if pos == 0: wx.CallAfter(self.Select, 0) - self.Refresh() + self.RefreshItem(pos) class StatusBar(wx.StatusBar): @@ -189,7 +190,7 @@ class StatusBar(wx.StatusBar): self.gauge = wx.Gauge(self) - bmp = wx.BitmapFromImage(wx.ImageFromData(stop_width,stop_height,stop_data)) + bmp = images.getstopBitmap() self.btn_cancel = wx.BitmapButton(self, bitmap=bmp, style = wx.NO_BORDER) self.gauge.Hide() @@ -230,7 +231,7 @@ class PdfFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, size=(750,550), title=u"gpdf2swf") - icon = self.__MakeIcon(os.path.join("images", "pdf2swf_gui.ico")) + icon = self.__MakeIcon() self.SetIcon(icon) self.__CreateMenu() self.__CreateToolbar() @@ -247,9 +248,8 @@ class PdfFrame(wx.Frame): sashPosition=ICON_SIZE*2) hsplit.SetMinimumPaneSize(ICON_SIZE*2) - def __MakeIcon(self, filename): - # TODO: Probably include the icon on a .py file - img = wx.Bitmap(filename).ConvertToImage() + def __MakeIcon(self): + img = images.getgpdf2swfImage() if "wxMSW" in wx.PlatformInfo: img = img.Scale(16, 16) #elif "wxGTK" in wx.PlatformInfo: @@ -262,19 +262,26 @@ class PdfFrame(wx.Frame): def __CreateMenu(self): menubar = wx.MenuBar() + menu_recent = wx.Menu() + menu_save = wx.Menu() + menu_save.AppendCheckItem(ID_ONE_PAGE_PER_FILE, u"One Page Per File") + menu_save.AppendSeparator() + menu_save.Append(wx.ID_SAVE, u"All Pages\tCTRL-W", + u"Save all pages") + menu_save.Append(wx.ID_SAVEAS, u"Selected Pages\tCTRL-S", + u"Save selected pages") + menu = wx.Menu() menu.Append(wx.ID_OPEN, u"Open PDF\tCTRL-O", u"Open a PDF document") + menu.AppendMenu(wx.ID_ANY, u"Save SWF", menu_save) menu.AppendSeparator() - menu.Append(wx.ID_SAVE, u"Save SWF (all pages)\tCTRL-W", - u"Save all pages") - menu.Append(wx.ID_SAVEAS, u"Save SWF (selected pages)\tCTRL-S", - u"Save selected pages") + menu.AppendMenu(wx.ID_ANY, u"Recent", menu_recent) menu.AppendSeparator() menu.Append(wx.ID_EXIT, u"Exit\tCTRL-Q") menubar.Append(menu, u"&File") self.filehistory = wx.FileHistory() - self.filehistory.UseMenu(menu) + self.filehistory.UseMenu(menu_recent) menu = wx.Menu() menu.Append(wx.ID_SELECTALL, u"Select All\tCTRL-A", @@ -295,6 +302,8 @@ class PdfFrame(wx.Frame): menu.Append(wx.ID_ZOOM_OUT, u"Zoom Out\tCTRL--") menu.Append(wx.ID_ZOOM_100, u"Normal Size\tCTRL-0") menu.Append(wx.ID_ZOOM_FIT, u"Fit\tCTRL-1") + menu.AppendSeparator() + menu.Append(ID_DOC_INFO, u"Document Info\tCTRL-I") menubar.Append(menu, u"&View") menu = wx.Menu() @@ -315,9 +324,31 @@ class PdfFrame(wx.Frame): wxart(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, tsize), u"Save SWF (all pages)") + self.toolbar.AddSeparator() + self.toolbar.AddSimpleTool(wx.ID_PREFERENCES, wxart(wx.ART_LIST_VIEW, wx.ART_TOOLBAR, tsize), u"Options") + self.toolbar.AddSeparator() + + self.toolbar.AddSimpleTool(ID_DOC_INFO, + wxart(wx.ART_TIP, + wx.ART_TOOLBAR, tsize), + u"Document Info") + + self.toolbar.AddSeparator() + + self.toolbar_preview_type = wx.Choice( + self.toolbar, ID_PREVIEW_TYPE, + choices=["everything to bitmaps", + "fonts to fonts, everything else to bitmaps", + "polygons to polygons and fonts to fonts"], + size=(350,-1), style=wx.CB_DROPDOWN + ) + # I'm not sure about the utility of this, so Show False + self.toolbar_preview_type.Show(False) + self.toolbar.AddControl(self.toolbar_preview_type) + self.toolbar.Realize()