1603 lines
38 KiB
C++
1603 lines
38 KiB
C++
// MainFrm.cpp : implementation of the CMainFrame class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "Styler.h"
|
|
|
|
|
|
|
|
#include "ComboBoxSearch.h"
|
|
|
|
#include "InetTools.h"
|
|
|
|
#include "MainFrm.h"
|
|
#include "StylerView.h"
|
|
#include "ChildFrm.h"
|
|
#include "FilterDialog.h"
|
|
#include "PopupFilter.h"
|
|
#include "MouseManager.h"
|
|
|
|
#include "OptionsDialog.h"
|
|
#include "CWebBrowser2.h"
|
|
|
|
|
|
#include "ControlFavorites.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
|
|
CStringArray CMainFrame::m_arrEncodingPage;
|
|
|
|
BOOL CMainFrame::m_bConfirmCloseAll = FALSE;
|
|
BOOL CMainFrame::m_bConfirmExit = FALSE;
|
|
BOOL CMainFrame::m_bOneInstance = FALSE;
|
|
int CMainFrame::m_nStartup = STARTUP_HOME;
|
|
BOOL CMainFrame::m_bRestoreWindowPos = FALSE;
|
|
|
|
XTPPaintTheme CMainFrame::m_themeCurrent = xtpThemeRibbon;
|
|
|
|
#define ID_TOGGLE_DOCK 0xDDEE
|
|
|
|
|
|
// CMainFrame
|
|
|
|
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
|
|
ON_WM_CREATE()
|
|
|
|
ON_XTP_EXECUTE(ID_GOTO_URL, OnGotoUrl)
|
|
ON_UPDATE_COMMAND_UI(ID_GOTO_URL, OnUpdateGotoUrl)
|
|
|
|
ON_XTP_EXECUTE(ID_FAVORITE_LINK, OnFavorite)
|
|
|
|
|
|
|
|
ON_XTP_EXECUTE(ID_OPENALLFOLDERITEMS, OnOpenAllItems)
|
|
|
|
ON_COMMAND(ID_ORGANIZE_FAV, OnOrganizeFavorites)
|
|
|
|
ON_COMMAND(ID_FILE_WORKOFFLINE, OnFileWorkoffline)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_WORKOFFLINE, OnUpdateFileWorkoffline)
|
|
|
|
|
|
ON_COMMAND(ID_WINDOW_CLOSE_ALL, OnWindowCloseAll)
|
|
ON_UPDATE_COMMAND_UI(ID_WINDOW_CLOSE_ALL, OnUpdateWindowCloseAll)
|
|
ON_COMMAND(ID_TOOLS_IMAGESFILTER, OnToolsImagesfilter)
|
|
ON_COMMAND(ID_TOOLS_POPUPFILTER, OnToolsPopupfilter)
|
|
|
|
ON_COMMAND(ID_TOGGLE_DOCK, OnToggleDock)
|
|
ON_COMMAND(ID_TOOLS_SWITCHTHEME, OnSwitchTheme)
|
|
|
|
ON_UPDATE_COMMAND_UI(ID_WINDOW_CASCADE, OnDisableMenu)
|
|
ON_UPDATE_COMMAND_UI(ID_WINDOW_TILE_HORZ, OnDisableMenu)
|
|
|
|
ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullscreen)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_FULLSCREEN, OnUpdateViewFullscreen)
|
|
|
|
ON_COMMAND(ID_FILE_NEW_CURRENT, OnFileNewCurrent)
|
|
ON_UPDATE_COMMAND_UI(ID_FILE_NEW_CURRENT, OnUpdateFileNewCurrent)
|
|
|
|
ON_COMMAND(ID_FILE_NEW_BLANK, OnFileNewBlank)
|
|
|
|
ON_WM_SETTINGCHANGE()
|
|
|
|
ON_COMMAND(ID_EXPLORER_SEARCH, OnExploreSearch)
|
|
ON_COMMAND(ID_EXPLORER_HISTORY, OnExploreHistory)
|
|
ON_COMMAND(ID_EXPLORER_SOURCE, OnExploreSource)
|
|
ON_COMMAND(ID_EXPLORER_FOLDER, OnExploreFolder)
|
|
ON_COMMAND(ID_EXPLORER_NOTEPAD, OnExploreNotepad)
|
|
|
|
|
|
ON_COMMAND(ID_TOOLS_STRUCTURE, OnToolsStructure)
|
|
ON_UPDATE_COMMAND_UI(ID_TOOLS_STRUCTURE, OnUpdateToolsStructure)
|
|
|
|
ON_COMMAND(ID_VIEW_ENCODING_AUTOSELECT, OnViewEncodingAuto)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_ENCODING_AUTOSELECT, OnUpdateViewEncodingAuto)
|
|
|
|
//ON_COMMAND(ID_TOOLBAR_GO, OnGotoUrl)
|
|
ON_WM_CLOSE()
|
|
ON_COMMAND(ID_TOOLS_DEFAULTBROWSER, OnSetDefault)
|
|
ON_COMMAND(ID_TOOLS_STYLEROPTIONS, OnStylerOptions)
|
|
|
|
ON_MESSAGE(WM_USER_SHELL_OPEN, OnShellOpen)
|
|
|
|
ON_XTP_EXECUTE(ID_GOTO_SEARCH, OnGotoSearch)
|
|
ON_UPDATE_COMMAND_UI(ID_INDICATOR, OnUpdateIndicator)
|
|
|
|
ON_WM_DESTROY()
|
|
|
|
ON_MESSAGE(WM_XTP_PRETRANSLATEMOUSEMSG, OnTabbarMouseMsg)
|
|
|
|
ON_COMMAND(ID_SEARCH_LIST, OnSearchList)
|
|
|
|
ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify)
|
|
|
|
ON_COMMAND_RANGE(ID_THEME_DEFAULT, ID_THEME_RIBBON, OnTheme)
|
|
ON_UPDATE_COMMAND_UI_RANGE(ID_THEME_DEFAULT, ID_THEME_RIBBON, OnUpdateTheme)
|
|
|
|
|
|
|
|
ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
|
|
ON_XTP_CREATECONTROL()
|
|
ON_MESSAGE(WM_XTP_CONTROLRBUTTONUP, OnControlRButtonUp)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
// CMainFrame construction/destruction
|
|
|
|
CMainFrame::CMainFrame()
|
|
{
|
|
m_pSession = NULL;
|
|
m_bShowStructure = FALSE;
|
|
m_hEncoding = 0;
|
|
m_hFavorites = 0;
|
|
m_bFullScreen = FALSE;
|
|
|
|
XTAuxData().UpdateSysMetrics();
|
|
|
|
TCHAR szStylesPath[_MAX_PATH];
|
|
|
|
VERIFY(::GetModuleFileName(
|
|
AfxGetApp()->m_hInstance, szStylesPath, _MAX_PATH));
|
|
|
|
m_strStylesPath = szStylesPath;
|
|
int nIndex = m_strStylesPath.ReverseFind(_T('\\'));
|
|
if (nIndex > 0) {
|
|
m_strStylesPath = m_strStylesPath.Left(nIndex);
|
|
}
|
|
else {
|
|
m_strStylesPath.Empty();
|
|
}
|
|
|
|
m_strStylesPath += _T("\\Styles\\");
|
|
}
|
|
|
|
|
|
|
|
CMainFrame::~CMainFrame()
|
|
{
|
|
if (m_bShowStructure)
|
|
{
|
|
CInetTools::SetStyleSheet(FALSE, FALSE);
|
|
}
|
|
|
|
UninitialNameSpace();
|
|
}
|
|
|
|
static UINT uHideCmds[] =
|
|
{
|
|
ID_FILE_PRINT,
|
|
ID_FILE_PRINT_PREVIEW,
|
|
ID_FILE_PRINT_SETUP,
|
|
ID_FILE_PROPERTIES,
|
|
ID_VIEW_SOURCE,
|
|
ID_VIEW_FULLSCREEN,
|
|
ID_TOOLS_STRUCTURE,
|
|
ID_TOOLS_DEFAULTBROWSER,
|
|
ID_SHOWIMAGES
|
|
};
|
|
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
if (!m_wndStatusBar.Create(this))
|
|
{
|
|
TRACE0("Failed to create status bar\n");
|
|
return -1; // fail to create
|
|
}
|
|
m_wndStatusBar.AddIndicator(0);
|
|
m_wndStatusBar.SetPaneStyle(0, SBPS_STRETCH);
|
|
|
|
m_wndStatusBar.AddIndicator(new CIndicatorStatusBarPane(), ID_INDICATOR);
|
|
m_wndStatusBar.SetPaneInfo(1, ID_INDICATOR, SBPS_NORMAL, 95);
|
|
|
|
m_wndStatusBar.AddIndicator(ID_EMPTY);
|
|
m_wndStatusBar.SetPaneInfo(2, ID_EMPTY, SBPS_NORMAL, 245);
|
|
|
|
if (!InitCommandBars())
|
|
return -1;
|
|
|
|
//XTPOffice2007Images()->SetHandle(_T("Styles\\Office2007Gray.dll"));
|
|
|
|
XTPImageManager()->SetMaskColor(RGB(0, 255, 0));
|
|
|
|
XTPImageManager()->SetIcons(IDR_MENUBAR);
|
|
|
|
CXTPCommandBars* pCommandBars = GetCommandBars();
|
|
|
|
CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
|
|
pMenuBar->SetFlags(xtpFlagHideMinimizeBox | xtpFlagHideMaximizeBox | xtpFlagIgnoreSetMenuMessage);
|
|
|
|
//SetMenu(0);
|
|
|
|
CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
|
|
if (!pCommandBar ||
|
|
!pCommandBar->LoadToolBar(IDR_MAINFRAME))
|
|
{
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1;
|
|
}
|
|
|
|
CXTPToolBar* pSearchBar = (CXTPToolBar*)pCommandBars->Add(_T("Search"), xtpBarTop);
|
|
if (!pSearchBar ||
|
|
!pSearchBar->LoadToolBar(IDR_SEARCH))
|
|
{
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1;
|
|
}
|
|
|
|
DockRightOf(pSearchBar, pCommandBar);
|
|
|
|
pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Switch Theme"), xtpBarTop);
|
|
if (!pCommandBar ||
|
|
!pCommandBar->LoadToolBar(IDR_SWITCH))
|
|
{
|
|
TRACE0("Failed to create toolbar\n");
|
|
return -1;
|
|
}
|
|
DockRightOf(pCommandBar, pSearchBar);
|
|
|
|
m_paneManager.InstallDockingPanes(this);
|
|
|
|
CXTPDockingPane* A = m_paneManager.CreatePane(IDS_TITLE_HIS, CRect(0, 0,200, 120), xtpPaneDockLeft);
|
|
CXTPDockingPane* B = m_paneManager.CreatePane(IDS_TITLE_SHELL, CRect(0, 0,200, 120), xtpPaneDockBottom, A);
|
|
CXTPDockingPane* C = m_paneManager.CreatePane(IDS_TITLE_NOTEPAD, CRect(0, 0,200, 120), xtpPaneDockRight);
|
|
CXTPDockingPane* D = m_paneManager.CreatePane(IDS_TITLE_SOURCE, CRect(0, 0,200, 120), xtpPaneDockBottom, C);
|
|
CXTPDockingPane* E = m_paneManager.CreatePane(IDS_TITLE_SEARCH, CRect(0, 0,200, 120), xtpPaneDockBottom, D);
|
|
|
|
m_paneManager.AttachPane(B, A);
|
|
m_paneManager.AttachPane(C, A);
|
|
m_paneManager.AttachPane(D, A);
|
|
m_paneManager.AttachPane(E, A);
|
|
|
|
A->Hide();
|
|
|
|
CXTPDockingPaneLayout layout(&m_paneManager);
|
|
if (layout.Load(_T("Standard")))
|
|
m_paneManager.SetLayout(&layout);
|
|
|
|
|
|
|
|
VERIFY(m_MTIClientWnd.Attach(this, TRUE));
|
|
m_MTIClientWnd.LoadState();
|
|
m_MTIClientWnd.EnableToolTips();
|
|
m_MTIClientWnd.SetFlags(xtpWorkspaceHideClose | xtpWorkspaceHideArrows | xtpWorkspaceShowCloseSelectedTab);
|
|
|
|
InitialNameSpace();
|
|
BuildEncodingMenu();
|
|
|
|
XTPPaintManager()->RefreshMetrics();
|
|
|
|
RefreshIcons();
|
|
|
|
|
|
CXTPCommandBarsOptions* pOptions = pCommandBars->GetCommandBarsOptions();
|
|
pOptions->bAlwaysShowFullMenus = FALSE;
|
|
pCommandBars->HideCommands(uHideCmds, _countof(uHideCmds));
|
|
pOptions->ShowKeyboardCues(xtpKeyboardCuesShowWindowsDefault);
|
|
pCommandBars->GetToolTipContext()->SetStyle(xtpToolTipOffice);
|
|
pCommandBars->GetShortcutManager()->SetAccelerators(IDR_MAINFRAME);
|
|
|
|
SetTheme(m_themeCurrent);
|
|
|
|
LoadCommandBars(_T("CommandBarsv2"));
|
|
|
|
return 0;
|
|
}
|
|
|
|
static LPCTSTR RegisterSimilarClass(LPCTSTR lpszNewClassName,
|
|
LPCTSTR lpszOldClassName, UINT nIDResource)
|
|
{
|
|
|
|
HINSTANCE hInst = AfxGetInstanceHandle();
|
|
WNDCLASS wc;
|
|
if (!::GetClassInfo(hInst, lpszOldClassName, &wc))
|
|
{
|
|
TRACE(_T("Can't find window class %s\n"), lpszOldClassName);
|
|
return NULL;
|
|
}
|
|
|
|
wc.lpszClassName = lpszNewClassName;
|
|
wc.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(nIDResource));
|
|
if (!AfxRegisterClass(&wc))
|
|
{
|
|
TRACE(_T("Unable to register window class%s\n"), lpszNewClassName);
|
|
return NULL;
|
|
}
|
|
return lpszNewClassName;
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
if (!CMDIFrameWnd::PreCreateWindow(cs))
|
|
return FALSE;
|
|
|
|
static LPCTSTR lpszClass = NULL;
|
|
|
|
if (lpszClass == NULL)
|
|
lpszClass = RegisterSimilarClass(_T("StylerMainWindow"), cs.lpszClass, IDR_MAINFRAME);
|
|
|
|
if (lpszClass == NULL)
|
|
return FALSE;
|
|
|
|
cs.lpszClass = lpszClass;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
// CMainFrame diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CMainFrame::AssertValid() const
|
|
{
|
|
CMDIFrameWnd::AssertValid();
|
|
}
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
{
|
|
CMDIFrameWnd::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
|
|
void CMainFrame::SetAddress(LPCTSTR lpszUrl)
|
|
{
|
|
CXTPControlComboBox* pCombo = GetAddressCombo();
|
|
if (pCombo)
|
|
{
|
|
pCombo->SetEditText(lpszUrl);
|
|
|
|
}
|
|
}
|
|
|
|
void OpenWindow(CString strUrl, BOOL bActivate, BOOL bReplaceBlank)
|
|
{
|
|
if (bReplaceBlank)
|
|
{
|
|
CChildFrame* pFrame = (CChildFrame*)((CMainFrame*)AfxGetMainWnd())->MDIGetActive();
|
|
if (pFrame)
|
|
{
|
|
CStylerView* pView = (CStylerView*)pFrame->GetActiveView();
|
|
if (pView->GetDocument()->GetCurrentUrl() == ABOUTBLANK)
|
|
{
|
|
pView->GetDocument()->SetUrl(strUrl);
|
|
pView->Navigate(strUrl);
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
CWinApp* pApp = AfxGetApp();
|
|
|
|
// Get the correct document template.
|
|
POSITION pos = pApp->GetFirstDocTemplatePosition();
|
|
CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate( pos );
|
|
|
|
CStylerDoc* pStylerDoc = (CStylerDoc*)pDocTemplate->CreateNewDocument();
|
|
pStylerDoc->SetUrl(strUrl);
|
|
// Create a new frame.
|
|
|
|
CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
|
|
pStylerDoc,
|
|
(CFrameWnd*)AfxGetMainWnd() );
|
|
|
|
// Activate the frame.
|
|
if (!bActivate) ((CChildFrame*)pFrame)->m_bActivate = FALSE;
|
|
pDocTemplate->InitialUpdateFrame( pFrame, NULL );
|
|
CStylerView* pView = (CStylerView*)pFrame->GetActiveView();
|
|
|
|
// Pass pointer of WebBrowser object.
|
|
pView->SetRegisterAsBrowser( TRUE );
|
|
pView->GetDocument()->SetUrl(strUrl);
|
|
pView->Navigate(strUrl);
|
|
}
|
|
|
|
void CommonNavigate(CMDIChildWnd* pFrame, CString& strUrl)
|
|
{
|
|
if (pFrame == NULL)
|
|
OpenWindow(strUrl);
|
|
else
|
|
{
|
|
CStylerView* pView = (CStylerView*)pFrame->GetActiveView();
|
|
if (pView)
|
|
{
|
|
pView->SetLoading(TRUE);
|
|
pView->GetDocument()->SetUrl(strUrl);
|
|
pView->Navigate(strUrl);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnGotoUrl(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
|
|
|
|
CXTPControlComboBox* pCombo = (CXTPControlComboBox*)tagNMCONTROL->pControl;
|
|
ASSERT(pCombo);
|
|
ASSERT(pCombo->GetType() == xtpControlComboBox);
|
|
|
|
CString strUrl = pCombo->GetEditText();
|
|
|
|
strUrl.TrimLeft();
|
|
|
|
if (strUrl.IsEmpty())
|
|
return;
|
|
|
|
int nIndex = strUrl.Find(' ');
|
|
if (nIndex != -1)
|
|
{
|
|
|
|
CString strKeyword = strUrl.Left(nIndex);
|
|
CString strSearch = strUrl.Mid(nIndex + 1);
|
|
strSearch.TrimLeft();
|
|
for (int i = 0; i < CPageSearch::m_arrEngines.GetSize(); i++)
|
|
{
|
|
CPageSearch::ENGINE& engine = CPageSearch::m_arrEngines[i];
|
|
if (engine.strKeyword.CompareNoCase(strKeyword) == 0)
|
|
{
|
|
strUrl = engine.strSearch;
|
|
strUrl.Replace(_T("%s"), strSearch);
|
|
CommonNavigate(MDIGetActive(), strUrl);
|
|
pCombo->SetEditText(strUrl);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
nIndex = strUrl.Find(':');
|
|
if(nIndex >= 0) strUrl.Replace('\\','/');
|
|
else strUrl = _T("http://") + strUrl;
|
|
|
|
CommonNavigate(MDIGetActive(), strUrl);
|
|
|
|
if (strUrl.Right(1) == _T("/"))
|
|
strUrl.Delete(strUrl.GetLength() - 1);
|
|
|
|
if (pCombo->FindStringExact(0, strUrl) == CB_ERR)
|
|
pCombo->InsertString(0, strUrl);
|
|
|
|
*pResult = 1;
|
|
}
|
|
|
|
void CMainFrame::OnGotoSearch(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
|
|
|
|
CComboBoxSearch* pCombo = (CComboBoxSearch*)tagNMCONTROL->pControl;
|
|
ASSERT(pCombo);
|
|
ASSERT(pCombo->GetType() == xtpControlComboBox);
|
|
|
|
|
|
int nSearch = pCombo->m_nCurrentEngine;
|
|
|
|
CString strSearch = pCombo->GetEditText();
|
|
|
|
if (!strSearch.IsEmpty() && nSearch >= 0 && nSearch < CPageSearch::m_arrEngines.GetSize())
|
|
{
|
|
CPageSearch::ENGINE& engine = CPageSearch::m_arrEngines[nSearch ];
|
|
if (engine.strTitle == strSearch)
|
|
return;
|
|
|
|
CString strUrl = engine.strSearch;
|
|
strUrl.Replace(_T("%s"), strSearch);
|
|
OpenWindow(strUrl, TRUE, TRUE);
|
|
}
|
|
|
|
*pResult = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMainFrame::OnWindowCloseAll()
|
|
{
|
|
if (m_bConfirmCloseAll)
|
|
{
|
|
if (AfxMessageBox(IDS_CONFIRM_CLOSEALL, MB_YESNO | MB_ICONQUESTION ) != IDYES)
|
|
return;
|
|
}
|
|
AfxGetApp()->CloseAllDocuments(FALSE);
|
|
}
|
|
|
|
void CMainFrame::OnUpdateWindowCloseAll(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable((CChildFrame*)MDIGetActive() != NULL);
|
|
}
|
|
|
|
void CMainFrame::OnUpdateGotoUrl(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable();
|
|
}
|
|
|
|
void CMainFrame::OnEmptyCommand()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnFavorite(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
|
|
OpenWindow(tagNMCONTROL->pControl->GetParameter(), TRUE, TRUE);
|
|
*pResult = 1;
|
|
}
|
|
|
|
void CMainFrame::OnOpenAllItems(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR;
|
|
|
|
CString strPath = tagNMCONTROL->pControl->GetParameter();
|
|
WIN32_FIND_DATA wfd;
|
|
HANDLE h;
|
|
|
|
h = FindFirstFile(strPath + _T("*.*"), &wfd);
|
|
if(h != INVALID_HANDLE_VALUE)
|
|
{
|
|
do
|
|
{
|
|
CString strFile = wfd.cFileName;
|
|
|
|
if((wfd.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM))==0 &&
|
|
strFile.Right(4).CompareNoCase(_T(".url")) == 0)
|
|
{
|
|
TCHAR buf[INTERNET_MAX_PATH_LENGTH];
|
|
::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"),
|
|
_T(""), buf, INTERNET_MAX_PATH_LENGTH,
|
|
strPath + strFile);
|
|
|
|
OpenWindow(buf);
|
|
}
|
|
} while(FindNextFile(h, &wfd));
|
|
}
|
|
FindClose(h);
|
|
|
|
*pResult = 1;
|
|
}
|
|
|
|
void CMainFrame::OnOrganizeFavorites()
|
|
{
|
|
CInetTools::MtlOrganizeFavorite(GetSafeHwnd());
|
|
}
|
|
|
|
void CMainFrame::OnFileWorkoffline()
|
|
{
|
|
CInetTools::MtlSetGlobalOffline(!CInetTools::MtlIsGlobalOffline());
|
|
}
|
|
|
|
void CMainFrame::OnUpdateFileWorkoffline(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(CInetTools::MtlIsGlobalOffline());
|
|
}
|
|
|
|
void CMainFrame::OnToolsImagesfilter()
|
|
{
|
|
CFilterDialog fd;
|
|
fd.DoModal();
|
|
}
|
|
|
|
|
|
void CMainFrame::OnToggleDock(void)
|
|
{
|
|
if (m_MTIClientWnd.GetPaintManager()->GetPosition() != xtpTabPositionTop)
|
|
m_MTIClientWnd.GetPaintManager()->SetPosition(xtpTabPositionTop);
|
|
else
|
|
m_MTIClientWnd.GetPaintManager()->SetPosition(xtpTabPositionBottom);
|
|
|
|
m_MTIClientWnd.SaveState();
|
|
RecalcLayout(TRUE);
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnDisableMenu(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable(FALSE);
|
|
}
|
|
|
|
void CMainFrame::OnViewFullscreen()
|
|
{
|
|
if (!m_bFullScreen)
|
|
{
|
|
GetWindowRect(&m_rcMainFrame);
|
|
|
|
ModifyStyle(WS_CAPTION, 0);
|
|
// Now resize the main window
|
|
int cxScrn = ::GetSystemMetrics(SM_CXSCREEN);
|
|
int cyScrn = ::GetSystemMetrics(SM_CYSCREEN);
|
|
int cxBorder = ::GetSystemMetrics(SM_CXBORDER);
|
|
int cyBorder = ::GetSystemMetrics(SM_CYBORDER);
|
|
SetWindowPos(NULL, -cxBorder, -cyBorder, cxScrn + cxBorder * 2,
|
|
cyScrn + cyBorder * 2, SWP_NOZORDER);
|
|
|
|
RecalcLayout(TRUE);
|
|
m_bFullScreen = TRUE;
|
|
} else
|
|
{
|
|
ModifyStyle(0, WS_CAPTION);
|
|
MoveWindow(&m_rcMainFrame);
|
|
|
|
RecalcLayout(TRUE);
|
|
m_bFullScreen = FALSE;
|
|
}
|
|
}
|
|
|
|
void CMainFrame::OnUpdateViewFullscreen(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(m_bFullScreen);
|
|
}
|
|
|
|
void CMainFrame::OnFileNewBlank()
|
|
{
|
|
OpenWindow(ABOUTBLANK);
|
|
CXTPControlComboBox* pCombo = GetAddressCombo();
|
|
if (pCombo) pCombo->GetEditCtrl()->SetFocus();
|
|
|
|
}
|
|
|
|
void CMainFrame::OnFileNewCurrent()
|
|
{
|
|
CChildFrame* wndBrowserFrame = (CChildFrame*)MDIGetActive();
|
|
if (wndBrowserFrame && wndBrowserFrame->GetActiveView())
|
|
{
|
|
CString str = ((CStylerView*)wndBrowserFrame->GetActiveView())->GetLocationURL();
|
|
OpenWindow(str);
|
|
|
|
}
|
|
}
|
|
|
|
void CMainFrame::OnUpdateFileNewCurrent(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->Enable((CChildFrame*)MDIGetActive() != NULL);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
|
|
{
|
|
CRect rcC;
|
|
GetClientRect(&rcC);
|
|
CMDIFrameWnd::OnSettingChange(uFlags, lpszSection);
|
|
RecalcLayout(FALSE);
|
|
RedrawWindow(FALSE);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnToolsStructure()
|
|
{
|
|
m_bShowStructure = !m_bShowStructure;
|
|
CInetTools::SetStyleSheet(m_bShowStructure, TRUE);
|
|
|
|
CChildFrame* wndBrowserFrame = (CChildFrame*)MDIGetActive();
|
|
if (wndBrowserFrame && wndBrowserFrame->GetActiveView())
|
|
{
|
|
((CStylerView*)wndBrowserFrame->GetActiveView())->Refresh();
|
|
}
|
|
|
|
}
|
|
|
|
void CMainFrame::OnUpdateToolsStructure(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(m_bShowStructure);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMainFrame::InitialNameSpace()
|
|
{
|
|
if(CoInternetGetSession(0, &m_pSession, 0)==S_OK)
|
|
{
|
|
m_pFilter = (CFilterContent*)CFilterContent::CreateObject();
|
|
|
|
m_pSession->RegisterNameSpace((LPCLASSFACTORY)m_pFilter->GetInterface(&IID_IClassFactory),
|
|
CLSID_FilterContent, L"http", 0, NULL, 0);
|
|
|
|
}
|
|
}
|
|
|
|
void CMainFrame::UninitialNameSpace()
|
|
{
|
|
if(m_pSession!=NULL)
|
|
{
|
|
m_pSession->UnregisterNameSpace((LPCLASSFACTORY)m_pFilter->GetInterface(&IID_IClassFactory), L"http");
|
|
|
|
m_pSession->Release();
|
|
m_pSession = NULL;
|
|
|
|
ASSERT(m_pFilter);
|
|
m_pFilter->InternalRelease();
|
|
m_pFilter = NULL;
|
|
}
|
|
}
|
|
|
|
void LoadEncoding(CMenu* pMenu)
|
|
{
|
|
CMainFrame::m_arrEncodingPage.RemoveAll();
|
|
|
|
TCHAR chReturn[100];
|
|
CString strLine;
|
|
int nIndex = 0;
|
|
CString strPath = GetModuleDir();
|
|
|
|
strLine.Format(_T("line%i"), nIndex);
|
|
BOOL bPrevSeparator = FALSE;
|
|
int nID = ID_VIEW_ENCODING_FIRST;
|
|
while (GetPrivateProfileString(_T("Encoding"), strLine, _T(""), chReturn, 100, strPath + _T("encoding.ini")) > 0)
|
|
{
|
|
CString strReturn(chReturn);
|
|
if (!strReturn.IsEmpty())
|
|
{
|
|
int n = strReturn.Find(',');
|
|
if (n != -1)
|
|
{
|
|
CString strPage = strReturn.Left(n);
|
|
strPage.TrimLeft(); strPage.TrimRight();
|
|
CString strDesc = strReturn.Right(strReturn.GetLength() - n - 1);
|
|
strDesc.TrimLeft(); strDesc.TrimRight();
|
|
|
|
if (!strDesc.IsEmpty() && !strPage.IsEmpty())
|
|
{
|
|
if (bPrevSeparator && nID != ID_VIEW_ENCODING_FIRST)
|
|
pMenu->AppendMenu(MF_SEPARATOR);
|
|
pMenu->AppendMenu(MF_STRING, nID++, strDesc);
|
|
|
|
CMainFrame::m_arrEncodingPage.Add(strPage);
|
|
|
|
bPrevSeparator = FALSE;
|
|
}
|
|
} else
|
|
bPrevSeparator = TRUE;
|
|
}
|
|
strLine.Format(_T("line%i"), ++nIndex);
|
|
}
|
|
|
|
}
|
|
|
|
void CMainFrame::OnViewEncodingAuto()
|
|
{
|
|
DWORD sz;
|
|
HKEY hKey;
|
|
DWORD dwSize = sizeof(DWORD);
|
|
|
|
if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\International"), &hKey) != ERROR_SUCCESS)
|
|
{
|
|
TRACE0("Global settings not found\n");
|
|
return ;
|
|
}
|
|
|
|
if(RegQueryValueEx(hKey, _T("AutoDetect"), NULL, NULL, (LPBYTE)&sz, &dwSize) == ERROR_SUCCESS)
|
|
{
|
|
//set new offline value
|
|
m_bAutoSelect = sz = !(BOOL)sz;
|
|
} else
|
|
m_bAutoSelect = sz = !m_bAutoSelect;
|
|
|
|
RegSetValueEx(hKey, _T("AutoDetect"), NULL, REG_DWORD, (LPBYTE)(&sz), dwSize);
|
|
|
|
|
|
CChildFrame* wndBrowserFrame = (CChildFrame*)MDIGetActive();
|
|
if (wndBrowserFrame && wndBrowserFrame->GetActiveView())
|
|
{
|
|
((CStylerView*)(wndBrowserFrame->GetActiveView()))->Refresh2(1);
|
|
}
|
|
|
|
RegCloseKey(hKey);
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::BuildEncodingMenu()
|
|
{
|
|
/*CXTPControl* pControl = GetCommandBars()->FindControl(xtpControlButton, ID_VIEW_ENCODING, FALSE, TRUE);
|
|
ASSERT(pControl);
|
|
|
|
if (pControl)
|
|
{
|
|
CMenu menuPopup;
|
|
menuPopup.CreatePopupMenu();
|
|
|
|
LoadEncoding(&menuPopup);
|
|
|
|
if (menuPopup.GetMenuItemCount())
|
|
{
|
|
menuPopup.InsertMenu(0, MF_BYPOSITION | MF_STRING, ID_VIEW_ENCODING_AUTOSELECT, "Auto Select");
|
|
menuPopup.InsertMenu(1, MF_BYPOSITION | MF_SEPARATOR);
|
|
|
|
CXTPControlPopup* pPopup = (CXTPControlPopup*)pControl->GetControls()->SetControlType(pControl, xtpControlPopup);
|
|
pPopup->SetCommandBar(&menuPopup);
|
|
pPopup->SetID(0);
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|
|
m_bAutoSelect = FALSE;
|
|
HKEY hKey;
|
|
if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\International"), &hKey) == ERROR_SUCCESS)
|
|
{
|
|
|
|
DWORD dwSize = sizeof(m_bAutoSelect);
|
|
RegQueryValueEx(hKey, _T("AutoDetect"), NULL, NULL, (LPBYTE)&m_bAutoSelect, &dwSize);
|
|
RegCloseKey(hKey);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateViewEncodingAuto(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(m_bAutoSelect);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnToolsPopupfilter()
|
|
{
|
|
CPopupFilter fd;
|
|
fd.DoModal();
|
|
}
|
|
|
|
void CMainFrame::OnClose()
|
|
{
|
|
|
|
if (m_bConfirmExit && MDIGetActive())
|
|
{
|
|
if (AfxMessageBox(IDS_CONFIRM_CLOSEALL, MB_YESNO | MB_ICONQUESTION ) != IDYES)
|
|
return;
|
|
}
|
|
|
|
CComboBoxURL* pComboURL = DYNAMIC_DOWNCAST(CComboBoxURL, GetAddressCombo());
|
|
if (pComboURL) pComboURL->SaveTypedURL();
|
|
|
|
if (m_nStartup == STARTUP_LASTVISITED)
|
|
{
|
|
CString strPopups;
|
|
int nIndex = AFX_IDM_FIRST_MDICHILD;
|
|
|
|
CWnd* pMDIClient = CWnd::FromHandle(m_hWndMDIClient);
|
|
CChildFrame* pWnd = (CChildFrame*) pMDIClient->GetDlgItem(nIndex);
|
|
|
|
while (pWnd)
|
|
{
|
|
CStylerView* pView = (CStylerView*)pWnd->GetActiveView();
|
|
ASSERT(pView);
|
|
|
|
if (pView) strPopups += pView->GetDocument()->GetCurrentUrl() + _T(";");
|
|
|
|
pWnd = (CChildFrame*) pMDIClient->GetDlgItem(++nIndex);
|
|
}
|
|
|
|
AfxGetApp()->WriteProfileString(_T("MainFrame"), _T("LastVisited"), strPopups);
|
|
|
|
}
|
|
|
|
CWindowPlacement(this, _T("Main Frame")).SaveWindowPos();
|
|
|
|
SaveCommandBars(_T("CommandBarsv2"));
|
|
|
|
CMDIFrameWnd::OnClose();
|
|
}
|
|
|
|
|
|
|
|
void SetDefault(LPCTSTR lpszKey, BOOL = TRUE)
|
|
{
|
|
HKEY hKey, hSubKey, hSubKey2;
|
|
|
|
if(RegOpenKey(HKEY_CLASSES_ROOT, lpszKey, &hKey) == ERROR_SUCCESS)
|
|
{
|
|
DWORD dwRes;
|
|
TCHAR lpszModule[_MAX_PATH];
|
|
HINSTANCE hInstance = AfxGetInstanceHandle();
|
|
|
|
RegSetValueEx(hKey, _T(""), NULL, REG_SZ, (LPBYTE)(_T("Styler")), 7 * sizeof(TCHAR));
|
|
|
|
//open
|
|
RegCreateKeyEx(hKey, _T("open"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwRes);
|
|
RegCreateKeyEx(hSubKey, _T("command"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey2, &dwRes);
|
|
|
|
if (GetModuleFileName(hInstance, lpszModule + 1, _MAX_PATH))
|
|
{
|
|
*lpszModule = _T('\"');
|
|
#if (_MSC_VER > 1310) // VS2005
|
|
_tcscat_s(lpszModule, _MAX_PATH, _T("\" \"%1\""));
|
|
#else
|
|
_tcscat(lpszModule, _T("\" \"%1\""));
|
|
#endif
|
|
RegSetValueEx(hSubKey2, _T(""), NULL, REG_SZ, (LPBYTE)(lpszModule), ((int)_tcsclen(lpszModule) + 1) * sizeof(TCHAR));
|
|
}
|
|
|
|
RegCloseKey(hSubKey);
|
|
RegCloseKey(hSubKey2);
|
|
|
|
|
|
//myie
|
|
RegCreateKeyEx(hKey, _T("Styler"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwRes);
|
|
RegCloseKey(hKey);
|
|
RegCreateKeyEx(hSubKey, _T("command"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwRes);
|
|
|
|
|
|
if (GetModuleFileName(hInstance, lpszModule+1, _MAX_PATH))
|
|
{
|
|
*lpszModule = _T('\"');
|
|
#if (_MSC_VER > 1310) // VS2005
|
|
_tcscat_s(lpszModule, _MAX_PATH, _T("\" \"%1\""));
|
|
#else
|
|
_tcscat(lpszModule, _T("\" \"%1\""));
|
|
#endif
|
|
RegSetValueEx(hKey, _T(""), NULL, REG_SZ, (LPBYTE)(lpszModule), ((int)_tcsclen(lpszModule) + 1) * sizeof(TCHAR));
|
|
|
|
}
|
|
|
|
RegCloseKey(hSubKey);
|
|
RegCloseKey(hKey);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CMainFrame::OnSetDefault()
|
|
{
|
|
SetDefault(_T("htmlfile\\shell"));
|
|
SetDefault(_T("InternetShortcut\\shell"));
|
|
SetDefault(_T("mhtmlfile\\shell"));
|
|
SetDefault( _T("http\\shell"));
|
|
SetDefault( _T("https\\shell"));
|
|
SetDefault( _T("file\\shell"));
|
|
SetDefault( _T("ftp\\shell"));
|
|
}
|
|
|
|
void CMainFrame::Properties(int nPage)
|
|
{
|
|
COptionsDialog od;
|
|
|
|
CPageGeneral pageGeneral;
|
|
|
|
int nDocking = pageGeneral.m_nDocking = m_MTIClientWnd.GetPaintManager()->GetPosition()==xtpTabPositionBottom? 1 : 0;
|
|
pageGeneral.m_bConfirmExit = m_bConfirmExit;
|
|
pageGeneral.m_bConfirmCloseAll = m_bConfirmCloseAll;
|
|
pageGeneral.m_bOneInstance = m_bOneInstance;
|
|
pageGeneral.m_nStartup = m_nStartup;
|
|
pageGeneral.m_bRestoreWindowPos = m_bRestoreWindowPos;
|
|
|
|
od.AddPage(&pageGeneral);
|
|
|
|
CPageKeyboard pageKeyboard;
|
|
od.AddPage(&pageKeyboard);
|
|
|
|
CPageMouse pageMouse;
|
|
od.AddPage(&pageMouse);
|
|
|
|
CPageSearch pageSearch;
|
|
od.AddPage(&pageSearch);
|
|
|
|
od.SetActivePage(nPage);
|
|
|
|
if (od.DoModal() == IDOK)
|
|
{
|
|
if (pageGeneral.m_nDocking != nDocking)
|
|
OnToggleDock();
|
|
|
|
m_bConfirmExit = pageGeneral.m_bConfirmExit;
|
|
m_bConfirmCloseAll = pageGeneral.m_bConfirmCloseAll;
|
|
m_bOneInstance = pageGeneral.m_bOneInstance;
|
|
m_nStartup = pageGeneral.m_nStartup;
|
|
m_bRestoreWindowPos = pageGeneral.m_bRestoreWindowPos;
|
|
|
|
Save();
|
|
}
|
|
}
|
|
|
|
void CMainFrame::OnSearchList()
|
|
{
|
|
Properties(3);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnStylerOptions()
|
|
{
|
|
Properties(0);
|
|
|
|
}
|
|
|
|
void CMainFrame::Load()
|
|
{
|
|
m_bConfirmExit = AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("ConfirmExit"), m_bConfirmExit);
|
|
m_bConfirmCloseAll = AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("ConfirmCloseAll"), m_bConfirmCloseAll);
|
|
m_bOneInstance = AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("OneInstance"), m_bOneInstance);
|
|
m_nStartup = AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("Startup"), m_nStartup);
|
|
m_bRestoreWindowPos = AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("RestoreWindowPos"), m_bRestoreWindowPos);
|
|
m_themeCurrent = (XTPPaintTheme)AfxGetApp()->GetProfileInt(_T("MainFrame"), _T("Theme"), m_themeCurrent);
|
|
|
|
|
|
}
|
|
void CMainFrame::Save()
|
|
{
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("ConfirmExit"), m_bConfirmExit);
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("ConfirmCloseAll"), m_bConfirmCloseAll);
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("OneInstance"), m_bOneInstance);
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("Startup"), m_nStartup);
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("RestoreWindowPos"), m_bRestoreWindowPos);
|
|
AfxGetApp()->WriteProfileInt(_T("MainFrame"), _T("Theme"), m_themeCurrent);
|
|
}
|
|
|
|
|
|
LRESULT CMainFrame::OnShellOpen(WPARAM, LPARAM)
|
|
{
|
|
try
|
|
{
|
|
HANDLE hMapping = CreateFileMapping( INVALID_HANDLE_VALUE, NULL,
|
|
PAGE_READWRITE, 0, 2560, _T("STYLERSHARE"));
|
|
|
|
if (hMapping == NULL)
|
|
{
|
|
TRACE(_T("Fail to create share memory!"));
|
|
return FALSE;
|
|
}
|
|
|
|
LPTSTR lpData = (LPTSTR) MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
|
|
if (lpData == NULL)
|
|
{
|
|
TRACE(_T("MapViewOfFile Fail"));
|
|
CloseHandle(hMapping);
|
|
return FALSE;
|
|
}
|
|
|
|
CString strURL = lpData;
|
|
UnmapViewOfFile(lpData);
|
|
CloseHandle(hMapping);
|
|
|
|
TCHAR buf[INTERNET_MAX_PATH_LENGTH];
|
|
|
|
if(strURL.Right(4).CompareNoCase(_T(".url")) == 0)
|
|
{
|
|
::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"),
|
|
_T(""), buf, INTERNET_MAX_PATH_LENGTH, strURL);
|
|
|
|
strURL = buf;
|
|
}
|
|
|
|
OpenWindow(strURL);
|
|
|
|
}
|
|
catch(...)
|
|
{
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
void CMainFrame::OpenLastVisited()
|
|
{
|
|
CString strBuffer = AfxGetApp()->GetProfileString(_T("MainFrame"), _T("LastVisited"));
|
|
|
|
if (!strBuffer.IsEmpty())
|
|
{
|
|
LPTSTR pBuffer = strBuffer.GetBuffer(0);
|
|
|
|
TCHAR* lpszContext = 0;
|
|
|
|
TCHAR* token = STRTOK_S(pBuffer, _T(";"), &lpszContext);
|
|
while (token)
|
|
{
|
|
OpenWindow(token);
|
|
token = STRTOK_S( NULL, _T(";"), &lpszContext);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMainFrame::OnUpdateIndicator(CCmdUI *pCmdUI)
|
|
{
|
|
ASSERT_KINDOF(CXTPStatusBar, pCmdUI->m_pOther);
|
|
((CIndicatorStatusBar*) pCmdUI->m_pOther)->SetProgress(0);
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnDestroy()
|
|
{
|
|
CXTPDockingPaneLayout layout(&m_paneManager);
|
|
m_paneManager.GetLayout(&layout);
|
|
layout.Save(_T("Standard"));
|
|
|
|
m_MTIClientWnd.Detach();
|
|
|
|
|
|
CMDIFrameWnd::OnDestroy();
|
|
}
|
|
|
|
CXTPControlComboBox* GetAddressCombo()
|
|
{
|
|
return (CXTPControlComboBox*) GetMainFrame()->GetCommandBars()->FindControl(xtpControlComboBox, ID_GOTO_URL, FALSE, FALSE);
|
|
}
|
|
|
|
|
|
void CMainFrame::SetDockingPaneIcon(UINT nIDPane, UINT nIDIcon)
|
|
{
|
|
CXTPImageManagerIcon* pIcon = XTPImageManager()->GetImage(nIDIcon);
|
|
m_paneManager.SetIcon(nIDPane, pIcon->GetIcon());
|
|
|
|
}
|
|
|
|
void CMainFrame::RefreshIcons()
|
|
{
|
|
|
|
XTPImageManager()->SetIcons(IDR_MAINFRAME, IDR_MAINFRAME);
|
|
XTPImageManager()->SetIcons(IDR_SEARCH, IDR_SEARCH);
|
|
XTPImageManager()->SetIcons(IDR_MENUBAR, IDR_MENUBAR);
|
|
|
|
XTPPaintManager()->GetIconsInfo()->bUseDisabledIcons = TRUE;
|
|
|
|
SetDockingPaneIcon(IDS_TITLE_SOURCE, ID_EXPLORER_SOURCE);
|
|
SetDockingPaneIcon(IDS_TITLE_SHELL, ID_EXPLORER_FOLDER);
|
|
SetDockingPaneIcon(IDS_TITLE_HIS, ID_EXPLORER_HISTORY);
|
|
SetDockingPaneIcon(IDS_TITLE_NOTEPAD, ID_EXPLORER_NOTEPAD);
|
|
SetDockingPaneIcon(IDS_TITLE_SEARCH, ID_EXPLORER_SEARCH);
|
|
}
|
|
|
|
void CMainFrame::SetTheme(XTPPaintTheme theme)
|
|
{
|
|
m_themeCurrent = theme;
|
|
m_paneManager.SetTheme(
|
|
m_themeCurrent == xtpThemeOffice2000 ? xtpPaneThemeDefault:
|
|
m_themeCurrent == xtpThemeOfficeXP ? xtpPaneThemeOffice:
|
|
m_themeCurrent == xtpThemeOffice2003 ? xtpPaneThemeOffice2003:
|
|
m_themeCurrent == xtpThemeOffice2007 ? xtpPaneThemeOffice2007:
|
|
m_themeCurrent == xtpThemeRibbon ? xtpPaneThemeOffice2007:
|
|
m_themeCurrent == xtpThemeWhidbey ? xtpPaneThemeVisualStudio2005:
|
|
xtpPaneThemeNativeWinXP);
|
|
|
|
CXTPPaintManager::SetTheme(theme);
|
|
|
|
EnableOffice2007Frame(theme == xtpThemeRibbon || theme == xtpThemeOffice2007 ? GetCommandBars() : 0);
|
|
|
|
if (theme == xtpThemeOffice2000 || theme == xtpThemeNativeWinXP)
|
|
{
|
|
((CXTPDefaultTheme*)XTPPaintManager())->m_bSelectImageInPopupBar = TRUE;
|
|
((CXTPDefaultTheme*)XTPPaintManager())->m_bThickCheckMark = TRUE;
|
|
XTPPaintManager()->GetIconsInfo()->bUseFadedIcons = FALSE;
|
|
}
|
|
|
|
if (m_themeCurrent == xtpThemeRibbon)
|
|
{
|
|
m_MTIClientWnd.UpdateContents();
|
|
m_MTIClientWnd.GetPaintManager()->SetAppearance(xtpTabAppearancePropertyPage2007);
|
|
m_MTIClientWnd.GetPaintManager()->m_rcButtonMargin.SetRect(2, 2, 2, 2);
|
|
}
|
|
|
|
XTPPaintManager()->GetIconsInfo()->bUseDisabledIcons = TRUE;
|
|
|
|
RecalcLayout(FALSE);
|
|
GetCommandBars()->RedrawCommandBars();
|
|
RedrawWindow();
|
|
}
|
|
|
|
void CMainFrame::OnTheme(UINT nTheme)
|
|
{
|
|
SetTheme((XTPPaintTheme)(nTheme - ID_THEME_DEFAULT));
|
|
}
|
|
|
|
void CMainFrame::OnUpdateTheme(CCmdUI *pCmdUI)
|
|
{
|
|
pCmdUI->SetCheck(int(pCmdUI->m_nID - ID_THEME_DEFAULT) == m_themeCurrent? TRUE: FALSE);
|
|
}
|
|
|
|
void CMainFrame::OnSwitchTheme()
|
|
{
|
|
if (m_themeCurrent == xtpThemeRibbon)
|
|
SetTheme(xtpThemeOffice2000);
|
|
else
|
|
SetTheme((XTPPaintTheme)(m_themeCurrent + 1));
|
|
}
|
|
|
|
LRESULT CMainFrame::OnTabbarMouseMsg(WPARAM wParam,LPARAM lParam)
|
|
{
|
|
CPoint point = CPoint((DWORD)lParam);
|
|
|
|
CXTPTabManagerItem* pItem = m_MTIClientWnd.HitTest(point);
|
|
if (pItem)
|
|
{
|
|
CWnd* pFrame = CWnd::FromHandle(pItem->GetHandle());
|
|
if (GetActiveFrame() != pFrame)
|
|
{
|
|
MDIActivate(pFrame);
|
|
m_MTIClientWnd.Refresh();
|
|
}
|
|
|
|
int nCommand = CMouseManager::FindMouseCommand(MOUSE_AREA_TAB, (DWORD)wParam);
|
|
if (nCommand != -1)
|
|
{
|
|
PostMessage(WM_COMMAND, nCommand);
|
|
return TRUE;
|
|
}
|
|
|
|
if (wParam == WM_RBUTTONDOWN)
|
|
{
|
|
|
|
CMenu menuPopup;
|
|
menuPopup.LoadMenu(IDR_WORKSPACE_POPUP);
|
|
|
|
m_MTIClientWnd.WorkspaceToScreen(&point);
|
|
|
|
CXTPCommandBars::TrackPopupMenu(menuPopup.GetSubMenu(0), TPM_RIGHTBUTTON, point.x, point.y, this);
|
|
|
|
m_MTIClientWnd.Refresh();
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
int nCommand = CMouseManager::FindMouseCommand(MOUSE_AREA_TABBAR, (DWORD)wParam);
|
|
if (nCommand != -1)
|
|
{
|
|
PostMessage(WM_COMMAND, nCommand);
|
|
return TRUE;
|
|
}
|
|
|
|
if (wParam == WM_RBUTTONDOWN)
|
|
{
|
|
CMenu menuPopup;
|
|
menuPopup.CreatePopupMenu();
|
|
menuPopup.AppendMenu(MF_STRING, ID_WINDOW_CLOSE_ALL, _T("&Close All"));
|
|
menuPopup.AppendMenu(MF_STRING, ID_TOGGLE_DOCK, _T("&Toggle Docking"));
|
|
|
|
m_MTIClientWnd.WorkspaceToScreen(&point);
|
|
CXTPCommandBars::TrackPopupMenu(&menuPopup, TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
|
|
|
|
m_MTIClientWnd.Refresh();
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
if (wParam != XTP_DPN_SHOWWINDOW)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
|
|
if (!pPane->IsValid())
|
|
{
|
|
|
|
//int nIndex = pPane->GetID() - IDS_TITLE_SEARCH;
|
|
switch(pPane->GetID())
|
|
{
|
|
case IDS_TITLE_HIS:
|
|
if (!m_bars.wndHistory.GetWindow()->m_hWnd)
|
|
{
|
|
m_bars.wndHistory.Create(this);
|
|
m_bars.wndHistory.Initialize();
|
|
}
|
|
pPane->Attach(m_bars.wndHistory.GetWindow());
|
|
break;
|
|
case IDS_TITLE_SHELL:
|
|
if (!m_bars.wndShell.m_hWnd)
|
|
{
|
|
m_bars.wndShell.Create(WS_VISIBLE|WS_CHILD, CRect(0,0,0,0), this, 100);
|
|
m_bars.wndShell.Init();
|
|
}
|
|
pPane->Attach(&m_bars.wndShell);
|
|
break;
|
|
case IDS_TITLE_NOTEPAD:
|
|
|
|
if (!m_bars.wndNotepad.m_hWnd)
|
|
{
|
|
m_bars.wndNotepad.Create(this);
|
|
}
|
|
pPane->Attach(&m_bars.wndNotepad);
|
|
break;
|
|
case IDS_TITLE_SOURCE:
|
|
if (!m_bars.wndSource.m_hWnd)
|
|
{
|
|
m_bars.wndSource.Create(this);
|
|
}
|
|
{
|
|
CChildFrame* wndBrowserFrame = (CChildFrame*)MDIGetActive();
|
|
if (wndBrowserFrame && wndBrowserFrame->GetActiveView())
|
|
{
|
|
m_bars.wndSource.Refresh((CStylerView*)wndBrowserFrame->GetActiveView(), TRUE);
|
|
}
|
|
}
|
|
|
|
pPane->Attach(&m_bars.wndSource);
|
|
break;
|
|
case IDS_TITLE_SEARCH:
|
|
if (!m_bars.wndSearch.m_hWnd)
|
|
{
|
|
m_bars.wndSearch.Create(_T("STATIC"), _T(""), WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, CRect(0, 0, 0, 0), this, 0);
|
|
m_bars.wndSearch.OnViewSearch();
|
|
}
|
|
pPane->Attach(&m_bars.wndSearch);
|
|
break;
|
|
}
|
|
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void CMainFrame::OnExploreSearch()
|
|
{
|
|
m_paneManager.ShowPane(IDS_TITLE_SEARCH);
|
|
}
|
|
|
|
void CMainFrame::OnExploreHistory()
|
|
{
|
|
m_paneManager.ShowPane(IDS_TITLE_HIS);
|
|
}
|
|
|
|
void CMainFrame::OnExploreFolder()
|
|
{
|
|
m_paneManager.ShowPane(IDS_TITLE_SHELL);
|
|
}
|
|
|
|
void CMainFrame::OnExploreSource()
|
|
{
|
|
m_paneManager.ShowPane(IDS_TITLE_SOURCE);
|
|
|
|
}
|
|
|
|
void CMainFrame::OnExploreNotepad()
|
|
{
|
|
m_paneManager.ShowPane(IDS_TITLE_NOTEPAD);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnCustomize()
|
|
{
|
|
CXTPCustomizeSheet cs(GetCommandBars());
|
|
|
|
CXTPCustomizeOptionsPage pageOptions(&cs);
|
|
cs.AddPage(&pageOptions);
|
|
|
|
CXTPCustomizeCommandsPage* pCommands = cs.GetCommandsPage();
|
|
pCommands->AddCategories(IDR_CUSTOMIZE);
|
|
|
|
pCommands->InsertAllCommandsCategory();
|
|
pCommands->InsertBuiltInMenus(IDR_MAINFRAME);
|
|
pCommands->InsertNewMenuCategory();
|
|
|
|
cs.DoModal();
|
|
}
|
|
|
|
LRESULT CMainFrame::OnControlRButtonUp(WPARAM, LPARAM lParam)
|
|
{
|
|
CXTPControl* pControl = (CXTPControl*)lParam;
|
|
if (pControl->GetID() == ID_FAVORITE_LINK)
|
|
{
|
|
CControlFavoriteLink* pLink = DYNAMIC_DOWNCAST(CControlFavoriteLink, pControl);
|
|
if (!pLink)
|
|
return FALSE;
|
|
|
|
CMenu menu;
|
|
menu.LoadMenu(IDR_MENU_FAVORITE_LINK);
|
|
|
|
CPoint pt;
|
|
GetCursorPos(&pt);
|
|
|
|
UINT nReturn = CXTPCommandBars::TrackPopupMenu(menu.GetSubMenu(0), TPM_NONOTIFY|TPM_RECURSE|TPM_RETURNCMD, pt.x, pt.y, this);
|
|
|
|
switch (nReturn)
|
|
{
|
|
case ID_LINK_OPEN:
|
|
XTPMouseManager()->SendTrackLost();
|
|
pControl->OnExecute();
|
|
break;
|
|
|
|
case ID_LINK_PROPERTIES:
|
|
XTPMouseManager()->SendTrackLost();
|
|
ShellExecute(m_hWnd, _T("properties"), pLink->m_strFileName, NULL, NULL, SW_SHOWNORMAL);
|
|
|
|
break;
|
|
}
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
|
|
{
|
|
class CXTPControlFriendly: public CXTPControl
|
|
{
|
|
friend class CMainFrame;
|
|
};
|
|
|
|
|
|
if (lpCreateControl->bToolBar)
|
|
{
|
|
CXTPToolBar* pToolBar = DYNAMIC_DOWNCAST(CXTPToolBar, lpCreateControl->pCommandBar);
|
|
if (!pToolBar)
|
|
return FALSE;
|
|
|
|
if (lpCreateControl->nID == ID_TOOLS_SWITCHTHEME && pToolBar->GetBarID() == IDR_SWITCH)
|
|
{
|
|
lpCreateControl->buttonStyle = xtpButtonCaption;
|
|
lpCreateControl->controlType = xtpControlSplitButtonPopup;
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
if (pToolBar->GetBarID() == IDR_MAINFRAME &&
|
|
(
|
|
lpCreateControl->nID == ID_EDIT_CUT ||
|
|
lpCreateControl->nID == ID_EDIT_COPY ||
|
|
lpCreateControl->nID == ID_EDIT_PASTE ||
|
|
|
|
lpCreateControl->nID == ID_EXPLORER_SOURCE ||
|
|
lpCreateControl->nID == ID_EXPLORER_FOLDER ||
|
|
lpCreateControl->nID == ID_EXPLORER_HISTORY ||
|
|
lpCreateControl->nID == ID_EXPLORER_NOTEPAD))
|
|
{
|
|
CXTPControlButton* pButton = (CXTPControlButton*)CXTPControlButton::CreateObject();
|
|
pButton->SetHideFlags(xtpHideCustomize);
|
|
lpCreateControl->pControl = pButton;
|
|
return TRUE;
|
|
}
|
|
|
|
if (lpCreateControl->nID == ID_GOTO_URL && pToolBar->GetBarID() == IDR_MAINFRAME)
|
|
{
|
|
CComboBoxURL* pComboAddress = new CComboBoxURL(GetCommandBars());
|
|
pComboAddress->UpdateComboBox();
|
|
pComboAddress->SetWidth(350);
|
|
pComboAddress->SetDropDownListStyle();
|
|
pComboAddress->EnableShellAutoComplete();
|
|
|
|
lpCreateControl->pControl = pComboAddress;
|
|
return TRUE;
|
|
}
|
|
|
|
if (lpCreateControl->nID == ID_GOTO_SEARCH && pToolBar->GetBarID() == IDR_SEARCH)
|
|
{
|
|
CComboBoxSearch* pComboSearch = new CComboBoxSearch(GetCommandBars());
|
|
pComboSearch->SetStyle(xtpComboLabel);
|
|
pComboSearch->SetDropDownListStyle();
|
|
pComboSearch->SetWidth(150);
|
|
pComboSearch->SetFlags(xtpFlagManualUpdate);
|
|
|
|
lpCreateControl->pControl = pComboSearch;
|
|
return TRUE;
|
|
}
|
|
|
|
if (lpCreateControl->nID == ID_LINKS && pToolBar->GetBarID() == IDR_MAINFRAME)
|
|
{
|
|
CXTPControlPopup* pLinks = CXTPControlPopup::CreateControlPopup(xtpControlButtonPopup);
|
|
pLinks->SetFlags(xtpFlagManualUpdate);
|
|
|
|
CXTPPopupBar* pPopup = CXTPPopupBar::CreatePopupBar(GetCommandBars());
|
|
|
|
CString strFavoriteDir;
|
|
CInetTools::GetFavoriteFolder(strFavoriteDir);
|
|
|
|
pPopup->GetControls()->Add(new CControlFavoriteFolder(strFavoriteDir), ID_FAVORITES_EX);
|
|
|
|
pLinks->SetCommandBar(pPopup);
|
|
|
|
pPopup->InternalRelease();
|
|
|
|
lpCreateControl->pControl = pLinks;
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (lpCreateControl->nID == ID_FAVORITES_EX)
|
|
{
|
|
CString strFavoriteDir;
|
|
CInetTools::GetFavoriteFolder(strFavoriteDir);
|
|
|
|
lpCreateControl->pControl = new CControlFavoriteFolder(strFavoriteDir);
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (lpCreateControl->nID == ID_VIEW_ENCODING)
|
|
{
|
|
|
|
CXTPControlPopup* pControl = CXTPControlPopup::CreateControlPopup(lpCreateControl->bToolBar? xtpControlButtonPopup: xtpControlPopup);
|
|
|
|
CMenu menuPopup;
|
|
menuPopup.CreatePopupMenu();
|
|
|
|
LoadEncoding(&menuPopup);
|
|
|
|
if (menuPopup.GetMenuItemCount())
|
|
{
|
|
menuPopup.InsertMenu(0, MF_BYPOSITION | MF_STRING, ID_VIEW_ENCODING_AUTOSELECT, _T("Auto Select"));
|
|
menuPopup.InsertMenu(1, MF_BYPOSITION | MF_SEPARATOR);
|
|
|
|
|
|
pControl->SetCommandBar(&menuPopup);
|
|
pControl->SetFlags(xtpFlagManualUpdate);
|
|
} else
|
|
{
|
|
CXTPPopupBar* pPopupBar = CXTPPopupBar::CreatePopupBar(GetCommandBars());
|
|
pControl->SetCommandBar(pPopupBar);
|
|
pPopupBar->InternalRelease();
|
|
|
|
pControl->SetVisible(FALSE);
|
|
}
|
|
|
|
if (lpCreateControl->bToolBar)
|
|
pControl->SetHideFlags(xtpHideCustomize);
|
|
|
|
lpCreateControl->pControl = pControl;
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
CWindowPlacement::CWindowPlacement(CWnd* pOwner, CString strEntry)
|
|
{
|
|
ASSERT(!strEntry.IsEmpty() && pOwner);
|
|
m_pOwner = pOwner;
|
|
m_strEntry = strEntry;
|
|
}
|
|
|
|
void CWindowPlacement::ShowWindow(int nCmdShow, BOOL bRestore)
|
|
{
|
|
if (bRestore )
|
|
{
|
|
WINDOWPLACEMENT* lpwndpl;
|
|
UINT nBytes;
|
|
|
|
if ( AfxGetApp()->GetProfileBinary( m_strEntry,
|
|
_T("WndPlacement"), ( LPBYTE* )&lpwndpl, &nBytes ) )
|
|
{
|
|
// Only restore if window intersects the screen
|
|
if ( CRect().IntersectRect(&lpwndpl->rcNormalPosition, CXTPWindowRect(GetDesktopWindow()) ) )
|
|
{
|
|
if (lpwndpl->showCmd == SW_MAXIMIZE)
|
|
nCmdShow = SW_MAXIMIZE;
|
|
|
|
m_pOwner->SetWindowPlacement( lpwndpl );
|
|
}
|
|
|
|
delete lpwndpl;
|
|
}
|
|
}
|
|
m_pOwner->ShowWindow(nCmdShow);
|
|
}
|
|
|
|
void CWindowPlacement::SaveWindowPos()
|
|
{
|
|
WINDOWPLACEMENT wndpl = { sizeof(WINDOWPLACEMENT) };
|
|
|
|
if ( m_pOwner->GetWindowPlacement( &wndpl ) )
|
|
{
|
|
AfxGetApp()->WriteProfileBinary( m_strEntry,
|
|
_T("WndPlacement"), ( LPBYTE )&wndpl, wndpl.length );
|
|
}
|
|
}
|