Made additional formatting for input controls optional and on by default for popups so it doesn't show up in preferences but still works when setting torrent options

This commit is contained in:
Asmageddon 2012-03-12 20:22:29 +01:00
parent c2b4ccdc77
commit a24c679510
1 changed files with 35 additions and 17 deletions

View File

@ -83,8 +83,9 @@ class InputField:
return not self.depend.checked
class CheckedInput(InputField):
def __init__(self, parent, message, name, checked=False):
def __init__(self, parent, message, name, checked=False, additional_formatting=False):
self.parent = parent
self.additional_formatting = additional_formatting
self.chkd_inact = "[X] %s"%message
self.unchkd_inact = "[ ] %s"%message
self.chkd_act = "[{!black,white,bold!}X{!white,black!}] %s"%message
@ -117,8 +118,9 @@ class CheckedInput(InputField):
self.checked = c
class CheckedPlusInput(InputField):
def __init__(self, parent, message, name, child,checked=False):
def __init__(self, parent, message, name, child, checked=False, additional_formatting=False):
self.parent = parent
self.additional_formatting = additional_formatting
self.chkd_inact = "[X] %s"%message
self.unchkd_inact = "[ ] %s"%message
self.chkd_act = "[{!black,white,bold!}X{!white,black!}] %s"%message
@ -183,11 +185,13 @@ class CheckedPlusInput(InputField):
class IntSpinInput(InputField):
def __init__(self, parent, message, name, move_func, value, min_val=None, max_val=None):
def __init__(self, parent, message, name, move_func, value, min_val=None, max_val=None, additional_formatting=False):
self.parent = parent
self.message = message
self.name = name
self.additional_formatting = additional_formatting
self.default_str = str(value)
self.set_value( value)
self.default_value = self.value
@ -238,7 +242,7 @@ class IntSpinInput(InputField):
self.parent.add_string(row,"%s {!input!}[ ]"%self.message,screen,col,False,True)
elif active:
self.parent.add_string(row,"%s {!input!}[ {!black,white,bold!}%s{!input!} ]"%(self.message,self.valstr),screen,col,False,True)
elif self.valstr == self.default_str:
elif self.additional_formatting and self.valstr == self.default_str:
self.parent.add_string(row,"%s {!input!}[ {!magenta,black!}%s{!input!} ]"%(self.message,self.valstr),screen,col,False,True)
else:
self.parent.add_string(row,"%s {!input!}[ %s ]"%(self.message,self.valstr),screen,col,False,True)
@ -345,13 +349,15 @@ class IntSpinInput(InputField):
#TODO: This vvvvv
class FloatSpinInput(InputField):
def __init__(self, parent, message, name, move_func, value, inc_amt, precision, min_val=None, max_val=None):
def __init__(self, parent, message, name, move_func, value, inc_amt, precision, min_val=None, max_val=None, additional_formatting = False):
self.parent = parent
self.message = message
self.name = name
self.precision = precision
self.inc_amt = inc_amt
self.additional_formatting = additional_formatting
self.fmt = "%%.%df"%precision
self.default_str = str(value)
@ -406,7 +412,7 @@ class FloatSpinInput(InputField):
self.parent.add_string(row,"%s {!input!}[ ]"%self.message,screen,col,False,True)
elif active:
self.parent.add_string(row,"%s {!input!}[ {!black,white,bold!}%s{!white,black!} ]"%(self.message,self.valstr),screen,col,False,True)
elif self.valstr == self.default_str:
elif self.additional_formatting and self.valstr == self.default_str:
self.parent.add_string(row,"%s {!input!}[ {!magenta,black!}%s{!input!} ]"%(self.message,self.valstr),screen,col,False,True)
else:
self.parent.add_string(row,"%s {!input!}[ %s ]"%(self.message,self.valstr),screen,col,False,True)
@ -531,9 +537,10 @@ class FloatSpinInput(InputField):
self.cursor = len(self.valstr)
class SelectInput(InputField):
def __init__(self, parent, message, name, opts, vals, selidx):
def __init__(self, parent, message, name, opts, vals, selidx, additional_formatting = False):
self.parent = parent
self.message = message
self.additional_formatting = additional_formatting
self.name = name
self.opts = opts
self.vals = vals
@ -552,10 +559,12 @@ class SelectInput(InputField):
if selected and i == self.selidx:
self.parent.add_string(row,"{!black,white,bold!}[%s]"%opt,screen,off,False,True)
elif i == self.selidx:
if i == self.default_option:
if self.additional_formatting and i == self.default_option:
self.parent.add_string(row,"[{!magenta,black!}%s{!white,black!}]"%opt,screen,off,False,True)
else:
elif self.additional_formatting:
self.parent.add_string(row,"[{!white,blue!}%s{!white,black!}]"%opt,screen,off,False,True)
else:
self.parent.add_string(row,"[{!white,black!}%s{!white,black!}]"%opt,screen,off,False,True)
else:
self.parent.add_string(row,"[%s]"%opt,screen,off,False,True)
off += len(opt)+3
@ -581,11 +590,13 @@ class SelectInput(InputField):
raise Exception("Invalid value for SelectInput")
class TextInput(InputField):
def __init__(self, parent, move_func, width, message, name, value, docmp):
def __init__(self, parent, move_func, width, message, name, value, docmp, additional_formatting=False):
self.parent = parent
self.move_func = move_func
self.width = width
self.additional_formatting = additional_formatting
self.message = message
self.name = name
self.value = value
@ -621,7 +632,7 @@ class TextInput(InputField):
else:
vstr = self.value.ljust(width-2)
if len(self.value) != 0 and self.value == self.default_value:
if self.additional_formatting and len(self.value) != 0 and self.value == self.default_value:
self.parent.add_string(row,"{!magenta,white!}%s"%vstr,screen,col,False,False)
else:
self.parent.add_string(row,"{!black,white,bold!}%s"%vstr,screen,col,False,False)
@ -757,12 +768,14 @@ class TextInput(InputField):
class InputPopup(Popup):
def __init__(self,parent_mode,title,width_req=-1,height_req=-1,close_cb=None):
def __init__(self,parent_mode,title,width_req=-1,height_req=-1,close_cb=None, additional_formatting=True):
Popup.__init__(self,parent_mode,title,width_req,height_req,close_cb)
self.inputs = []
self.spaces = []
self.current_input = 0
self.additional_formatting = additional_formatting
#We need to replicate some things in order to wrap our inputs
self.encoding = parent_mode.encoding
@ -780,7 +793,8 @@ class InputPopup(Popup):
:param complete: should completion be run when tab is hit and this field is active
"""
self.inputs.append(TextInput(self, self.move, self.width, message,
name, value, complete))
name, value, complete,
additional_formatting = self.additional_formatting))
def getmaxyx(self):
return self.screen.getmaxyx()
@ -797,19 +811,23 @@ class InputPopup(Popup):
self.spaces.append((len(self.inputs)-1,num))
def add_select_input(self, message, name, opts, vals, default_index=0):
self.inputs.append(SelectInput(self, message, name, opts, vals, default_index))
self.inputs.append(SelectInput(self, message, name, opts, vals, default_index,
additional_formatting = self.additional_formatting))
def add_checked_input(self, message, name, checked=False):
self.inputs.append(CheckedInput(self,message,name,checked))
self.inputs.append(CheckedInput(self,message,name,checked,
additional_formatting = self.additional_formatting))
#def add_checked_plus_input(self, message, name, child)
def add_float_spin_input(self, message, name, value=0.0, inc_amt = 1.0, precision = 1, min_val = None, max_val = None):
i = FloatSpinInput(self, message, name, self.move, value, inc_amt, precision, min_val, max_val)
i = FloatSpinInput(self, message, name, self.move, value, inc_amt, precision, min_val, max_val,
additional_formatting = self.additional_formatting)
self.inputs.append(i)
def add_int_spin_input(self, message, name, value = 0, min_val = None, max_val = None):
i = IntSpinInput(self, message, name, self.move, value, min_val, max_val)
i = IntSpinInput(self, message, name, self.move, value, min_val, max_val,
additional_formatting = self.additional_formatting)
self.inputs.append(i)
def _refresh_lines(self):