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

📄 cworkspace.cpp

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CPP
字号:
/***************************************************************************  CWorkspace.cpp  The Workspace class  (c) 2000-2003 Beno顃 Minisini <gambas@users.sourceforge.net>  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 1, or (at your option)  any later version.  This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.  You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.***************************************************************************/#define __CWORKSPACE_CPP#include "main.h"#include <qevent.h>#include <qapplication.h>#include "CWorkspace.h"DECLARE_EVENT(EVENT_Activate);DECLARE_EVENT(EVENT_Deactivate);BEGIN_METHOD_VOID(CWORKSPACE_init)  GB_CLASS CLASS_Window = GB.FindClass("Window");  EVENT_Activate = GB.GetEvent(CLASS_Window, "Activate");  EVENT_Deactivate = GB.GetEvent(CLASS_Window, "Deactivate");END_METHODBEGIN_METHOD(CWORKSPACE_new, GB_OBJECT parent)  QWorkspace *wid = new QWorkspace(QT.GetContainer(VARG(parent)));  QT.InitWidget(wid, (void *)_object);  THIS->widget.container = wid;  THIS->active = 0;  QObject::connect(wid, SIGNAL(windowActivated(QWidget *)), &CWorkspace::manager, SLOT(activated(QWidget *)));  wid->setScrollBarsEnabled(true);  wid->show();END_METHODBEGIN_PROPERTY(CWORKSPACE_active_window)  QWidget *wid = WIDGET->activeWindow();  if (wid)    GB.ReturnObject(QT.GetObject(wid));  else    GB.ReturnNull();END_PROPERTYBEGIN_METHOD(CWORKSPACE_arrange, GB_INTEGER mode)  switch(VARG(mode))  {    case 0: WIDGET->cascade(); break;    case 1: WIDGET->tile(); break;    default: break;  }END_METHODBEGIN_METHOD_VOID(CWORKSPACE_next)  QWidgetList list = WIDGET->windowList();  uint *index;  void *win;  index = (uint *)GB.GetEnum();  for(;;)  {    if (*index >= list.count())    {      GB.StopEnum();      return;    }    win = QT.GetObject(list.at(*index));    (*index)++;    if (win)    {      GB.ReturnObject(win);      return;    }  }END_METHODBEGIN_PROPERTY(CWORKSPACE_count)  QWidgetList list = WIDGET->windowList();  GB.ReturnInteger(list.count());END_PROPERTYGB_DESC CWorkspaceChildrenDesc[] ={  GB_DECLARE(".WorkspaceChildren", 0), GB_VIRTUAL_CLASS(),  GB_METHOD("_next", "Window", CWORKSPACE_next, NULL),  GB_PROPERTY_READ("Count", "i", CWORKSPACE_count),  GB_END_DECLARE};GB_DESC CWorkspaceDesc[] ={  GB_DECLARE("Workspace", sizeof(CWORKSPACE)), GB_INHERITS("Control"),  GB_CONSTANT("Cascade", "i", 0),  GB_CONSTANT("Tile", "i", 1),  GB_STATIC_METHOD("_init", NULL, CWORKSPACE_init, NULL),  GB_METHOD("_new", NULL, CWORKSPACE_new, "(Parent)Container;"),  GB_METHOD("Arrange", NULL, CWORKSPACE_arrange, "(Arrangement)i<Workspace>"),  GB_PROPERTY_READ("ActiveWindow", "Control", CWORKSPACE_active_window),  GB_PROPERTY_SELF("Children", ".WorkspaceChildren"),  GB_CONSTANT("_Properties", "s", CWORKSPACE_PROPERTIES),  GB_END_DECLARE};/***************************************************************************  CWorkspace***************************************************************************/CWorkspace CWorkspace::manager;void CWorkspace::activated(QWidget *w){  void *_object = QT.GetObject((QWidget *)sender());  void *win;  //qDebug("CWorkspace::activated(%p)", w);    if (THIS->active)  {    //QWidget *focus = qApp->focusWidget();    //qDebug("Deactivate: %p -> %p (%p)", THIS->active, focus, focus ? focus->topLevelWidget() : 0);    //dict.replace((void *)THIS->active, focus);        win = QT.GetObject(THIS->active);    if (win)      GB.Raise(win, EVENT_Deactivate, 0);    QObject::disconnect(THIS->active, SIGNAL(destroyed()), &CWorkspace::manager, SLOT(destroyed()));  }  THIS->active = w;  if (w)  {    //qDebug("Activate: %p -> %p", w, dict.find((void *)w));    //if (dict.find((void *)w))    //{    //  dict[(void *)w]->setFocus();    //  dict.remove((void *)w);    //}        //qDebug("Activate: %p -> %p", w, w->focusWidget());        QObject::connect(w, SIGNAL(destroyed()), &CWorkspace::manager, SLOT(destroyed()));    win = QT.GetObject(w);    if (win)      GB.Raise(win, EVENT_Activate, 0);  }}void CWorkspace::destroyed(){  QWidget *widget = (QWidget *)sender();  void *_object = QT.GetObject(widget->parentWidget());  if (THIS && THIS->active == widget)    THIS->active = 0;}

⌨️ 快捷键说明

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