Rund um die Arbeitsfläche

praetor

Mitglied
Registriert
24.10.04
Beiträge
2.157
Ort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
Hallo,
zwei Fragen hab ich:

1. Wie kann ich per Script die Arbeitsfläche leeren, oder zumindest die Historie löschen?
Hintergrund der Frage:
  • Auf der Arbeitsfläche ist ein Bild geladen, es wurde bearbeitet
  • jetzt lade ich mit FF_LoadImage (Bild), FF_Reload ein anderes Bild (werden die beiden Befehle eigentlich immer gemeinsam benötigt?)
  • dabei bleibt - unerwünschterweise - die Berabeitungshistorie des ersten Bildes erhalten
  • dies soll gelöscht werden (Wenn es nicht gehen sollte, gibt's einen workaround?)

2. Wie lässt sich der Herkunftspfad des auf der Arbeitsfläche geladenen Bildes ermitteln, wenn zwischenzeitlich das Computerverzeichnis verändert wurde?
Hintergrund der Frage:
  • im Fall 1. soll das bearbeitet Bild zunächst abgespeichert werden
  • dazu wird dessen Ausgangspfad benötigt, um FF_MultiSave damit aufrufen zu können
Recherche in Anleitung und Forum war leider nicht erfolgreich.
Danke & ...
 
Zuletzt bearbeitet:
AW: Rund um die Arbeitsfläche

Mmm, hab ich die Frage irgendwie unglücklich formuliert oder gibt's tatsächlich keine Lösungen? ???
 
AW: Rund um die Arbeitsfläche

Mmm, hab ich die Frage irgendwie unglücklich formuliert oder gibt's tatsächlich keine Lösungen? ???
Vielleicht sind doch deutlich weniger Skripter mit genug Verständnis für die Tiefen der Bearbeitung unterwegs, als man denkt. Ich verstehe zum Beispiel leider nur Bahnhof, weshalb ich dann doch eher 's Maul halten muß...
 
AW: Rund um die Arbeitsfläche

1. Wie kann ich per Script die Arbeitsfläche leeren, oder zumindest die Historie löschen?
Keine Ahnung.

2. Wie lässt sich der Herkunftspfad des auf der Arbeitsfläche geladenen Bildes ermitteln, wenn zwischenzeitlich das Computerverzeichnis verändert wurde?
Schon mit FF_GetImageName(-1) und FF_GetImagePath() probiert?
Was ist FF_MultiSave? das kenne ich bisher noch nicht

Edit:
FF_MultiSave, ah! gefunden, der Speichern unter Dialog....
 
AW: Rund um die Arbeitsfläche

Bei mir liefert

Code:
var orgPath =FF_GetImagePath();  // Pfad bei Scriptstart merken

...
runwuseln
..
FF_MultiSave(orgPath);


das gewünschte

Und..
Code:
FF_MultiSave(FF_GetImageName(-1));
Klappt auch wenn zwischenzeitlich, also vor Sart des Scriptes, der Pfad des Computerverzeichnisses umgestellt wurde.
Hat den Vorteil das auch der Orginalname vorgeschlagen wird. (mit Anhang falls aktiv)
 
AW: Rund um die Arbeitsfläche

[*]dabei bleibt - unerwünschterweise - die Berabeitungshistorie des ersten Bildes erhalten

Mit einer Lösung kann ich leider nicht dienen, aber ich würde gerne wissen wollen, wie Du im Scripting die Bearbeitungshistorie erhälst. Da dürfte doch außer *Script ausgeführt* nichts drin stehen, oder?

PS: Hat mit Setdirty nichts zu tun?

VG
Walter
 
AW: Rund um die Arbeitsfläche

Hallo,

hab's heute erst gesehen. Wenig Erfahrung auf dem Desktop machen ein Übriges. Habe mich meist mit Dateioperationen beschäftigt.

Hm, Arbeitsfläche leeren könnte mit WshShell.SendKeys("^{F4}") gehen, wobei
Set WshShell = WScript.CreateObject("WScript.Shell")

Kann aber nur funktionieren, wenn FF sicher den Fokus hat.(Nicht getestet)

Zum History löschen (FF_HistoryClear?) oder schreiben (FF_HistoryWrite/FF_HistoryAppend?) gibt es keine Funktionen. Ein Pendant zu FF_GetHistory ist mir auch nicht bekannt. Wurde auch schon gewünscht.

Ist über Einstellungen "Ausgewählte Vorschau sofort laden" aktiv, läßt sich ein neues Bild über FF_SelectImage auf die Arbeitsfläche sichtbar laden. Ob es auch programmtechnisch zur Verfügung steht, habe ich noch nicht getestet. Die History dürfte dann gelöscht sein.

Mehrere Bilder über FF_SelectImage zu markieren geht leider nicht. Eine verlorene Markierung kann man also nicht wiederherstellen.
 
AW: Rund um die Arbeitsfläche

Hallo,

also zuerst mal DANKE an alle Tippgeber! :)
FF_MultiSave(FF_GetImageName(-1));
Das hat mich auf die richtige Fährte gebracht. Bei mir hat Deine Lösung nämlich zunächst nicht funktioniert. Grund: Ich habe in einen Dialog ein Bild mit
Code:
FF_LoadImage "Bilddatei"
FF_SetControl "Metadaten","Bild",0
geladen und mir damit sozusagen den internen Bildzeiger verbogen. Geändert in
Code:
FF_SetControl "Metadaten","Bild","Bilddatei"
funktioniert es dann auch mit FF_MultiSave(FF_GetImageName(-1)) :D

