mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
moved start menu entries for control panel, etc. into new settings submenu
svn path=/trunk/; revision=6163
This commit is contained in:
parent
1c7c828d1e
commit
f7deec4b5c
6 changed files with 135 additions and 73 deletions
|
@ -34,3 +34,4 @@
|
|||
30.09.2003 m. fuchs compatibility to building as Winelib application
|
||||
10.09.2003 m. fuchs compatibility changes for correct desktop windows size on Windows NT
|
||||
19.09.2003 m. fuchs compatibility changes for correct start menu subentries on Windows 9x
|
||||
27.09.2003 m. fuchs moved start menu entries for control panel, etc. into new settings submenu
|
||||
|
|
|
@ -21,8 +21,9 @@
|
|||
#define IDS_CONNECTIONS 17
|
||||
#define IDS_DRIVES 18
|
||||
#define IDS_SEARCH_COMPUTER 19
|
||||
#define IDS_SETTINGS_WND 20
|
||||
#define IDS_PRINTERS 21
|
||||
#define IDS_SETTINGS_MENU 20
|
||||
#define IDS_CONTROL_PANEL 21
|
||||
#define IDS_PRINTERS 22
|
||||
#define IDI_REACTOS 100
|
||||
#define IDI_EXPLORER 101
|
||||
#define IDI_STARTMENU 102
|
||||
|
|
|
@ -108,8 +108,9 @@ BEGIN
|
|||
IDS_CONNECTIONS "Conecþii"
|
||||
IDS_DRIVES "Discuri"
|
||||
IDS_SEARCH_COMPUTER "Search Computer..."
|
||||
IDS_SETTINGS_WND "Control Panel"
|
||||
IDS_SETTINGS_MENU "Settings Menu"
|
||||
IDS_PRINTERS "Printers"
|
||||
IDS_CONTROL_PANEL "Control Panel"
|
||||
END
|
||||
|
||||
#endif // Romanian resources
|
||||
|
@ -142,8 +143,8 @@ IDB_LOGOV BITMAP DISCARDABLE "res/logov.bmp"
|
|||
|
||||
IDA_EXPLORER ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
0x58, ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
|
||||
0x53, ID_VIEW_FULLSCREEN, VIRTKEY, SHIFT, CONTROL,
|
||||
"X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
|
||||
"S", ID_VIEW_FULLSCREEN, VIRTKEY, SHIFT, CONTROL,
|
||||
NOINVERT
|
||||
END
|
||||
|
||||
|
@ -365,11 +366,12 @@ END
|
|||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_NETWORK "Netzwerk"
|
||||
IDS_CONNECTIONS "Verbindungen"
|
||||
IDS_CONNECTIONS "Netzwerk-Verbindungen"
|
||||
IDS_DRIVES "Verzeichnisse"
|
||||
IDS_SEARCH_COMPUTER "Suche Computer..."
|
||||
IDS_SETTINGS_WND "Systemsteuerung"
|
||||
IDS_SETTINGS_MENU "Einstellungen-Menu"
|
||||
IDS_PRINTERS "Drucker"
|
||||
IDS_CONTROL_PANEL "Systemsteuerung"
|
||||
END
|
||||
|
||||
#endif // German (Germany) resources
|
||||
|
@ -577,11 +579,12 @@ END
|
|||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_NETWORK "Network"
|
||||
IDS_CONNECTIONS "Connections"
|
||||
IDS_CONNECTIONS "Network Connections"
|
||||
IDS_DRIVES "Drives"
|
||||
IDS_SEARCH_COMPUTER "Search Computer..."
|
||||
IDS_SETTINGS_WND "Control Panel"
|
||||
IDS_SETTINGS_MENU "Settings Menu"
|
||||
IDS_PRINTERS "Printers"
|
||||
IDS_CONTROL_PANEL "Control Panel"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
|
|
|
@ -53,8 +53,9 @@
|
|||
#define IDC_NETWORK 0x100E
|
||||
#define IDC_CONNECTIONS 0x100F
|
||||
#define IDC_DRIVES 0x1010
|
||||
#define IDC_SETTINGS_WND 0x1011
|
||||
#define IDC_PRINTERS 0x1012
|
||||
#define IDC_SETTINGS_MENU 0x1011
|
||||
#define IDC_CONTROL_PANEL 0x1012
|
||||
#define IDC_PRINTERS 0x1013
|
||||
|
||||
#define IDC_FIRST_MENU 0x3000
|
||||
|
||||
|
|
|
@ -103,19 +103,18 @@ LRESULT StartMenu::Init(LPCREATESTRUCT pcs)
|
|||
return 1;
|
||||
|
||||
// create buttons for registered entries in _entries
|
||||
if (_entries.empty()) {
|
||||
AddButton(ResString(IDS_EMPTY), 0, false, (UINT)-1, WS_VISIBLE|WS_CHILD|BS_OWNERDRAW|WS_DISABLED);
|
||||
} else {
|
||||
for(ShellEntryMap::const_iterator it=_entries.begin(); it!=_entries.end(); ++it) {
|
||||
const StartMenuEntry& sme = it->second;
|
||||
bool hasSubmenu = false;
|
||||
for(ShellEntryMap::const_iterator it=_entries.begin(); it!=_entries.end(); ++it) {
|
||||
const StartMenuEntry& sme = it->second;
|
||||
bool hasSubmenu = false;
|
||||
|
||||
if (sme._entry && (sme._entry->_data.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
|
||||
hasSubmenu = true;
|
||||
if (sme._entry && (sme._entry->_data.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
|
||||
hasSubmenu = true;
|
||||
|
||||
AddButton(sme._title, sme._hIcon, hasSubmenu, it->first);
|
||||
}
|
||||
AddButton(sme._title, sme._hIcon, hasSubmenu, it->first);
|
||||
}
|
||||
|
||||
if (!GetWindow(_hwnd, GW_CHILD))
|
||||
AddButton(ResString(IDS_EMPTY), 0, false, (UINT)-1, WS_VISIBLE|WS_CHILD|BS_OWNERDRAW|WS_DISABLED);
|
||||
} catch(COMException& e) {
|
||||
HandleException(e, pcs->hwndParent); // destroys the start menu window while switching focus
|
||||
}
|
||||
|
@ -366,29 +365,9 @@ bool StartMenu::CloseOtherSubmenus(int id)
|
|||
}
|
||||
|
||||
|
||||
void StartMenu::CreateSubmenu(int id, const StartMenuFolders& new_folders, CREATORFUNC creator)
|
||||
void StartMenu::CreateSubmenu(int id, CREATORFUNC creator)
|
||||
{
|
||||
// Only open one submenu at a time.
|
||||
if (!CloseOtherSubmenus(id))
|
||||
return;
|
||||
|
||||
HWND btn = GetDlgItem(_hwnd, id);
|
||||
int x, y;
|
||||
|
||||
if (btn) {
|
||||
WindowRect pos(btn);
|
||||
|
||||
x = pos.right-3; // Submenus should overlap their parent a bit.
|
||||
y = pos.top+STARTMENU_LINE_HEIGHT-3;
|
||||
} else {
|
||||
WindowRect pos(_hwnd);
|
||||
|
||||
x = pos.right-3;
|
||||
y = pos.top;
|
||||
}
|
||||
|
||||
_submenu_id = id;
|
||||
_submenu = StartMenu::Create(x, y, new_folders, _hwnd, creator);
|
||||
CreateSubmenu(id, StartMenuFolders(), creator);
|
||||
}
|
||||
|
||||
void StartMenu::CreateSubmenu(int id, int folder_id, CREATORFUNC creator)
|
||||
|
@ -427,6 +406,31 @@ void StartMenu::CreateSubmenu(int id, int folder_id1, int folder_id2, CREATORFUN
|
|||
CreateSubmenu(id, new_folders, creator);
|
||||
}
|
||||
|
||||
void StartMenu::CreateSubmenu(int id, const StartMenuFolders& new_folders, CREATORFUNC creator)
|
||||
{
|
||||
// Only open one submenu at a time.
|
||||
if (!CloseOtherSubmenus(id))
|
||||
return;
|
||||
|
||||
HWND btn = GetDlgItem(_hwnd, id);
|
||||
int x, y;
|
||||
|
||||
if (btn) {
|
||||
WindowRect pos(btn);
|
||||
|
||||
x = pos.right-3; // Submenus should overlap their parent a bit.
|
||||
y = pos.top+STARTMENU_LINE_HEIGHT-3;
|
||||
} else {
|
||||
WindowRect pos(_hwnd);
|
||||
|
||||
x = pos.right-3;
|
||||
y = pos.top;
|
||||
}
|
||||
|
||||
_submenu_id = id;
|
||||
_submenu = StartMenu::Create(x, y, new_folders, _hwnd, creator);
|
||||
}
|
||||
|
||||
|
||||
void StartMenu::ActivateEntry(int id, ShellEntry* entry)
|
||||
{
|
||||
|
@ -641,22 +645,16 @@ LRESULT StartMenuRoot::Init(LPCREATESTRUCT pcs)
|
|||
if (super::Init(pcs))
|
||||
return 1;
|
||||
|
||||
AddButton(ResString(IDS_EXPLORE), SmallIcon(IDI_EXPLORER), false, IDC_EXPLORE);
|
||||
|
||||
AddSeparator();
|
||||
|
||||
// insert hard coded start entries
|
||||
AddButton(ResString(IDS_PROGRAMS), 0, true, IDC_PROGRAMS);
|
||||
AddButton(ResString(IDS_FAVORITES), 0, true, IDC_FAVORITES);
|
||||
AddButton(ResString(IDS_DOCUMENTS), 0, true, IDC_DOCUMENTS);
|
||||
AddButton(ResString(IDS_RECENT), 0, true, IDC_RECENT);
|
||||
AddButton(ResString(IDS_FAVORITES), 0, true, IDC_FAVORITES);
|
||||
AddButton(ResString(IDS_SETTINGS), 0, true, IDC_SETTINGS);
|
||||
AddButton(ResString(IDS_PRINTERS), 0, true, IDC_PRINTERS);
|
||||
AddButton(ResString(IDS_SETTINGS_WND), 0, false, IDC_SETTINGS_WND);
|
||||
AddButton(ResString(IDS_ADMIN), 0, true, IDC_ADMIN);
|
||||
AddButton(ResString(IDS_DRIVES), 0, true, IDC_DRIVES);
|
||||
AddButton(ResString(IDS_NETWORK), 0, true, IDC_NETWORK);
|
||||
AddButton(ResString(IDS_CONNECTIONS), 0, true, IDC_CONNECTIONS);
|
||||
AddButton(ResString(IDS_SEARCH), 0, false, IDC_SEARCH);
|
||||
AddButton(ResString(IDS_SEARCH_COMPUTER),0,false, IDC_SEARCH_COMPUTER);
|
||||
AddButton(ResString(IDS_START_HELP), 0, false, IDC_START_HELP);
|
||||
|
@ -671,6 +669,14 @@ LRESULT StartMenuRoot::Init(LPCREATESTRUCT pcs)
|
|||
}
|
||||
|
||||
|
||||
void StartMenuRoot::AddEntries()
|
||||
{
|
||||
super::AddEntries();
|
||||
|
||||
AddButton(ResString(IDS_EXPLORE), SmallIcon(IDI_EXPLORER), false, IDC_EXPLORE);
|
||||
}
|
||||
|
||||
|
||||
LRESULT StartMenuRoot::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(nmsg) {
|
||||
|
@ -726,40 +732,23 @@ int StartMenuRoot::Command(int id, int code)
|
|||
CreateSubmenu(id, CSIDL_RECENT, STARTMENU_CREATOR(RecentStartMenu));
|
||||
break;
|
||||
|
||||
case IDC_SETTINGS:
|
||||
CreateSubmenu(id, CSIDL_CONTROLS);
|
||||
break;
|
||||
|
||||
case IDC_PRINTERS:
|
||||
CreateSubmenu(id, CSIDL_PRINTERS, CSIDL_PRINTHOOD);
|
||||
break;
|
||||
|
||||
case IDC_SETTINGS_WND:
|
||||
CloseStartMenu(id);
|
||||
MainFrame::Create(_T("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"), FALSE);
|
||||
break;
|
||||
|
||||
case IDC_FAVORITES:
|
||||
CreateSubmenu(id, CSIDL_FAVORITES);
|
||||
break;
|
||||
|
||||
case IDC_ADMIN:
|
||||
CreateSubmenu(id, CSIDL_COMMON_ADMINTOOLS, CSIDL_ADMINTOOLS);
|
||||
break;
|
||||
|
||||
case IDC_NETWORK:
|
||||
CreateSubmenu(id, CSIDL_NETWORK);
|
||||
break;
|
||||
|
||||
case IDC_CONNECTIONS:
|
||||
CreateSubmenu(id, CSIDL_CONNECTIONS);
|
||||
break;
|
||||
|
||||
case IDC_DRIVES:
|
||||
//TODO: exclude removeable drives
|
||||
CreateSubmenu(id, CSIDL_DRIVES);
|
||||
break;
|
||||
|
||||
case IDC_SETTINGS:
|
||||
CreateSubmenu(id, STARTMENU_CREATOR(SettingsMenu));
|
||||
break;
|
||||
|
||||
case IDC_SEARCH:
|
||||
ShowSearchDialog();
|
||||
break;
|
||||
|
@ -847,6 +836,55 @@ void StartMenuRoot::ShowSearchComputer()
|
|||
}
|
||||
|
||||
|
||||
SettingsMenu::SettingsMenu(HWND hwnd, const StartMenuFolders& info)
|
||||
: super(hwnd, info)
|
||||
{
|
||||
}
|
||||
|
||||
void SettingsMenu::AddEntries()
|
||||
{
|
||||
super::AddEntries();
|
||||
|
||||
// insert hard coded start entries
|
||||
AddButton(ResString(IDS_SETTINGS_MENU), 0, true, IDC_SETTINGS_MENU);
|
||||
AddButton(ResString(IDS_PRINTERS), 0, true, IDC_PRINTERS);
|
||||
AddButton(ResString(IDS_CONTROL_PANEL), 0, false, IDC_CONTROL_PANEL);
|
||||
AddButton(ResString(IDS_ADMIN), 0, true, IDC_ADMIN);
|
||||
AddButton(ResString(IDS_CONNECTIONS), 0, true, IDC_CONNECTIONS);
|
||||
}
|
||||
|
||||
int SettingsMenu::Command(int id, int code)
|
||||
{
|
||||
switch(id) {
|
||||
case IDC_SETTINGS_MENU:
|
||||
CreateSubmenu(id, CSIDL_CONTROLS);
|
||||
break;
|
||||
|
||||
case IDC_PRINTERS:
|
||||
CreateSubmenu(id, CSIDL_PRINTERS, CSIDL_PRINTHOOD);
|
||||
break;
|
||||
|
||||
case IDC_CONTROL_PANEL:
|
||||
CloseStartMenu(id);
|
||||
MainFrame::Create(_T("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"), FALSE);
|
||||
break;
|
||||
|
||||
case IDC_ADMIN:
|
||||
CreateSubmenu(id, CSIDL_COMMON_ADMINTOOLS, CSIDL_ADMINTOOLS);
|
||||
break;
|
||||
|
||||
case IDC_CONNECTIONS:
|
||||
CreateSubmenu(id, CSIDL_CONNECTIONS);
|
||||
break;
|
||||
|
||||
default:
|
||||
return super::Command(id, code);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
RecentStartMenu::RecentStartMenu(HWND hwnd, const StartMenuFolders& info)
|
||||
: super(hwnd, info)
|
||||
{
|
||||
|
|
|
@ -169,9 +169,10 @@ protected:
|
|||
void AddSeparator();
|
||||
|
||||
bool CloseOtherSubmenus(int id);
|
||||
void CreateSubmenu(int id, const StartMenuFolders& new_folders, CREATORFUNC creator=s_def_creator);
|
||||
void CreateSubmenu(int id, int folder1, int folder2, CREATORFUNC creator=s_def_creator);
|
||||
void CreateSubmenu(int id, CREATORFUNC creator=s_def_creator);
|
||||
void CreateSubmenu(int id, int folder, CREATORFUNC creator=s_def_creator);
|
||||
void CreateSubmenu(int id, int folder1, int folder2, CREATORFUNC creator=s_def_creator);
|
||||
void CreateSubmenu(int id, const StartMenuFolders& new_folders, CREATORFUNC creator=s_def_creator);
|
||||
void ActivateEntry(int id, ShellEntry* entry);
|
||||
void CloseStartMenu(int id=0);
|
||||
};
|
||||
|
@ -211,6 +212,8 @@ struct StartMenuRoot : public StartMenu
|
|||
protected:
|
||||
LRESULT Init(LPCREATESTRUCT pcs);
|
||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||
|
||||
void AddEntries();
|
||||
int Command(int id, int code);
|
||||
|
||||
static void ShowLaunchDialog(HWND hwndDesktopBar);
|
||||
|
@ -223,6 +226,21 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
// Settings sub-start menu
|
||||
struct SettingsMenu : public StartMenu
|
||||
{
|
||||
typedef StartMenu super;
|
||||
|
||||
SettingsMenu(HWND hwnd, const StartMenuFolders& info);
|
||||
|
||||
void TrackStartmenu();
|
||||
|
||||
protected:
|
||||
void AddEntries();
|
||||
int Command(int id, int code);
|
||||
};
|
||||
|
||||
|
||||
struct RecentStartMenu : public StartMenu
|
||||
{
|
||||
typedef StartMenu super;
|
||||
|
|
Loading…
Reference in a new issue