Èñïîëüçîâàíèå äåðåâà ïàðàìåòðîâ â ñêðèïòàõ JAWS

Äàòà ïóáëèêàöèè:2011
Ïîäåëèòüñÿ â Twitter Ïîäåëèòüñÿ â F******k Ïîäåëèòüñÿ â VKontakte Ïîäåëèòüñÿ â Telegram Ïîäåëèòüñÿ â Mastodon

Èçìåíåíèÿ â ïîëüçîâàòåëüñêîì èíòåðôåéñå

Íà÷èíàÿ ñ JAWS âåðñèè 9.0, äèàëîã "Íàñòðîéêà èíôîðìàòèâíîñòè JAWS" (Adjust JAWS Verbosity) äëÿ àêòèâíîãî ïðèëîæåíèÿ áûë çàìåíåí íà äèàëîã "Íàñòðîéêà ïàðàìåòðîâ JAWS" (Adjust JAWS Options). Íîâûé äèàëîã, êàê è ïðåæíèé, ìîæíî âûçâàòü ïðè ïîìîùè êîìáèíàöèè êëàâèø Insert+V. Îäíàêî â îñòàëüíîì ýòîò äèàëîã ïðåòåðïåë ñóùåñòâåííûå èçìåíåíèÿ. Âìåñòî îáû÷íîãî ñïèñêà ïàðàìåòðîâ, òåïåðü â äèàëîãå âñå ïàðàìåòðû ïðåäñòàâëåíû â âèäå ìíîãîóðîâíåâîé äðåâîâèäíîé ñòðóêòóðû, ÷òî îáëåã÷àåò íàâèãàöèþ è ïîèñê íóæíûõ ïàðàìåòðîâ.

Äåðåâî ïàðàìåòðîâ ìîæåò ñîäåðæàòü ïàðàìåòðû (â äîêóìåíòàöèè JAWS ìîæåò èñïîëüçîâàòüñÿ òåðìèí "ýëåìåíò" (item)) è êàòåãîðèè (èëè óçëû(nodes)), êîòîðûå ìîãóò, â ñâîþ î÷åðåäü, ñîäåðæàòü âëîæåííûå êàòåãîðèè è ïàðàìåòðû , êîòîðûå, â ñâîþ î÷åðåäü... Ïàðàìåòðû ìîãóò èìåòü ðàçëè÷íûå çíà÷åíèÿ, âëèÿþùèå íà ïîâåäåíèå JAWS â àêòèâíîì ïðèëîæåíèè.

Ïî äåðåâó ïàðàìåòðîâ ìîæíî ïåðåìåùàòüñÿ ïðè ïîìîùè êëàâèø ñî ñòðåëêàìè ââåðõ è âíèç. Ðàñêðûòü êàòåãîðèþ, ÷òîáû óâèäåòü ñîäåðæàùèåñÿ â íåé âëîæåííûå êàòåãîðèè è ïàðàìåòðû, ìîæíî ïðè ïîìîùè êëàâèøè ñî ñòðåëêîé âïðàâî. Çàêðûòü êàòåãîðèþ ìîæíî ïðè ïîìîùè êëàâèøè ñî ñòðåëêîé âëåâî.

Êðîìå äåðåâà ïàðàìåòðîâ, â äàííîì äèàëîãå ïðèñóòñòâóåò îêíî ðåäàêòîðà ñ òåêñòîì ïîäñêàçêè. Ýòîò òåêñò ìåíÿåòñÿ â çàâèñèìîñòè îò òîãî, íà êàêîé êàòåãîðèè èëè ïàðàìåòðå ðàñïîëîæåí êóðñîð â äåðåâå ïàðàìåòðîâ.

Èçìåíåíèÿ â ñêðèïòàõ

