NCBI C++ ToolKit
dock_panel.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: dock_panel.cpp 46062 2021-01-21 18:38:07Z grichenk $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors: Andrey Yazhuk
27  *
28  * File Description:
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
33 
35 
41 
42 #include <wx/sizer.h>
43 #include <wx/menu.h>
44 #include <wx/stattext.h>
45 #include <wx/bmpbuttn.h>
46 #include <wx/image.h>
47 #include <wx/bitmap.h>
48 #include <wx/dcclient.h>
49 #include <wx/settings.h>
50 #include <wx/artprov.h>
51 #include <wx/dcbuffer.h>
52 
53 
55 
56 ///////////////////////////////////////////////////////////////////////////////
57 /// CDockPanel
58 
59 #define ID_BTN_MENU 10101
60 #define ID_BTN_MINIMIZE 10102
61 #define ID_BTN_FLOAT 10103
62 #define ID_BTN_CLOSE 10104
63 
64 BEGIN_EVENT_TABLE(CDockPanel, wxPanel)
69  EVT_CONTEXT_MENU(CDockPanel::OnContextMenu)
70  EVT_CHILD_FOCUS(CDockPanel::OnChildFocus)
71  EVT_PAINT(CDockPanel::OnPaint)
72  EVT_LEFT_DOWN(CDockPanel::OnLeftDown)
73  EVT_LEFT_DCLICK(CDockPanel::OnLeftDown)
74  EVT_LEFT_UP(CDockPanel::OnLeftUp)
75  EVT_MOTION(CDockPanel::OnMotion)
76  EVT_MOUSE_CAPTURE_LOST(CDockPanel::OnMouseCaptureLost)
77 
78  EVT_SET_FOCUS(CDockPanel::OnSetFocus)
79 
81 
82 
83 void CDockPanel::OnSetFocus( wxFocusEvent& event )
84 {
85  event.Skip();
86 }
87 
88 
89 
90 
91 const long kwxBorderStyle =
92 #ifdef __WXGTK__
93  wxBORDER_SUNKEN;
94 #else
95  wxBORDER_STATIC;
96 #endif
97 
98 
100  CDockManager* manager,
101  IWMClient* client,
102  const wxString& name
103  )
104  : wxPanel(container, wxID_ANY, wxDefaultPosition, wxSize(0, 0),
105  wxNO_FULL_REPAINT_ON_RESIZE | wxCLIP_CHILDREN | kwxBorderStyle,
106  name),
107  m_DockManager(manager),
108  m_DockContainer(container),
109  m_Client(NULL),
110  m_CaptionHeight(6), // just to make it visible
111  mf_IsActive(false),
112  m_ShowingPopup(false),
113  m_CaptionItem(NULL),
114  m_Canceled(true)
115 {
116  SetBackgroundStyle(wxBG_STYLE_PAINT);
118 
120 
121  //LOG_POST("CDockPanel constructor " << this << " " << client->GetClientLabel());
122 }
123 
124 wxSize CDockPanel::ClientToWindowSize(const wxSize& size) const
125 {
126  wxSize wsize = wxPanel::ClientToWindowSize(size);
127  if (m_CaptionItem)
128  wsize.y += m_CaptionItem->GetSize().GetHeight();
129  return wsize;
130 }
131 
132 void CDockPanel::ShowBorder(bool show)
133 {
134  long styles = GetWindowStyleFlag();
135 
136  styles &= ~(wxBORDER_STATIC | wxBORDER_SIMPLE |
137  wxBORDER_RAISED | wxBORDER_THEME | wxBORDER_NONE);
138  styles |= (show ? kwxBorderStyle : wxBORDER_NONE);
139 
140  SetWindowStyleFlag(styles);
141 
142  Layout();
143 }
144 
145 
147 {
148  //LOG_POST("CDockPanel() destructor");
149  if(m_Client) {
150  ERR_POST("CDockPanel() destructor - CLIENT IS NOT NULL");
151  }
152 }
153 
154 
156 {
157  wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
158  SetSizer(sizer);
159 
160  // create Button Size
161  m_CaptionSizer = new wxBoxSizer(wxHORIZONTAL);
162  m_CaptionSizer->SetMinSize(40, 18);
163  m_CaptionItem = m_CaptionSizer->Add(100, 0, 1, wxEXPAND | wxALIGN_LEFT);
164 
165  wxWindow* btn = x_CreateButton(ID_BTN_MENU, "wm_menu", "wm_menu_active");
166  m_CaptionSizer->Add(btn, 0, wxALL, 2);
167 
168  btn = x_CreateButton(ID_BTN_MINIMIZE, "wm_minimize", "wm_minimize_active");
169  m_CaptionSizer->Add(btn, 0, wxALL, 2);
170 
171  btn = x_CreateButton(ID_BTN_FLOAT, "wm_float", "wm_float_active");
172  m_CaptionSizer->Add(btn, 0, wxALL, 2);
173 
174  btn = x_CreateButton(ID_BTN_CLOSE, "wm_close", "wm_close_active");
175  m_CaptionSizer->Add(btn, 0, wxALL, 2);
176 
177  sizer->Add(m_CaptionSizer, 0, wxEXPAND);
178 }
179 
180 wxWindow* CDockPanel::x_CreateButton(TCmdID id, const string& icon, const string& hover_icon)
181 {
182  return new CNoFocusBitmapButton(this, id,
183  wxArtProvider::GetBitmap(ToWxString(icon)),
184  wxArtProvider::GetBitmap(ToWxString(hover_icon)),
185  wxDefaultPosition);
186 }
187 
188 
190 {
191  _ASSERT(&client != m_Client);
192 
193  //Freeze();
194 
195  m_Client = &client;
196 
197  wxWindow* client_w = m_Client->GetWindow();
198  client_w->Reparent(this);
199  GetSizer()->Add(client_w, 1, wxEXPAND);
200 
201  client_w->Show();
202  Refresh();
203 
204  //Thaw();
205 }
206 
207 
208 void CDockPanel::RemoveClient(wxWindow* new_parent)
209 {
210  _ASSERT(m_Client && new_parent);
211 
212  //Freeze();
213 
214  wxWindow* client_w = m_Client->GetWindow();
215  m_Client = NULL;
216 
217  client_w->Hide();
218  client_w->Reparent(new_parent);
219  GetSizer()->Detach(client_w);
220 
221  Refresh();
222 
223  //Thaw();
224 }
225 
226 static const int kIconOffX = 1;
227 static const int kIconOffY = 1;
228 static const int kTextOffX = 4;
229 
230 void CDockPanel::OnPaint(wxPaintEvent& event)
231 {
232  // On mac, this gets called sometimes before window
233  // has a proper size which, on wxWidgets 2.9.2, causes
234  // this program to exit at src/common/dcbufcmn.cpp:108.
235  wxSize s = this->GetSize();
236  if (s.GetX() <= 0 || s.GetY() <= 0)
237  return;
238 
239  UpdateButtons();
240 
241  wxAutoBufferedPaintDC dc(this);
242 
243  dc.SetPen(*wxTRANSPARENT_PEN);
244 
245  bool focus = HasFocus();
246 
247  // fill background
248  wxSystemColour sys_colour = focus ? wxSYS_COLOUR_ACTIVECAPTION : wxSYS_COLOUR_INACTIVECAPTION;
249  wxColor cl_back = wxSystemSettings::GetColour(sys_colour);
250  wxBrush brush(cl_back);
251  dc.SetBrush(brush);
252 
253  wxRect rc = m_CaptionItem->GetRect();
254  wxRect client_rc = GetClientRect();
255  rc.y = client_rc.x;
256 
257  rc.width = client_rc.width;
258 
259  dc.DrawRectangle(rc);
260 
261  if(m_Client) {
262  rc.width = m_CaptionItem->GetRect().width;
263  x_DrawClientElements(dc, rc);
264  }
265 }
266 
267 
268 // draw client's icon and label
269 void CDockPanel::x_DrawClientElements(wxDC& dc, const wxRect& rc)
270 {
271  int pos_x = rc.x;
272 
273  // draw Client icon
274  string alias = m_Client->GetIconAlias();
275  wxBitmap bmp = wxArtProvider::GetBitmap(ToWxString(alias));
276  if(bmp.IsOk()) {
277  pos_x += kIconOffX;
278  dc.DrawBitmap(bmp, pos_x, rc.y + kIconOffY);
279  pos_x += bmp.GetWidth() + kIconOffX;
280  }
281 
282  // draw Client color key
284  if (client && client->GetColor()) {
285  pos_x += kIconOffX;
286  int y_off = 3;
287  int bttn_size = rc.height - y_off * 2;
288  CRgbaColor color = *client->GetColor();
289  wxBrush brush(wxColour(color.GetRedUC(),
290  color.GetGreenUC(), color.GetBlueUC()));
291  dc.SetBrush(brush);
292  dc.DrawRectangle(pos_x, rc.y + y_off, bttn_size, bttn_size);
293  pos_x += bttn_size + kIconOffX;
294  }
295 
296  // draw Client label
297  wxFontWeight weight = HasFocus() ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL;
298 
299  // This font appears about 2 points larger on windows than on other
300  // platforms. The other platforms seem correct int their point sizes, but
301  // windows is larger than expected.
302 #ifdef __WXMSW__
303  wxFont font(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, weight);
304 #else
305  wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, weight);
306 #endif
307 
308  dc.SetFont(font);
309 
310  wxColor cl_text = wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT);
311  dc.SetTextForeground(cl_text);
312 
313  // truncate label if needed
314  pos_x += kTextOffX;
315  int av_w = rc.x + rc.width - pos_x - kTextOffX;
316  wxString label = ToWxString(m_Client->GetClientLabel());
317  wxString s = TruncateText(dc, label, av_w);
318 
319  int w = 0, h = 0;
320  dc.GetTextExtent(s, &w, &h);
321  int pos_y = rc.y + (rc.height - h) / 2;
322 
323  dc.DrawText(s, pos_x, pos_y);
324 }
325 
326 
327 bool CDockPanel::ProcessEvent(wxEvent& event)
328 {
329  // Redirect events to active child first. Stops the same event being processed repeatedly
330  static wxEventType inEvent = wxEVT_NULL;
331  if (inEvent == event.GetEventType())
332  return false;
333  inEvent = event.GetEventType();
334 
335  bool res = false;
336 
337  // first - forward menu commands to the client window
338  if(m_Client && event.IsCommandEvent()) {
339  wxEventType type = event.GetEventType();
340  if(type == wxEVT_UPDATE_UI || type == wxEVT_COMMAND_MENU_SELECTED) {
341 
342  wxEvtHandler* handler = m_Client->GetCommandHandler();
343  _ASSERT(handler);
344 
345  res = handler->ProcessEvent(event);
346 
347  if(! res && m_ShowingPopup) {
348  wxUpdateUIEvent* ui_event = dynamic_cast<wxUpdateUIEvent*>(&event);
349 
350  if( ! ui_event) {
351  int cmd = event.GetId();
353  res = manager.OnDockPanelCommand(*this, cmd);
354  }
355  }
356  }
357  }
358 
359  // process as usual
360  if ( ! res) {
361  res = TParent::ProcessEvent(event);
362  }
363 
364  inEvent = wxEVT_NULL;
365  return res;
366 }
367 
368 
370 {
371  if( m_Client ){
372  wxRect rc = m_CaptionItem->GetRect();
373  rc.y = GetClientRect().x;
374  RefreshRect( rc );
375  }
376 }
377 
378 
380 {
381 }
382 
383 
384 // checks if focus changed and redraw itself if necessary
386 {
387  if(mf_IsActive != HasFocus()) {
389  Refresh();
390  }
391 }
392 
393 // returns true if panel or one of it's children has FLTK focus
395 {
396  const wxWindow* target;
397 
398  CDockNotebook* notebook = dynamic_cast<CDockNotebook*>( GetParent() );
399  if( notebook ){
400  target = notebook;
401  } else {
402  target = this;
403  }
404 
405  wxWindow* win = wxWindow::FindFocus();
406  while( win && win != target ){
407  win = win->GetParent();
408  }
409 
410  if( win == NULL ){
411  return false;
412  }
413 
414  if( win == this ){
415  return true;
416  }
417 
418  int selpage = notebook->GetSelection();
419 
420  return (selpage != wxNOT_FOUND &&
421  selpage >= 0 &&
422  selpage < (int)notebook->GetPageCount() &&
423  notebook->GetPage( selpage ) == this);
424 }
425 
426 void CDockPanel::MakeActive( bool flag )
427 {
428  mf_IsActive = flag;
429 }
430 
432 {
433  m_ShowingPopup = true;
434 
435  unique_ptr<wxMenu> menu(m_DockManager->GetDockPanelMenu(*this));
436  PopupMenu(menu.get());
437 
438  m_ShowingPopup = false;
439 }
440 
441 
442 void CDockPanel::OnMenuButtonClick(wxCommandEvent& event)
443 {
444  SetFocus();
446 }
447 
448 
449 void CDockPanel::OnMinimizeButtonClick(wxCommandEvent& event)
450 {
453 }
454 
455 
456 void CDockPanel::OnFloatButtonClick(wxCommandEvent& event)
457 {
459  if( ! m_DockManager->IsFloating(*client)) {
461  }
462 }
463 
464 
465 void CDockPanel::OnContextMenu(wxContextMenuEvent& event)
466 {
467  SetFocus();
469 }
470 
471 
472 void CDockPanel::OnChildFocus(wxChildFocusEvent& evt)
473 {
474  wxWindow* focus = evt.GetWindow();
475 
476  string type = typeid(*focus).name();
477 
478  if( focus->GetId() == ID_BTN_CLOSE ){
479  //LOG_POST("CDockPanel::OnChildFocus() " << evt.GetWindow() << " " << type << " - no change");
480 
481  m_DockManager->GetWindowManager().OnFocusChanged(evt.GetWindow());
482  } else {
483  //LOG_POST("CDockPanel::OnChildFocus() " << evt.GetWindow() << " " << type);
484 
485  m_DockManager->GetWindowManager().OnFocusChanged(evt.GetWindow());
486  }
487 
488  Refresh();
489 }
490 
491 
492 void CDockPanel::OnCloseButtonClick(wxCommandEvent& event)
493 {
496 }
497 
498 
500 {
501  return m_DockContainer;
502 }
503 
504 
506 {
507  m_DockContainer = dock_cont;
508 }
509 
510 
511 void CDockPanel::OnLeftDown(wxMouseEvent& evt)
512 {
513  if(m_Client) {
514  m_Client->GetWindow()->SetFocus();
515  }
516 
517  wxPoint pt = evt.GetPosition();
518  //LOG_POST("DP::OnLeftDown() CAPTURE MOUSE " << pt.x << " " << pt.y);
519 
520  CaptureMouse();
521 
522  m_ClickPoint = pt;
523  m_Canceled = false;
524 }
525 
526 
527 void CDockPanel::OnMotion(wxMouseEvent& evt)
528 {
529  wxPoint pt = evt.GetPosition();
530  //LOG_POST("DP::OnMotion() " << pt.x << " " << pt.y << " m_Canceled " << m_Canceled);
531 
532  if(! m_Canceled) {
533  if(evt.LeftIsDown()) {
534  int drag_x_threshold = wxSystemSettings::GetMetric(wxSYS_DRAG_X);
535  int drag_y_threshold = wxSystemSettings::GetMetric(wxSYS_DRAG_Y);
536 
537  if (abs(pt.x - m_ClickPoint.x) > drag_x_threshold ||
538  abs(pt.y - m_ClickPoint.y) > drag_y_threshold) {
539  // we release mouse to allow Window Manager to capture it
540  if (HasCapture()) {
541  ReleaseMouse();
542  }
544  }
545  }
546  }
547 }
548 
549 
550 void CDockPanel::OnLeftUp(wxMouseEvent& evt)
551 {
552  //wxPoint pt = evt.GetPosition();
553  //LOG_POST("DP::OnLeftUp() " << pt.x << " " << pt.y);
554 
555  if (HasCapture()) {
556  //WM_POST("ReleaseMouse()");
557  ReleaseMouse();
558  }
559 }
560 
561 
562 void CDockPanel::OnMouseCaptureLost(wxMouseCaptureLostEvent& evt)
563 {
564  //LOG_POST("DP::OnMouseCaptureLost()");
565 }
566 
567 
569 {
570  //WM_POST("CDockPanel::FinishDrag() m_Canceled = true;");
571  m_Canceled = true;
572 
573  if (HasCapture()) {
574  //WM_POST("ReleaseMouse()");
575  ReleaseMouse();
576  }
577 }
578 
579 
580 EDockEffect CDockPanel::DropTest(const wxPoint& sc_mouse_pos, wxWindow*& target)
581 {
582  EDockEffect effect = eNoEffect;
583  target = NULL;
584 
585  if(m_CaptionSizer) {
586  wxPoint pos = m_CaptionSizer->GetPosition();
587  wxSize size = m_CaptionSizer->GetSize();
588  wxRect bounds(pos, size);
589 
590  wxPoint pt = ScreenToClient(sc_mouse_pos);
591 
592  if(bounds.Contains(pt)) {
593  effect = ePutInTab;
594  target = this;
595  }
596  }
597  return effect;
598 }
599 
601 {
602  // when CDockPanel is placed ina floating frame it is not repainted
603  // automatically after Layout(), so we force it
604  bool ok = TParent::Layout();
605  Refresh();
606  return ok;
607 }
608 
CDockContainer is a window that hosts docked windows.
CDockManager & GetDockManager()
CDockManager CDockManager sends requests to Window Manager, Window Manager makes decisions about dele...
bool OnDockPanelCommand(CDockPanel &panel, TCmdID cmd)
CWindowManager & GetWindowManager()
wxFrame * MoveToFloatingFrame(IWMClient &client)
wxMenu * GetDockPanelMenu(CDockPanel &panel)
void OnCloseDockable(IDockableWindow &dockable)
void Minimize(IWMClient &client)
bool IsFloating(IWMClient &client) const
CDockNotebook - an extended version of wxAuiNotebook capable of working with Dock Manager and Window ...
CDockPanel - a container with a title bar (caption) hosting a single client window (IWMClient).
Definition: dock_panel.hpp:73
void OnLeftUp(wxMouseEvent &evt)
Definition: dock_panel.cpp:550
void OnPaint(wxPaintEvent &event)
Definition: dock_panel.cpp:230
void UpdateCaption()
Definition: dock_panel.cpp:369
virtual void x_CreateControls()
Definition: dock_panel.cpp:155
CDockManager * m_DockManager
Definition: dock_panel.hpp:154
virtual void x_SetClient(IWMClient &client)
Definition: dock_panel.cpp:189
void OnContextMenu(wxContextMenuEvent &event)
Definition: dock_panel.cpp:465
CDockContainer * m_DockContainer
Definition: dock_panel.hpp:155
IWMClient * m_Client
Definition: dock_panel.hpp:157
virtual void FinishDrag()
Definition: dock_panel.cpp:568
void OnMenuButtonClick(wxCommandEvent &event)
Definition: dock_panel.cpp:442
void OnMouseCaptureLost(wxMouseCaptureLostEvent &event)
Definition: dock_panel.cpp:562
bool m_Canceled
Definition: dock_panel.hpp:168
void OnLeftDown(wxMouseEvent &evt)
Definition: dock_panel.cpp:511
virtual bool HasFocus() const
Definition: dock_panel.cpp:394
bool mf_IsActive
Definition: dock_panel.hpp:160
virtual void SetDockContainer(CDockContainer *dock_cont)
Definition: dock_panel.cpp:505
virtual void MakeActive(bool flag)
Definition: dock_panel.cpp:426
virtual void UpdateButtons()
Definition: dock_panel.cpp:379
virtual void ShowBorder(bool show)
Definition: dock_panel.cpp:132
void OnMinimizeButtonClick(wxCommandEvent &event)
Definition: dock_panel.cpp:449
wxPoint m_ClickPoint
Definition: dock_panel.hpp:167
bool m_ShowingPopup
Definition: dock_panel.hpp:161
void OnMotion(wxMouseEvent &evt)
Definition: dock_panel.cpp:527
virtual ~CDockPanel()
Definition: dock_panel.cpp:146
void OnCloseButtonClick(wxCommandEvent &event)
Definition: dock_panel.cpp:492
void RemoveClient(wxWindow *new_parent)
disconnect the client and re-parent it to the given window
Definition: dock_panel.cpp:208
virtual bool Layout()
Definition: dock_panel.cpp:600
virtual EDockEffect DropTest(const wxPoint &screen_pt, wxWindow *&target)
Definition: dock_panel.cpp:580
virtual void x_ShowContextMenu()
Definition: dock_panel.cpp:431
virtual wxWindow * x_CreateButton(TCmdID id, const string &icon, const string &hover_icon)
Definition: dock_panel.cpp:180
void OnSetFocus(wxFocusEvent &event)
Definition: dock_panel.cpp:83
virtual wxSize ClientToWindowSize(const wxSize &size) const
Definition: dock_panel.cpp:124
virtual void UpdateFocusState()
Definition: dock_panel.cpp:385
void OnFloatButtonClick(wxCommandEvent &event)
Definition: dock_panel.cpp:456
wxBoxSizer * m_CaptionSizer
Definition: dock_panel.hpp:163
wxSizerItem * m_CaptionItem
Definition: dock_panel.hpp:164
virtual bool ProcessEvent(wxEvent &event)
Definition: dock_panel.cpp:327
virtual void x_DrawClientElements(wxDC &dc, const wxRect &rc)
Definition: dock_panel.cpp:269
IWMClient * GetClient()
Definition: dock_panel.hpp:93
virtual CDockContainer * GetDockContainer()
Definition: dock_panel.cpp:499
void OnChildFocus(wxChildFocusEvent &evt)
Definition: dock_panel.cpp:472
CDockPanel(CDockContainer *container, CDockManager *manager, IWMClient *client, const wxString &name)
Definition: dock_panel.cpp:99
class CRgbaColor provides a simple abstraction for managing colors.
Definition: rgba_color.hpp:58
void OnFocusChanged(wxWindow *new_focus)
void OnDockPanelStartDrag(CDockPanel *panel, const wxPoint &pt)
Called by CDockPanel to delegated DnD handling to Window Manager.
IWClient - abstract Window Manager client.
Definition: wm_client.hpp:50
virtual wxWindow * GetWindow()=0
returns a pointer to the wxWindow representing the client
virtual wxEvtHandler * GetCommandHandler()=0
returns a pointer to the command handler (for menu commands and updates)
virtual string GetClientLabel(IWMClient::ELabel ltype=IWMClient::eDefault) const =0
returns the client label (name) to be displayed in UI
virtual string GetIconAlias() const =0
returns an icon alias that can be used to retrieve the client's icon
void(*)(CSeq_entry_Handle seh, IWorkbench *wb, const CSerialObject &obj) handler
static const char * bounds[]
#define ID_BTN_MENU
CDockPanel.
Definition: dock_panel.cpp:59
#define ID_BTN_FLOAT
Definition: dock_panel.cpp:61
static const int kTextOffX
Definition: dock_panel.cpp:228
#define ID_BTN_CLOSE
Definition: dock_panel.cpp:62
#define ID_BTN_MINIMIZE
Definition: dock_panel.cpp:60
const long kwxBorderStyle
Definition: dock_panel.cpp:91
static const int kIconOffX
Definition: dock_panel.cpp:226
static const int kIconOffY
Definition: dock_panel.cpp:227
EDockEffect
EDockEffect.
Definition: dock_window.hpp:65
@ ePutInTab
Definition: dock_window.hpp:75
@ eNoEffect
Definition: dock_window.hpp:66
thread_local unique_ptr< FtaMsgPost > bmp
Definition: ftaerr.cpp:120
static CS_COMMAND * cmd
Definition: ct_dynamic.c:26
#define true
Definition: bool.h:35
#define false
Definition: bool.h:36
#define NULL
Definition: ncbistd.hpp:225
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
Definition: ncbidiag.hpp:186
int TCmdID
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
static const char label[]
n background color
n font weight
END_EVENT_TABLE()
const struct ncbi::grid::netcache::search::fields::SIZE size
#define abs(a)
Definition: ncbi_heapmgr.c:130
wxEVT_COMMAND_MENU_SELECTED
static static static wxID_ANY
static CNamedPipeClient * client
Definition: type.c:6
const char * name
Definition: type.c:8
#define _ASSERT
void SetFocus(CRef< objects::CSeq_entry > entry)
wxString ToWxString(const string &s)
Definition: wx_utils.hpp:173
wxString TruncateText(wxDC &dc, const wxString &s, int w, Ewx_Truncate trunc=ewxTruncate_Ellipsis)
truncates given string so that its length is less or equal "w" "trunc" controls truncation,...
Definition: wx_utils.cpp:878
Modified on Fri Sep 20 14:57:30 2024 by modify_doxy.py rev. 669887