#
# This function receives a canvas and reads a global var named lst
# in order to execute each element of that list by pressing the key
# Return.
#

proc EvaluateScriptList {c} {

    global lst
    global ended
    global demo

    set tmp [bind $c <Key-Return>]
    set tmp2 [bind $c <Key-Escape>]
    set tmp3 [bind $c <Key-space>]
    set ended false

    bind $c <Key-Return> { 
	global lst
	global ended
	if { [llength $lst]>0 } {		    
	    eval [lindex $lst 0];
	    set lst [lrange $lst 1 [llength $lst]];
	} else {
	    if { [llength $lst]==1 } {		    
		eval [lindex $lst 0];
		set lst {}
	    }
	    set ended true
	}
    }

    bind $c <Key-Escape> {
	set ended true
    }

    bind $c <Key-space> {}
    
    tkwait variable ended
    
    bind $c <Key-Return> $tmp
    bind $c <Key-Escape> $tmp2
    bind $c <Key-space> $tmp3
    
}

#
# Each element of the following list "slides" contains the information that
# should be used by abacus-presentation.tcl to present each slide.
#

set slides { 
    {Presentation slide1 picture xxl.gif "Projecto ABACUS 1997/1998" "Instituto Superior Tecnico"}

    {
	Presentation slide0 text { 
	    {"\tMotivação\n" l left}
	    {"\tPlataforma GNU/Linux não tem folhas de cálculo com qualidade." \
		 m left}
	    {"\tExistentes têm funcionalidade limitada.\n" m left}
	    {"\tPlataforma interessante\n" l left}
	    {"\tLinux" m left}
	    {"\tXWindows\n" m left}
	    {"\tPromoção de tecnologias e métodos recentes\n" l left}
	    {"\tPromover Tcl/Tk." m left}
	    {"\tDesenvolvimento apoiado pela comunidade GNU/Linux." m left}
	} "Introdução"
    } 
    {
	Presentation slide1 text {
	    {"\tDivisão em dois subsistemas principais:\n" l left}
	    {"\tTcl/Tk:" m left}
	    {"\tInterface utilizador." s left}
	    {"\tProcessamento \"leve\".\n" s left}
	    {"\tC/C++:" m left}
	    {"\tRotinas de cálculo." s left}
	    {"\tInterface com SO." s left}
	    {"\tProcessamento \"pesado\"." s left}
	} "Introdução" "Visão geral arquitectura"
    }
    {
	Presentation slide2 text {
	    {"\tEvolução do protótipo inicial:" l left}
	    {"\tUpgrade para versões mais recentes bibliotecas." m left}
	    {"\tRevisão funcionalidade jà existente." m left}
	    {"\tImplementação funcionalidade básica.\n" m left}
	    {"\tVersão alfa:" l left}
	    {"\tImplementação versão básica de ideias futuras." m left}
	    {"\tDistruibuição pela Internet do código fonte.\n" m left}
	    {"\tMelhoramento versão incial:" l left}
	    {"\tFuncionalidades avançadas." m left}
	    {"\tResposta a feedback dos utilizadores.\n" m left}
	    {"\tSegunda versão" l left}
	    {"\t..." m left}
	} "Introdução" "Fases desenvolvimento"
    }
    {
	Presentation slide3 text {
	    {"\tLinux\n" l left}
	    {"\tFerramentas GNU\n" l left}
	    {"\tXWindows\n" l left}
	    {"\tTcl/Tk\n" l left}
	} "Introdução" "Ambiente de trabalho"
    }
    {
	Presentation slide4 text {
	    {"\tComputação Gráfica:" l left}
	    {"\tInterface." m left}
	    {"\tProgramação usando sistema de janelas.\n" m left}
	    {"\tInterfaces Homem-Máquina:" l left}
	    {"\tFacilidade de utilização.\n" m left}
	    {"\tProgramação com Objectos:" l left}
	    {"\tHierarquias de objectos - desenho." m left}
	    {"\tImplementação em C++.\n" m left}
	    {"\tEngenharia da Programação:" l left}
	    {"\tMetodologia de desenvolvimento/engenharia adoptada." m left}
	    {"\tProdução de documentação (também para esta apresentação!).\n" m left}
	    {"\t..." l left}
	} "Introdução" "Conceitos Utilizados"
    }
    {
	Presentation slide5 text {
	    {"\tQuando surgiu software \"livre\"?" l left}
	    {"\tNo início:" m left}
	    {"\tProgramadores na \"pré-história\" trocavam programas...\n" s left}
	    {"\t... e actualmente?" l left}
	    {"\tComunidade \"Internetiana\"." m left}
	    {"\tDentro das próprias firmas que vendem software!\n" m left}
	    {"\tSerá única maneira de obter qualidade real?" l left}
	    {"\tProgramas comerciais têm bugs..." m left}
	    {"\tSolução perfeita não existe..." m left}
	} "Conceitos Básicos" "GNU, Linux - \"software livre\""
    }
    {
	Presentation slide6 text {
	    {"\tMas, paga-se?" l left}
	    {"\tTalvez sim, talvez não.\n" m left}
	    {"\tE então a minha liberdade?" l left}
	    {"\tEstudar como o programa funciona através do código." m left}
	    {"\tLiberdade de poder dar o programa ao vizinho sem quebrar a lei." m left}
	    {"\tMelhorar o programa e distribuir para o público...\n" m left}
	    {"\t...Beneficío para a comunidade!\n" l left}
	} "Conceitos Básicos" "GNU, Linux - \"software livre\""
    }
    {
	Presentation slide7 text {
	    {"\tHistória\n" l left}
	    {"\tGNU" m left}
	    {"\tInício em 1985." s left}
	    {"\tComeça com o Emacs, gcc, linker, debugger...não começa mal." s left}
	    {"\tGNU Manifesto - Stallman apela à comunidade.\n" s left}
	    {"\tLinux" m left}
	    {"\tInício em 1991." s left}
	    {"\tEvolução do Minix." s left}
	    {"\tActualmente 7 milhões utilizadores.\n" s left}
	    {"\tEm comum...Internet\n" l left}
	} "Conceitos Básicos" "GNU, Linux - \"software livre\""
    }
    {
	Presentation slide8 text {
	    {"\tComo surge?\n" l left}
	    {"\tEm Berkeley, Ousterhout precisava de intergrar ferramentas diferentes." m left}
	    {"\tMas cada ferramenta tinha uma linguagem diferente!\n" m left}
	    {"\tCaracteristícas da ferramenta a usar para fazer integração:" m left}
	    {"\tLinguagem interpretada." s left}
	    {"\tEstruturas de controlo genéricas - fazer a \"ponte\" entre aplicações diferentes." s left}
	    {"\tProcedimentos.\n" s left}
	    {"\tObjectivos:" m left}
	    {"\tExtensível: Cada aplicação deve adicionar componentes novas fácil e naturalmente." s left}
	    {"\tLinguagem simples e genérica - não restringir \"clientela\"." s left}
	    {"\tObjectivo principal não é \"fazer\" mas \"colar\".\n" s left}
	    {"\tNasce o Tcl (Tool Command Language)." m left}
	} "Conceitos Básicos" "Tcl e Tk"
    }
    {
	Presentation slide9 text {
	    {"\tEm 88 surge necessidade de criar GUI específico:\n" l left}
	    {"\tCada vez mais populares." m left}
	    {"\tTempo de desenvolvimento cada vez mais longo." m left}
	    {"\tNecessidade de implementação rápida." m left}
	    {"\tReaproveitamento de componentes já realizadas vital." m left}
	    {"\tAgregar componentes desenvolvidas por equipas pequenas para sistemas grandes.\n" m left}
	    {"\tO que usar para integrar estes componentes...Tcl!\n" m left}
	    {"\tO que falta? Componentes de GUI para Tcl...\n" m left}
	    {"\tNasce o Tk!\n" l left}
	    {"\tExtensão do Tcl para construir interfaces gráficas com utilizador." m left}
	} "Conceitos Básicos" "Tcl e Tk"
    }
    {
	Presentation slide10 text {
	    {"\tSucesso do Tk?" l left}
	    {"\tSimples e poderoso." m left}
	    {"\tOutros Toolkits (Motif, etc) muito complexos." m left}
	    {"\tTempo de desenvolvimento rápido.\n" m left}
	    {"\tSucesso do Tcl?" l left}
	    {"\tCapacidade de integração." m left}
	    {"\tToda a gente quer usar scripts nas suas aplicações..." m left}
	    {"\t...ninguém tem tempo para desenvolver linguagem..." m left}
	    {"\t...adoptam Tcl.\n" m left}
	    {"\tPresente:" l left}
	    {"\tAmbiente multi-plataforma - suporte para Win e Mac." m left}
	    {"\tProtecção - SafeTcl." m left}
	    {"\tCompilador Bytecodes - \"moda\" em linguagens interpretadas." m left}
	    {"\tIntegração com Java." m left}
	    {"\t..." m left}
	} "Conceitos Básicos" "Tcl e Tk"
    }
    {
	Presentation slide11 text {
	    {"\tO Passado\n" l left}
	    {"\tVisicalc" m left}
	    {"\tDan Bricklin foi o criador em 1978 - MIT." s left}
	    {"\t5 linhas por 20 colunas. (!)\n" s left}
	    {"\tLotus 1-2-3" m left}
	    {"\tInventado Mitch Kapor em 1980." s left}
	    {"\tConvenção para nomes células formato A1 em vez de C1R1." s left}
	    {"\tGráficos." s left}
	    {"\tGrupos de células - \"Ranges\"." s left}
	    {"\tMacros.\n" s left}
	    {"\tExcel" m left}
	    {"\tUsa rato para interacção com utilizador." s left}
	    {"\tUsa interface puramente gráfica." s left}
	} "Conceitos Básicos" "Folhas de cálculo"
    }
    {
	Presentation slide12 text {
	    {"\tO Presente\n" l left}
	    {"\tExcel" l left}
	    {"\tInterface amigável." m left}
	    {"\tGrau de customização elevado - tudo é formatável." m left}
	    {"\tVisual Basic para macros -  macros têm componente GUI.\n" m left}
	    {"\tMas...quais as inovações principais?" l left}
	    {"\tConfigurabilidade total." m left}
	    {"\tIntegração com outras aplicações - o \"Office\"." m left}
	} "Conceitos Básicos" "Folhas de cálculo"
    }
    {
	Presentation slide13 text {
	    {"\tO Futuro\n" l left}
	    {"\tEvolução tem sido orientada para capacidades de apresentação...\n" m left}
	    {"\tQuais os problemas actuais?" m left}
	    {"\tEncorajam problemas com muitas referências não ordenadas entre células." s left}
	    {"\tDemasiado complexo verificar se estão ou não correctas - verificar célula a célula..." s left}
	    {"\tNão são adequadas como repositórios de informação, embora sejam convenientes.\n" s left}
	    {"\tO que é que gostávamos de ter?" m left}
	    {"\tAuditar dados e verificar correcção fácilmente." s left}
	    {"\tManter informação de forma centralizada.\n" s left}
	    {"\tSolução" m left}
	    {"\tUsar folha de cálculo para gerar relatórios e base de dados para guardar dados." s left}
	} "Conceitos Básicos" "Folhas de cálculo"
    }
    {
	Presentation slide14 picture modelo_em_espiral.gif \
	    "Metodologia" "Modelo em Espiral"}
    {
	Presentation slide15 text {
	    {"\tFase inicial de desenvolvimento do Abacus\n" l left}
	    {"\tCalendarização planeada desde início." m left}
	    {"\tParadigma mais realista." m left}
	    {"\tIntroduz análise de risco." m left}
	    {"\t(neste caso controla um recurso critíco - tempo)." s left}
	    {"\tAdopta outros modelos de engenharia no quadrante de desenvolvmento.\n" m left}
	    {"\tMas...qual o modelo após distribuição do código?" l left}
	} "Metodologia" "Modelo em espiral"
    }
    {
	Presentation slide15 text {
	    {"\tEstilo de desenvolvimento clássico" l left}
	    {"\tDesenho cuidadoso." m left}
	    {"\tEquipa de especialistas a trabalhar isoladamente." m left}
	    {"\tVisão \"Catedral\".\n" m left}
	    {"\tMas...como fizeram GNU e Linux?" l left}
	    {"\tReleases o mais cedo possível." m left}
	    {"\tDelegar nos utilizadores tarefas de implementação." m left}
	    {"\tQualquer um pode participar...desde que saiba." m left}
	    {"\tDesenvolvimento é feito \"porta aberta\"." m left}
	    {"\tVisão \"Bazar\".\n" m left}
	    {"\tQuais os principíos subjacentes?" l left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide16 text {
	    {"Motivação do programador" l left}
	    {"Quem programa por gosto, não só não se cansa, também o faz melhor.\n" m left}
	    {"Solução parcial é melhor do que fazer tudo de uma vez" l left}
	    {"A partir dela pode ser que alguém apareça e faça o resto...\n" m left}
	    {"Capacidade de retornar ao início do desenvolvimento." l left}
	    {"Do exterior pode apareçer melhor do que o que já temos...\n" m left}
	    {"E se perdemos o interesse?" l left}
	    {"Entregar projecto a sucessor competente.\n" m left}
	    {"No entanto, como motivar os utilizadores a participar?" l left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide17 text {
	    {"\"Release early, Release often\"\n" l left}
	    {"Utilizadores vêm seus problemas a serem resolvidos.\n" m left}
	    {"Na prática é \"chamá-los\" para trabalharem no projecto.\n" m left}
	    {"Mas...e os bugs?" m left}
	    {"Devemos parar até estarem todos corrigidos?" s left}
	    {"Não? Porque...\n" s left}
	    {"...dotados de uma gama de utilizadores suficientemente vasta, solução é sempre óbvia para alguém." m left}
	    {"(e em geral quem descobre não é a mesma pessoa que corrige e ambas ocorrem muito rápidamente).\n" s left}
	    {"Na prática, mais versões significam mais correcções..." m left}
	    {"...e trabalho de debug não é duplicado já que correcção é logo disponibilidada!" m left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide18 text {
	    {"O código mais simples é sempre o melhor" l left}
	    {"Se não se percebe não se consegue explicar aos outros." m left}
	    {"Documentar estimula a participação exterior." m left}
	    {"Potencial programador não deve ver esforços iniciais gorados.\n" m left}
	    {"Tratar utilizadores como recurso mais valioso" l left}
	    {"Porque de facto o são!" m left}
	    {"Criar mail lists para utilizadores." m left}
	    {"Fazer com que utilizadores se registem." m left}
	    {"Estimular troca de ideias entre interessados.\n" m left}
	    {"Reconheçer ideias dos utilizadores" l left}
	    {"Utilizadores \"guiam-nos\" na direcção certa de desenvolvimento." m left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide19 text {
	    {"Mas, como começar?" l left}
	    {"Utilizar outro modelo de desenvolvimento até ter alguma coisa feita." m left}
	    {"Versão inicial deve prometer mais do que fazer - visão para o futuro.\n" m left}
	    {"É mais importante o coordenador que o desenhador" l left}
	    {"Melhor este saber orientar esforço do que produzi-lo.\n" m left}
	    {"Método capta \"massa cinzenta\" de centenas de pessoas" l left}
	    {"Outras metodologias são melhores em ambientes fechados..." m left}
	    {"...mas com comunidade inteira modelo é melhor que qualquer outro.\n" m left}
	    {"Qual o requisito principal?\n" l left}
	    {"Meio de comunicação como Internet!" l left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide20 text {
 	    {"Mas, como começar?" l left}
	    {"Utilizar outro modelo de desenvolvimento até ter alguma coisa feita." m left}
	    {"Versão inicial deve prometer mais do que fazer - visão para o futuro.\n" m left}
	    {"É mais importante o coordenador que o desenhador" l left}
	    {"Melhor este saber orientar esforço do que produzi-lo.\n" m left}
	    {"Método capta \"massa cinzenta\" de centenas de pessoas" l left}
	    {"Outras metodologias são melhores em ambientes fechados..." m left}
	    {"...mas com comunidade inteira modelo é melhor que qualquer outro.\n" m left}
	    {"Qual o requisito principal?\n" l left}
	    {"Meio de comunicação como Internet!" l left}
	} "Metodologia" "Modelo \"bazar\""
    }
    {
	Presentation slide21 picture arquitectura_do_abacus.gif \
	    "Técnicas" "Arquitectura - visão global"
    }
    {
	Presentation slide22 text {
	    {"Widget Tk optimizado para o Abacus.\n" l left}
	    {"Porquê alteração?" l left}
	    {"Canvas originalmente pensado para conter poucos elementos gráficos...\n" m left}
	    {"Solução passa pela criação de tipos de elementos especiais.\n" l left}
	    {"Funções de desenho só redesenham elementos necessários.\n" l left}
	    {"É a melhor solução?" l left}
	    {"Não - optimização seguinte seria deixar de usar listas internas para conter objectos." m left}
	} "Técnicas" "Arquitectura - Canvas"
    }
    {
	Presentation slide23 text {
	    {"Controla toda a interaçcão com utilizador.\n" l left}
	    {"Gera ambiente de trabalho WYSIWYG.\n" l left}
	    {"Implementado inteiramente em Tk.\n" l left}
	    {"Tcl usado para controlar máquina de estados da interface." l left}
	    {"Realizado através de três variáveis de estado...\n" m left}
	    {"Resumidamente - Implementa \"Look and Feel\".\n" l left}
	    {"Tarefas \"pesadas\" são delegadas para camada inferior.\n" l left}
	} "Técnicas" "Arquitectura - Display"
    }
    {
	Presentation slide24 picture display.gif \
	    "Técnicas" "Arquitectura - Display"
    }
    {
	Presentation slide25 picture globalstate1.gif \
	    "Técnicas" "Arquitectura - Display"
    }
    {
	Presentation slide26 picture globalstate2.gif \
	    "Técnicas" "Arquitectura - Display"
    }
    {
	Presentation slide27 picture globalstate3.gif \
	    "Técnicas" "Arquitectura - Display"
    }
    {
	Presentation slide28 text {
	    {"Sistema documentação interno\n" l left}
	    {"Visualizador de documentação." m left}
	    {"Criação de browser em Tk." s left}
	    {"Geração de ficheiros com informação para serem lidos pelo browser." s left}
	    {"Acesso via browser externo a páginas de Web.\n" m left}
	    {"Aumento de usabilidade do programa\n" l left}
	    {"Área de mensagens para utilizador." m left}
	    {"Tooltips.\n" m left}
	    {"Man-page" l left}
	} "Técnicas" "Arquitectura - Help"
    }
    {
	Presentation slide29 picture demo-help.gif \
	    "Técnicas" "Arquitectura - Help"
    }
    {
	Presentation slide30 text {
	    {"Comandos exportados são os utilizados para criar Abacus!" l left}
	    {"Realizado através de código C que é incorporado no interpretador Tcl." m left}
	    {"Existe um interpretador associado a cada sheet.\n" m left}
	    {"O utilizador é livre de incorporar novas funcionalidades.\n" l left}
	    {"Exportam-se comandos que manipulam a folha.\n" l left}
	    {"Scripts são fáceis de escrever.\n" l left}
	    {"Exemplo: Esta apresentação!" l left}
	    {"Script com 200 linhas!!! (com Motif nem pensar!)" m left}
	} "Técnicas" "Arquitectura - Macros"
    }
    {
	Presentation slide31 text {
	    {"Realizados totalmente em Tk.\n" l left}
	    {"Cada tipo de gráfico é um script diferente." l left}
	    {"Na inicialização é feita leitura de directoria de scripts.\n" m left}
	    {"Relação com \"core\" de cálculo C existe para criar dependências." l left}
	} "Técnicas" "Arquitectura - Gráficos"
    }
    {
	Presentation slide32 text {
	    {"Implementa hierarquia de objectos interna." l left}
	    {"Disponibiliza funções Tcl para efectuar sua manipulação.\n" m left}
	    {"Objecto sheet centraliza operações:" l left}
	    {"Células armazenadas em Hash Table." m left}
	    {"Formatos associados a células e sheets (para linhas e colunas)." m left}
	    {"Controla lista de dependências entre células." m left}
	    {"Tem interpretador Tcl associado.\n" m left}
	    {"Realiza interface com SO para gravar e ler folhas.\n" l left}
	    {"..." l left}
	} "Técnicas" "Arquitectura - Interface Tcl e Calculadora"
    }
    {
	Presentation slide33 picture estrutura_de_dados.gif \
	    "Técnicas" "Arquitectura - Interface Tcl e Calculadora"
    }
    {
	Presentation slide34 text {
	    {"Cópia efectua réplica interna de dados seleccionados.\n" l left}
	    {"Alterações são manipulações da HashTable." l left}
	    {"Preservar as dependências entre células." m left}
	    {"Redesenhar se for caso disso.\n" m left}
	    {"Paste Special mais complexo." l left}
	    {"Comparam-se tipos de células fonte e destino." m left}
	    {"Em função da comparação copiam-se dados, fórmulas e/ou formatos." m left}
	    {"Se pretendido, efectuam-se operações aritméticas simples entre dados.\n" m left}
	} "Tarefas" "Edição, Inserção e Alteração de Células"
    }
    {
	Presentation slide35 text {
	    {"Tamanho\n" l left}
	    {"Alinhamento\n" l left}
	    {"Tipo de letra (Font)\n" l left}
	    {"Formatos de dados\n" l left}
	    {"Fronteiras da célula (Borders)\n" l left}
	    {"Cores" l left}
	    {"Ainda só tons de cinzento..." m left}
	} "Tarefas" "Formatação de Células"
    }
    {
	set demo "Playing"
	set lst {
	    {
		ToggleDisplayBorders $activeSheet ;
		toggleCellBordersDisplay
		set currentRange ""
		set count 0
		set jump 0
		set last 0
		foreach fontname {0 1 2 3} {
		    foreach fontsize {0 1 2 3 4 5} {
			foreach fontitalic {0 1 2} {
			    foreach fontbold {0 1} {
				set x [expr [expr int([expr $count / 30])]+$jump]
				set y [expr [expr $count% 30] +1]
				CellSet $activeSheet $x $y "$fontname $fontsize $fontitalic $fontbold"
				SetFont $activeSheet $fontname $fontsize $fontitalic $fontbold $x $y 1
				set count [expr $count +2]
				if {$last < $x} {
				    set jump [expr $jump +2]
				    set last [expr $x +2] } 
			    }
			}
		    }
		}
		set temp 1
		CellSet $activeSheet 0 0 $temp
		for {set i 2} {$i<=3} {incr i} {
		    for {set j 2} {$i<=11} {incr i} {
			CellSet $activeSheet $i $j " "
		    }
		}
	    }
	    {
		SetBorders example  5 7 7 7  0 3
		SetBorders example  5 7 7 7  3 3
		SetBorders example  7 7 2 7  3 3 
		SetBorders example  7 5 7 7  3 3
		SetBorders example  7 3 7 7  6 3 
		SetAlignment example 2  0 11
		SetAlignment example 3  0 13
		SetFill example 50 6 11
		SetFill example 90 9 9
		SetFill example 20 6 13
		SetFill example 80 3 11
		SetFill example 90 3 13
		SetBorders example  7 7 7 3  9 5 
		SetBorders example  7 7 7 2  9 15 
		SetBorders example  7 7 3 7  9 3 
		SetBorders example  7 7 5 7  9 3 
		SetBorders example  1 7 7 7  3 15 
		SetBorders example  7 7 1 7  3 15 
		SetBorders example  7 1 7 7  3 15 
		SetBorders example  7 7 7 1  3 15 
		SetFill example 60 3 6
		SetFill example 60 10 2
		SetBorders example  7 5 7 7  6 1 
		SetBorders example  5 7 7 7  6 1 
		SetBorders example  7 7 7 5  6 1 
		SetBorders example  7 7 5 7  6 1 
		SetBorders example  7 3 7 7  0 10 
		SetBorders example  7 3 7 7  1 10 
		SetBorders example  7 3 7 7  2 10 
		SetBorders example  7 3 7 7  3 10
	    }
	    {
		set count 0
		set jump 0
		set last 0
		for {set i 0} {$i< 90} {incr i} {
		    set x [expr [expr int([expr $count / 30])]+$jump]
		    set y [expr [expr $count% 30] +1]
		    CellSet $activeSheet $x $y " "
		    set count [expr $count +2]
		    if {$last < $x} {
			set jump [expr $jump +2]
			set last [expr $x +2] } 
		}
	    }
	    {
		ToggleDisplayBorders $activeSheet ;
		toggleCellBordersDisplay
	    }
	}
	EvaluateScriptList .slideshow
	CellSet $activeSheet 1 1 " "
	set demo "Not Loaded"
    }
    {
	Presentation slide36 text {
	    {"ABS" m left}
	    {"ACOS" m left}
	    {"ASIN" m left}
	    {"ATAN" m left}
	    {"ATAN2" m left}
	    {"AVG" m left}
	    {"CELLPOINTER" m left}
	    {"CHAR" m left}
	    {"CODE" m left}
	    {"COS" m left}
	    {"COUNT" m left}
	    {"DAY" m left}
	    {"EXP" m left}
	    {"FALSE" m left}
	    {"HOUR" m left}
	    {"IF" m left}
	    {"INTF" m left}
	    {"ISERR" m left}
	    {"ISNA" m left}
	    {"ISNUMBER" m left}
	    {"ISSTRING" m left}
	    {"LENGTH" m left}
	    {"LN" m left}
	    {"LOG" m left}
	    {"LOWER" m left}
	    {"MAX" m left}
	    {"MIN" m left}
	    {"MINUTE" m left}
	    {"MOD" m left}
	    {"MONTH" m left}
	    {"PI" m left}
	    {"PROPER" m left}
	    {"RAND" m left}
	    {"ROUND" m left}
	    {"SECOND" m left}
	    {"SIN" m left}
	    {"SQRT" m left}
	    {"STRINGF" m left}
	    {"SUM" m left}
	    {"TAN" m left}
	    {"TIMEVALUE" m left}
	    {"TODAY" m left}
	    {"TRUE" m left}
	    {"UPPER" m left}
	    {"VALUE" m left}
	} "Tarefas" "Fórmulas"
    }
    {
	Presentation slide37 text {
	    {"\tObjectivos planeados cumpridos..." l left}
	    {"\t...embora versão para Windows não tenha sido realizada.\n" m left}
	    {"\tProjecto nunca está concluído...evolução é constante." l left}
	    {"\tOptimizar canvas." m left}
	    {"\tCores." m left}
	    {"\tEdição de gráficos." m left}
	    {"\tIntegração de imagens." m left}
	    {"\tSave/Record macros." m left}
	    {"\tVersão multiplataforma." m left}
	    {"\tPlugins." m left}
	    {"\tIdeias dos utilizadores..." m left}
	} "Conclusões" "Resultados"
    }
    {
	Presentation slide38 text {
	    {"\tDesenvolvimento interno em espiral\n" l left}
	    {"\tPassagem para bazar" l left}
	    {"\tFase actual do Abacus." m left}
	    {"\tAcessos às páginas." m left}
	    {"\tMensagens utilizadores.\n" m left}
	    {"\tModelo bazar" l left}
	    {"\tRegisto de utilizadores." m left}
	    {"\tCriação de lista de correio." m left}
	} "Conclusões" "Eficiência do Método"
    }
}
