Volker

please find the code here:

'-----FILEPICKER START--------------------------------------------------------------

sub runPicker

UseSystemFileDialogs(false)
'sPath = FileNameoutofPath(ThisComponent.Url , "/")



If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
      GlobalScope.BasicLibraries.LoadLibrary("Tools")
   End If

Openfile()

 if not isempty(oPreviewWindow) then
 oPreviewWindow.reMovePaintListener( oPaintListener )
 oPreviewWindow.Dispose
 end if
end sub

function OpenFile() as String

  OpenFile = ""
  boInitialized = false

oPickerListener = CreateUnoListener("pickerListener_", "com.sun.star.ui.dialogs.XFilePickerListener")
  oFP = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
  With oFP


.Initialize( Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE ) )

'.appendFilter("BerichtFoto's" , "F" & right(year(now),2) & "*.jpg;" & "F" & right(year(now),2) & "*.jpeg")
    .appendFilter("Alle Files", "*.*" )
     if bOverschrijven = true then
    .setTitle( "welke file wil je OVERSCHRIJVEN ?" )
    end if
    .setTitle( "Berichten Foto's Opladen" )

    .setDisplayDirectory( ConvertToURL( sPath ) )
.enableControl(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, False) .enableControl(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, False)
    .setlabel(109,"FileInfo")
     dim aPickAray(3) as string
   aPickAray(0) = TargetResolution & " DPI"
   aPickAray(1) = "OpenOffice File"
   aPickAray(2) = "No Preview posible !!!"
   oFP.setValue(109, 2 , aPickAray())

.addFilePickerListener( oPickerLIstener ) ' MOET LAATSE HANDELING ZIJN anders begint de listener te werken als er iets aan de dialoog wijzigt !!!!
    If .execute() Then OpenFile = .Files(0)

             sGraphicURL = Openfile
             sURLtoKIll = openfile

             if len(sGraphicURL) > 0 then
             if bBfoto <> true then
             sPIFotonaam = left(filenameoutofpath(sGraphicURL),15) & "A"
             else
             returncode = msgbox ("we laden nu een B-foto ?", 4 + 32)
          if returncode = 6 then
             sPIFotonaam = left(filenameoutofpath(sGraphicURL),15) & "B"
             else
             end
             end if
             end if
             else
             beep
             msgbox ("kies een bruikbare file !!!!",48)
             fot_ond.Cancelodialog
             end
          endif






          sPath = oFP.getDisplayDirectory

               .reMoveFilePickerListener(oPickerLIstener)
    .Dispose()
    End With
end function


sub PreviewWindowLoadPicFile(sUrl as String)
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
      GlobalScope.BasicLibraries.LoadLibrary("Tools")
   End If
dim x
x = GetRegistryKeyContent("org.openoffice.Setup/Product").ooSetupVersionAboutBox
   if x < "3.0" then
        oUserDevinfo = thiscomponent.DocumentInfo()
else oUserDevinfo = thiscomponent.DocumentProperties.UserdefinedProperties
        end if


  oPreviewGraph  = getGraphFromUrl(sUrl)


if isnull(oPreviewGraph) then
 beep
oPreviewGraph = getGraphFromUrl(converttoURL("T:\Template\Artikels\STYLES\verkeerdbeeld.gif"))
endif
if oPreviewgraph.gettype = 1 then
   sFileType = "Raster" else
   sFileType = "Vector"
end if



if sFileType = "Raster"  then

         if  bOpladen = true then
OO_MMw = (oPreviewGraph.sizepixel.width/TargetResolution)*25.40*100 OO_MMh = (oPreviewGraph.sizepixel.height/TargetResolution)*25.40*100
        end if
end if

if sFiletype = "Raster" then

oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, 0, True) oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, 0, True)
   oFP.enableControl(109, False)
   oFP.setValue(109,4,0)
oFP.setValue(109, 1 , "Max " & int( OO_MMw/100/460) & " kol x " &int( OO_MMh/100) & " mm Hoog"
   oFP.setValue(109,5,0)
oPreviewWindow = InstallNewPreviewWindow(oFP.Window, com.sun.star.awt.WindowAttribute.BORDER)
  oPreviewWindow.addPaintListener( oPaintListener )
  lPreviewStatus = PREVIEW_PICFILE

   else
oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, 0, True) oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, 0, True)
   oFP.enableControl(109, False)
   oFP.setValue(109,4,0)
oFP.setValue(109, 1 , "VECTORFile -- NU " & int( oPreviewGraph.size100thMM.width/100/49) & " kol x " & int( oPreviewGraph.size100thMM.height/100) & " mm Hoog"
   oFP.setValue(109,5,0)
oPreviewWindow = InstallNewPreviewWindow(oFP.Window, com.sun.star.awt.WindowAttribute.BORDER)
   oPreviewWindow.addPaintListener( oPaintListener )
   lPreviewStatus = PREVIEW_PICFILE
   end if


end sub


Sub PreviewWindowLoadOOFile(sUrl as String)
   oPreviewWindow = InstallNewPreviewWindow(oFP.Window, 0)
oFP.setLabel(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, "" oFP.setLabel(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, "" oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, 0, False) oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, 0, False)
   oFP.setValue(109,4,0)
   oFP.setValue(109,1,"OpenOffice file")
   oFP.setValue(109,5,0)
  oFrame = createUnoService("com.sun.star.frame.Frame")
  oFrame.initialize(oPreviewWindow)
  Dim aProps(0) As New com.sun.star.beans.PropertyValue
  aProps(0).Name  = "Preview"
  aProps(0).Value = true
'  oFrame.loadComponentFromURL(sUrl, "", 0, aProps())
oPreviewDoc = oFrame.loadComponentFromURL(sUrl, "", 0, aProps()) ' hier laden we ook de inhoud in het frame

  lPreviewStatus = PREVIEW_OOFILE
  if IsNull(oPreviewDoc) then
    oPreviewWindow.dispose()
    lPreviewStatus = PREVIEW_NONE
    endif
end sub

sub PreviewWindowCleanUp()
if lPreviewStatus = PREVIEW_NONE then exit sub

   if lPreviewStatus = PREVIEW_PICFILE then
   oPreviewGraph = nothing
   oPreviewWindow = InstallNewPreviewWindow(oFP.Window, 0)
   ' oPreviewWindow.reMovePaintListener( oPaintListener )
  ' oPreviewWindow.dispose()
  endif
if lPreviewStatus = PREVIEW_OOFILE then
    oPreviewDoc.close(true)
  '   oPreviewWindow.dispose()
  endif
lPreviewStatus = PREVIEW_NONE
' oPreviewWindow.dispose()

  end sub

function InstallNewPreviewWindow(oWin as Object, lWinAttrs as Long) as Object
' Create a window descriptor and set up its properties
  Dim aDescriptor As New com.sun.star.awt.WindowDescriptor
  aDescriptor.Type = com.sun.star.awt.WindowClass.SIMPLE
  aDescriptor.Parent = oWin
  aDescriptor.Bounds = oWin.Windows(lLastWindowAtStart).PosSize
aDescriptor.WindowAttributes = com.sun.star.awt.WindowAttribute.SHOW or lWinAttrs
  oToolkit = createUnoService("com.sun.star.awt.Toolkit")
  InstallNewPreviewWindow = oToolkit.createWindow(aDescriptor)
end function



Sub PaintList01_windowPaint(oEvt)
  if IsNull(oPreviewGraph) then Exit Sub

  If oEvt.count > 0 Then Exit Sub

  oWin = oEvt.Source

  oPS15  = oWin.PosSize
  oPreviewGraphFP = oWin.createGraphics

  lWhite = RGB(212,208,200)
  oPreviewGraphFP.setFillColor(lWhite)
  oPreviewGraphFP.setLineColor(lWhite)

  oPreviewGraphFP.drawRect(0,0,oPS15.Width,oPS15.Height)

' calculate the position of the pic


  if oPreviewGraph.sizePixel.width = 0 then
    dRatioPreviewGraph = 1
    else
dRatioPreviewGraph = oPreviewGraph.sizePixel.height / oPreviewGraph.sizePixel.width
    endif
  dRatioWin   = oPS15.Height / oPS15.Width
'  Dim sRectan as new com.sun.star.awt.Rectangle
   sRectan = oPS15
  sRectan.X=0
  sRectan.Y=0
  if dRatioPreviewGraph>dRatioWin then
    sRectan.Width  = oPS15.Height/dRatioPreviewGraph
    sRectan.X = (oPS15.Width-sRectan.Width)/2
    else
    sRectan.Height = oPS15.Width*dRatioPreviewGraph
    sRectan.Y = (oPS15.Height-sRectan.Height)/2
    endif

  oRenderer = createUnoService("com.sun.star.graphic.GraphicRendererVCL")
  oRenderer.Device = oPreviewGraphFP.Device
  oRenderer.DestinationRect = sRectan
  oRenderer.render(oPreviewGraph)
end Sub

Sub PaintList01_disposing(oEvt As Object)
End Sub

sub WindList01_windowResized( oEvt as com.sun.star.awt.WindowEvent )
  oWin = oFP.Window
  if UBound(oWin.Windows)<= lLastWindowAtStart then exit sub
  aR = oWin.Windows(lLastWindowAtStart).PosSize
oWin.Windows(lLastWindowAtStart+1).setPosSize(aR.X, aR.Y, aR.Width, aR.Height, com.sun.star.awt.PosSize.POSSIZE)
end sub

sub WindList01_windowMoved( e as com.sun.star.awt.WindowEvent )
end sub

sub WindList01_windowShown( e as com.sun.star.lang.EventObject )
end sub

sub WindList01_windowHidden( e as com.sun.star.lang.EventObject )
end sub

sub WindList01_disposing( e as com.sun.star.lang.EventObject )
end sub


sub pickerListener_fileSelectionChanged(oEvent as Object)
  call PreviewWindowCleanUp()
  oUCB = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
  sOriginalURL = oFP.Files(0)
  if not oUCB.Exists(sOriginalURL) then
  oFP.setImage(1,0)
   exit sub
  endif
  if oUCB.IsFolder(sOriginalURL) then
   oFP.setImage(1,0)
 exit sub
  endif

  lType = getFileType(sOriginalURL)
if lType = PREVIEW_PICFILE then call PreviewWindowLoadPicFile(sOriginalURL) if lType = PREVIEW_OOFILE then call PreviewWindowLoadOOFile(sOriginalURL)
  if lType = PREVIEW_NONE then
    oPreviewWindow = InstallNewPreviewWindow(oFP.Window, 0)
oFP.setLabel(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, "" oFP.setLabel(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, "" oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_LINK, 0, False) oFP.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PREVIEW, 0, False)
   oFP.setValue(109,4,0)
   oFP.setValue(109,1,"Geen Preview Mogelijk !!")
   oFP.setValue(109,5,0)
   end if
end Sub

sub pickerListener_disposing(oEvent)
end sub

sub pickerListener_directoryChanged(oEvent)
end Sub

sub pickerListener_helpRequested(oEvent)
end Sub

sub pickerListener_controlStateChanged(oEvent as Object)
end Sub

sub pickerListener_dialogSizeChanged(oEvent)
if boInitialized then exit sub ' this routine is only used for general initializations
  boInitialized = true
  lLastWindowAtStart = UBound(oFP.Window.Windows)
  lPreviewStatus = PREVIEW_NONE
oWindowListener = CreateUnoListener("WindList01_", "com.sun.star.awt.XWindowListener")
  oFP.Window.addWindowListener( oWindowListener )
oPaintListener = CreateUnoListener("PaintList01_", "com.sun.star.awt.XPaintListener")
end Sub

function getGraphFromUrl(sFileURL as String) as Object
  oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
  Dim oPropsIN(0)as new com.sun.star.beans.PropertyValue
  oPropsIN(0).Name  = "URL"
  oPropsIN(0).Value = sFileURL
  getGraphFromUrl = oProvider.queryGraphic(oPropsIN())
end function

' some very simple file type recognition. You may add all file types, oo understands ...
function getFileType(sUrl as String) as long
  getFileType = PREVIEW_NONE
  asUrl = Split(sUrl,".")
  lUBound = UBound(asUrl)
  if lUBound <=0 then exit function
  sExt = LCase(asUrl(lUBound))
  select case sExt
case "bmp", "gif", "jpg", "png" , "eps" , "tiff" , "tif" 'not necessarily complete
      getFileType = PREVIEW_PICFILE
case "ods", "odt", "odp", "ppt", "sxc", "sxw", "txt" , "htm" , "html", "pdf" 'not necessarily complete
      getFileType = PREVIEW_OOFILE
    end select
end function

'---------------------------------------------------------------------
Sub UseSystemFileDialogs(Hoe as boolean)
dim aArgs(0) as  Object
dim aPropValue as new  com.sun.star.beans.PropertyValue
xconfig = createunoservice("com.sun.star.configuration.ConfigurationProvider")
aPropValue.Name = "nodepath"
aPropValue.Value = "org.openoffice.Office.Common/Misc"
aArgs(0) = aPropValue
xAccess = xconfig.createinstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess",aArgs()) aIsSystemDialog = xAccess.getHierarchicalPropertyValue("UseSystemFileDialog")
xAccess.replaceByName("UseSystemFileDialog", Hoe)
xAccess.commitChanges
End Sub





'------FILEPICKER END------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@api.openoffice.org
For additional commands, e-mail: dev-h...@api.openoffice.org

Reply via email to