void ModuleSpanningTree::OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent) { std::deque<std::string> params; params.push_back(chan->name); params.push_back(user->uuid); params.push_back(":"+reason); if (IS_LOCAL(source)) { Utils->DoOneToMany(source->uuid,"KICK",params); } else if (IS_FAKE(source) && source != Utils->ServerUser) { Utils->DoOneToMany(ServerInstance->Config->GetSID(),"KICK",params); } }
/** * SET: show/hide console (while running, or 10 seconds after finished) * */ int handle_picoc_keys(struct event * event) { if (IS_FAKE(event)) return 1; // only process real buttons, not emulated presses if (gui_menu_shown()) return 1; if (script_state == SCRIPT_RUNNING) { //~ if (handle_picoc_lib_keys(event)==0) return 0; } extern int console_visible; if (script_state != SCRIPT_IDLE) // toggle show/hide { if (event->param == BGMT_PRESS_SET && display_idle()) { console_toggle(); return 0; } } if (script_state == SCRIPT_JUST_FINISHED) // after script finished, hide the console on first key press { if (event->param == BGMT_UNPRESS_SET) { return 0; } if (console_visible && event->param != GMT_OLC_INFO_CHANGED && #ifdef GMT_GUICMD_PRESS_BUTTON_SOMETHING event->param != GMT_GUICMD_PRESS_BUTTON_SOMETHING && #endif 1) { console_hide(); return 1; } } return 1; }
static void gui_main_task_7d() { struct event * event = NULL; int index = 0; void* funcs[GMT_NFUNCS]; memcpy(funcs, (void*)GMT_FUNCTABLE, 4*GMT_NFUNCS); gui_init_end(); while(1) { msg_queue_receive(gui_main_struct.msg_queue, &event, 0); gui_main_struct.counter--; if (event == NULL) continue; index = event->type; if (!magic_is_off()) { if (event->type == 0) { if (handle_buttons(event) == 0) // ML button/event handler continue; } else { if (handle_other_events(event) == 0) continue; } } if (IS_FAKE(event)) event->arg = 0; if ((index >= GMT_NFUNCS) || (index < 0)) continue; void(*f)(struct event *) = funcs[index]; f(event); } }
// Replaces the gui_main_task static void my_gui_main_task( void ) { gui_init_end(); uint32_t * obj = 0; while(1) { struct event * event; msg_queue_receive( gui_main_struct.msg_queue, &event, 0 ); if( !event ) goto event_loop_bottom; if (!magic_is_off() && event->type == 0) { if (handle_buttons(event) == 0) // ML button/event handler goto event_loop_bottom; } if (IS_FAKE(event)) { event->arg = 0; /* do not pass the "fake" flag to Canon code */ } if (event->type == 0 && event->param < 0) { goto event_loop_bottom; /* do not pass internal ML events to Canon code */ } switch( event->type ) { case 0: if( gui_main_struct.obj != obj && event->param != 0x29 && event->param != 0x2A && event->param != 0x2B && event->param != 0x2C && event->param != 0x2D && event->param != 0x2E && event->param != 0x23 && event->param != 0x2F && event->param != 0x27 && event->param != 0x30 && event->param != 0x31 && event->param != 0x32 && event->param != 0x33 && event->param != 0x34 && event->param != 0x35 && event->param != 0x36 && event->param != 0x3F ) goto queue_clear; DebugMsg( DM_MAGIC, 2, "GUI_CONTROL:%d", event->param ); gui_massive_event_loop( event->param, event->obj, event->arg ); break; case 1: if( gui_main_struct.obj != obj && event->param != 0x00 && event->param != 0x07 && event->param != 0x05 ) goto queue_clear; DebugMsg( 0x84, 2, "GUI_CHANGE_MODE:%d", event->param ); if( event->param == 0 ) { gui_local_post( 0x12, 0, 0 ); if( gui_timer_struct.obj ) gui_timer_something( gui_timer_struct.obj, 4 ); } gui_change_mode( event->param ); break; case 2: if( gui_main_struct.obj != obj && event->param != 0x17 && event->param != 0x18 && event->param != 0x14 && event->param != 0x1B && event->param != 0x32 && event->param != 0x33 ) goto queue_clear; gui_local_post( event->param, event->obj, event->arg ); break; case 3: if( event->param == 0x11 ) { DebugMsg( 0x84, 2, "GUIOTHER_CANCEL_ALL_EVENT" ); obj = event->obj; break; } if( gui_main_struct.obj != obj && event->param != 0x00 && event->param != 0x03 && event->param != 0x01 && event->param != 0x12 && event->param != 0x13 && event->param != 0x14 && event->param != 0x15 ) goto queue_clear; DebugMsg( 0x84, 2, "GUI_OTHEREVENT:%d", event->param ); gui_other_post( event->param, event->obj, event->arg ); break; case 4: gui_post_10000085( event->param, event->obj, event->arg ); break; case 5: gui_init_event( event->obj ); break; case 6: DebugMsg( 0x84, 2, "GUI_CHANGE_SHOOT_TYPE:%d", event->param ); gui_change_shoot_type_post( event->param ); break; case 7: DebugMsg( 0x84, 2, "GUI_CHANGE_LCD_STATE:%d", event->param ); gui_change_lcd_state_post( event->param ); break; default: break; } event_loop_bottom: gui_main_struct.counter--; continue; queue_clear: DebugMsg( 0x84, 3, "**** Queue Clear **** event(%d) param(%d)", event->type, event->param ); goto event_loop_bottom; } }