mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-28 08:04:07 +02:00
MdeModulePkg/FileExplorer: Enable functionality of creating new file/folder
https://bugzilla.tianocore.org/show_bug.cgi?id=324 Enhance the FileExplorerlib so that user can create a new file/folder through the UI page. Cc: Eric Dong <eric.dong@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
parent
9cf1aa29cf
commit
a409875592
@ -73,6 +73,24 @@ VOID *mLibEndOpCodeHandle = NULL;
|
|||||||
EFI_IFR_GUID_LABEL *mLibStartLabel = NULL;
|
EFI_IFR_GUID_LABEL *mLibStartLabel = NULL;
|
||||||
EFI_IFR_GUID_LABEL *mLibEndLabel = NULL;
|
EFI_IFR_GUID_LABEL *mLibEndLabel = NULL;
|
||||||
UINT16 mQuestionIdUpdate;
|
UINT16 mQuestionIdUpdate;
|
||||||
|
CHAR16 mNewFileName[MAX_FILE_NAME_LEN];
|
||||||
|
CHAR16 mNewFolderName[MAX_FOLDER_NAME_LEN];
|
||||||
|
UINTN mNewFileQuestionId = NEW_FILE_QUESTION_ID_BASE;
|
||||||
|
UINTN mNewFolderQuestionId = NEW_FOLDER_QUESTION_ID_BASE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a new file or folder in current directory.
|
||||||
|
|
||||||
|
@param FileName Point to the fileNmae or folder.
|
||||||
|
@param CreateFile CreateFile== TRUE means create a new file.
|
||||||
|
CreateFile== FALSE means create a new Folder.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
LibCreateNewFile (
|
||||||
|
IN CHAR16 *FileName,
|
||||||
|
IN BOOLEAN CreateFile
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function allows a caller to extract the current configuration for one
|
This function allows a caller to extract the current configuration for one
|
||||||
@ -175,9 +193,13 @@ LibCallback (
|
|||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
BOOLEAN NeedExit;
|
BOOLEAN NeedExit;
|
||||||
|
CHAR16 *NewFileName;
|
||||||
|
CHAR16 *NewFolderName;
|
||||||
|
|
||||||
NeedExit = TRUE;
|
NeedExit = TRUE;
|
||||||
|
NewFileName = NULL;
|
||||||
|
NewFolderName = NULL;
|
||||||
|
|
||||||
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {
|
if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {
|
||||||
//
|
//
|
||||||
// Do nothing for other UEFI Action. Only do call back when data is changed.
|
// Do nothing for other UEFI Action. Only do call back when data is changed.
|
||||||
@ -189,7 +211,55 @@ LibCallback (
|
|||||||
if ((Value == NULL) || (ActionRequest == NULL)) {
|
if ((Value == NULL) || (ActionRequest == NULL)) {
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (QuestionId == KEY_VALUE_CREATE_FILE_AND_EXIT) {
|
||||||
|
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
|
||||||
|
if (!IsZeroBuffer (mNewFileName, sizeof (mNewFileName))) {
|
||||||
|
Status = LibCreateNewFile (mNewFileName,TRUE);
|
||||||
|
ZeroMem (mNewFileName,sizeof (mNewFileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestionId == KEY_VALUE_NO_CREATE_FILE_AND_EXIT) {
|
||||||
|
ZeroMem (mNewFileName,sizeof (mNewFileName));
|
||||||
|
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestionId == KEY_VALUE_CREATE_FOLDER_AND_EXIT) {
|
||||||
|
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
|
||||||
|
if (!IsZeroBuffer (mNewFolderName, sizeof (mNewFolderName))) {
|
||||||
|
Status = LibCreateNewFile (mNewFolderName, FALSE);
|
||||||
|
ZeroMem (mNewFolderName,sizeof (mNewFolderName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestionId == KEY_VALUE_NO_CREATE_FOLDER_AND_EXIT) {
|
||||||
|
ZeroMem (mNewFolderName,sizeof (mNewFolderName));
|
||||||
|
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestionId == NEW_FILE_NAME_ID) {
|
||||||
|
NewFileName = HiiGetString (gFileExplorerPrivate.FeHiiHandle, Value->string, NULL);
|
||||||
|
if (NewFileName != NULL) {
|
||||||
|
StrCpyS (mNewFileName, MAX_FILE_NAME_LEN, NewFileName);
|
||||||
|
FreePool (NewFileName);
|
||||||
|
NewFileName = NULL;
|
||||||
|
} else {
|
||||||
|
return EFI_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestionId == NEW_FOLDER_NAME_ID) {
|
||||||
|
NewFolderName = HiiGetString (gFileExplorerPrivate.FeHiiHandle, Value->string, NULL);
|
||||||
|
if (NewFolderName != NULL) {
|
||||||
|
StrCpyS (mNewFolderName, MAX_FOLDER_NAME_LEN, NewFolderName);
|
||||||
|
FreePool (NewFolderName);
|
||||||
|
NewFolderName = NULL;
|
||||||
|
} else {
|
||||||
|
return EFI_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (QuestionId >= FILE_OPTION_OFFSET) {
|
if (QuestionId >= FILE_OPTION_OFFSET) {
|
||||||
LibGetDevicePath(QuestionId);
|
LibGetDevicePath(QuestionId);
|
||||||
|
|
||||||
@ -208,8 +278,8 @@ LibCallback (
|
|||||||
if (Value == NULL) {
|
if (Value == NULL) {
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QuestionId >= FILE_OPTION_OFFSET) {
|
if (QuestionId >= FILE_OPTION_OFFSET) {
|
||||||
|
LibGetDevicePath(QuestionId);
|
||||||
Status = LibUpdateFileExplorer (QuestionId);
|
Status = LibUpdateFileExplorer (QuestionId);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
@ -985,6 +1055,72 @@ Done:
|
|||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a new file or folder in current directory.
|
||||||
|
|
||||||
|
@param FileName Point to the fileNmae or folder name.
|
||||||
|
@param CreateFile CreateFile== TRUE means create a new file.
|
||||||
|
CreateFile== FALSE means create a new Folder.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
LibCreateNewFile (
|
||||||
|
IN CHAR16 *FileName,
|
||||||
|
IN BOOLEAN CreateFile
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_FILE_HANDLE FileHandle;
|
||||||
|
EFI_FILE_HANDLE NewHandle;
|
||||||
|
EFI_HANDLE DeviceHandle;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
CHAR16 *ParentName;
|
||||||
|
CHAR16 *FullFileName;
|
||||||
|
|
||||||
|
NewHandle = NULL;
|
||||||
|
FullFileName = NULL;
|
||||||
|
|
||||||
|
LibGetFileHandleFromDevicePath(gFileExplorerPrivate.RetDevicePath, &FileHandle, &ParentName, &DeviceHandle);
|
||||||
|
FullFileName = LibAppendFileName (ParentName, FileName);
|
||||||
|
if (FullFileName == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
|
if (CreateFile) {
|
||||||
|
Status = FileHandle->Open(
|
||||||
|
FileHandle,
|
||||||
|
&NewHandle,
|
||||||
|
FullFileName,
|
||||||
|
EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE| EFI_FILE_MODE_CREATE,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
FileHandle->Close (FileHandle);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Status = FileHandle->Open(
|
||||||
|
FileHandle,
|
||||||
|
&NewHandle,
|
||||||
|
FullFileName,
|
||||||
|
EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE| EFI_FILE_MODE_CREATE,
|
||||||
|
EFI_FILE_DIRECTORY
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
FileHandle->Close (FileHandle);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FileHandle->Close (FileHandle);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Return the DevicePath of the new created file or folder.
|
||||||
|
//
|
||||||
|
gFileExplorerPrivate.RetDevicePath = FileDevicePath (DeviceHandle, FullFileName);
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Find files under current directory.
|
Find files under current directory.
|
||||||
|
|
||||||
@ -1177,9 +1313,11 @@ LibUpdateFileExplorePage (
|
|||||||
MENU_ENTRY *NewMenuEntry;
|
MENU_ENTRY *NewMenuEntry;
|
||||||
FILE_CONTEXT *NewFileContext;
|
FILE_CONTEXT *NewFileContext;
|
||||||
MENU_OPTION *MenuOption;
|
MENU_OPTION *MenuOption;
|
||||||
|
BOOLEAN CreateNewFile;
|
||||||
|
|
||||||
NewMenuEntry = NULL;
|
NewMenuEntry = NULL;
|
||||||
NewFileContext = NULL;
|
NewFileContext = NULL;
|
||||||
|
CreateNewFile = FALSE;
|
||||||
|
|
||||||
LibRefreshUpdateData ();
|
LibRefreshUpdateData ();
|
||||||
MenuOption = gFileExplorerPrivate.FsOptionMenu;
|
MenuOption = gFileExplorerPrivate.FsOptionMenu;
|
||||||
@ -1190,6 +1328,32 @@ LibUpdateFileExplorePage (
|
|||||||
NewMenuEntry = LibGetMenuEntry (MenuOption, Index);
|
NewMenuEntry = LibGetMenuEntry (MenuOption, Index);
|
||||||
NewFileContext = (FILE_CONTEXT *) NewMenuEntry->VariableContext;
|
NewFileContext = (FILE_CONTEXT *) NewMenuEntry->VariableContext;
|
||||||
|
|
||||||
|
if (!NewFileContext->IsRoot && !CreateNewFile) {
|
||||||
|
HiiCreateGotoOpCode (
|
||||||
|
mLibStartOpCodeHandle,
|
||||||
|
FORM_ADD_NEW_FILE_ID,
|
||||||
|
STRING_TOKEN (STR_NEW_FILE),
|
||||||
|
STRING_TOKEN (STR_NEW_FILE_HELP),
|
||||||
|
EFI_IFR_FLAG_CALLBACK,
|
||||||
|
(UINT16) (mNewFileQuestionId++)
|
||||||
|
);
|
||||||
|
HiiCreateGotoOpCode (
|
||||||
|
mLibStartOpCodeHandle,
|
||||||
|
FORM_ADD_NEW_FOLDER_ID,
|
||||||
|
STRING_TOKEN (STR_NEW_FOLDER),
|
||||||
|
STRING_TOKEN (STR_NEW_FOLDER_HELP),
|
||||||
|
EFI_IFR_FLAG_CALLBACK,
|
||||||
|
(UINT16) (mNewFolderQuestionId++)
|
||||||
|
);
|
||||||
|
HiiCreateTextOpCode(
|
||||||
|
mLibStartOpCodeHandle,
|
||||||
|
STRING_TOKEN (STR_NULL_STRING),
|
||||||
|
STRING_TOKEN (STR_NULL_STRING),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
CreateNewFile = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!NewFileContext->IsDir) {
|
if (!NewFileContext->IsDir) {
|
||||||
//
|
//
|
||||||
// Create Text opcode for directory, also create Text opcode for file in FileExplorerStateBootFromFile.
|
// Create Text opcode for directory, also create Text opcode for file in FileExplorerStateBootFromFile.
|
||||||
|
@ -114,6 +114,10 @@ extern UINT8 FileExplorerVfrBin[];
|
|||||||
#define FILE_OPTION_OFFSET 0x8000
|
#define FILE_OPTION_OFFSET 0x8000
|
||||||
#define FILE_OPTION_MASK 0x7FFF
|
#define FILE_OPTION_MASK 0x7FFF
|
||||||
#define QUESTION_ID_UPDATE_STEP 200
|
#define QUESTION_ID_UPDATE_STEP 200
|
||||||
|
#define MAX_FILE_NAME_LEN 20
|
||||||
|
#define MAX_FOLDER_NAME_LEN 20
|
||||||
|
#define NEW_FILE_QUESTION_ID_BASE 0x5000;
|
||||||
|
#define NEW_FOLDER_QUESTION_ID_BASE 0x6000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function processes the results of changes in configuration.
|
This function processes the results of changes in configuration.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
///** @file
|
///** @file
|
||||||
//
|
//
|
||||||
// Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
// which accompanies this distribution. The full text of the license may be found at
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -29,3 +29,33 @@
|
|||||||
#language fr-FR " "
|
#language fr-FR " "
|
||||||
#string STR_FILE_EXPLORER_TITLE #language en-US "File Explorer"
|
#string STR_FILE_EXPLORER_TITLE #language en-US "File Explorer"
|
||||||
#language fr-FR "File Explorer"
|
#language fr-FR "File Explorer"
|
||||||
|
#string STR_NEW_FILE #language en-US "***NEW FILE***"
|
||||||
|
#language fr-FR "***NEW FILE***"
|
||||||
|
#string STR_NEW_FILE_HELP #language en-US "This menu used to create a new file in current directory, jump to next page to name the new file"
|
||||||
|
#language fr-FR "This menu used to create a new file in current directory, jump to next page to name the new file"
|
||||||
|
#string STR_ADD_NEW_FILE_TITLE #language en-US "Create a new file"
|
||||||
|
#language fr-FR "Create a new file"
|
||||||
|
#string STR_ADD_NEW_FOLDER_TITLE #language en-US "Create a new folder"
|
||||||
|
#language fr-FR "Create a new folder"
|
||||||
|
#string STR_NEW_FILE_NAME_PROMPT #language en-US "File Name"
|
||||||
|
#language fr-FR "File Name"
|
||||||
|
#string STR_NEW_FILE_NAME_HELP #language en-US "Please input a name for the new file"
|
||||||
|
#language fr-FR "Please input a name for the new file"
|
||||||
|
#string STR_CREATE_FILE_AND_EXIT #language en-US "Create File and Exit"
|
||||||
|
#language fr-FR "Create File and Exit"
|
||||||
|
#string STR_NO_CREATE_FILE_AND_EXIT #language en-US "Discard Create and Exit"
|
||||||
|
#language fr-FR "Discard Create and Exit"
|
||||||
|
#string STR_NEW_FOLDER #language en-US "***NEW FOLDER***"
|
||||||
|
#language fr-FR "***NEW FOLDER***"
|
||||||
|
#string STR_NEW_FOLDER_HELP #language en-US "This menu used to create a new folder in current directory, jump to next page to name the new folder"
|
||||||
|
#language fr-FR "This menu used to create a new folder in current directory, jump to next page to name the new folder"
|
||||||
|
#string STR_ADD_NEW_FOLDER_TITLE #language en-US "Create a new folder"
|
||||||
|
#language fr-FR "Create a new folder"
|
||||||
|
#string STR_NEW_FOLDER_NAME_PROMPT #language en-US "Folder Name"
|
||||||
|
#language fr-FR "Folder Name"
|
||||||
|
#string STR_NEW_FOLDER_NAME_HELP #language en-US "Please input a name for the new folder"
|
||||||
|
#language fr-FR "Please input a name for the new folder"
|
||||||
|
#string STR_CREATE_FOLDER_AND_EXIT #language en-US "Create Folder and Exit"
|
||||||
|
#language fr-FR "Create Folder and Exit"
|
||||||
|
#string STR_NO_CREATE_FOLDER_AND_EXIT #language en-US "Discard Create and Exit"
|
||||||
|
#language fr-FR "Discard Create and Exit"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// File Explorer Formset
|
// File Explorer Formset
|
||||||
//
|
//
|
||||||
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
// This program and the accompanying materials
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// are licensed and made available under the terms and conditions of the BSD License
|
||||||
// which accompanies this distribution. The full text of the license may be found at
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -28,4 +28,58 @@ formset
|
|||||||
label LABEL_END;
|
label LABEL_END;
|
||||||
endform;
|
endform;
|
||||||
|
|
||||||
|
form formid = FORM_ADD_NEW_FILE_ID,
|
||||||
|
title = STRING_TOKEN(STR_ADD_NEW_FILE_TITLE);
|
||||||
|
|
||||||
|
string
|
||||||
|
prompt = STRING_TOKEN(STR_NEW_FILE_NAME_PROMPT),
|
||||||
|
help = STRING_TOKEN(STR_NEW_FILE_NAME_HELP),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = NEW_FILE_NAME_ID,
|
||||||
|
minsize = 2,
|
||||||
|
maxsize = 20,
|
||||||
|
endstring;
|
||||||
|
|
||||||
|
subtitle text = STRING_TOKEN(STR_NULL_STRING);
|
||||||
|
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_CREATE_FILE_AND_EXIT),
|
||||||
|
text = STRING_TOKEN(STR_CREATE_FILE_AND_EXIT),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = KEY_VALUE_CREATE_FILE_AND_EXIT;
|
||||||
|
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_NO_CREATE_FILE_AND_EXIT),
|
||||||
|
text = STRING_TOKEN(STR_NO_CREATE_FILE_AND_EXIT),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = KEY_VALUE_NO_CREATE_FILE_AND_EXIT;
|
||||||
|
endform;
|
||||||
|
|
||||||
|
form formid = FORM_ADD_NEW_FOLDER_ID,
|
||||||
|
title = STRING_TOKEN(STR_ADD_NEW_FOLDER_TITLE);
|
||||||
|
|
||||||
|
string
|
||||||
|
prompt = STRING_TOKEN(STR_NEW_FOLDER_NAME_PROMPT),
|
||||||
|
help = STRING_TOKEN(STR_NEW_FOLDER_NAME_HELP),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = NEW_FOLDER_NAME_ID,
|
||||||
|
minsize = 2,
|
||||||
|
maxsize = 20,
|
||||||
|
endstring;
|
||||||
|
|
||||||
|
subtitle text = STRING_TOKEN(STR_NULL_STRING);
|
||||||
|
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_CREATE_FOLDER_AND_EXIT),
|
||||||
|
text = STRING_TOKEN(STR_CREATE_FOLDER_AND_EXIT),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = KEY_VALUE_CREATE_FOLDER_AND_EXIT;
|
||||||
|
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_NO_CREATE_FOLDER_AND_EXIT),
|
||||||
|
text = STRING_TOKEN(STR_NO_CREATE_FOLDER_AND_EXIT),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = KEY_VALUE_NO_CREATE_FOLDER_AND_EXIT;
|
||||||
|
endform;
|
||||||
|
|
||||||
endformset;
|
endformset;
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Formset guids, form id and VarStore data structure for File explorer library.
|
Formset guids, form id and VarStore data structure for File explorer library.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials are licensed and made available under
|
This program and the accompanying materials are licensed and made available under
|
||||||
the terms and conditions of the BSD License that accompanies this distribution.
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
The full text of the license may be found at
|
The full text of the license may be found at
|
||||||
@ -23,6 +23,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define FORM_FILE_EXPLORER_ID 0x1000
|
#define FORM_FILE_EXPLORER_ID 0x1000
|
||||||
|
#define FORM_ADD_NEW_FILE_ID 0x2000
|
||||||
|
#define NEW_FILE_NAME_ID 0x2001
|
||||||
|
#define KEY_VALUE_CREATE_FILE_AND_EXIT 0x2002
|
||||||
|
#define KEY_VALUE_NO_CREATE_FILE_AND_EXIT 0x2003
|
||||||
|
#define FORM_ADD_NEW_FOLDER_ID 0x3000
|
||||||
|
#define NEW_FOLDER_NAME_ID 0x3001
|
||||||
|
#define KEY_VALUE_CREATE_FOLDER_AND_EXIT 0x3002
|
||||||
|
#define KEY_VALUE_NO_CREATE_FOLDER_AND_EXIT 0x3003
|
||||||
|
|
||||||
#define LABEL_END 0xffff
|
#define LABEL_END 0xffff
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user