Add new dialog Transformation text.

В окне редактирования запросов можно вызвать диалог транформации текста (Ctrl+M).
Где при помощи PCRE регулярных выражений можно изменить выделенный текст или текст из буфера обмена.
Регулярные выражения имеют подсветку синтаксиса и подсветку найденных групп.
В выражении замены можно ссылаться на найденные группы при помощи \g{номер_группы}
Настройки цветов можно редактировать в pgadmin3opt.json файле.
This commit is contained in:
lsv 2024-09-23 15:13:52 +05:00 committed by lsv
parent 61a5b78bc8
commit 763f587834
10 changed files with 1334 additions and 7 deletions

View file

@ -0,0 +1,61 @@
#pragma once
#include "pgAdmin3.h"
#include <wx/clipbrd.h>
#include "ctl/ctlStyledText.h"
class dlgTransformText :
public pgDialog
{
public:
dlgTransformText(ctlSQLBox* form,const wxString source);
~dlgTransformText();
void SetSource(const wxString& src);
private:
void OnCheckUI(wxCommandEvent& ev);
void OnOk(wxCommandEvent& ev);
void OnClose(wxCloseEvent& ev);
void OnCancel(wxCommandEvent& ev);
void OnComboSelect(wxCommandEvent& ev);
void OnChange(wxCommandEvent& ev);
void OnChangeLimit(wxCommandEvent& ev);
void OnChangeOnline(wxCommandEvent& ev);
void OnSave(wxCommandEvent& ev);
void OnLoad(wxCommandEvent& ev);
void OnChangeRegEx2(wxStyledTextEvent& ev);
void TransformText(const wxRegEx &regfld);
void OnIdle(wxIdleEvent &ev);
struct replace_opt {
bool isGroup = false;
int nGroup = -1;
wxString text;
};
wxJSONValue LoadConfig(const wxString confname);
void CheckLimits();
wxJSONValue FillConfig();
void LoadOptions();
void SetDecoration(ctlStyledText* s);
void SetStyled(ctlStyledText* s);
void showNumber(ctlStyledText* text, bool visible);
void AppendTextControl(ctlStyledText* ctrl, const wxString appendtext, bool isnewline = false);
std::vector<replace_opt> BuildString(const wxString repstr);
wxString src;
wxString srcRowSep;
wxJSONValue opt,lastconf;
int countGroupColor = 0;
int limitLine;
int limitChar;
wxString strResult;
// UI
bool inizialize;
bool isChange = false;
bool isNeedTransform = false;
bool isOnline = false;
wxString strReg,strRep;
wxColour bgerror;
DECLARE_EVENT_TABLE()
};

View file

@ -94,7 +94,8 @@ extern sysSettings *settings;
#define CTRL_FONTPICKER(id) (XRCCTRL(*this, id, wxFontPickerCtrl))
#define CTRL_CHECKTREEVIEW(id) (XRCCTRL(*this, id, ctlCheckTreeView))
#define CTRL_GAUGE(id) (XRCCTRL(*this, id, wxGauge))
#define CTRL_STYLEDTEXT(id) (XRCCTRL(*this, id, ctlStyledText))
#define CTRL_TREEJSON(id) (XRCCTRL(*this, id, ctlTreeJSON))
#endif // PGSCLI
// Conversions
@ -120,7 +121,7 @@ wxString NumToStr(OID value);
wxString NumToStr(wxLongLong value);
wxString DateToStr(const wxDateTime &datetime);
wxString ElapsedTimeToStr(wxLongLong msec);
wxString ContrastColorBlackOrWhite(wxColour& bgColor);
// Quoting
wxString qtConnString(const wxString &value); // connection strings always have single quotes escaped with backslash