Überblick
Beispiele
Schnappschüsse
Vergleiche
Anwendungen
Herunterladen
Documentation
Basar
Status & Fahrplan
Häufig gestellte Fragen
Autoren & Lizenz
Forum
Ultimate++ finanziell unterstützen
Diese Seite durchsuchen











SourceForge.net Logo

RichTextObject

 

Demonstrates the use of QTF object in text format

 

 

main.cpp

 

#include <RichEdit/RichEdit.h>

 

using namespace Upp;

 

struct MyRichObjectType : public RichObjectType

{

    virtual String GetTypeName(const Value&) const;

    virtual void   Paint(const Value& data, Draw& w, Size sz) const;

    virtual bool   IsText() const;

    virtual void   Menu(Bar& bar, RichObject& ex, void *context) const;

    virtual void   DefaultAction(RichObject& ex) const;

    

    void Edit(RichObject& ex) const;

    

    typedef MyRichObjectType CLASSNAME;

};

 

bool MyRichObjectType::IsText() const

{

    return true;

}

 

String MyRichObjectType::GetTypeName(const Value&) const

{

    return "mytype";

}

 

void MyRichObjectType::Paint(const Value& data, Draw& w, Size sz) const

{

    w.DrawRect(sz, White);

    Font fnt = Roman(max(2, sz.cy - 2)).Bold();

    w.DrawText(2, -2, (String)data, fnt, SColorDisabled());

    w.DrawText(0, 0, (String)data, fnt, SColorText());

}

 

void MyRichObjectType::Edit(RichObject& ex) const

{

    String txt = ex.GetData();

    if(EditText(txt, "Edit MyRichObject", "Text"))

        ex.SetData(txt);

}

 

void MyRichObjectType::DefaultAction(RichObject& ex) const

{

    Edit(ex);

}

 

void MyRichObjectType::Menu(Bar& bar, RichObject& ex, void *) const

{

    bar.Add("Edit object..", [=, &ex] { Edit(ex); });

}

 

INITBLOCK {

    RichObject::Register("mytype", &Single<MyRichObjectType>());

};

 

String FileName()

{

    return ConfigFile("test.qtf");

}

 

class MyRichEdit : public RichEdit {

    ToolBar  toolbar;

    bool     extended;

    void RefreshBar();

    void InsertMy();

 

public:

    typedef MyRichEdit CLASSNAME;

 

    MyRichEdit();

};

 

void MyRichEdit::InsertMy()

{

    String txt;

    if(EditText(txt, "New MyRichObject", "Text")) {

        RichObject obj(&Single<MyRichObjectType>(), txt);

        obj.SetSize(1000, 300);

        obj.KeepRatio(false);

        PasteText(AsRichText(obj));

    }

}

 

void MyRichEdit::RefreshBar()

{

    toolbar.Set([=](Bar& bar) {

        DefaultBar(bar, false);

        bar.Add(!IsReadOnly(), "Insert new MyRichObject", CtrlImg::Plus(), THISFN(InsertMy));

    });

}

 

MyRichEdit::MyRichEdit()

{

    InsertFrame(0, toolbar);

    WhenRefreshBar = [=] { RefreshBar(); };

}

 

GUI_APP_MAIN

{

    MyRichEdit editor;

 

    String file = LoadFile(FileName());

    if(file.IsEmpty())

        editor.SetQTF("Some line&Here comes the RichObject: @@mytype:1200*200`Hello world!`&Next line");

    else

        editor.Pick(ParseQTF(LoadFile(FileName())));

 

    TopWindow w;

    w.SetRect(0, 0, 700, 500);

    w.Sizeable().Zoomable();

    w.Add(editor.SizePos());

    w.Run();

 

    SaveFile(FileName(), editor.GetQTF());

}

 

 

 

 

Willst du mitmachen?