Show More
@@ -1,3 +1,9 b'' | |||
|
1 | """A base class for console-type widgets. | |
|
2 | """ | |
|
3 | #----------------------------------------------------------------------------- | |
|
4 | # Imports | |
|
5 | #----------------------------------------------------------------------------- | |
|
6 | ||
|
1 | 7 | # Standard library imports |
|
2 | 8 | from os.path import commonprefix |
|
3 | 9 | import re |
@@ -9,11 +15,14 b' from PyQt4 import QtCore, QtGui' | |||
|
9 | 15 | |
|
10 | 16 | # Local imports |
|
11 | 17 | from IPython.config.configurable import Configurable |
|
12 | from IPython.frontend.qt.util import MetaQObjectHasTraits | |
|
18 | from IPython.frontend.qt.util import MetaQObjectHasTraits, get_font | |
|
13 | 19 | from IPython.utils.traitlets import Bool, Enum, Int |
|
14 | 20 | from ansi_code_processor import QtAnsiCodeProcessor |
|
15 | 21 | from completion_widget import CompletionWidget |
|
16 | 22 | |
|
23 | #----------------------------------------------------------------------------- | |
|
24 | # Classes | |
|
25 | #----------------------------------------------------------------------------- | |
|
17 | 26 | |
|
18 | 27 | class ConsoleWidget(Configurable, QtGui.QWidget): |
|
19 | 28 | """ An abstract base class for console-type widgets. This class has |
@@ -441,16 +450,19 b' class ConsoleWidget(Configurable, QtGui.QWidget):' | |||
|
441 | 450 | def reset_font(self): |
|
442 | 451 | """ Sets the font to the default fixed-width font for this platform. |
|
443 | 452 | """ |
|
444 | font = QtGui.QFont() | |
|
445 | 453 | if sys.platform == 'win32': |
|
446 |
# |
|
|
447 |
f |
|
|
448 | if not font.exactMatch(): | |
|
449 | font.setFamily('Courier') | |
|
454 | # Consolas ships with Vista/Win7, fallback to Courier if needed | |
|
455 | family, fallback = 'Consolas', 'Courier' | |
|
450 | 456 | elif sys.platform == 'darwin': |
|
451 | font.setFamily('Monaco') | |
|
457 | # OSX always has Monaco, no need for a fallback | |
|
458 | family, fallback = 'Monaco', None | |
|
452 | 459 | else: |
|
453 | font.setFamily('Monospace') | |
|
460 | # Consolas isn't too common on linux, but anyone who has it | |
|
461 | # installed it because they want it for their monospaced apps, | |
|
462 | # since it's better than anything on linux by default. | |
|
463 | family, fallback = 'Consolas', 'Monospace' | |
|
464 | ||
|
465 | font = get_font(family, fallback) | |
|
454 | 466 | font.setPointSize(QtGui.qApp.font().pointSize()) |
|
455 | 467 | font.setStyleHint(QtGui.QFont.TypeWriter) |
|
456 | 468 | self._set_font(font) |
@@ -2,7 +2,7 b'' | |||
|
2 | 2 | """ |
|
3 | 3 | |
|
4 | 4 | # System library imports. |
|
5 | from PyQt4 import QtCore | |
|
5 | from PyQt4 import QtCore, QtGui | |
|
6 | 6 | |
|
7 | 7 | # IPython imports. |
|
8 | 8 | from IPython.utils.traitlets import HasTraits |
@@ -23,3 +23,30 b' class MetaQObjectHasTraits(MetaQObject, MetaHasTraits):' | |||
|
23 | 23 | QObject. See QtKernelManager for an example. |
|
24 | 24 | """ |
|
25 | 25 | pass |
|
26 | ||
|
27 | ||
|
28 | def get_font(family, fallback=None): | |
|
29 | """Return a font of the requested family, using fallback as alternative. | |
|
30 | ||
|
31 | If a fallback is provided, it is used in case the requested family isn't | |
|
32 | found. If no fallback is given, no alternative is chosen and Qt's internal | |
|
33 | algorithms may automatically choose a fallback font. | |
|
34 | ||
|
35 | Parameters | |
|
36 | ---------- | |
|
37 | family : str | |
|
38 | A font name. | |
|
39 | fallback : str | |
|
40 | A font name. | |
|
41 | ||
|
42 | Returns | |
|
43 | ------- | |
|
44 | font : QFont object | |
|
45 | """ | |
|
46 | font = QtGui.QFont(family) | |
|
47 | # Check whether we got what we wanted using QFontInfo, since exactMatch() | |
|
48 | # is overly strict and returns false in too many cases. | |
|
49 | font_info = QtGui.QFontInfo(font) | |
|
50 | if fallback is not None and font_info.family() != family: | |
|
51 | font = QtGui.QFont(fallback) | |
|
52 | return font |
General Comments 0
You need to be logged in to leave comments.
Login now