[view] Add View class for inheritance to aid in code reuse
parent
b8f686aabc
commit
8c46e4b891
@ -0,0 +1,49 @@
|
||||
# Copyright (c) 2014-2017 esotericnonsense (Daniel Edgecumbe)
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://opensource.org/licenses/mit-license.php
|
||||
|
||||
import curses
|
||||
import asyncio
|
||||
|
||||
from macros import MIN_WINDOW_SIZE
|
||||
|
||||
|
||||
class View(object):
|
||||
""" Handles basic operations for the central views. """
|
||||
def __init__(self):
|
||||
self._pad = None
|
||||
self._visible = False
|
||||
|
||||
self._nettotals_history = []
|
||||
|
||||
self._window_size = MIN_WINDOW_SIZE
|
||||
|
||||
def _clear_init_pad(self):
|
||||
if self._pad is not None:
|
||||
self._pad.clear()
|
||||
else:
|
||||
self._pad = curses.newpad(20, 100)
|
||||
|
||||
def _draw_pad_to_screen(self):
|
||||
maxy, maxx = self._window_size
|
||||
if maxy < 8 or maxx < 3:
|
||||
return # Can't do it
|
||||
|
||||
self._pad.refresh(0, 0, 4, 0, min(maxy-3, maxy-2), min(maxx-1, 100))
|
||||
|
||||
async def _draw_if_visible(self):
|
||||
if self._visible:
|
||||
await self._draw()
|
||||
|
||||
async def on_mode_change(self, newmode):
|
||||
if newmode != self._mode_name:
|
||||
self._visible = False
|
||||
return
|
||||
|
||||
self._visible = True
|
||||
await self._draw_if_visible()
|
||||
|
||||
async def on_window_resize(self, y, x):
|
||||
# All of the current views assume an x width of 100.
|
||||
self._window_size = (y, x)
|
||||
await self._draw_if_visible()
|
Loading…
Reference in New Issue