Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.0, 1.0.1, and 1.0.2

gtklib: add option to enable multiple selection

Changeset b2e7f815dbb4

Parent ed00cdebebf6

by Yuki KODAMA

Changes to one file · Browse files at b2e7f815dbb4 Showing diff from parent ed00cdebebf6 Diff from another changeset...

 
150
151
152
153
 
154
155
156
 
159
160
161
 
162
163
164
 
185
186
187
 
 
 
188
189
 
190
191
192
 
194
195
196
197
 
198
199
200
201
 
 
202
203
204
 
213
214
215
 
 
 
 
 
 
 
 
216
217
218
 
227
228
229
 
 
230
231
232
 
235
236
237
238
 
 
 
 
239
240
241
 
150
151
152
 
153
154
155
156
 
159
160
161
162
163
164
165
 
186
187
188
189
190
191
192
 
193
194
195
196
 
198
199
200
 
201
202
 
 
 
203
204
205
206
207
 
216
217
218
219
220
221
222
223
224
225
226
227
228
229
 
238
239
240
241
242
243
244
245
 
248
249
250
 
251
252
253
254
255
256
257
@@ -150,7 +150,7 @@
  that isn't available"""   def __init__(self, initial = None, title = _('Save File'),   filter = ((_('All files'), '*.*'),), filterindex = 1, - filename = '', open=False): + filename = '', open=False, multi=False):   if initial is None:   initial = os.path.expanduser("~")   self.initial = initial @@ -159,6 +159,7 @@
  self.filter = filter   self.filterindex = filterindex   self.open = open + self.multi = multi     def run(self):   """run the file dialog, either return a file name, or False if @@ -185,8 +186,11 @@
  f = ''   for name, mask in self.filter:   f += '\0'.join([name, mask,'']) + flags = win32con.OFN_EXPLORER + if self.multi: + flags |= win32con.OFN_ALLOWMULTISELECT   opts = dict(InitialDir=self.initial, - Flags=win32con.OFN_EXPLORER, + Flags=flags,   File=self.filename,   DefExt=None,   Title=hglib.fromutf(self.title), @@ -194,11 +198,10 @@
  CustomFilter=None,   FilterIndex=self.filterindex)   if self.open: - fname, _, _ = win32gui.GetOpenFileNameW(**opts) + ret = win32gui.GetOpenFileNameW(**opts)   else: - fname, _, _ = win32gui.GetSaveFileNameW(**opts) - if fname: - fname = os.path.abspath(fname) + ret = win32gui.GetSaveFileNameW(**opts) + fname = ret[0]   except pywintypes.error:   pass   os.chdir(cwd) @@ -213,6 +216,14 @@
  fname = False   if q.qsize():   fname = q.get(0) + if fname and self.multi and fname.find('\x00') != -1: + splitted = fname.split('\x00') + dir, fnames = splitted[0], splitted[1:] + fname = [] + for fn in fnames: + path = os.path.abspath(os.path.join(dir, fn)) + if os.path.exists(path): + fname.append(hglib.toutf(path))   return fname     def runCompatible(self): @@ -227,6 +238,8 @@
  dlg = gtk.FileChooserDialog(self.title, None, action, buttons)   dlg.set_default_response(gtk.RESPONSE_OK)   dlg.set_current_folder(self.initial) + if self.multi: + dlg.set_select_multiple(True)   if not self.open:   dlg.set_current_name(self.filename)   for name, pattern in self.filter: @@ -235,7 +248,10 @@
  fi.add_pattern(pattern)   dlg.add_filter(fi)   if dlg.run() == gtk.RESPONSE_OK: - result = dlg.get_filename(); + if self.multi: + result = dlg.get_filenames() + else: + result = dlg.get_filename()   else:   result = False   dlg.destroy()