<?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 % Portuguese "INCLUDE">
<!-- change language only here -->
]
>

<book lang="&language;">

<bookinfo>
<title
>O Manual do &kig;</title>

<authorgroup>
<author
><firstname
>Dominique</firstname
> <surname
>Devriese</surname
> <affiliation
> <address
><email
>devriese@kde.org</email
></address>
</affiliation>
</author>
<othercredit role="translator"
><firstname
>José</firstname
><surname
>Pires</surname
><affiliation
><address
><email
>jncp@netcabo.pt</email
></address
></affiliation
><contrib
>Tradução</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
>O &kig; é uma aplicação do &kde; para Geometria Interactiva. </para>
</abstract>

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


<chapter id="introduction">
<title
>Introdução</title>

<para
>O &kig; é uma aplicação para Geometria Interactiva. Pretende servir dois objectivos: </para>

<itemizedlist>
<listitem
><para
>Permitir aos estudantes explorarem figuras e conceitos matemáticos, usando o computador. </para
></listitem>

<listitem
><para
>Servir como uma ferramenta <acronym
>WYSIWYG</acronym
> para desenhar figuras matemáticas e incluí-las noutros documentos.</para
></listitem>
</itemizedlist>

<para
>Você poderá comunicar problemas no &kig;, usando a ferramenta interna de relatórios de erros (<menuchoice
><guimenu
>Ajuda</guimenu
><guimenuitem
>Comunicar um Erro...</guimenuitem
></menuchoice
>, ou poderá contactar o autor em <email
>toscano.pino@tiscali.it</email
>. </para>
<para
>Dado que o &kig; suporta macros e 'locuses', ele permite a definição de algumas macros mais avançadas. Se você criou uma macro interessantes que você pensa que poderá ser útil para outras pessoas, você poderá enviá-la para o autor em <email
>toscano.pino@tiscali.it</email
>, de modo a que possa ser incluída na distribuição (se o fizer, ela será licenciada segundo os termos da licença do &kig;, a <ulink url="http://www.gnu.org/licenses/licenses.html#GPL"
>GPL</ulink
>, de modo que as outras pessoas a possam usar livremente e adaptá-la). </para>
</chapter>


<chapter id="using-kig-basic">
<title
>Utilização básica</title>
<section id="constructing-objects">
<title
>Construir Objectos</title>
<section id="constructing-points">
<title
>Construir pontos</title>
<para
>Você poderá construir pontos de várias formas:</para>
<itemizedlist>
<listitem>
<para
>Seleccione <menuchoice
><guimenu
>Objectos</guimenu
> <guisubmenu
>Pontos</guisubmenu
><guimenuitem
>Ponto</guimenuitem
></menuchoice
> na barra de menu ou carregue no botão apropriado da barra de ferramentas. Você poderá então construir um ponto se carregar na posição desejada da janela.</para
> <note
><para
>De facto, isto funciona da mesma forma para construir também outros objectos: carregue no item desejado do menu ou da barra de ferramentas e seleccione os objectos necessários para construir o objecto.</para
></note>
</listitem>
<listitem>
<para
>Dado que você precisa normalmente de construir os pontos, basta carregar em algum ponto do ecrã com o &MMB; de modo a construir um ponto para si, sem ter de ir a um menu ou a um botão. </para>
</listitem>
<listitem>
<para
>Você poderá criar pontos enquanto está a criar outros objectos em segundo plano, seleccionando-os opcionalmente no objecto que está a criar. Para mais informações, veja em <xref linkend="constructing-other-objects"/>. </para>
</listitem>
</itemizedlist>

<screenshot>
<screeninfo
>Foi criado um ponto</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_a_point.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Foi criado um ponto</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="constructing-other-objects">
<title
>Construir Outros Objectos</title>
<para
>Criar outros objectos que não sejam pontos é feito normalmente ao seleccionar o item apropriado do menu <guimenu
>Objectos</guimenu
>, ou carregando num dos botões da barra de ferramentas. </para>
<screenshot>
<screeninfo
>Construir uma circunferência</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Construir uma circunferência</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Isto irá iniciar a construção do tipo de objecto escolhido. Todos estes tipos necessitam de argumentos. Por exemplo, se você seleccionou uma circunferência através do centro e de um ponto, você terá de lhe indicar dois pontos: um para o centro e outro para o ponto em plena circunferência. </para>
<para
>Estes argumentos são também objectos e poderão ser seleccionados, se carregar nos mesmos. Quando você mover um objecto que possa ser usado para construir o objecto, será mostrada uma imagem preliminar do que o objecto se parecerá. Para os objectos que necessitem de pontos como argumentos, você poderá criar um novo ponto na posição actual do cursor e seleccioná-lo com o &LMB;. </para>
<para
>Você poderá sempre cancelar a criação do novo objecto com a tecla &Esc; ou carregando no botão <guiicon
>Parar</guiicon
> (o octógono vermelho com um <quote
>X</quote
>) na barra de ferramentas. </para>
<screenshot>
<screeninfo
>Construir uma circunferência.</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle_2.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Construir uma circunferência</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
</section>

<section id="selecting-objects">
<title
>Seleccionar os Objectos</title>
<para
>A selecção dos objectos poderá ser feita de duas formas: </para>
<itemizedlist>
<listitem>
<para
>Se carregar simplesmente num objecto, fará com que esse objecto fique seleccionado, retirando a selecção de outros objectos que estivessem previamente seleccionados. Se você não quiser esse comportamento, mantenha carregada a tecla &Ctrl; enquanto carrega num objecto. </para>
</listitem>
<listitem>
<para
>Ao carregar e arrastar para um local vazio do ecrã, você poderá seleccionar todos os objectos dentro do rectângulo que é criado. Esta acção irá limpar a selecção actual. Como no caso anterior, se mantiver carregada a tecla &Ctrl;, irá evitar esse comportamento. </para>
</listitem>
</itemizedlist>
<para
>Quando tiver mais que um objecto sob o rato, poderá escolher facilmente o objecto a seleccionar ou adicionar á selecção actual. Carregue com o &LMB;, enquanto mantém carregada a tecla &Shift; para ter um menu de contexto com todos os objectos sob o rato. Aí, poderá seleccionar o objecto que necessita. Como foi dito anteriormente, o comportamento da tecla &Ctrl; irá afectar a selecção. </para>

<screenshot>
<screeninfo
>Seleccionar objectos</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="selecting_objects.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Seleccionar objectos</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="moving-objects">
<title
>Mover os Objectos</title>
<para
>Para mover os objectos, você precisa primeiro de os <link linkend="selecting-objects"
>seleccionar</link
>. </para>
<para
>Quando os objectos que você deseja mover estiverem seleccionados, você poderá começar a movê-los se carregar no &LMB; e se arrastar qualquer um deles. Quando terminar, basta largar o &LMB;. </para>
<note
><para
>Para alguns tipos de objectos ('locuses' mais complicados), a movimentação dos objectos poderá ser lenta nos sistemas mais antigos). Isto é mau mas é inevitável, dado os cálculos envolvidos. </para
></note
> <note
><para
>Se você carregar com o &RMB; num dos objectos seleccionados e optar por <guimenuitem
>Mover</guimenuitem
>, o movimento do rato irá mudar a posição do objecto. Quando o objecto estiver na posição desejada, outro pressionar do &LMB; irá parar o movimento.</para
></note>
</section>
<section id="deleting-objects">
<title
>Apagar Objectos</title>
<para
>A remoção de objectos é feita, <link linkend="selecting-objects"
>seleccionando-os</link
> em primeiro lugar, e depois fazendo uma das seguintes coisas: <itemizedlist>
<listitem>
<para
>Carregando na tecla <keycap
>Delete</keycap
>. </para>
</listitem>
<listitem>
<para
>Carregando no botão <guiicon
>remover</guiicon
> da barra de ferramentas. </para>
</listitem>
<listitem>
<para
>Carregando com o &RMB; num dos objectos e seleccionando a opção <guimenuitem
>Remover</guimenuitem
> do <link linkend="objects-context-menus"
>menu de contexto</link
> que aparece. </para>
</listitem>
</itemizedlist>
</para>
</section>

<section id="showing-hiding-objects">
<title
>Mostrar e esconder objectos</title>
<para
>No &kig;, os objectos podem ser escondidos. Isto é feito se seleccionar os objectos, carregar com o &RMB; num deles e seleccionando a opção <guimenuitem
>Esconder</guimenuitem
> no <link linkend="objects-context-menus"
>menu de contexto</link
> que aparece. </para>
<para
>Para mostrar de novo os objectos, use a opção <menuchoice
><guimenu
>Editar</guimenu
><guimenuitem
>Mostrar Tudo...</guimenuitem
></menuchoice
>. Isto irá colocar como visíveis todos os objectos escondidos de momento. </para>

<section id="night-vision">
<title
>Visão Nocturna</title>
<para
>A Visão Nocturna é uma forma particular de trabalhar com objectos escondidos. Quando tiver que mover ou modificar algo num ou mais objectos, mas sem expor todos os objectos escondidos que tem, então a visão nocturna poderá ser boa para si. </para>
<para
>Basicamente, permite-lhe ver os objectos escondidos, como se estivessem visíveis, de modo que possa manipulá-los como faria normalmente. No modo de Visão Nocturna, os objectos escondidos ficarão visíveis com uma cor cinzenta. </para>
<para
>Para activar ou desactivar o modo de visão nocturna, use a opção <menuchoice
><guimenu
>Configuração</guimenu
><guimenuitem
>Usar Óculos de Infravermelhos</guimenuitem
></menuchoice
>. </para>
</section>
</section>

