This repository has been archived on 2024-12-09. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-09/src/bitmessagekivy/main.kv

726 lines
23 KiB
Plaintext
Raw Normal View History

#:import Toolbar kivymd.toolbar.Toolbar
#:import ThemeManager kivymd.theming.ThemeManager
#:import MDNavigationDrawer kivymd.navigationdrawer.MDNavigationDrawer
#:import NavigationLayout kivymd.navigationdrawer.NavigationLayout
#:import NavigationDrawerDivider kivymd.navigationdrawer.NavigationDrawerDivider
#:import NavigationDrawerToolbar kivymd.navigationdrawer.NavigationDrawerToolbar
#:import NavigationDrawerSubheader kivymd.navigationdrawer.NavigationDrawerSubheader
#:import MDCheckbox kivymd.selectioncontrols.MDCheckbox
#:import MDSwitch kivymd.selectioncontrols.MDSwitch
#:import MDList kivymd.list.MDList
#:import OneLineListItem kivymd.list.OneLineListItem
#:import TwoLineListItem kivymd.list.TwoLineListItem
#:import ThreeLineListItem kivymd.list.ThreeLineListItem
#:import OneLineAvatarListItem kivymd.list.OneLineAvatarListItem
#:import OneLineIconListItem kivymd.list.OneLineIconListItem
#:import OneLineAvatarIconListItem kivymd.list.OneLineAvatarIconListItem
#:import MDTextField kivymd.textfields.MDTextField
#:import MDSpinner kivymd.spinner.MDSpinner
#:import MDCard kivymd.card.MDCard
#:import MDSeparator kivymd.card.MDSeparator
#:import MDDropdownMenu kivymd.menu.MDDropdownMenu
#:import get_color_from_hex kivy.utils.get_color_from_hex
#:import colors kivymd.color_definitions.colors
#:import SmartTile kivymd.grid.SmartTile
#:import MDSlider kivymd.slider.MDSlider
#:import MDTabbedPanel kivymd.tabs.MDTabbedPanel
#:import MDTab kivymd.tabs.MDTab
#:import MDProgressBar kivymd.progressbar.MDProgressBar
#:import MDAccordion kivymd.accordion.MDAccordion
#:import MDAccordionItem kivymd.accordion.MDAccordionItem
#:import MDAccordionSubItem kivymd.accordion.MDAccordionSubItem
#:import MDThemePicker kivymd.theme_picker.MDThemePicker
#:import MDBottomNavigation kivymd.tabs.MDBottomNavigation
#:import MDBottomNavigationItem kivymd.tabs.MDBottomNavigationItem
#:import MDFloatingActionButton kivymd.button.MDFloatingActionButton
2019-06-06 15:48:20 +02:00
#:import Factory kivy.factory.Factory
<MyNavigationDrawerIconButton@NavigationDrawerIconButton>:
icon: 'checkbox-blank-circle'
2019-06-06 15:48:20 +02:00
<MySpinnerOption@SpinnerOption>:
font_size: '12.5sp'
<ContentNavigationDrawer@Navigatorss>:
drawer_logo: './images/drawer_logo1.png'
NavigationDrawerDivider:
NavigationDrawerTwoLineListItem:
text: "Accounts"
NavigationDrawerIconButton:
Spinner:
pos_hint:{"x":0,"y":.25}
id: btn
2019-06-06 15:48:20 +02:00
option_cls: Factory.get("MySpinnerOption")
font_size: '12.5sp'
text: app.getDefaultAccData()
values: app.variable_1
on_text:app.getCurrentAccountData(self.text)
on_press: app.limit_spinner()
NavigationDrawerIconButton:
icon: 'email-open'
text: "Inbox"
on_release: app.root.ids.scr_mngr.current = 'inbox'
badge_text: "99+"
NavigationDrawerIconButton:
icon: 'send'
text: "Sent"
on_release: app.root.ids.scr_mngr.current = 'sent'
badge_text: "0"
NavigationDrawerIconButton:
icon: 'message-draw'
text: "Draft"
on_release: app.root.ids.scr_mngr.current = 'inbox'
badge_text: "99+"
NavigationDrawerIconButton:
text: "Starred"
icon:'star'
on_release: app.root.ids.scr_mngr.current = 'inbox'
NavigationDrawerIconButton:
icon: 'archive'
text: "Archieve"
on_release: app.root.ids.scr_mngr.current = 'trash'
badge_text: "9+"
NavigationDrawerIconButton:
icon: 'email-open-outline'
text: "Spam"
on_release: app.root.ids.scr_mngr.current = 'inbox'
badge_text: "8+"
NavigationDrawerIconButton:
icon: 'delete'
text: "Trash"
on_release: app.root.ids.scr_mngr.current = 'trash'
badge_text: "9+"
NavigationDrawerIconButton:
text: "All Mails"
icon:'contact-mail'
on_release: app.root.ids.scr_mngr.current = 'inbox'
badge_text: "999+"
NavigationDrawerDivider:
NavigationDrawerSubheader:
text: "All labels"
NavigationDrawerIconButton:
text: "Address Book"
icon:'book-multiple'
on_release: app.root.ids.scr_mngr.current = 'addressbook'
NavigationDrawerIconButton:
text: "Settings"
icon:'settings'
on_release: app.root.ids.scr_mngr.current = 'set'
NavigationDrawerIconButton:
text: "Subscriptions/Payment"
icon:'wallet'
on_release: app.root.ids.scr_mngr.current = 'payment'
NavigationDrawerIconButton:
text: "new address"
icon:'account-plus'
on_release: app.root.ids.scr_mngr.current = 'login'
NavigationDrawerIconButton:
text: "Network Status"
icon:'server-network'
on_release: app.root.ids.scr_mngr.current = 'networkstat'
NavigationDrawerIconButton:
text: "My Addresses"
icon:'account-multiple'
on_release: app.root.ids.scr_mngr.current = 'myaddress'
NavigationLayout:
id: nav_layout
ContentNavigationDrawer:
id: nav_drawer
BoxLayout:
orientation: 'vertical'
Toolbar:
id: toolbar
opacity: 1 if app.addressexist() else 0
disabled: False if app.addressexist() else True
md_bg_color: app.theme_cls.primary_color
background_palette: 'Primary'
background_hue: '500'
left_action_items: [['menu', lambda x: app.root.toggle_nav_drawer()]]
Button:
id: myButton
size_hint_y: 0.35
size_hint_x: 0.2
pos_hint: {'x': .1, 'y': 0.3}
color: 0,0,0,1
background_color: (0,0,0,0)
on_press:app.addingtoaddressbook()
Image:
source: './images/addressbookadd.png'
center_x: self.parent.center_x
center_y: self.parent.center_y
ScreenManager:
id: scr_mngr
Inbox:
id:sc1
Page:
id:sc2
Create:
id:sc3
Sent:
id:sc4
Trash:
id:sc5
Login:
id:sc6
Random:
id:sc7
AddressSuccessful:
id:sc8
Setting:
id:sc9
MyAddress:
id:sc10
AddressBook:
id:sc11
Payment:
id:sc12
NetworkStat:
id:sc13
2019-06-06 15:48:20 +02:00
MailDetail:
id:sc14
<Inbox>:
name: 'inbox'
ScrollView:
do_scroll_x: False
MDList:
id: ml
2019-06-06 15:48:20 +02:00
ComposerButton:
<Sent>:
name: 'sent'
ScrollView:
do_scroll_x: False
MDList:
id: ml
2019-06-06 15:48:20 +02:00
ComposerButton:
<Trash>:
name: 'trash'
ScrollView:
do_scroll_x: False
MDList:
id: ml
2019-06-06 15:48:20 +02:00
ComposerButton:
<Draft>:
name: 'draft'
Label:
text:"I have a good dialox box"
color: 0,0,0,1
<Test>:
name: 'test'
Label:
text:"I am in test"
color: 0,0,0,1
<Page>:
name: 'page'
Label:
text:"I am on page"
color: 0,0,0,1
<Create>:
name: 'create'
<DropDownWidget>:
ScrollView:
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(app.scr_size)
padding: dp(32)
spacing: 15
BoxLayout:
orientation: 'vertical'
MDTextField:
id: ti
hint_text: 'type or select sender address'
size_hint_y: None
height: 100
multiline: False
required: True
helper_text_mode: "on_error"
BoxLayout:
size_hint_y: None
height: 100
Spinner:
background_color: app.theme_cls.primary_dark
id: btn
text: 'select'
values: app.variable_1
on_text: ti.text = self.text
2019-06-06 15:48:20 +02:00
option_cls: Factory.get("MySpinnerOption")
font_size: '12.5sp'
BoxLayout:
orientation: 'vertical'
txt_input: txt_input
rv: rv
size : (890, 60)
size_hint: 1,1
MyTextInput:
id: txt_input
size_hint_y: None
height: 100
hint_text: 'type or search recipients address starting with BM-'
RV:
id: rv
MDTextField:
id: subject
hint_text: 'subject'
required: True
height: 100
size_hint_y: None
multiline: False
helper_text_mode: "on_error"
MDTextField:
id: body
multiline: True
hint_text: 'body'
size_hint_y: None
required: True
helper_text_mode: "on_error"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .3
text: 'send'
on_press: root.send()
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .3
text: 'reset'
on_press: app.root.ids.scr_mngr.current = 'random'
<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
<Login>:
name: 'login'
ScrollView:
do_scroll_x: False
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(800)
BoxLayout:
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "You may generate addresses by using either random numbers or by using a passphrase If you use a passphrase, the address is called a deterministic; address The Random Number option is selected by default but deterministic addresses have several \n pros and cons:\n"
halign: 'center'
bold: True
color:app.theme_cls.primary_dark
BoxLayout:
MDLabel:
font_style: 'Caption'
theme_text_color: 'Primary'
text: "If talk about pros You can recreate your addresses on any computer from memory, You need-not worry about backing up your keys.dat file as long as you can remember your passphrase and aside talk about cons You must remember (or write down) your You must remember the address version number and the stream number along with your passphrase If you choose a weak passphrase and someone on the Internet can brute-force it, they can read your messages and send messages as you"
halign: 'center'
bold: True
color:app.theme_cls.primary_dark
MDCheckbox:
id: grp_chkbox_1
group: 'test'
active: True
allow_no_selection: False
MDLabel:
font_style: 'Caption'
theme_text_color: 'Primary'
text: "use a random number generator to make an address"
halign: 'center'
size_hint_y: None
bold: True
height: self.texture_size[1] + dp(4)
color: [0.941, 0, 0,1]
MDCheckbox:
id: grp_chkbox_1
group: 'test'
allow_no_selection: False
MDLabel:
font_style: 'Caption'
theme_text_color: 'Primary'
text: "use a pseudo number generator to make an address"
halign: 'center'
size_hint_y: None
bold: True
color: [0.941, 0, 0,1]
height: self.texture_size[1] + dp(4)
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .5
text: 'proceed'
on_press: app.root.ids.scr_mngr.current = 'random'
<Random>:
name: 'random'
ScrollView:
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: self.minimum_height
padding: dp(48)
spacing: 200
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "Random Addresses"
halign: 'center'
bold: True
color:app.theme_cls.primary_dark
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "Here you may generate as many addresses as you like, Indeed creating and abandoning addresses is encouraged"
halign: 'center'
bold: True
color:app.theme_cls.primary_dark
MDTextField:
id: label
multiline: True
hint_text: "Label"
required: True
helper_text_mode: "on_error"
MDRaisedButton:
text: 'next'
size_hint_y: 0.13
size_hint_x: 0.8
pos_hint: {'x': .1, 'y': 0.3}
opposite_colors: True
on_release: root.generateaddress()
<AddressSuccessful>:
name: 'add_sucess'
Label:
text: 'Successfully created a new bit address'
color: 0,0,0,1
<Setting>:
name: 'set'
ScrollView:
do_scroll_x: False
MDList:
id: ml
size_hint_y: None
height: dp(500)
OneLineListItem:
text: "SERVER SETTINGS"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: 'Server '
on_press: app.root.ids.scr_mngr.current = 'random'
OneLineListItem:
text: "DATA SETTINGS"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: 'Import or export data'
on_press: app.root.ids.scr_mngr.current = 'random'
OneLineListItem:
text: "OTHER SETTINGS"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: 'Restart background service'
on_press: app.root.ids.scr_mngr.current = 'random'
BoxLayout:
AnchorLayout:
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "bitmessage is 11 seconds behind the network"
halign: 'center'
bold: True
color: [0.941, 0, 0,1]
BoxLayout:
MDCheckbox:
id: chkbox
size_hint: None, None
size: dp(48), dp(48)
active: True
MDLabel:
font_style: 'Body1'
theme_text_color: 'Primary'
text: "show settings (for advanced users only)"
halign: 'left'
bold: True
color: app.theme_cls.primary_dark
<MyAddress>:
name: 'myaddress'
ScrollView:
do_scroll_x: False
MDList:
id: ml
2019-06-06 15:48:20 +02:00
ComposerButton:
<AddressBook>:
name: 'addressbook'
BoxLayout:
orientation:'vertical'
ScrollView:
do_scroll_x: False
MDList:
id: ml
2019-06-06 15:48:20 +02:00
ComposerButton:
<Payment>:
name: 'payment'
<GrashofPopup>:
id: popup
title: 'add contact\'s'
background: './images/popup.jpeg'
title_size: sp(30)
title_color: 0.4, 0.3765, 0.3451, 1
size_hint: 1, 1
auto_dismiss: False
separator_color: 0.3529, 0.3922, 0.102, 0.7
BoxLayout:
size_hint_y: None
orientation: 'vertical'
spacing:50
id: popup_box
orientation: 'vertical'
MDTextField:
id: label
multiline: True
hint_text: "Label"
required: True
helper_text_mode: "on_error"
MDTextField:
id: address
hint_text: "Address"
required: True
helper_text_mode: "on_error"
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Save'
on_release:
root.savecontact()
app.root.ids.scr_mngr.current = 'addressbook'
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Cancel'
on_press: root.dismiss()
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Scan QR code'
<NetworkStat>:
name: 'networkstat'
MDTabbedPanel:
id: tab_panel
tab_display_mode:'text'
MDTab:
name: 'connections'
text: "Total connections"
ScrollView:
do_scroll_x: False
MDList:
id: ml
size_hint_y: None
height: dp(200)
OneLineListItem:
text: "Total Connections"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .5
text: root.text_variable_1
MDTab:
name: 'processes'
text: 'Processes'
ScrollView:
do_scroll_x: False
MDList:
id: ml
size_hint_y: None
height: dp(500)
OneLineListItem:
text: "person-to-person"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: root.text_variable_2
OneLineListItem:
text: "Brodcast"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: root.text_variable_3
OneLineListItem:
text: "publickeys"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: root.text_variable_4
OneLineListItem:
text: "objects"
BoxLayout:
AnchorLayout:
MDRaisedButton:
size_hint: .8, .6
text: root.text_variable_5
2019-06-06 15:48:20 +02:00
<MailDetail>:
name: 'mailDetail'
ScrollView:
do_scroll_x: False
BoxLayout:
orientation: 'vertical'
size_hint_y: None
height: dp(400)
padding: dp(32)
MDLabel:
font_style: 'Headline'
theme_text_color: 'Primary'
text: root.subject
halign: 'left'
2019-06-06 15:48:20 +02:00
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
text: "From: " + root.from_addr
halign: 'left'
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
text: "To: " + root.to_addr
halign: 'left'
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
2019-06-06 15:48:20 +02:00
text: root.status
halign: 'left'
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
text: root.message
halign: 'left'
2019-06-06 15:48:20 +02:00
bold: True
BoxLayout:
spacing:50
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Copy'
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Delete'
on_press: root.delete_mail()
<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'
<MyaddDetailPopup>:
id: myadd_popup
background: './images/popup.jpeg'
separator_height: 0
auto_dismiss: False
BoxLayout:
size_hint_y: None
spacing:50
id: popup_box
orientation: 'vertical'
MDLabel:
font_style: 'Title'
theme_text_color: 'Primary'
text: "Label"
halign: 'left'
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
text: root.address_label
halign: 'left'
MDLabel:
font_style: 'Title'
theme_text_color: 'Primary'
text: "Address"
halign: 'left'
MDLabel:
font_style: 'Subhead'
theme_text_color: 'Primary'
text: root.address
halign: 'left'
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Save'
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Cancel'
on_press: root.dismiss()
MDRaisedButton:
size_hint: 1, None
height: dp(40)
text: 'Scan QR code'