2342 '<p>Reason: {1}</p>') |
2342 '<p>Reason: {1}</p>') |
2343 .format(fileName, str(why))) |
2343 .format(fileName, str(why))) |
2344 QApplication.restoreOverrideCursor() |
2344 QApplication.restoreOverrideCursor() |
2345 return |
2345 return |
2346 |
2346 |
2347 modified = False |
2347 self.__textEdit.setText(txt) |
2348 |
2348 QApplication.restoreOverrideCursor() |
|
2349 |
|
2350 if filetype is None: |
|
2351 self.filetype = "" |
|
2352 else: |
|
2353 self.filetype = filetype |
|
2354 self.__setCurrentFile(fileName) |
|
2355 |
|
2356 self.__textEdit.setModified(False) |
|
2357 self.setWindowModified(False) |
|
2358 |
|
2359 self.__convertTabs() |
|
2360 |
|
2361 eolMode = self.__getEditorConfig("EOLMode", nodefault=True) |
|
2362 if eolMode is None: |
|
2363 fileEol = self.__textEdit.detectEolString(txt) |
|
2364 self.__textEdit.setEolModeByEolString(fileEol) |
|
2365 else: |
|
2366 self.__textEdit.convertEols(eolMode) |
|
2367 |
|
2368 self.__statusBar.showMessage(self.tr("File loaded"), 2000) |
|
2369 |
|
2370 def __convertTabs(self): |
|
2371 """ |
|
2372 Private slot to convert tabulators to spaces. |
|
2373 """ |
2349 if ( |
2374 if ( |
2350 not self.__getEditorConfig("TabForIndentation") and |
2375 (not self.__getEditorConfig("TabForIndentation")) and |
2351 Preferences.getEditor("ConvertTabsOnLoad") and |
2376 Preferences.getEditor("ConvertTabsOnLoad") and |
2352 not (self.lexer_ and |
2377 not (self.lexer_ and |
2353 self.lexer_.alwaysKeepTabs()) |
2378 self.lexer_.alwaysKeepTabs()) |
2354 ): |
2379 ): |
|
2380 txt = self.__textEdit.text() |
2355 txtExpanded = txt.expandtabs(self.__getEditorConfig("TabWidth")) |
2381 txtExpanded = txt.expandtabs(self.__getEditorConfig("TabWidth")) |
2356 if txtExpanded != txt: |
2382 if txtExpanded != txt: |
2357 modified = True |
2383 self.__textEdit.beginUndoAction |
2358 txt = txtExpanded |
2384 self.__textEdit.setText(txt) |
2359 |
2385 self.__textEdit.endUndoAction() |
2360 self.__textEdit.setText(txt) |
2386 |
2361 QApplication.restoreOverrideCursor() |
2387 self.__textEdit.setModified(True) |
2362 |
2388 self.setWindowModified(True) |
2363 if filetype is None: |
|
2364 self.filetype = "" |
|
2365 else: |
|
2366 self.filetype = filetype |
|
2367 self.__setCurrentFile(fileName) |
|
2368 |
|
2369 self.__textEdit.setModified(modified) |
|
2370 self.setWindowModified(modified) |
|
2371 |
|
2372 eolMode = self.__getEditorConfig("EOLMode", nodefault=True) |
|
2373 if eolMode is None: |
|
2374 fileEol = self.__textEdit.detectEolString(txt) |
|
2375 self.__textEdit.setEolModeByEolString(fileEol) |
|
2376 else: |
|
2377 self.__textEdit.convertEols(eolMode) |
|
2378 |
|
2379 self.__statusBar.showMessage(self.tr("File loaded"), 2000) |
|
2380 |
2389 |
2381 def __saveFile(self, fileName): |
2390 def __saveFile(self, fileName): |
2382 """ |
2391 """ |
2383 Private method to save to the given file. |
2392 Private method to save to the given file. |
2384 |
2393 |
2628 self.__textEdit.setIndentationGuidesForegroundColor( |
2637 self.__textEdit.setIndentationGuidesForegroundColor( |
2629 Preferences.getEditorColour("IndentationGuidesForeground")) |
2638 Preferences.getEditorColour("IndentationGuidesForeground")) |
2630 if Preferences.getEditor("ShowWhitespace"): |
2639 if Preferences.getEditor("ShowWhitespace"): |
2631 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsVisible) |
2640 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsVisible) |
2632 try: |
2641 try: |
2633 self.setWhitespaceForegroundColor( |
2642 self.__textEdit.setWhitespaceForegroundColor( |
2634 Preferences.getEditorColour("WhitespaceForeground")) |
2643 Preferences.getEditorColour("WhitespaceForeground")) |
2635 self.setWhitespaceBackgroundColor( |
2644 self.__textEdit.setWhitespaceBackgroundColor( |
2636 Preferences.getEditorColour("WhitespaceBackground")) |
2645 Preferences.getEditorColour("WhitespaceBackground")) |
2637 self.setWhitespaceSize( |
2646 self.__textEdit.setWhitespaceSize( |
2638 Preferences.getEditor("WhitespaceSize")) |
2647 Preferences.getEditor("WhitespaceSize")) |
2639 except AttributeError: |
2648 except AttributeError: |
|
2649 # TODO: is this still needed? |
2640 # QScintilla before 2.5 doesn't support this |
2650 # QScintilla before 2.5 doesn't support this |
2641 pass |
2651 pass |
2642 else: |
2652 else: |
2643 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsInvisible) |
2653 self.__textEdit.setWhitespaceVisibility(QsciScintilla.WsInvisible) |
2644 self.__textEdit.setEolVisibility(Preferences.getEditor("ShowEOL")) |
2654 self.__textEdit.setEolVisibility(Preferences.getEditor("ShowEOL")) |
3035 language = "Python3" |
3045 language = "Python3" |
3036 if language.startswith("Pygments|"): |
3046 if language.startswith("Pygments|"): |
3037 pyname = language.split("|", 1)[1] |
3047 pyname = language.split("|", 1)[1] |
3038 language = "" |
3048 language = "" |
3039 |
3049 |
|
3050 if not self.filetype: |
|
3051 if not language and pyname: |
|
3052 self.filetype = pyname |
|
3053 else: |
|
3054 self.filetype = language |
|
3055 |
3040 from . import Lexers |
3056 from . import Lexers |
3041 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname) |
3057 self.lexer_ = Lexers.getLexer(language, self.__textEdit, pyname=pyname) |
3042 if self.lexer_ is None: |
3058 if self.lexer_ is None: |
3043 self.__textEdit.setLexer() |
3059 self.__textEdit.setLexer() |
3044 self.apiLanguage = "" |
3060 self.apiLanguage = "" |
3495 except KeyError: |
3515 except KeyError: |
3496 value = None |
3516 value = None |
3497 |
3517 |
3498 if value is None and not nodefault: |
3518 if value is None and not nodefault: |
3499 # use Preferences as default in case of error |
3519 # use Preferences as default in case of error |
3500 value = Preferences.getEditor(option) |
3520 value = self.__getOverrideValue(option) |
|
3521 if value is None: |
|
3522 # no override |
|
3523 value = Preferences.getEditor(option) |
3501 |
3524 |
3502 return value |
3525 return value |
|
3526 |
|
3527 def __getOverrideValue(self, option): |
|
3528 """ |
|
3529 Private method to get an override value for the current file type. |
|
3530 |
|
3531 @param option Preferences option key |
|
3532 @type str |
|
3533 @return override value; None in case nothing is defined |
|
3534 @rtype any |
|
3535 """ |
|
3536 if option in ("TabWidth", "IndentWidth"): |
|
3537 overrides = Preferences.getEditor("TabIndentOverride") |
|
3538 if self.filetype in overrides: |
|
3539 if option == "TabWidth": |
|
3540 return overrides[self.filetype][0] |
|
3541 elif option == "IndentWidth": |
|
3542 return overrides[self.filetype][1] |
|
3543 |
|
3544 return None |