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()
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()
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()
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()