Review : Snippets Manager



  • Hi,
    My code is working and I'm looking for a review.

    This basically manages a set of snippets, saving and loading it.
    This is also being reviewed at "CodeReviewSE":http://codereview.stackexchange.com/questions/70877/snippets-manager/70925
    Related Repository : "github.com/JaDogg/expressPython":http://github.com/JaDogg/expressPython

    snippets.cpp

    @#include "Features/snippets.h"
    #include <iostream>

    Snippets::Snippets(QObject* parent)
    : QObject(parent)
    , m_Snippets(nullptr)
    {
    bool success;
    LoadSnippets(success);
    }

    void Snippets::LoadSnippets(bool& success)
    {
    success = false;
    QFile file(SNIPPETS_FILE);

    QMap<QString, QString> data = QMap<QString, QString>(&#41;;
    
    if (file.open(QIODevice::ReadOnly)) {
        QDataStream in(&file);
        in >> data;
        file.close();
    }
    
    if (data.isEmpty()) {
        data.insert(tr("API Help"), tr(
                                        "# Full API\n"
                                        "# ---------------------------\n"
                                        "# get method's have no parameters and others have one\n"
                                        "#\n"
                                        "# get_input   - get input textbox's text\n"
                                        "# set_input   - set input textbox's text\n"
                                        "# get_output  - get output textbox's text\n"
                                        "# set_output  - get output textbox's text\n"
                                        "# get_code    - get code textbox's text\n"
                                        "# set_code    - set code textbox's text\n"
                                        "# write_output- append to output box\n"
                                        "# get_apppath - get exe path\n\n"
                                        "# API Help/Code Sample\n"
                                        "# ---------------------------\n"
                                        "\n"
                                        "# get text from input box\n"
                                        "# parameters - none\n"
                                        "txt = get_input()\n"
                                        "\n"
                                        "# change output box's text\n"
                                        "# parameters - string\n"
                                        "set_output(\"\")\n"
                                        "\n"
                                        "# append to output box\n"
                                        "# does not add a new line\n"
                                        "# parameters - string\n"
                                        "write_output(\"Hi You,\\n\")\n"
                                        "\n"
                                        "# get_apppath() -> get exe path\n"
                                        "print (\"PyRun.exe is at :\", get_apppath())\n\n"));
    }
    
    m_Snippets = new QMap<QString, QString>(data);
    
    success = true;
    

    }

    void Snippets::SaveSnippets(bool& success)
    {
    success = false;
    if (m_Snippets != nullptr) {

        QFile file&#40;SNIPPETS_FILE&#41;;
        if (!file.open(QIODevice::WriteOnly&#41;) {
            return;
        }
        QDataStream out(&file);
        out << *m_Snippets;
        file.close();
        success = true;
    }
    

    }

    void Snippets::AddSnippet(const QString& name, const QString& code, bool& success)
    {
    success = false;
    if (m_Snippets != nullptr) {
    success = true;
    m_Snippets->insert(name, code);
    }
    }

    void Snippets::RemoveSnippet(const QString& name, bool& success)
    {
    success = false;
    if (m_Snippets != nullptr && m_Snippets->contains(name)) {
    success = (m_Snippets->remove(name) > 0);
    }
    }

    QString Snippets::GetSnippet(const QString& name, bool& success)
    {
    success = false;
    if (m_Snippets != nullptr && m_Snippets->contains(name)) {
    success = true;
    return m_Snippets->value(name);
    }
    return QString();
    }

    QList<QString> Snippets::GetKeys(bool& success)
    {
    success = false;
    if (m_Snippets != nullptr) {
    success = true;
    return m_Snippets->keys();
    }
    return QList<QString>();
    }

    Snippets::~Snippets()
    {
    if (m_Snippets != nullptr) {
    bool success;
    SaveSnippets(success); // save on the destructor
    if (!success) {
    std::cerr << "Writing Snippets to Database on save failed" << std::endl;
    }
    delete m_Snippets;
    }
    }@

    snippets.h

    @#ifndef SNIPPETS_H
    #define SNIPPETS_H

    #include <QObject>
    #include <QMap>
    #include <QList>
    #include <QIODevice>
    #include <QFile>
    #include <QApplication>

    #define SNIPPETS_FILE QApplication::applicationDirPath() + "/snippets.dat"

    class Snippets : public QObject {
    Q_OBJECT
    public:
    explicit Snippets(QObject* parent = 0);

    QString GetSnippet(const QString& name, bool& success);
    void RemoveSnippet(const QString& name, bool& success);
    void AddSnippet(const QString& name, const QString& code, bool& success);
    void SaveSnippets(bool& success);
    void LoadSnippets(bool& success);
    ~Snippets();
    QList<QString> GetKeys(bool& success);
    

    signals:

    public slots:

    private:
    QMap<QString, QString>* m_Snippets;
    };

    #endif // SNIPPETS_H@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.