mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
joys
This commit is contained in:
parent
632c534a90
commit
02ea8a3b82
@ -148,19 +148,29 @@ void GuiButton::switch_state(GuiButton::States nstate) {
|
|||||||
break;
|
break;
|
||||||
case UP:
|
case UP:
|
||||||
_mgr->add_label(_up);
|
_mgr->add_label(_up);
|
||||||
if (!_up_event.empty())
|
if (!_up_event.empty()) {
|
||||||
|
gui_cat->debug() << "throwing _up_event '" << _up_event << "'" << endl;
|
||||||
throw_event(_up_event);
|
throw_event(_up_event);
|
||||||
|
} else
|
||||||
|
gui_cat->debug() << "_up_event is empty!" << endl;
|
||||||
_rgn->trap_clicks(true);
|
_rgn->trap_clicks(true);
|
||||||
break;
|
break;
|
||||||
case UP_ROLLOVER:
|
case UP_ROLLOVER:
|
||||||
if (_up_rollover != (GuiLabel*)0L) {
|
if (_up_rollover != (GuiLabel*)0L) {
|
||||||
_mgr->add_label(_up_rollover);
|
_mgr->add_label(_up_rollover);
|
||||||
if (!_up_rollover_event.empty())
|
if (!_up_rollover_event.empty()) {
|
||||||
|
gui_cat->debug() << "throwing _up_rollover_event '" << _up_rollover_event << "'"
|
||||||
|
<< endl;
|
||||||
throw_event(_up_rollover_event);
|
throw_event(_up_rollover_event);
|
||||||
|
} else
|
||||||
|
gui_cat->debug() << "_up_rollover_event is empty!" << endl;
|
||||||
} else {
|
} else {
|
||||||
_mgr->add_label(_up);
|
_mgr->add_label(_up);
|
||||||
if (!_up_event.empty())
|
if (!_up_event.empty()) {
|
||||||
|
gui_cat->debug() << "throwing _up_event '" << _up_event << "'" << endl;
|
||||||
throw_event(_up_event);
|
throw_event(_up_event);
|
||||||
|
} else
|
||||||
|
gui_cat->debug() << "_up_event is empty!" << endl;
|
||||||
_state = UP;
|
_state = UP;
|
||||||
}
|
}
|
||||||
_rgn->trap_clicks(true);
|
_rgn->trap_clicks(true);
|
||||||
@ -169,6 +179,8 @@ void GuiButton::switch_state(GuiButton::States nstate) {
|
|||||||
_mgr->add_label(_down);
|
_mgr->add_label(_down);
|
||||||
if (!_down_event.empty())
|
if (!_down_event.empty())
|
||||||
throw_event(_down_event);
|
throw_event(_down_event);
|
||||||
|
else
|
||||||
|
gui_cat->debug() << "_down_event is empty!" << endl;
|
||||||
_rgn->trap_clicks(true);
|
_rgn->trap_clicks(true);
|
||||||
break;
|
break;
|
||||||
case DOWN_ROLLOVER:
|
case DOWN_ROLLOVER:
|
||||||
@ -176,10 +188,14 @@ void GuiButton::switch_state(GuiButton::States nstate) {
|
|||||||
_mgr->add_label(_down_rollover);
|
_mgr->add_label(_down_rollover);
|
||||||
if (!_down_rollover_event.empty())
|
if (!_down_rollover_event.empty())
|
||||||
throw_event(_down_rollover_event);
|
throw_event(_down_rollover_event);
|
||||||
|
else
|
||||||
|
gui_cat->debug() << "_down_rollover_event is empty!" << endl;
|
||||||
} else {
|
} else {
|
||||||
_mgr->add_label(_down);
|
_mgr->add_label(_down);
|
||||||
if (!_down_event.empty())
|
if (!_down_event.empty())
|
||||||
throw_event(_down_event);
|
throw_event(_down_event);
|
||||||
|
else
|
||||||
|
gui_cat->debug() << "_down_event is empty!" << endl;
|
||||||
_state = DOWN;
|
_state = DOWN;
|
||||||
}
|
}
|
||||||
_rgn->trap_clicks(true);
|
_rgn->trap_clicks(true);
|
||||||
@ -223,17 +239,22 @@ void GuiButton::recompute_frame(void) {
|
|||||||
|
|
||||||
void GuiButton::behavior_up(CPT_Event, void* data) {
|
void GuiButton::behavior_up(CPT_Event, void* data) {
|
||||||
GuiButton* button = (GuiButton*)data;
|
GuiButton* button = (GuiButton*)data;
|
||||||
|
gui_cat->debug() << "behavior_up (0x" << data << ")" << endl;
|
||||||
button->run_button_up();
|
button->run_button_up();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiButton::behavior_down(CPT_Event, void* data) {
|
void GuiButton::behavior_down(CPT_Event, void* data) {
|
||||||
GuiButton* button = (GuiButton*)data;
|
GuiButton* button = (GuiButton*)data;
|
||||||
|
gui_cat->debug() << "behavior_down (0x" << data << ")" << endl;
|
||||||
button->run_button_down();
|
button->run_button_down();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiButton::run_button_up(void) {
|
void GuiButton::run_button_up(void) {
|
||||||
|
gui_cat->debug() << "run_button_up (0x" << (void*)this << " '" << this->get_name()
|
||||||
|
<< "')" << endl;
|
||||||
if (_eh == (EventHandler*)0L)
|
if (_eh == (EventHandler*)0L)
|
||||||
return;
|
return;
|
||||||
|
gui_cat->debug() << "doing work" << endl;
|
||||||
_eh->remove_hook(_up_event, GuiButton::behavior_up, (void*)this);
|
_eh->remove_hook(_up_event, GuiButton::behavior_up, (void*)this);
|
||||||
_eh->remove_hook(_up_rollover_event, GuiButton::behavior_up, (void*)this);
|
_eh->remove_hook(_up_rollover_event, GuiButton::behavior_up, (void*)this);
|
||||||
if (!_behavior_event.empty())
|
if (!_behavior_event.empty())
|
||||||
@ -243,8 +264,12 @@ void GuiButton::run_button_up(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GuiButton::run_button_down(void) {
|
void GuiButton::run_button_down(void) {
|
||||||
|
gui_cat->debug() << "run_button_down (0x" << (void*)this << " '" << this->get_name()
|
||||||
|
<< "')" << endl;
|
||||||
if (_eh == (EventHandler*)0L)
|
if (_eh == (EventHandler*)0L)
|
||||||
return;
|
return;
|
||||||
|
gui_cat->debug() << "doing work, up_event is '" << _up_event << "' '"
|
||||||
|
<< _up_rollover_event << "'" << endl;
|
||||||
_eh->add_hook(_up_event, GuiButton::behavior_up, (void*)this);
|
_eh->add_hook(_up_event, GuiButton::behavior_up, (void*)this);
|
||||||
_eh->add_hook(_up_rollover_event, GuiButton::behavior_up, (void*)this);
|
_eh->add_hook(_up_rollover_event, GuiButton::behavior_up, (void*)this);
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,20 @@ static void test3(GuiManager* mgr, Node* font) {
|
|||||||
l4->set_background_color(1., 1., 1., 0.5);
|
l4->set_background_color(1., 1., 1., 0.5);
|
||||||
b1->thaw();
|
b1->thaw();
|
||||||
b1->manage(mgr, event_handler);
|
b1->manage(mgr, event_handler);
|
||||||
|
GuiLabel* ll1 = GuiLabel::make_simple_text_label("lup", font);
|
||||||
|
GuiLabel* ll2 = GuiLabel::make_simple_text_label("lupr", font);
|
||||||
|
GuiLabel* ll3 = GuiLabel::make_simple_text_label("ldown", font);
|
||||||
|
GuiLabel* ll4 = GuiLabel::make_simple_text_label("ldownr", font);
|
||||||
|
GuiLabel* ll5 = GuiLabel::make_simple_text_label("lnone", font);
|
||||||
|
GuiButton* b2 = new GuiButton("test3_2", ll1, ll2, ll3, ll4, ll5);
|
||||||
|
b2->set_scale(0.1);
|
||||||
|
b2->set_pos(LVector3f::rfu(0.25, 0., 0.25));
|
||||||
|
ll2->set_foreground_color(1., 1., 0., 1.);
|
||||||
|
ll4->set_foreground_color(1., 1., 0., 1.);
|
||||||
|
ll3->set_background_color(1., 1., 1., 0.5);
|
||||||
|
ll4->set_background_color(1., 1., 1., 0.5);
|
||||||
|
b2->thaw();
|
||||||
|
b2->manage(mgr, event_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test4(GuiManager* mgr, Node* font) {
|
static void test4(GuiManager* mgr, Node* font) {
|
||||||
@ -624,6 +638,27 @@ static void test11(GuiManager* mgr, Node* font) {
|
|||||||
lb1->manage(mgr, event_handler);
|
lb1->manage(mgr, event_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test12(GuiManager* mgr, Node* font) {
|
||||||
|
GuiLabel* l1 = GuiLabel::make_simple_text_label("up", font);
|
||||||
|
GuiLabel* l2 = GuiLabel::make_simple_text_label("upr", font);
|
||||||
|
GuiLabel* l3 = GuiLabel::make_simple_text_label("down", font);
|
||||||
|
GuiLabel* l4 = GuiLabel::make_simple_text_label("downr", font);
|
||||||
|
GuiLabel* l5 = GuiLabel::make_simple_text_label("none", font);
|
||||||
|
GuiButton* b1 = new GuiButton("test3", l1, l2, l3, l4, l5);
|
||||||
|
b1->set_scale(0.1);
|
||||||
|
b1->set_pos(LVector3f::rfu(-0.25, 0., 0.25));
|
||||||
|
l2->set_foreground_color(1., 1., 0., 1.);
|
||||||
|
l4->set_foreground_color(1., 1., 0., 1.);
|
||||||
|
l1->set_background_color(0., 0., 0., 1.);
|
||||||
|
l2->set_background_color(0., 0., 0., 1.);
|
||||||
|
l3->set_background_color(1., 1., 1., 0.5);
|
||||||
|
l4->set_background_color(1., 1., 1., 0.5);
|
||||||
|
b1->thaw();
|
||||||
|
b1->manage(mgr, event_handler);
|
||||||
|
b1->set_behavior_event("demo-event-thing");
|
||||||
|
b1->start_behavior();
|
||||||
|
}
|
||||||
|
|
||||||
static void setup_gui(void) {
|
static void setup_gui(void) {
|
||||||
GuiManager* mgr = GuiManager::get_ptr(main_win, mak, (Node*)0L);
|
GuiManager* mgr = GuiManager::get_ptr(main_win, mak, (Node*)0L);
|
||||||
PT_Node font = ModelPool::load_model("ttf-comic");
|
PT_Node font = ModelPool::load_model("ttf-comic");
|
||||||
@ -632,7 +667,7 @@ static void setup_gui(void) {
|
|||||||
// test 2
|
// test 2
|
||||||
// test2(mgr, font);
|
// test2(mgr, font);
|
||||||
// test 3
|
// test 3
|
||||||
test3(mgr, font);
|
// test3(mgr, font);
|
||||||
// test 4
|
// test 4
|
||||||
// test4(mgr, font);
|
// test4(mgr, font);
|
||||||
// test 5
|
// test 5
|
||||||
@ -652,6 +687,8 @@ static void setup_gui(void) {
|
|||||||
// test10(mgr, font);
|
// test10(mgr, font);
|
||||||
// test 11
|
// test 11
|
||||||
// test11(mgr, font);
|
// test11(mgr, font);
|
||||||
|
// test 12
|
||||||
|
test12(mgr, font);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_2(CPT_Event) {
|
static void event_2(CPT_Event) {
|
||||||
@ -743,6 +780,10 @@ static void event_4(CPT_Event) {
|
|||||||
cout << *lb1;
|
cout << *lb1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void event_demo(CPT_Event) {
|
||||||
|
cout << "got demo-event-thing event!" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
void gui_keys(EventHandler&) {
|
void gui_keys(EventHandler&) {
|
||||||
new RenderRelation( lights, dlight );
|
new RenderRelation( lights, dlight );
|
||||||
have_dlight = true;
|
have_dlight = true;
|
||||||
@ -754,6 +795,7 @@ void gui_keys(EventHandler&) {
|
|||||||
// for test 11
|
// for test 11
|
||||||
event_handler.add_hook("4", event_4);
|
event_handler.add_hook("4", event_4);
|
||||||
*/
|
*/
|
||||||
|
event_handler.add_hook("demo-event-thing", event_demo);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user