Project Explorer

The PROJECT EXPLORER panel with no project open: its title bar carries only a drag grip and a close button, and the body below it is empty. The same panel with SampleProject loaded, its root node expanded over six yellow folders, each with a plus box for expanding it: ImportedTypeLibraries, Miscellaneous, Packages, References, Resources and Sources, the last of them selected.

A small yellow folder icon ImportedTypeLibraries
A small yellow folder icon Miscellaneous
A small yellow folder icon Packages
A small yellow folder icon References
A small yellow folder icon Resources
A small yellow folder icon Sources

When a Project is open contextual icons will appear.

The PROJECT EXPLORER title bar once a project is open, with four buttons at its right: a settings gear, a toggle file view icon of two overlapping documents, a plus for adding items, and the panel close button.

Project Settings

Toggle file view (CTRL + R)

Add…

Same as Right-Click

Right-Click - Add

The Project Explorer context menu with its Add submenu open alongside it. The submenu runs from Add Folder through the Windows Form, MDI Form, UserControl, PropertyPage and Report entries, the CustomControls form, the .TWIN module and class, the .BAS module and .CLS class, Add Other File, Import, and three Add Resource lines. The menu behind it lists Cut, Copy, Paste, Copy Path, View As JSON, View As Markdown Preview, Rename, Export and Delete Permanently, with Cut, Copy, Paste and the two View As entries greyed out.

  • Add Folder
  • Add Windows Form
  • Add Windows MDI Form
  • Add Windows UserControl
  • Add Windows PropertyPage
  • Add Windows Report

  • Add CustomControls Form

  • Add Module (.TWIN supporting Unicode)
  • Add Class (.TWIN supporting Unicode)

  • Add Module (.BAS)
  • Add Class (.CLS)

  • Add Other File

  • Import

  • Add Resource: Visual Styles Manifest
  • Add Resource: String Table
  • Add Resource: MESSAGETABLE

Folder

Windows Form

tbForm

Windows MDI Form

Windows UserControl

Windows PropertyPage

Windows Report

tbReport

CustomControls Forms

A twinBASIC message box headed Package needed: CustomControls, saying that a reference to the CustomControls package must be added to the project first and that the compiler will be restarted once it is, above an Add CustomControls package button and a Cancel button.

Module

Class

Other File

Import

Resource: Visual Styles Manifest

An application manifest is an XML file that Windows reads when it starts the program. The one this command adds declares a dependency on version 6 of the Windows Common Controls, so that the program’s buttons, lists and other controls are drawn in the current Windows visual style rather than the classic one. It is stored as resource #1 in the project’s MANIFEST resource folder, and the build embeds it in the program.

A manifest can also declare the program’s DPI awareness. A program whose manifest does should set Force DPI Awareness At Startup to NONE.

See A small yellow folder icon /.../Resources/MANIFEST/#1.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
      type="win32"
      processorArchitecture="*"
      name="My_twinBASIC_Application"
      version="1.0.0.0"
   />
   <description>Application description here</description>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity
            type="win32"
            processorArchitecture="*"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            publicKeyToken="6595b64144ccf1df"
            language="*"
         />
      </dependentAssembly>
   </dependency>
</assembly>

Resource: String Table

See A small yellow folder icon /.../Resources/STRING/Strings.json

[
    {
        "id": 101,
        "name": "MyLocalizedString1",
        "LCID_0000": "This is my NEUTRAL text for MyLocalizedString1",
        "LCID_0409": "This is my USA text for MyLocalizedString1",
        "LCID_0407": "This is my GERMAN text for MyLocalizedString1",
        "LCID_0809": "This is my UK text for MyLocalizedString1"
    },
    {
        "id": 102,
        "name": "MyLocalizedString2",
        "LCID_0000": "This is my NEUTRAL text for MyLocalizedString2",
        "LCID_0409": "This is my USA text for MyLocalizedString2",
        "LCID_0407": "This is my GERMAN text for MyLocalizedString2",
        "LCID_0809": "This is my UK text for MyLocalizedString2"
    }
]

Resource: MESSAGETABLE

See A small yellow folder icon /.../Resources/MESSAGETABLE/Strings.json

{
    "events": 
    [
        {
            "id": -1073610751,
            "name": "service_started",
            "LCID_0000": "%1 service started"
        },
        {
            "id": -1073610750,
            "name": "service_startup_failed",
            "LCID_0000": "%1 service startup failed"
        },
        {
            "id": -1073610749,
            "name": "service_ended",
            "LCID_0000": "%1 service ended"
        },
        {
            "id": -1073610748,
            "name": "service_stopping",
            "LCID_0000": "%1 service stopping"
        }
    ],
    "categories": 
    [
        {
            "id": 1,
            "name": "status_changed",
            "LCID_0000": "Status Changed"
        }
    ]
}