StrokesPlus Forum
                       
StrokesPlus Forum
Home | Profile | Register | Active Topics
Members | Search | FAQ
 All Forums
 General Discussion
 General Discussion
 combining 3 scripts with one gesture

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
control_freak Posted - 04/21/2016 : 18:17:05
is it possible to combine these scripts like for short drag one command will execute, for long drag another, and for dragging to the corner of screen or certain part will execute another command?

short_len=200 --better be specified in global script
if gex-gsx<short_len then
acMessageBox("do something1",'message',nil)
else
acMessageBox("do something2",'message',nil)
end

and this one

local hScreen = acGetMonitorFromPoint(gsx, gsy)
if acGetMonitorRight(hScreen, 10) - gex < 50 then --allow for up to 150 pixels from the edge
acSendKeys("{MEDIANEXTTRACK}")
else
function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact)
--Activate the owning window where the gesture started
acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
end
acSendKeys("{BROWSERFORWARD}")
end
20   L A T E S T    R E P L I E S    (Newest First)
control_freak Posted - 05/25/2016 : 18:13:43
here's what my script looks like now. couldn't have done it without you Rob. Thank you

LEFT




local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if 50 - acGetMonitorLeft(hScreen, 1) > gex then 
	-- ^^ this would be true only if the gesture ends within 50 pixels 
	-- of the left-most coordinate of the monitor where the gesture
	-- drawing began 
	if gsx-gex < short_len then 
		-- ^^ only true if the distance of the x plane (right to left)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(1)
		acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
		acMessageBox("do something1",'message',nil)
	else 
		--(2)
		acMessageBox("do something1",'message',nil)
	end 
elseif 1800 - acGetMonitorLeft(hScreen, 1) < gsx then
               --(3)
               acMessageBox("do something1",'message',nil)

else --If the gesture didn't end within 50 pixels of the monitor's left edge or the elseif above
	if gsx-gex < short_len then 
		-- ^^ only true if the distance of the x plane (right to left)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(4)
		acMessageBox("do something1",'message',nil)
	else 
		--(5)
		acMessageBox("do something1",'message',nil)
	end 
end


RIGHT




local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if acGetMonitorRight(hScreen, 1) - gex < 50 then 
	-- ^^ this would be true only if the gesture ends within 50 pixels 
	-- of the right-most coordinate of the monitor where the gesture
	-- drawing began 
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(1)
		acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
		acMessageBox("do something1",'message',nil)
	else 
		--(2)
		acMessageBox("do something1",'message',nil)

elseif acGetMonitorRight(hScreen, 1) -1800 > gsx then
		--(3)	
		acMessageBox("do something1",'message',nil)

else --If the gesture didn't end within 50 pixels of the monitor's right edge or the elseif above
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(4)
		acMessageBox("do something1",'message',nil)
	else 
		--(5)
		acMessageBox("do something1",'message',nil)
	end 
end


UP




local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if 50 - acGetMonitorTop(hScreen, 1) > gey then 
	
	if gsy-gey < short_len then 
		
		--(1)
		acMessageBox("do something1",'message',nil)
		--(2)
		acMessageBox("do something1",'message',nil)
elseif 1000 - acGetMonitorTop(hScreen, 1) < gsy then
		--(3)	
		acMessageBox("do something1",'message',nil)
else 
	if gsy-gey < short_len then 
		
		--(4)
		acMessageBox("do something1",'message',nil)
	else 
		--(5)
		acMessageBox("do something1",'message',nil)
	end 
end


DOWN




local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if acGetMonitorBottom(hScreen, 1) - gey < 50 then 
	
	if gey-gsy < short_len then 
		
		--(1)
		acMessageBox("do something1",'message',nil)
	else 
		--(2)
		acMessageBox("do something1",'message',nil)
elseif acGetMonitorBottom(hScreen, 1) - 1000 > gsy then
		--(3)	
		acMessageBox("do something1",'message',nil)
else 
	if gey-gsy < short_len then 
		
		--(4)
		acMessageBox("do something1",'message',nil)
	else 
		--(5)
		acMessageBox("do something1",'message',nil)
	end 
