Skip to content
Snippets Groups Projects
FXFileDialog.rb 6.83 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # File selection dialog
      #
      # Each pattern in the _patternList_ comprises an optional name, followed by
      # a pattern in parentheses. The patterns are separated by newlines.
      # For example,
      #
      #  fileDialog.patternList = ["*",
      #                            "*.cpp,*.cc",
      #                            "*.hpp,*.hh,*.h"
      #                           ]
      #
      # and
      #
      #  fileDialog.patternList = ["All Files (*)",
      #                            "C++ Sources (*.cpp,*.cc)",
      #                            "C++ Headers (*.hpp,*.hh,*.h)"
      #                           ]
      #
      # will set the same three patterns, but the former shows no pattern names.
      #
      # === Wildcard matching modes
      #
    
      # +FILEMATCH_FILE_NAME+::  No wildcard can ever match "/" (or "\","/" under Windows).
      # +FILEMATCH_NOESCAPE+::  Backslashes don't quote special chars ("\" is treated as "\").
      # +FILEMATCH_PERIOD+::  Leading "." is matched only explicitly (Useful to match hidden files on Unix).
      # +FILEMATCH_LEADING_DIR+:: Ignore "/..." after a match.
      # +FILEMATCH_CASEFOLD+::  Compare without regard to case.
    
      #
      # Note that under Windows, +FILEMATCH_NOESCAPE+ must be passed.
      #
      class FXFileDialog < FXDialogBox
    
        # File name [String]
        attr_accessor :filename
    
        # List of selected filenames [Array]
        attr_reader :filenames
    
        # File pattern [String]
        attr_accessor :pattern
    
        # Current pattern number [Integer]
        attr_accessor :currentPattern
    
        # Directory [String]
        attr_accessor :directory
    
        # Inter-item spacing (in pixels) [Integer]
        attr_accessor :itemSpace
    
        # File list style [Integer]
        attr_accessor :fileBoxStyle
    
        # File selection mode [Integer]
        attr_accessor :selectMode
    
        # Wildcard matching mode [Integer]
        attr_accessor :matchMode
    
        # Image size for preview images [Integer]
        attr_accessor :imageSize
    
        # Construct a file dialog box
        def initialize(owner, name, opts=0, x=0, y=0, width=500, height=300) # :yields: theFileDialog
        end
    
        #
        # Change the list of file patterns shown in the file dialog.
        # The _patterns_ argument is an array of strings, and each string
        # represents a different file pattern. A pattern consists of an
        # optional name, followed by a pattern in parentheses. For example,
        # this code:
        #
        #   patterns = [ "*", "*.cpp,*.cc", "*.hpp,*.hh,*.h" ]
        #   aFileSelector.setPatternList(patterns)
        #
        # and this code:
        #
        #   patterns = [ "All Files (*)", "C++ Sources (*.cpp,*.cc)", "C++ Headers (*.hpp,*.hh,*.h)" ]
        #   aFileSelector.setPatternList(patterns)
        #
        # will both set the same three patterns, but the former shows no pattern names.
        #
        # For compatibility with the FOX C++ library API of the same name, #setPatternList
        # also accepts a _patterns_ value that is a single string, with each pattern
        # separated by newline characters, e.g.
        #
        #   patterns = "All Files (*)\nC++ Sources (*.cpp,*.cc)\nC++ Headers (*.hpp,*.hh,*.h)"
        #   aFileSelector.setPatternList(patterns)
        #
        def setPatternList(patterns); end
    
        #
        # Returns the list of patterns (an Array of Strings).
        #
        def getPatternList(); end
    
        # Get pattern text for given pattern number
        def getPatternText(patno); end
    
        # Change pattern text for pattern number
        def setPatternText(patno, text); end
    
        #
        # Return number of patterns
        #
        def numPatterns; end
    
        #
        # Change whether this file dialog allows pattern entry or not.
        #
        def allowsPatternEntry=(allowed); end
    
        #
        # Return +true+ if this file dialog allows pattern entry
        #
        def allowsPatternEntry? ; end
    
        # Set visibility of the read-only button, where _shown_ is either +true+ or +false+
        def showReadOnly=(shown); end
    
        # Return +true+ if read-only button is shown
        def readOnlyShown?; end
    
        # Return +true+ if showing hidden files and directories
        def hiddenFilesShown?; end
    
        #
        # If _state_ is +true+, the file dialog will show hidden files and
        # directories; otherwise, it won't.
        #
        def hiddenFilesShown=(state); end
    
        #
        # If _shown_ is +true+, the file dialog will show preview images;
        # otherwise it won't.
        #
        def imagesShown=(shown); end
    
        #
        # Return +true+ if the file dialog is showing preview images.
        #
        def imagesShown? ; end
    
        # Set initial state of read-only button, where _state_ is either +true+ or +false+
        def readOnly=(state); end
    
        # Return +true+ if read-only
        def readOnly?; end
    
        # Return +true+ if navigation allowed.
        def navigationAllowed?; end
    
        # Set navigation to allowed (+true+) or disallowed (+false+)
        def navigationAllowed=(allowed); end
    
        #
        # Display a dialog box that allows the user to select a single existing file name
        # for opening.
        # Returns the selected file name (a String).
        #
        # ==== Parameters:
        #
    
        # +owner+::  the owner window for the dialog box [FXWindow]
        # +caption+:: the caption for the dialog box [String]
        # +path+::  the initial filename [String]
        # +patterns+:: the pattern list [String]
        # +initial+:: the initial pattern to be used (an index into the pattern list) [Integer]
    
        #
        def FXFileDialog.getOpenFilename(owner, caption, path, patterns="*", initial=0); end
    
        #
        # Display a dialog box that allows the user to select multiple existing file names
        # for opening.
        # Returns an array of the selected file names (an array of strings).
        #
        # ==== Parameters:
        #
    
        # +owner+::  the owner window for the dialog box [FXWindow]
        # +caption+:: the caption for the dialog box [String]
        # +path+::  the initial filename [String]
        # +patterns+:: the pattern list [String]
        # +initial+:: the initial pattern to be used (an index into the pattern list) [Integer]
    
        #
        def FXFileDialog.getOpenFilenames(owner, caption, path, patterns="*", initial=0); end
    
        #
        # Display a dialog box that allows the user to select an existing file name, or
        # enter a new file name, for saving.
        # Returns the save file name (a String).
        #
        # ==== Parameters:
        #
    
        # +owner+::  the owner window for the dialog box [FXWindow]
        # +caption+:: the caption for the dialog box [String]
        # +path+::  the initial filename [String]
        # +patterns+:: the pattern list [String]
        # +initial+:: the initial pattern to be used (an index into the pattern list) [Integer]
    
        #
        def FXFileDialog.getSaveFilename(owner, caption, path, patterns="*", initial=0); end
    
        #
        # Display a dialog box that allows the user to select a directory.
        # Returns the directory name (a String).
        #
        # ==== Parameters:
        #
    
        # +owner+::  the owner window for the dialog box [FXWindow]
        # +caption+:: the caption for the dialog box [String]
        # +path+::  the initial directory path [String]
    
        #
        def FXFileDialog.getOpenDirectory(owner, caption, path); end
      end
    end