Option Strict Off
Option Explicit On
'------------------------------------ 2024/04/01 ------------------------------------
Public Class frmDlgColorFontSet

#Region "宣言"
    Private mMe_gmDlgID As Integer = 0
    Private mNew実行中 As Boolean = True
    Private mLoading As Boolean
    Private m色サンプル(12) As Label
    Private mCurIDX As Integer
    Private mWaku As 五clsWakuwaku
    Private mDEFColor(12) As Integer
    Private mOldColor(12) As Integer
    Private mNewColor(12) As Integer
    Private mOldFont, mDefFont, mNewFont As String
    Private mOldBold, mDefBold, mNewBold As Boolean
    Private mUserピタペタ, mKeyDown As Boolean
    '**************************************************************************************************************************************
    Private WithEvents イベントgAppEventMaker As 五clsEventMaker
    '**************************************************************************************************************************************
    '宣言
    Private WithEvents o色見本 As 五clsColorSet2401 = Nothing
    Private flg_o色見本Loading As Boolean = True
#End Region

#Region "zzAppIniFileOp"
    Private Function zzAppIniFileOp(ByVal Load_0_QueryUnload_1_Resize_2_DoIniSave_3 As Long) As Boolean
        '読出し時に　INI ファイルが存在しない場合は　False　を返します。
        If gggAppIniFile Is Nothing Then Return False
        Return gggAppIniFile.aaAppIniFileOp_フォームサイズと位置だけ_共通処理(Load_0_QueryUnload_1_Resize_2_DoIniSave_3, Me, "-" & Me.Text)
    End Function
#End Region

#Region "Form イベント"
    Friend Function 色設定ダイアログShow0(ByRef rゲーム実行中です As Boolean, ByVal rMe_gmDlgID As Integer, ByVal rMe_Text As String, _
                        ByRef rDEFColor() As Integer, ByRef rCurColor() As Integer, ByRef rDEFFont As String, ByRef rOldFont As String, ByRef rDEFBold As Boolean, ByRef rOldBold As Boolean) As Boolean
        mMe_gmDlgID = rMe_gmDlgID
        mNew実行中 = False
        mLoading = True
        mKeyDown = False
        Try
            イベントgAppEventMaker = gAppEventMaker
            gggbol = zzSetObj(1)
            '--------------------------------------
            If mWaku Is Nothing Then
                mWaku = New 五clsWakuwaku : mWaku.aa_Make(Me, 2, Color.Red) : mWaku.aa_BringToFront()
            End If
            '--------------------------------------
            mLoading = False
            '--------------------------------------
            o色見本 = New 五clsColorSet2401(flg_o色見本Loading, Me, lblColorBoxTMP)
            '--------------------------------------
            Dim a As Integer
            For a = 1 To 12 : mDEFColor(a) = rDEFColor(a) : Next
            For a = 1 To 12 : mOldColor(a) = rCurColor(a) : Next
            For a = 1 To 12 : mNewColor(a) = mOldColor(a) : Next
            mDefFont = rDEFFont : mOldFont = rOldFont : mNewFont = mOldFont
            mDefBold = rDEFBold : mOldBold = rOldBold : mNewBold = mOldBold
            gggbol = zzフォント関連操作(1, False)
            '------------------------
            gggbol = zzラベルにすべての色を設定()
            '------------------------
            If Not zzAppIniFileOp(0) Then gggint = ⅩFormMove(gcoフォームをスクリーン中心に移動, Me) 'INI ファイルが存在しない場合に、このフォームを画面のセンターに表示するコード。
            gggbol = イベントgAppEventMaker.MakeEventフォームの表示消去(mMe_gmDlgID, True)
            gggbol = ⅩForm_OwnerSet_IconSet_TextSet(Me, rMe_Text, frmMain)
            Me.Show()
            '------------------------
            Call lbl配色セット_1_Click(Nothing, Nothing)
            '------------------------
        Catch ex As Exception
            Call ⅩMsgBox_OK_情報("frmDlgColorFontSet_Load()" & gggCR2 & ex.ToString)
        End Try
        mLoading = False
        Return True
    End Function
    Private Sub frmDlgColorFontSet_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        o色見本.Dispose()
        gggbol = イベントgAppEventMaker.MakeEventフォームの表示消去(mMe_gmDlgID, False)
        gggbol = zzSetObj(2)
        gggint = zzAppIniFileOp(2)
        gggint = zzAppIniFileOp(1)
        gggbol = mWaku.aa_Delete()
        mWaku = Nothing
    End Sub
    Private Sub frmDlgColorFontSet_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
        qqqqq("frmDlgColorFontSet_Disposed")
        Call frmMain.aa色とフォントの設定Dlg_Load_1_Disposed_2(2, Nothing)
    End Sub

