Page 1 of 1

Menu pluginu - vylepšení chování menu a separátorů

Posted: 19 Oct 2009, 23:54
by stepand76
Ahoj, v jednom pluginu, který připravuji, je poměrně hodně příkazů v menu. Příkazy, které nedávají smysl, se proto skrývají (místo zakazování). Pro přehlednost jsou odděleny separátory. Dochází ke stavům, kdy po skrytí více příkazů jsou vedle sebe dva separátory, nebo je nějaký separátor na začátku či konci menu. Mám k tomu 2 dotazy:

1. Je v plánu toto nějak automaticky ošetřit na úrovni AS? Tj. aby AS před zobrazením menu pluginu skryl duplicitní a okrajové separátory?
2. Pokud to v plánu není, tak bych rád věděl jak to lze řešit na úrovni pluginu. Lze skrývat i separátor? Každopádně to bude nešikovné, protože zde není společný handler pro nastavení stavu všech položek, ale pouze pro položky samostatně. Už tu na toto téma je nějaké jiné vlákno...

Re: Menu pluginu - vylepšení chování menu a separátorů

Posted: 20 Oct 2009, 01:33
by Jan Rysavy
Automatiku zatím neplánujeme, momentálně nemám pocit, že by to někdo požadoval.

Podle SDK / spl_menu.h / AddMenuItem() to vypadá, že lze skrýt i separátory.

O kolik jde položek v menu? Na základě čeho se budou skrývat?
Nemělo by smysl je raději rozdělit do sub menu?

Re: Menu pluginu - vylepšení chování menu a separátorů

Posted: 20 Oct 2009, 08:12
by stepand76
Jan Rysavy wrote:O kolik jde položek v menu? Na základě čeho se budou skrývat?
Jde o příkazy TortoiseSVN. Celkem je jich cca 50, současně zobrazených cca 25. Skrývat se budou na základě toho co je označené (soubor/složka/je to lok. kopie/není to lok. kopie/počet označených položek).
Jan Rysavy wrote:Nemělo by smysl je raději rozdělit do sub menu?
To mě napadlo, ale nevím jestli je to dobrý. Bude to hůře přístupné. To už si raději pohraju s tím skrýváním separátorů...

Každopádně díky za info.

Re: Menu pluginu - vylepšení chování menu a separátorů

Posted: 20 Oct 2009, 09:52
by Jan Rysavy
Koukám do context menu TSVN co mám na mašině a je tam pouze několik málo příkazů. Jak uživatelé spouštějí ty ostatní?

Re: Menu pluginu - vylepšení chování menu a separátorů

Posted: 20 Oct 2009, 12:42
by stepand76
Jan Rysavy wrote:Koukám do context menu TSVN co mám na mašině a je tam pouze několik málo příkazů. Jak uživatelé spouštějí ty ostatní?
Jak jsem psal výčet příkazů záleží na tom co je označené (soubor/složka/je to lok. kopie/není to lok. kopie/počet označených položek). Navíc je možné použít tzv. "extended" menu (stisknutí Shift): http://tortoisesvn.net/node/347

Zde je výčet příkazů TSVN (z aktuální revize). Je jich více než 50 (když nepočítám submenu):

Code: Select all

enum SVNCommands
	{
		ShellSeparator = 0,
		ShellSubMenu = 1,
		ShellSubMenuFolder,
		ShellSubMenuFile,
		ShellSubMenuLink,
		ShellSubMenuMultiple,
		ShellMenuCheckout,
		ShellMenuUpdate,
		ShellMenuCommit,
		ShellMenuAdd,
		ShellMenuAddAsReplacement,
		ShellMenuRevert,
		ShellMenuCleanup,
		ShellMenuResolve,
		ShellMenuSwitch,
		ShellMenuImport,
		ShellMenuExport,
		ShellMenuAbout,
		ShellMenuCreateRepos,
		ShellMenuCopy,
		ShellMenuMerge,
		ShellMenuMergeAll,
		ShellMenuSettings,
		ShellMenuRemove,
		ShellMenuRemoveKeep,
		ShellMenuRename,
		ShellMenuUpdateExt,
		ShellMenuDiff,
		ShellMenuPrevDiff,
		ShellMenuUrlDiff,
		ShellMenuDropCopyAdd,
		ShellMenuDropMoveAdd,
		ShellMenuDropMove,
		ShellMenuDropMoveRename,
		ShellMenuDropCopy,
		ShellMenuDropCopyRename,
		ShellMenuDropExport,
		ShellMenuDropExportExtended,
		ShellMenuLog,
		ShellMenuConflictEditor,
		ShellMenuRelocate,
		ShellMenuHelp,
		ShellMenuShowChanged,
		ShellMenuIgnoreSub,
		ShellMenuDeleteIgnoreSub,
		ShellMenuIgnore,
		ShellMenuDeleteIgnore,
		ShellMenuIgnoreCaseSensitive,
		ShellMenuDeleteIgnoreCaseSensitive,
		ShellMenuRepoBrowse,
		ShellMenuBlame,
		ShellMenuApplyPatch,
		ShellMenuCreatePatch,
		ShellMenuRevisionGraph,
		ShellMenuUnIgnoreSub,
		ShellMenuUnIgnoreCaseSensitive,
		ShellMenuUnIgnore,
		ShellMenuLock,
		ShellMenuUnlock,
		ShellMenuUnlockForce,
		ShellMenuProperties,
		ShellMenuDelUnversioned,
		ShellMenuClipPaste,
		ShellMenuUpgradeWC,
		ShellMenuLastEntry			// used to mark the menu array end
	};

Re: Menu pluginu - vylepšení chování menu a separátorů

Posted: 23 Oct 2009, 23:03
by stepand76
Jan Rysavy wrote:Podle SDK / spl_menu.h / AddMenuItem() to vypadá, že lze skrýt i separátory.
AddMenuItem je v spl_base.h, ne? No každopádně mi přijde, že to pro separátory nefunguje. Nezavolá se pro něj GetMenuItemState. Nebo dělám něco špatně?