New features of the Query Editor

1. Добавлена возможность быстрой подстановки слов на латинице по нажатию
   Alt+RIGHT. Возможность включается настройкой "Use word hints".
   Список слов составляется при загрузке запроса и по мере ввода новых слов.
2. Добавлена возможность заменять при выполнении запроса переменные вида
   $1, $2, ... или :variableName1 на пользовательские значения введённые
   в диалоге. Пока можно заменять переменные в запросах select,update,delete,insert.
   Перед отправкой запроса на сервер переменные заменяются простой текстовой заменой.
   Запрос который выполнен на сервере можно посмотреть на вкладке История.
   Возможность включается настройкой "Replace variables in a query".
   Выделить правой кнопкой выполненый запрос не получиться т.к. текст выполненого запроса
   и текст в редакторе будет отличаться.
This commit is contained in:
lsv 2024-12-17 16:36:43 +05:00 committed by lsv
parent 09dab55c0b
commit 5ee53e086f
16 changed files with 796 additions and 81 deletions

View file

@ -105,6 +105,7 @@ namespace FSQL {
{ "having", 6, new_line_align_no_pad | end_from},
{ "except", 6, new_line_align_no_pad | end_from},
{ "offset", 6, none | end_from},
{ "cursor", 6, none},
{ "nothing", 7, none},
{ "lateral", 7, none},
{ "between", 7, none},
@ -112,12 +113,16 @@ namespace FSQL {
{ "nothing", 7, none},
{ "default", 7, none},
{ "current", 7, none},
{ "prepare", 7, none},
{ "execute", 7, none},
{ "declare", 7, none},
{ "distinct", 8, special},
{ "conflict", 8, none},
{ "recursive", 9, none},
{ "intersect", 9, new_line_align_no_pad | end_from},
{ "returning", 9, none},
{ "ordinality", 10, none},
{ "deallocate", 10, none},
{ "materialized", 12, none},
};
struct complite_element {
@ -152,8 +157,9 @@ namespace FSQL {
//
int ParseSql(int flags);
wxString printParseArray();
void SetSql(const wxString& sqlsrc) { sql = sqlsrc; }
void SetSql(const wxString& sqlsrc) { sql = sqlsrc; lastposition = 0; }
int GetIndexItemNextSqlPosition(int sqlPosition);
int GetNextPositionSqlParse();
bool GetItem(int index, FSQL::view_item& item);
private:
wxString get_list_columns(int startindex, union FSQL::Byte zone);
@ -171,6 +177,7 @@ namespace FSQL {
wxPoint neededNewLine; // добавляет новую строку перед первым встреченным не пробельным символом
wxRect rect;
wxString sql;
int lastposition = 0;
std::vector<FSQL::view_item> items;
std::vector<FSQL::complite_element> listTable; // перечень таблиц синонимов, подзапросов и функций с колонками
//int recurse(int level);

View file

@ -856,6 +856,27 @@ public:
{
WriteBool(wxT("HideQueryHistory"), newval);
}
bool GetUseHintWords() const
{
bool b;
Read(wxT("UseHintWords"), &b, false);
return b;
}
void SetUseHintWords(const bool newval)
{
WriteBool(wxT("UseHintWords"), newval);
}
bool GetReplaceVars() const
{
bool b;
Read(wxT("ReplaceVars"), &b, false);
return b;
}
void SetReplaceVars(const bool newval)
{
WriteBool(wxT("ReplaceVars"), newval);
}
bool GetAutosaveQuery() const
{
bool b;