Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
109
Src/Wasabi/api/skin/widgets/grouptgbutton.cpp
Normal file
109
Src/Wasabi/api/skin/widgets/grouptgbutton.cpp
Normal file
|
@ -0,0 +1,109 @@
|
|||
#include <precomp.h>
|
||||
#include "grouptgbutton.h"
|
||||
#include <api/script/objects/guiobject.h>
|
||||
#include <api/wnd/notifmsg.h>
|
||||
|
||||
GroupToggleButton::GroupToggleButton() {
|
||||
status = STATUS_OFF;
|
||||
}
|
||||
|
||||
GroupToggleButton::~GroupToggleButton() {
|
||||
}
|
||||
|
||||
void GroupToggleButton::setGroups(const wchar_t *_on, const wchar_t *_off) {
|
||||
on_id = _on;
|
||||
on.setContent(on_id);
|
||||
off_id = _off;
|
||||
off.setContent(off_id);
|
||||
}
|
||||
|
||||
int GroupToggleButton::onInit() {
|
||||
int rt = GROUPTOGGLEBUTTON_PARENT::onInit();
|
||||
initGroups();
|
||||
return rt;
|
||||
}
|
||||
|
||||
void GroupToggleButton::initGroups() {
|
||||
on.setStartHidden(status == STATUS_ON ? 0 : 1); off.setStartHidden(status == STATUS_ON ? 1 : 0);
|
||||
on.setContent(on_id);
|
||||
off.setContent(off_id);
|
||||
on.setParent(this); off.setParent(this);
|
||||
on.init(this); off.init(this);
|
||||
rootwndholder_setRootWnd(status == STATUS_ON ? &on : &off);
|
||||
}
|
||||
|
||||
int GroupToggleButton::childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2) {
|
||||
if (child == &on || child == &off) {
|
||||
switch (msg) {
|
||||
case ChildNotify::BUTTON_LEFTPUSH: {
|
||||
if (wantFullClick()) grouptoggle_onLeftPush();
|
||||
return 1;
|
||||
}
|
||||
case ChildNotify::BUTTON_RIGHTPUSH: {
|
||||
if (wantFullClick()) grouptoggle_onRightPush();
|
||||
return 1;
|
||||
}
|
||||
case ChildNotify::CLICKWND_LEFTDOWN: {
|
||||
if (!wantFullClick()) grouptoggle_onLeftPush();
|
||||
return 1;
|
||||
}
|
||||
case ChildNotify::CLICKWND_RIGHTDOWN: {
|
||||
if (!wantFullClick()) grouptoggle_onRightPush();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return GROUPTOGGLEBUTTON_PARENT::childNotify(child, msg, param1, param2);
|
||||
}
|
||||
|
||||
void GroupToggleButton::toggle() {
|
||||
if (status == STATUS_OFF) {
|
||||
if (isInited()) {
|
||||
off.setVisible(0);
|
||||
on.setVisible(1);
|
||||
rootwndholder_setRootWnd(&on);
|
||||
}
|
||||
status = STATUS_ON;
|
||||
} else {
|
||||
if (isInited()) {
|
||||
on.setVisible(0);
|
||||
off.setVisible(1);
|
||||
rootwndholder_setRootWnd(&off);
|
||||
}
|
||||
status = STATUS_OFF;
|
||||
}
|
||||
notifyParent(ChildNotify::GROUPCLICKTGBUTTON_TOGGLE, status);
|
||||
}
|
||||
|
||||
void GroupToggleButton::setStatus(int s) {
|
||||
if (s != status)
|
||||
toggle();
|
||||
}
|
||||
|
||||
int GroupToggleButton::wantFullClick() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void GroupToggleButton::grouptoggle_onLeftPush() {
|
||||
notifyParent(ChildNotify::GROUPCLICKTGBUTTON_CLICKED);
|
||||
if (!wantAutoToggle()) return;
|
||||
if (status == STATUS_ON && !off_id.isempty() || status == STATUS_OFF && !on_id.isempty())
|
||||
toggle();
|
||||
}
|
||||
|
||||
void GroupToggleButton::grouptoggle_onRightPush() {
|
||||
}
|
||||
|
||||
GroupClickWnd *GroupToggleButton::enumGroups(int n) {
|
||||
if (n == 0) return &on;
|
||||
if (n == 1) return &off;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int GroupToggleButton::getNumGroups() {
|
||||
int i=0;
|
||||
i++;
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue