Move STYLE_TYPE and STYLE_DEFAULT constants from StyledTextBuffer to StyledTextTagType.

svn: r10629
This commit is contained in:
Zsolt Foldvari 2008-04-23 13:34:13 +00:00
parent 40884d66f6
commit 9bf1c718f6
3 changed files with 46 additions and 44 deletions

View File

@ -57,28 +57,6 @@ from gen.lib import (StyledText, StyledTextTag, StyledTextTagType)
# FIXME
ALLOWED_STYLES = [i for (i, s, e) in StyledTextTagType._DATAMAP]
STYLE_TYPE = {
StyledTextTagType.BOLD: bool,
StyledTextTagType.ITALIC: bool,
StyledTextTagType.UNDERLINE: bool,
StyledTextTagType.FONTCOLOR: str,
StyledTextTagType.HIGHLIGHT: str,
StyledTextTagType.FONTFACE: str,
StyledTextTagType.FONTSIZE: int,
StyledTextTagType.SUPERSCRIPT: bool,
}
STYLE_DEFAULT = {
StyledTextTagType.BOLD: False,
StyledTextTagType.ITALIC: False,
StyledTextTagType.UNDERLINE: False,
StyledTextTagType.FONTCOLOR: '#000000',
StyledTextTagType.HIGHLIGHT: '#FFFFFF',
StyledTextTagType.FONTFACE: 'Sans',
StyledTextTagType.FONTSIZE: 10,
StyledTextTagType.SUPERSCRIPT: False,
}
STYLE_TO_PROPERTY = {
StyledTextTagType.BOLD: 'weight', # permanent tag is used instead
StyledTextTagType.ITALIC: 'style', # permanent tag is used instead
@ -90,7 +68,6 @@ STYLE_TO_PROPERTY = {
StyledTextTagType.SUPERSCRIPT: 'rise',
}
(MATCH_START,
MATCH_END,
MATCH_FLAVOR,
@ -265,7 +242,7 @@ class StyledTextBuffer(gtk.TextBuffer):
## 1. are used to format inserted characters (self.after_insert_text)
## 2. are set each time the Insert marker is set (self.do_mark_set)
## 3. are set when a style is set (self._apply_style_to_selection)
self.style_state = STYLE_DEFAULT.copy()
self.style_state = StyledTextTagType.STYLE_DEFAULT.copy()
# internally used attribute
self._insert = self.get_insert()
@ -308,7 +285,7 @@ class StyledTextBuffer(gtk.TextBuffer):
# apply active formats for the inserted text
for style in ALLOWED_STYLES:
value = self.style_state[style]
if value and (value != STYLE_DEFAULT[style]):
if value and (value != StyledTextTagType.STYLE_DEFAULT[style]):
self.apply_tag(self._find_tag_by_name(style, value),
insert_start, iter)
@ -353,14 +330,14 @@ class StyledTextBuffer(gtk.TextBuffer):
changed_styles = {}
for style in ALLOWED_STYLES:
if STYLE_TYPE[style] == bool:
if StyledTextTagType.STYLE_TYPE[style] == bool:
value = str(style) in tag_names
else:
value = STYLE_DEFAULT[style]
value = StyledTextTagType.STYLE_DEFAULT[style]
for tname in tag_names:
if tname.startswith(str(style)):
value = tname.split(' ', 1)[1]
value = STYLE_TYPE[style](value)
value = StyledTextTagType.STYLE_TYPE[style](value)
if self.style_state[style] != value:
changed_styles[style] = value
@ -416,18 +393,18 @@ class StyledTextBuffer(gtk.TextBuffer):
def _apply_style_to_selection(self, style, value):
# FIXME can this be unified?
if STYLE_TYPE[style] == bool:
if StyledTextTagType.STYLE_TYPE[style] == bool:
start, end = self._get_selection()
if value:
self.apply_tag_by_name(str(style), start, end)
else:
self.remove_tag_by_name(str(style), start, end)
elif STYLE_TYPE[style] == str:
elif StyledTextTagType.STYLE_TYPE[style] == str:
tag = self._find_tag_by_name(style, value)
self._remove_style_from_selection(style)
self._apply_tag_to_selection(tag)
elif STYLE_TYPE[style] == int:
elif StyledTextTagType.STYLE_TYPE[style] == int:
tag = self._find_tag_by_name(style, value)
self._remove_style_from_selection(style)
self._apply_tag_to_selection(tag)
@ -488,11 +465,11 @@ class StyledTextBuffer(gtk.TextBuffer):
If TextTag does not exist yet, it is created.
"""
if STYLE_TYPE[style] == bool:
if StyledTextTagType.STYLE_TYPE[style] == bool:
tag_name = str(style)
elif STYLE_TYPE[style] == str:
elif StyledTextTagType.STYLE_TYPE[style] == str:
tag_name = "%d %s" % (style, value)
elif STYLE_TYPE[style] == int:
elif StyledTextTagType.STYLE_TYPE[style] == int:
tag_name = "%d %d" % (style, value)
else:
raise ValueError("Unknown style (%s) value type: %s" %
@ -501,7 +478,7 @@ class StyledTextBuffer(gtk.TextBuffer):
tag = self.get_tag_table().lookup(tag_name)
if not tag:
if STYLE_TYPE[style] != bool:
if StyledTextTagType.STYLE_TYPE[style] != bool:
# bool style tags are not created here, but in constuctor
tag = self.create_tag(tag_name)
tag.set_property(STYLE_TO_PROPERTY[style], value)
@ -554,7 +531,8 @@ class StyledTextBuffer(gtk.TextBuffer):
if len(style_and_value) == 1:
s_value = None
else:
s_value = STYLE_TYPE[style](style_and_value[1])
s_value = StyledTextTagType.STYLE_TYPE[style]\
(style_and_value[1])
if style in ALLOWED_STYLES:
s_ranges = [(start, end+1) for (start, end) in g_ranges]
@ -575,9 +553,10 @@ class StyledTextBuffer(gtk.TextBuffer):
@type value: depends on the I{style} type
"""
if not isinstance(value, STYLE_TYPE[style]):
if not isinstance(value, StyledTextTagType.STYLE_TYPE[style]):
raise TypeError("Style (%d) value must be %s and not %s" %
(style, STYLE_TYPE[style], value.__class__))
(style, StyledTextTagType.STYLE_TYPE[style],
value.__class__))
self._apply_style_to_selection(style, value)

View File

@ -48,7 +48,6 @@ from pango import UNDERLINE_SINGLE
#-------------------------------------------------------------------------
from gen.lib import StyledTextTagType
from Editors._StyledTextBuffer import (StyledTextBuffer, ALLOWED_STYLES,
STYLE_TYPE, STYLE_DEFAULT,
MATCH_START, MATCH_END,
MATCH_FLAVOR, MATCH_STRING)
from Spell import Spell
@ -482,7 +481,7 @@ class StyledTextEditor(gtk.TextView):
if self._internal_style_change:
return
value = STYLE_TYPE[style](combobox.get_active_text())
value = StyledTextTagType.STYLE_TYPE[style](combobox.get_active_text())
_LOG.debug("applying style '%d' with value '%s'" % (style, str(value)))
self.textbuffer.apply_style(style, value)
@ -513,8 +512,8 @@ class StyledTextEditor(gtk.TextView):
model = combo.get_model()
iter = model.get_iter_first()
while iter:
if (STYLE_TYPE[style](model.get_value(iter, 0)) ==
changed_styles[style]):
if (StyledTextTagType.STYLE_TYPE[style](
model.get_value(iter, 0)) == changed_styles[style]):
break
iter = model.iter_next(iter)
@ -685,7 +684,8 @@ def set_fontface_toolitem(combotoolitem, callback):
fontface.append_text(family)
try:
default = families.index(STYLE_DEFAULT[StyledTextTagType.FONTFACE])
def_fam = StyledTextTagType.STYLE_DEFAULT[StyledTextTagType.FONTFACE]
default = families.index(def_fam)
except ValueError:
default = 0
fontface.set_active(default)
@ -702,7 +702,8 @@ def set_fontsize_toolitem(combotoolitem, callback):
fontsize.append_text(str(size))
try:
default = FONT_SIZES.index(STYLE_DEFAULT[StyledTextTagType.FONTSIZE])
def_size = StyledTextTagType.STYLE_DEFAULT[StyledTextTagType.FONTSIZE]
default = FONT_SIZES.index(def_size)
except ValueError:
default = 0
fontsize.set_active(default)

View File

@ -70,6 +70,28 @@ class StyledTextTagType(GrampsType):
(HIGHLIGHT, _("Highlight"), "highlight"),
(SUPERSCRIPT, _("Superscript"), "superscript"),
]
STYLE_TYPE = {
BOLD: bool,
ITALIC: bool,
UNDERLINE: bool,
FONTCOLOR: str,
HIGHLIGHT: str,
FONTFACE: str,
FONTSIZE: int,
SUPERSCRIPT: bool,
}
STYLE_DEFAULT = {
BOLD: False,
ITALIC: False,
UNDERLINE: False,
FONTCOLOR: '#000000',
HIGHLIGHT: '#FFFFFF',
FONTFACE: 'Sans',
FONTSIZE: 10,
SUPERSCRIPT: False,
}
def __init__(self, value=None):
GrampsType.__init__(self, value)