This is an old revision of the document!


PHP's gd library is missing or unable to create PNG images

What is New in Dinamica EGO 3

Dinamica EGO 3 features a completely new graphical interface. The new features include:

Features

  • Better model edition tools;
  • New model editor that allows several models to be open simultaneasly;
  • The local submodels belonging to a model are presented together with the model itself;
  • Copy and paste parts of a model;
  • Print a model;
  • Many more!

A comprehensive list of changes can be seen below:

Models

  • It is possible to drag several models simultaneously to the script editor to open them.
  • The open model dialog allows several model filenames to be selected simultaneously.
  • The interface does not hang while a model is being loaded.
  • Open models can be reordered by their corresponding tabs.
  • It is possible to close all open models simultaneously.
  • It is possible to save all open models simultaneously.
  • Closing the application asks which modified models should be saved.
  • The editor decides automatically if a script editor draft should be discard or kept when opening new models.
  • Models open from read-only filenames are identified by an special icon on the script editor.
  • It is possible to print the current model. The visual representation of the model and editor content for all visible functors + comments + alias are printed. When printing the model details, the functors are rendered with a corresponding id visible, making easy to match the visual representation of the functor and its content.
  • Local submodels are presented with their corresponding model, allowing changes in the submodel to be applied immediately to the model.
  • The menu of recently open files asks whether a model that failed to open should be removed from the list.

Functor Library

  • The functor library allows functors to be searched.
    • The search has filters allowing functors to be searched by their names, descriptions and information of their ports.
    • The search for functors can be performed using the special filters is:container, is:loop, is:carrier, is:hook, is:mux, is:junction, is:loader, is:saver, is:submodel, is:systemsubmodel, is:usersubmodel, is:localsubmodel.
    • It is possible to type the terms that should be used by the search and then check the result on the on the other library tabs.
  • Funtors are split in general, submodel, favorites and local submodels.
  • Hovering the mouse on a functor gives access to a context action bar with options to manipulate favorites, see the functor documentation etc.
  • User submodels can be edited from the functor library.
  • It is possible to flag functors and submodels as favorites.
  • It is possible to scroll the library content using the mouse-wheel.
  • The creation of certain functors also instantiate some accessory functors, e.g, CalculateMap also instantiate a NumberMap, CalculateLookupTable also instantiate a NumberTable etc.
  • Functors can be created dragging their names to the script editor.
  • Dragging the name of a functor to the script editor while pressing Shift automatically connects the input of the new functor to the output of the functor currently selected.

Script Editor

  • No more edition modes.
  • New presentation of functors and containers.
  • Select a functor to drag it, insert it and remove it from containers.
  • Visual feedback showing whether a functor can be inserted in a container or not.

Editor de modelos

  • Não existem mais modos de edição.
  • Nova representação de functors e containers.
  • Selecione functor para arrastar e inserir e retirar de containers.
  • Feedback visual indicando se inserção de um functor em um container é possível ou não.
  • Padrão distinto na interface diferenciando container fechado de outros functors.
  • Linhas ligando functors dentro de containers fechados são colapsadas em uma única linha.
  • Desenho das linhas representa características das conexões:
    • Ligações entre functors: linha contínua.
    • Ligação entre functors não visíveis dentro de containers ou entre functor e functor não visível dentro de container: linha grossa
  • Toolbar de contexto mostrada próximo ao functor selecionado contendo as opções que podem ser aplicadas a ele. O sistema procura sempre posicionar essa barra da melhor forma possível. O desenho da barra é automaticamente modificado quando o modelo é movido para deixar claro a qual functor ela correspondente.
  • Opções para colapsar e expandir functors:
    • Possível colapsar apenas os functors mais internos.
    • Possível colapsar todos os functors.
    • Possível expandir todos os functors.
    • Possível colapsar e expandir todos os functors de volta para o estado que estavam da última vez que o modelo foi gravado.
  • Zoom in e out pode ser feito usando o mouse-wheel. Posição corrente do pointeiro do mouse é usado como centro do zoom.
  • É possível dar pan no conteúdo da janela usando o botão direito do mouse.
  • Ao mover um functor, as linhas de conexão não relacionadas são ocultas para simplificar a visualização do modelo.
  • Remoção de conexões ambíguas mostra caixa de dialogo onde pode ser escolhido quando conexão será removida.
  • Conexão de functors mostra caixa de conexão sempre que a conexão é ambigua.
  • Layout centraliza no functor correntemente selecionado. Se nenhum functor está selecionado, todo o modelo é mostrado após o layout. Se vários functors estão selecionados, o retângulo envolvente dos functors selecionados é mostrado.
  • É possível copiar, cortar e colar functor selecionados. Os functors são sempre colados no centro da área visível na tela.
    • Copiar container copia todo o seu conteúdo.
    • Copiar conteúdo do container não copia o container.
    • Qualquer porto associado a functor não copiado é desconectado.
  • É possível fazer zoom e pan do modelo visualizado usando o overview.
  • Ciclos inválidos no modelo são mostrados visualmente indicando quais functors causam o ciclo.
  • Modelo é validado automaticamente durante a manipulação de functors. Functors e ligações incorretas são identificados visualmente e também apresentados em uma lista (issue pane).
  • É possível arrastar e soltar nomes de mapas, tabelas e pesos de evidência diretamente no modelo. Os functors responsáveis pela carga dos arquivos são automaticamente criados.
  • Ao selecionar ligação entre functor, é possível navegar ao longo da ligação, visualizar toda a ligação e/ou expandir os functors envolvidos, caso seja ligação colapsada.
  • É possível criar grupo em torno de uma seleção de functors. Da mesma forma, é possível remover o grupo envolvendo outros functors.
  • É possível cria functors especiais (tais como loops) em torno de uma seleção de functors.
  • Botões especiais permitem selecionar automaticamente todos os functors, descartar a seleção ou selecionar os filhos de um container.
  • Overview do modelo, issue pane e profiler são visíveis apenas enquanto o modelo é visível na interface.
  • Duplo clique em qualquer functor faz com que ele seja editado. Caso o functor não possua portos editáveis, será feita a edição de seus comentários.
  • Colapsar ou expandir containers não influência mais o estado de modificação do script.

