// Aseprite
// Copyright (C) 2018  David Capello
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.

#ifndef APP_UI_EXPR_ENTRY_H_INCLUDED
#define APP_UI_EXPR_ENTRY_H_INCLUDED
#pragma once

#include "ui/entry.h"

namespace app {

  // Support math expressions.
  class ExprEntry : public ui::Entry {
  public:
    ExprEntry();

    int decimals() const { return m_decimals; }
    void setDecimals(int decimals) { m_decimals = decimals; }

    // Signals
    obs::signal<void()> Leave;

  protected:
    bool onProcessMessage(ui::Message* msg) override;
    void onChange() override;
    int onGetTextInt() const override;
    double onGetTextDouble() const override;

    virtual void onFormatExprFocusLeave(std::string& buf);

    int m_decimals;
  };

} // namespace app

#endif
