wiki:wxGUIDevelopment/New_Startup

Version 46 (modified by wenzeslaus, 5 years ago) ( diff )

Add old loc wiz tickets

Proposals for a new GRASS GIS startup mechanism

Introduction

GRASS GIS 6.4 Tcl/Tk Startup Window GRASS GIS 6.4 wxPython Startup Window GRASS GIS 7.5 Startup Window
GRASS GIS 6.4 Tcl/Tk GRASS GIS 6.4 wxPython GRASS GIS 7.5

This page is meant as a brainstorming exercise to collect ideas on how to make GRASS GIS startup more newbie-friendly. The general idea is to make initial contact easier and with a less steep learning curve.

This discussion also contains a paradigm choice: should GRASS continue to demand a choice by the user about the projection system to use, possibly making this choice easier and more transparent, or should GRASS start in an arbitrary projection system (lat-long has been suggested) and then inform the user that she might want to change system, or highlight the issue as soon as the user tries to import data which is not lat-long ? To be discussed...

Keep current paradigm, but make contact easier

Proposal 1 (Moritz): Make startup screen more newbie-friendly

In this proposal, the idea is to keep the current paradigm, but to use vocabulary that is more easily accessible to the user and to guide the user through the choices in a different way than currently.

The startup screen is organized in three tabs (but one could imagine three initial buttons that then lead to the next screens). Each tab provides a small collection of easy choices corresponding to different possible paths into a location. Locations are called 'projects' to correspond to what a user might find elsewhere.

  • Tab 1 provides easy entry into the creation of a new project. In the new project (aka location) the PERMANENT mapset is used and the interface opens up immediately:

  • Tab 2 provides access to pre-defined locations (similar to the current "Download" button). The OSM data is just a brainstorming idea to allow the user to designate a zone on a map and download main OSM layers for that zone:

  • Tab 3 provides access to existing projects (aka locations)

Proposal 2 (Gcmillar): Quick access through well-designed tabs on the side

This proposal retains similar structure to current paradigm, with idea to use tabs (on the side) designed with simple images and one-word descriptions for what they access ("New", "Recent", and "Open").

Splash Screen

