• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Linux: Icon für CacheWolf gesucht...

MiK

Geoguru
Wortfetzen schrieb:
Die Frage die sich mir eher stellt:
gibt es außer diesem
Code:
FileBase.getProgramDirectory()
noch andere Stellen, bei denen CW vorraussetzt, daß die Daten (pref.xml etc..) im Install-Verzeichnis liegen?
Natürlich gibt es noch viele Dateien, die dort liegen müssen. Die Frage ist, auf welche muss man schreibend zugreifen können. Spontan fällt mir da nur die Datei "language" ein, in der festgelegt wird, welche Sprache verwendet wird. Warum ist das eigentlich seperat gelöst und nicht Teil der pref.xml?
 

Wortfetzen

Geocacher
MiK schrieb:
Natürlich gibt es noch viele Dateien, die dort liegen müssen. Die Frage ist, auf welche muss man schreibend zugreifen können. Spontan fällt mir da nur die Datei "language" ein, in der festgelegt wird, welche Sprache verwendet wird.
Sorry, exakt so meinte ich es auch, war falsch ausgedrückt.

Es geht natürlich nur um die vom User änderbaren Dateien. Also v.a. um die pref.xml - denn wo der Rest liegt (das Datenverzeichnis etc.) sollte sich ja aus der pref.xml ergeben.

Wäre nur noch die Frage nach der Datei language.
 

pfeffer

Geowizard
Wortfetzen schrieb:
Man könnte die Änderung zum Zugriff aufs Home-Verzeichnis ( System.getProperties("user.home") ) auch als debian-patch machen. Dann würde NUR für die Erstellung des deb-Archivs lokal diese Änderung vorgenommen (nicht im SVN).
Wir müssten vorallem testen, ob das auf allen Platformen funktioniert.
Wenn es funktioniert, dann bin ich dafür, das allgemein so umzustellen.
Dabei könnte man es soch machen, dass CacheWolf zuerst nach einer pref.xml im eigenen Programmverzeichnis sucht und wenn die nicht existiert in $HOME sucht. Auf diese Weise kann MiK seine SD-Karte mit CacheWolf überall reinstecken und die Linuxer (und Vista-User?) können die Einstellungen an einem Ort speichern, an dem die Nutzer auch Schreibrechte haben. Die Frage ist dann noch zu klären, wo CacheWolf eine pref.xml erzeugen soll, wenn an beiden Orten noch keine existiert. Den Benutzer fragen?
Ein Kommandozeilenparameter gehört sich aber auf jeden Fall auch.

Die Frage, die sich mir eher stellt:
gibt es außer diesem
Wortfetzen schrieb:
Code:
FileBase.getProgramDirectory()
noch andere Stellen, bei denen CW vorraussetzt, daß die Daten (pref.xml etc..) im Install-Verzeichnis liegen?
Ich denke, das sind wenige Stellen.
Mich würde auch interessieren, warum das unabhängig von den pref.xml gelöst wurde - ich habe eine Idee: damit die Dialoge davon schon lokalisiert ausgegeben werden können ("Bitte Datenverzeichnis wählen"...).

Gruß,
Pfeffer.
 

MiK

Geoguru
pfeffer schrieb:
Mich würde auch interessieren, warum das unabhängig von den pref.xml gelöst wurde - ich habe eine Idee: damit die Dialoge davon schon lokalisiert ausgegeben werden können ("Bitte Datenverzeichnis wählen"...).
An dieser Stelle ist aber auch die pref.xml schon eingelesen. Sonst wüsste er ja nicht, dass dort noch kein Datenverzeichnis definiert ist.
 

greiol

Geoguru
ich hab mir das nochmal durch den kopf gehen lassen und würde mal versuchen wolen das zusammen zu fassen.

  • falls das ziel "ordentliche" installationspakete für halbwegs moderne betriebssysteme (xp,vista,linux,solaris,os x etc.) sein sollen, muss es eine möglichkeit geben die benutzerdaten vollständig aus dem programmverzeichnis herauszubekommen
  • auf desktops bietet sich für benutzerdaten auf alle fälle das benutzerverzeichnis an
  • selbst auf einem pocketpc wäre das in meinen augen erst mal kein problem, denn es geht zunächst nur um die position der prefs.xml und die sollte selbst da noch in das homeverzeichnis passen. das datenverzeichnis kann man sich ja dann auf die speicherkarte lenken
  • eine datei names prefs.xml möchte ich nicht direkt in meinem homeverzeichnis liegen haben, da ihr derzeitiger name zu unspezifisch ist und ich sie als benutzer beim "aufräumen" entweder nicht zuordnen kann oder ein anderer softwareentwickler auf die idee kommt seine datei auch generisch prefs.xml zu nennen und überschreibt mir das ding (prefs.xml war ok, solange es direkt im cw verzeichnis lag, aber halt nicht losgelöst)
  • mein wunsch wäre deshalb die präferenzen in zukunft im homeverzeichnis des users zu suchen und die möglichkeit zu geben dies für besondere anwendungsfälle mit hilfe eines commandline switches zu überschreiben. da ich aber nicht der entwickler bin, der das umsetzen muss, ist es erst mal nur ein wunsch :D
 

Wortfetzen

Geocacher
Ok also doch direkt eingebauen anstatt Distri-Patch. Ist sicher die sauberste Lösung ;)

Dafür wäre die korrekte Vorgehensweise fürs Finden der User-Daten - meiner Meinung nach - folgende:

Der Reihe nach wird die pref.xml gesucht in:
1. Eigene Dateien unter Win bzw. $HOME unter Linux/Solaris/etc.
2. Systemweiter Einstellungsordner ("Anwendungsdaten.." unter Win bzw. /etc/cachewolf/ bei Unix... )
3. Programmverzeichnis/Installationsordner, wo der CW installiert ist

Der erste Ort, an welchem eine Einstellungsdatei (pref.xml) gefunden wird, sollte genommen werden.

So kann man in Distri-Paketen eine allgemeine pref.xml ins /etc/ legen, der Benutzer kann sich seine eigene Datei selbst im $HOME anlegen, und für alle anderen (z.B. für den PDA) ändert sich nichts.

greiol schrieb:
  • selbst auf einem pocketpc wäre das in meinen augen erst mal kein problem, denn es geht zunächst nur um die position der prefs.xml und die sollte selbst da noch in das homeverzeichnis passen. das datenverzeichnis kann man sich ja dann auf die speicherkarte lenken
Dann bitte aber auch die Möglichkeit drin behalten, daß die pref.xml wie bisher im Installordner verbleibt.
Mein PDA schmiert öfter mal ab oder ich vergesse, rechtzeitig die Akkus zu wechseln.
Und ich bin sooooo froh daß dann NICHT jedesmal die pref.xml verloren geht, wie es im Homeverzeichnis der Fall wäre.
Solang die pref.xml auf meiner CF-Karte liegt, kann das Win absaufen sooft es will, macht mir dann nicht viel aus.

Außerdem könnte ich so die Karte in jeden PDA stecken um den CW zum Laufen zu bringen ...
 

MiK

Geoguru
Wortfetzen schrieb:
Außerdem könnte ich so die Karte in jeden PDA stecken um den CW zum Laufen zu bringen ...
Außer dort hat schon mal jemand CW-installiert... Mir persönlich wäre es lieber, wenn erst im Programmverzeichnis gesucht werden würde. Auch wenn das wohl nicht die übliche Logik ist.
 

mirabilos

Geocacher
Wortfetzen schrieb:

Auf Unix für Nicht-root nicht schreibbar.

Wortfetzen schrieb:
3. Programmverzeichnis/Installationsordner, wo der CW installiert ist

Eventuell auf Unix nicht herauszufinden, wenn nicht hartkodiert.

Wortfetzen schrieb:
Der erste Ort, an welchem eine Einstellungsdatei (pref.xml) gefunden wird, sollte genommen werden.

Das wäre eine Idee. Eine andere wären Kommandozeilenswitches, oder ein
Dialog, der beim ersten Start kommt, wo man dann die Auswahl hat zwischen
(hier mal in der für mich optimal erscheinenden – kann natürlich auch verbessert
werden – Suchreihenfolge angegeben):
  • aktuelles Verzeichnis
  • $HOME/.etc/cachewolf bzw. \Documents and Settings\%USER%\Application Data\CacheWolf
  • Programmverzeichnis

Dazu dann vielleicht ein Switch, mit dem man das direkt angeben kann? Die Wahl-
möglichkeiten entsprächen dann
  • -c .
  • -c ~/.etc/cachewolf bzw. /c "\Documents and Settings\%USER%\Application Data\CacheWolf"
  • -c /opt/CacheWolf o.ä. oder /c "\Program Files\CacheWolf"

Eventuell sollte man für die letzten beiden noch Makros angeben, also zum
Beispiel -c HOMEDIR oder /c PROGDIR (/ und - sollten beide verwendbar
und sogar mischbar sein, macht Ewe genau so).

Idee gut?
 

pfeffer

Geowizard
kann mal jemand

A) alle relevanten Szenarien zusammenfassen
B) daraus einen guten Vorschlag machen
C) testen, auf welchen Platformen der zitierte Befehl zur Ermittlung des Home-Verzeichnisses funktioniert und was er genau liefert?

Wenn wir das nicht in Kürze hinbekommen, dann kann es leider nicht mehr in die v1.0 :-(

Gruß,
Pfeffer.
 

greiol

Geoguru
sieht nicht gut aus
Code:
package tests;
public class HelloWorld {
public static void main(String args[])
{
        ewe.sys.Vm.startEwe(args);
        new ewe.ui.MessageBox("User Home","user.home points to\n\n"+System.getProperty("user.home","unknown value"),ewe.ui.Form.MBOK).execute();
        ewe.sys.Vm.exit(0);
}
}
liefert bei mir mit Gtk2/ewe:
 

Anhänge

  • Bildschirmphoto3.png
    Bildschirmphoto3.png
    6,2 KB · Aufrufe: 134

pfeffer

Geowizard
ich habe mal einen Patch gemacht, mit dem man per CommandoZeile die configdatei angeben kann.
Code:
cachewolf.exe [-c <pfad zu pref.xml>] [-debug]
Leider habe ich grad nicht genug Zeit, das ordentlich zu testen. Da ich bis Mitte nächster Woche offline bin, kann das vielleicht jemand anders machen.
[Also eigentlich habe ich schon getestet, nur noch den das Zusammenspiel mit MiKs letztem Commit zur Verlagerung der Spracheneinstellung in die pref.xml - außerdem sind evtl. Debug-Ausgaben noch zu entfernen]
system.getproperties funktioniert nicht in der .exe
Wohl aber getenv() - Man kann also die Umgebungsvariablen angucken und in $home gucken. Aber ansich kann man das ja auch einfach beim Aufruf in die .bat (.sh) schreiben, zB

Code:
cachewolf.exe [-c %APPDATA%/cachewolf] [-debug]
- wobei gegenwärtig cacheWolf das Verzeichnis nicht selbst anlegt.

Also: würd mich freuen, wenn sich jemand drum kümmern würde.

Gruß,
Pfeffer.
 

Anhänge

  • config-file-commandline-option.zip
    3,1 KB · Aufrufe: 4

pfeffer

Geowizard
wie sieht es damit aus?

brauchen wir noch eine Option, die CW anweist, die pref.xml aus dem Programmverzeichnis zu nehmen (was CW gegenwärtig ohne die Option sowieso tut?).

Oder kann ich das so wie es ist committen?

Gruß,
Pfeffer.
 
Oben