Ticket #864: OnEvent.au3

File OnEvent.au3, 2.6 KB (added by anonymous, 15 years ago)
Line 
1#include <GUIConstantsEx.au3>
2#include <Array.au3>
3
4Opt("GUIOnEventMode", 1)
5
6Func closeApp()
7        Exit
8EndFunc
9
10Func linestoarray($file)
11        Local $array[1]
12        Local $file1HND = FileOpen($file, 0)
13        If $file1HND = -1 Then
14                MsgBox(16, "File Error", "Unable to open file")
15                Return False
16        EndIf
17        Local $line
18        Local $i = 0
19        While 1
20                $line = FileReadLine($file1HND)
21                If @error = -1 Then ExitLoop
22                ReDim $array[$i+1]
23                $array[$i] = $line
24                $i += 1
25        Wend
26        FileClose($file1HND)
27        Return $array
28EndFunc
29
30Func load()     
31        Global $mGUI = GUICreate("Compare and Merge", 360, 100, -1, -1)
32        Global $file1 = GUICtrlCreateInput("", 10, 15 + 5, 250, 20)
33        Local $b1 = GUICtrlCreateButton("Load", 270, 15 + 5, 40, 20)
34        Global $file2 = GUICtrlCreateInput("", 10, 15 + 45, 250, 20)
35        Local $b2 = GUICtrlCreateButton("Load", 270, 15 + 45, 40, 20)
36        Local $bs = GUICtrlCreateButton("OK", 320, 15 + 5, 30, 60)
37
38        GUISetOnEvent($GUI_EVENT_CLOSE, "closeApp")
39        GUICtrlSetOnEvent($b1, "b1")
40        GUICtrlSetOnEvent($b2, "b2")
41        GUICtrlSetOnEvent($bs, "bs")
42       
43        GUISetState(@SW_SHOW)
44        WinActivate($mGUI, "") 
45EndFunc
46
47Func b1()
48        Global $file1Loc = FileOpenDialog("Select file", @ScriptDir, "Text files (*.txt)", 3)
49        GUICtrlSetData($file1, $file1Loc)
50EndFunc
51
52Func b2()
53        Global $file2Loc = FileOpenDialog("Select file", @ScriptDir, "Text files (*.txt)", 3)
54        GUICtrlSetData($file2, $file2Loc)
55EndFunc
56
57Func bs()
58        Local $array[1]
59        Local $array1 = linestoarray($file1Loc)
60        Local $array2 = linestoarray($file2Loc)
61        For $i=0 To UBound($array1)-1 Step 1
62                ReDim $array[$i+1]
63                If $array1[$i] == $array2[$i] Then
64                        $array[$i] = $array1[$i]
65                Else
66                        Local $ck = choice($array1[$i], $array2[$i])
67                        If $ck == 1 Then $array[$i] = $array1[$i]
68                        If $ck == 2 Then $array[$i] = $array2[$i]
69                EndIf
70        Next
71        _ArrayDisplay($array, "Results")
72EndFunc
73
74Func choice($ch1, $ch2)
75        HotKeySet("{F8}", "sl")
76        Global $checked = 0
77        Global $cGUI = GUICreate("Choice", 360, 100, -1, -1)
78        GUISwitch($cGUI)
79        Global $Checkbox1 = GUICtrlCreateCheckbox($ch1, 10, 15+5, 300, 20)
80        Global $Checkbox2 = GUICtrlCreateCheckbox($ch2, 10, 15+45, 300, 20)
81        Global $cbs = GUICtrlCreateButton("OK", 320, 15 + 5, 30, 60)
82        GUISetOnEvent($GUI_EVENT_CLOSE, "closeApp")
83        GUICtrlSetOnEvent($cbs, "sl")
84        GUISetState(@SW_SHOW)
85        WinActivate($cGUI, "")
86        While Not $checked
87                Sleep(50)
88        WEnd
89        GUISwitch($mGUI)
90        GUIDelete($cGUI)
91        Return $checked
92EndFunc
93
94Func sl()
95        If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then $checked = 1
96        If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then $checked = 2
97EndFunc
98
99load()
100
101While 1
102        Sleep(250) ; Just idle around
103WEnd