[go: up one dir, main page]

Menu

[r35]: / editvariable.py  Maximize  Restore  History

Download this file

140 lines (121 with data), 6.0 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import functions
try:
import pygtk
pygtk.require("2.0")
except:
print("pygtk Not Availible")
sys.exit(1)
try:
import gtk
except:
print("GTK Not Availible")
sys.exit(1)
class EditVariable(object):
def delete_event(self, widget, event):
self.window.destroy()
def __init__(self, parent, variable):
self.parent = parent
self.variable = variable
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Variable edit [{0}]".format(self.parent.variable_liststore[variable][0]))
self.window.connect("delete_event", self.delete_event)
self.window.set_border_width(10)
self.window.set_transient_for(parent.window)
self.window.set_modal(True)
self.window.set_size_request(300, 240)
vb = gtk.VBox(False, spacing=10)
hb = gtk.HBox(False)
lbl = gtk.Label('Variable Name')
hb.pack_start(lbl, False, False)
self.variable_name_entry = gtk.Entry()
self.variable_name_entry.set_text(self.parent.variable_liststore[variable][0])
hb.pack_start(self.variable_name_entry, True, True)
vb.pack_start(hb, False, False)
hb = gtk.HBox(False)
lbl = gtk.Label('Variable Weight')
hb.pack_start(lbl, False, False)
adj = gtk.Adjustment(value=self.parent.variable_liststore[variable][1], lower=0.0, upper=50.0, step_incr=0.01, page_incr=0.1)
self.variable_weight_spin = gtk.SpinButton(adj, digits=2)
hb.pack_start(self.variable_weight_spin, True, True)
vb.pack_start(hb, False, False)
hb = gtk.HBox(False)
lbl = gtk.Label('Variable Levels')
hb.pack_start(lbl, False, False)
vb.pack_start(hb, False, False)
hb = gtk.HBox(False)
self.levels_liststore, self.levels_treeview = functions.make_treeview(
(str,), ['Level Name'],
editable=True, edit_handler=self.levels_cell_edited)
levels = self.parent.variable_liststore[variable][2].split(',')
for level in levels:
self.levels_liststore.append((level,))
hb.pack_start(self.levels_treeview, True, True)
vbuttonbox = gtk.VButtonBox()
vbuttonbox.set_layout(gtk.BUTTONBOX_START)
button = gtk.Button(None, gtk.STOCK_ADD)
button.connect("clicked", self.level_add_button)
vbuttonbox.pack_start(button, False, False)
button = gtk.Button(None, gtk.STOCK_DELETE)
button.connect("clicked", self.level_delete_button)
vbuttonbox.pack_start(button, False, False)
hb.pack_start(vbuttonbox, False, False)
vb.pack_start(hb, False, False)
hb = gtk.HBox(False)
button = gtk.Button(None, gtk.STOCK_SAVE)
button.connect('clicked', self.save_clicked)
hb.pack_start(button, False, False)
button = gtk.Button('Reset')
button.connect('clicked', self.reset_clicked)
hb.pack_start(button, False, False)
button = gtk.Button(None, gtk.STOCK_CANCEL)
button.connect('clicked', self.cancel_clicked)
hb.pack_start(button, False, False)
vb.pack_start(hb, False, False)
self.window.add(vb)
self.window.show_all()
def reset_clicked(self, widget, data=None):
self.variable_name_entry.set_text(self.parent.variable_liststore[self.variable][0])
self.variable_weight_spin.set_value(self.parent.variable_liststore[self.variable][1])
self.levels_liststore.clear()
levels = self.parent.variable_liststore[self.variable][2].split(',')
for level in levels:
self.levels_liststore.append((level,))
def save_clicked(self, widget, data=None):
var_name = self.variable_name_entry.get_text()
if len(var_name) == 0:
functions.error_dialog(self.window, 'Error: Variable name can not be empty!'.format(var_name), 'Empty variable name!')
self.window.set_focus(self.variable_name_entry)
return False
for r in range(len(self.parent.variable_liststore)):
if r != self.variable and var_name == self.parent.variable_liststore[r][0]:
functions.error_dialog(self.window, 'Error: "{0}" variable name already in use! Choose another name!'.format(var_name), 'Duplicate variable name!')
self.window.set_focus(self.variable_name_entry)
return False
self.parent.variable_liststore[self.variable][0] = var_name
self.parent.variable_liststore[self.variable][1] = self.variable_weight_spin.get_value()
new_levels = []
for row in range(len(self.levels_liststore)):
new_levels.append(self.levels_liststore[row][0].strip())
if len(new_levels) < 2:
functions.error_dialog(self.window, 'Error: At least two variable levels should be entered!', 'Insufficient number of levels!')
return False
if len(list(set(new_levels))) != len(new_levels):
functions.error_dialog(self.window, 'Error: Duplicate level name. At least two levels have the same name!', 'Duplicate level names!')
return False
self.parent.variable_liststore[self.variable][2] = ','.join(new_levels)
self.parent.update_interface()
self.window.destroy()
def cancel_clicked(self, widget, data=None):
self.window.destroy()
def level_add_button(self, widget, data=None):
self.levels_liststore.append(('Level {0}'.format(len(self.levels_liststore)),))
def level_delete_button(self, widget, data=None):
if self.levels_treeview.get_cursor()[0]:
row = self.levels_treeview.get_cursor()[0][0]
self.levels_liststore.remove(self.levels_liststore.get_iter(row))
def levels_cell_edited(self, cell, row, new_text, col):
self.levels_liststore[row][col] = new_text
def close_window(self, widget, data=None):
self.window.destroy()