ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > GadTools: aufgeräumter Aufbau | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
12.03.2007, 21:21 Uhr Ralf27 Posts: 2779 Nutzer |
Zja, ich hab mal versucht mit GadTools eine Art Prefsfenster für WebGround zu basteln. Allerdings sieht dieses Fenster nicht gerade aufgeräumt aus. Das ganze dürfte so zwar auch Fontsensitiv sein, aber nunja, sieht nicht gerade gut aus. Hier einfach mal ein ausführbares Programm, das ein GadTools-Fenster aufmacht und die GadGets positioniert: http://home.pages.at/a1260/GadTools-Webground.lha Die große Frage: Wie würdet ihr das aufräumen, bzw. aufbauen? Ist halt mein erstes richtiges GadTools-Fenster. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 07:56 Uhr Honitos Posts: 200 Nutzer |
Hallo Ralf, Du hast bei der Berechung der verfügbaren Breite die Fensterrahmen links und recht wohl nicht berücksichtigt. Die Gadgets gehen jedenfalls über den rechten Rahmen heraus. Ich kann Dir nur wärmstens empfehlen - zumindest ab mittleren Projekten - das Windowdesign toolgestützt zu machen. Das Programmieren von Oberflächen macht man einfach nicht mehr, es dauert zu lange und ist zu unflexibel. Man sollte sich auf die Lösung des Problems konzentrieren können und nicht ewig viel Zeit mit der GUI vertrödeln müssen. Für GadTools gibt es wohl auch noch einige Tools im Aminet. Obwohl ich auch kein Freund von freipositionierbaren Gadgets bin. Das Prinzip, welches der StormWizard oder der ReActor verfolgt ist schon sinnvoll. So kommen in der Regel konsistente und "gleichmäßige" Oberflächen heraus. [ Dieser Beitrag wurde von Honitos am 13.03.2007 um 07:57 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 09:11 Uhr Blackbird Posts: 634 Nutzer |
Zitat: nicht nur das, hinzu kommt auch, das die unteren Buttons komplett verschwinden wenn man anstatt eines topaz 8 fonts einen größeren eingestellt hat (wie bei OS4/MOS oder Birdie). Jedenfalls, sobald die Rahmenbreite sich ändert, verschwinden deine Buttons Eigentlich müßtest du die Rahmen links/Rechts berücksichtigen, und die Titelleistenhöhe -- regards Blackbird Have a look at: http://www.blackbird-net.de Skins for PlayCD OS3.9 BlackShoot, Zombies Apocalypse, GalagaWars, VcdImager-Gui,PerfectPaint [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 09:47 Uhr MaikG Posts: 5172 Nutzer |
>Ich kann Dir nur wärmstens empfehlen - zumindest ab mittleren Projekten - das Windowdesign toolgestützt zu machen. Die Tools geben zwar nur C-Sprache zurück, aber für die Koordinaten kann man es nutzen. Font verwende ich immer einen eigenen, auf die Größe der Kopfzeile nehme ich aber rücksicht. [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 12:25 Uhr Ralf27 Posts: 2779 Nutzer |
Hm, seltsam. Ich übergebe die maximale Koordiante der theoretisch nächsten unten rechtes kommenden Gadgets als Höhe und Breite mit InnerWidth und InnerHeight an OpenWindowTagList(). Es sollte eigentlich stimmen. Ok, aber es scheint wohl doch nicht zu stimmen... -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 13:23 Uhr Der_Wanderer Posts: 1229 Nutzer |
Wenn du unbedingt Gadtools nutzen willst, und nicht MUI oder Reaction, dann solltest du dir unbedingt eine kleine Engine drumherum schreiben. Sonst wird es elend aufwendig und fehleranfällig, wenn denn mal mehr als ein Fenster sein soll. Mit einer Engine meine ich, dass du nur noch sagst, "ich will einen button mit dem text xzy" und das Layout wird berechnet. Feste Zahlenwerte sind dabei Tabu! Alles wie Buttonhöhe, Abstand usw. sollte berechent werde aus Fonthöhe, Spacing usw. Auch von der Gadget ID würde ich abstrahieren und "notify" Values einbauen, so wie bei MUI. Dadurch kannst du eine bestimmte Funktion deiner App nicht nur durch den Button auslösen, sondern z.B. auch durch einen Menu Punkt oder Shortcut, ohne dass du dafür was extra abfragen musst (und bei der Abfrage Fehler machen kannst). Das kostet dich erstmal ein bisschen Zeit, aber dannach geht es viel schneller und sicherer. Also so wie erstmal den Hammer bauen, um den Nagel reinzuschlagen, und nicht jeden Nagel per Hand versuchen reinzudrücken. Z.B. HD-Rec funktioniert so. Selbst Samplemanager hat eine einfache, kleine Layout engine. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 16:08 Uhr Ralf27 Posts: 2779 Nutzer |
Achja, es muß nicht unbedingt GadTools sein, aber das ist bis jetzt das einzige was ich einigermaßen mit der Hilfe des Boards einigermaßen verstanden habe. Wenn MUI einfacher ist, wieso nicht? Nur muß ich das ganze auch verstehn. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 18:14 Uhr MaikG Posts: 5172 Nutzer |
>Wenn du unbedingt Gadtools nutzen willst, und nicht MUI oder Reaction, >dann solltest du dir unbedingt eine kleine Engine drumherum schreiben. Keine Includes für Mui und Reaction unter MaxonBasic :-( [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 18:18 Uhr thomas Posts: 7718 Nutzer |
@Ralf27: MUI und ReAction haben den Nachteil, daß sie sehr stark auf die den Precompiler von C zugeschnitten sind. Ohne die Makros zu benutzen dürfte das sehr unübersichtlich werden. Vielleicht ist AWNPIPE auch noch eine Option. Damit kann man GUIs machen, ohne überhaupt etwas zu programmieren. Um auf die ursprüngliche Frage zurückzukommen, "aufräumen" würde ich das etwa so: Bild: http://thomas-rapp.homepage.t-online.de/download/hardcopy2.png Die Rahmen um die Gruppen kannst du mit DrawBevelBoxA zeichnen. Außerdem solltest du versuchen, wenigstens zwei der Gruppen untereinander und höchstens zwei davon nebeneinander zu machen, damit das Fenster am Ende noch auf den Bildschirm paßt. Für dein Gadtools-Beispiel oben braucht man schon eine hohe Auflösung (min. 1024x768). Mit einem größeren Zeichensatz paßt es dann nicht mehr ganz drauf. Um die Font-Sensitivität zu testen, solltest du den Bildschirm-Font einmal auf Topaz/8 setzen, dann auf Helvetica/13 und schließlich auf Times/24. Das ganze bei einer Auflösung von 640x480. Wenn das in allen Kombinationen funktioniert, dann kannst du davon ausgehen, daß es auch auf den meisten anderen Konfigurationen passabel aussieht. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 19:50 Uhr Ralf27 Posts: 2779 Nutzer |
@thomas: Wow, das sieht schon mal viel besser aus. Genau so hätte ich es auch gerne. Wie hast du das denn gemacht? Ich hab meins auch auf 640*256 gemacht, aber halt mit einem kleinen Font. Denn ich halt immer benutze. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 19:51 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Zur Not könnte man es aus den C-Includes ableiten, aber ich vermute auch mal das diese recht groß sind (hab sie mir noch nicht angesehn). Das größte Problem ist halt das ganze auch zu verstehn. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 20:32 Uhr Ralf27 Posts: 2779 Nutzer |
DrawBevelBoxA()... ok, aber wie übergeb ich dann die "Überschrift"? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
13.03.2007, 22:00 Uhr thomas Posts: 7718 Nutzer |
@Ralf27:Zitat: Gar nicht. DrawBevelBox malt den kompletten Rahmen und du klatscht anschließend die Überschrift mit Text() drüber. Zitat: Naja, ich habe geschummelt. Die GUI ist mit ReAction gemacht. Das positioniert die Gadgets automatisch, man muß nur angeben, in welcher Reihenfolge man sie haben möchte. Es kümmert sich auch automatisch um die Rahmen um die Gruppen und die Überschriften. Aber mit GadTools geht das natürlich auch, man muß sich nur selbst um das Layout kümmern und die Gadget-Positionen und -Größen berechnen. Ach ja, den Quelltext zu meiner GUI gibt's natürlich auch: http://thomas-rapp.homepage.t-online.de/download/ReAction-WebGround.c Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 13.03.2007 um 22:15 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 09:58 Uhr MaikG Posts: 5172 Nutzer |
>Zur Not könnte man es aus den C-Includes ableiten, aber ich vermute auch mal das diese >recht groß sind (hab sie mir noch nicht angesehn). Ja, mit so kleinen dingen wie der voice.library kann man sowas ja schnell machen aber Reaction und Mui sind da schon relativ groß. >Das größte Problem ist halt das ganze auch zu verstehn. Ja, das ist das 2. ich wollte ja auch kürzlich ein Listview mit Drag&Drop aber letztendlich war das MUI Beispiel in C mir doch zu kompliziert. [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 13:00 Uhr Holger Posts: 8116 Nutzer |
Zitat: Ich würde zum Testen grundsätzlich raten, die extremen, scheinbar sinnlosen Einstellungen auszuprobieren. Nur weil es mit Times/24 vernünftig aussieht, würde ich noch lange nicht davon ausgehen, dass es auf den meisten anderen Konfigurationen funktioniert. Obwohl es natürlich schon gut ist, wenn das noch auf 640x480 passt. Man sollte aber ruhig auch mal hässliche Schriftarten, die deutlich breiter als hoch (oder umgekehrt) sind oder Buchstaben mit zum Rest unpassender Metrik besitzen, testen, evtl. auch auf deutlich größeren Screens, insb. wenn man auch mal Schriftgröße 48 ausprobiert. Zitat: Die meisten anderen Toolkits unterstützen diesen Prozess dadurch, dass man Gruppen von Gadgets anlegen kann, und diese auch wieder Gruppen enthalten können. Wenn Du Dir den Screenshot genau ansiehst, wirst Du dort alle Gadgets in Gruppen unterteilen können, in denen alle Elemente entweder horizontal oder vertikal angeordnet sind. Und diese Gruppe sind ihrerseits auch wieder neben- oder untereinander platziert. Wenn Du diese Verschachtelung vollständig verstanden hast, kannst Du es leicht nachprogrammieren, weil jede Gruppe für sich eine ziemlich einfache Logik besitzt. Mit gadtools musst Du das allerdings komplett von Hand nachbauen. Dabei ist es wahrscheinlich am einfachsten, zuerst alle Größen zu berechnen, und dann erst die Gadgets anzulegen. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 13:53 Uhr thomas Posts: 7718 Nutzer |
Ich habe meine GUI nochmal mit GadTools nachprogrammiert: Bild: http://thomas-rapp.homepage.t-online.de/download/GadTools-WebGround.png Quelltext Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 14.03.2007 um 13:53 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 19:36 Uhr Ralf27 Posts: 2779 Nutzer |
@thomas: Danke! Das sieht wirklich sehr gut aus. Allerdings ist mir jetzt auch aufgefallen, das es wohl mit ReAction doch einfacher ist. Man spart sich da wirklich die ganze Berechnungsarbeit. Ich hab die beiden Programme noch nicht nach MBasic übersetzt, bzw. sehe ich bei dem Gadtools kein Problem, ReAction muß ich mir mal genauer ansehn (bzw. z.b. wie ich das mit den einzelnen Klassen handhaben muß) Also wäre es wohl besser alles in ReAction zu machen. Aber wie sieht es jetzt mit der "Verfügbarkeit" aus? ReAction gehört doch zum Betriebssystem, aber seit wann? OS3.5? GadTools läuft ja schon ab OS2.0, bzw. sogar ab OS1.3, wenn ich das jetzt richtig aufgefasst habe. Ich möchte halt, das das Programm ab OS3.0 läuft. Also, vom Aufbau her (intern) ist ReAction wirklich besser. Mal so nebenbei: Es gibt ja wirklich viele GUI-Lösungen für den Amiga. Das kann man jetzt wirklich als Segen und auch als Fluch ansehn. Bzw. tendiere ich eher zu Fluch. ... -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 22:05 Uhr Holger Posts: 8116 Nutzer |
Zitat:ReAction gehört ab AOS3.5 dazu, gibt es aber unter dem Namen ClassAct auch frei im Aminet. Sollte ab AOS3.0 laufen, evtl. auch unter älteren Versionen. Man muss nur darauf achten, keine Funktionen zu benutzen, die es erst in ReAction gibt (sind eh nicht so viele). Wenn Du es ressourcenschonend haben willst, kannst Du Dir die triton.library ansehen. Die setzt auf gadtools auf, und ergänzt es nur um fehlende Funktionen (wie dem Layout). Allerdings kann ich jetzt nicht auf Anhieb sagen, ab welcher Systemversion es läuft. Zitat:Wieso? Für Dich als Programmierer ist es doch ein Segen, das für Dich beste auswählen zu können. Ein Fluch ist es doch nur für den Anwender, der sich dutzende verschiedene Bibliotheken installieren muss. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
14.03.2007, 22:18 Uhr Ralf27 Posts: 2779 Nutzer |
@Holger: Andererseits kann ich mich als Programmierer nicht entscheiden welches GUISystem ich lernen soll/kann bzw. als "GUIEinsteiger" verliere ich so ganz denn überblick. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
15.03.2007, 08:12 Uhr Honitos Posts: 200 Nutzer |
@Ralf27: Ist natürlich alles Geschmacksache und das Thema wurde hier wohl auch schon diskutiert, aber ich würde den StormWizard empfehlen. Das Konzept ist ähnlich wie bei Reaction, allerdings ist der Designer nicht so Buggy. Der grosse Vorteil ist jedoch, dass die GUI in Form einer Ressourcendatei vorliegt, die man lediglich in sein Programm einbinden muss (entweder dazulinken oder zur Laufzeit laden). Um ein Fenster daraus anzuzeigen, genügen zwei bis drei Anweisungen. Ich sehe den Vorteil in der Trennung zwischen Code und Ressource, d.h. wenn ich das Design des Fensters ändere (ich meine hier das Layout), muß ich den Code nicht neu compilieren. Alles was man braucht ist die wizard.library und die gibt es inzwischen auch nativ für OS4. [ Dieser Beitrag wurde von Honitos am 15.03.2007 um 08:13 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
15.03.2007, 18:48 Uhr Blackbird Posts: 634 Nutzer |
@Honitos: da hast du schon Recht, aber so wie es aussieht, kann man darauf auch nicht zwangsläufig aufbauen weil es 1.Es Stormwizard nicht mehr zu kaufen gibt (gabs mal für 10DM bei Haage)und aller vorraussicht auch nicht mehr sein wird... 2. Eine Weiterentwicklung sich dadurch dann qusai selbst ausschließt... (oder anders gesagt, wer schreibt dann neue Klassen die es dann evtl bei Reaction oder anderen weiterentwickelten GUI gibt ?) 3.Die erzeugten GUIs auf den neueren Systemen nicht zwangsläufig auch so aussehen wie auf den alten... Beispiel ist hier mal OS4: Durch das setzen der Variable "WIZARDSTYLE" funktioniert das umsetzen des Aussehens an Gadtools nicht (zumindest nicht bei der neuen PPC.lib. Unter der 68k wizard.library funktioniert es zumindest noch auf der WB... Ich habe mir mal die Tritongeschichte angesehen, sieht genauso gut aus, und könnte man zumindest erweitern... -- regards Blackbird Have a look at: http://www.blackbird-net.de Skins for PlayCD OS3.9 BlackShoot, Zombies Apocalypse, GalagaWars, VcdImager-Gui,PerfectPaint [ - Antworten - Zitieren - Direktlink - ] |
15.03.2007, 22:18 Uhr Ralf27 Posts: 2779 Nutzer |
Ich bin gerade dabei denn GadTools-Quellcode zu erweitern, bzw. ist das ganze zur Zeit nur das Layout. Mit GadTools ist das ganze wirklich recht aufwändig, ReAction sieht schon viel besser aus. Ich schreib das ganze ja in MBasic und dafür das passenden zu finden ist wohl noch schwerer als für C. @MaikG: Was benutzt du denn? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
16.03.2007, 09:46 Uhr MaikG Posts: 5172 Nutzer |
>@MaikG: >Was benutzt du denn? Ich benutze gar kein Tool, ich mach das per Hand. Dauert viel länger, aber die ganzen Koordinaten rauszusuchen und in MB zu übertragen geht auch nicht wirklich schnell. Früher hatte ich so ein Gadtools programm, aber das hab ich nur kurz mal benutzt. Ausserdem mach ich auch manchmal Bildchen und so ins Fenster und wie das zusammen wirkt sieht man mit dem Tool nicht. [ - Antworten - Zitieren - Direktlink - ] |
18.03.2007, 15:26 Uhr Ralf27 Posts: 2779 Nutzer |
Nach langem habe ich endlich wieder Zeit am Programm weiter zu machen. Aber leider bin ich da auf ein Problem gestoßen:code:rp&=PEEKL(win&+RPort) SetFont rp&,PEEKL(scr&+RastPort+RastPortFont) scr& ist schon mit LockPubScreen&() mit einem Zeiger versehn. Wenn ich diese Zeilemit SetFont aufrufe, dann stürzt der Rechner ab. Auch wenn ich diese Zeile weg lassen, dann stürzt der Rechner mit der Textausgabe ab. Wenn ich beide (SetFont() und Textausgabe) weg lasse, dann läuft es. Das interesante ist auch, das die Textausgabe auch ohne SetFont zum Absturz führt. An was könnte das denn hängen? Achja: code:SUB draw_group_frame(BYVAL rp&,BYVAL x,BYVAL y,BYVAL w,BYVAL h,t$)STATIC SHARED tags&,VInfo& TAGLIST tags&,_ GTBB_FrameType&,BBFT_RIDGE&,_ GTBB_Recessed&,TRUE&,_ GT_VisualInfo&,VInfo&,_ TAG_END& DrawBevelBoxA rp&,x,y,w,h,tags& IF t$<>""THEN ltext=LEN(t$) REM tx=x+(w-TextLength&(rp&,SADD(t$),ltext))2 REM ty=y-(PEEKW(rp&+TxHeight)-2)2+PEEKW(rp&+TxBaseline) REM SetABPenDrMd rp&,1,0,JAM2& REM Move rp&,tx+1,ty+1 REM Text rp&,SADD(t$),ltext REM SetABPenDrMd rp&,2,0,JAM1& REM Move rp&,tx,ty REM Text rp&,SADD(t$),ltext END IF END SUB Wenn ich die REMs entferne dann stürzt es ab TextLength() ab. Ich bin da wirklich am Stirnrunzeln... -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
18.03.2007, 16:40 Uhr Honitos Posts: 200 Nutzer |
@Ralf27: Was macht denn SADD() genau ? Funktionen wie TextLength() oder Text() muss man einen Zeiger auf den String übergeben; macht das SADD() ? Gruss, Sven [ - Antworten - Zitieren - Direktlink - ] |
18.03.2007, 16:45 Uhr thomas Posts: 7718 Nutzer |
@Ralf27:Zitat: graphics.library nicht geöffnet ? Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
18.03.2007, 17:18 Uhr Ralf27 Posts: 2779 Nutzer |
@thomas: Ähm, das ist jetzt eher peinlich, aber das wars. Ich hab das total übersehn. Danke -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
18.03.2007, 17:20 Uhr Ralf27 Posts: 2779 Nutzer |
@Honitos: Ja, SADD() übergibt einen Zeiger vom Text. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
19.03.2007, 08:09 Uhr Honitos Posts: 200 Nutzer |
@Ralf27: Hihi, das ist lustig, aber die häufigste Ursache: Mein Chef kam letztens mal ins Projektteam und fragte, ob wir hier nicht noch den einen oder anderen 19"-Monitor rumsthen hätten. Ich bejahte dies. Schnell griff er sich ein Gerät und verschwand ächzend mit dem Hinweis, sein Monitor sei heute morgen schwarz geblieben. Irgendwann im Laufe des Vormittags stand der Monitor wieder da (natürlich nicht auf dem Schrank, auf dem er vorher stand, sondern auf dem Schreibtisch eines Kollegen !!!). Eine vorsichtige Nachfrage ergab, dass offenbar nur das VGA-Kabel vom Rechner abgefallen war - der Computer steht halt unterm Tisch... ... Aber erstmal ne Runde Monitorschleppen ... [ - Antworten - Zitieren - Direktlink - ] |
19.03.2007, 22:00 Uhr DaxB Posts: 1422 Nutzer |
@Honitos: Ein bisschen Bewegung ist doch gesund, so lange man sich nicht verhebt. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > GadTools: aufgeräumter Aufbau | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |