1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #include <stdio.h> 25 #include <vcl/msgbox.hxx> 26 #include <vcl/svapp.hxx> 27 #ifndef _PAD_RTSETUP_HRC_ 28 #include <rtsetup.hrc> 29 #endif 30 #include <cmddlg.hxx> 31 #include <padialog.hxx> 32 #include <helper.hxx> 33 #include <prtsetup.hxx> 34 35 using namespace psp; 36 using namespace rtl; 37 using namespace padmin; 38 39 #define PRINTER_PERSISTENCE_GROUP "KnownPrinterCommands" 40 #define FAX_PERSISTENCE_GROUP "KnownFaxCommands" 41 #define PDF_PERSISTENCE_GROUP "KnowPdfCommands" 42 #define MAX_COMMANDS 50 43 44 void CommandStore::getSystemPrintCommands( ::std::list< String >& rCommands ) 45 { 46 static ::std::list< OUString > aSysCommands; 47 static bool bOnce = false; 48 if( ! bOnce ) 49 { 50 bOnce = true; 51 PrinterInfoManager::get().getSystemPrintCommands( aSysCommands ); 52 } 53 54 ::std::list< OUString >::const_iterator it; 55 for( it = aSysCommands.begin(); it != aSysCommands.end(); ++it ) 56 rCommands.push_back( *it ); 57 } 58 59 void CommandStore::getSystemPdfCommands( ::std::list< String >& rCommands ) 60 { 61 static bool bOnce = false; 62 static ::std::list< String > aSysCommands; 63 64 if( ! bOnce ) 65 { 66 bOnce = true; 67 char pBuffer[1024]; 68 FILE* pPipe; 69 String aCommand; 70 rtl_TextEncoding aEncoding = osl_getThreadTextEncoding(); 71 72 pPipe = popen( "which gs 2>/dev/null", "r" ); 73 if( pPipe ) 74 { 75 if (fgets( pBuffer, sizeof( pBuffer ), pPipe ) != NULL) 76 { 77 int nLen = strlen( pBuffer ); 78 if( pBuffer[nLen-1] == '\n' ) // strip newline 79 pBuffer[--nLen] = 0; 80 aCommand = String( ByteString( pBuffer ), aEncoding ); 81 if( ( ( aCommand.GetChar( 0 ) == '/' ) 82 || ( aCommand.GetChar( 0 ) == '.' && aCommand.GetChar( 1 ) == '/' ) 83 || ( aCommand.GetChar( 0 ) == '.' && aCommand.GetChar( 1 ) == '.' && aCommand.GetChar( 2 ) == '/' ) ) 84 && nLen > 2 85 && aCommand.GetChar( nLen-2 ) == 'g' 86 && aCommand.GetChar( nLen-1 ) == 's' ) 87 { 88 aCommand.AppendAscii( " -q -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=\"(OUTFILE)\" -" ); 89 aSysCommands.push_back( aCommand ); 90 } 91 } 92 pclose( pPipe ); 93 } 94 95 pPipe = popen( "which distill 2>/dev/null", "r" ); 96 if( pPipe ) 97 { 98 if (fgets( pBuffer, sizeof( pBuffer ), pPipe ) != NULL) 99 { 100 int nLen = strlen( pBuffer ); 101 if( pBuffer[nLen-1] == '\n' ) // strip newline 102 pBuffer[--nLen] = 0; 103 aCommand = String( ByteString( pBuffer ), aEncoding ); 104 if( ( ( aCommand.GetChar( 0 ) == '/' ) 105 || ( aCommand.GetChar( 0 ) == '.' && aCommand.GetChar( 1 ) == '/' ) 106 || ( aCommand.GetChar( 0 ) == '.' && aCommand.GetChar( 1 ) == '.' && aCommand.GetChar( 2 ) == '/' ) ) 107 && nLen > 7 108 && aCommand.Copy( nLen - 8 ).EqualsAscii( "/distill" ) ) 109 { 110 aCommand.AppendAscii( " (TMP) ; mv `echo (TMP) | sed s/\\.ps\\$/.pdf/` \"(OUTFILE)\"" ); 111 aSysCommands.push_back( aCommand ); 112 } 113 } 114 pclose( pPipe ); 115 } 116 } 117 ::std::list< String >::const_iterator it; 118 for( it = aSysCommands.begin(); it != aSysCommands.end(); ++it ) 119 rCommands.push_back( *it ); 120 } 121 122 123 124 void CommandStore::getStoredCommands( const char* pGroup, ::std::list< String >& rCommands ) 125 { 126 Config& rConfig( getPadminRC() ); 127 rConfig.SetGroup( pGroup ); 128 int nKeys = rConfig.GetKeyCount(); 129 ::std::list< String >::const_iterator it; 130 while( nKeys-- ) 131 { 132 String aCommand( rConfig.ReadKey( ByteString::CreateFromInt32( nKeys ), RTL_TEXTENCODING_UTF8 ) ); 133 if( aCommand.Len() ) 134 { 135 for( it = rCommands.begin(); it != rCommands.end() && *it != aCommand; ++it ) 136 ; 137 if( it == rCommands.end() ) 138 rCommands.push_back( aCommand ); 139 } 140 } 141 } 142 143 void CommandStore::setCommands( 144 const char* pGroup, 145 const ::std::list< String >& rCommands, 146 const ::std::list< String >& rSysCommands 147 ) 148 { 149 Config& rConfig( getPadminRC() ); 150 rConfig.DeleteGroup( pGroup ); 151 rConfig.SetGroup( pGroup ); 152 ::std::list< String >::const_iterator it, loop; 153 ::std::list< String > aWriteList; 154 155 int nWritten = 0; 156 for( it = rCommands.begin(); it != rCommands.end(); ++it ) 157 { 158 if( it->Len() ) 159 { 160 for( loop = rSysCommands.begin(); loop != rSysCommands.end() && *loop != *it; ++loop ) 161 ; 162 if( loop == rSysCommands.end() ) 163 { 164 aWriteList.push_back( *it ); 165 nWritten++; 166 } 167 } 168 } 169 while( nWritten > MAX_COMMANDS ) 170 { 171 aWriteList.pop_front(); 172 nWritten--; 173 } 174 for( nWritten = 0, it = aWriteList.begin(); it != aWriteList.end(); ++it, ++nWritten ) 175 rConfig.WriteKey( ByteString::CreateFromInt32( nWritten ), ByteString( *it, RTL_TEXTENCODING_UTF8 ) ); 176 } 177 178 179 void CommandStore::getPrintCommands( ::std::list< String >& rCommands ) 180 { 181 rCommands.clear(); 182 getSystemPrintCommands( rCommands ); 183 getStoredCommands( PRINTER_PERSISTENCE_GROUP, rCommands ); 184 } 185 186 void CommandStore::getPdfCommands( ::std::list< String >& rCommands ) 187 { 188 rCommands.clear(); 189 getSystemPdfCommands( rCommands ); 190 getStoredCommands( PDF_PERSISTENCE_GROUP, rCommands ); 191 } 192 193 void CommandStore::getFaxCommands( ::std::list< String >& rCommands ) 194 { 195 rCommands.clear(); 196 getStoredCommands( FAX_PERSISTENCE_GROUP, rCommands ); 197 } 198 199 void CommandStore::setPrintCommands( const ::std::list< String >& rCommands ) 200 { 201 ::std::list< String > aSysCmds; 202 getSystemPrintCommands( aSysCmds ); 203 setCommands( PRINTER_PERSISTENCE_GROUP, rCommands, aSysCmds ); 204 } 205 206 void CommandStore::setPdfCommands( const ::std::list< String >& rCommands ) 207 { 208 ::std::list< String > aSysCmds; 209 getSystemPdfCommands( aSysCmds ); 210 setCommands( PDF_PERSISTENCE_GROUP, rCommands, aSysCmds ); 211 } 212 213 void CommandStore::setFaxCommands( const ::std::list< String >& rCommands ) 214 { 215 ::std::list< String > aSysCmds; 216 setCommands( FAX_PERSISTENCE_GROUP, rCommands, aSysCmds ); 217 } 218 219 220 RTSCommandPage::RTSCommandPage( RTSDialog* pParent ) : 221 TabPage( &pParent->m_aTabControl, PaResId( RID_RTS_COMMANDPAGE ) ), 222 m_pParent( pParent ), 223 m_aCommandsCB( this, PaResId( RID_RTS_CMD_CB_COMMANDS ) ), 224 m_aExternalCB( this, PaResId( RID_RTS_CMD_CB_EXTERNAL ) ), 225 m_aQuickFT( this, PaResId( RID_RTS_CMD_FT_QUICKCMD ) ), 226 m_aQuickCB( this, PaResId( RIT_RTS_CMD_CB_QUICKCMD ) ), 227 m_aCommandTitle( this, PaResId( RID_RTS_CMD_FL_INSTALL ) ), 228 m_aPrinterName( this, PaResId( RID_RTS_CMD_TXT_PRTNAME ) ), 229 m_aConnectedTo( this, PaResId( RID_RTS_CMD_TXT_CONNECT ) ), 230 m_aPrinterFL( this, PaResId( RID_RTS_CMD_FL_DEFAULT ) ), 231 m_aConfigureText( this, PaResId( RID_RTS_CMD_TXT_CONFIGURE ) ), 232 m_aConfigureBox( this, PaResId( RID_RTS_CMD_LB_CONFIGURE ) ), 233 m_aPdfDirectoryText( this, PaResId( RID_RTS_CMD_TXT_PDFDIR ) ), 234 m_aPdfDirectoryButton( this, PaResId( RID_RTS_CMD_BTN_PDFDIR ) ), 235 m_aPdfDirectoryEdit( this, PaResId( RID_RTS_CMD_EDT_PDFDIR ) ), 236 m_aFaxSwallowBox( this, PaResId( RID_RTS_CMD_BOX_SWALLOWFAXNO ) ), 237 m_aHelpButton( this, PaResId( RID_RTS_CMD_BTN_HELP ) ), 238 m_aRemovePB( this, PaResId( RID_RTS_CMD_BTN_REMOVE ) ), 239 m_aFaxHelp( PaResId( RID_RTS_CMD_STR_FAXHELP ) ), 240 m_aPrinterHelp( PaResId( RID_RTS_CMD_STR_PRINTERHELP ) ), 241 m_aPdfHelp( PaResId( RID_RTS_CMD_STR_PDFHELP ) ) 242 { 243 // configuring as printer is only sensible in default print system 244 PrinterInfoManager& rMgr( PrinterInfoManager::get() ); 245 if( rMgr.getType() == PrinterInfoManager::Default || rMgr.isCUPSDisabled() ) 246 m_nPrinterEntry = m_aConfigureBox.InsertEntry( String( PaResId( RID_RTS_CMD_STR_CONFIGURE_PRINTER ) ) ); 247 else 248 m_nPrinterEntry = ~0; 249 m_nFaxEntry = m_aConfigureBox.InsertEntry( String( PaResId( RID_RTS_CMD_STR_CONFIGURE_FAX ) ) ); 250 m_nPdfEntry = m_aConfigureBox.InsertEntry( String( PaResId( RID_RTS_CMD_STR_CONFIGURE_PDF ) ) ); 251 252 FreeResource(); 253 254 CommandStore::getPrintCommands( m_aPrinterCommands ); 255 CommandStore::getFaxCommands( m_aFaxCommands ); 256 CommandStore::getPdfCommands( m_aPdfCommands ); 257 258 m_aPrinterName.SetText( m_pParent->m_aPrinter ); 259 260 m_aCommandsCB.SetDoubleClickHdl( LINK( this, RTSCommandPage, DoubleClickHdl ) ); 261 m_aCommandsCB.SetSelectHdl( LINK( this, RTSCommandPage, SelectHdl ) ); 262 m_aCommandsCB.SetModifyHdl( LINK( this, RTSCommandPage, ModifyHdl ) ); 263 m_aConfigureBox.SetSelectHdl( LINK( this, RTSCommandPage, SelectHdl ) ); 264 m_aHelpButton.SetClickHdl( LINK( this, RTSCommandPage, ClickBtnHdl ) ); 265 m_aRemovePB.SetClickHdl( LINK( this, RTSCommandPage, ClickBtnHdl ) ); 266 m_aPdfDirectoryButton.SetClickHdl( LINK( this, RTSCommandPage, ClickBtnHdl ) ); 267 m_aExternalCB.SetToggleHdl( LINK( this, RTSCommandPage, ClickBtnHdl ) ); 268 269 m_aPdfDirectoryButton.Show( sal_False ); 270 m_aPdfDirectoryEdit.Show( sal_False ); 271 m_aPdfDirectoryText.Show( sal_False ); 272 m_aFaxSwallowBox.Show( sal_False ); 273 m_aCommandsCB.SetText( m_pParent->m_aJobData.m_aCommand ); 274 m_aQuickCB.SetText( m_pParent->m_aJobData.m_aQuickCommand ); 275 276 m_bWasFax = false; 277 m_bWasPdf = false; 278 m_aConfigureBox.SelectEntryPos( m_nPrinterEntry ); 279 sal_Int32 nIndex = 0; 280 while( nIndex != -1 ) 281 { 282 OUString aToken( m_pParent->m_aJobData.m_aFeatures.getToken( 0, ',', nIndex ) ); 283 if( ! aToken.compareToAscii( "fax", 3 ) ) 284 { 285 m_bWasFax = true; 286 m_aFaxSwallowBox.Show( sal_True ); 287 sal_Int32 nPos = 0; 288 m_aFaxSwallowBox.Check( ! aToken.getToken( 1, '=', nPos ).compareToAscii( "swallow", 7 ) ? sal_True : sal_False ); 289 m_aConfigureBox.SelectEntryPos( m_nFaxEntry ); 290 } 291 else if( ! aToken.compareToAscii( "pdf=", 4 ) ) 292 { 293 m_bWasPdf = true; 294 sal_Int32 nPos = 0; 295 m_aPdfDirectoryEdit.SetText( aToken.getToken( 1, '=', nPos ) ); 296 m_aPdfDirectoryEdit.Show( sal_True ); 297 m_aPdfDirectoryButton.Show( sal_True ); 298 m_aPdfDirectoryText.Show( sal_True ); 299 m_aConfigureBox.SelectEntryPos( m_nPdfEntry ); 300 } 301 else if( ! aToken.compareToAscii( "external_dialog" ) ) 302 { 303 m_aExternalCB.Check(); 304 m_bWasExternalDialog = true; 305 } 306 } 307 308 m_aQuickCB.Enable( m_aExternalCB.IsChecked() ); 309 310 String aString( m_aConnectedTo.GetText() ); 311 aString += String( m_pParent->m_aJobData.m_aCommand ); 312 m_aConnectedTo.SetText( aString ); 313 314 UpdateCommands(); 315 } 316 317 RTSCommandPage::~RTSCommandPage() 318 { 319 } 320 321 void RTSCommandPage::save() 322 { 323 String aCommand,aQuickCommand; 324 bool bHaveFax = m_aConfigureBox.GetSelectEntryPos() == m_nFaxEntry ? true : false; 325 bool bHavePdf = m_aConfigureBox.GetSelectEntryPos() == m_nPdfEntry ? true : false; 326 ::std::list< String >::iterator it; 327 328 String aFeatures; 329 sal_Int32 nIndex = 0; 330 String aOldPdfPath; 331 bool bOldFaxSwallow = false; 332 bool bFaxSwallow = m_aFaxSwallowBox.IsChecked() ? true : false; 333 bool bOldExternalDialog = false, bExternalDialog = m_aExternalCB.IsChecked() ? true : false; 334 335 while( nIndex != -1 ) 336 { 337 OUString aToken( m_pParent->m_aJobData.m_aFeatures.getToken( 0, ',', nIndex ) ); 338 if( aToken.compareToAscii( "fax", 3 ) && 339 aToken.compareToAscii( "pdf", 3 ) && 340 aToken.compareToAscii( "external_dialog" ) 341 ) 342 { 343 if( aToken.getLength() ) 344 { 345 if( aFeatures.Len() ) 346 aFeatures += ','; 347 aFeatures += String( aToken ); 348 } 349 } 350 else if( ! aToken.compareToAscii( "pdf=", 4 ) ) 351 { 352 sal_Int32 nPos = 0; 353 aOldPdfPath = aToken.getToken( 1, '=', nPos ); 354 } 355 else if( ! aToken.compareToAscii( "fax=", 4 ) ) 356 { 357 sal_Int32 nPos = 0; 358 bOldFaxSwallow = aToken.getToken( 1, '=', nPos ).compareToAscii( "swallow", 7 ) ? false : true; 359 } 360 else if( ! aToken.compareToAscii( "external_dialog" ) ) 361 { 362 bOldExternalDialog = true; 363 } 364 } 365 ::std::list< String >* pList = &m_aPrinterCommands; 366 if( bExternalDialog ) 367 { 368 if( aFeatures.Len() ) 369 aFeatures += ','; 370 aFeatures.AppendAscii( "external_dialog" ); 371 } 372 if( bHaveFax ) 373 { 374 if( aFeatures.Len() ) 375 aFeatures += ','; 376 aFeatures.AppendAscii( "fax=" ); 377 if( bFaxSwallow ) 378 aFeatures.AppendAscii( "swallow" ); 379 pList = &m_aFaxCommands; 380 } 381 if( bHavePdf ) 382 { 383 if( aFeatures.Len() ) 384 aFeatures += ','; 385 aFeatures.AppendAscii( "pdf=" ); 386 aFeatures.Append( m_aPdfDirectoryEdit.GetText() ); 387 pList = &m_aPdfCommands; 388 } 389 aCommand = m_aCommandsCB.GetText(); 390 aQuickCommand = m_aQuickCB.GetText(); 391 for( it = pList->begin(); it != pList->end() && *it != aCommand; ++it ) 392 ; 393 if( it == pList->end() ) 394 pList->push_back( aCommand ); 395 396 if( aCommand != String( m_pParent->m_aJobData.m_aCommand ) || 397 aQuickCommand != String( m_pParent->m_aJobData.m_aQuickCommand ) || 398 ( m_bWasFax && ! bHaveFax ) || 399 ( ! m_bWasFax && bHaveFax ) || 400 ( m_bWasPdf && ! bHavePdf ) || 401 ( ! m_bWasPdf && bHavePdf ) || 402 ( bHavePdf && aOldPdfPath != m_aPdfDirectoryEdit.GetText() ) || 403 ( bHaveFax && bFaxSwallow != bOldFaxSwallow ) || 404 ( m_bWasExternalDialog && ! bExternalDialog ) || 405 ( ! m_bWasExternalDialog && bExternalDialog ) 406 ) 407 { 408 m_pParent->m_aJobData.m_aCommand = aCommand; 409 m_pParent->m_aJobData.m_aQuickCommand = aQuickCommand; 410 m_pParent->m_aJobData.m_aFeatures = aFeatures; 411 412 PrinterInfoManager::get().changePrinterInfo( m_pParent->m_aPrinter, m_pParent->m_aJobData ); 413 } 414 CommandStore::setPrintCommands( m_aPrinterCommands ); 415 CommandStore::setFaxCommands( m_aFaxCommands ); 416 CommandStore::setPdfCommands( m_aPdfCommands ); 417 } 418 419 420 IMPL_LINK( RTSCommandPage, SelectHdl, Control*, pBox ) 421 { 422 if( pBox == &m_aConfigureBox ) 423 { 424 sal_Bool bEnable = m_aConfigureBox.GetSelectEntryPos() == m_nPdfEntry ? sal_True : sal_False; 425 m_aPdfDirectoryButton.Show( bEnable ); 426 m_aPdfDirectoryEdit.Show( bEnable ); 427 m_aPdfDirectoryText.Show( bEnable ); 428 bEnable = m_aConfigureBox.GetSelectEntryPos() == m_nFaxEntry ? sal_True : sal_False; 429 m_aFaxSwallowBox.Show( bEnable ); 430 UpdateCommands(); 431 } 432 else if( pBox == &m_aCommandsCB ) 433 { 434 m_aRemovePB.Enable( sal_True ); 435 } 436 437 return 0; 438 } 439 440 IMPL_LINK( RTSCommandPage, ClickBtnHdl, Button*, pButton ) 441 { 442 if( pButton == & m_aPdfDirectoryButton ) 443 { 444 String aPath( m_aPdfDirectoryEdit.GetText() ); 445 if( chooseDirectory( aPath ) ) 446 m_aPdfDirectoryEdit.SetText( aPath ); 447 } 448 else if( pButton == &m_aRemovePB ) 449 { 450 String aEntry( m_aCommandsCB.GetText() ); 451 ::std::list< String >* pList; 452 if( m_aConfigureBox.GetSelectEntryPos() == m_nPrinterEntry ) 453 pList = &m_aPrinterCommands; 454 else if( m_aConfigureBox.GetSelectEntryPos() == m_nFaxEntry ) 455 pList = &m_aFaxCommands; 456 else 457 pList = &m_aPdfCommands; 458 459 pList->remove( aEntry ); 460 m_aCommandsCB.RemoveEntry( aEntry ); 461 m_aQuickCB.RemoveEntry( aEntry ); 462 } 463 else if( pButton == &m_aHelpButton ) 464 { 465 String aHelpText; 466 if( m_aConfigureBox.GetSelectEntryPos() == m_nPrinterEntry ) 467 aHelpText = m_aPrinterHelp; 468 else if( m_aConfigureBox.GetSelectEntryPos() == m_nFaxEntry ) 469 aHelpText = m_aFaxHelp; 470 else if( m_aConfigureBox.GetSelectEntryPos() == m_nPdfEntry ) 471 aHelpText = m_aPdfHelp; 472 473 InfoBox aBox( this, aHelpText ); 474 aBox.Execute(); 475 } 476 else if( pButton == &m_aExternalCB ) 477 { 478 m_aQuickCB.Enable( m_aExternalCB.IsChecked() ); 479 } 480 return 0; 481 } 482 483 IMPL_LINK( RTSCommandPage, DoubleClickHdl, ComboBox*, pComboBox ) 484 { 485 if( pComboBox == &m_aCommandsCB ) 486 ConnectCommand(); 487 return 0; 488 } 489 490 IMPL_LINK( RTSCommandPage, ModifyHdl, Edit*, pEdit ) 491 { 492 if( pEdit == &m_aCommandsCB ) 493 m_aRemovePB.Enable( m_aCommandsCB.GetEntryPos( m_aCommandsCB.GetText() ) != LISTBOX_ENTRY_NOTFOUND ); 494 495 return 0; 496 } 497 498 void RTSCommandPage::UpdateCommands() 499 { 500 m_aCommandsCB.Clear(); 501 ::std::list< String >::iterator it; 502 if( m_aConfigureBox.GetSelectEntryPos() == m_nPrinterEntry ) 503 { 504 for( it = m_aPrinterCommands.begin(); it != m_aPrinterCommands.end(); ++it ) 505 { 506 m_aCommandsCB.InsertEntry( *it ); 507 m_aQuickCB.InsertEntry( *it ); 508 } 509 if( ! m_bWasFax ) 510 m_aCommandsCB.SetText( m_pParent->m_aJobData.m_aCommand ); 511 else 512 m_aCommandsCB.SetText( String() ); 513 } 514 else if( m_aConfigureBox.GetSelectEntryPos() == m_nFaxEntry ) 515 { 516 for( it = m_aFaxCommands.begin(); it != m_aFaxCommands.end(); ++it ) 517 { 518 m_aCommandsCB.InsertEntry( *it ); 519 m_aQuickCB.InsertEntry( *it ); 520 } 521 if( m_bWasFax ) 522 m_aCommandsCB.SetText( m_pParent->m_aJobData.m_aCommand ); 523 else 524 m_aCommandsCB.SetText( String() ); 525 } 526 else if( m_aConfigureBox.GetSelectEntryPos() == m_nPdfEntry ) 527 { 528 for( it = m_aPdfCommands.begin(); it != m_aPdfCommands.end(); ++it ) 529 { 530 m_aCommandsCB.InsertEntry( *it ); 531 m_aQuickCB.InsertEntry( *it ); 532 } 533 if( m_bWasPdf ) 534 m_aCommandsCB.SetText( m_pParent->m_aJobData.m_aCommand ); 535 else 536 m_aCommandsCB.SetText( String() ); 537 } 538 } 539 540 void RTSCommandPage::ConnectCommand() 541 { 542 String aString( m_aConnectedTo.GetText().GetToken( 0, ':' ) ); 543 aString.AppendAscii( ": " ); 544 aString += m_aCommandsCB.GetText(); 545 546 m_aConnectedTo.SetText( aString ); 547 } 548