📄 cdialog.cpp
字号:
/*************************************************************************** CDialog.cpp The KDE Dialog 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 __CDIALOG_CPP#include <kcolordialog.h>#include <kfontdialog.h>#include <kfiledialog.h>#include "gambas.h"#include "main.h"#include "CDialog.h"static QString dialog_title;static unsigned long dialog_color = 0;static QFont dialog_font;static GB_ARRAY dialog_filter = NULL;static QString dialog_path;static QString get_filter(void){ QString s; QString f, ext, extp; int i, p; if (dialog_filter) { for (i = 0; i < GB.Array.Count(dialog_filter); i++) { if (i) s += "\n"; f = TO_QSTRING(*((char **)GB.Array.Get(dialog_filter, i))); f = f.stripWhiteSpace(); p = f.findRev(" ("); if (p >= 0) { extp = ext = f.mid(p + 2, f.length() - p - 3); extp = extp.replace(";", " "); f = extp + "|" + f.left(p) + " (" + ext + ")"; } //qDebug("filter = %s", f.latin1()); s += f; } } //qDebug("%s", s.latin1()); return s;}BEGIN_METHOD_VOID(CDIALOG_init)END_METHODBEGIN_METHOD_VOID(CDIALOG_exit) GB.StoreObject(NULL, (void **)&dialog_filter);END_METHODBEGIN_PROPERTY(CDIALOG_title) if (READ_PROPERTY) GB.ReturnNewZeroString(TO_UTF8(dialog_title)); else dialog_title = QSTRING_PROP();END_PROPERTYBEGIN_PROPERTY(CDIALOG_filter) if (READ_PROPERTY) GB.ReturnObject(dialog_filter); else GB.StoreObject(PROP(GB_OBJECT), (void **)&dialog_filter);END_PROPERTYBEGIN_PROPERTY(CDIALOG_path) if (READ_PROPERTY) GB.ReturnNewZeroString(TO_UTF8(dialog_path)); else dialog_path = QSTRING_PROP();END_PROPERTYBEGIN_PROPERTY(CDIALOG_font) if (READ_PROPERTY) GB.ReturnObject(QT.CreateFont(dialog_font)); else { if (GB.CheckObject(VPROP(GB_OBJECT))) return; dialog_font = *(((QT_FONT *)VPROP(GB_OBJECT))->font); }END_PROPERTYBEGIN_PROPERTY(CDIALOG_color) if (READ_PROPERTY) GB.ReturnInteger((long)dialog_color); else dialog_color = VPROP(GB_INTEGER);END_PROPERTYBEGIN_METHOD_VOID(CDIALOG_open_file) QString file; file = KFileDialog::getOpenFileName(dialog_path, get_filter(), qApp->activeWindow(), dialog_title); if (file.isNull()) GB.ReturnBoolean(true); else { dialog_path = file; GB.ReturnBoolean(false); } dialog_title = QString::null;END_METHODBEGIN_METHOD_VOID(CDIALOG_save_file) QString file; file = KFileDialog::getSaveFileName(dialog_path, get_filter(), qApp->activeWindow(), dialog_title); if (file.isNull()) GB.ReturnBoolean(true); else { dialog_path = file; GB.ReturnBoolean(false); } dialog_title = QString::null;END_METHODBEGIN_METHOD_VOID(CDIALOG_get_directory) QString file; file = KFileDialog::getExistingDirectory(dialog_path, qApp->activeWindow(), dialog_title); if (file.isNull()) GB.ReturnBoolean(true); else { dialog_path = file; GB.ReturnBoolean(false); } dialog_title = QString::null;END_METHODBEGIN_METHOD_VOID(CDIALOG_get_color) QColor color(dialog_color); int result; result = KColorDialog::getColor(color, qApp->activeWindow()); if (result != KColorDialog::Accepted) GB.ReturnBoolean(true); else { dialog_color = color.rgb() & 0xFFFFFF; GB.ReturnBoolean(false); }END_METHODBEGIN_METHOD_VOID(CDIALOG_select_font) int result = KFontDialog::getFont(dialog_font, qApp->activeWindow()); if (result != KFontDialog::Accepted) GB.ReturnBoolean(true); else GB.ReturnBoolean(false);END_METHODGB_DESC CDialogDesc[] ={ GB_DECLARE("Dialog", 0), GB_VIRTUAL_CLASS(), GB_STATIC_METHOD("_init", NULL, CDIALOG_init, NULL), GB_STATIC_METHOD("_exit", NULL, CDIALOG_exit, NULL), GB_STATIC_METHOD("OpenFile", "b", CDIALOG_open_file, NULL), GB_STATIC_METHOD("SaveFile", "b", CDIALOG_save_file, NULL), GB_STATIC_METHOD("SelectDirectory", "b", CDIALOG_get_directory, NULL), GB_STATIC_METHOD("SelectColor", "b", CDIALOG_get_color, NULL), //GB_STATIC_METHOD("SelectFont", "b", CDIALOG_select_font, NULL), GB_STATIC_PROPERTY("Title", "s", CDIALOG_title), GB_STATIC_PROPERTY("Path", "s", CDIALOG_path), GB_STATIC_PROPERTY("Filter", "String[]", CDIALOG_filter), GB_STATIC_PROPERTY("Color", "i", CDIALOG_color), //GB_STATIC_PROPERTY("Font", "Font", CDIALOG_font), GB_END_DECLARE};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -