// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \previouspage creator-project-creating.html
    \page creator-file-creating.html
    \nextpage creator-project-opening.html

    \title Creating Files

    \image qtcreator-new-file.webp {New File wizard}

    Use wizard templates to add individual files to your \l{Creating Projects}
    {projects}. Select \uicontrol File > \uicontrol {New File} and
    select the type of the file:

    \list
        \li \uicontrol {C/C++}: header and source files for new classes.
        \li \uicontrol {Modeling}: State Chart XML (SCXML) files,
            Universal Modeling Language (UML) style \l {Modeling}{models},
            and scratch models that use a temporary file.
        \li \uicontrol {Qt}: source and header files for item, table,
            or list models, \QD forms and a matching classes for Qt Widgets
            projects, Qt resource files, as well as QML and JavaScript files
            for Qt Quick projects.
        \li \uicontrol {GLSL}: fragment and vertex shaders.
        \li \uicontrol {General}: markdown files, empty files that you can save
            with any filename extension, and scratch buffers that use temporary
            files.
        \li \uicontrol {Java}: class files.
        \li \uicontrol {Python}: class and script files for Python projects.
        \li \uicontrol {vcpkg} (experimental): \l {Managing Packages with vcpkg}
            {vcpkg package manager} manifest files (vcpkg.json).
        \li \uicontrol {Nim} (experimental): empty Nim source and script files.
    \endlist

    The \uicontrol {New File} dialog shows detailed information about each file
    wizard template.

    \section1 C++ Classes

    The \uicontrol {C++ Class Wizard} allows you to create a C++ header and source
    file for a new class that you can add to a C++ project. Specify the class
    name, base class, and header and source files for the class.

    The wizard supports namespaces. To use a namespace, enter a qualified
    class name in the \uicontrol {Class name} field. For example:
    \c MyNamespace::MySubNamespace::MyClass. The wizard suggests
    existing namespaces and class names as you type.

    \image qtcreator-cpp-class-wizard.png "Enter Class Name dialog"

    The names of the header and source file are based on the class name. To
    change the default suffix of a file, select \uicontrol Edit > \uicontrol Preferences >
    \uicontrol {C++} > \uicontrol {File Naming}.

    \image qtcreator-options-cpp-files.png "C++ File Naming preferences"

    In the \uicontrol {License template} field, you can use
    \l{Using Variables in Wizards}{predefined wizard variables} to specify the
    path and filename of the license to use in the source and header files.

    You can create your own project and class wizards. For more information,
    see \l{Adding New Custom Wizards}.

    \section1 Resource Files

    \QC supports the \l{The Qt Resource System}{Qt Resource System}, which is a
    platform-independent mechanism for storing files in the application's
    executable.

    \image qtcreator-add-resource-wizard.png "New File dialog"

    The wizard creates a resource collection file (.qrc) that you can manage in
    the resource editor.

    \image qtcreator-add-resource.png "Editing resource files"

    Select \uicontrol {Add Files} to locate and add individual
    files.

    To list the folders and files in ascending alphabetic order in the source
    tree, select \uicontrol {Sort Alphabetically} in the context menu.

    By default, resources are accessible in the application under the same file
    name as they have in the source tree, with a \c{:/} prefix, or by a URL with
    a \c qrc scheme. To specify a path prefix for all files in the \c .qrc file,
    select \uicontrol {Add Prefix} and enter the prefix in the \uicontrol Prefix
    field.

    Some resources need to change based on the user's locale, such as
    translation files or icons. You can specify a locale in the
    \uicontrol Language field.

    Select \uicontrol Remove to remove the selected file from the resource
    collection. In the \uicontrol {Remove File} dialog, select the
    \uicontrol {Delete file permanently} check box to remove the file from
    the file system. To remove files that cannot be found in the file system,
    select \uicontrol {Remove Missing Files}.

    The above functions are also available in the context menu in the
    \uicontrol Projects view.

    \section1 OpenGL Fragment and Vertex Shaders

    Qt supports integration with OpenGL implementations on all
    platforms, which allows you to display hardware accelerated 3D graphics
    alongside a more conventional user interface. For more information, see
    \l{Qt GUI}.

    You can use the QOpenGLShader class to compile OpenGL shaders written in the
    OpenGL Shading Language (GLSL) and in the OpenGL/ES Shading Language
    (GLSL/ES). QOpenGLShader and QOpenGLShaderProgram shelter you from the
    details of
    compiling and linking vertex and fragment shaders.

    You can use \QC code editor to write fragment and vertex shaders
    in GLSL or GLSL/ES. The code editor offers syntax highlighting and code
    completion for the files.

    \image qtcreator-new-opengl-file.png "New OpenGL file wizard"
*/
