MainTopic

Skriptování v rkEditu

Skriptování zavedené ve verzi 4.0 má sloužit uživatelskému rozšíření aplikace o další možnosti jako je např. formátování textu. Každý uživatel má možnost napsat si vlastní skript a tím obohatit editor o nové funkce, šité přímo na míru dané potřebě.

Zdrojový text skriptu je psán v jazyce JScript nebo VBScript a pro vlastní interpretaci je nutné mít nainstalovaný skriptovací rozhraní společnosti Microsoft (u novějších verzí je součástí systému). Jestliže si nevíte rady s instalací, obraťte se na autora rkEditu.

Pokud se skriptováním teprve začínáte, je pro vás připraven Úvod do skriptování v rkEditu.

V následujícím seznamu jsou abecedně seřazeny všechny základní objekty poskytované rkEditem:

  • Actions

  • Dialogs

  • Editor

  • Help

  • Menu

  • System

  • Variables

  • Constants


Úvod

Úvod do skriptování v rkEditu

Při startu aplikace se rkEdit podívá, zda v jeho domovském adresáři (např. C:\Program Files\rkEdit) existuje podadresář Scripts a v něm soubor InitialScript.js nebo InitialScript.vbs (jsou-li tam oba, bere se v potaz s příponou .js). Pokud soubor existuje, musí obsahovat funkci Main(), která je spuštěna. Tato funkce může vypadat například takto:

  function Main()

  {

    Dialogs.ShowMessage ("Hello world!");

  }

V této inicializační funkci se běžně vytvářejí akce a položky menu, mohou se načíst případné uložené konstanty a proměnné. Výkonný kód je pak volán až na žádost uživatele (ovšem to neznamená, že se zde nesmí nic vykonat).

Základním stavebním kamenem skriptování v rkEditu jsou tzv. akce. Při definici akce je nutné uvést její jméno, klávesovou zkratku, jaký skript se má spustit v případě aktivace akce a další (přesný popis parametrů u metody NewAction třídy Actions).

Uživatel samozřejmě musí nějakým způsobem akci vyvolat. V současné době toho lze dosáhnout definováním položek menu a jejich zařazením do menu aplikace. Uživatel pak skript spustí výběrem konkrétní položky v menu.

Vše si ukažme na následujícím příkladě (použit je jazyk JScript). Do inicializačního skriptu vložte následující zdrojový kód:

function Main()

{

  //nejprve musíme vytvořit akci, která se bude jmenovat MyFirstAction,

  //v menu se bude zobrazovat text ´My first action´, klávesová zkratka

  //bude Ctrl+D a při vyvolání akce se spustí ve skriptu C:\myscript.js

  //funkce nazvaná MyFirstActionExecute.

  Actions.NewAction ("actMyFirstAction", "My first action", "", "Ctrl+D", -1,

                     "C:\\myscript.js", "MyFirstActionExecute",

                     "", "");

  //nyní vložíme tuto akci např. do menu Help. To uděláme vytvořením

  //položky menu pojmenované např. miMyFirstMenuItem:

  Menu.AddActionItem ("miMyFirstMenuItem", "miHelp", "actMyFirstAction");

}

Nyní je ještě nutné vytvořit soubor C:\myscript.js, ve kterém bude funkce MyFirstActionExecute, která může vypadat například takto:

function MyFirstActionExecute()

{

  Dialogs.ShowMessage ("Yes, it works!");

}

Pokud skript editujete v rkEditu, ukončete jej a spusťte znovu. Jestliže jste vše provedli správně, pak v menu Help přibyla nová položka. Po jejím zvolení se zobrazí dialog se zprávou.

Tímto je vlastně vše důležité pro úvod řečeno. V obsahu je seznam všech dostupných tříd, které lze ze skriptu využívat. Je vhodné pročíst si je včetně dostupných vlastností a metod. U většiny je ukázán příklad použití.

Vhodným studijním materiálem taktéž může být kapitola Tipy a triky a Hotová řešení.


Tipy a triky

  • Pokud edituje skript v rkEditu a má význam jej spouštět přímo, můžete použít volbu Run skript z menu Compile. Po zadání názvu funkce je tato spuštěna.

  • Máte-li skripty ve stejném adresáři jako je inicializační, používejte vlastnosti ScriptPath objektu System.

  • V hlavní nabídce si můžete sami vytvořit hlavní položku, použijte metodu InsertParentItem nebo AddParentItem třídy Menu a jako ParentMenuItem dejte prázdný řetězec.

Pokud máte svoje další zajímavosti, které byste rádi zde zveřejnili, dejte mi prosím o tom vědět.


Actions

Objekt Actions je základním prvkem pro definování operací (akcí) v editoru. Tyto akce se pak vkládají do menu, ze kterého jsou vyvolávány.

  • property UpdatedAction: string - Při volání funkce definované v parametru OnUpdateFunctionName metody NewAction je v této vlastnosti umístěn název akce, pro kterou se daná funkce volá. Tohoto jména lze využít v metodě SetActionEnabled.

  • procedure NewAction (Name: string; Caption: string; Hint: string; ShortCut: string; PictureIndex: Integer; OnExecuteScript: string; OnExecuteFunctionName: string; OnUpdateScript: string; OnUpdateFunctionName: string) - Metoda vytvoří novou akci, která je určena jménem (parametr Name). Každá akce má text, který se bude objevovat např. v menu (parametr Caption), nápovědnou popisku (parametr Hint - zatím není v editoru využito), klávesovou zkratku (parametr ShortCut, může být prázdný řetězec. Pokud se řetězec špatně napíše, nebude brán v potaz, pozor také na kolize stejných klávesových zkratek, program je nekontroluje. Ctrl+A je stejné jako Ctrl+a.) a index obrázku (parametr PictureIndex - zatím se nepoužívá, zadávejte vždy -1). Pokud je akce zvolena (např. z menu), je volána odpovídající funkce. Ta se určuje názvem skriptu, ve kterém je umístěna (parametr OnExecuteScript) a jménem (parametr OnExecuteFunctionName). Pokud má být funkce povolena pouze za některých okolností (např. je-li otevřen nějaký soubor), pak program automaticky volá ve skriptu zadaném v parametru OnUpdateScript funkci zadanou v parametru OnUpdateFunctionName.

  • procedure SetActionEnabled (Name: string; Enabled: Boolean) - Povolí nebo zakáže akci zadanou v parametru Name. Je využíváno hlavně ve funkcích pro aktualizaci akcí.

Příklad:

Chtějme rozšířit rkEdit o možnost zobrazit na žádost uživatele počet řádků v editovaném souboru. Příkaz se bude vyvolávat z menu Scripts, kde bude položka Show lines count. Tato akce bude povolená pouze tehdy, pokud bude otevřen nějaký soubor.

Nejprve v inicializačním skriptu do funkce Main() vložme následující řádky:

//proměnná, kde bude napsáno, kde jsou moje skripty

  var

    ScriptsFile = System.ScriptPath+"myscripts.js";

//vytvoříme položku menu v hlavním menu na pozici 9

Menu.InsertParentItem ("miScripts", "", "Scripts", 9);

//vytvořím akci

Actions.NewAction ("actLinesCount",

                   "Show lines count", "", "", -1,

                   ScriptsFile, "LinesCount",

                   ScriptsFile, "IsSomeFileOpened");

//a vložím ji do menu

Menu.AddActionItem ("miLinesCount", "miScripts", "actLinesCount");

Nyní v adresáři se skripty budu mít následující dvě funkce:

//tato říká, kdy bude položka v menu povolená

function IsSomeFileOpened()

{

  Actions.SetActionEnabled (Actions.UpdatedAction,

                            Editor.IsSomeFileOpened());

} //IsSomeFileOpened

//vypíše počet řádků aktuálního souboru

function LinesCount()

{

  Dialogs.ShowMessage (Editor.ActiveEdit.Lines.Count);

}//LinesCount


ColorDialog

  • property Color: Integer - vlastnost určující barvu přiřazenou dialogu.

  • function Execute: Boolean - spustí dialog na výběr barvy.

  • function GetColorAsHTML: string - vrátí barvu z vlastnosti Color jako HTML text.

  • procedure SetColorFromHTML (HTMLColor: string) - Nastaví barvu předanou jako HTML text do vlastnosti Color.

Příklad

Představte si, že píšete HTML stránky a rádi byste viděli, jak vlastně vypadá barva např. pozadí, zadaná v HTML tagu BODY. Navíc chcete, aby v případě, že potvrdíte výběr jiné barvy, tak aby se nahradila stávající novou. Vytvořte si tedy akci do menu a na obsluhu vyvolejte následující funkci:

function ChangeHTMLColor()

{

  var

    Color = Editor.ActiveEdit.WordAtCursorPos;

  Dialogs.ColorDialog.SetColorFromHTML (Color);

  if (Dialogs.ColorDialog.Execute())

  {

    Editor.ActiveEdit.BeginUpdate();

    Editor.ActiveEdit.SetSelWord();

    Color = Dialogs.ColorDialog.GetColorAsHTML();

    Editor.ActiveEdit.SelText = Color.substr (1);

    Editor.ActiveEdit.EndUpdate();

  }

} //ChangeHTMLColor


Constants

Od verze 2. Objekt Constants slouží pro uchovávání konstantních hodnot (tedy jednou definovaných a dále neměnných) i mimo běh jednoho skriptu. Také umožňuje konstanty uložit a opět načíst do/ze soubor.

  • procedure Clear - Metoda vymaže všechny konstanty a jejich hodnoty ze seznamu.

  • procedure Define (VariableName: string, VariableValue: string) - Definuje novou konstantu a její hodnotu.

  • procedure Delete (VariableName: string) - Vymaže konstantu ze seznamu.

  • function GetValue (VariableName: string): string - Vrátí hodnotu konstanty zadané jménem.

  • function IsDefined (VariableName: string): Boolean - Vrací True, pokud je konstanta zadaná svým názvem definována. Pokud není, vrací False.

  • procedure SaveToFile (FileName: string) - Uloží seznam konstant a jejich hodnot do souboru.

  • procedure LoadFromFile (FileName: string) - Odstraní stávající konstanty a načte konstanty a jejich hodnoty ze souboru.

Pozor! Názvy konstant jsou závislé na velikosti písmen a to bez ohledu na to, jaký skriptovací jazyk používáte.

Příklad:

Následující příklad načte konstanty ze souboru (pokud soubor existuje) a pokud není definována konstanta i, definuje i. Následně hodnotu konstanty zobrazí. Nakonec konstantu opět uloží do souboru. Pozor. Z příkladu se může zdát, že je nutné konstanty neustále načítat a ukládat. Není to pravda. Konstanta existuje od své definice až do zavolání metody Clear, Delete nebo do ukončení rkEditu. Uložení na disk zajistí, že při znovunačtení konstant např. při novém spuštění rkEditu bude konstant existovat.

function Example()

{

  var

    cons = 'C:\\cons.txt';

  if (System.FileExists (cons))

    Constants.LoadFromFile (cons);

  if (!Constants.IsDefined ('i'))

    Constants.Define ('i', 0);

  Dialogs.ShowMessage (Constants.GetValue ('i'));

  Constants.SaveToFile (cons);

}


Dialogs

Tento objekt slouží jako kontejner následujících dialogů:

  • property ColorDialog: object ColorDialog - dialog na výběr barvy.

  • property InputDialog: object InputDialog - vstupní dialog.

  • procedure ShowMessage (MessageString: string) - zobrazí dialog se zadaným textem a tlačítkem Ok. Jde i informační dialog.

Příklad

Následující funkce získá od uživatele řetězec, který vypíše na obrazovku:

function GetAndShowText()

{

  if (Dialogs.InputDialog.Execute ("Zadání textu", "Zadej text:", ""))

    Dialogs.ShowMessage (Dialogs.InputDialog.Value);

}


EditControl

Objekt EditControl představuje editační prvek.

  • property Lines: object Lines - editovaný text.

  • property SelText: string - označený text v bloku. Pokud není nic označeno, je vrácen prázdný řetězec. Hodnotu lze měnit, doporučuje se před změnou zavolat BeginUpdate a po změně EndUpdate. Jedině tak budou správně fungovat příkazy Undo a Redo.

  • property ReadOnly: Boolean - Říká, zda text je označen pouze pro čtení. Hodnotu nelze měnit.

  • property Modified: Boolean - Říká, zda byl text od posledního uložení změněn. Hodnotu nelze měnit.

  • property FileName: string - Určuje jméno editovaného souboru. Pokud jde o dosud neuložený text, je vrácen prázdný řetězec. Hodnotu nelze měnit.

  • property WordAtCursorPos: string - vrací slovo, na kterém je umístěn kursor. Pokud ten je mimo text, je vrácen prázdný řetězec. Hodnotu nelze měnit.

  • property CaretX: Integer - Určuje x-ovou pozici kurzoru, hodnotu lze měnit. Pozice je počítána od 1.

  • property CaretY: Integer - Určuje y-ovou pozici kurzoru, hodnotu lze měnit. Pozice je počítána od 1.

  • property BlockBeginX: Integer - Určuje x-ovou pozici začátku bloku, hodnotu lze měnit. Před čtením hodnoty se přesvědčte, že SelText je neprázdný (jinak čtená hodnota nemá význam). Pozice je počítána od 1.

  • property BlockBeginY: Integer - Určuje y-ovou pozici začátku bloku, hodnotu lze měnit. Před čtením hodnoty se přesvědčte, že SelText je neprázdný (jinak čtená hodnota nemá význam). Pozice je počítána od 1.

  • property BlockEndX: Integer - Určuje x-ovou pozici konce bloku, hodnotu lze měnit. Před čtením hodnoty se přesvědčte, že SelText je neprázdný (jinak čtená hodnota nemá význam). Pozice je počítána od 1.

  • property BlockEndY: Integer - Určuje y-ovou pozici konce bloku, hodnotu lze měnit. Před čtením hodnoty se přesvědčte, že SelText je neprázdný (jinak čtená hodnota nemá význam). Pozice je počítána od 1.

  • property SelTextAsLines: object Lines - Zpřístupňuje označený text po řádcích. Má význam pouze v případě, že je označen nějaký blok (SelText je neprázdný).

  • property RightEdge: Integer - Vrací uživatelem nastavený počet znaků na řádek (místo, kde se kreslí svislá čára označující konec řádky).

  • procedure SelectAll - Označí celý text jako blok.

  • procedure BeginUpdate - Indikuje začátek operace s textem (text bude měněn). Bez zavolání této metody nebudou správně fungovat operace Undo a Redo.

  • procedure EndUpdate - Indikuje konec operace s textem (text byl měněn). Bez zavolání této metody nebudou správně fungovat operace Undo a Redo.

  • procedure SetSelWord - Slovo, na kterém je kurzor, označí jako blok.

  • procedure SetCaretXY (CaretX: Integer; CaretY: Integer) - Nastaví pozici kurzoru. Pozice jsou počítány od 1.

  • procedure SetBlockBegin (X: Integer; Y: Integer) - Nastaví začátek bloku. Pozice jsou počítány od 1.

  • procedure SetBlockEnd (X: Integer; Y: Integer) - Nastaví konec bloku. Pozice jsou počítány od 1.

  • function GetHighlighter: string - vrací jednoznačný řetězec identifikující nastavený zvýrazňovač.

  • procedure Undo - Provede operaci Zpět.

  • procedure Redo - Opačná operace k Undo.

  • procedure CopyToClipboard - Vloží označený text do bloku.

Příklad:

Následující funkce si nejprve uchová pozici kurzoru a v případě, že není označen blok textu označí jako blok celý text. Následně v bloku nahradí některé znaky za jiné (metoda replace). Po operaci vrátí pozici kurzoru zpět. Všimněte si i volání metody BeginUpdate a EndUpdate. Díky tomu budou operace vratné pomocí operace Undo.

function XMLSafeFormToText()

{

  var x = Editor.ActiveEdit.CaretX;

  var y = Editor.ActiveEdit.CaretY;

  Editor.ActiveEdit.BeginUpdate();

  if (Editor.ActiveEdit.SelText == '')

    Editor.ActiveEdit.SelectAll();

  var s = Editor.ActiveEdit.SelText;

  s = s.replace (/&amp;/g, '&');

  s = s.replace (/&lt;/g, '<');

  s = s.replace (/&gt;/g, '>');

  s = s.replace (/&apos;/g, "'");

  s = s.replace (/&quot;/g, '"');

  Editor.ActiveEdit.SelText = s;

  Editor.ActiveEdit.SetCaretXY (x, y);

}


Editor

Objekt Editor obsahuje základní vlastnosti a metody pro práci se soubory a projekty.

  • property ActiveEdit: object EditControl - obsahuje informace o aktuálním editovaném textu. Zda je nějaký text editovaný (soubor otevřený) lze zjistit pomocí metody IsSomeFileOpened.

  • function LoadFileToOutputWindow (FileName: string): Boolean - načte soubor zadaný parametrem do výstupního okna.

  • function OpenFile (FileName: string): Boolean - otevře zadaný soubor pro editaci a nastaví jej jako aktuální editovaný text.

  • function OpenProject (ProjectFileName: string): Boolean - otevře projekt zadaný jako parametr.

  • procedure NewFile - příkaz otevře nové editovací okno.

  • procedure NewFileWithHighlighter (const Highligher: string) - příkaz otevře nové editovací okno se zvoleným zvýrazňovačem. Zvýrazňovač se zadává svým jménem (např. xml, jscript, php a další). Od verze 2.

  • procedure OpenFileDlg - Vyvolá dialog pro otevření souboru a pokud uživatel nějaký vybere, je tento otevřen a nastaven jako aktuální.

  • procedure OpenProjectDlg - Vyvolá dialog pro otevření projektu a pokud uživatel nějaký vybere, je tento otevřen.

  • function IsSomeFileOpened: Boolean - říká, zda je otevřen nějaký soubor.

Příklad:

Příklad s použitím ActiveEdit lze nalézt u popisu objektu EditControl.

IsSomeFileOpened se často používá v aktualizačních funkcích, použití je vidět např. v příkladu objektu Actions.


Help

Objekt Help slouží k volání HTML nápovědy. Poskytuje následující metody:

  • procedure HTMLHelpIndex (FileName: string) - otevře HTML nápovědu, hlavní okno bude obsahovat index.

  • procedure HTMLHelpTOC (FileName: string) - otevře HTML nápovědu, hlavní okno bude obsahovat obsah.

  • procedure HTMLHelpSearch (FileName: string) - otevře HTML nápovědu, hlavní okno bude obsahovat vyhledávací formulář.

  • procedure HTMLHelpTopic (FileName: string; Topic: string) - otevře HTML nápovědu, hlavní okno bude obsahovat rejstřík.

Příklad:

V následujícím příkladě je ukázka, jak volat tuto nápovědu v závislosti na tom, na jakém slově stojí kurzor.

V inicializačním skriptu v hlavní funkci nechejte vytvořit akci pro volání nápovědy na stisk kláves Ctrl+F1 a vložte jej do menu Help:

  Actions.NewAction ("actContextHelp", "Context help", "", "Ctrl+F1", -1,

                     System.ScriptPath+"help.js", "ContextHelp",

                     System.ScriptPath+"help.js", "ContextHelpUpdate");

  Menu.InsertActionItem ("miContextHelp", "miHelp", "actContextHelp", 4);

V souboru help.js budou dvě funkce. ContextHelp je ta, které bude na stisk tlačítka volána, ContextHelpUpdate určuje, kdy je možné první uvedenou funkci volat (zde pouze v případě, je-li otevřen nějaký soubor). Funkce mohou tedy vypadat např. takto:

function ContextHelp()

{

  Help.HTMLHelpTopic (System.ApplicationPath+"rkScripting.chm",

                      Editor.ActiveEdit.WordAtCursorPos+".htm");

}

function ContextHelpUpdate()

{

  Actions.SetActionEnabled (Actions.UpdatedAction,

                            Editor.IsSomeFileOpened());

}

Pokud nyní bude kursor např. na slově Help, zobrazí se tento text. Je nutné si uvědomit, že kontextová nápověda je napsána pouze pro známé objekty.

Funkci ContextHelp je možné upravit např. pro různé zvýrazňovače apod.


InputDialog

InputDialog je určen pro zadání hodnoty od uživatele.

  • property Value: string - vlastnost pro zápis i čtení. Obsahuje hodnotu, kterou zadal uživatel v dialogu, který se objeví při volání metody Execute.

  • function Execute(Caption: string; Prompt: string; DefaultValue: string): Boolean - zobrazí dialog se vstupní řádkou a čeká na reakci uživatele. Pokud je vrácena pravdivá hodnota, vlastnost Value obsahuje řetězec, který uživatel zadal.

Příklad je uveden u objektu Dialogs.


Lines

Objekt Lines uchovává seznam řetězců (řádky textů).

  • property Count: integer - vrací počet řádků.

  • procedure SaveToFile (FileName: string) - Uloží obsah řádek do souboru.

  • procedure LoadFromFile (FileName: string) - Načte řádky ze souboru.

  • function Items (Index: Integer): string - vrátí požadovaný řádek. Index musí být v rozsahu 1 až Count.

Příklad na zjištění počtu řádků v aktuálním editovaném souboru lze vidět u objektu Actions.


Menu

Objekt menu umožňuje vkládat definované akce do standardní nabídky editoru.

  • procedure AddActionItem (Name: string; ParentItemName: string; ActionName: string) - Do menu specifikovaného parametrem ParentItemName vloží novou položku pojmenovanou Name a vyvolávající akci definovanou parametrem ActionName. Položka menu, do které se vkládá, může být jednak uživatelsky vytvořená, nebo lze vkládat do standardních položek editoru. Jejich názvy jsou následující:

    • miSystem - položka menu File

    • miEdit - položka menu Edit

    • miSearch - položka menu Search

    • miView - položka menu View

    • miProject - položka menu Project

    • miCompile - položka menu Compile

    • miSpecial - položka menu Special

    • miPlugins - položka menu Plugins

    • miSettings - položka menu Settings

    • miHelp - položka menu Help

  • procedure AddParentItem (Name: string; ParentItemName: string; Caption: string) - Vytvoří v menu novou nabídku pojmenovanou Name, do které bude možné vkládat další položky menu. Pokud ParentItemName je prázdný řetězec, bude vytvořena položka na nejvyšší úrovni. Text, který se zobrazí, je určen parametrem Caption.

  • procedure AddSeparator (const ParentItemName: string) - Vloží do specifikovaného menu separátor (vodorovná linka). Pozor, pokud není vložena další položka nebo je separátor na první pozici, není vidět.

  • procedure InsertActionItem (Name: string; ParentItemName: string; ActionName: string; Index: Integer) - Metoda má stejný význam jako AddActionItem, pouze se navíc určuje index, kde bude položka umístěna.

  • procedure InsertParentItem (Name: string; ParentItemName: string; Caption: string; Index: Integer) - Metoda má stejný význam jako AddParentItem, pouze se navíc určuje index, kde bude položka umístěna.

  • procedure InsertSeparator (const ParentItemName: string; Index: Integer) - Vloží do specifikovaného menu na určené místo separátor (vodorovná linka). Pozor, pokud není vložena další položka nebo je separátor na první pozici, není vidět.

Příklad viz u objektu Actions.


System

Objekt System slouží pro práci se systémem a pro zjišťování systémových informací o editoru.

  • property ApplicationPath: string - v této vlastnosti je uložena cesta, kde je uložena aplikace. Cesta je včetně zpětného lomítka na konci!

  • property ScriptPath: string - vlastnost uchovává cestu do skriptovacího adresáře aplikace (tedy tam, kde je uložena aplikace plus adresář Scripts). Pokud máte své skripty uloženy v tomtéž adresáři, je vhodné používat této vlastnosti. Při přenosu rkEditu jinam budou skripty fungovat bez jediného zásahu. Cesta je včetně zpětného lomítka na konci!

  • property TempPath: string - vlastnost uchovává cestu k adresáři, kde se mohou vytvářet dočasné soubory. Cesta je včetně zpětného lomítka na konci!

  • property ScriptingVersion: integer - Tato vlastnost určuje verzi skriptovacích objektů rkEditu. Má pouze informativní charakter, pro vaše skripty používejte metodu SupportVersion.

  • function SupportVersion (Version: Integer): Boolean - Funkce vrací True, pokud rkEdit podporuje verzi zadanou jako parametr, jinak vrací False. Pokud máte skripty pro více verzí rkEditu a chcete zajistit, že se všude budou chovat korektně, ptejte se, zda funkci, kterou chcete použít, odpovídá verzi. Zde je důležité podotknout, že se může stát, že někdy v budoucnu budou některé metody přesunuty, přejmenovány či zrušeny. Příklad viz dále.

  • procedure RunApplication (Application: string; WorkingDirectory: string) - Metoda spustí aplikaci uvedenou v parametru Application. Druhý parametr určuje pracovní adresář.

  • function DeleteFile (FileName: string): Boolean - metoda smaže soubor uvedený v parametru FileName. Vrací True při úspěchu, jinak False.

  • procedure Beep - Metoda vyvolá systémový zvuk nazvaný hvězdička (asterix). Pokud není nainstalována zvuková karta, mělo by dojít k pípnutí na systémovém reproduktoru.

  • function FileExists (FileName: string): Boolean - Vrací pravdu, pokud soubor zadaný jako parametr existuje. Jinak vrací False. Od verze 2.

  • function FileToString (const FileName: string): string - Načte soubor a jeho obsah vrátí jako řetězec. Od verze 2.

