// In case we're using the generic tree control. // Get the view start void wxRemotelyScrolledTreeCtrl::GetViewStart(int *x, int *y) const { wxScrolledWindow* scrolledWindow = GetScrolledWindow(); #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; int x1, y1, x2, y2; win->wxGenericTreeCtrl::GetViewStart(& x1, & y1); * x = x1; * y = y1; if (!scrolledWindow) return; scrolledWindow->GetViewStart(& x2, & y2); * y = y2; } else #endif { // x is wrong since the horizontal scrollbar is controlled by the // tree control, but we probably don't need it. scrolledWindow->GetViewStart(x, y); } }
// Number of pixels per user unit (0 or -1 for no scrollbar) // Length of virtual canvas in user units // Length of page in user units void wxRemotelyScrolledTreeCtrl::SetScrollbars( #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) int pixelsPerUnitX, int pixelsPerUnitY, int noUnitsX, int noUnitsY, int xPos, int yPos, bool noRefresh #else int WXUNUSED(pixelsPerUnitX), int WXUNUSED(pixelsPerUnitY), int WXUNUSED(noUnitsX), int WXUNUSED(noUnitsY), int WXUNUSED(xPos), int WXUNUSED(yPos), bool WXUNUSED(noRefresh) #endif ) { #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; win->wxGenericTreeCtrl::SetScrollbars(pixelsPerUnitX, pixelsPerUnitY, noUnitsX, 0, xPos, 0, /* noRefresh */ true); wxScrolledWindow* scrolledWindow = GetScrolledWindow(); if (scrolledWindow) { scrolledWindow->SetScrollbars(0, pixelsPerUnitY, 0, noUnitsY, 0, yPos, noRefresh); } } #endif }
// In case we're using the generic tree control. int wxRemotelyScrolledTreeCtrl::GetScrollPos( #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) int orient #else int WXUNUSED(orient) #endif ) const { #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) // this condition fixes extsitence of warning but wxScrolledWindow* scrolledWindow = // but GetScrolledWindow is still executed in case internally does something #endif GetScrolledWindow(); #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; if (orient == wxHORIZONTAL) return win->wxGenericTreeCtrl::GetScrollPos(orient); else { return scrolledWindow->GetScrollPos(orient); } } #endif return 0; }
// Adjust the containing wxScrolledWindow's scrollbars appropriately void wxRemotelyScrolledTreeCtrl::AdjustRemoteScrollbars() { #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { // This is for the generic tree control. // It calls SetScrollbars which has been overridden // to adjust the parent scrolled window vertical // scrollbar. ((wxGenericTreeCtrl*) this)->AdjustMyScrollbars(); return; } else #endif { // This is for the wxMSW tree control wxScrolledWindow* scrolledWindow = GetScrolledWindow(); if (scrolledWindow) { wxRect itemRect; if (GetBoundingRect(GetRootItem(), itemRect)) { // Actually, the real height seems to be 1 less than reported // (e.g. 16 instead of 16) int itemHeight = itemRect.GetHeight() - 1; int w, h; GetClientSize(&w, &h); wxRect rect(0, 0, 0, 0); CalcTreeSize(rect); double f = ((double) (rect.GetHeight()) / (double) itemHeight) ; int treeViewHeight = (int) ceil(f); int scrollPixelsPerLine = itemHeight; int scrollPos = - (itemRect.y / itemHeight); scrolledWindow->SetScrollbars(0, scrollPixelsPerLine, 0, treeViewHeight, 0, scrollPos); // Ensure that when a scrollbar becomes hidden or visible, // the contained window sizes are right. // Problem: this is called too early (?) wxSizeEvent event(scrolledWindow->GetSize(), scrolledWindow->GetId()); scrolledWindow->GetEventHandler()->ProcessEvent(event); } } } }
void wxRemotelyScrolledTreeCtrl::OnScroll(wxScrollWinEvent& event) { int orient = event.GetOrientation(); if (orient == wxHORIZONTAL) { event.Skip(); return; } ecScrolledWindow* scrollWin = GetScrolledWindow(); if (!scrollWin) return; int x, y; scrollWin->GetViewStart(& x, & y); ScrollToLine(-1, y); }
// In case we're using the generic tree control. int wxRemotelyScrolledTreeCtrl::GetScrollPos(int orient) const { ecScrolledWindow* scrolledWindow = GetScrolledWindow(); if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; if (orient == wxHORIZONTAL) return win->wxGenericTreeCtrl::GetScrollPos(orient); else { return scrolledWindow->GetScrollPos(orient); } } return 0; }
int CScrolledTreeCtrl::GetScrollPos(int orient) const { #if !defined(__WXMSW__) wxScrolledWindow *scrolledWindow = GetScrolledWindow(); if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl *win = (wxGenericTreeCtrl *) this; if (orient == wxHORIZONTAL) { return win->wxGenericTreeCtrl::GetScrollPos(orient); } else { return scrolledWindow->GetScrollPos(orient); } } #endif return 0; }
void CScrolledTreeCtrl::OnScroll(wxScrollWinEvent & event) { wxLogVerbose(wxT(" CScrolledTreeCtrl::OnScroll")); int orient = event.GetOrientation(); if (orient == wxHORIZONTAL) { event.Skip(); return; } wxScrolledWindow *scrollWin = GetScrolledWindow(); if (!scrollWin) return; int x, y; scrollWin->GetViewStart(&x, &y); wxLogVerbose(wxT(" CScrolledTreeCtrl -> ScrollToLine()")); ScrollToLine(-1, y); }
// In case we're using the generic tree control. void wxRemotelyScrolledTreeCtrl::PrepareDC(wxDC& dc) { if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { ecScrolledWindow* scrolledWindow = GetScrolledWindow(); wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; int startX, startY; GetViewStart(& startX, & startY); int xppu1, yppu1, xppu2, yppu2; win->wxGenericTreeCtrl::GetScrollPixelsPerUnit(& xppu1, & yppu1); scrolledWindow->GetScrollPixelsPerUnit(& xppu2, & yppu2); dc.SetDeviceOrigin( -startX * xppu1, -startY * yppu2 ); // dc.SetUserScale( win->GetScaleX(), win->GetScaleY() ); } }
void CScrolledTreeCtrl::PrepareDC(wxDC & dc) { #if !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxTreeCtrl))) { wxScrolledWindow *scrolledWindow = GetScrolledWindow(); wxGenericTreeCtrl *win = (wxGenericTreeCtrl *) this; int startX, startY; GetViewStart(&startX, &startY); int xppu1, yppu1, xppu2, yppu2; win->wxGenericTreeCtrl::GetScrollPixelsPerUnit(&xppu1, &yppu1); scrolledWindow->GetScrollPixelsPerUnit(&xppu2, &yppu2); dc.SetDeviceOrigin(-startX * xppu1, -startY * yppu2); } #endif }
// In case we're using the generic tree control. int wxRemotelyScrolledTreeCtrl::GetScrollPos(int orient) const { wxScrolledWindow* scrolledWindow = GetScrolledWindow(); #if USE_GENERIC_TREECTRL || !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; if (orient == wxHORIZONTAL) return win->wxGenericTreeCtrl::GetScrollPos(orient); else { return scrolledWindow->GetScrollPos(orient); } } #endif return 0; }
// Number of pixels per user unit (0 or -1 for no scrollbar) // Length of virtual canvas in user units // Length of page in user units void wxRemotelyScrolledTreeCtrl::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, int noUnitsX, int noUnitsY, int xPos, int yPos, bool noRefresh) { if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl* win = (wxGenericTreeCtrl*) this; // Pass TRUE for noRefresh so that it doesn't // draw part of the tree as if the scroll view is // at zero vertically. win->wxGenericTreeCtrl::SetScrollbars(pixelsPerUnitX, pixelsPerUnitY, noUnitsX, 0, xPos, 0, /* noRefresh */ TRUE); ecScrolledWindow* scrolledWindow = GetScrolledWindow(); if (scrolledWindow) { scrolledWindow->SetScrollbars(0, pixelsPerUnitY, 0, noUnitsY, 0, yPos, noRefresh); } } }
void CScrolledTreeCtrl::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, int noUnitsX, int noUnitsY, int xPos, int yPos, bool noRefresh) { #if !defined(__WXMSW__) if (IsKindOf(CLASSINFO(wxGenericTreeCtrl))) { wxGenericTreeCtrl *win = (wxGenericTreeCtrl *) this; // Pass TRUE for noRefresh so that it doesn't // draw part of the tree as if the scroll view is // at zero vertically. win->wxGenericTreeCtrl::SetScrollbars(pixelsPerUnitX, pixelsPerUnitY, noUnitsX, 0, xPos, 0, /* noRefresh */ true); wxScrolledWindow *scrolledWindow = GetScrolledWindow(); if (scrolledWindow) { wxLogVerbose(wxT(" - > CScrolledTreeCtrl::SetScrollbars")); scrolledWindow->SetScrollbars(0, pixelsPerUnitY, 0, noUnitsY, 0, yPos, noRefresh); } } #endif }
extern void UpdateWidgetData(WidgetData *data) { GtkWidget *widget; widget = GetWidgetByLongName(data->name); g_return_if_fail(widget != NULL); switch (data->type) { // gtk+panda case WIDGET_TYPE_NUMBER_ENTRY: GetNumberEntry(widget, (_NumberEntry*)data->attrs); break; case WIDGET_TYPE_PANDA_CLIST: GetPandaCList(widget, (_CList*)data->attrs); break; case WIDGET_TYPE_PANDA_ENTRY: case WIDGET_TYPE_ENTRY: GetEntry(widget, (_Entry*)data->attrs); break; case WIDGET_TYPE_PANDA_TEXT: GetText(widget, (_Text*)data->attrs); break; case WIDGET_TYPE_PANDA_TIMER: GetPandaTimer(widget, (_Timer*)data->attrs); break; case WIDGET_TYPE_PANDA_TABLE: GetPandaTable(widget, (_Table*)data->attrs); break; case WIDGET_TYPE_TEXT: GetText(widget, (_Text*)data->attrs); break; case WIDGET_TYPE_TOGGLE_BUTTON: case WIDGET_TYPE_CHECK_BUTTON: case WIDGET_TYPE_RADIO_BUTTON: GetButton(widget, (_Button*)data->attrs); break; case WIDGET_TYPE_CALENDAR: GetCalendar(widget, (_Calendar*)data->attrs); break; case WIDGET_TYPE_NOTEBOOK: GetNotebook(widget, (_Notebook*)data->attrs); break; case WIDGET_TYPE_PROGRESS_BAR: GetProgressBar(widget, (_ProgressBar*)data->attrs); break; case WIDGET_TYPE_SCROLLED_WINDOW: GetScrolledWindow(widget, (_ScrolledWindow*)data->attrs); break; case WIDGET_TYPE_FILE_CHOOSER_BUTTON: GetFileChooserButton(widget, (_FileChooserButton*)data->attrs); break; case WIDGET_TYPE_COLOR_BUTTON: GetColorButton(widget, (_ColorButton*)data->attrs); break; // gtk+ case WIDGET_TYPE_FILE_ENTRY: GetFileEntry(widget, (_FileEntry*)data->attrs); break; default: MessageLogPrintf("invalid widget [%s]", data->name); break; } }