Òàêèå ñåðüåçíûå èçìåíåíèÿ â ïîëüçîâàòåëüñêîì èíòåðôåéñå ïîòðåáîâàëè èçìåíåíèé è â ñöåíàðèÿõ JAWS. Õîòÿ êîìáèíàöèÿ êëàâèø äëÿ âûçîâà äèàëîãà íàñòðîåê íå èçìåíèëàñ, íî òåïåðü îíà ñâÿçàíà ñî ñêðèïòîì AdjustJAWSOptions. Ñêðèïò AdjustJAWSVerbosity òàêæå ïðèñóòñòâóåò â ôàéëå ñêðèïòîâ ïî óìîë÷àíèþ (default.jss), íî äëÿ ýòîãî ñêðèïòà íå íàçíà÷åíà êîìáèíàöèÿ êëàâèø. Ïðè æåëàíèè, åå ìîæíî íàçíà÷èòü ïðè ïîìîùè Äèñïåò÷åðà êëàâèàòóðû.

Ðàññìîòðèì íåîáõîäèìûé ìèíèìóì ôóíêöèé äëÿ ðàáîòû ñ äåðåâîì ïàðàìåòðîâ â ñêðèïòàõ JAWS.

Äëÿ òîãî ÷òîáû â äåðåâå ïàðàìåòðîâ îòîáðàçèëèñü ïàðàìåòðû, êîòîðûå ìû ñîáèðàåìñÿ èñïîëüçîâàòü â íàøèõ ñöåíàðèÿõ, íåîáõîäèìî âûïîëíèòü ñëåäóþùèå øàãè:

  •  ôàéëå ñöåíàðèåâ èíòåðåñóþùåãî íàñ ïðèëîæåíèÿ ïåðåîïðåäåëèòü ñêðèïò AdjustJAWSOptions, â êîòîðîì íåîáõîäèìî ñîçäàòü ñïèñîê ïàðàìåòðîâ è ïåðåäàòü ñîçäàííûé ñïèñîê ôóíêöèè OptionsTreeCore, îòâå÷àþùåé çà îòîáðàæåíèå äèàëîãà íàñòðîåê.
  • Äëÿ êàæäîãî äîáàâëÿåìîãî ïàðàìåòðà îïðåäåëèòü ôóíêöèè îáðàòíîãî âûçîâà äëÿ èçìåíåíèÿ íàñòðîåê.
  • Äëÿ êàæäîãî íàøåãî ïàðàìåòðà îïðåäåëèòü ôóíêöèè îáðàòíîãî âûçîâà äëÿ ôîðìèðîâàíèÿ òåêñòà ïîäñêàçêè.

Êðîìå ýòîãî, ìîãóò ïîòðåáîâàòüñÿ äîïîëíèòåëüíûå øàãè â òîì ñëó÷àå,åñëè íåîáõîäèìî ñîçäàâàòü ñâîè êàòåãîðèè è ïîäêàòåãîðèè.

Çàìå÷àíèå:  óãîäó ïðîñòîòå èçëîæåíèÿ èç íèæåñëåäóþùèõ ïðèìåðîâ èñêëþ÷åíà îáðàáîòêà îøèáîê. Òàêæå íå èñïîëüçóåòñÿ ôîðìàò ñîîáùåíèé @msg, îáÿçàòåëüíûé äëÿ êîððåêòíîé ëîêàëèçàöèè ñêðèïòîâ, à òàêæå äëÿ ñêðèïòîâ, ïðåäíàçíà÷åííûõ äëÿ ïóáëè÷íîãî ðàñïðîñòðàíåíèÿ (èíûìè ñëîâàìè, âñå ñòðîêîâûå ëèòåðàëû ïîìåùåíû íåïîñðåäñòâåííî â êîä ñêðèïòîâ, à íå âûíåñåíû â ôàéë ñîîáùåíèé .jsm).

Ïåðåîïðåäåëåíèå ñêðèïòà

×òîáû âûçâàòü äèàëîã "Íàñòðîéêà ïàðàìåòðîâ JAWS" (Adjust JAWS Options) äëÿ àêòèâíîãî ïðèëîæåíèÿ, íåîáõîäèìî îáðàòèòüñÿ ê ôóíêöèè OptionsTreeCore.

Ó ýòîé ôóíêöèè ïåðâûé àðãóìåíò ÿâëÿåòñÿ îáÿçàòåëüíûì, à âòîðîé è òðåòèé - íåîáÿçàòåëüíûå. Îñòàíîâèìñÿ ïîêà íà ïåðâîì àðãóìåíòå, êîòîðûé ÿâëÿåòñÿ ñòðîêîé, ñîäåðæàùèé ñïèñîê äîáàâëÿåìûõ íàìè ïàðàìåòðîâ JAWS. Ýòîò ñïèñîê èìååò ñëåäóþùèé ïðåäîïðåäåë¸ííûé ôîðìàò:

  • Ýëåìåíòû ñïèñêà ñîñòàâëÿþò îäíó ñòðîêó è ÿâëÿþòñÿ åå ñåãìåíòàìè.
  • Ñåãìåíòû ñòðîêè îòäåëÿþòñÿ äðóã îò äðóãà ñèìâîëîì âåðòèêàëüíîé ÷åðòû "|".
  • Êàæäûé ñåãìåíò, â ñâîþ î÷åðåäü, äåëèòñÿ åù¸ íà äâå ÷àñòè. Ïåðâàÿ ÷àñòü - ýòî èìÿ ôóíêöèè, êîòîðóþ JAWS áóäåò âûçûâàòü, êîãäà ïîëüçîâàòåëü ïûòàåòñÿ èçìåíèòü êîíêðåòíûé ïàðàìåòð; âòîðàÿ ÷àñòü - ýòî íàçâàíèå ïàðàìåòðà, êîòîðîå áóäåò îòîáðàæàòüñÿ â äåðåâå ïàðàìåòðîâ. Ýòè äâå ÷àñòè îòäåëÿþòñÿ äðóã îò äðóãà ñèìâîëîì äâîåòî÷èÿ ":".å

 ñêðèïòàõ âìåñòî ñèìâîëà âåðòèêàëüíîé ÷åðòû ìîæíî èñïîëüçîâàòü èìåíîâàííóþ êîíñòàíòó _DLG_SEPARATOR, îïðåäåë¸ííóþ â ôàéëå HjConst.jsh. Ýòî ïîçâîëèò âàøèì ñêðèïòàì íå çàâèñåòü îò êîíêðåòíîãî çíà÷åíèÿ ñèìâîëà-ðàçäåëèòåëÿ.

 îáùåì âèäå ñòðîêó ñïèñêà ïàðàìåòðîâ ìîæíî ïðåäñòàâèòü òàê:

"Èìÿ_ôóíêöèè1:Èìÿ_ïàðàìåòðà1"+_DLG_SEPARATOR
	+"Èìÿ_ôóíêöèè2:Èìÿ_ïàðàìåòðà2" +_DLG_SEPARATOR
	; è òàê äàëåå äëÿ âñåõ äîáàâëÿåìûõ ïàðàìåòðîâ...
	

Âîò ïðèìåð ïðîñòåéøåé ðåàëèçàöèè ñêðèïòà , â êîòîðîì â äåðåâî íàñòðîåê äîáàâëÿþòñÿ äâà ïàðàìåòðà ñ èìåíàìè Ïàðàìåòð1 è Ïàðàìåòð2 (ðàçóìååòñÿ, â ðåàëüíûõ ñêðèïòàõ èìåíà ïàðàìåòðîâ è êàòåãîðèé íåîáõîäèìî âûáèðàòü òàêèìè, ÷òîáû îíè õàðàêòåðèçîâàëè ïðåäíàçíà÷åíèå ïàðàìåòðà èëè êàòåãîðèè):

include "HjConst.jsh"
Script AdjustJAWSOptions ()
var
	string sList
	Let sList = "Option1:Ïàðàìåòð1"+_DLG_SEPARATOR
		+"Option2:Ïàðàìåòð2"
		
	OptionsTreeCore (sList)
EndScript

Òåïåðü, åñëè ïîïðîáîâàòü âûçâàòü äèàëîã "Íàñòðîéêà ïàðàìåòðîâ JAWS" (Adjust JAWS Options), òî â äåðåâå ýòîãî äèàëîãà â ñàìîì íà÷àëå áóäåò ðàñïîëàãàòüñÿ êàòåãîðèÿ ñ íàçâàíèåì "Ïàðàìåòðû èìÿ_êîíôèãóðàöèè" (Èìÿ_êîíôèãóðàöèè Options), ãäå èìÿ_êîíôèãóðàöèè - ýòî èìÿ àêòèâíîé êîíôèãóðàöèè (êîòîðîå, êàê ïðàâèëî, ñîîòâåòñòâóåò èìåíè èñïîëíÿåìîãî ôàéëà àêòèâíîãî ïðèëîæåíèÿ). Âíóòðè ýòîé êàòåãîðèè áóäóò ïðèñóòñòâîâàòü äâà ïàðàìåòðà: Ïàðàìåòð1 è Ïàðàìåòð2.

Îäíàêî ïîëó÷èâøèéñÿ äèàëîã íåëüçÿ ñ÷èòàòü ïîëíîöåííûì, òàê êàê ïîëüçîâàòåëü íå ìîæåò èçìåíèòü çíà÷åíèÿ ïàðàìåòðîâ (ýòè çíà÷åíèÿ îòñóòñòâóþò âîâñå), à ïðè ïåðåìåùåíèè ïî ïàðàìåòðàì âîçíèêàåò îøèáêà âûçîâà íåèçâåñòíîé ôóíêöèè.

×òîáû äèàëîã íàñòðîåê ðàáîòàë êîððåêòíî, íåîáõîäèìî äëÿ êàæäîãî èç äîáàâëåííûõ ïàðàìåòðîâ îïðåäåëèòü äâå ôóíêöèè îáðàòíîãî âûçîâà: ôóíêöèþ, èçìåíÿþùóþ çíà÷åíèå ïàðàìåòðà, è ôóíêöèþ, âîçâðàùàþùóþ òåêñò äëÿ îêíà ïîäñêàçêè.

Ôóíêöèÿ, èçìåíÿþùàÿ çíà÷åíèå ïàðàìåòðà

Êîãäà â äåðåâå äèàëîãà íàñòðîåê ïîëüçîâàòåëü ìåíÿåò çíà÷åíèå ïàðàìåòðà ïðè ïîìîùè êëàâèøè Ïðîáåë, òî JAWS ïûòàåòñÿ âûçâàòü ôóíêöèþ ñ èìåíåì, êîòîðîå áûëî óêàçàíî â ñòðîêå ñïèñêà ïàðàìåòðîâ. Òàêæå ýòà ôóíêöèÿ âûçûâàåòñÿ, êîãäà íåîáõîäèìî îòîáðàçèòü òåêñòîâûé âàðèàíò òåêóùåãî çíà÷åíèÿ äàííîãî ïàðàìåòðà. Äëÿ Ïàðàìåòðà1 ìû óêàçàëè èìÿ ôóíêöèè Option1. Ïðåäïîëîæèì, ÷òî çíà÷åíèå ýòîãî ïàðàìåòðà õðàíèòñÿ â ãëîáàëüíîé ïåðåìåííîé g_bOption1, êîòîðàÿ ìîæåò ñîäåðæàòü 0 ("îòêëþ÷åíî") è 1 ("âêëþ÷åíî"):

globals
int g_bOption1

Ïðîñòåéøèé âàðèàíò îïðåäåëåíèÿ ôóíêöèè, èçìåíÿþùåé çíà÷åíèå ïàðàìåòðà, ìîæåò âûãëÿäåòü òàê:

string Function Option1 (int iState)
; Èçìåíÿåì òåêóùåå çíà÷åíèå.
If iState == 0 Then
	let g_bOption1 = not g_bOption1
