The Project pane provides the primary interface for organizing and using components, listing all components in the project. The Project pane is opened by default.
We can switch to the Project pane by clicking its tab if it is open, by choosing Project in the View - Panes menu, or by using the keyboard shortcut Ctrl+1.
By default, the Project pane appears with the Layers pane in a tab strip docked on the left side of the Manifold desktop.
When panes are docked, if the Layers pane is in the foreground, click on the Project pane tab to bring the Project pane forward. If we have switched to a different pane, we can switch to the Project pane by clicking the pane's tab, or by choosing it in the View - Panes menu. A keyboard shortcut of Ctrl+1 switches to the Project pane.
Shift-click the pane's name tab to undock the pane. Shift-click the title bar to dock it again, or right-click the title bar and choose Dock. An undocked pane can be resized and moved anywhere on our Windows desktop. Close a docked pane by choosing its tab and then pressing the X button to close. Close an undocked pane by right-clicking the title bar and choosing Close.
Illustrations in this topic may be reduced in size to allow more compact documentation display. Undocked panes can be resized to be larger or smaller, but not as small as the smallest illustrations that may appear.
The toolbar at the top provides the usual Windows Cut, Copy, Paste and Delete commands, plus a filter box and a filter button.
Cut, Copy and Delete are enabled when we Click or Ctrl-click a component to highlight it. Paste is enabled when there is something in the Windows Clipboard that can be pasted.
Cut |
Copy highlighted items to the Clipboard and delete them. |
Copy |
Copy highlighted items to the Clipboard. |
Paste |
Paste from the Clipboard. |
Delete |
Delete highlighted items from the project. |
Filter box: Enter text to be matched, case not significant. The list of components and folders will be reduced to show only those which match the text. For example, entering ro will reduce the list to components such as roads, railroads, and crops, all of which have the two letter sequence ro in their names, but will not include components like buildings or places. Applies to both layers and folders.
If something inside a folder matches the filter box, the folder will appear even if the folder name does not match the filter. The folder will not automatically be expanded to show components within that do match the filter.
When we see a folder that does not match the pattern in the filter box, that tells us to open the folder to look inside for matches. |
|
Filter |
Filter by type of component, for example, to show only drawings, or only images, or only tables.
Also specifies how items in the Project pane are sorted for display, by Name or by Type. By default the Project pane displays components sorted alphabetically by their name. |
Click or Ctrl-click |
Click or Ctrl-click onto a component to highlight it. |
Right-click |
Right-clicking onto a blank portion of the Project pane calls up a context menu that is generic to the entire project, for example, that can be used to Create new components not based on any existing component.
Right-clicking onto a component in the Project pane calls up a context menu that specifically uses that component. For example, Right-clicking a table will include a Schema choice to display the schema for that table, and Right-clicking any component will include a Properties choice to show the properties for that component.
Right-clicking a component from which something can be created will launch any Create dialogs with that component pre-loaded as the base for the creation. For example, we can Right-click a drawing and choose Create - New Labels and the New Labels dialog will automatically be loaded with the right-clicked drawing as the source of fields for the labels. |
With the focus on the Project pane, keyboarding the first few letters of a desired component into the Filter box will highlight that component.
For example, with the AutoLookup query selected as seen above, if we keyboard the letters cu the highlighting will jump to the first component beginning with those letters, the Customer List query.
Projects can have hundreds of components, so it helps to use folders to keep the project pane organized, and to use the Filter box to reduce the display to what we want to see.
The filter box allows us to enter text by which to filter the contents of the pane so we can more easily find components when projects have many components.
The Project pane will show only those components that have in their names the text entered (case not significant) into the filter box, as illustrated above using the text emplo to show components that have Employee in their name.
A Filter button to the right specifies what types of components are displayed and how they are sorted for display, by Name or by Type. By default the Project pane displays components sorted alphabetically by their name. We can choose to show only one type of component, for example, choosing the Tables option to show only tables. The Filter button will display the icon for whatever component type has been chosen to alert us the Project pane is showing a filtered view.
We can create a new component by right-clicking into white space in the Project pane and choosing the component desired from the resulting context menu. We can also launch the creation menu from the main menu by choosing File - Create.
The context menu will have choices on it depending on which component was right-clicked, for example, adding a ! Run command if a query or script is right-clicked.
We can also create a new component by right-clicking onto a component to be used in the creation process. Right-clicking onto a component will also show additional choices in the context menu, such as Delete Related and Rename Related.
Right-clicking on a drawing, like the buildings drawing seen above, and then choosing Create - New Labels will automatically load the New Labels dialog to be based on the buildings drawing.
The dialog will also be loaded with a default labels name using buildings as a stem, loaded with fields that can be used for the labels Text, and loaded with the coordinate system of the drawing on which the labels will be based.
The dialog is pre-loaded for our convenience and choices can be altered as we like. If we want to change anything, we can do that before pressing the Create Labels command button.
The Project pane uses classic Windows moves to manipulate components: Ctrl-click to toggle whether a component has been highlighted. Ctrl-clicking several different components highlights each of them. Ctrl-click to highlight a component and then a Shift-click on another component will highlight all components in between.
Click on a component to highlight it and then press the Copy icon to copy it. Pressing the Paste icon then pastes a copy of the component into the Project pane.
Keyboard shortcuts work, too: Ctrl-C to Copy and Ctrl-V to Paste.
In the illustrations above, we highlight the buildings drawing and buildings Table components. We press Ctrl-C to Copy both and then Ctrl-V to Paste a copy of both. Manifold will automatically increment the names.
Drawings are always based on a table. The table stores all the data for the drawing, and the drawing just says how that data should be styled for display. We can have many different drawings all based on the same table, with all the different drawings styled differently, or showing data from different geometry fields in that same table. When we want to make an independent copy of a drawing, we should copy both the drawing as well as the drawing's table.
If we have two Manifold sessions open, we can Copy and Paste between them. That's a fast way to copy tables, drawings, and other components between projects. Remember, to copy a drawing from one Manifold session to a different session, copy both the drawing as well as the drawing's table.
We can move components, for example, into a folder, by using Cut and then Pasting the components into the folder, or we can use drag and drop.
For example, if we want to move several components we can click on the first one to highlight it and then Shift-click on the last and all the components in between will be highlighted as well.
We can then drag and drop the highlighted components into a folder, for example, into the Transportation folder as seen above.
Folders that are empty have neither a + nor a - icon. Folders that have contents have a + icon when closed. Clicking the + icon opens the folder.
Folders are a great way to keep a large project organized. We can click on the + icon box by a folder to open it and to see what is inside.
Right-clicking in the project pane calls up a context menu depending on where or what we have right-clicked, from a simple context menu to a more expanded menu:
Open |
Open the item in a window. |
Copy |
Copy highlighted items to the Clipboard. |
Paste |
Paste from the Clipboard. If the name of a pasted item is already in use, the system will iterate the name by adding an increasing number, such as Drawing 1, Drawing 2, and so on. |
Delete Related |
Launch the Delete Related dialog, loaded with all items closely related to this component. The dialog allows deleting them all or choosing which will be deleted. See the Show / Rename / Delete Related topic. |
Rename Related |
Launch the Rename Related dialog, loaded with all items closely related to this component. The dialog allows renaming them all to a new name pattern, or choosing which will be renamed. See the Show / Rename / Delete Related topic. |
Show Related |
Launch the Delete Related dialog, loaded with all items related to this component, including maps and layouts that use the component. See the Show / Rename / Delete Related topic. |
Create |
Create a new component. If the context menu was launched by right-clicking an existing component, launch the create dialogs pre-loaded with that component. |
Run |
Appears for queries and scripts. Run the query or script. |
Schema |
Appears for tables and queries. Launch the Schema dialog for that table or query. |
Export |
Launch the File - Export dialog with appropriate export options depending on context. For example, projects can be exported to three Manifold formats, drawings can be exported to various vector formats, images can be exported to various raster formats, and so on. See the Exporting topic. |
Properties |
Appears when a component has been right-clicked. Launch the Properties dialog for that component. |
The idea of related components is to find all components that will need to change if a specific component changes, for example, by being renamed or being deleted. The Show Related, Rename Related, and Delete Related commands appear in the Project pane when right-clicking a component: they make it easy to find related components, to rename them using a common pattern while updating properties as necessary, and to delete related components.
Manifold components can participate in large constellations of relationships, for example, a drawing that shows data from a table, and that drawing in turn may participate as a layer in dozens of maps, which in turn might appear in many frames within many different layouts. Manifold provides handy commands that allows us to rename components in a way that automatically preserves such relationships, updating properties, layer names and so on where necessary to use new names. See the Show / Rename / Delete Related topic.
One of the most powerful aspects of Manifold is how components can be based on other components. For example, a map is just a window that includes drawings, labels, or images as layers. A drawing showing roads might be included as a layer in dozens of different maps.
That is a wonderful thing, but it does mean that if we change the name of a drawing then all maps which use that drawing as a layer must be updated to use the drawing's new name. Because the map needs to change when the drawing is renamed, we say the map and the drawing are related to each other.
That often involves asymmetric relationships between components, like a map and drawings that are layers in the map. If we rename a map, we do not need to rename any drawings that are layers in the map. But if we rename drawings that are used in a map, the names of those layers inside the map's properties must be updated.
Another example of an asymmetric relationship is how drawings take the data they display from a table. Drawings are just viewports that do not themselves contain any data: a drawing is just a list of properties that say what table to use, what field in that table contains geometry data, and what styles to use for display.
That is a very powerful thing as well, because we can have many different drawings, all taking zero space, which show data from the same table in many different ways. But it also means that if we delete the table that stores data for the drawing, the drawing has nothing to show. Even if we only rename the table, the drawing's properties must be updated to the new name; otherwise, the drawing will not be able to find the data it is supposed to display.
Projects can have very many components, hundreds of them, which can have dozens of components related to each other. For example, a table might have dozens of drawings that display geometry from that table, and those drawings might in turn be used in dozens of maps, which in turn might be used in dozens of layouts. Deleting or renaming that one table could affect very many components scattered throughout the project.
Keeping track of so many relations manually is both difficult and error prone, so Manifold provides handy commands that automatically keep track: Delete Related, Rename Related, and Show Related. Those commands appear in the context menu that pops open when we right-click a component in the project pane. For example, if we right-click a table and choose Show Related, the dialog will provide a list of all related components.
The Filter button specifies what type of components are displayed and the sort order used.
By default all types of components are displayed. We can change that with choices in the drop down list on the Filter button.
If we use the Filter button to choose Tables then only tables will be displayed.
If we use the Filter button to choose Images then only images will be displayed.
Changing the setting of the Filter button will not open up folders. It simply changes the display of whatever folders are already open.
It is a good idea to get into the habit of resetting the filter button to All, after working with filters that only show some components.
When any text is entered into the filter box only those components which contain the text will be displayed. Case is not significant.
We start with a project containing tables and queries. The moment we enter a c character in the box only those components which contain a c character anywhere in their name will be displayed.
As we continue by adding an a character only those components which contain the two-character sequence ca anywhere in their names will be displayed.
All that matters is that the sequence exists in the name of the component and not whether it is in the beginning, middle or end of the name.
For example, entering the two-character sequence og will cause only the component named Catalog to appear.
We can use the filter box to help manage our projects, for example, using it to choose many components at once to add to a map, or to delete.
Suppose our project has many components that are alternate versions of components, all of which are named with a _a appended to parts of their names. We would like to clean up the project by deleting those alternate versions, which we no longer need. We can easily pick all of the alternate forms by first entering _a into the filter box, to show only those components.
Now it easy to pick all the _a components with a click and drag of the mouse. We can then press the Delete button to delete them. Clearing the filter box shows our newly cleaned up project, with no more alternate versions.
Components can have descriptions, which can contain whatever text we want. See the discussion in the Info Pane: Component topic.
In addition to descriptions appearing in the Component tab of the Info pane, when a component has a Description, hovering the mouse over that component will show the first line of the description as a tool tip.
Adding a data source to a project creates a section of the project that is a portal to another world, where what we see in that data source is not in the project file but is a view into a different file or server. When we open the data source to show the hierarchy within, the Project pane is giving us a view into the different world of that data source, where the rules that apply are the rules of that world.
For example, if we create a read-only data source, we can open the hierarchy within that data source and view what is in it, but we cannot add components within that world and we cannot change components within that world.
Consider the above illustration, a section of a screenshot shown in the Example: Create a Drawing from Read-Only Geocoded CSV File topic. The lock icon on the Source data source indicates the portion of the hierarchy shown within the data source is read-only.
We cannot create any new components in that portion of the Project pane because that portion resides in the different world of a read-only .csv file. We can open the Dots table and read data from it and the table can participate in queries by providing data, but we cannot change anything in that table. For example, we cannot change the schema of the table by adding fields or indexes to it and we cannot edit values within records in that table.
The region bordered in green and marked Read / Write is part of the world of the local project. We can do whatever we like in that region, such as right-clicking there and using Create - New Drawing to create a new drawing in the project.
Consider the above illustration, a section of a screenshot shown in the Example: Create a Data Source within an Existing Data Source topic. It shows worlds nested within worlds. The hierarchy within the Europe data source is a world within the .map file called Europe.map that was linked in as a data source into our Project. The hierarchy our Project pane shows is a window into the world of that other .map file. It shows that within the Europe map file's world there are yet three more worlds, a linked in data source called England and two more linked in data sources called France and Germany, all of them linked in from other .map files.
One of the worlds, that is, data sources, has been expanded so we can see a window into that world as well, the world of the Germany.map file. In the above illustration all of the linked in worlds are themselves Manifold Release 9 .map files that have been linked in without any read-only restrictions, so we can work with them with full Manifold capabilities. The rules which apply within those worlds are the same as the rules which apply in the local project, since Manifold is seamless in that way.
However, if the world of, say, the Germany data source was that of a database such as SQL Server or PostgreSQL, then whatever rules which such databases apply within their own projects, for example, what data types are available, would apply within that hierarchy.
The example above shows simple linking of files, but a data source can be a very big thing, such as a database hosted on an enterprise-class DBMS server such as SQL Server or PostgreSQL. In that case, the rules which apply within the hierarchy of such data sources will be whatever rules such DBMS packages apply, for example, what data types are available and what names are legal for fields or indexes within tables.
As we get more into the data management end of GIS, we start thinking about data sources as databases, and one of those databases is the native Manifold database of the world within a .map project file. Manifold is very much a database system, a system that is tuned and optimized for the needs of GIS and which is built upon the Radian parallel database engine.
In the illustration above we have opened a project to show the portion of the project that is stored within the .map file, and which is operated by the native Manifold database engine, and the portion of the project that consists of data sources which are linked into the project, but where the data stays resident in their host database environment and where the rules of what can be stored in that environment are determined by the external database engine that hosts the data.
The project shows a data source for a classic, enterprise-class DBMS, PostgreSQL, that is opened to show the contents of that external database. Manifold provides facilities to show the contents of data sources, both external files as well as servers, and to enable work with them using the same interfaces and commands, whenever possible, as with components stored within the .map file. Therefore the contents of the PostgreSQL database appear using icons and component types (queries, drawings, labels, tables) that appear the same as components in the Manifold database / .map file portion of the project.
The project also shows a data source linked in from a file-based, lightweight database, GPKG, and a data source linked in from an ESRI "geodatabase," the Naperville gas company example familiar to many ESRI users. It also includes a web server data source, a Bing Maps data source, which many people might not think of as a database but which in effect behaves as one, albeit a simple database that serves a read-only table and drawing.
The rules within most such databases differ in details, such as what names are allowed for fields, whether the name of an index must be unique throughout the entire database or whether it is sufficient if the name is unique within each table, and so on. Manifold automatically adapts to the rules of major DBMS packages, such as Oracle, SQL Server, MySQL, PostgreSQL, and DB2, to make it easier to utilize Manifold GUI features seamlessly such as copy and paste, with reduced need to keep in mind the differences between databases.
By default, Manifold arranges data sources at the top of the Project pane (and also at the top of any folders), which can give the impression from illustrations above that the distinction between data stored in a Manifold .map project and data stored externally is the position. That is not the case, as we are free to move external data sources into folders that may be located throughout the Project pane. Since folders are listed in alphabetic order along with other components, that can result in external storage intermixed with local, .map storage.
Consider the illustration above, where we have dragged and dropped various external data sources into folders that are located throughout the Project pane. The result within the Project pane is a mix of external storage and Manifold .map storage.
Beginning at the top, we have a folder called Locations with contents that are stored within the Manifold .map project file. Next, we have a folder called Remote DBMS that contains two remote data sources, one for a Postgres DBMS and the other for a SQL Server DBMS, that are both stored outside the .map file. The Remote DBMS folder also contains a local component, a Comments component called Notes, which is stored in the .map file.
Within the Water Distribution GDB folder we have a remote ESRI file geodatabase called Remote GDB that is stored externally in the ESRI GDB files. Next comes a Web Servers folder that contains three image server data sources, stored on Microsoft's Bing servers and on OpenStreetMap servers. But the URLs used comments component is stored locally, as are the Map and OSM Map components at the bottom of the Project pane.
In the illustration above, the top level folders are within local, .map storage (the WaterDistribution folder within the Remote GDB data source is within the ESRI GDB file set). If we right-click onto a folder name, such as Web Servers, and choose Create... in the context menu to create a new component, that new component will be created within that folder and stored in the Manifold .map project file. That folder may also contain external data sources, as do the Remote DBMS and Web Servers folders in the illustration above.
Whether the external data sources shown in the illustration above are read/write or are read-only depends on the data source, our access rights and other factors. For example, the Bing and OpenStreetMap data sources are read-only, while the Postgres, SQL Server and GDB sources are read/write.
To provide a consistent, orderly, user interface, when connecting to external data sources like DBMS servers, Manifold will automatically generate virtual components, such as folders, some Manifold system tables, and some automatically-generated drawings, that appear to be in the database but which are generated on the fly from metadata and are not a new, real table or other new item added to the database. See the Real and Virtual Components topic for discussion and examples.
Most software, including Manifold, makes extensive use of dialogs that are modal. A modal dialog grabs the user interface so we must complete our work with the dialog, usually by clicking an OK, Cancel, or some other button, before we can continue working with other parts of the program. The term modal comes from the dialog's insistence that whatever user interface mode the dialog applies is the only one that is active.
A non-modal or modeless pane is one which does not grab exclusive use of the user interface. The Project pane, the Layers pane, and the other panes are non-modal. We can have the Project pane open to show us a list of what is in the project even as we continue work with other dialogs. Display-only non-modal panes like the Project pane are fairly common in software, but in addition Manifold provides the exceptional ability to control the system using sophisticated, display + command, controls within the Layers pane and within an array of very powerful non-modal panes such as the Style pane, or the Transform pane.
When we call up a pane that pane is non-modal: it is always on, ready to display information or to accept a command with no need to enter or exit a dialog, and without locking up the rest of the program. We can move the mouse away from the pane into a different window, perhaps to pan or to zoom that window, or even into a modal dialog, to continue working however we like and the panes will automatically adjust to what we are doing. We can go back and forth between panes and other windows, panes, dialogs and other controls without any need to exit or to close the Project pane or other panes.
Most Manifold users will not close panes, but will just move them out of the way if not needed, perhaps in a stack behind other panes that are used more frequently. But if we like, we can close and open panes.
MFD_ is reserved - All names starting with mfd_ (case not significant) are reserved for use by the system. Names for fields, indexes, constraints, tables, components other than tables, properties... everything. Do not name anything beginning with mfd_ or MFD_ or in any upper or lower case combination of those characters. mfd_id is a reserved name for a field in tables, to be used only for the identity field that Manifold maintains as an automatically unique value field.
Deletions are Confirmed - Deleting components in the Project pane displays a confirmation dialog. The default button in the confirmation dialog is set to Cancel. If we do not want to see the confirmation dialog, we can check the Never show this again box. Another way to eliminate the confirmation dialog is to uncheck the Confirm deleting components box in the Tools - Options dialog.
Show / Rename / Delete Related
Example: Project Pane Tutorial - In this example we take an extended tour of the Project pane, engaging in a variety of simple but typical moves that are illustrated step by step.
Example: Create Maps - Maps are used to show layers that can be drawings, images, and labels. This topic shows how to create new, blank maps, how to create maps from existing components, and how to create maps from other maps.