A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/doxyhtml/splitter_8cpp_source.html below:

NCBI C++ ToolKit: src/gui/widgets/wx/splitter.cpp Source File

43 #include <wx/dcclient.h> 45 #include <wx/settings.h> 85  const

wxSize&

size

,

long

style,

const

wxString& name)

86

: wxPanel(parent, id, pos,

size

, style, name)

124

SetBackgroundStyle(wxBG_STYLE_CUSTOM);

126

SetAutoLayout(

true

);

178  if

(ar_size[

i

] >= 0)

179

sizes.push_back(ar_size[

i

]);

200

widths.push_back(ar_w[

i

]);

208

heights.push_back(ar_h[

i

]);

222

col_n =

max

(1, col_n);

223

row_n =

max

(1, row_n);

225  for

(

int i

= 0;

i

< col_n;

i

++)

226

widths.push_back(10);

227  for

(

int i

= 0;

i

< row_n;

i

++)

228

heights.push_back(10);

246  int

n_w = (

int

) widths.size();

247  int

n_h = (

int

) heights.size();

257  for

(

int i

= 0;

i

< n_w - 1;

i

++) {

263  m_SplitSize

.x = widths.empty() ? pos : pos + widths.back();

266  for

(

int i

= 0;

i

< n_h - 1;

i

++) {

272  m_SplitSize

.y = heights.empty() ? pos : pos + heights.back();

299  size_t

n_w = widths.size();

304  for

(

size_t i

= 0;

i

< n_w - 1;

i

++) {

346  size_t

n_h = heights.size();

351  for

(

size_t i

= 0;

i

< n_h - 1;

i

++) {

377  if

(w && i_cell >= 0) {

390  ERR_POST

(

"CSplitter::InsertToCell() - cell index is out of range"

);

429

TCells::iterator it = std::find(

m_Cells

.begin(),

m_Cells

.end(), child);

440

wxWindow* w = child, *p = 0;

453  if

(index >= 0 && index < (

int

)

m_Cells

.size()) {

456

wxWindow* w_focus = FindFocus();

457  bool

keep_focus = (w == w_focus) ||

s_Contains

(w, w_focus);

461

TParent::RemoveChild(w);

465

wxWindow* new_focus =

NULL

;

466  for

(

int i

= index - 1;

i

>= 0;

i

--) {

473  for

(

size_t i

= index + 1;

i

<

m_Cells

.size();

i

++) {

493  for

(

size_t i

= 0;

i

<

m_Cells

.size();

i

++ ) {

497

TParent::RemoveChild(w);

523

wxPaintDC dc(

this

);

525

wxBrush brush(GetBackgroundColour());

530  for

(

int

i_x = 0; i_x < n_cols; i_x++ ) {

534  for

(

int

i_y = 0; i_y < n_rows; i_y++ ) {

539

dc.SetPen(*wxTRANSPARENT_PEN);

541

dc.DrawRectangle(left, top, right - left + 1, bottom - top + 1);

544  if

(i_y != n_rows - 1) {

548  if

(i_x != n_cols - 1) {

552  if

(i_y != n_rows - 1 && i_x != n_cols - 1) {

562

wxColour cl_back = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);

563

wxColour cl_line = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW);

566

wxBrush brush(cl_back);

570

dc.DrawRectangle(x, y, w, h);

572 #ifdef __WXMAC__THIS_CODE_NEEDS_TO_BE_CHANGED_EVERYTIME_OSX_UPGRADED 574  int

yy = GetClientSize().y - y + h + 2;

575

HIRect rect = CGRectMake(x, yy, w, h);

577

HIThemeSplitterDrawInfo

info

;

578  info

.state = kThemeStateActive;

579  info

.adornment = kThemeAdornmentNone;

581

WindowRef wr = WindowRef(this->MacGetTopLevelWindowRef());

583

QDBeginCGContext (GetWindowPort(wr), &

context

);

584

HIThemeDrawPaneSplitter(&rect, &

info

,

context

, kHIThemeOrientationInverted);

585

QDEndCGContext(GetWindowPort(wr), &

context

);

593

wxSize new_size = GetSize();

598  bool

split_changed = x_changed || y_changed;

603  x_Resize

(old_size, new_size, split_changed | size_changed);

617  return

TParent::Show(show);

637  if

(b_size_changed) {

693  return

i_cell % n_cols;

701  return

i_cell / n_cols;

707  for

(

size_t i

=0 ;

i

<

m_Cells

.size();

i

++ ) {

769

wxWindowList& children = GetChildren();

771

vector<wxWindow*> v_children;

772  for

( wxWindowList::iterator it = children.begin(); it != children.end(); ++it) {

773

wxWindow* child = *it;

774

v_children.push_back(child);

776  for

(

size_t i

= 0;

i

< v_children.size();

i

++ ) {

777

wxWindow* child = v_children[

i

];

778

TParent::RemoveChild(child);

804

wxWindow* w =

GetCell

(i_x, i_y);

814

w->SetSize(left, top, width, height);

845  bool

b_hit_x_sep = (i_sep_x != -1);

846  bool

b_hit_y_sep = (i_sep_y != -1);

848  if

(b_hit_x_sep || b_hit_y_sep) {

849  if

(event.LeftDClick()) {

862  if

(event.Dragging()) {

873

cursor = (i_sep_y == -1) ? wxCURSOR_ARROW : wxCURSOR_SIZENS;

875

cursor = (i_sep_y == -1) ? wxCURSOR_SIZEWE : wxCURSOR_SIZING ;

898

SetCursor(wxCURSOR_ARROW);

905  if

(event.GetKeyCode() == WXK_ESCAPE) {

921  _ASSERT

(start_i >=0 && end_i < (

int

) v.size());

923  for

(

int i

= start_i;

i

<= end_i;

i

++ ) {

971

wxSize

size

= GetSize();

1032

SetCursor(wxCURSOR_ARROW);

1060  int n

= (

int

) vpos.size();

1061  for

(

int i

= 0;

i

<

n

;

i

++ ) {

1062  int

pos = vpos[

i

];

1073

i_sep = i_cell = -1;

1074  int n

= (

int

) vpos.size();

1075  for

(

int i

= 0;

i

<

n

;

i

++ ) {

1076  int

pos = vpos[

i

];

1118  int n

= (

int

) vSplitPos.size() + 1;

1121  int

rest = space - w *

n

;

1123  int

pos = w + (rest ? 1 : 0);

1125  for

(

int i

= 0;

i

<

n

- 1;

i

++ ) {

1126

vSplitPos[

i

] = pos;

1136  return

(index > -1 && index < (

int

) v.size()) ? v[index] : 0;

1141  int

index,

int

&

delta

)

1143  int

sz = sizes[index];

1144  if

(norm_sizes[index] < 0) {

1145

norm_sizes[index] = sz;

1147  int

min_sz = min_sizes[index];

1148  int

new_sz =

max

(min_sz, sz +

delta

);

1149

sizes[index] = new_sz;

1150  delta

+= (sz - new_sz);

1155  int

index,

int

&

delta

,

bool

unlimited)

1157  int

sz = sizes[index];

1158  int

max_sz = norm_sizes[index];

1162

}

else if

(max_sz > 0) {

1163

new_sz =

min

(sz +

delta

, max_sz);

1165

sizes[index] = new_sz;

1166  delta

+= (sz - new_sz);

1174  int

resizable_index)

1176  int

cells_n = (

int

)sizes.size();

1177  _ASSERT

(cells_n == 0 || ((

int

) norm_sizes.size() == cells_n

1178

&& (

int

)min_sizes.size() == cells_n));

1180  if

(resizable_index == -1)

1181

resizable_index = cells_n - 1;

1187  for

(

int i

= cells_n - 1;

i

>= 0 &&

delta

< 0;

i

-- ) {

1188  if

(

i

!= resizable_index) {

1192

}

else if

(

delta

> 0) {

1194  for

(

int i

= 0; i < cells_n && delta > 0;

i

++ ) {

1195  if

(

i

!= resizable_index) {

1200

sizes[resizable_index] +=

delta

;

1213

min_widths.resize(col_n, 0);

1214

min_heights.clear();

1215

min_heights.resize(row_n, 50);

1217  for

(

size_t

col = 0; col < col_n; col++ ) {

1218  for

(

size_t row

= 0;

row

< row_n;

row

++ ) {

1232

vector<bool>& min_rows)

const 1269  int

i_sep,

int delta

,

int

resizable_index)

1271  int

cells_n = (

int

)sizes.size();

1272  if

(resizable_index == -1)

1273

resizable_index = i_sep;

1275  int

delta_2 = -

delta

;

1276  if

(i_sep < resizable_index) {

1279  for

(

int i

= i_sep;

i

>= 0 &&

delta

< 0;

i

-- ) {

1283  for

(

int i

= cells_n-1;

i

> i_sep && delta_2 > 0;

i

-- ) {

1284  if

(

i

!= resizable_index) {

1289  x_GrowCell

(sizes, norm_sizes, resizable_index, delta_2,

true

);

1293  for

(

int i

= 0; i < i_sep && delta > 0;

i

++ ) {

1301  x_ShrinkCell

(sizes, min_sizes, norm_sizes, resizable_index, delta_2);

1304  for

(

int i

= i_sep + 1;

i

< cells_n -1 && delta_2 < 0;

i

++ ) {

1314  for

(

int i

= i_sep;

i

>= 0 &&

delta

< 0;

i

-- ) {

1315  if

(

i

!= resizable_index) {

1320  for

(

int i

= cells_n-1;

i

> i_sep && delta_2 > 0;

i

-- ) {

1326  x_GrowCell

(sizes, norm_sizes, i_sep + 1, delta_2,

true

);

1328

}

else if

(

delta

> 0) {

1330  for

(

int i

= 0; i <= i_sep && delta > 0;

i

++ ) {

1331  if

(

i

!= resizable_index) {

1336

sizes[resizable_index] +=

delta

;

1339  for

(

int i

= i_sep + 1;

i

< cells_n && delta_2 < 0;

i

++ ) {

1349  bool

update =

false

;

1353  if

( (i_x >= start_x && i_x <= stop_x) ||

1354

(i_y >= start_y && i_y <= stop_y) ) {

1369  int

n_split = (

int

) split_positions.size();

1370  int

sum_size = GetSize().y - n_split *

m_SepSize

;

1371  int

av_size = sum_size / (n_split + 1);

1374

split_positions.push_back(

size

);

1375

v_norm_size.push_back(-1);

1379  double

K = (double)(sum_size -

m_SepSize

) / (sum_size + av_size);

1381  for

(

int i

= 0;

i

< n_split;

i

++ ) {

1382  int

start = (

i

== 0) ? 0 : split_positions[

i

- 1] +

m_SepSize

;

1383  int

sz = split_positions[

i

] - start;

1384

sizes[

i

] = (

int

)( K * sz);

1388  for

(

int

pos = 0,

i

= 0;

i

< n_split;

i

++ ) {

1390

split_positions[

i

] = pos;

1400  size_t

split_n = split_positions.size();

1402

sizes.resize(split_n + 1);

1405  for

(

size_t i

= 0;

i

< split_n;

i

++ ) {

1418  size_t

split_n = sizes.size() - 1;

1419

split_positions.clear();

1420

split_positions.resize(split_n);

1423  for

(

size_t i

= 0;

i

< split_n;

i

++ ) {

1424

split_positions[

i

] = prev_end + sizes[

i

];

1425

prev_end = split_positions[

i

] +

m_SepSize

;

CSplitter - container with resizable separators.

void OnLeftDown(wxMouseEvent &event)

void OnContextMenu(wxContextMenuEvent &event)

void SetResizableCell(int col, int row)

void OnKeyDown(wxKeyEvent &event)

void x_SizesToSplitPositions(const TPosVector &sizes, TPosVector &split_positions)

wxWindow * m_PrevFocus

members used for event handling

void x_DistributeEvenly(bool b_x, bool b_y)

virtual bool Show(bool show=true)

vector< int > TSizeVector

void x_SplitPositionsToSizes(const TPosVector &split_positions, int total_size, TPosVector &sizes) const

int x_GetBottom(int i_y) const

void OnLeftUp(wxMouseEvent &event)

void x_DoDistributeEvenly(TPosVector &vSplitPos, int size)

virtual void x_PreserveNormalSize(bool preserve)

bool FindChild(const wxWindow *child, int &col, int &row) const

bool IsValidCell(int col, int row) const

returns "true" if cell specified by (col, row) exists in the splitter

void OnPaint(wxPaintEvent &event)

virtual bool RemoveFromCell(int col, int row)

static void x_ShrinkCell(TPosVector &sizes, TPosVector &min_sizes, TPosVector &norm_sizes, int index, int &delta)

void x_DoResize(TPosVector &sizes, TSizeVector &norm_sizes, TPosVector &min_sizes, int size, int new_size, int resizable_index)

void OnMouseEnter(wxMouseEvent &event)

virtual void BlockLayout(bool block=true)

int x_GetLeft(int i_x) const

void x_CalculateMinSizes(TPosVector &min_widths, TPosVector &min_heights) const

int x_GetRight(int i_x) const

virtual void x_DoDragSeparator(wxMouseEvent &event, bool b_final)

virtual bool x_IsDragging() const

bool InsertToCell(wxWindow *child, int col, int row)

If cell [col, row] exists and vacant - adds widget to the container.

void GetWidths(TPosVector &widths) const

static void x_GrowCell(TPosVector &sizes, TPosVector &norm_sizes, int index, int &delta, bool unlimited=false)

void x_ResizeToCell(int i_cell)

void x_UpdateRegion(int start_x, int stop_x, int start_y, int stop_y)

virtual void x_DrawSeparator(wxDC &dc, int x, int y, int w, int h)

int x_GetRow(int i_cell) const

int x_GetTop(int i_y) const

void x_Split(ESplitType type, const TPosVector &widths, const TPosVector &heights)

void x_GetMinimized(vector< bool > &min_cols, vector< bool > &min_rows) const

int x_GetHeight(int i_y) const

int GetSeparatorSize() const

int x_GetWidth(int i_x) const

void x_HitTest(int z, TPosVector &vpos, int &i_cell, int &i_sep)

void x_MoveSeparator(TPosVector &sizes, TSizeVector &norm_sizes, TPosVector &min_sizes, int i_sep, int delta, int resizable_index)

void GetHeights(TPosVector &heights) const

int x_HitTestSeparator(int z, TPosVector &vpos)

returns Separator index if hit or -1

int x_GetCellIndex(int i_x, int i_y) const

virtual void x_StartDrag(int i_sep_x, int i_sep_y)

void SetWidths(const TPosVector &widths)

void OnMouseLeave(wxMouseEvent &event)

virtual void x_Resize(const wxSize &old_size, const wxSize &new_size, bool b_size_changes)

void SetHeights(const TPosVector &heights)

ESplitType

ESplitMode - splitter orientation.

@ eHorizontal

vertical space is splitted

@ eGrid

horizontal space is splitted

virtual void Split(ESplitType type)

Creates a splitter with a single cell.

wxWindow * GetCell(int col, int row)

int x_GetColumn(int i_cell) const

bool x_RemoveChild(int index)

void OnMouseMove(wxMouseEvent &event)

ESplitType GetSplitType() const

void x_NewSplit(TPosVector &split_positions, TSizeVector &v_norm_size, int size)

virtual void RemoveChild(wxWindowBase *child)

overriding wxWindowBase function

int GetColumnsCount() const

Include a standard set of the NCBI C++ Toolkit most basic headers.

static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)

#define ERR_POST(message)

Error posting with file, line number information but without error codes.

#define END_NCBI_SCOPE

End previously defined NCBI scope.

#define BEGIN_NCBI_SCOPE

Define ncbi namespace.

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.

Int4 delta(size_t dimension_, const Int4 *score_)

static sljit_uw total_size

static const int kMaxCells

static const int kDefSepSize

CSplitter.

int ElementsSum(vector< int > v, int start_i, int end_i)

int GetElemOrZero(CSplitter::TPosVector &v, int index)

static bool s_Contains(wxWindow *parent, wxWindow *child)

#define row(bind, expected)

static CS_CONTEXT * context


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4