EndIf

; Âîçâðàùàåì òåêñòîâîå îïèñàíèå
; òåêóùåãî çíà÷åíèÿ.
If g_bOption1 Then
	return "âêëþ÷åíî"
EndIf
return "îòêëþ÷åíî"
EndFunction

Êàê âèäíî èç ïðèìåðà, ôóíêöèÿ ïðèíèìàåò îäèí ïàðàìåòð - öåëî÷èñëåííîå çíà÷åíèå iState. Åñëè ýòî çíà÷åíèå ðàâíî íóëþ, òî ôóíêöèÿ äîëæíà èçìåíèòü ñîîòâåòñòâóþùèé ïàðàìåòð (ò.å. ýòî, â ÷àñòíîì ñëó÷àå, ïðèçíàê òîãî, ÷òî ïîëüçîâàòåëü íàæàë ïðîáåë íà ñîîòâåòñòâóþùåì ïàðàìåòðå â äåðåâå äèàëîãà íàñòðîåê). Ëîãèêó èçìåíåíèÿ ïàðàìåòðà îïðåäåëÿåò ñàì ðàçðàáîò÷èê ñêðèïòà, èñõîäÿ èç ïðåäíàçíà÷åíèÿ äàííîãî ïàðàìåòðà.  ïðèìåðå ïàðàìåòð ôàêòè÷åñêè ÿâëÿåòñÿ áóëåâûì, ÷òî ïîçâîëÿåò äëÿ åãî èçìåíåíèÿ èñïîëüçîâàòü îïåðàöèþ èíâåðñèè.

Ðàññìàòðèâàåìàÿ ôóíêöèÿ äîëæíà âîçâðàùàòü ñòðîêîâîå îïèñàíèå òåêóùåãî çíà÷åíèÿ. Âîçâðàùàåìàÿ â ýòîì ïðèìåðå ñòðîêà áóäåò îòîáðàæåíà â äåðåâå ïàðàìåòðîâ íàïðîòèâ Ïàðàìåòðà1.

Òåïåðü, åñëè âûçâàòü äèàëîã íàñòðîéêè ïàðàìåòðîâ JAWS, òî ïðè ïîìîùè ïðîáåëà ìîæíî áóäåò èçìåíÿòü çíà÷åíèå Ïàðàìåòðà1 ñ "îòêëþ÷åíî" íà "âêëþ÷åíî" è íàîáîðîò.

Äëÿ Ïàðàìåòðà2 ïîñëåäîâàòåëüíîñòü äåéñòâèé áóäåò àíàëîãè÷íîé, íî èìÿ ýòîé ôóíêöèè äîëæíî áûòü Option2, òàê êàê èìåííî ýòî èìÿ áûëî óêàçàíî â ñòðîêå ñïèñêà ïàðàìåòðîâ. Òàêæå íàäî ïðåäóñìîòðåòü ãëîáàëüíóþ ïåðåìåííóþ äëÿ õðàíåíèÿ òåêóùåãî çíà÷åíèÿ Ïàðàìåòðà2.

Ôóíêöèÿ, âîçâðàùàþùàÿ òåêñò ïîäñêàçêè

Êàê óæå áûëî îòìå÷åíî, â äèàëîãè "Íàñòðîéêà ïàðàìåòðîâ JAWS" (Adjust JAWS Options), êðîìå äåðåâà ïàðàìåòðîâ, ïðèñóòñòâóåò îêíî òåêñòîâîãî ðåäàêòîðà, â êîòîðîì îòîáðàæàåòñÿ òåêñò ïîäñêàçêè äëÿ òåêóùåé êàòåãîðèè èëè òåêóùåãî ïàðàìåòðà.

×òîáû â ýòîì îêíå äëÿ äîáàâëÿåìûõ ïàðàìåòðîâ îòîáðàæàëñÿ ñîîòâåòñòâóþùèé òåêñò ïîäñêàçêè, íåîáõîäèìî äëÿ êàæäîãî ïàðàìåòðà îïðåäåëèòü ôóíêöèþ îáðàòíîãî âûçîâà, âîçâðàùàþùóþ ýòîò òåêñò.

Èìåíà òàêèõ ôóíêöèé ñîñòîÿò èç èìåíè ôóíêöèè, óêàçàííîé â ñòðîêå ñïèñêà ïàðàìåòðîâ, è ñóôôèêñà "Hlp" (áåç êàâû÷åê). Íàïðèìåð, äëÿ Ïàðàìåòðà1 óêàçàíà ôóíêöèÿ Option1, òîãäà ôóíêöèÿ, âîçâðàùàþùàÿ òåêñò ïîäñêàçêè, áóäåò èìåòü èìÿ Option1Hlp. Ïðîñòåéøèé âàðèàíò ýòîé ôóíêöèè ìîæåò âûãëÿäåòü òàê:

string Function Option1Hlp (int iState)
	return "Ïîäñêàçêà äëÿ Ïàðàìåòðà1."
EndFunction

Äëÿ Ïàðàìåòðà2, ñîîòâåòñòâåííî, èìÿ ôóíêöèè ïðèìåò âèä Option2Hlp.

Ñîçäàíèå ñîáñòâåííûõ êàòåãîðèé

Ïî óìîë÷àíèþ ôóíêöèÿ OptionsTreeCore ïîìåùàåò äîáàâëÿåìûå ïàðàìåòðû â êàòåãîðèþ ñ èìåíåì àêòèâíîé êîíôèãóðàöèè, êîòîðîå ñîâïàäàåò ñ èìåíåì èñïîëíÿåìîãî ôàéëà àêòèâíîãî ïðèëîæåíèÿ. Îäíàêî åñëè íåîáõîäèìî ÿâíî çàäàâàòü êàòåãîðèè äëÿ ñâîèõ ïàðàìåòðîâ, òî ýòî ìîæíî ñäåëàòü, êàê ìèíèìóì, òðåìÿ ñïîñîáàìè.

Èìåíà êàòåãîðèé ìîæíî óêàçàòü â ñïèñêå ïàðàìåòðîâ, êîòîðûé â âèäå ñòðîêè ïåðåäàåòñÿ â êà÷åñòâå ïåðâîãî àðãóìåíòà ôóíêöèè OptionsTreeCore.  ýòîì ñëó÷àå èìÿ ïàðàìåòðà ïðåâðàùàåòñÿ â ñâîåîáðàçíûé ïóòü, ïîäîáíî ïóòè â ôàéëîâîé ñèñòåìå, ãäå ÷åðåç ðàçäåëèòåëè óêàçûâàþòñÿ âëîæåííûå äðóã â äðóãà êàòàëîãè, à çàâåðøàåòñÿ âñå èìåíåì ôàéëà.  ñëó÷àå ñ äåðåâîì ïàðàìåòðîâ, âìåñòî êàòàëîãîâ, âûñòóïàþò êàòåãîðèè, à âìåñòî ôàéëà - èìÿ ïàðàìåòðà.  êà÷åñòâå ðàçäåëèòåëÿ èñïîëüçóåòñÿ ñèìâîë êðûøêè "^", íàïðèìåð:

let sList = "Option1:Êàòåãîðèÿ1^Ïîäêàòåãîðèÿ1^Ïàðàìåòð1" + _DLG_SEPARATOR
	+ "Option2:Êàòåãîðèÿ1^Ïîäêàòåãîðèÿ2^Ïàðàìåòð2"

Âìåñòî ñèìâîëà "^", ìîæíî èñïîëüçîâàòü èìåíîâàííóþ êîíñòàíòó NODE_PATH_DEliMITER, îïðåäåë¸ííóþ â ôàéëå UO.jsm.

Îäíàêî òàêîé ñïîñîá óêàçàíèÿ âëîæåííûõ êàòåãîðèé íå î÷åíü óäîáåí.

Âòîðîé ñïîñîá çàêëþ÷àåòñÿ â òîì, ÷òî íàçâàíèå êàòåãîðèè, â êîòîðóþ áóäóò ïîìåùåíû ïàðàìåòðû, ìîæíî íåïîñðåäñòâåííî ïåðåäàòü òðåòüåì àðãóìåíòîì ôóíêöèè OptionsTreeCore. Ïðè ýòîì âòîðîé àðãóìåíò ýòîé ôóíêöèè äîëæåí áûòü False èëè 0. Îäíàêî ñëåäóåò ó÷åñòü, ÷òî â óêàçàííóþ êàòåãîðèþ áóäóò ïîìåùåíû òîëüêî òå ïàðàìåòðû, äëÿ êîòîðûõ íå óêàçàíû êàòåãîðèè â ñòðîêå ñïèñêà ïàðàìåòðîâ. Íàïðèìåð:

Let sList = "Option1:Ïàðàìåòð1"+_DLG_SEPARATOR
	+"Option2:Ïàðàìåòð2"+_DLG_SEPARATOR
	+"Option3:Êàòåãîðèÿ5^Ïàðàìåòð3"
	
	OptionsTreeCore (sList,0,"Êàòåãîðèÿ1")

 ðåçóëüòàòå âûïîëíåíèÿ ýòîãî ôðàãìåíòà â äåðåâå ïàðàìåòðîâ áóäóò ñîçäàíû äâå êàòåãîðèè: Êàòåãîðèÿ1 è Êàòåãîðèÿ5.  Êàòåãîðèþ1 áóäóò ïîìåùåíû Ïàðàìåòð1 è Ïàðàìåòð2, à â Êàòåãîðèè5 îêàæåòñÿ Ïàðàìåòð3.

Òðåòèé ñïîñîá ïðåäïîëàãàåò çíàêîìñòâî ñî ñïåöèàëüíîé ôóíêöèåé ConvertListToNodeList, êîòîðàÿ ïåðåôîðìàòèðóåò îïðåäåë¸ííûé ñïèñîê ïàðàìåòðîâ, äîáàâëÿÿ êî âñåì ýëåìåíòàì óêàçàííóþ êàòåãîðèþ.

Ïðè âûçîâå Ôóíêöèè ConvertListToNodeList ïåðåäàþòñÿ äâà àðãóìåíòà. Ïåðâûé àðãóìåíò - ýòî ññûëêà íà ñòðîêó ñïèñêà ýëåìåíòîâ. Ýòîò ñïèñîê áóäåò ïðåîáðàçîâàí â ñïèñîê ñ óêàçàíèåì êàòåãîðèè.

Âòîðîé àðãóìåíò - ýòî èìÿ êàòåãîðèè (âêëþ÷àÿ ïîäêàòåãîðèè, ðàçäåëåííûå ñèìâîëîì "^"), êîòîðîå áóäåò äîáàâëåíî ê ïåðâîìó ïàðàìåòðó, òî åñòü ê ñïèñêó. Çà ïîäðîáíîñòÿìè ìîæíî îáðàòèòüñÿ ê ñïðàâêå Äèñïåò÷åðà ñêðèïòîâ èëè FSDN (ðàçäåë Strings).

Âîò ïðèìåð èñïîëüçîâàíèÿ ýòîé ôóíêöèè:

Let sList = "Option1:Ïàðàìåòð1"+_DLG_SEPARATOR
	+"Option2:Ïàðàìåòð2"
	
ConvertListToNodeList(sList, "Ïîäêàòåãîðèÿ1")
ConvertListToNodeList(sList, "Êàòåãîðèÿ1")
OptionsTreeCore (sList)

