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.