#:kivy 2.0.0 #: set highlight_color (0.388,0.694,0.737, 1) #: set main_color (0.88235, 0.88627, 0.88235, 1) #: set highlight_light (0.30588,0.67451, 0.74510, 1) #: set bar_color (0.259,0.435,0.569 ,1 ) #: set bar_light (0.447,0.616,0.757, 1) #: set dark_text (0,0,0,1) #: set light_text (1,1,1,1) #:import FirebaseLoginScreen firebaseloginscreen.firebaseloginscreen.FirebaseLoginScreen GridLayout: id: main cols:1 rows:2 MDTopAppBar: title: 'LandScape' left_action_items: [["assets/virgis.png",lambda x: app.do_nothing()]] right_action_items:[['play', lambda x: app.play(), "Play Project in ViRGiS"],['folder-open', lambda x: app.show_load(), "Open File" ], ['newspaper-plus', lambda x: app.new_file(), "New Project" ], ['dots-vertical', lambda x: app.show_menu(x), "More Options"]] ScreenManager: id: screen_manager FirebaseLoginScreen: id: firebase_login_screen name: "firebase_login_screen" debug: True remember_user: True require_email_verification: True web_api_key: "AIzaSyC588Nc4mif8n9qds3gMld5tLxrIvBB3Q4" background: "background.jpg" on_login_success: if self.login_state == 'out': app.logout() if self.login_state == 'in': app.local_id = self.localId if self.login_state == 'in': app.user_idToken = self.idToken if self.login_state == 'in': app.login() failed_account_load: app.failed Screen: id: mainScreen name: "mainScreen" MainPane: id: mainPane Screen: id: unauthScreen name: "unauthScreen" FloatLayout: RoundedCard: pos_hint: {"center_y": .5, "center_x": .5} orientation: "vertical" size_hint: 0.5, 0.5 md_bg_color: self.theme_cls.primary_color padding: "10sp" RoundedCard: orientation: "vertical" size_hint_y: 3 padding: "20sp" Details: text:"No Valid License" Widget: : cols:1 rows:3 GridLayout: rows: 1 size_hint_max_y: "50sp" background_color: (0,0,0,0) Heading1: text: "Project File : " halign: "right" background_color: app.info color: app.info_text Heading1: text: app.project.filename halign: "left" background_color: app.info color: app.info_text MDBoxLayout: orientation: "horizontal" padding: "5sp" size_hint_max_y: "120sp" RoundedCard: orientation: "horizontal" MDBoxLayout: orientation: "vertical" Widget: size_hint_y: 0.5 DetailBox: id: project_name text: root.projectName on_text: root.projectName = self.text disabled: root.noData hint_text: "Project Name" required: True helper_text_mode: "on_error" helper_text: "You must give the project a valid name" pos_hint: {"center-x": 0.5} Widget: size_hint_y: 0.5 MDBoxLayout: orientation: "horizontal" BoxLayout: orientation: "vertical" DetailFloat: id: lat text: root.lat on_text: root.lat = self.text disabled: root.noData hint_text: "Latitude" tooltip_text: "Geographic center of the\nModel : EPSG:4326 coords" required: True helper_text_mode: "on_error" helper_text: "You must give the project a valid origin" DetailFloat: id: lon text: root.lon on_text: root.lon = self.text disabled: root.noData hint_text: "Longitude" tooltip_text: "Geographic center of the\nModel : EPSG:4326 coords" required: True helper_text_mode: "on_error" helper_text: "You must give the project a valid origin" BoxLayout: orientation: "vertical" size_hint_x: 0.2 Widget: MyRaisedIconButton: icon: "map" tooltip_text: "Show the location on a map" on_release: root.map() Widget: MDBoxLayout: orientation:"vertical" DetailFloat: id: gridscale text: root.gridScale hint_text: "gridScale" on_text: root.gridScale = self.text required: True disabled: root.noData tooltip_text: "Size of grid to be used by\n \"Snap to Grid\" : metres" helper_text_mode: "on_error" helper_text: "You must give the project a valid grid scale" DetailBox: id: default_proj text: root.default_proj hint_text: "Project CRS" on_text: root.default_proj = self.text helper_text: "Default EPSG:4326" tooltip_text: "Default CRS or Projection for the project" helper_text_mode: "on_focus" GridLayout: cols:2 rows:1 LayerListPane: id: layerList LayerDetailPane: id: layerDetail FAB: icon: app.fab on_release: app.fab_action() pos: [self.parent.size[0] - 1.5 * self.size[0], 0.5 * self.size[1]] tooltip_text: app.tooltip_text : cols: 1 size_hint_x: 0.5 Heading1: size_hint_max_y: "25sp" text: "Layers" BoxLayout orientation: "horizontal" size_hint_max_y: "25sp" spacing:"3sp" padding: ("5sp","3sp") OldButton: text: 'Add Layer' on_release: root.add_layer() tooltip_text: "Add new Data Layer" OldButton: text: 'Add Map' on_release: root.add_map() tooltip_text: "Add a Map Layer" OldButton: text: 'Delete Layer' on_release: root.delete_layer() tooltip_text: "Delete Layer" RecycleView: id: layerRv viewclass: 'InvertSelectableLabel' data: root.layers SelectableRecycleBoxLayout: id: layerRecycle default_size: None, dp(56) default_size_hint: 1, None size_hint_y: None height: self.minimum_height orientation: 'vertical' padding: ("5sp","2sp") : size: root.size pos: root.pos BoxLayout: padding:"10sp" spacing: "10sp" orientation: "vertical" Heading1: text: "Create a New Layer" GridLayout: cols:1 GridLayout: cols:1 padding: "20sp" siz_hint_y: 0.5 Heading1: text: "1 : Chose a type of location for the source data" Spinner: id: sourceType size_hint_max_y: "30sp" values: root.sourceTypes text: root.sourceType on_text: root.sourceType = self.text GridLayout: cols:2 size_hint_y: 1 padding: "20sp" GridLayout: cols:1 Heading1: text: "2 : Chose or type in a source location (i.e. File or URI)" GridLayout: rows:1 DetailBox: id: create_source text: root.source on_text: root.source = self.text left_icon: "folder-open" left_icon_action: root.get_source left_tooltip: "Search for source file" right_icon: "file-document" right_tooltip: "Validate and get details of\nthe layer source data" right_icon_action: root.info right_disabled: False if self.text else True GridLayout: cols:1 padding: "10sp" size_hint_y: 2 GridLayout: rows:1 Details: text:"Source Processor" tooltip_text: "This is the processing type for the data source" Details: text: root.dal GridLayout: rows:1 Details: text:"Source Driver" tooltip_text: "This is the driver type for the data source" Details: text: root.driver GridLayout: rows:1 Details: text:"CRS" tooltip_text: "This is the CRS reference found in the data source" Details: text: root.proj GridLayout: cols:1 padding: "20sp" select: root.select size_hint_y: 2 Heading1: text: "3 : Chose one of the Layer Types shown below" RecycleView: id: layerTypeRv viewclass: 'SelectableLabel' data: root.selectedTypes SelectableRecycleBoxLayout: id: layerTyperRecycle default_size: None, dp(56) default_size_hint: 1, None size_hint_y: None height: self.minimum_height orientation: 'vertical' padding: "5sp" : orientation: "vertical" : FloatLayout: RoundedCard: pos_hint: {"center_y": .5, "center_x": .5} orientation: "vertical" size_hint: 0.5, 0.5 md_bg_color: self.theme_cls.primary_color padding: "10sp" RoundedCard: orientation: "horizontal" padding: "10sp" Details: text: "Light/Dark Theme" MySwitch: id: theme_select on_active: app.set_theme(self.active) active: True if self.theme_cls.theme_style == "Dark" else False Widget: size_hint_y: 3