Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
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
Exemple #4
0
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)
Exemple #5
0
    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()
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
    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')
Exemple #10
0
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)
Exemple #11
0
 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))
Exemple #12
0
 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))
Exemple #13
0
    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)
Exemple #14
0
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
Exemple #15
0
 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)
Exemple #16
0
 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)
Exemple #17
0
    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()
Exemple #18
0
    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)
Exemple #19
0
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)
Exemple #20
0
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'
Exemple #21
0
    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)
Exemple #22
0
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
Exemple #23
0
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)
Exemple #24
0
    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)
Exemple #25
0
 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)
Exemple #26
0
 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()
Exemple #27
0
 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()
Exemple #28
0
    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)))
Exemple #29
0
 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)
Exemple #30
0
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)
Exemple #31
0
 def save_settings(self):
     settings = Settings()
     settings.load()
     settings.add_recent(core.getcwd())
     return self.save_state(settings=settings)
Exemple #32
0
 def setUp(self):
     Settings.config_path = self._file = helper.tmp_path('settings')
     self.settings = Settings.read()
Exemple #33
0
 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')
Exemple #34
0
    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)
Exemple #35
0
 def new_settings(self, **kwargs):
     settings = Settings(**kwargs)
     settings.load()
     return settings
Exemple #36
0
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)
Exemple #37
0
    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)
Exemple #38
0
    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)
Exemple #39
0
    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)
Exemple #40
0
    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)
Exemple #41
0
 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
Exemple #43
0
 def closeEvent(self, event):
     settings = Settings()
     settings.load()
     settings.add_recent(core.getcwd())
     self.save_state(settings=settings)
     self.QtClass.closeEvent(self, event)
Exemple #44
0
 def save_settings(self):
     settings = Settings()
     settings.load()
     settings.add_recent(core.getcwd())
     return self.save_state(settings=settings)