Laden...

Modellierer für Projekte

Letzter Beitrag vor 14 Jahren 75 Posts 36.095 Views
Modellierer für Projekte

Hi,
ich hab mir, weil es meine größte Schwäche ist, ein Projekt zu designen,
einen Editor geschrieben, der ein Projekt-Modell in Quellcode exportieren kann.
Ich würde ihn als im Alpha-Status befindlich beschreiben und bitte um Feedback.
Features:*Elemente lassen sich einzeln speichern *Projektüberblick *Namespaces *Extra Tab, um den erstellten Code anzuschauen

Ein Screenshot folgt gleich.

//edit: hab ich ganz vergessen:
Um eine Verbindung zu löschen, einfach mit der Maus draufklicken

//Update 12.5.07:

  1. Das ausgewählte Element wird in den Vordergrund geholt
  2. Einfügemarker
  3. Copy & Paste von Namespaces verbessert, das Verhältnis der Positionen
    von Namespace und Inhalt bleibt bestehen
  4. rudimentäres Plugin-System, bisher nur Projektexport-Plugins (siehe Readme)

//Update 13.5.07

  1. Jetzt mit kleiner Doku
  2. Bilder für Export-Plugins
  3. paar Kleinigkeiten verbessert

//Update 11.8.07
Neue Version gibts jetzt unten

//Update 24.4.08
Neue 2.0-Alpha-Version als Anhang in diesem Beitrag

Features:

  • Zoomfunktion
  • Mausgesten: Einfach Strg + rechte Maustaste drücken
  • Pluginfähig, SDK gibt es später

//Update 26.09.08
Würd ich jetzt mal als Beta bezeichnen.

//Update 30.10.09

  • Einige neue Sets (siehe unten)
  • neue Oberfläche mit selbstgemachter ribbonähnlicher Toolbar
  • Bessere Navigation
  • rudimentäre Macrofunktion

Bekannte Bugs:

  • (Win XP) Falsche Hintergrundfarbe des Navigators im linken Menü
  • Leertaste ruft den Umbenennnen-Dialog im Hintergrund auf, wenn im Vollbildmodus gearbeitet wird
  • Qualität der exportierten Jpegs schlecht
  • Wird ein Objekt erstellt, bleibt der Fokus auf dem Button, dadurch funktioniert das Umbenennen per Leertaste erst nach nochmaligem Auswählen des Objekts

-> Alle diese Bugs wurden schon gefixt, die neue Version aber nicht hochgeladen

Features:

  • Elektronik-Set, allerdings eher rudimentär
  • Flow Charts-Set
  • XML-Set
  • DotNet-Development-Set
  • Mindmapping Set

viele Grüße,
Big Al

Bisherigere Downloads:
PD.NET_2.0_Alpha.rar (607,29 KB, 90 mal heruntergeladen)
PD.NET_Beta.rar (2 MB, 199 mal heruntergeladen)

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hier der Screenshot:

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Ich finde das Tool gar nicht so schlecht, was ich nicht intuitiv finde, ist die Erstellunge von Properties/Methoden usw. (man kann z.B. nicht die Elemente anklicken, um dies zu tun)

Entitäten und Events der Klasse Paint-Control würde ich nicht im Form ausprogrammieren, die Klasse Paint-control sieht aber fast so aus, als wolltest du noch einiges auslagern.

Sehr gut gefällt mir das Scrolling auf der Oberfläche wenn keine Elemente selektiert sind, das macht Sinn.

Ausserdem hat das ganze Framework einen minimalen Schönheitsfehler, der sich aber erst bei vielen Elementen darstellt:

das momentan ausgewählte Element wird nicht im Vordergrund gezeichnet, sondern immer in der vorhandenen Z-Order-Position.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

das momentan ausgewählte Element wird nicht im Vordergrund gezeichnet, sondern immer in der vorhandenen Z-Order-Position.

Stimmt, aber eigentlich sollen die Elemente ja auch nicht übereinander, sondern nebeneinender angeordnet werden. Mal sehen was ich da machen kann.

Die Klasse PaintControl heißt nur so, weil ich eine DoubleBuffered Zeichenfläche brauchte, aber dein Tipp, das alles auszulagern ist auf jeden Fall sinnvoll.

