2
2
# coding: utf-8
3
3
# experiments with attributed strings
4
4
5
- from objc import *
5
+ from objc_util import *
6
6
import ctypes
7
7
8
8
NSMutableAttributedString = ObjCClass ('NSMutableAttributedString' )
9
+ UIColor = ObjCClass ('UIColor' )
9
10
NSFontAttributeName = ns ('NSFont' )
11
+ NSForegroundColorAttributeName = ns ('NSColor' )
10
12
UIFont = ObjCClass ('UIFont' )
11
13
12
14
13
15
import ui
16
+
17
+
18
+
19
+ def buildAttributes ():
20
+ # d=NSMutableDictionary.new()
21
+ d = {
22
+ NSForegroundColorAttributeName :UIColor .colorWithRed_green_blue_alpha_ (tv .R ,tv .G ,tv .B ,1. ),
23
+ NSFontAttributeName :UIFont .systemFontOfSize_ (tv .fontsize )
24
+ }
25
+ tvobj .setTypingAttributes_ (d )
26
+ desclbl .text = 'Font size={} R={:0.2f}, G={:0.2f}, B={:0.2f}' .format (tv .fontsize , tv .R , tv .G , tv .B )
27
+ return d
28
+
29
+ def SizeSliderAction (sender ):
30
+ tv .fontsize = round (6 + sender .value * 72.0 )
31
+ buildAttributes ()
32
+
33
+
34
+ def RGBSliderAction (color ):
35
+ def action (sender ):
36
+ setattr (tv ,color ,sender .value )
37
+ buildAttributes ()
38
+ return action
39
+ count = 0
40
+ def textview_should_change (sender ,text ):
41
+ global count
42
+ buildAttributes ()
43
+ count += 1
44
+ return True
14
45
v = ui .View (frame = (0 ,0 ,576 ,576 ),bg_color = (0.7 ,)* 3 )
15
- txtsize = ui .Slider (bg_color = (1 ,1 ,1 ),frame = (0 ,50 ,300 ,50 ))
16
- def slideraction (sender ):
17
- d = NSMutableDictionary .new ()
18
- sz = round (6 + sender .value * 72.0 )
19
- f = UIFont .systemFontOfSize_ (sz )
20
- d .setValue_forKey_ (f ,NSFontAttributeName )
21
- lblobj .setTypingAttributes_ (d )
22
- txtsizelbl .text = 'FontSize={}' .format (sz )
23
- txtsize .action = slideraction
24
- txtsizelbl = ui .Label (frame = (0 ,0 ,300 ,20 ))
46
+ txtsize = ui .Slider (bg_color = (1 ,1 ,1 ),frame = (0 ,50 ,300 ,30 ))
47
+ redslider = ui .Slider (bg_color = (1 ,0 ,0 ),frame = (0 ,80 ,300 ,30 ))
48
+ greenslider = ui .Slider (bg_color = (0 ,1 ,0 ),frame = (0 ,110 ,300 ,30 ))
49
+ blueslider = ui .Slider (bg_color = (0 ,0 ,1 ),frame = (0 ,140 ,300 ,30 ))
50
+
51
+ txtsize .action = SizeSliderAction
52
+ redslider .action = RGBSliderAction ('R' )
53
+ greenslider .action = RGBSliderAction ('G' )
54
+ blueslider .action = RGBSliderAction ('B' )
55
+
56
+
57
+ desclbl = ui .Label (frame = (0 ,0 ,300 ,20 ))
25
58
26
59
v .add_subview (txtsize )
27
- v .add_subview (txtsizelbl )
28
- lbl = ui .TextView (bg_color = 'white' ,frame = (0 ,150 ,300 ,300 ))
29
- lbl .text = 'type here'
30
- txtsizelbl .text = 'Font size={}' .format (lbl .font [1 ])
31
- txtsize .value = (lbl .font [1 ]- 6 )/ 72.0
32
- v .add_subview (lbl )
60
+ v .add_subview (redslider )
61
+ v .add_subview (greenslider )
62
+ v .add_subview (blueslider )
63
+ v .add_subview (desclbl )
64
+ tv = ui .TextView (bg_color = 'white' ,frame = (0 ,150 ,300 ,300 ))
65
+
66
+ tv .textview_should_change = textview_should_change
67
+ tv .delegate = tv
68
+ tv .fontsize = 12
69
+ tv .R = 0
70
+ tv .G = 0
71
+ tv .B = 0
72
+ tv .text = 'type here'
73
+
74
+ txtsize .value = (tv .font [1 ]- 6 )/ 72.0
75
+ v .add_subview (tv )
33
76
v .present ('sheet' )
34
- lblobj = ObjCInstance (lbl ._objc_ptr )
77
+ tvobj = ObjCInstance (tv )
78
+ buildAttributes ()
0 commit comments