86 m_HandlerPane.EnableOffset();
88 m_Renderer.SetBackColor(
CRgbaColor(0.95f, 1.0f, 0.95f));
91 m_SelHandler.SetHost(
this);
92 x_RegisterHandler(&m_SelHandler, fAlignArea|fRulerArea, &m_HandlerPane);
95 m_MouseZoomHandler.SetHost(
this);
96 m_MouseZoomHandler.SetPanOnMouseDown(
true);
97 x_RegisterHandler(&m_MouseZoomHandler, fAlignArea|fRulerArea, &m_HandlerPane);
99 m_MarkHandler.SetHost(
this);
100 x_RegisterHandler(&m_MarkHandler, fAlignArea, &m_HandlerPane);
102 m_HeaderHandler.SetHost(
this);
103 x_RegisterHandler(&m_HeaderHandler, fHeaderArea, &m_HandlerPane);
110 x_RegisterHandler(
dynamic_cast<IGlEventHandler*
>(&m_TooltipManager), fAllAreas, &m_HandlerPane);
113 m_ProgressPanel.SetVisible(
true);
184 wxSize sz = GetClientSize();
199 wxPoint ms_pos =
event.GetPosition();
203 if (!event.GetSkipped())
208 if(event.GetSkipped()) {
239 wxPoint ms_pos =
event.GetPosition();
243 if (!event.GetSkipped())
249 if(event.GetSkipped()) {
253 wxPoint ms_pos =
event.GetPosition();
277 wxPoint ms_pos =
event.GetPosition();
281 if (!event.GetSkipped())
286 if(event.GetSkipped()) {
295 wxPoint ms_pos =
event.GetPosition();
306 if(event.GetSkipped()) {
309 int d_y =
event.GetWheelRotation();
330 if(event.GetSkipped()) {
340 auto is_being_handled =
341 (wxGetKeyState(wxKeyCode(
'Z')) || wxGetKeyState(wxKeyCode(
'R')) || wxGetKeyState(wxKeyCode(
'P')));
342 is_being_handled = is_being_handled
345 if (is_being_handled)
352 wxPoint pos =
event.GetPosition();
374 if (event.GetEventType() == wxEVT_LEFT_DOWN)
419 info.SetTitleText(
"");
428 info.SetTipText( tt );
435 catch (
const exception& e) {
444 if (
nullptr == scope)
447 return url_handler.
ProcessURL(href.ToStdString());
482 float vert_offset = title_height + 12.f;
484 std::stringstream strm;
485 strm <<
"NCBI Genome Workbench, Version ";
487 string title = strm.str();
489 gl.
Viewport(0, vp_height - vert_offset, vp_width, vert_offset);
492 gl.
Ortho(0, vp_width, 0, vert_offset, -1.0, 1.0);
508 catch (std::exception& e) {
511 if (!
error.empty()) {
537 }
catch(std::exception& e) {
540 if( !
error.empty()) {
633 if(rc_vp.
Width() > 0) {
647 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
664 if(rc_vp.
Width() > 0) {
677 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
691 if(rc_vp.
Width() > 0) {
697 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
742 int vp_y = GetClientSize().y - 1 - y;
759 int vp_y = GetClientSize().y - 1 - WinY;
761 return vp_y >= rc.
Bottom() && vp_y <= rc.
Top();
772 int w = GetClientSize().x;
773 return TVPRect(0, top +
H -1, w - 1, top);
789 wxSize sz = GetClientSize();
790 TVPRect rcVisible(0, sz.y - 1, sz.x - 1, 0);
792 for(
size_t j = 0; j < v_indexes.size() && ! redraw; j++ ) {
793 int index = v_indexes[j];
807 if(iLastItem >= iFirstItem) {
811 wxSize sz = GetClientSize();
812 TVPRect rc_visible(0, sz.y - 1, sz.x - 1, 0);
855 return GetClientSize().y;
862 if(! b_clip || WinY >= h) {
877 if (top > last_row_top)
902 if (rc_vp.
Width() > 0) {
1004 default:
_ASSERT(
false);
return -1;
1041 return GetClientSize().y - 1 - y;
1127 switch(
column.m_SortState) {
1150 for(
int j = 0; j <
n; j++ ) {
1166 int vp_y = GetClientSize().y - pos.y;
1177 if(vp_y < list_h + master_h + ruler_h) {
1188 if (vp_y >list_h + master_h)
1195 }
else if(vp_y < list_h + master_h + ruler_h) {
void UnMarkAll(TNumrow row)
void MarkSelectedRows(const TRangeColl &C, bool set)
void Render(CGlPane &Pane)
const TRowToMarkMap & GetMarks() const
virtual bool IsActive() const
virtual void Render(CGlPane &pane)
@ kMasterRowIndex
dummy master row index used in selection logic
virtual CWidgetDisplayStyle * GetDisplayStyle()
void OnLeftDown(wxMouseEvent &event)
virtual void SLV_UpdateRange(int iFirstItem, int iLastItem) override
virtual void ARH_OnSelectionChanged() override
notifies a host about selection change
virtual void MZHH_ZoomRect(const TModelRect &rc) override
virtual void x_OnRowMouseEvent(wxMouseEvent &event)
virtual int SLC_GetHeight() override
void UpdateHeaderSortState()
virtual wxEvtHandler * GetEvtHandler() override
IAlnMultiRendererContext * x_GetContext()
IAlnMultiRendererContext * m_Context
void SetMasterBackColor(const CRgbaColor &color)
virtual TModelUnit SHH_GetModelByWindow(int z, EOrientation orient) override
virtual TVPPoint GCH_GetVPPosByWindowPos(const wxPoint &pos)
virtual void x_Render() override
bool HasSelectedObjects() const
void SetContext(IAlnMultiRendererContext *p_context)
CLinearSelHandler m_SelHandler
virtual TVPPoint GetPortSize(void) override
returns size of the master pane in screen coordinates
void OnLeftUp(wxMouseEvent &event)
virtual void SetPane(CGlPane *pane) override
CSelListController extension.
CAlnMultiHeaderHandler m_HeaderHandler
const TRowToMarkMap & GetMarks() const
void NotifyParent(EEventType type)
virtual TVPPoint HHH_GetVPPosByWindowPos(const wxPoint &pos) override
returns bounds of the Header
virtual const TVPRect & GetViewportRect() const override
virtual void MZHH_Scroll(TModelUnit d_x, TModelUnit d_y) override
virtual void x_RenderMark()
void ResetSelection(bool redraw)
CProgressPanel m_ProgressPanel
int x_GetAreaByWindowPos(const wxPoint &pos) override
virtual void SLV_SetModel(TSelListModel *pModel) override
virtual int MHH_GetLineByWindowY(int Y) const override
virtual int ARH_GetRowTop(IAlignRow *p_row) override
Returns Y-pos for row.
CAlignMarkHandler m_MarkHandler
CAlnMultiRenderer & GetRenderer()
virtual const TSelListModel * MHH_GetSelListModel() const override
void SetBackColor(const CRgbaColor &color)
virtual void HHH_SortByColumn(int index) override
virtual int SLC_GetLineByWindowY(int WinY, bool b_clip=false) override
virtual TModelUnit MHH_GetSeqPosByX(int X) const override
### refactor ??
void OnSize(wxSizeEvent &event)
virtual void Update() override
CSelectionVisitor m_SelectionVisitor
virtual TModelUnit MZHH_GetScale(EScaleType type) override
virtual void MZHH_EndOp() override
void OnLeftDoubleClick(wxMouseEvent &event)
TSelListModel * x_GetModel()
virtual TNumrow MHH_GetRowByLine(int Index) const override
int GetListAreaHeight() const
@)
const TRangeColl & GetSelection() const
bool x_IsMasterLineByWindowY(int WinY)
int GetAlignVPWidth() const
int x_GetLineByWindowY(int WinY) const
virtual void UpdateOnDataChanged()
virtual void RenderVectorGraphics(int vp_width, int vp_height) override
Render for vector output.
void Init(objects::CScope *scope)
void ShowProgressPanel(float progress, const string &msg)
virtual void HHH_SetColumns(const TColumns &columns, int resizable_index) override
change order of columns, their width and posisitions
virtual CTooltipInfo TTHH_GetTooltip(const wxRect &rect) override
Return the contents to be displayed in the tool tip.
void OnMouseWheel(wxMouseEvent &event)
CAlnMultiRenderer m_Renderer
virtual int x_GetAreaByVPPos(TVPUnit vp_x, TVPUnit vp_y) override
virtual void x_RenderSelection()
protected members
void SetSelection(const TRangeColl &C, bool redraw)
virtual int MHH_GetLinePosY(int Index) const override
virtual IAlnMultiHeaderContext * HHH_GetContext() override
IAMHeaderHandlerHost implementation.
IAlnMultiPaneParent * m_Parent
TVPRect x_GetLineRect(int Index) const
virtual void x_RenderProgressPanel()
virtual int MHH_GetLineHeight(int Index) const override
virtual void UpdateVectorLayout() override
void MarkSelectedRows(const TRangeColl &C, bool bMark)
IAlignRow::TColumnType TColumnType
virtual void x_RenderZoomHandler()
void OnMotion(wxMouseEvent &event)
virtual void SLV_UpdateItems(const TIndexVector &vIndices) override
void SetWidget(IAlnMultiPaneParent *p_arent)
bool m_Title
When rendering vector image, add a title.
void OnKeyDown(wxKeyEvent &event)
virtual CSelectionVisitor * ARH_GetSelectionVisitor() override
notifies a host about selection change
virtual TVPPoint ARH_GetVPPosByWindowPos(const wxPoint &pos) override
provides mouse coords in OpenGL viewport coord system
CRange< TSeqPos > GetSelectionLimits()
virtual TVPRect HHH_GetHeaderRect() override
virtual void SHH_OnChanged() override
ISelHandlerHost implementation.
IAlnMultiPaneParent * x_GetParent()
virtual TSelListModel * SLC_GetModel() override
virtual const IAlnMultiDataSource * MHH_GetAlnDS() const override
IAlnMarkHandlerHost implementation.
virtual void x_RenderHeaderHandler()
virtual void HHH_RenderColumnHeader(int index, const TVPRect &rc) override
virtual void MZHH_SetScale(TModelUnit scale, const TModelPoint &point) override
virtual bool TTHH_ProcessURL(const wxString &href) override
Return true if the specified URL has been processed. Used for custom commands.
virtual void MZHH_ZoomPoint(const TModelPoint &point, TModelUnit factor) override
virtual TVPUnit MZHH_GetVPPosByY(int y) const override
converts window coord to Viewport coord
void SortByColumn(int index)
virtual int MHH_GetLineByRowNum(TNumrow Row) const override
int GetAlignVPHeight() const
virtual void SLC_VertScrollToMakeVisible(int Index) override
TVPPoint x_GetVPPosByWindowPos(int x, int y)
CMouseZoomHandler m_MouseZoomHandler
void GetObjectSelection(TConstObjects &objs) const
virtual string TTHH_NeedTooltip(const wxPoint &pt) override
Return id of the underlying element to dispaly a tooltip, otherwise "".
virtual void ARH_OnRowChanged(IAlignRow *p_row) override
notifies a host about changes the row
virtual TVPUnit SHH_GetWindowByModel(TModelUnit z, EOrientation orient) override
class CAlnMultiRenderer - renders multiple alignment represented by IAlnMultiRendererContext (the Mod...
CAlnMultiHeader & GetHeader()
virtual void UpdateOnDataChanged()
bool IsColumnVisible(int index) const
virtual void Resize(const TVPRect &rc)
TColumnType GetColumnTypeByX(int vp_x) const
void SetContext(IAlnMultiRendererContext *pContext)
virtual int GetColumnsCount() const
virtual int GetColumnIndexByX(int x) const
virtual bool NeedTooltip(int vp_x, int vp_y)
TVPRect GetMasterArea() const
virtual const SColumn & GetColumn(int index) const
TVPRect GetColumnRectByType(TColumnType type, bool include_header) const
void SetColumns(const vector< SColumn > &columns, int resizable_index)
int GetColumnIndexByType(TColumnType type) const
void SetFocused(bool b_set)
int GetMasterAreaHeight() const
void SetBackColor(const CRgbaColor Color)
virtual string GetTooltip()
void SetColumnVisible(int index, bool b_visible)
virtual void Render()
renders OpenGL graphics
int GetVPListTop() const
return OpenGL viewport coordinate of the top pixel in the list area
int GetListAreaHeight() const
int GetRulerAreaHeight() const
virtual void Update(bool layout_only=false)
void SetMasterBackColor(const CRgbaColor Color)
virtual TVPRect GetRect() const
void SetupPaneForColumn(CGlPane &pane, int i_col) const
TColumnType GetColumnTypeByIndex(int i_col) const
int GetListTop() const
protected members
@ eMajor
absolute (in)compatibility
@ eMinor
backward (in)compatibility
static EGUIState wxGetSelectState(const wxMouseEvent &event)
void Render(CGlPane &Pane, ERenderingOption option=eActiveState)
void SetSelection(const TRangeColl &C, bool bRedraw)
void ResetSelection(bool bRedraw)
const TRangeColl & GetSelection() const
TSeqRange GetSelectionLimits() const
CMouseZoomHandler provides support for mouse-driven zoom and pan operations.
virtual bool IsScaleMode() const
virtual void Render(CGlPane &Pane)
virtual TVPPoint PreferredSize()
virtual void Render(CGlPane &pane)
virtual void Update(float progress, const string &msg)
virtual void SetVisible(bool set)
virtual void SetVPRect(const TVPRect &rc)
virtual TVPRect GetVPRect() const
class CRgbaColor provides a simple abstraction for managing colors.
CRuler is a renderable object drawing a scale with position labels.
virtual void x_OnLeftDown(wxMouseEvent &event)
virtual void x_OnMotion(wxMouseEvent &event)
virtual void x_OnLeftUp(wxMouseEvent &event)
virtual void x_OnKeyDown(wxKeyEvent &event)
class CSelectionVisitor is a concrete glyph visitor for selection traversal and deselection traversal...
objects::CScope * GetScope()
void GetObjectSelection(TConstObjects &objs) const
bool HasSelectedObjects() const
void SetScope(objects::CScope *scope)
vector< TColumn > TColumns
IAlnExplorer::TNumrow TNumrow
Interface IAlignRow - abstracts row rendering in Multiple Alignment Widget.
virtual int GetRowNum() const =0
Returns index of row in IAlnMultiDataSource.
virtual void OnMouseEvent(wxMouseEvent &event, TColumnType col_type, CGlPane &pane)=0
EColumnType
Column identifier for use as TColumnType, defines basic column types this set can be extended in deri...
@ eIconStrand
Icon for Positive/Negative (Mixed?) strand.
@ eIconExpand
Icon for expand (+) button.
@ eIcons
Strand + Expand icons.
IAlnMultiDataSource - interface to a data source representing an abstract multiple alignment.
Interface IAlnMultiPaneParent represents a context in which an instance of CAlnMultiPane lives.
virtual void ZoomPoint(const TModelPoint &point, TModelUnit factor)=0
virtual void OnRowChanged(IAlignRow *p_row)=0
virtual void OnChildResize()=0
virtual const IAlnMultiDataSource * GetDataSource(void) const =0
virtual void SetScaleX(TModelUnit scale_x, const TModelPoint &point)=0
virtual void ZoomRect(const TModelRect &rc)=0
virtual TNumrow GetRowNumByLine(int index) const =0
virtual int GetLineByRowNum(TNumrow row) const =0
virtual void Scroll(TModelUnit d_x, TModelUnit d_y)=0
virtual void OnColumnsChanged()=0
IAlnMultiRendererContext - this interface represents context in which CAlnMultiRenderer lives.
virtual int GetLineByRowNum(TNumrow row) const =0
virtual const CGlPane & GetAlignPort() const =0
virtual bool SortByColumn(TColumnType type, bool ascending)=0
virtual IAlignRow * GetRowByLine(int index)=0
all Y coordinates are OpenGL Viewport coordinates (not widget coords) "index" is a line index (not ro...
virtual int GetLinePosY(int index) const =0
virtual int GetLineHeight(int index) const =0
virtual IAlnExplorer::ESortState GetColumnSortState(TColumnType type)=0
virtual IAlignRow * GetMasterRow()=0
virtual int GetLineByModelY(int y) const =0
virtual void SLM_InvertSingleItem(TIndex index)=0
virtual void SLM_SelectSingleItem(TIndex index)=0
TSelListModel::TIndexVector TIndexVector
GUI command routing and handling framework.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
const string & GetMsg(void) const
Get message string.
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
void SetModelLimitsRect(const TModelRect &R)
virtual void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)=0
void SetViewport(const TVPRect &R)
virtual void Enable(GLenum glstate)=0
CGlPoint< TVPUnit > TVPPoint
CGlRect & CombineWith(const CGlRect &r)
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)=0
Options to be used when GL_BLEND is enabled.
void Color3f(GLfloat r, GLfloat g, GLfloat b)
virtual void MatrixMode(GLenum mode)=0
TVPUnit ProjectX(TModelUnit m_x) const
IRender & GetGl()
convenience function for getting current render manager
TVPRect & GetViewport(void)
CGlRect< TVPUnit > TVPRect
virtual void BeginText(const CGlTextureFont *font, const CRgbaColor &color)=0
Text is drawn is pixel coordinates.
virtual TModelUnit GetFontDescender() const
virtual void LoadIdentity()=0
TVPUnit ProjectY(TModelUnit m_y) const
virtual void EndText()=0
Pops matrices and attributes after writing text.
TModelUnit UnProjectX(TVPUnit m_x) const
TModelRect & GetModelLimitsRect(void)
void Inflate(T d_x, T d_y)
TModelUnit UnProjectY(TVPUnit m_y) const
TModelUnit GetZoomAllScaleX(void) const
void SetVert(T bottom, T top)
void SetVisibleRect(const TModelRect &R)
virtual void WriteText(TModelUnit x, TModelUnit y, const char *text, TModelUnit rotate_degrees=0.0)=0
Write text at specified model coords.
virtual TModelUnit TextHeight(void) const
void SetFontSize(unsigned int size)
Set/get font size in points.
TModelRect & GetVisibleRect(void)
virtual void Disable(GLenum glstate)=0
glDisable()
virtual void Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal)=0
TModelUnit GetMinScaleX(void) const
TModelUnit GetScaleX(void) const
bool Intersects(const CGlRect &R) const
void EnableOffset(bool b_en=true)
Offset is used as a workaround for OpenGL precision problems emerging when size of visible range is s...
virtual void RemoveListener(CEventHandler *listener)
Remove a listener.
vector< CConstRef< CObject > > TConstObjects
virtual void AddListener(CEventHandler *listener, int pool_name=ePool_Default)
Add a listener.
virtual bool Send(CEvent *evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Sends an event synchronously.
@ eDispatch_Default
dispatch until handled at least by one handler
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
unsigned int
A callback function used to compare two keys in a database.
const struct ncbi::grid::netcache::search::fields::SIZE size
The NCBI C++/STL use hints.
Defines: CTimeFormat - storage class for time format.
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static const char * column
SColumn describes a single column.
int m_Width
horizontal position in viewport
int m_UserData
width in pixels
void SetFocus(CRef< objects::CSeq_entry > entry)