def add(type, img): # spacing here are hard-coded so the layout breaks when font is changed img = img.scale((30, 45)) line = ui.HorizontalLayoutWidget() img_l = ui.LinearLayoutWidget() img_l.add(ui.Image(img)) img_l.add(ui.Spacing(0, 6)) line.add(img_l) if type != 0: line.add(ui.Spacing(10, 0)) w = 40 line.add( ui.Button(' - ', functools.partial(change, type, -1), font=font, force_width=w)) line.add(ui.Spacing(10, 0)) line.add( ui.Button(' + ', functools.partial(change, type, +1), font=font, force_width=w)) else: line.add(ui.Spacing(116, 0)) line.add(ui.Spacing(10, 0)) line.add(ui.Label('%d%%' % tpl[type], font=font)) panel.add(line)
def create_aligned_widget(widget, align, size=None): if not size: size = ui.screen_size if align & ui.RIGHT: widget = SpacingLayoutWidget(ui.Spacing(0,0), widget, (size[0], 0)) if align & ui.BOTTOM: widget = SpacingLayoutWidget(ui.Spacing(0,0), widget, (0, size[1])) return widget
def __init__(self, player): super(ConditionsWidget, self).__init__() p = ui.HorizontalLayoutWidget() p.add(ui.Spacing(10, 0)) p.add(ui.Label(' ', image=player.get_flag())) p.add(ui.Spacing(10, 0)) self.accepting = ui.Label('?') p.add(self.accepting) self.add(p) self.panel = ui.LinearLayoutWidget() self.add(self.panel)
def main_menu(): global main_menu_item main_menu_item = menu = PrettyMenu() version = 'version %s' % features.get('app.version') if features.get('gold.status') != 'none': version += '+' + features.get('gold.status') if features.get('gold.session_warning'): version += ' WARNING! Login with Dropbox in options menu to save your purchases.' menu.add(ui.Label('civsync.com; ' + version, color=(255, 0, 0, 150), font=ui.consolefont), (0, 0)) new_game_button = MenuButton('New\ngame', new_game_menu) menu.left.add(new_game_button) load_game_button = MenuButton('Load\ngame', save.load_dialog) menu.left.add(load_game_button) if features.get('gold.enable'): gold_button = MenuButton(u'civsync\n Gold', gold.menu) gold_button.fg = (255, 215, 0) gold_button.bg = (255, 215, 0, 100) menu.left.add(gold_button) if features.get('app.multiplayer'): menu.left.add(MenuButton('Connect', save.connect_dialog)) menu.right.add(MenuButton('', options.show_options, image=ui.load_image('data/user/options.png'))) menu.right.add(MenuButton('Exit', ui.back)) menu.right.add(ui.Spacing(0, 0)) ui.replace(menu)
def __init__(self, client): super(ScreenWidget, self).__init__() self.client = client self.map = MapWidget(client) self.overview = OverviewWidget(client) self.console = ConsoleWidget(client) self.menu = gamemenu.Menu(client) self.end_turn_button = ui.Button('End turn', self.client.end_turn) self.empire_button = ui.Button('Empire', self.empire_dialog) self.taxes_panel = TaxesPanel(client) self.left_panel = ui.LinearLayoutWidget(spacing=0, center=True) self.map_wrapper = ui.AbsoluteLayoutWidget() self.add(self.left_panel) self.add(self.map_wrapper) self.map_wrapper.add(self.map, (0, 0)) self.map_wrapper.add(self.menu, (0, 0), align=ui.BOTTOM) self.left_panel.add(self.overview) self.left_panel.add(self.console.scroll) self.left_panel.add(self.end_turn_button) self.left_panel.add(self.taxes_panel) self.left_panel.add(ui.Spacing(0, 10)) self.left_panel.add(self.empire_button) if features.get('app.full_label_toggle_button'): full_label_toggle_button = ui.Button('city labels', client.toggle_full_labels, font=ui.consolefont) self.left_panel.add(full_label_toggle_button) # key_end_turn() self.focus = self.map
def main_menu(): global main_menu_item main_menu_item = menu = PrettyMenu() menu.add( ui.Label('version %s' % features.get('app.version'), color=(255, 0, 0, 150), font=ui.consolefont), (0, 0)) new_game_button = MenuButton('New\ngame', new_game_menu) menu.left.add(new_game_button) load_game_button = MenuButton('Load\ngame', save.load_dialog) menu.left.add(load_game_button) if features.get('app.multiplayer'): menu.left.add(MenuButton('Connect', save.connect_dialog)) menu.right.add(MenuButton('Feed\nback', feedback)) menu.right.add( MenuButton( '', options.show_options, image=ui.load_image('data/user/options.png').convert_alpha())) menu.right.add(MenuButton('Exit', ui.back)) menu.right.add(ui.Spacing(0, 0)) ui.replace(menu)
def __init__(self): ui.AbsoluteLayoutWidget.__init__(self) self.load_background() self.left = ui.HorizontalLayoutWidget(spacing=10) self.left.add(ui.Spacing(0, 0)) self.right = ui.HorizontalLayoutWidget(spacing=10) self.cont = SpacingLayoutWidget(self.left, self.right, (ui.screen_width, 0)) self.add(create_aligned_widget(self.cont, ui.BOTTOM, (0, ui.screen_height - 10)), (0,0))
def __init__(self, client): super(ScreenWidget, self).__init__() width = 150 def make_button(name, func): return ui.Button(name, func, force_width=ui.scale_for_device(width - 15), padding=1) self.client = client if features.get('app.map_tiles'): import maptiles self.map = maptiles.MapWidget(client) else: self.map = mapdrawer.MapWidget(client, ui.init_zoom_levels()) self.overview = OverviewWidget(client) self.console = ConsoleWidget(client) self.menu = gamemenu.Menu(client, ui.screen_width - width) self.end_turn_button = make_button('End turn', self.client.end_turn) self.empire_button = make_button('Empire', self.empire_dialog) self.taxes_panel = TaxesPanel(client) self.left_panel = ui.LinearLayoutWidget(spacing=0, center=True, marginleft=0) self.left_panel.widget_background = (190, 160, 110, 170) self.add(self.map, (0, 0)) self.add(self.menu, (width, 0), align=ui.BOTTOM) self.add(self.left_panel, (0, 0), align=ui.LEFT) self.update_layout() self.left_panel.add(self.overview) self.left_panel.add(self.console.scroll) self.left_panel.add(self.end_turn_button) self.left_panel.add(self.taxes_panel) self.left_panel.add(ui.Spacing(0, 10)) self.left_panel.add(self.empire_button) self.left_panel.add(self.menu.left_widget) if features.get('app.full_label_toggle_button'): full_label_toggle_button = ui.Button('city labels', client.toggle_full_labels, font=ui.consolefont) self.left_panel.add(full_label_toggle_button) # key_end_turn() self.focus = self.map
def setup_units_in_city(self): def focus(unit): unit.focus() ui.back() for unit in self.city.get_units(): callback = functools.partial(focus, unit) panel = ui.LinearLayoutWidget(center=True) panel.add(ui.Image(unit.get_image(), callback=callback)) panel.add( ui.Label(unit.get_name(), font=ui.consolefont, callback=callback)) self.units_in_city.add(panel) self.units_in_city.add(ui.Spacing(10, 0))
def unit_select_dialog_popup(self, units): def focus(unit): unit.focus() ui.back() panel = ui.LinearLayoutWidget( spacing=0 ) #No vertical spacing because Images already contains margins. for unit in units: name = unit.get_name() callback = functools.partial(focus, unit) p = ui.HorizontalLayoutWidget(spacing=10) surf = unit.get_image() w, h = surf.get_size() image = surf.scale( (ui.scale_for_device(w), ui.scale_for_device(h))) surf.destroy() p.add(ui.Image(image, callback)) container = ui.LinearLayoutWidget(spacing=0) container.add(ui.Spacing(0, ui.scale_for_device(8))) container.add(ui.Button(name, callback)) p.add(container) panel.add(p) ui.set_dialog(panel, scroll=True)