<section id="undo-redo">
<title
>Desfazer/Refazer</title>
<para
>No &kig;, você poderá anular praticamente qualquer acção que tenha feito ao documento. Basta usar os botões de <guiicon
>desfazer</guiicon
>/<guiicon
>refazer</guiicon
> da barra de ferramentas ou o atalho apropriado. </para>
</section>

<section id="full-screen-mode">
<title
>Modo de Ecrã Completo</title>
<para
>O &kig; também tem um modo de Ecrã Completo. Para o usar, carregue no botão apropriado da barra de ferramentas ou seleccione <menuchoice
><guimenu
>Configuração</guimenu
><guimenuitem
>Modo de Ecrã Completo</guimenuitem
></menuchoice
>. </para>
<para
>Para sair do modo de Ecrã Completo, carregue com o &RMB; no ecrã, num local em que não hajam objectos presentes e seleccione <guimenuitem
>Sair do Modo de Ecrã Completo</guimenuitem
> ou carregue na tecla &Esc;. </para>
</section>
</chapter>


<chapter id="kig-object-types">
<title
>Tipos de Objectos do &kig;</title>
<para
>O &kig; suporta um número relativamente grande de tipos de objectos. Repare que nem todos os tipos disponíveis são mostrados nas barras de ferramentas, mas que existem também alguns objectos que você só poderá construir através do menu <guimenu
>Objectos</guimenu
> da barra de menu. Claro, como acontece com todas as aplicações do &kde;, o que aparece nas barras de ferramentas é configurável. Tente a opção <menuchoice
><guimenu
>Configuração</guimenu
> <guimenuitem
>Configurar as Barras de Ferramentas...</guimenuitem
></menuchoice
> se quiser experimentar. </para>
</chapter>


<chapter id="using-advanced">
<title
>Utilização Avançada</title>
<section id="objects-context-menus">
<title
>Menus de Contexto</title>
<para
>O &kig; tem menus de contexto para os seus objectos. Tente carregar com o &RMB; num objecto para que apareça um menu de contexto. Existem várias opções: para construir outros objectos, mudar as cores ou mesmo para esconder, mover ou remover os objectos. Alguns dos objectos têm opções próprias (&eg; você poderá redefinir a criação de certos pontos, de modo a estarem restritos a uma dada linha, quanto tal não era possível, &etc;). Estas opções deverão ser bastante simples de compreender. </para>
</section>

