⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cwidget.cpp

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  if (current)    GB.ReturnObject(CWidget::get(current));  else    GB.ReturnNull();END_PROPERTYBEGIN_METHOD(CWIDGET_refresh, GB_INTEGER x; GB_INTEGER y; GB_INTEGER w; GB_INTEGER h)  int x, y, w, h;  if (!MISSING(x) && !MISSING(y))  {    x = VARG(x);    y = VARG(y);    w = VARGOPT(w, QWIDGET(_object)->width());    h = VARGOPT(h, QWIDGET(_object)->height());    QWIDGET(_object)->repaint(x, y, w, h);  }  else    QWIDGET(_object)->repaint();END_METHODBEGIN_METHOD_VOID(CWIDGET_set_focus)  QWidget *toplevel;  CWINDOW *win;  toplevel = WIDGET->topLevelWidget();  if (toplevel->isVisible())    WIDGET->setFocus();  else if (toplevel != WIDGET)  {    win = (CWINDOW *)CWidget::get(toplevel);    GB.Unref((void **)&win->focus);    win->focus = THIS;    GB.Ref(THIS);  }END_METHODBEGIN_PROPERTY(CWIDGET_tag)  if (READ_PROPERTY)    GB.ReturnPtr(GB_T_VARIANT, &OBJECT(CWIDGET)->tag);  else  {    GB.StoreVariant(PROP(GB_VARIANT), (void *)&(OBJECT(CWIDGET)->tag));    //printf("Set Tag %p : %i\n", _object, OBJECT(CWIDGET)->tag.type);  }END_METHODBEGIN_PROPERTY(CWIDGET_mouse)  QWidget *wid = QWIDGET(_object);  int shape;  if (READ_PROPERTY)  {    if (wid->ownCursor())    {      shape = wid->cursor().shape();      if (shape == Qt::BitmapCursor)        GB.ReturnInteger(CMOUSE_CUSTOM);      else        GB.ReturnInteger(shape);    }    else      GB.ReturnInteger(CMOUSE_DEFAULT);  }  else    set_mouse(wid, VPROP(GB_INTEGER), THIS->cursor);END_METHODBEGIN_PROPERTY(CWIDGET_cursor)  if (READ_PROPERTY)    GB.ReturnObject(THIS->cursor);  else  {    GB.StoreObject(PROP(GB_OBJECT), &THIS->cursor);    set_mouse(WIDGET, CMOUSE_CUSTOM, THIS->cursor);  }END_PROPERTY#if 0/*static QColor get_background(CWIDGET *_object, QWidget *wid){  QPalette pal(wid->palette());  QColorGroup::ColorRole role = (QColorGroup::ColorRole)OBJECT(CWIDGET)->background;  return pal.color(QPalette::Active, role);}static void test_color(CWIDGET *_object, QWidget *wid){  QColor b, f, bp, fp;  if (!wid->ownPalette() || !wid->parentWidget())    return;  f = wid->paletteForegroundColor();  fp = wid->parentWidget()->paletteForegroundColor();  if (f != fp)    return;  b = get_background(_object, wid);  bp = get_background(CWidget::get(wid->parentWidget()), wid->parentWidget());  if (b != bp)    return;  wid->unsetPalette();}*/BEGIN_PROPERTY(CWIDGET_background)  QWidget *wid = QWIDGET(_object);  QPalette pal(wid->palette());  QColorGroup::ColorRole role = (QColorGroup::ColorRole)OBJECT(CWIDGET)->background;  //qDebug("bm = %d (%d %d)", wid->backgroundMode(), QWidget::PaletteButton, QWidget::PaletteBase);  if (READ_PROPERTY)    GB.ReturnInteger(pal.color(QPalette::Active, role).rgb() & 0xFFFFFF);  else  {    pal.setColor(role, QColor((QRgb)VPROP(GB_INTEGER)));    wid->setPalette(pal);    //test_color((CWIDGET *)_object, wid);  }#if 0  if (READ_PROPERTY)    GB.ReturnInteger((long)(WIDGET->paletteBackgroundColor().rgb() & 0xFFFFFF));  else    WIDGET->setPaletteBackgroundColor(QColor((QRgb)PROPERTY(long)));#endifEND_PROPERTYBEGIN_PROPERTY(CWIDGET_foreground)  QWidget *wid;  if (GB.Is(_object, GB.FindClass("Container")))    wid = ((CCONTAINER *)_object)->container;  else    wid = QWIDGET(_object);  if (READ_PROPERTY)  {    GB.ReturnInteger((long)(wid->paletteForegroundColor().rgb() & 0xFFFFFF));    return;  }  else  {    QPalette pal(QWIDGET(_object)->palette());    pal.setColor(QColorGroup::Foreground, QColor((QRgb)VPROP(GB_INTEGER)));    pal.setColor(QColorGroup::Text, QColor((QRgb)VPROP(GB_INTEGER)));    wid->setPalette(pal);    //test_color((CWIDGET *)_object, wid);  }END_PROPERTY#endifBEGIN_PROPERTY(CWIDGET_background)  if (READ_PROPERTY)    GB.ReturnInteger(WIDGET->paletteBackgroundColor().rgb() & 0xFFFFFF);  else    WIDGET->setPaletteBackgroundColor(QColor((QRgb)VPROP(GB_INTEGER)));END_PROPERTYBEGIN_PROPERTY(CWIDGET_foreground)  if (READ_PROPERTY)    GB.ReturnInteger(WIDGET->paletteForegroundColor().rgb() & 0xFFFFFF);  else    WIDGET->setPaletteForegroundColor(QColor((QRgb)VPROP(GB_INTEGER)));END_PROPERTYBEGIN_PROPERTY(CWIDGET_parent)  QWidget *parent = QWIDGET(_object)->parentWidget();  if (!parent)    GB.ReturnObject(NULL);  else    GB.ReturnObject(CWidget::get(parent));END_PROPERTYBEGIN_PROPERTY(CWIDGET_window)  QWidget *wid = WIDGET->topLevelWidget();  if (!wid)    GB.ReturnObject(NULL);  else    GB.ReturnObject(CWidget::get(wid));END_PROPERTYBEGIN_PROPERTY(CWIDGET_id)  GB.ReturnInteger((long)WIDGET->winId());END_PROPERTYBEGIN_PROPERTY(CWIDGET_tooltip)  char *tooltip;  QWidget *w;  if (READ_PROPERTY)    GB.ReturnString(THIS->tooltip);  else  {    GB.StoreString(PROP(GB_STRING), &(THIS->tooltip));    w = WIDGET;		if (w->inherits("QScrollView"))			w = ((QScrollView *)w)->viewport();    tooltip = THIS->tooltip;    if (tooltip)      QToolTip::add(w, TO_QSTRING(tooltip));    else      QToolTip::remove(w);  }END_PROPERTYBEGIN_METHOD_VOID(CWIDGET_grab)  GB.ReturnObject(CPICTURE_grab(QWIDGET(_object)));END_METHODBEGIN_METHOD(CWIDGET_drag, GB_VARIANT data; GB_STRING format)  CDRAG_drag(OBJECT(CWIDGET), &VARG(data), MISSING(format) ? NULL : ARG(format));END_METHODBEGIN_PROPERTY(CWIDGET_drop)  if (READ_PROPERTY)    GB.ReturnBoolean(WIDGET->acceptDrops());  else  {    WIDGET->setAcceptDrops(VPROP(GB_BOOLEAN));    if (WIDGET->inherits("QScrollView"))    	((QScrollView *)WIDGET)->viewport()->setAcceptDrops(VPROP(GB_BOOLEAN));	}END_PROPERTYBEGIN_PROPERTY(CWIDGET_border_full)  QFrame *wid = (QFrame *)QWIDGET(_object);  int border, lw;  if (READ_PROPERTY)  {    if (wid->frameStyle() == (QFrame::Box + QFrame::Plain))      border = BORDER_PLAIN;    else if (wid->frameStyle() == (QFrame::StyledPanel + QFrame::Sunken))      border = BORDER_SUNKEN;    else if (wid->frameStyle() == (QFrame::StyledPanel + QFrame::Raised))      border = BORDER_RAISED;    else if (wid->frameStyle() == (QFrame::Box + QFrame::Sunken))      border = BORDER_ETCHED;    else      border = BORDER_NONE;    GB.ReturnInteger(border);  }  else  {    lw = 1;    switch (VPROP(GB_INTEGER))    {      case BORDER_PLAIN: border = QFrame::Box + QFrame::Plain; break;      case BORDER_SUNKEN: border = QFrame::StyledPanel + QFrame::Sunken; lw = 2; break;      case BORDER_RAISED: border = QFrame::StyledPanel + QFrame::Raised; lw = 2; break;      case BORDER_ETCHED: border = QFrame::Box + QFrame::Sunken; break;      default: border = QFrame::NoFrame; break;    }    wid->setFrameStyle(border);    wid->setLineWidth(lw);    wid->repaint();  }END_PROPERTYBEGIN_PROPERTY(CWIDGET_border_simple)  QFrame *wid = (QFrame *)QWIDGET(_object);  if (READ_PROPERTY)  {    GB.ReturnBoolean(wid->frameStyle() != QFrame::NoFrame);  }  else  {    //qDebug("frameStyle = %d", wid->frameStyle());    if (VPROP(GB_BOOLEAN))    {      wid->setFrameStyle(QFrame::LineEditPanel + QFrame::Sunken);      //wid->setFrameStyle(QFrame::LineEditPanel);      //wid->setLineWidth(2);    }    else    {      wid->setFrameStyle(QFrame::NoFrame);    }    //qDebug("--> %d", wid->frameStyle());    wid->repaint();  }END_PROPERTYBEGIN_PROPERTY(CWIDGET_scrollbar)  QScrollView *wid = (QScrollView *)QWIDGET(_object);  long scroll;  if (READ_PROPERTY)  {    scroll = 0;    if (wid->hScrollBarMode() == QScrollView::Auto)      scroll += 1;    if (wid->vScrollBarMode() == QScrollView::Auto)      scroll += 2;    GB.ReturnInteger(scroll);  }  else  {    scroll = VPROP(GB_INTEGER) & 3;    wid->setHScrollBarMode( (scroll & 1) ? QScrollView::Auto : QScrollView::AlwaysOff);    wid->setVScrollBarMode( (scroll & 2) ? QScrollView::Auto : QScrollView::AlwaysOff);  }END_PROPERTYGB_DESC CWidgetDesc[] ={  GB_DECLARE("Control", sizeof(CWIDGET)),  GB_HOOK_NEW(NULL),  GB_HOOK_CHECK(CWIDGET_check),  GB_METHOD("_free", NULL, CWIDGET_delete, NULL),  GB_METHOD("Move", NULL, CWIDGET_move, "(X)i(Y)i[(Width)i(Height)i]"),  GB_METHOD("Resize", NULL, CWIDGET_resize, "(Width)i(Height)i"),  GB_METHOD("Delete", NULL, CWIDGET_delete, NULL),  GB_METHOD("Show", NULL, CWIDGET_show, NULL),  GB_METHOD("Hide", NULL, CWIDGET_hide, NULL),  GB_METHOD("Raise", NULL, CWIDGET_raise, NULL),  GB_METHOD("Lower", NULL, CWIDGET_lower, NULL),  //GB_METHOD("MoveUnder", NULL, CWIDGET_move_under, "(Control)Control;"),  GB_PROPERTY_READ("Next", "Control", CWIDGET_next),  GB_PROPERTY_READ("Previous", "Control", CWIDGET_previous),  GB_METHOD("SetFocus", NULL, CWIDGET_set_focus, NULL),  GB_METHOD("Refresh", NULL, CWIDGET_refresh, "[(X)i(Y)i(Width)i(Height)i]"),  GB_METHOD("Grab", "Picture", CWIDGET_grab, NULL),  GB_METHOD("Drag", NULL, CWIDGET_drag, "(Data)v[(Format)s]"),  GB_PROPERTY("X", "i", CWIDGET_x),  GB_PROPERTY("Y", "i", CWIDGET_y),  GB_PROPERTY_READ("ScreenX", "i", CWIDGET_screen_x),  GB_PROPERTY_READ("ScreenY", "i", CWIDGET_screen_y),  GB_PROPERTY("W", "i", CWIDGET_w),  GB_PROPERTY("H", "i", CWIDGET_h),  GB_PROPERTY("Left", "i", CWIDGET_x),  GB_PROPERTY("Top", "i", CWIDGET_y),  GB_PROPERTY("Width", "i", CWIDGET_w),  GB_PROPERTY("Height", "i", CWIDGET_h),  //GB_PROPERTY("Name", "s", CWIDGET_name),  GB_PROPERTY("Visible", "b", CWIDGET_visible),  GB_PROPERTY("Enabled", "b", CWIDGET_enabled),  GB_PROPERTY("Expand", "b", CWIDGET_expand),  GB_PROPERTY("Font", "Font", CWIDGET_font),  GB_PROPERTY("Background", "i", CWIDGET_background),  GB_PROPERTY("BackColor", "i", CWIDGET_background),  GB_PROPERTY("Foreground", "i", CWIDGET_foreground),  GB_PROPERTY("ForeColor", "i", CWIDGET_foreground),  GB_PROPERTY("Design", "b", CWIDGET_design),  GB_PROPERTY("Tag", "v", CWIDGET_tag),  GB_PROPERTY("Mouse", "i" MOUSE_CONSTANTS, CWIDGET_mouse),  GB_PROPERTY("Cursor", "Cursor", CWIDGET_cursor),  GB_PROPERTY("ToolTip", "s", CWIDGET_tooltip),  GB_PROPERTY("Drop", "b", CWIDGET_drop),  GB_PROPERTY_READ("Parent", "Container", CWIDGET_parent),  GB_PROPERTY_READ("Window", "Window", CWIDGET_window),  GB_PROPERTY_READ("Id", "i", CWIDGET_id),  GB_PROPERTY_READ("Handle", "i", CWIDGET_id),  //GB_EVENT("Delete", NULL, NULL, &EVENT_Destroy),  GB_EVENT("Enter", NULL, NULL, &EVENT_Enter),  GB_EVENT("GotFocus", NULL, NULL, &EVENT_GotFocus),  GB_EVENT("LostFocus", NULL, NULL, &EVENT_LostFocus),  GB_EVENT("KeyPress", NULL, NULL, &EVENT_KeyPress),  GB_EVENT("KeyRelease", NULL, NULL, &EVENT_KeyRelease),  GB_EVENT("Leave", NULL, NULL, &EVENT_Leave),  GB_EVENT("MouseDown", NULL, NULL, &EVENT_MouseDown),  GB_EVENT("MouseMove", NULL, NULL, &EVENT_MouseMove),  GB_EVENT("MouseUp", NULL, NULL, &EVENT_MouseUp),  GB_EVENT("MouseWheel", NULL, NULL, &EVENT_MouseWheel),  GB_EVENT("DblClick", NULL, NULL, &EVENT_DblClick),  GB_EVENT("Menu", NULL, NULL, &EVENT_Menu),  GB_EVENT("Drag", NULL, NULL, &EVENT_Drag),  GB_EVENT("DragMove", NULL, NULL, &EVENT_DragMove),  GB_EVENT("Drop", NULL, NULL, &EVENT_Drop),  //GB_EVENT("Move", NULL, NULL, &EVENT_Move),  //GB_EVENT("Resize", NULL, NULL, &EVENT_Resize),  //GB_EVENT("Show", "b", NULL, &EVENT_Show),  //GB_EVENT("Hide", "b", NULL, &EVENT_Hide),  GB_CONSTANT("_DefaultEvent", "s", "MouseDown"),  GB_CONSTANT("_Properties", "s", CWIDGET_PROPERTIES),  GB_END_DECLARE};/* Classe CWidget */CWidget CWidget::manager;QPtrDict<CWIDGET> CWidget::dict;bool CWidget::real;CWIDGET *CWidget::enter = NULL;//QPtrDict<char> CWidget::propDict;bool haveChildren;void CWidget::installFilter(QObject *o){  QObjectList *children;  QObject *child;  children = (QObjectList *)(o->children());  o->installEventFilter(&manager);  if (!children)    return;  child = children->first();  while (child)  {    if (child->isWidgetType())    {      haveChildren = true;      //child->installEventFilter(&manager);      CWidget::installFilter(child);    }    child = children->next();  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -