MSEgit

Forum für alles rund um die MSEide und MSEgui
mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

MSEgit

Beitrag von mse »

Hier ein erster screenshot von MSEgit.
Under construction!

Martin
msegit1.png

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MSEgit

Beitrag von mschnell »

Er kanns nicht lassen :lol:

Toll ! :D

-Michael

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: MSEgit

Beitrag von pluto »

Er kanns nicht lassen
Warum auch nicht? Sein Projekt kann sich immer noch zu einer guten Alternative zu Lazarus werden....
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: MSEgit

Beitrag von creed steiger »

pluto hat geschrieben: Warum auch nicht? Sein Projekt kann sich immer noch zu einer guten Alternative zu Lazarus werden....
Übers "kann" ist Martin schon weit hinaus. :)
Ich hab zwar momentan keine Verwendung für MSEIDE/MSEGUI,aber vor dem was er da erschaffen hat,höchsten Respekt.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MSEgit

Beitrag von mschnell »

+1
-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: MSEgit

Beitrag von mse »

MSEgit ist kräftig gewachsen und kann bereits produktiv eingesetzt werden.
http://gitorious.org/mseuniverse/mseuni ... ols/msegit
msegit.png

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: MSEgit

Beitrag von pluto »

Ich bewundere dein Projekt. Aber, du vergisst das die meisten hier nur in der Freizeit Programmieren und somit kaum etwas mit den vielen "Daten" anfangen können.

Für mich zähen nur z..b folgende Punkte:
1. Wie gut ist der Code-Editor? Gibt es Code-Tools? Kann ich über F9 mein Programm Kompilieren?
2. Wie gut ist das Canvas? Kann ich damit so arbeiten, wie ich es gewohnt bin? D.h. Grafiken Zeichnen und der gleichen. Also auch Spiele erstellen?
3. Wie gut ist der GUI-Editor, also das Fenster wo Komponente platzieren werden können. Das ist ein Punkt, der mich zum Umsteigen bewegen könnte.
4. Gibt es ein Debugger der auch Funktioniert? Der unter Lazarus macht mir Probleme. z.b. müssen Verzeichnis und Dateien Klein geschrieben sein.
Aber ich nutzte auch andere Möglichkeiten für meine Fehler Suche.

Bitte versehe das nicht als Kritik. Ich bin Beeindruckt, wie viele Komponenten du hast. Ich selbst kann mir eine GUI zwar vorstellen wie sie intern Aufgebaut ist, daher weiß ich auch wie Aufwendig das ist, aber an einigen Stellen bin ich noch unzufrieden in meinen Konzepten. Z.b. das Problem damit, dass Komponenten ein Status haben. Das Label z.b. braucht ca fünft bis sechs Klassen bei mir.
MFG
Michael Springwald

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: MSEgit

Beitrag von mse »

MSEgit ist eine grafische Oberfläche zum verteilten Versionspflege-System git. http://en.wikipedia.org/wiki/Git_(software)
git ist heutzutage in der Opensource Szene eines der meistverwendeten Systeme und hat in vielen Fällen SVN abgelöst.
Wie in allen MSE Produkten liegt auch bei MSEgit die Handlichkeit und Produktivität im Vordergrund.
Zu deinen Fragen.
1. Wie gut ist der Code-Editor?
Super.
Gibt es Code-Tools?
Es gibt code Navigation.
Kann ich über F9 mein Programm Kompilieren?
Selbstverständlich.
2. Wie gut ist das Canvas? Kann ich damit so arbeiten, wie ich es gewohnt bin?
Ich weiss halt nicht, was du gewohnt bist. Die public Definitionen sind hier:

Code: Alles auswählen

public
   drawinfopo: pointer; //used to transport additional drawing information
   constructor create(const user: tobject; const intf: icanvas); virtual;
   destructor destroy; override;
   class function getclassgdifuncs: pgdifunctionaty; virtual;
 
   procedure updatewindowoptions(var aoptions: internalwindowoptionsty); virtual;
   function creategc(const apaintdevice: paintdevicety; const akind: gckindty;
                var gc: gcty; const aprintername: msestring = ''): gdierrorty;
   procedure linktopaintdevice(apaintdevice: paintdevicety; const gc: gcty;
                                           const cliporigin: pointty); virtual;
         //calls reset, resets cliporigin, canvas owns the gc!
   procedure fitppmm(const asize: sizety);
                     //for printercanvas
 
   function highresdevice: boolean;
   procedure initflags(const dest: tcanvas); virtual;
   procedure unlink; //frees gc
   procedure initdrawinfo(var adrawinfo: drawinfoty);
   function active: boolean;
 
   procedure reset; virtual;//clears savestack, origin and clipregion
   function save: integer; //returns current saveindex
   function restore(index: integer = -1): integer; //-1 -> pop from stack
                     //returns current saveindex
   procedure resetpaintedflag;
   procedure endpaint; //opengl swap buffer
 
   procedure move(const dist: pointty);   //add dist to origin
   procedure remove(const dist: pointty); //sub dist from origin
 
   procedure copyarea(const asource: tcanvas; const asourcerect: rectty;
              const adestpoint: pointty; const acopymode: rasteropty = rop_copy;
              const atransparentcolor: colorty = cl_default;
              //atransparentcolor used for convert color to monochrome
              //cl_default -> colorbackground
              const atransparency: colorty = cl_none); overload;
   procedure copyarea(const asource: tcanvas; const asourcerect: rectty;
              const adestrect: rectty; const alignment: alignmentsty = [];
              const acopymode: rasteropty = rop_copy;
              const atransparentcolor: colorty = cl_default;
              //atransparentcolor used for convert color to monochrome
              //cl_default -> colorbackground
              const atransparency: colorty = cl_none); overload;
 
   procedure drawpoint(const point: pointty; const acolor: colorty = cl_default);
   procedure drawpoints(const apoints: array of pointty; 
                          const acolor: colorty = cl_default;
                          first: integer = 0; acount: integer = -1); //-1 -> all
 
   procedure drawline(const startpoint,endpoint: pointty; const acolor: colorty = cl_default);
   procedure drawlinesegments(const apoints: array of segmentty;
                         const acolor: colorty = cl_default);
   procedure drawlines(const apoints: array of pointty;
                       const aclosed: boolean = false; 
                       const acolor: colorty = cl_default;
                       const first: integer = 0; const acount: integer = -1);
                                                          //-1 -> all
   procedure drawvect(const startpoint: pointty; const direction: graphicdirectionty;
                      const length: integer; const acolor: colorty = cl_default);
                                                           overload;
   procedure drawvect(const startpoint: pointty; const direction: graphicdirectionty;
                      const length: integer; out endpoint: pointty;
                      const acolor: colorty = cl_default); overload;
 
   procedure drawrect(const arect: rectty; const acolor: colorty = cl_default);
   procedure drawcross(const arect: rectty; const acolor: colorty = cl_default;
                   const alignment: alignmentsty = [al_xcentered,al_ycentered]);
 
   procedure drawellipse(const def: rectty; const acolor: colorty = cl_default);
                             //def.pos = center, def.cx = width, def.cy = height
   procedure drawellipse1(const def: rectty; const acolor: colorty = cl_default);
                             //def.pos = topleft
   procedure drawcircle(const center: pointty; const radius: integer;
                                               const acolor: colorty = cl_default);
   procedure drawarc(const def: rectty; const startang,extentang: real; 
                              const acolor: colorty = cl_default); overload;
                             //def.pos = center, def.cx = width, def.cy = height
                             //startang,extentang in radiant (2*pi = 360deg CCW)
   procedure drawarc1(const def: rectty; const startang,extentang: real; 
                              const acolor: colorty = cl_default);
                             //def.pos = topleft
   procedure drawarc(const center: pointty; const radius: integer;
                              const startang,extentang: real; 
                              const acolor: colorty = cl_default); overload;
 
   procedure fillrect(const arect: rectty; const acolor: colorty = cl_default;
                      const linecolor: colorty = cl_none);
   procedure fillellipse(const def: rectty; const acolor: colorty = cl_default;
                        const linecolor: colorty = cl_none);
                             //def.pos = center, def.cx = width, def.cy = height
   procedure fillellipse1(const def: rectty; const acolor: colorty = cl_default;
                        const linecolor: colorty = cl_none);
                             //def.pos = topleft
   procedure fillcircle(const center: pointty; const radius: integer;
                        const acolor: colorty = cl_default;
                        const linecolor: colorty = cl_none);
   procedure fillarcchord(const def: rectty; const startang,extentang: real; 
                              const acolor: colorty = cl_default;
                              const linecolor: colorty = cl_none); overload;
                             //def.pos = center, def.cx = width, def.cy = height
                             //startang,extentang in radiant (2*pi = 360deg CCW)
   procedure fillarcchord1(const def: rectty; const startang,extentang: real; 
                              const acolor: colorty = cl_default;
                              const linecolor: colorty = cl_none);
                             //def.pos = topleft
   procedure fillarcchord(const center: pointty; const radius: integer;
                              const startang,extentang: real; 
                              const acolor: colorty = cl_default;
                              const linecolor: colorty = cl_none); overload;
   procedure fillarcpieslice(const def: rectty; const startang,extentang: real; 
                            const acolor: colorty = cl_default;
                            const linecolor: colorty = cl_none); overload;
                             //def.pos = center, def.cx = width, def.cy = height
                             //startang,extentang in radiant (2*pi = 360deg CCW)
   procedure fillarcpieslice1(const def: rectty; const startang,extentang: real; 
                            const acolor: colorty = cl_default;
                            const linecolor: colorty = cl_none); overload;
                             //def.pos = topleft
   procedure fillarcpieslice(const center: pointty; const radius: integer;
                            const startang,extentang: real; 
                            const acolor: colorty = cl_default;
                            const linecolor: colorty = cl_none); overload;
   procedure fillpolygon(const apoints: array of pointty; 
                         const acolor: colorty = cl_default;
                         const linecolor: colorty = cl_none);
 
   procedure drawframe(const arect: rectty; awidth: integer = -1;
                   const acolor: colorty = cl_default;
                   const hiddenedges: edgesty = []);
                    //no dashes, awidth < 0 -> inside frame,!
   procedure drawxorframe(const arect: rectty; const awidth: integer = -1;
                           const abrush: tsimplebitmap = nil); overload;
   procedure drawxorframe(const po1: pointty; const po2: pointty;
                           const awidth: integer = -1;
                                 const abrush: tsimplebitmap = nil); overload;
   procedure fillxorrect(const arect: rectty;
                        const abrush: tsimplebitmap = nil); overload;
   procedure fillxorrect(const start: pointty; const length: integer;
                      const direction: graphicdirectionty;
                      const awidth: integer = 0;
                      const abrush: tsimplebitmap = nil); overload;
   procedure drawstring(const atext: msestring; const apos: pointty;
                        const afont: tfont = nil; const grayed: boolean = false;
                        const arotation: real = 0); overload;
                         //0..2*pi-> 0degree..360degree CCW
   procedure drawstring(const atext: pmsechar; const acount: integer; const apos: pointty;
                        const afont: tfont = nil; const grayed: boolean = false;
                        const arotation: real = 0); overload;
   function getstringwidth(const atext: msestring; 
                                 const afont: tfont = nil): integer; overload;
   function getstringwidth(const atext: pmsechar; const acount: integer;
                                 const afont: tfont = nil): integer; overload;
                  //sum of cellwidths
   function getfontmetrics(const achar: msechar;
                                     const afont: tfont = nil): fontmetricsty;
 
                   //all boundaries of regionrects are clipped to
                   // -$8000..$7fff in device space
   procedure addcliprect(const rect: rectty);
   procedure addclipframe(const frame: rectty; inflate: integer);
   procedure subcliprect(const rect: rectty);
   procedure subclipframe(const frame: rectty; inflate: integer);
   procedure intersectcliprect(const rect: rectty);
   procedure intersectclipframe(const frame: rectty; inflate: integer);
 
   procedure addclipregion(const region: regionty);
   procedure subclipregion(const region: regionty);
   procedure intersectclipregion(const region: regionty);
 
   function copyclipregion: regionty;
                  //returns a copy of the current clipregion
 
   function clipregionisempty: boolean; //true if no drawing possible
   function clipbox: rectty; //smallest possible rect around clipregion
 
   function createregion: regionty; overload;
   function createregion(const asource: regionty): regionty; overload;
   function createregion(const arect: rectty): regionty; overload;
   function createregion(const rects: array of rectty): regionty; overload;
   function createregion(frame: rectty; const inflate: integer): regionty; overload;
   procedure destroyregion(region: regionty);
 
   procedure regmove(const adest: regionty; const dist: pointty);
   procedure regremove(const adest: regionty; const dist: pointty);
   procedure regaddrect(const dest: regionty; const rect: rectty);
   procedure regsubrect(const dest: regionty; const rect: rectty);
   procedure regintersectrect(const dest: regionty; const rect: rectty);
   procedure regaddregion(const dest: regionty; const region: regionty);
   procedure regsubregion(const dest: regionty; const region: regionty);
   procedure regintersectregion(const dest: regionty; const region: regionty);
 
   function regionisempty(const region: regionty): boolean;
   function regionclipbox(const region: regionty): rectty;
                 //returns nullrect if region = 0
 
   property origin: pointty read getorigin write setorigin;
   property clipregion: regionty {read getclipregion} write setclipregion;
                  //canvas owns the region!
 
   property monochrome: boolean read getmonochrome;
   property color: colorty read getcolor write setcolor default cl_black;
   property colorbackground: colorty read getcolorbackground
              write setcolorbackground default cl_transparent;
   property rasterop: rasteropty read getrasterop write setrasterop default rop_copy;
   property font: tfont read ffont write setfont;
   property brush: tsimplebitmap read getbrush write setbrush;
   property brushorigin: pointty read getbrushorigin write setbrushorigin;
   property rootbrushorigin: pointty read getrootbrushorigin write setrootbrushorigin;
                   //origin = paintdevice top left
   procedure adjustbrushorigin(const arect: rectty; 
                                               const alignment: alignmentsty);
 
   property linewidth: integer read getlinewidth write setlinewidth default 0;
   property linewidthmm: real read getlinewidthmm write setlinewidthmm;
 
   property dashes: dashesstringty read getdashes write setdashes;
     //last byte 0 -> opaque dash  //todo: dashoffset
   property capstyle: capstylety read getcapstyle write setcapstyle
                default cs_butt;
   property joinstyle: joinstylety read getjoinstyle write setjoinstyle
                default js_miter;
   property lineoptions: lineoptionsty read getlineoptions write setlineoptions
                default [];
 
   property paintdevice: paintdevicety read fdrawinfo.paintdevice;
   property gchandle: ptruint read getgchandle;
   property ppmm: real read fdrawinfo.gc.ppmm write setppmm; 
                   //used for linewidth mm, value not saved/restored
   property statestamp: longword read fdrawinfo.statestamp; 
                 //incremented by drawing operations
Erwähnenswert ist auch tbitmap mit scanline property.
D.h. Grafiken Zeichnen und der gleichen. Also auch Spiele erstellen?
Selbstverständlich.
3. Wie gut ist der GUI-Editor, also das Fenster wo Komponente platzieren werden können. Das ist ein Punkt, der mich zum Umsteigen bewegen könnte.
Super. Beispielsweise besitzt er ein einheitliches Raster das *über* den widgets liegt.
4. Gibt es ein Debugger der auch Funktioniert?
Na sicher, was meinst du mit was ich meine Projekte bewältige? Gute debugger Unterstützung ist ein wesentlicher Punkt zur rationellen Projektabwicklung und trägt massgeblich zur Schonung der Nerven bei.

Martin

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: MSEgit

Beitrag von pluto »

Ich könnte mir vorstellen, dass es noch EINEN Punkt gibt, warum noch viele Zögern umzusteigen: Die Klassen, Methoden, Eigenschaften Namen sind anders. Jedenfalls.

Vielleicht lohnt es sich, dass ich mir MSEgit mal ansehe... ist das nicht MSEdit?
MFG
Michael Springwald

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: MSEgit

Beitrag von mse »

pluto hat geschrieben: Vielleicht lohnt es sich, dass ich mir MSEgit mal ansehe... ist das nicht MSEdit?
Zitat von oben:
MSEgit ist eine grafische Oberfläche zum verteilten Versionspflege-System git. http://en.wikipedia.org/wiki/Git_(software" onclick="window.open(this.href);return false;)
git ist heutzutage in der Opensource Szene eines der meistverwendeten Systeme und hat in vielen Fällen SVN abgelöst.
MSEdit gibt es nicht. MSEgui ist die cross platform GUI Komponentenbibliothek. MSEide ist die IDE mit welcher MSEgui Projekte, FPC Programme und GNU toolchain (gcc) Projekte entwickelt werden können.

Mit welchem Versionspflegesystem arbeitest denn du?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MSEgit

Beitrag von mschnell »

pluto hat geschrieben:3. Wie gut ist der GUI-Editor, also das Fenster wo Komponente platzieren werden können. Das ist ein Punkt, der mich zum Umsteigen bewegen könnte.
Lazarus basiert da auf der LCL, und die wiederum ist der Delphi VCL nachgebaut.

Und die VCL ist offensichtlich Mist, denn Delphi-Hersteller Embarcadero propagiert seit neustem (Delphi XE2) FireMonkey statt dessen.

Das ist ja sowas von toll: alles schwebt unabhängig von einander irgendwo im Raum hin und her. Total postmodern!

Außerdem sieht es immer gleich aus und ignoriert die Styles, die für das Desktop des Rechners, auf dem sie Anwendung läuft, konfiguriert wurden. Macht einem das Leben ja auch einfacher und wenn man mehrere solche Applikationen verwendet wird alles viel bunter.

Obwohl FireMonkey ein Open-Source Projekt ist, das Embarcadero gekauft hat, kann weder Lazarus, noch mse da mithalten.

Es gibt viel zu tun...

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: MSEgit

Beitrag von Christian »

Hää?
Also das hört sich für mich sehr nach Bullshit an.
Aus meiner Sicht können sowohl MSE* alsauch Lazarus lange mithalten.

Firemonkey ist GLScene für DirectX mehr nicht. Vllt etwas ausgereifter.
Es gibt viel mehr Probleme damit als das nur das Design nicht so auschaut wie das Betriebsystem.
Hast du damit ernsthaft mal versucht was zu machen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: MSEgit

Beitrag von creed steiger »

Firemonkey ist was es ist.
Eine Chance eigene Ideen einfach zu verwirklichen,graphisch chic,aber noch weit entfernt von einem kompletten Widgetset.
Die Demos von DxScene waren echt gut,aber wenn man das damaligen Forum mitverfolgte,war es vom Komfort oder der Vielfalt her
VCL/LCL weit unterlegen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MSEgit

Beitrag von mschnell »

Christian hat geschrieben:Hää?Aus meiner Sicht können sowohl MSE* alsauch Lazarus lange mithalten.
War auch ein Scherz :evil: Nachdem was ich gesehen habe, habe ich nicht vor, mit FireMonkey irgendetwas zu machen, wenn es sich vermeiden lässt.
-Michael
Zuletzt geändert von mschnell am So 20. Nov 2011, 13:38, insgesamt 1-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: MSEgit

Beitrag von mse »

Eine erste beta Version 0.8 wurde freigegeben:
http://gitorious.org/mseuniverse/mseuni ... ols/msegit

Ready for testing!

Martin

Antworten