def new_label(self):
a_caption = 'Label' + '{:02d}'.format(self.count_objs)
self.count_objs += 1
mypage.unilabel((40, 240, 80, 20, a_caption))
a_label = mypage.unilabels [-1]
a_label.size_hint=(None,None)
a_label.height = 20;
if mypage.kivy:
a_label.background_color = a_label.color
a_label.bind(on_touch_down=self.touch_down)
a_label.bind(on_touch_move=self.touch_move)
else:
a_label.touch_enabled = False
a_label.pos = (a_label.x, a_label.y)
a_label.color = a_label.background_color
self.new_objs.append(a_label)
python类Label()的实例源码
def new_label(self):
a_caption = 'Label' + '{:02d}'.format(self.count_objs)
self.count_objs += 1
mypage.unilabel((40, 240, 80, 20, a_caption))
a_label = mypage.unilabels [-1]
a_label.size_hint=(None,None)
a_label.height = 20;
if mypage.kivy:
a_label.background_color = a_label.color
a_label.bind(on_touch_down=self.touch_down)
a_label.bind(on_touch_move=self.touch_move)
else:
a_label.touch_enabled = False
a_label.pos = (a_label.x, a_label.y)
a_label.color = a_label.background_color
self.new_objs.append(a_label)
def __init__(self, path='/'):
tv = ui.TableView()
tv.frame = self.bounds
tv.flex = 'WH'
ds = ui.ListDataSource([])
ds.action = self.item_selected
tv.data_source = ds
tv.delegate = ds
self.tableview = tv
self.add_subview(self.tableview)
self.name = 'Dropbox'
label = ui.Label(frame=self.bounds)
label.flex = 'WH'
label.background_color = (1, 1, 1, 0.95)
label.text = 'Loading...'
label.touch_enabled = True
label.alignment = ui.ALIGN_CENTER
self.path = path
self.add_subview(label)
self.status_label = label
self.canceled = False
def __init__(self, path='/'):
tv = ui.TableView()
tv.frame = self.bounds
tv.flex = 'WH'
ds = ui.ListDataSource([])
ds.action = self.item_selected
tv.data_source = ds
tv.delegate = ds
self.tableview = tv
self.add_subview(self.tableview)
self.name = 'Dropbox'
label = ui.Label(frame=self.bounds)
label.flex = 'WH'
label.background_color = (1, 1, 1, 0.95)
label.text = 'Loading...'
label.touch_enabled = True
label.alignment = ui.ALIGN_CENTER
self.path = path
self.add_subview(label)
self.status_label = label
self.canceled = False
def __init__(self, default_user_name='Name'):
self.name = 'Enter your username:'
self.background_color = 0.40, 0.80, 1.00
self.frame=(0, 0, 500, 500)
self.label = ui.Label(frame=(12, 100, 2000, 55))
self.label.text = 'What is your name?'
self.label.text_color = 'black'
self.label.font = ('Avenir-Black', 55)
self.add_subview(self.label)
self.text_field = ui.TextField(frame=(155, 175, 200, 32))
self.text_field.text = default_user_name
self.text_field.text_color = 'grey'
self.text_field.clear_button_mode = 'while_editing'
self.add_subview(self.text_field)
button = ui.Button(background_color='white',
frame=(360, 175, 75, 36),
image=ui.Image.named('ionicons-arrow-right-a-32'))
self.add_subview(button)
def __init__(self):
RootView.__init__(self)
self.t1=ui.Label(frame=(0,60,400,20))
self.t2=ui.Label(frame=(0,90,400,20))
self.t3=ui.TextView( frame=(0,120,700,200),bg_color=(0.7,0.7,0.7,0.5))
self.t3.text='textview for kb'
# the first time the keyboard appears, get kbframe is wrong...
# so, show then hide keyboard.
self.t3.begin_editing()
ui.delay(self.t3.end_editing,0.5)
# finally, show kbframe again
ui.delay(self.t3.begin_editing,1.0)
self.t1.text='touch to begin'
[self.add_subview(s) for s in [self.t1,self.t2,self.t3]]
def __init__(self):
RootView.__init__(self)
self.t1=ui.Label(frame=(0,60,400,20))
self.t2=ui.Label(frame=(0,90,400,20))
self.t3=ui.TextView( frame=(0,120,700,200),bg_color=(0.7,0.7,0.7,0.5))
self.t3.text='textview for kb'
# the first time the keyboard appears, get kbframe is wrong...
# so, show then hide keyboard.
self.t3.begin_editing()
ui.delay(self.t3.end_editing,0.5)
# finally, show kbframe again
ui.delay(self.t3.begin_editing,1.0)
self.t1.text='touch to begin'
[self.add_subview(s) for s in [self.t1,self.t2,self.t3]]
def init_size(self): # initialize with correct size when landscape orientation = ui.WebView(frame=(0,0,100,200)).eval_js('window.orientation') if orientation in (-90, 90): self.frame = (0, 0, self.height, self.width)
def did_load(self): self.init_buttons() self.init_webbrowser() self.init_addressbar() self.init_size() self.flex = 'WH' self.bookmarks = self.load_bookmarks() self.history = self.load_history() self.addressbar_is_editing = False self.webpage_has_loaded = False self.favourite_images = {True :ui.Image.named('ionicons-ios7-star-32'), False:ui.Image.named('ionicons-ios7-star-outline-32')}
def save_history(self, filename=filename_history): with open(filename, 'w') as f: url = self.get_url() if url in self.history: self.history.remove(url) self.history.append(url) f.seek(0) pickle.dump(self.history, f) def clear_history(self, sender, filename=filename_history): with open(filename, 'w') as f: self.history = [] f.seek(0) pickle.dump(self.history, f) sender.superview.superview['history'].data_source.items = self.history sender.superview.superview['history'].reload()
def save_bookmark(self, filename=filename_bookmarks): with open(filename, 'w') as f: url = self.get_url() title = self.get_title() or self.parse_url(url) self.bookmarks[title] = url f.seek(0) json.dump(self.bookmarks, f, indent=4) self['controlpanel']['favourite'].image = self.favourite_images[True]
def remove_bookmark(self, title=None, filename=filename_bookmarks): with open(filename, 'w') as f: title = title or self.get_title() del self.bookmarks[title] f.seek(0) json.dump(self.bookmarks, f, indent=4) self['controlpanel']['favourite'].image = self.favourite_images[False]
def popup_menu(self): popup = ui.View(name='menu', frame=(0, 0, 320, 500)) toolbar = ui.View(frame=(-5, 0, 330, 100), name='toolbar') toolbar.border_width = 0.5 toolbar.border_color = '#B2B2B2' label = ui.Label() label.text = 'Bookmarks' label.alignment = ui.ALIGN_CENTER label.frame = (0, 0, 320, 50) label.name = 'title' segment_ctrl = ui.SegmentedControl(name='segctrl') segment_ctrl.segments = ['Bookmarks', 'History'] segment_ctrl.width = 170 segment_ctrl.center = popup.center segment_ctrl.y = label.height segment_ctrl.selected_index = 0 segment_ctrl.action = self.bookmarks_or_history button = ui.Button() button.frame = (segment_ctrl.x*3.5, segment_ctrl.y, 60, 30) button.font = ('<system>', 15) button.title= 'Clear' button.name = 'clear' button.action = self.clear_history button.hidden = True toolbar.add_subview(label) toolbar.add_subview(segment_ctrl) toolbar.add_subview(button) popup.add_subview(toolbar) data_source = ui.ListDataSource(sorted(self.bookmarks.keys())) popup.add_subview(self.list_bookmarks_and_history(data_source, width=320,height=toolbar.superview.height-toolbar.height, y=toolbar.height, name='bookmarks')) x, y = self['controlpanel']['bookmarks'].center popup.present('popover', popover_location=(x, y), hide_title_bar=True)
def bookmarks_or_history(self, sender): toolbar = sender.superview if sender.selected_index == 0: toolbar['clear'].hidden = True toolbar['title'].text = 'Bookmarks' data_source = ui.ListDataSource(sorted(self.bookmarks.keys())) tv = self.list_bookmarks_and_history(data_source, width=320, height=toolbar.superview.height-toolbar.height, y=toolbar.height, name='bookmarks') toolbar.superview.remove_subview(toolbar.superview['history']) else: toolbar['clear'].hidden = False toolbar['title'].text = 'History' data_source = ui.ListDataSource(self.history[::-1]) tv = self.list_bookmarks_and_history(data_source, width=320, height=toolbar.superview.height-toolbar.height, y=toolbar.height, name='history') toolbar.superview['bookmarks'].hidden=True toolbar.superview.remove_subview(toolbar.superview['bookmarks']) sender.superview.superview.add_subview(tv)
def list_bookmarks_and_history(self, data_source, **kwargs): tv = ui.TableView() tv.data_source = data_source tv.delegate = self for k, v in kwargs.items(): setattr(tv, k, v) return tv
def show_more_menu(self): popup = ui.TableView() popup.width = 250 popup.height = 500 popup.name = 'More' popup.data_source = popup.delegate = self button = self['controlpanel']['more'] popup.present('popover', popover_location=(button.x, button.y+button.height))
def button_tapped(self, sender): if sender.name == 'favourite': if self.get_url() in self.bookmarks.values(): self.remove_bookmark() else: self.save_bookmark() elif sender.name == 'bookmarks': self.popup_menu() elif sender.name == 'more': self.show_more_menu() else: eval("self['webview'].{}()".format(sender.name))
def tableview_number_of_rows(self, tableview, section): if tableview.name == 'Bookmarks': return len(self.bookmarks) elif tableview.name == 'More': return 1
def tableview_cell_for_row(self, tableview, section, row): if tableview.name == 'Bookmarks': cell = ui.TableViewCell() cell.text_label.text = sorted(self.bookmarks.keys())[row] cell.image_view.image = ui.Image.named('ionicons-ios7-bookmarks-outline-32') cell.image_view.tint_color = '#66CCFF' return cell elif tableview.name == 'More': cell = ui.TableViewCell() cell.text_label.text = 'Settings' cell.image_view.image = ui.Image.named('ionicons-wrench-32') return cell
@ui.in_background def tableview_did_select(self, tableview, section, row): if tableview.name == 'bookmarks': url = self.bookmarks[sorted(self.bookmarks.keys())[row]] self.load_url(url) tableview.superview.close() elif tableview.name == 'history': url = tableview.data_source.items[row] tableview.superview.close() self.load_url(url) elif tableview.name == 'More': tableview.close() console.hud_alert('No settings yet...', 'error', 1)
def tableview_can_delete(self, tableview, section, row): return True
def tableview_delete(self, tableview, section, row): item = sorted(self.bookmarks.keys())[row] self.remove_bookmark(item) tableview.reload()
def textfield_did_begin_editing(self, textfield): self.addressbar_is_editing = True self.set_url() self['controlpanel']['reload'].hidden = True
def textfield_did_end_editing(self, textfield): self.addressbar_is_editing = False self['controlpanel']['reload'].hidden = False self.set_url()
def textfield_should_return(self, textfield): url = self['controlpanel']['addressbar'].text self.load_url(url) textfield.end_editing() return True
def webview_did_start_load(self, webview): self.webpage_has_loaded = False
def webview_did_finish_load(self, webview): if not self.addressbar_is_editing: self.set_url() self.webpage_has_loaded = True page_is_bookmarked = unicode(self.get_url()) in self.bookmarks.values() self['controlpanel']['favourite'].image = self.favourite_images[page_is_bookmarked] self.save_history()
def add_waypoint(self):
w = WayPointView(frame=(0,0,30,30))
l = w['Label']
self.waypoints.append(w)
l.text=str(len(self.waypoints))
l.text_color = 'black'
l.font=('Arial Black', 16)
w.background_color = '#a2c2ff' #
self.add_subview(w)
return w
def remove_waypoint(self, wp_view):
i = self.waypoints.index(wp_view)
self.remove_subview(wp_view)
del self.waypoints[i]
for (i, wp) in enumerate(self.waypoints):
wp['Label'].text=str(i+1)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.corner_radius = self.height/2
l = ui.Label()
self.add_subview(l)
l.frame = self.bounds
l.flex = 'WH'
l.name = 'Label'
l.alignment = ui.ALIGN_CENTER
def set_menu(self, menu_key, spec):
menu_spec = spec[menu_key]
# for v in self.menu.subviews:
# self.menu.remove_subview(v)
#top_y = 50
x_increment = self.menu.width/(len(menu_spec)+1)
dim = 0.55*x_increment
for (i, (title, func)) in enumerate(menu_spec):
btn = ui.Button()
btn.title = title
btn.action = func
btn.background_color = self.menu_color
btn.tint_color = 'white'
self.menu.add_subview(btn)
btn.width = btn.height = dim
btn.center = ((i+1)*x_increment, self.menu.height/4)
btn.corner_radius = dim/2
# label = list(section.keys())[0]
# if isinstance(section[label], list):
# l = ui.Label(text=label, text_color='black', background_color=(1,1,1,0.5), alignment=ui.ALIGN_CENTER, frame=(0, top_y, self.button_width, self.button_height))
# #+self.button_gap)*(len(section[label])+1)))
# self.menu.add_subview(l)
# top_y += self.button_height + self.button_gap
# for (title, action) in section[label]:
# btn = self.menu_button(title, action, top_y)
# self.menu.add_subview(btn)
# btn.frame=(0, top_y, self.button_width, self.button_height)
# top_y += self.button_height + self.button_gap
# else:
# btn = self.menu_button(label, section[label], top_y)
# self.menu.add_subview(btn)
# btn.frame=(0, top_y, self.button_width, self.button_height)
# top_y += self.button_height + self.button_gap
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.name is not None:
title_label = ui.Label(text=self.name,
frame=(10, 0, 275, 25),
alignment=ui.ALIGN_CENTER,
font =('<system-bold>', 18))
self.add_subview(title_label)
def __init__(self, slider_name, convert, action, valuefmt, *args, **kwargs):
super().__init__(*args, **kwargs)
self._m = convert['m']
self._b = convert['b']
self._valuefmt = valuefmt
self.changed = action
self.name = slider_name
SLIDER_WIDTH = 200
SLIDER_HEIGHT = 30
SLIDER_TITLE_OFFSET = 25
SLIDER_TITLE_WIDTH = 200
SLIDER_TITLE_HEIGHT = 25
SLIDER_VALUE_OFFSET = 10
SLIDER_VALUE_HEIGHT = 25
SLIDER_VALUE_WIDTH = 50
self.border_width = 0
self.border_color = 'black'
self._slider = ui.Slider(frame=(0, SLIDER_TITLE_OFFSET, SLIDER_WIDTH, SLIDER_HEIGHT))
self._slider.continuous = False
self._slider.value = 0.5
self._slider.action = self.update
slider_title = ui.Label(frame=(0, 0, SLIDER_TITLE_WIDTH, SLIDER_TITLE_HEIGHT))
slider_title.text = slider_name
slider_title.text_color = 'black'
self._slider_valuelabel = ui.Label(frame=(SLIDER_WIDTH + SLIDER_VALUE_OFFSET, SLIDER_TITLE_OFFSET, SLIDER_VALUE_WIDTH, SLIDER_VALUE_HEIGHT))
self._slider_valuelabel.text = str(0.5)
self._slider_valuelabel.border_width = 1
self._slider_valuelabel.border_color = 'black'
self._slider_valuelabel.alignment = ui.ALIGN_CENTER
self.add_subview(self._slider)
self.add_subview(slider_title)
self.add_subview(self._slider_valuelabel)
def __init__(self, initial_width, initial_height, *args, **kwargs):
super().__init__(*args, **kwargs)
self._initial_width = initial_width
self._initial_height = initial_height
self.frame = (10, 100, 275, 250)
self.background_color = 'white'
self.img_width = ui.TextField(frame=(10, 30, 100, 25),
keyboard_type=ui.KEYBOARD_DECIMAL_PAD,
text=str(initial_width),
action=self.update_height)
self.add_subview(self.img_width)
width_label = ui.Label(frame=(10, 5, 150, 25), text='Image Width')
self.add_subview(width_label)
self.img_height = ui.TextField(frame=(150, 30, 100, 25),
keyboard_type=ui.KEYBOARD_DECIMAL_PAD,
text=str(initial_height),
action=self.update_width)
self.add_subview(self.img_height)
height_label = ui.Label(frame=(150, 5, 150, 25), text='Image Height')
self.add_subview(height_label)
aspect_ratio = self._initial_width / self._initial_height
self.aspect = ui.TextField(frame=(70, 100, 150, 25),
text=str(aspect_ratio),
keyboard_type=ui.KEYBOARD_DECIMAL_PAD,
alignment=ui.ALIGN_CENTER,
action=self.updatefrom_aspectratio)
self.add_subview(self.aspect)
aspect_label = ui.Label(frame=(70, 75, 150, 25),
text='Aspect',
alignment=ui.ALIGN_CENTER)
self.add_subview(aspect_label)
self.save_button = ui.Button(frame=(175, 150, 50, 25),
title='Save',
action=self.save)
self.add_subview(self.save_button)
self.cancel_button = ui.Button(frame=(30, 150, 50, 25),
title='Cancel',
action=self.cancel)
self.add_subview(self.cancel_button)
def unilabel(self, params):
self.unilabels.append([])
if self.kivy:
from kivy.uix.label import Label
self.unilabels[len(self.unilabels) - 1] = Label(pos = \
(params[0] * self.xratio, params[1] * self.yratio), \
size_hint=(1.0,1.0), halign="left", \
valign="bottom", text = params[4])
self.unilabels[len(self.unilabels) - 1].font_size = 17.5 * \
self.yratio
self.unilabels[len(self.unilabels) - 1].bind(size= \
self.unilabels[len(self.unilabels) - 1].setter('text_size'))
self.root.add_widget(self.unilabels[len(self.unilabels) - 1])
else:
import ui
self.unilabels[len(self.unilabels) - 1] = ui.Label(frame= \
(params[0] * self.xratio, (600 - params[1] - params[3]) * \
self.yratio, params[2] * self.xratio, params[3] * self.yratio))
self.unilabels[len(self.unilabels) - 1].text = params[4]
self.unilabels[len(self.unilabels) - 1].text_color = 'white'
self.unilabels[len(self.unilabels) - 1].alignment = \
ALIGN_LEFT = True
self.unilabels[len(self.unilabels) - 1].font = ('<system>', 18 * \
self.xratio)
self.root.add_subview(self.unilabels[len(self.unilabels) - 1])
def unilabel(self, params):
self.unilabels.append([])
if self.kivy:
from kivy.uix.label import Label
self.unilabels[len(self.unilabels) - 1] = Label(pos = \
(params[0] * self.xratio, params[1] * self.yratio), \
size_hint=(1.0,1.0), halign="left", \
valign="bottom", text = params[4])
self.unilabels[len(self.unilabels) - 1].font_size = 17.5 * \
self.yratio
self.unilabels[len(self.unilabels) - 1].bind(size= \
self.unilabels[len(self.unilabels) - 1].setter('text_size'))
self.root.add_widget(self.unilabels[len(self.unilabels) - 1])
else:
import ui
self.unilabels[len(self.unilabels) - 1] = ui.Label(frame= \
(params[0] * self.xratio, (600 - params[1] - params[3]) * \
self.yratio, params[2] * self.xratio, params[3] * self.yratio))
self.unilabels[len(self.unilabels) - 1].text = params[4]
self.unilabels[len(self.unilabels) - 1].text_color = 'white'
self.unilabels[len(self.unilabels) - 1].alignment = \
ui.ALIGN_LEFT
self.unilabels[len(self.unilabels) - 1].font = ('<system>', 18 * \
self.yratio)
self.root.add_subview(self.unilabels[len(self.unilabels) - 1])
def unilabel(self, params):
self.unilabels.append([])
if self.kivy:
from kivy.uix.label import Label
self.unilabels[len(self.unilabels) - 1] = Label(pos = \
(params[0] * self.xratio, params[1] * self.yratio), \
size_hint=(1.0,1.0), halign="left", \
valign="bottom", text = params[4])
self.unilabels[len(self.unilabels) - 1].font_size = 17.5 * \
self.yratio
self.unilabels[len(self.unilabels) - 1].bind(size= \
self.unilabels[len(self.unilabels) - 1].setter('text_size'))
self.root.add_widget(self.unilabels[len(self.unilabels) - 1])
else:
import ui
self.unilabels[len(self.unilabels) - 1] = ui.Label(frame= \
(params[0] * self.xratio, (600 - params[1] - params[3]) * \
self.yratio, params[2] * self.xratio, params[3] * self.yratio))
self.unilabels[len(self.unilabels) - 1].text = params[4]
self.unilabels[len(self.unilabels) - 1].text_color = 'white'
self.unilabels[len(self.unilabels) - 1].alignment = \
ui.ALIGN_LEFT
self.unilabels[len(self.unilabels) - 1].font = ('<system>', 18 * \
self.yratio)
self.root.add_subview(self.unilabels[len(self.unilabels) - 1])
def make_label(text, frame):
label = ui.Label( )
label.text = str(text)
label.frame = frame
label.text_color = 'black'
label.border_color = 'black'
label.alignment = ui.ALIGN_CENTER
label.border_width = 1
label.bring_to_front()
return label
def create_label(title):
global label_count
label_count += 1
label_w = 175
label_h = 75
gap = 10
label_w_with_gap = label_w + gap
label_h_with_gap = label_h + gap
labels_per_line = math.floor((v.width-2*gap)/(label_w+gap))
left_margin = (v.width - labels_per_line*label_w_with_gap + gap)/2
line = math.floor(label_count/labels_per_line)
column = label_count - line*labels_per_line
l = ui.Label(
text=title,
background_color='grey',
text_color='white',
alignment=ui.ALIGN_CENTER,
number_of_lines=0,
frame=(
left_margin+column * label_w_with_gap,
gap+line * label_h_with_gap,
label_w, label_h
))
v.add_subview(l)
return l
def tableview_cell_for_row(self, tv, section, row):
cell = ui.TableViewCell()
entry = self.flat_entries[row]
level = entry.level - 1
image_view = ui.ImageView(frame=(44 + 20*level, 5, 34, 34))
label_x = 44+34+8+20*level
label_w = cell.content_view.bounds.w - label_x - 8
if entry.subtitle:
label_frame = (label_x, 0, label_w, 26)
sub_label = ui.Label(frame=(label_x, 26, label_w, 14))
sub_label.font = ('<System>', 12)
sub_label.text = entry.subtitle
sub_label.text_color = '#999'
cell.content_view.add_subview(sub_label)
else:
label_frame = (label_x, 0, label_w, 44)
label = ui.Label(frame=label_frame)
if entry.subtitle:
label.font = ('<System>', 15)
else:
label.font = ('<System>', 18)
label.text = entry.title
label.flex = 'W'
cell.content_view.add_subview(label)
if entry.leaf and not entry.enabled:
label.text_color = '#999'
cell.content_view.add_subview(image_view)
if not entry.leaf:
has_children = entry.expanded
btn = ui.Button(image=ui.Image.named('CollapseFolder' if has_children else 'ExpandFolder'))
btn.frame = (20*level, 0, 44, 44)
btn.action = self.expand_dir_action
cell.content_view.add_subview(btn)
if entry.icon_name:
image_view.image = ui.Image.named(entry.icon_name)
else:
image_view.image = None
cell.selectable = entry.enabled
return cell
def make_header(cls):
header = ui.Label(frame = (200, 19.5, 700, 116.5))
header.text_color = 'white'
header.text = 'Select A Character'
header.font = ('AvenirNext-Heavy', 70)
return header
def remove(self, sender):
label = self['Label']
if label:
self.remove_subview(label)
self.labelcounter -= 1
def add(self, sender, text='Labeltext'):
self.labelcounter += 1
label = ui.Label(name='Label')
label.text = text
label.x = label.y = self.labelcounter * 20
self.add_subview(label)
def __init__(self):
self.view = ui.load_view('SpecialButton')
self.view.present('fullscreen')
self.label = ui.Label(frame=(120,100,100,100))
self.btn = MyButtonClass(self.label)
self.view.add_subview(self.btn) #watch the order, first button and then the label
self.view.add_subview(self.label)
def __init__(self):
w,h = ui.get_screen_size()
self.ty = ui.Label()
self.ty.text = 'Hello'
self.ty.text_color = 'black'
self.ty.font = ('<system>', 60)
self.ty.frame = (0, 0, w, h*0.25)
self.ty.bg_color = 'yellow'
self.sv = ui.ScrollView()
self.sv.width = w
self.sv.height = h*0.25
self.sv.content_size = (2*w, h*0.25)
self.sv.add_subview(self.ty)
self.add_subview(self.sv)
def _make_label(name, text, font, color):
lb = ui.Label(name ='head')
lb.text = text
lb.font = font
lb.text_color = color
lb.size_to_fit()
return lb
def __init__(self):
# Init
self.views = []
self.curview = None
self.root = ui.View(name="Multipanel")
self.close = ui.Button()
self.close.name = "close"
self.close.enabled = False
self.close.image = ui.Image.named("ionicons-close-round-32")
self.close.action = self.close_tapped
self.root.add_subview(self.close)
self.close.frame = self.root.width - 32, 0, 32, 32
self.close.flex = "LB"
self.tabs = ui.SegmentedControl()
self.tabs.name = "tabs"
self.tabs.enabled = False
self.tabs.selected_index = -1
self.tabs.segments = [PLACEHOLDER_TEXT]
self.tabs.action = self.segment_changed
self.root.add_subview(self.tabs)
self.tabs.frame = 0, 0, self.root.width - self.close.width, self.tabs.height
self.tabs.flex = "WB"
self.placeholder = ui.View()
self.placeholder.background_color = "lightgray"
self.ph_label = ui.Label()
self.ph_label.font = ("<system-bold>", 24)
self.ph_label.text_color = "gray"
self.ph_label.text = "No View Selected"
self.placeholder.add_subview(self.ph_label)
self.ph_label.size_to_fit()
self.ph_label.center = self.placeholder.center
self.ph_label.flex = "TBLR"
self.update_view()
def main():
global main_view
delegate = MetadataDelegate.new()
main_view = ui.View(frame=(0, 0, 400, 400))
main_view.name = 'Barcode Scanner'
session = AVCaptureSession.alloc().init()
device = AVCaptureDevice.defaultDeviceWithMediaType_('vide')
_input = AVCaptureDeviceInput.deviceInputWithDevice_error_(device, None)
if _input:
session.addInput_(_input)
else:
print('Failed to create input')
return
output = AVCaptureMetadataOutput.alloc().init()
queue = ObjCInstance(dispatch_get_current_queue())
output.setMetadataObjectsDelegate_queue_(delegate, queue)
session.addOutput_(output)
output.setMetadataObjectTypes_(output.availableMetadataObjectTypes())
prev_layer = AVCaptureVideoPreviewLayer.layerWithSession_(session)
prev_layer.frame = ObjCInstance(main_view).bounds()
prev_layer.setVideoGravity_('AVLayerVideoGravityResizeAspectFill')
ObjCInstance(main_view).layer().addSublayer_(prev_layer)
label = ui.Label(frame=(0, 0, 400, 30), flex='W', name='label')
label.background_color = (0, 0, 0, 0.5)
label.text_color = 'white'
label.text = 'Nothing scanned yet'
label.alignment = ui.ALIGN_CENTER
main_view.add_subview(label)
session.startRunning()
main_view.present('sheet')
main_view.wait_modal()
session.stopRunning()
delegate.release()
session.release()
output.release()
if found_codes:
print 'All scanned codes:\n' + '\n'.join(found_codes)
def __init__(self, container, state):
self._container = container
self._touch_began_location = None
self._initial_container_frame = None
self._container_superview = ObjCInstance(container).superview()
label = LayoutProxy(ui.Label())
label.font = ('<system>', 13.0)
label.alignment = ui.ALIGN_CENTER
label.text_color = get_theme_value('bar_title_color')
label.touch_enabled = False
self.add_subview(label)
label.layout.align_left_with_superview.equal = 0
label.layout.align_right_with_superview.equal = 0
label.layout.align_center_y_with_superview.equal = 0
self.title_label = label
button = LayoutProxy(ui.Button(title='x', tint_color=get_theme_value('tint_color')))
self.add_subview(button)
button.layout.align_left_with_superview.equal = 0
button.layout.align_top_with_superview.equal = 0
button.layout.align_bottom_with_superview.equal = 0
button.layout.width.equal = _OVERLAY_BAR_HEIGHT
self.close_button = button
button = LayoutProxy(ui.Button(title='-', tint_color=get_theme_value('tint_color')))
self.add_subview(button)
button.layout.align_right_with_superview.equal = 0
button.layout.align_top_with_superview.equal = 0
button.layout.align_bottom_with_superview.equal = 0
button.layout.width.equal = _OVERLAY_BAR_HEIGHT
self.collapse_button = button
separator = LayoutProxy(ui.View(background_color=get_theme_value('separator_color')))
self.add_subview(separator)
separator.layout.height.equal = 1
separator.layout.align_left_with_superview.equal = 0
separator.layout.align_bottom_with_superview.equal = 0
separator.layout.align_right_with_superview.equal = 0
self.separator = separator
self.update_appearance(state)