Coder Social home page Coder Social logo

omelette's People

Contributors

barnaba avatar piechalp avatar pienkowb avatar slave avatar zapu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

omelette's Issues

Export dialog

Kliknięcie "export" ma otworzyć dialog do ustawiania między innymi skalowania.

Teksty (np w relacjach) jako oddzielne QGraphicsItem

Co umożliwiłoby ich przesuwanie.

Całość obsługiwana gdzieś wewnętrznie w naszej kontrolce do diagramów (dziedziczącej po QGraphicsScene) i samego DrawableRelation. Może jakiś dodatkowy miechanizm do Drawabli które tak naprawde są wieloma QGraphicsItems?

Walidacja

Kompilator powinien sprawdzać, czy wszystkie potrzebne pola są wypełnione.
Kompilator powinien sprawdzać, czy wszystkie referencje do innych obiektów są prawidłowe (wskazują na obiekty które faktycznie istnieją).
Kompilator powinien zebrać jak najwięcej błędów i dodać do loggera.

Błędne parsowanie typów

Typy nie mogą być bardziej złożone (np. tablice)

class Compiler
  +libraries : [Library] = []
  +compile(code) : {name : UMLObject} 

Blokuje mi to #81

Kompilator failuje dla kvp bez value

Następujący kod (brak wartości dla kluczy source-count i target-count):

class a 
class b 

relation 
  source-object : a 
  source-count  : 
  source-role   : "role"

  target-object : b 
  target-count  : 
  target-role   : "role"

  name          : "name"

Skutkuje:

Traceback (most recent call last):
  File "../../omelette/fromage/actions.py", line 32, in generate
    self.diagram.set_anchors()
  File "../../omelette/fromage/diagram.py", line 59, in set_anchors
    source, target = self.__get_slots(edge)
  File "../../omelette/fromage/diagram.py", line 81, in __get_slots
    target = self.__get_object(edge, "target-object")
  File "../../omelette/fromage/diagram.py", line 88, in __get_object
    return self.edges[edge.uml_object[key]]
  File "../../omelette/compiler/uml.py", line 18, in __getitem__
    return self.properties[key]
KeyError: 'target-object'

Moim zdaniem omelette nie powinno failować na takim kodzie.

Jeżeli będziemy chcieli zrobić snippety, to będziemy musieli generować wszystkie dostępne opcje, mimo że użytkownik niekoniecznie będzie za każdym razem wszystkich potrzebował. Omijanie kvp bez wartości w parserze wydaje się rozsądnym rozwiązaniem.

wpisac taski

Specjalny task polegający na wpisaniu tasków ustalonych na spotkaniu 11 maja.

Persistent 'clearable' compiler

Compiler should be persistent (not created upon generation). On each generation user object should be cleared but libraries should be preserved.

GUI: Actor

nazwa aktora wyświetla się daleko od ludzika

Przeprojektowanie modułu relation.py

Zestaw kluczy

Ustalony wcześniej zestaw kluczy określających kierunek i rodzaj strzałki relacji wygląda następująco:

prototype base relation
    allow arrow STRING
    allow direction [none, source, target, both]

Zaletą obsługi takich kluczy jest możliwość jednorazowego zdefiniowania klucza arrow dla każdego typu relacji w bibliotece standardowej, przez co zmiana kierunku będzie wymagała ustawienia jednej zamiast dwóch wartości, co ma miejsce w przypadku aktualnie wspieranych kluczy source-arrow i target-arrow.

Zmiana projektu klas

Klasy odpowiedzialne za rysowanie zakończeń strzałek zawierają wiele linii powielonego kodu. Wcielając w życie regułę DRY należałoby jak najwięcej kodu przenieść do superklasy, np. DrawableArrow, która powinna trafić do modułu qcommon.py (razem z klasami QDrawable i DrawableText).

Prezentacja

HARMONOGRAM
PREZENTACJI PROJEKTÓW ZESPOŁOWYCH
Kier. Informatyka, sem. 6 oraz sem. 5 i 6

Poniedziałek 13.06.2011 – SK107 godz. 16-18 sem. 6

1.16:15-16:45 Paweł PIOTROWSKI 1 (7 osób)
2.16:50-17:10 Paweł PIOTROWSKI 2 (4 osoby)
3.17:15-17:35 Paweł PIOTROWSKI 3 (4 osoby)

Wtorek 14.06.2010 – SK108 godz. 12-17 sem. 5 i 6

1.12:00-12:30 Witek CZAJEWSKI (7 osób)
2.12:30-13:00 Włodek DĄBROWSKI (7 osób)
3.13:00-13:30 Przemek KOWALCZUK (8 osób)
4.13:30-13:55 Ryszard ŁAGODA (6 osób)
5.13:55-14:20 Sławek SKONECZNY (6 osób)
14:20-14:40 PRZERWA
6.14:40-15:05 Bartosz SAWICKI 1 (6 osób)
7.15:05-15:30 Bartosz SAWICKI 2 (6 osób)
8.15:30-15:55 Jarosław WILK 1 (6 osób)
9.15:55-16:15 Jarosław WILK 2 (3 osoby)
10.16:15-16:35 Paweł PIOTROWSKI (3 osoby)
11.16:35-17:00 Remigiusz RAK (5 osób)

Dokumentacja

Historia projektu + zarządzanie + wnioski (@blondy, @pienkowb)

Podział obowiązków (@slave, @gorniakj, @blondy, @pienkowb, @barnaba, @zapu)

  • każdy pisze o tym co zrobił i czego nie zrobił

Projekt gramatyki - rozróżnienie scanner/parser? Dlaczego pyparsing? Definicje tokenów? Produkcje? Opis tego jak działa pyparsing. (@gorniakj)

Opis architektury aplikacji (@barnaba)

  • opis i uzasadnienie wykorzystywanych technologii
  • diagramy rysowane przy pomocy Omelette
  • i inne elementy ważne

Instrukcja użytkownika (@slave, @zapu)

  • opis języka
  • z obrazkami
  • przykładami

Termin: 6 czerwca (pn, 15:15)

PM nie ma avatara

How to reproduce:

  1. Wejść na stronę projektu: https://github.com/pienkowb/omelette

Oczekiwane zachowanie:

Spodziewałem się łatwej wizualnej identyfikacji PMa.

Faktyczne zachowanie:

PM wygląda jak kotoośmiornica.
kotoośmiornica

Dane o systemie:

Ubuntu linux 10.11
Linux fasada 2.6.35-28-generic #49-Ubuntu SMP Tue Mar 1 14:39:03 UTC 2011 x86_64 GNU/Linux
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17pre) Gecko/20110410 Ubuntu/10.10 (maverick)  Namoroka/3.6.17pre

Parsowanie danych walidacji

Celem zadania jest uzupełnienie klas Lexer i Parser o możliwość parsowania danych walidacji, a więc informacji o dozwolonych, zabronionych i wymaganych kluczach danego obiektu.
Nowa składania definiująca te ograniczenia przedstawia się następująco:

require <nazwa_klucza> <typ_wartości>
allow <nazwa_klucza> <typ_wartości>
deny <nazwa_klucza>

Dozwolone typy to:

  • OBJECT,
  • STRING,
  • NUMBER,
  • MULTIPLICITY

oraz dodatkowo lista stałych:

[stała_1, stała_2, ..., stała_n]

Przykład wyglądu biblioteki standardowej po zdefiniowaniu danych walidacji dla obiektów class i relation:

prototype base class
    allow name STRING
    allow stereotype STRING

prototype base relation
    allow label-text STRING
    allow label-direction [none, source, target]

    allow arrow STRING
    allow direction [none, source, target, both]

    require source-object OBJECT
    allow source-count MULTIPLICITY
    allow source-role STRING

    require target-object OBJECT
    allow target-count MULTIPLICITY
    allow target-role STRING

Dane walidacji powinny być przechowywane w polach required, allowed i denied klasy UMLObject:

self.required = {}
self.allowed = {}
self.denied = []

Pola required i allowed zawierają odwzorowania nazw pól na typy wartości (łańcuch → łańcuch lub łańcuch → lista łańcuchów). Pole denied jest z kolei listą nazw zabronionych pól (lista łańcuchów).

Dodatkowe informacje

Przed rozpoczęciem pracy wskazane jest utworzenie nowej gałęzi na podstawie gałęzi validation z głównego repozytorium, gdzie dodano już ww. pola.

Qt problem

Traceback (most recent call last):
File "../../omelette/fromage/actions.py", line 30, in generate
  self.diagram.add(uml_object)
File "../../omelette/fromage/diagram.py", line 44, in add
  drawable = self.factory.create(uml_object)
File "../../omelette/fromage/diagram.py", line 13, in create
  return self.drawables[type_](uml_object)
File "../../omelette/fromage/modules/class.py", line 18, in __init__
  self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, 1)
AttributeError: type object 'QGraphicsItem' has no attribute 'ItemSendsGeometryChanges'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.