Skip to content

Commit f66bda2

Browse files
committed
✨コンフィグダイアログを追加
1 parent 731e4d0 commit f66bda2

File tree

10 files changed

+354
-5
lines changed

10 files changed

+354
-5
lines changed

source/filter_drag.aua/addin.hpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ namespace apn::filter_drag
3737
if (!hook_manager.init()) return FALSE;
3838
if (!keyboard_hook.init()) return FALSE;
3939
if (!config_checker.init()) return FALSE;
40+
if (!addin_window.init()) return FALSE;
4041

4142
aim_src.available = TRUE;
4243
aim_src.alpha = 100;
@@ -60,6 +61,7 @@ namespace apn::filter_drag
6061

6162
config_io.write();
6263

64+
addin_window.exit();
6365
config_checker.exit();
6466
keyboard_hook.exit();
6567
hook_manager.exit();
@@ -70,5 +72,26 @@ namespace apn::filter_drag
7072

7173
return FALSE;
7274
}
75+
76+
//
77+
// この仮想関数は、ウィンドウコマンドを実行するときに呼ばれます。
78+
//
79+
virtual BOOL on_window_command(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, AviUtl::EditHandle* editp, AviUtl::FilterPlugin* fp) override
80+
{
81+
switch (wParam)
82+
{
83+
case magi.c_command_id.c_addin.c_command:
84+
{
85+
MY_TRACE_FUNC("magi.c_command_id.c_addin.c_command");
86+
87+
// アドインウィンドウを表示します。
88+
if (::IsWindow(addin_window)) addin_window.show();
89+
90+
break;
91+
}
92+
}
93+
94+
return FALSE;
95+
}
7396
} addin;
7497
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#pragma once
2+
3+
namespace apn::filter_drag
4+
{
5+
//
6+
// このクラスはアドインダイアログです。
7+
//
8+
inline struct AddinDialog : StdAddinDialog<idd_main>
9+
{
10+
//
11+
// コントロールを更新します。
12+
//
13+
virtual void on_update_controls() override
14+
{
15+
MY_TRACE_FUNC("");
16+
17+
set_int(idc_gripper_height, hive.gripper_height);
18+
set_check(idc_show_aim_src, aim_src.available);
19+
set_check(idc_show_aim_dst, aim_dst.available);
20+
set_check(idc_show_sight, sight.config.available);
21+
set_check(idc_use_shift, keyboard_hook.use_shift);
22+
set_check(idc_use_ctrl, keyboard_hook.use_ctrl);
23+
set_check(idc_use_alt, keyboard_hook.use_alt);
24+
set_check(idc_use_win, keyboard_hook.use_win);
25+
}
26+
27+
//
28+
// コンフィグを更新します。
29+
//
30+
virtual void on_update_config() override
31+
{
32+
MY_TRACE_FUNC("");
33+
34+
get_int(idc_gripper_height, hive.gripper_height);
35+
get_check(idc_show_aim_src, aim_src.available);
36+
get_check(idc_show_aim_dst, aim_dst.available);
37+
get_check(idc_show_sight, sight.config.available);
38+
get_check(idc_use_shift, keyboard_hook.use_shift);
39+
get_check(idc_use_ctrl, keyboard_hook.use_ctrl);
40+
get_check(idc_use_alt, keyboard_hook.use_alt);
41+
get_check(idc_use_win, keyboard_hook.use_win);
42+
}
43+
44+
//
45+
// ダイアログの初期化処理です。
46+
//
47+
virtual void on_init_dialog() override
48+
{
49+
MY_TRACE_FUNC("");
50+
}
51+
52+
//
53+
// ダイアログのコマンド処理です。
54+
//
55+
virtual void on_command(UINT code, UINT id, HWND control) override
56+
{
57+
MY_TRACE_FUNC("{/hex}, {/hex}, {/hex}", code, id, control);
58+
59+
switch (id)
60+
{
61+
// エディットボックス
62+
case idc_gripper_height:
63+
if (code == EN_CHANGE) update_config(); break;
64+
65+
// チェックボックス
66+
case idc_show_aim_src:
67+
case idc_show_aim_dst:
68+
case idc_show_sight:
69+
case idc_use_shift:
70+
case idc_use_ctrl:
71+
case idc_use_alt:
72+
case idc_use_win:
73+
update_config(); break;
74+
}
75+
}
76+
} addin_dialog;
77+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#pragma once
2+
3+
namespace apn::filter_drag
4+
{
5+
//
6+
// このクラスはアドインウィンドウです。
7+
// このウィンドウはプラグインウィンドウのように振る舞います。
8+
//
9+
inline struct AddinWindow : StdAddinWindow
10+
{
11+
//
12+
// 初期化処理を実行します。
13+
//
14+
BOOL init()
15+
{
16+
MY_TRACE_FUNC("");
17+
18+
return create_as_plugin(
19+
hive.instance,
20+
magi.exin.get_aviutl_window(),
21+
hive.c_display_name,
22+
WS_EX_NOPARENTNOTIFY,
23+
WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
24+
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
25+
200, 100, 400, 200);
26+
}
27+
28+
//
29+
// 後始末処理を実行します。
30+
//
31+
BOOL exit()
32+
{
33+
MY_TRACE_FUNC("");
34+
35+
return destroy();
36+
}
37+
38+
//
39+
// ウィンドウプロシージャです。
40+
//
41+
virtual LRESULT on_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) override
42+
{
43+
switch (message)
44+
{
45+
case WM_CREATE:
46+
{
47+
MY_TRACE_FUNC("WM_CREATE, {/hex}, {/hex}", wParam, lParam);
48+
49+
if (!addin_dialog.init(hive.instance, hwnd))
50+
{
51+
MY_TRACE("メインダイアログの作成に失敗しました\n");
52+
53+
return -1;
54+
}
55+
56+
set_target(addin_dialog);
57+
resize();
58+
59+
// 初期化が完了したので、このウィンドウをメインウィンドウに設定します。
60+
hive.main_window = addin_window;
61+
62+
break;
63+
}
64+
case WM_DESTROY:
65+
{
66+
MY_TRACE_FUNC("WM_DESTROY, {/hex}, {/hex}", wParam, lParam);
67+
68+
addin_dialog.exit();
69+
70+
break;
71+
}
72+
}
73+
74+
return __super::on_wnd_proc(hwnd, message, wParam, lParam);
75+
}
76+
} addin_window;
77+
}

