<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN"
"dtd/kdex.dtd" [
<!ENTITY kseg "<application
>KSeg</application
>">
<!ENTITY cabri "<application
>Cabri</application
>">
<!ENTITY drgeo "<application
>Dr.Geo</application
>">
<!ENTITY package "kdeedu">
<!ENTITY kappname "&kig;">
<!ENTITY % addindex "IGNORE">
<!ENTITY % Polish "INCLUDE">
<!-- change language only here -->
]
>

<book lang="&language;">

<bookinfo>
<title
>Podręcznik &kig;</title>

<authorgroup>
<author
><firstname
>Dominique</firstname
> <surname
>Devriese</surname
> <affiliation
> <address
><email
>devriese@kde.org</email
></address>
</affiliation>
</author>
<othercredit role="translator"
><firstname
>Marcin</firstname
><surname
>Bokszczanin</surname
><affiliation
><address
><email
>mboksz AT bcig.pl</email
></address
></affiliation
><contrib
>Polskie tłumaczenie</contrib
></othercredit
> <othercredit role="translator"
><firstname
>Robert</firstname
><surname
>Gomułka</surname
><affiliation
><address
><email
>carramba@epf.pl</email
></address
></affiliation
><contrib
>Polskie tłumaczenie</contrib
></othercredit
> 
</authorgroup>


<copyright>
<year
>2002</year
><year
>2003</year
><year
>2004</year
> <holder
>Dominique Devriese</holder>
</copyright>

<legalnotice
>&FDLNotice;</legalnotice>

<date
>2005-08-20</date
> <releaseinfo
>0.10.5</releaseinfo>

<abstract>
<para
>&kig; jest programem Interaktywnej geometrii dla środowiska &kde;. </para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>KDE-Edu</keyword>
<keyword
>Kig</keyword>
<keyword
>Interaktywna Geometria</keyword>
<keyword
>KGeo</keyword>
<keyword
>Cabri</keyword>
<keyword
>Dr.Geo</keyword>
<keyword
>KSeg</keyword>
</keywordset>
</bookinfo>


<chapter id="introduction">
<title
>Wstęp</title>

<para
>&kig; jest programem Interaktywnej geometrii. Ma on służyć dwóm celom: </para>

<itemizedlist>
<listitem
><para
>Pozwolić uczniom na interaktywne poznawanie figur i koncepcji geometrycznych przy pomocy komputera.  </para
></listitem>

<listitem
><para
>Służyć jako narzędzie do rysowania figur geometrycznych w celu wstawiania ich do innych dokumentów.</para
></listitem>
</itemizedlist>

<para
>Możesz zgłaszać problemy z &kig; za pomocą wewnętrznego narzędzia do zgłaszania błędów  (<menuchoice
><guimenu
>Pomoc</guimenu
><guimenuitem
>Raport o błędzie...</guimenuitem
> </menuchoice
>), lub po prostu skontaktować się ze mną pod adresem <email
>toscano.pino@tiscali.it</email
>. </para>
<para
>Jako że &kig; obsługuje makra i konstrukcję zbiorów punktów, umożliwia on na zdefiniowanie dość zaawansowanych makr. Jeśli stworzyłeś/stworzyłaś interesujące makro, które mogłoby być użyteczne dla innych, proszę prześlij je na <email
>toscano.pino@tiscali.it</email
>, tak bym mógł je umieścić w dystrybucji (jeśli tak zrobisz, będzie ono dostępne pod licencją &kig; czyli pod <ulink url="http://www.gnu.org/licenses/licenses.html#GPL"
>GPL</ulink
>, tak by inni mogli go swobodnie używać i adaptować do własnych potrzeb). </para>
</chapter>


<chapter id="using-kig-basic">
<title
>Podstawy</title>
<section id="constructing-objects">
<title
>Konstruowanie obiektów</title>
<section id="constructing-points">
<title
>Konstruowanie punktów</title>
<para
>Punkty można konstruować na kilka sposobów:</para>
<itemizedlist>
<listitem>
<para
>Wybierz <menuchoice
><guimenu
>Obiekty</guimenu
> <guisubmenu
>Punkty</guisubmenu
> <guimenuitem
>Punkt</guimenuitem
></menuchoice
> z paska menu, lub wciśnij odpowiedni przycisk na pasku narzędzi. Możesz następnie utworzyć punkt klikając na pożądanym miejscu w oknie.</para
> <note
><para
>Właściwie dla konstruowania innych obiektów to działa w ten sam sposób: kliknij na właściwej pozycji paska menu, lub przycisku paska narzędzi i wybierz niezbędne elementy żeby utworzyć obiekt.</para
></note>
</listitem>
<listitem>
<para
>Ponieważ często tworzone są punkty, kliknięcie gdzieś na ekranie przy użyciu środkowego przycisku myszy stworzy dla Ciebie punkt, bez przechodzenia do menu, lub używania przycisku. </para>
</listitem>
<listitem>
<para
>Możesz skonstruować punkty podczas budowania innych obiektów w tle, opcjonalnie zaznaczając je dla obiektu, który budujesz. Po więcej informacji zerknij do <xref linkend="constructing-other-objects"/>. </para>
</listitem>
</itemizedlist>

<screenshot>
<screeninfo
>Utworzono punkt</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_a_point.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Utworzono punkt</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="constructing-other-objects">
<title
>Konstruowanie innych obiektów</title>
<para
>Konstruowanie obiektów innych niż punkty zwykle odbywa się przez wybranie odpowiedniej pozycji w menu <guimenu
>Obiekty</guimenu
>, lub kliknięciu na jednym z przycisków paska narzędzi. </para>
<screenshot>
<screeninfo
>Konstruowanie okręgu</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Konstruowanie okręgu</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Rozpocznie to konstruowanie wybranego typu obiektów. Wszystkie typy wymagają argumentów. Na przykład, jeśli wybrałeś tworzenie okręgu z podaniem środka i punktu, będziesz musiał podać dwa punkty: jeden dla środka, a drugi dla punktu na okręgu. </para>
<para
>Argumenty te są również obiektami, można je zaznaczyć, po prostu klikając na nie. Kiedy przesuniesz kursor nad argumentem, którego chcesz użyć do skonstruowania obiektu, wstępny obrazek obiektu zostanie pokazany, więc zobaczysz, jak to będzie wyglądać. Dla obiektów wymagających punktów jako argumentów, możesz umieścić nowy punkt w miejscu aktualnego położenia kursora i wybrać go klikając środkowym przyciskiem myszy. </para>
<para
>Zawsze możesz anulować tworzenie nowego obiektu naciskając przycisk &Esc;, albo klikając na przycisk <guiicon
>Stop</guiicon
> (czerwony ośmiokąt z <quote
>X</quote
>) na pasku narzędzi. </para>
<screenshot>
<screeninfo
>Konstruowanie okręgu.</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle_2.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Konstruowanie okręgu</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
</section>

<section id="selecting-objects">
<title
>Zaznaczanie obiektów</title>
<para
>Obiekty można zaznaczyć w dwojaki sposób: </para>
<itemizedlist>
<listitem>
<para
>Proste kliknięcie na obiekcie powoduje jego zaznaczenie, przy jednoczesnym wyczyszczeniu bieżącego zaznaczenia. Jeśli chcesz wybrać równocześnie wiele obiektów, przytrzymaj klawisz &Ctrl; podczas klikania na obiekcie. </para>
</listitem>
<listitem>
<para
>Klikając na puste miejsce na ekranie, a następnie przeciągając kursor myszy można zaznaczyć wszystkie obiekty znajdujące się wewnątrz utworzonego w ten sposób prostokąta. Spowoduje to wyczyszczenie aktualnego zaznaczenia. Jak w poprzednim przypadku, przytrzymanie wciśniętego klawisza &Ctrl; pozwoli zachować aktualne zaznaczenie. </para>
</listitem>
</itemizedlist>
<para
>Kiedy pod kursorem myszy znajduje się więcej, niż jeden obiekt, łatwo można wybrać, który obiekt zaznaczyć, lub dodać do aktualnego zaznaczenia. Kliknij środkowym przyciskiem myszy kiedy trzymasz wciśnięty klawisz &Shift;, żeby pojawiło się okienko z listą wszystkich obiektów znajdujących się pod kursorem myszy. Następnie możesz wybrać obiekt, którego potrzebujesz. Jak poprzednio wspomniano, klawisz &Ctrl; wpłynie na zaznaczenie. </para>

<screenshot>
<screeninfo
>Zaznaczanie obiektów</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="selecting_objects.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Zaznaczanie obiektów</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="moving-objects">
<title
>Przesuwanie obiektów</title>
<para
>Aby przesuwać obiekty, musisz je wpierw <link linkend="selecting-objects"
>zaznaczyć</link
>. </para>
<para
>Jeśli obiekty, które chcesz przesunąć, są zaznaczone, możesz rozpocząć ich przemieszczanie klikając lewym przyciskiem myszy i przeciągając dowolny z nich. Po skończeniu po prostu zwolnij środkowy przycisk myszy. </para>
<note
><para
>Dla niektórych typów obiektów (zwłaszcza zdefiniowanych przez skomplikowane zbiory punktów) ich przemieszczanie może odbywać się wolno na starszym sprzęcie. Nie jest to najszczęśliwsze, ale nieuniknione, biorąc pod uwagę wymaganą ilość obliczeń. </para
></note
> <note
><para
>Jeżeli klikniesz prawym przyciskiem myszy na jednym z zaznaczonych obiektów i wybierzesz <guimenuitem
>Przesuń</guimenuitem
>, poruszanie myszki spowoduje przesunięcie obiektu. Kiedy obiekt znajdzie się już w pożądanym miejscu, ponowne kliknięcie środkowym przyciskiem myszy zatrzyma przemieszczanie obiektu.</para
></note>
</section>
<section id="deleting-objects">
<title
>Usuwanie obiektów</title>
<para
>Usuwanie obiektów polega na <link linkend="selecting-objects"
>zaznaczaniu</link
> ich wpierw, a następnie: <itemizedlist>
<listitem>
<para
>Wciśnięciu klawisza <keycap
>Delete</keycap
>. </para>
</listitem>
<listitem>
<para
>Wciśnięciu przycisku <guiicon
>usuń</guiicon
> na pasku narzędzi. </para>
</listitem>
<listitem>
<para
>Kliknij <mousebutton
>prawym</mousebutton
> klawiszem myszy na jednym z obiektów i wybierz <guimenuitem
>Usuń</guimenuitem
> w <link linkend="objects-context-menus"
>menu kontekstowym</link
>, które się pojawia. </para>
</listitem>
</itemizedlist>
</para>
</section>

<section id="showing-hiding-objects">
<title
>Pokazywanie i ukrywanie obiektów</title>
<para
>W &kig; obiekty mogą być ukryte. Odbywa się to przez wybranie obiektów, kliknięcie prawym przyciskiem myszy na jednym z nich, a następnie wybranie <guimenuitem
>Ukryj</guimenuitem
> z <link linkend="objects-context-menus"
>menu kontekstowego</link
>, które się pojawi. </para>
<para
>Aby odkryć obiekty, użyj <menuchoice
><guimenu
>Edycja</guimenu
><guimenuitem
>Odkryj wszystkie</guimenuitem
></menuchoice
>. Odkryje to wszystkie obecnie ukryte obiekty. </para>

<section id="night-vision">
<title
>Nocny widok</title>
<para
>Nocny widok to szczególny sposób pracy z ukrytymi obiektami. Kiedy musisz przesunąć, lub zmienić coś w jednym (lub większej liczbie) z obiektów, ale bez odkrywania wszystkich ukrytych obiektów, tryb nocnego widoku będzie dobrodziejstwem dla Ciebie. </para>
<para
>W skrócie, pozwala on zobaczyć wszystkie ukryte obiekty, jak gdyby były one widoczne, więc możesz nimi manipulować w zwykły sposób. W trybie nocnego widoku, ukryte obiekty będą widoczne w szarym kolorze. </para>
<para
>Aby przełączyć tryb nocnego widoku, użyj <menuchoice
><guimenu
>Ustawienia</guimenu
><guimenuitem
>Załóż okulary podczerwone</guimenuitem
></menuchoice
>. </para>
</section>
</section>

<section id="undo-redo">
<title
>Cofnij/przywróć</title>
<para
>W &kig; możesz wycofać prawie każdą zmianę, której dokonałeś w dokumencie. Użyj po prostu przycisków <guiicon
>cofinij</guiicon
>/<guiicon
>przywróć</guiicon
> na pasku narzędzi, lub odpowiednich skrótów. </para>
</section>

<section id="full-screen-mode">
<title
>Tryb pełnoekranowy</title>
<para
>&kig; ma również tryb pełnoekranowy. Aby go użyć, kliknij odpowiedni przycisk na pasku narzędziowym, lub wybierz <menuchoice
><guimenu
>Ustawienia</guimenu
><guimenuitem
>Tryb pełnoekranowy</guimenuitem
></menuchoice
>. </para>
<para
>Aby opuścić tryb pełnoekranowy, kliknij prawym przyciskiem myszy na ekranie w miejscu, gdzie nie występują obiekty i wybierz <guimenuitem
>Zakończ tryb pełnoekranowy</guimenuitem
>, lub naciśnij klawisz &Esc;. </para>
</section>
</chapter>


<chapter id="kig-object-types">
<title
>Typy obiektów &kig;</title>
<para
>&kig; obsługuje całkiem sporą liczbę typów obiektów. Zauważ, że nie wszystkie dostępne obiekty są pokazane na paskach narzędziowych: niektóre z nich mogą być utworzone wyłącznie przy pomocy menu <guimenu
>Obiekty</guimenu
> w pasku menu. Oczywiście, jak we wszystkich programach &kde;, elementy składowe pasków narzędzi podlegają konfiguracji. Wypróbuj opcję <menuchoice
><guimenu
>Ustawienia</guimenu
><guimenuitem
>Konfiguracja pasków narzędzi...</guimenuitem
></menuchoice
> jeśli chcesz to osiągnąć. </para>
</chapter>