<section id="document-context-menus">
<title
>Menus de contexto do documento</title>
<para
>Se carregar com o &RMB; no documento (&ie;, sem ser num objecto), irá aparecer um menu que você poderá usar para iniciar a criação de um novo objecto, mudar o sistema de coordenadas usado, mostrar os objectos escondidos ou ainda ampliar ou reduzir o documento. </para>
</section>

<section id="defining-macros">
<title
>Definir Macros</title>
<para
>Uma das funcionalidades mais avançadas no &kig; é o seu suporte para macros. Isto permite-lhe definir um novo tipo de objecto, combinando outros objectos. </para>
<para
>Por exemplo: suponha que quer criar uma macro para criar uma circunferência a partir de três pontos dela. Você teria de criar esses três pontos, algumas perpendiculares e pontos médios até que encontrasse o centro, construindo depois a circunferência com o centro determinado e um dos pontos anteriores. A imagem seguinte deverá clarificar isto um pouco: </para>
<screenshot>
<screeninfo
>Testar a execução de macros</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="test_run_macro.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Testar a execução de macros</phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>A seguir vem a definição da macro. Seleccione a opção <guimenuitem
>Nova macro</guimenuitem
> do menu <guimenu
>Tipo</guimenu
> ou carregue no botão da barra de ferramentas. Irá aparecer um assistente que lhe irá pedir para seleccionar os objectos indicados. Seleccione os três pontos (carregue neles para os seleccionar, e carregue de novo para os deseleccionar), carregando depois no botão <guibutton
>Próximo</guibutton
> para continuar. Finalmente, seleccione os últimos objectos (apenas a circunferência, no nosso exemplo). </para>

<screenshot>
<screeninfo
>O assistente de macros</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macro_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>O assistente de macros</phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>Depois de ter terminado os passos anteriores, carregue no botão <guibutton
>Próximo</guibutton
> para continuar. Indique um nome e, opcionalmente, uma descrição do seu novo tipo, carregando depois no botão <guibutton
>Terminar</guibutton
>. O seu tipo de macro está agora terminado. </para>