Dass man Properties und Methoden auswählen kann, habe ich geplant, mal sehen wie ich das mache.
Vielen Dank erstmal, jetzt hab ich wieder ne Menge zu tun.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Es gibt noch mehr zu annotieren. 😉 Komme gerade nur nicht dazu,

aber rein interessehalber, da ich den il-code soweit noch nicht angesehen habe,

wie machst du das mit dem scrolling? Gefällt mir nämlich ziemlich gut.
Berechnest Du die Zeichenfläche virtuell beim Scrollen oder ist sie einfach größer als der Ausschnitt? oder eine Kombination von beidem?

EDIT:

Bei bearbeiten->importieren, welche Dateitypen kann ich da laden? Da funktionieren bei mir weder Objekt-Dateien noch sonst was, da kommt eine MessageBox
mit einem Schreibfehler

"Beim Laden der Objektdatei ist EINE Fehler aufgetreten"

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

aber rein interessehalber, da ich den il-code soweit noch nicht angesehen habe, Untersteh dich, Reflector zu benutzen, mein Gewurschtel ist mir peinlich 😉
Scrolling:
ich habe zwei integer-Variablen: XOffset und YOffset, wenn die Maus gedrückt ist und dann bewegt wird, ändern sich die beiden Werte.

this.Xoffset += (Xoffset + mousePosition.X- e.X) * -1;
this.Yoffset += (Yoffset + mousePosition.Y - e.Y) * -1;

In dem Paint-Event wird dann gleich zuerst über Graphics.TranslateTransform alles verschoben. Das Gitter wird dann auch mit den beiden Variablen berechnet.
Der Tippfehler ist beseitigt und das selektierte Element wird jetzt immer in den Vordergrund geholt, bald werde ich die verbesserte Version hochladen.
Gruß,
Big Al

//Edit: Bei mir funktioniert das Importieren einwandfrei, komisch, aber mal sehen was die anderen sagen...

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

@Big Al:

Mein GfxFramework hat übrigens das gleiche Problem bisher (Elemente werden nicht bei Selektion im Vordergrund angezeigt),

Graphics.TranslateTransform

Beim Verschieben hatte ich genau nach diesem Stichwort gesucht.

Noch einen Tipp:

mit Herbivores Undo/Redo-Core (Command-Pattern) kannst Du Deine Aktionen
abspeichern, nachvollziehen was ein Benutzer gemacht hat, und auch natürlich Rückgängig/Wiederholen anbieten (Undo/Redo eben),

Ausserdem wird so komplett das Gui und die restliche Logik getrennt.

Momentan ist es so:


public class Form
{
     public Form()
     {
           PaintControl.MouseDown += new EventHandler(this.PaintControl_MouseDown);
     }

     PaintControl_MouseDown(object sender, EventArgs e)
     {
              //mach was
     }
}

besser wäre aber so:


public class Form
{
     public Form()
     {
           PaintControl.MouseDown += new EventHandler(new ActionMachWas().Run);
     }
}

und man sieht schon, die Action kann auch wo ganz anders definiert sein...
Dazu wird auch noch irgendwann ein Artikel von mir erscheinen.

Ausserdem kannst Du so die gleiche Action für z.B. einen Toolbar-Button und einen Menüeintrag setzen...


PaintControl.MouseDown += new EventHandler(new ActionMachWas().Run);
Button.Click += new EventHandler(new ActionMachWas().Run);

Du könntest auch beides mal die gleiche Action benutzen (also nicht auf jeden EventHandler neu instanziieren, kommt auf den Anwendungsfall an),
kleines Beispiel habe ich angehängt.

Ich mach das immer so, weil es sich bei mir bewährt hat.

Ausserdem hat man wenn man dann die Actions automatisch loggt, eine Historie was der Benutzer bis zum Bug gemacht hat.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Cool, wäre praktisch, aber ich bau grade das ehemalige PaintControl um,
es heißt jetzt ProjectView und hier werden jetzt wahrscheinlich die ganzen Aktionen ablaufen. Es feuert dann Events wie ObjectDeselected oder ObjectAdded usw.
Aber die Komponente ist auf jeden Fall ziemlich gut, die werde ich im Laufe des Projekts bestimmt noch gebrauchen.
Funktioniert das Importieren bei dir wirklich nicht? Es gibt irgendwelche Systemdateien, die auch auf .obj enden, die kannst du natürlich nicht öffnen.
Ich überlege gerade, wie man Visual Studio Solutions Importieren kann, dann müsste man die Elemente irgendwie aus Sourcecode erhalten. Ich hab da erstmal an Regex oder Compiler + Reflection gedacht. Hast du einen Vorschlag?
Viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Ja, mit Regex in der Sln nach den Pfaden für die csproj files parsen.
Diese Pfade scheinen immer relativ zu sein:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GfxFramework", "..\Libs\Core-Libs\GfxFrameworkLib\Entwicklung\trunk\GfxFramework.csproj", "{AA6FC0AF-B9DF-4F69-8C68-105160956826}"

dann in der csproj datei, die einfach nur ein XML ist (am besten mit XmlDocument.Load laden)

und dann mit XmlDocument.SelectNode(sXPath) den sXPath auf

/ItemGroup/Compile/* setzen, wenn du ein Include findest, dann die entsprechende cs-Datei laden. Ziemlich einfach.

Also ungefähr


List<Project> aProject =  GetProjects(ReadSLN());
foreach(Project in aProject)
{
     foreach(XmlNode xmlNode in XmlDocument.SelectNodes(sXPath))
        if (HasAttribute("Include",xmlNode))
        {
              CSProjFile csProjFile = ReadCSProjFile(xmlNode)
              if (csProjFile != NOT_FOUND)
                   AddToList(CSProjFile);
        }
}

ungefähr so oder ähnlich (Pseudo-CSharp-Code) könnte es aufgebaut sein, ist hier natürlich ohne Fehlerprüfung usw.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Ja, so mache ichs, ich meinte aber eigentlich die Bildung der UML-Elemente aus dem Sourcecode, also erkennen, ob es sich um eine Klasse handelt, ein Klassenobjekt erzeugen und ihm dann die Properties und Methoden aus dem Source hinzufügen. Das kommt aber später...

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hallo,

Wirklich Cooles Tool.

Was würdet ihr davon halten das Tool ein bischen zu unterstützen.
Z.b. um die erzeugung von Nhibernate xml dateien usw?

Ich würde mich auch bereit erklären gerade wegen NHibernate 🙂

MFG

Das wäre echt cool, aber erstmal muss ein bisschen Ordnung in den Code gebracht werden 😉
Ich werd mich dann mal melden,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hallo Big Al

Gratulation, dein Programm sieht super aus und hat sicher viel Potential.
Die grafische Aufmachung ist echt top und trifft voll meinen Geschmack!
Weiter so! 🙂

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

@Peter Bucher: Genau deswegen habe ich mich auch eingeklinkt, da ich denke, dass sein Programm richtig gut wird.

Die Oberfläche und Bedienbarkeit gefallen mir bisher auch schon sehr gut.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Hi dr4g0n76

Original von dr4g0n76
Die Oberfläche und Bedienbarkeit gefallen mir bisher auch schon sehr gut.

Ja, auf jeden Fall.
Die meisten Programme, die ich bisher gesehen habe, sind unnötig kompliziert in der Handhabung.
Die Schwierigkeit ist halt, bei immer mehr Funktionen, die Oberfläche trotzdem intuitiv und simpel zu halten.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Die Schwierigkeit ist halt, bei immer mehr Funktionen, die Oberfläche trotzdem intuitiv und simpel zu halten.

Deshalb hab ich darauf auch den größten Wert gelegt: schön große Buttons und Zeichnungen

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Ach ja, noch was:


Untersteh dich, Reflector zu benutzen, mein Gewurschtel ist mir peinlich  

ILDasm hat mir in diesem Falle auch gereicht. LOL, 😉 (Stichel Stichel).

hehe.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Naja, das wird noch, jetzt kommt halt ein bisschen Refactoring...
Vielleicht hätten ich ab jetzt nen Obfuscator benutzen 🤔

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Das solltest Du später auf jeden Fall tun, falls Dein Programm kein OpenSource sein sollte oder kommerziell, jetzt würde ich das noch nicht machen.

Wir wollen Dir mit unseren Beispielen ja nur helfen.

Sorry, das war vielleicht nicht so ganz nett.

Wie hast Du eigentlich die Docking-Funktionalität integriert? WeifenLUOs Docking Framework?

Wenn nicht, könnte ich Dir das wärmstens empfehlen, dann hasst Du die gleiche Fenster Funktionalität wie in Visual Studio. Das Layout wird automatisch beim Verlassen und Neustarten des Programms gespeichert bzw. geladen, so dass das Fensterbild erscheint wie zuvor...

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Hey, das mit dem Obfuscator war ein Witz, natürlich dürft ihr den benutzen,
nur nicht über meinen Programmierstil schimpfen X(
Ich bin euch echt dankbar, dass ihr mir helft!!!
Das Docking hab ich mit SplitContainern und Dock = DockStyle.... gemacht, also nix besonderes

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hi,
es gibt ein Update! Die Änderungen stehen im ersten Post!
OT: Stuttgart wird Meister!!!

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Moin, moin,
ich habe jetzt eine Schnittstelle für eigene Codegeneratoren eingebaut, damit der Designer nicht auf C#-Entwickler beschränkt ist, allerdings hab ich keine Ahnung von VB.net oder z.B. Boo. Würde es jemand übernehmen, den von mir geschriebenen C#-Codegenerator so zu ändern, dass er VB-Code erzeugt? Andere Programmiersprachen wären natürlich auch sehr willkommen, aber VB ist erstmal wichtig.
Ich würde den Freiwilligen dann den Source per E-Mail zukommen lassen.
Ich würde mich echt freuen, wenn es jemanden gäbe, der das übernimmt,
viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Machs bloß nicht zu öffentlich. Die Codegenerierung aus Grafiken ist mit Dutzenden von Patenten überzogen... kaum zu glauben aber wahr.

Das is ja blöd, kann man das irgendwo nachlesen? Ohne Codegenerierung wäre das Tool ja nix wert 😦

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Wir bauen gerade ein ähnliches Tool - allerdings im embedded Umfeld. Unsere Rechtsabteilung arbeitet seit Wochen dran. Teilweise reicht es schon, eine Verbindungslinie farbig zu machen um ein Patent zu verletzen.

Aber ich denke nicht, dass du etwas zu befürchten hast, solange das nicht kommerziell ist und dem Patentinhaber finanziell ans Bein pinkelt.

Was ich allerdings nicht weiss, ob aus einer Patentverletzung zugleich eine eventuelle Verletzung des Wettbewerbrechts einhergeht. Falls dem so ist, sind die allseits bekannten Schmarotzer, die mit Pseudoabmahnungen Geld verdienen, wohl die größere Gefahr.

Da aber wohl fast jedes Open-Source-Projekt Patente verletzt und recht wenigg über Klagen bekannt ist, schätze ich die Gefahr doch eher gering ein.

@Big al: Machst Du eigentlich noch weiter an dem Tool!?

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Natürlich mache ich nach dem Feedback weiter!!!
Ich habe jetzt unter anderem die DockPanel-Suite, Undo-Redo und Codeerzeugung mit CodeDom implementiert. Sieht jetzt alles schon viel professioneller aus und ich habe gemerkt, dass die alte Version doch ziemlich verbuggt ist, deshalb will ich nicht zu früh damit rausrücken. Ich werde aber bald mal einen Screenshot der neuen Version zeigen. Außerdem habe ich an eine Umbenennung in "ProjectDesigner.NET" gedacht, das klingt irgendwie professioneller.
Was meint ihr dazu???
Also, das Projekt lebt noch, jeden Tag komme ich voran. Ich suche gerade passende Bilder im .ico Format, um die GUI ansprechend zu gestalten, mit Grafiken hab ichs nicht so am Hut. Außerdem will ich noch Import-Plugins unterstützen und es ermöglichen, als VisualStudio Projekt zu exportieren, das kann ich allerdings auch als Export-Plugin nachliefern.
So, wenn ich die Icons habe, stelle ich einen Screenshot hier rein.
Ich freue mich schon richtig auf das Release 😁
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

LOL, BigAl, Du bist süchtig. Genau so was braucht man in diesem Fall. 🙂 Das gibt einem die richtige Motivation.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Hi,
so, im zweiten Post hab ich das alte Bild durch ein neues aus der neuen Version ersetzt. Das einzige, was noch nicht ganz fertig ist, ist die Skalierung der Objekte, die nehmen noch zuviel Platz weg. Außerdem kann ich das Programm hier nicht hochladen, weil es gepackt 1 MB groß ist. Mal sehen von wo ich es zum Download anbieten kann...
Was sagt ihr zu der neuen Oberfläche?
Viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hallo Big Al,

ich denke, wenn du Source, Exe (nur Release, nicht Debug) und Ressourcen trennst, solltest du jeweils unter 256 KB bleiben und kannst dann alles hier direkt als Dateianhang anhängen. Vielleicht hast du auch nur einen bisher unerkannten Platzfresser drin, z.B. weil eine große Bitmap in Source, Release-Exe und Debug-Exe enthalten ist, die als Jpg-komprimiert gleich dreimal Platz spart.

herbivore

Juhu, ich bin fertig!
Hier kommt ProjectDesigner.NET, sozusagen Nachfolger von UML2Code.
Features:1.Tabs mit WeifenLuo DockPanel-Suite 1.Projekteordner 1.Intuitive Bedienung 1.Suche in erzeugtem Code oder im Modell 1.Portabel 1.Sehr schön bunt 🙂

1.Und vieles mehr, einfach selbst ausprobieren!

//edit: Die neueste Version gibt es ganz am Anfang des Threads

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

//Edit: Hier gab es Teil 2, aber die neue Version gibt es jetzt ganz vorne

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hi,
folgende Dinge wurden an mich herangetragen:1.Formatierung bei zu langen Namen noch bisschen blöd 1.Projektnamespace kann nachträglich nicht geändert werden 1.Feldnamen der Properties sollte man ändern können 1.und noch ein bisschen mehr

Alle diese Punkte werde ich natürlich schnellstmöglich beheben.
Bis dann,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

So, es hat sich eine Menge getan:*Bildlaufleisten *Events *Mehrzeilige Markertexte *Interfaces lassen sich von Interfaces ableiten *Name der Felder der Properties lassen sich ändern *Man kann den Standardnamespace nachträglich ändern

So, was sagt ihr dazu?
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hi

Könntest du den Feldnamen in die Set und Get Methoden übernehmen?

Weil du immer nach dem _ groß schreibst?

Jedenfalls im C# Code 🙂

Sagen wir mal wir würden das um einen NHibernate Exporter erweitern ließen sich die Eigenschafts Dialoge der einzelnen Objekte per Plugin erweitern?

MFG

Giebts die Bildaufleisten auch einzeln?
Ich würd die gerne in meinen eigenen Projekten verwenden.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Hi,
@boonkerz: Du hast recht, ich hab vergessen, die Namen in Getter und Setter zu übernehmen, das werde ich gleich aktualisieren.
Ein Plugin, dass das Kontextmenu erweitert, ist derzeit leider nicht möglich, aber ich glaube du meinst das Propertygrid, oder? Man könnte dann ja so eine Art Objekt-Extender als Tag im Objekt anbieten. Ist es das, was du meinst?
@floste: Noch gibts die nicht einzeln, aber ich kann sie ja in der Komponentensammlung veröffentlichen. Werd ich gleich mal machen.

Außerdem wollte ich gerne ein Plugin SDK schreiben, welches Programm könnt ihr mir denn da empfehlen?
Viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hi

Meine Klasse sieht z.b. so aus:


using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace TPWawi.Definitions.Models
{
    
    [Serializable]
    [DataContract(Namespace="http://www.TPWawi.com/Definitions/Models/Unit")]
    [KnownType(typeof(NHibernate.Collection.PersistentBag))]
    [KnownType(typeof(NHibernate.Impl.CollectionEntry))]
    public class Unit : BaseUniqueIdentifier
    {
        [DataMember(Name="Name")]
        private string _name = null;
        [DataMember(Name="Articles")]
        private IList<Article> _articles = null;

        protected Unit() {

        }

        public Unit(string name) {
            this.Name=name;
            this.CreationDate=DateTime.Now;
            this.UpdatedDate=DateTime.Now;
        }

        public virtual string Name {
            get { return this._name; }
            set { this._name = value; }
        }

        protected IList<Article> Articles
        {
            get { return this._articles; }
            set { this._articles = value; }
        }

        public override string ToString() {
            return this.Name;
        }
    }
}

und die nhibernate datei wäre diese:


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="TPWawi.Definitions.Models.Unit, TPWawi.Definitions" table="units">
    <id name="Id" type="Guid" column="Id">
      <generator class="guid" />
    </id>
    <property name="Name" column="Name" type="String" length="40"/>
    <bag name="Articles" inverse="true" lazy="true" cascade="all">
      <key column="UnitId" />
      <one-to-many class="TPWawi.Definitions.Models.Article, TPWawi.Definitions" />
    </bag>
  </class>
</hibernate-mapping>

Schön wäre es wenn mann das Property Grid z.b. per Plugin erweitern kann.
So wäre es möglich eine Section Nhibernate hinzu zufügen.

MFG

Also wenn ich das jetzt richtig verstehe, hat dann jedes Objekt ein Tag, der Instanz deiner Klasse mit Informationen für NHibernate enthält. Dieser Tag wird dann in einem PropertyGrid angezeigt. Sowas wäre eigentlich machbar und würde den Objekten eben Zusatzinformationen geben, die beim Exportieren berücksichtigt werden.
Viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hallo,

Jup so sollte das gehen 😁

MFG

Hi,
ist das nicht ein bisschen viel Aufwand für ein einzigen Exporter?
Theoretisch müsste es doch problemlos möglich sein, aus einem CodeDom-Objekt ein NHibernate-Objekt zu machen, da dieses ja Daten wie Name, Attribute und anderes bereitstellt.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hallo,

Jup sollte für die einfachen Sachen wohl reichen.

MFG

Gut,
soll ich dir Sourcecode schicken, der die CodeDom Objekte erzeugt,
oder kennst du dich mit CodeDom aus? Sag mir einfach, was du brauchst.
Leider hab ich noch kein Plugin SDK, also werd ichs mal hier erklären:
das Plugin implementiert das Interface IProjectExporter aus dem Namespace ProjectDesigner.Plugins
So hat es dann u.a. ein Propertie "ExportInFolder" vom Typ bool, das bestimmt, ob das Projekt in ein Ordner, oder, wenn false, als einzelne Datei.
Die ganze Logik kommt in die Export-Methode.
Wenn du Fragen hast, kann ich dir auch mal einen Beispielexporter per E-Mail schicken.
Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hi Schick mal das was du mir geben kannst, dann schau ich mal drüber 🙂

Wenn Fragen sind, dann denke ich, werden wir das mal per skype oder icq machen.

MFG

Hi @Big Al, gibt's eigentlich mal wieder ein neues Release? Würde mich interessieren.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

Oh ja, ich arbeite auf Hochtouren, besonders jetzt in den Ferien.
Wahrscheinlich gibt es bald mal eine "Demo". Ich hab alles von Grund auf neu angelegt und das ganze Programm kann über Plugins erweitert werden.
Man kann dann also Neuronale Netze, Automaten oder Klassenmodelle designen und außerdem hab ich schon ein Adressbuch-Plugin in Arbeit.
Auf ein baldiges Release,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Mal ne frage, wie lange hast du dafür gebraucht bis die erste "funktionierende" version stand? Ne woche? Weil ich mach etwas ähnliches und sitze schon 2 tage dran (bissl anfänger auf dem gebiet noch).

Projekte:
http://code.google.com/p/freeminerdotnet/ - MMORPG-Maker im grafischen Stile von Minecraft
http://code.google.com/p/directzzt/ - ZZT Remake mit eigenen Ideen

Ja, eine Woche kommt hin, aber das war dann doch ziemlich unansehnlich.
Besonders die Erzeugung der CodeDom-Objekte hat etwas gedauert, zuerst hab ich den Code sogar hardcoded erzeugen lassen, bevor ich die Möglichkeiten von CodeDom erkannte.
An der neuen Version sitze ich schon ca. 6 Monate.
Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

Hab noch ne frage:

Ist das ein Panel auf das du das alles zeichnest? Weil wenn ich ein panel (mein projekt) nehm und AutoScroll nehm, haut das echt net hin und verschiebt die objekte mit den Balken ... ?(

Projekte:
http://code.google.com/p/freeminerdotnet/ - MMORPG-Maker im grafischen Stile von Minecraft
http://code.google.com/p/directzzt/ - ZZT Remake mit eigenen Ideen

Nein, dafür habe ich ein eigenes Control.
Über die Mausereignisse berechne ich die Verschiebung der Fläche.
In der OnPaint-Methode verschiebe ich dann die Graphics per TranslateTransform.
Die Objekte sind keine Controls sondern haben eine Draw(Graphics g) Methode, damit ich sie direkt auf die Fläche zeichnen kann.

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.