Hooke(GUI)
[hooke.git] / panels / perspectives.py
1 #!/usr/bin/env python\r
2 \r
3 '''\r
4 perspectives.py\r
5 \r
6 Perspectives panel for deletion.\r
7 \r
8 Copyright 2010 by Dr. Rolf Schmidt (Concordia University, Canada)\r
9 \r
10 This program is released under the GNU General Public License version 2.\r
11 '''\r
12 \r
13 from os import remove\r
14 import wx\r
15 \r
16 import lib.libhooke as lh\r
17 \r
18 class Perspectives(wx.Dialog):\r
19 \r
20     def __init__(self, parent, ID, title):\r
21         wx.Dialog.__init__(self, parent, ID, title, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)\r
22 \r
23         # contents\r
24         sizer_vertical = wx.BoxSizer(wx.VERTICAL)\r
25 \r
26         message_str = "\nPlease check the perspectives\n\nyou want to delete and click 'Delete'.\n"\r
27         text = wx.StaticText(self, -1, message_str, wx.DefaultPosition, style=wx.ALIGN_CENTRE)\r
28         sizer_vertical.Add(text, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)\r
29 \r
30         perspectives_list = [item[0] for item in self.Parent._perspectives.items() if item[0] != 'Default']\r
31         perspectives_list.sort()\r
32         listbox = wx.CheckListBox(self, -1, wx.DefaultPosition, wx.Size(175, 200), perspectives_list)\r
33         self.Bind(wx.EVT_CHECKLISTBOX, self.EvtCheckListBox, listbox)\r
34         listbox.SetSelection(0)\r
35         sizer_vertical.Add(listbox, 1, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)\r
36         self.listbox = listbox\r
37 \r
38         horizontal_line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)\r
39         sizer_vertical.Add(horizontal_line, 0, wx.GROW, 5)\r
40 \r
41         sizer_buttons = wx.BoxSizer(wx.HORIZONTAL)\r
42 \r
43         button_delete = wx.Button(self, wx.ID_DELETE)\r
44         self.Bind(wx.EVT_BUTTON, self.OnButtonDelete, button_delete)\r
45         button_delete.SetDefault()\r
46         sizer_buttons.Add(button_delete, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)\r
47 \r
48         button_close = wx.Button(self, wx.ID_CLOSE)\r
49         self.Bind(wx.EVT_BUTTON, self.OnButtonClose, button_close)\r
50         sizer_buttons.Add(button_close, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)\r
51 \r
52         sizer_vertical.Add(sizer_buttons, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5)\r
53 \r
54         self.SetSizer(sizer_vertical)\r
55         sizer_vertical.Fit(self)\r
56 \r
57     def EvtCheckListBox(self, event):\r
58         index = event.GetSelection()\r
59         self.listbox.SetSelection(index)    # so that (un)checking also selects (moves the highlight)\r
60 \r
61     def OnButtonClose(self, event):\r
62         self.EndModal(wx.ID_CLOSE)\r
63 \r
64     def OnButtonDelete(self, event):\r
65         items = self.listbox.GetItems()\r
66         selected_perspective = self.Parent.config['perspectives']['active']\r
67         for index in reversed(self.listbox.GetChecked()):\r
68             self.listbox.Delete(index)\r
69             if items[index] == selected_perspective:\r
70                 self.Parent.config['perspectives']['active'] = 'Default'\r
71 \r
72             filename = lh.get_file_path(items[index] + '.txt', ['perspectives'])\r
73             remove(filename)\r