import urwid
import urwid.raw_display
from urwid.raw_display import Screen

import string,os

dumy=0

finishedlist = ["Column not-selected"]
queuedlist = ["Column Selectable" ]*10    

class UnselectableListBox(urwid.ListBox):
	_selectable = False

class SelText(urwid.Text):
    """
    A selectable text widget. See urwid.Text.
    """

    def selectable(self):
        """
        Make widget selectable.
        """
        return True

    def keypress(self, size, key):
        """
        Don't handle any keys.
        """
        return key
    


class NotSelText(urwid.Text):
    """
    A selectable text widget. See urwid.Text.
    """

    def selectable(self):
        """
        Make widget selectable.
        """
        return False



class CUPSconsole:
    """ CUPS console """
    palette = [
	    ('body',         'black',      'light gray', 'standout'),
	    ('header',       'white',      'dark red',   'bold'),
	    ('button normal','light gray', 'dark blue', 'standout'),
	    ('button select','white',      'dark green'),
	    ('button disabled','dark gray','dark blue'),
	    ('edit',         'light gray', 'dark blue'),
	    ('bigtext',      'white',      'black'),
	    ('chars',        'light gray', 'black'),
	    ('title',         'white',      'dark cyan'),
	    ]

    def __init__(self):
        
	    HEADER =  urwid.Pile([
		    urwid.AttrWrap(urwid.Text(""), 'header'),
		    urwid.AttrWrap(urwid.Text("HPLaser Printer Queue", 'center'), 'header'),
		    urwid.AttrWrap(urwid.Text(""), 'header')
		    ])
	    #dummy Listbox
	    
	    self.queue_widget = urwid.AttrWrap(urwid.ListBox(#
		    [urwid.AttrWrap(SelText(""), None, 'edit')]), 'chars')
	    self.queue_widget.set_focus(0)

	    self.finish_widget = urwid.AttrWrap(UnselectableListBox(#
		    [urwid.AttrWrap(NotSelText(" "), None, 'edit')]), 'chars')
	    
	    ControlColumns = urwid.Columns([self.queue_widget, self.finish_widget], dividechars=2, focus_column=0) 
	    ControlColumns = urwid.Padding(ControlColumns, ('fixed left', 2), ('fixed right', 2))
	    
	    self.top = urwid.AttrWrap( urwid.Filler(ControlColumns, 'middle', 10) , 'title')
	    self.top = urwid.Frame( self.top, header=HEADER )

	    self.update_readings()
	    

    def update_readings(self):
	    reverselist = list(reversed(queuedlist))
	    self.queue_widget.body = urwid.AttrWrap(urwid.ListBox(#
		    [urwid.AttrWrap(SelText(dummy), None, 'edit')
		     for dummy in reverselist]),'chars')

    def main(self):
	    self.ui = Screen()
	    self.ui.register_palette( self.palette )
	    self.ui.run_wrapper (self.run )


    def run(self):
	    global dumy
	    size = self.ui.get_cols_rows()
	    while True:
		    self.top.footer = urwid.AttrWrap(urwid.Text("%s"%(dumy)), 'header')
		    canvas = self.top.render(size, focus=1)
		    self.ui.draw_screen(size,canvas)

		    keys = None

		    while not keys:
			    keys = self.ui.get_input()
			    
		    for k in keys:
			    if "window resize" in keys:
				    size = self.ui.get_cols_rows() 
			    if k == "s":
				    return
			    if urwid.is_mouse_event(k):
				    event, button, col, row = k
				    self.ui.mouse_event(dim, event, button, col, row, focus=True)
			    else:
				    self.top.keypress(size, k)
				    dumy = self.queue_widget.get_focus()[1]

			    if k == "enter":
				    pass
			    if k == "k":
				    pass
				    
				    
    

def console():
    do_display()

def do_display():
    printerdisplay = CUPSconsole()
    printerdisplay.main()


if __name__ == "__main__":
	console()

