Changeset 1788
- Timestamp:
- 01/14/06 07:54:19 (3 years ago)
- Files:
-
- trunk/dabo/settings.py (modified) (1 diff)
- trunk/dabo/ui/uiwx/dFont.py (modified) (4 diffs)
- trunk/dabo/ui/uiwx/dGrid.py (modified) (14 diffs)
- trunk/dabo/ui/uiwx/dLabel.py (modified) (10 diffs)
- trunk/dabo/ui/uiwx/dPemMixin.py (modified) (1 diff)
- trunk/dabo/ui/uiwx/dTreeView.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dabo/settings.py
r1723 r1788 91 91 # dateFormat = "European" # DD.MM.YYYY 92 92 93 # Default font size when none other is specified 94 defaultFontSize = 10 95 93 96 94 97 ### Settings - end trunk/dabo/ui/uiwx/dFont.py
r1787 r1788 1 import wx 1 2 import dabo 2 3 from dabo.dObject import dObject … … 6 7 class dFont(dObject): 7 8 """This class wraps the various font properties into a single object.""" 8 def __init__(self, properties=None, *args, **kwargs): 9 self._bold = None 10 self._description = None 11 self._face = None 12 self._italic = None 13 self._size = None 14 self._underline = None 15 # Some internal Dabo tools may need to access the platform-native 16 # font object. This attribute holds that object, if any. 17 self._baseObject = None 9 def __init__(self, properties=None, font=None, *args, **kwargs): 10 if font is not None: 11 self._nativeObject = font 12 else: 13 self._nativeObject = wx.Font(dabo.settings.defaultFontSize, 14 wx.DEFAULT, wx.NORMAL, wx.NORMAL) 15 18 16 super(dFont, self).__init__(properties=properties, *args, **kwargs) 19 17 20 18 21 19 def _getBold(self): 22 return self._bold20 return (self._nativeObject.GetWeight() == wx.BOLD) 23 21 24 22 def _setBold(self, val): 25 self._bold = val 23 if val: 24 self._nativeObject.SetWeight(wx.BOLD) 25 else: 26 self._nativeObject.SetWeight(wx.LIGHT) 26 27 27 28 28 29 def _getDescription(self): 29 return self._description 30 31 def _setDescription(self, val): 32 self._description = val 30 ret = self.Face + " " + str(self.Size) 31 if self.Bold: 32 ret += " B" 33 if self.Italic: 34 ret += " I" 35 return ret 33 36 34 37 35 38 def _getFace(self): 36 return self._ face39 return self._nativeObject.GetFaceName() 37 40 38 41 def _setFace(self, val): 39 self._ face = val42 self._nativeObject.SetFaceName(val) 40 43 41 44 42 45 def _getItalic(self): 43 return self._italic46 return (self._nativeObject.GetStyle() == wx.ITALIC) 44 47 45 48 def _setItalic(self, val): 46 self._italic = val 49 if val: 50 self._nativeObject.SetStyle(wx.ITALIC) 51 else: 52 self._nativeObject.SetStyle(wx.NORMAL) 53 54 55 def _getNativeObject(self): 56 return self._nativeObject 57 58 def _setNativeObject(self, val): 59 self._nativeObject = val 47 60 48 61 49 62 def _getSize(self): 50 return self._ size63 return self._nativeObject.GetPointSize() 51 64 52 65 def _setSize(self, val): 53 self._ size = val66 self._nativeObject.SetPointSize(val) 54 67 55 68 56 69 def _getUnderline(self): 57 return self._ underline70 return self._nativeObject.GetUnderlined() 58 71 59 72 def _setUnderline(self, val): 60 self._ underline = val73 self._nativeObject.SetUnderlined(val) 61 74 62 75 … … 64 77 _("Bold setting for this font (bool)")) 65 78 66 Description = property(_getDescription, _setDescription, None,79 Description = property(_getDescription, None, None, 67 80 _("Read-only plain text description of the font (str)")) 68 81 … … 73 86 _("Italic setting for this font (bool)")) 74 87 88 NativeObject = property(_getNativeObject, _setNativeObject, None, 89 _("UI toolkit-specific font object (wx.Font)")) 90 75 91 Size = property(_getSize, _setSize, None, 76 92 _("Size in points for this font (int)")) trunk/dabo/ui/uiwx/dGrid.py
r1784 r1788 354 354 kwargs["Parent"] = parent 355 355 # dColumn maintains one attr object that the grid table will use: 356 a = self._gridColAttr = parent._defaultGridColAttr.Clone()357 a .SetFont(self._getDefaultFont())356 att = self._gridColAttr = parent._defaultGridColAttr.Clone() 357 att.SetFont(self._getDefaultFont().NativeObject) 358 358 359 359 super(dColumn, self).__init__(properties, *args, **kwargs) … … 406 406 407 407 def _getDefaultFont(self): 408 font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.LIGHT) 409 if sys.platform[:3] == "win": 408 ret = dabo.ui.dFont(Size=10, Bold=False, Italic=False, 409 Underline=False) 410 if sys.platform.startswith("win"): 410 411 # The wx default is quite ugly 411 font.SetFaceName("Arial")412 font.SetPointSize(9)413 return font412 ret.Face = "Arial" 413 ret.Size = 9 414 return ret 414 415 415 416 … … 695 696 696 697 def _getFont(self): 697 return self._gridColAttr.GetFont()698 return dabo.ui.dFont(font=self._gridColAttr.GetFont()) 698 699 699 700 def _setFont(self, val): 700 701 if self._constructed(): 701 assert isinstance(val, wx.Font) 702 self._gridColAttr.SetFont(val) 702 if not isinstance(val, dabo.ui.dFont): 703 # This will help make sure that any old-style font references 704 # are caught. 705 dabo.errorLog.write("Incorrect font type passed") 706 dabo.dBug.logPoint() 707 return 708 self._gridColAttr.SetFont(val.NativeObject) 703 709 self._refreshGrid() 704 710 else: … … 707 713 708 714 def _getFontBold(self): 709 return self.Font. GetWeight() == wx.BOLD715 return self.Font.Bold 710 716 711 717 def _setFontBold(self, val): 712 718 if self._constructed(): 713 font = self.Font 714 if val: 715 font.SetWeight(wx.BOLD) 716 else: 717 font.SetWeight(wx.LIGHT) 718 self.Font = font 719 self.Font.Bold = val 720 self._gridColAttr.SetFont(self.Font.NativeObject) 721 self._refreshGrid() 719 722 else: 720 723 self._properties["FontBold"] = val 721 724 725 722 726 def _getFontDescription(self): 723 f = self.Font 724 ret = f.GetFaceName() + " " + str(f.GetPointSize()) 725 if f.GetWeight() == wx.BOLD: 726 ret += " B" 727 if f.GetStyle() == wx.ITALIC: 728 ret += " I" 729 return ret 727 return self.Font.Description 728 730 729 731 730 def _getFontInfo(self): 732 return self.Font. GetNativeFontInfoDesc()731 return self.Font.NativeObject.GetNativeFontInfoDesc() 733 732 734 733 735 734 def _getFontItalic(self): 736 return self.Font. GetStyle() == wx.ITALIC735 return self.Font.Italic 737 736 738 737 def _setFontItalic(self, val): 739 738 if self._constructed(): 740 font = self.Font 741 if val: 742 font.SetStyle(wx.ITALIC) 743 else: 744 font.SetStyle(wx.NORMAL) 745 self.Font = font 739 self.Font.Italic = val 740 self._gridColAttr.SetFont(self.Font.NativeObject) 741 self._refreshGrid() 746 742 else: 747 743 self._properties["FontItalic"] = val … … 749 745 750 746 def _getFontFace(self): 751 return self.Font. GetFaceName()747 return self.Font.Face 752 748 753 749 def _setFontFace(self, val): 754 750 if self._constructed(): 755 f = self.Font756 f.SetFaceName(val)757 self. Font = f751 self.Font.Face = val 752 self._gridColAttr.SetFont(self.Font.NativeObject) 753 self._refreshGrid() 758 754 else: 759 755 self._properties["FontFace"] = val … … 761 757 762 758 def _getFontSize(self): 763 return self.Font. GetPointSize()759 return self.Font.Size 764 760 765 761 def _setFontSize(self, val): 766 762 if self._constructed(): 767 font = self.Font768 font.SetPointSize(int(val))769 self. Font = font763 self.Font.Size = val 764 self._gridColAttr.SetFont(self.Font.NativeObject) 765 self._refreshGrid() 770 766 else: 771 767 self._properties["FontSize"] = val 772 768 769 773 770 def _getFontUnderline(self): 774 return self.Font. GetUnderlined()771 return self.Font.Underline 775 772 776 773 def _setFontUnderline(self, val): 777 774 if self._constructed(): 778 # underlining doesn't seem to be working... 779 font = self.Font 780 font.SetUnderlined(bool(val)) 781 self.Font = font 775 self.Font.Underline = val 776 self._gridColAttr.SetFont(self.Font.NativeObject) 777 self._refreshGrid() 782 778 else: 783 779 self._properties["FontUnderline"] = val … … 801 797 v = self._headerFont 802 798 except AttributeError: 803 v = self._ getDefaultFont()804 v. SetWeight(wx.BOLD)799 v = self._headerFont = self._getDefaultFont() 800 v.Bold = True 805 801 return v 806 802 807 803 def _setHeaderFont(self, val): 808 804 if self._constructed(): 805 if not isinstance(val, dabo.ui.dFont): 806 # This will help make sure that any old-style font references 807 # are caught. 808 dabo.errorLog.write("Incorrect font type passed") 809 dabo.dBug.logPoint() 810 return 809 811 self._headerFont = val 810 812 self._refreshHeader() … … 814 816 815 817 def _getHeaderFontBold(self): 816 return self.HeaderFont. GetWeight() == wx.BOLD818 return self.HeaderFont.Bold 817 819 818 820 def _setHeaderFontBold(self, val): 819 821 if self._constructed(): 820 font = self.HeaderFont 821 if val: 822 font.SetWeight(wx.BOLD) 823 else: 824 font.SetWeight(wx.LIGHT) # wx.NORMAL doesn't seem to work... 825 self.HeaderFont = font 822 self.HeaderFont.Bold = val 823 self._refreshHeader() 826 824 else: 827 825 self._properties["HeaderFontBold"] = val 828 826 827 829 828 def _getHeaderFontDescription(self): 830 f = self.HeaderFont 831 ret = f.GetFaceName() + " " + str(f.GetPointSize()) 832 if f.GetWeight() == wx.BOLD: 833 ret += " B" 834 if f.GetStyle() == wx.ITALIC: 835 ret += " I" 836 return ret 829 return self.HeaderFont.Description 830 837 831 838 832 def _getHeaderFontInfo(self): 839 return self.HeaderFont. GetNativeFontInfoDesc()833 return self.HeaderFont.NativeObject.GetNativeFontInfoDesc() 840 834 841 835 842 836 def _getHeaderFontItalic(self): 843 return self.HeaderFont. GetStyle() == wx.ITALIC837 return self.HeaderFont.Italic 844 838 845 839 def _setHeaderFontItalic(self, val): 846 840 if self._constructed(): 847 font = self.HeaderFont 848 if val: 849 font.SetStyle(wx.ITALIC) 850 else: 851 font.SetStyle(wx.NORMAL) 852 self.HeaderFont = font 841 self.HeaderFont.Italic = val 842 self._refreshHeader() 853 843 else: 854 844 self._properties["HeaderFontItalic"] = val … … 856 846 857 847 def _getHeaderFontFace(self): 858 return self.HeaderFont. GetFaceName()848 return self.HeaderFont.Face 859 849 860 850 def _setHeaderFontFace(self, val): 861 851 if self._constructed(): 862 f = self.HeaderFont 863 f.SetFaceName(val) 864 self.HeaderFont = f 852 self.HeaderFont.Face = val 853 self._refreshHeader() 865 854 else: 866 855 self._properties["HeaderFontFace"] = val … … 868 857 869 858 def _getHeaderFontSize(self): 870 return self.HeaderFont. GetPointSize()859 return self.HeaderFont.Size 871 860 872 861 def _setHeaderFontSize(self, val): 873 862 if self._constructed(): 874 font = self.HeaderFont 875 font.SetPointSize(int(val)) 876 self.HeaderFont = font 863 self.HeaderFont.Size = val 864 self._refreshHeader() 877 865 else: 878 866 self._properties["HeaderFontSize"] = val 879 867 868 880 869 def _getHeaderFontUnderline(self): 881 return self.HeaderFont. GetUnderlined()870 return self.HeaderFont.Underline 882 871 883 872 def _setHeaderFontUnderline(self, val): 884 873 if self._constructed(): 885 # underlining doesn't seem to be working... 886 font = self.HeaderFont 887 font.SetUnderlined(bool(val)) 888 self.HeaderFont = font 874 self.HeaderFont.Underline = val 875 self._refreshHeader() 889 876 else: 890 877 self._properties["HeaderFontUnderline"] = val … … 1178 1165 1179 1166 Font = property(_getFont, _setFont, None, 1180 _("The font properties of the column's cells. ( obj)") )1167 _("The font properties of the column's cells. (dFont)") ) 1181 1168 1182 1169 FontBold = property(_getFontBold, _setFontBold, None, … … 1208 1195 1209 1196 HeaderFont = property(_getHeaderFont, _setHeaderFont, None, 1210 _("The font properties of the column's header. ( obj)") )1197 _("The font properties of the column's header. (dFont)") ) 1211 1198 1212 1199 HeaderFontBold = property(_getHeaderFontBold, _setHeaderFontBold, None, … … 1767 1754 # Account for the width of the header caption: 1768 1755 cw = dabo.ui.fontMetricFromFont(colObj.Caption, 1769 colObj.HeaderFont )[0] + capBuffer1756 colObj.HeaderFont.NativeObject)[0] + capBuffer 1770 1757 w = max(autoWidth, cw) 1771 1758 w = min(w, maxWidth) … … 1825 1812 1826 1813 dc.SetTextForeground(fcolor) 1827 font = colObj.HeaderFont 1814 font = colObj.HeaderFont .NativeObject 1828 1815 1829 1816 holdBrush = dc.GetBrush() trunk/dabo/ui/uiwx/dLabel.py
r1593 r1788 1 import wx, dabo, dabo.ui 1 import wx 2 import dabo 2 3 from dabo.dLocalize import _ 3 4 … … 7 8 import dControlMixin as cm 8 9 10 9 11 class dLabel(wx.StaticText, cm.dControlMixin): 10 """Creates a static label, to make a caption for another control, for example. 11 """ 12 """Creates a static label, to make a caption for another control, for example.""" 12 13 def __init__(self, parent, properties=None, *args, **kwargs): 13 14 self._baseClass = dLabel 14 15 preClass = wx.PreStaticText 15 cm.dControlMixin.__init__(self, preClass, parent, properties, *args, **kwargs) 16 17 18 def _initEvents(self): 19 super(dLabel, self)._initEvents() 16 cm.dControlMixin.__init__(self, preClass, parent, 17 properties, *args, **kwargs) 20 18 21 19 … … 23 21 def _getAutoResize(self): 24 22 return not self._hasWindowStyleFlag(wx.ST_NO_AUTORESIZE) 23 25 24 def _setAutoResize(self, value): 26 25 self._delWindowStyleFlag(wx.ST_NO_AUTORESIZE) 27 26 if not value: 28 27 self._addWindowStyleFlag(wx.ST_NO_AUTORESIZE) 28 29 29 30 30 def _getAlignment(self): … … 41 41 self._delWindowStyleFlag(wx.ALIGN_CENTRE) 42 42 self._delWindowStyleFlag(wx.ALIGN_RIGHT) 43 44 43 value = str(value) 45 44 … … 53 52 raise ValueError, ("The only possible values are " 54 53 "'Left', 'Center', and 'Right'.") 54 55 55 56 56 def _getFontBold(self): 57 57 return super(dLabel, self)._getFontBold() 58 58 59 def _setFontBold(self, val): 59 60 super(dLabel, self)._setFontBold(val) … … 61 62 # This will force an auto-resize 62 63 self.SetLabel(self.GetLabel()) 64 63 65 64 66 def _getFontFace(self): 65 67 return super(dLabel, self)._getFontFace() 68 66 69 def _setFontFace(self, val): 67 70 super(dLabel, self)._setFontFace(val) … … 69 72 # This will force an auto-resize 70 73 self.SetLabel(self.GetLabel()) 74 71 75 72 76 def _getFontItalic(self): 73 77 return super(dLabel, self)._getFontItalic() 78 74 79 def _setFontItalic(self, val): 75 80 super(dLabel, self)._setFontItalic(val) … … 78 83 self.SetLabel(self.GetLabel()) 79 84 85 80 86 def _getFontSize(self): 81 87 return super(dLabel, self)._getFontSize() 88 82 89 def _setFontSize(self, val): 83 90 super(dLabel, self)._setFontSize(val) … … 93 100 Center 94 101 Right""") ) 102 95 103 AutoResize = property(_getAutoResize, _setAutoResize, None, 96 _(" Specifies whether the length of the caption determines "97 "the size of the label. (bool)") )104 _("""Specifies whether the length of the caption determines 105 the size of the label. (bool)""") ) 98 106 99 107 FontBold = property(_getFontBold, _setFontBold, None, 100 108 _("Sets the Bold of the Font (int)") ) 109 101 110 FontFace = property(_getFontFace, _setFontFace, None, 102 111 _("Sets the face of the Font (int)") ) 112 103 113 FontItalic = property(_getFontItalic, _setFontItalic, None, 104 114 _("Sets the Italic of the Font (int)") ) 115 105 116 FontSize = property(_getFontSize, _setFontSize, None, 106 117 _("Sets the size of the Font (int)") ) … … 115 126 self.Caption = "My God, it's full of stars!" 116 127 128 117 129 if __name__ == "__main__": 118 130 import test trunk/dabo/ui/uiwx/dPemMixin.py
r1787 r1788 1252 1252 def _getFont(self): 1253 1253 ret = dabo.ui.dFont(Bold=self.FontBold, 1254 Description=self.FontDescription, Face=self.FontFace, 1255 Italic=self.FontItalic, Size=self.FontSize, 1256 Underline=self.FontUnderline) 1257 ret._baseObject = self.GetFont() 1254 Face=self.FontFace, Italic=self.FontItalic, 1255 Size=self.FontSize, Underline=self.FontUnderline) 1258 1256 return ret 1259 1257 trunk/dabo/ui/uiwx/dTreeView.py
r1782 r1788 61 61 62 62 63 def _getCap(self): 64 if self.txt: 65 ret = self.txt 66 else: 67 ret = self.tree.GetItemText(self._id) 68 return ret 69 70 def _setCap(self, val): 71 self.txt = val 72 self.tree.SetItemText(self._id, val) 73 74 75 def _getChildren(self): 76 return self.tree.getChildren(self) 77 78 79 def _getDescendents(self): 80 return self.tree.getDescendents(self) 81 82 63 83 def _getFont(self): 64 return self.tree.GetItemFont(self._id)84 return dabo.ui.dFont(font=self.tree.GetItemFont(self._id)) 65 85 66 86 def _setFont(self, val): 67 assert isinstance(val, wx.Font) 68 self.tree.SetItemFont(self._id, val) 87 if not isinstance(val, dabo.ui.dFont): 88 # This will help make sure that any old-style font references 89 # are caught. 90 dabo.errorLog.write("Incorrect font type passed") 91 dabo.dBug.logPoint() 92 return 93 self.tree.SetItemFont(self._id, val.NativeObject) 69 94 70 95 71 96 def _getFontBold(self): 72 return self. Font.GetWeight() == wx.BOLD97 return self.tree.IsBold(self._id) 73 98 74 99 def _setFontBold(self, val): 75 font = self.Font 76 if val: 77 font.SetWeight(wx.BOLD) 78 else: 79 font.SetWeight(wx.LIGHT) 80 self.Font = font 100 self.tree.SetItemBold(self._id, val) 101 81 102 82 103 def _getFontDescription(self): 83 f = self.Font 84 ret = f.GetFaceName() + " " + str(f.GetPointSize()) 85 if f.GetWeight() == wx.BOLD: 86 ret += " B" 87 if f.GetStyle() == wx.ITALIC: 88 ret += " I" 89 return ret 104 return self.Font.Description 105 90 106 91 107 def _getFontInfo(self): 92 return self.Font. GetNativeFontInfoDesc()108 return self.Font.NativeObject.GetNativeFontInfoDesc() 93 109 94 110 95 111 def _getFontItalic(self): 96 return self.Font. GetStyle() == wx.ITALIC112 return self.Font.Italic 97 113 98 114 def _setFontItalic(self, val): 99 font = self.Font 100 if val: 101 font.SetStyle(wx.ITALIC) 102 else: 103 font.SetStyle(wx.NORMAL) 104 self.Font = font 115 self.Font.Italic = val 116 self.tree.SetItemFont(self._id, self.Font.NativeObject) 105 117 106 118 107 119 def _getFontFace(self): 108 return self.Font. GetFaceName()120 return self.Font.Face 109 121 110 122 def _setFontFace(self, val): 111 f = self.Font 112 f.SetFaceName(val) 113 self.Font = f 123 self.Font.Face = val 124 self.tree.SetItemFont(self._id, self.Font.NativeObject) 114 125 115 126 116 127 def _getFontSize(self): 117 return self.Font. GetPointSize()128 return self.Font.Size 118 129 119 130 def _setFontSize(self, val): 120 font = self.Font121 font.SetPointSize(int(val))122 self.Font = font131 self.Font.Size = val 132 self.tree.SetItemFont(self._id, self.Font.NativeObject) 133 123 134 124 135 def _getFontUnderline(self): 125 return self.Font. GetUnderlined()136 return self.Font.Underline 126 137 127 138 def _setFontUnderline(self, val): 128 # underlining doesn't seem to be working... 129 font = self.Font 130 font.SetUnderlined(bool(val)) 131 self.Font = font 139 self.Font.Underline = val 140 self.tree.SetItemFont(self._id, self.Font.NativeObject) 132 141 133 142 … … 136 145 137 146 def _setForeColor(self, val): 138 139 147 if isinstance(val, basestring): 140 148 try: … … 143 151 self.tree.SetItemTextColour(self._id, val) 144 152 153 145 154 def _getImg(self): 146 155 return self.tree.getNodeImg(self) 156 147 157 def _setImg(self, key): 148 158 return self.tree.setNodeImg(self, key) 149 159 150 def _getCap(self): 151 if self.txt: 152 ret = self.txt 153 else: 154 ret = self.tree.GetItemText(self._id) 155 return ret 156 def _setCap(self, val): 157 self.txt = val 158 self.tree.SetItemText(self._id, val) 159 160 def _getChildren(self): 161 return self.tree.getChildren(self) 162 163 def _getDescendents(self): 164 return self.tree.getDescendents(self) 165 160 166 161 def _getSel(self): 167 162 sel = self.tree.Selection … … 171 166 ret = (self == sel) 172 167 return ret 168 173 169 def _setSel(self, val): 174 170 self.tree.SelectItem(self._id, val) 171 175 172 176 173 def _getSiblings(self):
