Browse Source

kivy: label dialogs

283
ThomasV 9 years ago
parent
commit
8977493a62
  1. 4
      gui/kivy/main.kv
  2. 13
      gui/kivy/main_window.py
  3. 5
      gui/kivy/uix/context_menu.py
  4. 54
      gui/kivy/uix/dialogs/label_dialog.py
  5. 12
      gui/kivy/uix/screens.py
  6. 12
      gui/kivy/uix/ui_screens/receive.kv
  7. 14
      gui/kivy/uix/ui_screens/send.kv

4
gui/kivy/main.kv

@ -208,12 +208,12 @@
values: [] #app.wallet.addresses() if app.wallet else [] values: [] #app.wallet.addresses() if app.wallet else []
text: _("Select Your address") text: _("Select Your address")
<AmountButton@Button>: <BlueButton@Button>:
background_color: .238, .585, .878, 0 background_color: .238, .585, .878, 0
halign: 'left' halign: 'left'
text_size: (self.width-10, None) text_size: (self.width-10, None)
size_hint: 0.5, None size_hint: 0.5, None
default_text: 'Amount' default_text: ''
text: self.default_text text: self.default_text
padding: '5dp', '5db' padding: '5dp', '5db'
height: '40dp' height: '40dp'

13
gui/kivy/main_window.py

@ -33,6 +33,7 @@ Factory.register('InstallWizard',
Factory.register('InfoBubble', module='electrum_gui.kivy.uix.dialogs') Factory.register('InfoBubble', module='electrum_gui.kivy.uix.dialogs')
Factory.register('ELTextInput', module='electrum_gui.kivy.uix.screens') Factory.register('ELTextInput', module='electrum_gui.kivy.uix.screens')
#from kivy.core.window import Window #from kivy.core.window import Window
#Window.softinput_mode = 'below_target' #Window.softinput_mode = 'below_target'
@ -719,12 +720,18 @@ class ElectrumWindow(App):
popup.tx_hash = obj.tx_hash popup.tx_hash = obj.tx_hash
popup.open() popup.open()
def tx_label_dialog(self, obj):
pass
def address_dialog(self, screen): def address_dialog(self, screen):
pass pass
def description_dialog(self, screen):
from uix.dialogs.label_dialog import LabelDialog
text = screen.message
def callback(text):
screen.message = text
d = LabelDialog(_('Enter description'), text, callback)
d.open()
def amount_dialog(self, screen, show_max): def amount_dialog(self, screen, show_max):
popup = Builder.load_file('gui/kivy/uix/ui_screens/amount.kv') popup = Builder.load_file('gui/kivy/uix/ui_screens/amount.kv')
but_max = popup.ids.but_max but_max = popup.ids.but_max

5
gui/kivy/uix/context_menu.py

@ -39,5 +39,8 @@ class ContextMenu(Bubble):
for k, v in action_list: for k, v in action_list:
l = MenuItem() l = MenuItem()
l.text = k l.text = k
l.on_release = lambda f=v: f(obj) def func(f=v):
f(obj)
if self.parent: self.parent.hide_menu()
l.on_release = func
self.ids.buttons.add_widget(l) self.ids.buttons.add_widget(l)

54
gui/kivy/uix/dialogs/label_dialog.py

@ -0,0 +1,54 @@
from kivy.app import App
from kivy.factory import Factory
from kivy.properties import ObjectProperty
from kivy.lang import Builder
Builder.load_string('''
<LabelDialog@Popup>
id: popup
title: ''
size_hint: 0.8, 0.3
BoxLayout:
orientation: 'vertical'
Widget:
size_hint: 1, 0.2
TextInput:
id:input
padding: '5dp'
size_hint: 1, None
height: '27dp'
pos_hint: {'center_y':.5}
text:''
multiline: False
background_normal: 'atlas://gui/kivy/theming/light/tab_btn'
background_active: 'atlas://gui/kivy/theming/light/textinput_active'
hint_text_color: self.foreground_color
foreground_color: 1, 1, 1, 1
font_size: '16dp'
focus: True
Widget:
size_hint: 1, 0.2
BoxLayout:
orientation: 'horizontal'
size_hint: 1, 0.5
Button:
text: 'Cancel'
size_hint: 0.5, None
height: '48dp'
on_release: popup.dismiss()
Button:
text: 'OK'
size_hint: 0.5, None
height: '48dp'
on_release:
root.callback(input.text)
popup.dismiss()
''')
class LabelDialog(Factory.Popup):
def __init__(self, title, text, callback):
Factory.Popup.__init__(self)
self.ids.input.text = text
self.callback = callback
self.title = title

12
gui/kivy/uix/screens.py

@ -95,7 +95,17 @@ class HistoryScreen(CScreen):
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.ra_dialog = None self.ra_dialog = None
super(HistoryScreen, self).__init__(**kwargs) super(HistoryScreen, self).__init__(**kwargs)
self.menu_actions = [ (_('Label'), self.app.tx_label_dialog), (_('Details'), self.app.tx_details_dialog)] self.menu_actions = [ (_('Label'), self.label_dialog), (_('Details'), self.app.tx_details_dialog)]
def label_dialog(self, obj):
from dialogs.label_dialog import LabelDialog
key = obj.tx_hash
text = self.app.wallet.get_label(key)[0]
def callback(text):
self.app.wallet.set_label(key, text)
self.update()
d = LabelDialog(_('Enter Transaction Label'), text, callback)
d.open()
def get_history_rate(self, btc_balance, timestamp): def get_history_rate(self, btc_balance, timestamp):
date = timestamp_to_datetime(timestamp) date = timestamp_to_datetime(timestamp)

12
gui/kivy/uix/ui_screens/receive.kv

@ -56,8 +56,9 @@ ReceiveScreen:
size_hint: None, None size_hint: None, None
size: '22dp', '22dp' size: '22dp', '22dp'
pos_hint: {'center_y': .5} pos_hint: {'center_y': .5}
AmountButton: BlueButton:
id: amount_label id: amount_label
default_text: 'Amount'
text: s.amount if s.amount else 'Amount' text: s.amount if s.amount else 'Amount'
on_release: app.amount_dialog(s, False) on_release: app.amount_dialog(s, False)
CardSeparator: CardSeparator:
@ -74,11 +75,10 @@ ReceiveScreen:
size_hint: None, None size_hint: None, None
size: '22dp', '22dp' size: '22dp', '22dp'
pos_hint: {'center_y': .5} pos_hint: {'center_y': .5}
TextInputBlue: BlueButton:
id: message_input id: description
hint_text: 'Description' text: s.message if s.message else _('Description')
text: s.message on_release: app.description_dialog(s)
on_text_validate: s.message = self.text
BoxLayout: BoxLayout:
size_hint: 1, None size_hint: 1, None
height: '48dp' height: '48dp'

14
gui/kivy/uix/ui_screens/send.kv

@ -32,7 +32,7 @@ SendScreen:
size_hint: None, None size_hint: None, None
size: '22dp', '22dp' size: '22dp', '22dp'
pos_hint: {'center_y': .5} pos_hint: {'center_y': .5}
AmountButton: BlueButton:
id: payto_e id: payto_e
text: s.address if s.address else _('Recipient') text: s.address if s.address else _('Recipient')
on_release: app.address_dialog(s) on_release: app.address_dialog(s)
@ -47,8 +47,9 @@ SendScreen:
size_hint: None, None size_hint: None, None
size: '22dp', '22dp' size: '22dp', '22dp'
pos_hint: {'center_y': .5} pos_hint: {'center_y': .5}
AmountButton: BlueButton:
id: amount_e id: amount_e
default_text: _('Amount')
text: s.amount if s.amount else _('Amount') text: s.amount if s.amount else _('Amount')
on_release: app.amount_dialog(s, True) on_release: app.amount_dialog(s, True)
@ -66,11 +67,10 @@ SendScreen:
size_hint: None, None size_hint: None, None
size: '22dp', '22dp' size: '22dp', '22dp'
pos_hint: {'center_y': .5} pos_hint: {'center_y': .5}
TextInputBlue: BlueButton:
id: message_e id: description
hint_text: _('Description') text: s.message if s.message else _('Description')
text: s.message on_release: app.description_dialog(s)
on_text_validate: s.message = self.text
BoxLayout: BoxLayout:
size_hint: 1, None size_hint: 1, None
height: '48dp' height: '48dp'

Loading…
Cancel
Save