<para
>Para usar o tipo da nova macro, carregue no seu botão da barra de ferramentas ou use o menu <guimenu
>Objectos</guimenu
>. Criar um objecto de uma macro é então tão simples como criar um outro objecto qualquer. </para>
<screenshot>
<screeninfo
>Usar o seu novo tipo</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macros_at_work.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Usar o seu novo tipo</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="working-with-types">
<title
>Lidar com tipos</title>
<para
>Como você viu no capítulo anterior, o &kig; permite-lhe criar os seus próprios objectos. O &kig; também se certifica que, logo que tenha criado um objecto, este é gravado à saída e carregado no arranque. Você não terá de gravar ou carregar manualmente as definições das macros. Contudo, o &kig; permite-lhe fazer mais com as macros. Se você seleccionar a opção <menuchoice
><guimenu
>Tipos</guimenu
><guimenuitem
>Gerir os Tipos...</guimenuitem
></menuchoice
>, você verá uma janela onde poderá editar os seus tipos. Isto permite-lhe remover os tipos que não são mais usados, exportá-los para um ficheiro ou mesmo carregá-los a partir de outro ficheiro. </para>
<screenshot>
<screeninfo
>Janela de Edição de Tipos</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="edit_types_dialog.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>A Janela de Edição de Tipos</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="text-labels">
<title
>Legendas textuais</title>
<para
>O &kig; permite-lhe adicionar legendas de texto a uma construção. Isto é muito útil para mostrar os nomes, explicações ou textos auxiliares na sua construção. O &kig; poderá também mostrar informações variáveis sobre os objectos (também conhecidas como <quote
>propriedades</quote
>). </para>
<para
>Para iniciar a criação de uma legenda de texto, basta escolher o botão da <guibutton
>Legenda Textual</guibutton
> na barra de ferramentas na barra de ferramentas do &kig; ou seleccionando <menuchoice
><guimenu
>Objectos</guimenu
><guisubmenu
>Outros</guisubmenu
><guimenuitem
>Legenda textual</guimenuitem
> </menuchoice
> da barra de menu. </para>
<para
>A seguir, você terá de escolher uma localização para a legenda textual. Você poderá então escolher uma localização aleatória no ecrã ou optar por <quote
>anexar</quote
> a legenda a outro objecto. </para>
<screenshot>
<screeninfo
>Anexar uma legenda a uma circunferência...</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_attaching.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Anexar uma legenda a uma circunferência...</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Você poderá agora aceder à janela da legenda de texto. Aqui, você poderá escrever o texto que deseja mostrar na nova legenda e carregar em <guibutton
>Terminar</guibutton
>. A legenda deverá agora estar presente no seu documento. </para>
<screenshot>
<screeninfo
>A Janela da Legenda Textual</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>A Janela da Legenda Textual</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>O exemplo anterior foi simples e limitava-se apenas a texto. Contudo, existe também o suporte para mostrar informações variáveis sobre os objectos de uma legenda (&eg; você poderá criar uma legenda que mostra o texto <quote
>Este segmento tem %1 unidades de comprimento.</quote
> em que o <token
>%1</token
> seria dinamicamente substituído pelo tamanho de um dado segmento). </para>
<para
>Para o fazer, indique um texto com o número de substituições ( <token
>%1</token
>, <token
>%2</token
> &etc;) nele. Quando terminar, carregue no botão <guibutton
>Próximo</guibutton
> para continuar. Se você quiser alterar o texto ou as variáveis depois, poderá voltar atrás com a opção <guibutton
>Anterior</guibutton
>. </para>
<para
>O assistente mostra agora o texto que introduziu com todas as substituições alteradas para algo do tipo <guilabel
>argumento 1</guilabel
>. A selecção do que deverá mostrar num dado argument é feita quando você, em primeiro lugar, carregar no argumento em questão. Carregue então no objecto sobre o qual deseja mostrar informações, seleccionando no fim um pedaço de informação no menu de contexto que aparece. No exemplo acima, você iria carregar no <guilabel
>argumento 1</guilabel
>, carregar no segmento correcto da janela principal do &kig;, e finalmente seleccionar a propriedade <guilabel
>Length</guilabel
> (Comprimento). Depois disso, você poderá preencher as restantes variáveis ou seleccionar outra propriedade para uma das variáveis, se a desejar alterar. Quando terminar, carregue no botão <guibutton
>Terminar</guibutton
> para finalizar a criação da legenda de texto. </para>
<screenshot>
<screeninfo
>Seleccionar uma propriedade para uma parte variável</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="text_label_wizard__select_property.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>Seleccionar uma propriedade para uma parte variável</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>

<section id="locuses">
<title
>'Locuses'</title>
<para
>O &kig; suporta a utilização de 'locuses'. Um 'locus' é definido matematicamente como o conjunto de todos os pontos ou linhas que satisfazem ou são determinados através de condições específicas; um exemplo é <quote
>o 'locus' dos pontos equidistantes de um dado ponto é uma circunferência</quote
>. Vamos ver um exemplo de utilização de 'locuses' no &kig;: </para>
<para
>Considere a seguinte construção geométrica: É desenhada uma circunferência e um ponto que se pode mover ao longo da sua superfície (construa este ponto, posicionando o cursor numa circunferência e carregando com o &MMB;. Se você então tentar mover o ponto resultante, verá que não consegue movê-lo para fora da circunferência). Depois, é desenhado um segmento desde esse ponto até ao centro da circunferência e o ponto médio desse segmento. </para>
<screenshot>
<screeninfo
>A criação de um 'locus' simples</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="simple_locus_construction.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase
>A criação de um 'locus' simples</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Agora, se mover o ponto que está restringido à circunferência, você poderá ver que o segundo ponto se move com ele. Se você mantivesse uma caneta acima do segundo ponto e movesse o primeiro ponto à volta da circunferência, iria criar uma nova circunferência com metade do tamanho da outra. Veremos em baixo que isto é exactamente o que um 'locus' faz. O caminho que o segundo ponto percorre enquanto o primeiro se move à volta da circunferência é como ficaria o 'locus'. </para>
<para
>De facto, a criação do 'locus' é muito simples. Carregue no seu botão na barra de ferramentas ou seleccione a opção <menuchoice
><guimenu
>Objectos</guimenu
> <guisubmenu
>Outros</guisubmenu
> <guimenuitem
>'Locus'</guimenuitem
> </menuchoice
> do menu. Seleccione então o ponto restrito como o ponto móvel (o texto <guilabel
>Ponto Móvel</guilabel
> irá aparecer à medida que você passa o rato por cima) e o outro como ponto dependente. Irá então aparecer o 'locus'. </para>
</section>
</chapter>

<chapter id="scripting">
<title
>Programação</title>
<para
>O &kig; permite ao utilizador criar tipos personalizados na linguagem de programação Python. Esta é uma funcionalidade muito avançada, e só é conhecido pelo autor um outro programa de Geometria Interactiva que faça o mesmo (o programa do GNOME &drgeo;). </para>
<para
>A programação em Python no &kig; basicamente permite-lhe criar a sua própria forma de definir um objecto a partir de certos objectos-pai. Por exemplo, se você for um professor de matemática e se tiver alguma forma bonita de calcular um ponto interessante de uma cónica, então em vez de lidar com construções complexas e macros, você poderá então definir em Python como é que o ponto será calculado, deixando que o &kig; o mostre por si. </para>
<para
>Suponha que você não conhecia o tipo <quote
>Ponto Médio</quote
> do &kig; e quisesse mostrar o ponto médio de dois pontos indicados. Você iria então carregar no botão <guibutton
>'Script' de Python</guibutton
> da barra de ferramentas ou seleccionar a opção <menuchoice
> <guimenu
>Objectos</guimenu
> <guisubmenu
>Outros</guisubmenu
> <guimenuitem
>'Script' de Python</guimenuitem
> </menuchoice
> na barra de menu. Aparecer-lhe-á então um assistente que lhe permitirá prosseguir. </para>
<screenshot>
<screeninfo
>O Assistente de Objectos de 'Scripts'</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>O Assistente de Objectos de 'Scripts'</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>A primeira coisa que terá de fazer é seleccionar os argumentos do objecto. No nosso exemplo, isto corresponde aos dois pontos dos quais pretendemos mostrar o ponto médio. Seleccione-os na janela principal do &kig; e carregue em <guibutton
>Próximo</guibutton
> para prosseguir. </para>
<para
>Agora, ser-lhe-á apresentado um campo de texto onde poderá indicar o código do seu objecto. O código de modelo e alguns comentários já estão colocados. É importante certificar-se que o seu código é Python válido. As pessoas familiarizadas com o Python irão reparar que já está definida uma função em Python chamada <function
>calc</function
>. É, por isso, necessário aderir às regras do Python para definir funções. Por exemplo, cada linha da função deverá começar por um <keysym
>Tab</keysym
>. A primeira linha que não comece por uma <keysym
>tabulação</keysym
> termina a definição da função. </para>
<para
>A função de Python que deverá ser definida é chamada de <quote
>calc</quote
> e, no nosso caso, aceita dois argumentos. Estes são os objectos que você seleccionou como argumentos no ecrã anterior. Existirão tantos argumentos como os que você tenha seleccionado. Eles chamar-se-ão de <parameter
>arg1</parameter
> e <parameter
>arg2</parameter
>, mas você poderá mudar os nomes deles para algo mais compreensível, se desejar. </para>
<para
>Na função, você poderá fazer todos os tipos de cálculos que julgue necessários, usando os dois argumentos, se necessário. Você deverá devolver o objecto que deseja que apareça. No nosso caso, este é um objecto <classname
>Point</classname
>. Os dois argumentos são também objectos <classname
>Point</classname
>, e pode-se usar a função <function
>Point.coordinate()</function
> para registar as coordenadas dos dois pontos indicados. </para>
<para
>Os cálculos necessários no nosso exemplo são muito simples; simplesmente adicionam-se as duas coordenadas e divide-se o resultado por dois. A partir daí, cria-se um novo ponto com essa coordenada. O código de Python necessário é:</para>

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

