amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > WB Refresh [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

05.11.2006, 14:43 Uhr

Ralf27
Posts: 2779
Nutzer
Wie sag ich der WB, das sie sich total neu aufbauen soll? Also, welchen Befehl müßte ich dazu bemühen, bzw. ich vermute einfach mal, das es einen gibt. Oder ist das ein größerer Aufwand? Danke im vorraus.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

05.11.2006, 15:30 Uhr

thomas
Posts: 7716
Nutzer

Im Menü: Hilfsmittel -> Workbench zurücksetzen.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

05.11.2006, 18:42 Uhr

Ralf27
Posts: 2779
Nutzer
Als User, schon klar. :D
Aber wie mach ich das, wenn ein Programm diesen Refresh auslösen soll?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

05.11.2006, 20:29 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Das geht nicht, da die WorkBench auch nur eine Applikation wie so viele andere auch ist. Es gibt keinen API Befehl dafür. Seit OS3.5 hat die WB aber einen Arexx Port, ggf gibts ein Arexx Kommando dafür aber das weiß ich nicht.

[ - Antworten - Zitieren - Direktlink - ]

05.11.2006, 23:26 Uhr

Holger
Posts: 8116
Nutzer
In einer ordentlich programmierten Anwendung sollte es keinerlei Notwendigkeit geben, einen Totalrefresh der Workbench auszulösen.
Den zugehörigen Menüpunkt habe ich auch schon seit Jahren nicht mehr gebraucht, und Programme, die zur Benutzung dieses Menüpunktes zwingen, fliegen auch ziemlich schnell wieder von der Platte.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

06.11.2006, 04:28 Uhr

bubblebobble
Posts: 707
Nutzer
Es gibt ziemlich sicher einen AREXX Befehl dafür.
Aber wofür brauchst du das ?
Ich bin sicher, es gibt eine andere Lösung.

--
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 - ]

06.11.2006, 20:38 Uhr

Ralf27
Posts: 2779
Nutzer
Ok, ich muß da etwas ausholen und erklären was ich eigentlich vor habe:

Vor einigen Wochen habe ich dank Euch "gelernt" ( :D ), wie man via TCP: Daten aus dem Internet besorgen kann. Kombiniert mit der dank Euch erlernten Datatypeskenntnissen habe ich also binnen 5 (oder 10 Minuten |-) ) ein Programm zusammen"geklickt" das einfach sowas wie ein "Picture aus dem Internetanzeigprogramm" ist. Also sowas wie die vielen anderen im Aminet. Und da dachte ich mir, so ein schnödes anzeigen wie eigenem Screen oder Fenster auf der WB ist zwar recht einfach, aber wie geht es denn, wenn ich das ganze als Hintergrund in die Workbench einbauen möchte? Und genau da kommt jetzt die Sache mit dem Refresh rein.

Ich hab mal Spaßhalber einfach mal das Bild direkt(ok, böse! :D ) mit BltBitmapRastport in die Workbenchbitmap geblittet um zu sehn wie es aussieht. Logischerweise hat es da alles überbügelt.

Der Ansatz denn ich aber verfolgen möchte:
Man kann ja mit den Prefs die WB dazu veranlassen ein Bild(oder Pattern, ist ja egal) in denn Hintergrund zu legen und wenn jezt genau dieses Bild benutzt wird und dann eingebaut wird wenn es da ist, bzw. wenn ich dann die WB dazu veranlassen könnte das Bild einzubauen... versteht ihr was ich vor habe?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

06.11.2006, 21:04 Uhr

Holger
Posts: 8116
Nutzer
@Ralf27:
Wenn Du eine neue Einstellungsdatei nach ENV:sys/, also in Deinem Fall "Env:sys/WBPattern.prefs" schreibst, wird automatisch ein Refresh durchgeführt.
Dafür sorgt das Hintergrundprogramm IPrefs.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

06.11.2006, 21:50 Uhr

Ralf27
Posts: 2779
Nutzer
@Holger:

Ah, danke, sehr gut! Das gefällt mir! Hab mir eben die Prefs mit einem HexEditor angesehn. Da bleibt mir eigentlich nur noch die Frage, wie diese Datei aufgebaut ist, bzw. wo ich diesbezüglich Infos her bekommen könnte.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 00:35 Uhr

NoImag
Posts: 1050
Nutzer
@Ralf27:
Theoretisch stehen die Infos in den RKRMs (leider gab es wbpattern.prefs bei OS2.0 noch nicht) und in wbpattern.h. Ich habe gerade mal nachgesehen und dabei festgestellt, dass die Informationen unvollständig sind. Jedenfalls erklären sie nicht den Inhalt meiner wbpattern.prefs. Der grundsätzliche Aufbau ist wie folgt: IFF mit dem Chunk PRHD (6 Bytes, alle immer null) und drei PTRN Chunks. Der Chunk ist im Prinzip in wbpattern.h beschrieben, aber leider fehlt die Information, wie in diesem Chunk der Dateiname für ein Hintergrundbild gespeichert wird. Ich würde mal versuchen, einfach die Bytes bis zum Dateinamen zu übernehmen und nur jeweils den Dateinamen zu ersetzen. Natürlich darfst Du nicht vergessen, die Längeninformation für den Chunk anzupassen.

Tschüß


[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 10:57 Uhr

thomas
Posts: 7716
Nutzer
@NoImag:

Ich finde deinen Ansatz ziemlich verantwortungslos. Zwar steht nirgends explizit, wo der Dateiname gespeichert wird, aber es ist doch ziemlich offensichtlich.

Zitat:
Ich würde mal versuchen, einfach die Bytes bis zum Dateinamen zu übernehmen und nur jeweils den Dateinamen zu ersetzen.

Das funktioniert nur, wenn vorher bereits ein Bild (also ein Dateiname) benutzt wurde und wenn der neue Dateiname genauso lang oder kürzer ist als der alte. Wie gesagt, verantwortungslos.

Es ist ziemlich offensichtlich, daß in wbp_DataLength die Länge der folgenden Daten steht und dahinter dann die eigentlichen Daten kommen, entweder ein Pattern oder eben ein Dateiname, je nachdem, was in wbp_Flags steht.

In wbp_Flags stehen auch die anderen Einstellungen wie Qualität, Position und Skalierung.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 12:27 Uhr

NoImag
Posts: 1050
Nutzer
@thomas:

Was Du für offensichtlich hälst ist nur dummerweise falsch. Glaubst Du, ich habe das nicht überprüft, bevor ich meinen Vorschlag gemacht habe?

Tschüß


[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 12:35 Uhr

thomas
Posts: 7716
Nutzer
@NoImag:

Wie hast du das denn überprüft ? Es funktioniet z.B. genau so in PicShow bei "Als Hintergrundbild speichern". Ich würde das nicht schreiben, wenn es falsch wäre.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 15:12 Uhr

crack
Posts: 1181
[Ex-Mitglied]
Viele Programme bieten doch die Option, beim starten die Workbench zu schließen (CloseWB) und beim beenden wird sie wieder freigegeben.

Das dauert minimal länger, führt aber zum gewünschten Erfolg.
--
Heimatseite: http://www.a1k.org

[ Dieser Beitrag wurde von crack am 05.03.2010 um 20:14 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 21:48 Uhr

Ralf27
Posts: 2779
Nutzer
Ok, also muß ich jetzt irgendwie die wbpattern.prefs "aktualisieren". Ich dachte zuerst halt die prefs lesen, löschen und dann wieder schreiben. Gibt es aber noch einen anderen Weg, damit IPrefs die WB wieder neu aufbaut? Der Weg über die Datei ändern ist ok. Ich möchte halt das ganze mit minimalsten Aufwand (der Inhalt der Datei bleibt gleich, nur die Bilddatei ändert sich(nicht der Name!)) machen.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 22:42 Uhr

Ralf27
Posts: 2779
Nutzer
zur Zeit läuft es mit einfacher "Dateikopiererei". Aber es geht doch bestimmt noch besser. :D Vorschläge? :D

An dieser Stelle nochmal ein dickes Dankeschön an Euch da drausen. Ihr glaubt ja gar nicht wie sehr Ihr mir bei meinen Problemchen helft! Danke! :look:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 22:42 Uhr

thomas
Posts: 7716
Nutzer

Du brauchst die Datei nicht löschen. Ein einfaches SetDate bzw. dos.library/SetFileDate() reicht vollkommen.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

07.11.2006, 23:47 Uhr

NoImag
Posts: 1050
Nutzer
@thomas:

Ich habe mir den Inhalt von WBPattern.prefs angeschaut und mit wbpattern.h verglichen. Ich habe es gerade nochmal gemacht und dabei festgestellt, dass ich gestern abend um 4 Bytes verrutscht bin. Du hattest also recht. War wohl etwas spät.

Tschüß



[ Dieser Beitrag wurde von NoImag am 07.11.2006 um 23:48 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 11:09 Uhr

Ralf27
Posts: 2779
Nutzer
Hm, leider gibt es doch noch ein kleines Problem:

Wenn jetzt WBPattern ein Bild ausgewählt hat für den Hintergrund, dann zeigt er auch diesen an. Logischerweise kann ich dieses Bild nicht löschen, weil es ja im gebrauch ist. Also wollte ich einfach nur das Bild umbennenen und das neue Bild unter dem alten Namen speichern. Soweit meine Theorie. Aber "leider" ist es nun so, das WBPattern einfach das umbenannte Bild weiter verwendet und das Bild, das WBPattern nach dem "WBRefresh" benutzen sollte einfach links liegen läst. Ok, ist eigentlich eine gute Eigenschaft des Amigas, das er auch ein umbenanntes Objekt, das er gerade benutzt, auch wieder "findet", allerdings bin ich mir jetzt nicht klar drüber, wie ich WBPattern dazu bringen soll auch wirklich das neue zu benutzen.

Oder muß ich jetzt immer die WBPattern.prefs umschreiben bei einem Refresh, wenn ich das neue Bild haben möchte? :dance3:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 14:20 Uhr

thomas
Posts: 7716
Nutzer
Zitat:
Original von Ralf27:
Oder muß ich jetzt immer die WBPattern.prefs umschreiben bei einem Refresh, wenn ich das neue Bild haben möchte? :dance3:



Ähm, ja. Ich habe gerade mal in den Quelltext von PicShow geschaut. Ich bin da wohl auch über dieses Problem gestolpert. Jedenfalls setze ich die WBPattern.prefs zuerst auf Default (also ohne Bild) und warte eine halbe Sekunde, dann ist die Bilddatei frei und ich kann sie überschreiben. Anschließend speichere ich wieder ein WBPattern.prefs mit meinem Dateinamen.

Die Default-WBPattern hat wbp_Flags = WBPF_PATTERN und wbp_DataLength = 96, alles andere auf 0 (außer wbp_Which natürlich).

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 14:32 Uhr

Ralf27
Posts: 2779
Nutzer
@Thomas:

Ok, aber leider hab ich dennoch als noch nicht richtig verstanden wie diese prefs-Datei aufgebaut ist. Die ersten Bytes sind mir klar, aber der Rest, der eigentlich klar sein sollte, versteh ich echt nicht.

Der generelle Aufbau eines IFF-Files ist mir klar, aber denn Rest bekomme ich auch nicht mit denn Includes von GCC auf die Reihe. Hab mir das Ding auch schon gestern angesehn, aber leider nicht so richtig, bzw. leider gar nicht verstanden. 8o

Das dürfte hoffentlich die letzte Hürde sein.
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 12.11.2006 um 14:32 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 16:10 Uhr

thomas
Posts: 7716
Nutzer
code:
chunk=FORM size=342 type=PREF
chunk=PRHD size=6
  Version  = 0
  Type     = 0
  Flags    = 0
chunk=PTRN size=59
  Reserved   = 0 0 0 0
  Which      = WBP_ROOT
  Flags      = WBPF_DITHER_BAD WBPF_PRECISION_ICON WBPF_PLACEMENT_SCALE
  Revision   = 0
  Depth      = 0
  DataLength = 35
000000: 73 79 73 3a 70 72 65 66 73 2f 70 72 65 73 65 74  sys:prefs/preset
000010: 73 2f 50 69 63 53 68 6f 77 5f 57 61 6c 6c 70 61  s/PicShow_Wallpa
000020: 70 65 72                                         per             
chunk=PTRN size=120
  Reserved   = 0 0 0 0
  Which      = WBP_DRAWER
  Flags      = WBPF_PATTERN WBPF_DITHER_BEST WBPF_PRECISION_EXACT WBPF_PLACEMENT_TILE
  Revision   = 0
  Depth      = 0
  DataLength = 96
000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
chunk=PTRN size=120
  Reserved   = 0 0 0 0
  Which      = WBP_SCREEN
  Flags      = WBPF_PATTERN WBPF_DITHER_DEF WBPF_PRECISION_DEF WBPF_PLACEMENT_TILE
  Revision   = 0
  Depth      = 3
  DataLength = 96
000000: 01 80 02 70 02 18 32 08 4c 30 40 90 42 2e 80 95  ...p..2.L0@.B...
000010: 84 2b 71 56 0c aa 09 76 1a cc 15 40 0e c0 01 80  .+qV.ª.v.Ì.@.À..
000020: 01 80 02 70 02 18 32 08 4c 30 40 90 42 2e 80 95  ...p..2.L0@.B...
000030: 84 2b 71 56 0c aa 09 76 1a cc 15 40 0e c0 01 80  .+qV.ª.v.Ì.@.À..
000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................


Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 16:29 Uhr

Ralf27
Posts: 2779
Nutzer
@Thomas:
So sieht das schon viel besser aus, danke!

Aber dennoch, ein paar Kleinigkeiten sind da als noch:
Da oben steht z.b. DataLength=96 und dann folgt "Dummycode", wo eigentlich weiter oben noch ein Dateiname steht. Das können doch keine Platzhalter sein, oder was soll das darstellen? Der Aufbau der IFF-Struktur benötigt sowas ja eigentlich gar nicht. Das verwirrt mich jetzt doch etwas. Moment... Pattern? Ups, stimmt ja, das geht ja auch mit WBPattern. ... I-) :D Ah, so langsam steig ich durch... (wird ja auch mal Zeit... I-) :smokin: )

Noch ne Kleinigkeit: Bei den Patterns ist einmal eine Farbtiefe von 0 und das andere eine Farbtiefe von 3 und das, obwohl die Datenlänge immer 96 Bytes hat?

Müssen alle drei Blöcke (WBP_ROOT, WBP_DRAWER, WBP_SCREEN) immer angegeben werden, obwohl da nix gemacht wird, also kein Pattern und kein Bild? Ich vermute schon, wie das da oben so aussieht...

Kurz angemerkt:
Ich gehe aber auch recht in der Annahme, das die Blöcke immer auf "gerade Adressen" fallen müssen, also wie bei IFF-ILBM Dummybytes rein müssen?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 18:06 Uhr

thomas
Posts: 7716
Nutzer
Zitat:
Bei den Patterns ist einmal eine Farbtiefe von 0 und das andere eine Farbtiefe von 3 und das, obwohl die Datenlänge immer 96 Bytes hat?

0 ist keine gültige Farbtiefe, deshalb wird wohl die maximale Tiefe von 3 angenommen. Bei Tiefe 1, 2 und 3 ist die Anzahl Bytes immer Depth * 32.

Zitat:
Müssen alle drei Blöcke (WBP_ROOT, WBP_DRAWER, WBP_SCREEN) immer angegeben werden, obwohl da nix gemacht wird, also kein Pattern und kein Bild? Ich vermute schon, wie das da oben so aussieht...

Du solltest die vorhandene Datei laden und nur den Block für den Workbench-Hintergrund ändern. Sonst machst du dem Benutzer die Einstellungen für Fenster und Bildschirm kaputt.

Zitat:
Ich gehe aber auch recht in der Annahme, das die Blöcke immer auf "gerade Adressen" fallen müssen, also wie bei IFF-ILBM Dummybytes rein müssen?

Ja, das ist eine Vorgabe von IFF und hat nichts mit ILBM o.a. zu tun.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 19:29 Uhr

Ralf27
Posts: 2779
Nutzer
Ah, es läuft. Wunderbar. Danke!

Jetzt hab ich sogar noch mehr Möglichkeiten als ich eigentlich am Anfang eingeplant hatte. Somit könnte ich die Sache jetzt doch noch etwas flexsibler machen. :)
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

12.11.2006, 21:11 Uhr

Ralf27
Posts: 2779
Nutzer
Hab eben eine "Vorabversion" meines Programmes auf meiner Homepage hochgeladen. Ich werd aber da noch einiges daran schrauben, aber es läuft schon soweit. :D
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > WB Refresh [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.