00001
00157 #ifndef INC_MIE_UIMAIN_H
00158 #define INC_MIE_UIMAIN_H
00159
00160 #ifndef INC_MIE_FORMAT_H
00161 #include <mie/format.h>
00162 #endif
00163
00164 #ifndef INC_RVC_OBJITEMLIST_H
00165 #include <rvc/objitemlist.h>
00166 #endif
00167
00168 #ifndef INC_RVC_GETOBJFLAGS_H
00169 #include <rvc/getobjflags.h>
00170 #endif
00171
00172 #ifndef INC_MGUI_LISTBOX_H
00173 #include <mgui/listbox.h>
00174 #endif
00175
00176 #ifndef INC_MGUI_GRID_H
00177 #include <mgui/grid.h>
00178 #endif
00179
00180 #ifndef INC_MGUI_EDIT_H
00181 #include <mgui/edit.h>
00182 #endif
00183
00184 #ifndef INC_MGUI_COMBOBOX_H
00185 #include <mgui/combobox.h>
00186 #endif
00187
00188 #ifndef INC_MGUI_TOPSHELL_H
00189 #include <mgui/topshell.h>
00190 #endif
00191
00192 #ifndef INC_MGUI_FORMRADIOBUTTONS_H
00193 #include <mgui/formradiobuttons.h>
00194 #endif
00195
00196 #ifndef INC_MGUI_DLGSHELL_H
00197 #include <mgui/dlgshell.h>
00198 #endif
00199
00200 #ifndef INC_MI32_MDLG_H
00201 #include <mi32/mdlg.h>
00202 #endif
00203
00204 #ifndef INC_MI32_MISTRINGLIST_H
00205 #include <mi32/mistringlist.h>
00206 #endif
00207
00208
00209 namespace MIE {
00210
00211 class FORMAT;
00212 class SETTINGS;
00213 class UI_BASE;
00214
00215
00216 class IMPEXPDIALOG_BASE : public MGUI::TOPSHELL {
00217 public:
00218
00219 IMPEXPDIALOG_BASE (
00220 MIE::MODE mode
00221 );
00222
00223 ~IMPEXPDIALOG_BASE();
00224
00225 protected:
00226
00227 friend class IMPORTSETTINGSDIALOG;
00228 class GETOBJFILT;
00229 RVC::OBJTYPE m_ObjType;
00230 MGUI::FORM_RADIOBUTTONS m_ObjTypeButtons;
00231 MISTRINGLIST m_ConnectStrList;
00232
00233 void Clear (
00234 bool notify
00235 );
00236
00237 ERRVALUE CreateFormatBox (
00238 MGUI::LAYOUT_PANE& MainPane
00239 );
00240
00241 ERRVALUE CreateFileObjBox (
00242 MGUI::LAYOUT_PANE& MainPane
00243 );
00244
00245 void ForceObjectType (
00246 RVC::OBJTYPE type
00247 );
00248
00249 void GetColumnOrder (
00250 SIMPLE_ARRAY<INT32>& NewOrder
00251 ) const;
00252
00253
00254 bool GetColumnSizes(
00255 SIMPLE_ARRAY<INT32>& ColSizes
00256 ) const;
00257
00258 const FORMAT* GetFormat (
00259 ) const { return m_Format; }
00260
00261 const SIMPLE_ARRAY<const FORMAT*>& GetFormats (
00262 ) { return m_Formats; }
00263
00264 int GetFormatItemNum (
00265 const FORMAT* format
00266 ) const;
00267
00269 RVC::OBJTYPE GetObjType (
00270 ) const { return m_ObjType; }
00271
00272 bool GetUserSelectedFormat () {
00273 return m_bUserSelectedFormat;
00274 }
00275
00276 void GridAddFormat (
00277 int itemnum,
00278 const MISTRING& name,
00279 const MISTRING& desc,
00280 const MISTRING& extension,
00281 MIE::OBJTYPEFLAG
00282 );
00283
00284 void GridSetItemText (
00285 int itemnum,
00286 int subitem,
00287 const MISTRING& mistring
00288 );
00289
00290
00291 void ResetFormatList (
00292 );
00293
00294 void SetFormat (
00295 const FORMAT* format,
00296 bool bUserSelectedFormat
00297 );
00298
00299 void SetFormatList (
00300 const SIMPLE_ARRAY<const FORMAT*>& formats,
00301 const FORMAT* pBestFormat = 0
00302 );
00303
00304 void SetSelectEnabled (
00305 bool enabled
00306 );
00307
00308 void SetSelectRDBMSEnabled (
00309 bool enabled
00310 );
00311
00312 void SetSourceListEmpty (
00313 bool empty
00314 );
00315
00316 void SetNextEnabled (
00317 bool enabled
00318 );
00319
00320 void SetObjTypeEnabled (
00321 bool enabled
00322 );
00323
00324 void SetUserSelectedFormat (
00325 bool UserSelectedFormat
00326 ) { m_bUserSelectedFormat = UserSelectedFormat; }
00327
00328 void ListBoxAddItem(INT32 num, const MISTRING& name);
00329 void ListBoxDeleteAllItems();
00330 void ListBoxDeleteItem(INT32 num);
00331 INT32 ListBoxGetNumItems();
00332 INT32 ListBoxGetSelectedItem();
00333 void ListBoxSetSelectedItem(INT32 num);
00334
00335 private:
00336 #ifndef GENERATING_DOXYGEN_OUTPUT
00337 MGUI::CTRL_LISTBOX m_ListBox;
00338 MODE m_mode;
00339 const FORMAT* m_Format;
00340 SIMPLE_ARRAY<const FORMAT*> m_Formats;
00341 MIE::FORMAT::SORTMETHOD m_SortMethod;
00342 bool m_bFormatSet;
00343 bool m_bUserSelectedFormat;
00344 bool m_bUserResizedGrid;
00345 bool m_bSortForward;
00346 bool m_bSourceListEmpty;
00347
00348 MGUI::CTRL_GRID m_GridFormat;
00349 MGUI::CTRL_PUSHBUTTON m_CtrlBtnSelect;
00350 MGUI::CTRL_PUSHBUTTON m_CtrlBtnSelectRDBMSSource;
00351 MGUI::CTRL_PUSHBUTTON m_CtrlBtnRemove;
00352 MGUI::CTRL_PUSHBUTTON m_CtrlBtnRemoveAll;
00353 MGUI::CTRL_PUSHBUTTON m_CtrlBtnNext;
00354 MGUI::CTRL_PUSHBUTTON m_CtrlBtnHelp;
00355 MGUI::CTRL_PUSHBUTTON m_CtrlBtnClose;
00356 MGUI::CTRL_EDIT_STRING m_CtrlExtnFilt;
00357 MGUI::LAYOUT_PANE m_PaneFileButtons;
00358
00359 void OnBtnClose ();
00360 void OnBtnNext ();
00361 void OnBtnSelect ();
00362 void OnBtnSelectRDBMSSource ();
00363 void OnBtnRemove ();
00364 void OnBtnRemoveAll ();
00365 void OnFiltByExtn ();
00366 void OnFormat (int itemnum, int subitemnum);
00367 void OnGridChangeColOrder (int fromCol, int toCol);
00368 void OnGridClickColumn (int itemnum, int column, MGUI::KEYSTATE state);
00369 void OnGridClickItem (int itemnum, int column, MGUI::KEYSTATE state);
00370 bool OnGridDraw (MGUI::CTRL_GRID::CUSTOMDRAW& draw);
00371 void OnGridResizeColumn (int column, int width);
00372 #endif
00373
00374 virtual ERRVALUE v_CreateContent ();
00375
00376 virtual void v_OnOpen ();
00377
00379 virtual ERRVALUE v_CreateContent (
00380 MGUI::LAYOUT_PANE& MainPane
00381 ) = 0;
00382
00384 virtual bool v_AllowFormatChange (
00385 const FORMAT* format
00386 ) = 0;
00387
00388 virtual const MISTRING v_GetFileObjBoxTitle() = 0;
00389 virtual const MISTRING v_GetFormatBoxTitle() = 0;
00390 virtual const MISTRING v_GetSelectBtnLabel() = 0;
00391 virtual void v_OnCloseRequest();
00392 virtual void v_OnBtnNext() = 0;
00393 virtual void v_OnBtnSelect() = 0;
00394 virtual bool v_OnBtnSelectRDBMSSource() = 0;
00395 virtual void v_OnBtnRemove() = 0;
00396 virtual void v_OnFiltByExtn() = 0;
00397 virtual void v_OnObjectsAllRemoved() = 0;
00398 virtual void v_OnToggleObjType() = 0;
00399
00400 virtual void v_OnFormatChanged (
00401 const FORMAT* format
00402 ) = 0;
00403
00404 };
00405
00407 class IMPORTDIALOG : public IMPEXPDIALOG_BASE {
00408 public:
00409 IMPORTDIALOG();
00410 virtual ~IMPORTDIALOG();
00411
00412 private:
00413 MISTRINGLIST m_Files;
00414
00415 virtual void v_OnFormatChanged (
00416 const FORMAT* format
00417 );
00418
00419 static int GetFileFilter (
00420 MIUNICODE* filename,
00421 char* msgkey,
00422 void* userdata
00423 );
00424
00425 virtual bool v_AllowFormatChange (
00426 const FORMAT* format
00427 );
00428
00429 virtual ERRVALUE v_CreateContent (
00430 MGUI::LAYOUT_PANE& MainPane
00431 );
00432
00433 virtual const MISTRING v_GetFileObjBoxTitle ();
00434 virtual const MISTRING v_GetFormatBoxTitle ();
00435 virtual const MISTRING v_GetSelectBtnLabel ();
00436 virtual void v_OnBtnNext ();
00437 virtual void v_OnBtnSelect ();
00438 virtual bool v_OnBtnSelectRDBMSSource ();
00439 virtual void v_OnBtnRemove ();
00440 virtual void v_OnFiltByExtn ();
00441 virtual void v_OnObjectsAllRemoved ();
00442 virtual void v_OnToggleObjType ();
00443
00444 MIE::FORMAT::TESTRESULT AddFile (
00445 const FILEPATH& filepath
00446 );
00447
00448 ERRVALUE Select (
00449 GETFILEFLAGS GetFileFlags
00450 );
00451
00452 bool TestFile (
00453 const FILEPATH& filepath,
00454 SIMPLE_ARRAY<const FORMAT*>& Candidates,
00455 const FORMAT* pBestFormat,
00456 const FORMAT* p2ndBestFormat,
00457 bool TestByExtn
00458 );
00459
00460 };
00461
00463 class EXPORTDIALOG : public IMPEXPDIALOG_BASE {
00464 public:
00465 EXPORTDIALOG();
00466 virtual ~EXPORTDIALOG();
00467
00468 private:
00469 RVC::OBJITEMLIST m_ObjItemList;
00470 GETOBJFILT* m_pObjFilt;
00471 bool m_bFilteringByName;
00472
00473 virtual void v_OnFormatChanged (
00474 const FORMAT* format
00475 );
00476
00477 bool AddObject (
00478 const RVC::OBJITEM& objitem
00479 );
00480
00481 virtual bool v_AllowFormatChange (
00482 const FORMAT* format
00483 );
00484
00485 virtual ERRVALUE v_CreateContent (
00486 MGUI::LAYOUT_PANE& MainPane
00487 );
00488
00489 virtual const MISTRING v_GetFileObjBoxTitle();
00490 virtual const MISTRING v_GetFormatBoxTitle();
00491 virtual const MISTRING v_GetSelectBtnLabel();
00492 virtual void v_OnBtnNext();
00493 virtual void v_OnBtnSelect();
00494 virtual bool v_OnBtnSelectRDBMSSource();
00495 virtual void v_OnBtnRemove();
00496 virtual void v_OnFiltByExtn ();
00497 virtual void v_OnObjectsAllRemoved();
00498 virtual void v_OnToggleObjType ();
00499
00500 ERRVALUE Select (
00501 bool notify,
00502 GETOBJFLAGS GetObjFlags = GETOBJFLAG_None
00503 );
00504
00505 };
00506
00507 class SETTINGSDIALOG : public MGUI::DLGSHELL {
00508 public:
00509 SETTINGSDIALOG (const MISTRING& title, HELPID HelpID, STYLE style);
00510 virtual ~SETTINGSDIALOG() {}
00511 virtual void v_SetButtonsEnabled(bool enable);
00512 };
00513
00514
00515 class EXPORTSETTINGSDIALOG : public SETTINGSDIALOG {
00516 public:
00517 EXPORTSETTINGSDIALOG (
00518 MDLGPARENT parentdlg,
00519 const MIE::FORMAT* format,
00520 MIE::SETTINGS& settings,
00521 const RVC::OBJITEMLIST& objlist
00522 );
00523 virtual ~EXPORTSETTINGSDIALOG();
00524
00525 void v_SetButtonsEnabled(bool enable);
00526
00527 private:
00528 #ifndef GENERATING_DOXYGEN_OUTPUT
00529
00530 void AppendErrorLog (
00531 ERRVALUE err,
00532 MISTRING& errorlog,
00533 const MISTRING& objname
00534 ) const;
00535
00536 void PromptForExportOutput (
00537 MISTRINGLIST& DestList
00538 );
00539
00540
00541
00542
00543
00544 virtual ERRVALUE DoExport(
00545 const MISTRINGLIST& OutputFiles
00546 );
00547
00548 virtual ERRVALUE v_CreateContent();
00549
00550 virtual void v_OnOK();
00551
00552 void CreateJob(bool held);
00553 void OnRunJob();
00554 void OnSaveJob();
00555
00556 const MIE::FORMAT* m_Format;
00557 MIE::SETTINGS& m_Settings;
00558 MIE::UI_BASE* m_UIBase;
00559 const RVC::OBJITEMLIST& m_Objects;
00560 const MDLGPARENT m_ParentDlg;
00561 bool m_bDialogCreated;
00562 MGUI::CTRL_PUSHBUTTON m_BtnRunJob;
00563 MGUI::CTRL_PUSHBUTTON m_BtnSaveJob;
00564
00565 #endif
00566 };
00567
00568
00569 class IMPORTSETTINGSDIALOG : public SETTINGSDIALOG {
00570 public:
00571
00572 IMPORTSETTINGSDIALOG (
00573 const MIE::FORMAT* format,
00574 MIE::SETTINGS& settings,
00575 const MISTRINGLIST& filelist
00576 );
00577
00578 virtual ~IMPORTSETTINGSDIALOG();
00579
00580 void v_SetButtonsEnabled (bool enable);
00581
00582 private:
00583 #ifndef GENERATING_DOXYGEN_OUTPUT
00584
00585 ERRVALUE DoImport(
00586 const SIMPLE_ARRAY<int>& NumObjectsInFile,
00587 const RVC::OBJITEMLIST& AllObjItems
00588 );
00589
00590 ERRVALUE PromptForOutputObjects (
00591 SIMPLE_ARRAY<int>& NumObjectsInFile,
00592 RVC::OBJITEMLIST& AllObjItems
00593 );
00594
00595 virtual ERRVALUE v_CreateContent();
00596
00597 virtual void v_OnOK();
00598
00599 void CreateJob(bool held);
00600 void OnRunJob();
00601 void OnSaveJob();
00602
00603 const MIE::FORMAT* m_Format;
00604 MIE::SETTINGS& m_Settings;
00605 MIE::UI_BASE* m_UIBase;
00606 const MISTRINGLIST& m_Files;
00607 MGUI::CTRL_PUSHBUTTON m_BtnRunJob;
00608 MGUI::CTRL_PUSHBUTTON m_BtnSaveJob;
00609
00610 #endif
00611 };
00612
00613
00614 }
00615
00616 #endif // INC_MIE_UIMAIN_H