#End Region

#Region "Controls イベント"
    Private Sub lbl配色セット_1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbl配色セット_1.Click, lbl配色セット_2.Click, lbl配色セット_3.Click, lbl配色セット_4.Click, lbl配色セット_5.Click, lbl配色セット_6.Click, lbl配色セット_7.Click, lbl配色セット_8.Click, lbl配色セット_9.Click, lbl配色セット_10.Click, lbl配色セット_11.Click, lbl配色セット_12.Click
        If mLoading Or mNew実行中 Then Return
        If gmアプリ終了する Then Return
        Dim index As Integer = IIf(sender Is lbl配色セット_1, 1, IIf(sender Is lbl配色セット_2, 2, IIf(sender Is lbl配色セット_3, 3, IIf(sender Is lbl配色セット_4, 4, IIf(sender Is lbl配色セット_5, 5, IIf(sender Is lbl配色セット_6, 6, _
                               IIf(sender Is lbl配色セット_7, 7, IIf(sender Is lbl配色セット_8, 8, IIf(sender Is lbl配色セット_9, 9, IIf(sender Is lbl配色セット_10, 10, IIf(sender Is lbl配色セット_11, 11, IIf(sender Is lbl配色セット_12, 12, 0))))))))))))
        If index = 0 Then
            index = 1   '2023/08/26  初期化　from Call lbl配色セット_1_Click(Nothing, Nothing)
        End If
        mCurIDX = index
        With m色サンプル(index)
            mWaku.aa_位置サイズ_Set(.Left - 4, .Top - 4, .Width + 7, .Height + 7, 2)
        End With
        If o色見本 IsNot Nothing Then o色見本.CurMainColor() = mNewColor(index)
        'qqqqq("lbl配色セット_1_Click  etc ...")
    End Sub

    Private Sub chk太字_CheckStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chk太字.CheckStateChanged
        If mLoading Or mNew実行中 Then Return
        mNewBold = chk太字.Checked
        frmMain.pフォント太字 = mNewBold
        Call zz入出力の許可禁止を設定()
    End Sub
    Private Sub lstフォント名_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstフォント名.SelectedIndexChanged
        If mLoading Or mNew実行中 Then Return
        gggbol = zzフォント関連操作(2, False)
    End Sub
    Private Sub btn閉じる_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn閉じる.Click
        Me.Close()
    End Sub

    Private Sub btnすべて元の状態に戻す_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnすべて元の状態に戻す.Click, btnアプリの初期設定に戻す.Click, btn元のフォントに戻す.Click, btn初期設定のフォントに戻す.Click
        If mLoading Or mNew実行中 Then Return
        If gmアプリ終了する Then Return
        Dim index As Integer = IIf(sender Is btnすべて元の状態に戻す, 2, IIf(sender Is btnアプリの初期設定に戻す, 3, IIf(sender Is btn元のフォントに戻す, 12, IIf(sender Is btn初期設定のフォントに戻す, 13, 0))))
        Try
            Dim a As Integer
            Select Case index
                Case 2, 3 'カラー設定
                    Select Case index
                        Case 2 'btnすべて元の状態に戻す_Click
                            For a = 1 To 12 : mNewColor(a) = mOldColor(a) : Next
                        Case 3 'btnアプリの初期設定に戻す_Click
                            For a = 1 To 12 : mNewColor(a) = mDEFColor(a) : Next
                    End Select
                    Call zzラベルにすべての色を設定()
                    Call frmMain.p配色データーを全て設定(mNewColor(1), mNewColor(2), mNewColor(3), mNewColor(4), mNewColor(5), mNewColor(6), mNewColor(7), mNewColor(8), mNewColor(9), mNewColor(10), mNewColor(11), mNewColor(12))
                    Call frmMain.p配色データーを全ての実体に設定(0)
                    Call frmMain.aa再作成モードの設定(2)
                Case 12, 13 'フォント設定
                    Select Case index
                        Case 12 'btn元のフォントに戻す_Click
                            mNewFont = mOldFont : mNewBold = mOldBold
                        Case 13 'btn初期設定のフォントに戻す_Click
                            mNewFont = mDefFont : mNewBold = mDefBold
                    End Select
                    Call frmMain.pフォント名pフォント太字同時設定(mNewFont, mNewBold)
                    gggbol = zzフォント関連操作(1, True)
                    Call frmMain.aa再作成モードの設定(2)
            End Select
            Call zz入出力の許可禁止を設定()
            qqqqq("Call " & sender.ToString & "_Click() ")
            Return
        Catch ex As Exception
            MsgBox("ERROR in " & sender.ToString & "_Click() " & ex.ToString)
            Return
        End Try
    End Sub
    Private Sub o色見本_OnColorChanged(ByVal rCurMainColor As Integer, ByVal rCurColor As Integer, ByVal rChangeMode As 五clsColorSet2401.ColorChangeMode, ByVal rEventMouseUp As Boolean) Handles o色見本.OnColorChanged
        If mLoading Then Exit Sub
        If flg_o色見本Loading Then Exit Sub
        If rCurColor >= 0 Then
            m色サンプル(mCurIDX).BackColor = System.Drawing.ColorTranslator.FromWin32(rCurColor)
            If rEventMouseUp Then
                mNewColor(mCurIDX) = rCurColor
                m色サンプル(mCurIDX).BackColor = System.Drawing.ColorTranslator.FromWin32(mNewColor(mCurIDX))
                frmMain.p配色データー(mCurIDX) = mNewColor(mCurIDX)
                Call frmMain.p配色データーを全ての実体に設定(mCurIDX)
                Call frmMain.aa再作成モードの設定(2)
                Call zz入出力の許可禁止を設定()
                gggbol = frmMain.frmMain_Refresh_BackColor()
            End If
        End If
        'Debug.Print("色見本_OnColorChanged  " + CStr(rChangeMode) + "   " + CStr(rEventMouseUp))
    End Sub

