Cadabra
Computer algebra system for field theory problems
Console.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <gtkmm.h>
4 #include "nlohmann/json.hpp"
5 #include <queue>
6 #include <list>
7 
8 namespace cadabra {
9  class Console;
10 
11  class TextViewProxy : public Gtk::TextView {
12  public:
14 
16 
17  bool on_key_press_event(GdkEventKey* key_event) override;
18 
19  private:
21 
22  std::string temp_in;
23  std::list<std::string> history;
24  std::list<std::string>::iterator history_ptr;
25  };
26 
27  class Console : public Gtk::Box {
28  public:
29  Console(sigc::slot<void> run_slot);
30  ~Console();
31 
32  void initialize();
33 
34  void set_input(const Glib::ustring& line, size_t range_start = std::string::npos, size_t range_end = std::string::npos);
35  std::string grab_input();
36  void send_input(const std::string& code);
37  void signal_message(const nlohmann::json& msg);
38 
39  void set_height(int px);
40 
41  void scroll_to_bottom();
42  uint64_t get_id() const;
43  Glib::RefPtr<Gtk::TextBuffer> get_buffer();
44 
45  private:
46  void insert_text(const std::string& text, Glib::RefPtr<Gtk::TextTag> tag);
47  void insert_graphic(const std::string& bytes);
48  void prompt(bool continuation, bool newline = false);
49 
50  void process_message_queue();
51 
52  Glib::Dispatcher dispatch_message;
53  Glib::Dispatcher run;
54  uint64_t id_;
55 
57  std::string collect;
58  std::queue<nlohmann::json> message_queue;
59  std::queue<std::string> run_queue;
60  Gtk::ScrolledWindow win;
62  Gtk::TextView tv;
63  Glib::RefPtr<Gtk::TextBuffer::Mark> input_begin, prompt_begin;
64  Glib::RefPtr<Gtk::TextTag> input_tag, output_tag, warning_tag, error_tag;
65  };
66 
67  }
TextViewProxy input
Definition: Console.hh:61
Definition: Console.hh:11
std::string grab_input()
Definition: Console.cc:210
Gtk::TextView tv
Definition: Console.hh:62
void process_message_queue()
Definition: Console.cc:223
void initialize()
Definition: Console.cc:163
Definition: Console.hh:27
std::list< std::string > history
Definition: Console.hh:23
std::queue< std::string > run_queue
Definition: Console.hh:59
Glib::Dispatcher run
Definition: Console.hh:53
TextViewProxy(Console &parent)
Definition: Console.cc:23
void signal_message(const nlohmann::json &msg)
Definition: Console.cc:217
uint64_t id_
Definition: Console.hh:54
Glib::RefPtr< Gtk::TextBuffer > get_buffer()
Definition: Console.cc:290
void set_input(const Glib::ustring &line, size_t range_start=std::string::npos, size_t range_end=std::string::npos)
Definition: Console.cc:295
void set_height(int px)
Definition: Console.cc:171
void insert_graphic(const std::string &bytes)
Definition: Console.cc:321
Glib::RefPtr< Gtk::TextTag > warning_tag
Definition: Console.hh:64
Glib::RefPtr< Gtk::TextTag > error_tag
Definition: Console.hh:64
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Adjform.cc:83
void scroll_to_bottom()
Definition: Console.cc:152
Glib::RefPtr< Gtk::TextTag > input_tag
Definition: Console.hh:64
std::queue< nlohmann::json > message_queue
Definition: Console.hh:58
std::string temp_in
Definition: Console.hh:22
std::string collect
Definition: Console.hh:57
std::list< std::string >::iterator history_ptr
Definition: Console.hh:24
Glib::RefPtr< Gtk::TextTag > output_tag
Definition: Console.hh:64
Glib::RefPtr< Gtk::TextBuffer::Mark > input_begin
Definition: Console.hh:63
Glib::RefPtr< Gtk::TextBuffer::Mark > prompt_begin
Definition: Console.hh:63
bool needs_focus
Definition: Console.hh:56
~Console()
Definition: Console.cc:158
uint64_t get_id() const
Definition: Console.cc:345
Console & parent
Definition: Console.hh:20
Console(sigc::slot< void > run_slot)
Definition: Console.cc:100
void send_input(const std::string &code)
Definition: Console.cc:180
bool on_key_press_event(GdkEventKey *key_event) override
Definition: Console.cc:31
Gtk::ScrolledWindow win
Definition: Console.hh:60
void prompt(bool continuation, bool newline=false)
Definition: Console.cc:335
Glib::Dispatcher dispatch_message
Definition: Console.hh:52
void insert_text(const std::string &text, Glib::RefPtr< Gtk::TextTag > tag)
Definition: Console.cc:313
size_t history_max_length
Definition: Console.hh:15