Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
poezio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
178
Issues
178
List
Boards
Labels
Service Desk
Milestones
Merge Requests
8
Merge Requests
8
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
poezio
poezio
Commits
176b4ee9
Commit
176b4ee9
authored
Aug 17, 2018
by
Link Mauve
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
windows.list: Type everything in this module.
parent
a208f895
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
32 deletions
+34
-32
poezio/windows/list.py
poezio/windows/list.py
+34
-32
No files found.
poezio/windows/list.py
View file @
176b4ee9
...
...
@@ -3,13 +3,15 @@ Windows relevant for the listing tabs, not much else
"""
import
logging
log
=
logging
.
getLogger
(
__name__
)
import
curses
from
typing
import
Dict
,
List
,
Optional
from
poezio.windows.base_wins
import
Win
from
poezio.theming
import
to_curses_attr
,
get_theme
log
=
logging
.
getLogger
(
__name__
)
class
ListWin
(
Win
):
"""
...
...
@@ -17,23 +19,23 @@ class ListWin(Win):
scrolled up and down, with one selected line at a time
"""
def
__init__
(
self
,
columns
,
with_headers
=
True
)
:
def
__init__
(
self
,
columns
:
Dict
[
str
,
int
],
with_headers
:
bool
=
True
)
->
None
:
Win
.
__init__
(
self
)
self
.
_columns
=
columns
#
a dict {'column_name': tuple_index}
self
.
_columns_sizes
=
{}
#
a dict {'column_name': size}
self
.
_columns
=
columns
#
type: Dict[str, int]
self
.
_columns_sizes
=
{}
#
type: Dict[str, int]
self
.
sorted_by
=
(
None
,
None
)
# for example: ('name', '↑')
self
.
lines
=
[]
#
a list of dicts
self
.
lines
=
[]
#
type: List[str]
self
.
_selected_row
=
0
self
.
_starting_pos
=
0
# The column number from which we start the refresh
@
property
def
pos
(
self
):
def
pos
(
self
)
->
int
:
if
len
(
self
.
lines
)
>
self
.
height
:
return
len
(
self
.
lines
)
else
:
return
0
def
empty
(
self
):
def
empty
(
self
)
->
None
:
"""
emtpy the list and reset some important values as well
"""
...
...
@@ -41,13 +43,13 @@ class ListWin(Win):
self
.
_selected_row
=
0
self
.
_starting_pos
=
0
def
resize_columns
(
self
,
dic
)
:
def
resize_columns
(
self
,
dic
:
Dict
[
str
,
int
])
->
None
:
"""
Resize the width of the columns
"""
self
.
_columns_sizes
=
dic
def
sort_by_column
(
self
,
col_name
,
asc
=
True
)
:
def
sort_by_column
(
self
,
col_name
:
str
,
asc
:
bool
=
True
)
->
None
:
"""
Sort the list by the given column, ascendant or descendant
"""
...
...
@@ -61,7 +63,7 @@ class ListWin(Win):
self
.
refresh
()
curses
.
doupdate
()
def
add_lines
(
self
,
lines
)
:
def
add_lines
(
self
,
lines
:
List
[
str
])
->
None
:
"""
Append some lines at the end of the list
"""
...
...
@@ -69,7 +71,7 @@ class ListWin(Win):
return
self
.
lines
.
extend
(
lines
)
def
set_lines
(
self
,
lines
)
:
def
set_lines
(
self
,
lines
:
List
[
str
])
->
None
:
"""
Set the lines to another list
"""
...
...
@@ -77,7 +79,7 @@ class ListWin(Win):
return
self
.
lines
=
lines
def
get_selected_row
(
self
):
def
get_selected_row
(
self
)
->
Optional
[
str
]
:
"""
Return the tuple representing the selected row
"""
...
...
@@ -85,7 +87,7 @@ class ListWin(Win):
return
self
.
lines
[
self
.
_selected_row
]
return
None
def
refresh
(
self
):
def
refresh
(
self
)
->
None
:
log
.
debug
(
'Refresh: %s'
,
self
.
__class__
.
__name__
)
self
.
_win
.
erase
()
lines
=
self
.
lines
[
self
.
_starting_pos
:
self
.
_starting_pos
+
self
.
height
]
...
...
@@ -109,12 +111,12 @@ class ListWin(Win):
x
+=
size
self
.
_refresh
()
def
move_cursor_down
(
self
):
def
move_cursor_down
(
self
)
->
bool
:
"""
Move the cursor Down
"""
if
not
self
.
lines
:
return
return
False
if
self
.
_selected_row
<
len
(
self
.
lines
)
-
1
:
self
.
_selected_row
+=
1
while
self
.
_selected_row
>=
self
.
_starting_pos
+
self
.
height
:
...
...
@@ -123,21 +125,21 @@ class ListWin(Win):
self
.
_starting_pos
=
0
return
True
def
move_cursor_up
(
self
):
def
move_cursor_up
(
self
)
->
bool
:
"""
Move the cursor Up
"""
if
not
self
.
lines
:
return
return
False
if
self
.
_selected_row
>
0
:
self
.
_selected_row
-=
1
while
self
.
_selected_row
<
self
.
_starting_pos
:
self
.
_starting_pos
-=
self
.
height
//
2
return
True
def
scroll_down
(
self
):
def
scroll_down
(
self
)
->
bool
:
if
not
self
.
lines
:
return
return
False
self
.
_selected_row
+=
self
.
height
if
self
.
_selected_row
>
len
(
self
.
lines
)
-
1
:
self
.
_selected_row
=
len
(
self
.
lines
)
-
1
...
...
@@ -147,9 +149,9 @@ class ListWin(Win):
self
.
_starting_pos
=
0
return
True
def
scroll_up
(
self
):
def
scroll_up
(
self
)
->
bool
:
if
not
self
.
lines
:
return
return
False
self
.
_selected_row
-=
self
.
height
+
1
if
self
.
_selected_row
<
0
:
self
.
_selected_row
=
0
...
...
@@ -163,21 +165,21 @@ class ColumnHeaderWin(Win):
A class displaying the column's names
"""
def
__init__
(
self
,
columns
)
:
def
__init__
(
self
,
columns
:
List
[
str
])
->
None
:
Win
.
__init__
(
self
)
self
.
_columns
=
columns
self
.
_columns_sizes
=
{}
self
.
_columns_sizes
=
{}
# type: Dict[str, int]
self
.
_column_sel
=
''
self
.
_column_order
=
''
self
.
_column_order_asc
=
False
def
resize_columns
(
self
,
dic
):
def
resize_columns
(
self
,
dic
)
->
None
:
self
.
_columns_sizes
=
dic
def
get_columns
(
self
):
def
get_columns
(
self
)
->
List
[
str
]
:
return
self
.
_columns
def
refresh
(
self
):
def
refresh
(
self
)
->
None
:
log
.
debug
(
'Refresh: %s'
,
self
.
__class__
.
__name__
)
self
.
_win
.
erase
()
x
=
0
...
...
@@ -201,23 +203,23 @@ class ColumnHeaderWin(Win):
x
+=
size
self
.
_refresh
()
def
sel_column
(
self
,
dic
):
def
sel_column
(
self
,
dic
)
->
None
:
self
.
_column_sel
=
dic
def
get_sel_column
(
self
):
return
self
.
_column_sel
def
set_order
(
self
,
order
):
def
set_order
(
self
,
order
)
->
None
:
self
.
_column_order
=
self
.
_column_sel
self
.
_column_order_asc
=
order
def
get_order
(
self
):
def
get_order
(
self
)
->
bool
:
if
self
.
_column_sel
==
self
.
_column_order
:
return
self
.
_column_order_asc
else
:
return
False
def
sel_column_left
(
self
):
def
sel_column_left
(
self
)
->
None
:
if
self
.
_column_sel
in
self
.
_columns
:
index
=
self
.
_columns
.
index
(
self
.
_column_sel
)
if
index
>
1
:
...
...
@@ -229,7 +231,7 @@ class ColumnHeaderWin(Win):
self
.
_column_sel
=
self
.
_columns
[
index
]
self
.
refresh
()
def
sel_column_right
(
self
):
def
sel_column_right
(
self
)
->
None
:
if
self
.
_column_sel
in
self
.
_columns
:
index
=
self
.
_columns
.
index
(
self
.
_column_sel
)
if
index
<
len
(
self
.
_columns
)
-
2
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment