AMIGA-RESISTANCE https://forum.amiga-resistance.info/ |
|
SCUI Lib Alpha 0.1 veröffentlich! https://forum.amiga-resistance.info/viewtopic.php?f=70&t=1779 |
Seite 1 von 2 |
Autor: | Clyde [ 28 Mai 2008, 07:33 ] |
Betreff des Beitrags: | SCUI Lib Alpha 0.1 veröffentlich! |
Endlich! Fabio hat die erste öffentliche Alpha seiner sehr beeindruckenden GUI-Bibliothek namens SCUI veröffentlicht! SCUI in Aktion könnt Ihr Euch z.B. auf youtube unter http://it.youtube.com/watch?v=8yR-JqAAP98 anschauen. Herunterladen könnt Ihr Euch die Quelltexte inklusive Tutorials unter http://sdb.freeforums.org/scui-lib-alph ... ed-t9.html Ihr müsst Euch dazu nicht in seinem Forum registrieren, aber er würde sich freuen, wenn Ihr es macht und bug reports und feature request liefert. Erschreckt nicht, der Quelltext ist riesig und sieht für Nicht-so-viel-Programmiere kompliziert aus. Ich steig auch nicht gleich 100%ig durch. Aber in einem Tutorial sieht man, wie man Text in eine Textbox (heißt in SCUI "Stringbox") eingibt, auf nen Button (oder Enter) klickt und dann den Text ausgeben/weiterverwenden kann. Scheint erstmal etwas einfacher zu gehen als bei JeGUI. Mal schauen ... Viel Spaß damit! Und bei Fragen, einfach hier oder bei Fabio posten. MdG |
Autor: | HelmutH [ 28 Mai 2008, 17:04 ] |
Betreff des Beitrags: | |
Supi, habs grad gelesen und direkt runtergeladen. Werd mir das auch gleich mal anschauen und sehn was er da schönes gebastelt hat. |
Autor: | malsehn [ 28 Mai 2008, 22:22 ] |
Betreff des Beitrags: | |
Man ich habe es getestet und boah super... da hat der Junge echt was erreicht... meine Sachen wirken eher wie Jespers Gui-Gruppen und das finde ich schon gut... Tja selbst Andreas will sich das am Wochenende mal näher ansehen und evtl wird er einiges in die Hol. API übernehmen.... Aber schon jetzt und mit den Tutorials sollte man schon einiges machen können. Gruß und malsehn |
Autor: | HelmutH [ 02 Jun 2008, 01:59 ] |
Betreff des Beitrags: | |
Hab mir das ganze jetzt angeschaut und muß sagen, wau ..., da hat er sich richtig ins Zeug gelegt Was mich jetzt aber voll erschreckt ist, wie schon von dir Clyde angesprochen, der Quelltext. Der ist ja denn doch ein wenig heftig, aber bei dem, was Fabio da eingebaut hat, aber auch klar. Nur hab ich da jetzt die Schwierigkeit, da den Quelltext zu finden, der genau so ein Eingabefeld produziert. Werd mich da demnächst mal in meinem etwas "größeren" Freizeitblock mit auseinander setzen und schaun, ob ich da fündig werde. |
Autor: | Clyde [ 02 Jun 2008, 07:44 ] |
Betreff des Beitrags: | |
Hi Helmut, habe Dir da mal was vorbereitet. Ist jetzt nicht schön, da größtenteils nur aus Fabios Demo rauskopiert, aber es geht hier jetzt erstmal um die grundlegenden Sachen, die Du brauchst. Sieht doch so gleich etwas freundlicher aus, oder? Code: Alles auswählen ; Stringbox Test @INCLUDE "ScuiLib.hws" @DISPLAY { Mode = "Windowed", Width = 800, Height = 600, Title = "Clydes StringBox Test", Color = #BLACK } SWidth = 800 SHeight = 600 Function StringBox1_Change() Local sbox = scui.Get("StringBox1") scui.Set("StatusLabel", { Text = { Content = { Values = { "Der Text der String Box wurde geändert und lautet: [b]" ..sbox.Value.. "[/b]" }, Lines = 1 }}}, 1) EndFunction Function buttonApply() Local sbox = scui.Get("StringBox1") scui.Set("StatusLabel", { Text = { Content = { Values = { "Folgenden Text übernommen: [b]" .. sbox.Value .. "[/b]" }, Lines = 1 }}}, 1) EndFunction scui.NewObject( #IFOCLASS_LABEL, "StatusLabel", { x = 10, y = 155 }, { x = SWidth - 20, y = 20 }, { Text = { Alignment = #TEXTALIGN_CENTER } }, { Values = { "Hallo Helmut! :-) Dies ist ein Label. Es enthält nur Text. Man muss erst Enter in der String Box drücken, bevor Button funktioniert. Dies ändert sich mit SCUI 0.2" }, Lines = 1 } ) scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox1", { x = 10, y = 310 }, { x = 600, y = 20 }, nil, { Values = { "Gib hier etwas ein ..." }, Lines = 1, InputType = #GETKEY_ALL, MaxLen = 255 }, { OnChange = StringBox1_Change } ) scui.NewObject( #IFOCLASS_BUTTON, "buttonApply", { x = 10, y = 240 }, { x = 200, y = 20 }, nil, { Values = { "Übernehmen" }, Lines = 1 }, { OnDown = buttonApply} ) Repeat WaitEvent Forever MdG |
Autor: | Clyde [ 03 Jun 2008, 15:23 ] |
Betreff des Beitrags: | |
Und hier noch ne kurze Erklärung: Code: Alles auswählen scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox1", ... { OnChange = StringBox1_Change }) Diese Methode ist wiederum weiter oben definiert: Code: Alles auswählen Function StringBox1_Change() Local sbox = scui.Get("StringBox1") scui.Set("StatusLabel", { Text = { Content = { Values = { "Der Text der String Box wurde geändert und lautet: [b]" ..sbox.Value.. "[/b]" }, Lines = 1 }}}, 1) EndFunction scui.Set() ist übrigens die "Gegenmethode" zu scui.Get(): Hiermit kannst Du Werte setzten, hier den Text (der in Values steckt) des Labels, welches nur dazu da ist, Text auszugeben. Ich hoffe, das hilft weiterhin! MdG |
Autor: | McFly [ 03 Jun 2008, 15:37 ] |
Betreff des Beitrags: | |
Hmm, heisst es ist jetzt fast problemlos möglich GUI's zu basteln? Wie werden denn, wenn ich eine GUI für ein CLI-Tool haben möchte, die Eingabeparameter übergeben? Hoffe die Frage ist nicht zu doof, bin halt kein Programmierer. Denn es gibt z.B. im OS4-Depot und auch im Aminet, jede Menge nützlicher Tools, aber alle ohne GUI. Und ich bin ein GUI-Freak Alles was keine GUI hat kommt fast nicht auf den Rechner |
Autor: | Clyde [ 03 Jun 2008, 15:47 ] | ||
Betreff des Beitrags: | |||
Corrrectolmundo!!! Heißt so viel wie: Ja! Nee, kein Problem. Naja, zunächst mal kommst Du immer über scui.Get("Instanzenname") an die benötigten Werte ran (also eingegebener Text der Textbox, Zustand einer Checkbox etc.). Danach kannst Du den Hollywood-Befehl Execute() (siehe Hilfe) Dein gewünschtes CLI-Prog mit den Parametern starten. Falls Du ein Beispiel brauchst, sag Bescheid ... Hoffe aber, ich habe mich halbwegs verständlich ausgedrückt MdG PS: Ich bin auch GUI-Freak, deswegen freue ich mich so über SCUI. Aber ich weiß auch die Mächtigkeit von CLI zu schätzen ... Ich mag also beides. |
Autor: | Clyde [ 03 Jun 2008, 16:58 ] |
Betreff des Beitrags: | SCUI Hello World |
Ok, hier mal schnell für McFly zusammengezimmert, wie Du mit Hilfe von SCUI aus Deiner damit "gebastelten" GUI ein CLI-Prog ausführst: Code: Alles auswählen ; SCUI Hello World @INCLUDE "ScuiLib.hws" @DISPLAY { Mode = "Windowed", Width = 800, Height = 600, Title = "Clydes SCUI Hello World", Color = #BLACK } SWidth = 800 SHeight = 600 Function StringBox1_Change() Local sbox = scui.Get("StringBox1") Execute("echo \"" ..sbox.Value.. "\"") ; hier wird der DOS-Befehl/jedes x-bliebige CLI-Programm ausgeführt mit dem in der Strinbox eingegebenen Parameter EndFunction Function buttonApply() Local sbox = scui.Get("StringBox1") scui.Set("StatusLabel", { Text = { Content = { Values = { "Folgenden Text übernommen: [b]" .. sbox.Value .. "[/b]" }, Lines = 1 }}}, 1) EndFunction scui.NewObject( #IFOCLASS_LABEL, "StatusLabel", { x = 10, y = 155 }, { x = SWidth - 20, y = 20 }, { Text = { Alignment = #TEXTALIGN_CENTER } }, { Values = { "Text" }, Lines = 1 } ) scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox1", { x = 10, y = 310 }, { x = 600, y = 20 }, nil, { Values = { "Gib hier etwas ein ..." }, Lines = 1, InputType = #GETKEY_ALL, MaxLen = 255 }, { OnChange = StringBox1_Change } ) scui.NewObject( #IFOCLASS_BUTTON, "buttonApply", { x = 10, y = 240 }, { x = 200, y = 20 }, nil, { Values = { "Übernehmen" }, Lines = 1 }, { OnDown = buttonApply} ) Repeat WaitEvent Forever Man beachte die Funktion StringBox1_Change(), die ich auch entsprechend kommentiert habe. MdG |
Autor: | HelmutH [ 03 Jun 2008, 19:04 ] | |
Betreff des Beitrags: | ||
Tach Clyde Klasse, da hast du mir einen großen gefallen mit getan. Ich tu mich immer schwer damit, aus so einem großen Quelltext da das richtige herraus zu finden. Danke, hoffe ich komm die Tage auch mal dazu es auszuprobieren. Wenn ich Fragen hab meld ich mich. |
Autor: | Clyde [ 03 Jun 2008, 19:15 ] |
Betreff des Beitrags: | |
Gern geschehen, Helmut! Um ehrlich zu sein: Ich tu mich auch schwer damit (mit fremden Quelltext), und das ist auch erstmal normal. Allerdings studiere ich ja in der Richtung (Medieninformatik) und möchte später auch gern programmieren. Von daher ist sowas eine schöne Herausforderung/Training. Und so verknüpfe ich etwas Hobby mit Beruf, da ich durch solche Sachen selbst viel lerne. Freue mich also über Fragen. Aber lass Dir Zeit! MdG |
Autor: | HelmutH [ 03 Jun 2008, 19:50 ] |
Betreff des Beitrags: | |
Das ist natürlich praktisch Clyde und für uns hier prima, da wir dadurch ja auch lernen und somit schneller auf Ergebnisse kommen. Na dann lass uns mal weiter trainieren. Ich hab dann ja auch keine Ruhe und hab es grad ausprobiert. zuerst meckert er die ScuiLib.hws an, die er nicht öffnen kann. Diese ins Verzeichniss gepackt, dann fehlt ihm die FilezLib.hws. Auch die dort reingepackt. Jetzt meckert er: FUNCTION ohne ENDFUNCTION an Datei:FilezLib.hws (aktuelle Zeile: -39) Der code von FilezLib.hws ist dieser: Code: Alles auswählen ; FILEZ LIBRARY ; ------------- Const #FILEZ_FIRSTAVAILABLEID = 501 Const #FILEZ_LASTAVAILABLEID = 999 Filez = { Id = {}, Files = {} } ; Initialization Local c For c = #FILEZ_FIRSTAVAILABLEID To #FILEZ_LASTAVAILABLEID Filez.id[c] = 0 Next Function Filez.SaveTable(table, filename, no_index) If Exists(filename) Then DeleteFile(filename) Local id Local id = Filez.Open(filename, #MODE_READWRITE) Filez.SaveSubTable(table, id, no_index) Filez.Close(filename) EndFunction Function Filez.LoadTable(table, filename) If Not(Exists(filename)) Then Return Local id Local id = Filez.Open(filename, #MODE_READ) Filez.LoadSubTable(table, id) Filez.Close(filename) Return(table) EndFunction Function Filez.SaveSubTable(table, fileid, no_index) Local a, b a, b = NextItem(table) While GetType(a) <> #NIL If GetType(b) = #TABLE WriteLine(fileid, a) WriteLine(fileid, "!!TABLE!!") Filez.SaveSubTable(b, fileid) WriteLine(fileid, "") WriteLine(fileid, "!!ENDTABLE!!") ElseIf GetType(b) = #FUNCTION ; --- Else If GetType(no_index) = #NIL Then WriteLine(fileid, a) If GetType(b) = #STRING WriteLine(fileid, "[STRING]" .. b) Else WriteLine(fileid, "[NUMBER]" .. b) EndIf EndIf a, b = NextItem(table, a) Wend EndFunction Function Filez.LoadSubTable(table, fileid) If Eof(fileid) Then Return Local a Local b = "" While Not(Eof(fileid)) And b <> "!!ENDTABLE!!" a = ReadLine(fileid) b = ReadLine(fileid) If b = "!!TABLE!!" table[a] = {} Filez.LoadSubTable(table[a], fileid) ElseIf b <> "!!ENDTABLE!!" If LeftStr(b, 8) = "[STRING]" b = RightStr(b, StrLen(b) - 8) table[a] = b Else bn = Val(RightStr(b, StrLen(b) - 8)) table[a] = bn EndIf ;table[a] = b EndIf Wend EndFunction Function Filez.GetID() Local found = -1 Local c For c = #FILEZ_FIRSTAVAILABLEID To #FILEZ_LASTAVAILABLEID If Filez.id[c] = 0 found = c Filez.id[c] = 1 Break EndIf Next Return(found) EndFunction Function Filez.FreeID(id) Filez.id[id] = 0 EndFunction Function Filez.Open(filename, mode) Local id = Filez.GetID() If id = -1 Then Return OpenFile(id, filename, mode) Filez.Files[id] = filename Return(id) EndFunction Function Filez.Close(filename) Local id id = Filez.FindID(filename) If id = -1 Then Return Filez.FreeID(id) Filez.Files[id] = nil CloseFile(id) EndFunction Function Filez.FindID(filename) Local c Local found = -1 For c = #FILEZ_FIRSTAVAILABLEID To #FILEZ_LASTAVAILABLEID If Filez.id[c] = 1 If Filez.Files[c] = filename found = c Break EndIf EndIf Next Return(found) EndFunction Function Filez.FilenameSuffix(filename, suffix, force) /* --+--------------------------------------------------------------------------- --| Check if the given <filename> has the specified <suffix>, and if <force> --| is not <nil> add to the filename the given <suffix>. --| INPUT: filename --> File name to process --| suffix --> File suffix to check/add --| force --> Suffix forcing flag --| OUTPUT: check --> "Yes" if <suffix> is present otherwise "No". --| filename --> Processed file name --| error --> Error/Warning description --+--------------------------------------------------------------------------- */ If helpers.IsNil(filename) = 1 ; Illegal file name Return(nil, nil, "FilenameSuffix(): Cannot proceed, <filename> is <nil>.") EndIf sffxlen = StrLen(suffix) If sffxlen < 2 ; Illegal suffix Return(nil, nil, "FilenameSuffix(): Cannot proceed, <suffix> is <nil>.") EndIf ; Check <filename> suffix sffix = RightStr(filename, sffxlen) If sffix <> suffix ; Provided suffix not present If helpers.IsNil(force) = 0 ; Adding the provided suffix filename = filename .. suffix Return("Yes", filename, nil) Else Return("No", filename, nil) EndIf Else Return("Yes", filename, nil) EndIf EndFunction Function Filez.WriteHString(fileid, text) ; Write a string with an header of its lenght If helpers.IsNil(text) = 1 Or helpers.IsNil(fileid) = 1 Then Return Local text_len = StrLen(text) WriteShort(fileid, text_len) WriteString(fileid, text, text_len) EndFunction Auch die weiteren Functionen werden mit EndFunction abgeschlossen, was ist das nu wieder |
Autor: | Clyde [ 03 Jun 2008, 20:27 ] |
Betreff des Beitrags: | |
Hehe, diese "Ungeduld" kenne ich auch. Nee, nee, an der Datei ist alles ok. Da ist die Fehlermeldung irreführend. Du musst folgende Dateien im selben Verzeichnis wie Dein HW-Script: ScuiLib.hws FilezLib.hws Defaults_Standard.hws Ich vermute, Du hast die letztgenannte Datei vergessen? Welches HW-Script hast Du ausgeführt? Meins von weiter oben? Dennoch, nicht verzagen, Helmut! |
Autor: | McFly [ 04 Jun 2008, 11:25 ] | |
Betreff des Beitrags: | ||
Merci für die Antwort und das Beispiel. Ich glaub ich muss mir Hollywood auch mal unter WinUAE installieren, damit ich da das ein oder andere mal anschauen kann. |
Autor: | HelmutH [ 06 Jun 2008, 19:09 ] | |||
Betreff des Beitrags: | ||||
Ja und wenn man jemanden hat der mitmacht muss man die Gunst der Stunde nutzen. Hast mich erwischt, hatte die Defaults_Standard.hws vergessen. Hab die direkt in das Designer script von mir eingbaut. Sollte da ja auch laufen, weil der ja da auch die Möglichkeit anbietet Hollywood scripte einzufügen. Mach ich nicht Brauch einfach mehr Zeit zum testen und probieren. Hat einer welche über |
Seite 1 von 2 | Alle Zeiten sind UTC |
Powered by phpBB® Forum Software © phpBB Limited Deutsche Übersetzung durch phpBB.de |