⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 importwiz.c

📁 图像处理的压缩算法
💻 C
📖 第 1 页 / 共 5 页
字号:
/*------------------------------------------------------------------------------*
 * File Name: ImportWiz.c				 										*
 * Creation: 																	*
 * Purpose: OriginC Source C file for Origin Import Wizard						*
 * Copyright (c) OriginLab Corp.	2003, 2004, 2005, 2006, 2007				*
 * All Rights Reserved															*
 * 																				*
 * Modification Log:															*
 *	CPY 12/25/02 v7.0474 ASCII_IMPORT_FIX_BEFORE_ALPHA2							*
 *	CPY 1/2/03 v7.0478 QA70-3604 RICH_EDIT_SCROLL_SYNCHRONIZED					*
 *	YuI 1/21/03 v7.0493 IMPORT_WIZARD_SETTINGS_SAVING							*
 * EJP 04-23-2003 QA70-4321 PREVENT_CRASH_ON_REMOVAL_OF_LAST_PARAM				*
 * JCG 05/28/03 v7.0540 HOOK_COMBO_BOX											*
 * EJP 06-09-2003 v7.0599 QA70-3746 DISABLE_FINISH_WHEN_NO_FILENAME_ENTERED		*
 * JCG 06/09/03 v7.0599 LABEL_LINE_COMBOS_INIT_TO_NONE_IF_NO_HEADERLINES 		*
 * EJP 06-10-2003 v7.0600 QA70-4520 SUPPORT_HUGE_HEADER_SIZES					*
 * EJP 06-18-2003 QA70-4682 DATA_SELECTION_UI_CHANGES							*
 * EJP 07-07-2003 v7.0619 QA70-4783 POST_IMPORT_EXECUTE							*
 * EJP 07-08-2003 v7.0620 QA70-4792 MAKE_IMPWIZ_UI_MORE_CLEAR					*
 * EJP 07-14-2003 v7.0624 SCAN_FOR_NUM_COLS_ON_CHANGE_HEADER_LINES				*
 * EJP 07-16-2003 v7.0627 QA70-4818 SAVE_FILTER_IN_WKS							*
 * EJP 07-21-2003 v7.0630 QA70-4073 ADD_APPLY_BUTTON_TO_UPDATE_PREVIEW			*
 * EJP 07-23-2003 v7.0631 QA70-4575 ADD_SKIPROWS_TO_BINIMP						*
 * EJP 07-28-2003 v7.0637 QA70-4911 IMPROVE_HDR_VAR_SCAN						*
 * EJP 07-29-2002 v7.0637 QA70-4575 PROBLEM_50									*
 * EJP 08-01-2003 v7.0642 DETECT_IMPORT_SETTINGS_CHANGED						*
 * EJP 08-04-2003 v7.0644 QA70-4896 ADD_REFRESH_BTN_TO_HDRVAR_PAGE				*
 * EJP 08-15-2003 v7.5661 QA70-4073.58 CLEAN_IMPORT_FROM_CLIPBOARD				*
 * EJP 08-19-2003 v7.5667 REIMPORT_AFTER_USER_CHANGE_COL_FORMAT					*
 * EJP 08-22-2003 SET_OFFSET_WITHOUT_SEL_BUT_JUST_CARROT_POS					*
 * EJP 08-27-2003 v7.5677 QA70-5073 ADD_READROWS								*
 * EJP 08-29-2003 v7.5680 TRUNC_LONG_LINES_IN_HEADER_PREVIEW					*
 * EJP 08-29-2003 v7.5680 AUTO_SELECT_ONLY_DATA_FOLDER_FILTERS					*
 * EJP 09-04-2003 v7.5684 QA70-5106 INSERT_BIN_PATTERN_BEFORE_FIRST_ROW			*
 * EJP 09-08-2003 v7.5687 QA70-5118 FIX_COMPARE_BINIMP_STRUCTS					*
 * EJP 09-10-2003 v7.5890 QA70-5135.11 REMOVE_PLOTPAGE_OPTION_FROM_DRAGDROP_PAGE*
 * EJP 09-10-2003 v7.5690 NOTIFY_USER_WHEN_SAVE_FILTER_FAILS					*
 * EJP 09-12-2003 v7.5692 QA70-5135.15 COL_DESIGNATION_REPEAT_NOT_REMEMBERED	*
 * EJP 09-12-2003 v7.5693 QA70-5073 ADD_READROWS_TO_BINIMP						*
 * EJP 09-16-2003 v7.5696 QA70-4575 UPDATE_PLOT_LEGEND							*
 * EJP 09-23-2003 v7.5702 QA70-5135.27 UPDATE_NUMCOLS_ON_APPLY_FIXEDWIDTH		*
 * EJP 09-24-2003 v7.5706 QA70-4073.55 ADD_FILTER_DESCRIPTION					*
 * EJP 09-29-2003 v7.5709 QA70-5211.5 UPDATE_HDRVAR_ON_CHANGE_ENDIAN			*
 * EJP 10-08-2003 v7.5715 QA70-5289.3 UPDATE_COL_WIDTH							*
 * EJP 10-13-2003 v7.5717 QA70-5318 CUSTOM_DATE_FORMAT							*
 * EJP 10-16-2003 v7.5722 QA70-5289.7 UPDATE_SOURCE_FILE_ON_EDIT_CHANGE			*
 * EJP 10-20-2003 v7.5726 QA70-5374 ALLOW_CHANGING_PREVIEW_FONT					*
 * EJP 10-22-2003 v7.5728 QA70-5211.2 FIX_DESIG_AND_FMT_ON_PARTIAL_IMPORT		*
 * EJP 10-24-03 v7.5730 QA70-5412 SKIP_CHARS_FOR_COL_NAME_LABEL					*
 * EJP 10-27-2003 v7.5733 QA70-5238 DO_NOT_RESET_TARGET_WINDOW_TEMPLATE			*
 * EJP 10-30-2003 v7.5736 QA70-5448 NOTIFY_USER_OF_IMPORT_ERROR					*
 * EJP 11-11-2003 v7.5751 QA70-5211.7 FIX_USED_BYTES_COLORING					*
 * EJP 11-24-2003 v7.5769 QA70-5417.18 FIX_DESIG_AND_FMT						*
 *	ML 11/25/2003 BITWISE_OR_SEPARATED_TRANSLATION								*
 * EJP 11-26-2003 v7.5773 CHECK_PARTIAL_IMPORT_FROM_SETTINGS					*
 *------------------------------------------------------------------------------*/
 
////////////////////////////////////////////////////////////////////////////////////

//--- CPY 7/2/03 we will ship with OP, cannot include origin.h as OP might be in conflict with origin.PCH
#include <origin.h> 
//#include <Project.h> // The Project and Application class 
//#include <wksheet.h> // worksheet matrixlayer and column classes
//#include <graph.h> // graph, plot and graphic objects
//#include <utilities.h>
//#include <mswin.h>
//#include <file.h>
//#include <sys_utils.h>
//----
#include <dialog.h>
//#include <control.h>
#include <vsFlexGrid.h>
//#include <Tree.h>
#include <tree_utils.h>

#include "HelpID.h"
#include "Dlg_Utils.h"
#include "App_Utils.h"
#include "importwiz.h" // resource header
#include "binimp.h"    // resource header
#include "Filter_Utils.h"
#include "fileimport.h"
// Include definitions of all localized strings. $ causes CodeBuilder to look for 
// correct version of Local.h depending on Windows Regional settings.
#include "$Local.h"

//--------------------------------------------------------------------------
enum {
	NONNUMERIC_WIZ_TERMINATE = 0,
	NONNUMERIC_WIZ_READ_AS_TEXT,
	NONNUMERIC_WIZ_NEW_WKS,
	NONNUMERIC_WIZ_NEW_COL
};	

enum {
	NONNUMERIC_TERMINATE = 0,
	NONNUMERIC_READ_AS_MISSING,
	NONNUMERIC_START_NEW_WKSCOL,
	NONNUMERIC_APPEND_TO_LABEL
};

