Objective: to print a custom in PDF, hiding the rest of slides and presenting only those chosen.
Can anyone help?I think it's something important for teachers with different students, the same base but different levels slide.
I have added the buttons "Show" and "Hide" to /libreoffice/sd/uiconfig/ui/customslideshows.ui with Glade:
terminal: $ export GLADE_CATALOG_SEARCH_PATH=~/.../libreoffice/install/share/glade $ glade I add size for put two buttons: Show and Hide, code buttons:----------------------------------code buttons in .../libreoffice/sd/uiconfig/ui/customslideshows.ui------------------------
<child> <object class="GtkButton" id="show"> <property name="label" translatable="yes">Sho_w</property> <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="use_action_appearance">False</property> <property name="use_underline">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">7</property> </packing> </child> <child> <object class="GtkButton" id="hide"> <property name="label" translatable="yes">_Hide</property> <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="use_action_appearance">False</property> <property name="use_underline">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">8</property> </packing> </child>----------------------------------END code buttons in .../libreoffice/sd/uiconfig/ui/customslideshows.ui------------------------ In /home/deb/Descargas/libreoffice/libreoffice/sd/source/ui/inc/custdlg.hxx I add:
-------------- Change custdlg.hxx ------------- class SdCustomShowDlg : public ModalDialog { private: ListBox* m_pLbCustomShows; CheckBox* m_pCbxUseCustomShow; PushButton* m_pBtnNew; PushButton* m_pBtnEdit; PushButton* m_pBtnRemove; PushButton* m_pBtnCopy; HelpButton* m_pBtnHelp; PushButton* m_pBtnStartShow; OKButton* m_pBtnOK; + PushButton* m_pBtnShow; + PushButton* m_pBtnHide; --------------END Change custdlg.hxx ------------- In .../libreoffice/sd/source/ui/dlg/custdlg.cxx I add in constructor: get( m_pBtnStartShow, "startshow" ); get( m_pBtnOK, "ok" ); + get( m_pBtnShow, "show" ); + get( m_pBtnHide, "hide" ); get( m_pLbCustomShows, "customshowlist"); ... m_pCbxUseCustomShow->SetClickHdl( aLink ); m_pLbCustomShows->SetSelectHdl( aLink ); + m_pBtnShow->SetClickHdl( aLink ); + m_pBtnHide->SetClickHdl( aLink );m_pBtnStartShow->SetClickHdl( LINK( this, SdCustomShowDlg, StartShowHdl ) ); // for test
In function CheckState I add: void SdCustomShowDlg::CheckState() { sal_uInt16 nPos = m_pLbCustomShows->GetSelectEntryPos(); sal_Bool bEnable = nPos != LISTBOX_ENTRY_NOTFOUND; m_pBtnEdit->Enable( bEnable ); m_pBtnRemove->Enable( bEnable ); m_pBtnCopy->Enable( bEnable ); m_pCbxUseCustomShow->Enable( bEnable ); m_pBtnStartShow->Enable( true ); + m_pBtnShow->Enable( bEnable ); + m_pBtnHide->Enable( bEnable ); if( bEnable ) pCustomShowList->Seek( nPos ); } Now the hard part: /** * ButtonHdl() */ IMPL_LINK( SdCustomShowDlg, ClickButtonHdl, void *, p ) { ... the buttons source implementation ... // show CustomShowelse if( p == m_pBtnShow ) // or else if( p == m_pBtnShow || p == m_pBtnHide )
{ sal_uInt16 nPos = m_pLbCustomShows->GetSelectEntryPos(); sal_Bool bDifferent = sal_False; if( nPos != LISTBOX_ENTRY_NOTFOUND ) {DBG_ASSERT( pCustomShowList, "pCustomShowList does not exist" );
pCustomShow = (*pCustomShowList)[ nPos ]; bDifferent = sal_True; for( pCustomShow = (SdCustomShow*) pCustomShowList->First(); pCustomShow != NULL && bDifferent;pCustomShow = (SdCustomShow*) pCustomShowList->Next() )
{ // What code will I put here? if (p == m_pBtnShow ) { HERE } else { HERE } //if( aStr == OUString( pCustomShow->GetName() ) ) // bDifferent = sal_False; } } } Is right the actual code? (loop, ...)I have seen code for hide or show the slides in /core/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
HIDE: case SID_HIDE_SLIDE: ChangeSlideExclusionState(model::SharedPageDescriptor(), true); SHOW: case SID_SHOW_SLIDE ChangeSlideExclusionState(model::SharedPageDescriptor(), false);Or for selections in /core/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx 234 void SelectionManager::SelectionHasChanged (const bool bMakeSelectionVisible)
But I don't know how do it. Best regards. -- El inglés, francés, alemán o chino mandarín son muy ineficientes para su aprendizaje como segundo idioma (mejor tercero) y fuente de grandes movimientos de divisas de países pobres hacia los más ricos. Igual que aprendes a escribir primero trazos y no directamente las letras, es mejor para el cerebro aprender primero una lengua regular y planificada. ***************************************************** Guillermo Molleda Jimena Departamento de Economía Financiera y Dirección de Operaciones Facultad de Turismo y Finanzas Universidad de Sevilla Avda. San Francisco Javier s/n 41018 Sevilla Tfno: 954 55 16 55 Fax: 954 55 75 70 E-mail: gmolleda@us.es http://personal.us.es/gmolleda *****************************************************
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature