@@ -306,6 +306,11 @@ def underline(self):
306306 return None
307307 return rPr .underline
308308
309+ @underline .setter
310+ def underline (self , value ):
311+ rPr = self .get_or_add_rPr ()
312+ rPr .underline = value
313+
309314 def _add_rPr (self ):
310315 """
311316 Return a newly added rPr child element. Assumes one is not present.
@@ -665,6 +670,11 @@ def remove_strike(self):
665670 for strike in strike_lst :
666671 self .remove (strike )
667672
673+ def remove_u (self ):
674+ u_lst = self .findall (qn ('w:u' ))
675+ for u in u_lst :
676+ self .remove (u )
677+
668678 def remove_vanish (self ):
669679 vanish_lst = self .findall (qn ('w:vanish' ))
670680 for vanish in vanish_lst :
@@ -767,6 +777,13 @@ def underline(self):
767777 return None
768778 return u .val
769779
780+ @underline .setter
781+ def underline (self , value ):
782+ self .remove_u ()
783+ if value is not None :
784+ u = self ._add_u ()
785+ u .val = value
786+
770787 @property
771788 def vanish (self ):
772789 """
@@ -786,6 +803,14 @@ def _add_rStyle(self, style):
786803 self .insert (0 , rStyle )
787804 return rStyle
788805
806+ def _add_u (self ):
807+ """
808+ Return a newly added <w:u/> child element.
809+ """
810+ u = OxmlElement ('w:u' )
811+ self .insert (0 , u )
812+ return u
813+
789814
790815class CT_Text (OxmlBaseElement ):
791816 """
@@ -833,3 +858,28 @@ def val(self):
833858 }
834859 val = self .get (qn ('w:val' ))
835860 return underline_type_map [val ]
861+
862+ @val .setter
863+ def val (self , value ):
864+ underline_vals = {
865+ True : 'single' ,
866+ False : 'none' ,
867+ WD_UNDERLINE .WORDS : 'words' ,
868+ WD_UNDERLINE .DOUBLE : 'double' ,
869+ WD_UNDERLINE .DOTTED : 'dotted' ,
870+ WD_UNDERLINE .THICK : 'thick' ,
871+ WD_UNDERLINE .DASH : 'dash' ,
872+ WD_UNDERLINE .DOT_DASH : 'dotDash' ,
873+ WD_UNDERLINE .DOT_DOT_DASH : 'dotDotDash' ,
874+ WD_UNDERLINE .WAVY : 'wave' ,
875+ WD_UNDERLINE .DOTTED_HEAVY : 'dottedHeavy' ,
876+ WD_UNDERLINE .DASH_HEAVY : 'dashedHeavy' ,
877+ WD_UNDERLINE .DOT_DASH_HEAVY : 'dashDotHeavy' ,
878+ WD_UNDERLINE .DOT_DOT_DASH_HEAVY : 'dashDotDotHeavy' ,
879+ WD_UNDERLINE .WAVY_HEAVY : 'wavyHeavy' ,
880+ WD_UNDERLINE .DASH_LONG : 'dashLong' ,
881+ WD_UNDERLINE .WAVY_DOUBLE : 'wavyDouble' ,
882+ WD_UNDERLINE .DASH_LONG_HEAVY : 'dashLongHeavy' ,
883+ }
884+ val = underline_vals [value ]
885+ self .set (qn ('w:val' ), val )
0 commit comments