pjs/cmd/qtfe/SaveAsDialog.cpp

96 строки
2.7 KiB
C++

/* $Id: SaveAsDialog.cpp,v 1.1 1998-09-25 18:01:30 ramiro%netscape.com Exp $
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Kalle
* Dalheimer. Further developed by Warwick Allison, Kalle Dalheimer,
* Eirik Eng, Matthias Ettrich, Arnt Gulbrandsen, Haavard Nord and
* Paul Olav Tvete. Copyright (C) 1998 Warwick Allison, Kalle
* Dalheimer, Eirik Eng, Matthias Ettrich, Arnt Gulbrandsen, Haavard
* Nord and Paul Olav Tvete. All Rights Reserved.
*/
#include "SaveAsDialog.h"
#include "QtContext.h"
#include <qlabel.h>
#include <qpushbt.h>
#include <qradiobt.h>
#include <qtbuttonrow.h>
#include <qbttngrp.h>
SaveAsDialog::SaveAsDialog( QtContext* cx, QWidget* parent,
const char* name ) :
QFileDialog( parent, name, true ),
context( cx )
{
QLabel* label = new QLabel( tr( "Save As" ), this );
QButtonGroup* bg = new QButtonGroup( this );
bg->hide();
QtButtonRow* br = new QtButtonRow( this );
textRB = new QRadioButton( tr( "Text" ), br );
bg->insert( textRB );
sourceRB = new QRadioButton( tr( "Source" ), br );
bg->insert( sourceRB );
postscriptRB = new QRadioButton( tr( "PostScript" ), br );
bg->insert( postscriptRB );
textRB->setChecked( false );
sourceRB->setChecked( true );
postscriptRB->setChecked( false );
// connect
connect( bg, SIGNAL(clicked(int)), SLOT(radioClicked(int)) );
addWidgets( label, br, 0 );
setCaption( tr( "Save As" ) );
}
SaveAsDialog::SaveAsTypes SaveAsDialog::type() const
{
if( textRB->isChecked() )
return Text;
else if( sourceRB->isChecked() )
return Source;
else
return PostScript;
}
void SaveAsDialog::radioClicked(int id)
{
int index;
static const char* extensions[] = {
".txt",
".html",
".ps"
};
QString path;
QString selstr = selectedFile();
if (!selstr.isNull() && !selstr.isEmpty())
{
index = selstr.findRev('/');
if (index!=-1)
{
QString path = selstr.left(index);
if (strcmp(path, dirPath())!=0)
setDir(path);
selstr.remove(0, index+1);
}
index = selstr.findRev('.');
if (index!=-1)
selstr.replace(index, selstr.length()-index, extensions[id]);
setSelection(selstr);
}
}