KV directory added

This commit is contained in:
shekhar-cis 2022-01-24 12:52:34 +05:30
parent 9c872ef676
commit 153b4dc1b2
Signed by untrusted user: shekhar-cis
GPG Key ID: F4F00AB04E83F9A7
21 changed files with 2672 additions and 0 deletions

View File

@ -0,0 +1,26 @@
<AddressBook>:
name: 'addressbook'
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: address_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
Loader:
ComposerButton:

View File

@ -0,0 +1,25 @@
<Allmails>:
name: 'allmails'
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
GridLayout:
id: identi_tag
padding: [20, 20, 0, 5]
spacing: dp(5)
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
Loader:
ComposerButton:

View File

@ -0,0 +1,58 @@
<ChatList>:
name: 'chlist'
canvas.before:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
MDTabs:
id: chat_panel
tab_display_mode:'text'
Tab:
text: app.tr._("Chats")
BoxLayout:
id: chat_box
orientation: 'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
MDLabel:
font_style: 'Caption'
theme_text_color: 'Primary'
text: app.tr._('No Chat')
halign: 'center'
size_hint_y: None
bold: True
valign: 'top'
# OneLineAvatarListItem:
# text: "Single-line item with avatar"
# divider: None
# _no_ripple_effect: True
# ImageLeftWidget:
# source: './images/text_images/A.png'
# OneLineAvatarListItem:
# text: "Single-line item with avatar"
# divider: None
# _no_ripple_effect: True
# ImageLeftWidget:
# source: './images/text_images/B.png'
# OneLineAvatarListItem:
# text: "Single-line item with avatar"
# divider: None
# _no_ripple_effect: True
# ImageLeftWidget:
# source: './images/text_images/A.png'
Tab:
text: app.tr._("Contacts")
BoxLayout:
id: contact_box
orientation: 'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml

View File

@ -0,0 +1,45 @@
#:import C kivy.utils.get_color_from_hex
<ChatRoom>:
name: 'chroom'
BoxLayout:
orientation: 'vertical'
canvas.before:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
ScrollView:
Label:
id: chat_logs
text: ''
color: C('#101010')
text_size: (self.width, None)
halign: 'left'
valign: 'top'
padding: (0, 0) # fixed in Kivy 1.8.1
size_hint: (1, None)
height: self.texture_size[1]
markup: True
font_size: sp(20)
BoxLayout:
height: 50
orientation: 'horizontal'
padding: 0
size_hint: (1, None)
TextInput:
id: message
size_hint: (1, 1)
multiline: False
font_size: sp(20)
on_text_validate: root.send_msg()
MDRaisedButton:
text: app.tr._("Send")
elevation_normal: 2
opposite_colors: True
size_hint: (0.3, 1)
pos_hint: {"center_x": .5}
on_press: root.send_msg()

View File

@ -0,0 +1,62 @@
<ArrowImg@Image>:
source: app.image_path +('/down-arrow.png' if self.parent.is_open == True else '/right-arrow.png')
size: 15, 15
x: self.parent.x + self.parent.width - self.width - 5
y: self.parent.y + self.parent.height/2 - self.height + 5
<SearchBar@BoxLayout>:
# id: search_bar
size_hint_y: None
height: self.minimum_height
MDIconButton:
icon: 'magnify'
MDTextField:
id: search_field
hint_text: 'Search'
on_text: app.searchQuery(self)
canvas.before:
Color:
rgba: (0,0,0,1)
<Loader@MDSpinner>:
id: spinner
size_hint: None, None
size: dp(46), dp(46)
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
active: False
<ComposerButton@BoxLayout>:
size_hint_y: None
height: dp(56)
spacing: '10dp'
pos_hint: {'center_x':0.45, 'center_y': .1}
Widget:
MDFloatingActionButton:
icon: 'plus'
opposite_colors: True
elevation_normal: 8
md_bg_color: [0.941, 0, 0,1]
on_press: app.root.ids.scr_mngr.current = 'create'
on_press: app.clear_composer()
<ToggleBtn>:
size_hint: None, None
size: dp(36), dp(48)
pos_hint: {'center_x': .95, 'center_y': .4}
on_active: app.root.ids.sc10.toggleAction(self)
<CustomTwoLineAvatarIconListItem>:
canvas:
Color:
id: set_clr
# rgba: 0.5, 0.5, 0.5, 0.5
rgba: 0,0,0,0
Rectangle: #woohoo!!!
size: self.size
pos: self.pos

View File

@ -0,0 +1,28 @@
<Credits>:
name: 'credits'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
OneLineListTitle:
id: cred
text: app.tr._("Available Credits")
divider: None
theme_text_color: 'Primary'
_no_ripple_effect: True
long_press_time: 1
OneLineListTitle:
id: cred
text: app.tr._(root.available_credits)
divider: None
font_style: 'H5'
theme_text_color: 'Primary'
_no_ripple_effect: True
long_press_time: 1
AnchorLayout:
MDRaisedButton:
height: dp(38)
text: app.tr._("+Add more credits")
on_press: app.root.ids.scr_mngr.current = 'payment'

View File

@ -0,0 +1,23 @@
<Draft>:
name: 'draft'
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
GridLayout:
id: identi_tag
padding: [20, 20, 0, 5]
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
ComposerButton:

View File

@ -0,0 +1,39 @@
<Inbox>:
name: 'inbox'
#transition: NoTransition()
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id:inbox_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
#FloatLayout:
# MDScrollViewRefreshLayout:
# id: refresh_layout
# refresh_callback: root.refresh_callback
# root_layout: root.set_root_layout()
# MDList:
# id: ml
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
Loader:
ComposerButton:
<TimeTagRightSampleWidget>:
size_hint:(None, None)
font_style: 'Caption'
halign: 'center'

View File

@ -0,0 +1,264 @@
#:import SlideTransition kivy.uix.screenmanager.SlideTransition
<Login>:
name:"login"
BoxLayout:
orientation: "vertical"
#buttons-area-outer
BoxLayout:
size_hint_y: .53
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
ScreenManager:
id: check_screenmgr
Screen:
name: "check_screen"
BoxLayout:
orientation: "vertical"
padding: 0, dp(5), 0, dp(5)
spacing: dp(5)
#label area
AnchorLayout:
size_hint_y: None
height: dp(50)
MDLabel:
text: app.tr._("Select method to make an address:")
bold: True
halign: "center"
theme_text_color: "Custom"
text_color: .4,.4,.4,1
#upper-checkbor-area
AnchorLayout:
size_hint_y: None
height: dp(40)
BoxLayout:
size_hint_x: None
width: self.minimum_width
#check-container
AnchorLayout:
size_hint_x: None
width: dp(40)
Check:
active: True
#text-container
AnchorLayout:
size_hint_x: None
width: dp(200)
MDLabel:
text: app.tr._("Random Number Generator")
AnchorLayout:
size_hint_y: None
height: dp(40)
BoxLayout:
size_hint_x: None
width: self.minimum_width
#check-container
AnchorLayout:
size_hint_x: None
width: dp(40)
Check:
#text-container
AnchorLayout:
size_hint_x: None
width: dp(200)
MDLabel:
text: app.tr._("Pseudo Number Generator")
AnchorLayout:
MDFillRoundFlatIconButton:
icon: "chevron-double-right"
text: app.tr._("Proceed Next")
on_release:
app.root.ids.scr_mngr.current = 'random'
on_press:
app.root.ids.sc7.reset_address_label()
#info-area-outer
BoxLayout:
size_hint_y: .47
padding: dp(7)
InfoLayout:
orientation:"vertical"
padding: 0, dp(5), 0, dp(5)
canvas:
Color:
rgba:1,1,1,1
Rectangle:
pos: self.pos
size: self.size
Color:
rgba: app.theme_cls.primary_color
Line:
rounded_rectangle: (self.pos[0]+4, self.pos[1]+4, self.width-8,self.height-8, 10, 10, 10, 10, 50)
width: dp(1)
ScreenManager:
id: info_screenmgr
Screen:
name: "info1"
ScrollView:
bar_width:0
do_scroll_x: False
BoxLayout:
orientation: "vertical"
size_hint_y: None
height: self.minimum_height
#note area
ContentHead:
section_name: "NOTE:"
ContentBody:
section_text: ("You may generate addresses by using either random numbers or by using a pass-phrase.If you use a pass-phrase, the address is called a deterministic address. The Random Number option is selected by default but deterministic addresses may have several pros and cons.")
#pros area
ContentHead:
section_name: "PROS:"
ContentBody:
section_text: ("You can re-create your addresses on any computer from memory you need-not-to worry about backing up your keys.dat file as long as you can remember your pass-phrase.")
#cons area
ContentHead:
section_name: "CONS:"
ContentBody:
section_text: ("You must remember (or write down) your address version number and the stream number along with your pass-phrase.If you choose a weak pass-phrase and someone on the internet can brute-force it, they can read your messages and send messages as you.")
<Random>:
name:"random"
ScrollView:
id:add_random_bx
<RandomBoxlayout>:
orientation: "vertical"
#buttons-area-outer
BoxLayout:
orientation: "vertical"
# padding: 0, dp(5), 0, dp(5)
# spacing: dp(5)
size_hint_y: .53
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
#label area
AnchorLayout:
size_hint_y: None
height: dp(50)
MDLabel:
text: app.tr._("Enter a label to generate address for:")
bold: True
halign: "center"
theme_text_color: "Custom"
text_color: .4,.4,.4,1
AnchorLayout:
size_hint_y: None
height: dp(40)
MDTextField:
id:lab
hint_text: "Label"
required: True
size_hint_x: None
width: dp(190)
helper_text_mode: "on_error"
# helper_text: "Please enter your label name"
on_text: app.root.ids.sc7.add_validation(self)
canvas.before:
Color:
rgba: (0,0,0,1)
AnchorLayout:
MDFillRoundFlatIconButton:
icon: "chevron-double-right"
text: app.tr._("Proceed Next")
on_release: app.root.ids.sc7.generateaddress()
Widget:
#info-area-outer
BoxLayout:
size_hint_y: .47
padding: dp(7)
InfoLayout:
orientation:"vertical"
padding: 0, dp(5), 0, dp(5)
canvas:
Color:
rgba:1,1,1,1
Rectangle:
pos: self.pos
size: self.size
Color:
rgba: app.theme_cls.primary_color
Line:
rounded_rectangle: (self.pos[0]+4, self.pos[1]+4, self.width-8,self.height-8, 10, 10, 10, 10, 50)
width: dp(1)
ScreenManager:
id: info_screenmgr
Screen:
name: "info2"
ScrollView:
bar_width:0
do_scroll_x: False
BoxLayout:
orientation: "vertical"
size_hint_y: None
height: self.minimum_height
#note area
ContentHead:
section_name: "NOTE:"
ContentBody:
section_text: ("Here you may generate as many addresses as you like..Indeed creating and abandoning addresses is not encouraged.")
<Check@MDCheckbox>:
group: 'group'
size_hint: None, None
size: dp(48), dp(48)
<ContentHead@BoxLayout>:
section_name: ""
orientation: "vertical"
size_hint_y: None
height: dp(50)
padding: dp(20), 0, 0, 0
Widget:
size_hint_y: None
height: dp(25)
MDLabel:
theme_text_color: "Custom"
text_color: .1,.1,.1,.9
text: app.tr._(root.section_name)
bold: True
font_style: "Button"
<ContentBody@BoxLayout>:
section_text: ""
size_hint_y: None
height: self.minimum_height
padding: dp(50), 0, dp(10), 0
MDLabel:
size_hint_y: None
height: self.texture_size[1]+dp(10)
theme_text_color: "Custom"
text_color: 0.3,0.3,0.3,1
font_style: "Body1"
text: app.tr._(root.section_text)

View File

@ -0,0 +1,87 @@
<MailDetail>:
name: 'mailDetail'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
# height: dp(bod.height) + self.minimum_height
height: self.minimum_height
padding: dp(10)
# MDLabel:
# size_hint_y: None
# id: subj
# text: root.subject
# theme_text_color: 'Primary'
# halign: 'left'
# font_style: 'H5'
# height: dp(40)
# on_touch_down: root.allclick(self)
OneLineListTitle:
id: subj
text: app.tr._(root.subject)
divider: None
font_style: 'H5'
theme_text_color: 'Primary'
_no_ripple_effect: True
long_press_time: 1
TwoLineAvatarIconListItem:
id: subaft
text: app.tr._(root.from_addr)
secondary_text: app.tr._('to ' + root.to_addr)
divider: None
on_press: root.detailedPopup()
BadgeText:
size_hint:(None, None)
size:[120, 140] if app.app_platform == 'android' else [64, 80]
text: app.tr._(root.time_tag)
halign:'center'
font_style:'Caption'
pos_hint: {'center_y': .8}
_txt_right_pad: dp(70)
font_size: '11sp'
MDChip:
size_hint: (.16 if app.app_platform == 'android' else .08 , None)
text: app.tr._(root.page_type)
icon: ''
text_color: (1,1,1,1)
pos_hint: {'center_x': .91 if app.app_platform == 'android' else .95, 'center_y': .3}
radius: [8]
height: self.parent.height/4
AvatarSampleWidget:
source: root.avatarImg
MDLabel:
text: root.status
disabled: True
font_style: 'Body2'
halign:'left'
padding_x: 20
# MDLabel:
# id: bod
# font_style: 'Subtitle2'
# theme_text_color: 'Primary'
# text: root.message
# halign: 'left'
# height: self.texture_size[1]
MyMDTextField:
id: bod
size_hint_y: None
font_style: 'Subtitle2'
text: root.message
multiline: True
readonly: True
line_color_normal: [0,0,0,0]
_current_line_color: [0,0,0,0]
line_color_focus: [0,0,0,0]
markup: True
font_size: '15sp'
canvas.before:
Color:
rgba: (0,0,0,1)
Loader:
<MyMDTextField@MDTextField>:
canvas.before:
Color:
rgba: (0,0,0,1)

View File

@ -0,0 +1,178 @@
<Create>:
name: 'create'
Loader:
<DropDownWidget>:
ScrollView:
id: id_scroll
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: self.minimum_height + 3 * self.parent.height/5
padding: dp(20)
spacing: 15
BoxLayout:
orientation: 'vertical'
MDTextField:
id: ti
size_hint_y: None
hint_text: 'Type or Select sender address'
icon_right: 'account'
icon_right_color: app.theme_cls.primary_light
font_size: '15sp'
multiline: False
required: True
# height: self.parent.height/2
height: 100
current_hint_text_color: 0,0,0,0.5
helper_text_mode: "on_error"
canvas.before:
Color:
rgba: (0,0,0,1)
BoxLayout:
size_hint_y: None
height: dp(40)
CustomSpinner:
id: btn
background_color: app.theme_cls.primary_dark
values: app.variable_1
on_text: root.auto_fill_fromaddr() if self.text != 'Select' else ''
option_cls: Factory.get("ComposerSpinnerOption")
#background_color: color_button if self.state == 'normal' else color_button_pressed
#background_down: 'atlas://data/images/defaulttheme/spinner'
background_normal: ''
background_color: app.theme_cls.primary_color
color: color_font
font_size: '13.5sp'
ArrowImg:
RelativeLayout:
orientation: 'horizontal'
BoxLayout:
orientation: 'vertical'
txt_input: txt_input
rv: rv
size : (890, 60)
MyTextInput:
id: txt_input
size_hint_y: None
font_size: '15sp'
color: color_font
# height: self.parent.height/2
current_hint_text_color: 0,0,0,0.5
height: 100
hint_text: app.tr._('Type or Scan QR code for recipients address')
canvas.before:
Color:
rgba: (0,0,0,1)
RV:
id: rv
MDIconButton:
icon: 'qrcode-scan'
pos_hint: {'center_x': 0.95, 'y': 0.6}
on_release:
if root.is_camara_attached(): app.root.ids.scr_mngr.current = 'scanscreen'
else: root.camera_alert()
on_press:
app.root.ids.sc23.get_screen('composer')
MyMDTextField:
id: subject
hint_text: 'Subject'
height: 100
font_size: '15sp'
icon_right: 'notebook-outline'
icon_right_color: app.theme_cls.primary_light
current_hint_text_color: 0,0,0,0.5
font_color_normal: 0, 0, 0, 1
size_hint_y: None
required: True
multiline: False
helper_text_mode: "on_focus"
canvas.before:
Color:
rgba: (0,0,0,1)
# MyMDTextField:
# id: body
# multiline: True
# hint_text: 'body'
# size_hint_y: None
# font_size: '15sp'
# required: True
# helper_text_mode: "on_error"
# canvas.before:
# Color:
# rgba: (0,0,0,1)
ScrollView:
id: scrlv
MDTextField:
id: body
hint_text: 'Body'
mode: "fill"
fill_color: 1/255, 144/255, 254/255, 0.1
multiline: True
font_color_normal: 0, 0, 0, .4
icon_right: 'grease-pencil'
icon_right_color: app.theme_cls.primary_light
size_hint: 1, 1
height: app.window_size[1]/4
canvas.before:
Color:
rgba: 125/255, 125/255, 125/255, 1
BoxLayout:
spacing:50
<MyTextInput>:
readonly: False
multiline: False
<SelectableLabel>:
# Draw a background to indicate selection
color: 0,0,0,1
canvas.before:
Color:
rgba: app.theme_cls.primary_dark if self.selected else (1, 1, 1, 0)
Rectangle:
pos: self.pos
size: self.size
<RV>:
canvas:
Color:
rgba: 0,0,0,.2
Line:
rectangle: self.x +1 , self.y, self.width - 2, self.height -2
bar_width: 10
scroll_type:['bars']
viewclass: 'SelectableLabel'
SelectableRecycleBoxLayout:
default_size: None, dp(20)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
multiselect: False
<MyMDTextField@MDTextField>:
canvas.before:
Color:
rgba: (0,0,0,1)
<ComposerSpinnerOption@SpinnerOption>:
font_size: '13.5sp'
#background_color: color_button if self.state == 'down' else color_button_pressed
#background_down: 'atlas://data/images/defaulttheme/button'
background_normal: 'atlas://data/images/defaulttheme/textinput_active'
background_color: app.theme_cls.primary_color
color: color_font

View File

@ -0,0 +1,33 @@
<MyAddress>:
name: 'myaddress'
BoxLayout:
id: main_box
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: search_bar
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: app.tr._('My Addresses')
font_style: 'Subtitle2'
FloatLayout:
MDScrollViewRefreshLayout:
id: refresh_layout
refresh_callback: root.refresh_callback
root_layout: root
MDList:
id: ml
Loader:
<ToggleBtn>:
size_hint: None, None
size: dp(36), dp(48)
pos_hint: {'center_x': .95, 'center_y': .4}
on_active: app.root.ids.sc10.toggleAction(self)

View File

@ -0,0 +1,131 @@
<NetworkStat>:
name: 'networkstat'
MDTabs:
id: tab_panel
tab_display_mode:'text'
Tab:
text: app.tr._("Total connections")
ScrollView:
do_scroll_x: False
MDList:
id: ml
size_hint_y: None
height: dp(200)
OneLineListItem:
text: app.tr._("Total Connections")
_no_ripple_effect: True
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(58)
MDRaisedButton:
_no_ripple_effect: True
# size_hint: .6, 0
# height: dp(40)
text: app.tr._(root.text_variable_1)
elevation_normal: 2
opposite_colors: True
pos_hint: {'center_x': .5}
# MDLabel:
# font_style: 'H6'
# text: app.tr._(root.text_variable_1)
# font_size: '13sp'
# color: (1,1,1,1)
# halign: 'center'
Tab:
text: app.tr._('Processes')
ScrollView:
do_scroll_x: False
MDList:
id: ml
size_hint_y: None
height: dp(500)
OneLineListItem:
text: app.tr._("person-to-person")
_no_ripple_effect: True
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(58)
MDRaisedButton:
_no_ripple_effect: True
# size_hint: .6, 0
# height: dp(40)
text: app.tr._(root.text_variable_2)
elevation_normal: 2
opposite_colors: True
pos_hint: {'center_x': .5}
# MDLabel:
# font_style: 'H6'
# text: app.tr._(root.text_variable_2)
# font_size: '13sp'
# color: (1,1,1,1)
# halign: 'center'
OneLineListItem:
text: app.tr._("Brodcast")
_no_ripple_effect: True
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(58)
MDRaisedButton:
_no_ripple_effect: True
# size_hint: .6, 0
# height: dp(40)
text: app.tr._(root.text_variable_3)
elevation_normal: 2
opposite_colors: True
pos_hint: {'center_x': .5}
# MDLabel:
# font_style: 'H6'
# text: app.tr._(root.text_variable_3)
# font_size: '13sp'
# color: (1,1,1,1)
# halign: 'center'
OneLineListItem:
text: app.tr._("publickeys")
_no_ripple_effect: True
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(58)
MDRaisedButton:
_no_ripple_effect: True
# size_hint: .6, 0
# height: dp(40)
text: app.tr._(root.text_variable_4)
elevation_normal: 2
opposite_colors: True
pos_hint: {'center_x': .5}
# MDLabel:
# font_style: 'H6'
# text: app.tr._(root.text_variable_4)
# font_size: '13sp'
# color: (1,1,1,1)
# halign: 'center'
OneLineListItem:
text: app.tr._("objects")
_no_ripple_effect: True
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(58)
MDRaisedButton:
_no_ripple_effect: True
# size_hint: .6, 0
#height: dp(40)
text: app.tr._(root.text_variable_5)
elevation_normal: 2
opposite_colors: True
pos_hint: {'center_x': .5}
# MDLabel:
# font_style: 'H6'
# text: app.tr._(root.text_variable_5)
# font_size: '13sp'
# color: (1,1,1,1)
# halign: 'center'

View File

@ -0,0 +1,253 @@
#:import get_color_from_hex kivy.utils.get_color_from_hex
<Payment>:
name: "payment"
BoxLayout:
ScrollView:
bar_width:0
do_scroll_x: False
#scroll_y:0
BoxLayout:
spacing: dp(8)
padding: dp(5)
size_hint_y: None
height: self.minimum_height
orientation: "vertical"
ProductCategoryLayout:
category_text: "Monthly-Subscriptions"
ProductLayout:
heading_text: "Gas (Play Billing Codelab)"
price_text: "$0.99"
source: app.image_path + "/payment/buynew1.png"
description_text: "Buy gasoline to ride!"
product_id: "SKUGASBILLING"
ProductLayout:
heading_text: "Upgrade your car (Play Billing Codelab)"
price_text: "$1.49"
source: app.image_path + "/payment/buynew1.png"
description_text: "Buy a premium outfit for your car!"
product_id: "SKUUPGRADECAR"
ProductLayout:
heading_text: "Month in gold status (Play Billing Codelab)"
price_text: "$0.99"
source: app.image_path + "/payment/buynew1.png"
description_text: "Enjoy a gold status for a month!"
product_id: "SKUMONTHLYGOLD"
ProductCategoryLayout:
category_text: "One-time payment"
ProductLayout:
heading_text: "Gas (Play Billing Codelab)"
price_text: "$0.99"
source: app.image_path + "/payment/buynew1.png"
description_text: "Buy gasoline to ride!"
product_id: "SKUONETIMEGAS"
ProductCategoryLayout:
category_text: "Annual-Subscriptions"
ProductLayout:
heading_text: "Gas (Play Billing Codelab)"
price_text: "$0.99"
source: app.image_path + "/payment/buynew1.png"
description_text: "Buy gasoline to ride!"
product_id: "SKUANNUALGAS"
ProductLayout:
heading_text: "Year in gold status (Play Billing Codelab)"
price_text: "$10.99"
source: app.image_path + "/payment/buynew1.png"
description_text: "Enjoy a gold status for a year!"
product_id: "SKUANNUALGOLD"
<ProductCategoryLayout@BoxLayout>:
size_hint_y: None
height: self.minimum_height
category_text:""
orientation: "vertical"
spacing: 2
#category area
Category:
text_: root.category_text
<Category>:
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
text_: ""
size_hint_y: None
height: dp(30)
Widget:
size_hint_x: None
width: dp(20)
MDLabel:
text: root.text_
font_size: sp(15)
<ProductLayout>:
heading_text: ""
price_text: ""
source: ""
description_text: ""
product_id: ""
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
size_hint_y: None
height: dp(200)
orientation: "vertical"
#heading area
BoxLayout:
size_hint_y: 0.3
#text heading
BoxLayout:
Widget:
size_hint_x: None
width: dp(20)
MDLabel:
text: root.heading_text
bold: True
#price text
BoxLayout:
size_hint_x:.3
MDLabel:
text: root.price_text
bold: True
halign: "right"
theme_text_color: "Custom"
text_color: 0,0,1,1
Widget:
size_hint_x: None
width: dp(20)
#details area
BoxLayout:
size_hint_y: 0.3
Widget:
size_hint_x: None
width: dp(20)
#image area
AnchorLayout:
size_hint_x: None
width: self.height
BoxLayout:
canvas:
Color:
rgba: 1,1,1,1
Ellipse:
size: self.size
pos: self.pos
source: root.source
Widget:
size_hint_x: None
width: dp(10)
#description text
BoxLayout:
#size_hint_x: 1
MDLabel:
text: root.description_text
font_size: sp(15)
#Button Area
BoxLayout:
size_hint_y: 0.4
Widget:
AnchorLayout:
anchor_x: "right"
MDRaisedButton:
elevation_normal: 5
text: "BUY"
on_release:
#print(app)
app.open_payment_layout(root.product_id)
Widget:
size_hint_x: None
width: dp(20)
<ListItemWithLabel>:
on_release: app.initiate_purchase(self.method_name)
recent: False
source: ""
method_name: ""
right_label_text: "Recent" if self.recent else ""
ImageLeftWidget:
source: root.source
RightLabel:
text: root.right_label_text
theme_text_color: "Custom"
text_color: 0,0,0,.4
font_size: sp(12)
<PaymentMethodLayout>:
orientation: "vertical"
size_hint_y: None
height: "200dp"
BoxLayout:
size_hint_y: None
height: dp(40)
Widget:
size_hint_x: None
width: dp(20)
MDLabel:
text: "Select Payment Method"
font_size: sp(14)
bold: True
theme_text_color: "Custom"
text_color: 0,0,0,.5
ScrollView:
GridLayout:
cols: 1
size_hint_y:None
height:self.minimum_height
ListItemWithLabel:
source: app.image_path + "/payment/gplay.png"
text: "Google Play"
method_name: "gplay"
recent: True
ListItemWithLabel:
source: app.image_path + "/payment/btc.png"
text: "BTC"
method_name: "btc"
ListItemWithLabel:
source: app.image_path + "/payment/paypal.png"
text: "Paypal"
method_name: "som"
ListItemWithLabel:
source: app.image_path + "/payment/buy.png"
text: "One more method"
method_name: "omm"

View File

@ -0,0 +1,333 @@
<LoadingPopup>:
separator_color: 1, 1, 1, 1
background: "White.png"
Button:
id: btn
disabled: True
background_disabled_normal: "White.png"
Image:
source: app.image_path + '/loader.zip'
anim_delay: 0
#mipmap: True
size: root.size
<GrashofPopup>:
id: popup_box
orientation: 'vertical'
# spacing:dp(20)
# spacing: "12dp"
size_hint_y: None
# height: "120dp"
height: label.height+address.height
BoxLayout:
orientation: 'vertical'
MDTextField:
id: label
multiline: False
hint_text: app.tr._("Label")
required: True
icon_right: 'label'
helper_text_mode: "on_error"
on_text: root.checkLabel_valid(self)
canvas.before:
Color:
rgba: (0,0,0,1)
MDTextField:
id: address
hint_text: app.tr._("Address")
required: True
icon_right: 'book-plus'
helper_text_mode: "on_error"
multiline: False
on_text: root.checkAddress_valid(self)
canvas.before:
Color:
rgba: (0,0,0,1)
<AddbookDetailPopup>:
id: addbook_popup_box
size_hint_y: None
height: 2.5*(add_label.height)
orientation: 'vertical'
spacing:dp(5)
MDLabel
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("Label")
font_size: '17sp'
halign: 'left'
MDTextField:
id: add_label
font_style: 'Body1'
font_size: '15sp'
halign: 'left'
text: app.tr._(root.address_label)
theme_text_color: 'Primary'
required: True
helper_text_mode: "on_error"
on_text: root.checkLabel_valid(self)
canvas.before:
Color:
rgba: (0,0,0,1)
MDLabel:
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("Address")
font_size: '17sp'
halign: 'left'
Widget:
size_hint_y: None
height: dp(1)
BoxLayout:
orientation: 'horizontal'
MDLabel:
id: address
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._(root.address)
font_size: '15sp'
halign: 'left'
IconRightSampleWidget:
pos_hint: {'center_x': 0, 'center_y': 1}
icon: 'content-copy'
on_press: app.copy_composer_text(root.address)
<MyaddDetailPopup>:
id: myadd_popup
size_hint_y: None
height: "130dp"
spacing:dp(25)
#height: dp(1.5*(myaddr_label.height))
orientation: 'vertical'
MDLabel:
id: myaddr_label
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("Label")
font_size: '17sp'
halign: 'left'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: root.address_label
font_size: '15sp'
halign: 'left'
MDLabel:
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("Address")
font_size: '17sp'
halign: 'left'
BoxLayout:
orientation: 'horizontal'
MDLabel:
id: label_address
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._(root.address)
font_size: '15sp'
halign: 'left'
IconRightSampleWidget:
pos_hint: {'center_x': 0, 'center_y': 1}
icon: 'content-copy'
on_press: app.copy_composer_text(root.address)
BoxLayout:
id: my_add_btn
spacing:5
orientation: 'horizontal'
size_hint_y: None
height: self.minimum_height
MDRaisedButton:
size_hint: 2, None
height: dp(40)
on_press: root.send_message_from()
MDLabel:
font_style: 'H6'
text: app.tr._('Send message from')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: app.root.ids.scr_mngr.current = 'showqrcode'
on_press: app.root.ids.sc15.qrdisplay(root, root.address)
MDLabel:
font_style: 'H6'
text: app.tr._('Show QR code')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.close_pop()
MDLabel:
font_style: 'H6'
text: app.tr._('Cancel')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
<AppClosingPopup>:
id: closing_popup
size_hint : (None,None)
height: 1.4*(popup_label.height+ my_add_btn.children[0].height)
width :app.window_size[0] - (app.window_size[0]/10 if app.app_platform == 'android' else app.window_size[0]/4)
background: app.image_path + '/popup.jpeg'
auto_dismiss: False
separator_height: 0
BoxLayout:
id: myadd_popup_box
size_hint_y: None
spacing:dp(70)
orientation: 'vertical'
BoxLayout:
size_hint_y: None
orientation: 'vertical'
spacing:dp(25)
MDLabel:
id: popup_label
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("Bitmessage isn't connected to the network.\n If you quit now, it may cause delivery delays.\n Wait until connected and the synchronisation finishes?")
font_size: '17sp'
halign: 'center'
BoxLayout:
id: my_add_btn
spacing:5
orientation: 'horizontal'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.closingAction(self.children[0].text)
on_press: app.stop()
MDLabel:
font_style: 'H6'
text: app.tr._('Yes')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
on_press: root.closingAction(self.children[0].text)
MDLabel:
font_style: 'H6'
text: app.tr._('No')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
MDRaisedButton:
size_hint: 1.5, None
height: dp(40)
#on_press: root.dismiss()
on_press: root.closingAction(self.children[0].text)
MDLabel:
font_style: 'H6'
text: app.tr._('Cancel')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
<SenderDetailPopup>:
id: myadd_popup
size_hint : (None,None)
# height: 2*(sd_label.height+ sd_btn.children[0].height)
width :app.window_size[0] - (app.window_size[0]/10 if app.app_platform == 'android' else app.window_size[0]/4)
background: app.image_path + '/popup.jpeg'
auto_dismiss: False
separator_height: 0
BoxLayout:
id: myadd_popup_box
size_hint_y: None
orientation: 'vertical'
spacing:dp(8 if app.app_platform == 'android' else 3)
BoxLayout:
orientation: 'vertical'
MDLabel:
id: from_add_label
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: app.tr._("From :")
font_size: '15sp'
halign: 'left'
Widget:
size_hint_y: None
height: dp(1 if app.app_platform == 'android' else 0)
BoxLayout:
size_hint_y: None
height: 50
orientation: 'horizontal'
MDLabel:
id: sd_label
font_style: 'Body2'
theme_text_color: 'Primary'
text: app.tr._("[b]" + root.from_addr + "[/b]")
font_size: '15sp'
halign: 'left'
markup: True
IconRightSampleWidget:
icon: 'content-copy'
on_press: app.copy_composer_text(root.from_addr)
Widget:
id: space_1
size_hint_y: None
height: dp(2 if app.app_platform == 'android' else 0)
BoxLayout:
id: to_addtitle
Widget:
id:space_2
size_hint_y: None
height: dp(1 if app.app_platform == 'android' else 0)
BoxLayout:
id: to_addId
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: 50
MDLabel:
font_style: 'Body2'
theme_text_color: 'Primary'
text: app.tr._("Date : " + root.time_tag)
font_size: '15sp'
halign: 'left'
BoxLayout:
id: sd_btn
orientation: 'vertical'
MDRaisedButton:
id: dismiss_btn
on_press: root.dismiss()
size_hint: .2, 0
pos_hint: {'x': 0.8, 'y': 0}
MDLabel:
font_style: 'H6'
text: app.tr._('Cancel')
font_size: '13sp'
color: (1,1,1,1)
halign: 'center'
<ToAddrBoxlayout>:
orientation: 'horizontal'
MDLabel:
font_style: 'Body2'
theme_text_color: 'Primary'
text: app.tr._(root.to_addr)
font_size: '15sp'
halign: 'left'
IconRightSampleWidget:
icon: 'content-copy'
on_press: app.copy_composer_text(root.to_addr)
<ToAddressTitle>:
orientation: 'vertical'
MDLabel:
id: to_add_label
font_style: 'Subtitle2'
theme_text_color: 'Primary'
text: "To :"
font_size: '15sp'
halign: 'left'

View File

@ -0,0 +1,33 @@
<ShowQRCode>:
name: 'showqrcode'
BoxLayout:
orientation: 'vertical'
size_hint: (None, None)
pos_hint:{'center_x': .5, 'top': 0.9}
size: (app.window_size[0]/1.8, app.window_size[0]/1.8)
id: qr
BoxLayout:
orientation: 'vertical'
MyMDTextField:
size_hint_y: None
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._(root.address)
multiline: True
readonly: True
line_color_normal: [0,0,0,0]
_current_line_color: [0,0,0,0]
line_color_focus: [0,0,0,0]
halign: 'center'
font_size: dp(15)
bold: True
canvas.before:
Color:
rgba: (0,0,0,1)
# MDLabel:
# size_hint_y: None
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: "[b]BM-2cV7Y8imvAevK6z6YmhYRcj2t7rghBtDSZ[/b]"
# markup: True
# pos_hint: {'x': .28, 'y': 0.6}

View File

@ -0,0 +1,2 @@
<ScanScreen>:
name:'scanscreen'

View File

@ -0,0 +1,37 @@
#:import ZBarSymbol pyzbar.pyzbar.ZBarSymbol
BoxLayout:
orientation: 'vertical'
ZBarCam:
id: zbarcam
# optional, by default checks all types
code_types: ZBarSymbol.QRCODE, ZBarSymbol.EAN13
scan_callback: app._after_scan
scanner_line_y_initial: self.size[1]/2 +self.qrwidth/2
scanner_line_y_final: self.size[1]/2-self.qrwidth/2
canvas:
Color:
rgba: 0,0,0,.25
#left rect
Rectangle:
pos: self.pos[0], self.pos[1]
size: self.size[0]/2-self.qrwidth/2, self.size[1]
#right rect
Rectangle:
pos: self.size[0]/2+self.qrwidth/2, 0
size: self.size[0]/2-self.qrwidth/2, self.size[1]
#top rect
Rectangle:
pos: self.size[0]/2-self.qrwidth/2, self.size[1]/2+self.qrwidth/2
size: self.qrwidth, self.size[1]/2-self.qrwidth/2
#bottom rect
Rectangle:
pos: self.size[0]/2-self.qrwidth/2, 0
size: self.qrwidth, self.size[1]/2-self.qrwidth/2

View File

@ -0,0 +1,26 @@
<Sent>:
name: 'sent'
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
SearchBar:
id: sent_search
GridLayout:
id: identi_tag
padding: [20, 0, 0, 5]
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
Loader:
ComposerButton:

View File

@ -0,0 +1,964 @@
<Setting>:
name: 'set'
MDTabs:
id: tab_panel
tab_display_mode:'text'
Tab:
text: app.tr._("User Interface")
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(250) + self.minimum_height
padding: 10
BoxLayout:
size_hint_y: None
orientation: 'horizontal'
height: self.minimum_height
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
disabled: True
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Start-on-login not yet supported on your OS")
halign: 'left'
pos_hint: {'center_x': 0, 'center_y': 0.6}
disabled: True
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [20, 0, 0, 0]
spacing: dp(10)
height: dp(100) + self.minimum_height
# pos_hint: {'center_x': 0, 'center_y': 0.6}
BoxLayout:
id: box_height
orientation: 'vertical'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Tray")
halign: 'left'
bold: True
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Start Bitmessage in the tray(don't show main window)")
halign: 'left'
pos_hint: {'x': 0, 'y': .5}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Minimize to tray")
halign: 'left'
pos_hint: {'x': 0, 'y': .5}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Close to tray")
halign: 'left'
pos_hint: {'x': 0, 'y': .5}
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(100) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Hide connection notifications")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Show notification when message received")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Run in Portable Mode")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
BoxLayout:
orientation: 'vertical'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._('In portable Mode, messages and config files are stored in the same directory as the program rather then the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.')
# text: 'huiiiii'
halign: 'left'
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(100) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Willingly include unencrypted destination address when sending to a mobile device")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Use identicons")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
BoxLayout:
orientation: 'horizontal'
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Reply below Quote")
halign: 'left'
pos_hint: {'x': 0, 'y': 0.2}
Widget:
size_hint_y: None
height: 10
BoxLayout:
size_hint_y: None
orientation: 'vertical'
# padding: [0, 10, 0, 0]
spacing: 10
padding: [20, 0, 0, 0]
height: dp(20) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Interface Language")
# halign: 'right'
bold: True
MDDropDownItem:
id: dropdown_item
text: "System Setting"
# pos_hint: {"center_x": .5, "center_y": .6}
# current_item: "Item 0"
# on_release: root.menu.open()
BoxLayout:
spacing:5
orientation: 'horizontal'
# pos_hint: {'x':.76}
BoxLayout:
orientation: 'horizontal'
spacing: 10
MDRaisedButton:
text: app.tr._('Apply')
# on_press: root.change_language()
Tab:
text: 'Network Settings'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(500) + self.minimum_height
padding: 10
BoxLayout:
id: box_height
orientation: 'vertical'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Listening port")
halign: 'left'
bold: True
BoxLayout:
orientation: 'horizontal'
padding: [10, 0, 0, 0]
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Listen for connections on port:")
halign: 'left'
BoxLayout:
orientation: 'horizontal'
MDTextFieldRect:
size_hint: None, None
size: dp(100), dp(30)
text: app.tr._('8444')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
orientation: 'horizontal'
padding_left: 10
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("UPnP")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
BoxLayout:
orientation: 'vertical'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Proxy server / Tor")
halign: 'left'
bold: True
GridLayout:
cols: 2
padding: [10, 0, 0, 0]
MDLabel:
size_hint_x: None
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Type:")
halign: 'left'
MDDropDownItem:
id: dropdown_item2
dropdown_bg: [1, 1, 1, 1]
text: 'none'
pos_hint: {'x': 0.9, 'y': 0}
items: [f"{i}" for i in ['System Setting','U.S. English']]
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [30, 0, 0, 0]
spacing: 10
height: dp(100) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Server hostname:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('localhost')
pos_hint: {'center_y': .5, 'center_x': .5}
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Port:")
halign: 'left'
# TextInput:
# size_hint: None, None
# hint_text: '9050'
# size: dp(app.window_size[0]/4), dp(30)
# input_filter: "int"
# readonly: False
# multiline: False
# font_size: '15sp'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('9050')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Username:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
pos_hint: {'center_y': .5, 'center_x': .5}
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Pass:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
pos_hint: {'center_y': .5, 'center_x': .5}
BoxLayout:
orientation: 'horizontal'
padding: [30, 0, 0, 0]
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Authentication")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
BoxLayout:
orientation: 'horizontal'
padding: [30, 0, 0, 0]
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Listen for incoming connections when using proxy")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
BoxLayout:
orientation: 'horizontal'
padding: [30, 0, 0, 0]
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(50)
# active: True
halign: 'center'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Only connect to onion services(*.onion)")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
BoxLayout:
orientation: 'vertical'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Bandwidth limit")
halign: 'left'
bold: True
BoxLayout:
size_hint_y: None
orientation: 'horizontal'
padding: [30, 0, 0, 0]
height: dp(30) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Maximum download rate (kB/s):[0:unlimited]")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: app.window_size[0]/2, dp(30)
hint_text: app.tr._('0')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
size_hint_y: None
orientation: 'horizontal'
padding: [30, 0, 0, 0]
height: dp(30) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Maximum upload rate (kB/s):[0:unlimited]")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: app.window_size[0]/2, dp(30)
hint_text: '0'
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
size_hint_y: None
orientation: 'horizontal'
padding: [30, 0, 0, 0]
height: dp(30) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Maximum outbound connections:[0:none]")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: app.window_size[0]/2, dp(30)
hint_text: '8'
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
spacing:5
orientation: 'horizontal'
# pos_hint: {'x':.76}
MDRaisedButton:
text: app.tr._('Apply')
Tab:
text: 'Demanded Difficulty'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(300) + self.minimum_height
padding: 10
BoxLayout:
id: box_height
orientation: 'vertical'
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: app.tr._("Listening port")
# halign: 'left'
# bold: True
# BoxLayout:
# size_hint_y: None
# orientation: 'vertical'
# height: dp(210 if app.app_platform == 'android' else 100)+ self.minimum_height
# padding: 20
# # spacing: 10
# BoxLayout:
# # size_hint_y: None
# id: box1_height
# # orientation: 'vertical'
# # height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "\n\n\nWhen someone sends you a message, their computer must first complete some work. The difficulty of this work, by default, is 1. You may raise this default for new addresses you create by changing the values here. Any new addresses you create will require senders to meet the higher difficulty. There is one exception: if you add a friend or acquaintance to your address book, Bitmessage will automatically notify them when you next send a message that they need only complete the minimum amount of work: difficulty 1.\n\n"
halign: 'left'
BoxLayout:
orientation: 'horizontal'
padding: 5
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Total difficulty:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('00000.0')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
# size_hint_y: None
id: box1_height
orientation: 'vertical'
padding: 5
# height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "The 'Total difficulty' affects the absolute amount of work the sender must complete. Doubling this value doubles the amount of work."
halign: 'left'
BoxLayout:
orientation: 'horizontal'
spacing: 0
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Small message difficulty:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('00000.0')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
size_hint_y: None
padding: 0
id: box1_height
orientation: 'vertical'
# height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "The 'Small message difficulty' mostly only affects the difficulty of sending small messages. Doubling this value makes it almost twice as difficult to send a small message but doesn't really affect large messages."
halign: 'left'
# BoxLayout:
# id: box2_height
# size_hint_y: None
# orientation: 'vertical'
# height: dp(30) + self.minimum_height
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: app.tr._("Leave these input fields blank for the default behavior.")
# halign: 'left'
# BoxLayout:
# size_hint_y: None
# orientation: 'vertical'
# padding: [10, 0, 0, 0]
# height: dp(50) + self.minimum_height
# BoxLayout:
# orientation: 'horizontal'
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: app.tr._("Give up after")
# halign: 'left'
# MDTextFieldRect:
# size_hint: None, None
# size: dp(70), dp(30)
# text: app.tr._('0')
# # pos_hint: {'center_y': .5, 'center_x': .5}
# input_filter: "int"
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: app.tr._("days and")
# halign: 'left'
# MDTextFieldRect:
# size_hint: None, None
# size: dp(70), dp(30)
# text: '0'
# # pos_hint: {'center_y': .5, 'center_x': .5}
# input_filter: "int"
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: "months"
# halign: 'left'
BoxLayout:
size_hint_y: None
spacing:10
orientation: 'horizontal'
# pos_hint: {'left': 0}
# pos_hint: {'x':.75}
height: dp(10) + self.minimum_height
MDRaisedButton:
text: app.tr._('Cancel')
MDRaisedButton:
text: app.tr._('Apply')
Tab:
text: 'Max acceptable Difficulty'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(210 if app.app_platform == 'android' else 100)+ self.minimum_height
padding: 20
# spacing: 10
BoxLayout:
# size_hint_y: None
id: box1_height
orientation: 'vertical'
spacing: 10
# pos_hint: {'x': 0, 'y': 0.2}
# height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "\n\n\nHere you may set the maximum amount of work you are willing to do to send a message to another person. Setting these values to 0 means that any value is acceptable."
halign: 'left'
# BoxLayout:
# id: box2_height
# size_hint_y: None
# orientation: 'vertical'
# height: dp(40) + self.minimum_height
# BoxLayout:
# size_hint_y: None
# orientation: 'vertical'
# padding: [10, 0, 0, 0]
# height: dp(50) + self.minimum_height
GridLayout:
cols: 2
padding: [10, 0, 0, 0]
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [10, 0, 0, 0]
spacing: 10
height: dp(50) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Maximum acceptable total difficulty:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('00000.0')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Hardware GPU acceleration (OpenCL):")
halign: 'left'
MDDropDownItem:
id: dropdown_item
text: "None"
pos_hint: {"center_x": 0, "center_y": 0}
# current_item: "Item 0"
# on_release: root.menu.open()
# BoxLayout:
# size_hint_y: None
# spacing:5
# orientation: 'horizontal'
# pos_hint: {'center_y': .4, 'center_x': 1.15}
# halign: 'right'
BoxLayout:
size_hint_y: None
spacing:5
orientation: 'horizontal'
pos_hint: {'center_y': 1, 'center_x': 1.15}
halign: 'right'
# pos_hint: {'left': 0}
# pos_hint: {'x':.75}
height: dp(50) + self.minimum_height
MDRaisedButton:
text: app.tr._('Cancel')
MDRaisedButton:
text: app.tr._('OK')
Tab:
text: 'Resends Expire'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(210 if app.app_platform == 'android' else 100)+ self.minimum_height
padding: 20
# spacing: 10
BoxLayout:
# size_hint_y: None
id: box1_height
orientation: 'vertical'
# height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "By default, if you send a message to someone and he is offline for more than two days, Bitmessage will send the message again after an additional two days. This will be continued with exponential backoff forever; messages will be resent after 5, 10, 20 days ect. until the receiver acknowledges them. Here you may change that behavior by having Bitmessage give up after a certain number of days or months."
halign: 'left'
BoxLayout:
id: box2_height
size_hint_y: None
orientation: 'vertical'
height: dp(30) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Leave these input fields blank for the default behavior.")
halign: 'left'
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [10, 0, 0, 0]
height: dp(50) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Give up after")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(70), dp(30)
text: app.tr._('0')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("days and")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(70), dp(30)
text: '0'
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "months"
halign: 'left'
BoxLayout:
size_hint_y: None
spacing:5
orientation: 'horizontal'
# pos_hint: {'left': 0}
# pos_hint: {'x':.75}
height: dp(50) + self.minimum_height
# MDRaisedButton:
# text: app.tr._('Cancel')
MDRaisedButton:
text: app.tr._('Apply')
Tab:
text: 'Namecoin Integration'
ScrollView:
do_scroll_x: False
BoxLayout:
size_hint_y: None
orientation: 'vertical'
height: dp(210 if app.app_platform == 'android' else 100)+ self.minimum_height
padding: 20
# spacing: 10
BoxLayout:
# size_hint_y: None
id: box1_height
orientation: 'vertical'
spacing: 10
# pos_hint: {'x': 0, 'y': 0.2}
# height: dp(100) + self.minimum_height
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
# text: app.tr._(root.exp_text)
text: "\n\n\n\n\n\nBitmessage can utilize a different Bitcoin-based program called Namecoin to make addresses human-friendly. For example, instead of having to tell your friend your long Bitmessage address, you can simply tell him to send a message to test.\n\n(Getting your own Bitmessage address into Namecoin is still rather difficult).\n\nBitmessage can use either namecoind directly or a running nmcontrol instance\n\n"
halign: 'left'
BoxLayout:
id: box2_height
size_hint_y: None
orientation: 'vertical'
height: dp(40) + self.minimum_height
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [10, 0, 0, 0]
height: dp(50) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
padding: [10, 0, 0, 0]
BoxLayout:
orientation: 'horizontal'
# padding_left: 10
# MDCheckbox:
# id: chkbox
# size_hint: None, None
# size: dp(48), dp(50)
# # active: True
# halign: 'center'
# MDLabel:
# font_style: 'Body1'
# theme_text_color: 'Primary'
# text: app.tr._("UPnP")
# halign: 'left'
# pos_hint: {'x': 0, 'y': 0}
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Connect to:")
halign: 'left'
# MDCheckbox:
# id: chkbox
# size_hint: None, None
# size: dp(48), dp(50)
# # active: True
# halign: 'center'
Check:
active: True
pos_hint: {'x': 0, 'y': -0.2}
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Namecoind")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
Check:
active: False
pos_hint: {'x': 0, 'y': -0.2}
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("NMControl")
halign: 'left'
pos_hint: {'x': 0, 'y': 0}
GridLayout:
cols: 2
padding: [10, 0, 0, 0]
BoxLayout:
size_hint_y: None
orientation: 'vertical'
padding: [30, 0, 0, 0]
spacing: 10
height: dp(100) + self.minimum_height
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("hostname:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('localhost')
pos_hint: {'center_y': .5, 'center_x': .5}
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Port:")
halign: 'left'
# TextInput:
# size_hint: None, None
# hint_text: '9050'
# size: dp(app.window_size[0]/4), dp(30)
# input_filter: "int"
# readonly: False
# multiline: False
# font_size: '15sp'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
hint_text: app.tr._('9050')
pos_hint: {'center_y': .5, 'center_x': .5}
input_filter: "int"
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Username:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
pos_hint: {'center_y': .5, 'center_x': .5}
BoxLayout:
orientation: 'horizontal'
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: app.tr._("Password:")
halign: 'left'
MDTextFieldRect:
size_hint: None, None
size: dp(app.window_size[0]/4), dp(30)
pos_hint: {'center_y': .5, 'center_x': .5}
password: True
BoxLayout:
size_hint_y: None
spacing:5
orientation: 'horizontal'
pos_hint: {'center_y': .4, 'center_x': 1.15}
halign: 'right'
# pos_hint: {'left': 0}
# pos_hint: {'x':.75}
height: dp(50) + self.minimum_height
MDRaisedButton:
text: app.tr._('Cancel')
MDRaisedButton:
text: app.tr._('Apply')
MDRaisedButton:
text: app.tr._('OK')
Loader:

View File

@ -0,0 +1,25 @@
<Trash>:
name: 'trash'
BoxLayout:
orientation: 'vertical'
spacing: dp(5)
GridLayout:
id: identi_tag
padding: [20, 20, 0, 5]
spacing: dp(5)
cols: 1
size_hint_y: None
height: self.minimum_height
MDLabel:
id: tag_label
text: ''
font_style: 'Subtitle2'
BoxLayout:
orientation:'vertical'
ScrollView:
id: scroll_y
do_scroll_x: False
MDList:
id: ml
Loader:
ComposerButton: