summaryrefslogtreecommitdiff
path: root/gui.py
diff options
context:
space:
mode:
authorjvoisin2011-07-11 22:14:03 +0200
committerjvoisin2011-07-11 22:14:03 +0200
commit337919f7e9bb0768bf8fa1afa814145326fbdbe8 (patch)
treefddcbf8f1a8a0850984e5cceb08ada7be5074ae4 /gui.py
parent154ef354cfa4c36958faa633c226211729bffeda (diff)
First implementation of the interface
Diffstat (limited to 'gui.py')
-rw-r--r--gui.py112
1 files changed, 112 insertions, 0 deletions
diff --git a/gui.py b/gui.py
new file mode 100644
index 0000000..ca3dbb8
--- /dev/null
+++ b/gui.py
@@ -0,0 +1,112 @@
1#!/usr/bin/python2.7
2
3from gi.repository import Gtk, GObject
4#import cli
5
6__version__ = '0.1'
7__author__ = 'jvoisin'
8
9class File:
10 '''
11 Represent a File
12 '''
13 def __init__(self, name, fileformat, cleaned):
14 self.name = name
15 self.fileformat = fileformat
16 self.cleaned = cleaned
17
18# initial data we use to fill in the store
19data = [File('test.txt', 'PLAIN TEXT', 0),
20 File('ugly.pdf', 'UGLY_PDF', 2),
21 File('ugly.doc', 'UGLY_OL2', 1),
22]
23
24class ListStoreApp:
25 '''
26 Main GUI class
27 '''
28 (COLUMN_NAME,
29 COLUMN_FILEFORMAT,
30 COLUMN_CLEANED,
31 NUM_COLUMNS) = range(4)
32
33 def __init__(self):
34 self.window = Gtk.Window()
35 self.window.set_title('Metadata Anonymisation Toolkit %s' % __version__)
36 self.window.connect('destroy', Gtk.main_quit)
37
38 vbox = Gtk.VBox()
39 self.window.add(vbox)
40 self.window.connect('destroy', Gtk.main_quit)
41
42 toolbar = Gtk.Toolbar()
43 toolbutton = Gtk.ToolButton(label = 'Clean', stock_id=Gtk.STOCK_CLEAR)
44 toolbar.add(toolbutton)
45 toolbutton = Gtk.ToolButton(label='Check', stock_id=Gtk.STOCK_APPLY)
46 toolbar.add(toolbutton)
47 toolbutton = Gtk.ToolButton(stock_id=Gtk.STOCK_QUIT)
48 toolbar.add(toolbutton)
49 vbox.pack_start(toolbar, False, False, 0)
50
51 sw = Gtk.ScrolledWindow()
52 sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
53 sw.set_policy(Gtk.PolicyType.NEVER,
54 Gtk.PolicyType.AUTOMATIC)
55 vbox.pack_start(sw, True, True, 0)
56
57 self.create_model()
58 treeview = Gtk.TreeView(model=self.model)
59 treeview.set_rules_hint(True)
60 sw.add(treeview)
61
62 self.add_columns(treeview)
63
64 self.window.set_default_size(800, 600)
65 self.window.show_all()
66
67
68 def create_model(self):
69 self.model = Gtk.ListStore(str, str, str,) #name - type - cleaned
70 for item in data:
71 if item.cleaned is 0:
72 s = 'clean'
73 elif item.cleaned is 1:
74 s = 'dirty'
75 else:
76 s = 'unknow'
77 self.model.append([item.name,
78 item.fileformat,
79 s
80 ])
81
82 def add_columns(self, treeview):
83 model = treeview.get_model()
84
85 # column for filename
86 renderer = Gtk.CellRendererText()
87 column = Gtk.TreeViewColumn("Filename", renderer,
88 text=self.COLUMN_NAME)
89 column.set_sort_column_id(self.COLUMN_NAME)
90 treeview.append_column(column)
91
92 # column for fileformat
93 renderer = Gtk.CellRendererText()
94 column = Gtk.TreeViewColumn("Fileformat", renderer,
95 text=self.COLUMN_FILEFORMAT)
96 column.set_sort_column_id(self.COLUMN_FILEFORMAT)
97 treeview.append_column(column)
98
99 # column for cleaned
100 renderer = Gtk.CellRendererText()
101 column = Gtk.TreeViewColumn("Cleaned", renderer,
102 text=self.COLUMN_CLEANED)
103 column.set_sort_column_id(self.COLUMN_CLEANED)
104 treeview.append_column(column)
105
106def main(demoapp=None):
107 app = ListStoreApp()
108 Gtk.main()
109
110if __name__ == '__main__':
111 main()
112