[Getan-commits] [PATCH] Fix the orientation problem

Wald Commits scm-commit at wald.intevation.org
Tue May 8 13:40:49 CEST 2018


# HG changeset patch
# User Magnus Schieder <mschieder at intevation.de>
# Date 1525778985 -7200
# Node ID 050ffdec60d972aa2d820c13c39d229b5f43eb04
# Parent  74e550aa3b6a03d371e587ca60ab49d1642ad0a5
Fix the orientation problem

  * Highlights the project what is open.

diff -r 74e550aa3b6a -r 050ffdec60d9 CHANGES
--- a/CHANGES	Fri May 04 15:36:50 2018 +0200
+++ b/CHANGES	Tue May 08 13:29:45 2018 +0200
@@ -1,10 +1,22 @@
 2.x 20xx-xx-xx UNRELEASED
 
+ * Better control of the walker.
+   If you move entries and switch back to the projects you get to the project
+   you were in. Before, you always got the first project.
+   Patch by Magnus Schieder
+
+ * You can now see which entries are displayed when you are in the entries
+   list.
+   The project you are in is highlighted in color.
+   The color can be changed in the getanrc with the key "open_project".
+   Patch by Magnus Schieder
+
  * Updated the source code to the latest version of pyhton (python 3) to better
    maintain it in the future.
    Python 2.7 will not be maintained past 2020.
    Therefore, the whole source code of'done' and'done/scripts' is updated to
    python 3.
+   Patch by Magnus Schieder
 
  * Update and clean up the source code to better maintain it in the future.
    optparse to argparse Migration.
diff -r 74e550aa3b6a -r 050ffdec60d9 TODO
--- a/TODO	Fri May 04 15:36:50 2018 +0200
+++ b/TODO	Tue May 08 13:29:45 2018 +0200
@@ -61,12 +61,6 @@
     (The last marked entry stays in its project)
 
 
-20180118 BER There should be an indication which entries are shown
-    when being in the right pane. When you use tab to go to the entries,
-    it cannot be seen anymore in which project I am.
-    This is a larger drawback after moving all entries somewhere,
-    it is unclear which task's entries are shown now.
-
 20170709 BER: Give scripts/getan-eval.py a more specific name and add
   it as a script to be installed.
 
diff -r 74e550aa3b6a -r 050ffdec60d9 doc/old_issues.txt
--- a/doc/old_issues.txt	Fri May 04 15:36:50 2018 +0200
+++ b/doc/old_issues.txt	Tue May 08 13:29:45 2018 +0200
@@ -1,3 +1,9 @@
+20180118 BER There should be an indication which entries are shown
+    when being in the right pane. When you use tab to go to the entries,
+    it cannot be seen anymore in which project I am.
+    This is a larger drawback after moving all entries somewhere,
+    it is unclear which task's entries are shown now.
+
 20180117 Magnus Schieder
 
   20170317 BER: Reproduce and then fix a defect that it is surprising which
diff -r 74e550aa3b6a -r 050ffdec60d9 getan/config.py
--- a/getan/config.py	Fri May 04 15:36:50 2018 +0200
+++ b/getan/config.py	Tue May 08 13:29:45 2018 +0200
@@ -208,6 +208,7 @@
     KEY_QUESTION = "question"
     KEY_RUNNING = "running"
     KEY_PAUSED_RUNNING = "paused_running"
+    KEY_OPEN_PROJECT = "open_project"
 
     DEFAULT_THEME = {
         KEY_HEADER: "white, dark blue",
@@ -224,6 +225,7 @@
         KEY_QUESTION: "white, dark red",
         KEY_RUNNING: "yellow, dark green",
         KEY_PAUSED_RUNNING: "white, dark red",
+        KEY_OPEN_PROJECT: "white, light blue"
     }
 
     def __init__(self, config):
diff -r 74e550aa3b6a -r 050ffdec60d9 getan/nodes.py
--- a/getan/nodes.py	Fri May 04 15:36:50 2018 +0200
+++ b/getan/nodes.py	Tue May 08 13:29:45 2018 +0200
@@ -47,6 +47,12 @@
                 self._w.set_focus_map({None: 'entry'})
                 self._w.set_attr_map({None: 'entry'})
 
+        # Only projects can be open.
+        if self.item.open and not self.has_focus:
+                self._w.set_attr_map({None: 'open_project'})
+        else:
+            self.item.open = False
+
     def select(self):
         self.selected = not self.selected
         logger.debug("Node: update selection of item '%s' selected %s"
diff -r 74e550aa3b6a -r 050ffdec60d9 getan/project.py
--- a/getan/project.py	Fri May 04 15:36:50 2018 +0200
+++ b/getan/project.py	Tue May 08 13:29:45 2018 +0200
@@ -30,6 +30,7 @@
         self.total = total
         self.start = None
         self.stop = None
+        self.open= None
 
     def year(self):
         total = 0
@@ -96,6 +97,7 @@
         self.end = end
         self.desc = desc
         self.workpackage = "-"
+        self.open = None
 
         # we add this attribute for use in jinja2 templates,
         # as filters like sort() or groupby() work only on attributes
diff -r 74e550aa3b6a -r 050ffdec60d9 getan/states.py
--- a/getan/states.py	Fri May 04 15:36:50 2018 +0200
+++ b/getan/states.py	Tue May 08 13:29:45 2018 +0200
@@ -86,6 +86,7 @@
         if keys.get_switch_lists() in input:
             if not self.controller.entries_view.rows:
                 return True
+            self.view.highlight_open_project()
             new_state = DefaultEntryListState(self, self.controller,
                                               self.controller.entries_view)
             self.set_next_state(new_state)
diff -r 74e550aa3b6a -r 050ffdec60d9 getan/view.py
--- a/getan/view.py	Fri May 04 15:36:50 2018 +0200
+++ b/getan/view.py	Tue May 08 13:29:45 2018 +0200
@@ -75,9 +75,12 @@
             self.rows = []
         self.set_node_rows(self.rows)
 
-    def set_node_rows(self, rows):
+    def set_node_rows(self, rows, position=None):
         """ Sets node_class rows in the walker """
         self.walker = ListWalker(self.rows, self)
+        # Set the position of the walker in the project list.
+        if position:
+            self.walker.set_focus(position)
         self.listbox = urwid.ListBox(self.walker)
         self.body = urwid.LineBox(self.listbox, title=self.title)
         self.frame = urwid.Frame(self.body, header=self.header,
@@ -96,6 +99,11 @@
             self.footer = urwid.AttrWrap(urwid.Text(text), attr)
         self.frame.set_footer(self.footer)
 
+    def highlight_open_project(self):
+        item = self.item_in_focus()
+        if item:
+            item.open = True
+
     def row_count(self):
         if not self.rows:
             return 0
@@ -171,7 +179,7 @@
 
     def update_rows(self):
         self.create_node_rows()
-        self.set_node_rows(self.rows)
+        self.set_node_rows(self.rows, position=self.get_focus_pos())
 
     def create_node_rows(self):
         """ Sets self.rows to node_class rows depending on the project_mode """


More information about the Getan-commits mailing list