Skip to content

Commit 5af7b78

Browse files
committed
Merge branch 'main' of github.com:borkowsk/symShellLight into main
2 parents 2ab8506 + 8b99ace commit 5af7b78

2 files changed

Lines changed: 278 additions & 157 deletions

File tree

WIN/sshmenufwin.c

Lines changed: 110 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* IMPLEMENTATION FOR SYMSHELL MENU AND RELEATED FEATURES */
2+
/** \date 2023 - 01 - 17 (last modification) */
23
/**********************************************************/
34
//#include "platform.h"
45

@@ -19,32 +20,52 @@
1920
extern "C"
2021
#endif
2122

22-
extern HWND WB_Hwnd;//W symshwin.c
23+
extern HWND WB_Hwnd; //W symshwin.c
2324

25+
/// <summary>
26+
/// Ustala tekst nazwy okna w jego belce
27+
/// \note Wygl¹da ¿e sta³o siê redundantne z nowsz¹ funkcj¹ set_title()
28+
/// </summary>
29+
/// \return TRUE -> success
30+
int ssh_set_window_name(const char* WindowName)
31+
{ assert(WindowName != 0);
32+
return SetWindowText(WB_Hwnd, WindowName); // SetWindowText return TRUE on success!
33+
}
34+
35+
/// <summary>
36+
/// Daje uchwyt do g³ównego menu
37+
/// </summary>
2438
ssh_menu_handle ssh_main_menu()
2539
{
26-
return GetMenu(WB_Hwnd);
40+
return GetMenu(WB_Hwnd);
2741
}
2842

43+
/// <summary>
44+
/// Daje uchwyt do pod-menu o ustalonej pozycji
45+
/// </summary>
2946
ssh_menu_handle ssh_sub_menu(
3047
ssh_menu_handle hMenu,
31-
unsigned Position)
32-
{
33-
return GetSubMenu((HMENU)hMenu,Position);
48+
unsigned Position
49+
)
50+
{ assert(hMenu != 0);
51+
return GetSubMenu((HMENU)hMenu,Position);
3452
}
3553

54+
3655
unsigned ssh_get_item_position(
3756
ssh_menu_handle hMenu,
38-
const char* ItemName)
57+
const char* ItemName
58+
)
3959
{
60+
assert(hMenu != 0);
4061
size_t i,len=strlen(ItemName);
4162
char* pom=malloc(len+1);
4263
int N=GetMenuItemCount(hMenu);
4364

4465
for(i=0;i<N;i++)
4566
{
4667
int ret=GetMenuString(hMenu,i,pom,len+1,MF_BYPOSITION);
47-
assert(ret!=0);
68+
assert(ret!=0);
4869
if(strcmp(ItemName,pom)==0)
4970
{
5071
free(pom);
@@ -56,47 +77,96 @@ unsigned ssh_get_item_position(
5677
return UINT_MAX;
5778
}
5879

80+
/// <summary>
81+
/// Dodaje item do menu
82+
/// </summary>
5983
int ssh_menu_add_item(
6084
ssh_menu_handle hMenu,
6185
const char* ItemName,
6286
unsigned Message,
63-
unsigned Flags)
64-
{
65-
/*wchar_t UniItemName[1024];
66-
//I tak nie dziala - zostaja krzaczki
67-
int ret=MultiByteToWideChar(
68-
1252,//CP_ACP, // UINT CodePage, // code page
69-
MB_PRECOMPOSED , //DWORD dwFlags, // character-type options
70-
ItemName, //LPCSTR lpMultiByteStr, // address of string to map
71-
strlen(ItemName)+1, //number of bytes in string
72-
UniItemName, //LPWSTR lpWideCharStr, // address of wide-character buffer
73-
1024 //int cchWideChar // size of buffer
74-
);
75-
*/
76-
if(Flags==0)/* Ma byc domyslnie */
77-
Flags=MF_ENABLED;
78-
//return AppendMenuW(hMenu,Flags,Message,UniItemName);
79-
return AppendMenu(hMenu,Flags,Message,ItemName);
87+
unsigned Flags
88+
)
89+
{ assert(hMenu != 0);
90+
/*wchar_t UniItemName[1024];
91+
//I tak nie dziala - zostaja krzaczki
92+
int ret=MultiByteToWideChar(
93+
1252,//CP_ACP, // UINT CodePage, // code page
94+
MB_PRECOMPOSED , // DWORD dwFlags, // character-type options
95+
ItemName, // LPCSTR lpMultiByteStr, // address of string to map
96+
strlen(ItemName)+1, // number of bytes in string
97+
UniItemName, // LPWSTR lpWideCharStr, // address of wide-character buffer
98+
1024 // int cchWideChar // size of buffer
99+
);
100+
*/
101+
if(Flags==0) // Ma byc domyslnie
102+
Flags=MF_ENABLED;
103+
104+
return AppendMenu(hMenu,Flags,Message,ItemName); //return AppendMenuW(hMenu,Flags,Message,UniItemName);
80105
}
81106

82-
int ssh_menu_mark_item(
107+
/// <summary>
108+
/// Usuwa item z menu. Item mo¿e byæ identyfikowany wg. pozycji, albo wg. komendy któr¹ generuje (liczby z zakresu 0-FFFF)
109+
/// </summary>
110+
int ssh_menu_remove_item(
83111
ssh_menu_handle hMenu,
84-
unsigned Check,
85-
unsigned ItemCommandOrPosition,
86-
unsigned asPosition
87-
)
88-
{
89-
UINT Flags=0;
90-
if(Check) Flags|=MF_CHECKED;
91-
else Flags|=MF_UNCHECKED;
92-
if(asPosition) Flags|=MF_BYPOSITION;
93-
else Flags|=MF_BYCOMMAND;
94-
return CheckMenuItem(hMenu,ItemCommandOrPosition,Flags)!=0xffffffff;
112+
unsigned ItemCommandOrPosition,
113+
unsigned asPosition
114+
)
115+
{ assert(hMenu != 0);
116+
UINT Flags = 0;
117+
if (asPosition)
118+
Flags |= MF_BYPOSITION;
119+
else
120+
Flags |= MF_BYCOMMAND;
121+
return RemoveMenu(hMenu, ItemCommandOrPosition, Flags) != 0xffffffff;
122+
}
123+
124+
/// <summary>
125+
/// Ustawia lub usuwa marker przy itemie
126+
/// </summary>
127+
int ssh_menu_mark_item(
128+
ssh_menu_handle hMenu,
129+
unsigned Check,
130+
unsigned ItemCommandOrPosition,
131+
unsigned asPosition
132+
)
133+
{ assert(hMenu != 0);
134+
UINT Flags=0;
135+
if(Check) Flags|=MF_CHECKED;
136+
else Flags|=MF_UNCHECKED;
137+
if(asPosition) Flags|=MF_BYPOSITION;
138+
else Flags|=MF_BYCOMMAND;
139+
return CheckMenuItem(hMenu,ItemCommandOrPosition,Flags)!=0xffffffff;
95140
}
96141

142+
/// <summary>
143+
/// Ustawia lub usuwa marker przy itemie, wersja 2.
144+
/// </summary>
145+
int ssh_menu_mark_item2(
146+
ssh_menu_handle hMenu,
147+
unsigned Check,
148+
unsigned ItemCommandOrPosition,
149+
unsigned asPosition
150+
)
151+
{ assert(hMenu != 0);
152+
UINT Flags = 0;
153+
if (Check)
154+
Flags |= MF_CHECKED;
155+
else
156+
Flags |= MF_UNCHECKED;
157+
if (asPosition)
158+
Flags |= MF_BYPOSITION;
159+
else
160+
Flags |= MF_BYCOMMAND;
161+
return CheckMenuItem(hMenu, ItemCommandOrPosition, Flags) != 0xffffffff;
162+
}
163+
164+
/// <summary>
165+
/// Wymusza pojawienie siê uprzednio zdefiniowanego lub zmodyfikowanego menu.
166+
/// </summary>
97167
int ssh_realize_menu(ssh_menu_handle hMenu)
98-
{
99-
return DrawMenuBar(WB_Hwnd );
168+
{ assert(hMenu != 0);
169+
return DrawMenuBar(WB_Hwnd );
100170
}
101171

102172
#else
@@ -106,10 +176,8 @@ return DrawMenuBar(WB_Hwnd );
106176
/********************************************************************/
107177
/* THIS CODE IS DESIGNED & COPYRIGHT BY: */
108178
/* W O J C I E C H B O R K O W S K I */
109-
/* Zaklad Systematyki i Geografii Roslin Uniwersytetu Warszawskiego */
110-
/* & Instytut Studiow Spolecznych Uniwersytetu Warszawskiego */
111-
/* WWW: http://moderato.iss.uw.edu.pl/~borkowsk */
112-
/* MAIL: [email protected] */
179+
/* Instytut Studiow Spolecznych Uniwersytetu Warszawskiego */
180+
/* MAIL: [email protected] */
113181
/* (Don't change or remove this note) */
114182
/********************************************************************/
115183

0 commit comments

Comments
 (0)