Posts: 22
Threads: 6
Joined: Aug 2020
Hallo zusammen, besonders wahrscheinlich Christian!
Geht das nur mir so, ist es vielleicht ein Bedienfehler oder sogar gewollt? Ich benutze RC (zur Zeit Version 3.2-snapshot-387) hauptsächlich zu zwei Zwecken: zum Einen Planen von (Rad-)Touren und zum Anderen zum Convertieren (achwas  ) von Garmins *.fit Dateien in GPXe und verwende zu 99% die Ansicht "Typ: Track".
Beim Planen klicke ich mit Strg-Linksklick die Touren zusammen, was eigentlich auch super funktioniert, besonders bei komplett NEUEN Touren. Mir geht's hier um die Rückgängig-Funktion (Strg-Z oder Bearbeiten -> Rückgängig) die bei neuen Touren auch arbeitet wie erwartet.
Aber... (jetzt kommt's) bei "Recycling" älterer Touren/Tracks, wenn ich Wegstücke lösche um vielleicht an der Stelle einen anderen Weg einzuschlagen passiert es eigentlich immer, wenn ich Strg-Z drücke oder "Rückgängig" klicke, dass der Marker nicht auf den Wegpunkt VOR dem gerade mittel Rückgängig Gelöschten zurück springt (was ich erwarten würde) sondern auf den DANACH - was häufig dem Ende des vorgenannten gelöschten Wegstücks entspricht. Das irritiert dann oft... Ich hoffe, ich habe das jetzt nicht zu verworren beschrieben
Es ist zwar nur ein kleines "kosmetisches" oder "Luxus"-Problem in diesem wie ich finde genialen Programm - auch an dieser Stelle nochmal herzlichen Dank dafür - aber ich wollte es mal erwähnt haben. (Auf der Suche nach dem Begriff "Spenden" habe ich Blindfisch auch endlich einen Hinweis auf den "Donate" Button gefunden... Spende ist 'raus  )
Posts: 29
Threads: 0
Joined: Jul 2018
Ich bin mir nicht ganz sicher, ob ich deine Recycling-Methode (schönes Wortspiel für Radtouren) richtig verstanden habe: Du löscht Teile der Liste, um die Änderung dann wieder rückgängig zu machen?
Darum versuch ich mal eine allgemeine Antwort: "Rückgängig" ist eine Art Notfallfunktion, um versehentliche Änderungen ungeschehen zu machen. Sie betreffen nur inhaltliche Änderungen, keine Steuerungsbewegungen (Änderungen des aktiven Elements der Liste, Cursorbewegungen, ...). Das aktive Element der Positionsliste (der "Marker") wird dabei insofern nicht geändert, als dass er nach dem Rückgängigmachen immer noch auf dem x-ten Eintrag der Liste steht, auf dem er vorher stand. Insofern ist es also vorhersehbar, wo der Marker stehen wird.
Würde man wollen, dass der Marker an eine "bessere" Stelle gesetzt wird, müsste das Programm Mutmaßungen drüber anstellen, was der Sinn deiner Änderungen ist - das kann nur schiefgehen.
Sollte meine Antwort völlig an dem vorbeigehen, was Du wissen wolltest, dann beschreib mal Schritt für Schritt, was du machst, und an welcher Stelle sich das Programm nicht verhält, wie du es erwartest.
Posts: 22
Threads: 6
Joined: Aug 2020
Erstmal vielen Dank dass Du versuchst zu helfen.
Ich hab's ja befürchtet: meine Beschreibung war wohl doch zu verworren - und versuche es nochmal mit einem Beispiel:
Angenommen, die fiktive Tour (natürlich nicht dem Fahrrad - aber größere Städte findet man leichter *gg*) geht von Hannover über die A2 an Braunschweig vorbei nach Magdeburg. Diese Tour möchte ich nun "recyclen" (nach dreimal lesen ist mir das mit dem Wortspiel auch klar geworden  ). So, ich lösche also die Wegpunkte/Positionen zwischen Lehrte und Peine und fange an, neue Punkte hinzuzufügen um z.B. die B443 und B65 zu fahren. Dabei fällt mir ein, dass ich nicht über Mehrum fahren möchte (dort habe ich gerade den letzten Wegpunkt gesetzt) sondern noch einen weiteren Umweg über Hohenhammeln machen möchte. Also drücke ich Strg-Z und würde erwarten, dass der Marker in Haimar steht (wo der VORletzte Wegpunkt gesetzt wurde). Statt dessen steht der Marker aber in Peine - dem letzten Punkt der Löschung MEHRERER Punkte. War das jetzt besser erklärt?
Posts: 29
Threads: 0
Joined: Jul 2018
Viel zu kompliziert - ich bräuchte den ganzen Abend, um das nachzuvollziehen.
Einfaches Beispiel: Du hast einen Track mit 10 Positionen. Du löscht Position 4 bis 6. Der Marker steht danach auf dem 4. Element der Liste. Wenn Du jetzt STRG+Z drückst, steht der Marker immer noch auf dem 4. Element.
Kannst du dein Beispiel auf die 10 Positionen übertragen?
Posts: 7,532
Threads: 230
Joined: Aug 2007
06.05.2025, 12:00
(This post was last modified: 06.05.2025, 12:05 by routeconverter.)
Ich glaube, ich konnte es reproduzieren. Und in der Tat gibt es Code im RouteConverter, der dafür sorgt, dass nach einem Undo überhaupt etwas markiert ist. Wenn es den Code nicht gäbe, wäre nach einem Undo nämlich gar nichts markiert. Die JTable im Java Swing ist da ziemlich seltsam.
Was passiert nun beim Undo? Es wird die aktuelle Markierung erfaßt, das Undo durchgeführt, und die Markierung wiederhergestellt.
Beispiel fürs Undo vom Einfügen: - Position 4 wird eingefügt und markiert
- Undo wird gedrückt
- Positionsnummer 4 wird vorgemerkt
- Die Position 4 wird gelöscht
- Die Position an der Positionsnummer 4 wird markiert - das ist die vorherige Position 5
Wenn ich @purzel richtig verstehe, dann möchte er aber die vorherige Position 3 markiert haben.
Und da hat @WoMetz richtig erkannt: woher soll der Code denn wissen, was beim Undo passiert? Es könnte auch das Undo vom Löschen sein (dann sind lustigerweise die vorherige und die wiederhergestellte Position marktert). Die Information, was das Undo durchführt, steht beim Auslösen der Undo-Action leider nicht zur Verfügung. Das ist nur ein kleiner Schnipsel Code, der dem UndoManager sagt: mach mal rückgängig!
https://github.com/cpesch/RouteConverter...n.java#L43
Ja, man könnte jetzt versuchen, sich zu der Information durchzubohren und dann für jede der 24 Actions definieren, wie der Effekt auf die Markierung nach dem Undo und Redo wäre und das dann auf die Markierung nach einem Undo oder Redo anwenden. Ziemlich aufwändig.
PS: Ich akzeptiere Pull Requests, falls sich jemand die Zeit dafür nehmen möchte.
--
Christian
Posts: 22
Threads: 6
Joined: Aug 2020
Hallo zusammen,
Ich habe zum Einen die Vorgehensweise die @WoMetz vorschlug gemacht:
* Erzeuge 10 Positionen
* Lösche Positionen 4-7 (Markierungsreichenfolge ist egal)
* Klicke auf Position 3
* Füge mit Strg-Klick 3 neue Positionen hinzu
* Drücke Strg-Z
* Cursor steht auf vorheriger Position 8 die jetzt 6 heißt
* Erwarten würde ich aber Position 5
Zum Zweiten habe ich Christians Beispiel nachvollzogen: genau so.
Ich kann den Satz mit den "24 Actions" nachvollziehen, kapiere aber bei objektorientierten Sprachen meist genau gar nichts. Daher denke ich, ich lebe (weiter) mit dem ja wirklich nur kleinen "kosmetischen" bzw. "Luxus"-Problem - bis dato ging's ja auch
Vielleicht - einfach nur eine Idee (wie gesagt ohne Ohnung von Java u.ä.) - ist es ja weniger aufwändig, eine Funktion (mit Hotkey, vielleicht Strg-Entf) "lösche ZULETZT GESETZTEN Punkt" einzubauen? Die Entf-Taste funktoniert (zumindest unter Linux) ja nur mit der gerade aktiven (Marker!) Position nur, wenn man selbige in der Liste angeklickt hat. Obwohl... die Idee könnte sich aber zum Mega-Projekt entpuppen: wie viele Positionen will man sich als "zuletzt gesetzt" merken? 10? 42? 100? Irgendwie auch blöd... Nee, streiche die Idee
Posts: 29
Threads: 0
Joined: Jul 2018
Hallo purzel,
ich wollte keine Vorgehensweise vorschlagen, sondern an einem einfachen Beispiel (einem 10-Punkte-Track) veranschaulichen, dass das aktive Element der Positionsliste sich durch STRG+Z nicht ändert. Man kann das nur dann gut sehen, wenn die Liste nur ein paar Elemente hat.
Nun hätte ich vielleicht besser schreiben sollen, der Index der Liste ändert sich nicht. Er steht in Deinem Beispiel vor und nach STRG+Z auf dem 6. Element.
Ich finde es nach wie vor richtig, dass der RouteConverter nach STRG+Z den Index nicht selbst ändert.
Posts: 22
Threads: 6
Joined: Aug 2020
@WoMetz: Alles gut, ich konnte schon nachvollziehen, dass auch meine fiktive Braunschweig Tour zu umständlich war - Dein Beispiel hat's ja in der Tat vereinfacht. Widersprechen möchte ich (vielleicht, dazu gleich nochmal) aber dem Punkt, der Index würde nicht verändert.
Vielleicht (siehe Klammer) ist mit "Index" aber etwas Anderes gemeint als das was ich mit Positionsnummer bezeichnet habe. Einen dedizierten "Index" finde ich in der Positionsliste nämlich nicht. Mit Positionsnummer meine ich die Zahl, die in der Spalte "Beschreibung" ganz vorn steht - und die änderte sich zumindest bei mir schon (siehe mein obiger vorletzter Punkt mit 8 -> 6) - ich hab's extra nochmal probiert. Möglicherweise ist das Windows/Linux Unterschied oder einer von unterschiedlichen JREs. Oder, nach dem X-ten Lesen: Meinst Du einfach nur ein ganz bestimmtes Element und Index ist eine Art "programm-interner" Index? (Jetzt wird's aber ein bisschen off Topic :-) )
Außerdem - möglicherweise wird's jetzt doch nochmal so halbwegs interessant für Christian: Beim Zusammenklicken einer neuen Tour (also nicht recycling und löschen von Teilstücken) klappt es mit dem Strg-Z falls man sich "verklickt" hat: der Marker springt an den zuletzt DAVOR markierten Punkt. Das war eine mehr zufällige Erkenntnis gestern.
Übrigens (ich weiß, erst recht off Topic) ein Wunsch an Christian @Administrator: wäre es nicht sinnvoll, wenn Du bei den Downloads irgendwie die Versionsnummer, ggf. inkl. Snapshot-Nummer, mit in den Dateinamen bauen würdest?
Posts: 29
Threads: 0
Joined: Jul 2018
Hallo purzel,
Noch ein Versuch: Der Index ist die Zahl, die angibt, das wievielte Element einer Liste das aktive Element ist.
Die von Dir genannte Positionsnummer ist Teil des Inhalts eines Listenelements. Mit dem Inhalt eines Elements hat der Index nichts zu tun.
Es ist eigentlich ganz einfach: Das erste Element einer Liste hat den Index 1, das zweite Element hat den Index 2, ...
Posts: 22
Threads: 6
Joined: Aug 2020
[quote pid="22628" dateline="1746987385"]
Noch ein Versuch: Der Index ist die Zahl, die angibt, das wievielte Element einer Liste das aktive Element ist.
[/quote]
Ah, jetzt habe ich verstanden was mit Index gemeint ist.
Ich finde das trotzdem irritierend, beim Beispiel mit den 10 Positionen bleibend: ich markiere Positionen 3-8, Reihenfolge egal, lösche diese Positionen mit der Entf-Taste. In der Positionsliste steht die Markierung nun auf der dritten Position, demnach Index 3. OK. Dann klicke ich in der Positionsliste auf Punkt/Index 2, füge dann in der Karte mit Strg-Linksklick neue Positionen hinzu. Drücke ich DANN Strg-Z, steht in der Positionsliste die Markierung wieder auf dem Punkt, der unmittelbar nach dem o.g. Löschen von 3-8 Index 3 war, jetzt natürlich 3-plus-Anzahl-neuer-Positionen ist. Und genau das verwirrt mich, würde erwarten dass die Markierung (und der Marker) auf der Position steht, die/der unmittelbar VOR der gerade mittels Strg-Z gelöschten entspricht.
|