You are here: PSPad forum > České diskuzní fórum > Re: wsh skript s gui - konflikty s editorem?

Re: wsh skript s gui - konflikty s editorem?

#1 wsh skript s gui - konflikty s editorem?

Posted by: vbr | Date: 2014-02-09 01:04 | IP: IP Logged

Zdravim,
rad bych se zeptal na obecne zasady "spoluprace" mezi skriptem s grafickym rozhranim a vlastnim editorem.
Zkusil jsem napsat jednoduchy WSH skript pro PSPad tohoto druhu (python, Tkinter - TCL) a k memu prekvapeni zakladni pozadovane veci funguji - oboustranna komunikace skriptu s editorem a jeho funkcemi i manipulace s textem; stejne tak zustava gui skriptu nemodalni, po prekliknuti zalozek pak pracuje s aktualnim textem.

(Uprimne receno jsem cekal, za takto jednoduse to nebude fungovat vubec - skript je v podstate samostatna aplikace jen propojena na jmenny prostor PSPadu a jeho funkce.)

Problemy se ovsem prece vyskytly - pri existujicim okne skriptu nefunguji mnohe klavesove zkratky s Ctrl (z editoru a ze sablon treba Ctrl+F, Ctrl+B v html), globalni (napr. Ctrl+C... funguji); po zavreni skriptoveho okna se funkce s klavesami obnovi.
Po celou dobu nicmene funguji prislusne funkce pri vyvolani z menu.
Cim to muze byt zpusobeno a jak to resit?

Jeste zavaznejsi problem se objevuje pri zavirani PSPadu se zaroven otevrenym oknem skriptu, nebo naopak pri opetovnem otevirani skriptu vedle jiz existujiciho - tyhle pripady vedou k zamrznuti editoru a nutnosti ukonceni spravcem procesu.

Predpokladam, ze jde snad o kolizi aplikacni smycky programu a okna skriptu a nedostatecne osetreni v mem kodu, nedari se mi ale zjistit, jak to zajistit, a na co se zamerit.
Lze napr. drzet referenci otevrene okno jako globalni promennou? po dobu behu editoru (nebo do znovunacteni skriptu)? (Momentalne se i zda, ze i otevrene okno skriptu se tvari jako destruovane a neumoznuje pristup k obvyklym metodam.)

predem moc dekuju
a zdravim
vbr

Options: Reply | Quote | Up ^


#2 Re: wsh skript s gui - konflikty s editorem?

Posted by: pspad | Date: 2014-02-09 07:43 | IP: IP Logged

Co se tyka prace s SPPadem se skriptem spustenym zvenku, tak tohle jsem nezkousel a samotneho me prekvapuje, ze to funguje.
Klavesove zkratky nefunguji, protoze skript je v te chvili ridicim oknem a fungovaly by klavesove zkratky, ktere ma definovane skript.

To s tim zamrznutim nevim. Nikdy jsem nezamyslel PSPad takto pouzivat. PSPad si na zacatku vytvari objekt skriptu a na konci jej uvolnuje. To by mohlo zpusobit to zamrznuti.
Osobne bych zkusil pri uzavirani PSPadu nejprve zrusit objekty a promenne, ktere na PSPad ukazuji a pak teprve ukoncit PSPad - ze skriptu, ne z PSPadu.

Options: Reply | Quote | Up ^


#3 Re: wsh skript s gui - konflikty s editorem?

Posted by: vbr | Date: 2014-02-09 14:35 | IP: IP Logged

pspad:
Co se tyka prace s SPPadem se skriptem spustenym zvenku, tak tohle jsem nezkousel a samotneho me prekvapuje, ze to funguje.
Klavesove zkratky nefunguji, protoze skript je v te chvili ridicim oknem a fungovaly by klavesove zkratky, ktere ma definovane skript.

To s tim zamrznutim nevim. Nikdy jsem nezamyslel PSPad takto pouzivat. PSPad si na zacatku vytvari objekt skriptu a na konci jej uvolnuje. To by mohlo zpusobit to zamrznuti.
Osobne bych zkusil pri uzavirani PSPadu nejprve zrusit objekty a promenne, ktere na PSPad ukazuji a pak teprve ukoncit PSPad - ze skriptu, ne z PSPadu.

Diky za informace, jeste pro upresneni - omlouvam se, ze jsem to nezminil vyslovne - nejedna se o skript zvenku ale o skript ramci WSH rozhrani PSPadu - z menu skriptu se vyvola funkce vytvarejici okno, nasledne se k ovladani pouziva vytvorene gui - volane funkce jsou soucasti tehoz skriptu (a pouzivaji nainstalovane knihovny pythonu).
Jde nejak osetrit aby ridici okno bylo to, ktere ma aktualne fokus? (Momentalne dotycne programove klavesove zkratky s CTRL ci ALT nefunguji ani pri minimalizovanem okne skriptu.)

Jde nejak udrzet ci znovuziskat referenci na objekt skriptoveho gui a idealne ho nejak podradit PSPadu?
Spis pocitam s tim, ze jde o chyby v mem kodu, resp. nedostatecne osetreni neceho potrebneho - me drivejsi skripty pouzivaji jen vestavene prompty apod.
Pokud to pomuze, muzu zkusit vytvorit jednoduchy demonstracni kod - chova se tak ale uz trivialni skript vytvarejici prazdne okno.
Prinejmensim phReplace v tomto smeru fungoval vcelku podle ocekavani - je ale mozne, ze VBS je na windows vic "doma" nez python s TCL gui.

Dekuju a zdravim,
vbr

Options: Reply | Quote | Up ^


#4 Re: wsh skript s gui - konflikty s editorem?

Posted by: vbr | Date: 2014-02-12 10:33 | IP: IP Logged

Zdravim,
po nekolika pokusech se mi podarilo zkusebni skript s gui zprovoznit o neco lepe - blokovani klaves slo obejit spustenim okna skriptu ve vedlejsim vlakne, misto zavirani a opetovneho vytvareni okna pri vyvolani se da pouzit skryvani a zobrazeni.
Nejvyznamnejsi zbyvajici problem je zatuhavani skriptu i PSPadu pri vyvolani rekompilace skriptu z menu PSPadu pri jiz vytvorenem skriptovem okne (aktualne zobrazenem i skrytem). - pak je opet treba ukonceni pres spravce procesu. (jiz drive zmineny phReplace se i s timto nejak vyrovnava).

Jsou v ramci skriptu v pspadu nejake prostredky, ktere by se znovunactenim neodstranily a nasledne neobnovily? (napr. ve srovnani se zavrenim a znovuspusteni editoru).

Pokud by to bylo mozne reseni, slo by pridat nejakou "uklidovou" funkci ve skriptovem rozhrani, ktera by se (v pripade, ze by ji skript definoval) provedla pred rekompilaci a pripadne pred ukoncenim editoru?

Chapu, ze nejsou podporovany udalosti/triggery obecne, tohle by ale byla snad relativne jednorazova funkce srovnatelna s nynejsi Init, bylo by neco podobneho schudne?

Predem dekuju za zvazeni a zdravim,
vbr

Options: Reply | Quote | Up ^






Editor PSPad - freeware editor, © 2001 - 2021 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR