<sect1 id="javascript">
<title
>JavaScript</title>

<sect2 id="javascript_console">
    <title
>Консоль JavaScript</title>
    <indexterm>
      <primary
>Консоль JavaScript</primary>
    </indexterm>
    <para
>Натискання комбінації клавіш <keycombo action="simul"
>&Alt;&Ctrl; <keycap
>J</keycap
></keycombo
> відриває консоль JavaScript. (цією можливістю можна буде скористатися, лише якщо у системі було встановлено libkjsembed під час збирання і виконання програми)</para>
    <para
>Консоль JavaScript є інтерфейсом до вбудованого інтерпретатора JS, яким можна скористатися з естетичних або практичних міркувань.</para>
  </sect2>

  <sect2 id="javascript_interface">
    <title
>Інтерфейс JavaScript</title>
    <indexterm>
      <primary
>Інтерфейс JavaScript</primary>
    </indexterm>
    <para
><emphasis role="bold"
>Попередження:</emphasis
> підтримка JS у програмі є досить стабільною, ви не втратите жодних даних, якщо нею користуватиметеся. Але ваші скрипти можуть стати непрацездатними у наступних версіях &krusader;, оскільки формат підтримки JS може змінитися.</para>
    <tip>
      <para
>Будь ласка, <link linkend="help_krusader"
>поділіться вашими улюбленими додатками JavaScript</link
>, щоб ними могли скористатися інші учасники спільноти &krusader;. Дякуємо!</para>
    </tip>
    <para
>Програма мовою JavaScript, зазвичай, складається з двох файлів <filename
>foo.js</filename
> і <filename
>foo.ui</filename
>. Ці файли буде встановлено до теки <filename
>~/.kde/share/apps/krusader/js/</filename
>. Скрипт буде виконано у відповідь на виклик дії користувача з назвою "%_Script". Разом з поточною версією програми постачається два демонстраційних скрипти: <filename
>root-mount-extension.tar.bz2</filename
> and <filename
>js-demo-calc.tar.bz2</filename
>, за допомогою яких ви зможете зрозуміти принципи роботи скриптів.</para>
    <para
>Під час виконання скрипту сам скрипт не може визначити, звідки його було запущено (або, можливо, авторам програми просто невідомий спосіб визначення потрібних даних), отже всі адреси вважатимуться адресами, вказаними відносного поточного робочого каталогу. Але цей каталог (зазвичай) не є тим каталогом, де зберігається скрипт, цей каталог — поточний каталог активної панелі Krusader. Так і має бути. Але для посилання на додаткові файли, наприклад, .ui (Userinterface (інтерфейс користувача), експортовані з &Qt; Designer) потрібен шлях до скрипту. Використання абсолютних шляхів у такому разі є дуже незручним. Для того, щоб розв’язати цю проблему, було введено змінну "scriptDir". Якщо вам потрібно, щоб певний скрипт завантажив графічний інтерфейс з файла .ui, це можна зробити такою командою: <emphasis
>var ui = Factory.loadui( scriptDir + 'назва_файла.ui' );</emphasis
> Рекомендуємо вам скористатися Dialog (діалоговим вікном) як основою розробки графічного інтерфейсу, який буде використано у JS. Відкрити таке діалогове вікно можна за допомогою команди: <emphasis
>ui.exec();</emphasis
> Доступ до елементів графічного інтерфейсу можна отримати у такий спосіб: <emphasis
>ui.child('Назва_віджета')</emphasis
></para>
    <para
>У поточній версії передбачено лише доступ до об’єктів C++ 'Krusader' і 'PanelManager', без логічних взаємозв’язків між ними. Переглянути значення цих об’єктів можна за допомогою консолі JS та функцій 'properties()', 'children()' і 'slots()'. Доступ до дочірніх об’єктів можна отримати за допомогою функції 'child("nameOfChild")', яка повертає сам об’єкт. У поточній версії змінна scriptDir є кориснішою ніж у попередніх. На основі додатка root-mount вже можна створювати чудові графічні інтерфейси до інструментів командного рядка.</para>
    <para
>Ви можете погратися з викликами 'Krusader.setCaption("Гоп-скік, ось і ми!");', 'Krusader.children();', 'Krusader.child("help").slots();', 'alert(Krusader.properties())' або 'Krusader.child("help").show();'... Крім того, новий заповнювач для <link linkend="useractions"
>Дій користувача</link
>, %_Script()%, може виконувати зовнішній файл.</para>
    <para
>ЗАУВАЖЕННЯ: Об’єкт «Krusader» буде змінено. Автори програми поки що не досягли консенсусу щодо інтерфейсу JS (на час випуску версії 1.70.0-release). Будь-які ваші ідеї буде з вдячністю вислухано. Будь ласка, скористайтесь для відгуків нашим <ulink url="http://www.krusader.org/phpBB/index.php"
>Форумом &krusader;</ulink
>.</para>
    <para
>Підтримку JavaScript засновано на компоненті <ulink url="http://xmelegance.org/kjsembed/"
>KJSEmbed</ulink
>. Декілька прикладів, які демонструють потужність цієї бібліотеки, можна знайти <ulink url="http://xmelegance.org/kjsembed/examples/index.html"
>тут</ulink
>. У бібліотеці передбачено підтримку всіх основних технологій KDE, зокрема DCOP і KPart. Ви навіть можете завантажувати графічні інтерфейси, описані у файлах .ui, створених за допомогою &Qt;. Приклад додатка з використанням такого інтерфейсу можна знайти <ulink url="http://www.krusader.org/phpBB/viewtopic.php?p=4832#4832"
>тут</ulink
>.</para>
</sect2>

</sect1>