Ýòîò ïðèìåð ïîêàçûâàåò, ÷òî ïðè ïîìîùè ôóíêöèè ConvertListToNodeList ìîæíî ñîçäàâàòü èåðàðõèþ âëîæåííûõ êàòåãîðèé (ïðè÷åì íà÷èíàòü íàäî ñ ñàìîé íèæíåé).  ðåçóëüòàòå ïîëó÷èì â äåðåâå ïàðàìåòðîâ Êàòåãîðèþ1, â êîòîðóþ áóäåò âëîæåíà Ïîäêàòåãîðèÿ1, â êîòîðîé áóäóò ðàñïîëàãàòüñÿ Ïàðàìåòð1 è Ïàðàìåòð2. Òîò æå ðåçóëüòàò ìîæíî ïîëó÷èòü îäíîêðàòíûì âûçîâîì ôóíêöèè ConvertListToNodeList , óêàçàâ âòîðûì àðãóìåíòîì ñòðîêó ñ êàòåãîðèåé è ïîäêàòåãîðèåé:

ConvertListToNodeList(sList, "Êàòåãîðèÿ1^Ïîäêàòåãîðèÿ1")

Äðóãèå ïðèìåðû èñïîëüçîâàíèÿ ìîæíî ïîñìîòðåòü â ôóíêöèÿõ TreeCoreGet*Options â ôàéëå UserOptions.jss.

Ïîäñêàçêà äëÿ êàòåãîðèè

×òîáû ïåðåäàòü òåêñò ïîäñêàçêè äëÿ ñîçäàííîé êàòåãîðèè, íàäî îïðåäåëèòü ñîáñòâåííûé âàðèàíò ôóíêöèè NodeHlp . Âàðèàíò ýòîé ôóíêöèè ïî óìîë÷àíèþ îïðåäåë¸í â ôàéëå UserOptions.jss.

Âîò ïðèìåð ïîëüçîâàòåëüñêîãî îïðåäåëåíèÿ â ôàéëå ñêðèïòîâ äëÿ êîíêðåòíîãî ïðèëîæåíèÿ (ïîäðàçóìåâàåòñÿ, ÷òî ñîçäàíà êàòåãîðèÿ ïî óìîë÷àíèþ, èìÿ êîòîðîé ñîäåðæèò èìÿ àêòèâíîé êîíôèãóðàöèè):

string Function NodeHlp (string sNodeName)
	If StringContains (sNodeName, GetActiveConfiguration()) Then
		return "Òåêñò ïîäñêàçêè äëÿ íàøåé êàòåãîðèè!"
	EndIf
	Return NodeHlp (sNodeName)
EndFunction

Ýòà ôóíêöèÿ ïðèíèìàåò îäèí ïàðàìåòð - ñòðîêó sNodeName, ñîäåðæàùóþ èìÿ êàòåãîðèè äëÿ êîòîðîé òðåáóåòñÿ ïîäñêàçêà. Äàëåå âûïîëíÿåòñÿ ïðîâåðêà: åñëè èìÿ òðåáóåìîé êàòåãîðèè ñîäåðæèò èìÿ àêòèâíîé êîíôèãóðàöèè, òî âîçâðàùàåòñÿ òåêñò ïîäñêàçêè äëÿ ýòîé êàòåãîðèè.

Åñëè áû áûëà ñîçäàíà íå êàòåãîðèÿ ïî óìîë÷àíèþ, à êàòåãîðèÿ ñ êîíêðåòíûì èìåíåì (íàïðèìåð, "Êàòåãîðèÿ1"), òî ïðîâåðêó íàäî áûëî áû âûïîëíÿòü íà ñîâïàäåíèå èì¸í êàòåãîðèé:

If 0 == StringCompare(sNodeName, "Êàòåãîðèÿ1") Then
; ...


Ðàñïðîñòðàíåíèå ìàòåðèàëîâ ñàéòà îçíà÷àåò, ÷òî ðàñïðîñòðàíèòåëü ïðèíÿë óñëîâèÿ ëèöåíçèîííîãî ñîãëàøåíèÿ.
Èäåÿ è ðåàëèçàöèÿ: © Âëàäèìèð Äîâûäåíêîâ è Àíàòîëèé Êàìûíèí,  2004-2026