//--------------------------------------------------------------------------
// general definitions
//--------------------------------------------------------------------------
///#define IW_DEBUG
#define DISABLE_FILE_TYPES_PAGE

#define IDC_NEXT			0x3024
#define IDC_FINISH			0x3025

#define BIN_HDR_PREVIEW_BYTES_PER_ROW 	16
#define BIN_HDR_PREVIEW_NUM_ROWS		100
#define BIN_DATA_PREVIEW_NUM_BYTES		800
#define BIN_DATA_PREVIEW_BYTES_PER_ROW	20

#define IW_NUM_DATA_PREVIEW_ROWS			50
#define IW_NUM_DATA_PREVIEW_COLS			100
#define IW_NUM_HEADER_PREVIEW_LINES			s_iAscHdrPreviewLines
#define AIW_HDR_PREVIEW_LINES_DEFAULT		50

#define AIW_COLOR_DATA_LINES			RGB(0,0,0)
#define AIW_COLOR_COL_NAME				RGB(255,0,0)
#define AIW_COLOR_HEADER_LINES			RGB(0,0,255)
#define AIW_COLOR_COL_LABEL				RGB(0,128,0)
#define AIW_COLOR_SKIP_LINES			RGB(192,192,192)

#define IW_PREVIEW_LINE_MAX_LEN 1024 /// EJP 08-29-2003 v7.5680 TRUNC_LONG_LINES_IN_HEADER_PREVIEW

// These need to be localized
/// ML 11/25/2003 BITWISE_OR_SEPARATED_TRANSLATION
//#define BINIMP_DATA_TYPE_TOKENS		"Integer|Unsigned Integer|Real|String"
#define BINIMP_DATA_TYPE_TOKENS		_LB("Integer|Unsigned Integer|Real|String")
/// end BITWISE_OR_SEPARATED_TRANSLATION
#define SZ_IW_PAGE_FILTER			_L("<Use filter in active window>")

#define IW_PLOTTING_GRID_NUM_COLS		4
#define IW_PLOT_LINE					0
#define IW_PLOT_SCATTER					1
#define IW_PLOT_LINESYMB				2
#define IW_PLOT_COLUMN					3
#define IW_PLOT_BAR						4

#define FILTER_LOCATION_DATA			0
#define FILTER_LOCATION_ORIGIN			1
#define FILTER_LOCATION_USERFILES		2

#define IS_FILTER_TYPE_ASCII			(s_trFilter.Type.nVal == FILTER_TYPE_ASCII)
#define IS_FILTER_TYPE_BINARY			(s_trFilter.Type.nVal == FILTER_TYPE_BINARY)
#define IS_FILTER_TYPE_USERDEFINED		(s_trFilter.Type.nVal == FILTER_TYPE_USERDEFINED)

#define IW_HDRLINE_NONE		-1
#define IW_HDRLINE_LAST		-1

//--------------------------------------------------------------------------
// flags
//--------------------------------------------------------------------------
#define FLAG_DEFINE_HDR_VAR				0x00000001
#define FLAG_CLICKED_FINISH				0x00000002
#define FLAG_DATAFROM_CLIPBOARD			0x00000004
#define FLAG_FIXED_WIDTHS_CHANGED		0x00000008
#define FLAG_SAVE_FILTER				0x00000010
#define FLAG_RESCAN_FOR_NUM_COLS		0x00000020 /// EJP 07-14-2003 v7.0624 SCAN_FOR_NUM_COLS_ON_CHANGE_HEADER_LINES
#define FLAG_ADVOPTIONS_CHECKED			0x00000040
#define FLAG_UPDATE_PREVIEW_NEEDED		0x00000080
#define FLAG_BINPATTERN_BINVIEW			0x00000100
#define FLAG_GET_FILTER_ONLY			0x00000200 /// EJP 08-08-2003 v7.0650 QA70-4073.53 USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP
#define FLAG_ON_BROWSE_SOURCE			0x00000400 /// EJP 10-16-2003 v7.5722 QA70-5289.7 UPDATE_SOURCE_FILE_ON_EDIT_CHANGE

#define IS_DEFINE_HDR_VAR			(s_flags & FLAG_DEFINE_HDR_VAR)
#define ENABLE_DEFINE_HDR_VAR		s_flags |= FLAG_DEFINE_HDR_VAR
#define DISABLE_DEFINE_HDR_VAR		s_flags &= ~FLAG_DEFINE_HDR_VAR

#define IS_CLICKED_FINISH			(s_flags & FLAG_CLICKED_FINISH)
#define ENABLE_CLICKED_FINISH		s_flags |= FLAG_CLICKED_FINISH
#define DISABLE_CLICKED_FINISH		s_flags &= ~FLAG_CLICKED_FINISH

#define IS_FIXED_WIDTHS_CHANGED			(s_flags & FLAG_FIXED_WIDTHS_CHANGED)
#define SET_FIXED_WIDTHS_CHANGED		s_flags |= FLAG_FIXED_WIDTHS_CHANGED
#define SET_FIXED_WIDTHS_UNCHANGED		s_flags &= ~FLAG_FIXED_WIDTHS_CHANGED

#define IS_DATAFROM_CLIPBOARD			(s_flags & FLAG_DATAFROM_CLIPBOARD)
#define IS_DATAFROM_FILE				!IS_DATAFROM_CLIPBOARD
#define SET_DATAFROM_CLIPBOARD			s_flags |= FLAG_DATAFROM_CLIPBOARD
#define SET_DATAFROM_FILE				s_flags &= ~FLAG_DATAFROM_CLIPBOARD

#define IS_SAVE_FILTER						(s_flags & FLAG_SAVE_FILTER)
#define ENABLE_SAVE_FILTER					s_flags |= FLAG_SAVE_FILTER
#define DISABLE_SAVE_FILTER					s_flags &= ~FLAG_SAVE_FILTER

/// EJP 07-14-2003 v7.0624 SCAN_FOR_NUM_COLS_ON_CHANGE_HEADER_LINES
#define IS_RESCAN_FOR_NUM_COLS				(s_flags & FLAG_RESCAN_FOR_NUM_COLS)
#define ENABLE_RESCAN_FOR_NUM_COLS			s_flags |= FLAG_RESCAN_FOR_NUM_COLS
#define DISABLE_RESCAN_FOR_NUM_COLS			s_flags &= ~FLAG_RESCAN_FOR_NUM_COLS
/// end SCAN_FOR_NUM_COLS_ON_CHANGE_HEADER_LINES

#define IS_ADVOPTIONS_ISCHECKED				(s_flags & FLAG_ADVOPTIONS_CHECKED)
#define ENABLE_ADVOPTIONS_ISCHECKED			s_flags |= FLAG_ADVOPTIONS_CHECKED
#define DISABLE_ADVOPTIONS_ISCHECKED		s_flags &= ~FLAG_ADVOPTIONS_CHECKED
#define IS_SHOW_ADVANCED					(IS_SAVE_FILTER && IS_ADVOPTIONS_ISCHECKED)

#define IS_UPDATE_PREVIEW_NEEDED		(s_flags & FLAG_UPDATE_PREVIEW_NEEDED)
#define ENABLE_UPDATE_PREVIEW_NEEDED	s_flags |= FLAG_UPDATE_PREVIEW_NEEDED
#define DISABLE_UPDATE_PREVIEW_NEEDED	s_flags &= ~FLAG_UPDATE_PREVIEW_NEEDED

#define IS_BINPATTERN_BINVIEW		(s_flags & FLAG_BINPATTERN_BINVIEW)
#define SET_BINPATTERN_BINVIEW		s_flags |= FLAG_BINPATTERN_BINVIEW
#define SET_BINPATTERN_ASCVIEW		s_flags &= ~FLAG_BINPATTERN_BINVIEW

