Correct most of the remaining pylint complaints about chirpui (that I'm

going to correct).
This commit is contained in:
Dan Smith 2008-09-04 16:10:46 -07:00
parent e50dd0fd9c
commit 7a1230974e
7 changed files with 258 additions and 282 deletions

View File

@ -21,24 +21,22 @@ import gtk
import gobject
from chirp import platform
import miscwidgets
import cloneprog
from chirpui import miscwidgets, cloneprog
class CloneSettingsDialog(gtk.Dialog):
def make_field(self, title, control):
hbox = gtk.HBox(True, 2)
l = gtk.Label(title)
l.show()
hbox.pack_start(l, 0,0,0)
hbox.pack_start(control, 1,1,0)
lab = gtk.Label(title)
lab.show()
hbox.pack_start(lab, 0, 0, 0)
hbox.pack_start(control, 1, 1, 0)
hbox.show()
# pylint: disable-msg=E1101
self.vbox.pack_start(hbox, 0,0,0)
self.vbox.pack_start(hbox, 0, 0, 0)
def __init__(self, cloneIn=True, filename=None, rtype=None):
def __init__(self, clone_in=True, filename=None, rtype=None):
buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OK, gtk.RESPONSE_OK)
gtk.Dialog.__init__(self, buttons=buttons, title="Clone")
@ -58,7 +56,7 @@ class CloneSettingsDialog(gtk.Dialog):
self.rtype.show()
self.filename = miscwidgets.FilenameBox()
if not cloneIn:
if not clone_in:
self.filename.set_sensitive(False)
if filename:
self.filename.set_filename(filename)
@ -74,8 +72,8 @@ class CloneSettingsDialog(gtk.Dialog):
self.filename.get_filename()
class CloneThread(threading.Thread):
def __status(self, s):
gobject.idle_add(self.__progw.status, s)
def __status(self, status):
gobject.idle_add(self.__progw.status, status)
def __init__(self, radio, fname=None, cb=None, parent=None):
threading.Thread.__init__(self)

View File

@ -41,22 +41,16 @@ class CloneProg(gtk.Window):
self.infolabel = gtk.Label("Cloning")
self.infolabel.show()
vbox.pack_start(self.infolabel, 1,1,1)
vbox.pack_start(self.infolabel, 1, 1, 1)
self.progbar = gtk.ProgressBar()
self.progbar.set_fraction(0.0)
self.progbar.show()
vbox.pack_start(self.progbar, 0,0,0)
vbox.pack_start(self.progbar, 0, 0, 0)
def status(self, s):
self.infolabel.set_text(s.msg)
def status(self, _status):
self.infolabel.set_text(_status.msg)
if s.cur > s.max:
s.cur = s.max
self.progbar.set_fraction(s.cur / float(s.max))
if __name__ == "__main__":
w = CloneProg()
w.show()
gtk.main()
if _status.cur > _status.max:
_status.cur = _status.max
self.progbar.set_fraction(_status.cur / float(_status.max))

View File

@ -18,13 +18,14 @@
import os
import gtk
from chirp import ic9x, ic2820, ic2200, id800, chirp_common
import memedit
from chirp import ic2820, ic2200, id800, chirp_common
from chirpui import memedit
def radio_class_from_file(filename):
size = os.stat(filename).st_size
for cls in [ic2820.IC2820Radio, ic2200.IC2200Radio, id800.ID800v2Radio]:
# pylint: disable-msg=W0212
if cls._memsize == size:
return cls

View File