Edição de functors

  • Posicionamento dos editores melhorado na janela de edição do functor.
  • É possível destacar editores complexos para uma janela separada, facilitando o seu preenchimento.
  • Editores complexos ocupam toda a janela de edição quando são únicos.
  • É possível desconectar portos editáveis diretamente da janela de edição.
  • É feita a validação de valores durante a edição dos functors cuja correção depende da interação entre vários portos.
  • É possível voltar o conteúdo dos portos opcionais de volta para o valor padrão. Isso inclui associar o porto auto-associável ao porto interno dos containers pais.
  • Edição de expressões usadas por CalculateMap, CalculateLookupTable, CalculateValue etc é validada quanto ao uso de identificadores não definidos por um NumberMap, NumberTable ou NumberValue correspondente.
  • Editor de expressões mostra informação de quais identificadores [iX, tX e vX] estão disponíveis para uso na expressão.
  • Edição de carriers usa o comentário e alias do próprio carrier em vez do nome e descrição do porto para decorar o editor.
  • Edição dos hooks preenche os índices com os valores mais adequados para evitar repetições.

Help

  • Help de functor e da biblioteca de functors é mostrado em um painel que faz docking como os demais componentes.

Issue Pane

  • A lista de pendência é atualizada automaticamente a medida que o modelo é editado.
  • A lista é organizada como uma árvore de functors e suas pendências relacionadas.
  • É possível colapsar e expandir os itens da lista.
  • É possível fazer buscas na lista de pendências:
    • Lista de pendência possui filtros que possibilita fazer a busca por nomes de functors, alias e mensagens de erro.
    • Procura de pendências pode ser feita ainda pelos filtros especiais de propriedades dos functors is:container, is:loop, is:carrier, is:hook, is:mux, is:junction, is:loader, is:saver, is:submodel, is:systemsubmodel, is:usersubmodel, is:localsubmodel.
  • É possível encontrar o functor correspondente ao erro no modelo a partir da lista e encontrar as pendências na lista a partir do functor mostrado no modelo.
  • A lista de pendência do modelo é visível apena enquanto o modelo é visível na interface.
  • Total de pendências de cada functor são visíveis de acordo com o critério de busca corrente.
  • A execução de modelo que apresenta pendências faz com que seja mostrado caixa de diálogo questionando o usuário se ele deseja realmente continuar a execução.
  • Pendências informadas:
    • Ciclos inválidos de execução.
    • Ciclos formados entre portos de entrada externos de container e o seu conteúdo.
  • Falta de conexão em portos de entrada.
  • Incompatibilidade entre valor de nulo e tipo de célula. *
  • Valor de null não permitido. *
  • Tipo de célula não pode ser usado na categorização. *
  • Ausência de functors filhos especiais em certos containers (NumberMap, NameMap, NameAndNumberMap etc). *
  • Uso de identificadores não definidos em expressões. *
  • Uso de operações inválidas em expressões para certos tipos de functors. Ex: Uso de line, column ou funções nbXXXX em CalculateValue. *
  • Associação de vários hooks a um mesmo índice para um mesmo container (Select's, Calculate's etc)
  • Warning para Muxes localizados diretamente dentro do script.
  • Warning a respeito de identificadores definidos mas não usados em expressões.
  • Warning a respeito de perda de desempenho para certos tipos de células.
  • Warning para edição de porto feedback de Muxes.
  • Warning para Steps cuja entrada está conectada a outro functor.
  • Warning para Steps cuja entrada está sendo editada.
  • Warning para Step localizado fora dos loops.
  • Warning para carriers não conectados a outros functors.
  • Validação dos parâmetros inválidos do CreateCubeMap.
  • Warning para hooks usados fora dos containers apropriados.

*Indica itens que são validados também na edição dos portos.

Busca + Profile Pane

  • Informação de desempenho de cada functor é atualizada automaticamente quando o modelo corrente é executado.
  • É mostrado o tempo acumulado para a execução de cada functor do modelo.
  • Os functors são visualizados de forma hierarquica sendo que os containers são mostrados como pais de seus functors filhos.
  • É possível expandir e colapsar os elementos da árvore de functors.
  • É possível fazer busca de functors da árvore por seus nomes, alias, descrições, ???. Os pais dos functors encontrados são sempre visíveis. O tempo total do script é atualizado para refletir o tempo acumulados dos functors visíveis.

Submodelos

  • Submodelos locais podem ser definidos em pasta com o nome do modelo, trocando os pontos por “_” e seguido por “_Submodelos”. Ex: O script “teste.egoml” pode definir seus submodelos em uma pasta “teste_egoml_Submodels”. A pasta “Submodels” local ainda por ser usada para compatibilidade com as versões anteriores.
  • Submodelos também poder definir submodelos locais [esse recurso ainda não ser editado na interface gráfica, mas eles são lidos e gravados normalmente]. A definição pode incluir outros submodelos locais.
  • É possível selecionar um grupo de functors e transformar a seleção em um submodelo. A seleção será substituída pelo submodelo criado. Os portos conectando a seleção de functors aos demais functors do modelo são usados como portos de entrada e saída do submodelo. É sugerido nome único inicial para o submodelo que será criado.
  • Functor que possuem portos exportados pelo submodelo ao qual o functor pertence é mostrado com representação especial.
  • É possível definir os ícones 16×16 e 32×32 pixels usados pela representação do submodelo.
  • Nomes dos portos dos submodelos são sugeridos automaticamente com base nos portos e functors selecionados :
    • Os nomes dos portos de entrada e suas descrições são sugeridos da seguinte forma: caso o porto que será exportado pertença a carrier, o alias e descrição do functor será usado como nome e descrição do porto, caso eles estejam definidos; senão, caso o porto que será exportado esteja conectado a functor, o alias e descrição do functor será usado como nome e descrição do porto, caso eles estejam definidos; senão, será usado o nome e descrição do porto original.
    • Os nomes dos portos de saída e suas descrições são sugeridos da seguinte forma: caso o porto que será exportado pertença a carrier, o alias e descrição do functor será usado como nome e descrição do porto, caso eles estejam definidos; senão, caso o porto que será exportado esteja conectado a functor que seja carrier, o alias e descrição do functor será usado como nome e descrição do porto, caso eles estejam definidos; senão, será usado o nome e descrição do porto original.
  • Criação de submodelos insere automaticamente carriers nos submodelos para evitar que os submodelos criados tenham portos de entrada redundantes.
  • A qualquer momento, é possível aplicar ou descartar as modificações de um submodelo local.
  • Os erros ocorridos dentro dos submodelos locais são mostrados visualmente pela interface.
  • Submodelos locais podem ser importados por outros scripts. A importação inclui todas a dependências dos submodelos.
  • É possível importar submodelos do usuário e submodelos globais e torná-los submodelos locais de um script. Desse modo, o seu conteúdo pode ser editado e o submodelo modificado usado no script.
  • É possível tornar qualquer submodelo local e suas dependências um submodelo do usuário.
  • É possível renomear as entradas e saídas de um submodelo local mantendo as conexões anteriores dos functors do submodelo.
  • Validação contínua se o uso dos submodelos causa ciclos nas definições.

Functor

  • Novo loop de execução paralela (ParallelForEach).
  • Novo funcionamento dos functors de manipulação de sub-regiões que permitem que as células fora da região também sejam manipuladas.
  • Definição otimização do submodelo ExpandKeysToColumns.
  • Modificação do nome do carrier Bool para BooleanValue.
  • Modificação do nome do carrier NonNegativeInt para NonNegativeIntegerValue.
  • Modificação do nome do carrier PositiveInt para PositiveIntegerValue.
  • Modificação do nome do carrier Int para IntegerValue.
  • Modificação do nome do carrier Double para RealValue.

O novos nomes tem a vantagem de serem compativeis com o nome dos functors como CalculateValue [Calcula qualquer valor], MuxValue [faz mux de qualquer valor] etc.

Tipos

  • Tipo Bool agora é conhecido como BooleanValue.
  • Tipo NonNegativeInt agora é conhecido como NonNegativeIntegerValue.
  • Tipo PositiveInt agora é conhecido como PositiveIntegerValue.
  • Tipo Int agora é conhecido como IntegerValue.
  • Tipo Double agora é conhecido como RealValue.

Geral

  • Verificação de modificações no script não geram informações espúrias no log.
  • É possível rolar qualquer aba presente na aplicação, quando múltiplas abas estão presentes em um componente, selecionando a aba e girando o mouse wheel.
  • Título da aplicação agora é “Dinamica EGO 32” para a versão 32 bits e apenas “Dinamica EGO” para a versão 64. Nas versões anteriores era usada a notação inversa.
  • Correções no funcionamento de vários functors.
  • A detecção automática de processadores agora encontra um máximo de 10 processadores. Esse valor pode ser aumentado ou diminuído manualmente se necessário.
  • Maximização da aplicação em múltiplos monitores funciona corretamente.

Licença

  • É possível que o software seja usado por instituições comerciais e empresas.