würde gerne wissen wollen, wie Du im Scripting die Bearbeitungshistorie erhälst. Da dürfte doch außer *Script ausgeführt* nichts drin stehen, oder?
Ich mach da nix. Es ist einfach so, dass die Historie des alten Bildes stehen bleibt, wenn mit
Code:
FF_LoadImage (Bilddatei)
FF_Reload
ein neues Bild auf die Arbeitsfläche geladen wird.

PS: Hat mit Setdirty nichts zu tun?
Nö, irgendwie nicht. Der Funktion zeigt bei mir sowieso keine Wirkung. Jedenfalls hat sie keinen Einfluss auf die Historie.

Arbeitsfläche leeren könnte mit WshShell.SendKeys("^{F4}") gehen, wobei Set WshShell = WScript.CreateObject("WScript.Shell")
Kann aber nur funktionieren, wenn FF sicher den Fokus hat.(Nicht getestet)
Geht prinzipiell, allerdings bei mir leicht abgewandelt mit
Code:
Set WshShell =  CreateObject("WScript.Shell")
'WshShell.SendKeys("^{F4}")
Aber das Fokus ist in der Tat das Problem, da ich ja einen Dialog auf habe. SendKey wird dann erst berücksichtigt, wenn der Dialog geschlossen ist und erwischt damit das falsche Bild.

Verbesserungsvorschlag: Es wäre praktisch, wenn FF_SetHistory mit eingebaut würde.

Ist über Einstellungen "Ausgewählte Vorschau sofort laden" aktiv, läßt sich ein neues Bild über FF_SelectImage auf die Arbeitsfläche sichtbar laden
Das werd ich noch ausprobieren.
 
AW: Rund um die Arbeitsfläche

Hallo,
muss da noch mal nachhaken:

Wieso führt
Code:
FF_LoadImage ("d:\# Originale\Foto\#_2010\2010-09-09 Amerika Lunzenau\P1010539.JPG")
FF_Reload
schon dazu, dass das Bild, das damit auf die Arbeitsfläche geladen wurde, bereits als bearbeitet gilt?
Will man es danach schließen, kommt:
100924.jpg


Und wieso gelingt es mir dann nicht, den Status des Bildes mit
Code:
FF_setDirty(false)
ändern?
???
 
AW: Rund um die Arbeitsfläche

FF_Reload setzt lediglich ein Flag, ausgeführt wird es erst am Ende des Skriptes und dabei wird auch Dirty gesetzt.
 
AW: Rund um die Arbeitsfläche

In Ordnung, das erklärt aber nicht, warum ein Bild nach Beendigung dieses Scripts
Code:
'FFSubmenu=Test
'FFName=Test1
FF_LoadImage ("d:\# Originale\Foto\#_2010\2010-09-09 Amerika Lunzenau\P1010539.JPG")
FF_Reload
FF_setDirty(false)
noch immer den Status "bearbeitet" hat (Es bringt auch nichts, Reload und SetDirty zu tauschen).

Und warum ein Bild, dass per Doppelklick von der Computeransicht aus auf die Arbeitsfläche geladen wird, den Status "unbearbeitet" bekommt, ein Bild, das per Script dort hin geladen wird, aber nicht, will mir nicht einleuchten. In beiden Fällen ist das Bild ja unverändert.
 
AW: Rund um die Arbeitsfläche

Wie bereits gesagt: FF_Reload heisst nichts anderes als: Das im Skripting veränderte Bild soll auf die Arbeitsfläche geladen werden.
 
AW: Rund um die Arbeitsfläche

Dann macht FF_SetDirty(false) in diesem Kontext gar keinen Sinn, weil FF_Reload den Status immer auf true setzt.

Ich hab versucht, das Problem mit drei Scripten zu umgehen:
Script 1 - ruft zuerst Script 2 und danach Script 3 auf
Code:
'FFSubmenu=Exif
'FFName=MetaInfo
FF_CallScript (FF_GetScriptPath & "\bildaufruf.vbs")
FF_CallScript (FF_GetScriptPath & "\bildstatus.vbs")
Script 2
Code:
'FFSubmenu=Exif
'FFName=Bildaufruf
FF_LoadImage ("d:\# Originale\Foto\te\testbilder\P1010436.JPG")
FF_Reload
Script 3
Code:
'FFSubmenu=Exif
'FFName=Bildstatus
' setzt den Staus des Bildes auf der Arbeitsfläche auf "unbearbeitet"
FF_setDirty(false)
Die Idee dahinter: Script 2 wird zwischenzeitlich beendet, sodass die Arbeitsfläche über Reload aktualisiert wird. Erst jetzt greift Script 3 und setzt den korrekten Status.
Bringt leider auch nichts, weil gar kein Bild geladen wird. Offensichtlich bleibt FF-Reload - warum auch immer?! - ohne Wirkung, wenn es mittelbar aus einem andern Script heraus aufgerufen wird.

Eine saubere Lösung wäre es, wenn man FF-Reload über einen Parameter mitgeben könnte, ob Dirty auf true gesetzt werden soll, oder nicht.
 
AW: Rund um die Arbeitsfläche

Ich glaub, Du bist hier verkehrt ;D
 
Zurück
Oben