def test_bookmarks_save_restore(self): """Test the bookmark save/restore feature""" # We automatically purge missing entries so we mock-out # git.is_git_worktree() so that this bookmark is kept. bookmark = {'path': '/tmp/python/thinks/this/exists', 'name': 'exists'} def mock_verify(path): return path == bookmark['path'] settings = Settings.read() settings.add_bookmark(bookmark['path'], bookmark['name']) settings.save() settings = Settings.read(verify=mock_verify) bookmarks = settings.bookmarks self.assertEqual(len(settings.bookmarks), 1) self.assertTrue(bookmark in bookmarks) settings.remove_bookmark(bookmark['path'], bookmark['name']) bookmarks = settings.bookmarks self.assertEqual(len(bookmarks), 0) self.assertFalse(bookmark in bookmarks)
def __init__(self, name, url_patterns, opener_cls, user_conf, starts, unit_cls=None, login_hook=None, error_handler=None, finish_callback=None, **kw): self.name = name if not JOB_NAME_RE.match(name): raise ConfigurationError( 'Job name can only contain alphabet, number and space.') self.uniq_name = self._get_uniq_name(self.name) self.url_patterns = url_patterns self.opener_cls = opener_cls self.user_conf = user_conf self.starts = starts self.login_hook = login_hook self.error_handler = error_handler self.finish_callback = finish_callback self.settings = Settings(user_conf=user_conf, **kw) self.unit_cls = unit_cls or \ (Bundle if self.settings.job.mode == 'bundle' else Url)
def test_bookmarks_save_restore(): """Test the bookmark save/restore feature""" # We automatically purge missing entries so we mock-out # git.is_git_worktree() so that this bookmark is kept. bookmark = {'path': '/tmp/python/thinks/this/exists', 'name': 'exists'} def mock_verify(path): return path == bookmark['path'] settings = Settings.read() settings.add_bookmark(bookmark['path'], bookmark['name']) settings.save() settings = Settings.read(verify=mock_verify) bookmarks = settings.bookmarks assert len(settings.bookmarks) == 1 assert bookmark in bookmarks settings.remove_bookmark(bookmark['path'], bookmark['name']) bookmarks = settings.bookmarks expect = 0 actual = len(bookmarks) assert expect == actual assert bookmark not in bookmarks
class JobDescription(object): def __init__(self, name, url_patterns, opener_cls, user_conf, starts, unit_cls=None, login_hook=None, error_handler=None, finish_callback=None, **kw): self.name = name if not JOB_NAME_RE.match(name): raise ConfigurationError('Job name can only contain alphabet, number and space.') self.uniq_name = self._get_uniq_name(self.name) self.url_patterns = url_patterns self.opener_cls = opener_cls self.user_conf = user_conf self.starts = starts self.login_hook = login_hook self.error_handler = error_handler self.finish_callback = finish_callback self.settings = Settings(user_conf=user_conf, **kw) self.unit_cls = unit_cls or \ (Bundle if self.settings.job.mode == 'bundle' else Url) def _get_uniq_name(self, name): hash_val = hashlib.md5(name).hexdigest()[8:-8] return base58_encode(int(hash_val, 16)) def add_urlpattern(self, url_pattern): self.url_patterns += url_pattern def update_settings(self, settings): self.settings.update(settings)
def __init__(self, parent): standard.Dialog.__init__(self, parent=parent) self.settings = Settings() self.settings.load() self.resize(494, 238) self.setWindowTitle(N_('Bookmarks')) if parent is not None: self.setWindowModality(Qt.WindowModal) self.layt = QtGui.QVBoxLayout(self) self.layt.setMargin(defs.margin) self.layt.setSpacing(defs.spacing) self.bookmarks = QtGui.QListWidget(self) self.bookmarks.setAlternatingRowColors(True) self.bookmarks.setSelectionMode(QtGui.QAbstractItemView .ExtendedSelection) self.layt.addWidget(self.bookmarks) self.button_layout = QtGui.QHBoxLayout() self.open_button = qtutils.create_button(text=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) self.button_layout.addWidget(self.open_button) self.add_button = qtutils.create_button(text=N_('Add'), icon=qtutils.add_icon()) self.button_layout.addWidget(self.add_button) self.delete_button = QtGui.QPushButton(self) self.delete_button.setText(N_('Delete')) self.delete_button.setIcon(qtutils.discard_icon()) self.delete_button.setEnabled(False) self.button_layout.addWidget(self.delete_button) self.button_layout.addStretch() self.save_button = QtGui.QPushButton(self) self.save_button.setText(N_('Save')) self.save_button.setIcon(qtutils.save_icon()) self.save_button.setEnabled(False) self.button_layout.addWidget(self.save_button) self.close_button = QtGui.QPushButton(self) self.close_button.setText(N_('Close')) self.button_layout.addWidget(self.close_button) self.layt.addLayout(self.button_layout) self.connect(self.bookmarks, SIGNAL('itemSelectionChanged()'), self.item_selection_changed) qtutils.connect_button(self.open_button, self.open_repo) qtutils.connect_button(self.add_button, self.add) qtutils.connect_button(self.delete_button, self.delete) qtutils.connect_button(self.save_button, self.save) qtutils.connect_button(self.close_button, self.accept) self.update_bookmarks()
class BookmarksWidget(QtGui.QWidget): def __init__(self, style=BOOKMARKS, parent=None): QtGui.QWidget.__init__(self, parent) self.style = style self.settings = Settings() self.tree = BookmarksTreeWidget(style, self.settings, parent=self) self.add_button = qtutils.create_action_button( tooltip=N_('Add'), icon=qtutils.add_icon()) self.delete_button = qtutils.create_action_button( tooltip=N_('Delete'), icon=qtutils.remove_icon()) self.delete_button.setEnabled(False) self.open_button = qtutils.create_action_button( tooltip=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) self.setFocusProxy(self.tree) if style == BOOKMARKS: self.setToolTip(N_('Bookmarked repositories')) elif style == RECENT_REPOS: self.setToolTip(N_('Recent repositories')) self.add_button.hide() self.button_layout = qtutils.hbox(defs.no_margin, defs.spacing, self.open_button, self.add_button, self.delete_button) self.main_layout = qtutils.vbox(defs.no_margin, defs.spacing, self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) QtCore.QTimer.singleShot(0, self.reload_bookmarks) def reload_bookmarks(self): # Called once after the GUI is initialized self.settings.load() self.tree.refresh() def tree_item_selection_changed(self): enabled = bool(self.tree.selected_item()) self.delete_button.setEnabled(enabled) self.open_button.setEnabled(enabled)
class BookmarksWidget(QtGui.QWidget): def __init__(self, style=BOOKMARKS, parent=None): QtGui.QWidget.__init__(self, parent) self.style = style self.settings = Settings() self.tree = BookmarksTreeWidget(style, self.settings, parent=self) self.add_button = qtutils.create_action_button(tooltip=N_('Add'), icon=icons.add()) self.delete_button = qtutils.create_action_button(tooltip=N_('Delete'), icon=icons.remove()) self.open_button = qtutils.create_action_button(tooltip=N_('Open'), icon=icons.repo()) self.button_group = utils.Group(self.delete_button, self.open_button) self.button_group.setEnabled(False) self.setFocusProxy(self.tree) if style == BOOKMARKS: self.setToolTip(N_('Favorite repositories')) elif style == RECENT_REPOS: self.setToolTip(N_('Recent repositories')) self.add_button.hide() self.button_layout = qtutils.hbox(defs.no_margin, defs.spacing, self.open_button, self.add_button, self.delete_button) self.main_layout = qtutils.vbox(defs.no_margin, defs.spacing, self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) QtCore.QTimer.singleShot(0, self.reload_bookmarks) def reload_bookmarks(self): # Called once after the GUI is initialized self.settings.load() self.tree.refresh() def tree_item_selection_changed(self): enabled = bool(self.tree.selected_item()) self.button_group.setEnabled(enabled)
class BookmarksWidget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.settings = Settings() self.tree = BookmarksTreeWidget(self.settings, parent=self) self.add_button = qtutils.create_action_button( tooltip=N_('Add'), icon=qtutils.add_icon()) self.delete_button = qtutils.create_action_button( tooltip=N_('Delete'), icon=qtutils.remove_icon()) self.delete_button.setEnabled(False) self.open_button = qtutils.create_action_button( tooltip=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) self.button_layout = QtGui.QHBoxLayout() self.button_layout.setMargin(defs.no_margin) self.button_layout.setSpacing(defs.spacing) self.button_layout.addWidget(self.open_button) self.button_layout.addWidget(self.add_button) self.button_layout.addWidget(self.delete_button) self.main_layout = QtGui.QVBoxLayout() self.main_layout.setMargin(defs.no_margin) self.main_layout.setSpacing(defs.spacing) self.main_layout.addWidget(self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) self.setFocusProxy(self.tree) QtCore.QTimer.singleShot(0, self.reload_bookmarks) def reload_bookmarks(self): # Called once after the GUI is initialized self.settings.load() self.tree.refresh() def tree_item_selection_changed(self): enabled = bool(self.tree.selected_item()) self.delete_button.setEnabled(enabled) self.open_button.setEnabled(enabled)
def test_gui_save_restore(self): """Test saving and restoring gui state""" settings = Settings.read() settings.gui_state['test-gui'] = {'foo': 'bar'} settings.save() settings = Settings.read() state = settings.gui_state.get('test-gui', {}) self.assertTrue('foo' in state) self.assertEqual(state['foo'], 'bar')
class BookmarksWidget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.settings = Settings() self.tree = BookmarksTreeWidget(self.settings, parent=self) self.add_button = qtutils.create_action_button(tooltip=N_('Add'), icon=qtutils.add_icon()) self.delete_button = qtutils.create_action_button( tooltip=N_('Delete'), icon=qtutils.remove_icon()) self.delete_button.setEnabled(False) self.open_button = qtutils.create_action_button( tooltip=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) self.button_layout = QtGui.QHBoxLayout() self.button_layout.setMargin(defs.no_margin) self.button_layout.setSpacing(defs.spacing) self.button_layout.addWidget(self.open_button) self.button_layout.addWidget(self.add_button) self.button_layout.addWidget(self.delete_button) self.main_layout = QtGui.QVBoxLayout() self.main_layout.setMargin(defs.no_margin) self.main_layout.setSpacing(defs.spacing) self.main_layout.addWidget(self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) self.setFocusProxy(self.tree) QtCore.QTimer.singleShot(0, self.reload_bookmarks) def reload_bookmarks(self): # Called once after the GUI is initialized self.settings.load() self.tree.refresh() def tree_item_selection_changed(self): enabled = bool(self.tree.selected_item()) self.delete_button.setEnabled(enabled) self.open_button.setEnabled(enabled)
def build_recent_menu(self): settings = Settings() settings.load() recent = settings.recent cmd = cmds.OpenRepo menu = self.open_recent_menu menu.clear() for r in recent: name = os.path.basename(r) directory = os.path.dirname(r) text = '%s %s %s' % (name, unichr(0x2192), directory) menu.addAction(text, cmds.run(cmd, r))
def test_bookmarks_removes_missing_entries(self): """Test that missing entries are removed after a reload""" # verify returns False so all entries will be removed. bookmark = {'path': '.', 'name': 'does-not-exist'} settings = Settings.read(verify=lambda x: False) settings.add_bookmark(bookmark['path'], bookmark['name']) settings.remove_missing_bookmarks() settings.save() settings = Settings.read() bookmarks = settings.bookmarks self.assertEqual(len(settings.bookmarks), 0) self.assertFalse(bookmark in bookmarks)
def test_bookmarks_removes_missing_entries(): """Test that missing entries are removed after a reload""" # verify returns False so all entries will be removed. bookmark = {'path': '.', 'name': 'does-not-exist'} settings = Settings.read(verify=lambda x: False) settings.add_bookmark(bookmark['path'], bookmark['name']) settings.remove_missing_bookmarks() settings.save() settings = Settings.read() bookmarks = settings.bookmarks expect = 0 actual = len(bookmarks) assert expect == actual assert bookmark not in bookmarks
def refresh(self): self.clear() settings = Settings() settings.load() items = [] icon = qtutils.dir_icon() recents = set(settings.recent) for path in settings.recent: item = BookmarksTreeWidgetItem(path, icon) items.append(item) for path in settings.bookmarks: if path in recents: # avoid duplicates continue item = BookmarksTreeWidgetItem(path, icon) items.append(item) self.addTopLevelItems(items)
def __init__(self, style=BOOKMARKS, parent=None): QtGui.QWidget.__init__(self, parent) self.style = style self.settings = Settings() self.tree = BookmarksTreeWidget(style, self.settings, parent=self) self.add_button = qtutils.create_action_button(tooltip=N_('Add'), icon=qtutils.add_icon()) self.delete_button = qtutils.create_action_button( tooltip=N_('Delete'), icon=qtutils.remove_icon()) self.delete_button.setEnabled(False) self.open_button = qtutils.create_action_button( tooltip=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) self.setFocusProxy(self.tree) if style == BOOKMARKS: self.setToolTip(N_('Bookmarked repositories')) elif style == RECENT_REPOS: self.setToolTip(N_('Recent repositories')) self.add_button.hide() self.button_layout = qtutils.hbox(defs.no_margin, defs.spacing, self.open_button, self.add_button, self.delete_button) self.main_layout = qtutils.vbox(defs.no_margin, defs.spacing, self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) QtCore.QTimer.singleShot(0, self.reload_bookmarks)
def settings_fixture(): """Provide Settings that save into a temporary location to all tests""" filename = helper.tmp_path('settings') Settings.config_path = filename yield Settings.read() if os.path.exists(filename): os.remove(filename)
def test_gui_save_restore(settings_fixture): """Test saving and restoring gui state""" settings = settings_fixture settings.gui_state['test-gui'] = {'foo': 'bar'} settings.save() settings = Settings.read() state = settings.gui_state.get('test-gui', {}) assert 'foo' in state assert state['foo'] == 'bar'
def test_rename_bookmark(self): settings = Settings.read() settings.add_bookmark('/tmp/repo', 'a') settings.add_bookmark('/tmp/repo', 'b') settings.add_bookmark('/tmp/repo', 'c') settings.rename_bookmark('/tmp/repo', 'b', 'test') expect = ['a', 'test', 'c'] actual = [i['name'] for i in settings.bookmarks] self.assertEqual(expect, actual)
def test_rename_bookmark(): settings = Settings.read() settings.add_bookmark('/tmp/repo', 'a') settings.add_bookmark('/tmp/repo', 'b') settings.add_bookmark('/tmp/repo', 'c') settings.rename_bookmark('/tmp/repo', 'b', 'test') expect = ['a', 'test', 'c'] actual = [i['name'] for i in settings.bookmarks] assert expect == actual
class JobDescription(object): def __init__(self, name, url_patterns, opener_cls, user_conf, starts, unit_cls=None, login_hook=None, error_handler=None, finish_callback=None, **kw): self.name = name if not JOB_NAME_RE.match(name): raise ConfigurationError( 'Job name can only contain alphabet, number and space.') self.uniq_name = self._get_uniq_name(self.name) self.url_patterns = url_patterns self.opener_cls = opener_cls self.user_conf = user_conf self.starts = starts self.login_hook = login_hook self.error_handler = error_handler self.finish_callback = finish_callback self.settings = Settings(user_conf=user_conf, **kw) self.unit_cls = unit_cls or \ (Bundle if self.settings.job.mode == 'bundle' else Url) def _get_uniq_name(self, name): hash_val = hashlib.md5(name).hexdigest()[8:-8] return base58_encode(int(hash_val, 16)) def add_urlpattern(self, url_pattern): self.url_patterns += url_pattern def update_settings(self, settings): self.settings.update(settings)
def __init__(self, style=BOOKMARKS, parent=None): QtGui.QWidget.__init__(self, parent) self.style = style self.settings = Settings() self.tree = BookmarksTreeWidget(style, self.settings, parent=self) self.add_button = qtutils.create_action_button( tooltip=N_('Add'), icon=qtutils.add_icon()) self.delete_button = qtutils.create_action_button( tooltip=N_('Delete'), icon=qtutils.remove_icon()) self.delete_button.setEnabled(False) self.open_button = qtutils.create_action_button( tooltip=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) self.button_layout = QtGui.QHBoxLayout() self.button_layout.setMargin(defs.no_margin) self.button_layout.setSpacing(defs.spacing) self.button_layout.addWidget(self.open_button) self.button_layout.addWidget(self.add_button) self.button_layout.addWidget(self.delete_button) self.main_layout = QtGui.QVBoxLayout() self.main_layout.setMargin(defs.no_margin) self.main_layout.setSpacing(defs.spacing) self.main_layout.addWidget(self.tree) self.setLayout(self.main_layout) self.corner_widget = QtGui.QWidget(self) self.corner_widget.setLayout(self.button_layout) titlebar = parent.titleBarWidget() titlebar.add_corner_widget(self.corner_widget) self.setFocusProxy(self.tree) if style == BOOKMARKS: self.setToolTip(N_('Bookmarked repositories')) elif style == RECENT_REPOS: self.setToolTip(N_('Recent repositories')) self.add_button.hide() qtutils.connect_button(self.add_button, self.tree.add_bookmark) qtutils.connect_button(self.delete_button, self.tree.delete_bookmark) qtutils.connect_button(self.open_button, self.tree.open_repo) self.connect(self.tree, SIGNAL('itemSelectionChanged()'), self.tree_item_selection_changed) QtCore.QTimer.singleShot(0, self.reload_bookmarks)
def __init__(self, name, url_patterns, opener_cls, user_conf, starts, unit_cls=None, login_hook=None, error_handler=None, **kw): self.name = name if not JOB_NAME_RE.match(name): raise ConfigurationError('Job name can only contain alphabet, number and space.') self.uniq_name = self._get_uniq_name(self.name) self.url_patterns = url_patterns self.opener_cls = opener_cls self.user_conf = user_conf self.starts = starts self.login_hook = login_hook self.error_handler = error_handler self.settings = Settings(user_conf=user_conf, **kw) self.unit_cls = unit_cls or \ (Bundle if self.settings.job.mode == 'bundle' else Url)
def testCounter(self): self.serv = CounterServer(self.dir_, Settings(), rpc_server=self.rpc_server) self.cli1 = CounterClient(self.serv) self.cli2 = CounterClient('localhost:%s'%self.port) try: self.cli1.global_inc('pages', 10) self.cli2.global_inc('pages', 2) self.assertEqual(self.cli1.get_global_inc('pages'), 10) self.assertEqual(self.cli2.get_global_inc('pages'), 2) self.assertEqual(self.serv.inc_counter.get('global', 'pages', 0), 0) self.cli1.sync() self.cli2.sync() self.assertEqual(self.cli1.get_global_inc('pages'), None) self.assertEqual(self.cli2.get_global_inc('pages'), None) self.assertEqual(self.serv.inc_counter.get('global', 'pages'), 12) self.cli1.local_inc(self.addr, 0, 'pages', 100) self.assertEqual(self.cli1.get_local_inc(self.addr, 0, 'pages'), 100) self.cli1.sync() self.assertEqual(self.serv.inc_counter.get('%s#%s'%(self.addr, 0), 'pages'), 100) self.cli1.global_acc('normal', 100) self.cli2.global_acc('normal', 'test') self.assertEqual(self.cli1.get_global_acc('normal'), [100,]) self.assertEqual(self.cli2.get_global_acc('normal'), ['test',]) self.cli1.sync() self.cli2.sync() self.assertEqual(self.cli1.get_global_acc('normal'), None) self.assertEqual(self.cli2.get_global_acc('normal'), None) self.assertEqual(self.serv.acc_counter.get('global', 'normal'), [100, 'test']) self.cli2.local_acc(self.addr, 1, 'normal', 100) self.assertEqual(self.cli2.get_local_acc(self.addr, 1, 'normal'), [100, ]) self.cli2.sync() self.assertEqual(self.serv.acc_counter.get('%s#%s'%(self.addr, 1), 'normal'), [100, ]) finally: self.serv.shutdown()
def testBudgetApply(self): self.serv = BudgetApplyServer(self.dir_, Settings(), rpc_server=self.rpc_server) self.cli1 = BudgetApplyClient(self.serv) self.cli2 = BudgetApplyClient('localhost:%s'%self.port) try: self.serv.set_budgets(90) self.assertEqual(self.cli1.apply(50), 50) self.assertEqual(self.cli2.apply(50), 40) self.cli1.finish(50) self.assertEqual(50, self.serv.finished) self.cli2.finish(50) self.assertEqual(90, self.serv.finished) self.cli1.error(10) self.assertEqual(90, self.serv.applied) self.serv.finished = 0 self.cli2.error(10) self.assertEqual(80, self.serv.applied) finally: self.serv.shutdown()
def testSpeedControl(self): settings = Settings() counter_server = CounterServer(self.dir_, settings) self.serv = SpeedControlServer(self.dir_, settings, rpc_server=self.rpc_server, counter_server=counter_server) self.cli = SpeedControlClient(self.serv, 'localhost', 0) self.assertEqual(self.cli.require(10), (10, 0)) self.serv.set_speed(100) almost = lambda left, right: left[0] == right[0] \ and abs(left[1] - right[1]) < 0.1 self.assertTrue(almost(self.cli.require(100), (100, 0.5))) self.assertTrue(almost(self.cli.require(1), (0, 0.5))) self.serv.set_instance_speed(50) self.serv.calc_spans() self.serv.reset() self.assertTrue(almost(self.cli.require(50), (50, 1.1))) self.assertTrue(almost(self.cli.require(1), (0, 1.1))) self.serv.set_adaptive(True) addr = 'localhost#0' self.serv.counter_server.acc(addr, 'banned_start', 1100) self.serv.counter_server.acc(addr, 'banned_end', 1500) self.serv.counter_server.acc(addr, 'normal_start', 1000) self.serv.counter_server.acc(addr, 'normal_end', 1100) self.serv.counter_server.acc(addr, 'normal_pages', 200) self.serv.counter_server.inc(addr, 'pages', 500) self.serv.counter_server.inc(addr, 'secs', 1000) self.serv.calc_spans() self.serv.reset() self.assertTrue(almost(self.cli.require(24), (24, 0.5))) self.assertTrue(almost(self.cli.require(1), (0, 0.5)))
def restore_state(self, settings=None): if settings is None: settings = Settings() settings.load() state = settings.get_gui_state(self) return bool(state) and self.apply_state(state)
class BookmarksDialog(standard.Dialog): def __init__(self, parent): standard.Dialog.__init__(self, parent=parent) self.settings = Settings() self.settings.load() self.resize(494, 238) self.setWindowTitle(N_('Bookmarks')) if parent is not None: self.setWindowModality(Qt.WindowModal) self.layt = QtGui.QVBoxLayout(self) self.layt.setMargin(defs.margin) self.layt.setSpacing(defs.spacing) self.bookmarks = QtGui.QListWidget(self) self.bookmarks.setAlternatingRowColors(True) self.bookmarks.setSelectionMode(QtGui.QAbstractItemView .ExtendedSelection) self.layt.addWidget(self.bookmarks) self.button_layout = QtGui.QHBoxLayout() self.open_button = qtutils.create_button(text=N_('Open'), icon=qtutils.open_icon()) self.open_button.setEnabled(False) self.button_layout.addWidget(self.open_button) self.add_button = qtutils.create_button(text=N_('Add'), icon=qtutils.add_icon()) self.button_layout.addWidget(self.add_button) self.delete_button = QtGui.QPushButton(self) self.delete_button.setText(N_('Delete')) self.delete_button.setIcon(qtutils.discard_icon()) self.delete_button.setEnabled(False) self.button_layout.addWidget(self.delete_button) self.button_layout.addStretch() self.save_button = QtGui.QPushButton(self) self.save_button.setText(N_('Save')) self.save_button.setIcon(qtutils.save_icon()) self.save_button.setEnabled(False) self.button_layout.addWidget(self.save_button) self.close_button = QtGui.QPushButton(self) self.close_button.setText(N_('Close')) self.button_layout.addWidget(self.close_button) self.layt.addLayout(self.button_layout) self.connect(self.bookmarks, SIGNAL('itemSelectionChanged()'), self.item_selection_changed) qtutils.connect_button(self.open_button, self.open_repo) qtutils.connect_button(self.add_button, self.add) qtutils.connect_button(self.delete_button, self.delete) qtutils.connect_button(self.save_button, self.save) qtutils.connect_button(self.close_button, self.accept) self.update_bookmarks() def update_bookmarks(self): self.bookmarks.clear() self.bookmarks.addItems(self.settings.bookmarks) def selection(self): return qtutils.selection_list(self.bookmarks, self.settings.bookmarks) def item_selection_changed(self): has_selection = bool(self.selection()) self.open_button.setEnabled(has_selection) self.delete_button.setEnabled(has_selection) def save(self): """Saves the bookmarks settings and exits""" self.settings.save() self.save_button.setEnabled(False) def add(self): path, ok = qtutils.prompt(N_('Path to git repository'), title=N_('Enter Git Repository'), text=core.getcwd()) if not ok: return self.settings.bookmarks.append(path) self.update_bookmarks() self.save() def open_repo(self): """Opens a new git-cola session on a bookmark""" for repo in self.selection(): core.fork([sys.executable, sys.argv[0], '--repo', repo]) def delete(self): """Removes a bookmark from the bookmarks list""" selection = self.selection() if not selection: return for repo in selection: self.settings.remove_bookmark(repo) self.update_bookmarks() self.save_button.setEnabled(True)
def save_settings(self): settings = Settings() settings.load() settings.add_recent(core.getcwd()) return self.save_state(settings=settings)
def setUp(self): Settings.config_path = self._file = helper.tmp_path('settings') self.settings = Settings.read()
def testContext(self): settings = Settings(user_conf=self.simulate_user_conf, description='This is a just unittest') self.assertEqual(settings.name, 'cola-unittest') self.assertEqual(settings.description, 'This is a just unittest') self.assertEqual(settings.job.db, 'cola')
def __init__(self, parent=None, settings=None): standard.Dialog.__init__(self, parent, save_settings=True) self.setWindowTitle(N_('git-cola')) self.repodir = None self.runtask = qtutils.RunTask(parent=self) self.progress = standard.ProgressDialog('', '', self) self.new_button = qtutils.create_button(text=N_('New...'), icon=icons.new()) self.open_button = qtutils.create_button(text=N_('Open...'), icon=icons.repo()) self.clone_button = qtutils.create_button(text=N_('Clone...'), icon=icons.cola()) self.close_button = qtutils.close_button() if settings is None: settings = Settings() settings.load() self.settings = settings self.bookmarks_label = QtGui.QLabel(N_('Select Repository...')) self.bookmarks_label.setAlignment(Qt.AlignCenter) self.bookmarks_model = QtGui.QStandardItemModel() item = QtGui.QStandardItem(N_('Select manually...')) item.setEditable(False) self.bookmarks_model.appendRow(item) added = set() all_repos = settings.bookmarks + settings.recent for repo in all_repos: if repo in added: continue added.add(repo) item = QtGui.QStandardItem(repo) item.setEditable(False) self.bookmarks_model.appendRow(item) selection_mode = QtGui.QAbstractItemView.SingleSelection self.bookmarks = QtGui.QListView() self.bookmarks.setSelectionMode(selection_mode) self.bookmarks.setAlternatingRowColors(True) self.bookmarks.setModel(self.bookmarks_model) if not all_repos: self.bookmarks_label.setMinimumHeight(1) self.bookmarks.setMinimumHeight(1) self.bookmarks_label.hide() self.bookmarks.hide() self.button_layout = qtutils.hbox(defs.no_margin, defs.spacing, self.open_button, self.clone_button, self.new_button, qtutils.STRETCH, self.close_button) self.main_layout = qtutils.vbox(defs.margin, defs.spacing, self.bookmarks_label, self.bookmarks, self.button_layout) self.setLayout(self.main_layout) qtutils.connect_button(self.open_button, self.open_repo) qtutils.connect_button(self.clone_button, self.clone_repo) qtutils.connect_button(self.new_button, self.new_repo) qtutils.connect_button(self.close_button, self.reject) self.connect(self.bookmarks, SIGNAL('activated(QModelIndex)'), self.open_bookmark) if not self.restore_state(settings=settings): screen = QtGui.QApplication.instance().desktop() self.setGeometry(screen.width() // 4, screen.height() // 4, screen.width() // 2, screen.height() // 2)
def new_settings(self, **kwargs): settings = Settings(**kwargs) settings.load() return settings
def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.setWindowTitle(N_("git-cola")) self.repodir = None self.task_runner = TaskRunner(self) self.progress = ProgressDialog("", "", self) self.new_button = QtGui.QPushButton(N_("New...")) self.new_button.setIcon(qtutils.new_icon()) self.open_button = QtGui.QPushButton(N_("Open...")) self.open_button.setIcon(qtutils.open_icon()) self.clone_button = QtGui.QPushButton(N_("Clone...")) self.clone_button.setIcon(qtutils.git_icon()) self.close_button = QtGui.QPushButton(N_("Close")) settings = Settings() settings.load() self.bookmarks_label = QtGui.QLabel(N_("Select Repository...")) self.bookmarks_label.setAlignment(Qt.AlignCenter) self.bookmarks_model = QtGui.QStandardItemModel() item = QtGui.QStandardItem(N_("Select manually...")) item.setEditable(False) self.bookmarks_model.appendRow(item) added = set() all_repos = settings.bookmarks + settings.recent for repo in all_repos: if repo in added: continue added.add(repo) item = QtGui.QStandardItem(repo) item.setEditable(False) self.bookmarks_model.appendRow(item) selection_mode = QtGui.QAbstractItemView.SingleSelection self.bookmarks = QtGui.QListView() self.bookmarks.setSelectionMode(selection_mode) self.bookmarks.setAlternatingRowColors(True) self.bookmarks.setModel(self.bookmarks_model) if not all_repos: self.bookmarks_label.setMinimumHeight(1) self.bookmarks.setMinimumHeight(1) self.bookmarks_label.hide() self.bookmarks.hide() self.button_layout = qtutils.hbox( defs.no_margin, defs.spacing, self.open_button, self.clone_button, self.new_button, qtutils.STRETCH, self.close_button, ) self.main_layout = qtutils.vbox( defs.margin, defs.spacing, self.bookmarks_label, self.bookmarks, self.button_layout ) self.setLayout(self.main_layout) qtutils.connect_button(self.open_button, self.open_repo) qtutils.connect_button(self.clone_button, self.clone_repo) qtutils.connect_button(self.new_button, self.new_repo) qtutils.connect_button(self.close_button, self.reject) self.connect(self.bookmarks, SIGNAL("activated(const QModelIndex &)"), self.open_bookmark)
def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.setWindowTitle(N_('git-cola')) self._gitdir = None self._layt = QtGui.QHBoxLayout() self._layt.setMargin(defs.margin) self._layt.setSpacing(defs.spacing) self._new_btn = QtGui.QPushButton(N_('New...')) self._new_btn.setIcon(qtutils.new_icon()) self._open_btn = QtGui.QPushButton(N_('Open...')) self._open_btn.setIcon(qtutils.open_icon()) self._clone_btn = QtGui.QPushButton(N_('Clone...')) self._clone_btn.setIcon(qtutils.git_icon()) self._close_btn = QtGui.QPushButton(N_('Close')) self._layt.addWidget(self._open_btn) self._layt.addWidget(self._clone_btn) self._layt.addWidget(self._new_btn) self._layt.addStretch() self._layt.addWidget(self._close_btn) settings = Settings() settings.load() self._vlayt = QtGui.QVBoxLayout() self._vlayt.setMargin(defs.margin) self._vlayt.setSpacing(defs.margin) self._bookmark_label = QtGui.QLabel(N_('Select Repository...')) self._bookmark_label.setAlignment(Qt.AlignCenter) self._bookmark_model = QtGui.QStandardItemModel() item = QtGui.QStandardItem(N_('Select manually...')) item.setEditable(False) self._bookmark_model.appendRow(item) added = set() all_repos = settings.bookmarks + settings.recent for repo in all_repos: if repo in added: continue added.add(repo) item = QtGui.QStandardItem(repo) item.setEditable(False) self._bookmark_model.appendRow(item) selection_mode = QtGui.QAbstractItemView.SingleSelection self._bookmark_list = QtGui.QListView() self._bookmark_list.setSelectionMode(selection_mode) self._bookmark_list.setAlternatingRowColors(True) self._bookmark_list.setModel(self._bookmark_model) if not all_repos: self._bookmark_label.setMinimumHeight(1) self._bookmark_list.setMinimumHeight(1) self._bookmark_label.hide() self._bookmark_list.hide() self._vlayt.addWidget(self._bookmark_label) self._vlayt.addWidget(self._bookmark_list) self._vlayt.addLayout(self._layt) self.setLayout(self._vlayt) qtutils.connect_button(self._open_btn, self._open) qtutils.connect_button(self._clone_btn, self._clone) qtutils.connect_button(self._new_btn, self._new) qtutils.connect_button(self._close_btn, self.reject) self.connect(self._bookmark_list, SIGNAL('activated(const QModelIndex &)'), self._open_bookmark)
def save_state(self, settings=None): if settings is None: settings = Settings() settings.load() if gitcfg.current().get('cola.savewindowsettings', True): settings.save_gui_state(self)
def closeEvent(self, event): settings = Settings() settings.load() settings.add_recent(core.getcwd()) self.save_state(settings=settings) self.QtClass.closeEvent(self, event)