[[TOC]] = wxGUI Development = wxGUI is described at user level here: * [http://grass.osgeo.org/grass70/manuals/html70_user/wxGUI.html Manual pages] * [http://grass.osgeo.org/wiki/wxGUI User wiki] This page contains wxGUI developer-related issues. == Empty slots == List of major tasks to be implemented for wxGUI which are not assigned to any developer. Please don't hesitate to join the wxGUI development group. * '''[http://grass.osgeo.org/wiki/WxGUI#General_GUI_Design General GUI desing]''' (Python/wxPython required) * '''Clean up/update imagery modules and library''' (C required) and [http://grass.osgeo.org/wiki/WxGUI#Imagery_tools integrate these tools into wxGUI] - e.g. {{{i.class}}}, {{{i.ortho.photo}}} (Python/wxPython required) * [wiki:wxGUIDevelopment/wxIClass wxIClass] is currently under development * Clean up & integrate [http://grass.osgeo.org/wiki/WxGUI#Data_Catalog data catalog] into wxGUI in trunk * Improve '''[http://grass.osgeo.org/wiki/wxNviz 3D view mode]''' * Improve '''vector querying''' by allowing interactive queries using a line or polygon drawn by the user on the display canvas. This would be facilitated by improvements to v.what that allows it to find all vector objects within (or optionally intersecting) a line or polygon defined by a set of coordinate pairs. This could be done via v.select but it sounds like v.select might be problematic to use in this way. * Create a new python wrapper script for '''thematic mapping'''. This would include d.thematic for areas, and scripting code (possibly salvaged from d.vect.thematic) for points and lines. It also would need legend generating code. * '''Times series / voxel slices visualizer''' for GRASS7 - Given the increasing need to support extensive time series of data from simulations or remote sensing, it should combine and enhance capabilities currently available through combination of xganim, d.slide.show, !ImageMagic and various custom scripts to visually analyze series of raster and vector data using animations, frame browsing and series management. In addition to the current xganim (or its tcltk version) + d.slide.show capabilities the following would be desirable: * interactively delete and add frames to the series (similar to moviemaker or iMovie tools) * add dynamic time bar, static scale bar and legend to the animation * save series of maps as series of png images or an animated gif or other movie format if feasible * query the raster series - click on a grid cell will return graph that shows evolution of values in that cell (similar to the profile tool but this runs through time) * animate/browse horizontal (or vertical) slices through voxel model without the user having to convert the voxel data into series of 2D raster files. == Changing GUI modules directory layout == ''Background:'' Currently all GUI modules are located in directory `gui_modules` {{{ colorrules.py dbm_base.py dbm_dialogs.py dbm.py debug.py disp_print.py gcmd.py gcpmanager.py gcpmapdisp.py gdialogs.py ghelp.py globalvar.py gmodeler.py goutput.py gpyshell.py gselect.py histogram.py layertree.py location_wizard.py mapdisp.py mapdisp_statusbar.py mapdisp_vdigit.py mapdisp_window.py mcalc_builder.py menudata.py menuform.py menu.py nviz_mapdisp.py nviz_preferences.py nviz.py nviz_tools.py ogc_services.py preferences.py prompt.py psmap_dialogs.py psmap.py render.py sqlbuilder.py toolbars.py units.py utils.py vclean.py vdigit.py workspace.py wxnviz.py wxplot_dialogs.py wxplot.py wxvdigit.py wxvdriver.py }}} The proposed ''packages'': * `core` for core non-GUI classes (gcmd, debug, etc.) * `forms` for autogenerated GUI dialogs * `gui_core` for core GUI classes (goutput, etc) * `lmgr` for Layer Manager * `mapdisp` for Map Display * `modules` for non-core components (vector digitizer, georectifier, etc.) {{{ /gui/wxpython | |- core |- forms |- gui_core |- lmgr |- mapdisp |- modules |- dbm |- colorrules |- gcpmanager |- histogram |- location_wizard |- misc |- modeler |- nviz |- ogc_services |- psmap |- scatterplot |- vdigit |- wxplot }}} The proposed ''modules'': {{{ core/cmd.py gcmd.py:class Popen(subprocess.Popen): gcmd.py:class Command: gcmd.py:class CommandThread(Thread): core/debug.py debug.py:class DebugMsg: core/exceptions.py gcmd.py:class GException(Exception): core/menudata.py menudata.py:class MenuData: core/render.py render.py:class Layer(object): render.py:class MapLayer(Layer): render.py:class Overlay(Layer): render.py:class Map(object): core/settings.py preferences.py:class Settings: core/units.py units.py:class BaseUnits: core/workspace.py workspace.py:class ProcessWorkspaceFile: workspace.py:class WriteWorkspaceFile(object): workspace.py:class ProcessGrcFile(object): forms/core.py menuform.py:class GUI: menuform.py:class FloatValidator(wx.PyValidator): forms/frame.py menuform.py:class mainFrame(wx.Frame): menuform.py:class cmdPanel(wx.Panel): menuform.py:class GrassGUIApp(wx.App): forms/help.py ghelp.py:class HelpWindow(wx.html.HtmlWindow): ghelp.py:class HelpPanel(wx.Panel): forms/thread.py menuform.py:class UpdateThread(Thread): menuform.py:class UpdateQThread(Thread): gui_core/dialogs.py gdialogs.py:class ElementDialog(wx.Dialog): gdialogs.py:class MapLayersDialog(wx.Dialog): gdialogs.py:class GroupDialog(wx.Dialog): gdialogs.py:class ImageSizeDialog(wx.Dialog): gdialogs.py:class NewVectorDialog(ElementDialog): gdialogs.py:class StaticWrapText(wx.StaticText): preferences.py:class DefaultFontDialog(wx.Dialog): gui_core/extensions.py ghelp.py:class InstallExtensionWindow(wx.Frame): ghelp.py:class ExtensionTree(ItemTree): gui_core/helpframe.py ghelp.py:class HelpFrame(wx.Frame): ghelp.py:class AboutWindow(wx.Frame): gui_core/mapset_access.py preferences.py:class MapsetAccess(wx.Dialog): preferences.py:class CheckListMapset(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin): gui_core/menu.py menu.py:class Menu(wx.MenuBar): gui_core/menutree.py ghelp.py:class MenuTreeWindow(wx.Panel): ghelp.py:class ItemTree(CT.CustomTreeCtrl): ghelp.py:class MenuTree(ItemTree): gui_core/messages.py gcmd.py:class GError: gcmd.py:class GWarning: gcmd.py:class GMessage: gui_core/notebook.py menuform.py:class GNotebook(FN.FlatNotebook): gui_core/output.py goutput.py:class CmdThread(threading.Thread): goutput.py:class GMConsole(wx.SplitterWindow): goutput.py:class GMStdout: goutput.py:class GMStderr: goutput.py:class GMStc(wx.stc.StyledTextCtrl): gui_core/preferences.py preferences.py:class PreferencesBaseDialog(wx.Dialog): preferences.py:class PreferencesDialog(PreferencesBaseDialog): gui_core/prompt.py prompt.py:class PromptListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin): prompt.py:class TextCtrlAutoComplete(wx.ComboBox, listmix.ColumnSorterMixin): prompt.py:class GPrompt(object): prompt.py:class GPromptPopUp(GPrompt, TextCtrlAutoComplete): prompt.py:class GPromptSTC(GPrompt, wx.stc.StyledTextCtrl): gui_core/search.py ghelp.py:class SearchModuleWindow(wx.Panel): gui_core/select.py gselect.py:class Select(wx.combo.ComboCtrl): gselect.py:class VectorSelect(Select): gselect.py:class TreeCtrlComboPopup(wx.combo.ComboPopup): gselect.py:class VectorDBInfo: gselect.py:class LayerSelect(wx.ComboBox): gselect.py:class DriverSelect(wx.ComboBox): gselect.py:class DatabaseSelect(wx.TextCtrl): gselect.py:class TableSelect(wx.ComboBox): gselect.py:class ColumnSelect(wx.ComboBox): gselect.py:class DbaseSelect(wx.lib.filebrowsebutton.DirBrowseButton): gselect.py:class LocationSelect(wx.ComboBox): gselect.py:class MapsetSelect(wx.ComboBox): gselect.py:class SubGroupSelect(wx.ComboBox): gselect.py:class FormatSelect(wx.Choice): gselect.py:class GdalSelect(wx.Panel): gselect.py:class ProjSelect(wx.ComboBox): gselect.py:class ElementSelect(wx.Choice): gselect.py:class OgrTypeSelect(wx.Panel): gui_core/toolbars.py toolbars.py:class AbstractToolbar(wx.ToolBar): lmgr/dialogs.py gdialogs.py:class SetOpacityDialog(wx.Dialog): gdialogs.py:class LocationDialog(ElementDialog): gdialogs.py:class MapsetDialog(ElementDialog): gdialogs.py:class ImportDialog(wx.Dialog): gdialogs.py:class GdalImportDialog(ImportDialog): gdialogs.py:class GdalOutputDialog(wx.Dialog): gdialogs.py:class DxfImportDialog(ImportDialog): gdialogs.py:class LayersList(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, lmgr/frame.py wxgui.py:class GMFrame(wx.Frame): lmgr/layertree.py layertree.py:class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl): lmgr/menudata.py menudata.py:class ManagerData(MenuData): lmgr/pyshell.py gpyshell.py:class PyShellWindow(wx.Panel): lmgr/sql_query.py gdialogs.py:class SqlQueryFrame(wx.Frame): lmgr/toolbars.py toolbars.py:class LMWorkspaceToolbar(AbstractToolbar): toolbars.py:class LMDataToolbar(AbstractToolbar): toolbars.py:class LMToolsToolbar(AbstractToolbar): toolbars.py:class LMMiscToolbar(AbstractToolbar): toolbars.py:class LMVectorToolbar(AbstractToolbar): mapdisp/dialogs.py gdialogs.py:class SavedRegion(wx.Dialog): gdialogs.py:class DecorationDialog(wx.Dialog): gdialogs.py:class TextLayerDialog(wx.Dialog): mapdisp/frame.py mapdisp.py:class MapFrameBase(wx.Frame): mapdisp.py:class MapFrame(MapFrameBase): mapdisp.py:class MapApp(wx.App): mapdisp/mapwindow.py mapdisp_window.py:class MapWindow(object): mapdisp_window.py:class BufferedWindow(MapWindow, wx.Window): mapdisp/print.py disp_print.py:class MapPrint(wx.Printout): disp_print.py:class PrintOptions: mapdisp/statusbar.py mapdisp_statusbar.py:class SbException: mapdisp_statusbar.py:class SbManager: mapdisp_statusbar.py:class SbItem: mapdisp_statusbar.py:class SbRender(SbItem): mapdisp_statusbar.py:class SbShowRegion(SbItem): mapdisp_statusbar.py:class SbAlignExtent(SbItem): mapdisp_statusbar.py:class SbResolution(SbItem): mapdisp_statusbar.py:class SbMapScale(SbItem): mapdisp_statusbar.py:class SbGoTo(SbItem): mapdisp_statusbar.py:class SbProjection(SbItem): mapdisp_statusbar.py:class SbMask(SbItem): mapdisp_statusbar.py:class SbTextItem(SbItem): mapdisp_statusbar.py:class SbDisplayGeometry(SbTextItem): mapdisp_statusbar.py:class SbCoordinates(SbTextItem): mapdisp_statusbar.py:class SbRegionExtent(SbTextItem): mapdisp_statusbar.py:class SbCompRegionExtent(SbRegionExtent): mapdisp_statusbar.py:class SbProgress(SbItem): mapdisp_statusbar.py:class SbGoToGCP(SbItem): mapdisp_statusbar.py:class SbRMSError(SbTextItem): mapdisp/toolbars.py toolbars.py:class MapToolbar(AbstractToolbar): modules/dbm/core.py dbm_base.py:class VectorDBInfo(gselect.VectorDBInfo): dbm.py:class Log: modules/dbm/dialogs.py dbm_dialogs.py:class DisplayAttributesDialog(wx.Dialog): dbm_dialogs.py:class ModifyTableRecord(wx.Dialog): modules/dbm/frame.py dbm.py:class AttributeManager(wx.Frame): modules/dbm/sqlbuilder.py sqlbuilder.py:class SQLFrame(wx.Frame): modules/dbm/widgets.py dbm.py:class TableListCtrl(wx.ListCtrl, dbm.py:class LayerListCtrl(wx.ListCtrl, dbm.py:class LayerBook(wx.Notebook): dbm.py:class VirtualAttributeList(wx.ListCtrl, modules/colorrules/core.py colorrules.py:class RulesPanel: colorrules.py:class ColorTable(wx.Frame): modules/colorrules/mapwindow.py colorrules.py:class BufferedWindow(wx.Window): modules/colorrules/raster.py colorrules.py:class RasterColorTable(ColorTable): modules/colorrules/vector.py colorrules.py:class VectorColorTable(ColorTable): colorrules.py:class ThematicVectorTable(VectorColorTable): modules/gcpmanager/dialogs.py gcpmanager.py:class VectGroup(wx.Dialog): gcpmanager.py:class EditGCP(wx.Dialog): gcpmanager.py:class GrSettingsDialog(wx.Dialog): modules/gcpmanager/gcpframe.py gcpmanager.py:class GCP(MapFrame, ColumnSorterMixin): gcpmanager.py:class GCPList(wx.ListCtrl, modules/gcpmanager/mapframe.py gcpmapdisp.py:class MapFrame(MapFrameBase): modules/gcpmanager/toolbars.py toolbars.py:class GCPManToolbar(AbstractToolbar): toolbars.py:class GCPDisplayToolbar(AbstractToolbar): modules/gcpmanager/wizard.py gcpmanager.py:class GCPWizard(object): gcpmanager.py:class LocationPage(TitledPage): gcpmanager.py:class GroupPage(TitledPage): gcpmanager.py:class DispMapPage(TitledPage): modules/histogram/mapwindow.py histogram.py:class BufferedWindow(wx.Window): modules/histogram/frame.py histogram.py:class HistFrame(wx.Frame): modules/histogram/toolbars.py toolbars.py:class HistogramToolbar(AbstractToolbar): toolbars.py:class Histogram2Toolbar(AbstractToolbar): modules/histogram/frame.py wxplot.py:class HistFrame(AbstractPlotFrame): modules/location_wizard/dialogs.py location_wizard.py:class RegionDef(BaseClass, wx.Frame): location_wizard.py:class TransList(wx.VListBox): location_wizard.py:class SelectTransformDialog(wx.Dialog): modules/location_wizard/wizard.py location_wizard.py:class BaseClass(wx.Object): location_wizard.py:class TitledPage(BaseClass, wiz.WizardPageSimple): location_wizard.py:class DatabasePage(TitledPage): location_wizard.py:class CoordinateSystemPage(TitledPage): location_wizard.py:class ProjectionsPage(TitledPage): location_wizard.py:class ItemList(wx.ListCtrl, location_wizard.py:class ProjParamsPage(TitledPage): location_wizard.py:class DatumPage(TitledPage): location_wizard.py:class EllipsePage(TitledPage): location_wizard.py:class GeoreferencedFilePage(TitledPage): location_wizard.py:class WKTPage(TitledPage): location_wizard.py:class EPSGPage(TitledPage): location_wizard.py:class CustomPage(TitledPage): location_wizard.py:class SummaryPage(TitledPage): location_wizard.py:class LocationWizard(wx.Object): modules/misc/mapcalc.py mcalc_builder.py:class MapCalcFrame(wx.Frame): modules/misc/vclean.py vclean.py:class VectorCleaningFrame(wx.Frame): modules/modeler/menudata.py menudata.py:class ModelerData(MenuData): modules/modeler/toolbars.py toolbars.py:class ModelToolbar(AbstractToolbar): modules/modeler/core.py gmodeler.py:class Model(object): gmodeler.py:class ModelObject: gmodeler.py:class ModelAction(ModelObject, ogl.RectangleShape): gmodeler.py:class ModelData(ModelObject, ogl.EllipseShape): gmodeler.py:class ModelRelation(ogl.LineShape): gmodeler.py:class ProcessModelFile: gmodeler.py:class WriteModelFile: gmodeler.py:class ModelItem(ModelObject): gmodeler.py:class ModelLoop(ModelItem, ogl.RectangleShape): gmodeler.py:class ModelCondition(ModelItem, ogl.PolygonShape): modules/modeler/frame.py gmodeler.py:class ModelFrame(wx.Frame): gmodeler.py:class ModelCanvas(ogl.ShapeCanvas): gmodeler.py:class ModelEvtHandler(ogl.ShapeEvtHandler): gmodeler.py:class VariablePanel(wx.Panel): gmodeler.py:class VariableListCtrl(ModelListCtrl): gmodeler.py:class ItemPanel(wx.Panel): gmodeler.py:class ItemListCtrl(ModelListCtrl): gmodeler.py:class ItemCheckListCtrl(ItemListCtrl, listmix.CheckListCtrlMixin): modules/modeler/dialogs.py gmodeler.py:class ModelDataDialog(ElementDialog): gmodeler.py:class ModelSearchDialog(wx.Dialog): gmodeler.py:class ModelRelationDialog(wx.Dialog): gmodeler.py:class ModelParamDialog(wx.Dialog): gmodeler.py:class ModelListCtrl(wx.ListCtrl, gmodeler.py:class ModelItemDialog(wx.Dialog): gmodeler.py:class ModelLoopDialog(ModelItemDialog): gmodeler.py:class ModelConditionDialog(ModelItemDialog): modules/modeler/preferences.py gmodeler.py:class PreferencesDialog(PreferencesBaseDialog): gmodeler.py:class PropertiesDialog(wx.Dialog): modules/modeler/python_export.py gmodeler.py:class WritePythonFile: modules/nviz/wxcore.py wxnviz.py:class Nviz(object): wxnviz.py:class Texture(object): wxnviz.py:class ImageTexture(Texture): wxnviz.py:class TextTexture(Texture): modules/nviz/mapdisp.py nviz_mapdisp.py:class NvizThread(Thread): nviz_mapdisp.py:class GLWindow(MapWindow, glcanvas.GLCanvas): modules/nviz/preferences.py nviz_preferences.py:class NvizPreferencesDialog(PreferencesBaseDialog): modules/nviz/core.py nviz_tools.py:class ScrolledPanel(SP.ScrolledPanel): nviz_tools.py:class NTCValidator(wx.PyValidator): nviz_tools.py:class NumTextCtrl(wx.TextCtrl): nviz_tools.py:class FloatSlider(wx.Slider): modules/nviz/tools.py nviz_tools.py:class NvizToolWindow(FN.FlatNotebook): nviz_tools.py:class PositionWindow(wx.Window): nviz_tools.py:class ViewPositionWindow(PositionWindow): nviz_tools.py:class LightPositionWindow(PositionWindow): modules/nviz/toolbars.py toolbars.py:class LMNvizToolbar(AbstractToolbar): modules/nviz/workspace.py workspace.py:class Nviz.: modules/ogc_services/wms.py ogc_services.py:class WMSDialog(wx.Dialog): modules/ogc_services/core.py ogc_services.py:class LayersList(TreeListCtrl, listmix.ListCtrlAutoWidthMixin): modules/profile/toolbars.py toolbars.py:class ProfileToolbar(AbstractToolbar): modules/profile/frame.py wxplot.py:class ProfileFrame(AbstractPlotFrame): modules/psmap/menudata.py menudata.py:class PsMapData(MenuData): modules/psmap/toolbars.py toolbars.py:class PsMapToolbar(AbstractToolbar): modules/psmap/core.py psmap_dialogs.py:class UnitConversion: psmap_dialogs.py:class TCValidator(wx.PyValidator): psmap_dialogs.py:class PenStyleComboBox(wx.combo.OwnerDrawnComboBox): psmap_dialogs.py:class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin, ListCtrlAutoWidthMixin): modules/psmap/instructions.py psmap_dialogs.py:class Instruction: psmap_dialogs.py:class InstructionObject: psmap_dialogs.py:class InitMap(InstructionObject): psmap_dialogs.py:class MapFrame(InstructionObject): psmap_dialogs.py:class PageSetup(InstructionObject): psmap_dialogs.py:class Mapinfo(InstructionObject): psmap_dialogs.py:class Text(InstructionObject): psmap_dialogs.py:class Scalebar(InstructionObject): psmap_dialogs.py:class RasterLegend(InstructionObject): psmap_dialogs.py:class VectorLegend(InstructionObject): psmap_dialogs.py:class Raster(InstructionObject): psmap_dialogs.py:class Vector(InstructionObject): psmap_dialogs.py:class VProperties(InstructionObject): modules/psmap/dialogs.py psmap_dialogs.py:class PsmapDialog(wx.Dialog): psmap_dialogs.py:class PageSetupDialog(PsmapDialog): psmap_dialogs.py:class MapDialog(PsmapDialog): psmap_dialogs.py:class MapFramePanel(wx.Panel): psmap_dialogs.py:class RasterPanel(wx.Panel): psmap_dialogs.py:class VectorPanel(wx.Panel): psmap_dialogs.py:class RasterDialog(PsmapDialog): psmap_dialogs.py:class MainVectorDialog(PsmapDialog): psmap_dialogs.py:class VPropertiesDialog(PsmapDialog): psmap_dialogs.py:class LegendDialog(PsmapDialog): psmap_dialogs.py:class MapinfoDialog(PsmapDialog): psmap_dialogs.py:class ScalebarDialog(PsmapDialog): psmap_dialogs.py:class TextDialog(PsmapDialog): modules/psmap/frame.py psmap.py:class PsMapFrame(wx.Frame): modules/psmap/mapwindow.py psmap.py:class PsMapBufferedWindow(wx.Window): modules/scatterplot/toolbars.py toolbars.py:class ScatterplotToolbar(AbstractToolbar): modules/scatterplot/frame.py wxplot.py:class ScatterFrame(AbstractPlotFrame): modules/vdigit/wxdisplay.py wxvdriver.py:class DisplayDriver: modules/vdigit/wxcore.py wxvdigit.py:class VDigitError: wxvdigit.py:class IVDigit: modules/vdigit/mapdisp.py mapdisp_vdigit.py:class VDigitWindow(BufferedWindow): modules/vdigit/toolbars.py toolbars.py:class VDigitToolbar(AbstractToolbar): modules/vdigit/core.py vdigit.py:class VDigit(IVDigit): modules/vdigit/settings.py vdigit.py:class VDigitSettingsDialog(wx.Dialog): modules/vdigit/dialogs.py vdigit.py:class VDigitCategoryDialog(wx.Dialog, listmix.ColumnSorterMixin): vdigit.py:class CategoryListCtrl(wx.ListCtrl, vdigit.py:class VDigitZBulkDialog(wx.Dialog): vdigit.py:class VDigitDuplicatesDialog(wx.Dialog): vdigit.py:class CheckListFeature(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin): modules/wxplot/dialogs.py wxplot_dialogs.py:class ProfileRasterDialog(wx.Dialog): wxplot_dialogs.py:class ScatterRasterDialog(wx.Dialog): wxplot_dialogs.py:class PlotStatsFrame(wx.Frame): wxplot_dialogs.py:class HistRasterDialog(wx.Dialog): wxplot_dialogs.py:class TextDialog(wx.Dialog): wxplot_dialogs.py:class OptDialog(wx.Dialog): modules/wxplot/core.py wxplot.py:class AbstractPlotFrame(wx.Frame): }}} == Vector digitizer == * Re-design vector digitizer to avoid crash of the whole GUI. Currently when digitizer crashes, the whole GUI also crash. * Update the list to include new requested functionality... == GUI for ps.map/ps.output == * [wiki:wxGUIDevelopment/GUIForPs.map GUI for ps.map] == Graphical Modeler == * [wiki:wxGUIDevelopment/Modeler wxGUI Modeler] == wxNviz (3D view mode) == See also [http://grass.osgeo.org/wiki/WxNviz GRASS User Wiki] page. === Known issues === * Templates for saving images doesn't work properly. When tif output selected, it saves to a PNM. == i.class integration == * [wiki:wxGUIDevelopment/wxIClass wxIClass] == Source code == * GRASS 7.0 - [source:grass/trunk/gui/wxpython] * GRASS 6.5 - [source:grass/branches/develbranch_6/gui/wxpython] * GRASS 6.4 - [source:grass/branches/releasebranch_6_4/gui/wxpython] == New bugs/wishes == [[TicketQuery(status=new&component=wxGUI&order=priority)]] === GRASS 6.4 === [[TicketQuery(status=new&component=wxGUI&milestone=6.4.0&order=priority)]] === GRASS 6.5 === [[TicketQuery(status=new&component=wxGUI&milestone=6.5.0&order=priority)]] === GRASS 7.0 === [[TicketQuery(status=new&component=wxGUI&milestone=7.0.0&order=priority)]] == Assigned bugs/wishes == [[TicketQuery(status=assigned&component=wxGUI&order=priority)]] === GRASS 6.4 === [[TicketQuery(status=assigned&component=wxGUI&milestone=6.4.0&order=priority)]] === GRASS 6.5 === [[TicketQuery(status=assigned&component=wxGUI&milestone=6.5.0&order=priority)]] === GRASS 7.0 === [[TicketQuery(status=assigned&component=wxGUI&milestone=7.0.0&order=priority)]] == Reopened bugs/wishes == [[TicketQuery(status=reopened&component=wxGUI&order=priority)]] === GRASS 6.4 === [[TicketQuery(status=reopened&component=wxGUI&milestone=6.4.0&order=priority)]] === GRASS 6.5 === [[TicketQuery(status=reopened&component=wxGUI&milestone=6.5.0&order=priority)]] === GRASS 7.0 === [[TicketQuery(status=reopened&component=wxGUI&milestone=7.0.0&order=priority)]] == Closed bugs/wishes == [[TicketQuery(status=closed&component=wxGUI&order=priority)]]