Exemple #1
0
class CommitFilesView(View):
    def __init__(self, screen, model):
        super(CommitFilesView, self).__init__(model,
                                              screen,
                                              screen.height * 9 // 10,
                                              screen.width * 9 // 10,
                                              on_load=self._reload_list,
                                              hover_focus=True,
                                              can_scroll=False,
                                              title="Diff Files")
        self._model = model

        # Create the form for displaying the list of branches.
        self._list_view = ListBox(Widget.FILL_FRAME,
                                  model.list_files_in_current_commit(),
                                  name="diff_files",
                                  add_scroll_bar=True,
                                  on_select=self.__view_diff)

        self.add_navigation_header()
        self.add_divider()

        self.table_layout = Layout([100], fill_frame=True)
        self.add_layout(self.table_layout)
        self.table_layout.add_widget(self._list_view)

        layout2 = Layout([1, 1, 1, 1])
        self.add_layout(layout2)
        layout2.add_widget(Button("Back", self._open_commits_view), 0)

        self.table_layout.add_widget(Divider())

        self.add_shortcut_panel()
        self.fix()

    def __view_diff(self):
        self.save()
        self._model.current_commit_file = self.data["diff_files"]
        self.__open_commit_file_diff_scene()

    @staticmethod
    def __open_commit_file_diff_scene():
        raise NextScene("View Commit Diff")

    def _reload_list(self):
        self._list_view.options = self._model.list_files_in_current_commit()
        self.nav_header.blur()
        self.table_layout.focus()
Exemple #2
0
class BranchListView(View):
    def __init__(self, screen, model):
        super(BranchListView, self).__init__(model,
                                             screen,
                                             screen.height * 9 // 10,
                                             screen.width * 9 // 10,
                                             on_load=self._reload_list,
                                             hover_focus=True,
                                             can_scroll=False,
                                             title="Branches")
        self._model = model

        # Create the form for displaying the list of branches.
        self._list_view = ListBox(Widget.FILL_FRAME,
                                  model.list_branches(),
                                  name="branches",
                                  add_scroll_bar=True,
                                  on_select=self.__checkout)

        self.add_navigation_header()
        self.add_divider()

        self.table_layout = Layout([100], fill_frame=True)
        self.add_layout(self.table_layout)
        self.table_layout.add_widget(self._list_view)
        self.table_layout.add_widget(Divider())

        self.add_shortcut_panel()
        self.fix()

    def _reload_list(self):
        self.nav_header.blur()
        self.table_layout.focus()
        self._list_view.options = self._model.list_branches()
        self._list_view.value = self._model.get_current_branch()

    def __checkout(self):
        self.save()
        try:
            self._model.checkout_branch(self.data["branches"])
        except GitCommandError as e:
            self._model.last_error = e
            raise NextScene("Error")
        self._model.current_id = self.data["branches"]
        self._reload_list()
Exemple #3
0
class CommitView(View):
    def __init__(self, screen, model):
        super(CommitView, self).__init__(model,
                                         screen,
                                         screen.height * 9 // 10,
                                         screen.width * 9 // 10,
                                         on_load=self._reload_list,
                                         hover_focus=True,
                                         can_scroll=False,
                                         title="Commits")
        self._model = model

        self._list_view = MultiColumnListBox(
            Widget.FILL_FRAME, ["10%", "60%", "15%", "15%"],
            model.list_commits(),
            titles=["Hash", "Message", "Author", "Date"],
            name="commits",
            add_scroll_bar=True,
            on_select=self.__view_diff)

        self.add_navigation_header()
        self.add_divider()

        self.table_layout = Layout([100], fill_frame=True)
        self.add_layout(self.table_layout)
        self.table_layout.add_widget(self._list_view)
        self.table_layout.add_widget(Divider())

        self.add_shortcut_panel()
        self.fix()

    def __view_diff(self):
        self.save()
        self._model.current_commit = self.data["commits"]
        self.__open_commit_details_scene()

    @staticmethod
    def __open_commit_details_scene():
        raise NextScene("Commit Options")

    def _reload_list(self):
        self._list_view.options = self._model.list_commits()
        self.nav_header.blur()
        self.table_layout.focus()
Exemple #4
0
class WorkingCopyView(View):
    def __init__(self, screen, model):
        super(WorkingCopyView, self).__init__(model,
                                              screen,
                                              screen.height * 9 // 10,
                                              screen.width * 9 // 10,
                                              on_load=self._reload_list,
                                              hover_focus=True,
                                              can_scroll=False,
                                              title="Working copy")
        self._model = model
        screen.catch_interrupt = True

        self._list_view = ListBox(Widget.FILL_FRAME,
                                  model.changed_files_for_table(),
                                  name="working_copy",
                                  add_scroll_bar=True,
                                  on_select=self._add_to_index)

        self.add_navigation_header()
        self.add_divider()

        self.table_layout = Layout([100], fill_frame=True)
        self.add_layout(self.table_layout)
        self.table_layout.add_widget(self._list_view)
        self.table_layout.add_widget(Divider())

        self._commit_button = Button("Commit", self._commit)
        self._push_button = Button("Push", self._push)

        layout2 = Layout([8, 1, 1])
        self.add_layout(layout2)

        self.commit_message = Text("Commit message:", "commit_message")
        layout2.add_widget(self.commit_message, 0)
        layout2.add_widget(self._commit_button, 1)
        layout2.add_widget(self._push_button, 2)

        self.add_divider()

        self.add_shortcut_panel()
        self.fix()

    def _add_to_index(self):
        self.save()
        self._model.toggle_add_file_to_index(self.data["working_copy"])
        self._reload_list()

    def _commit(self):
        self._model.commit(self.commit_message.value)
        self.reset()

    def _push(self):
        self._model.push()
        self.reset()

    def reset(self):
        # Do standard reset to clear out form, then populate with new data.
        super(WorkingCopyView, self).reset()
        self._reload_list()

    def _reload_list(self):
        self._list_view.options = self._model.changed_files_for_table()
        self.nav_header.blur()
        self.table_layout.focus()