Příklad:

Na tomto příkladu je ukázáno použití metody SupportVersion. Vemme si např. metodu NewFile a NewFileWithHighlighter. První je dostupná v rkEditu již od verze skriptování 1, druhá byla zavedena až s verzí 2. Pokud chceme otevřít nový soubor např. s výrazňovačem XML, zeptáme se, zda rkEdit podporuje skriptování verze 2 a pokud ano, použijeme novou funkci. Pokud ne, použijeme starší:

function MyNewFileTest()

{

  if (System.SupportVersion (2))

    Editor.NewFileWithHighlighter ('xml');

  else

    Editor.NewFile();

}


Variables

Od verze 2. Objekt Variables slouží pro uchovávání hodnot i mimo běh jednoho skriptu. Také umožňuje proměnné uložit a opět načíst do/ze souboru. Toho lze využít např. při uživatelsky zadávaných datech, kdy lze uživateli nabídnout předchozí hodnotu.

  • procedure Clear - Metoda vymaže všechny proměnné a jejich hodnoty ze seznamu.

  • procedure Define (VariableName: string, VariableValue: string) - Definuje proměnnou a její hodnotu.

  • procedure Delete (VariableName: string) - Vymaže proměnnou ze seznamu.

  • procedure SetValue (VariableName: string, VariableValue: string) - Nastaví proměnné v seznamu novou hodnotu.

  • function GetValue (VariableName: string): string - Vrátí hodnotu proměnné zadané jménem.

  • function IsDefined (VariableName: string): Boolean - Vrací True, pokud je proměnná zadaná svým názvem definována. Pokud není, vrací False.

  • procedure SaveToFile (FileName: string) - Uloží seznam proměnných a jejich hodnot do souboru.

  • procedure LoadFromFile (FileName: string) - Odstraní stávající proměnné a načte proměnné a jejich hodnoty ze souboru.

Pozor! Názvy konstant jsou závislé na velikosti písmen a to bez ohledu na to, jaký skriptovací jazyk používáte.

Příklad:

Následující příklad načte proměnné ze souboru (pokud soubor existuje) a pokud není definována proměnná i, definuje ji. Pokud je definována, přičte k ní jedničku. Následně hodnotu proměnné zobrazí. Nakonec proměnné opět uloží do souboru. Pozor. Z příkladu se může zdát, že je nutné neustále proměnné načítat a ukládat. Není to pravda. Proměnná existuje od své definice až do zavolání metody Clear, Delete nebo do ukončení rkEditu. Uložení na disk zajistí, že při znovunačtení proměnných např. při novém spuštění rkEditu bude proměnná existovat.

function Example()

{

  var

    vars = 'C:\\vars.txt';

  if (System.FileExists (vars))

    Variables.LoadFromFile (vars);

  if (Variables.IsDefined ('i'))

    Variables.SetValue ('i', Variables.GetValue ('i')*1+1);

  else

    Variables.Define ('i', 0);

  Dialogs.ShowMessage (Variables.GetValue ('i'));

  Variables.SaveToFile (vars);

}


Hotová řešení

Hotová řešení uživatelů rkEditu lze aktuálně nalézt a stáhnout na stránce produktu. Skripty bývají včetně komentářů a lze se z nich dozvědět různé postupy jednak pro vlastní skriptování a jednak pro skriptování v rámci rkEditu.

Další studijní materiál lze nalézt v adresáři Scripts, kde jsou základní skripty dodávané s rkEditem.


Inicializační skript

Při startu aplikace se rkEdit podívá, zda v jeho domovském adresáři (např. C:\Program Files\rkEdit) existuje podadresář Scripts a v něm soubor InitialScript.js nebo InitialScript.vbs (jsou-li tam oba, bere se v potaz soubor s příponou .js). Pokud soubor existuje, musí obsahovat funkci Main(), která je spuštěna.

Inicializační skript je spouštěn až když je vše načteno, tedy případné dříve otevřené projekty, soubory, parametry apod.

Další informace lze získat v úvodu do skriptování.

Upozornění: V adresáři Scripts se mohou vyskytovat i soubory SystemInitialScript.js a SystemScripts.js. Tyto soubory neupravujte, jsou systémové.