#End Region

#Region "ローカル　ヘルパー"
    Private Function zzラベルにすべての色を設定() As Boolean
        If mLoading Or mNew実行中 Then Return False
        Dim a As Integer
        For a = 1 To 12 : m色サンプル(a).BackColor = System.Drawing.ColorTranslator.FromWin32(mNewColor(a)) : Next
        Call zz入出力の許可禁止を設定()
        Call lbl配色セット_1_Click(Nothing, Nothing)
        Return True
    End Function
    Function zz入出力の許可禁止を設定() As Boolean
        If mLoading Or mNew実行中 Then Return False
        If o色見本 Is Nothing Then Return False
        Dim a As Integer : Dim e As Boolean
        e = False
        For a = 1 To 12
            e = Not o色見本.色1色2は現在モードでの誤差範囲内で同じ(mNewColor(a), mOldColor(a))
            If e Then Exit For
        Next
        btn元のフォントに戻す.Enabled = e '配色を、すべて元の状態に戻す (&U)
        '-----------------------------------------------
        e = False
        For a = 1 To 12
            e = Not o色見本.色1色2は現在モードでの誤差範囲内で同じ(mNewColor(a), mDEFColor(a))
            If e Then Exit For
        Next
        btnアプリの初期設定に戻す.Enabled = e '配色を、規定値の状態にリセット (&R)
        '-----------------------------------------------
        btn元のフォントに戻す.Enabled = (mNewFont <> mOldFont) Or (mNewBold <> mOldBold) '元の書式に戻す (&O)
        btn初期設定のフォントに戻す.Enabled = (mNewFont <> mDefFont) Or (mNewBold <> mDefBold) '規定値の書式にリセット (&S)
    End Function
    Private Function zzSetObj(ByRef op As Integer) As Boolean
        If op = 1 Then
            m色サンプル(1) = lbl配色セット_1 : m色サンプル(2) = lbl配色セット_2 : m色サンプル(3) = lbl配色セット_3 : m色サンプル(4) = lbl配色セット_4 : m色サンプル(5) = lbl配色セット_5 : m色サンプル(6) = lbl配色セット_6
            m色サンプル(7) = lbl配色セット_7 : m色サンプル(8) = lbl配色セット_8 : m色サンプル(9) = lbl配色セット_9 : m色サンプル(10) = lbl配色セット_10 : m色サンプル(11) = lbl配色セット_11 : m色サンプル(12) = lbl配色セット_12
        Else
            For a As Integer = 1 To UBound(m色サンプル) : m色サンプル(a) = Nothing : Next
        End If
        Return True
    End Function
    Private Function zzフォント関連操作(ByVal op As Integer, ByVal mLoadingを無視する As Boolean) As Boolean
        If mLoading Or mNew実行中 Then Return False
        Select Case op
            Case 1 'FormLoad Set lstフォント名
                Try
                    If lstフォント名.Items.Count = 0 Then
                        lstフォント名.Items.Clear()
                        Dim wFonts() As String = {""}
                        Dim n As Integer = Ⅹフォントコンボ簡易リスト作成(wFonts, Nothing, "", "", True)
                        gggint = Ⅹリストボックスに_文配列からリストを入れる(lstフォント名, wFonts, True, -1, -1)
                    End If
                    Dim OldFontName As String = frmMain.pフォント名
                    mLoading = True
                    lstフォント名.SelectedIndex = lstフォント名.FindString(OldFontName)
                    chk太字.Checked = frmMain.pフォント太字()
                    mLoading = False
                Catch ex As Exception
                    Call ⅩMsgBox_OK_情報("btnスタイル_Click()" & gggCR2 & ex.ToString)
                End Try
            Case 2 'lstフォント名_SelectedIndexChanged()
                mNewFont = lstフォント名.SelectedItem.ToString
                frmMain.pフォント名 = mNewFont
                Call zz入出力の許可禁止を設定()
        End Select
        Return True
    End Function
#End Region

#Region "イベント from gAppEventMaker"
    Private Sub イベントgAppEventMaker_フォームの表示と消去(ByVal rフォーム名ID As Integer, ByVal r表示True消去False As Boolean) Handles イベントgAppEventMaker.フォームの表示と消去
        If Me.Visible = False Then Return
        If gmアプリ終了する Then
            'qqqqq("gmアプリ終了する Event_フォームの表示と消去()" + Me.Name)
            Return
        End If
        '-------------------------------------------
        Dim wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean = GMCOM_Dlgs他のウインドウの表示_非表示イベントで_rMe_ウインドウを消去しなさい(mMe_gmDlgID, rフォーム名ID, r表示True消去False)
        If wRet_rMe_gmDlgIDウインドウを消去しなさい Then
            Call btn閉じる_Click(Nothing, Nothing)
        End If
    End Sub
#End Region

End Class