123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- //--------------------------------------------------------------------------------------------------
- // AutoRepeatButton.m Orginal Code By Will Fisher, Concept By Eric Moore, Rewritten By Will Fisher
- //
- // Use like this:
- // #include </lib/AutoRepeatButton.m>
- // Global AutoRepeatButton MyButton, MyOtherButton;
- //
- // Fill in the buttons function into MyButton.OnLeftClick() as normal.
- //
- // Use AutoRepeat_ClickType to find the type of call to MyButton.onLeftClick() where
- // AutoRepeat_ClickType==1 is the first call to onLeftClick
- // AutoRepeat_ClickType==2 is a subsequent call to onLeftClick
- // AutoRepeat_ClickType==0 is an erronious call to onLeftClick, you should usually ignore
- // MyButton.onLeftClick() in this case
- // See other functions below:
- //--------------------------------------------------------------------------------------------------
- Function AutoRepeat_Load(); // ALWAYS call this in System.OnScriptLoaded()
- Function AutoRepeat_Unload(); // ALWAYS call this in System.OnScriptUnloading()
- Function AutoRepeat_Stop(); // stop the current button from autorepeating
- Function Button AutoRepeat_GetCurrentButton(); /* returns the currently autorepeating button,
- returns NULL if no button is autorepeating */
- Function AutoRepeat_SetInitalDelay(int millis); /* set this for the first delay when the button is
- pressed, defaults to 800ms (no need to use this
- unless other delay is required) */
-
- Function AutoRepeat_SetRepeatDelay(int millis); /* set this for the subsequent delay, defaults to
- 80ms (no need to use this unless other delay is
- required) */
- Function Int AutoRepeat_GetInitalDelay(); // get the first delay length in millisecs
- Function Int AutoRepeat_GetRepeatDelay(); // get the subsequent delay in millisecs
- Class Button AutoRepeatButton;
- Global Timer _autorepeatTimer;
- Global Int _InitialDelay;
- Global Int _RepeatDelay;
- Global Int AutoRepeat_ClickType;
- Global Button _Latched;
- AutoRepeatButton.onLeftButtonDown(int x, int y) {
- _Latched = AutoRepeatButton;
- AutoRepeat_ClickType = 1; // first click
- AutoRepeatButton.leftClick();
- AutoRepeat_ClickType = 0; // no click
- _autorepeatTimer.setDelay(_InitialDelay);
- _autorepeatTimer.start();
- }
- AutoRepeatButton.onLeftButtonUp(int x, int y) {
- _AutoRepeatTimer.Stop();
- _Latched = NULL;
- }
- _AutoRepeatTimer.onTimer() {
- if(_autorepeatTimer.getDelay() != _RepeatDelay) _autorepeatTimer.setDelay(_RepeatDelay);
- AutoRepeat_ClickType = 2; // AutoRepeat
- _Latched.LeftClick();
- AutoRepeat_ClickType = 0; // no click
- }
- AutoRepeat_Load() {
- _autoRepeatTimer = new Timer;
- _InitialDelay = 800;
- _RepeatDelay = 80;
- AutoRepeat_ClickType = 0;
- }
- AutoRepeat_Unload() {
- delete _autoRepeatTimer;
- }
- AutoRepeat_SetInitalDelay(int millis) {
- _InitialDelay = millis;
- }
- AutoRepeat_SetRepeatDelay(int millis) {
- _RepeatDelay = millis;
- }
- AutoRepeat_GetInitalDelay() {
- return _InitialDelay;
- }
- AutoRepeat_GetRepeatDelay() {
- return _repeatDelay;
- }
- AutoRepeat_Stop() {
- _autorepeatTimer.stop();
- _Latched = NULL;
- }
- AutoRepeat_GetCurrentButton() {
- return _Latched;
- }
|