@@ -171,12 +171,19 @@ void QgsPluginManager::getPythonPluginDescriptions()
171171 // get information from the plugin
172172 QString pluginName = mPythonUtils ->getPluginMetadata ( packageName, " name" );
173173 QString description = mPythonUtils ->getPluginMetadata ( packageName, " description" );
174+ QString category = mPythonUtils ->getPluginMetadata ( packageName, " category" );
174175 QString version = mPythonUtils ->getPluginMetadata ( packageName, " version" );
175176 QString iconName = mPythonUtils ->getPluginMetadata ( packageName, " icon" );
176177
177178 if ( pluginName == " __error__" || description == " __error__" || version == " __error__" )
178179 continue ;
179180
181+ // if there is no category in Python plugin assume default 'Plugins' category
182+ if ( category == " __error__" )
183+ {
184+ category = tr ( " Plugins" );
185+ }
186+
180187 bool isCompatible = QgsPluginRegistry::instance ()->isPythonPluginCompatible ( packageName );
181188 QString compatibleString; // empty by default
182189 if ( !isCompatible )
@@ -196,6 +203,7 @@ void QgsPluginManager::getPythonPluginDescriptions()
196203 myData.setTitle ( pluginName + " (" + version + " )" + compatibleString );
197204 myData.setEnabled ( isCompatible );
198205 myData.setDetail ( description );
206+ myData.setCategory ( tr ( " Installed in %1 menu/toolbar" ).arg ( category ) );
199207 // myData.setIcon(pixmap); //todo use a python logo here
200208 myData.setCheckable ( true );
201209 myData.setRenderAsWidget ( false );
@@ -308,6 +316,7 @@ void QgsPluginManager::getPluginDescriptions()
308316 // resolve the metadata from plugin
309317 name_t *pName = ( name_t * ) cast_to_fptr ( myLib->resolve ( " name" ) );
310318 description_t *pDesc = ( description_t * ) cast_to_fptr ( myLib->resolve ( " description" ) );
319+ category_t *pCat = ( category_t * ) cast_to_fptr ( myLib->resolve ( " category" ) );
311320 version_t *pVersion = ( version_t * ) cast_to_fptr ( myLib->resolve ( " version" ) );
312321 icon_t * pIcon = ( icon_t * ) cast_to_fptr ( myLib->resolve ( " icon" ) );
313322
@@ -328,6 +337,14 @@ void QgsPluginManager::getPluginDescriptions()
328337 {
329338 QgsDebugMsg ( " Plugin description not returned when queried" );
330339 }
340+ if ( pCat )
341+ {
342+ QgsDebugMsg ( " Plugin category: " + pCat () );
343+ }
344+ else
345+ {
346+ QgsDebugMsg ( " Plugin category not returned when queried" );
347+ }
331348 if ( pVersion )
332349 {
333350 QgsDebugMsg ( " Plugin version: " + pVersion () );
@@ -350,6 +367,8 @@ void QgsPluginManager::getPluginDescriptions()
350367
351368 QString pluginName = pName ();
352369 QString pluginDesc = pDesc ();
370+ // if no category defined - use default value
371+ QString pluginCat = ( pCat ? pCat () : tr ( " Plugins" ) );
353372 QString pluginVersion = pVersion ();
354373 QString pluginIconFileName = ( pIcon ? pIcon () : QString () );
355374 QString baseName = QFileInfo ( lib ).baseName ();
@@ -363,6 +382,7 @@ void QgsPluginManager::getPluginDescriptions()
363382 QgsDetailedItemData myData;
364383 myData.setTitle ( pluginName );
365384 myData.setDetail ( pluginDesc );
385+ myData.setCategory ( tr ( " Installed in %1 menu/toolbar" ).arg ( pluginCat ) );
366386 myData.setRenderAsWidget ( false );
367387 myData.setCheckable ( true );
368388 myData.setChecked ( false ); // start unchecked - we will check it later if needed
0 commit comments