Notes |
|
(0001323)
|
Garl
|
21-03-2011 09:28
|
|
как вариант можно использовать пустой zmp для обозначения группы меню, тогда можно будет не только ссылаться на родителя но и делать много многоуровнево вложенные менюшки. |
|
|
(0001326)
|
feya
|
21-03-2011 14:42
|
|
Такого - ParentSubSubMenu мне кажется лучше не делать, если уж делать то нормальные многоуровневые с делителем через слеш. |
|
|
|
А мне понравилась идея делать подменю при помощи ссылки на родительский zmp. Тогда появится возможность относительно легко переименовывать и локализировать подменю. |
|
|
(0001328)
|
feya
|
21-03-2011 15:06
|
|
>А мне понравилась идея делать подменю при помощи ссылки на родительский zmp
Это как? |
|
|
|
Ну делается например файлик с расширением zmpgrp или любым на наш выбор. В нем прописывается его GUID, родительский GUID и название в том числе и локализации.
Еще можно добавить параметр описывающий, что делать именно подменю или просто сгруппировать вместе и отделить от остальных разделителями |
|
|
|
Если добавить к этому возможность перекрыть этот файлик лежащим на уровень выше в структуре папок, то вообще гибкая структура выйдет. |
|
|
(0001331)
|
Tolik
|
21-03-2011 16:46
|
|
Ок, ParentSubSubMenu - не оч. хор. идея.
Предлагаю ещё одну.
Требования:
1. Не переписывать _все_ существующие zmp
2. Не плодить слишком много новых файлов
3. Не использовать GUID для описания иерархии, а пользоваться читабельными человеческими идентификаторами.
Поэтому создаём один файл, например, maps\sas.maps\groups.ini
и прописываем в нём всю структуру меню, как-то так:
[Main]
Локальные карты
Исторические
[Локальные карты]
ДубльГис
UMAP
[Исторические]
Московская область
Уральский ФО
2gis.khabarovsk.zmp не переписываем, в нём ParentSubMenu=ДубльГис, попадает в меню Локальные карты - ДубльГис.
Также добавить разделы для разных языков. |
|
|
|
И как предлагаете потом эти groups.ini из разных репозиториев между собой объединять? |
|
|
(0001333)
|
feya
|
21-03-2011 19:02
|
|
vdemidov, идея с отдельными файлами интересная, но соглашусь с Tolik'о - плодить лишние файлы в zmp не есть гуд. Предложеный мной вариант со слешами имеет только один недостаток - приходится во всех zmp хранить название пути подменю и соответственно их переводы, но это уже опробовано временем и вроде особо никого не напрягало. Еще плюс - это самый простой и безболезненный вариант) |
|
|
(0001335)
|
Tolik
|
21-03-2011 19:31
(edited on: 21-03-2011 19:53) |
|
> И как предлагаете потом эти groups.ini из разных репозиториев между собой объединять?
Например, так:
В sas.maps\groups.ini
[Main]
menu1
menu2
В plus.maps\groups.ini
[Main]
menu1
menu3
После парсинга и объединения должно получиться
[Main]
menu1
menu2
menu3
(я надеюсь, это не сложно реализовать)
|
|
|
(0001336)
|
Tolik
|
21-03-2011 19:44
|
|
feya, а что со слешами? Так, что ли?
ParentSubMenu=Локальные/ДубльГис
Да тоже неплохо.
Во всяком случае понятно и никакой путаницы. Только zmp придётся исправить и обратной совместимости не будет. Ну и ладно.
Кстати, pnum ещё напрягает, как-то он непредсказуемо действует на все эти группы... Один неправильный pnum портит всю картину. Надо ещё как-то определять положение группы в подменю. Тут groups.ini таки имеет преимущество :) |
|
|
|
Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum. |
|
|
(0001339)
|
Tolik
|
21-03-2011 21:07
|
|
Да, и разделители тоже вечно появляются где попало.
Ну и как это сделать, все настройки внешнего вида перенести в .ini? |
|
|
|
Ну да. Если выделить инфу о группировке zmp в отдельные ini, то от разделителей можно избавиться введя группы без выделения в подменю. |
|
|
(0001341)
|
Garl
|
22-03-2011 05:38
|
|
прошу учесть что некоторые имеют привычку сносить .ini файлы,
поэтому информацию о группах хранить в ini файле - не сильно айс.
>Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum.
согласен. |
|
|
(0001342)
|
Tolik
|
22-03-2011 06:11
|
|
Я и сам их часто тру :)
Но это не проблема: они ж будут в репозиториях. |
|
|
(0001343)
|
feya
|
22-03-2011 06:56
|
|
к чему же в итоге придем?
В принципе хранение отображения zmp в меню согласен перенести в отдельный файл, но не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас. |
|
|
(0001346)
|
Garl
|
22-03-2011 08:19
|
|
озвучу универсальный подход как я его вижу
Имеем ZMP "Локальные карты" (допустим в основном репозитории) {889E44B1-413F-49D9-B5C7-3E20851B5C40}
ZMP с группой Допустим "локальные непривязанные карты" GUID {B67EF627-B412-4AE0-80FE-A50300AFECAA}
указываем что у него родитель "Локальные карты" {889E44B1-413F-49D9-B5C7-3E20851B5C40}
имеем скрипт карты в котором указываем родителя {B67EF627-B412-4AE0-80FE-A50300AFECAA}
карта города мухосранска
в идеале если у нас присутствуют в одной папке файлы слитые из двух репозиториев то у нас получится
"Локальные карты"->"локальные непривязанные карты"->"карта города мухосранска "
если же у нас слит только плюсовый репозиторий то врехнегородителя не будет, будет только
"локальные непривязанные карты"->"карта города мухосранска "
в чём плюс:
+не подвязаны под конфиги,
+чётко видно кто кому подчинён,
+отсутствие какого либо родителя не влияет на работоспособность.
минусы:
pnum, всётаки его придется использовать для сортировки, можето только у групп, но всётаки. |
|
|
|
Ну несколько их будет по любому. Во-первых нужно что бы каждый репозиторий мог более менее независимо задать структуру. Плюс нужно что бы пользователь мог ее перекрыть не исправляя файлы входящие в репозиторий. Так что инфа из них должна будет собираться или в maps.ini или в глобальный groups.ini |
|
|
(0001348)
|
Tolik
|
22-03-2011 08:26
|
|
> не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас.
Тогда пусть будет один: maps\sas.maps\groups.ini
Если карты какой-то группы существуют только в плюсовом репозитории, группу под них всё равно пропишем в основном. А отображать пустую группу в меню не надо (если плюсовой не подгружен). |
|
|
(0001349)
|
Tolik
|
22-03-2011 08:28
|
|
maps\sas.maps\groups.ini будет жить в репозитории, а если пользователь пересортирует по-своему, его структура запишется в maps/maps.ini |
|
|
(0001350)
|
Tolik
|
22-03-2011 08:33
(edited on: 22-03-2011 08:36) |
|
Если всё же выберем вариант с отдельными групповыми zmp, то _убедительно_прошу_ ссылки на родителя указывать не по GUID, а по имени файла.
muhosransk.zmp:
name=Мухосранск
ParentSubMenu=LocalNotFixed.grp
LocalNotFixed.grp:
name=Локальные непривязанные
ParentSubMenu=Local.grp
Local.grp:
name=Локальные
ParentSubMenu=
|
|
|
|
Увы, мне с GUID-ами будет на порядок проще все это сделать. Так что или по гуидам, или вообще никак. |
|
|
(0001352)
|
Garl
|
22-03-2011 11:06
|
|
никто не мешает сделать внешний редактор меню, который будет GUID представлять по человечески :) |
|
|
(0001356)
|
feya
|
22-03-2011 12:37
|
|
если ссылаться на другие zmp то только по GUID, это без вариантов. |
|
|
(0001357)
|
Tolik
|
22-03-2011 12:38
|
|
тогда без гуёв не обойтись
а может всё-таки ini? |
|
|
(0001358)
|
Garl
|
22-03-2011 12:44
|
|
Tolik, не боись ГУИДов, в них сила.
а вот как описывать саму группу zmp файлом или в инишке - остаётся вопрос открытый. |
|
|
|
Ну что описывать группу отдельным файлом мы уже определились. Имхо делать фиктивный zmp смысла нимного, ибо общего у них будет только наличие GUID и названия. |
|
|
(0001360)
|
Tolik
|
22-03-2011 15:33
|
|
Я что-то не понял последнюю фразу.
Описывать _одну_ группу отдельным файлом? Это не то же самое, что "фиктивный zmp"?
И ещё оч. интересует target version. При таком бурном обсуждении странно, что её нет. |
|
|
|
"фиктивный zmp" это зип файл или папка с кучей файлов. Имхо в данном случае ни то, ни другое нафиг не нужно. Так что это будет файл с каким-то другим расширением.
А target version нет, поскольку я пока не уверен как стоит это все реализовывать. В любом случае, не в ближайшем релизе. |
|
|
(0001362)
|
Garl
|
22-03-2011 15:49
|
|
семь раз отмерь - один запрограммируй :) |
|
|
(0001363)
|
feya
|
22-03-2011 19:47
|
|
Читаю читаю и толком не понимаю что в итоге будет) Аналог текущего maps.ini или для каждого подменю свой файл? |
|
|
|
А бог его знает что в итоге будет. Мне кажется для каждого подменю свой файл и groups.ini для пользовательских настроек. Или более сложный maps.ini. Или |
|
|
(0001366)
|
Garl
|
23-03-2011 05:11
|
|
а давайте поОФФТОПим и вспомним программы где такое или примерно такое уже делалось.
мне кроме Нортон Коммандера и ДосНавигатора ничего больше не приходит на ум.
у первого всё в одном файле, у второго можно подменюшки хранить в разных файлах, но у них другая структура меню.
больше ничего не припомню. |
|
|
(0001368)
|
feya
|
23-03-2011 08:38
|
|
а используя отдельные файлы для подменю как избавимся от pnum и сепараторов? |
|
|
(0001369)
|
Garl
|
23-03-2011 09:04
|
|
чую vdemidov оставит сепараторы и pnum только для групп, а из zmp его ликвидируют. |
|
|
|
Скорее всего будет что-то такое:
1. Вложенность подменю будет скорее всего произвольная
2. Для каждого конкретного подменю можно будет задавать его тип (полноценное подменю, просто группа пунктов с заголовком в начале и разделителем в конце, просто группа пунктов ограниченная разделителями)
3. Внутри групп и подменю сортировка идет просто по алфавиту
Как это все задавать и что делать с переводами на другие языки я еще не придумал. |
|
|
(0003866)
|
zOn
|
12-09-2011 04:45
|
|
почему вы не хотите уйти от сортировки в zmp? почему не раскладывать их по папкам и подпапкам и так же отображать в САС?
видимо из-за проблем с обновлением?
можно ведь сложить всё 1 раз по папкам и создать (по требованию) индексный файл, а после этого уже до балды где лежит zmp - он будет в программе отображаться так, как для этого GUID записанно в индексе. |
|
|
(0003868)
|
Tolik
|
12-09-2011 04:52
|
|
И имя подменю тогда будет совпадать с именем директории?
Но как быть с разными языками?
И как определять порядок пунктов меню? (только по алфавиту - плохо)
Так что без ini файла (файлов) не обойтись. |
|
|
(0003869)
|
zOn
|
12-09-2011 04:55
|
|
>Но как быть с разными языками?
поклонники инглиша и так не создают папок на русском.
вот с сортировкой еще не придумал. может всё же по pnum в самих zmp? |
|
|
(0003872)
|
Tolik
|
12-09-2011 05:04
|
|
Вот именно, я всё называю по-английски или латиницей. Уж очень задолбала меня кириллица, всю жизнь от неё одни проблемы.
Но вы-то хотите видеть русские имена в меню?
По pnum неудобно: чтобы передвинуть подменю, приходится редактировать все zmp в нём. |
|
|
(0003874)
|
zOn
|
12-09-2011 05:05
|
|
>Но вы-то хотите видеть русские имена в меню?
да. и папки у меня по-русски. т.е. имя папки=пункт меню. |
|
|
(0013012)
|
Garl
|
01-10-2013 10:14
|
|
Собственно реализована возможность многоуровневого меню
ParentSubMenu=пункт1\пункт2\пункт3\пункт4\... и т.д. |
|