end
Rob Posted - 05/25/2016 : 10:42:39
It's all good, but at some point I have to stop giving you fish; you'll have to learn how to fish for yourself and be happier for it!
control_freak Posted - 05/25/2016 : 05:24:58
aha i was just tweaking it so asked it sorry am such a pain in the ass lol
Rob Posted - 05/24/2016 : 20:20:05
https://www.lua.org/pil/4.3.1.html

An "if" can't have more than 1 "else"; that is more than one stand alone "else".

You can have:
	if

	elseif

	elseif

	else

	end
But not:
	if

	else

	else

	end
Without a condition, it doesn't make sense because you can either do something or not; the last else would never get executed under any circumstance.

Something like this should work:
local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if acGetMonitorRight(hScreen, 1) - gex < 50 then 
	-- ^^ this would be true only if the gesture ends within 50 pixels 
	-- of the right-most coordinate of the monitor where the gesture
	-- drawing began 
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(1)
		acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
		acSendKeys("@{RIGHT}")
	else 
		--(2)
		acDelay(100)

		local a1 = acGetClipboardText()
		acSendKeys("{DELAY=50}^c")
		acDelay(50)
		local a2 = acGetClipboardText()
		if a2 ~= a1 then
			a2 = 'http://www.imdb.com/find?ref_=nv_sr_fn&q='..a2 
			acShellExecute("open","rundll32.exe", "url.dll,FileProtocolHandler "..a2, nil, 1)
		else
			wEb = 'www.imdb.com/'--change the web here!
			acShellExecute("open","rundll32.exe", "url.dll,FileProtocolHandler "..wEb, nil, 1)
		end
	end 
elseif acGetMonitorRight(hScreen, 1) -1800 > gsx then
	acSendKeys("{MEDIAPREV}")
else --If the gesture didn't end within 50 pixels of the monitor's right edge or the elseif above
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		-- of the drawing is less than 200 pixels. If you had a 
		-- more vertical gesture, this may never be true
		--(3)
		acSendKeys("@3")
	else 
		--(4)
		acSendKeys("@5")
	end 
end
Again, this is a very basic programming fundamental....so you should really do some studying/practicing
control_freak Posted - 05/24/2016 : 16:57:03
1st 4 gestures work fine. what am i doing wrong on the last else?

local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy)

if acGetMonitorRight(hScreen, 1) - gex < 50 then
-- ^^ this would be true only if the gesture ends within 50 pixels
-- of the right-most coordinate of the monitor where the gesture
-- drawing began
if gex-gsx < short_len then
-- ^^ only true if the distance of the x plane (left to right)
-- of the drawing is less than 200 pixels. If you had a
-- more vertical gesture, this may never be true
--(1)
acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
acSendKeys("@{RIGHT}")
else
--(2)
acDelay(100)

local a1 = acGetClipboardText()
acSendKeys("{DELAY=50}^c")
acDelay(50)
local a2 = acGetClipboardText()
if a2 ~= a1 then
a2 = 'http://www.imdb.com/find?ref_=nv_sr_fn&q='..a2 -- You can search in any web. Just need to see the address bar in the page you want to search, like youtube.
acShellExecute("open","rundll32.exe",
"url.dll,FileProtocolHandler "..a2, nil, 1)
else
wEb = 'www.imdb.com/'--change the web here!
acShellExecute("open","rundll32.exe",
"url.dll,FileProtocolHandler "..wEb, nil, 1)

end
end
else --If the gesture didn't end within 50 pixels of the monitor's right edge
if gex-gsx < short_len then
-- ^^ only true if the distance of the x plane (left to right)
-- of the drawing is less than 200 pixels. If you had a
-- more vertical gesture, this may never be true
--(3)
acSendKeys("@3")
else
--(4)
acSendKeys("@5")
end


end
else

if acGetMonitorRight(hScreen, 1) -1800 > gsx then
acSendKeys("{MEDIAPREV}")
end


when i try to include the last else it says error. i want this gesture to start from left screen toward right and end within 200 pixels of left screen. it works when i test the script alone but error shows <eof> expected near else :|
Rob Posted - 05/24/2016 : 15:37:37
It's the same concept, though. You have some coordinates and you need to compare them! Some are easier than others, but still the same idea. I'm no longer at my computer and won't be for a while, so you're on your own for now.

It might help to check out the math sites and draw a grid and some lines. Then figure out how to calculate and work with the lines.
control_freak Posted - 05/24/2016 : 15:33:09
not that mathematical measurements. your script is only for right gestures. i have to change the gex and gsx to something else for left gestures neh? cant figure out what to put for left, up and down gestures
Rob Posted - 05/24/2016 : 15:30:11
But as far as the coordinates:

gsx = Gesture Start X point
gsy = Gesture Start Y point

gex = Gesture End X point
gey = Gesture End Y point

Those would be what you'd use when looking at formulas to calculate the distance accordingly.
Rob Posted - 05/24/2016 : 15:24:29
I don't have the answer for that off the top of my head. For those, you'll need to figure out the math necessary to measure the distance of a diagonal line.

All that I would do is Google how to measure the distance from a mathematical perspective, then write it in code. Google "math to measure diagonal line from points", the rest is just math!
control_freak Posted - 05/24/2016 : 15:21:11
now i cant modify the gsx,gsy, gex and gey to make script for left up and down gestures :| too complicated for me. can u tell me what should i put for left up and down gestures? or maybe explain a lil bit so i can understand(if u have time)?
control_freak Posted - 05/24/2016 : 13:14:42
thank you so much bro for being so helpful. u rock
Rob Posted - 05/24/2016 : 12:52:36
Scripting aside, which is what Lua and JavaScript are, I would recommend downloading Visual Studio 2015 and learn C#. That is, since you asked about programming languages, which are much more powerful than scripting languages. Although, the syntax of C# and JavaScript are fairly similar, so again, that's why I recommend JavaScript as it makes it easier to transition to a more complex programming language if you want to (C, C++, C# share a similar style with JavaScript, though I'm NOT claiming they're at all the same!).

Visual Studio 2015 Community Edition and C# is what I'm using to create the new version of S+, by the way!

However, if you're only looking to dabble in scripting, JavaScript is fine.
Rob Posted - 05/24/2016 : 12:47:46
Honestly, JavaScript is probably one of the best simply because there is SO much on the Internet and tons of sites that let you code and run the scripts right in the same browser window.

Of course, most of the Internet (from the browser side) runs on JavaScript, so it's a very useful scripting language to learn. Of course, you can also download Lua and make your own Lua scripts to run.

Though I should mention, in the new version of S+ I'm writing, it will use JavaScript...so it's probably a good place to start =)
control_freak Posted - 05/24/2016 : 12:43:55
i have no programming experience. i found these from somewhere in this forum and thought this could work together. this script is even better than i expected. :p thank you. could you suggest a programming language for a noob like me?
Rob Posted - 05/24/2016 : 07:15:04
It looks like you have the pieces there, so I'm not sure what it is that's missing.

One thing I do need to clear up first. I've seen you use function declarations in very odd ways, in this post and other places. I'm guessing that you have very little programming/scripting experience?

For example:
local hScreen = acGetMonitorFromPoint(gsx, gsy) 
if acGetMonitorRight(hScreen, 1) - gex < 50 then --allow for up to 150 pixels from the edge
	acSendKeys("{MEDIANEXTTRACK}")
else
	function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact)
The line in red is a very nonsensical statement. The function keyword indicates that you're defining a function which can be called by other code. I can't speak specifically for Lua (if that is even valid syntax, as in it would cause the function to be defined), but excluding some extremely rare and advanced programming in a language which would allow it, that statement would never be used.

It's clear that you're very excited to craft all kinds of scripts, and that's great! I think it would be a useful investment of your time to find a simple web course (free) for scripting. Any language is really fine, as in the end, all (for the pedants: most) programming languages translate to the same basic stuff: variables, functions, conditions, and loops.

Moving on to your script now! The first question regarding the length is: Which direction is the gesture? Also, is it in a straight line? These are both extremely important questions when it comes to determining the length of a line. Because are you measuring the distance between the start and end points from left to right? Top to bottom? If it's a diagonal line, that requires different math altogether. If it's not a line, that gets even more complicated. I would recommend you only do this for straight lines, to keep it simple. The code below is based on your original, and pretty much is intended to work with a straight line, going from left to right.

Because I'm not sure of which actions you're trying to execute (I only see next track and browser forward), the script below can execute 4 different actions (the code shows a red number where it corresponds to the following condition):

1. Gesture ends within 50 pixels from the right edge of the monitor where the gesture began, and it's shorter than 200 pixels, left to right
2. Gesture ends within 50 pixels from the right edge of the monitor where the gesture began, and it's longer than 200 pixels, left to right
3. Gesture did not end within 50 pixels from the right edge of the monitor where the gesture began, and it's shorter than 200 pixels, left to right
4. Gesture did not end within 50 pixels from the right edge of the monitor where the gesture began, and it's longer than 200 pixels, left to right
local short_len=200 --better be specified in global script
local hScreen = acGetMonitorFromPoint(gsx, gsy) 

if acGetMonitorRight(hScreen, 1) - gex < 50 then 
	-- ^^ this would be true only if the gesture ends within 50 pixels 
 	--    of the right-most coordinate of the monitor where the gesture
	--    drawing began 
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		--    of the drawing is less than 200 pixels. If you had a 
		--    more vertical gesture, this may never be true
		--(1)
		acActivateWindow(acGetOwnerWindowByPoint(gsx, gsy),0,0)
		acSendKeys("{BROWSERFORWARD}")
	else 
		--(2)
		acSendKeys("{MEDIANEXTTRACK}")
	end 
else --If the gesture didn't end within 50 pixels of the monitor's right edge
	if gex-gsx < short_len then 
		-- ^^ only true if the distance of the x plane (left to right)
		--    of the drawing is less than 200 pixels. If you had a 
		--    more vertical gesture, this may never be true
		--(3)
		acMessageBox("do something1",'message',nil)
	else 
		--(4)
		acMessageBox("do something2",'message',nil)
	end 
end
control_freak Posted - 05/24/2016 : 01:03:26
short_len=200 --better be specified in global script
if gex-gsx<short_len then
acMessageBox("do something1",'message',nil)
else
acMessageBox("do something2",'message',nil)
end

this one means i can add two scripts with one gesture.

local hScreen = acGetMonitorFromPoint(gsx, gsy)
if acGetMonitorRight(hScreen, 10) - gex < 50 then --allow for up to 150 pixels from the edge
acSendKeys("{MEDIANEXTTRACK}")
else
function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact)

this one allows me to run script when i draw the gesture if its drawn near the edge of the screen right?

i want to combine those three like if i draw the gesture short it'll do one thing if i draw a bigger one it'll trigger another and if i draw the same gesture near the edge it'll do another thing. hope my explanation is clear :|
Rob Posted - 05/23/2016 : 10:19:30
Can you give me a more detailed explanation?
control_freak Posted - 05/22/2016 : 02:46:53
still couldnt figure this one out. help me rob :|
control_freak Posted - 04/21/2016 : 20:02:03
haha true but am not a programmer or coder so i dont no many things.but you've been very helpful. ive just figured this out

local hScreen = acGetMonitorFromPoint(gsx, gsy)
if 1800 - acGetMonitorLeft(hScreen, 1) < gsx then
acSendKeys("{MEDIAPREV}")

still cant figure out how to put all these three together though. :(
Rob Posted - 04/21/2016 : 18:22:35
The world is your oyster, control_freak! You can certainly do that, you just gotta work out the logic :)

I've been drinking and am on my phone, but seeing a whole bunch of posts and am being a bit snarky ;)

StrokesPlus Forum © 2011-2018 Rob Yapchanyk Go To Top Of Page
Snitz Forums 2000