1
0
mirror of https://github.com/azure-rtos/guix.git synced 2025-02-04 07:13:17 +08:00
guix/guix_studio/folder_name_dlg.cpp

190 lines
5.0 KiB
C++

// folder_name_dlg.cpp : implementation file
//
#include "stdafx.h"
#include "studiox.h"
#include "studiox_includes.h"
#include "folder_name_dlg.h"
enum folder_name_test_commands{
TEST_SET_FOLDER_NAME = 1,
TEST_SAVE_FOLDER_NAME_EDIT,
TEST_CHECK_SPECIFY_OUTPUT_FILE,
TEST_SET_FOLDER_OUTPUT_FILE_NAME
};
// folder_name_dlg dialog
enum ItemType {
TYPE_RESOURCE_FOLDER = 1,
TYPE_PROJECT_VIEW_FOLDER,
};
BEGIN_MESSAGE_MAP(folder_name_dlg, express_dialog)
ON_EN_CHANGE(IDC_FOLDER_NAME, &folder_name_dlg::OnEnChangeFolderName)
ON_BN_CLICKED(IDC_CUSTOM_FOLDER_OUTPUT, &folder_name_dlg::OnBnClickedCustomOutput)
ON_MESSAGE(STUDIO_TEST, &folder_name_dlg::OnTestMessage)
ON_BN_CLICKED(IDOK, OnOK)
END_MESSAGE_MAP()
IMPLEMENT_DYNAMIC(folder_name_dlg, express_dialog)
folder_name_dlg::folder_name_dlg(res_info *info, CWnd* pParent /*=NULL*/)
: express_dialog(folder_name_dlg::IDD, pParent)
{
folder_name = info->name;
output_filename.Empty();
input_item_type = TYPE_RESOURCE_FOLDER;
IconId = IDB_FOLDER_RENAME;
SetTitleText("Edit Folder Name");
}
folder_name_dlg::folder_name_dlg(folder_info *info, CWnd* pParent /*=NULL*/)
: express_dialog(folder_name_dlg::IDD, pParent)
{
folder_name = info->folder_name;
output_filename = info->output_filename;
input_item_type = TYPE_PROJECT_VIEW_FOLDER;
IconId = IDB_FOLDER_RENAME;
SetTitleText("Edit Folder Name");
}
folder_name_dlg::~folder_name_dlg()
{
}
void folder_name_dlg::DoDataExchange(CDataExchange* pDX)
{
express_dialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_FOLDER_NAME, folder_name);
DDX_Text(pDX, IDC_FOLDER_OUTPUT_FILENAME, output_filename);
}
void folder_name_dlg::OnEnChangeFolderName()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
BOOL folder_name_dlg::OnInitDialog()
{
express_dialog::OnInitDialog();
if (output_filename.IsEmpty())
{
/* output filename is empty means it hasn't been specified. So disable checkbox and edit control. */
((CButton *)GetDlgItem(IDC_CUSTOM_FOLDER_OUTPUT))->SetCheck(FALSE);
GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->EnableWindow(FALSE);
}
else
{
((CButton *)GetDlgItem(IDC_CUSTOM_FOLDER_OUTPUT))->SetCheck(TRUE);
GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->EnableWindow(TRUE);
}
/* Hide ouput file name edit Item and resize current window. */
if (input_item_type == TYPE_RESOURCE_FOLDER)
{
/* Hide item. */
GetDlgItem(IDC_CUSTOM_FOLDER_OUTPUT)->ShowWindow(FALSE);
GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->ShowWindow(FALSE);
/* Resize window */
CRect window_size;
GetWindowRect(window_size);
/* Hard coded window size here. */
window_size.bottom -= 50;
MoveWindow(window_size);
}
SetControlAccessibleName(GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->GetSafeHwnd(), _T("folder_output_filename"));
AddCancelButton();
AddSaveButton();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void folder_name_dlg::GetEditFolderName(CString &new_folder_name) const
{
new_folder_name = folder_name;
}
void folder_name_dlg::GetSpecifiedOutputFileName(CString &output) const
{
output = output_filename;
}
void folder_name_dlg::OnBnClickedCustomOutput()
{
// TODO: Add your control notification handler code here
CButton *pb = (CButton *)GetDlgItem(IDC_CUSTOM_FOLDER_OUTPUT);
if (pb->GetCheck())
{
GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->EnableWindow(TRUE);
}
else
{
SetDlgItemText(IDC_FOLDER_OUTPUT_FILENAME, _T(""));
output_filename.Empty();
GetDlgItem(IDC_FOLDER_OUTPUT_FILENAME)->EnableWindow(FALSE);
}
}
void folder_name_dlg::OnOK()
{
CString name;
GetDlgItemText(IDC_FOLDER_NAME, name);
if (name.IsEmpty())
{
Notify("Folder name could not be empty.", this);
return;
}
GetDlgItemText(IDC_FOLDER_OUTPUT_FILENAME, name);
if (IsFileNameFormat(name))
{
express_dialog::OnOK();
}
}
LRESULT folder_name_dlg::OnTestMessage(WPARAM wParam, LPARAM lParam)
{
CWnd *pWnd;
switch (wParam)
{
case TEST_SET_FOLDER_NAME:
SetDlgItemText(IDC_FOLDER_NAME, GetTestingParam(0));
break;
case TEST_SAVE_FOLDER_NAME_EDIT:
OnOK();
break;
case TEST_CHECK_SPECIFY_OUTPUT_FILE:
pWnd = GetDlgItem(IDC_CUSTOM_FOLDER_OUTPUT);
((CButton *)pWnd)->SetCheck(lParam);
SendMessage(WM_COMMAND, MAKEWPARAM(IDC_CUSTOM_FOLDER_OUTPUT, BN_CLICKED), (LPARAM)pWnd->m_hWnd);
break;
case TEST_SET_FOLDER_OUTPUT_FILE_NAME:
SetDlgItemText(IDC_FOLDER_OUTPUT_FILENAME, GetTestingParam(0));
break;
}
return 0;
}