RichEdit: Diagram, ide: Tool to convert virtual methods to override

This commit is contained in:
Mirek Fidler 2025-07-17 13:27:46 +02:00
parent e0bc0f5fd6
commit 119d4c4e5f
7 changed files with 27 additions and 4 deletions

View file

@ -593,6 +593,19 @@ void CodeEditor::MakeLineEnds()
Make(THISBACK(LineEnds)); Make(THISBACK(LineEnds));
} }
void CodeEditor::ConvertToOverrides()
{
Make([](String& out) {
out.Insert(0, " ");
out.Replace("\tvirtual\t", "\t");
out.Replace("\tvirtual ", "\t");
out.Replace(" virtual\t", " ");
out.Replace(" virtual ", " ");
out.Replace(";", " override;");
out.Remove(0, 1);
});
}
void CodeEditor::MoveNextWord(bool sel) { void CodeEditor::MoveNextWord(bool sel) {
int64 p = GetCursor64(); int64 p = GetCursor64();
int64 e = GetLength64(); int64 e = GetLength64();

View file

@ -441,6 +441,7 @@ public:
void MakeTabsOrSpaces(bool tabs); void MakeTabsOrSpaces(bool tabs);
void MakeLineEnds(); void MakeLineEnds();
void ConvertToOverrides();
void CopyWord(); void CopyWord();
void SwapChars(); void SwapChars();

View file

@ -306,8 +306,7 @@ struct RichObjectTypeDrawingCls : public RichObjectType
virtual Value Read(const String& s) const; virtual Value Read(const String& s) const;
virtual String Write(const Value& v) const; virtual String Write(const Value& v) const;
struct Data struct Data {
{
void Serialize(Stream& stream); void Serialize(Stream& stream);
Drawing drawing; Drawing drawing;

View file

@ -8,6 +8,7 @@ struct RichDiagram : public RichObjectType {
virtual String Write(const Value& v) const; virtual String Write(const Value& v) const;
virtual Size GetPhysicalSize(const Value& data) const; virtual Size GetPhysicalSize(const Value& data) const;
virtual Size GetPixelSize(const Value& data) const; virtual Size GetPixelSize(const Value& data) const;
virtual void Paint(const Value& data, Draw& w, Size sz, Color, void *) const; virtual void Paint(const Value& data, Draw& w, Size sz, Color, void *) const;
virtual Image ToImage(int64, const Value& data, Size sz, Color, void *) const; virtual Image ToImage(int64, const Value& data, Size sz, Color, void *) const;

View file

@ -136,6 +136,11 @@ struct PageDraw {
class RichObject; class RichObject;
class Bar; class Bar;
struct RichObjectPaintInfo {
void *context;
Color ink;
};
struct RichObjectType { struct RichObjectType {
virtual String GetTypeName(const Value& v) const = 0; virtual String GetTypeName(const Value& v) const = 0;
virtual String GetCreateName() const; virtual String GetCreateName() const;
@ -151,12 +156,13 @@ struct RichObjectType {
virtual Size GetDefaultSize(const Value& data, Size maxsize, void *context) const; virtual Size GetDefaultSize(const Value& data, Size maxsize, void *context) const;
virtual Size GetPhysicalSize(const Value& data, void *context) const; virtual Size GetPhysicalSize(const Value& data, void *context) const;
virtual Size GetPixelSize(const Value& data, void *context) const; virtual Size GetPixelSize(const Value& data, void *context) const;
virtual void Paint(const Value& data, Draw& w, Size sz, Color ink, void *context) const;
virtual Image ToImage(int64 serial_id, const Value& data, Size sz, Color ink, void *context) const;
virtual void Menu(Bar& bar, RichObject& ex, void *context) const; virtual void Menu(Bar& bar, RichObject& ex, void *context) const;
virtual void DefaultAction(RichObject& ex, void *context) const; virtual void DefaultAction(RichObject& ex, void *context) const;
virtual String GetLink(const Value& data, Point pt, Size sz, void *context) const; virtual String GetLink(const Value& data, Point pt, Size sz, void *context) const;
virtual void Paint(const Value& data, Draw& w, Size sz, Color ink, void *context) const;
virtual Image ToImage(int64 serial_id, const Value& data, Size sz, Color ink, void *context) const;
Size StdDefaultSize(const Value& data, Size maxsize, void *context) const; Size StdDefaultSize(const Value& data, Size maxsize, void *context) const;
RichObjectType(); RichObjectType();

View file

@ -36,6 +36,7 @@ KEY(TRANSLATESTRING, "Mark selection with t_", K_ALT_F2)
KEY(SPACESTOTABS, "Spaces to tabs", 0) KEY(SPACESTOTABS, "Spaces to tabs", 0)
KEY(TABSTOSPACES, "Tabs to spaces", 0) KEY(TABSTOSPACES, "Tabs to spaces", 0)
KEY(LINEENDINGS, "Remove trailing tabs and spaces", 0) KEY(LINEENDINGS, "Remove trailing tabs and spaces", 0)
KEY(CONVERTOOVERRIDE, "Remove 'virtual', add 'override'", K_SHIFT|K_ALT_O)
KEY(DUPLICATEIT, "Duplicate line or selection", K_CTRL_D) KEY(DUPLICATEIT, "Duplicate line or selection", K_CTRL_D)
KEY(WORDWRAP, "Word wrap", K_ALT_W) KEY(WORDWRAP, "Word wrap", K_ALT_W)

View file

@ -170,6 +170,8 @@ void Ide::EditSpecial(Bar& menu)
.Help("Convert all tabs to spaces"); .Help("Convert all tabs to spaces");
menu.Add(b, AK_LINEENDINGS, THISBACK(EditMakeLineEnds)) menu.Add(b, AK_LINEENDINGS, THISBACK(EditMakeLineEnds))
.Help("Remove tabs and spaces at line endings"); .Help("Remove tabs and spaces at line endings");
menu.Add(b && editor.IsSelection(), AK_CONVERTOOVERRIDE, [=] { editor.ConvertToOverrides(); })
.Help("Convert virtual function declarations to override (removes virtual, adds override)");
menu.Add(b, AK_TRANSLATESTRING, THISBACK(TranslateString)) menu.Add(b, AK_TRANSLATESTRING, THISBACK(TranslateString))
.Help("Mark the current selection as translated string"); .Help("Mark the current selection as translated string");
menu.Add(b, AK_SWAPCHARS, THISBACK(SwapChars)) menu.Add(b, AK_SWAPCHARS, THISBACK(SwapChars))