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

📄 kmsgbox.cpp

📁 pixil 最新的嵌入linux 應用程序集,別的地方很難下載
💻 CPP
字号:
/* This file is part of the KDE libraries    Copyright (C) 1997 Alexander Sanda (alex@darkstar.ping.at)    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library 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    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.*//*                                                    cd source * $Id: kmsgbox.cpp,v 1.1 2003/09/08 19:42:09 jasonk Exp $ * * $Log: kmsgbox.cpp,v $ * Revision 1.1  2003/09/08 19:42:09  jasonk * Addition of packages directory and associated files. * * Revision 1.1.1.1  2003/08/07 21:18:32  jasonk * Initial import of PIXIL into new cvs repository. * * Revision 1.1.1.1  2003/06/23 22:04:23  jasonk * * * Revision 1.1.1.1  2000/07/07 16:11:00  jasonk * Initial import of ViewML * * Revision 1.14  1999/01/18 10:56:50  kulow * .moc files are back in kdelibs. Built fine here using automake 1.3 * * Revision 1.13  1999/01/15 09:31:09  kulow * it's official - kdelibs builds with srcdir != builddir. For this I * automocifized it, the generated rules are easier to maintain than * selfwritten rules. I have to fight with some bugs of this tool, but * generally it's better than keeping them updated by hand. * * Revision 1.12  1998/08/03 15:24:22  ssk * Wrote documentation. * Eliminated dead and commented-out code. * * Revision 1.11  1998/03/15 13:05:14  mario * Mario: fixed kb60 * * Revision 1.10  1998/02/24 15:54:35  kulow * replaced some hard coded paths with the kapp->kde_ methodes. * I'm not sure, if kde_datadir() is optimal for /share/apps ;) * * Revision 1.9  1998/01/03 19:47:28  kulow * changed the defaults for yesNo and co. It's no longer "Yes" and co, but * 0 to enable translation in case. * This is source and binary compatible. It's just, that it will behave * differently after recompiling (as far I understood the C++ language ;) * * Revision 1.8  1997/11/16 20:46:51  mark * MD: Reworked look of KMessageBox dialogs. *   Originally I was going to make KMessageBox a wrapper for *   QMessageBox. However, the classes are too different. I *   settled for a reworking the look of KMessageBox to make it *   conpatible with QMessageBox. *   Also fixed a possible bug in KButtonBox to do with the *   calculation of the size of Motif default buttons. This *   calculation depends on the undocumented behaviour of *   QButton::sizeHint so I suppose it could change from version to *   version of Qt. The fix is clearly marked should it need to *   be revoked. * * Revision 1.7  1997/10/21 20:45:02  kulow * removed all NULLs and replaced it with 0L or "". * There are some left in mediatool, but this is not C++ * * Revision 1.6  1997/10/16 11:15:26  torben * Kalle: Copyright headers * kdoctoolbar removed * * Revision 1.5  1997/09/10 12:07:48  kdecvs * Kalle: fixed large meomry leak (bug reported by Joerg Habenicht) * * Revision 1.4  1997/09/10 09:04:17  kdecvs * Coolo: Torben's wish is my command ;) * * Revision 1.3  1997/09/04 22:36:26  kdecvs * Coolo: put the icons in share/icons, I hope, this is right ;) * * Revision 1.2  1997/05/08 22:53:20  kalle * Kalle: * KPixmap gone for good * Eliminated static objects from KApplication and HTML-Widget * * Revision 1.1.1.1  1997/04/13 14:42:42  cvsuser * Source imported * * Revision 1.1.1.1  1997/04/09 00:28:09  cvsuser * Sources imported * * Revision 1.1  1997/03/15 22:41:21  kalle * Initial revision * * Revision 1.3.2.1  1997/01/10 19:48:32  alex * public release 0.1 * * Revision 1.3  1997/01/10 19:44:33  alex * *** empty log message *** * * Revision 1.2.4.1  1997/01/10 16:46:33  alex * rel 0.1a, not public * * Revision 1.2  1997/01/10 13:05:52  alex * *** empty log message *** * * Revision 1.1.1.1  1997/01/10 13:05:21  alex * imported * */#include <stdlib.h>#include <qpixmap.h>#include <qlayout.h>#include <kapp.h>#include <kbuttonbox.h>#include "kmsgbox.h"#include "kmsgbox.h"KMsgBox::KMsgBox( QWidget *parent, const char *caption,	const char *message, int type,	const char *b1text, const char *b2text,	const char *b3text, const char *b4text )	: QDialog ( parent, caption, TRUE, 0 ),	msg( 0L ), picture( 0L ),	b1( 0L ), b2( 0L ), b3( 0L ), b4( 0L ),	f1( 0L ){    int icon;    static int icons_initialized = 0;    static QPixmap icons[4];    if( !icons_initialized ) {    	QString ipath = kapp->kde_datadir() + "/kde/pics/";        QString ifile = ipath + "info.xpm";        icons[0].load( ifile );        icons[1].load( ipath + "exclamation.xpm" );        icons[2].load( ipath + "stopsign.xpm" );        icons[3].load( ipath + "question.xpm" );        icons_initialized = 1;    }    int icon_index = type & 0x0000000f;   // mask the lower 4 bits (icon style)    	if( icon_index <= 4 )        icon = icon_index >> 1;    else        icon = 3;		setCaption( caption );		int border = 8;	int vertSpacing = 0;		QBoxLayout *topLayout = new QVBoxLayout( this, border );		QBoxLayout *labels = new QHBoxLayout( border );	topLayout->addLayout( labels );		topLayout->addSpacing( vertSpacing );		// CREATE THE ICON AND MESSAGE LABELS		picture = new QLabel( this, "_pict" );    //picture->setAutoResize( TRUE );    picture->setPixmap( icons[icon] );	picture->adjustSize();	picture->setFixedSize( picture->size() );		msg = new QLabel( message, this, "_msg" );    //msg->setAlignment( AlignCenter );    msg->adjustSize();	msg->setFixedSize( msg->size().width()+10, msg->size().height() );		// Add the labels to their layout manager		labels->addWidget( picture );	labels->addWidget( msg );	topLayout->addStretch( 10 );		// CREATE BUTTONS		nr_buttons = 0;    b1 = b2 = b3 = b4 = 0;		KButtonBox *bbox = new KButtonBox( this );	bbox->addStretch( 10 );	    if( b1text ) {		b1 = bbox->addButton( b1text );		connect( b1, SIGNAL( clicked() ), this, SLOT( b1Pressed() ) );        nr_buttons++;    }    if( b2text ) {	        b2 = bbox->addButton( b2text );		connect( b2, SIGNAL( clicked() ), this, SLOT( b2Pressed() ) );        nr_buttons++;    }    if( b3text ) {		b3 = bbox->addButton( b3text );		connect( b3, SIGNAL( clicked() ), this, SLOT( b3Pressed() ) );        nr_buttons++;    }    if( b4text ) {		b4 = bbox->addButton( b4text );		connect( b4, SIGNAL( clicked() ), this, SLOT( b4Pressed() ) );        nr_buttons++;    }		bbox->addStretch( 10 );		//	// Check, if we have a default button	// If not, set the left button to default	//	if( !(type & 0x000000f0) )		type |= DB_FIRST;	if( b1 )		b1->setDefault( type & DB_FIRST );	if( b2 )		b2->setDefault( type & DB_SECOND );	if( b3 )		b3->setDefault( type & DB_THIRD );	if( b4 )		b4->setDefault( type & DB_FOURTH );	bbox->layout();	topLayout->addWidget( bbox );	    topLayout->freeze();}KMsgBox::~KMsgBox() {	delete f1;	delete picture;	delete msg;		if( b1 )		delete b1;	if( b2 )		delete b2;	if( b3 )		delete b3;	if( b4 )		delete b4;}void KMsgBox::calcOptimalSize(){    int text_width = picture->width() + 10 + msg->width() + 30;  // label width + margins    int button_width = (nr_buttons * 80) + 20 + (nr_buttons - 1) * B_SPACING;    w = button_width > text_width ? button_width : text_width;        h1 = msg->height() > picture->height() ? msg->height() : picture->height();    h = h1 + 25 + 40;    text_offset = 15 + picture->width() + 10;}void KMsgBox::b1Pressed() { done(1); }void KMsgBox::b2Pressed() { done(2); }void KMsgBox::b3Pressed() { done(3); }void KMsgBox::b4Pressed() { done(4); }/* * now, the common functions. They may be used for easy creation and usage of * some general message boxes */int KMsgBox::message(QWidget *parent, const char *caption, 	const char *message, int type, const char *btext){    if (!btext)	btext = klocale->translate("OK");    KMsgBox *mb = new KMsgBox(parent, caption, message, type, btext);    int retcode = mb->exec();    delete mb;    return retcode;}int KMsgBox::yesNo(QWidget *parent, const char *caption, 	const char *message, int type, 	const char *yes, const char *no ){    if (!no)	no = klocale->translate("No");    if (!yes)	yes = klocale->translate("Yes");    KMsgBox *mb = new KMsgBox(parent, caption, message, type, yes, no);    int retcode = mb->exec();    delete mb;    return retcode;}int KMsgBox::yesNoCancel(QWidget *parent, const char *caption, 	const char *message, int type, const char *yes, 	const char *no, const char *cancel){    if (!no)	no = klocale->translate("No");    if (!yes)	yes = klocale->translate("Yes");    if (!cancel)	cancel = klocale->translate("Cancel");        KMsgBox *mb = new KMsgBox(parent, caption, message, type,     	yes, no, cancel);    int retcode = mb->exec();    delete mb;    return retcode;}#include "kmsgbox.moc"

⌨️ 快捷键说明

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