Page 2 of 3

Posted: Sat Aug 20, 2011 7:58 am
by FeyFre
assigned it to a hotkey
You assigned hotkey in HotKey plugin or in Scripts plugin? In any case that plugin should be setup for autoload.

Posted: Sat Aug 20, 2011 8:00 am
by se7h
martz

Try to understand

Script worked before you changed the names of schemes?

Click ALT+P and check:
Script::Main and Coder::HighLight is enabled (checked)?

Assign a keyboard shortcut through Scripts plugin setup (double click on Script::Main)
Image

Posted: Sat Aug 20, 2011 9:18 am
by martz
Now it works. Great, thanks :)

Since we're "at it", two more questions though:

1. Is it possible to change the location of AkelFiles folder?

(Explanation: to have one AP instance always in "writing" mode and another in "normal" mode, I'm using two different .exe and .ini files -- but would be nice if these "different programs" shared all the scripts, plugins etc. Because as for now, I have to manually synchronize any changes related to plugs/scripts.)

2. Can one also somehow change the title of AkelPad window? Ie to have a "AkelPad Notes" and a "AkelPad Writing"? (That's handy for Alt-Tabbing in Windows :))

Thanks,
M.

Posted: Sat Aug 20, 2011 6:38 pm
by KDJ
martz wrote:2. Can one also somehow change the title of AkelPad window? Ie "AkelPad Notes" and "AkelPad Writing"?
You can do it by the script SetWindowTitle.js:

Code: Select all

var sWndTitle = "AkelPad Notes";
var hMainWnd  = AkelPad.GetMainWnd();
var lpText;

if ((hMainWnd) && (lpText = AkelPad.MemAlloc((sWndTitle.length + 1) * _TSIZE)))
{
  AkelPad.MemCopy(lpText, sWndTitle, _TSTR);
  AkelPad.SystemFunction().Call("user32::SetWindowText" + _TCHAR, hMainWnd, lpText);
  AkelPad.MemFree(lpText);
}

Posted: Sun Aug 21, 2011 1:18 am
by FeyFre
KDJ, your code can be much simpler - only one statement.

Code: Select all

AkelPad.SystemFunction().Call("user32::SetWindowText" + _TCHAR, AkelPad.GetMainWnd(), "AkelPad Notes")

Posted: Sun Aug 21, 2011 11:09 am
by martz
This is excellent, guys. Thank you again!

(Btw, I already embedded a different color icon into one of my AkelPad.exe files, so now it's really comfy to switch between the "different applications".)

So, as for now, I've only got one slight annoyance. When the whole screen is already filled with text and I continue typing, then the caret stays on the very bottom line of the screen. In the long run this is inconvenient for the eyes. Hence, could a script:

a) Add customizable top and bottom margins to the full screen window or
b) As a workaround, enable a "page break". That is, after reaching the bottom of the screen, the script would always empty the screen and I could start typing from the top line of the window again.

I think (and hope) not only the "article writers" but also coders would benefit from additions like these.

Thanks for any thoughts,
AP is an awesome tool,
M.

Posted: Sun Aug 21, 2011 11:12 am
by KDJ
FeyFre wrote:KDJ, your code can be much simpler - only one statement.

Code: Select all

AkelPad.SystemFunction().Call("user32::SetWindowText" + _TCHAR, AkelPad.GetMainWnd(), "AkelPad Notes")
Indeed, it works.
But, the description on msdn shows, that the second argument of SetWindowText() is of type LPCTSTR - a pointer to the string.

Posted: Sun Aug 21, 2011 3:26 pm
by FeyFre
But, the description on msdn shows, that the second argument of SetWindowText() is of type LPCTSTR - a pointer to the string.
Yes, and Call method automatically detects argument as string and converts it internally into LPCSTR representation.(This feature was introduced a while ago into Scripts plugin)

Posted: Sun Aug 21, 2011 5:28 pm
by KDJ
FeyFre
Well, yes, but in SendMessage() method can not use a string, it must be a pointer.

Code: Select all

AkelPad.SendMessage(AkelPad.GetMainWnd(), 0x000C /*WM_SETTEXT*/, 0, "AkelPad Notes");
generates a data type mismatch error.

Posted: Sun Aug 21, 2011 5:41 pm
by Infocatcher
KDJ wrote:Well, yes, but in SendMessage() method can not use a string, it must be a pointer.
I think, it would be good to improve SendMessage(). :)

Posted: Sun Aug 21, 2011 7:00 pm
by FeyFre
Infocatcher, no, it would not. :(

Posted: Mon Aug 22, 2011 8:23 am
by VladSh
martz wrote:So, as for now, I've only got one slight annoyance. When the whole screen is already filled with text and I continue typing, then the caret stays on the very bottom line of the screen. In the long run this is inconvenient for the eyes.
While, with some reservations, you can try the to Scroll-plugin, see the description of the Scroll::Settings-function for call an external in plug-in documentation.
I added the proposal to expand the functionality of the plug-in topic.

Posted: Mon Aug 22, 2011 2:08 pm
by Instructor
martz wrote:a) Add customizable top and bottom margins to the full screen window...
This is possible with AEM_SETRECT, but maybe next variant will be more suitable.
martz wrote:b) As a workaround, enable a "page break". That is, after reaching the bottom of the screen, the script would always empty the screen and I could start typing from the top line of the window again.
"Next variant" :) Add new shortcut in Hotkeys plugin:
Name: EnterNoscroll
Command: Call("Scroll::Settings", 5)
Hotkey: Enter or Ctrl+Enter

P.S. of course Scroll plugin must be installed.
Infocatcher wrote:
KDJ wrote:Well, yes, but in SendMessage() method can not use a string, it must be a pointer.
I think, it would be good to improve SendMessage(). :)

Code: Select all

oSys.Call("user32::SendMessage" + _TCHAR, hWndFind, 0x143 /*CB_ADDSTRING*/, 0, "12345");

Posted: Mon Aug 22, 2011 4:55 pm
by Infocatcher
Instructor wrote:

Code: Select all

oSys.Call("user32::SendMessage" + _TCHAR, hWndFind, 0x143 /*CB_ADDSTRING*/, 0, "12345");
Yes, but why not make a similar improvement in SendMessage() ?

Posted: Tue Aug 23, 2011 11:46 am
by martz
Instructor wrote:
martz wrote:b) As a workaround, enable a "page break". That is, after reaching the bottom of the screen, the script would always empty the screen and I could start typing from the top line of the window again.
"Next variant" :) Add new shortcut in Hotkeys plugin:
Name: EnterNoscroll
Command: Call("Scroll::Settings", 5)
Hotkey: Enter or Ctrl+Enter

P.S. of course Scroll plugin must be installed.
Hmm, this doesn't do the trick for me. Instead it shows me the beginning of the file (line 1).

How would you implement this with AEM_SETRECT?

Thanks a bunch,
M.