From: Jonas B. <jb...@us...> - 2006-08-27 15:16:54
|
Update of /cvsroot/krusader/krusader_kde3/krusader/Konfigurator In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv8353/krusader/Konfigurator Modified Files: kggeneral.cpp kguseractions.cpp kguseractions.h Log Message: ADDED: UserAction: Outputcollection now supports fonts with fixed or variable width CHANGED: UserActions are now managed with ActionMan. In Konfigurator you can change settings _about_ useractions. Index: kguseractions.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Konfigurator/kguseractions.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** kguseractions.h 19 Mar 2006 22:05:26 -0000 1.4 --- kguseractions.h 27 Aug 2006 15:16:47 -0000 1.5 *************** *** 44,73 **** public: KgUserActions( bool first, QWidget* parent=0, const char* name=0 ); - ~KgUserActions(); - - bool isChanged(); - bool apply(); - void setDefaults(); - void loadInitialValues(); public slots: ! void slotChangeAction(); //loads a new action into the detail-view ! void slotUpdateAction(); //updates the action to the xml-file ! void slotNewAction(); ! void slotRemoveAction(); ! void slotReset(); //restets the action to the last state where the user had presst "Ok" ! void slotImport(); ! void slotExport(); ! void slotToClip(); ! void slotFromClip(); ! ! protected: ! bool _needApply; ! UserActionListView *actionTree; ! ActionProperty *actionProperties; ! KPushButton *okButton, *resetButton; ! KPushButton *newButton, *removeButton; ! KPushButton *importButton, *exportButton; ! KPushButton *toClipButton, *fromClipButton; }; --- 44,50 ---- public: KgUserActions( bool first, QWidget* parent=0, const char* name=0 ); public slots: ! void startActionMan(); }; Index: kggeneral.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Konfigurator/kggeneral.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** kggeneral.cpp 15 Feb 2006 19:26:03 -0000 1.18 --- kggeneral.cpp 27 Aug 2006 15:16:46 -0000 1.19 *************** *** 135,149 **** generalGrid->addMultiCellWidget( label4, 14, 14, 0, 1 ); - QFrame *lineUserActions = createLine( generalGrp, "lineUserActions" ); - generalGrid->addMultiCellWidget( lineUserActions, 15, 15, 0, 1 ); - - // terminal for the UserActions - QLabel *labelTerminalUserActions = new QLabel( i18n( "Terminal for UserActions:" ), generalGrp, "TerminalUserActionLabel" ); - generalGrid->addWidget( labelTerminalUserActions, 16, 0 ); - KonfiguratorURLRequester *urlReqUserActions = createURLRequester( "General", "Terminal UserActions", _TerminalUserActions, - generalGrp, false ); - generalGrid->addWidget( urlReqUserActions, 16, 1 ); - - kgGeneralLayout->addWidget( generalGrp, 0 ,0 ); --- 135,138 ---- Index: kguseractions.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Konfigurator/kguseractions.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** kguseractions.cpp 16 Aug 2006 18:47:30 -0000 1.16 --- kguseractions.cpp 27 Aug 2006 15:16:47 -0000 1.17 *************** *** 32,56 **** #include "../defaults.h" #include "../krusader.h" #include <klocale.h> #include <kpushbutton.h> #include <kdebug.h> - #include <klistview.h> - #include <kfiledialog.h> - #include <kmessagebox.h> - #include <klineedit.h> - #include <kclipboard.h> - - #include <qsplitter.h> - - #include "../UserMenu/usermenu.h" - #include "../ActionMan/actionproperty.h" - #include "../ActionMan/useractionlistview.h" - #include "../UserAction/useraction.h" - #include "../UserAction/kraction.h" - - //This is the filter in the KFileDialog of Import/Export: - static const char* FILE_FILTER = I18N_NOOP("*.xml|xml-files\n*|all files"); - //This is the name of the config-entry: --- 32,40 ---- #include "../defaults.h" #include "../krusader.h" + #include "../ActionMan/actionman.h" #include <klocale.h> #include <kpushbutton.h> #include <kdebug.h> *************** *** 58,300 **** KonfiguratorPage( first, parent, name ) { ! QGridLayout *kgStartupLayout = new QGridLayout( parent, 1, 1, 0, 6, "kgStartupLayout" ); ! ! QSplitter *split = new QSplitter( parent, "kguseractions splitter"); ! actionTree = new UserActionListView( split, "actionTree" ); ! actionProperties = new ActionProperty( split ); ! ! kgStartupLayout->addWidget( split, 0, 0 ); ! ! QVBoxLayout *vboxButtons = new QVBoxLayout( parent, 0, 6, "vboxButtons"); ! QSpacerItem* spacer = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding ); ! ! okButton = new KPushButton( i18n("Ok"), parent, "okButton" ); ! resetButton = new KPushButton( i18n("Reset"), parent, "resetButton" ); ! newButton = new KPushButton( i18n("New Action"), parent, "newButton" ); ! removeButton = new KPushButton( i18n("Remove Action"), parent, "removeButton" ); ! importButton = new KPushButton( i18n("Import Action"), parent, "importButton" ); ! exportButton = new KPushButton( i18n("Export Action"), parent, "exportButton" ); ! toClipButton = new KPushButton( i18n("Action to Clipboard"), parent, "toClipButton" ); ! fromClipButton = new KPushButton( i18n("Action from Clipboard"), parent, "fromClipButton" ); ! ! vboxButtons->addWidget( newButton ); ! vboxButtons->addWidget( removeButton ); ! vboxButtons->addWidget( importButton ); ! vboxButtons->addWidget( exportButton ); ! vboxButtons->addWidget( toClipButton ); ! vboxButtons->addWidget( fromClipButton ); ! vboxButtons->addItem( spacer ); ! vboxButtons->addWidget( okButton ); ! vboxButtons->addWidget( resetButton ); ! ! kgStartupLayout->addLayout( vboxButtons, 0, 1 ); ! ! _needApply = false; ! ! connect( actionTree, SIGNAL( currentChanged(QListViewItem*) ), this, SLOT( slotChangeAction() ) ); ! connect( okButton, SIGNAL( clicked() ), this, SLOT( slotUpdateAction() ) ); ! connect( resetButton, SIGNAL( clicked() ), this, SLOT( slotReset() ) ); ! connect( newButton, SIGNAL( clicked() ), this, SLOT( slotNewAction() ) ); ! connect( removeButton, SIGNAL( clicked() ), this, SLOT( slotRemoveAction() ) ); ! connect( importButton, SIGNAL( clicked() ), this, SLOT( slotImport() ) ); ! connect( exportButton, SIGNAL( clicked() ), this, SLOT( slotExport() ) ); ! connect( toClipButton, SIGNAL( clicked() ), this, SLOT( slotToClip() ) ); ! connect( fromClipButton, SIGNAL( clicked() ), this, SLOT( slotFromClip() ) ); ! ! // make the first UserActionListViewItem the current item and update the GUI ! actionTree->setFirstActionCurrent(); ! } ! ! KgUserActions::~KgUserActions() { ! } ! ! void KgUserActions::slotChangeAction() { ! //kdDebug() << "entering KgUserActions::slotChangeAction" << endl; ! KrAction* action = actionTree->currentAction(); ! if ( action ) { ! actionProperties->setEnabled( true ); ! // the discinct name is used as ID it is not allowd to change it afterwards because it is may referenced anywhere else ! actionProperties->leDistinctName->setEnabled( false ); ! actionProperties->updateGUI( action ); ! } ! else { ! // If the current item in the tree is no action (i.e. a cathegory), disable the properties ! actionProperties->clear(); ! actionProperties->setEnabled( false ); ! } ! } ! ! void KgUserActions::slotUpdateAction() { ! //kdDebug() << "entering KgUserActions::slotUpdateAction" << endl; ! ! // check that we have a command line, title and a name ! if ( ! actionProperties->validProperties() ) ! return; ! ! if ( actionProperties->leDistinctName->isEnabled() ) { ! // := new entry ! KrAction* action = new KrAction( krApp->actionCollection(), actionProperties->leDistinctName->text().latin1() ); ! krUserAction->addKrAction( action ); ! actionProperties->updateAction( action ); ! UserActionListViewItem* item = actionTree->insertAction( action ); ! actionTree->setCurrentItem( item ); ! krApp->userMenu->update(); ! } ! else { // := edit an existing ! actionProperties->updateAction(); ! actionTree->update(actionProperties->action()); // update the listviewitem as well ! } ! ! _needApply = true; ! emit sigChanged(); ! //kdDebug() << "leaving KgUserActions::slotUpdateAction" << endl; ! } ! ! void KgUserActions::slotReset() { ! ! if ( actionProperties->leDistinctName->isEnabled() ) ! slotNewAction(); ! else ! slotChangeAction(); ! } ! ! void KgUserActions::slotNewAction() { ! //kdDebug() << "entering KgUserActions::slotNewAction" << endl; ! actionProperties->leDistinctName->setEnabled( true ); ! actionProperties->clear(); ! } ! ! void KgUserActions::slotRemoveAction() { ! //kdDebug() << "entering KgUserActions::slotRemoveAction" << endl; ! if ( ! dynamic_cast<UserActionListViewItem*>( actionTree->currentItem() ) ) ! return; ! ! int messageDelete = KMessageBox::warningContinueCancel ( this, //parent ! i18n("Are you sure that you want to remove all selected actions?"), //text ! i18n("Remove selected actions?"), //caption ! i18n("Remove"), //Label for the continue-button ! "Confirm Remove UserAction", //dontAskAgainName (for the config-file) ! KMessageBox::Dangerous) ; ! ! if ( messageDelete != KMessageBox::Continue ) ! return; ! ! actionTree->removeSelectedActions(); ! ! _needApply = true; ! emit sigChanged(); ! } ! ! void KgUserActions::slotImport() { ! //kdDebug() << "entering KgUserActions::slotImport" << endl; ! ! QString filename = KFileDialog::getOpenFileName(QString::null, i18n(FILE_FILTER), this); ! if ( filename.isEmpty() ) ! return; ! ! UserAction::KrActionList newActions; ! krUserAction->readFromFile( filename, UserAction::renameDoublicated, &newActions ); ! for ( KrAction* action = newActions.first(); action; action = newActions.next() ) ! actionTree->insertAction( action ); ! ! if ( newActions.count() > 0 ) { ! _needApply = true; ! emit sigChanged(); ! } ! } ! ! void KgUserActions::slotExport() { ! //kdDebug() << "entering KgUserActions::slotExport" << endl; ! if ( ! dynamic_cast<UserActionListViewItem*>( actionTree->currentItem() ) ) ! return; ! ! QString filename = KFileDialog::getSaveFileName(QString::null, i18n(FILE_FILTER), this); ! if ( filename.isEmpty() ) ! return; ! ! QDomDocument doc = QDomDocument( ACTION_DOCTYPE ); ! QFile file( filename ); ! int answer = 0; ! if( file.open( IO_ReadOnly ) ) { // getting here, means the file already exists an can be read ! if( doc.setContent( &file ) ) // getting here means the file exists and already contains an UserAction-XML-tree ! answer = KMessageBox::warningYesNoCancel( this, //parent ! i18n("This file already contains some useractions.\nDo you want to overwrite it or should it be merged with the selected actions?"), //text ! i18n("Overwrite or merge?"), //caption ! i18n("Overwrite"), //label for Yes-Button ! i18n("Merge") //label for No-Button ! ); ! file.close(); ! } ! if ( answer == 0 && file.exists() ) ! answer = KMessageBox::warningContinueCancel( this, //parent ! i18n("This file already exists. Do you want to overwrite it?"), //text ! i18n("Overwrite existing file?"), //caption ! i18n("Overwrite") //label for Continue-Button ! ); ! ! if ( answer == KMessageBox::Cancel ) ! return; ! ! if ( answer == KMessageBox::No ) // that means the merge-button ! doc = actionTree->dumpSelectedActions( &doc ); // merge ! else // Yes or Continue means overwrite ! doc = actionTree->dumpSelectedActions(); ! bool success = UserAction::writeToFile( doc, filename ); ! if ( ! success ) ! KMessageBox::error( this, ! i18n("Can't open %1 for writing!\nNothing exported.").arg(filename), ! i18n("Export failed!") ! ); ! } ! bool KgUserActions::isChanged() { ! bool changed = KonfiguratorPage::isChanged(); ! return changed || _needApply; ! } ! bool KgUserActions::apply() { ! krUserAction->writeActionFile(); ! _needApply = false; ! emit sigChanged(); // nessesary to disable the apply-button again ! return KonfiguratorPage::apply(); ! } ! void KgUserActions::loadInitialValues() { ! //FIXME: this doesn't make sence with UserActions => move Useractions to ActionMan ! _needApply = false; ! emit sigChanged(); // nessesary to disable the apply-button again ! KonfiguratorPage::loadInitialValues(); ! } ! void KgUserActions::setDefaults() { ! //FIXME: Add a way to disable the default-button as it makes no sence for the useractions or move to ActionMan ! return KonfiguratorPage::setDefaults(); } ! void KgUserActions::slotToClip() { ! if ( ! dynamic_cast<UserActionListViewItem*>( actionTree->currentItem() ) ) ! return; ! ! QDomDocument doc = actionTree->dumpSelectedActions(); ! KApplication::clipboard()->setText( doc.toString() ); } - void KgUserActions::slotFromClip() { - QDomDocument doc( ACTION_DOCTYPE ); - if ( doc.setContent( KApplication::clipboard()->text() ) ) { - QDomElement root = doc.documentElement(); - UserAction::KrActionList newActions; - krUserAction->readFromElement( root, UserAction::renameDoublicated, &newActions ); - for ( KrAction* action = newActions.first(); action; action = newActions.next() ) - actionTree->insertAction( action ); - } - } #include "kguseractions.moc" --- 42,106 ---- KonfiguratorPage( first, parent, name ) { ! QGridLayout *kgUserActionLayout = new QGridLayout( parent, 2, 1, ! 11 /* margin */, 6 /* spacing */, "kgUserActionLayout" ); ! // ============= Info Group ============= ! QGroupBox *InfoGroup = createFrame( i18n( "Information" ), parent, "kgUserActionInfoGroup" ); ! QGridLayout *InfoGrid = createGridLayout( InfoGroup->layout() ); ! // terminal for the UserActions ! QLabel *labelInfo = new QLabel( i18n( ! "Here you can configure settings about useractions.\n" ! "To set up, configure and manage your useractions please use ActionMan." ! ), InfoGroup, "InformationLabel" ); ! InfoGrid->addWidget( labelInfo, 0, 0 ); ! KPushButton *actionmanButton = new KPushButton( i18n("Start ActionMan"), InfoGroup, "actionmanButton"); ! connect( actionmanButton, SIGNAL( clicked() ), SLOT( startActionMan() ) ); ! InfoGrid->addWidget( actionmanButton, 1, 0 ); ! kgUserActionLayout->addWidget( InfoGroup, 0 ,0 ); ! // ============= Terminal Group ============= ! QGroupBox *terminalGroup = createFrame( i18n( "Terminal execution" ), parent, "kgUserActionTerminalGroup" ); ! QGridLayout *terminalGrid = createGridLayout( terminalGroup->layout() ); ! // terminal for the UserActions ! QLabel *labelTerminal = new QLabel( i18n( "Terminal for UserActions:" ), ! terminalGroup, "TerminalLabel" ); ! terminalGrid->addWidget( labelTerminal, 0, 0 ); ! KonfiguratorURLRequester *urlReqUserActions = createURLRequester( "UserActions", ! "Terminal", _UserActions_Terminal, terminalGroup, false ); ! terminalGrid->addWidget( urlReqUserActions, 0, 1 ); ! kgUserActionLayout->addWidget( terminalGroup, 1 ,0 ); ! // ============= Outputcollection Group ============= ! QGroupBox *outputGroup = createFrame( i18n( "Output collection" ), parent, "kgUserActionOutputGroup" ); ! QGridLayout *outputGrid = createGridLayout( outputGroup->layout() ); ! QHBox *hbox; ! hbox = new QHBox( outputGroup, "HBoxNormalFont" ); ! new QLabel( i18n( "Normal font:" ), hbox, "NormalFontLabel" ); ! createFontChooser( "UserActions", "Normal Font", _UserActions_NormalFont, hbox ); ! createSpacer ( hbox ); ! outputGrid->addWidget( hbox, 2, 0 ); ! hbox = new QHBox( outputGroup, "HBoxFixedFont" ); ! new QLabel( i18n( "Font with fixed width:" ), hbox, "FixedFontLabel" ); ! createFontChooser( "UserActions", "Fixed Font", _UserActions_FixedFont, hbox ); ! createSpacer ( hbox ); ! outputGrid->addWidget( hbox, 3, 0 ); ! KonfiguratorCheckBox *useFixed = createCheckBox( "UserActions", "Use Fixed Font", _UserActions_UseFixedFont, ! i18n("Use fixed width font as default"), outputGroup ); ! outputGrid->addWidget( useFixed, 4, 0 ); ! kgUserActionLayout->addWidget( outputGroup, 2 ,0 ); } ! void KgUserActions::startActionMan() { ! ActionMan actionMan( static_cast<QWidget*>(parent()) ); } #include "kguseractions.moc" |