areaeditor/
/*
** AreaEditor - a program for editing SMAUG and ROM area files.
** Author: Nick Gammon
** http://www.gammon.com.au/
** See Copyright Notice at the end of AreaEditor.h
*/

#include "stdafx.h"
#include "AreaEditor.h"

#include "PrefsP1.h"
#include "PrefsP2.h"
#include "PrefsP3.h"
#include "PrefsP4.h"

void CAreaEditorApp::OnFilePreferences() 
{

CPropertySheet sheet ("Preferences");

CPrefsP1 page1;
CPrefsP2 page2;
CPrefsP3 page3;
#ifdef SPELL_CHECKER
CPrefsP4 page4;
#endif  // SPELL_CHECKER

sheet.AddPage (&page1);
sheet.AddPage (&page2);
sheet.AddPage (&page3);
#ifdef SPELL_CHECKER
  sheet.AddPage (&page4);
#endif  // SPELL_CHECKER
  // page 1
  page1.m_strCommandsFile = App.GetProfileString  (sProfilePreferences, sProfileCommandsFile, "");
  page1.m_strSocialsFile  = App.GetProfileString  (sProfilePreferences, sProfileSocialsFile, "");
  page1.m_strSkillsFile   = App.GetProfileString  (sProfilePreferences, sProfileSkillsFile, "");
  page1.m_strConfigFile   = App.GetProfileString  (sProfilePreferences, sProfileConfigFile, "");

  // page 2
	page2.m_bWarnVnumsOutOfRange = App.GetProfileInt  (sProfilePreferences, sProfileWarnVnums, 1);
	page2.m_bShowWarnings = App.GetProfileInt         (sProfilePreferences, sProfileShowWarnings, 1);
	page2.m_bShowFlagNumbers = App.GetProfileInt      (sProfilePreferences, sProfileShowFlagNumbers, 0);
  page2.m_strFontName = App.GetProfileString        (sProfilePreferences, sProfileScreenFontName, "FixedSys");
	page2.m_iScreenFontSize = App.GetProfileInt       (sProfilePreferences, sProfileScreenFontSize, 9);
  page2.m_bSaveROMPrograms = App.GetProfileInt      (sProfilePreferences, sProfileSaveROMPrograms, 0);
	page2.m_iDefaultAreaType = App.GetProfileInt      (sProfilePreferences, sProfileDefaultAreaType, eSMAUG);

  // page 3
  page3.m_strFontName = App.GetProfileString  (sProfilePreferences, sProfileFontName, "Courier");
	page3.m_iPrinterFontSize = App.GetProfileInt  (sProfilePreferences, sProfileFontSize, 9);
	page3.m_iLeftMargin = App.GetProfileInt  (sProfilePreferences, sProfileLeftMargin, 15);
	page3.m_iTopMargin = App.GetProfileInt  (sProfilePreferences, sProfileTopMargin, 15);
	page3.m_iLinesPerPage = App.GetProfileInt  (sProfilePreferences, sProfileLinesPerpage, 60);
	page3.m_bPrintToFile = App.GetProfileInt  (sProfilePreferences, sProfilePrintToFile, 0);
	page3.m_bShowPrograms = App.GetProfileInt  (sProfilePreferences, sProfileShowPrograms, 0);

#ifdef SPELL_CHECKER

  // page 4

	page4.m_bAreaCheck = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_AREA_CHECK);
	page4.m_bEditWindow = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_CHECK_EDIT_WINDOW);
	page4.m_bHelp = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_HELP_TEXT);
	page4.m_bEnable = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_ENABLE);
	page4.m_bMobDesc = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_DESC);
	page4.m_bMobLong = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_LONG); 
	page4.m_bMobName = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_NAME);
	page4.m_bMobShort = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_SHORT);
	page4.m_bObjActionDesc = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_ACTIONDESC);
	page4.m_bExtraDesc = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXTRA_DESC);
	page4.m_bObjLong = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_LONG);
	page4.m_bObjName = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_NAME);
	page4.m_bObjShort = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_SHORT);
	page4.m_bRoomDesc = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_ROOM_DESC);
	page4.m_bRoomName = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_ROOM_NAME);
	page4.m_bCheckView = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_CHECK_ON_VIEW);
	page4.m_bAcceptName = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_ACCEPT_NAME);
	page4.m_bExitDesc = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXIT_DESC);

#endif  // SPELL_CHECKER


  if (sheet.DoModal () != IDOK)
    return;

  // page 1
  App.WriteProfileString  (sProfilePreferences, sProfileCommandsFile, page1.m_strCommandsFile);
  App.WriteProfileString  (sProfilePreferences, sProfileSocialsFile,  page1.m_strSocialsFile);
  App.WriteProfileString  (sProfilePreferences, sProfileSkillsFile,  page1.m_strSkillsFile);
  App.WriteProfileString  (sProfilePreferences, sProfileConfigFile,  page1.m_strConfigFile);

  // page 2
  App.WriteProfileInt     (sProfilePreferences, sProfileWarnVnums,      page2.m_bWarnVnumsOutOfRange);
  App.WriteProfileInt     (sProfilePreferences, sProfileShowWarnings,   page2.m_bShowWarnings);
  App.WriteProfileInt     (sProfilePreferences, sProfileShowFlagNumbers, page2.m_bShowFlagNumbers);

  App.WriteProfileString  (sProfilePreferences, sProfileScreenFontName, page2.m_strFontName);
	App.WriteProfileInt     (sProfilePreferences, sProfileScreenFontSize, page2.m_iScreenFontSize);

  App.WriteProfileInt     (sProfilePreferences, sProfileSaveROMPrograms, page2.m_bSaveROMPrograms);
  App.WriteProfileInt     (sProfilePreferences, sProfileDefaultAreaType, page2.m_iDefaultAreaType);

  // page 3
  App.WriteProfileString  (sProfilePreferences, sProfileFontName, page3.m_strFontName);
	App.WriteProfileInt  (sProfilePreferences,    sProfileFontSize, page3.m_iPrinterFontSize);
	App.WriteProfileInt  (sProfilePreferences,    sProfileLeftMargin, page3.m_iLeftMargin);
	App.WriteProfileInt  (sProfilePreferences,    sProfileTopMargin, page3.m_iTopMargin);
	App.WriteProfileInt  (sProfilePreferences,    sProfileLinesPerpage, page3.m_iLinesPerPage);
	App.WriteProfileInt  (sProfilePreferences,    sProfilePrintToFile, page3.m_bPrintToFile);
	App.WriteProfileInt  (sProfilePreferences,    sProfileShowPrograms, page3.m_bShowPrograms);

  // page 4

#ifdef SPELL_CHECKER

  // no options set yet
  App.m_SpellCheckOptions = 0;

  if (page4.m_bAreaCheck) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_AREA_CHECK);
  if (page4.m_bEditWindow) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_CHECK_EDIT_WINDOW);
  if (page4.m_bHelp) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_HELP_TEXT);
  if (page4.m_bEnable) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_ENABLE);
  if (page4.m_bMobDesc) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_DESC);
  if (page4.m_bMobLong) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_LONG); 
  if (page4.m_bMobName) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_NAME);
  if (page4.m_bMobShort) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_MOB_SHORT);
  if (page4.m_bObjActionDesc) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_ACTIONDESC);
  if (page4.m_bExtraDesc) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXTRA_DESC);
  if (page4.m_bObjLong) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_LONG);
  if (page4.m_bObjName) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_NAME);
  if (page4.m_bObjShort) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_OBJECT_SHORT);
  if (page4.m_bRoomDesc) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_ROOM_DESC);
  if (page4.m_bRoomName) 
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_ROOM_NAME);
	if (page4.m_bCheckView)
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_CHECK_ON_VIEW);
	if (page4.m_bAcceptName)
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_ACCEPT_NAME);
	if (page4.m_bExitDesc)
    SET_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXIT_DESC);

  // save as a single integer
  App.WriteProfileInt     (sProfilePreferences, "SpellCheckOptions",  
                            App.m_SpellCheckOptions);

#endif  // SPELL_CHECKER

// if config file is specified load it.

  if (!page1.m_strConfigFile.IsEmpty ())
    LoadConfig (page1.m_strConfigFile);

#ifdef SPELL_CHECKER

  // enable spell checker, if wanted in prefs
  if (CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_ENABLE))
    App.InitSpellCheck ();      // re-init, in case it was off before
  else
    App.m_bSpellCheckOK = false;    // the user doesn't want the spell checker

  App.SpellPaths ();    // set up path name to dictionary etc.

#endif // SPELL_CHECKER

}