docs: def showGroupMenu( self ):
          """
          Displays the group menu to the user for modification.
          """
          group_active = self.isGroupingActive()
          group_by     = self.groupBy()
          
          menu = XMenu(self)
          menu.setTitle('Grouping Options')
          menu.setShowTitle(True)
          menu.addAction('Edit Advanced Grouping')
          
          menu.addSeparator()
          
          action = menu.addAction('No Grouping')
          action.setCheckable(True)
          action.setChecked(not group_active)
          
          action = menu.addAction('Advanced')
          action.setCheckable(True)
          action.setChecked(group_by == self.GroupByAdvancedKey and group_active)
          if ( group_by == self.GroupByAdvancedKey ):
              font = action.font()
              font.setBold(True)
              action.setFont(font)
          
          menu.addSeparator()
          
          # add dynamic options from the table schema
          tableType = self.tableType()
          if ( tableType ):
              columns = tableType.schema().columns()
              columns.sort(key = lambda x: x.displayName())
              for column in columns:
                  action = menu.addAction(column.displayName())
                  action.setCheckable(True)
                  action.setChecked(group_by == column.displayName() and
                                    group_active)
                  
                  if ( column.displayName() == group_by ):
                      font = action.font()
                      font.setBold(True)
                      action.setFont(font)
          
          point = QPoint(0, self.uiGroupOptionsBTN.height())
          action = menu.exec_(self.uiGroupOptionsBTN.mapToGlobal(point))
          
          if ( not action ):
              return
          elif ( action.text() == 'Edit Advanced Grouping' ):
              print 'edit advanced grouping options'
          elif ( action.text() == 'No Grouping' ):
              self.setGroupingActive(False)
              
          elif ( action.text() == 'Advanced' ):
              self.uiGroupBTN.blockSignals(True)
              self.setGroupBy(self.GroupByAdvancedKey)
              self.setGroupingActive(True)
              self.uiGroupBTN.blockSignals(False)
              
              self.refreshResults()
          
          else:
              self.uiGroupBTN.blockSignals(True)
              self.setGroupBy(nativestring(action.text()))
              self.setGroupingActive(True)
              self.uiGroupBTN.blockSignals(False)
              
              self.refreshResults()