class IntegerEditor(WidgetWrap): """ IntEdit input class """ def __init__(self, default=0): self._edit = IntEdit(default=default) super().__init__(self._edit) @property def value(self): return self._edit.value() @value.setter def value(self, val): return self._edit.set_edit_text(str(val))
def build_unselected_widgets(self): cdict = juju.constraints_to_dict(self.md.get('constraints', '')) label = str(self.juju_machine_id) self.juju_machine_id_button = SecondaryButton(label, self.show_pin_chooser) self.juju_machine_id_label = Text(label) self.cores_field = IntEdit('', str(cdict.get('cores', ''))) connect_signal(self.cores_field, 'change', self.handle_cores_changed) memval = cdict.get('mem', '') if memval != '': memval = self._format_constraint(memval) / 1024 self.mem_field = Edit('', str(memval)) connect_signal(self.mem_field, 'change', self.handle_mem_changed) diskval = cdict.get('root-disk', '') if diskval != '': diskval = self._format_constraint(diskval) / 1024 self.disk_field = Edit('', str(diskval)) connect_signal(self.disk_field, 'change', self.handle_disk_changed) if self.show_pin: machine_id_w = self.juju_machine_id_button else: machine_id_w = self.juju_machine_id_label cols = [machine_id_w] for field in (self.cores_field, self.mem_field, self.disk_field): cols.append(AttrMap(field, 'string_input', 'string_input_focus')) cols.append(Text("placeholder")) self.unselected_columns = Columns(cols, dividechars=2) self.update_assignments() return self.unselected_columns
def build_widgets(self): title_text = Text([("body", self.name)], align="center") desc_text = Text(["\n", strip_solo_dots(self.description)]) self.reset_button = PlainButton("Reset to Default", self.do_reset) if self.optype == OptionType.BOOLEAN: self.control = CheckBox(self.name, state=bool(self.current_value)) elif self.optype == OptionType.INT: self.control = IntEdit(caption="{}: ".format(self.name), default=self.current_value) elif self.optype == OptionType.STRING: edit_text = self.current_value or "" self.control = StringEditor( caption="{}: ".format(self.name), edit_text=edit_text) else: raise Exception("Unknown option type") if self.optype == OptionType.STRING: connect_signal(self.control._edit, 'change', self.handle_value_changed) else: connect_signal(self.control, 'change', self.handle_value_changed) button_grid = GridFlow([self.reset_button], 36, 1, 0, 'right') return Pile([Divider(), title_text, desc_text, self.control, button_grid])
def build_unselected_widgets(self): cdict = juju.constraints_to_dict(self.md.get('constraints', '')) self.juju_machine_id_button = MenuSelectButton( '{:20s}'.format(self.juju_machine_id), self.show_pin_chooser) self.juju_machine_id_label = Text("{:20s}".format( self.juju_machine_id)) self.cores_field = IntEdit('', str(cdict.get('cores', ''))) connect_signal(self.cores_field, 'change', self.handle_cores_changed) memval = cdict.get('mem', '') if memval != '': memval = memval / 1024 self.mem_field = Edit('', str(memval)) connect_signal(self.mem_field, 'change', self.handle_mem_changed) diskval = cdict.get('root-disk', '') if diskval != '': diskval = diskval / 1024 self.disk_field = Edit('', str(diskval)) connect_signal(self.disk_field, 'change', self.handle_disk_changed) if self.show_pin: machine_id_w = self.juju_machine_id_button else: machine_id_w = self.juju_machine_id_label cols = [ machine_id_w, self.cores_field, self.mem_field, self.disk_field ] cols = [AttrMap(w, 'string_input', 'string_input_focus') for w in cols] cols.append(Text("placeholder")) self.unselected_columns = Columns(cols, dividechars=2) self.update_assignments() return self.unselected_columns
class IntegerEditor(WidgetWrap): """ IntEdit input class """ def __init__(self, caption, default=0): self._edit = IntEdit(caption=caption, default=default) super().__init__(self._edit) @property def value(self): return self._edit.get_edit_text()
class AddCharmDialog(Overlay): """ Adding charm dialog """ def __init__(self, underlying, juju_state, destroy, command_runner=None): import cloudinstall.charms charm_modules = [import_module('cloudinstall.charms.' + mname) for (_, mname, _) in pkgutil.iter_modules(cloudinstall.charms.__path__)] charm_classes = [m.__charm_class__ for m in charm_modules if m.__charm_class__.allow_multi_units] self.cr = command_runner self.underlying = underlying self.destroy = destroy self.boxes = [] self.bgroup = [] first_index = 0 for i, charm_class in enumerate(charm_classes): charm = charm_class(juju_state=juju_state) if charm.name() and not first_index: first_index = i r = RadioButton(self.bgroup, charm.name()) r.text_label = charm.name() self.boxes.append(r) self.count_editor = IntEdit("Number of units to add: ", 1) self.boxes.append(self.count_editor) wrapped_boxes = _wrap_focus(self.boxes) bs = [Button("Ok", self.yes), Button("Cancel", self.no)] wrapped_buttons = _wrap_focus(bs) self.buttons = Columns(wrapped_buttons) self.items = ListBox(wrapped_boxes) self.items.set_focus(first_index) ba = BoxAdapter(self.items, height=len(wrapped_boxes)) self.lb = ListBox([ba, Text(""), self.buttons]) self.w = LineBox(self.lb, title="Add unit") self.w = AttrMap(self.w, "dialog") Overlay.__init__(self, self.w, self.underlying, 'center', 45, 'middle', len(wrapped_boxes) + 4) def yes(self, button): selected = [r for r in self.boxes if r is not self.count_editor and r.get_state()][0] _charm_to_deploy = selected.label n = self.count_editor.value() log.info("Adding {n} units of {charm}".format( n=n, charm=_charm_to_deploy)) self.cr.add_unit(_charm_to_deploy, count=int(n)) self.destroy() def no(self, button): self.destroy()
class IntegerEditor(WidgetWrap): """ IntEdit input class """ def __init__(self, caption=None, default=0): if caption is None: caption = "" self._edit = IntEdit(caption=caption, default=default) super().__init__(self._edit) @property def value(self): return self._edit.get_edit_text()
def menu(): hello = Text( "Приветствую! Для продолжения настройте параметры лабиринта.\n" + "Если карта лабиринта будет некорректно отображаться, " + "попробуйте уменьшить значение ширины или развернуть окно.") height_enter = IntEdit("Высота лабиринта: ", 30) width_enter = IntEdit("Ширина лабиринта: ", 45) done = Button("Готово") done_pad = Padding(done, align="center", width=10) back = AttrMap(SolidFill("\u25E6"), "blueprint") pile = Pile( [hello, Divider("\u2500"), height_enter, width_enter, done_pad]) menu = Filler(LineBox(pile)) main_widget = Overlay(menu, back, align="center", width=35, height=12, valign="middle") loop = MainLoop(main_widget, palette) connect_signal(done, 'click', start_game) loop.run() return MazeGame(height_enter.value(), width_enter.value())
def __init__(self): grading_directory = LineBox(Edit(("header", "Grading directory\n\n"), state.grading_directory)) grader_name = LineBox(Edit(("header", "Grader's name\n\n"), state.grader_name)) group_number = LineBox(IntEdit(("header", "Group number\n\n"), state.group_number)) team_type = RadioGroup("Team type", TeamType, state.team_type) username = LineBox(Edit(("header", "Username\n\n"), "")) password = LineBox(Edit(("header", "Password\n\n"), "", mask="*")) grid_elements = [ {"grading_directory": grading_directory, "grader_name": grader_name}, {"group_number": group_number, "team_type": team_type}, {"username": username, "password": password}, ] super().__init__("Clone", grid_elements, clone)
def build_widgets(self): desc_text = Text(["\n", strip_solo_dots(self.description)]) self.reset_button = PlainButton("Reset to Default", self.do_reset) if self.optype == OptionType.BOOLEAN: self.control = CheckBox('', state=bool(self.current_value)) self.wrapped_control = self.control elif self.optype == OptionType.INT: self.control = IntEdit(default=self.current_value) self.wrapped_control = Color.string_input( self.control, focus_map='string_input focus') elif self.optype == OptionType.STRING: edit_text = self.current_value or "" self.control = StringEditor(edit_text=edit_text) self.wrapped_control = Color.string_input( self.control, focus_map='string_input focus') elif self.optype == OptionType.FLOAT: edit_text = str(self.current_value) self.control = StringEditor(edit_text=edit_text) self.wrapped_control = Color.string_input( self.control, focus_map='string_input focus') else: raise Exception("Unknown option type") self.control_columns = Columns( [('pack', Text("{}:".format(self.name), align='right')), (80, self.wrapped_control)], dividechars=1) if self.optype in [OptionType.STRING, OptionType.FLOAT]: connect_signal(self.control._edit, 'change', self.handle_value_changed) else: connect_signal(self.control, 'change', self.handle_value_changed) button_grid = GridFlow([ Color.button_secondary(self.reset_button, focus_map='button_secondary focus') ], 36, 1, 0, 'right') return Pile([ Padding.line_break(""), Padding.left(self.control_columns, left=1), Padding.left(desc_text, left=2), button_grid ])
def _insert_charm_selections(self): first_index = 0 bgroup = [] for i, charm_class in enumerate(self.charms): charm = charm_class if charm.name() and not first_index: first_index = i r = RadioButton(bgroup, charm.name()) r.text_label = charm.name() self.boxes.append(r) # Add input widget for specifying NumUnits self.count_editor = IntEdit("Number of units to add: ", 1) self.boxes.append(self.count_editor) wrapped_boxes = self._wrap_focus(self.boxes) items = ListBox(SimpleListWalker(wrapped_boxes)) items.set_focus(first_index) return (len(self.boxes), BoxAdapter(items, len(self.boxes)))
def __init__(self, caption=None, default=0): if caption is None: caption = "" self._edit = IntEdit(caption=caption, default=default) super().__init__(self._edit)
def __init__(self, default=0): self._edit = IntEdit(default=default) super().__init__(self._edit)
def __init__(self, caption, default=0): self._edit = IntEdit(caption=caption, default=default) super().__init__(self._edit)