Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
ygopro-2pick
Commits
5ff31121
Commit
5ff31121
authored
Nov 18, 2018
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
regex
parent
b565e865
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
61 additions
and
6 deletions
+61
-6
gframe/client_field.cpp
gframe/client_field.cpp
+4
-4
gframe/data_manager.cpp
gframe/data_manager.cpp
+2
-1
gframe/deck_con.cpp
gframe/deck_con.cpp
+4
-1
gframe/event_handler.cpp
gframe/event_handler.cpp
+7
-0
gframe/game.cpp
gframe/game.cpp
+36
-0
gframe/game.h
gframe/game.h
+5
-0
strings.conf
strings.conf
+1
-0
system.conf
system.conf
+2
-0
No files found.
gframe/client_field.cpp
View file @
5ff31121
...
@@ -1444,11 +1444,11 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
...
@@ -1444,11 +1444,11 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
||
mainGame
->
CheckRegEx
(
cit
->
second
.
name
,
pname
)
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
declarable_type
))
{
if
(
is_declarable
(
cp
->
second
,
declarable_type
))
{
if
(
pname
==
cit
->
second
.
name
)
{
//exact match
if
(
pname
==
cit
->
second
.
name
||
mainGame
->
CheckRegEx
(
cit
->
second
.
name
,
pname
,
true
)
)
{
//exact match
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
(),
-
1
);
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
(),
-
1
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
}
else
{
}
else
{
...
@@ -1491,11 +1491,11 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
...
@@ -1491,11 +1491,11 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
mainGame
->
lstANCard
->
clear
();
mainGame
->
lstANCard
->
clear
();
ancard
.
clear
();
ancard
.
clear
();
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
for
(
auto
cit
=
dataManager
.
_strings
.
begin
();
cit
!=
dataManager
.
_strings
.
end
();
++
cit
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
)
{
if
(
cit
->
second
.
name
.
find
(
pname
)
!=
std
::
wstring
::
npos
||
mainGame
->
CheckRegEx
(
cit
->
second
.
name
,
pname
)
)
{
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
auto
cp
=
dataManager
.
GetCodePointer
(
cit
->
first
);
//verified by _strings
//datas.alias can be double card names or alias
//datas.alias can be double card names or alias
if
(
is_declarable
(
cp
->
second
,
opcode
))
{
if
(
is_declarable
(
cp
->
second
,
opcode
))
{
if
(
pname
==
cit
->
second
.
name
)
{
//exact match
if
(
pname
==
cit
->
second
.
name
||
mainGame
->
CheckRegEx
(
cit
->
second
.
name
,
pname
,
true
)
)
{
//exact match
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
(),
-
1
);
mainGame
->
lstANCard
->
insertItem
(
0
,
cit
->
second
.
name
.
c_str
(),
-
1
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
ancard
.
insert
(
ancard
.
begin
(),
cit
->
first
);
}
else
{
}
else
{
...
...
gframe/data_manager.cpp
View file @
5ff31121
#include "data_manager.h"
#include "data_manager.h"
#include "game.h"
#include <stdio.h>
#include <stdio.h>
namespace
ygo
{
namespace
ygo
{
...
@@ -183,7 +184,7 @@ const wchar_t* DataManager::GetSetName(int code) {
...
@@ -183,7 +184,7 @@ const wchar_t* DataManager::GetSetName(int code) {
unsigned
int
DataManager
::
GetSetCode
(
const
wchar_t
*
setname
)
{
unsigned
int
DataManager
::
GetSetCode
(
const
wchar_t
*
setname
)
{
for
(
auto
csit
=
_setnameStrings
.
begin
();
csit
!=
_setnameStrings
.
end
();
++
csit
)
{
for
(
auto
csit
=
_setnameStrings
.
begin
();
csit
!=
_setnameStrings
.
end
();
++
csit
)
{
auto
xpos
=
csit
->
second
.
find_first_of
(
L'|'
);
//setname|extra info
auto
xpos
=
csit
->
second
.
find_first_of
(
L'|'
);
//setname|extra info
if
(
csit
->
second
.
compare
(
0
,
xpos
,
setname
)
==
0
)
if
(
csit
->
second
.
compare
(
0
,
xpos
,
setname
)
==
0
||
mainGame
->
CheckRegEx
(
csit
->
second
,
setname
,
true
)
)
return
csit
->
first
;
return
csit
->
first
;
}
}
return
0
;
return
0
;
...
...
gframe/deck_con.cpp
View file @
5ff31121
...
@@ -902,6 +902,7 @@ void DeckBuilder::FilterCards() {
...
@@ -902,6 +902,7 @@ void DeckBuilder::FilterCards() {
int
trycode
=
BufferIO
::
GetVal
(
elements_iterator
->
c_str
());
int
trycode
=
BufferIO
::
GetVal
(
elements_iterator
->
c_str
());
bool
tryresult
=
dataManager
.
GetData
(
trycode
,
0
);
bool
tryresult
=
dataManager
.
GetData
(
trycode
,
0
);
if
(
!
tryresult
&&
!
CardNameContains
(
text
.
name
.
c_str
(),
elements_iterator
->
c_str
())
&&
text
.
text
.
find
(
elements_iterator
->
c_str
())
==
std
::
wstring
::
npos
if
(
!
tryresult
&&
!
CardNameContains
(
text
.
name
.
c_str
(),
elements_iterator
->
c_str
())
&&
text
.
text
.
find
(
elements_iterator
->
c_str
())
==
std
::
wstring
::
npos
&&
!
mainGame
->
CheckRegEx
(
text
.
text
,
elements_iterator
->
c_str
())
&&
(
!
set_code_map
[
*
elements_iterator
]
||
!
check_set_code
(
data
,
set_code_map
[
*
elements_iterator
])))
{
&&
(
!
set_code_map
[
*
elements_iterator
]
||
!
check_set_code
(
data
,
set_code_map
[
*
elements_iterator
])))
{
is_target
=
false
;
is_target
=
false
;
break
;
break
;
...
@@ -969,7 +970,7 @@ void DeckBuilder::SortList() {
...
@@ -969,7 +970,7 @@ void DeckBuilder::SortList() {
auto
left
=
results
.
begin
();
auto
left
=
results
.
begin
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
const
wchar_t
*
pstr
=
mainGame
->
ebCardName
->
getText
();
for
(
auto
it
=
results
.
begin
();
it
!=
results
.
end
();
++
it
)
{
for
(
auto
it
=
results
.
begin
();
it
!=
results
.
end
();
++
it
)
{
if
(
wcscmp
(
pstr
,
dataManager
.
GetName
((
*
it
)
->
first
))
==
0
)
{
if
(
wcscmp
(
pstr
,
dataManager
.
GetName
((
*
it
)
->
first
))
==
0
||
mainGame
->
CheckRegEx
(
dataManager
.
GetName
((
*
it
)
->
first
),
pstr
,
true
)
)
{
std
::
iter_swap
(
left
,
it
);
std
::
iter_swap
(
left
,
it
);
++
left
;
++
left
;
}
}
...
@@ -1017,6 +1018,8 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
...
@@ -1017,6 +1018,8 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
if
(
!
haystack
)
{
if
(
!
haystack
)
{
return
false
;
return
false
;
}
}
if
(
mainGame
->
CheckRegEx
(
haystack
,
needle
))
return
true
;
int
i
=
0
;
int
i
=
0
;
int
j
=
0
;
int
j
=
0
;
while
(
haystack
[
i
])
{
while
(
haystack
[
i
])
{
...
...
gframe/event_handler.cpp
View file @
5ff31121
...
@@ -1809,6 +1809,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
...
@@ -1809,6 +1809,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
return
true
;
return
true
;
break
;
break
;
}
}
case
CHECKBOX_REGEX
:
{
mainGame
->
gameConf
.
search_regex
=
mainGame
->
chkRegex
->
isChecked
()
?
1
:
0
;
if
(
mainGame
->
is_building
&&
!
mainGame
->
is_siding
)
mainGame
->
deckBuilder
.
InstantSearch
();
return
true
;
break
;
}
case
CHECKBOX_ENABLE_MUSIC
:
{
case
CHECKBOX_ENABLE_MUSIC
:
{
if
(
!
mainGame
->
chkEnableMusic
->
isChecked
())
if
(
!
mainGame
->
chkEnableMusic
->
isChecked
())
soundManager
.
StopBGM
();
soundManager
.
StopBGM
();
...
...
gframe/game.cpp
View file @
5ff31121
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
#include "duelclient.h"
#include "duelclient.h"
#include "netserver.h"
#include "netserver.h"
#include "single_mode.h"
#include "single_mode.h"
#include <regex>
const
unsigned
short
PRO_VERSION
=
0x1346
;
const
unsigned
short
PRO_VERSION
=
0x1346
;
...
@@ -300,6 +301,9 @@ bool Game::Initialize() {
...
@@ -300,6 +301,9 @@ bool Game::Initialize() {
chkMultiKeywords
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
CHECKBOX_MULTI_KEYWORDS
,
dataManager
.
GetSysString
(
1378
));
chkMultiKeywords
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
CHECKBOX_MULTI_KEYWORDS
,
dataManager
.
GetSysString
(
1378
));
chkMultiKeywords
->
setChecked
(
gameConf
.
search_multiple_keywords
>
0
);
chkMultiKeywords
->
setChecked
(
gameConf
.
search_multiple_keywords
>
0
);
posY
+=
30
;
posY
+=
30
;
chkRegex
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
CHECKBOX_REGEX
,
dataManager
.
GetSysString
(
1379
));
chkRegex
->
setChecked
(
gameConf
.
search_regex
>
0
);
posY
+=
30
;
chkEnableSound
=
env
->
addCheckBox
(
gameConf
.
enable_sound
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
120
,
posY
+
25
),
tabSystem
,
-
1
,
dataManager
.
GetSysString
(
1279
));
chkEnableSound
=
env
->
addCheckBox
(
gameConf
.
enable_sound
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
120
,
posY
+
25
),
tabSystem
,
-
1
,
dataManager
.
GetSysString
(
1279
));
chkEnableSound
->
setChecked
(
gameConf
.
enable_sound
);
chkEnableSound
->
setChecked
(
gameConf
.
enable_sound
);
scrSoundVolume
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
posX
+
126
,
posY
+
4
,
posX
+
260
,
posY
+
21
),
tabSystem
,
SCROLL_VOLUME
);
scrSoundVolume
=
env
->
addScrollBar
(
true
,
rect
<
s32
>
(
posX
+
126
,
posY
+
4
,
posX
+
260
,
posY
+
21
),
tabSystem
,
SCROLL_VOLUME
);
...
@@ -982,6 +986,7 @@ void Game::LoadConfig() {
...
@@ -982,6 +986,7 @@ void Game::LoadConfig() {
gameConf
.
separate_clear_button
=
1
;
gameConf
.
separate_clear_button
=
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
auto_search_limit
=
-
1
;
gameConf
.
search_multiple_keywords
=
1
;
gameConf
.
search_multiple_keywords
=
1
;
gameConf
.
search_regex
=
0
;
gameConf
.
chkIgnoreDeckChanges
=
0
;
gameConf
.
chkIgnoreDeckChanges
=
0
;
gameConf
.
defaultOT
=
1
;
gameConf
.
defaultOT
=
1
;
gameConf
.
enable_bot_mode
=
0
;
gameConf
.
enable_bot_mode
=
0
;
...
@@ -1050,6 +1055,8 @@ void Game::LoadConfig() {
...
@@ -1050,6 +1055,8 @@ void Game::LoadConfig() {
gameConf
.
auto_search_limit
=
atoi
(
valbuf
);
gameConf
.
auto_search_limit
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"search_multiple_keywords"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"search_multiple_keywords"
))
{
gameConf
.
search_multiple_keywords
=
atoi
(
valbuf
);
gameConf
.
search_multiple_keywords
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"search_regex"
))
{
gameConf
.
search_regex
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"ignore_deck_changes"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"ignore_deck_changes"
))
{
gameConf
.
chkIgnoreDeckChanges
=
atoi
(
valbuf
);
gameConf
.
chkIgnoreDeckChanges
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"default_ot"
))
{
}
else
if
(
!
strcmp
(
strbuf
,
"default_ot"
))
{
...
@@ -1131,6 +1138,7 @@ void Game::SaveConfig() {
...
@@ -1131,6 +1138,7 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"auto_search_limit = %d
\n
"
,
gameConf
.
auto_search_limit
);
fprintf
(
fp
,
"auto_search_limit = %d
\n
"
,
gameConf
.
auto_search_limit
);
fprintf
(
fp
,
"#search_multiple_keywords = 0: Disable. 1: Search mutiple keywords with separator
\"
\"
. 2: with separator
\"
+
\"\n
"
);
fprintf
(
fp
,
"#search_multiple_keywords = 0: Disable. 1: Search mutiple keywords with separator
\"
\"
. 2: with separator
\"
+
\"\n
"
);
fprintf
(
fp
,
"search_multiple_keywords = %d
\n
"
,
gameConf
.
search_multiple_keywords
);
fprintf
(
fp
,
"search_multiple_keywords = %d
\n
"
,
gameConf
.
search_multiple_keywords
);
fprintf
(
fp
,
"search_regex = %d
\n
"
,
gameConf
.
search_regex
);
fprintf
(
fp
,
"ignore_deck_changes = %d
\n
"
,
(
chkIgnoreDeckChanges
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"ignore_deck_changes = %d
\n
"
,
(
chkIgnoreDeckChanges
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"default_ot = %d
\n
"
,
gameConf
.
defaultOT
);
fprintf
(
fp
,
"default_ot = %d
\n
"
,
gameConf
.
defaultOT
);
fprintf
(
fp
,
"enable_bot_mode = %d
\n
"
,
gameConf
.
enable_bot_mode
);
fprintf
(
fp
,
"enable_bot_mode = %d
\n
"
,
gameConf
.
enable_bot_mode
);
...
@@ -1390,6 +1398,34 @@ void Game::FlashWindow() {
...
@@ -1390,6 +1398,34 @@ void Game::FlashWindow() {
FlashWindowEx
(
&
fi
);
FlashWindowEx
(
&
fi
);
#endif
#endif
}
}
bool
Game
::
CheckRegEx
(
const
wchar_t
*
text
,
const
wchar_t
*
exp
,
bool
exact
)
{
if
(
!
gameConf
.
search_regex
)
return
false
;
bool
result
;
try
{
if
(
exact
)
result
=
std
::
regex_match
(
text
,
std
::
wregex
(
exp
));
else
result
=
std
::
regex_search
(
text
,
std
::
wregex
(
exp
));
}
catch
(...)
{
result
=
false
;
}
return
result
;
}
bool
Game
::
CheckRegEx
(
std
::
wstring
text
,
const
wchar_t
*
exp
,
bool
exact
)
{
if
(
!
gameConf
.
search_regex
)
return
false
;
bool
result
;
try
{
if
(
exact
)
result
=
std
::
regex_match
(
text
,
std
::
wregex
(
exp
));
else
result
=
std
::
regex_search
(
text
,
std
::
wregex
(
exp
));
}
catch
(...)
{
result
=
false
;
}
return
result
;
}
void
Game
::
SetCursor
(
ECURSOR_ICON
icon
)
{
void
Game
::
SetCursor
(
ECURSOR_ICON
icon
)
{
ICursorControl
*
cursor
=
mainGame
->
device
->
getCursorControl
();
ICursorControl
*
cursor
=
mainGame
->
device
->
getCursorControl
();
if
(
cursor
->
getActiveIcon
()
!=
icon
)
{
if
(
cursor
->
getActiveIcon
()
!=
icon
)
{
...
...
gframe/game.h
View file @
5ff31121
...
@@ -40,6 +40,7 @@ struct Config {
...
@@ -40,6 +40,7 @@ struct Config {
int
separate_clear_button
;
int
separate_clear_button
;
int
auto_search_limit
;
int
auto_search_limit
;
int
search_multiple_keywords
;
int
search_multiple_keywords
;
int
search_regex
;
int
chkIgnoreDeckChanges
;
int
chkIgnoreDeckChanges
;
int
defaultOT
;
int
defaultOT
;
int
enable_bot_mode
;
int
enable_bot_mode
;
...
@@ -143,6 +144,8 @@ public:
...
@@ -143,6 +144,8 @@ public:
int
LocalPlayer
(
int
player
);
int
LocalPlayer
(
int
player
);
const
wchar_t
*
LocalName
(
int
local_player
);
const
wchar_t
*
LocalName
(
int
local_player
);
bool
CheckRegEx
(
const
wchar_t
*
text
,
const
wchar_t
*
exp
,
bool
exact
=
false
);
bool
CheckRegEx
(
std
::
wstring
text
,
const
wchar_t
*
exp
,
bool
exact
=
false
);
bool
HasFocus
(
EGUI_ELEMENT_TYPE
type
)
const
{
bool
HasFocus
(
EGUI_ELEMENT_TYPE
type
)
const
{
irr
::
gui
::
IGUIElement
*
focus
=
env
->
getFocus
();
irr
::
gui
::
IGUIElement
*
focus
=
env
->
getFocus
();
...
@@ -250,6 +253,7 @@ public:
...
@@ -250,6 +253,7 @@ public:
irr
::
gui
::
IGUICheckBox
*
chkIgnoreDeckChanges
;
irr
::
gui
::
IGUICheckBox
*
chkIgnoreDeckChanges
;
irr
::
gui
::
IGUICheckBox
*
chkAutoSearch
;
irr
::
gui
::
IGUICheckBox
*
chkAutoSearch
;
irr
::
gui
::
IGUICheckBox
*
chkMultiKeywords
;
irr
::
gui
::
IGUICheckBox
*
chkMultiKeywords
;
irr
::
gui
::
IGUICheckBox
*
chkRegex
;
irr
::
gui
::
IGUICheckBox
*
chkEnableSound
;
irr
::
gui
::
IGUICheckBox
*
chkEnableSound
;
irr
::
gui
::
IGUICheckBox
*
chkEnableMusic
;
irr
::
gui
::
IGUICheckBox
*
chkEnableMusic
;
irr
::
gui
::
IGUIScrollBar
*
scrSoundVolume
;
irr
::
gui
::
IGUIScrollBar
*
scrSoundVolume
;
...
@@ -628,6 +632,7 @@ extern Game* mainGame;
...
@@ -628,6 +632,7 @@ extern Game* mainGame;
#define BUTTON_CANCEL_SINGLEPLAY 352
#define BUTTON_CANCEL_SINGLEPLAY 352
#define CHECKBOX_AUTO_SEARCH 360
#define CHECKBOX_AUTO_SEARCH 360
#define CHECKBOX_MULTI_KEYWORDS 372
#define CHECKBOX_MULTI_KEYWORDS 372
#define CHECKBOX_REGEX 373
#define CHECKBOX_ENABLE_SOUND 361
#define CHECKBOX_ENABLE_SOUND 361
#define CHECKBOX_ENABLE_MUSIC 362
#define CHECKBOX_ENABLE_MUSIC 362
#define SCROLL_VOLUME 363
#define SCROLL_VOLUME 363
...
...
strings.conf
View file @
5ff31121
...
@@ -401,6 +401,7 @@
...
@@ -401,6 +401,7 @@
!
system
1373
名称↓
!
system
1373
名称↓
!
system
1374
连接标记
!
system
1374
连接标记
!
system
1378
使用多个关键词搜索卡片
!
system
1378
使用多个关键词搜索卡片
!
system
1379
使用正则表达式搜索卡片
!
system
1380
人机模式
!
system
1380
人机模式
!
system
1381
残局模式
!
system
1381
残局模式
!
system
1382
人机信息:
!
system
1382
人机信息:
...
...
system.conf
View file @
5ff31121
...
@@ -27,6 +27,8 @@ draw_field_spell = 1
...
@@ -27,6 +27,8 @@ draw_field_spell = 1
separate_clear_button
=
1
separate_clear_button
=
1
#auto_search_limit >= 0: Start search automatically when the user enters N chars
#auto_search_limit >= 0: Start search automatically when the user enters N chars
auto_search_limit
= -
1
auto_search_limit
= -
1
search_multiple_keywords
=
1
search_regex
=
0
ignore_deck_changes
=
0
ignore_deck_changes
=
0
default_ot
=
1
default_ot
=
1
enable_bot_mode
=
0
enable_bot_mode
=
0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment