1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
/////////////////////////////////////////////////////////////////////////////
// Name: ribbongalleryitem.h
// Purpose: wxRibbonGalleryItem declaration
// Author: Mark Dootson
// SVN ID: $Id: $
// Copyright: (c) 2012 Mattia barbon
// Licence: This program is free software; you can redistribute it and/or
// modify it under the same terms as Perl itself
/////////////////////////////////////////////////////////////////////////////
//
// Declaration for these classes is in source CPP files so we need a
// declaration here. It is horrible and means we have to review every
// wxWidgets release.
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _WXPERL_RIBBON_BUTTON_TOOL_BASES_H_
#define _WXPERL_RIBBON_BUTTON_TOOL_BASES_H_
class wxRibbonButtonBarButtonSizeInfo
{
public:
bool is_supported;
wxSize size;
wxRect normal_region;
wxRect dropdown_region;
};
class wxRibbonButtonBarButtonInstance
{
public:
wxPoint position;
wxRibbonButtonBarButtonBase* base;
wxRibbonButtonBarButtonState size;
};
class wxRibbonToolBarToolBase
{
public:
wxString help_string;
wxBitmap bitmap;
wxBitmap bitmap_disabled;
wxRect dropdown;
wxPoint position;
wxSize size;
wxObject* client_data;
int id;
wxRibbonButtonKind kind;
long state;
};
class wxRibbonButtonBarButtonBase
{
public:
wxRibbonButtonBarButtonInstance NewInstance()
{
wxRibbonButtonBarButtonInstance i;
i.base = this;
return i;
}
wxRibbonButtonBarButtonState GetLargestSize()
{
if(sizes[wxRIBBON_BUTTONBAR_BUTTON_LARGE].is_supported)
return wxRIBBON_BUTTONBAR_BUTTON_LARGE;
if(sizes[wxRIBBON_BUTTONBAR_BUTTON_MEDIUM].is_supported)
return wxRIBBON_BUTTONBAR_BUTTON_MEDIUM;
wxASSERT(sizes[wxRIBBON_BUTTONBAR_BUTTON_SMALL].is_supported);
return wxRIBBON_BUTTONBAR_BUTTON_SMALL;
}
bool GetSmallerSize(
wxRibbonButtonBarButtonState* size, int n = 1)
{
for(; n > 0; --n)
{
switch(*size)
{
case wxRIBBON_BUTTONBAR_BUTTON_LARGE:
if(sizes[wxRIBBON_BUTTONBAR_BUTTON_MEDIUM].is_supported)
{
*size = wxRIBBON_BUTTONBAR_BUTTON_MEDIUM;
break;
}
case wxRIBBON_BUTTONBAR_BUTTON_MEDIUM:
if(sizes[wxRIBBON_BUTTONBAR_BUTTON_SMALL].is_supported)
{
*size = wxRIBBON_BUTTONBAR_BUTTON_SMALL;
break;
}
case wxRIBBON_BUTTONBAR_BUTTON_SMALL:
default:
return false;
}
}
return true;
}
wxString label;
wxString help_string;
wxBitmap bitmap_large;
wxBitmap bitmap_large_disabled;
wxBitmap bitmap_small;
wxBitmap bitmap_small_disabled;
wxRibbonButtonBarButtonSizeInfo sizes[3];
wxObject* client_data;
int id;
wxRibbonButtonKind kind;
long state;
};
WX_DEFINE_ARRAY_PTR(wxRibbonToolBarToolBase*, wxArrayRibbonToolBarToolBase);
class wxRibbonToolBarToolGroup
{
public:
// To identify the group as a wxRibbonToolBarToolBase*
wxRibbonToolBarToolBase dummy_tool;
wxArrayRibbonToolBarToolBase tools;
wxPoint position;
wxSize size;
};
#endif
|