Перенос пользовательских карт (maps.ini)

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модераторы: Tolik, zed

Перенос пользовательских карт (maps.ini)

Сообщение Parasite » 12 янв 2009, 08:45

Приветствую.

Допустим, у меня есть настроенная и рабочая версия SAS.PLANET. Все работает, всё прекрасно.
Допустим, я нашел какие-то интересные карты, не входящие в "стандартную поставку" SAS.PLANET, успешно подключил их в текущий SAS.PLANET через maps.ini - всё работает, всё прекрасно.
Допустим, назавтра вышла новая, свежая SAS.PLANET с какими-то новыми интересными фичами. Допустим, я возжелал обновиться.

Вопрос: как мне быть с моими ранее добавленными в maps.ini в этом случае? При полной перезаписи свежей версией сверху - перезапишется и maps.ini, и я потеряю все свои ранее введенные карты.При оставлении же своего maps.ini - я не увижу новых комплектов карт, входящих в обновленный SAS.PLANET. А при портировании ручками из старого maps.ini в новый - это уже начинает создавать проблему, так как моих добавленных карт у меня уже более 2х десятков, и этот процесс занимает уже ненулевое время (там их по номерам\разделам раскладывать приходится, одновременно подвигая\меняя имеющиеся и продумывая всю структуру, итд)....

Предлагаю: аффтару SAS.planet иметь ввиду данную ситуацию, и при старте программы проверять наличие файла custommaps.ini (стандартной структуры а-ля maps.ini) в том же каталоге. Все свои карты - юзверям выносить ручками в этот файл, все "комплектные" карты - пихать в maps.ini. При нахождении custommaps.ini - отрисовывать в меню "ВЫБОР КАРТ программы соответствующий раздельчик, где и будут жить карты пользователей. В комплект поставки SAS.PLANET не включать custommaps.ini ни в каком виде (для исключения случайной перезаписи при апдейтах программы).
Сильно программу это не усложнит, и много времени на введение данного функционала имхо не потребует - по сути, при запуске программы надо просто сливать "в уме" оба конфига в один, и соответственно отрисовывать меню...

Благодарю.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение feya » 12 янв 2009, 13:17

Да, эта проблема меня тоже беспокоит, но думаю решить ее используя для каждой карты zip архив со всеми необх файлами - скрипт, описание, иконки. Вот что меня останавливает - как выводить эти карты в определенном порядке? Где хранить информацию о последовательности расположения названий карт в меню?
http://SASGIS.ru | SAS.Планета | SASPlanet
Аватара пользователя
feya
Администратор
 
Сообщения: 2035
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 30 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение gisof » 12 янв 2009, 13:20

Данный вопрос меня тоже волнует и из-за "трудоёмкости" обновления приходится пропускать некоторые новые версии sas.
Я также предлагал что-нибудь сделать с личными настройками гор.клавиш (например вынести их в отдельный файл), т.к. при обновлении они теряются.

Несколько упростить задачу обновления настроек мне помогает прога WinMerge.

Тема затрагивалась два месяца назад -- настройки каждого слоя и каждой карты в отдельных файлах (svp)

В идеале обновление sas должно записываться поверх старой версии с сохранением всех настроек пользователя, включая и пользовательские карты.
http://wiki.GooGIS.info - wiki-энциклопедия неогеографии
Аватара пользователя
gisof
Постигающий Дао
 
Сообщения: 197
Зарегистрирован: 13 ноя 2008, 15:56
Откуда: РБ
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение Parasite » 12 янв 2009, 13:30

feya писал(а):Да, эта проблема мя тоже беспокоит, но думаю решить ее используя для каждой карты zip архив со всеми необх файлами - скрипт, описание, иконки. Вот что меня останавливает - как выводить эти карты в определенном порядке? Где хранить информацию о последовательности расположения названий карт в меню?

Самым разумным было бы хранить пользовательские данные в пользовательских файлах, а не в системных САСовских (и проверять наличие оных пользовательских при старте САСа). Зачем изобретать велосипед? В серьезных системах именно так и сделано - пользовательские настройки не идут в составе самой программы, а создаются\читаются локально по необходимости. При апдейте основной программы пользовательские настройки совершенно не затрагиваются, даже при автоматическом анинсталле основной программы - они остаются, и легко подхватываются при последующем накатывании сверху новой версии (если юзеру вдруг приспичит опять накатить прогу). В оных настройках можно хранить не только расклад по картам, а и все юзер-ориентированные параметры (последняя использованная карта и местоположение на ней при последнем выходе, горячие клавиши - если они были переопределены, пути до кэша и прочая).
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение gisof » 12 янв 2009, 13:40

feya писал(а):Да, эта проблема мя тоже беспокоит, но думаю решить ее используя для каждой карты zip архив со всеми необх файлами - скрипт, описание, иконки.

правильный подход
feya писал(а):Вот что меня останавливает - как выводить эти карты в определенном порядке? Где хранить информацию о последовательности расположения названий карт в меню?

а вот настройки структуры меню пускай и остаются в maps.ini
+ добавить в нём подменю пользовательских карт с настройками в custommaps.ini

Вот приблизительно что должно получиться:
Код: Выделить всё
[MAP#0]
active=1
GetMaps=goocompress.zip

[MAP#1]
active=0
GetMaps=google.zip

[MAP#2]
active=0
separator=1
GetMaps=goocompress.zip

[CUSTOMMAP]

[MAP#3]
active=0
separator=1
GetMaps=ksnew.zip
.........
http://wiki.GooGIS.info - wiki-энциклопедия неогеографии
Аватара пользователя
gisof
Постигающий Дао
 
Сообщения: 197
Зарегистрирован: 13 ноя 2008, 15:56
Откуда: РБ
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение Parasite » 12 янв 2009, 13:42

gisof писал(а): Тема затрагивалась два месяца назад

Обновил ТОП в Пожеланиях.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение Parasite » 12 янв 2009, 13:50

gisof писал(а):Вот приблизительно что должно получиться:

Не совсем так. :)

maps.ini
Код: Выделить всё
[MAP#0]
active=1
GetMaps=goocompress.zip

[MAP#1]
active=0
GetMaps=google.zip

[MAP#2]
active=0
separator=1
GetMaps=goocompress.zip


custommap.ini
Код: Выделить всё
[CUSTOMMAP]

[MAP#0]
active=0
separator=1
GetMaps=ksnew.zip
.........


...а отрисовывать в порядке следования, а не по номеру. map.ini линковать в главный уровень меню, custommap.ini - в подменю КАРТЫ ПОЛЬЗОВАТЕЛЯ внизу (или вверху) главного меню (также в порядке перечисления в инишнике).
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение gisof » 12 янв 2009, 14:01

я тоже самое и имел ввиду, только [CUSTOMMAP] у меня это расположение подменю пользовательских карт в любом месте меню.

Также лучше избавиться от номеров [MAP#] (прорисовывать меню по порядку) - тогда тусовать карты будет просто.
http://wiki.GooGIS.info - wiki-энциклопедия неогеографии
Аватара пользователя
gisof
Постигающий Дао
 
Сообщения: 197
Зарегистрирован: 13 ноя 2008, 15:56
Откуда: РБ
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение svp » 12 янв 2009, 14:25

Я как-то давно уже предлагал способ определения расположения карты в меню. Тогда у автора ещё были сомнения в скорости распаковки архивов с картами при загрузке.
Не буду сейчас искать тот пост, а повторюсь.
У каждой карты в зипе свой инишник со свойствами. В этом инишнике нужно хранить:
1. Путь в меню по умолчанию.
Элементы пути должны указываться либо в виде имён объектов TMenuItem, либо в виде их названий (Caption) в кавычках. Примеры:
MapMenuPath=mnuMaps\"Астрономические"\"Nasa"
MapMenuPath="Слои"\"Рельеф"\"Мои наброски рельефа"
MapMenuPath=mnuLayers\"Рельеф"\"Мои наброски рельефа"
Такой механизм позволит гибко размещать в меню в любых местах (а также выносить на панели) любые стандартные и нестандартные подменю с картами. При этом к стандартным подменю можно обращаться по их имени компонента (mnuLayers или mnuMaps), а дальше создавать цепочку специфических подменю с нужнуми названиями.
таким образом мы отталкиваемся либо от уже существующего стандартного экземпляра TMenuItem, либо начинаем создавать требуемую цепочку от корня меню.

2. В Maps.ini нам остаётся только хранить перекрытые настройки карт.
Например URL, антибан-задержки и прочее.
То есть в maps.ini для каждой карты, свойство которой надо перекрыть, должен присутствовать раздел с тем же именем, как у файла карты и в нём переопределяются нужные свойства.

Таким образом необходимость поставлять Maps.ini в комплекте программы отпадает. Это будет чисто пользовательский файл со специфическими настройками. Меняться же могут сами файлы карт.

3. Так как карты будут делать разные люди, то не исключено совпадение имён. Просто переименовывать файл карты при коллизиях -- это не выход, так как по этому имени на карту могут быть ссылки в Maps.ini. Выход -- это назначение каждой карте уникального идентификатора GUID'а.
В maps.ini при этом группы с перекрытыми свойствами карт будут соответствовать этим GUID'ам и привязка сохранится независимо от имени файла с картой.
Аватара пользователя
svp
Советчик
 
Сообщения: 446
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: Перенос пользовательских карт (maps.ini)

Сообщение garl » 12 янв 2009, 14:35

а как решить очерёдность карт?
есть
"Астрономические карты\Марс" которые в комплекте, и
"Астрономические карты\А_вот_мой_Марс" который у меня, вот я хочу чтоб мой марс был выше(первым) в подменю,

вот об этом вроде говорит автор

тоесть сначала обрабатываетется файл с картами программы (maps.ini) а затем уже пользовательский , и карты пользователя будут однозначно ниже в списке.....

при поиске по именю файла (в каталоге) тоже findfirst и findNext будут возвращать файлы в хаотичном порядке, и выстроить их в цепочку неполучится... тоэтому нужна какаято независящая от номеров и имён файлов сортировка
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59