File: wb_sql_editor_result_panel.h

package info (click to toggle)
mysql-workbench 6.3.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 113,932 kB
  • ctags: 87,814
  • sloc: ansic: 955,521; cpp: 427,465; python: 59,728; yacc: 59,129; xml: 54,204; sql: 7,091; objc: 965; makefile: 638; sh: 613; java: 237; perl: 30; ruby: 6; php: 1
file content (160 lines) | stat: -rw-r--r-- 4,354 bytes parent folder | download
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
 * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
 *
 * 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; version 2 of the
 * License.
 *
 * 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., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301  USA
 */

#ifndef __wb_sql_editor_result_tab__
#define __wb_sql_editor_result_tab__

#include "workbench/wb_backend_public_interface.h"

#include "mforms/appview.h"
#include "mforms/tabview_dock.h"
#include "mforms/tabswitcher.h"

#include "sqlide/recordset_be.h"

#include "grts/structs.db.query.h"

#include <boost/signals2.hpp>

#include "spatial_data_view.h"
#include "wb_sql_editor_panel.h"


namespace mforms
{
  class ToolBar;
  class ToolBarItem;
  class ContextMenu;
  class TreeNodeView;
  class RecordGrid;
};

class ResultFormView;

class MYSQLWBBACKEND_PUBLIC_FUNC SqlEditorResult : public mforms::AppView
{
  SqlEditorPanel *_owner;
  Recordset::Ptr _rset;

  class DockingDelegate;
  
public:
  SqlEditorResult(SqlEditorPanel *owner);
  void set_recordset(Recordset::Ref rset);

  virtual ~SqlEditorResult();

  Recordset::Ref recordset() const;

  std::string caption() const;

  db_query_ResultPanelRef grtobj() { return _grtobj; }
  db_query_ResultsetRef result_grtobj() { return _grtobj->resultset(); }

  virtual bool can_close();
  virtual void close();

  void show_export_recordset();
  void show_import_recordset();
  void dock_result_grid(mforms::View *view);
//  mforms::View *result_grid() { return _result_grid; }

  SqlEditorPanel *owner() { return _owner; }

  std::vector<SpatialDataView::SpatialDataSource> get_spatial_columns();


  mforms::RecordGrid *result_grid() { return _result_grid; }

  mforms::DockingPoint *dock() { return &_tabdock; }

  void apply_changes();
  void discard_changes();
  bool has_pending_changes();

  virtual void set_title(const std::string &title);

  void set_pinned(bool flag) { _pinned = flag; }
  bool pinned() const { return _pinned; }

  void view_record_in_form(int row_id);

  void open_field_editor(int row, int column);
private:

  mforms::TabView _tabview;
  mforms::TabSwitcher _switcher;
  DockingDelegate *_tabdock_delegate;
  mforms::DockingPoint _tabdock;

  mforms::AppView *_column_info_box;
  mforms::AppView  *_query_stats_box;
  mforms::AppView  *_resultset_placeholder;
  mforms::AppView  *_execution_plan_placeholder;
  ResultFormView *_form_result_view;
  SpatialDataView *_spatial_result_view;
  mforms::ContextMenu *_column_info_menu;
  mforms::ContextMenu *_grid_header_menu;
  std::list<mforms::ToolBar*> _toolbars;
  mforms::RecordGrid *_result_grid;
  boost::signals2::signal<void (bool)> _collapse_toggled;
  boost::signals2::connection _collapse_toggled_sig;

  db_query_ResultPanelRef _grtobj;

  std::vector<std::string> _column_width_storage_ids;

  bool _column_info_created;
  bool _query_stats_created;
  bool _form_view_created;
  bool _spatial_view_initialized;

  bool _pinned;

  void update_selection_for_menu_extra(mforms::ContextMenu *menu, const std::vector<int> &rows, int column);
  void switch_tab();
  
  void toggle_switcher_collapsed();
  void switcher_collapsed();
  
  void create_query_stats_panel();
  void create_column_info_panel();
  void create_spatial_view_panel_if_needed();

  void dock_result_grid(mforms::RecordGrid *view);

  void restore_grid_column_widths();
  std::vector<float> get_autofit_column_widths(Recordset *rs);
  void reset_column_widths();
  
  void add_switch_toggle_toolbar_item(mforms::ToolBar *tbar);

  void copy_column_info_name(mforms::TreeNodeView *tree);
  void copy_column_info(mforms::TreeNodeView *tree);

  void copy_column_name();
  void copy_all_column_names();

  void reset_sorting();
  void on_recordset_column_resized(int column);
  void onRecordsetColumnsResized(const std::vector<int> cols);
};


#endif /* __wb_sql_editor_result_tab__ */