Author: bugman Date: Thu Jun 14 00:05:46 2012 New Revision: 16907 URL: http://svn.gna.org/viewcvs/relax?rev=16907&view=rev Log: Created the gui.misc.bitmap_setup() function for handling bitmap alpha correctly on operating systems. This function is required to handle alpha in bitmap on MS Windows so that regions with partial transparency are not blended into the default dark grey colour of Windows' windows. Modified: trunk/gui/analyses/auto_model_free.py trunk/gui/analyses/base.py trunk/gui/analyses/wizard.py trunk/gui/components/free_file_format.py trunk/gui/controller.py trunk/gui/export_bmrb.py trunk/gui/message.py trunk/gui/misc.py trunk/gui/pipe_editor.py trunk/gui/relax_gui.py trunk/gui/spin_viewer/containers.py trunk/gui/wizard.py Modified: trunk/gui/analyses/auto_model_free.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/analyses/auto_model_free.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/analyses/auto_model_free.py (original) +++ trunk/gui/analyses/auto_model_free.py Thu Jun 14 00:05:46 2012 @@ -51,7 +51,7 @@ from gui.filedialog import RelaxDirDialog from gui.fonts import font from gui.message import error_message, Question, Missing_data -from gui.misc import add_border, protected_exec +from gui.misc import add_border, bitmap_setup, protected_exec from gui import paths from gui.string_conv import gui_to_int, gui_to_str, list_to_gui, str_to_gui from gui.uf_objects import Uf_storage; uf_store = Uf_storage() @@ -447,7 +447,7 @@ # Add the model-free bitmap picture. for i in range(len(bitmaps)): # The bitmap. - bitmap = wx.StaticBitmap(self, -1, wx.Bitmap(bitmaps[i], wx.BITMAP_TYPE_ANY)) + bitmap = wx.StaticBitmap(self, -1, bitmap_setup(bitmaps[i])) # Add it. left_box.Add(bitmap, 0, wx.ALL, 0) Modified: trunk/gui/analyses/base.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/analyses/base.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/analyses/base.py (original) +++ trunk/gui/analyses/base.py Thu Jun 14 00:05:46 2012 @@ -40,7 +40,7 @@ from gui import paths from gui.analyses.elements import Text_ctrl from gui.fonts import font -from gui.misc import add_border, format_table +from gui.misc import add_border, bitmap_setup, format_table from gui.string_conv import int_to_gui, str_to_gui from gui.wizard import Wiz_page @@ -372,7 +372,7 @@ # Add the bitmaps. for i in range(len(bitmaps)): # The bitmap. - bitmap = wx.StaticBitmap(self, -1, wx.Bitmap(bitmaps[i], wx.BITMAP_TYPE_ANY)) + bitmap = wx.StaticBitmap(self, -1, bitmap_setup(bitmaps[i])) # Add it. box.Add(bitmap, 0, wx.ADJUST_MINSIZE, 10) Modified: trunk/gui/analyses/wizard.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/analyses/wizard.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/analyses/wizard.py (original) +++ trunk/gui/analyses/wizard.py Thu Jun 14 00:05:46 2012 @@ -33,6 +33,7 @@ from gui import paths from gui.fonts import font from gui.input_elements.value import Value +from gui.misc import bitmap_setup from gui.string_conv import gui_to_str, str_to_gui from gui.wizard import Wiz_page, Wiz_window @@ -191,7 +192,7 @@ sizer2.AddSpacer(30) # Add the graphics. - self.image = wx.StaticBitmap(self, -1, wx.Bitmap(self.image_path, wx.BITMAP_TYPE_ANY)) + self.image = wx.StaticBitmap(self, -1, bitmap_setup(self.image_path)) sizer2.Add(self.image, 0, wx.TOP|wx.ALIGN_CENTER_HORIZONTAL, 0) # Nest the sizers. Modified: trunk/gui/components/free_file_format.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/components/free_file_format.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/components/free_file_format.py (original) +++ trunk/gui/components/free_file_format.py Thu Jun 14 00:05:46 2012 @@ -34,6 +34,7 @@ from gui.icons import relax_icons from gui.input_elements.value import Value from gui.message import Question +from gui.misc import bitmap_setup from gui import paths from gui.string_conv import gui_to_int, int_to_gui, str_to_gui from gui.wizard import Wiz_page @@ -307,7 +308,7 @@ self.main_sizer.AddStretchSpacer() # The relax logo. - bmp = wx.StaticBitmap(self, -1, wx.Bitmap(paths.IMAGE_PATH+'relax.gif', wx.BITMAP_TYPE_ANY)) + bmp = wx.StaticBitmap(self, -1, bitmap_setup(paths.IMAGE_PATH+'relax.gif')) self.main_sizer.Add(bmp, 0, wx.ALIGN_CENTER_HORIZONTAL, 5) self.main_sizer.AddStretchSpacer() Modified: trunk/gui/controller.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/controller.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/controller.py (original) +++ trunk/gui/controller.py Thu Jun 14 00:05:46 2012 @@ -39,7 +39,7 @@ from gui.components.menu import build_menu_item from gui.fonts import font from gui.icons import relax_icons -from gui.misc import add_border +from gui.misc import add_border, bitmap_setup from gui.paths import IMAGE_PATH, icon_16x16 from gui.string_conv import str_to_gui from info import Info_box @@ -185,7 +185,7 @@ """ # The logo. - logo = wx.StaticBitmap(self.main_panel, -1, wx.Bitmap(IMAGE_PATH+'relax.gif', wx.BITMAP_TYPE_ANY)) + logo = wx.StaticBitmap(self.main_panel, -1, bitmap_setup(IMAGE_PATH+'relax.gif')) # Add the relax logo. sizer.Add(logo, 0, wx.TOP|wx.ALIGN_CENTER_HORIZONTAL, 0) Modified: trunk/gui/export_bmrb.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/export_bmrb.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/export_bmrb.py (original) +++ trunk/gui/export_bmrb.py Thu Jun 14 00:05:46 2012 @@ -42,7 +42,7 @@ from gui.fonts import font from gui.icons import relax_icons from gui.input_elements.value import Value -from gui.misc import add_border +from gui.misc import add_border, bitmap_setup from gui.string_conv import gui_to_str, str_to_gui from gui.uf_objects import Uf_storage; uf_store = Uf_storage() @@ -236,7 +236,7 @@ sub_sizer.AddStretchSpacer(3) # Add the BMRB logo (left side). - logo = wx.StaticBitmap(self.main_panel, -1, wx.Bitmap(IMAGE_PATH+"bmrb_100x100.png", wx.BITMAP_TYPE_ANY)) + logo = wx.StaticBitmap(self.main_panel, -1, bitmap_setup(IMAGE_PATH+"bmrb_100x100.png")) sub_sizer.Add(logo, 0, wx.TOP|wx.ALIGN_CENTER_HORIZONTAL, 0) # Spacing. @@ -267,7 +267,7 @@ sub_sizer.AddStretchSpacer() # Add the BMRB logo (right side). - logo = wx.StaticBitmap(self.main_panel, -1, wx.Bitmap(IMAGE_PATH+"bmrb_100x100.png", wx.BITMAP_TYPE_ANY)) + logo = wx.StaticBitmap(self.main_panel, -1, bitmap_setup(IMAGE_PATH+"bmrb_100x100.png")) sub_sizer.Add(logo, 0, wx.TOP|wx.ALIGN_CENTER_HORIZONTAL, 0) # Right spacing. Modified: trunk/gui/message.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/message.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/message.py (original) +++ trunk/gui/message.py Thu Jun 14 00:05:46 2012 @@ -34,6 +34,7 @@ # relax GUI module imports. from gui.fonts import font from gui.icons import relax_icons +from gui.misc import bitmap_setup from gui.paths import IMAGE_PATH, icon_22x22, icon_48x48 import gui @@ -92,7 +93,7 @@ sizer = gui.misc.add_border(main_sizer, border=10, packing=wx.HORIZONTAL) # Add the graphic. - bitmap = wx.StaticBitmap(self, -1, wx.Bitmap(icon_48x48.user_busy, wx.BITMAP_TYPE_ANY)) + bitmap = wx.StaticBitmap(self, -1, bitmap_setup(icon_48x48.user_busy)) sizer.Add(bitmap) # Spacing. @@ -182,7 +183,7 @@ sizer = gui.misc.add_border(main_sizer, border=self.border, packing=wx.HORIZONTAL) # Add the graphic. - bitmap = wx.StaticBitmap(self, -1, wx.Bitmap(icon_48x48.dialog_warning_relax, wx.BITMAP_TYPE_ANY)) + bitmap = wx.StaticBitmap(self, -1, bitmap_setup(icon_48x48.dialog_warning_relax)) sizer.Add(bitmap) # Spacing. Modified: trunk/gui/misc.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/misc.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/misc.py (original) +++ trunk/gui/misc.py Thu Jun 14 00:05:46 2012 @@ -115,6 +115,28 @@ return sizer_cent +def bitmap_setup(path): + """Build and return the bitmap, handling transparency for all operating systems. + + This function is required to handle alpha in bitmap on MS Windows so that regions with partial transparency are not blended into the default dark grey colour of Windows' windows. + + @param path: The absolute path to the bitmap image. + @type path: str + @return: The processed bitmap object. + @rtype: wx.Bitmap instance + """ + + # Create the bitmap object. + bitmap = wx.Bitmap(path, wx.BITMAP_TYPE_ANY) + + # Unset the mask if an alpha mask is detected. + if bitmap.HasAlpha(): + bitmap.SetMaskColour(None) + + # Return the bitmap object. + return bitmap + + def format_table(table): """Format the text by stripping whitespace. Modified: trunk/gui/pipe_editor.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/pipe_editor.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/pipe_editor.py (original) +++ trunk/gui/pipe_editor.py Thu Jun 14 00:05:46 2012 @@ -38,7 +38,7 @@ from gui.fonts import font from gui.icons import relax_icons from gui.message import Question -from gui.misc import add_border +from gui.misc import add_border, bitmap_setup from gui.paths import icon_16x16, icon_22x22, WIZARD_IMAGE_PATH from gui.string_conv import gui_to_str, str_to_gui from gui.uf_objects import Uf_storage; uf_store = Uf_storage() @@ -293,7 +293,7 @@ """ # The pipe logo. - logo = wx.StaticBitmap(self.main_panel, -1, wx.Bitmap(WIZARD_IMAGE_PATH+'pipe_200x90.png', wx.BITMAP_TYPE_ANY)) + logo = wx.StaticBitmap(self.main_panel, -1, bitmap_setup(WIZARD_IMAGE_PATH+'pipe_200x90.png')) # Pack the logo. box.Add(logo, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) Modified: trunk/gui/relax_gui.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/relax_gui.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/relax_gui.py (original) +++ trunk/gui/relax_gui.py Thu Jun 14 00:05:46 2012 @@ -61,7 +61,7 @@ from gui.interpreter import Interpreter from gui.menu import Menu from gui.message import error_message, Question -from gui.misc import gui_raise, open_file, protected_exec +from gui.misc import bitmap_setup, gui_raise, open_file, protected_exec from gui import paths from gui.pipe_editor import Pipe_editor from gui.references import References @@ -257,7 +257,7 @@ self.SetSizer(sizer) # The relax icon. - image = wx.StaticBitmap(self, -1, wx.Bitmap(paths.IMAGE_PATH+'ulysses_shadowless_400x168.png', wx.BITMAP_TYPE_ANY)) + image = wx.StaticBitmap(self, -1, bitmap_setup(paths.IMAGE_PATH+'ulysses_shadowless_400x168.png')) # Add the icon to the main spacer with spacing. sizer.AddStretchSpacer() Modified: trunk/gui/spin_viewer/containers.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/spin_viewer/containers.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/spin_viewer/containers.py (original) +++ trunk/gui/spin_viewer/containers.py Thu Jun 14 00:05:46 2012 @@ -34,6 +34,7 @@ # GUI module imports. from gui import paths +from gui.misc import bitmap_setup from gui.string_conv import str_to_gui @@ -266,7 +267,7 @@ path = paths.WIZARD_IMAGE_PATH + 'molecule.png' else: path = paths.WIZARD_IMAGE_PATH + 'molecule_grey.png' - image = wx.StaticBitmap(self.parent, -1, wx.Bitmap(path, wx.BITMAP_TYPE_ANY)) + image = wx.StaticBitmap(self.parent, -1, bitmap_setup(path)) sizer.Add(image, 0, wx.RIGHT, 0) # Return the sizer. @@ -358,7 +359,7 @@ path = paths.WIZARD_IMAGE_PATH + 'residue.png' else: path = paths.WIZARD_IMAGE_PATH + 'residue_grey.png' - image = wx.StaticBitmap(self.parent, -1, wx.Bitmap(path, wx.BITMAP_TYPE_ANY)) + image = wx.StaticBitmap(self.parent, -1, bitmap_setup(path)) sizer.Add(image, 0, wx.RIGHT, 0) # Return the sizer. @@ -464,7 +465,7 @@ path = paths.WIZARD_IMAGE_PATH + 'spin.png' else: path = paths.WIZARD_IMAGE_PATH + 'spin_grey.png' - image = wx.StaticBitmap(self.parent, -1, wx.Bitmap(path, wx.BITMAP_TYPE_ANY)) + image = wx.StaticBitmap(self.parent, -1, bitmap_setup(path)) sizer.Add(image, 0, wx.RIGHT, 0) # Return the sizer. Modified: trunk/gui/wizard.py URL: http://svn.gna.org/viewcvs/relax/trunk/gui/wizard.py?rev=16907&r1=16906&r2=16907&view=diff ============================================================================== --- trunk/gui/wizard.py (original) +++ trunk/gui/wizard.py Thu Jun 14 00:05:46 2012 @@ -37,7 +37,7 @@ from gui.filedialog import RelaxFileDialog from gui.fonts import font from gui.icons import relax_icons -from gui.misc import add_border, open_file, protected_exec +from gui.misc import add_border, bitmap_setup, open_file, protected_exec from gui import paths from gui.string_conv import bool_to_gui, gui_to_int, gui_to_str, int_to_gui, str_to_gui @@ -202,7 +202,7 @@ # Add the graphics. if self.image_path: - self.image = wx.StaticBitmap(self, -1, wx.Bitmap(self.image_path, wx.BITMAP_TYPE_ANY)) + self.image = wx.StaticBitmap(self, -1, bitmap_setup(self.image_path)) sizer.Add(self.image, 0, wx.TOP|wx.ALIGN_CENTER_HORIZONTAL, 0) # A spacer.