source: sasview/guiframe/gui_toolbar.py @ 0d54b58

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 0d54b58 was 0d54b58, checked in by Jae Cho <jhjcho@…>, 13 years ago

resize tool_bar

  • Property mode set to 100644
File size: 10.5 KB
Line 
1
2import wx
3import os
4from wx import ToolBar as Tbar
5from wx.lib.platebtn import PlateButton
6from sans.guiframe.gui_style import GUIFRAME_ID
7from sans.guiframe.gui_style import GUIFRAME_ICON
8from wx.lib.platebtn import PB_STYLE_SQUARE, PB_STYLE_DROPARROW
9#Control panel width
10import sys
11if sys.platform.count("darwin")==0:
12    FONT_VARIANT = 0
13    IS_MAC = False
14else:
15    FONT_VARIANT = 1
16    IS_MAC = True
17
18def clear_image(image):
19    w, h = image.GetSize()
20    factor = 155
21    compress = lambda x: int(x * factor/255.) + factor
22    for y in range(h):
23        for x in range(w):
24            grey = compress(image.GetGreen(x, y))
25            image.SetRGB(x, y, grey, grey, grey)
26    if image.HasAlpha():
27        image.ConvertAlphaToMask()
28    return image
29
30class GUIToolBar(Tbar):
31    """
32    Implement toolbar for guiframe
33    """
34    def __init__(self, parent,  *args, **kwds):
35        Tbar.__init__(self, parent,  *args, **kwds)
36        #Set window's font size
37        self.SetWindowVariant(variant=FONT_VARIANT)
38        self.parent = parent
39        self._bookmark_menu = None
40        self._bookmark_bt = None
41        self.do_layout()
42        self.on_bind_button()
43       
44    def do_layout(self):
45        """
46        """
47        t_size = 20
48        if IS_MAC:
49            t_size = 25       
50           
51        tbar_size = (t_size, t_size)
52        button_type =  wx.ITEM_NORMAL
53
54        reset_im = GUIFRAME_ICON.RESET_ICON
55        reset_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
56        reset_bmp = reset_im.ConvertToBitmap()
57        #disable_reset_bmp = clear_image(reset_im).ConvertToBitmap()
58        disable_reset_bmp = wx.NullBitmap
59        self.AddLabelTool(GUIFRAME_ID.RESET_ID, 'Reset', reset_bmp,
60                   disable_reset_bmp, button_type,'Reset')
61        self.AddSeparator()
62        drag_im = GUIFRAME_ICON.DRAG_ICON
63        drag_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
64        drag_bmp = drag_im.ConvertToBitmap()
65        self.AddSeparator()
66        save_im = GUIFRAME_ICON.SAVE_ICON
67        save_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
68        save_bmp = save_im.ConvertToBitmap()
69        disable_save_bmp = wx.NullBitmap
70        self.AddLabelTool(GUIFRAME_ID.SAVE_ID, 'Save', save_bmp,
71                   disable_save_bmp, button_type,'Save')
72        self.AddSeparator()
73        report_im = GUIFRAME_ICON.REPORT_ICON
74        report_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
75        report_bmp = report_im.ConvertToBitmap()
76        #disable_report_bmp = clear_image(report_im).ConvertToBitmap()
77        disable_report_bmp = wx.NullBitmap
78        self.AddLabelTool(GUIFRAME_ID.PREVIEW_ID, 'Report', report_bmp,
79                   disable_report_bmp, button_type,'Report')
80        self.AddSeparator()
81        print_im = GUIFRAME_ICON.PRINT_ICON
82        print_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
83        print_bmp = print_im.ConvertToBitmap()
84        #disable_print_bmp = clear_image(print_im).ConvertToBitmap()
85        disable_print_bmp = wx.NullBitmap
86        self.AddLabelTool(GUIFRAME_ID.PRINT_ID, 'Print', print_bmp,
87                          disable_print_bmp, button_type, 'Print')
88        self.AddSeparator()
89        undo_im = GUIFRAME_ICON.UNDO_ICON
90        undo_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
91        undo_bmp = undo_im.ConvertToBitmap()
92        #disable_undo_bmp = clear_image(undo_im).ConvertToBitmap()
93        disable_undo_bmp = wx.NullBitmap
94        self.AddLabelTool(GUIFRAME_ID.UNDO_ID, 'Undo', undo_bmp,
95                          disable_undo_bmp, button_type,'Undo')
96        self.AddSeparator()
97        redo_im = GUIFRAME_ICON.REDO_ICON
98        redo_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
99        redo_bmp = redo_im.ConvertToBitmap()
100        #disable_redo_bmp = clear_image(redo_im).ConvertToBitmap()
101        disable_redo_bmp = wx.NullBitmap
102        self.AddLabelTool(GUIFRAME_ID.REDO_ID, 'Redo', redo_bmp,
103                          disable_redo_bmp, button_type,'Redo')
104        self.AddSeparator()
105        #add button for the current application
106        #self.button_application = wx.StaticText(self, -1, 'Welcome')
107        #self.button_application.SetForegroundColour('black')
108        #self.button_application.SetBackgroundColour('#1874CD')
109        #hint = 'Active Application'
110        #self.button_application.SetToolTipString(hint)
111        #self.AddControl(self.button_application)
112        #self.AddSeparator()
113       
114        self._bookmark_bt = PlateButton(self, -1, 'bookmark', 
115                         GUIFRAME_ICON.BOOKMARK_ICON.ConvertToBitmap(), 
116                         style=PB_STYLE_SQUARE|PB_STYLE_DROPARROW)
117        self._bookmark_bt.Disable()
118        self._bookmark_menu = wx.Menu()
119        self.add_bookmark_default()
120       
121       
122        self._bookmark_bt.SetMenu(self._bookmark_menu)
123        self.AddControl(self._bookmark_bt)
124
125        self.SetToolBitmapSize(tbar_size)
126        self.AddSeparator()
127        #add button for the panel on focus
128        self.button_panel = wx.StaticText(self, -1, 'No Panel', 
129                                          style=wx.SUNKEN_BORDER|wx.ALIGN_LEFT)
130        #self.button_panel.SetForegroundColour('black')
131        #self.button_panel.SetBackgroundColour('white')
132        button_panel_font = self.button_panel.GetFont()
133        button_panel_font.SetWeight(wx.BOLD)
134        self.button_panel.SetFont(button_panel_font)
135        #self.button_panel.SetClientSize((80,20))
136        hint = 'Control Panel on Focus'
137        self.button_panel.SetToolTipString(hint)
138        self.AddControl(self.button_panel)
139       
140        self.Realize()
141   
142    def add_bookmark_default(self):   
143        """
144        Add default items in bookmark menu
145        """
146        id = wx.NewId()
147        self._bookmark_menu.Append(id, 'Add bookmark')
148        self._bookmark_menu.AppendSeparator()
149        wx.EVT_MENU(self, id, self.on_bookmark)
150   
151    def on_bind_button(self):
152        """
153        """
154        if self.parent is not None:
155           
156            self.parent.Bind(wx.EVT_TOOL, self.parent.on_redo_panel,
157                             id=GUIFRAME_ID.REDO_ID)
158            self.parent.Bind(wx.EVT_TOOL, self.parent.on_undo_panel,
159                             id=GUIFRAME_ID.UNDO_ID)
160            self.parent.Bind(wx.EVT_TOOL, self.parent.on_reset_panel,
161                             id=GUIFRAME_ID.RESET_ID)
162            self.parent.Bind(wx.EVT_TOOL, self.parent.on_save_panel,
163                             id=GUIFRAME_ID.SAVE_ID)
164            self.parent.Bind(wx.EVT_TOOL, self.parent.on_preview_panel,
165                             id=GUIFRAME_ID.PREVIEW_ID)
166            self.parent.Bind(wx.EVT_TOOL, self.parent.on_print_panel,
167                             id=GUIFRAME_ID.PRINT_ID)
168           
169    def update_button(self, application_name='', panel_name=''):
170        """
171        """
172        #self.button_application.SetLabel(str(application_name))
173        self.button_panel.SetLabel(str(panel_name))
174       
175    def update_toolbar(self, panel=None):
176        """
177        """
178        if panel is None:
179            self.EnableTool(GUIFRAME_ID.PRINT_ID, False)
180            self.EnableTool(GUIFRAME_ID.UNDO_ID,False)
181            self.EnableTool(GUIFRAME_ID.REDO_ID, False)
182            self.EnableTool(GUIFRAME_ID.PREVIEW_ID, False)
183            self.EnableTool(GUIFRAME_ID.RESET_ID, False)
184            self.EnableTool(GUIFRAME_ID.SAVE_ID, False)
185            self._bookmark_bt.Disable()
186           
187        else:
188            self.EnableTool(GUIFRAME_ID.PRINT_ID, panel.get_print_flag())
189            self.EnableTool(GUIFRAME_ID.UNDO_ID, panel.get_undo_flag())
190            self.EnableTool(GUIFRAME_ID.REDO_ID, panel.get_redo_flag())
191            self.EnableTool(GUIFRAME_ID.PREVIEW_ID, panel.get_preview_flag())
192            self.EnableTool(GUIFRAME_ID.RESET_ID, panel.get_reset_flag())
193            self.EnableTool(GUIFRAME_ID.SAVE_ID, panel.get_save_flag())
194            self._bookmark_bt.Enable(panel.get_bookmark_flag())
195        self.Realize()
196       
197    def enable_undo(self, panel):
198        self.EnableTool(GUIFRAME_ID.UNDO_ID, panel.get_undo_flag())
199        self.Realize()
200       
201    def enable_redo(self, panel):
202        self.EnableTool(GUIFRAME_ID.REDO_ID, panel.get_redo_flag())
203        self.Realize()
204       
205    def enable_print(self, panel):
206        self.EnableTool(GUIFRAME_ID.PRINT_ID, panel.get_print_flag())
207        self.Realize()
208   
209    def enable_zoom(self, panel):
210        self.EnableTool(GUIFRAME_ID.ZOOM_ID, panel.get_zoom_flag())
211        self.Realize()
212       
213    def enable_zoom_in(self, panel):
214        self.EnableTool(GUIFRAME_ID.ZOOM_IN_ID, panel.get_zoom_in_flag())
215        self.Realize()
216       
217    def enable_zoom_out(self, panel):
218        self.EnableTool(GUIFRAME_ID.ZOOM_OUT_ID, panel.get_zoom_out_flag())
219        self.Realize()
220       
221    def enable_bookmark(self, panel):
222        flag =  panel.get_bookmark_flag()
223        self._bookmark_bt.Enable(flag)
224        self.Realize()
225       
226    def enable_save(self, panel):
227        self.EnableTool(GUIFRAME_ID.SAVE_ID, panel.get_save_flag())
228        self.Realize()
229       
230    def enable_reset(self, panel):
231        self.EnableTool(GUIFRAME_ID.RESET_ID, panel.get_reset_flag())
232        self.Realize()
233   
234    def enable_preview(self, panel):
235        self.EnableTool(GUIFRAME_ID.PREVIEW_ID, panel.get_preview_flag())
236        self.Realize()
237   
238    def on_bookmark(self, event):
239        """
240        add book mark
241        """
242        if self.parent is not None:
243           self.parent.on_bookmark_panel(event)
244           
245    def append_bookmark(self, event):
246        """
247        receive item to append on the toolbar button bookmark
248        """
249        title = event.title
250        hint = event.hint
251        handler = event.handler
252        id = wx.NewId()
253        self._bookmark_menu.Append(id, str(title), str(hint))
254        wx.EVT_MENU(self, id, handler)
255   
256    def remove_bookmark_item(self, item):   
257        """
258        Remove a bookmark item
259        """
260        self._bookmark_menu.DestroyItem(item)
261       
262    def get_bookmark_items(self):
263        """
264        Get bookmark menu items
265        """
266        return self._bookmark_menu.GetMenuItems()
267   
268    def append_bookmark_item(self, id, label):
269        """
270        Append a item in bookmark
271        """
272        self._bookmark_menu.Append(id, label)
Note: See TracBrowser for help on using the repository browser.