pienkowb / omelette Goto Github PK
View Code? Open in Web Editor NEWTextual UML modeling tool
License: GNU General Public License v3.0
Textual UML modeling tool
License: GNU General Public License v3.0
I wyciągać z niego linię, w której jest zadeklarowany.
Wymagane: #71
Przy liczeniu kąta w relacjach
self.__angle = math.atan(self.__distanceY / self.__distanceX)
Plik podany jako argument linii poleceń powinien byc automatycznie otwarty.
Potrzebne jest kilka przykładów kodu do prezentowania.
Przy generowaniu małych diagramów scena jest większa niż potrzeba.
Minimalne rozmiary klasy powinny być większe niż aktualnie są.
Gdzie będą definiowane? Globalnie? Możliwość zmiany w plikach diagramu?
Kliknięcie "export" ma otworzyć dialog do ustawiania między innymi skalowania.
PLX
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?
w okolicach c401895
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.
Typy nie mogą być bardziej złożone (np. tablice)
class Compiler
+libraries : [Library] = []
+compile(code) : {name : UMLObject}
Blokuje mi to #81
UMLObject powinien mieć referencję do obiektu Code, z którego został zbudowany, aby można było ustalić linię, w której się zaczyna.
Anonimowe obiekty powinny być nazywane numerami linii.
Nazwa klasy powinna być wyśrodkowana.
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.
GUI powinno próbować skompilować plik od razu po jego wczytaniu.
Potrzebna do określania faktycznych odległości między Node'ami w layouterze.
Fromage powinien nie próbować rysować diagramu, jeśli logger kompilatora zawiera błędy.
actors and use cases
Specjalny task polegający na wpisaniu tasków ustalonych na spotkaniu 11 maja.
diagram scaling is researched, expose ctrl+wheel action somewhere
Compiler should be persistent (not created upon generation). On each generation user object should be cleared but libraries should be preserved.
nazwa aktora wyświetla się daleko od ludzika
Drawable nie udostępnia pól parent, type, name i prototype, które są w UMLobjectcie i są przydatne w Drawable.
Wartości będące łańcuchami wczytywane są mylnie razem ze znakami cudzysłowu.
Nazywanie obiektu nazwą obiektu bazowego powinno zepsuć dependency resolvera. Sprawdzić i ewentualnie zabronić.
Moim zdaniem segfault jest wynikiem tego, że QtGui.QApplication([])
nie zostaje poprawnie skasowane/zakończone.
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
.
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).
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)
Wypisanie Eventów z loggera kompilatora.
Przy generowaniu diagramu za pomocą cli, część tła pozostaje przezroczysta.
Historia projektu + zarządzanie + wnioski (@blondy, @pienkowb)
Podział obowiązków (@slave, @gorniakj, @blondy, @pienkowb, @barnaba, @zapu)
Projekt gramatyki - rozróżnienie scanner/parser? Dlaczego pyparsing? Definicje tokenów? Produkcje? Opis tego jak działa pyparsing. (@gorniakj)
Opis architektury aplikacji (@barnaba)
Instrukcja użytkownika (@slave, @zapu)
Termin: 6 czerwca (pn, 15:15)
Spodziewałem się łatwej wizualnej identyfikacji PMa.
PM wygląda jak kotoośmiornica.
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
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:
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).
Przed rozpoczęciem pracy wskazane jest utworzenie nowej gałęzi na podstawie gałęzi validation z głównego repozytorium, gdzie dodano już ww. pola.
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'
Potrzebna (?) jest opcja wyboru layoutera.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.