GRASS startup "Splash screen"

  • Splash screen appears when users first open GRASS. It was decided this should be the first thing users see, instead of simply opening to one of the three tabs (below) so that users do not become frustrated from seeing options they do not need (e.g., user only wants to open project they have been working on in "Recent" tab, and do not care to see options for starting a new project in "New" tab (see below).
  • A better-designed image to use in splash screen may be needed.

"New" Tab

Designed for the first-time user and / or any user looking to create new Locations, Mapsets, and / or Workspaces.

GRASS startup "New" tab

  • "New Location" option opens pre-existing wizard for defining a new location.
    • Preferably when this is selected, a dialogue window asks the user, "First time using GRASS? Check out the Online Manual (linked) for tips on getting started." This can be disabled to not be shown anymore by more experienced users.
      • This message could also be shown on Splash Screen.
  • "Template 1" & "Template 2" options open simple sample datasets (e.g., county boundaries) in commonly used locations (e.g., NC) to provide new users a place to start from (especially users just looking to explore).
    • "Template 1 & 2" names are temporary, should be renamed to describe dataset they contain.
  • "More Templates" option opens wizard for browsing downloadable sample datasets.
    • Wizard could contain option to browse for more templates online.
  • "New Mapset (Existing Location)" option opens wizard for user to select a Location (that the user has previously defined / created) for which a new Mapset will be created in.
  • "New Workspace (Existing Mapset)" option opens wizard for user to select pre-existing Location & Mapset (user-defined) for which a new Workspace will be created in.
  • "More Options" option is not yet well-defined. Suggestions for what this should open are welcome.

"Recent" Tab

Designed for quick access to recently used data.

GRASS startup "Recent" tab

  • "Recent" Tab separates all recently used data into three categories: Locations, Mapsets, and Workspaces.
    • GRASS session should be able to be started with selected data from any of the three categories.
  • On the right, "Selected Data Information" displays relevant and necessary additional information about the selected data.
    • Helps inform user that the data they have selected is what they want / need to open, instead of having to reopen after discovering it wasn't the data they had in mind.
    • "More Info" radio button should display further information about the selected data (i.e., txt file is displayed, containing extended descriptions of the to-be-opened data).
  • Number of recently used data displayed in each category is not decided upon (above example shows two, but three may be better option).
  • "Database" category may be needed.

"Open" Tab

Designed for more experienced users looking to open data already on computer.

GRASS startup "Open" tab

  • "Current Database Directory" shows directory the user is currently in, and will work from when data is opened.
    • Option is given to change directory with "Change" radio button.
      • "Open Existing GRASS data" window below should then automatically refresh to display change in database.
  • "Open Existing GRASS data" displays data in database in same tree-like structure as the "Data" tab in Layer Manager.
    • Each data type (Database, Location, Mapset displayed with matching "icon") for easy identification.
    • Display of Workspaces may be needed as well (above example only uses screenshot of "Data" tab in Layer Manager).
  • "Selected Data Information" is again showed on the right (same functionality as in "Recents" tab).

Change paradigm

Proposal 1 (Moritz) : Open into a predefined lat-long location but give information message

In this proposal, GRASS GIS launches directly with layer manager and map display, and displays a world map. The location is a lat-long system with a worldwide, 1 degree-resolution region. Before the user can interact, however, a message is displayed informing about the importance of projection choice for spatial analysis. The user has the option to get out of that message to simply explore GRASS GIS in the default location, or to create a new project with her own data:

Notes from discussions

NCSU GeoForAll Lab, May 30

These are notes from members of NCSU GeoForAll Lab.

  • Similar window as now but just hide path to GRASS GIS Database. (PT) Automatically find or create the directory when started. (VP)
  • Something like tabs (4 or more) on the side from most basic on the top to most advanced at the bottom. (GM) Maybe button, not tabs. (VP)
  • Sample datasets translate to templates in other software, so they should be called templates (at least in this context). (PT)
  • The default should be "recent mapsets/workspaces" (not applicable for the first time user).
  • What came up, but is not part of the startup:
    • Different layouts of GUI (maybe just too many options)
    • Scariness of and bad associations with terminal window/command line on Windows (but consistency and most people seem to ignore it anyway)
    • Low resolution, all the time the same splash screen, e.g. Blender also includes version number (splash is the same as about box in Blender). Different image for each release can be achieved by creating a pool of ~20 images (one for each minor (x.y) release).

grass-dev mailing list: a proposal to rename location

These are notes from a discussion on mailing list.

  • The term location in GRASS GIS refers to collection of data with common CRS/SRS. (MB)
  • The term location refers to something else, more general in today's GIS world and geospatial field in general. (MB)
  • GRASS (GIS) Database (Directory) can be used as a project similarly to how Location or Mapset can be used (just depends on the user). Potentially, non-GRASS data can be stored in that directory as well. (NA)

NCSU GeoForAll Lab, June 5

These are notes from members of NCSU GeoForAll Lab.

  • What New can split to (all overlapping options):
    • new location (wizard)
    • loc from template
    • new mapset (new from recent?)
    • new from recent
    • more (options option) -> wizard
  • Word open is not properly describing what is happening. Replace it with Connect to Mapset or Open Workspace. It is perhaps open "map" (i.e. workspace or mapset) or start a new session. (PT)
  • CRS of Location should be easy to view by user (#992, #3580). I have started to just name the Location with EPSG code. Tend to use Mapsets to organize projects. The work I've been doing is all within same geographic area, so I want easy access to the same base layers and data from other projects that use same EPSG. (KM)
  • No right click in startup for additional info. "Show me more" button is better. (PT)
  • Text like map names and counts won't be enough for visually oriented people like cartographers, thumbnails of maps will be needed. (PT)
  • Workspace file (VP)
    • Save D/L/M (#3575 Associate database/location/mapset with workspace file)
    • Save CWD (#3573 Save current working directory in wxGUI workspace and use it)
  • We need the recently opened "files":
    • Recent workspaces
      • #2604 recently open workspace in wxGUI
    • Recent mapsets
      • maybe shown at the same place as workspaces in a separate list or distinguished by a graphics
      • #3584 Remember recent mapsets
    • Recent locations
      • useful for creating new mapsets or switching between mapsets
      • it might be already covered by mapsets
    • Recent or all databases
      • good for list/tree such as the one in Data tab, or selection in the current startup
      • #572 Remember recent GIS Data Directory
  • Template should have something there when opened (i.e. couple maps need to be displayed, so probably workspace needs to be opened).
  • Workspace as part of location or mapset in the sample location (aka template). (VP)
  • What came up, but is not part of the startup:
    • It is hard to "find" the Data tab (or understand its usefulness). Perhaps there should be additional path ways to find it. (KM) (This is (or at least was) a common case also for Modules tab. (VP))
    • The place where location/mapset things are in the menu might not be optimal. It is in Settings as GRASS working environment together with Preferences (e.g. which font you want to use) and Addons extensions (what extra modules you want to install). (The other two items Computational region and Projections are more related.) For example when we consider that mapset path would be stored in the workspace file (#3575), mapset could be then switched from File > Workspace and Settings > GRASS working environment > Change mapset. If database/location/mapset is the data we are using/opening/connecting to then why it is in Settings and not e.g. File menu? (VP)
    • Number of automatically displayed layers after import should be limited (import of temporal multiband leads to a really long rendering time). (VP)
  • After meeting notes:
    • Create location from file > Import file > GUI opens but it is empty. This could be solved by generating some workspace (like the mapset bound workspace) during this first start. (VP)

Anna and Vaclav, June 18

Discussion about Proposal 2 (Gcmillar): Quick access through well-designed tabs on the side.

  • The good parts:
    • Recent items
    • Quick access to a lot of options
    • Visually appealing
    • Efficient and simple design with places for additional information and metadata
    • It is a significantly redesigned GUI aiming at both new and current users
  • Splash Screen:
    • Does not seem useful enough by itself even with additional info.
    • Merge with Recent.
    • May not serve well as true splash screen since it may not be possible to load it fast enough.
  • New Tab:
    • A lot of depends on template vs sample dataset controversy.
    • First row seems overloaded: loc wizard/new location button, templates/sample datasets, shortcuts from loc wizard.
    • Second row seems empty: Only 3 options and the last one is just a placeholder.
    • New workspace button: This is basically the current state, i.e. start an empty GUI. Is this how people think about it? Do we want to promote this way?
      • It seems completely counterintuitive for current advanced users, but might be fitting to new users.
      • Making Workspace part of the hierarchy (and e.g. putting it to the Data tab tree) is problematic because db/loc/mapset are here to separate data while the workspace, although often showing subset of what is in the mapset, puts the data together rather then separates them (even from diff mapsets).
    • New mapset button: This will be also possible from the Open tab because that's where the advanced users are likely to go. It may be available also from the Recent tab.
    • New location is actually a new empty/blank location, the others are from the template, so if two words, then "Empty location".
    • New two rows suggestion:
      • First row - Empty location: Using EPSG, XY, WGS84, ..., More
        • Items from the first page of loc wizard plus few often used ones (either by everybody like WGS84 or by the user (which requires to store e.g. recently used EPSGs)), i.e. "quick access", with More button going to loc wizard.
      • Second row - From template/With data: Sample NC SPM dataset, LL World Template, ..., More
        • Sample datasets and templates (whatever the distinction is or is not, it is arguable that template without data is more the "quick access" button from above) with More button going just to a full list (of whatever was installed as template to the operating system or is available online).
      • Possibly change oder.
      • Problems:
        • No place for New Mapset which seems quite fitting (and New Workspace if we go with it)
        • Empty location part contains the "quick access" items taken from loc wizard but these include "From existing data" which possibly import existing data.
    • Recent tab:
      • Merged with the Welcome/Splash Screen (just different content for new and returning users, but same default tab)
      • Details if present at all should be part of the item in the selection, otherwise it is not quick enough.
      • Workspaces will need a full paths. Mapsets locatons.
      • Locations here need to be reconsidered. It seems inappropriate here (similarly to database dir) because mapset needs to be created in it first. Even if we consider Workspace subitem of Mapset, an empty workspace is created without a name (file name is selected later), but Mapset always requires name to be created (similarly location would require CRS/loc wizard). On the other hand, new mapset from recent location is exactly what students need when following assignments in a course which is using one location (or couple of locations).
      • These can be in further tabs to show more (items and kinds of items), but that 1) makes it more nested 2) potentially breaks the one click advantage (but we also could remember the last tab user used)
    • Open tab:
      • Why not to have multiple databases in the first level of the tree (see e.g. #3576)?
      • Should the maps by part of the tree or of the info part?
      • It could show locked mapsets on Linux/Unix by using a different icon.
      • Last used one could be preselected as it is now. Additionally all recent items could use different icon.
      • With the functionality of data tab/data catalog (adding new locs or mapsets), renaming, it would be similar to the current page which is great for advanced users, but it may interfere with simplicity and it may create confusion (more than one way how to do a certain thing, it is tab open, but it is actually doing management, maybe there should be only the non-destructive actions, so new and maybe rename, but no remove).
      • Might the go-to tab for advanced users, should we make it possible to show it as the default one?

Martin and Vaclav, July 12

Short comments on Proposal 2 (Gcmillar): Quick access through well-designed tabs on the side.

  • Recent:
    • Mixes Workspaces, Locations and Mapsets, confusing?
    • "Project" as mixture of Workspaces, Locations and Mapsets
  • New:
    • New Workspace only, choice of
      • New WS with New Location
      • New WS with New Mapset in existing Location
      • New WS with New Workspace in exising Mapset

NCSU GeoForAll Lab, August 28

These are notes from members of NCSU GeoForAll Lab (AP, GM, VP).

  • Splash:
    • Splash is needed for the main GUI not the startup.
  • If not splash, what is the default?
    • If new user (no recent), open the New tab.
    • If there is recent, open the Recent tab.
    • But what if we there is no recent, but there is GRASS database in one of the usual places (e.g. ~/Documents/grassdata after what installer on Windows creates it)?
      • Possibly remove that feature from the Windows installer since it is for beginners and this should superseded if not already superseded by the Download button in 7.4. This should take care of most novice cases because there is no such option on Linux).
  • Recent:
    • The info/metadata should be in the list, not after clicking.
    • However, implementing just the list is much faster, so we should start with that.
  • Workspace importance:
    • If we auto load last autosaved workspace for each mapset or e.g. its default workspace in case of sample datasets, then start with empty workspace makes more sense, i.e. is more important/needed.
  • 3-4 tabs option:
    • Recent
    • New
    • Open
    • Manage (optionally merge with open)
  • 4-button option for the New tab:
    1. New blank/empty location
      • Possible names:
        • Create location
        • New empty location
        • New blank location
        • New location
        • ...
      • Goes to location wizard
    2. New location using sample dataset (current Download button)
      • Possible names:
        • Get location
        • Download location
        • Create location from sample data
        • New location from sample data
      • Goes to selection of downloads
    3. New mapset in/from existing location
      • Divides into:
        • All locations
          • In current database? In all past or recent databases?
        • Recent locations
    4. New (blank) workspace in/from/for existing mapset
      • Divides into:
        • All mapsets in all locations which is basically whole (current main GUI) Data tab tree (datacatalog) whether we limit ourselves to one database or not.
        • Recent mapsets
    5. Additional section at the bottom could contain small buttons covering the "quick access" cases from below.
      • Advantage of one list is that the suggested downloads like NC SPM disappear after some which is probably appropriate for most users.
  • 2-3 groups option for the New tab:
    1. Blank/empty locations: WGS584, EPSG, Existing File, UTM, XY, More
      • Most of these lead to further selection.
      • Most of them are for skipping the second page in location wizard (choose method).
      • More goes to standard wizard.
      • These could dynamically change, e.g. by adding recently used EPSGs and removing UTM if option not used.
    2. Download (sample data): Full NC SPM, Basic NC SPM, ..., More
    3. New Mapset
      • Perhaps more common for 2nd time users than new location.
      • But Does not really fit here
      • Would lead to selection of locations (see above)
      • Most similar button is a New Workspace button
      • To make it a 3rd row we could show buttons for creating mapset in a recent location
  • General Data tab (datacatalog)/Manage tab functions
    • Reproject whole mapset function
    • Reproject whole location function
  • Templates versus sample data:
    • There is also create location on the fly automatically from local OSM data and other sources.
    • Although many programs have templates like office or graphical programs, sample dataset is what usually comes with analytical programs.
    • However, concept of document/project templates is still useful as an argument for not showing blank map display when opening a sample dataset.
      • We should put a sample, default or recent workspace into to each mapset.
        • There can be one recent for every mapset. Last closed g.gui wins.
        • Similar to computational region (WIND file) but autosaved by GUI.
          • There can be even an analogue to a default computation region, i.e. a default workspace in PERMANENT mapset which is used when the mapset does not have its own. This does not need a separate file as the PERMAMENT recent can be used as the default for simplicity.
        • Works well enough for opening the sample dataset for the first time.

GRASS GIS Community Sprint Prague 2019

Notes

Notes from VP, AP, ML, OP by VP.

  • No redoing database/location/mapset mechanism.
  • Maybe use different names, but perhaps better explain and present in the first place because there might be lots of conflicts with names such as project.
  • Create "grassdata" dir automatically if starting first time (and no grassdata exists)
    • Windows: in Documents
    • Linux: in home
  • "Create new location" ("create project")
    • From existing file
      • Needs:
        • file name
        • location name
    • From EPSG
    • "Something else"
  • Current location wizard should simplified but kept
    • Simpler first page and simpler dialogs if needed, but same options as now, so it will in fact add pages, but it should be simpler for users.
    • Interface issue: Next button versus "Do this button"
  • Use data catalog widget including data items in startup
    • However, the data part needs to be lazy loaded.
      • Add lazy loading to Data Catalog
      • Add "Show content" on right click (any level, just recurse down)
  • Open recent tab (see earlier above)
    • Show the same tree as in Open tab but with "recent filter"
      • Keeping list of recent for every kind
      • Show if recent and not already shown as a parent
    • Show all locations, show all mapsets context menu button might be needed.
    • Example for 3 recent items of a kind (tree contains last 3 mapsets, last 1-2 locations, 1-2 databases):
      • /home/grassdata
        • nc_spm
          • PERMANENT
      • /home/grassdata
        • nc_spm
          • landsat
      • /home/grassdata
        • Oregon
          • PERMANENT
      • /project1/grassdata
        • California
      • /home/project2/grassdata
      • /home/project3/grassdata
  • Data tab:
    • Include workspaces
      • Workspaces could be read and put under the mapset
    • Roots:
      • Databases
        • /home/grassdata
        • /home/project1/grassdata
        • /home/project2/grassdata
        • /data/grassdata
      • Workspaces
        • My Workspace 1
        • My Workspace 2
    • Collect workspace paths when saving them
    • Collect database paths when starting in them
  • Workspaces (possibly) inside mapsets in Data tab based on mapset stored there
  • Filters:
    • Recent
    • Workspaces only
      • ie mapsets with workspaces only
  • Workspaces could be also stored in mapsets
  • Priorities:
    • Workspaces not priority for new users
    • Multiple databases not priority for new users
  • Data tab as default (or first) tab in the Layer Manager to lead people to data in the current location.
  • Simpler first page in the location wizard
    • Challenge: Clicking a big button is simpler, but wizard by default uses radio buttons and a next button.
  • Use in-GUI documentation in the startup and remove as many buttons as possible, replace by context menu
    • Challenge: Search requires a widget (nested in context menu is strange)
    • Some buttons anyway needed for quick actions

Roadmap

Location wizard (no dependencies):

  • Remove map picture
  • First page:
    • Database directory not editable but mentioned
    • Location name marked as required
    • Location title (renamed as description) marked as optional
    • "Set default region and resolution" removed and set automatically if info is available
      • Tickets in the opposite direction: #504, #592
    • "Create user mapset" removed (user can do it from the data catalog)
  • EPSG page:
    • Remove path to "/usr/share/proj/epsg"
      • Advanced users can use env var
      • If broken on Windows, new installer/package needed anyway.
    • Remove search? (that can be a separate page)
    • Add link to epsg.io.
    • Show the matching CSR as user types EPSG
    • "to WGS" dialog as an additional page
  • Choose projection page (Projection from a list choice)
    • Rename to something like define custom, esp. if search is removed from the EPSG page.
    • Add EPSG definitions to the first table? (if not see below)
  • Add a page to search for CRS defined with EPSG
    • Basically the current EPSG page
  • Final page:
    • Try harder to show EPSG, e.g. in case file was used
    • PROJ.4/WKT definition in scroll area
      • Scroll area is already there
      • Add mechanisms to show WKT for new versions Proj.

Data catalog (no dependencies):

  • Add "set level" function to API to not load data
    • There needs to be a choice in context menu to load the data
  • Add "filter by item type" function to API to load or not load workspaces or show or nor show mapsets and locations
    • This needs to be specific for each subtree
  • Show sample location to download in the data catalog
    • Challenge: Naming
  • Add multiple databases to data catalog
    • Button to add existing or new database
  • New location action from context menu on a database node (#3578)
    • This needs a separate widget for selecting from options: EPSG, File, Download, Other
  • New mapset action from context menu on a location node (#3579)

GUI (no dependencies):

  • CLI parameters for g.gui:
    • load (display) all data in location as layers
    • prompt user to import more data
    • To be used after new location created by the startup script
    • Either as flags (-d -i) or as an actions option (actions=load-data,suggest-import)
  • Collect recent mapsets (#3584), locations, databases (#572)
    • Certain number or just collect all ordered or with dates
    • Each level separately
  • Collect recent workspaces (#2604)
    • Certain number or just collect all ordered or with dates

Data catalog changes which need "recent info" to be collected:

  • Filter in data catalog showing only recent (#3576)
  • Order in data catalog by time (most recent on top)
    • Also add button to filter alphabetically
  • All (previously saved) or recent workspaces shown in the startup window

Location wizard changes inter-depended with a set of new buttons in startup:

  • Second page depends on how the wizard was started
    • Jump to EPSG page or georef file page if started by those buttons
    • Go to decide what way to go page (current second page)
  • Page for deciding what way to go (current second page):
    • Only options not covered by the buttons in the startup screen or initial dialog from GUI
      • From WKT (is it useful, perhaps yes, but not only as a file but also as text)
      • XY
      • Projection from a list (or search for projection, add EPSG list?)
      • From PROJ.4 string (isn't this the same as WKT once we have Proj v6 and proj4 strings are completely dropped?)
      • Add also option to search for CRS defined by EPSG? (basically the current EPSG page)

Startup window changes inter-depended with changes in location wizard:

  • Button to create a new location
    • Next step
  • Results in two buttons new location and show sample data to download
  • A "show data" choice per item in context menu
  • Multiple buttons in the toolbar under the data catalog tree
    • Beginners can ignore
  • Bigger buttons on the side for the important things

See also

Tickets with startup component

defect type tickets:

#2021
encoding information in locale gets lost
#2511
Starting GRASS in mapset which is not owned by the user
#2887
GUI startup: encoding error if location with accent has been renamed to other name
#3252
Provide an error message pointing out that session is not active
#3500
starting French WinGRASS sometimes fails because of localisation errors
#3957
Clicking Help on first screen does nothing

enhancement type tickets:

#2639
grass command should read commands from stdin as an interpreter would do
#3258
Launching in text mode should not automaticly use location/mapset from rc file
#3573
Save current working directory in wxGUI workspace and use it
#3959
Interface needs to warn that directory must be created before start
#3996
Allow multiple --exec's

task type tickets:

#2681
Remove legacy meaning of LOCATION variable

Tickets with startup keyword

#992
GRASS startup screen should provide metadata about available locations
#1204
associate *.gxw files with grass executable
#3253
Main GUI fails to start when g.extension fails when fetching the addons
#3309
Avoid errors in parallel creation of tempfiles
#3573
Save current working directory in wxGUI workspace and use it
#3584
Remember recent mapsets
#509
wxgui: startup menu crunched on small display
#3956
Allow interface text to be copyable with mouse

Tickets with datacatalog keyword

#992
GRASS startup screen should provide metadata about available locations
#3521
wxGUI datacatalog: allow actions on multiple selected files
#3576
Show recent GRASS Databases in the Data tab
#3580
Show info about a Location in Datacatalog
#3581
Show info about a Mapset in Datacatalog

Tickets with workspace keyword

#1204
associate *.gxw files with grass executable
#2604
recently open workspace in wxGUI
#3406
g.gui.animation: save to workspace
#3573
Save current working directory in wxGUI workspace and use it

Tickets with location wizard keyword

#592
wxGUI: allow location wizard to set DMS bounds
#1252
wx location wizard fails to create a winkel tripel location
#1995
wxPy loc'n wiz: datum transform "0" do nothing still gets default terms set
#1969
wxPy loc'n wiz: hardcoded colors not compatible with random desktop themes
#1993
wxPy loc'n wiz: doesn't complain about garbage terms

Attachments (12)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.