<screenshot>
<screeninfo
>Introduzir o código</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard_entering_code.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Introduzir o código para o ponto médio no assistente do Objecto de 'Script'.</phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Se você carregar no botão <guibutton
>Terminar</guibutton
>, então o novo objecto irá aparecer no documento do &kig;. Se você mover um dos pontos, então o novo ponto irá mover em conjunto com eles. Os objectos bem mais poderosos poderão ser criados desta forma e você é encorajado para o fazer. </para>
<screenshot>
<screeninfo
>Objecto de 'Script' construído</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_script_object.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>O objecto de 'script' acabado de construir. </phrase>
</textobject>
</mediaobject>
</screenshot>
<para
>Todos os objectos do &kig; podem ser usados no código de Python. Como foi indicado acima, os pontos fazem parte da classe <classname
>Point</classname
> e você poderá usar, &eg;, o método <function
>Point.coordinate()</function
>. Você poderá devolver também todos os tipos de objectos e não apenas <classname
>Point</classname
>'s. Estão disponíveis muitos mais métodos e classes na página de código em Python do &kig;, assim como uma referência completa sobre eles <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html"
>aqui</ulink
>. </para>
</chapter>

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

<itemizedlist>
<listitem>
<para
>O &kig; é uma aplicação de código aberto. Isto significa que você é livre para o usar e modificar da forma que o desejar. A distribuição do &kig; está sujeita a algumas restrições, basicamente na medida em que todos deverão ter os mesmos direito de usar o &kig;, incluindo as suas modificações, tal como você e eu. </para>
<para
>Os programas de 'software' livre são desenvolvidos com um espírito muito aberto e os seus programadores são normalmente muito cooperantes com a reacção dos utilizadores. Como tal, se tiver algumas dúvidas, queixas ou algo do género acerca do &kig;, por favor comunique-as ao autor em <email
>toscano.pino@tiscalit.it</email
>. </para>
</listitem>
<listitem>
<para
>O &kig; é uma aplicação KPart, o que significa que você poderá incorporá-la em qualquer outro programa do &kde;. Se você abrir um ficheiro <literal role="extension"
>.kig</literal
> directamente no &konqueror;, ele poderá ser aberto directamente no ecrã do &konqueror; sem a necessidade de iniciar uma aplicação exterior. </para>
</listitem>
<listitem>
<para
>O trabalho com o &kig; deverá ser relativamente simples. A criação de objectos é simples e interactiva, com a apresentação de alguns resultados preliminares, &etc;. A mudança de posição, selecção e a criação deverão funcionar da forma que toda a gente estará à espera. O suporte para a anulação de acções deverá também ser bastante intuitiva. </para>
</listitem>
<listitem>
<para
>O &kig; suporta a definição de macros de uma forma relativamente simples. Estes objectos são apresentados ao utilizador como objectos normais. Eles são gravados à saída e carregados no arranque, por isso não são perdidos ao sair. No <link linkend="working-with-types"
>Gestor de Tipos</link
>, você poderá gerir estes objectos. Você poderá exportá-los como ficheiros, importá-los a partir de ficheiros ou removê-los. </para>
</listitem>
<listitem>
<para
>O &kig; grava os seus dados num formato &XML; simples. </para>
</listitem>
<listitem>
<para
>O &kig; suporta a criação de 'locuses'. </para>
</listitem>
<listitem>
<para
>O &kig; permite-lhe exportar um ficheiro do &kig; para outros formatos interessantes, como imagens ou ficheiros do <application
>XFig</application
>, <application
>LaTeX</application
> e ficheiros vectoriais em <acronym
>SVG</acronym
>. Isto é bastante útil, dado que nem todos os programas suportam ainda o formato de ficheiros do &kig;. </para>
</listitem>
<listitem>
<para
>O &kig; tem um sistema de transformações bastante flexível. </para>
</listitem>
<listitem>
<para
>O &kig; pretende ser compatível com os seus concorrentes. É por isso que suporta o formato de ficheiros do &kgeo;, do &kseg; e, parcialmente, do &drgeo; e do &cabri;, assim como está planeado o suporte para outros formatos. </para>
</listitem>
</itemizedlist>
</chapter>


<chapter id="faq">
<title
>Perguntas e Respostas</title>
&reporting.bugs; &updating.documentation; </chapter>


<chapter id="credits">
<title
>Créditos e Licença</title>

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

<para
>Documentação copyright 2002-2004 Dominique Devriese <email
>devriese@kde.org</email
>. </para>

<para
>Documentação copyright 2004-2005 Toscano Pino <email
>devriese@kde.org</email
>. </para>

<para
>Revisto por &Philip.Rodrigues; &Philip.Rodrigues.mail;. </para>
<para
>Tradução de José Nuno Pires <email
>jncp@netcabo.pt</email
></para
> 
&underFDL; &underGPL; </chapter>

<appendix id="installation">
<title
>Instalação</title>

<sect1 id="getting-kig">
<title
>Como obter o &kig;</title>
&install.intro.documentation; </sect1>

<sect1 id="compilation">
<title
>Compilação e Instalação</title>
&install.compile.documentation; </sect1>

</appendix>

<appendix id="contributing">
<title
>Contribuir</title>
<section id="kig-is-free">
<title
>Software Livre</title>
<para
>O &kig; é <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware"
> 'Software' Livre</ulink
>. Isto significa que o seu código-fonte está disponível livremente na Internet e toda a gente o pode usar, ler, modificar ou distribuir. Este trabalho é feito pelo autor como um passatempo e permitiu-lhe aprender bastante sobre programação, C++, &kde;/&Qt;, matemática, colaboração em 'software' e projectos de código-aberto durante esse processo. </para>
</section>

<section id="contribute-to-kig">
<title
>Contribuir</title>
<para
>O objectivo deste capítulo é explicar-lhe os direitos que a licença do &kig; lhe concede. Como em todo o 'software' livre, você tem a permissão (e é encorajado para tal) para corrigir os problemas que encontrar durante a sua utilização, adicionar funcionalidades de que sinta falta ou distribuir o seu programa modificado, e deverá enviar essas modificações para o autor em <email
>toscano.pino@tiscali.it</email
>, para que ele as possa incluir na próxima versão para que os outros se entretenham. Pessoalmente, por parte do autor, não há interesse financeiro no projecto. </para>
<para
>Se você não tiver a certeza dos seus direitos para usar este 'software' ou dos das outras pessoas para usar as modificações que você fizer ao programa, &etc;, por favor leia a licença. Você podê-la-á encontrar no ficheiro <filename
>COPYING</filename
> do pacote de código do &kig; ou na página da <guilabel
>licença</guilabel
> da janela <guilabel
>Acerca do Kig</guilabel
>. </para>
</section>

<section id="howto-contribute">
<title
>Como contribuir ?</title>
<para
>Todas as contribuições são bem-vindas. Se você achar que os ícones são feios ou que o manual precisa de ser actualizado ou, ainda, se achar que tem uma macro mesmo muito boa para partilhar com o resto do mundo, não hesite em mandá-la para o autor. Lembre-se por favor que as suas contribuições serão distribuídas segundo os termos da <acronym
>GPL</acronym
> da &GNU;; você poderá encontrar os termos da licença no ficheiro <filename
>COPYING</filename
> do pacote de código do &kig; e no capítulo de <link linkend="credits"
>Créditos e Licenças</link
> deste manual. </para>
</section>
</appendix>

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