/// EJP 08-08-2003 v7.0650 QA70-4073.53 USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP
#define IS_GET_FILTER_ONLY			(s_flags & FLAG_GET_FILTER_ONLY)
#define ENABLE_GET_FILTER_ONLY		s_flags |= FLAG_GET_FILTER_ONLY
#define DISABLE_GET_FILTER_ONLY		s_flags &= ~FLAG_GET_FILTER_ONLY
/// end USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP

/// EJP 10-16-2003 v7.5722 QA70-5289.7 UPDATE_SOURCE_FILE_ON_EDIT_CHANGE
#define IS_ON_BROWSE_SOURCE			(s_flags & FLAG_ON_BROWSE_SOURCE)
#define ENABLE_ON_BROWSE_SOURCE		s_flags |= FLAG_ON_BROWSE_SOURCE
#define DISABLE_ON_BROWSE_SOURCE		s_flags &= ~FLAG_ON_BROWSE_SOURCE
/// end UPDATE_SOURCE_FILE_ON_EDIT_CHANGE

//--------------------------------------------------------------------------
// static variables
//--------------------------------------------------------------------------
static Dialog ImportWizDlg(IDD_IW, "ImportWiz");

static Tree s_trFilter;
static ASCIMP s_ascimp;
static BINIMP s_binimp;

static StringArray s_saDataFiles;
///static string s_strDataFile;
#define s_strDataFile s_saDataFiles[0]
#define NUM_DATA_FILES (IS_DATAFROM_FILE ? s_saDataFiles.GetSize() : 1)

static string s_strFilterLoaded; /// EJP 08-01-2003 v7.0642 DETECT_IMPORT_SETTINGS_CHANGED
static string s_strFilter;
static int s_iSaveFilter;
///#define IS_SAVE_FILTER (s_iSaveFilter == IDC_SAVE_FILTER_GLOBAL_RADIO || s_iSaveFilter == IDC_SAVE_FILTER_DATA_FOLDER_RADIO)

static string s_strFilterFileSaved; /// EJP 08-08-2003 v7.0650 QA70-4073.53 USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP

static DWORD s_flags;
static string s_strWks;
static vector<short> s_vColWidths;
static SIZE s_sizeGridFixWidthFont;

static bool 	s_bBusy;
static int		s_iActivePageType;           // Page type of active window when wiz is launched
static string	s_strActivePageName;         // Page name of active window when wiz is launched
static BOOL		s_bPlotInitFirstTime;        // Only initialize Plotting page once
///static int		s_nNumFiles;                 // Number of files imported/opened
static vector<short> s_vPlottingLayers;     // Layer numbers for plotting each file 
///static int 		s_nNumParameters;	    	 // Number of Parameter for Binary Import
static int		s_iFixedWidthGridFontWidth;
static int		s_iNumColsEstimated; // currently used for ASCII only
static int s_iStartingNumHdrLines; /// EJP 07-14-2003 v7.0624 SCAN_FOR_NUM_COLS_ON_CHANGE_HEADER_LINES

// Storage for file header parameters
static StringArray s_saHdrParamName;
static vector<int> s_vHdrParamType;
static vector<int> s_vHdrParamOffset;
static vector<int> s_vHdrParamSize;

#define HDRPARAM_COUNT s_saHdrParamName.GetSize()

enum {PARAM_TYPE_INT=0,PARAM_TYPE_UINT,PARAM_TYPE_REAL,PARAM_TYPE_STR};

enum {CHANGE_NONE, CHANGE_HEX, CHANGE_ASC, CHANGE_BYTEOFFSET, CHANGE_FONT};
static int s_iOnUserChange = CHANGE_NONE;

#define ASCIMP_TOTAL_HEADER_LINES(_ascimp) ((_ascimp).iHeaderLines + (_ascimp).iSubHeaderLines)

static int s_iBinHdrPreviewLines;
static int s_iAscHdrPreviewLines;

/// EJP 10-20-2003 v7.5726 QA70-5374 ALLOW_CHANGING_PREVIEW_FONT
static int s_iPreviewFont;
#define IW_PREVIEW_FONT s_iPreviewFont
/// end ALLOW_CHANGING_PREVIEW_FONT

//--------------------------------------------------------------------------
#define IS_SHOW_ASC_HEADER_PAGE				IS_FILTER_TYPE_ASCII
#define IS_SHOW_ASC_HEADER_PARAM_PAGE		(IS_FILTER_TYPE_ASCII && IS_DEFINE_HDR_VAR && ASCIMP_TOTAL_HEADER_LINES(s_ascimp))
#define IS_SHOW_ASC_COLUMNS_PAGE			IS_FILTER_TYPE_ASCII
#define IS_SHOW_PARTIAL_IMPORT_PAGE			(IS_FILTER_TYPE_ASCII || IS_FILTER_TYPE_BINARY)
#define IS_SHOW_BIN_HEADER_PAGE				IS_FILTER_TYPE_BINARY
#define IS_SHOW_BIN_PATTERN_PAGE			IS_FILTER_TYPE_BINARY
#define IS_SHOW_PLOTTING_PAGE				(s_iActivePageType == EXIST_PLOT)
#define IS_SHOW_SAVE_FILTER_PAGE			TRUE
#define IS_SHOW_FILE_TYPES_PAGE				IS_SHOW_ADVANCED
#define IS_SHOW_DRAG_DROP_PAGE				IS_SHOW_ADVANCED
#define IS_SHOW_USER_DEFINED_PAGE			IS_FILTER_TYPE_USERDEFINED

#define ON_PAGE_CHECK_SOURCE
#define ON_PAGE_CHECK_ASC_HEADER			if(!IS_SHOW_ASC_HEADER_PAGE) return FALSE;
#define ON_PAGE_CHECK_ASC_HEADER_PARAM		if(!IS_SHOW_ASC_HEADER_PARAM_PAGE) return FALSE;
#define ON_PAGE_CHECK_ASC_COLUMNS			if(!IS_SHOW_ASC_COLUMNS_PAGE) return FALSE;
#define ON_PAGE_CHECK_PARTIAL_IMPORT		if(!IS_SHOW_PARTIAL_IMPORT_PAGE) return FALSE;
#define ON_PAGE_CHECK_BIN_HEADER			if(!IS_SHOW_BIN_HEADER_PAGE) return FALSE;
#define ON_PAGE_CHECK_BIN_PATTERN			if(!IS_SHOW_BIN_PATTERN_PAGE) return FALSE;
#define ON_PAGE_CHECK_PLOTTING				if(!IS_SHOW_PLOTTING_PAGE) return FALSE;
#define ON_PAGE_CHECK_SAVE_FILTER
#define ON_PAGE_CHECK_FILE_TYPES			if(!IS_SHOW_FILE_TYPES_PAGE) return FALSE;
#define ON_PAGE_CHECK_DRAG_DROP				if(!IS_SHOW_DRAG_DROP_PAGE) return FALSE;
#define ON_PAGE_CHECK_USER_DEFINED			if(!IS_SHOW_USER_DEFINED_PAGE) return FALSE;


#define SZ_IW_NONE		_L("<None>")
#define SZ_IW_ALL		_L("<All>")
#define SZ_IW_END		_L("<End>")

//--------------------------------------------------------------------------
// ImportWizard
//
// The main function to call to start the Import Wizard.
//--------------------------------------------------------------------------
int ImportWizard(string strFileName)
{
	IW_Init(strFileName);
	return ImportWizDlg.DoModal(GetWindow());
}

/// EJP 08-08-2003 v7.0650 QA70-4073.53 USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP
bool iwGetFilter(LPCSTR lpcszDataFile, string &strFilterFile, TreeNode &trFilter)
{
	IW_Init(lpcszDataFile);
	ENABLE_GET_FILTER_ONLY;
	int iRet = ImportWizDlg.DoModal(GetWindow());
	DISABLE_GET_FILTER_ONLY;
	if( IS_CLICKED_FINISH )
	{
		trFilter = s_trFilter;
		strFilterFile = s_strFilterFileSaved;
		return true;
	}
	return false;
}
/// end USE_SAME_FILTER_FOR_MULTI_FILES_ON_FILEOPEN_AND_DRAGDROP

//--------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -