; --------------------------------------------------------------------------------------
;
; This source file is part of PureBasic
; For the latest info, see http://www.purebasic.com/
; 
; Copyright (c) 1998-2006 Fantaisie Software
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License
; as published by the Free Software Foundation; either version 2
; of the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
;
; --------------------------------------------------------------------------------------
;
; PB Editor Prefs..
;
; NB. This uses the unreleased NFile userlib.


Statement LoadPrefs{}
 SHARED PBGlobals,PBCompiler,PBPrefs

 If NReadFile(0,"PROGDIR:PureEditor.prefs")



  If NReadLong = Cvl("PRF1")
    PBPrefs\SourcePath         = NReadString
    PBGlobals\SaveFileName     = PBPrefs\SourcePath
    PBCompiler\Executable      = PBPrefs\SourcePath

    PBGlobals\ASLWidth         = NReadWord
    PBGlobals\ASLHeight        = NReadWord

    PBPrefs\TabSize            = NReadWord

    PBPrefs\UseCustomScreen    = NReadByte
    PBPrefs\CustomScreenID     = NReadLong
    PBPrefs\CustomScreenWidth  = NReadWord
    PBPrefs\CustomScreenHeight = NReadWord
    PBPrefs\CustomScreenDepth  = NReadByte

    PBPrefs\EditFontName       = NReadByte
    PBPrefs\EditFontHeight     = NReadWord

    PBPrefs\ReLoadSource       = NReadByte
    PBGlobals\FileName         = NReadString
  EndIf

  NCloseFile 0
 EndIf
End Statement


;--------------------------------------------------------

Statement SavePreferences{}
  SHARED PBGlobals,PBCompiler,PBPrefs

    If NCreateFile(0,"PROGDIR:PureEditor.prefs")

       NWriteLong     Cvl("PRF1")
       NWriteStringN PBPrefs\SourcePath ;?

       NWriteWord    PBGlobals\ASLWidth
       NWriteWord    PBGlobals\ASLHeight
       NWriteWord    PBPrefs\TabSize
       NWriteByte    PBPrefs\UseCustomScreen
       NWriteLong    PBPrefs\CustomScreenID
       NWriteWord    PBPrefs\CustomScreenWidth
       NWriteWord    PBPrefs\CustomScreenHeight
       NWriteByte    PBPrefs\CustomScreenDepth

       NWriteStringN PBPrefs\EditFontName
       NWriteWord    PBPrefs\EditFontHeight

       NWriteByte    PBPrefs\ReLoadSource
       NWriteStringN PBGlobals\SaveFileName

      NCloseFile 0
    EndIf
End Statement

;--------------------------------------------------------


Statement UsePreferences{}
  SHARED PBGlobals,PBPrefs

  PBPrefs\SourcePath = NGetStringText(#PR_SourcePath)

  PBGlobals\ASLWidth  = Val(NGetStringText(#PR_AslWidth))
  PBGlobals\ASLHeight = Val(NGetStringText(#PR_AslHeight))
  PBPrefs\TabSize   = Val(NGetStringText(#PR_TabSize))

  If PBPrefs\EditFontName <> ""

    NCloseFont(0)
    If NLoadFont(0, PBPrefs\EditFontName, PBPrefs\EditFontHeight)

      NUseWindow #Window_Main
      SetFont_ NWindowRastPort, NFontID

      SetupDisplay{}
    ;Else
    ;  a=MessageBox{"Error","Can't load the font '"+EditFontName+"'",0,"Ok"}
    EndIf
  EndIf
End Statement

;------------------------------------------------------------

Statement Preferences{}
  SHARED PBMetrics,PBGlobals,PBPrefs,Language(),*TagList,Labels(),*MyScreen

  Old_EditFontName.s = PBPrefs\EditFontName
  Old_EditFontHeight.w = PBPrefs\EditFontHeight
  Old_SourcePath.s   = PBPrefs\SourcePath
  Old_ReLoadSource.w   = PBPrefs\ReLoadSource

  WindowW.w = 400-20

  If NCreateGadgetList(#Window_Preference, *MyScreen)

    HG.w  = PBMetrics\WTitleHeight+5
    HF.w  = PBMetrics\SFontHeight+5
    HF2.w = HF+4
    XG.w  = 10

    !DPrint{1,Str$(HG)+","+Str$(HF)}

    NSetGadgetFlags #PLACETEXT_LEFT
    NResetTagList #GTST_MaxChars, 100
          NAddTag #GTST_String  , &PBPrefs\SourcePath
    NStringGadget #PR_SourcePath, XG+PBMetrics\PR_SourcePathW, HG, WindowW-PBMetrics\PR_SourcePathW-20, HF, Language(57), *TagList

    NSetGadgetFlags #PLACETEXT_IN
    NButtonGadget  #PR_ChoosePath, XG+WindowW-20, HG, 20, HF, "?", *TagList : HG+HF2

    NSetGadgetFlags #PLACETEXT_LEFT
    NResetTagList  #GTIN_Number, PBGlobals\ASLWidth
    NIntegerGadget #PR_AslWidth, XG+PBMetrics\PR_AslWidthW, HG, 50, HF, Language(58), *TagList

    a.w = XG+PBMetrics\PR_AslWidthW+50+PBMetrics\PR_AslHeightW+10

    NResetTagList  #GTIN_Number, PBGlobals\ASLHeight
    NIntegerGadget #PR_AslHeight, a, HG, 50, HF, Language(59), *TagList : HG+HF2

    ;a = a+50+10+PR_TabSizeW

    NSetGadgetFlags #PLACETEXT_IN
    NButtonGadget  #PR_EditFont, XG, HG, 180, HF, Language(89), *TagList

    NSetGadgetFlags #PLACETEXT_LEFT
    NResetTagList  #GTIN_Number, PBPrefs\TabSize
    NIntegerGadget #PR_TabSize, XG+200+PBMetrics\PR_TabSizeW, HG, 50, HF, Language(60), *TagList : HG+HF2

    NSetGadgetFlags #PLACETEXT_RIGHT
    NResetTagList   #GTCB_Scaled , PBMetrics\Proportional
          NAddTag   #GTCB_Checked, PBPrefs\ReLoadSource
    NCheckBoxGadget #PR_ReLoadSource, XG, HG, HF, HF, Language(100), *TagList : HG+HF2+8


    Old_HG2.w = HG

;    Dim Labels.s(2)
;
;    Labels(0) = Language(90)
;    Labels(1) = Language(91)

    NSetGadgetFlags #PLACETEXT_RIGHT

    ; Doobrey: NResetTagList #GTMX_Labels , ????Lib  167/   7(Labels())
    Labaddr.l=&Labels(0)
;    NResetTagList #GTMX_Labels,&Labels(0)
;          NAddTag #GTMX_Active , PBPrefs\UseCustomScreen
;          NAddTag #GTMX_Spacing, 4
;    NOptionGadget #PR_ScreenType, XG, HG, 70, HF,"", *TagList : HG+HF2*2

    NSetGadgetFlags #PLACETEXT_IN

    NResetTagList #GA_Disabled, 1-PBPrefs\UseCustomScreen
    NButtonGadget #PR_ScreenMode, XG+200, HG-HF2-8, 100, HF, Language(92), *TagList

    Old_HG.w = HG


    a.w = WindowW/3-6
    NButtonGadget #PR_Save  , XG       , HG, a, HF, Language(61), 0
    NButtonGadget #PR_Use   , XG+a+10  , HG, a, HF, Language(62), 0
    NButtonGadget #PR_Cancel, XG+a+a+20, HG, a, HF, Language(27), 0

    HG+HF2+5

  If OpenStandardWindow{#Window_Preference, WindowW+20, HG, 56}

    Rect{NWBorderLeft-1,Old_HG2-6,NWInnerWidth+2,2,1}
    Rect{NWBorderLeft-1,Old_HG-6,NWInnerWidth+2,2,1}

    NActivateGadget #PR_SourcePath

    Repeat

      IDCMP.l = NWaitWindowEvent

      If IDCMP = #IDCMP_GADGETDOWN Then IDCMP = #IDCMP_GADGETUP

      Select IDCMP

        Case #IDCMP_GADGETUP

          Code.l = NGadgetCode

          Select NEventID

            Case #PR_ScreenType

              PBPrefs\UseCustomScreen = Code

              If PBPrefs\UseCustomScreen = 1
                NDisableGadget #PR_ScreenMode,0
              Else
                NDisableGadget #PR_ScreenMode,1
              EndIf

            Case #PR_ReLoadSource
              PBPrefs\ReLoadSource = Code

            Case #PR_ChoosePath
              ChoosePath{}


            Case #PR_EditFont
              ChooseEditFont{}


            Case #PR_ScreenMode
              ChooseScreenMode{}


            Case #PR_Save
              UsePreferences{}
              SavePreferences{}
              IDCMP = #IDCMP_CLOSEWINDOW


            Case #PR_Use
              UsePreferences{}
              IDCMP = #IDCMP_CLOSEWINDOW


            Case #PR_Cancel
              PBPrefs\EditFontName   = Old_EditFontName
              PBPrefs\EditFontHeight = Old_EditFontHeight
              PBPrefs\SourcePath      = Old_SourcePath
              PBPrefs\ReLoadSource   = Old_ReLoadSource

              IDCMP = #IDCMP_CLOSEWINDOW

          End Select

        Case #IDCMP_VANILLAKEY

      End Select


    Until IDCMP = #IDCMP_CLOSEWINDOW

    NCloseWindow #Window_Preference
  EndIf

  NFreeGadgetList #Window_Preference

  NUseWindow #Window_Main
 EndIf 
End Statement


