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 __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 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 refresh(self): self.clear() settings = Settings() 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=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 __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 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 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 new_settings(self, **kwargs): settings = Settings(**kwargs) settings.load() return settings
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 __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 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 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)
def save_settings(self): settings = Settings() settings.load() settings.add_recent(core.getcwd()) return self.save_state(settings=settings)
def closeEvent(self, event): settings = Settings() settings.load() settings.add_recent(core.getcwd()) self.save_state(settings=settings) self.QtClass.closeEvent(self, event)
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(QModelIndex)'), self.open_bookmark)