~ubuntu-branches/ubuntu/quantal/mysql-workbench/quantal

« back to all changes in this revision

Viewing changes to frontend/linux/sqlide/grid_view.h

  • Committer: Package Import Robot
  • Author(s): Dmitry Smirnov
  • Date: 2012-03-01 21:57:30 UTC
  • Revision ID: package-import@ubuntu.com-20120301215730-o7y8av8y38n162ro
Tags: upstream-5.2.38+dfsg
ImportĀ upstreamĀ versionĀ 5.2.38+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __GRID_VIEW_H__
 
2
#define __GRID_VIEW_H__
 
3
 
 
4
 
 
5
#include "sqlide/grid_view_model.h"
 
6
namespace mforms
 
7
{
 
8
  class Menu;
 
9
};
 
10
 
 
11
class GridView : public Gtk::TreeView
 
12
{
 
13
  public:
 
14
    static GridView * create(bec::GridModel::Ref model, bool fixed_row_height = true);
 
15
    GridView(bec::GridModel::Ref model, bool fixed_row_height = true);
 
16
    ~GridView();
 
17
 
 
18
    void set_context_menu(mforms::Menu* menu);
 
19
    void set_context_menu_responder(const sigc::slot<void>& slot);
 
20
 
 
21
    typedef std::map<int, bec::NodeId> SelectedNodes;
 
22
    void get_selected_nodes(SelectedNodes *nodes);
 
23
 
 
24
    void model(bec::GridModel::Ref value);
 
25
 
 
26
    int refresh(bool reset_columns);
 
27
 
 
28
    void scroll_to(const int whence); // whence == 0 seeks to start, whence == 1 seeks to end
 
29
 
 
30
    bec::NodeId current_cell(int &row, int &col);
 
31
    bec::NodeId current_node();
 
32
    int current_row();
 
33
 
 
34
    void delete_selected_rows();
 
35
 
 
36
    void on_column_header_clicked(Gtk::TreeViewColumn *column, int column_index);
 
37
    void sort_by_column(int column_index, int sort_direction, bool retaining);
 
38
 
 
39
    int row_count() const;
 
40
    void row_numbers_visible(bool value) { _view_model->row_numbers_visible(value); }
 
41
 
 
42
 
 
43
    sigc::signal<void, const Glib::ustring&, const Glib::ustring&> signal_cell_edited() { return _signal_cell_edited; }
 
44
    //sigc::slot<void, const Glib::ustring&, const Glib::ustring&> slot_cell_edited() { return _signal_cell_edited.make_slot(); }
 
45
    sigc::signal<void> signal_row_count_changed() { return _signal_row_count_changed; }
 
46
    sigc::signal<void, int, int, bool> signal_sort_by_column;
 
47
 
 
48
    void on_cell_edited(const Glib::ustring &path_string, const Glib::ustring &new_text);
 
49
    void on_cell_editing_started(Gtk::CellEditable* e, const Glib::ustring &path, Gtk::TreeViewColumn* column);
 
50
    void on_cell_editing_done();
 
51
 
 
52
    void set_ellipsize(const int column, const bool on) {_view_model->set_ellipsize(column, on);}
 
53
    GridViewModel::Ref view_model() {return _view_model;}
 
54
 
 
55
    void sync_row_count();
 
56
  protected:
 
57
 
 
58
    virtual bool on_key_press_event(GdkEventKey *event);
 
59
    virtual bool on_button_release_event(GdkEventButton *event);
 
60
 
 
61
    void reset_sorted_columns();
 
62
 
 
63
  private:
 
64
    virtual void init();
 
65
 
 
66
    sigc::signal<void, const Glib::ustring&, const Glib::ustring&> _signal_cell_edited;
 
67
    sigc::signal<void> _signal_row_count_changed;
 
68
 
 
69
    void add_node_for_path(const Gtk::TreeModel::Path &path, SelectedNodes *rows);
 
70
    void activate_popup_menu_item(const std::string &action, const std::vector<int> &rows, int clicked_column);
 
71
 
 
72
 
 
73
    bec::GridModel::Ref _model;
 
74
    GridViewModel::Ref  _view_model;
 
75
    int _row_count;
 
76
 
 
77
    Gtk::TreePath          _path_edited;
 
78
    Gtk::TreeViewColumn   *_column_edited;
 
79
    Gtk::CellEditable     *_cell_editable;
 
80
 
 
81
    mforms::Menu          *_context_menu;
 
82
    sigc::slot<void>       _context_menu_responder;
 
83
};
 
84
 
 
85
 
 
86
#endif // __GRID_VIEW_H__