Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.1.6, 1.1.6.1, and 1.1.7

stable thgconfig, hglib: disallow to enable known bad extensions (fixes #1547)

hglib.validateextensions() returns the dict of known bad extensions
based on the given list of the enabled extensions.

thgconfig updates the availability of checkboxes according to it.
It also provides the reason via tooltip.

Changeset e22f93b32477

Parent 29806eec531f

by Yuya Nishihara

Changes to 2 files · Browse files at e22f93b32477 Showing diff from parent 29806eec531f Diff from another changeset...

 
1210
1211
1212
 
1213
1214
1215
1216
1217
1218
1219
1220
 
1238
1239
1240
 
 
 
 
 
 
 
 
 
 
 
 
1241
1242
1243
 
1257
1258
1259
 
 
 
1260
1261
1262
 
1263
1264
1265
 
 
1266
1267
1268
 
1210
1211
1212
1213
1214
1215
1216
1217
 
1218
1219
1220
 
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
 
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
 
1280
1281
1282
1283
1284
1285
@@ -1210,11 +1210,11 @@
  shortdesc = allexts[name]   ck = gtk.CheckButton(name, use_underline=False)   ck.connect('toggled', self.dirty_event) + ck.connect('toggled', self._validateextensions)   ck.connect('focus-in-event', self.set_help,   hglib.toutf(shortdesc))   col, row = i / maxrows, i % maxrows   extstable.attach(ck, col, col + 1, row, row + 1) - self.tooltips.set_tip(ck, hglib.toutf(shortdesc))   self.extensionschecks[name] = ck     def _enabledextensions(self): @@ -1238,6 +1238,18 @@
    def refresh_extensions_frame(self):   enabledexts = self._enabledextensions() + for name, ck in self.extensionschecks.iteritems(): + ck.set_active(name in enabledexts) + + self._validateextensions() + + def _validateextensions(self, *args): + enabledexts = self._enabledextensions() + selectedexts = set(name for name, ck + in self.extensionschecks.iteritems() + if ck.get_active()) + invalidexts = hglib.validateextensions(selectedexts) +   def getinival(name):   if 'extensions' not in self.ini:   return None @@ -1257,12 +1269,17 @@
  elif name in enabledexts and curval is None:   # re-disabling ext is not supported   return False + elif name in invalidexts and name not in selectedexts: + # disallow to enable bad exts, but allow to disable it + return False   else:   return True   + allexts = hglib.allextensions()   for name, ck in self.extensionschecks.iteritems(): - ck.set_active(name in enabledexts)   ck.set_sensitive(changable(name)) + self.tooltips.set_tip(ck, invalidexts.get(name) + or hglib.toutf(allexts[name]))     def apply_extensions_changes(self):   enabledexts = self._enabledextensions()
 
220
221
222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
224
225
 
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
@@ -220,6 +220,22 @@
  exts.update(enabledexts)   return exts   +def validateextensions(enabledexts): + """Report extensions which should be disabled + + Returns the dict {name: message} of extensions expected to be disabled. + message is 'utf-8'-encoded string. + """ + from tortoisehg.util.i18n import _ # avoid cyclic dependency + exts = {} + if os.name != 'posix': + exts['inotify'] = _('inotify is not supported on this platform') + if 'win32text' in enabledexts: + exts['eol'] = _('eol is incompatible with win32text') + if 'eol' in enabledexts: + exts['win32text'] = _('win32text is incompatible with eol') + return exts +  def loadextension(ui, name):   # Between Mercurial revisions 1.2 and 1.3, extensions.load() stopped   # calling uisetup() after loading an extension. This could do