Extracting Window Styles

Well,

win98, Py233, wxPy2515

Here is a function that retrieves all the flags for managed windows (see doc),
extra styles are not included.

#based upon the wxPy2515 doc
def ListOfStyleFlagsForManagedWindows(sty):
    reflist = {
        #wx.Window
        wx.SIMPLE_BORDER: 'wx.SIMPLE_BORDER',
        wx.DOUBLE_BORDER: 'wx.DOUBLE_BORDER',
        wx.SUNKEN_BORDER: 'wx.SUNKEN_BORDER',
        wx.RAISED_BORDER: 'wx.RAISED_BORDER',
        wx.STATIC_BORDER: 'wx.STATIC_BORDER',
        wx.NO_BORDER: 'wx.NO_BORDER',
        wx.TRANSPARENT_WINDOW: 'wx.TRANSPARENT_WINDOW',
        wx.TAB_TRAVERSAL: 'wx.TAB_TRAVERSAL',
        wx.WANTS_CHARS: 'wx.WANTS_CHARS',
        wx.NO_FULL_REPAINT_ON_RESIZE: 'wx.NO_FULL_REPAINT_ON_RESIZE',
        wx.VSCROLL: 'wx.VSCROLL',
        wx.HSCROLL: 'wx.HSCROLL',
        #~ wx.ALWAYS_SHOW_SB: 'wx.ALWAYS_SHOW_SB', unknown in wxPy2515
        wx.CLIP_CHILDREN: 'wx.CLIP_CHILDREN',
        wx.FULL_REPAINT_ON_RESIZE: 'wx.FULL_REPAINT_ON_RESIZE',
        
        #wx.Frame
        wx.DEFAULT_FRAME_STYLE: 'wx.DEFAULT_FRAME_STYLE',
        wx.ICONIZE: 'wx.ICONIZE',
        wx.CAPTION: 'wx.CAPTION',
        wx.MINIMIZE: 'wx.MINIMIZE',
        wx.MINIMIZE_BOX: 'wx.MINIMIZE_BOX',
        wx.MAXIMIZE: 'wx.MAXIMIZE',
        wx.MAXIMIZE_BOX: 'wx.MAXIMIZE_BOX',
        wx.CLOSE_BOX: 'wx.CLOSE_BOX',
        wx.STAY_ON_TOP: 'wx.STAY_ON_TOP',
        wx.SYSTEM_MENU: 'wx.SYSTEM_MENU',
        wx.RESIZE_BORDER: 'wx.RESIZE_BORDER',
        wx.FRAME_TOOL_WINDOW: 'wx.FRAME_TOOL_WINDOW',
        wx.FRAME_NO_TASKBAR: 'wx.FRAME_NO_TASKBAR',
        wx.FRAME_FLOAT_ON_PARENT: 'wx.FRAME_FLOAT_ON_PARENT',
        wx.FRAME_EX_CONTEXTHELP: 'wx.FRAME_EX_CONTEXTHELP',
        wx.FRAME_SHAPED: 'wx.FRAME_SHAPED',
        
        #wx.Dialog
        wx.DEFAULT_DIALOG_STYLE: 'wx.DEFAULT_DIALOG_STYLE',
        wx.RESIZE_BORDER: 'wx.RESIZE_BORDER',
        wx.THICK_FRAME: 'wx.THICK_FRAME',
        wx.NO_3D: 'wx.NO_3D',
        wx.DIALOG_NO_PARENT: 'wx.DIALOG_NO_PARENT',
        wx.DIALOG_EX_CONTEXTHELP: 'wx.DIALOG_EX_CONTEXTHELP',
                
        #wx.MDIChildFrame
                
        #wx.MDIChildFrame
        wx.FRAME_NO_WINDOW_MENU: 'wx.FRAME_NO_WINDOW_MENU',
        
        #wx.MiniFrame
        wx.TINY_CAPTION_HORIZ: 'wx.TINY_CAPTION_HORIZ ',
        wx.TINY_CAPTION_VERT: 'wx.TINY_CAPTION_VERT ',
        
        #wx.SplashScreen
        wx.SPLASH_CENTRE_ON_PARENT: 'wx.SPLASH_CENTRE_ON_PARENT',
        wx.SPLASH_CENTRE_ON_SCREEN: 'wx.SPLASH_CENTRE_ON_SCREEN ',
        wx.SPLASH_NO_CENTRE: 'wx.SPLASH_NO_CENTRE ',
        wx.SPLASH_TIMEOUT: 'wx.SPLASH_TIMEOUT',
        wx.SPLASH_NO_TIMEOUT: 'wx.SPLASH_NO_TIMEOUT',
        
        #wx.TipWindow
        
        #wx.Wizard
    }

    li =
    for k in reflist.keys():
        if (sty & k) == k:
            li.append(reflist[k])
    return li

This exercise would have been a little stupid, if I did not notice
the following points.

1) wx.ALWAYS_SHOW_SB is unknown in wxPy2515

2) wx.DEFAULT_FRAME_STYLE is not equal to

wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER

wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX

but it is equal to

wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER

wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX

& ~wx.CLIP_CHILDREN

Did I do something wrong?

Jean-Michel Fauth, Switzerland

Jean-Michel Fauth wrote:

1) wx.ALWAYS_SHOW_SB is unknown in wxPy2515

Fixed.

2) wx.DEFAULT_FRAME_STYLE is not equal to

wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER
> wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX

but it is equal to

wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER > wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX
& ~wx.CLIP_CHILDREN

In C++ it is defined as:

#define wxDEFAULT_FRAME_STYLE \
   (wxSYSTEM_MENU | wxRESIZE_BORDER | \
    wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX | \
    wxCAPTION | wxCLIP_CHILDREN)

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!