File: MGMySQLConsole.h

package info (click to toggle)
mysql-admin 1.2.5rc-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 80,944 kB
  • ctags: 43,103
  • sloc: sql: 295,916; pascal: 256,535; cpp: 74,487; ansic: 68,881; objc: 26,417; sh: 16,867; yacc: 10,755; java: 9,917; xml: 8,453; php: 2,806; python: 2,068; makefile: 1,252; perl: 3
file content (84 lines) | stat: -rw-r--r-- 2,439 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* Copyright (C) 2004 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#ifndef _MGMYSQLCONSOLE_H_
#define _MGMYSQLCONSOLE_H_

#include <queue>

#include <gtkmm/scrolledwindow.h>
#include <gtkmm/textview.h>
#include <gtkmm/textbuffer.h>

#include "myx_public_interface.h"

class MGMySQLConsole : public Gtk::ScrolledWindow {
    pthread_mutex_t _mutex;
    std::queue<Glib::ustring> _output_queue;
    Glib::Dispatcher _output_ready;

    void process_output_queue();
    
  protected:
    Gtk::TextView _text;
    Glib::RefPtr<Gtk::TextBuffer> _buffer;

    bool _busy;
    bool _abort_command;

    gunichar _delimiter;

    MYX_TEXT_SHELL *_shell;
    std::vector<Glib::ustring> _history;
    unsigned int _history_index;

    static int handle_shell_output(const char *text, void *udata);
    static int handle_threaded_shell_output(const char *text, void *udata);

    bool key_press(GdkEventKey *ev);
    
    virtual Glib::ustring get_prompt_text(bool line_cont= false);
    
    virtual void put_prompt(bool line_cont= false);

    bool scroll_bottom();

    virtual bool execute(const Glib::ustring &command, int key_state);
    virtual void command_finished();

  public:
    MGMySQLConsole();
    virtual ~MGMySQLConsole();

    virtual void do_execute(const Glib::ustring &command);
    
    void append(const Glib::ustring &text);

    bool command_complete();
    Glib::ustring get_command();
    void set_command(const Glib::ustring &command);
    
    void set_delimiter(gunichar del);

    void set_connection(MYSQL *mysql);
    
    bool is_busy() { return _busy; };
    
    Gtk::TextView *get_text_view() { return &_text; };
};


#endif /* _MGMYSQLCONSOLE_H_ */