Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
268
Src/Wasabi/api/wnd/wndclass/tabsheet.h
Normal file
268
Src/Wasabi/api/wnd/wndclass/tabsheet.h
Normal file
|
@ -0,0 +1,268 @@
|
|||
#ifndef _TABSHEET_H
|
||||
#define _TABSHEET_H
|
||||
|
||||
#include <api/skin/widgets/grouptgbutton.h>
|
||||
#include <api/wnd/wndclass/buttwnd.h>
|
||||
#include <bfc/common.h>
|
||||
#include <api/wnd/wndclass/guiobjwnd.h>
|
||||
#include <bfc/ptrlist.h>
|
||||
|
||||
class ButtonWnd;
|
||||
class SkinBitmap;
|
||||
class TabButtonBase;
|
||||
class ButtBar;
|
||||
class TabSheetBar;
|
||||
|
||||
#define TABSHEET_GROUPS -2
|
||||
#define TABSHEET_NOTABS -3
|
||||
|
||||
#define TABSHEET_PARENT GuiObjectWnd
|
||||
/**
|
||||
class TabSheet
|
||||
|
||||
@short A TabSheet Control.
|
||||
@author Nullsoft
|
||||
@ver 1.0
|
||||
@see
|
||||
@cat SDK
|
||||
*/
|
||||
class TabSheet : public TABSHEET_PARENT
|
||||
{
|
||||
public:
|
||||
/**
|
||||
TabSheet constructor
|
||||
|
||||
@see ~TabSheet()
|
||||
@param bbtype The type of button bar to use in the tabsheet.
|
||||
*/
|
||||
TabSheet(int bbtype=-1);
|
||||
|
||||
/**
|
||||
TabSheet destructor
|
||||
@see TabSheet()
|
||||
*/
|
||||
virtual ~TabSheet();
|
||||
|
||||
/**
|
||||
TabSheet method onInit
|
||||
@ret 1
|
||||
*/
|
||||
virtual int onInit();
|
||||
|
||||
/**
|
||||
TabSheet method getClientRect
|
||||
|
||||
@param r A pointer to the RECT that will be filled.
|
||||
*/
|
||||
virtual void getClientRect(RECT *);
|
||||
|
||||
/**
|
||||
TabSheet method onPaint
|
||||
|
||||
@ret 1
|
||||
@param canvas The canvas upon which we'll paint ourself.
|
||||
*/
|
||||
virtual int onPaint(Canvas *canvas);
|
||||
|
||||
/**
|
||||
TabSheet method onResize
|
||||
|
||||
@ret 1
|
||||
*/
|
||||
virtual int onResize();
|
||||
|
||||
/**
|
||||
TabSheet method setButtonType .
|
||||
|
||||
@param type The button type.
|
||||
*/
|
||||
void setButtonType(int type);
|
||||
|
||||
/**
|
||||
TabSheet method setTabRowMargin
|
||||
|
||||
@assert newmargin is non-negative
|
||||
@param newmargin The new margin width in pixels.
|
||||
*/
|
||||
void setTabRowMargin(int pixels);
|
||||
|
||||
/**
|
||||
TabSheet method addChild
|
||||
|
||||
@ret One less than the number of tabs
|
||||
@param newchild A pointer to the new child window to add.
|
||||
@param tip The tooltip for the button associated with this child.
|
||||
*/
|
||||
int addChild(BaseWnd *newchild, const wchar_t *tooltip=NULL);
|
||||
|
||||
/**
|
||||
TabSheet method activateChild
|
||||
|
||||
@see addChild()
|
||||
@see killChildren()
|
||||
@ret None
|
||||
@param newactive A pointer to the child window to render active.
|
||||
*/
|
||||
virtual void activateChild(BaseWnd *activechild);
|
||||
|
||||
/**
|
||||
TabSheet method killChildren .
|
||||
*/
|
||||
virtual void killChildren();
|
||||
|
||||
/**
|
||||
TabSheet method childNotify .
|
||||
|
||||
@ret Returns 1 when complete.
|
||||
@param child The child that's being notified.
|
||||
@param msg The message.
|
||||
@param param1 Custom parameter 1.
|
||||
@param param2 Custom parameter 2.
|
||||
*/
|
||||
virtual int childNotify(ifc_window *child, int msg,
|
||||
intptr_t param1=0, intptr_t param2=0);
|
||||
|
||||
void setContentMarginLeft(int cm);
|
||||
void setContentMarginTop(int cm);
|
||||
void setContentMarginRight(int cm);
|
||||
void setContentMarginBottom(int cm);
|
||||
|
||||
/**
|
||||
TabSheet method enumChild
|
||||
@ret The base window of the specified tab button, or NULL if there is none.
|
||||
*/
|
||||
BaseWnd *enumChild(int child);
|
||||
|
||||
/**
|
||||
TabSheet method getNumChild
|
||||
@ret The number of tabs
|
||||
*/
|
||||
int getNumChild();
|
||||
|
||||
BaseWnd *getActiveChild() { return active; }
|
||||
virtual void onSetPage(int n) { lastpage = n; }
|
||||
int getCurPage() { return lastpage; }
|
||||
void setCurPage(int page);
|
||||
int getNumPages() { return tabs.getNumItems(); }
|
||||
void nextPage() { int n = getCurPage()+1; if (n >= getNumPages()) n = 0; setCurPage(n); }
|
||||
void previousPage() { int n = getCurPage()-1; if (n < 0) n = getNumPages()-1; setCurPage(n); }
|
||||
int onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source);
|
||||
|
||||
protected:
|
||||
/** TabSheet method enumButton
|
||||
@ret The specified tab, or NULL if there is none. */
|
||||
TabButtonBase *enumButton(int button);
|
||||
|
||||
public:
|
||||
/**
|
||||
TabSheet method setBackgroundBmp
|
||||
|
||||
@param name The name of the bitmap to use.
|
||||
*/
|
||||
#ifdef WASABI_COMPILE_IMGLDR
|
||||
void setBackgroundBmp(const wchar_t *name); //FG
|
||||
#endif
|
||||
SkinBitmap *getBackgroundBitmap(); //FG
|
||||
|
||||
protected:
|
||||
// you can set these in your constructor, they will be deleted for you
|
||||
ButtonWnd *leftscroll, *rightscroll;
|
||||
SkinBitmap *background;
|
||||
|
||||
private:
|
||||
int tabrowheight, tabrowwidth, tabrowmargin;
|
||||
PtrList<TabButtonBase> tabs;
|
||||
|
||||
ButtBar *bb;
|
||||
TabSheetBar *tsb;
|
||||
GuiObjectWnd *contentwnd;
|
||||
|
||||
int tilex, tilew;
|
||||
|
||||
BaseWnd *active;
|
||||
int type;
|
||||
int content_margin_left, content_margin_top, content_margin_right, content_margin_bottom;
|
||||
int lastpage;
|
||||
};
|
||||
|
||||
class TabButtonBase
|
||||
{
|
||||
public:
|
||||
TabButtonBase(BaseWnd *linkWnd, TabSheet *par, const wchar_t *tip=NULL);
|
||||
virtual ~TabButtonBase();
|
||||
|
||||
BaseWnd *getBaseWnd() const { return linked; }
|
||||
void setNoDeleteLinked(int i) { nodeletelinked = i; }
|
||||
|
||||
virtual void btn_setHilite(int tf)=0;
|
||||
virtual void btn_setText(const wchar_t *txt)=0;
|
||||
|
||||
protected:
|
||||
BaseWnd *linked;
|
||||
TabSheet *parent;
|
||||
int nodeletelinked;
|
||||
};
|
||||
|
||||
#define TABBUTTON_PARENT ButtonWnd
|
||||
|
||||
/**
|
||||
Class TabButton
|
||||
|
||||
@short
|
||||
@author Nullsoft
|
||||
@ver 1.0
|
||||
@see TabButtonBase
|
||||
@cat SDK
|
||||
*/
|
||||
class TabButton : public TABBUTTON_PARENT, public TabButtonBase {
|
||||
public:
|
||||
/**
|
||||
TabButton constructor
|
||||
|
||||
@assert The BaseWnd passed to this method must previously be linked.
|
||||
@param linkwnd The window to associate with this button.
|
||||
@param par A pointer to the parent tabsheet.
|
||||
@param tip The tooltip for the window associated with this button.
|
||||
*/
|
||||
TabButton(BaseWnd *linkWnd, TabSheet *par, const wchar_t *tip=NULL) : TabButtonBase(linkWnd, par, tip)
|
||||
{
|
||||
if (tip != NULL)
|
||||
setTip(tip);
|
||||
}
|
||||
|
||||
/**
|
||||
TabButton method onInit
|
||||
|
||||
@ret 1
|
||||
*/
|
||||
virtual int onInit();
|
||||
|
||||
/**
|
||||
TabButton method onLeftPush .
|
||||
|
||||
@assert parent and linked both exist.
|
||||
@param x The X position, of the mouse pointer, in the client screen.
|
||||
@param y The Y position, of the mouse pointer, in the client screen.
|
||||
*/
|
||||
virtual void onLeftPush(int x, int y);
|
||||
virtual void btn_setHilite(int tf);
|
||||
virtual void btn_setText(const wchar_t *text);
|
||||
};
|
||||
|
||||
|
||||
#define GROUPTABBUTTON_PARENT GroupToggleButton
|
||||
class GroupTabButton : public GROUPTABBUTTON_PARENT, public TabButtonBase {
|
||||
public:
|
||||
GroupTabButton(BaseWnd *linkWnd, TabSheet *par, const wchar_t *tip=NULL) : TabButtonBase(linkWnd, par, tip)
|
||||
{
|
||||
setGroups(L"wasabi.tabsheet.button.selected.group", L"wasabi.tabsheet.button.unselected.group");
|
||||
}
|
||||
virtual int wantFullClick() { return 0; }
|
||||
virtual int wantAutoToggle() { return 0; }
|
||||
virtual int onInit();
|
||||
virtual void grouptoggle_onLeftPush();
|
||||
virtual void btn_setHilite(int tf);
|
||||
virtual void btn_setText(const wchar_t *text);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue