f4d17450 |
#!/usr/bin/python2
#
# Copyright (C) 2015 vmware inc.
#
# Author: Mahmoud Bassiouny <mbassiouny@vmware.com>
import curses
from actionresult import ActionResult
from action import Action
class Window(Action):
def __init__(self, height, width, maxy, maxx, title, can_go_back, action_panel = None):
self.can_go_back = can_go_back
self.height = height
self.width = width;
self.y = (maxy - height) / 2
self.x = (maxx - width ) / 2
title = ' ' + title + ' '
self.contentwin = curses.newwin(height - 1, width -1)
self.contentwin.bkgd(' ', curses.color_pair(2)) #Default Window color
self.contentwin.erase()
self.contentwin.box()
self.contentwin.addstr(0, (width - 1 - len(title)) / 2 , title)#
if self.can_go_back:
self.contentwin.addstr(height - 3, 5, '<Go Back>')
self.textwin = curses.newwin(height - 5, width - 5)
self.textwin.bkgd(' ', curses.color_pair(2)) #Default Window color
self.shadowwin = curses.newwin(height - 1, width - 1)
self.shadowwin.bkgd(' ', curses.color_pair(0)) #Default shadow color
self.contentpanel = curses.panel.new_panel(self.contentwin)
self.textpanel = curses.panel.new_panel(self.textwin)
self.shadowpanel = curses.panel.new_panel(self.shadowwin)
self.action_panel = action_panel
self.hide_window()
def set_action_panel(self, action_panel):
self.action_panel = action_panel
def do_action(self):
self.show_window()
action_result = self.action_panel.do_action()
if action_result.success:
self.hide_window()
return action_result
else: |
1ec3a643 |
if (action_result.result != None and 'goBack' in action_result.result and action_result.result['goBack']):
self.hide_window()
self.action_panel.hide()
return action_result
else:
#highlight the GoBack and keep going
self.contentwin.addstr(self.height - 3, 5, '<Go Back>', curses.color_pair(3))
self.contentwin.refresh() |
f4d17450 |
while action_result.success == False:
key = self.contentwin.getch()
if key in [curses.KEY_ENTER, ord('\n')]:
#remove highlight from Go Back
self.contentwin.addstr(self.height - 3, 5, '<Go Back>')
self.contentwin.refresh()
self.hide_window()
self.action_panel.hide()
return ActionResult(False, None)
elif key in [ord('\t')]:
#remove highlight from Go Back
self.contentwin.addstr(self.height - 3, 5, '<Go Back>')
self.contentwin.refresh()
# go do the action inside the panel
action_result = self.action_panel.do_action()
if action_result.success:
self.hide_window()
return action_result
else:
#highlight the GoBack and keep going
self.contentwin.addstr(self.height - 3, 5, '<Go Back>', curses.color_pair(3))
self.contentwin.refresh()
def show_window(self):
y = self.y
x = self.x
self.shadowpanel.top()
self.contentpanel.top()
self.textpanel.top()
self.shadowpanel.move(y + 1, x + 1)
self.contentpanel.move(y, x)
self.textpanel.move(y + 2, x + 2)
self.shadowpanel.show()
self.contentpanel.show()
self.textpanel.show()
curses.panel.update_panels()
curses.doupdate()
def hide_window(self):
self.shadowpanel.hide()
self.contentpanel.hide()
self.textpanel.hide()
curses.panel.update_panels()
curses.doupdate()
def addstr(self, y, x, str, mode = 0):
self.textwin.addstr(y, x, str, mode)
def adderror(self, str):
self.textwin.addstr(self.height - 7, 0, str, curses.color_pair(4))
self.textwin.refresh()
def clearerror(self):
spaces = ' ' * (self.width - 6)
self.textwin.addstr(self.height - 7, 0, spaces)
self.textwin.refresh()
def content_window(self):
return self.textwin
|