def __init__(self, target, **kwargs):
super(BattleMenuState, self).__init__(target, **kwargs)
print('battle menu state here, how ya doin', self, target)
overlay = App.get_running_app().overlay
self.move_button = Button(text='Move', on_release=lambda dt: self.change(SelectMoveState))
self.attack_button = Button(text='Attack', on_release=lambda dt: self.change(SelectAttackState))
self.wait_button = Button(text='Wait', on_release=lambda dt: self.change(TurnEnd))
menu = GridLayout(cols=1, size_hint=(None, None), row_force_default=True, row_default_height=40)
menu.width = dp(100)
menu.height = menu.minimum_height
buttons = [self.move_button, self.attack_button, self.wait_button]
for button in buttons:
menu.add_widget(button)
menu.y = dp((Window.height / 2) + (menu.height / 2))
menu.x = dp(40)
self.menu = menu
overlay.add_widget(self.menu)
self.target.game.set_focus_target(self.target)
python类height()的实例源码
def __init__(self,**kwargs):
self.baseimg = os.path.abspath(os.path.join(os.path.dirname('__file__'),'animation','effects','enbar_noback.png'))
self.hpimg = os.path.abspath(os.path.join(os.path.dirname('__file__'),'animation','effects','hbar.png'))
self.mpimg = os.path.abspath(os.path.join(os.path.dirname('__file__'),'animation','effects','mpbar.png'))
super(ZippyGame,self).__init__(**kwargs)
tempscale = Window.height / 256.
self.map = BaseMap(os.path.abspath(os.path.join(os.path.dirname('__file__'),'Maps','prototype1','16px-680x800-metal.tmx')),
Window.size,tempscale)
spawn = self.map.map.layers['start'].find('spawn')[0]
self.zipmeter = ZipMeter()
self.sprite = Player_Sprite((spawn.px,spawn.py),self.map)
self.add_widget(self.map)
self.map.add_widget(self.sprite)
self.add_widget(self.zipmeter)
Clock.schedule_interval(self.update, 1.0/60.0)
def consider_collide(self,pushx,pushy):
"""
method to recursively find the point on a straight line where a collision occurs with
tile object containing collision properties (t,b,l,r : top, bottom, left, right)
Updates an Rect instance value with the x,y location at the point of collision for
later use. Uses recursion instead of iteration because endpoint is not known prior to
calling the method.
:param pushx: normalised vector describing the direction to move, already pre-computed by the touch angle
plus the touch location
:param pushy: normalised vector describing the direction to move, already pre-computed by the touch angle
plus the touch location
:return: always returns None
"""
self.plotrect = Rect((self.pos[0]+(self.width*.42))+pushx,(self.pos[1]+(self.height*.35))+pushy,
self.size[0]*.16, self.size[1]*.29)
numnum = len(self.map.map.layers['blocker'].collide(self.plotrect, 'blocker'))
if numnum >= 1:
return None
pushx += self.movedir.x
pushy += self.movedir.y
self.consider_collide(pushx,pushy)
def __init__(self,stuff):
close=Label(text=stuff)
popup=Popup(title="Meetings",size_hint=(None, None), size=(500, 400))
root=ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
popup.add_widget(close)
root.add_widget(popup)
popup.open()
def getModalView():
return ModalView(size_hint=(1, None), pos_hint={'top': 1},
height=Window.height - Window.keyboard_height,
auto_dismiss=False)
def getPopup(title, content):
return Popup(title=title, content=content,
size_hint=(0.9, None), pos_hint={'top': 1},
height=Window.height - Window.keyboard_height)
def updateHeight(self, instance, value):
for c in Window.children:
c.height = Window.height - Window.keyboard_height
def getModalView():
return ModalView(size_hint=(1, None), pos_hint={'top': 1},
height=Window.height - Window.keyboard_height,
auto_dismiss=False)
def getPopup(title, content):
return Popup(title=title, content=content,
size_hint=(0.9, None), pos_hint={'top': 1},
height=Window.height - Window.keyboard_height)
def __init__(self, *args, **kwargs):
self.mplevelmodifier = 0
self.hplevelmodifier = 0
self.width, self.height = Window.size
self.scale = self.height / 256. # 21 tile size * 12
self.origlevels = self.hplevel = self.mplevel = self.scale * 57 # Len of the HP/MP bar
super(ZipMeter, self).__init__(*args, **kwargs)
def __init__(self):
self.width, self.height = Window.size
self.scale = self.height / 256. # 21 tile size * 12
def zip(self, *ignore):
"""
method to move sprite image along movedir, previously computed by prep_zip.
also checks for collision with objects
:return: none
"""
self.texture = self.animage['arrow']
self.consider_collide(self.movedir.x,self.movedir.y)
za_collide_point = Vector(self.plotrect.center) # Zero Aligned collide point
za_origin = Vector(self.new.center) # Zero Aligned origin
asa_collider = za_collide_point - za_origin # Need the length of the true vector before normalisation
sa_collider = asa_collider.normalize() # Now normalise for use in iteration later
#len_to_collide = int(round(asa_collider.length()))
len_to_collide = self.animlen # Arbitrary number TODO - implement a better method to decide the len of travel
if len_to_collide > 0: # added to ensure 0 length handling, as it's instantiated as zero
self.zipping = True
for index,coltick in enumerate(xrange(1, len_to_collide)):
lastRect = Rect(self.pos[0]+(self.width*.42)+(sa_collider[0]*index), self.pos[1]+(self.height*.35)
+(sa_collider[1]*index),(self.size[0]*.16), self.size[1]*.29)
# In brief :
# Rect with bottomleft x value of sprite x position, plus 42% of the image width (image is small within
# transparent larger image) plus sa_collider[0] - x value of normalised vector direction to collide
# point multiplied by index to ensure the 'lastRect' is always 1 iteration behind the 'newRect'
# Next values supplied to Rect are for y location, similar logic
# Further values relate to the height/width of the rect instance which should envelope the inner
# sprite drawing. For the purposes of this calculation that's not so important.
newRect = Rect(self.pos[0]+(self.width*.42)+(sa_collider[0]*coltick), self.pos[1]+(self.height*.35)
+(sa_collider[1]*coltick),(self.size[0]*.16), self.size[1]*.29)
# Multiply by coltick for newRect to ensure it's always 1 step ahead of lastRect
if self.move_or_collide(Rect1=newRect, Rect2=lastRect):
break
self.animcoords = newRect.bottomleft[0]-self.width*.42, newRect.bottomleft[1]-self.height*.35
anim = Animation(x = self.animcoords[0], y = self.animcoords[1], duration=self.animduration)
self.animlen = 0
anim.start(self)
Clock.schedule_once(self.notzipping,self.animduration) # schedule the logic updates after animation ends
def __init__(self):
super().__init__()
self.images = dict()
self.root = FloatLayout(size=(Window.width, Window.height))
self.grid = GridLayout(cols=8)
self.add_widget(self.root)
self.root.add_widget(self.grid)
for i, bucket in enumerate(config["visual_debugger"]["available_buckets"]):
layout = BoxLayout(orientation="vertical")
image = VisualDebuggerImage(
allow_stretch=True
)
image.bind(texture=image.update_texture_filters)
self.images[bucket] = image
layout.add_widget(image)
label = Label(
text=bucket,
color=(1, 1, 1, 1),
size_hint=(1, 0.1)
)
layout.add_widget(label)
self.grid.add_widget(layout)
Window.bind(on_resize=self.on_window_resize)
Window.clearcolor = (0.136, 0.191, 0.25, 1)
def on_window_resize(self, window, width, height):
self.root.size = (width, height)
def on_start(self):
self.store_name = 'MMplayerApp'
self.store_properties = [
('last_size', [Window.width, Window.height]),
('last_pos', [Window.left, Window.top])
]
self.update_store_properties()
self.root.init_widgets()
self.last_frame_time = time() - TIME0
Logger.info('App: on_start: %s' % (round(self.last_frame_time, 2)))
Clock.schedule_once(lambda dt: self.on_some_frame(1, 7), 0)
Clock.schedule_once(self._load_window_pos_size, 0)
def __init__(self, **kwargs):
super(WelcomeScreen, self).__init__(**kwargs)
self.layout = FloatLayout() #Float Layout for positioning buttons and image anywhere on the screen
self.layout.width = Window.width #the float layout is the size of the window
self.layout.height = Window.height
self.layout.x = Window.width/2 - self.layout.width/2 #sets the x position of the layout to 0
self.layout.y = Window.height/2 - self.layout.height/2 #sets the y position of the layout to 0
self.add_widget(self.layout) #adds the layout to the screen
self.img = Image(source = self.welcomeImage)
self.img.size = (Window.width*1.0, Window.height*1.2)
self.img.pos = (-Window.width*0.0, -Window.height*0.0)
self.img.opacity = 1.0 #alpha value between 0.0 - 1.0
self.add_widget(self.img) #adds the image to the screen
tmpBtn1 = MyButton(text = self.buttonList[0]) #start button
tmpBtn1.size_hint = (.21, .09)
tmpBtn1.pos_hint ={'x': .395, 'y': .24}
tmpBtn1.background_color = [.4, .4, .4, .4] #backgroundcolor of the button (this is grayish)
tmpBtn1.bind(on_release = self.changer) #when the button is released the changer function is called
self.layout.add_widget(tmpBtn1) #adds the button called tmpBtn1 to the floatlayout
tmpBtn2 = MyButton(text = self.buttonList[1]) #about button
tmpBtn2.size_hint = (.08, .095)
tmpBtn2.pos_hint ={'x': .618, 'y': 0}
tmpBtn2.background_color = [.4, .4, .4, .4]
tmpBtn2.bind(on_release = self.about) #when the button is released the about function is called
self.layout.add_widget(tmpBtn2) #adds the button called tmpBtn2 to the floatlayout
tmpBtn3 = MyButton(text = self.buttonList[2]) #uiowa button
tmpBtn3.size_hint = (.08, .095)
tmpBtn3.pos_hint = {'x':.7, 'y': 0}
tmpBtn3.background_color = [.4, .4, .4, .4]
tmpBtn3.bind(on_release = self.uiowa) #when the button is released the uiowa function is called
self.layout.add_widget(tmpBtn3) #adds the button called tmpBtn3 to the floatlayout
def __init__(self, **kwargs):
super(AboutScreen, self).__init__(**kwargs)
self.layout = FloatLayout()
self.layout.width = Window.width
self.layout.height = Window.height
self.layout.x = Window.width/2 - self.layout.width/2
self.layout.y = Window.height/2 - self.layout.height/2
self.add_widget(self.layout)
self.img = Image(source = self.aboutImage)
self.img.size = (Window.width*1.0, Window.height*1.0)
self.img.pos = (-Window.width*0.0, -Window.height*0.0)
self.img.opacity = 0.4
self.add_widget(self.img)
self.aboutText = Label(text= 'GravBox is the interface application for the Augmented Reality (AR) Sandbox for gravitational dynamics simulations designed and built\n by Dr. Hai Fu\'s Introduction to Astrophysics class during the 2016-2017 academic year and beyond.\n GravBox itself was designed by Zachary Luppen, Erin Maier, and Mason Reed.\n\nAR Sandbox is the result of an NSF-funded project on informal science education for freshwater lake and watershed science developed by the\n UC Davis\' W.M. Keck Center for Active Visualization in the Earth Sciences (KeckCAVES),\n together with the UC Davis Tahoe Environmental Research Center, Lawrence Hall of Science, and ECHO Lake Aquarium and Science Center.')
self.aboutText.pos = (.5, .5)
#self.aboutText.size = self.size
self.add_widget(self.aboutText)
tmpBtn1 = MyButton(text = 'BACK') #start button
tmpBtn1.size_hint = (.1, .1)
tmpBtn1.pos_hint ={'x': 0, 'y': .90}
tmpBtn1.background_color = [.4, .4, .4, 1]
tmpBtn1.bind(on_release = self.backButton) #when the button is released the callback function is called
self.layout.add_widget(tmpBtn1)
def __init__(self, **kwargs):
super(UiowaScreen, self).__init__(**kwargs)
self.layout = FloatLayout()
self.layout.width = Window.width
self.layout.height = Window.height
self.layout.x = Window.width/2 - self.layout.width/2
self.layout.y = Window.height/2 - self.layout.height/2
self.add_widget(self.layout)
self.img = Image(source = self.uiowaImage)
self.img.size = (Window.width*1.0, Window.height*1.0)
self.img.pos = (-Window.width*0.0, -Window.height*0.0)
self.img.opacity = 0.4
self.add_widget(self.img)
self.aboutText = Label(text= 'UIOWA INFO HERE')
self.aboutText.pos = (.25, .25)
self.add_widget(self.aboutText)
tmpBtn1 = MyButton(text = 'BACK') #start button
tmpBtn1.size_hint = (.1, .1)
tmpBtn1.pos_hint ={'x': 0, 'y': .9}
tmpBtn1.background_color = [.4, .4, .4, 1]
tmpBtn1.bind(on_release = self.backButton) #when the button is released the backButton function is called
self.layout.add_widget(tmpBtn1)
def __init__(self, **kwargs):
super(WelcomeScreen, self).__init__(**kwargs)
layout = FloatLayout() #Float Layout for positioning buttons and image anywhere on the screen
layout.width = Window.width #the float layout is the size of the window
layout.height = Window.height
layout.x = Window.width/2 - layout.width/2 #sets the x position of the layout to 0
layout.y = Window.height/2 - layout.height/2 #sets the y position of the layout to 0
self.add_widget(layout) #adds the layout to the screen
img = Image(source = self.welcomeImage) #BACKGROUND IMAGE
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (-Window.width*0.0, -Window.height*0.0)
img.opacity = 1.0 #alpha value between 0.0 - 1.0
self.add_widget(img) #adds the image to the screen
startBtn = MyButton(text = '') #start button
startBtn.size_hint = (.21, .09)
startBtn.pos_hint ={'x': .395, 'y': .24}
startBtn.background_color = [.4, .4, .4, .4] #backgroundcolor of the button (this is grayish)
startBtn.bind(on_release = self.changer) #when the button is released the changer function is called
self.add_widget(startBtn) #adds the button called startButton to the floatlayout
aboutBtn = MyButton(text = '') #about button
aboutBtn.size_hint = (.08, .095)
aboutBtn.pos_hint ={'x': .618, 'y': 0}
aboutBtn.background_color = [.4, .4, .4, .4]
aboutBtn.bind(on_release = self.about) #when the button is released the about function is called
self.add_widget(aboutBtn) #adds the button called aboutBtn to the floatlayout
uiowaBtn = MyButton(text = '') #uiowa button
uiowaBtn.size_hint = (.08, .095)
uiowaBtn.pos_hint = {'x':.7, 'y': 0}
uiowaBtn.background_color = [.4, .4, .4, .4]
uiowaBtn.bind(on_release = self.uiowa) #when the button is released the uiowa function is called
self.add_widget(uiowaBtn) #adds the button called uiowaBtn to the floatlayout
def __init__(self, **kwargs):
super(AboutScreen, self).__init__(**kwargs)
layout = FloatLayout()
layout.width = Window.width
layout.height = Window.height
layout.x = Window.width/2 - layout.width/2
layout.y = Window.height/2 - layout.height/2
self.add_widget(layout)
img = Image(source = self.aboutImage)
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (-Window.width*0.0, -Window.height*0.0)
img.opacity = 0.4
self.add_widget(img)
aboutText = Label(text= 'GravBox is the interface application for the Augmented Reality (AR) Sandbox for gravitational dynamics simulations designed and built\nby Dr. Hai Fu\'s Introduction to Astrophysics class during the 2016-2017 academic year and beyond.\nGravBox itself was designed by Zachary Luppen, Erin Maier, and Mason Reed.\n\nAR Sandbox is the result of an NSF-funded project on informal science education for freshwater lake and watershed science developed by the\nUC Davis\' W.M. Keck Center for Active Visualization in the Earth Sciences (KeckCAVES),\ntogether with the UC Davis Tahoe Environmental Research Center, Lawrence Hall of Science, and ECHO Lake Aquarium and Science Center.', halign='center', valign='center')
aboutText.pos = (.25, .25)
self.add_widget(aboutText)
backBtn = MyButton(text = 'BACK') # back button
backBtn.size_hint = (.1, .1)
backBtn.pos_hint ={'x': 0, 'y': .90}
backBtn.background_color = [.4, .4, .4, 1]
backBtn.bind(on_release = self.backButton) #when the button is released the callback function is called
self.add_widget(backBtn)
def __init__(self, **kwargs):
super(WelcomeScreen, self).__init__(**kwargs)
layout = FloatLayout() #Float Layout for positioning buttons and image anywhere on the screen
layout.width = Window.width #the float layout is the size of the window
layout.height = Window.height
layout.x = Window.width/2 - layout.width/2 #sets the x position of the layout to 0
layout.y = Window.height/2 - layout.height/2 #sets the y position of the layout to 0
self.add_widget(layout) #adds the layout to the screen
img = Image(source = self.welcomeImage) #BACKGROUND IMAGE
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (-Window.width*0.0, -Window.height*0.0)
img.opacity = 1.0 #alpha value between 0.0 - 1.0
self.add_widget(img) #adds the image to the screen
startBtn = MyButton(text = '') #start button
startBtn.size_hint = (.21, .09)
startBtn.pos_hint ={'x': .395, 'y': .24}
startBtn.background_color = [.306, .325, .4196, .4] #backgroundcolor of the button (this is grayish)
startBtn.bind(on_release = self.changer) #when the button is released the changer function is called
self.add_widget(startBtn) #adds the button called startButton to the floatlayout
aboutBtn = MyButton(text = '') #about button
aboutBtn.size_hint = (.08, .095)
aboutBtn.pos_hint ={'x': .618, 'y': 0}
aboutBtn.background_color = [.4, .4, .4, .4]
aboutBtn.bind(on_release = self.about) #when the button is released the about function is called
self.add_widget(aboutBtn) #adds the button called aboutBtn to the floatlayout
uiowaBtn = MyButton(text = '') #uiowa button
uiowaBtn.size_hint = (.08, .095)
uiowaBtn.pos_hint = {'x':.7, 'y': 0}
uiowaBtn.background_color = [.4, .4, .4, .4]
uiowaBtn.bind(on_release = self.uiowa) #when the button is released the uiowa function is called
self.add_widget(uiowaBtn) #adds the button called uiowaBtn to the floatlayout
def __init__(self, **kwargs):
super(UiowaScreen, self).__init__(**kwargs)
self.layout = FloatLayout()
self.layout.width = Window.width
self.layout.height = Window.height
self.layout.x = 0
self.layout.y = 0
self.add_widget(self.layout)
img = Image(source = self.uiowaImage)
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (0, 0)
img.opacity = .8
self.add_widget(img, 1)
with self.layout.canvas: #sets canvas instructions for the rightlayout and draws a blue rect. filling the entire layout
Color(1, 1, 1, .7) #WHITE
Rectangle(pos=(.15 * self.layout.height, .30 * self.layout.height), size=(.45 * self.layout.width, .55 * self.layout.height))
qr = Image(source = self.qrCode)
qr.size_hint = (.39, .39)
qr.pos_hint = {'x': .56, 'y': .12}
self.add_widget(qr)
logo = Image(source=self.uiLogo)
logo.size_hint = (.33, .33)
logo.pos_hint = {'x': .59, 'y': .58}
self.add_widget(logo)
uiowaText = Label(text= 'The GravBox project is the result of the hard work of students of the University of Iowa\'s Physics and Astronomy Department. To learn more about physics and astronomy at the University of Iowa, and the research work being done in these areas, please scan the QR code to the right.', valign='middle', halign='center', font_size='24sp', text_size=(.4 * self.layout.width, None), color=(0,0,0,1))
uiowaText.pos_hint = {'x': -.18, 'y': .075}
self.add_widget(uiowaText)
backBtn = MyButton(text = 'BACK') # back button
backBtn.size_hint = (.1, .1)
backBtn.pos_hint ={'x': .27, 'y': .16}
backBtn.background_color = [.4, .4, .4, 1]
backBtn.bind(on_release = self.backButton) #when the button is released the callback function is called
self.add_widget(backBtn)
def __init__(self, **kwargs):
super(WelcomeScreen, self).__init__(**kwargs)
layout = FloatLayout() #Float Layout for positioning buttons and image anywhere on the screen
layout.width = Window.width #the float layout is the size of the window
layout.height = Window.height
layout.x = Window.width/2 - layout.width/2 #sets the x position of the layout to 0
layout.y = Window.height/2 - layout.height/2 #sets the y position of the layout to 0
self.add_widget(layout) #adds the layout to the screen
img = Image(source = self.welcomeImage) #BACKGROUND IMAGE
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (-Window.width*0.0, -Window.height*0.0)
img.opacity = 1.0 #alpha value between 0.0 - 1.0
self.add_widget(img) #adds the image to the screen
startBtn = MyButton(text = '') #start button
startBtn.size_hint = (.21, .09)
startBtn.pos_hint ={'x': .395, 'y': .24}
startBtn.background_color = [.4, .4, .4, .4] #backgroundcolor of the button (this is grayish)
startBtn.bind(on_release = self.changer) #when the button is released the changer function is called
self.add_widget(startBtn) #adds the button called startButton to the floatlayout
aboutBtn = MyButton(text = '') #about button
aboutBtn.size_hint = (.08, .095)
aboutBtn.pos_hint ={'x': .618, 'y': 0}
aboutBtn.background_color = [.4, .4, .4, .4]
aboutBtn.bind(on_release = self.about) #when the button is released the about function is called
self.add_widget(aboutBtn) #adds the button called aboutBtn to the floatlayout
uiowaBtn = MyButton(text = '') #uiowa button
uiowaBtn.size_hint = (.08, .095)
uiowaBtn.pos_hint = {'x':.7, 'y': 0}
uiowaBtn.background_color = [.4, .4, .4, .4]
uiowaBtn.bind(on_release = self.uiowa) #when the button is released the uiowa function is called
self.add_widget(uiowaBtn) #adds the button called uiowaBtn to the floatlayout
def __init__(self, **kwargs):
super(AboutScreen, self).__init__(**kwargs)
layout = FloatLayout()
layout.width = Window.width
layout.height = Window.height
layout.x = Window.width/2 - layout.width/2
layout.y = Window.height/2 - layout.height/2
self.add_widget(layout)
img = Image(source = self.aboutImage)
img.size = (Window.width*1.0, Window.height*1.0)
img.pos = (-Window.width*0.0, -Window.height*0.0)
img.opacity = 0.4
self.add_widget(img)
aboutText = Label(text= 'GravBox is the interface application for the Augmented Reality (AR) Sandbox for gravitational dynamics simulations designed and built\nby Dr. Hai Fu\'s Introduction to Astrophysics class during the 2016-2017 academic year and beyond.\nGravBox itself was designed by Zachary Luppen, Erin Maier, and Mason Reed.\n\nAR Sandbox is the result of an NSF-funded project on informal science education for freshwater lake and watershed science developed by the\nUC Davis\' W.M. Keck Center for Active Visualization in the Earth Sciences (KeckCAVES),\ntogether with the UC Davis Tahoe Environmental Research Center, Lawrence Hall of Science, and ECHO Lake Aquarium and Science Center.', halign='center', valign='center')
aboutText.pos = (.25, .25)
self.add_widget(aboutText)
backBtn = MyButton(text = 'BACK') # back button
backBtn.size_hint = (.1, .1)
backBtn.pos_hint ={'x': 0, 'y': .90}
backBtn.background_color = [.4, .4, .4, 1]
backBtn.bind(on_release = self.backButton) #when the button is released the callback function is called
self.add_widget(backBtn)
def __init__(self, **kw):
"""
Initialization function. We will do the following task (in order):
__[x] means already done in App__
1. [x] Check if the device is rooted
2. [x] Initialize necessary libs required by MobileInsight (e.g., libwireshark)
3. [x] Check if Android's security policy allows MobileInsight to access diagnostic mode.
This is mainly caused by SELinux
4. [x] Create necessary folders on SDcard (e.g., /sdcard/mobileinsight/, /sdcard/mobileinsight/log/)
5. Load built-in and 3rd-party plugins (located in /sdcard/mobileinsight/plugins/)
6. [x] Check if the diagnostic mode is enabled
7. Load configurations from the setting panel (configs stored in /sdcard/.mobileinsight.ini)
"""
super(PluginsScreen, self).__init__(**kw)
self.log_viewer = None
self.plugins_list = get_plugins_list()
self.terminal_stop = None
self.terminal_thread = None
bootup = True
#used to shorten long widget names in popup menu
shortenLabel = CoreLabel(markup = True, text_size = (Window.width/2.5, None), shorten_from = "right", font_size = 70)
#Making and adding widgets to popup menu
for name in self.plugins_list:
widget = Button(id = name, markup = True, halign = "left", valign = "top", on_release = self.callback, background_normal = "", background_color = self.ids.selectButton.background_color)
widget.text_size = (Window.width/2.25, Window.height/4)
self.myLayout.add_widget(widget)
app_path = self.plugins_list[name][0]
if os.path.exists(os.path.join(app_path, "readme.txt")):
with open(os.path.join(app_path, "readme.txt"), 'r') as ff:
my_description = ff.read()
else:
my_description = "no description."
#shortening long widget names and making font size
shortenedName = shortenLabel.shorten(name)
font_size = "60"
if Window.width < 1450:
font_size = "45"
widget.text = "[color=fffafa][size=70]"+ shortenedName + "[/size][size="+ font_size + "]\n"+ my_description+"[/size][/color]"
if bootup:
self.selectedPlugin = name
self.ids.selectButton.text = "Select Plugin"
bootup = False
# register Broadcast Receivers.
self.registerBroadcastReceivers()