<chapter id="using-advanced">
<title
>Użycie zaawansowane</title>
<section id="objects-context-menus">
<title
>Menu kontekstowe</title>
<para
>&kig; udostępnia menu kontekstowe dla swoich obiektów. Spróbuj kliknąć prawym przyciskiem myszy na obiekcie żeby zobaczyć pojawiające się menu kontekstowe. Istnieje wiele opcji: do konstruowania innych obiektów, ustawienia kolorów, a także ukrywania, przesuwania i usuwania obiektów. Niektóre z obiektów posiadają swoje własne opcje (&eg; możesz przedefiniować pewne punkty ograniczając je do linii, jeśli nie były poprzednio, &etc;). Działanie tych opcji powinno być bardzo proste do zrozumienia. </para>
</section>

<section id="document-context-menus">
<title
>Menu kontekstowe dokumentów</title>
<para
>Kliknięcie <mousebutton
>prawym</mousebutton
> klawiszem myszy na dokumencie (&ie; nie na obiekcie) wyświetli okno, które można użyć do rozpoczęcia tworzenia nowego obiektu, zmiany używanego układu współrzędnych, pokazania ukrytych obiektów, a nawet przybliżania i oddalania widoku dokumentu. </para>
</section>

<section id="defining-macros">
<title
>Definiowanie makr</title>
<para
>Jedną z bardziej zaawansowanych cech &kig; jest jego wsparcie makr. Umożliwia to zdefiniowanie nowych typów obiektów z już zdefiniowanych typów. </para>
<para
>Na przykład: Zakładamy, że chcesz stworzyć makro do tworzenia okręgu z trzech punktów znajdujących się na nim. Wprowadzisz trzy punkty, skonstruujesz linie prostopadłe i punkty przecięcia aż do znalezienia środka. Teraz możesz użyć istniejącej komendy <quote
>Utwórz okrąg na podstawie środka i punktu</quote
> (używając jednego z tych trzech punktów jako punktu dla polecenia). Następujący obrazek powinien to nieco rozjaśnić: </para>
<screenshot>
<screeninfo
>Testowanie działania makr</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="test_run_macro.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Testowanie działania makr</phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>Następne w kolejce jest definiowanie makra. Wybierz <guimenuitem
>Nowe makro</guimenuitem
> z menu <guimenu
>Typ</guimenu
>, lub kliknij na przycisku z paska narzędzi. Pojawi się Asystent, który poprosi o zaznaczenie podanych obiektów. W naszym przykładzie są to te trzy punkty. Zaznacz je (kliknij, żeby zaznaczyć, kliknij ponownie, żeby usunąć zaznaczenie), a potem kliknij przycisk <guibutton
>Dalej</guibutton
>, żeby kontynuować. Na koniec, zaznacz ostatnie obiekty (w naszym przykładzie będzie to okrąg). </para>

<screenshot>
<screeninfo
>Asystent makr</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macro_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Asystent makr</phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>Po zakończeniu poprzednich kroków, kliknij przycisk <guibutton
>Dalej</guibutton
>. Wprowadź nazwę i opcjonalny opis dla nowego typu, po czym kliknij przycisk <guibutton
>Zakończ</guibutton
>. Tworzenie typu makro zostało zakończony. </para>

