1 | #!/usr/local/bin/python |
---|
2 | |
---|
3 | import gtk |
---|
4 | |
---|
5 | def frame_it(w, name): |
---|
6 | f = gtk.Frame(name) |
---|
7 | f.add(w) |
---|
8 | return f |
---|
9 | |
---|
10 | class add_credential_dialog(gtk.Dialog): |
---|
11 | |
---|
12 | |
---|
13 | def completion_entry(self, store): |
---|
14 | rv = gtk.Entry() |
---|
15 | comp = gtk.EntryCompletion() |
---|
16 | comp.set_inline_completion(True) |
---|
17 | comp.set_text_column(0) |
---|
18 | comp.set_model(store) |
---|
19 | rv.set_completion(comp) |
---|
20 | return rv |
---|
21 | |
---|
22 | def __init__(self, parent, policy): |
---|
23 | gtk.Dialog.__init__(self, 'Add Credential', parent, gtk.DIALOG_MODAL,( |
---|
24 | gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, |
---|
25 | gtk.STOCK_OK, gtk.RESPONSE_OK)) |
---|
26 | |
---|
27 | hb = gtk.HBox() |
---|
28 | roles = [ x for x in policy.roles ] |
---|
29 | roles.sort() |
---|
30 | self.role_list = gtk.ListStore(str) |
---|
31 | for r in roles: |
---|
32 | self.role_list.append([r]) |
---|
33 | self.principal_list = gtk.ListStore(str) |
---|
34 | for k, n in policy.principal_items(): |
---|
35 | self.principal_list.append([n]) |
---|
36 | |
---|
37 | self.issuer = gtk.combo_box_new_text() |
---|
38 | issuer_list = [] |
---|
39 | for a in [ policy.replace_keyids(i) for i in policy.issuers.keys()]: |
---|
40 | issuer_list.append(a) |
---|
41 | issuer_list.sort() |
---|
42 | for i in issuer_list: |
---|
43 | self.issuer.append_text(i) |
---|
44 | |
---|
45 | self.issuer.set_active(0) |
---|
46 | hb.pack_start(frame_it(self.issuer, "Issuer")) |
---|
47 | |
---|
48 | self.role = self.completion_entry(self.role_list) |
---|
49 | |
---|
50 | hb.pack_start(frame_it(self.role, "Role to assign")) |
---|
51 | |
---|
52 | self.vbox.pack_start(hb) |
---|
53 | |
---|
54 | vb = gtk.VBox() |
---|
55 | hb = gtk.HBox() |
---|
56 | |
---|
57 | self.mechanism = gtk.combo_box_new_text() |
---|
58 | self.mechanism.append_text('Direct assignment') |
---|
59 | self.mechanism.append_text('Direct delegation') |
---|
60 | self.mechanism.append_text('Delegation to role') |
---|
61 | self.mechanism.set_active(0) |
---|
62 | self.mechanism.connect('changed', self.changed) |
---|
63 | vb.pack_start(frame_it(self.mechanism, "Mechanism"), False, False) |
---|
64 | vb.pack_start(gtk.HBox(), True, True) |
---|
65 | hb.pack_start(vb) |
---|
66 | |
---|
67 | vb = gtk.VBox() |
---|
68 | self.subject_link = self.completion_entry(self.role_list) |
---|
69 | self.slf = frame_it(self.subject_link, "Delegator Role") |
---|
70 | vb.pack_start(self.slf) |
---|
71 | self.subject_role = self.completion_entry(self.role_list) |
---|
72 | self.srf = frame_it(self.subject_role, "Delegation Role") |
---|
73 | vb.pack_start(self.srf) |
---|
74 | self.subject_principal = self.completion_entry(self.principal_list) |
---|
75 | self.spf = frame_it(self.subject_principal, "Principal") |
---|
76 | vb.pack_start(self.spf) |
---|
77 | |
---|
78 | self.srf.set_sensitive(False) |
---|
79 | self.slf.set_sensitive(False) |
---|
80 | |
---|
81 | hb.pack_start(vb) |
---|
82 | |
---|
83 | self.vbox.pack_start(hb, False, False) |
---|
84 | |
---|
85 | self.show_all() |
---|
86 | |
---|
87 | def changed(self, cb): |
---|
88 | mode = cb.get_active_text() |
---|
89 | if mode == 'Direct assignment': |
---|
90 | self.spf.set_sensitive(True) |
---|
91 | self.srf.set_sensitive(False) |
---|
92 | self.slf.set_sensitive(False) |
---|
93 | elif mode == 'Direct delegation': |
---|
94 | self.spf.set_sensitive(True) |
---|
95 | self.srf.set_sensitive(True) |
---|
96 | self.slf.set_sensitive(False) |
---|
97 | elif mode == 'Delegation to role': |
---|
98 | self.spf.set_sensitive(True) |
---|
99 | self.srf.set_sensitive(True) |
---|
100 | self.slf.set_sensitive(True) |
---|
101 | |
---|
102 | class add_principal_dialog(gtk.Dialog): |
---|
103 | def __init__(self, parent): |
---|
104 | gtk.Dialog.__init__(self, 'Add Principal', parent, gtk.DIALOG_MODAL,( |
---|
105 | gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, |
---|
106 | gtk.STOCK_OK, gtk.RESPONSE_OK)) |
---|
107 | self.pname = gtk.Entry() |
---|
108 | self.vbox.pack_start(frame_it(self.pname, 'Principal Name')) |
---|
109 | self.show_all() |
---|
110 | |
---|
111 | |
---|
112 | class mark_action_dialog(gtk.Dialog): |
---|
113 | def __init__(self, parent, policy): |
---|
114 | gtk.Dialog.__init__(self, 'Mark Action', parent, gtk.DIALOG_MODAL,( |
---|
115 | gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, |
---|
116 | gtk.STOCK_OK, gtk.RESPONSE_OK)) |
---|
117 | |
---|
118 | self.action = gtk.combo_box_new_text() |
---|
119 | self.rmap = { } |
---|
120 | |
---|
121 | for c in policy.credentials(): |
---|
122 | h = c.head() |
---|
123 | self.rmap[policy.replace_keyids(h.string())] = h.string() |
---|
124 | |
---|
125 | roles = [x for x in self.rmap.keys() ] |
---|
126 | roles.sort() |
---|
127 | |
---|
128 | for r in roles: |
---|
129 | self.action.append_text(r) |
---|
130 | self.action.set_active(0) |
---|
131 | self.vbox.pack_start(frame_it(self.action, "Attribute to mark")) |
---|
132 | self.show_all() |
---|
133 | |
---|
134 | def get_value(self): |
---|
135 | return self.rmap.get(self.action.get_active_text(), None) |
---|