Prompts the user for profile menu options.  Editing needs to be enabled
        for this to work.

def showProfileMenu(self, point):
        """
        Prompts the user for profile menu options.  Editing needs to be enabled
        for this to work.
        """
        if not self.isEditingEnabled():
            return
        
        trigger = self.actionAt(point)
        if (isinstance(trigger, XViewProfileAction)):
            prof = trigger.profile()
        else:
            prof = None
        
        # define the menu
        menu = QMenu(self)
        acts = {}
        text = self.profileText()
        
        # user right clicked on a profile
        if prof:
            acts['edit'] = menu.addAction('Edit {0}...'.format(text))
            acts['save'] = menu.addAction('Save Layout')
            
            menu.addSeparator()
            
            acts['copy'] = menu.addAction('Copy {0}'.format(text))
            acts['export'] = menu.addAction('Export {0}...'.format(text))
            
            menu.addSeparator()
            
            acts['remove'] = menu.addAction('Delete {0}'.format(text))
        
        # show toolbar options
        else:
            acts['new'] = menu.addAction('New Layout'.format(text))
            
            menu.addSeparator()
            
            acts['save_as'] = menu.addAction('Save Layout as...')
            
            if QApplication.clipboard().text():
                acts['paste'] = menu.addAction('Paste {0}'.format(text))
            acts['import'] = menu.addAction('Import {0}...'.format(text))
        
        for key, act in acts.items():
            act.setIcon(QIcon(resources.find('img/{0}.png'.format(key))))
        
        # run the menu
        act = menu.exec_(QCursor.pos())
        
        # create a new profile
        if act is None:
            return
        
        elif act == acts.get('new'):
            self.clearActive()
        
        # create a new clear profile
        elif act == acts.get('save_as'):
            self.saveProfileAs()
        
        # edit an existing profile
        elif act == acts.get('edit'):
            self.editProfile(prof)
        
        # save or create a new profile
        elif act == acts.get('save'):
            self.saveProfileLayout(prof)
            
        # copy profile
        elif act == acts.get('copy'):
            QApplication.clipboard().setText(prof.toString())
        
        # export
        elif act == acts.get('export'):
            self.exportProfile(prof)
        
        # export
        elif act == acts.get('import'):
            self.importProfile()
        
        # paste profile
        elif act == acts.get('paste'):
            text = QApplication.clipboard().text()
            try:
                prof = XViewProfile.fromString(text)
            except:
                prof = None
                QMessageBox.information(self.window(),
                                        'Invalid {0}'.format(text),
                                        'The clipboard text does not contain '\
                                        'a properly formated {0}'.format(text))
                
            if prof and not prof.isEmpty():
                self.createProfile(profile=prof)
        
        # paste as profile
        elif act == acts.get('paste_as'):
            text = QApplication.clipboard().text()
            prof = XViewProfile.fromString(text)
            if not prof.isEmpty():
                if XViewProfileDialog.edit(self, prof):
                    self.createProfile(profile=prof)
        
        # remove the profile
        elif act == acts.get('remove'):
            self.removeProfile(prof)