def __init__(self): super().__init__() layout = QVBoxLayout(self) types = QGroupBox(tr('filters.types.group')) testGroup = QHBoxLayout(types) testGroup.addWidget(ConfCheckbox(tr('filters.types.base'), 'download.base')) testGroup.addStretch() testGroup.addWidget(ConfCheckbox(tr('filters.types.dlc'), 'download.DLC')) testGroup.addStretch() testGroup.addWidget(ConfCheckbox(tr('filters.types.update'), 'download.update')) testGroup.addStretch() testGroup.addWidget(ConfCheckbox(tr('filters.types.demo'), 'download.demo')) layout.addWidget(types) region = QGroupBox('REGION') regionLayout = QHBoxLayout(region) regionLayout.addWidget(Region()) layout.addWidget(region) layout.addStretch()
def __init__(self): super().__init__() self.MIN_FILE_SIZE = 0 self.MAX_FILE_SIZE = 30 * 1024**3 self.scroll = QScrollArea(self) self.scroll.setWidgetResizable(True) self.scroll.setFrameShape(QFrame.NoFrame) layout = QVBoxLayout(self.scroll) typesGroup = QGroupBox(tr('filters.types.group')) Filters._createTypesGroup(layout, typesGroup) Filters._createRegionGroup(layout) sizeFilterGroup = QGroupBox(tr('filters.size.group')) sizeFilterLayout = QHBoxLayout(sizeFilterGroup) minFileSizeFilter = 0 if Config.download.fileSizeMax is not None: minFileSizeFilter = Config.download.fileSizeMin maxFileSizeFilter = self.MAX_FILE_SIZE if Config.download.fileSizeMax is not None: maxFileSizeFilter = Config.download.fileSizeMax filterMinSizeLabel = Filters._createLeftLabel(sizeFilterLayout, minFileSizeFilter) rangeSlider = self._createRangeSlider(sizeFilterLayout, minFileSizeFilter, maxFileSizeFilter) filterMaxSizeLabel = Filters._createRightLabel( sizeFilterLayout, rangeSlider.get_right_thumb_value()) layout.addWidget(sizeFilterGroup) widget = QWidget() widget.setLayout(layout) self.scroll.setWidget(widget) rangeSlider.left_thumb_value_changed.connect((lambda x: \ Filters._on_left_thumb_value_changed(filterMinSizeLabel, x))) rangeSlider.right_thumb_value_changed.connect((lambda x: \ Filters._on_right_thumb_value_changed(filterMaxSizeLabel, x)))
def test_missing_key(self): self.fs.create_file(TRANSLATION_FILE, contents=TRANSLATION_FILE_CONTENT) Config.language = "en" reload(TRANSLATION_FILE) missing_key = 'missing.key.ever' self.assertEqual(tr(missing_key), missing_key)
def test_translation_to_russian(self): self.fs.create_file(TRANSLATION_FILE, contents=TRANSLATION_FILE_CONTENT) Config.language = "ru" reload(TRANSLATION_FILE) self.assertEqual(tr(ABOUT_KEY), \ "\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435")
def initUI(self): self.isInitialized = False self.setWindowTitle(self.title) screen = QDesktopWidget().screenGeometry() left = int(screen.width() / 4) top = int(screen.height() / 4) width = int(screen.width() / 2) height = int(screen.height() / 2) self.setGeometry(left, top, width, height) layout = QVBoxLayout() self.header = Header(self) layout.addLayout(self.header.layout) self.files = gui.panes.files.Files() self.tabs = gui.tabs.Tabs({ tr('main.grid.files'): self.files, tr('main.grid.filters'): gui.panes.filters.Filters(), tr('main.grid.save_paths'): gui.panes.format.Format(), tr('main.grid.local_scan_paths'): gui.panes.dirlist.DirList(Config.paths.scan, self.saveScanPaths, rowType=gui.panes.dirlist.DirectoryLocal), tr('main.grid.remote_pull_paths'): gui.panes.dirlist.DirList(Config.pullUrls, self.savePullUrls, rowType=gui.panes.dirlist.DirectoryNetwork), tr('main.grid.users'): gui.panes.dirlist.DirList(list(Users.users.values()), self.saveUsers, rowType=gui.panes.dirlist.User), # rowType tr('main.grid.options'): gui.panes.options.Options() }) layout.addWidget(self.tabs) self.progress = Progress(self) layout.addLayout(self.progress.layout) self.setLayout(layout) self.isInitialized = True self.show()
def __init__(self, app): self.layout = QVBoxLayout() top = QHBoxLayout() bottom = QHBoxLayout() self.scan = _create_button(app, top, tr('main.top_menu.scan'), 100, app.on_scan) _create_button(app, top, tr('main.top_menu.organize'), 200, app.on_organize) self.pull = _create_button(app, top, tr('main.top_menu.pull'), 100, app.on_pull) self.titledb = _create_button(app, top, tr('main.top_menu.update_titledb'), 200, app.on_titledb) _create_button(app, top, tr('main.top_menu.decompress_nsz'), 200, app.on_decompress) _create_button(app, top, tr('main.top_menu.compress_nsp'), 200, app.on_compress) self.gdrive = _create_button(app, top, tr('main.top_menu.setup_gdrive'), 200, app.on_gdrive) top.addStretch() ipAddr = _get_ip_address() if ipAddr: self.serverInfo = QLabel( f"<b>{tr('main.status.ip')}:</b> {ipAddr} <b>{tr('main.status.port')}:</b> {Config.server.port} " + f"<b>{tr('main.status.user')}:</b> {Users.first().id} <b>{tr('main.status.password')}:</b> " + f"{Users.first().password}") else: self.serverInfo = QLabel("<b>Offline</b>") self.serverInfo.setMinimumWidth(200) self.serverInfo.setAlignment(Qt.AlignCenter) bottom.addWidget(self.serverInfo) bottom.addStretch() self.usbStatus = QLabel("<b>USB:</b> " + tr("usb.status." + Usb.status)) self.usbStatus.setMinimumWidth(50) self.usbStatus.setAlignment(Qt.AlignCenter) bottom.addWidget(self.usbStatus) self.timer = QTimer() self.timer.setInterval(1000) self.timer.timeout.connect(self.tick) self.timer.start() self.layout.addLayout(top) self.layout.addLayout(bottom)
def _createTypesGroup(layout, typesGroup): typesLayout = QHBoxLayout(typesGroup) typesLayout.addWidget( ConfCheckbox(tr('filters.types.base'), 'download.base')) typesLayout.addStretch() typesLayout.addWidget( ConfCheckbox(tr('filters.types.dlc'), 'download.DLC')) typesLayout.addStretch() typesLayout.addWidget( ConfCheckbox(tr('filters.types.update'), 'download.update')) typesLayout.addStretch() typesLayout.addWidget( ConfCheckbox(tr('filters.types.demo'), 'download.demo')) layout.addWidget(typesGroup)
def __init__(self, parent): super().__init__() self.parent = parent layout = QHBoxLayout(self) self.dirBtn = QPushButton(tr('dirlist.browse')) self.dirBtn.setFixedWidth(70) self.dirBtn.clicked.connect(self.on_browse) self.dirBtn.setFocusPolicy(Qt.StrongFocus) self.edit = Edit(self) layout.addWidget(self.dirBtn) layout.addWidget(self.edit) self.layout = layout
def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.layout = QVBoxLayout() self.header = Header(self) self.layout.addLayout(self.header.layout) self.files = gui.panes.files.Files() self.tabs = gui.tabs.Tabs({ tr('Files'): self.files, tr('Filters'): gui.panes.filters.Filters(), tr('Save Paths'): gui.panes.format.Format(), tr('Local Scan Paths'): gui.panes.dirlist.DirList( Config.paths.scan, self.saveScanPaths, rowType=gui.panes.dirlist.DirectoryLocal), tr('Remote Pull Paths'): gui.panes.dirlist.DirList( Config.pullUrls, self.savePullUrls, rowType=gui.panes.dirlist.DirectoryNetwork), tr('Users'): gui.panes.dirlist.DirList( list(Users.users.values()), self.saveUsers, rowType=gui.panes.dirlist.User), # rowType tr('Options'): gui.panes.options.Options() }) self.layout.addWidget(self.tabs) self.progress = Progress(self) self.layout.addLayout(self.progress.layout) self.setLayout(self.layout) self.show()
def on_browse(self): value = QFileDialog.getExistingDirectory(self, tr('Select Directory'),\ self.getValue(), QFileDialog.ShowDirsOnly) if value: self.setValue(value)
def tick(self): self.usbStatus.setText("<b>USB:</b> " + tr("usb.status." + Usb.status))
def test_translation_to_english(self): self.fs.create_file(TRANSLATION_FILE, contents=TRANSLATION_FILE_CONTENT) Config.language = "en" reload(TRANSLATION_FILE) self.assertEqual(tr(ABOUT_KEY), "About")
def test_missing_lang_file(self): if os.path.exists(TRANSLATION_FILE): self.fs.remove(TRANSLATION_FILE) reload(TRANSLATION_FILE) self.assertEqual(tr(ABOUT_KEY), ABOUT_KEY) self.assertEqual(tr(""), "")
def __init__(self, app): self.layout = QVBoxLayout() top = QHBoxLayout() bottom = QHBoxLayout() self.scan = QPushButton(tr('main.top_menu.scan'), app) self.scan.setMaximumWidth(100) self.scan.clicked.connect(app.on_scan) top.addWidget(self.scan) btn = QPushButton(tr('main.top_menu.organize'), app) btn.setMaximumWidth(200) btn.clicked.connect(app.on_organize) top.addWidget(btn) self.pull = QPushButton(tr('main.top_menu.pull'), app) self.pull.setMaximumWidth(100) self.pull.clicked.connect(app.on_pull) top.addWidget(self.pull) self.titledb = QPushButton(tr('main.top_menu.update_titledb'), app) self.titledb.setMaximumWidth(200) self.titledb.clicked.connect(app.on_titledb) top.addWidget(self.titledb) btn = QPushButton(tr('main.top_menu.decompress_nsz'), app) btn.setMaximumWidth(200) btn.clicked.connect(app.on_decompress) top.addWidget(btn) btn = QPushButton(tr("main.top_menu.compress_nsp"), app) btn.setMaximumWidth(200) btn.clicked.connect(app.on_compress) top.addWidget(btn) self.gdrive = QPushButton(tr("main.top_menu.setup_gdrive"), app) self.gdrive.setMaximumWidth(200) self.gdrive.clicked.connect(app.on_gdrive) top.addWidget(self.gdrive) top.addStretch() ipAddr = getIpAddress() if ipAddr: self.serverInfo = QLabel( f"<b>IP:</b> {ipAddr} <b>Port:</b> {Config.server.port} " + f"<b>User:</b> {Users.first().id} <b>Password:</b> " + f"{Users.first().password}") else: self.serverInfo = QLabel("<b>Offline</b>") self.serverInfo.setMinimumWidth(200) self.serverInfo.setAlignment(Qt.AlignCenter) bottom.addWidget(self.serverInfo) bottom.addStretch() self.usbStatus = QLabel("<b>USB:</b> " + tr("usb.status." + Usb.status)) self.usbStatus.setMinimumWidth(50) self.usbStatus.setAlignment(Qt.AlignCenter) bottom.addWidget(self.usbStatus) self.timer = QTimer() self.timer.setInterval(1000) self.timer.timeout.connect(self.tick) self.timer.start() self.layout.addLayout(top) self.layout.addLayout(bottom)
def on_organize(self): answer = QMessageBox.question(self, tr('main.top_menu.organize'), tr('main.dialog.organize_confirmation'), QMessageBox.Yes | QMessageBox.No) if answer == QMessageBox.Yes: nut.organize()
def __init__(self): # pylint: disable=too-many-locals super().__init__() self.MIN_FILE_SIZE = 0 self.MAX_FILE_SIZE = 30 * 1024**3 self.MIN_RANK = 1 self.MAX_RANK = 1000 self.DEFAULT_RANK = 200 self.scroll = QScrollArea(self) self.scroll.setWidgetResizable(True) self.scroll.setFrameShape(QFrame.NoFrame) layout = QVBoxLayout(self.scroll) typesGroup = QGroupBox(tr('filters.types.group')) Filters._createTypesGroup(layout, typesGroup) Filters._createRegionGroup(layout) sizeFilterGroup = QGroupBox(tr('filters.size.group')) sizeFilterLayout = QHBoxLayout(sizeFilterGroup) minFileSizeFilter = self.MIN_FILE_SIZE if Config.download.fileSizeMin is not None: minFileSizeFilter = Config.download.fileSizeMin maxFileSizeFilter = self.MAX_FILE_SIZE if Config.download.fileSizeMax is not None: maxFileSizeFilter = Config.download.fileSizeMax filterMinSizeLabel = Filters._createLeftLabel(sizeFilterLayout, minFileSizeFilter) sizeFilter = self._createRangeSlider(sizeFilterLayout, self.MIN_FILE_SIZE, self.MAX_FILE_SIZE, minFileSizeFilter, maxFileSizeFilter) filterMaxSizeLabel = Filters._createRightLabel( sizeFilterLayout, sizeFilter.get_right_thumb_value()) sizeFilter.left_thumb_value_changed.connect((lambda x: \ Filters._on_thumb_value_changed(filterMinSizeLabel, x, "fileSizeMin"))) sizeFilter.right_thumb_value_changed.connect((lambda x: \ Filters._on_thumb_value_changed(filterMaxSizeLabel, x, "fileSizeMax"))) layout.addWidget(sizeFilterGroup) rankFilterGroup = QGroupBox(tr('filters.rank.group')) rankFilterLayout = QHBoxLayout(rankFilterGroup) minRankFilter = self.MIN_RANK if Config.download.rankMin is not None: minRankFilter = Config.download.rankMin maxRankFilter = self.DEFAULT_RANK if Config.download.rankMax is not None: maxRankFilter = Config.download.rankMax filterMinRankLabel = Filters._createLeftLabel(rankFilterLayout, minRankFilter, isSize=False) rankFilter = self._createRangeSlider(rankFilterLayout, self.MIN_RANK, self.MAX_RANK, minRankFilter, maxRankFilter) filterMaxRankLabel = Filters._createRightLabel( rankFilterLayout, rankFilter.get_right_thumb_value(), isSize=False) rankFilter.left_thumb_value_changed.connect((lambda x: \ Filters._on_thumb_value_changed(filterMinRankLabel, x, "rankMin", isSize=False))) rankFilter.right_thumb_value_changed.connect((lambda x: \ Filters._on_thumb_value_changed(filterMaxRankLabel, x, "rankMax", isSize=False))) layout.addWidget(rankFilterGroup) widget = QWidget() widget.setLayout(layout) self.scroll.setWidget(widget)