Exemplo n.º 1
0
def generate_GUI(menus):
    app_gui = TabbedPanel()
    app_gui.clear_tabs()
    app_gui.orientation = "vertical"
    app_gui.do_default_tab = False
    app_gui.tab_width = 150

    for menu_key, sub_menu in menus.items():
        main_menu = TabbedPanelHeader(text=menu_key)
        scroll_pane = ScrollView()
        scroll_pane.scroll_type = ['bars', 'content']
        scroll_pane.bar_pos_y = 'left'
        scroll_pane.bar_width = 6
        scroll_pane.do_scroll_y = True
        scroll_pane.do_scroll_x = False
        scroll_pane.scroll_y = 1

        menu_grid = GridLayout(cols=1, spacing=2, size_hint_y=None)
        menu_grid.orientation = "vertical"
        menu_grid.padding = 10
        menu_grid.row_default_height = 1
        menu_height = 0

        print(">>>" + menu_key)
        for sub_menu_key, items in sub_menu.items():
            menu_grid.add_widget(
                Label(text="     " + sub_menu_key, size_hint=(None, None), font_size=14, halign="left",
                      valign="middle"))
            print("\t" + sub_menu_key)
            for option in items:

                if "Name" in option:
                    print("\t\t" + option["Name"])
                    btn = Button(text=option["Name"], size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8))
                    btn.bind(on_press=lambda x: webbrowser.open(option["URL"]))
                else:
                    print("\t\t" + "<EMPTY>")
                    btn = Button(text="<EMPTY>", size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8))
                    btn.bind(on_press=lambda x: webbrowser.open(option["URL"]))
                btn.width = 250
                btn.height = 50
                menu_grid.add_widget(btn)
                menu_height += 80
            menu_height += 51
        menu_grid.height = menu_height
        scroll_pane.add_widget(menu_grid)
        main_menu.content = scroll_pane
        main_menu.orientation = "vertical"

        # Adding headers to main layout
        app_gui.add_widget(main_menu)
    return app_gui
def format_airtable_data(header):
		# Gridlayout to host menu options and URL buttons
		formated_data = GridLayout(cols=1, spacing=10, size_hint_y=None)
		formated_data.orientation = "vertical"
		formated_data.padding = 10
		formated_data.row_default_height = 1

		rows = 0 # needed to track the number of items inside the gridlayout
		
		# Converting airtable data into usable Kivy GUI labels and Buttons
		for item in tab_menus:
			if item["id"] == header:
				# Creating the Labels
				if str(item["menu"]) != "N/A":
					formated_data.add_widget(Label(text=item["menu"],size_hint=(.7,.5))) # Creating a menu option as a Label
					rows += 1
				else: # For menu options that have yet to be given a name
					formated_data.add_widget(Label(text="Menu name pending",size_hint=(.7,.5)))
					rows += 1

				# Creating the URL Buttons that belong bellow each Label
				for link in item["link"]:
					url_name = str(link).split('!')[0]	
					url = str(link).split('!')[1]

					# Creaing the Button without refrences
					if  url_name != "N/A":
						button = Button(text=url_name, size_hint=(None, None))
					else: # For URL links with no assigned names
						button = Button(text="Unknown Link", size_hint=(None, None))

					button.width = 250
					button.height = 50

					# Assign each Button a refrence to a created function with their respective URL links
					# This is equivalent to Kivy script: 	on_press: root.open_link('www.your_url_link.com')
					button.bind(on_press=lambda x:Resonance().open_link(url))

					formated_data.add_widget(button)
					rows += 1
					
				formated_data.add_widget(Label())
				rows += 1

		# Formating the gridlayout to fit the sum of items created
		# Necessary to indicate to Scrollview if scroll is needed 
		# if grid size > window size allow scroll 
		formated_data.height = rows * 50  
		
		return formated_data
Exemplo n.º 3
0
    def __init__(self, parent, titleheader="Message", message="", options={"OK": ""}, size_hint=(.8,.3), font_size=None,  size=None, modal=0, edit_add = False, edit_default_text=""):
    #def build(self, parent, titleheader="Message", message="", options={"OK": ""}, size_hint=(.8,.2),  size=(None, None)):
        def popup_callback(instance):
            self.retvalue = instance.text
            self.popup.dismiss()


        self.parent = parent
        self.retvalue = None
        self.titleheader = titleheader
        self.message = message
        self.options = options
        self.font_size=font_size
        self.edit_add=edit_add
        self.edit_default_text=edit_default_text
        if size: self.size = size
        else: self.size=(0,0)
        if size_hint: self.size_hint=size_hint

        #box = GridLayout(orientation='vertical', cols=1)
        box = GridLayout(cols=1)
        box.orientation='vertical'
        #self.add_widget(box)
        #box.add_widget(Label(text=self.message, font_size=self.font_size))
        box.add_widget(Label(text=self.message))

        if self.edit_add:
            self.edit=TextInput(text=self.edit_default_text)
            box.add_widget(self.edit)
        b_list =  []
        buttonbox = BoxLayout(orientation='horizontal',size_hint=(1, None),height=32)
        box.add_widget(buttonbox)
        for b in self.options:
            b_list.append(Button(text=b, on_press=popup_callback))
            #b_list[-1].bind(on_press=self.popup_callback)
            buttonbox.add_widget(b_list[-1])
        if modal:
            #Допилить
            self.popup = ModalView()
            self.popup.title=titleheader
            self.popup.size_hint=self.size_hint
            self.popup.size=self.size
            self.popup.add_widget(box)
        else:
            self.popup = Popup(title=titleheader, content=box, size_hint=self.size_hint, size=self.size)
        #self.popup = Popup(title=titleheader, content=box, size_hint=self.size_hint)
        self.popup.open()
        self.popup.bind(on_dismiss=self.OnClose)
Exemplo n.º 4
0
from kivy.uix.scrollview import ScrollView

#efectos
from kivy.uix.effectwidget import  EffectWidget
from kivy.uix.effectwidget import HorizontalBlurEffect
from kivy.uix.effectwidget import VerticalBlurEffect

#detector de eventos - se usara para crear efectos personalizados

kivy.require('1.9.1')

Window.clearcolor = (0, 0.2, 0.4,1)

#home 
home = GridLayout(cols=3,spacing=[10,10],padding=[10,10])
home.orientation = 'vertical'

#libreria
libreria = GridLayout(cols=2,spacing=[10,10],padding=[10,10])
libreria.orientation = 'vertical'

#widget contenedor raiz
principal=PageLayout(cols=2,spacing=[10,10],padding=[10,10])
principal.orientation = 'vertical'

#barra lateral
barra_lateral=GridLayout(cols=2)

#estante
class tabbed_panel(TabbedPanel):
    pass
Exemplo n.º 5
0
    def __init__(self,
                 parent,
                 titleheader="Message",
                 message="",
                 options={"OK": ""},
                 size_hint=(.8, .3),
                 font_size=None,
                 size=None,
                 modal=0,
                 edit_add=False,
                 edit_default_text=""):
        #def build(self, parent, titleheader="Message", message="", options={"OK": ""}, size_hint=(.8,.2),  size=(None, None)):
        def popup_callback(instance):
            self.retvalue = instance.text
            self.popup.dismiss()

        self.parent = parent
        self.retvalue = None
        self.titleheader = titleheader
        self.message = message
        self.options = options
        self.font_size = font_size
        self.edit_add = edit_add
        self.edit_default_text = edit_default_text
        if size: self.size = size
        else: self.size = (0, 0)
        if size_hint: self.size_hint = size_hint

        #box = GridLayout(orientation='vertical', cols=1)
        box = GridLayout(cols=1)
        box.orientation = 'vertical'
        #self.add_widget(box)
        #box.add_widget(Label(text=self.message, font_size=self.font_size))
        box.add_widget(Label(text=self.message))

        if self.edit_add:
            self.edit = TextInput(text=self.edit_default_text)
            box.add_widget(self.edit)
        b_list = []
        buttonbox = BoxLayout(orientation='horizontal',
                              size_hint=(1, None),
                              height=32)
        box.add_widget(buttonbox)
        for b in self.options:
            b_list.append(Button(text=b, on_press=popup_callback))
            #b_list[-1].bind(on_press=self.popup_callback)
            buttonbox.add_widget(b_list[-1])
        if modal:
            #Допилить
            self.popup = ModalView()
            self.popup.title = titleheader
            self.popup.size_hint = self.size_hint
            self.popup.size = self.size
            self.popup.add_widget(box)
        else:
            self.popup = Popup(title=titleheader,
                               content=box,
                               size_hint=self.size_hint,
                               size=self.size)
        #self.popup = Popup(title=titleheader, content=box, size_hint=self.size_hint)
        self.popup.open()
        self.popup.bind(on_dismiss=self.OnClose)