+
+class ImageDialog(wx.Dialog):
+ def __init__(self, parent, set_dir = None):
+ wx.Dialog.__init__(self, parent, -1, "Image Browser", wx.DefaultPosition, (400, 400),style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
+
+ self.set_dir = os.getcwd()
+ self.set_file = None
+
+ if set_dir != None:
+ if os.path.exists(set_dir): # set to working directory if nothing set
+ self.set_dir = set_dir
+
+ vbox_top = wx.BoxSizer(wx.VERTICAL)
+ self.SetSizer(vbox_top)
+
+ hbox_loc = wx.BoxSizer(wx.HORIZONTAL)
+ vbox_top.Add(hbox_loc, 0, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 0)
+
+ loc_label = wx.StaticText( self, -1, "Folder:")
+ hbox_loc.Add(loc_label, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.ADJUST_MINSIZE, 5)
+
+ self.dir = wx.TextCtrl( self, -1, self.set_dir, style=wx.TE_RICH|wx.TE_PROCESS_ENTER)
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnDirectoryTextSet, self.dir)
+ hbox_loc.Add(self.dir, 1, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 5)
+
+ up_bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_DIR_UP, wx.ART_BUTTON, (16,16))
+ btn = wx.BitmapButton(self, -1, up_bmp)
+ btn.SetHelpText("Up one level")
+ btn.SetToolTipString("Up one level")
+ self.Bind(wx.EVT_BUTTON, self.OnUpDirectory, btn)
+ hbox_loc.Add(btn, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2)
+
+ folder_bmp = wx.ArtProvider.GetBitmap(wx.ART_FOLDER_OPEN, wx.ART_BUTTON, (16,16))
+ btn = wx.BitmapButton(self, -1, folder_bmp)
+ btn.SetHelpText("Browse for a &folder...")
+ btn.SetToolTipString("Browse for a folder...")
+ self.Bind(wx.EVT_BUTTON, self.OnChooseDirectory, btn)
+ hbox_loc.Add(btn, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 5)
+
+ hbox_nav = wx.BoxSizer(wx.HORIZONTAL)
+ vbox_top.Add(hbox_nav, 0, wx.ALIGN_LEFT|wx.ALL, 0)
+
+
+ label = wx.StaticText( self, -1, "Files of type:")
+ hbox_nav.Add(label, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5)
+
+ self.fl_ext = '*.bmp' # initial setting for file filtering
+ self.GetFiles() # get the file list
+
+ self.fl_ext_types = (
+ # display, filter
+ ("All supported formats", "All"),
+ ("BMP (*.bmp)", "*.bmp"),
+ ("GIF (*.gif)", "*.gif"),
+ ("PNG (*.png)", "*.png"),
+ ("JPEG (*.jpg)", "*.jpg"),
+ ("ICO (*.ico)", "*.ico"),
+ ("PNM (*.pnm)", "*.pnm"),
+ ("PCX (*.pcx)", "*.pcx"),
+ ("TIFF (*.tif)", "*.tif"),
+ ("All Files", "*.*"),
+ )
+ self.set_type,self.fl_ext = self.fl_ext_types[0] # initial file filter setting
+ self.fl_types = [ x[0] for x in self.fl_ext_types ]
+ self.sel_type = wx.ComboBox( self, -1, self.set_type,
+ wx.DefaultPosition, wx.DefaultSize, self.fl_types,
+ wx.CB_DROPDOWN )
+ # after this we don't care about the order any more
+ self.fl_ext_types = dict(self.fl_ext_types)
+
+ self.Bind(wx.EVT_COMBOBOX, self.OnSetType, self.sel_type)
+ hbox_nav.Add(self.sel_type, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
+
+ splitter = wx.SplitterWindow( self, -1, wx.DefaultPosition, wx.Size(100, 100), 0 )
+ splitter.SetMinimumPaneSize(100)
+
+ split_left = wx.Panel( splitter, -1, wx.DefaultPosition, wx.DefaultSize,
+ wx.NO_BORDER|wx.TAB_TRAVERSAL )
+ vbox_left = wx.BoxSizer(wx.VERTICAL)
+ split_left.SetSizer(vbox_left)
+
+
+ self.tb = tb = wx.ListBox( split_left, -1, wx.DefaultPosition, wx.DefaultSize,
+ self.fl_list, wx.LB_SINGLE )
+ self.Bind(wx.EVT_LISTBOX, self.OnListClick, tb)
+ self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnListDClick, tb)
+ vbox_left.Add(self.tb, 1, wx.GROW|wx.ALL, 0)
+
+ width, height = self.tb.GetSize()
+
+ split_right = wx.Panel( splitter, -1, wx.DefaultPosition, wx.DefaultSize,
+ wx.NO_BORDER|wx.TAB_TRAVERSAL )
+ vbox_right = wx.BoxSizer(wx.VERTICAL)
+ split_right.SetSizer(vbox_right)
+
+ self.image_view = ImagePanel( split_right )
+ vbox_right.Add(self.image_view, 1, wx.GROW|wx.ALL, 0)
+
+ splitter.SplitVertically(split_left, split_right, 150)
+ vbox_top.Add(splitter, 1, wx.GROW|wx.ALL, 5)
+
+ hbox_btns = wx.BoxSizer(wx.HORIZONTAL)
+ vbox_top.Add(hbox_btns, 0, wx.ALIGN_RIGHT|wx.ALL, 5)
+
+ ok_btn = wx.Button( self, wx.ID_OPEN, "", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.Bind(wx.EVT_BUTTON, self.OnOk, ok_btn)
+ #ok_btn.SetDefault()
+ hbox_btns.Add(ok_btn, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
+
+ cancel_btn = wx.Button( self, wx.ID_CANCEL, "",
+ wx.DefaultPosition, wx.DefaultSize, 0 )
+ hbox_btns.Add(cancel_btn, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)