You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
440 lines
12 KiB
440 lines
12 KiB
#:import Window kivy.core.window.Window |
|
#:import Factory kivy.factory.Factory |
|
#:import _ electrum.i18n._ |
|
|
|
# Custom Global Widgets |
|
|
|
<VGridLayout@GridLayout>: |
|
rows: 1 |
|
size_hint: 1, None |
|
height: self.minimum_height |
|
|
|
<LightOptions@SpinnerOption> |
|
font_size: '14sp' |
|
border: 4, 4, 4, 4 |
|
color: 0.439, 0.439, 0.439, .8 |
|
background_normal: 'atlas://gui/kivy/theming/light/action_button_group' |
|
background_down: 'atlas://gui/kivy/theming/light/overflow_btn_dn' |
|
size_hint_y: None |
|
height: '48dp' |
|
text_size: self.size[0] - dp(20), self.size[1] |
|
halign: 'left' |
|
valign: 'middle' |
|
shorten: True |
|
on_press: |
|
ddn = self.parent.parent |
|
Factory.Animation(opacity=0, d=.25).start(ddn) |
|
|
|
<OppositeDropDown@DropDown> |
|
#auto_width: False |
|
size_hint: None, None |
|
size: self.container.minimum_size if self.container else (0, 0) |
|
on_container: if args[1]: self.container.padding = '4dp', '4dp', '4dp', '4dp' |
|
canvas.before: |
|
Color: |
|
rgba: 1, 1, 1, 1 |
|
BorderImage: |
|
pos:self.pos |
|
border: 20, 20, 20, 20 |
|
source: 'atlas://gui/kivy/theming/light/dropdown_background' |
|
size: self.size |
|
|
|
<OppositeSpinner@CSpinner> |
|
dropdown_cls: Factory.OppositeDropDown |
|
option_cls: Factory.LightOptions |
|
border: 20, 20, 9, 9 |
|
background_normal: 'atlas://gui/kivy/theming/light/action_group_dark' |
|
background_down: self.background_normal |
|
values: ('Copy to clipboard', 'Send Payment') |
|
size_hint: None, 1 |
|
width: '12dp' |
|
on_release: |
|
ddn = self._dropdown |
|
ddn.opacity = 0 |
|
Factory.Animation(opacity=1, d=.25).start(ddn) |
|
|
|
|
|
<BlueSpinner@BoxLayout> |
|
foreground_color: 1, 1, 1, 1 |
|
spacing: '9dp' |
|
text: '' |
|
values: ('', ) |
|
icon: '' |
|
Image: |
|
source: root.icon |
|
size_hint: None, None |
|
size: '22dp', '22dp' |
|
pos_hint: {'center_y': .5} |
|
OppositeSpinner: |
|
color: root.foreground_color |
|
background_normal: 'atlas://gui/kivy/theming/light/action_group_light' |
|
markup: False |
|
shorten: True |
|
font_size: '16dp' |
|
size_hint: 1, .7 |
|
pos_hint: {'center_y': .5} |
|
text: root.text |
|
text_size: self.size |
|
halign: 'left' |
|
valign: 'middle' |
|
on_text: |
|
root.text = args[1] |
|
values: root.values |
|
|
|
|
|
<IconButton@ButtonBehavior+Image> |
|
allow_stretch: True |
|
size_hint_x: None |
|
width: self.height |
|
canvas: |
|
BorderImage: |
|
border: (10, 10, 10, 10) |
|
source: |
|
'atlas://gui/kivy/theming/light/' + ('tab_btn'\ |
|
if root.state == 'normal' else 'icon_border') |
|
size: root.size |
|
pos: root.pos |
|
|
|
|
|
<ELTextInput> |
|
padding: '10dp', '4dp' |
|
background_color: (0.238, 0.589, .996, 1) if self.focus else self.foreground_color |
|
foreground_color: 0.531, 0.531, 0.531, 1 |
|
background_active: 'atlas://gui/kivy/theming/light/textinput_active' |
|
background_normal: 'atlas://gui/kivy/theming/light/textinput_active' |
|
|
|
|
|
########################### |
|
# Global Defaults |
|
########################### |
|
<TextInput> |
|
on_focus: app._focused_widget = root |
|
|
|
<Label> |
|
markup: True |
|
font_name: 'Roboto' |
|
font_size: '16sp' |
|
|
|
<ListItemButton> |
|
font_size: '12sp' |
|
|
|
######################### |
|
# Dialogs |
|
######################### |
|
|
|
<InfoBubble> |
|
size_hint: None, None |
|
width: '270dp' if root.fs else min(self.width, dp(270)) |
|
height: self.width if self.fs else (lbl.texture_size[1] + dp(27)) |
|
BoxLayout: |
|
padding: '5dp' if root.fs else 0 |
|
Widget: |
|
size_hint: None, 1 |
|
width: '4dp' if root.fs else '2dp' |
|
Image: |
|
id: img |
|
source: root.icon |
|
mipmap: True |
|
size_hint: None, 1 |
|
width: (root.width - dp(20)) if root.fs else (0 if not root.icon else '32dp') |
|
Widget: |
|
size_hint_x: None |
|
width: '5dp' |
|
Label: |
|
id: lbl |
|
markup: True |
|
font_size: '12sp' |
|
text: root.message |
|
text_size: self.width, None |
|
valign: 'middle' |
|
size_hint: 1, 1 |
|
width: 0 if root.fs else (root.width - img.width) |
|
|
|
|
|
|
|
<WalletActionPrevious@ActionPrevious> |
|
app_icon: 'atlas://gui/kivy/theming/light/' + ('wallets' if app.ui_mode[0] != 't' else 'tab_btn') |
|
with_previous: False |
|
size_hint: None, 1 |
|
mipmap: True |
|
on_release: app.root.children[0].toggle_drawer() |
|
|
|
|
|
|
|
<SendReceiveCardTop@GridLayout> |
|
canvas.before: |
|
BorderImage: |
|
border: 9, 9, 9, 9 |
|
source: 'atlas://gui/kivy/theming/light/card_top' |
|
size: self.size |
|
pos:self.pos |
|
padding: '12dp', '22dp', '12dp', 0 |
|
cols: 1 |
|
size_hint: 1, None |
|
height: '120dp' |
|
spacing: '4dp' |
|
|
|
<SendReceiveBlueBottom@GridLayout> |
|
canvas.before: |
|
Color: |
|
rgba: .238, .585, .878, 1 |
|
BorderImage: |
|
border: 9, 9, 9, 9 |
|
source: 'atlas://gui/kivy/theming/light/card_bottom' |
|
size: self.size |
|
pos: self.pos |
|
|
|
item_height: dp(42) |
|
foreground_color: .843, .914, .972, 1 |
|
cols: 1 |
|
padding: '12dp', 0 |
|
|
|
|
|
|
|
|
|
<CardSeparator@Widget> |
|
size_hint: 1, None |
|
height: dp(1) |
|
color: .909, .909, .909, 1 |
|
canvas: |
|
Color: |
|
rgba: root.color if root.color else (0, 0, 0, 0) |
|
Rectangle: |
|
size: self.size |
|
pos: self.pos |
|
|
|
<AddressSelector@BlueSpinner> |
|
icon: 'atlas://gui/kivy/theming/light/globe' |
|
values: [] #app.wallet.addresses() if app.wallet else [] |
|
text: _("Select Your address") |
|
|
|
<TextInputBlue@TextInput> |
|
padding: '5dp' |
|
size_hint: 1, None |
|
height: '27dp' |
|
pos_hint: {'center_y':.5} |
|
multiline: False |
|
hint_text_color: self.foreground_color |
|
foreground_color: .843, .914, .972, 1 |
|
background_color: 1, 1, 1, 1 |
|
background_normal: 'atlas://gui/kivy/theming/light/tab_btn' |
|
background_active: 'atlas://gui/kivy/theming/light/textinput_active' |
|
|
|
|
|
<KButton@Button>: |
|
size_hint: 1, None |
|
height: '48dp' |
|
on_release: self.label.amount = app.update_amount(self.label.amount, self.text) |
|
|
|
|
|
<TabbedPanelStrip>: |
|
on_parent: |
|
if self.parent: self.parent.bar_width = 0 |
|
|
|
|
|
<TabbedCarousel> |
|
carousel: carousel |
|
do_default_tab: False |
|
Carousel: |
|
scroll_timeout: 190 |
|
anim_type: 'out_quart' |
|
min_move: .05 |
|
anim_move_duration: .1 |
|
anim_cancel_duration: .54 |
|
scroll_distance: '10dp' |
|
on_index: root.on_index(*args) |
|
id: carousel |
|
|
|
|
|
<CarouselIndicator@TabbedCarousel> |
|
tab_pos: 'bottom_mid' |
|
tab_height: '32dp' |
|
tab_width: self.tab_height |
|
#background_image: 'atlas://data/images/defaulttheme/action_item' |
|
strip_border: 0, 0, 0, 0 |
|
|
|
<CloseButton@IconButton> |
|
source: 'atlas://gui/kivy/theming/light/closebutton' |
|
opacity: 1 if self.state == 'normal' else .75 |
|
size_hint: None, None |
|
size: '27dp', '27dp' |
|
|
|
<-CarouselDialog> |
|
header_color: '#707070ff' |
|
text_color: 0.701, 0.701, 0.701, 1 |
|
title_size: '13sp' |
|
title: '' |
|
separator_color: 0.89, 0.89, 0.89, 1 |
|
background: 'atlas://gui/kivy/theming/light/tab_btn' |
|
carousel_content: carousel_content |
|
canvas.before: |
|
Color: |
|
rgba: 0, 0, 0, .9 |
|
Rectangle: |
|
size: Window.size |
|
pos: 0, 0 |
|
Color: |
|
rgba: 1, 1, 1, 1 |
|
BorderImage: |
|
border: 12, 12, 12, 12 |
|
source: 'atlas://gui/kivy/theming/light/dialog' |
|
size: root.width, root.height - self.carousel_content.tab_height if self.carousel_content else 0 |
|
pos: root.x, self.y + self.carousel_content.tab_height if self.carousel_content else 10 |
|
BoxLayout: |
|
orientation: 'vertical' |
|
GridLayout: |
|
cols: 1 |
|
size_hint: 1, None |
|
height: self.minimum_height |
|
padding: 0, '7sp' |
|
Label: |
|
font_size: root.title_size |
|
text: u'[color={}]{}[/color]'.format(root.header_color, root.title) |
|
text_size: self.width, None |
|
halign: 'left' |
|
size_hint: 1, None |
|
height: self.texture_size[1] |
|
CardSeparator: |
|
color: root.separator_color |
|
height: root.separator_height |
|
FloatLayout: |
|
size_hint: None, None |
|
size: 0, 0 |
|
CloseButton: |
|
id: but_close |
|
top: root.top - dp(10) |
|
right: root.right - dp(10) |
|
on_release: root.dismiss() |
|
CarouselIndicator: |
|
id: carousel_content |
|
|
|
|
|
<CleanHeader@TabbedPanelHeader> |
|
border: 0, 0, 16, 0 |
|
markup: False |
|
text_size: self.size |
|
halign: 'center' |
|
valign: 'middle' |
|
bold: True |
|
font_size: '12.5sp' |
|
background_normal: 'atlas://gui/kivy/theming/light/tab_btn' |
|
background_disabled_normal: 'atlas://gui/kivy/theming/light/tab_btn_disabled' |
|
background_down: 'atlas://gui/kivy/theming/light/tab_btn_pressed' |
|
#canvas.before: |
|
# Color: |
|
# rgba: .6, .6, .6, .7 |
|
# Rectangle: |
|
# size: self.size |
|
# pos: self.x + 1, self.y - 1 |
|
# texture: self.texture |
|
|
|
|
|
<ColoredLabel@Label>: |
|
font_size: '48sp' |
|
color: (.6, .6, .6, 1) |
|
canvas.before: |
|
Color: |
|
rgb: (.9, .9, .9) |
|
Rectangle: |
|
pos: self.x + sp(2), self.y + sp(2) |
|
size: self.width - sp(4), self.height - sp(4) |
|
|
|
|
|
|
|
<ScreenTabs@Screen> |
|
TabbedCarousel: |
|
id: panel |
|
tab_height: '48dp' |
|
#default_tab: send_tab |
|
strip_border: 0, 0, 0, 0 |
|
HistoryScreen: |
|
id: history_screen |
|
tab: history_tab |
|
SendScreen: |
|
id: send_screen |
|
tab: send_tab |
|
ReceiveScreen: |
|
id: receive_screen |
|
tab: receive_tab |
|
ContactsScreen: |
|
id: contacts_screen |
|
tab: contacts_tab |
|
CleanHeader: |
|
id: history_tab |
|
text: _('History') |
|
slide: 0 |
|
CleanHeader: |
|
id: send_tab |
|
text: _('Send') |
|
slide: 1 |
|
CleanHeader: |
|
id: receive_tab |
|
text: _('Receive') |
|
slide: 2 |
|
CleanHeader: |
|
id: contacts_tab |
|
text: _('Contacts') |
|
slide: 3 |
|
|
|
|
|
|
|
BoxLayout: |
|
|
|
orientation: 'vertical' |
|
|
|
canvas.before: |
|
Color: |
|
rgb: .6, .6, .6 |
|
Rectangle: |
|
size: self.size |
|
source: 'gui/kivy/data/background.png' |
|
|
|
ActionBar: |
|
|
|
ActionView: |
|
id: av |
|
|
|
ActionPrevious: |
|
app_icon: 'atlas://gui/kivy/theming/light/logo' |
|
with_previous: False |
|
on_release: app.on_back() |
|
|
|
ActionButton: |
|
id: action_status |
|
important: True |
|
size_hint: 1, 1 |
|
markup: True |
|
mipmap: True |
|
bold: True |
|
markup: True |
|
color: 1, 1, 1, 1 |
|
text: |
|
"[color=#777777]{}[/color]"\ |
|
.format(app.status) |
|
font_size: '22dp' |
|
minimum_width: '1dp' |
|
|
|
ActionOverflow: |
|
id: ao |
|
size_hint: 1, 1 |
|
ActionButton: |
|
text: _('Network') |
|
on_press: ao._dropdown.dismiss() |
|
on_release: app.popup_dialog('network') |
|
ActionButton: |
|
text: _('Settings') |
|
on_press: ao._dropdown.dismiss() |
|
on_release: app.popup_dialog('settings') |
|
ActionButton: |
|
text: _('Wallets') |
|
on_press: ao._dropdown.dismiss() |
|
on_release: app.popup_dialog('wallet') |
|
ActionButton: |
|
text: _('Plugins') |
|
on_press: ao._dropdown.dismiss() |
|
on_release: app.popup_dialog('plugins') |
|
|
|
ScreenManager: |
|
id: manager |
|
ScreenTabs: |
|
id: tabs
|
|
|