source/filter_drag.aua/config_io.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ namespace apn::filter_drag
5959

6060
sight.update_context();
6161

62-
return TRUE;
62+
return addin_dialog.update_controls();
6363
}
6464

6565
//
@@ -108,6 +108,8 @@ namespace apn::filter_drag
108108
read_point(sight_node, "start_offset", sight.config.start_offset);
109109
}
110110

111+
read_window_pos(root, "addin_window", addin_window);
112+
111113
return TRUE;
112114
}
113115

@@ -157,6 +159,8 @@ namespace apn::filter_drag
157159
write_child_node(root, "sight", sight_node);
158160
}
159161

162+
write_window_pos(root, "addin_window", addin_window);
163+
160164
return TRUE;
161165
}
162166
} config_io;
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
// Microsoft Visual C++ generated resource script.
2+
//
3+
#include "resource.h"
4+
5+
#define APSTUDIO_READONLY_SYMBOLS
6+
/////////////////////////////////////////////////////////////////////////////
7+
//
8+
// Generated from the TEXTINCLUDE 2 resource.
9+
//
10+
#include "winres.h"
11+
12+
/////////////////////////////////////////////////////////////////////////////
13+
#undef APSTUDIO_READONLY_SYMBOLS
14+
15+
/////////////////////////////////////////////////////////////////////////////
16+
// ���{�� (���{) resources
17+
18+
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
19+
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
20+
#pragma code_page(932)
21+
22+
#ifdef APSTUDIO_INVOKED
23+
/////////////////////////////////////////////////////////////////////////////
24+
//
25+
// TEXTINCLUDE
26+
//
27+
28+
1 TEXTINCLUDE
29+
BEGIN
30+
"resource.h\0"
31+
END
32+
33+
2 TEXTINCLUDE
34+
BEGIN
35+
"#include ""winres.h""\r\n"
36+
"\0"
37+
END
38+
39+
3 TEXTINCLUDE
40+
BEGIN
41+
"\r\n"
42+
"\0"
43+
END
44+
45+
#endif // APSTUDIO_INVOKED
46+
47+
48+
/////////////////////////////////////////////////////////////////////////////
49+
//
50+
// Dialog
51+
//
52+
53+
idd_main DIALOGEX 0, 0, 220, 76
54+
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU
55+
EXSTYLE WS_EX_NOPARENTNOTIFY | WS_EX_CONTROLPARENT
56+
FONT 8, "MS Shell Dlg", 400, 0, 0x1
57+
BEGIN
58+
RTEXT "�O���b�p�[�̍���",idc_gripper_height_stc,6,6,54,12,SS_CENTERIMAGE
59+
EDITTEXT idc_gripper_height,66,6,36,12,ES_RIGHT | ES_AUTOHSCROLL | ES_WANTRETURN | NOT WS_BORDER,WS_EX_CLIENTEDGE
60+
CONTROL "�h���b�O����\��",idc_show_aim_src,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,24,60,12
61+
CONTROL "�h���b�O���\��",idc_show_aim_dst,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,24,60,12
62+
CONTROL "�T�C�g��\��",idc_show_sight,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,24,60,12
63+
CTEXT "�h���b�O�J�n�ɕK�v�ȃL�[",idc_key_stc,6,42,210,12,SS_CENTERIMAGE,WS_EX_STATICEDGE
64+
CONTROL "shift",idc_use_shift,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,60,48,12
65+
CONTROL "ctrl",idc_use_ctrl,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,60,48,12
66+
CONTROL "alt",idc_use_alt,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,114,60,48,12
67+
CONTROL "win",idc_use_win,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,168,60,48,12
68+
END
69+
70+
71+
/////////////////////////////////////////////////////////////////////////////
72+
//
73+
// DESIGNINFO
74+
//
75+
76+
#ifdef APSTUDIO_INVOKED
77+
GUIDELINES DESIGNINFO
78+
BEGIN
79+
idd_main, DIALOG
80+
BEGIN
81+
LEFTMARGIN, 7
82+
RIGHTMARGIN, 213
83+
TOPMARGIN, 7
84+
BOTTOMMARGIN, 69
85+
END
86+
END
87+
#endif // APSTUDIO_INVOKED
88+
89+
90+
/////////////////////////////////////////////////////////////////////////////
91+
//
92+
// AFX_DIALOG_LAYOUT
93+
//
94+
95+
idd_main AFX_DIALOG_LAYOUT
96+
BEGIN
97+
0
98+
END
99+
100+
#endif // ���{�� (���{) resources
101+
/////////////////////////////////////////////////////////////////////////////
102+
103+
104+
105+
#ifndef APSTUDIO_INVOKED
106+
/////////////////////////////////////////////////////////////////////////////
107+
//
108+
// Generated from the TEXTINCLUDE 3 resource.
109+
//
110+
111+
112+
/////////////////////////////////////////////////////////////////////////////
113+
#endif // not APSTUDIO_INVOKED
114+

source/filter_drag.aua/filter_drag.aua.vcxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@
157157
</Link>
158158
</ItemDefinitionGroup>
159159
<ItemGroup>
160+
<ClInclude Include="addin_dialog.hpp" />
161+
<ClInclude Include="addin_window.hpp" />
160162
<ClInclude Include="aim.hpp" />
161163
<ClInclude Include="config_checker.hpp" />
162164
<ClInclude Include="config_io.hpp" />
@@ -166,6 +168,7 @@
166168
<ClInclude Include="layout.hpp" />
167169
<ClInclude Include="pch.h" />
168170
<ClInclude Include="addin.hpp" />
171+
<ClInclude Include="resource.h" />
169172
<ClInclude Include="sight.hpp" />
170173
</ItemGroup>
171174
<ItemGroup>
@@ -180,6 +183,9 @@
180183
<ItemGroup>
181184
<None Include="main.def" />
182185
</ItemGroup>
186+
<ItemGroup>
187+
<ResourceCompile Include="filter_drag.aua.rc" />
188+
</ItemGroup>
183189
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
184190
<ImportGroup Label="ExtensionTargets" />
185191
</Project>

0 commit comments

Comments
 (0)