Плагин CommandLine для jOSM (окружности, дуги и т.п. + свои команды)

Ни у кого не наблюдается проблем с работой плагина? У меня JOSM 10966 просто валится при попытке выполнить любую команду плагина. Сначала JOSM не мог почему-то увидеть Питон, хотя в консоли вызов питона работал, а когда увидел - начал валиться. Сообщения типа:


 STACK TRACE ===
Thread: AWT-EventQueue-0 (18) of main
java.lang.IllegalArgumentException: Listener CommandLine.PointAction@f6c71 (instance of CommandLine.PointAction) was not registered before or already removed.
	at org.openstreetmap.josm.tools.ListenerList.failRemove(ListenerList.java:129)
	at org.openstreetmap.josm.tools.ListenerList$TracingListenerList.failRemove(ListenerList.java:206)
	at org.openstreetmap.josm.tools.ListenerList.removeListener(ListenerList.java:123)
	at org.openstreetmap.josm.tools.ListenerList$TracingListenerList.removeListener(ListenerList.java:190)
	at org.openstreetmap.josm.data.Preferences.removePreferenceChangeListener(Preferences.java:238)
	at org.openstreetmap.josm.actions.mapmode.MapMode.exitMode(MapMode.java:78)
	at CommandLine.PointAction.exitMode(PointAction.java:63)
	at CommandLine.PointAction.mousePressed(PointAction.java:94)
...

Система Win8.1 x64
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32

Сломалось в каком-то из обновлений. Баг давно заведен. Но чинить времени нет, увы.

Очень печально. Может кто-то подскажет, в какой версии все работает?

Я просто игнорирую всплывающие ошибки, в целом все работает.

У плагина есть репозиторий на github?

Мне интересно было бы поковыряться в исходниках и возможно пофиксить сей баг.

Есть, но первичен SVN-репозиторий.

Сделал изменения.
Надеюсь патч примут.

Пока прикладываю jar файл.

На винде кинуть с заменой в %APPDATA%\JOSM\plugins

Только обновление плагинов в JOSM заменяет его старым, поэтому переключитесь на ручное обновление, чтоб автоматически не заменил.

Патч приняли :smiley: , ждите обновление плагина или качайте готовый jar.

У меня не работают команды, которым надо несколько аргументов передать ткнув мышкой. Например, Fillet, если я её запущу предварительно ничего не выбирая, то она сначала спросит way, потом набор точек и дальше дело не пойдёт. А если я way выбрал перед запуском команды, то она спросит набор точек, потом радиус (число) и количество сегментов (тоже число) и после этого сработает как надо. Но так не со всеми командами выйдет.

“Зеркало” с предварительным (и без него) выделением не идёт далее указания первой точки оси.

Зеркало есть в utilsplugin2 (Ещё инструменты > Симметрия).

Товарищи, что-то совсем туплю, какой запрос надо составить в строке поиска и строке замены для Regexp, чтобы в дробных номерах домов заменить бэкслеш на прямой слеш.
https://www.openstreetmap.org/way/202948495

Пробовал вводить \, “\” - не получается, в консоли явы выскакивают исключения.

Если используется python 3, то данная команда работать не будет.

Что-то каталог с плагина перехал в /home/пользователь/.local/share/JOSM/plugins/CommandLine/ – сообшил при обновлении, шаз скачаю, а то у тебя ни одного плагина нету. И он там не один, кто за каталог с настроками вылезл… Как теперь это разнообразие синхронизировать…

Подскажите pls по поводу передачи данных из плагина во внешнюю программу. В качестве примера смотрю реализацию команды move.

В move.xml описан только один параметр OSM XML, в данном случае это “Objects”

<?xml version="1.0" encoding="UTF-8"?>
<command version="3" name="Move" icon="move.png" run="python move.py {First point} {Second point} No">
	<parameter required="true" type="any" maxinstances="0">
		<name>Objects</name>
		<description>Objects for moving</description>
	</parameter>
	<parameter required="true" type="point">
		<name>First point</name>
		<description>Point to move from</description>
	</parameter>
	<parameter required="true" type="point">
		<name>Second point</name>
		<description>Point to move to</description>
	</parameter>
</command>

А в коде move.py две операции чтения из stdin

  rData = OsmData() # References
  mData = OsmData() # Objects for moving
  rData.read(sys.stdin)
  mData.read(sys.stdin)

В команде replace ещё веселее

    nData = OsmData() # Nodes
    rData = OsmData() # Reference way
    tData = OsmData() # Target ways
    nData.read(sys.stdin)
    rData.read(sys.stdin)
    tData.read(sys.stdin)

Объясните, пожалуйста, как это работает.

Ссылка не рабочая.

Восстановил скрипт на github: https://github.com/De-Luxis/address2

Адрес ПКК изменился с https://**pkk5.**rosreestr.ru/ на https://**pkk.**rosreestr.ru/ По ссылке адрес старый.

Исправил.

С приходом питона 3.8, address2 перестал работать и стал жаловаться, что нет либ — добавил:

import urllib, urllib.request as urllib2, http.cookiejar as cookielib, http.cookies as Cookie

Не понравилась конструкция

if addresses[0]['utilization'] <> None:

заменил на

if addresses[0]['utilization'] is None:

и вроде заработал
Теперь, после того, когда ставится (или нет) адресная точка, редактор вышибается из режима редактирования (не знаю, как это правильно называть) и приходится нажимать S, чего раньше не было.

По идее должно было быть

if addresses[0]['utilization'] != None:

, но на той версии оно не работало, почему-то… на версии 3.9.5 работает.

Судя по всему, плагин находиться в заброшенном состоянии, и с каким нибудь питоном 4 отвалится совсем…

Это проблема самого плагина commandline