AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

RADIAL MENU scripts --> New: RM Themes by LiquidGravity
Goto page 1, 2, 3 ... 13, 14, 15  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Fri Nov 06, 2009 4:08 pm    Post subject: RADIAL MENU scripts --> New: RM Themes by LiquidGravity Reply with quote

Here you can find my 4+1 radial menu scripts:
1. Radial menu v3 - generally recommended, especially if you like "release to select", up to 95 items in total, submenus,
built-in skins, multiple item rings, custom subroutines, mouse gestures, sounds, effects, nice graphics...
This one uses the power of Tic's (Tariq Porter) GDI+ functions library. Thank you Tic!
2. Simple radial menu - recommended if you like "left click to select", up to 8 items per menu and simplicity
3. Radial menu v2 - recommended if you like "touch to select", up to 8 items per menu, larger text&buttons, special effects...
4. Radial menu v1 - obsolete
5. Radial menu "mg" method

All menus are skinnable.

You can also find some nice modifications and experiments from other AHK members here.
Just scroll this topic down...


Radial menu v3
Short description:
Radial menu is a new method of giving commands to your computer. It's a powerful hotkey, launcher, and mouse gestures
system packed in ergonomic and nice looking interface. It is driven by AutoHotkey, so it can do almost anything.

Radial menu program consist of 1) radial menu module and 2) mouse gestures functionality.
Please read Radial menu help file for further information.

Default hotkeys:
Rbutton:
- Drag down to show radial menu module.
- Drag in other directions to execute mouse gestures.
Lbutton: shows/hides submenus

Get latest original version:
Radial menu 3.18 ... Read releasing post.

Get RM modifications*:
- Radial menu v3.18 Touch_Mod by Houndx ... Read releasing post.
- Radial menu v3.18 Themes by LiquidGravity ... Read releasing post.

Licence included in Radial menu package.

___________________
* Note: RM licence prohibits (re)distribution without my written permission.
These people have my permission to upload their modifications. If you want to upload your modification, ask me for permission first.
Also read Posting Radial menu code - regulation.













Click here to see more previews - 30.12.2009.


Simple radial menu (40x40 buttons)
Short description:
Written in "newbie friendly style"
Draws radial menu when you press & hold RButton. Short RButton click has normal RButton click function. No "touch to select", so left click to select. It can also serve as AlwaysOnTop toolbar. This script uses just one GUI (Gui 90). Treats text&picture gui controls as buttons.
You can even form larger control panels that are AlwaysOnTop, transparent, movable, unfocused.

Script will automatically download Button3 40x40.png and save it in %A_scriptdir%
Code:
;===Description=========================================================================
; Simple radial menu (40x40 buttons)       by Learning one
; AHK forum location: http://www.autohotkey.com/forum/viewtopic.php?p=308352#308352

; "Newbie friendly style"
; This script draws radial menu when you press & hold RButton. Click on item with LButton to execute item's subroutine.
; Short RButton click (shorter than BuildDelay variable's value in "settings") sends normal RButton click
; Press Escape to ExitApp

; Script can also serve as AlwaysOnTop toolbar. No "touch to select", so click to select.
; Some thoughts: You can draw multiple rings of buttons, so you can have much more than 8 items per menu.
; You can reposition 1, 3, 5, 7, (or all) items closer to center. Than you will form square menu.
; You can even form larger control panels that are AlwaysOnTop, transparent, movable, unfocused. (To move showed menu/control panel
; just press hotkey again at new position)



;===Settings============================================================================
BuildDelay = 200            ; Menu show delay (in miliseconds). This delay gives you opportunity to send normal RButton click
ButtonBack = Button3 40x40.png   ; Button's background
TransBack = 1               ; Sets transparent Gui's background on/off.    1 means: on, 0 means: off
UnfocusMenu = 1               ; Activates window that was active before pressing hotkey, so you can scroll it, type text, etc...
ReturnMouse = 1               ; Returns mouse in initial position   

;===Set item names here=== (use `n if you need)
Item1_name = Item1      
Item2_name = Item2
Item3_name = Item3
Item4_name = Item4
Item5_name = Item5
Item6_name = Item6
Item7_name = Item7
Item8_name = Item8

; Define your own BUTTON ACTIONS, and a HOTKEY few lines lower. You will se the marks: ;===SET BUTTON ACTIONS HERE=== ;===SET HOTKEY HERE===
   


;===Auto-execute========================================================================
IfNotExist, %A_scriptdir%\%ButtonBack%
{
   URLDownloadToFile, http://www.autohotkey.net/~Learning one/Radial Menu/%ButtonBack%, %A_scriptdir%\%ButtonBack%
   Sleep, 500
}

Gui 90: +AlwaysOnTop +ToolWindow -caption +LastFound
WinSet, Region, 1-0 W180 H180 R180-180
Gui 90:Font, s7 cwhite, Arial
Gui 90:Color, fffffd

Gui 90:Add, Picture, x70 y10 w40 h40 BackgroundTrans gItem1, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x115 y25 w40 h40 BackgroundTrans gItem2, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x130 y70 w40 h40 BackgroundTrans gItem3, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x115 y115 w40 h40 BackgroundTrans gItem4, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x70 y130 w40 h40 BackgroundTrans gItem5, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x25 y115 w40 h40 BackgroundTrans gItem6, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x10 y70 w40 h40 BackgroundTrans gItem7, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x25 y25 w40 h40 BackgroundTrans gItem8, %A_scriptdir%\%ButtonBack%
Gui 90:Add, Picture, x70 y70 w40 h40 BackgroundTrans gGuiClose, %A_scriptdir%\%ButtonBack%

Gui 90:Add, Text, x73 y13 w34 h34 Center BackgroundTrans gItem1, %Item1_name%   
Gui 90:Add, Text, x118 y28 w34 h34 Center BackgroundTrans gItem2, %Item2_name%
Gui 90:Add, Text, x133 y73 w34 h34 Center BackgroundTrans gItem3, %Item3_name%
Gui 90:Add, Text, x118 y118 w34 h34 Center BackgroundTrans gItem4, %Item4_name%
Gui 90:Add, Text, x73 y133 w34 h34 Center BackgroundTrans gItem5, %Item5_name%
Gui 90:Add, Text, x28 y118 w34 h34 Center BackgroundTrans gItem6, %Item6_name%
Gui 90:Add, Text, x13 y73 w34 h34 Center BackgroundTrans gItem7, %Item7_name%
Gui 90:Add, Text, x28 y28 w34 h34 Center BackgroundTrans gItem8, %Item8_name%
Gui 90:Add, Text, x73 y78 w34 h24 Center BackgroundTrans gGuiClose, Close`nMenu
Return



;===Subroutines=========================================================================
;===SET BUTTON ACTIONS HERE===
Item1:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item2:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item3:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item4:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item5:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item6:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item7:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

Item8:
Gosub, MutualActions
MsgBox,,You selected:, %A_ThisLabel%,1      ;  Define your own button actions! (MsgBox is just example)
Return

GuiClose:      ; (Close Menu, central button)
MutualActions:
SendInput, {LButton up}
Gui 90:Hide                  
CoordMode, mouse, Screen
if ReturnMouse = 1            ; returns mouse in initial position   
MouseMove,  %mx1%, %my1%      
CoordMode, mouse, Relative
if UnfocusMenu = 1
WinActivate, %ActiveWin%
Return



;===Hotkey==============================================================================
;===SET HOTKEY HERE=== (don't forget to change: if not (GetKeyState("RButton","p")) and SendInput, {RButton})
RButton::
WinGetActiveTitle, ActiveWin
Sleep, %BuildDelay%
if not (GetKeyState("RButton","p"))
{
   SendInput, {RButton}
   Return
}
CoordMode, mouse, Screen
MouseGetPos, mx1, my1         ; gets mouse initial position
RMGuiX := mx1 - 90
RMGuiY := my1 - 90
Gui 90:Show, x%RMGuiX% y%RMGuiY% w180 h180, RadialMenuGui
if TransBack = 1
WinSet, TransColor, fffffd 255, RadialMenuGui
if UnfocusMenu = 1
WinActivate, %ActiveWin%
Return



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ExitApp
Pause::
Suspend
Pause,,1
return

Escape::
Suspend
ExitApp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


RADIAL MENU v2

Short description:
Draws radial menu when you press & hold RButton. Short RButton click has normal RButton click function.
Touch items with mouse to select them. Release RButton to hide menu.
Script treats 8 carefully positioned & shaped GUIs as buttons.

Script will automatically download Button2.png and save it in %A_scriptdir%
Please read Description & comments in script.

LICENCE:
Free for non-commercial use.
For commercial use, e-mail me please.
If you will use Radial menu in your free software,
mention author's name and contact.
Author: Boris Mudrinic (Learning one on AHK forum)
Contact: boris-mudrinic@net.hr

Some additional button backgrounds can be found here:
http://www.autohotkey.net/~Learning%20one/Radial%20Menu/Button3.png
http://www.autohotkey.net/~Learning%20one/Radial%20Menu/Button4.png
(Button.png is used for Radial menu v1)
If you create some better looking buttons, share them. Insert them in this topic, or put a link. (Try to use 70x70 images)

When you copy&paste script from "code box", it sometimes gets untidy.
In that case, copy code from here:
http://www.autohotkey.net/~Learning%20one/Radial%20Menu/Radial%20menu%20v2.ahk


RADIAL MENU v2
(70x70 buttons)
Code:

;===Description=========================================================================
/*
RADIAL MENU v2        by Learning one
AHK forum location: http://www.autohotkey.com/forum/viewtopic.php?p=308352#308352

Draws radial menu when you press & hold RButton. Touch items with mouse to select them. Release RButton to hide menu.
After each selection, mouse will bounce back to center. You can easily select multiple items at once, just with one mouse click!

When I was writing this script, my goals were (sorted by priority):
1. minimize mouse clicks
2. minimize mouse movements
3. minimize eye movements
4. support longer item names than in RADIAL MENU v1
5. not too big, practical, and nice looking menu
6. preserve normal RButton click function
7. write script in tidy, neat style to ease studying and modifying job for all members of AHK community
8. add some special effects

HOW DOES IT WORK? It simply draws 8 carefully positioned & shaped GUIs. See comments in script.
IMPORTANT: Menu items are identified by GUI's title, not by item's text. As GUI's titles are Item1, Item2 etc., we can say that items are identified by position.
I was using high GUI numbers, so you can easily implant Radial menu in your script.

SOME THOUGHTS: Don't think that 8 items are the limit of this menu! One item can be submenu that will open new radial menu! Or, selecting one "special" item
may also have effect like pressing modyfiers on you keyboard (Ctrl, Alt, etc.)! There are almost no limits! Such "special" items may have different
color or may be slightly transparent. Also try to create context sensitive radial menu (menu items are different for different active windows).
That's what I did (my private version). Add icons instead of item's text. Change item's background picture (try to use 70x70 images).
Add some sounds. Create different menu build effect. There are plenty of "make-up" and functional possibilities.

LICENCE:
Free for non-commercial use.
For commercial use, e-mail me please.
If you will use Radial menu in your free software,
mention author's name and contact.
Author:      Boris Mudrinic (Learning one on AHK forum)
Contact:   boris-mudrinic@net.hr

HOTKEYS:
RButton      ; Press & hold to show menu. Touch items with mouse to select them. Release RButton to hide menu.
Escape      ; ExitApp
Pause      ; Pauses the script's current thread and suspends RButton Hotkey, but not Escape Hotkey!

CODE STRUCTURE:
Settings
Auto-execute
Hotkey
Subroutines
   GetSelectedItem
   RadialMenuClose
   ItemBounceOnSel
My standard ExitApp and Suspend+Pause hotkeys

For those who don't know, you can change item's action in GetSelectedItem subroutine
*/


;===Settings============================================================================
TextSize = 9      ; Item's text size      Once when you get used to your radial menu, you will remember item's positions, and text size won't be so important to you. So you will select items by position in your mind, not by reading item's text.

TextColor = white   ; Item's text color
Font = Arial      ; Item's font

BuildDelay = 170   ; menu will start to show itself after %BuildDelay% miliseconds. To show it instantly, set 0. This delay gives you opportunity to send normal RButton click without annoying menu showing. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 (if you have them - I don't) and use BuildDelay = 0. MButton is also good idea.

BuildEffect = 30   ; menu items will show themself, one by one, in interval of %BuildEffect% ms. To show them all instantly, set 0.

ItemBounce = 1      ; 1 means: items will bounce when you select them. 0 means: items will not bounce.
SoundOnSelect = 1   ; 1 means: play sound when item is selected. 0 means: don't play sound. Of course, you can change sound...
; SoundOnShow      ; Play with effects: you can easily add this by slightly modifying script...
; SoundOnDestroy   

Color = Black      ; this is alternative background color, if script can't load picture (button picture).


;===Auto-execute======================================================================
IfNotExist, %A_scriptdir%\Button2.png
{
   URLDownloadToFile, http://www.autohotkey.net/~Learning one/Radial Menu/Button2.png, %A_scriptdir%\Button2.png
   Sleep, 500
}

StringTrimRight, Sname, A_ScriptName, 4
Menu, Tray, Tip, %Sname%
Loop, 8                 ; load item's background (fake button), set altenative background and font
{
   ; If you want to change item's background, try to use 70x70 images. Some other backgrounds are available on:
   ; http://www.autohotkey.net/~Learning one/Radial Menu
   
   ; Play with effects: small deviations in Add, Picture options have interesting effect:
   ; x0 y-1 w69 h69     ; small shadow
   ; x0 y-1 w71 h71     ; no shadow
   Gui 9%A_Index%:Add, Picture, x0 y-1 w69 h69 , %A_scriptdir%\Button2.png
   Gui 9%A_Index%:Font,  s%TextSize%, %Font%
   Gui 9%A_Index%: Color, %Color%
}

;======Set item names======
; This is just example. Build your own menu! You don't need to manually reposition item's text (like in Radial menu v1).

; Play with effects: Remove BackgroundTrans in GuiTextOptions and set Color = 757500 (GUI's color)
GuiTextOptions = x7 y10 w56 h50 c%TextColor% BackgroundTrans

Loop, 4
Gui 9%A_Index%:Add, Text, %GuiTextOptions% , Item%A_Index%   ; Auto build items 1-5

Gui 95:Add, Text, %GuiTextOptions% , Calc               ; Calculator (as Item5)
Gui 96:Add, Text, %GuiTextOptions% , Notepad            ; Notepad (as Item6)
Gui 97:Add, Text, %GuiTextOptions% , Windows`nexplorer      ; Windows explorer (as Item7)
Gui 98:Add, Text, %GuiTextOptions% , About               ; About (as Item8)
;==========================


;===Hotkey==============================================================================
RButton::   ; Press & hold to show menu. Touch items with mouse to select them. Release RButton to hide menu. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 if you have them ( I don't :( )
PressedTime = 0
CoordMode, mouse, Screen
MouseGetPos, mx1, my1
SetTimer, RadialMenuClose, 35

Loop, 8      ; Draw items (GUIs) at exact positions
{
   if A_index = 1
   {
     RMx := mx1-35
     RMy := my1-135
      if BuildDelay
      {
         Sleep , %BuildDelay%      ; menu will start to show itself after %BuildDelay% ms
         if not (GetKeyState("RButton","p"))
         Return
      }
   }
   Else if A_index = 2
   {
      RMx := mx1+33
      RMy := my1-103
   }
   Else if A_index = 3
   {
      RMx := mx1+65
      RMy := my1-35
   }
   Else if A_index = 4
   {
      RMx := mx1+33
      RMy := my1+33
   }
   Else if A_index = 5
   {
      RMx := mx1-35
      RMy := my1+65
   }
   Else if A_index = 6
   {
      RMx := mx1-103
      RMy := my1+33
   }
   Else if A_index = 7
   {
      RMx := mx1-135
      RMy := my1-35
   }
   Else if A_index = 8
   {
      RMx := mx1-103
      RMy := my1-103
   }

   Gui 9%A_Index%: +AlwaysOnTop +ToolWindow -caption +LastFound
   WinSet, Region, 1-0 W70 H70 R25-25
   Gui 9%A_Index%: Show, x%RMx% y%RMy% h70 w70, Item%A_Index%   
   WinSet, Transparent, 255, Item%A_Index%
   
   Sleep, %BuildEffect%
   if not (GetKeyState("RButton","p"))
   Return
}

SetTimer, GetSelectedItem, 15
Return


;===Subroutines=========================================================================
GetSelectedItem:            ; menu items are identified by GUI's title!
MouseGetPos, , , WinID
WinGetTitle, Item, ahk_id %WinID%

if Item contains Item      ; This is just example. Build your own menu!
{
   CoordMode, mouse, Screen
   MouseMove, %mx1%, %my1%
   if Item = Item8         ; About Radial menu
   {
      if ItemBounce = 1
     Gosub, ItemBounceOnSel
     MsgBox, 64, About, Title:%A_Tab%Radial menu v2`nAuthor:%A_Tab%Boris Mudrinic (Learning one on AHK forum)`nContact:%A_Tab%boris-mudrinic@net.hr`n`nLicence:`nFree for non-commercial use.`nFor commercial use, e-mail me please.`n`nIf you will use Radial menu in your free software,`nmention author's name and contact.
      Return
   }
   else if Item = Item7   ; Runs Windows Explorer
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\explorer.exe
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else if Item = Item6   ; Runs Notepad
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, notepad
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else if Item = Item5   ; Runs Calculator
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\system32\calc.exe
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else
   {
      if ItemBounce = 1
      Gosub, ItemBounceOnSel
      MsgBox,, You selected:, %Item%,1
   }
}
Return
   
RadialMenuClose:
PressedTime++
if not (GetKeyState("RButton","p"))
{
   if (PressedTime < 7)   ; if user holded RButton for less than 210ms ...
   SendInput, {RButton}   ; ... script will send normal RButton click
   
   SetTimer, GetSelectedItem, off
   SetTimer, RadialMenuClose, off
   
   ; Fade out effect
   InitialTrans = 255
   Loop, 17
   {
      Loop, 8
      WinSet, Transparent, %InitialTrans%, Item%A_Index%
      InitialTrans -= 15
      Sleep, 25         ; change fade out speed if you wish
   }
   Loop, 8
   Gui 9%A_index%: Hide
   Return
}
Return

ItemBounceOnSel:        ; bounce effect
Critical
WinGetPos, XBounce, YBounce,,, %Item%
SetTimer, RadialMenuClose, off
SetTimer, GetSelectedItem, off
SetWinDelay, 5          ; bounce speed

if Item = Item1
{
   Loop, 8
   {
      if A_Index <= 4
      YBounce -= 4      ; bounce lenght
      Else
      YBounce += 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item2
{
   Loop, 8
   {
      if A_Index <= 4
      {
         XBounce += 4
         YBounce -= 4
      }
      Else
      {
         XBounce -= 4
         YBounce += 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item3
{
   Loop, 8
   {
      if A_Index <= 4
      XBounce += 4
      Else
      XBounce -= 4
     WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item4
{
   Loop, 8
   {
      if A_Index <= 4
      {
         XBounce += 4
         YBounce += 4
      }
      Else
      {
         XBounce -= 4
         YBounce -= 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item5
{
   Loop, 8
   {
      if A_Index <= 4
      YBounce += 4
      Else
      YBounce -= 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item6
{
   Loop, 8
   {
      if A_Index <= 4
      {
         XBounce -= 4
         YBounce += 4
      }
      Else
      {
         XBounce += 4
         YBounce -= 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item7
{
   Loop, 8
   {
      if A_Index <= 4
      XBounce -= 4
      Else
      XBounce += 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item8
{
   Loop, 8
   {
      if A_Index <= 4
      {
         XBounce -= 4
         YBounce -= 4
      }
      Else
      {
         XBounce += 4
         YBounce += 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}

SetWinDelay, 100    ; default
SetTimer, GetSelectedItem, on
SetTimer, RadialMenuClose, on
Return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ExitApp
Pause::
Suspend
Pause,,1
return

Escape::
Suspend
ExitApp
Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


RADIAL MENU v1 - obsolete (40x40 buttons)
Code:
;===Description=========================================================================
/*
RADIAL MENU v1         by Learning one
AHK forum location: http://www.autohotkey.com/forum/viewtopic.php?p=308352#308352

Draws radial menu when you press & hold RButton. Touch items with mouse to select them. Release RButton to hide menu.
After each selection, mouse will bounce back to center. You can easily select multiple items at once, just with one mouse click!
When I was writing this script, my goals were (sorted by priority):
1. minimize mouse clicks
2. minimize mouse movements
3. minimize eye movements
4. smallest possible but practical, and nice looking menu
5. keep normal RButton click function
All goals are successfully accomplished!

HOW DOES IT WORK? It simply draws 8 carefully positioned & shaped GUIs. See comments in script.
IMPORTANT: Menu items are identified by GUI's title, not by item's text. As GUI's titles are Item1, Item2 etc., we can say that items are identified by position.
SOME THOUGHTS: Don't think that 8 items are the limit of this menu! One item can be submenu that will open new radial menu! Or, selecting one "special" item
may also have effect like pressing modyfiers on you keyboard (Ctrl, Alt, etc.)! There are almost no limits! Such special items may have different color.
Also try to create context sensitive radial menu (menu items are different for different active windows). That's what I did. Add icons instead of item's text...
LICENCE : Select About in menu

HOTKEYS:
RButton         ; Press & hold to show menu. Touch items with mouse to select them. Release RButton to hide menu.
Escape         ; ExitApp
Pause         ; Pauses the script's current thread and suspends RButton Hotkey, but not Escape Hotkey!
*/


;===Settings============================================================================
TextSize = 7      ; Item's text size      I wanted very small but readable items. I do not recommend you to change text size. Once when you get used to your radial menu, you will remember item's positions, and text size won't be important to you. So you will select items by position in your mind, not by reading item's text.

TextColor = white   ; Item's text color
Font = Arial      ; Item's font

BuildDelay = 170   ; menu will start to show itself after %BuildDelay% miliseconds. To show it instantly, set 0. This delay gives you opportunity to send normal RButton click without annoying menu showing. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 (if you have them - I don't) and use BuildDelay = 0. MButton is also good idea.

BuildEffect = 30   ; menu items will show themself, one by one, in interval of %BuildEffect% ms. To show them all instantly, set 0.
DestroyEffect = 30   ; menu items will disappear, one by one, in interval of %BuildEffect% ms. To hide them all instantly, set 0.

SoundOnSelect = 1   ; 1 means: play sound when item is selected. 0 means don't play sound. Of coures you can change sound (near the end of the script).
Color = D3C419      ; this is alternative background color, if script can't load picture (button picture).

;Trans = 230      ; After few days of testing, I decided to disable this. It sets transparency of whole menu. If you want to enable this, delete semicolons in this line, and in line placed about 70 lines below ( ;WinSet, Transparent, %Trans% ). I do not recommend this procedure.


;===Auto-execute======================================================================
IfNotExist, %A_scriptdir%\Button.png
{
   URLDownloadToFile, http://www.autohotkey.net/~Learning one/Radial Menu/Button.png, %A_scriptdir%\Button.png
   Sleep, 500
}

StringTrimRight, Sname, A_ScriptName, 4
Menu, Tray, Tip, %Sname%
Loop, 8            ; load item's background (fake button), set altenative background and font
{
   Gui 9%A_Index%:Add, Picture, x0 y0 w40 h40, %A_scriptdir%\Button.png
   Gui 9%A_Index%:Font, s%TextSize%, %Font%
   Gui 9%A_Index%: Color, %Color%
}

;======Set item names======
; This is just example. Build your own menu! The bad thing is that you will sometimes have to manually reposition item's text.
Loop, 4
Gui 9%A_Index%:Add, Text, x2 y14 w36 Center BackgroundTrans c%TextColor% , Item%A_Index%   ; Auto build items 1-5

Gui 95:Add, Text, x2 y14 w36 Center BackgroundTrans c%TextColor% , Calc                  ; Calculator (as Item5)
Gui 96:Add, Text, x2 y14 w36 Center BackgroundTrans c%TextColor% , Notepad               ; Notepad (as Item6)
Gui 97:Add, Text, x2 y9 w36 Center BackgroundTrans c%TextColor% , Windows`nexplorer      ; Windows explorer (as Item7)
Gui 98:Add, Text, x2 y14 w36 Center BackgroundTrans c%TextColor% , About                  ; About (as Item8)
;==========================


;===Hotkey==============================================================================
RButton::   ; Press & hold to show menu. Touch items with mouse to select them. Release RButton to hide menu. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 if you have them ( I don't :( )
PressedTime = 0
CoordMode, mouse, Screen
MouseGetPos, mx1, my1
SetTimer, RadialMenuClose, 35

Loop, 8      ; Draw items at exact positions
{
   if A_index = 1
   {
      RMx := mx1-20
      RMy := my1-80
      if BuildDelay
      {
         Sleep , %BuildDelay%      ; menu will start to show itself after %BuildDelay% ms
         if not (GetKeyState("RButton","p"))
         Return
      }
   }
   Else if A_index = 2
   {
      RMx := mx1+25
      RMy := my1-65
   }
   Else if A_index = 3
   {
      RMx := mx1+40
      RMy := my1-20
   }
   Else if A_index = 4
   {
      RMx := mx1+25
      RMy := my1+25
   }
   Else if A_index = 5
   {
      RMx := mx1-20
      RMy := my1+40
   }
   Else if A_index = 6
   {
      RMx := mx1-65
      RMy := my1+25
   }
   Else if A_index = 7
   {
      RMx := mx1-80
      RMy := my1-20
   }
   Else if A_index = 8
   {
      RMx := mx1-65
      RMy := my1-65
   }

   Gui 9%A_Index%: +AlwaysOnTop +ToolWindow -caption +LastFound
   ;WinSet, Transparent, %Trans%
   WinSet, Region, 1-0 W40 H40 R25-25
   Gui 9%A_Index%: Show, x%RMx% y%RMy% h40 w40, Item%A_Index%   

   Sleep, %BuildEffect%
   if not (GetKeyState("RButton","p"))
   Return
}

SetTimer, GetSelectedItem, 15
Return


;===Subroutines=========================================================================
GetSelectedItem:         ; menu items are identified by GUI's title!
MouseGetPos, , , WinID
WinGetTitle, Item, ahk_id %WinID%

if Item contains Item      ; This is just example. Build your own menu!
{
   CoordMode, mouse, Screen
   MouseMove, %mx1%, %my1%
   if Item = Item8         ; About Radial menu
   {
      MsgBox, 64, About, Title:%A_Tab%Radial menu`nAuthor:%A_Tab%Learning one`nContact:%A_Tab%boris-mudrinic@net.hr`n`nLicence:`nFree for non-commercial use`nFor commercial use, e-mail me please.
      Return
   }
   else if Item = Item7   ; Runs Windows Explorer
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\explorer.exe
      Return
   }
   else if Item = Item6   ; Runs Notepad
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, notepad
      Return
   }
   else if Item = Item5   ; Runs Calculator
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\system32\calc.exe
      Return
   }
   
   else
   MsgBox,, You selected:, %Item%,1.2
}
Return
   
RadialMenuClose:
PressedTime++
if not (GetKeyState("RButton","p"))
{
   if (PressedTime < 7)   ; if user holded RButton for less than 210ms ...
   SendInput, {RButton}   ; ... sctipt will send normal RButton click
   
   SetTimer, GetSelectedItem, off
   SetTimer, RadialMenuClose, off
   Loop, 8
   {
      Gui 9%A_index%: Hide
      Sleep, %DestroyEffect%
   }
   
   Return
}
Return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ExitApp
Pause::
Suspend
Pause,,1
return

Escape::
Suspend
ExitApp
Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Last edited by Learning one on Mon Mar 15, 2010 7:11 pm; edited 58 times in total
Back to top
View user's profile Send private message
HotKeyIt



Joined: 18 Jun 2008
Posts: 2195
Location: GERMANY

PostPosted: Fri Nov 06, 2009 6:12 pm    Post subject: Reply with quote

Looks nice Smile

May I give some comments Smile

While it is nice that mouse jumps back to the middle, a timer before execution would be good as well.
So I would need to point on an item for defined mseconds before it gets executed.
This way I could leave the area when accessed by accident as well Smile

Also would be great if this could be in a function style + variable hotkeys and easy to define menu.
Something like Smile
Code:
;Define menu = ItemName1|FunctionOrLabelOrFilePath:ItemName2|FunctionOrLabelOrFilePath...
MenuItems=Notepad|notepad.exe:Windows`nExplorer|%A_WinDir%\explorer.exe
;User defined Hotkey
Hotkey=RButton
;function
RadialMenu(MenuItems, Hotkey="RButton")


Each time you add/delete/change an Item you would need to change the code and this is not very practical, I think.
_________________
AutoHotFile - ToolTip(n,text,title,options) Wink
Back to top
View user's profile Send private message
MarcInSpace



Joined: 23 Feb 2009
Posts: 30

PostPosted: Fri Nov 06, 2009 7:53 pm    Post subject: Reply with quote

Wow, amazing! Very Happy Thanks for this great script.

Yet, I do agree completely with HotKeyIt about the timer (in fact that was my second reaction! [The first was suprise]) and the "function style". Wink


Greetings,

Marc
Back to top
View user's profile Send private message
Delusion



Joined: 17 Jul 2008
Posts: 155
Location: Greece/Rhodos

PostPosted: Fri Nov 06, 2009 11:15 pm    Post subject: Reply with quote

nice looks great Very Happy
heres something similar : http://www.autohotkey.com/forum/viewtopic.php?t=28984&highlight=radial+menu
_________________
Movie Launcher
Back to top
View user's profile Send private message Visit poster's website
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Sat Nov 07, 2009 4:59 pm    Post subject: Reply with quote

HotKeyIt, MarcInSpace, Delusion, thank you for compliments! Very Happy

@ HotKeyIt, MarcInSpace
Quote:
a timer before execution would be good as well.
So I would need to point on an item for defined mseconds before it gets executed.

Hmm... I prefer "touch to select". It's faster and simpler.

Required actions to select comparison:
* touch to select
1. click&hold Rbutton
2. drag mouse at some angle

* point on an item for defined mseconds before it gets executed
1. click&hold Rbutton
2. drag mouse at some angle
3. you have to think how far you move your mouse
4. after you "aimed" item, you have to wait for defined mseconds


Quote:
Also would be great if this could be in a function style

Yes, I definitely agree. But that will wait for a while...

RADIAL MENU v2
I'm currently working on RADIAL MENU v2. It will look much better. I think I will be able to upload it tomorrow. So visit this topic again!
Back to top
View user's profile Send private message
netfun81



Joined: 28 Oct 2006
Posts: 57

PostPosted: Sat Nov 07, 2009 7:21 pm    Post subject: Reply with quote

Very nice. You might consider making an ini file or an easier way to add/change applications for those more new to AHK.
Back to top
View user's profile Send private message
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Sun Nov 08, 2009 1:45 pm    Post subject: Reply with quote

Check out Radial menu v2!

@netfun81
Quote:
Very nice. You might consider making an ini file or an easier way to add/change applications for those more new to AHK.

Thanks netfun81. Unfortunately, Radial menu v2 still don't use .ini file.
Back to top
View user's profile Send private message
Delusion



Joined: 17 Jul 2008
Posts: 155
Location: Greece/Rhodos

PostPosted: Sun Nov 08, 2009 1:49 pm    Post subject: Reply with quote

nice but i liked the buttons in the first on better...these bigger ones dont look so nice

and yeah using an ini file for quickly adding and removing items would be nice
_________________
Movie Launcher
Back to top
View user's profile Send private message Visit poster's website
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Sun Nov 08, 2009 7:05 pm    Post subject: Reply with quote

Quote:
nice but i liked the buttons in the first on better...these bigger ones dont look so nice


If you prefer smaller, 50x50 buttons - download this:
http://www.autohotkey.net/~Learning%20one/Radial%20Menu/Radial%20menu%20v2.1beta%2050x50.ahk

Creating .ini file will wait for a while...


Last edited by Learning one on Sun Nov 15, 2009 1:06 am; edited 1 time in total
Back to top
View user's profile Send private message
Moebius



Joined: 09 Mar 2009
Posts: 17

PostPosted: Sun Nov 08, 2009 9:09 pm    Post subject: Reply with quote

nice script!
The setting "build effect = 0" does not show the menu instantly.
Maybe the menu should be configurable in a settings file?
Submenus would also be nice.
easyGestures in firefox uses the same method, so it conflicts with radialmenu...

If you like, take a look at my page - i also tried to do a pie menu tool, but its vb6 & flash based.
_________________
http://monschein.org
Back to top
View user's profile Send private message
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Mon Nov 09, 2009 11:16 am    Post subject: Reply with quote

Check out new script, Simple radial menu
Different approach, best results.

@ReflexNPG
Thanks.

use:
BuildDelay = 0
BuildEffect = 0

I took a look at your page. I like your MoWaMouse.
Back to top
View user's profile Send private message
Delusion



Joined: 17 Jul 2008
Posts: 155
Location: Greece/Rhodos

PostPosted: Mon Nov 09, 2009 12:59 pm    Post subject: Reply with quote

nice Smile

i rewrote your new simple radial menu and made some small changes and improvements :

Code:

/*
  Simple radial menu (40x40 buttons)       by Learning one
  Modified by Delusion
  AHK forum location: http://www.autohotkey.com/forum/viewtopic.php?p=308352#308352
*/

;________START_________________________________________|

#NoEnv
#SingleInstance Force
#Persistent
SetBatchLines -1
SetWinDelay -1
SetControlDelay -1

;________SETTINGS______________________________________|

$ProgramName := "Radial Menu", $Version := "Simple Version", $MainGui := "1"
$BuildDelay := "200", $ButtonBack := "Button5.png"

Item1 := "Test"
Item2 := "Meow"
Item3 := "123"
Item4 := "Boring"
Item5 := "Test 2"
Item6 := "blabla"
Item7 := "000"
Item8 := "15HFF"

;________AUTO EXEC_____________________________________|

IFNotExist, %A_ScriptDir%\%$ButtonBack%
{
  URLDownloadToFile, http://www.autohotkey.net/~Delusion/%$ButtonBack%, %A_ScriptDir%\%$ButtonBack%
  Sleep 500
}

  GoSub BuildGui
  Menu Tray, Tip, % $ProgramName A_Space $Version "`n by Learning one (Modified by Delusion)"
  Menu Tray, Icon, Shell32.dll, 44
 
RETURN

;________BUILD GUI_____________________________________|

BuildGui:
  Gui %$MainGui%: +AlwaysOnTop +ToolWindow -Caption +LastFound
  WinSet, Region, 1-0 W180 H180 R180-180
  Gui %$MainGui%: Font, s7 cwhite, Arial
  Gui %$MainGui%: Color, fffffd
  PicturePositions = x70 y10|x115 y25|x130 y70|x115 y115|x70 y130|x25 y115|x10 y70|x25 y25
  TextPositions = x73 y13|x118 y28|x133 y73|x118 y118|x73 y133|x28 y118|x13 y73|x28 y28
  Loop 8
  {
    Loop, Parse, PicturePositions, `|
      Gui %$MainGui%: Add, Picture, %A_LoopField% w40 h40 BackgroundTrans gSub%A_Index%, %A_ScriptDir%\%$ButtonBack%
    Loop, Parse, TextPositions, `|
      Gui %$MainGui%: Add, Text, %A_LoopField% w34 h34 Center Bold BackgroundTrans gSub%A_Index%, % Item%A_Index%
  }
  Gui %$MainGui%:Add, Picture, x70 y70 w40 h40 gGuiHide, %A_ScriptDir%\%$ButtonBack%
  Gui %$MainGui%:Add, Text, x73 y78 w34 h24 Center BackgroundTrans gGuiHide, Close`nMenu
RETURN

;________SUBROUTINES___________________________________|

Sub1:
RETURN

Sub2:
RETURN

Sub3:
RETURN

Sub4:
RETURN

Sub5:
RETURN

Sub6:
RETURN

Sub7:
RETURN

Sub8:
RETURN

;________HOTKEY________________________________________|

RButton::
  Sleep %$BuildDelay%
  IF not (GetKeyState("RButton","p"))
  {
    SendInput {RButton}
    RETURN
  }
  CoordMode Mouse, Screen
  MouseGetPos mx1, my1
  RMGuiX := mx1 - 90
  RMGuiY := my1 - 90
  Gui %$MainGui%: Show, x%RMGuiX% y%RMGuiY% w180 h180, % $ProgramName
  WinSet TransColor, fffffd 255, % $ProgramName
RETURN

GuiHide:
  SendInput {LButton up}
  Gui %$MainGui%: Hide
  CoordMode Mouse, Relative
RETURN

_________________
Movie Launcher
Back to top
View user's profile Send private message Visit poster's website
Moebius



Joined: 09 Mar 2009
Posts: 17

PostPosted: Mon Nov 09, 2009 1:17 pm    Post subject: Reply with quote

i've set builddelay = 0 and buildeffect = 0
but it still draws each item one by one which takes some time...
I like the simple radial menu - it works instantly.

Here i have another 2 cents Smile
What about a dynamic number of menu items?
And what about a taskmanager as radial menu?

Thanks for sharing your scripts!
_________________
http://monschein.org
Back to top
View user's profile Send private message
Learning one



Joined: 04 Apr 2009
Posts: 163
Location: Croatia

PostPosted: Mon Nov 09, 2009 10:11 pm    Post subject: Reply with quote

@Delusion
eh, I also rewrote Simple radial menu before I saw your (nice Smile ) modification...
Simple radial menu is now in "newbie friendly style"

one interesting new setting:
UnfocusMenu = 1 ; Activates window that was active before pressing hotkey, so you can scroll it, type text, etc...


@ReflexNPG
In fact Gui-s are always shown one by one, but with this (0) settings, ti should be almost invisible. It is almost invisible on my computer... Rolling Eyes
Back to top
View user's profile Send private message
doyle



Joined: 14 Nov 2007
Posts: 301
Location: London, England

PostPosted: Tue Nov 10, 2009 10:26 am    Post subject: Reply with quote

Great Script.

I customised v2, so you can specify how many icons you want, and can define them at the start.

I found that I didnt always require 8 icons.

If you think it is a good idea, please add it.

Thanks again.

I have messed around with the button sizes though, so I wouldnt recommend using mine as is.

Code:
Number = 5         ; Number of Icons

TextSize = 8      ; Item's text size      Once when you get used to your radial menu, you will remember item's positions, and text size won't be so important to you. So you will select items by position in your mind, not by reading item's text.


TextColor = black   ; Item's text color
Font = Calibri      ; Item's font

BuildDelay = 170   ; menu will start to show itself after %BuildDelay% miliseconds. To show it instantly, set 0. This delay gives you opportunity to send normal RButton click without annoying menu showing. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 (if you have them - I don't) and use BuildDelay = 0. MButton is also good idea.

BuildEffect = 50   ; menu items will show themself, one by one, in interval of %BuildEffect% ms. To show them all instantly, set 0.

ItemBounce = 1      ; 1 means: items will bounce when you select them. 0 means: items will not bounce.
SoundOnSelect = 1   ; 1 means: play sound when item is selected. 0 means: don't play sound. Of course, you can change sound...
; SoundOnShow      ; Play with effects: you can easily add this by slightly modifying script...
; SoundOnDestroy   

Color = Black      ; this is alternative background color, if script can't load picture (button picture).
ButtonBack =  Button3.png   ; button's background

Item1 = Calc
Item2 = NotePad
Item3 = Explorer
Item4 = About
Item5 =
Item6 =
Item7 =
Item8 =

;===Auto-execute======================================================================

StringTrimRight, Sname, A_ScriptName, 4
Menu, Tray, Tip, %Sname%
Loop, %Number%                ; load item's background (fake button), set altenative background and font
{
   ; If you want to change item's background, try to use 50x50 images. Some other backgrounds are available on:
   ; http://www.autohotkey.net/~Learning one/Radial Menu
   
   ; Play with effects: small deviations in Add, Picture options have interesting effect:
   ; x0 y-1 w69 h69     ; small shadow
   ; x0 y-1 w71 h71     ; no shadow
   Gui 9%A_Index%:Add, Picture, x0 y0 w32 h32 , %A_scriptdir%\%ButtonBack%
   Gui 9%A_Index%:Font,  s%TextSize%, %Font%
   Gui, Color, EEAA99
   Gui +LastFound  ; Make the GUI window the last found window for use by the line below.
   WinSet, TransColor, EEAA99
}

;======Set item names======
; This is just example. Build your own menu! You don't need to manually reposition item's text (like in Radial menu v1).

; Play with effects: Remove BackgroundTrans in GuiTextOptions and set Color = 757500 (GUI's color)
GuiTextOptions = x2 y28 w32 h32 c%TextColor% BackgroundTrans

Loop, %Number%
{
   current := Item%A_Index%
   Gui 9%A_Index%:Add, Text, %GuiTextOptions% , %current%   ; Auto build items 1-5
}
;==========================


;===Hotkey==============================================================================
RButton::   ; Press & hold to show menu. Touch items with mouse to select them. Release RButton to hide menu. THE BEST THING TO DO is to change hotkey to XButton1 or XButton1 if you have them ( I don't :( )
PressedTime = 0
CoordMode, mouse, Screen
MouseGetPos, mx1, my1
SetTimer, RadialMenuClose, 35

Loop, %Number%      ; Draw items (GUIs) at exact positions --> 50x50 buttons
{
   if A_index = 1
   {
     RMx := mx1-25
     RMy := my1-95
      if BuildDelay
      {
         Sleep , %BuildDelay%      ; menu will start to show itself after %BuildDelay% ms
         if not (GetKeyState("RButton","p"))
         Return
      }
   }
   Else if A_index = 2
   {
      RMx := mx1+25
      RMy := my1-75
   }
   Else if A_index = 3
   {
      RMx := mx1+45
      RMy := my1-25
   }
   Else if A_index = 4
   {
      RMx := mx1+25
      RMy := my1+25
   }
   Else if A_index = 5
   {
      RMx := mx1-25
      RMy := my1+45
   }
   Else if A_index = 6
   {
      RMx := mx1-75
      RMy := my1+25
   }
   Else if A_index = 7
   {
      RMx := mx1-95
      RMy := my1-25
   }
   Else if A_index = 8
   {
      RMx := mx1-75
      RMy := my1-75
   }

   Gui 9%A_Index%: +AlwaysOnTop +ToolWindow -caption +LastFound
   ;WinSet, Region, 1-0 W50 H50 R25-25
   Gui 9%A_Index%: Show, x%RMx% y%RMy% h40 w48, Item%A_Index%   
   WinSet, Transparent, 255, Item%A_Index%
   
   Sleep, %BuildEffect%
   if not (GetKeyState("RButton","p"))
   Return
}

SetTimer, GetSelectedItem, 15
Return


;===Subroutines=========================================================================
GetSelectedItem:            ; menu items are identified by GUI's title!
MouseGetPos, , , WinID
WinGetTitle, Item, ahk_id %WinID%

if Item contains Item      ; This is just example. Build your own menu!
{
   CoordMode, mouse, Screen
   MouseMove, %mx1%, %my1%
   if Item = Item8         ; About Radial menu
   {
      if ItemBounce = 1
     Gosub, ItemBounceOnSel
     MsgBox, 64, About, Title:%A_Tab%Radial menu v2`nAuthor:%A_Tab%Boris Mudrinic (Learning one on AHK forum)`nContact:%A_Tab%boris-mudrinic@net.hr`n`nLicence:`nFree for non-commercial use.`nFor commercial use, e-mail me please.`n`nIf you will use Radial menu in your free software,`nmention author's name and contact.
      Return
   }
   else if Item = Item7   ; Runs Windows Explorer
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\explorer.exe
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else if Item = Item6   ; Runs Notepad
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, notepad
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else if Item = Item5   ; Runs Calculator
   {
      if SoundOnSelect = 1
      SoundPlay, *-1    ; plays simple beep.
      Run, %A_WinDir%\system32\calc.exe
     if ItemBounce = 1
     Gosub, ItemBounceOnSel
      Return
   }
   else
   {
      if ItemBounce = 1
      Gosub, ItemBounceOnSel
      MsgBox,, You selected:, %Item%,1
   }
}
Return
   
RadialMenuClose:
PressedTime++
if not (GetKeyState("RButton","p"))
{
   if (PressedTime < 7)   ; if user holded RButton for less than 210ms ...
   SendInput, {RButton}   ; ... script will send normal RButton click
   
   SetTimer, GetSelectedItem, off
   SetTimer, RadialMenuClose, off
   
   ; Fade out effect
   InitialTrans = 255
   Loop, 17
   {
      Loop, %Number%
      WinSet, Transparent, %InitialTrans%, Item%A_Index%
      InitialTrans -= 15
      Sleep, 25         ; change fade out speed if you wish
   }
   Loop, %Number%
   Gui 9%A_index%: Hide
   Return
}
Return

ItemBounceOnSel:        ; bounce effect
Critical
WinGetPos, XBounce, YBounce,,, %Item%
SetTimer, RadialMenuClose, off
SetTimer, GetSelectedItem, off
SetWinDelay, 5          ; bounce speed

if Item = Item1
{
   Loop, %Number%
   {
      if A_Index <= 4
      YBounce -= 4      ; bounce lenght
      Else
      YBounce += 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item2
{
   Loop, %Number%
   {
      if A_Index <= 4
      {
         XBounce += 4
         YBounce -= 4
      }
      Else
      {
         XBounce -= 4
         YBounce += 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item3
{
   Loop, %Number%
   {
      if A_Index <= 4
      XBounce += 4
      Else
      XBounce -= 4
     WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item4
{
   Loop, %Number%
   {
      if A_Index <= 4
      {
         XBounce += 4
         YBounce += 4
      }
      Else
      {
         XBounce -= 4
         YBounce -= 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item5
{
   Loop, %Number%
   {
      if A_Index <= 4
      YBounce += 4
      Else
      YBounce -= 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item6
{
   Loop, %Number%
   {
      if A_Index <= 4
      {
         XBounce -= 4
         YBounce += 4
      }
      Else
      {
         XBounce += 4
         YBounce -= 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item7
{
   Loop, %Number%
   {
      if A_Index <= 4
      XBounce -= 4
      Else
      XBounce += 4
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}
else if Item = Item8
{
   Loop, %Number%
   {
      if A_Index <= 4
      {
         XBounce -= 4
         YBounce -= 4
      }
      Else
      {
         XBounce += 4
         YBounce += 4
      }
      WinMove, %Item%, , %XBounce%, %YBounce%
   }
}

SetWinDelay, 100    ; default
SetTimer, GetSelectedItem, on
SetTimer, RadialMenuClose, on
Return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ExitApp
Pause::
Suspend
Pause,,1
return

Escape::
Suspend
ExitApp
Return

F7::Reload
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page 1, 2, 3 ... 13, 14, 15  Next
Page 1 of 15

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group