clExport.py
6.6 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#! /bin/env python
# coding: utf8
import Tkinter as tk
import tkFileDialog as tkdia
import pdb
import os
from clcom import tt_all
from ihm import HoverInfo
def clExport():
p = clExportClass(None)
p.title('Tools')
p.mainloop()
class clExportClass(tk.Tk):
def __init__(self, parent):
tk.Tk.__init__(self, parent)
self.parent = parent
self._init_tkoptions()
self.info = {}
self.label = {}
self.button = {}
self.hover = []
self.initialize()
def init_strinfo(self, key, value) :
self.info[key] = tk.StringVar()
self.info[key].set(value)
def init_label(self, key, init_value, hovertext = 'label') :
if key in self.info : print "BEWARE DUPLICATED INFO"
self.info[key] = tk.StringVar()
self.info[key].set(init_value)
self.label[key] = tk.Label(self, textvariable = self.info[key], **self.labeloptions)
self.label[key].grid(column = 0, row = self.row_count, columnspan = 1, sticky = 'EW')
self.hover.append(HoverInfo(self.label[key], hovertext, self.status['message']))
def init_button(self, key, command = None, text = '', hovertext = 'button', column = 1) :
self.button[key] = tk.Button(self, text = text, command = command)
self.button[key].grid(column = column, row = self.row_count, **self.gridoptions)
self.hover.append(HoverInfo(self.button[key], hovertext, self.status['message']))
def init_cbutton(self, key, column = 2, text = '', hovertext = 'check button'):
self.info[key] = tk.StringVar()
self.info[key].set(0)
self.button[key] = tk.Checkbutton(self, text = text, variable = self.info[key], onvalue = 1, offvalue = 0, command = None)
self.button[key].grid(column = column, row = self.row_count, **self.gridoptions)
self.hover.append(HoverInfo(self.button[key], hovertext, self.status['message']))
def test(self) :
print self.info['dataexport'].get()
def initialize(self) :
self.grid()
#### HoverInfo init
self.status = {}
self.status['message'] = tk.StringVar() #message pour bar d'état (statusbar)
self.status['message'].set("barre d'état")
#1ere ligne (repertoire de base)
self.row_count = 0
self.init_label('baserep', os.curdir, hovertext = 'Base directory, required to load data')
self.init_button('baserep', command = lambda : self.getrep('baserep'), text = '...', hovertext = 'choose working directory')
self.init_button('clexport', text = "launch CL export", command = self.generation, column = 2, hovertext = 'will generated data from CL once CL file and TT are set' )
#2eme ligne a (fichier time_table (optionnel))
self.row_count += 1
self.init_label('time_table', os.curdir, hovertext = 'TimeTable file, used with generation and CL')
self.init_button('time_table', text = "...", command = lambda : self.getfile('time_table'), hovertext = 'Browse time_table file')
#b : debug console
self.init_button('debug', column = 2, text = 'Console pdb.set_trace', command = self.activate_console, hovertext = 'Spawn the debugging console')
#3eme ligne (fichier config CL (optionnel))
self.row_count+=1
self.init_label('clconfig', os.curdir, hovertext = 'CL config file')
self.init_button('clconfig', text = "...", command = lambda : self.getfile('clconfig'), hovertext = 'Browse for CL config file')
#self.init_button('saveconfig', text = 'Save config', command = , hovertext = 'Save actual configuration')
#4th Row: TimeComment file (optional)
self.row_count+=1
self.init_label('TimeComment', os.curdir, hovertext = 'input TimeComment file')
self.init_button('TimeComment', text = '...', command = lambda : self.getfile('TimeComment'), hovertext = 'Browse for CL TimeComment file')
self.init_cbutton('cefexport', text = 'export cef', column = 2, hovertext = 'if checked, will export data as cef file format')
self.init_cbutton('asciiexport', text = 'export ascii', column = 3, hovertext = 'if checked, will export data as ascii files (Used for separated header for IDL mms tools)')
#### HoverInfo window
self.row_count+=1
self.labeloptions['width'] = 0
self.labeloptions['justify'] = 'center'
self.label['status'] = tk.Label(self, textvariable = self.status['message'], **self.labeloptions)
self.label['status'].grid(column = 0, row = self.row_count, columnspan = 3, **self.gridoptions)
self.grid_columnconfigure(0,weight=1)
#self.resizable(True,False)
def getrep(self, key):
"""
Open dialog box asking for a directory.
Resulting directory is put in self.info[key]
"""
options = {}
options['initialdir'] = self.info[key].get()
options['mustexist'] = False
#options['parent'] = root
options['title'] = 'Choose directory'
dirname = tkdia.askdirectory(**options)
if dirname :
self.info[key].set(dirname)
if not os.path.exists(dirname) : os.mkdir(dirname)
def getfile(self, key): #Selection de fichier (Boite de dialogue)
"""
Open dialog box asking for a file
resulting file is put in self.info[key]
"""
options = {}
options['defaultextension'] = '.txt'
options['filetypes'] = [('all files', '.*'), ('text files', '.txt'), ('cl files', '.cl')]
if 'baserep' in self.info : options['initialdir'] = self.info['baserep'].get()
options['initialfile'] = self.info[key].get()
#options['parent'] = root
options['title'] = 'Choose file'
filename = tkdia.askopenfilename(**options)
if filename :
self.info[key].set(filename)
#def saveconfig(self):
#fichier = self.info['saveconfig']
#with open(fichier) as fichier :
#fichier.write()
def generation(self): #Generation des données par CL
self.tt_all = tt_all(ttfile = self.info['time_table'].get(), config = self.info['clconfig'].get(), path = self.info['baserep'].get(), TimeCommentFile = self.info['TimeComment'].get())
self.tt_all.gen_clout(cef = self.info['cefexport'].get(), ascii = self.info['asciiexport'].get())
def onpressenter(self,event):
print "You pressed enter !"
def activate_console(self) :
print 'You have activated the debugging console with pdb.set_trace'
pdb.set_trace()
def HelloWorld(self):
print 'Hello World'
def _init_tkoptions(self) :
self.labeloptions = {} #options des boites de label
self.labeloptions["anchor"] = "e"
self.labeloptions['fg'] = "white"
self.labeloptions["bg"] = "grey"
self.labeloptions["width"] = 40
self.labeloptions["takefocus"] = True
self.labeloptions["bd"] = 2
self.labeloptions["relief"] = "ridge" #flat, raised, groove, ridge, solid
self.labeloptions["state"] = "normal"
self.labeloptions["justify"] = "right"
self.gridoptions = {} #options de la grille (espacements entre les boites)
self.gridoptions["ipadx"] = 2
self.gridoptions["ipady"] = 2