def __init__(self, scenario): """ Sets up the graphics view, the toolbar and the tracker rectangle. """ super().__init__() self.setObjectName('minimap-widget') layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) # the content is a scene self.scene = QtWidgets.QGraphicsScene() # tracker rectangle that tracks the view of the main map self.tracker = QtWidgets.QGraphicsRectItem() print(self.tracker.pen().widthF()) self.tracker.setCursor(QtCore.Qt.PointingHandCursor) self.tracker.setZValue(1000) self.tracker.hide() self.scene.addItem(self.tracker) # the view on the scene (no scroll bars) self.view = QtWidgets.QGraphicsView(self.scene) self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) layout.addWidget(self.view) # the width and height (fixed width throughout the game) self.view.setFixedWidth(self.VIEW_WIDTH) view_height = math.floor(0.6 * self.VIEW_WIDTH) self.view.setFixedHeight(view_height) # tool bar below the mini map self.toolbar = QtWidgets.QToolBar() self.toolbar.setIconSize(QtCore.QSize(20, 20)) # action group (only one of them can be checked at each time) action_group = QtWidgets.QActionGroup(self.toolbar) # political view in the beginning action_political = qt_graphics.create_action(tools.load_ui_icon('icon.mini.political.png'), 'Show political view', action_group, toggle_connection=self.toggled_political, checkable=True) self.toolbar.addAction(action_political) # geographical view self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.mini.geographical.png'), 'Show geographical view', action_group, toggle_connection=self.toggled_geographical, checkable=True)) # wrap tool bar into horizontal layout with stretch l = QtWidgets.QHBoxLayout() l.setContentsMargins(0, 0, 0, 0) l.addWidget(self.toolbar) l.addStretch() # add layout containing tool bar layout.addLayout(l) # store scenario self.scenario = scenario self.removable_items = []
def __init__(self): """ Create and add all tabs """ super().__init__() toolbar = QtWidgets.QToolBar() toolbar.setIconSize(QtCore.QSize(32, 32)) action_group = QtWidgets.QActionGroup(toolbar) action_preferences_general = qt_graphics.create_action(tools.load_ui_icon('icon.preferences.general.png'), 'Show general preferences', action_group, toggle_connection=self._toggled_action_preferences_general, checkable=True) toolbar.addAction(action_preferences_general) toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Show network preferences', action_group, toggle_connection=self._toggled_action_preferences_network, checkable=True)) toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.preferences.graphics.png'), 'Show graphics preferences', action_group, toggle_connection=self._toggled_action_preferences_graphics, checkable=True)) toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.preferences.music.png'), 'Show music preferences', action_group, toggle_connection=self._toggled_action_preferences_music, checkable=True)) self.stacked_layout = QtWidgets.QStackedLayout() layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(toolbar) layout.addLayout(self.stacked_layout) # empty lists self._check_boxes = [] self._line_edits = [] self._sliders = [] # add tabs self._layout_widget_preferences_general() self._layout_widget_preferences_graphics() self._layout_widget_preferences_music() self._layout_widget_preferences_network() # show general preferences action_preferences_general.setChecked(True)
def __init__(self): """ Sets up all the input elements of the create new scenario dialog. """ super().__init__() self.parameters = {} widget_layout = QtWidgets.QVBoxLayout(self) # title box box = QtWidgets.QGroupBox('Title') layout = QtWidgets.QVBoxLayout(box) edit = QtWidgets.QLineEdit() edit.setFixedWidth(300) edit.setPlaceholderText('Unnamed') self.parameters[constants.ScenarioProperties.SCENARIO_TITLE] = edit layout.addWidget(edit) widget_layout.addWidget(box) # map size box = QtWidgets.QGroupBox('Map size') layout = QtWidgets.QHBoxLayout(box) layout.addWidget(QtWidgets.QLabel('Width')) edit = QtWidgets.QLineEdit() edit.setFixedWidth(50) edit.setValidator(QtGui.QIntValidator(1, 1000)) edit.setPlaceholderText('100') self.parameters[constants.ScenarioProperties.MAP_COLUMNS] = edit layout.addWidget(edit) layout.addWidget(QtWidgets.QLabel('Height')) edit = QtWidgets.QLineEdit() edit.setFixedWidth(50) edit.setValidator(QtGui.QIntValidator(1, 1000)) edit.setPlaceholderText('60') self.parameters[constants.ScenarioProperties.MAP_ROWS] = edit layout.addWidget(edit) layout.addStretch() widget_layout.addWidget(box) # vertical stretch widget_layout.addStretch() # add the button layout = QtWidgets.QHBoxLayout() toolbar = QtWidgets.QToolBar() toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.confirm.png'), 'Create new scenario', toolbar, self.create_scenario_clicked)) layout.addStretch() layout.addWidget(toolbar) widget_layout.addLayout(layout)
def create_toolbar(self): """ Setup toolbar at the bottom. """ layout = QtWidgets.QHBoxLayout() toolbar = QtWidgets.QToolBar() toolbar.setIconSize(QtCore.QSize(20, 20)) toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.editor.info.terrain.png'), 'Change terrain type', self, self.change_terrain)) layout.addWidget(toolbar) layout.addStretch() return layout
def __init__(self, client): """ Create and setup all the elements. """ super().__init__() self.client = client # scenario self.scenario = None self.toolbar = QtWidgets.QToolBar() self.toolbar.setIconSize(QtCore.QSize(32, 32)) self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.scenario.new.png'), 'Create new scenario', self, self.show_new_scenario_dialog)) self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.scenario.load.png'), 'Load scenario', self, self.load_scenario_dialog)) self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.scenario.save.png'), 'Save scenario', self, self.save_scenario_dialog)) self.toolbar.addSeparator() self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.editor.general.png'), 'Edit base properties', self, self.show_general_properties_dialog)) self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.editor.nations.png'), 'Edit nations', self, self.show_nations_dialog)) self.toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.editor.provinces.png'), 'Edit provinces', self, self.show_provinces_dialog)) spacer = QtWidgets.QWidget() spacer.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) self.toolbar.addWidget(spacer) clock = qt_graphics.ClockLabel() self.toolbar.addWidget(clock) action_help = QtWidgets.QAction(tools.load_ui_icon('icon.help.png'), 'Show help', self) action_help.triggered.connect(client.show_help_browser) # TODO with partial make reference to specific page self.toolbar.addAction(action_help) action_quit = QtWidgets.QAction(tools.load_ui_icon('icon.back.startscreen.png'), 'Exit to main menu', self) action_quit.triggered.connect(client.switch_to_start_screen) # TODO ask if something is changed we should save.. (you might loose progress) self.toolbar.addAction(action_quit) # info box self.info_box = InfoBox(self.scenario) # the main map self.map = EditorMainMap(self.scenario) self.map.tile_at_focus_changed.connect(self.info_box.update_tile_information) # the mini map self.mini_map = MiniMap(self.scenario) self.mini_map.roi_changed.connect(self.map.set_position) layout = QtWidgets.QGridLayout(self) layout.addWidget(self.toolbar, 0, 0, 1, 2) layout.addWidget(self.mini_map, 1, 0) layout.addWidget(self.info_box, 2, 0) layout.addWidget(self.map, 1, 1, 2, 1) layout.setRowStretch(2, 1) # the info box will take all vertical space left layout.setColumnStretch(1, 1) # the map will take all horizontal space left
def _layout_widget_preferences_network(self): """ Create network options widget. """ tab = QtWidgets.QWidget() tab_layout = QtWidgets.QVBoxLayout(tab) # status label self.network_status_label = QtWidgets.QLabel('') tab_layout.addWidget(self.network_status_label) # remote server groupbox l = QtWidgets.QVBoxLayout() # remote server address l2 = QtWidgets.QHBoxLayout() l2.addWidget(QtWidgets.QLabel('Remote IP address')) edit = QtWidgets.QLineEdit() edit.setFixedWidth(300) l2.addWidget(edit) l2.addStretch() l.addLayout(l2) # actions toolbar l2 = QtWidgets.QHBoxLayout() toolbar = QtWidgets.QToolBar() toolbar.setIconSize(QtCore.QSize(24, 24)) # connect to remote server toolbar.addAction(qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Connect/Disconnect to remote server', toolbar, checkable=True)) l2.addWidget(toolbar) l2.addStretch() l.addLayout(l2) tab_layout.addWidget(qt_graphics.wrap_in_groupbox(l, 'Remote Server')) # local server group box l = QtWidgets.QVBoxLayout() # accepts incoming connections checkbox checkbox = QtWidgets.QCheckBox('Accepts incoming connections') self._register_check_box(checkbox, constants.Opt.LS_OPEN) l.addWidget(checkbox) # alias name edit box l2 = QtWidgets.QHBoxLayout() l2.addWidget(QtWidgets.QLabel('Alias')) edit = QtWidgets.QLineEdit() edit.setFixedWidth(300) l2.addWidget(edit) l2.addStretch() self._register_line_edit(edit, constants.Opt.LS_NAME) l.addLayout(l2) # actions toolbar l2 = QtWidgets.QHBoxLayout() toolbar = QtWidgets.QToolBar() toolbar.setIconSize(QtCore.QSize(24, 24)) # show local server monitor toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Show local server monitor', toolbar)) # local server is on/off toolbar.addAction( qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Turn local server on/off', toolbar, checkable=True)) l2.addWidget(toolbar) l2.addStretch() l.addLayout(l2) tab_layout.addWidget(qt_graphics.wrap_in_groupbox(l, 'Local Server')) # vertical stretch tab_layout.addStretch() # add tab self.tab_network = tab self.stacked_layout.addWidget(tab)