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