mirror of https://github.com/kivy/kivy.git
297 lines
9.8 KiB
Python
297 lines
9.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
|
||
from kivy.base import runTouchApp
|
||
from kivy.lang import Builder
|
||
from kivy.factory import Factory as F
|
||
|
||
|
||
class DemoBox(F.ButtonBehavior, F.BoxLayout):
|
||
base_direction = F.StringProperty(None, allownone=True)
|
||
font_context = F.StringProperty(None, allownone=True)
|
||
font_size = F.NumericProperty(10)
|
||
|
||
|
||
runTouchApp(Builder.load_string('''
|
||
#:import F kivy.factory.Factory
|
||
<MenuLabel@Label>:
|
||
bold: True
|
||
size_hint_x: None
|
||
width: '150dp'
|
||
text_size: self.size
|
||
halign: 'right'
|
||
valign: 'middle'
|
||
<MyToggleButton@ToggleButton>:
|
||
hacked_state: False
|
||
allow_no_selection: False
|
||
on_state: self.hacked_state = self.state == 'down'
|
||
<HalignButton@MyToggleButton>:
|
||
text: 'auto'
|
||
group: 'halign'
|
||
on_hacked_state: for c in root.parent.__boxes.children: \
|
||
c.halign = root.text
|
||
<FontButton@MyToggleButton>:
|
||
text: '20'
|
||
group: 'font'
|
||
on_hacked_state: for c in root.parent.__boxes.children: \
|
||
c.font_size = int(root.text)
|
||
<ContextButton@MyToggleButton>:
|
||
text: 'system://'
|
||
group: 'context'
|
||
on_hacked_state: for c in root.parent.__boxes.children: \
|
||
c.font_context = root.text
|
||
<BaseDirButton@MyToggleButton>:
|
||
text: 'None'
|
||
group: 'basedir'
|
||
on_hacked_state: for c in root.parent.__boxes.children: \
|
||
c.base_direction = root.text
|
||
<EditPopup@Popup>:
|
||
size_hint: .8, .8
|
||
text: ''
|
||
BoxLayout:
|
||
orientation: 'vertical'
|
||
TextInput:
|
||
multiline: True
|
||
id: ti
|
||
text: root.text
|
||
cursor_width: 3
|
||
Button:
|
||
size_hint_y: None
|
||
text: 'Close'
|
||
on_press: root.dismiss()
|
||
<DemoBox>:
|
||
text: ti.text
|
||
language: ''
|
||
halign: 'auto'
|
||
font_size: '20sp'
|
||
font_context: 'system://'
|
||
base_direction: None
|
||
markup: True
|
||
orientation: 'horizontal'
|
||
padding: '5dp'
|
||
spacing: '5dp'
|
||
size_hint_y: None
|
||
height: lbl.texture_size[1] + 25
|
||
on_text:
|
||
if self.text: ti.text = self.text
|
||
Button:
|
||
text: 'Open'
|
||
size_hint_x: None
|
||
on_press:
|
||
pop = F.EditPopup()
|
||
pop.text = lbl.text
|
||
pop.ids.ti.halign = root.halign
|
||
pop.ids.ti.font_size = root.font_size
|
||
pop.ids.ti.font_context = root.font_context != 'None' \
|
||
and root.font_context or None
|
||
pop.ids.ti.base_direction = root.base_direction != 'None' \
|
||
and root.base_direction or None
|
||
pop.title = 'Edit: {}'.format(root.language)
|
||
pop.open()
|
||
Label:
|
||
text: root.language
|
||
text_size: self.size
|
||
halign: 'left'
|
||
bold: True
|
||
size_hint_x: None
|
||
width: 150
|
||
halign: 'left'
|
||
valign: 'middle'
|
||
font_size: '15sp'
|
||
color: 1, 1, 0, 1
|
||
canvas.before:
|
||
Color:
|
||
rgba: 1, 1, 1, .5
|
||
Rectangle:
|
||
pos: self.pos
|
||
size: self.size
|
||
Label:
|
||
id: lbl
|
||
halign: root.halign
|
||
text: root.text
|
||
markup: root.markup
|
||
font_context: root.font_context != 'None' and \
|
||
root.font_context or None
|
||
base_direction: root.base_direction != 'None' and \
|
||
root.base_direction or None
|
||
font_size: root.font_size
|
||
text_size: self.width, None
|
||
canvas.before:
|
||
Color:
|
||
rgba: 1, 1, 1, .1
|
||
Rectangle:
|
||
pos: self.pos
|
||
size: self.size
|
||
TextInput:
|
||
id: ti
|
||
halign: root.halign
|
||
cursor_width: 3
|
||
font_context: root.font_context != 'None' and root.font_context or None
|
||
base_direction: root.base_direction != 'None' and \
|
||
root.base_direction or None
|
||
font_size: root.font_size
|
||
BoxLayout:
|
||
orientation: 'vertical'
|
||
ScrollView:
|
||
id: sv
|
||
bar_color: [.1, .75, .1, .95]
|
||
bar_inactive_color: [.5, .5, .5, .8]
|
||
bar_width: '20dp'
|
||
BoxLayout:
|
||
id: boxes
|
||
orientation: 'vertical'
|
||
size_hint: None, None
|
||
height: self.minimum_height
|
||
width: sv.width - 25 # don't draw below scrollbar
|
||
DemoBox:
|
||
markup: True
|
||
language: 'Arabic'
|
||
text: 'اَلْحَمْدُ لِلّٰهِ رَبِّ \
|
||
[color=ff0000]الْعَالَمِينَ\
|
||
\\nاَلرَّحْ[/color]مٰنِ الرَّحِيمِ'
|
||
DemoBox:
|
||
language: 'Arabic + English'
|
||
text: 'اِيَّاكَ نَعْبُدُ Kivyوَ اِيَّاكَ نَسْتَعِينُ\\nKivy'
|
||
DemoBox:
|
||
language: 'English + Arabic'
|
||
text: 'Kivy\\nاِيَّاكَ نَعْبُدُ وَKivy اِيَّاكَ نَسْتَعِينُ'
|
||
DemoBox:
|
||
language: 'Hebrew'
|
||
text: 'בְּרֵאשִׁ֖ית בָּרָ֣א \
|
||
\\nאֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃'
|
||
DemoBox:
|
||
language: 'Hebrew + English'
|
||
text: 'בְּרֵאKivyשִׁ֖ית בָּרָ֣א \\nKivy'
|
||
DemoBox:
|
||
language: 'English + Hebrew'
|
||
text: 'Kivy\\nבְּרֵאשִׁ֖יKivyת בָּרָ֣א '
|
||
DemoBox:
|
||
language: 'Chinese'
|
||
text: '你好,这是中文竖排测试。\\n欢迎来到中国北京。'
|
||
DemoBox:
|
||
language: 'Chinese + English'
|
||
text: '你好,这是Kivy中文竖排测试。\\nKivy'
|
||
DemoBox:
|
||
language: 'English + Chinese'
|
||
text: 'Kivy\\n你好,这是中Kivy文竖排测试。'
|
||
DemoBox:
|
||
language: 'Syriac'
|
||
text: 'ܐܬܐܡܘܢ ܥܠܝܡܢ \\nܘܥܠܝܡܬܢ'
|
||
DemoBox:
|
||
language: 'Syriac + English'
|
||
text: 'ܐܬܐܡܘܢ Kivyܥܠܝܡܢ ܘܥܠܝܡܬܢ\\nKivy'
|
||
DemoBox:
|
||
language: 'English + Syriac'
|
||
text: 'Kivyܐܬܐܡܘܢ ܥܠKivyܝܡܢ ܘܥܠܝܡܬܢ\\nKivy'
|
||
DemoBox:
|
||
language: 'Tibetan'
|
||
text: ' འབྲུག་རྒྱལ་ཁབ\\n་འདི་དགའ་ཏོག་ཏོ་ཡོད།'
|
||
DemoBox:
|
||
language: 'Tibetan + English'
|
||
text: ' འ Kivyབྲུག་རྒྱལ་ཁབ\\n་འདི་དགKivyའ་ཏོག་ཏོ་ཡོད།'
|
||
DemoBox:
|
||
language: 'English + Tibetan'
|
||
text: 'Regular letters\\n\
|
||
འབྲུག་རྒྱལ་ཁབ་འདི་དགའ་Kivyཏོག་ཏོ་ཡོད།'
|
||
DemoBox:
|
||
language: 'Braille (EN)'
|
||
text: '⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀\\n⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑'
|
||
DemoBox:
|
||
language: 'Braille (EN) + English'
|
||
text: '⠊⠀⠉⠁⠝⠀⠑⠁⠞Kivy\\n⠀⠛⠇⠁⠎⠎⠀⠁⠝Kivy⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑'
|
||
DemoBox:
|
||
markup: True
|
||
language: 'Braille (EN) + English'
|
||
text: '⠊⠀⠉⠁⠝⠀⠑⠁⠞Kivy\\n⠀⠛⠇⠁⠎⠎⠀⠁⠝Kivy\
|
||
⠙⠀⠊⠞⠀[color=ff0000]⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑[/color]'
|
||
# --------------------------------------- HALIGN
|
||
BoxLayout:
|
||
__boxes: boxes
|
||
orientation: 'horizontal'
|
||
size_hint_y: None
|
||
height: '30dp'
|
||
MenuLabel:
|
||
text: 'set halign ='
|
||
HalignButton:
|
||
text: 'auto'
|
||
state: 'down'
|
||
HalignButton:
|
||
text: 'left'
|
||
HalignButton:
|
||
text: 'center'
|
||
HalignButton:
|
||
text: 'right'
|
||
# Not supported by textinput
|
||
# HalignButton:
|
||
# text: 'justify'
|
||
# --------------------------------BASE DIRECTION
|
||
BoxLayout:
|
||
__boxes: boxes
|
||
orientation: 'horizontal'
|
||
size_hint_y: None
|
||
height: '30dp'
|
||
MenuLabel:
|
||
text: 'set base_direction ='
|
||
BaseDirButton:
|
||
text: 'None'
|
||
state: 'down'
|
||
BaseDirButton:
|
||
text: 'ltr'
|
||
BaseDirButton:
|
||
text: 'rtl'
|
||
# --------------------------------- FONT CONTEXT
|
||
BoxLayout:
|
||
__boxes: boxes
|
||
orientation: 'horizontal'
|
||
size_hint_y: None
|
||
height: '30dp'
|
||
MenuLabel:
|
||
text: 'set font_context ='
|
||
ContextButton:
|
||
text: 'None'
|
||
ContextButton:
|
||
text: 'system://'
|
||
state: 'down'
|
||
ContextButton:
|
||
text: 'system://user'
|
||
ContextButton:
|
||
text: 'user'
|
||
# ------------------------------------ FONT SIZE
|
||
BoxLayout:
|
||
__boxes: boxes
|
||
orientation: 'horizontal'
|
||
size_hint_y: None
|
||
height: '30dp'
|
||
MenuLabel:
|
||
text: 'set font_size ='
|
||
FontButton:
|
||
text: '10'
|
||
FontButton:
|
||
text: '20'
|
||
state: 'down'
|
||
FontButton:
|
||
text: '30'
|
||
FontButton:
|
||
text: '40'
|
||
FontButton:
|
||
text: '50'
|
||
FontButton:
|
||
text: '75'
|
||
FontButton:
|
||
text: '100'
|
||
# BoxLayout:
|
||
# orientation: 'horizontal'
|
||
# size_hint_y: None
|
||
# height: '30dp'
|
||
# Button:
|
||
# color: 0, 1, 0, 1
|
||
# text: 'Add font: user'
|
||
# Button:
|
||
# color: 0, 1, 0, 1
|
||
# text: 'Add font: system://user'
|
||
# ToggleButton:
|
||
# text: 'Enable markup'
|
||
# state: 'down'
|
||
# on_state:
|
||
# for c in boxes.children: c.markup = self.state == 'down'
|
||
'''))
|