@ -20,7 +20,7 @@ import gtk
from miscwidgets import make_choice
class TextInputDialog(gtk.Dialog):
def respond_ok(self, entry, data=None):
def respond_ok(self, _):
self.response(gtk.RESPONSE_OK)
def __init__(self, **args):
@ -29,7 +29,7 @@ class TextInputDialog(gtk.Dialog):
gtk.Dialog.__init__(self, buttons=buttons, **args)
self.label = gtk.Label()
self.label.set_size_request(300,100)
self.label.set_size_request(300, 100)
# pylint: disable-msg=E1101
self.vbox.pack_start(self.label, 1, 1, 0)
@ -50,7 +50,7 @@ class ChoiceDialog(gtk.Dialog):
gtk.Dialog.__init__(self, buttons=buttons, **args)
self.label = gtk.Label()
self.label.set_size_request(300,100)
self.label.set_size_request(300, 100)
# pylint: disable-msg=E1101
self.vbox.pack_start(self.label, 1, 1, 0)
self.label.show()
@ -91,25 +91,25 @@ class FieldDialog(gtk.Dialog):
gtk.Dialog.__init__(self, **kwargs)
def response(self, id):
def response(self, _):
print "Blocking response"
return
def add_field(self, label, widget, validator=None):
box = gtk.HBox(True, 2)
l = gtk.Label(label)
l.show()
lab = gtk.Label(label)
lab.show()
widget.set_size_request(150, -1)
widget.show()
box.pack_start(l, 0,0,0)
box.pack_start(widget, 0,0,0)
box.pack_start(lab, 0, 0, 0)
box.pack_start(widget, 0, 0, 0)
box.show()
# pylint: disable-msg=E1101
self.vbox.pack_start(box, 0,0,0)
self.vbox.pack_start(box, 0, 0, 0)
self.__fields[label] = widget
@ -117,6 +117,7 @@ class FieldDialog(gtk.Dialog):
return self.__fields.get(label, None)
if __name__ == "__main__":
# pylint: disable-msg=C0103
d = FieldDialog(buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK))
d.add_field("Foo", gtk.Entry())
d.add_field("Bar", make_choice(["A", "B"]))

View File

@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import gtk
import gobject
gobject.threads_init()
@ -27,9 +25,9 @@ if __name__ == "__main__":
import sys
sys.path.insert(0, "..")
from chirp import platform, chirp_common, id800, ic2820, ic2200, ic9x
import editorset
import clone
from chirp import platform, id800, ic2820, ic2200, ic9x
from chirpui import editorset
from chirpui import clone
RADIOS = {
"ic2820" : ic2820.IC2820Radio,
@ -40,31 +38,32 @@ RADIOS = {
}
RTYPES = {}
for k,v in RADIOS.items():
RTYPES[v] = k
for __key, __val in RADIOS.items():
RTYPES[__val] = __key
class ChirpMain(gtk.Window):
def get_current_editorset(self):
try:
return self.tabs.get_nth_page(self.tabs.get_current_page())
except Exception, e:
page = self.tabs.get_current_page()
if page is not None:
return self.tabs.get_nth_page(page)
else:
return None
def ev_tab_switched(self):
def set_action_sensitive(action, sensitive):
self.menu_ag.get_action(action).set_sensitive(sensitive)
w = self.get_current_editorset()
eset = self.get_current_editorset()
if not w or isinstance(w.radio, ic9x.IC9xRadio):
s = False
if not eset or isinstance(eset.radio, ic9x.IC9xRadio):
sensitive = False
else:
s = True
sensitive = True
for i in ["save", "saveas", "cloneout"]:
set_action_sensitive(i, s)
set_action_sensitive(i, sensitive)
set_action_sensitive("close", bool(w))
set_action_sensitive("close", bool(eset))
def do_open(self, fname=None):
if not fname:
@ -83,37 +82,37 @@ class ChirpMain(gtk.Window):
self.tabs.set_current_page(tab)
def do_open9x(self, rclass):
d = clone.CloneSettingsDialog(cloneIn=False,
filename="(live)",
rtype="ic9x")
r = d.run()
port, _, _ = d.get_values()
d.destroy()
dlg = clone.CloneSettingsDialog(clone_in=False,
filename="(live)",
rtype="ic9x")
res = dlg.run()
port, _, _ = dlg.get_values()
dlg.destroy()
if r != gtk.RESPONSE_OK:
if res != gtk.RESPONSE_OK:
return
s = serial.Serial(port=port,
baudrate=38400,
timeout=0.1)
radio = rclass(s)
ser = serial.Serial(port=port,
baudrate=38400,
timeout=0.1)
radio = rclass(ser)
e = editorset.EditorSet(radio)
e.show()
tab = self.tabs.append_page(e, e.get_tab_label())
eset = editorset.EditorSet(radio)
eset.show()
tab = self.tabs.append_page(eset, eset.get_tab_label())
self.tabs.set_current_page(tab)
def do_save(self):
w = self.get_current_editorset()
w.save()
eset = self.get_current_editorset()
eset.save()
def do_saveas(self):
fname = platform.get_platform().gui_save_file()
if not fname:
return
w = self.get_current_editorset()
w.save(fname)
eset = self.get_current_editorset()
eset.save(fname)
def cb_clonein(self, radio, fn):
radio.pipe.close()
@ -123,47 +122,49 @@ class ChirpMain(gtk.Window):
radio.pipe.close()
def do_clonein(self):
d = clone.CloneSettingsDialog()
r = d.run()
port, rtype, fn = d.get_values()
d.destroy()
dlg = clone.CloneSettingsDialog()
res = dlg.run()
port, rtype, fn = dlg.get_values()
dlg.destroy()
if r != gtk.RESPONSE_OK:
if res != gtk.RESPONSE_OK:
return
rc = RADIOS[rtype]
s = serial.Serial(port=port, baudrate=rc.BAUD_RATE, timeout=0.25)
radio = rc(s)
ser = serial.Serial(port=port, baudrate=rc.BAUD_RATE, timeout=0.25)
radio = rc(ser)
ct = clone.CloneThread(radio, fn, cb=self.cb_clonein, parent=self)
ct.start()
def do_cloneout(self):
w = self.get_current_editorset()
radio = w.radio
eset = self.get_current_editorset()
radio = eset.radio
d = clone.CloneSettingsDialog(False,
w.filename,
RTYPES[radio.__class__])
r = d.run()
port, rtype, fn = d.get_values()
d.destroy()
dlg = clone.CloneSettingsDialog(False,
eset.filename,
RTYPES[radio.__class__])
res = dlg.run()
port, rtype, _ = dlg.get_values()
dlg.destroy()
if r != gtk.RESPONSE_OK:
if res != gtk.RESPONSE_OK:
return
rc = RADIOS[rtype]
s = serial.Serial(port=port, baudrate=rc.BAUD_RATE, timeout=0.25)
radio.set_pipe(s)
ser = serial.Serial(port=port, baudrate=rc.BAUD_RATE, timeout=0.25)
radio.set_pipe(ser)
ct = clone.CloneThread(radio, cb=self.cb_cloneout, parent=self)
ct.start()
def do_close(self):
w = self.get_current_editorset()
if w.radio.pipe:
w.radio.pipe.close()
self.tabs.remove_page(self.tabs.get_current_page())
eset = self.get_current_editorset()
if eset.radio.pipe:
eset.radio.pipe.close()
page = self.tabs.get_current_page()
if page is not None:
self.tabs.remove_page(page)
def mh(self, _action):
action = _action.get_name()
@ -246,16 +247,18 @@ class ChirpMain(gtk.Window):
vbox = gtk.VBox(False, 2)
self.menu_ag = None
mbar = self.make_menubar()
mbar.show()
vbox.pack_start(mbar, 0,0,0)
vbox.pack_start(mbar, 0, 0, 0)
self.tabs = None
tabs = self.make_tabs()
tabs.connect("switch-page", lambda n,_,p: self.ev_tab_switched())
tabs.connect("switch-page", lambda n, _, p: self.ev_tab_switched())
tabs.show()
self.ev_tab_switched()
vbox.pack_start(tabs, 1,1,1)
vbox.pack_start(tabs, 1, 1, 1)
vbox.show()
@ -264,11 +267,5 @@ class ChirpMain(gtk.Window):
self.set_default_size(640, 480)
self.set_title("CHIRP")
self.connect("delete_event", lambda w,e: gtk.main_quit())
self.connect("delete_event", lambda w, e: gtk.main_quit())
self.connect("destroy", lambda w: gtk.main_quit())
if __name__ == "__main__":
w = ChirpMain()
w.show()
gtk.main()

View File

@ -28,13 +28,13 @@ from gobject import TYPE_INT, \
TYPE_BOOLEAN
import gobject
import common
from chirpui import common
from chirp import chirp_common, errors
def handle_toggle(rend, path, store, col):
def handle_toggle(_, path, store, col):
store[path][col] = not store[path][col]
def handle_ed(rend, path, new, store, col):
def handle_ed(_, path, new, store, col):
iter = store.get_iter(path)
old, = store.get(iter, col)
if old != new:
@ -96,10 +96,10 @@ class MemoryEditor(common.Editor):
"Tone Mode" : ["", "Tone", "TSQL", "DTCS"],
}
def ed_name(self, rend, path, new, col):
def ed_name(self, _, __, new, ___):
return new[:self.name_length]
def ed_freq(self, rend, path, new, col):
def ed_freq(self, _, path, new, __):
def set_offset(path, offset):
if offset > 0:
dup = "+"
@ -118,7 +118,7 @@ class MemoryEditor(common.Editor):
try:
new = float(new)
except Exception, e:
except ValueError, e:
print e
new = None
@ -134,7 +134,7 @@ class MemoryEditor(common.Editor):
return new
def ed_loc(self, rend, path, new, col):
def ed_loc(self, _, path, new, __):
iter = self.store.get_iter(path)
curloc, = self.store.get(iter, self.col("Loc"))
@ -179,9 +179,9 @@ class MemoryEditor(common.Editor):
mem = self._get_memory(iter)
self.radio.set_memory(mem)
except Exception, e:
d = ValueErrorDialog(e)
d.run()
d.destroy()
dlg = ValueErrorDialog(e)
dlg.run()
dlg.destroy()
if self.need_refresh:
self.prefill()
@ -205,12 +205,12 @@ class MemoryEditor(common.Editor):
return val
def render(self, col, rend, model, iter, colnum):
def render(self, _, rend, model, iter, colnum):
vals = model.get(iter, *tuple(range(0, len(self.cols))))
val = vals[colnum]
def _enabled(s):
rend.set_property("sensitive", s)
def _enabled(sensitive):
rend.set_property("sensitive", sensitive)
def d_unless_tmode(tmode):
_enabled(vals[self.col("Tone Mode")] == tmode)
@ -245,10 +245,9 @@ class MemoryEditor(common.Editor):
if action in ["insert_next", "insert_prev"]:
line = []
for k,v in self.defaults.items():
line.append(self.col(k))
line.append(v)
for key, val in self.defaults.items():
line.append(self.col(key))
line.append(val)
if action == "insert_next":
newiter = store.insert_after(iter)
@ -268,7 +267,7 @@ class MemoryEditor(common.Editor):
store.remove(iter)
self.radio.erase_memory(curpos)
def make_context_menu(self, loc, can_prev, can_next):
def make_context_menu(self, can_prev, can_next):
menu_xml = """
<ui>
<popup name="Menu">
@ -309,7 +308,6 @@ class MemoryEditor(common.Editor):
store, iter = self.view.get_selection().get_selected()
curpos, = store.get(iter, self.col("Loc"))
next_loc = curpos + 1
can_prev = True
can_next = True
@ -327,7 +325,7 @@ class MemoryEditor(common.Editor):
else:
can_prev = False
menu = self.make_context_menu(curpos, can_prev, can_next)
menu = self.make_context_menu(can_prev, can_next)
menu.popup(None, None, None, event.button, event.time)
def make_editor(self):
@ -342,30 +340,30 @@ class MemoryEditor(common.Editor):
sw.add(self.view)
i = 0
for c, t, r in self.cols:
rend = r()
if t == TYPE_BOOLEAN:
for _cap, _type, _rend in self.cols:
rend = _rend()
if _type == TYPE_BOOLEAN:
rend.set_property("activatable", True)
rend.connect("toggled", handle_toggle, self.store, i)
col = gtk.TreeViewColumn(c, rend, active=i)
elif r == gtk.CellRendererCombo:
if isinstance(self.choices[c], gtk.ListStore):
choices = self.choices[c]
col = gtk.TreeViewColumn(_cap, rend, active=i)
elif _rend == gtk.CellRendererCombo:
if isinstance(self.choices[_cap], gtk.ListStore):
choices = self.choices[_cap]
else:
choices = gtk.ListStore(TYPE_STRING, TYPE_STRING)
for choice in self.choices[c]:
for choice in self.choices[_cap]:
choices.append([choice, self._render(i, choice)])
rend.set_property("model", choices)
rend.set_property("text-column", 1)
rend.set_property("editable", True)
rend.set_property("has-entry", False)
rend.connect("edited", self.edited, c)
col = gtk.TreeViewColumn(c, rend, text=i)
rend.connect("edited", self.edited, _cap)
col = gtk.TreeViewColumn(_cap, rend, text=i)
col.set_cell_data_func(rend, self.render, i)
else:
rend.set_property("editable", True)
rend.connect("edited", self.edited, c)
col = gtk.TreeViewColumn(c, rend, text=i)
rend.connect("edited", self.edited, _cap)
col = gtk.TreeViewColumn(_cap, rend, text=i)
col.set_cell_data_func(rend, self.render, i)
col.set_sort_column_id(i)
@ -401,7 +399,7 @@ class MemoryEditor(common.Editor):
hi = int(self.hi_limit_adj.get_value())
import time
t = time.time()
start = time.time()
for i in range(lo, hi+1):
try:
@ -414,7 +412,7 @@ class MemoryEditor(common.Editor):
#mems = self.radio.get_memories(lo, hi)
print "Loaded %i memories in %s sec" % (hi - lo,
time.time() - t)
time.time() - start)
self.fill_thread = None
@ -493,26 +491,26 @@ class MemoryEditor(common.Editor):
lab = gtk.Label("Memory range:")
lab.show()
hbox.pack_start(lab, 0,0,0)
hbox.pack_start(lab, 0, 0, 0)
self.lo_limit_adj = gtk.Adjustment(0, 0, 999, 1, 10)
lo = gtk.SpinButton(self.lo_limit_adj)
lo.show()
hbox.pack_start(lo, 0,0,0)
hbox.pack_start(lo, 0, 0, 0)
lab = gtk.Label(" - ")
lab.show()
hbox.pack_start(lab, 0,0,0)
hbox.pack_start(lab, 0, 0, 0)
self.hi_limit_adj = gtk.Adjustment(25, 1, 999, 1, 10)
hi = gtk.SpinButton(self.hi_limit_adj)
hi.show()
hbox.pack_start(hi, 0,0,0)
hbox.pack_start(hi, 0, 0, 0)
refresh = gtk.Button("Go")
refresh.show()
refresh.connect("clicked", lambda x: self.prefill())
hbox.pack_start(refresh, 0,0,0)
hbox.pack_start(refresh, 0, 0, 0)
hbox.show()
@ -529,9 +527,12 @@ class MemoryEditor(common.Editor):
self.need_refresh = False
self.lo_limit_adj = self.hi_limit_adj = None
self.store = self.view = None
vbox = gtk.VBox(False, 2)
vbox.pack_start(self.make_controls(), 0,0,0)
vbox.pack_start(self.make_editor(), 1,1,1)
vbox.pack_start(self.make_controls(), 0, 0, 0)
vbox.pack_start(self.make_editor(), 1, 1, 1)
vbox.show()
self.root = vbox
@ -563,7 +564,7 @@ class DstarMemoryEditor(MemoryEditor):
self.choices["RPT1CALL"] = gtk.ListStore(TYPE_STRING, TYPE_STRING)
self.choices["RPT2CALL"] = gtk.ListStore(TYPE_STRING, TYPE_STRING)
iter = self.choices["URCALL"].append(("CQCQCQ", "CQCQCQ"))
self.choices["URCALL"].append(("CQCQCQ", "CQCQCQ"))
self.choices["RPT1CALL"].append(("", ""))
self.choices["RPT2CALL"].append(("", ""))
@ -611,23 +612,3 @@ class DstarMemoryEditor(MemoryEditor):
class ID800MemoryEditor(DstarMemoryEditor):
pass
if __name__ == "__main__":
from chirp import id800, ic9x, ic2820, ic2200, generic
import serial
r = id800.ID800v2Radio("../id800.img")
#s = serial.Serial(port="/dev/ttyUSB1", baudrate=38400, timeout=0.2)
#r = ic9x.IC9xRadioB(s)
e = ID800MemoryEditor(r)
w = gtk.Window()
w.add(e.root)
e.root.show()
w.show()
try:
gtk.main()
except KeyboardInterrupt:
pass
r.save_mmap("../id800.img")

View File

@ -20,6 +20,9 @@ import gobject
from chirp import platform
class ListWidget(gtk.HBox):
store_type = gtk.ListStore
# pylint: disable-msg=W0613
def _toggle(self, render, path, column):
self._store[path][column] = not self._store[path][column]
iter = self._store.get_iter(path)
@ -27,41 +30,40 @@ class ListWidget(gtk.HBox):
for cb in self.toggle_cb:
cb(*vals)
def make_store(self, col_types):
return gtk.ListStore(*col_types)
def make_view(self, columns):
self._view = gtk.TreeView(self._store)
for t,c in columns:
index = columns.index((t,c))
if t == gobject.TYPE_STRING or \
t == gobject.TYPE_INT or \
t == gobject.TYPE_FLOAT:
r = gtk.CellRendererText()
c = gtk.TreeViewColumn(c, r, text=index)
elif t == gobject.TYPE_BOOLEAN:
r = gtk.CellRendererToggle()
r.connect("toggled", self._toggle, index)
c = gtk.TreeViewColumn(c, r, active=index)
for _type, _col in columns:
index = columns.index((_type, _col))
if _type == gobject.TYPE_STRING or \
_type == gobject.TYPE_INT or \
_type == gobject.TYPE_FLOAT:
rend = gtk.CellRendererText()
column = gtk.TreeViewColumn(_col, rend, text=index)
elif _type == gobject.TYPE_BOOLEAN:
rend = gtk.CellRendererToggle()
rend.connect("toggled", self._toggle, index)
column = gtk.TreeViewColumn(_col, rend, active=index)
else:
raise Exception("Unknown column type (%i)" % index)
c.set_sort_column_id(index)
self._view.append_column(c)
column.set_sort_column_id(index)
self._view.append_column(column)
def __init__(self, columns, parent=True):
gtk.HBox.__init__(self)
col_types = tuple([x for x,y in columns])
# pylint: disable-msg=W0612
col_types = tuple([x for x, y in columns])
self._ncols = len(col_types)
self._store = self.make_store(col_types)
self._store = self.store_type(*col_types)
self._view = None
self.make_view(columns)
self._view.show()
if parent:
self.pack_start(self._view, 1,1,1)
self.pack_start(self._view, 1, 1, 1)
self.toggle_cb = []
@ -74,9 +76,9 @@ class ListWidget(gtk.HBox):
args = []
i = 0
for v in vals:
for val in vals:
args.append(i)
args.append(v)
args.append(val)
i += 1
args = tuple(args)
@ -95,32 +97,35 @@ class ListWidget(gtk.HBox):
def remove_selected(self):
try:
(list, iter) = self._view.get_selection().get_selected()
list.remove(iter)
(lst, iter) = self._view.get_selection().get_selected()
lst.remove(iter)
except Exception, e:
print "Unable to remove selected: %s" % e
def get_selected(self):
(list, iter) = self._view.get_selection().get_selected()
return list.get(iter, *tuple(range(self._ncols)))
(lst, iter) = self._view.get_selection().get_selected()
return lst.get(iter, *tuple(range(self._ncols)))
def _get_value(self, model, path, iter, list):
list.append(model.get(iter, *tuple(range(0, self._ncols))))
def _get_value(self, model, path, iter, lst):
lst.append(model.get(iter, *tuple(range(0, self._ncols))))
def get_values(self):
list = []
lst = []
self._store.foreach(self._get_value, list)
self._store.foreach(self._get_value, lst)
return list
def set_values(self, list):
def set_values(self, lst):
self._store.clear()
for i in list:
for i in lst:
self.add_item(*i)
class TreeWidget(ListWidget):
store_type = gtk.TreeStore
# pylint: disable-msg=W0613
def _toggle(self, render, path, column):
self._store[path][column] = not self._store[path][column]
iter = self._store.get_iter(path)
@ -140,15 +145,12 @@ class TreeWidget(ListWidget):
self._key = key
def make_store(self, col_types):
return gtk.TreeStore(*col_types)
def _add_item(self, piter, *vals):
args = []
i = 0
for v in vals:
for val in vals:
args.append(i)
args.append(v)
args.append(val)
i += 1
args = tuple(args)
@ -161,8 +163,8 @@ class TreeWidget(ListWidget):
iter = self._store.get_iter_first()
while iter is not None:
id = self._store.get(iter, self._key)[0]
if id == key:
_id = self._store.get(iter, self._key)[0]
if _id == key:
return iter
iter = self._store.iter_next(iter)
@ -184,10 +186,10 @@ class TreeWidget(ListWidget):
def _set_values(self, parent, vals):
if isinstance(vals, dict):
for k,v in vals.items():
for key, val in vals.items():
iter = self._store.append(parent)
self._store.set(iter, self._key, k)
self._set_values(iter, v)
self._store.set(iter, self._key, key)
self._set_values(iter, val)
elif isinstance(vals, list):
for i in vals:
self._set_values(parent, i)
@ -225,9 +227,9 @@ class TreeWidget(ListWidget):
args = []
i = 0
for v in vals:
for val in vals:
args.append(i)
args.append(v)
args.append(val)
i += 1
self._store.set(iter, *(tuple(args)))
@ -249,11 +251,11 @@ class ProgressDialog(gtk.Window):
self.label.set_size_request(100, 50)
self.label.show()
self.bar = gtk.ProgressBar()
self.bar.show()
self.pbar = gtk.ProgressBar()
self.pbar.show()
vbox.pack_start(self.label, 0,0,0)
vbox.pack_start(self.bar, 0,0,0)
vbox.pack_start(self.label, 0, 0, 0)
vbox.pack_start(self.pbar, 0, 0, 0)
vbox.show()
@ -267,7 +269,7 @@ class ProgressDialog(gtk.Window):
gtk.main_iteration_do(False)
def set_fraction(self, frac):
self.bar.set_fraction(frac)
self.pbar.set_fraction(frac)
self.queue_draw()
while gtk.events_pending():
@ -279,24 +281,24 @@ class LatLonEntry(gtk.Entry):
self.connect("changed", self.format)
def format(self, editable):
s = self.get_text()
def format(self, _):
string = self.get_text()
d = u"\u00b0"
deg = u"\u00b0"
while " " in s:
if "." in s:
while " " in string:
if "." in string:
break
elif d not in s:
s = s.replace(" ", d)
elif "'" not in s:
s = s.replace(" ", "'")
elif '"' not in s:
s = s.replace(" ", '"')
elif deg not in string:
string = string.replace(" ", deg)
elif "'" not in string:
string = string.replace(" ", "'")
elif '"' not in string:
string = string.replace(" ", '"')
else:
s = s.replace(" ", "")
string = string.replace(" ", "")
self.set_text(s)
self.set_text(string)
def parse_dd(self, string):
return float(string)
@ -305,12 +307,12 @@ class LatLonEntry(gtk.Entry):
string = string.strip()
string = string.replace(' ', ' ')
(d, m) = string.split(' ', 2)
(_degrees, _minutes) = string.split(' ', 2)
deg = int(d)
min = float(m)
degrees = int(_degrees)
minutes = float(_minutes)
return deg + (min / 60.0)
return degrees + (minutes / 60.0)
def parse_dms(self, string):
string = string.replace(u"\u00b0", " ")
@ -324,42 +326,41 @@ class LatLonEntry(gtk.Entry):
if len(items) > 3:
raise Exception("Invalid format")
elif len(items) == 3:
d = items[0]
m = items[1]
s = items[2]
deg = items[0]
mns = items[1]
sec = items[2]
elif len(items) == 2:
d = items[0]
m = items[1]
s = 0
deg = items[0]
mns = items[1]
sec = 0
elif len(items) == 1:
d = items[0]
m = 0
s = 0
deg = items[0]
mns = 0
sec = 0
else:
d = 0
m = 0
s = 0
deg = 0
mns = 0
sec = 0
deg = int(d)
min = int(m)
sec = float(s)
degrees = int(deg)
minutes = int(mns)
seconds = float(sec)
return deg + (min / 60.0) + (sec / 3600.0)
return degrees + (minutes / 60.0) + (seconds / 3600.0)
def value(self):
s = self.get_text()
string = self.get_text()
try:
return self.parse_dd(s)
return self.parse_dd(string)
except:
try:
return self.parse_dm(s)
return self.parse_dm(string)
except:
try:
return self.parse_dms(s)
return self.parse_dms(string)
except Exception, e:
print "DMS: %s" % e
pass
raise Exception("Invalid format")
@ -378,7 +379,7 @@ class YesNoDialog(gtk.Dialog):
self._label.show()
# pylint: disable-msg=E1101
self.vbox.pack_start(self._label, 1,1,1)
self.vbox.pack_start(self._label, 1, 1, 1)
def set_text(self, text):
self._label.set_text(text)
@ -389,8 +390,8 @@ def make_choice(options, editable=True, default=None):
else:
sel = gtk.combo_box_new_text()
for o in options:
sel.append_text(o)
for opt in options:
sel.append_text(opt)
if default:
try:
@ -402,7 +403,7 @@ def make_choice(options, editable=True, default=None):
return sel
class FilenameBox(gtk.HBox):
def do_browse(self, widget):
def do_browse(self, _):
fn = platform.get_platform().gui_save_file()
if fn:
self.filename.set_text(fn)
@ -412,11 +413,11 @@ class FilenameBox(gtk.HBox):
self.filename = gtk.Entry()
self.filename.show()
self.pack_start(self.filename, 1,1,1)
self.pack_start(self.filename, 1, 1, 1)
browse = gtk.Button("...")
browse.show()
self.pack_start(browse, 0,0,0)
self.pack_start(browse, 0, 0, 0)
browse.connect("clicked", self.do_browse)
@ -426,39 +427,39 @@ class FilenameBox(gtk.HBox):
def get_filename(self):
return self.filename.get_text()
if __name__=="__main__":
w = gtk.Window(gtk.WINDOW_TOPLEVEL)
l = ListWidget([(gobject.TYPE_STRING, "Foo"),
def test():
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
lst = ListWidget([(gobject.TYPE_STRING, "Foo"),
(gobject.TYPE_BOOLEAN, "Bar")])
l.add_item("Test1", True)
l.set_values([("Test2", True), ("Test3", False)])
lst.add_item("Test1", True)
lst.set_values([("Test2", True), ("Test3", False)])
l.show()
w.add(l)
w.show()
lst.show()
win.add(lst)
win.show()
w1 = ProgressDialog("foo")
w1.show()
win1 = ProgressDialog("foo")
win1.show()
w2 = gtk.Window(gtk.WINDOW_TOPLEVEL)
win2 = gtk.Window(gtk.WINDOW_TOPLEVEL)
lle = LatLonEntry()
lle.show()
w2.add(lle)
w2.show()
win2.add(lle)
win2.show()
w3 = gtk.Window(gtk.WINDOW_TOPLEVEL)
l = TreeWidget([(gobject.TYPE_STRING, "Id"),
(gobject.TYPE_STRING, "Value")],
1)
win3 = gtk.Window(gtk.WINDOW_TOPLEVEL)
lst = TreeWidget([(gobject.TYPE_STRING, "Id"),
(gobject.TYPE_STRING, "Value")],
1)
#l.add_item(None, "Foo", "Bar")
#l.add_item("Foo", "Bar", "Baz")
l.set_values({"Fruit" : [("Apple", "Red"), ("Orange", "Orange")],
"Pizza" : [("Cheese", "Simple"), ("Pepperoni", "Yummy")]})
l.add_item("Fruit", "Bananna", "Yellow")
l.show()
w3.add(l)
w3.show()
lst.set_values({"Fruit" : [("Apple", "Red"), ("Orange", "Orange")],
"Pizza" : [("Cheese", "Simple"), ("Pepperoni", "Yummy")]})
lst.add_item("Fruit", "Bananna", "Yellow")
lst.show()
win3.add(lst)
win3.show()
def print_val(entry):
if entry.validate():
@ -471,7 +472,10 @@ if __name__=="__main__":
try:
gtk.main()
except KeyboardInterrupt, e:
except KeyboardInterrupt:
pass
print l.get_values()
print lst.get_values()
if __name__ == "__main__":
test()