Skip to content

Commit 0b89586

Browse files
author
Steve Canny
committed
style: add BaseStyle.hidden setter
1 parent 167de84 commit 0b89586

4 files changed

Lines changed: 30 additions & 1 deletion

File tree

docx/oxml/styles.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ def semiHidden_val(self):
118118
return False
119119
return semiHidden.val
120120

121+
@semiHidden_val.setter
122+
def semiHidden_val(self, value):
123+
self._remove_semiHidden()
124+
if bool(value) is True:
125+
semiHidden = self._add_semiHidden()
126+
semiHidden.val = value
127+
121128

122129
class CT_Styles(BaseOxmlElement):
123130
"""

docx/styles/style.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ def hidden(self):
6969
"""
7070
return self._element.semiHidden_val
7171

72+
@hidden.setter
73+
def hidden(self, value):
74+
self._element.semiHidden_val = value
75+
7276
@property
7377
def name(self):
7478
"""

features/sty-style-props.feature

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ Feature: Get and set style properties
3737
| no setting | False |
3838

3939

40-
@wip
4140
Scenario Outline: Set hidden value
4241
Given a style having hidden set <setting>
4342
When I assign <new-value> to style.hidden

tests/styles/test_style.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ def it_knows_whether_its_hidden(self, hidden_get_fixture):
127127
style, expected_value = hidden_get_fixture
128128
assert style.hidden == expected_value
129129

130+
def it_can_change_whether_its_hidden(self, hidden_set_fixture):
131+
style, value, expected_xml = hidden_set_fixture
132+
style.hidden = value
133+
assert style._element.xml == expected_xml
134+
130135
def it_can_delete_itself_from_the_document(self, delete_fixture):
131136
style, styles, expected_xml = delete_fixture
132137
style.delete()
@@ -163,6 +168,20 @@ def hidden_get_fixture(self, request):
163168
style = BaseStyle(element(style_cxml))
164169
return style, expected_value
165170

171+
@pytest.fixture(params=[
172+
('w:style', True, 'w:style/w:semiHidden'),
173+
('w:style/w:semiHidden{w:val=0}', True, 'w:style/w:semiHidden'),
174+
('w:style/w:semiHidden{w:val=1}', True, 'w:style/w:semiHidden'),
175+
('w:style', False, 'w:style'),
176+
('w:style/w:semiHidden', False, 'w:style'),
177+
('w:style/w:semiHidden{w:val=1}', False, 'w:style'),
178+
])
179+
def hidden_set_fixture(self, request):
180+
style_cxml, value, expected_cxml = request.param
181+
style = BaseStyle(element(style_cxml))
182+
expected_xml = xml(expected_cxml)
183+
return style, value, expected_xml
184+
166185
@pytest.fixture(params=[
167186
('w:style', None),
168187
('w:style{w:styleId=Foobar}', 'Foobar'),

0 commit comments

Comments
 (0)