<para
>Aby użyć nowego typu makra, kliknij na jego przycisk na pasku narzędzi, lub użyj menu <guimenu
>Obiekty</guimenu
>. Konstruowanie obiektu makro odbywa się dokładnie tak, jak każdego innego obiektu. </para>
<screenshot>
<screeninfo
>Użycie nowego typu</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macros_at_work.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Użycie nowego typu</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="working-with-types">
<title
>Praca z typami</title>
<para
>Jak można było zobaczyć w poprzednim rozdziale, &kig; pozwala na tworzenie własnych obiektów. &kig; zapewnia również, że po utworzeniu obiektu, zostaje on zapisany przy wyjściu i wczytany na starcie. Nie musisz ręcznie zapisywać, ani wczytywać definicji makr. Jednakże &kig; udostępnia znaczniej więcej możliwości makr. Po wybraniu z menu <menuchoice
><guimenu
>Typy</guimenu
><guimenuitem
>Zarządzaj typami...</guimenuitem
></menuchoice
>, zobaczysz okno, w którym możesz edytować swoje typy. Pozwala to modyfikować istniejące typy, usuwać nieużywane typy, eksportować je do pliku, a także wczytywać z innego pliku. </para>
<screenshot>
<screeninfo
>Okno edycji typów</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="edit_types_dialog.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Okno edycji typów</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="text-labels">
<title
>Etykiety tekstowe</title>
<para
>&kig; pozwala dodawać etykiety tekstowe do konstrukcji. Jest to bardzo użyteczne przy dodawaniu nazw, wyjaśnień, lub innego tekstu do obiektów. &kig; może również wyświetlać zmienne informacje na temat obiektów (znane również jako <quote
>właściwości</quote
>). </para>
<para
>Aby rozpocząć tworzenie etykiety tekstowej, po prostu wciśnij przycisk <guibutton
>Etykieta tekstowa</guibutton
> na pasku narzędzi &kig;, lub wybierz na pasku menu <menuchoice
><guimenu
>Obiekty</guimenu
><guisubmenu
>Inne </guisubmenu
><guimenuitem
>Etykieta tekstowa</guimenuitem
> </menuchoice
>. </para>
<para
>Następnie, musisz wybrać położenie dla etykiety. Możesz wybrać albo losowe położenie, albo <quote
>dołączenie</quote
> etykiety do obiektu. </para>
<screenshot>
<screeninfo
>Dołączanie etykiety do okręgu...</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_attaching.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Dołączanie etykiety do okręgu...</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Po wybraniu umiejscowienia etykiety, pojawia się okno etykiety tekstowej. Tutaj można w wpisać tekst, który ma się pojawiać w etykiecie, po czym kliknąć <guibutton
>Zakończ</guibutton
>. Powinieneś już widzieć etykietę w dokumencie. </para>
<screenshot>
<screeninfo
>Okno dialogowe etykiety tekstowej</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Okno dialogowe etykiety tekstowej</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Poprzedni przykład był dość prosty, do tego ograniczony do tekstu. Jednak istnieje również wsparcie dla pokazywania zmiennych informacji na temat obiektu w etykiecie (&eg; można stworzyć etykietę z tekstem <quote
>ten segment jest długi na %1 jednostek.</quote
>, gdzie <token
>%1</token
> będzie dynamicznie zastąpiony przez długość określonego segmentu). </para>
<para
>Aby tego dokonać, wprowadź tekst z pewną liczbą miejsc do zastąpienia (<token
>%1</token
>, <token
>%2</token
> &etc;) w nim. Następnie wciśnij przycisk <guibutton
>Dalej</guibutton
>. Jeśli później będziesz chciał zmienić tekst, lub zmienne, będziesz mógł się cofnąć przy użyciu przycisku <guibutton
>Wstecz</guibutton
>. </para>
<para
>Asystent pokaże tekst, który wpisałeś, ze wszystkimi miejscami do zastąpienia zamienionymi przez coś w stylu <guilabel
>argument 1</guilabel
>. Wybranie właściwości powiązanej z pewnym argumentem odbywa się przez kliknięcie na ten argument. Następnie trzeba kliknąć na obiekt, którego potrzebujesz i który posiada daną właściwość, żeby potem wybrać tą właściwość z menu, które się pojawi. Na przykład w powyższym przypadku, trzeba kliknąć na <guilabel
>argument 1</guilabel
>, kliknąć na właściwym segmencie w głównym oknie &kig; i wybrać właściwość <guilabel
>Długość</guilabel
>. Później można wypełnić resztę zmiennych pozycji, lub wybrać kolejną właściwość dla jednej ze zmiennych, jeśli chce się ją zmienić. Kiedy jest się gotowym, należy kliknąć na przycisk <guibutton
>Zakończ</guibutton
>, który dokończy proces tworzenia etykiety tekstowej. </para>
<screenshot>
<screeninfo
>Wybieranie właściwości dla zmiennej części</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="text_label_wizard__select_property.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Wybieranie właściwości dla zmiennej części</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="locuses">
<title
>Zbiory punktów</title>
<para
>&kig; obsługuje użycie zbiorów punktów. Miejsce geometryczne jest zdefiniowane matematycznie jako zbiór punktów, lub linii, które spełniają, lub są określone przez pewne warunki, jak <quote
>zbiór punktów jednakowoodległych od pewnego punktu jest okręgiem</quote
>. Spójrzmy na przykład jak można użyć miejsca geometryczne w &kig;: </para>
<para
>Rozważ następującą konstrukcję geometryczną: Rysujemy okrąg, a następnie punkt, który może się poruszać tylko po jego obwodzie (utwórz ten punkt umieszczając kursor na okręgu, a następnie klikając środkowym przyciskiem myszy. Jeśli później spróbujesz przesunąć wynikowy punkt, zobaczysz, że nie możesz przemieścić go w miejsce poza okręgiem). Następnie rysujemy odcinek pomiędzy tym punktem, a środkiem okręgu i środek tego odcinka. </para>
<screenshot>
<screeninfo
>Prosta konstrukcja z wykorzystaniem zbioru punktów</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="simple_locus_construction.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Prosta konstrukcja z wykorzystaniem zbioru punktów</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Teraz, kiedy przesuniesz punkt, który został ograniczony do okręgu, zobaczysz, że drugi punkt porusza się wraz z nim. Gdybyś przytrzymał pióro na drugim punkcie i przesunął pierwszy punkt wzdłuż całego okręgu, nowy okrąg, o połowę mniejszy od poprzedniego zostałby narysowany. Ścieżka, którą przemieszcza się drugi punkt, podczas gdy pierwszy porusza się wokół okręgu, jest jego zbiorem punktów. </para>
<para
>Właściwie konstruowanie zbioru punktów jest bardzo proste. Kliknij na przycisk <guiicon
>zbiór punktów</guiicon
> na pasku narzędzi, lub wybierz <menuchoice
><guimenu
>Obiekty</guimenu
> <guisubmenu
>Inne</guisubmenu
> <guimenuitem
>Zbiór punktów</guimenuitem
> </menuchoice
> z paska menu. Następnie wybierz ograniczony punkt jako ruchomy punkt (tekst <guilabel
>Ruchomy punkt</guilabel
> pojawi się kiedy przesuniesz nad niego myszkę), a ten drugi jako zależny punkt. Zbiór punktów zależnego punktu zostanie narysowany. </para>
</section>
</chapter>

<chapter id="scripting">
<title
>Skrypty</title>
<para
>&kig; pozwala na tworzenie własnych typów w języku skryptowym Python. Jest to bardzo zaawansowana cecha, a z tego, co wiem, tylko jeden inny program geometrii interaktywnej posiada podobną funkcjonalność (program <acronym
>GNOME</acronym
> &drgeo;). </para>
<para
>Skrypty Pythona w &kig; generalnie pozwalają na tworzenie własnych obiektów z obiektów-rodziców. Na przykład, jeśli jesteś nauczycielem matematyki i masz ekstrawagancki sposób wyliczania interesującego punktu na stożku, to zamiast babrać się w makrach i złożonych konstrukcjach, możesz zapisać w Pythonie jak ten punkt ma być wyliczany, a &kig; Ci go pokaże. </para>
<para
>Zakładając, że nie miałeś pojęcia o wbudowanym w &kig; typie <quote
>Środkowy punkt</quote
>, a chciałeś pokazać punkt leżący pośrodku dwóch innych punktów. Kliknąłbyś wtedy na przycisku <guibutton
>Skrypt Pythona</guibutton
> na pasku narzędzi, lub wybrał z menu <menuchoice
><guimenu
>Obiekty</guimenu
><guisubmenu
>Inne</guisubmenu
> <guimenuitem
>Skrypt Pythona</guimenuitem
></menuchoice
>. Wtedy zostałby Ci przedstawiony asystent, który poprowadziłby Cię dalej. </para>
<screenshot>
<screeninfo
>Asystent obiektów skryptowych</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Asystent obiektów skryptowych</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Pierwszą rzeczą, jaką musisz zrobić, jest wybranie argumentów dla obiektu skryptowego. W naszym przykładzie oznacza to dwa punkty, dla których chcemy pokazać środkowy punkt. Wybierz je w głównym oknie &kig; i kliknij na <guibutton
>Dalej</guibutton
>. </para>
<para
>Zostaje Ci zaprezentowane okienko edycji tekstu, gdzie możesz wpisać kod dla Twojego obiektu skryptowego. Szablon kodu i kilka komentarzy znajdują się już na miejscu. Ważne jest upewnienie się, że Twój kod jest poprawnym kodem Pythona. Ludzie obeznani z Pythonem zwrócą uwagę, że tak właściwie to definiujemy funkcję Pythona o nazwie <function
>calc</function
>. Dlatego niezbędne jest dostosowanie się do reguł Pythona definiowania funkcji. Na przykład, każda linia funkcji powinna rozpoczynać się <keysym
>Tab</keysym
>. Pierwsza linia, która nie rozpoczyna się <keysym
>tab</keysym
> określa koniec definicji funkcji. </para>
<para
>Funkcja Pythona, którą chcemy zdefiniować, nazywa się <function
>calc</function
> i w naszym przypadku akceptuje dwa argumenty. Są to obiekty wybrane jako argumenty w poprzednim ekranie. Potrzeba takiej liczby argumentów, jaką tam wybrano. Ich nazwy to <parameter
>arg1</parameter
> i <parameter
>arg2</parameter
>, ale można zmienić ich nazwy na coś bardziej znaczącego. </para>
<para
>W ciele funkcji można dokonywać wszelkiego rodzaju obliczeń, które uzna się za niezbędne, przy użyciu w razie potrzeby dwóch argumentów. Powinno się zwracać obiekt, który chce się zdefiniować. W naszym przypadku, jest to obiekt <classname
>Point</classname
> (Punkt). Dwa argumenty również są obiektami <classname
>Point</classname
>, a my możemy użyć funkcji <function
>Point.coordinate()</function
> do określenia współrzędnych dwóch podanych punktów. </para>
<para
>W naszym przykładzie niezbędne obliczenia są bardzo proste, po prostu dodajemy dwa zbiory współrzędnych i dzielimy przez dwa. Następnie tworzymy nowy punkt przy użyciu wyniku. Kod Pythona to:</para>

<programlisting
>def calc( a, b ):
m = ( a.coordinate() + b.coordinate() ) / 2;
return Point( m )
</programlisting>

<screenshot>
<screeninfo
>Wpisywanie kodu</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard_entering_code.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Wpisywanie kodu dla punktu środkowego w asystencie obiektów skryptowych.</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Jeżeli teraz klikniesz na przycisk <guibutton
>Zakończ</guibutton
>, nowy obiekt pojawi się w dokumencie &kig;. Kiedy przesuniesz jeden z punktów, nowoutworzony obiekt przesunie się wraz z nim. Znacznie potężniejsze obiekty mogą zostać zbudowane w ten sposób. Zachęcamy do wypróbowania. </para>
<screenshot>
<screeninfo
>Stworzony obiekt skryptowy</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_script_object.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Nowoutworzony obiekt skryptowy. </phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Wszystkie obiekty w &kig; mogą być użyte w kodzie Pythona. Jak widzieliśmy powyżej, punkty są obiektami klasy <classname
>Point</classname
> i można użyć &eg; metody <function
>Point.coordinate()</function
>. Można również zwracać wszystkie rodzaje obiektów, nie tylko <classname
>Point</classname
>. Znacznie więcej klas i metod jest dostępnych w kodzie Pythona &kig;, a bardziej kompletna lista znajduje się na <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html"
>stronie &kig;</ulink
>. </para>
</chapter>

<chapter id="kig-features">
<title
>Cechy &kig;</title>

<itemizedlist>
<listitem>
<para
>&kig; to program z otwartym kodem źródłowym. Oznacza to, że możesz swobodnie go używać, a także zmieniać w sposób, jaki Ci się podoba. Rozprowadzanie &kig; jest obarczone kilkoma restrykcjami, generalnie każdy powinien posiadać te same prawa do używania &kig;, włączając Twoje modyfikacje, jak Ty czy ja. </para>
<para
>Programy wolnego oprogramowania są tworzone w bardzo otwartym duchu, a ich autorzy zwykle bardzo szybko reagują na opinie użytkowników. Dlatego, jeśli masz jakieś pytania, uwagi, lub też cokolwiek na temat &kig;, daj o tym znać autorowi na adres <email
>toscano.pino@tiscali.it</email
>. </para>
</listitem>
<listitem>
<para
>&kig; jest programem KPart, co znaczy, że możesz włączyć go do innego oprogramowania &kde;. Jeżeli otwierasz plik <literal role="extension"
>.kig</literal
> w &konqueror-miejscownik;, może być on otwarty bezpośrednio w oknie &konqueror-dopelniacz; bez potrzeby uruchamiania zewnętrznego programu. </para>
</listitem>
<listitem>
<para
>Praca z &kig; powinna być bardzo prosta. Konstruowanie obiektów jest łatwe i interaktywne, z wyświetlaniem wstępnych wyników, &etc;. Przesuwanie, zaznaczanie i budowanie działa tak, jak można by tego oczekiwać. Wsparcie dla cofania powinno również być bardzo intuicyjne. </para>
</listitem>
<listitem>
<para
>&kig; wspiera definiowanie makr w bardzo prosty sposób. Obiekty te są przedstawiane użytkownikowi jak normalne obiekty. Są zapisywane przy wychodzeniu i wczytywane przy starcie, więc nie traci się ich przy kończeniu pracy. Można zarządzać tymi obiektami w oknie dialogowym <guilabel
>Zarządzaj typami</guilabel
> (zobacz <xref linkend="working-with-types"/>). Można eksportować je do plików, importować je z plików, edytować i je usuwać. </para>
</listitem>
<listitem>
<para
>&kig; zapisuje dane w czystym formacie &XML;. </para>
</listitem>
<listitem>
<para
>&kig; wspiera tworzenie zbiorów punktów. </para>
</listitem>
<listitem>
<para
>&kig; umożliwia eksport pliku &kig; do niektórych interesujących formatów, jak obrazki, pliki <application
>XFig</application
> i <application
>LaTeX</application
>, obrazki wektorowe <acronym
>SVG</acronym
>. Jest to użyteczne, bo jeszcze nie wszystkie programy wspierają format plików &kig;. </para>
</listitem>
<listitem>
<para
>&kig; posiada bardzo elastyczny system przekształceń. </para>
</listitem>
<listitem>
<para
>&kig; stara się być kompatybilny ze swoimi konkurentami. Dlatego obsługuje format &kgeo;, &kseg; i częściowo &drgeo; oraz &cabri;. Co więcej, planowana jest obsługa innych formatów. </para>
</listitem>
</itemizedlist>
</chapter>


<chapter id="faq">
<title
>Pytania i odpowiedzi</title>
&reporting.bugs;&updating.documentation; </chapter>


<chapter id="credits">
<title
>Podziękowania i licencja</title>

<para
>&kig; </para>
<para
>&kig; copyright 2002-2004 Dominique Devriese <email
>devriese@kde.org</email
> </para>

<para
>Documentation copyright 2002-2004 Dominique Devriese <email
>devriese@kde.org</email
>. </para>

<para
>Documentation copyright 2004-2005 Pino Toscano <email
>toscano.pino@tiscali.it</email
>. </para>

<para
>Przejrzane przez &Philip.Rodrigues; &Philip.Rodrigues.mail;. </para>
<para
>Robert Gomułka<email
>carramba@epf.pl</email
></para
> 
&underFDL; &underGPL; </chapter>

<appendix id="installation">
<title
>Instalacja</title>

<sect1 id="getting-kig">
<title
>Jak zdobyć &kig;</title>
&install.intro.documentation; </sect1>

<sect1 id="compilation">
<title
>Kompilacja i instalacja</title>
&install.compile.documentation; </sect1>

</appendix>

<appendix id="contributing">
<title
>Wkład</title>
<section id="kig-is-free">
<title
>Wolne oprogramowanie</title>
<para
>&kig; jest <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware"
>Wolnym Oprogramowaniem</ulink
>. Oznacza to, że kod źródłowy jest wolnodostępny na Internecie, a każdy może go używać, czytać, modyfikować i rozpowszechniać. Pracę nad nim traktuję jako moje hobby i nauczyłem się już sporo na temat programowania, C++, &kde;/&Qt;, matematyki, współpracy w oprogramowaniu i projektów z otwartym kodem źródłowym w jej trakcie. </para>
</section>

<section id="contribute-to-kig">
<title
>Wkład</title>
<para
>W tym rozdziale chciałbym wskazać Ci (użytkownikowi) prawa, które daje Ci licencja &kig;. Jak z całym wolnym oprogramowaniem, możesz (a nawet jesteś zachęcany) poprawiać błędy znalezione podczas jego użytkowania, dodawać brakującą funkcjonalność, rozpowszechniać zmieniony program, a także wysyłać mi zmiany na adres <email
>toscano.pino@tiscali.it</email
>, żebym mógł włączać je w kolejnych wersjach, żeby i inni czerpali z tego satysfakcję. Zwróć uwagę, że ja osobiście nie mam jakiegokolwiek interesu finansowego w tym projekcie. </para>
<para
>Jeśli nie jesteś pewien swoich praw dotyczących użytkowania tego oprogramowania, lub też prawa innych osób do używania jakichkolwiek zmian, których w nim dokonałeś, &etc;, przeczytaj licencję. Możesz ją znaleźć w pliku <filename
>COPYING</filename
> w drzewie plików &kig;, lub zakładce <guilabel
>licencja</guilabel
> w oknie dialogowym <guilabel
>O Kig</guilabel
>. </para>
</section>

<section id="howto-contribute">
<title
>Jak wnieść swój wkład?</title>
<para
>Wszyscy współpracownicy są mile widziani. Jeżeli nie lubisz ikon, albo myślisz, że podręcznik użytkownika wymaga aktualizacji, albo posiadasz to cudowne makro, którym chciałbyś się podzielić ze światem, nie wahaj się i skontaktuj ze mną. Zwróć uwagę, że Twój wkład zostanie rozpowszechniony na warunkach &GNU; <acronym
>GPL</acronym
>; możesz znaleźć warunki tej licencji w pliku <filename
>COPYING</filename
> w drzewie &kig;, a także w rozdziale <link linkend="credits"
>Podziękowania i licencja</link
> w tym podręczniku. </para>
</section>
</appendix>

&documentation.index;
</book>
<!--
Local Variables:
mode: xml
End:
-->