Sat, 18 Nov 2017 18:27:25 +0100
Finished adding support for Google protobuf protocol and gRPC files.
--- a/APIs/Python3/eric6.api Sat Nov 18 12:35:13 2017 +0100 +++ b/APIs/Python3/eric6.api Sat Nov 18 18:27:25 2017 +0100 @@ -9032,6 +9032,7 @@ eric6.Utilities.ClassBrowsers.ClbrBaseClasses.ClbrVisibilityMixinBase.setProtected?4() eric6.Utilities.ClassBrowsers.ClbrBaseClasses.ClbrVisibilityMixinBase.setPublic?4() eric6.Utilities.ClassBrowsers.ClbrBaseClasses.Coding?1(module, file, lineno, coding) +eric6.Utilities.ClassBrowsers.ClbrBaseClasses.Enum?1(module, name, file, lineno) eric6.Utilities.ClassBrowsers.ClbrBaseClasses.Function.Class?7 eric6.Utilities.ClassBrowsers.ClbrBaseClasses.Function.General?7 eric6.Utilities.ClassBrowsers.ClbrBaseClasses.Function.Static?7 @@ -9041,6 +9042,7 @@ eric6.Utilities.ClassBrowsers.ClbrBaseClasses._ClbrBase?2(module, name, file, lineno) eric6.Utilities.ClassBrowsers.IDL_SOURCE?7 eric6.Utilities.ClassBrowsers.JS_SOURCE?7 +eric6.Utilities.ClassBrowsers.PROTO_SOURCE?7 eric6.Utilities.ClassBrowsers.PTL_SOURCE?7 eric6.Utilities.ClassBrowsers.PY_SOURCE?7 eric6.Utilities.ClassBrowsers.RB_SOURCE?7 @@ -9071,6 +9073,17 @@ eric6.Utilities.ClassBrowsers.jsclbr.Visitor?1(src, module, filename) eric6.Utilities.ClassBrowsers.jsclbr._modules?8 eric6.Utilities.ClassBrowsers.jsclbr.readmodule_ex?4(module, path=None) +eric6.Utilities.ClassBrowsers.protoclbr.Enum?1(module, name, file, lineno) +eric6.Utilities.ClassBrowsers.protoclbr.Message?1(module, name, file, lineno) +eric6.Utilities.ClassBrowsers.protoclbr.SUPPORTED_TYPES?7 +eric6.Utilities.ClassBrowsers.protoclbr.Service?1(module, name, file, lineno) +eric6.Utilities.ClassBrowsers.protoclbr.ServiceMethod?1(name, file, lineno, signature, returns) +eric6.Utilities.ClassBrowsers.protoclbr.VisibilityMixin?1() +eric6.Utilities.ClassBrowsers.protoclbr._commentsub?8 +eric6.Utilities.ClassBrowsers.protoclbr._getnext?8 +eric6.Utilities.ClassBrowsers.protoclbr._modules?8 +eric6.Utilities.ClassBrowsers.protoclbr._normalize?8 +eric6.Utilities.ClassBrowsers.protoclbr.readmodule_ex?4(module, path=None) eric6.Utilities.ClassBrowsers.pyclbr.Attribute?1(module, name, file, lineno) eric6.Utilities.ClassBrowsers.pyclbr.Class?1(module, name, superClasses, file, lineno) eric6.Utilities.ClassBrowsers.pyclbr.Function?1(module, name, file, lineno, signature='', separator=', ', modifierType=ClbrBaseClasses.Function.General, annotation="")
--- a/APIs/Python3/eric6.bas Sat Nov 18 12:35:13 2017 +0100 +++ b/APIs/Python3/eric6.bas Sat Nov 18 18:27:25 2017 +0100 @@ -244,6 +244,7 @@ EmailDialog QDialog Ui_EmailDialog EmailPage ConfigurationPageBase Ui_EmailPage EmptyNetworkReply QNetworkReply +Enum ClbrBaseClasses.Enum VisibilityMixin EricAccessHandler SchemeAccessHandler EricSchemeHandler QWebEngineUrlSchemeHandler EricSchemeReply QIODevice @@ -519,6 +520,7 @@ MarkdownProvider MarkupBase MasterPasswordEntryDialog QDialog Ui_MasterPasswordEntryDialog MercurialPage ConfigurationPageBase Ui_MercurialPage +Message ClbrBaseClasses.Module VisibilityMixin MessageBoxWizard QObject MessageBoxWizardDialog QDialog Ui_MessageBoxWizardDialog MimeTypesPage ConfigurationPageBase Ui_MimeTypesPage @@ -700,6 +702,8 @@ SearchWidget QWidget Ui_SearchWidget SecurityPage ConfigurationPageBase Ui_SecurityPage SendRefererWhitelistDialog QDialog Ui_SendRefererWhitelistDialog +Service ClbrBaseClasses.Class VisibilityMixin +ServiceMethod ClbrBaseClasses.Function VisibilityMixin SessionManager QObject SessionManagerDialog QDialog Ui_SessionManagerDialog SessionReader XMLStreamReaderBase
--- a/Documentation/Help/source.qhp Sat Nov 18 12:35:13 2017 +0100 +++ b/Documentation/Help/source.qhp Sat Nov 18 18:27:25 2017 +0100 @@ -1046,6 +1046,7 @@ <section title="eric6.Utilities.ClassBrowsers.__init__" ref="eric6.Utilities.ClassBrowsers.__init__.html" /> <section title="eric6.Utilities.ClassBrowsers.idlclbr" ref="eric6.Utilities.ClassBrowsers.idlclbr.html" /> <section title="eric6.Utilities.ClassBrowsers.jsclbr" ref="eric6.Utilities.ClassBrowsers.jsclbr.html" /> + <section title="eric6.Utilities.ClassBrowsers.protoclbr" ref="eric6.Utilities.ClassBrowsers.protoclbr.html" /> <section title="eric6.Utilities.ClassBrowsers.pyclbr" ref="eric6.Utilities.ClassBrowsers.pyclbr.html" /> <section title="eric6.Utilities.ClassBrowsers.rbclbr" ref="eric6.Utilities.ClassBrowsers.rbclbr.html" /> </section> @@ -5498,6 +5499,10 @@ <keyword name="EmptyNetworkReply (Module)" id="EmptyNetworkReply (Module)" ref="eric6.Helpviewer.Network.EmptyNetworkReply.html" /> <keyword name="EmptyNetworkReply.abort" id="EmptyNetworkReply.abort" ref="eric6.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply.abort" /> <keyword name="EmptyNetworkReply.readData" id="EmptyNetworkReply.readData" ref="eric6.Helpviewer.Network.EmptyNetworkReply.html#EmptyNetworkReply.readData" /> + <keyword name="Enum" id="Enum" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#Enum" /> + <keyword name="Enum" id="Enum" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Enum" /> + <keyword name="Enum (Constructor)" id="Enum (Constructor)" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#Enum.__init__" /> + <keyword name="Enum (Constructor)" id="Enum (Constructor)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Enum.__init__" /> <keyword name="EricAccessHandler" id="EricAccessHandler" ref="eric6.Helpviewer.Network.EricAccessHandler.html#EricAccessHandler" /> <keyword name="EricAccessHandler (Module)" id="EricAccessHandler (Module)" ref="eric6.Helpviewer.Network.EricAccessHandler.html" /> <keyword name="EricAccessHandler.__createHomePage" id="EricAccessHandler.__createHomePage" ref="eric6.Helpviewer.Network.EricAccessHandler.html#EricAccessHandler.__createHomePage" /> @@ -9776,6 +9781,8 @@ <keyword name="MercurialPage (Module)" id="MercurialPage (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html" /> <keyword name="MercurialPage.on_configButton_clicked" id="MercurialPage.on_configButton_clicked" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.on_configButton_clicked" /> <keyword name="MercurialPage.save" id="MercurialPage.save" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.save" /> + <keyword name="Message" id="Message" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Message" /> + <keyword name="Message (Constructor)" id="Message (Constructor)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Message.__init__" /> <keyword name="MessageBoxWizard" id="MessageBoxWizard" ref="eric6.Plugins.PluginWizardQMessageBox.html#MessageBoxWizard" /> <keyword name="MessageBoxWizard (Constructor)" id="MessageBoxWizard (Constructor)" ref="eric6.Plugins.PluginWizardQMessageBox.html#MessageBoxWizard.__init__" /> <keyword name="MessageBoxWizard (Package)" id="MessageBoxWizard (Package)" ref="index-eric6.Plugins.WizardPlugins.MessageBoxWizard.html" /> @@ -12618,6 +12625,10 @@ <keyword name="SendRefererWhitelistDialog.accept" id="SendRefererWhitelistDialog.accept" ref="eric6.WebBrowser.Network.SendRefererWhitelistDialog.html#SendRefererWhitelistDialog.accept" /> <keyword name="SendRefererWhitelistDialog.on_addButton_clicked" id="SendRefererWhitelistDialog.on_addButton_clicked" ref="eric6.Helpviewer.Network.SendRefererWhitelistDialog.html#SendRefererWhitelistDialog.on_addButton_clicked" /> <keyword name="SendRefererWhitelistDialog.on_addButton_clicked" id="SendRefererWhitelistDialog.on_addButton_clicked" ref="eric6.WebBrowser.Network.SendRefererWhitelistDialog.html#SendRefererWhitelistDialog.on_addButton_clicked" /> + <keyword name="Service" id="Service" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Service" /> + <keyword name="Service (Constructor)" id="Service (Constructor)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#Service.__init__" /> + <keyword name="ServiceMethod" id="ServiceMethod" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#ServiceMethod" /> + <keyword name="ServiceMethod (Constructor)" id="ServiceMethod (Constructor)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#ServiceMethod.__init__" /> <keyword name="Session (Package)" id="Session (Package)" ref="index-eric6.WebBrowser.Session.html" /> <keyword name="SessionManager" id="SessionManager" ref="eric6.WebBrowser.Session.SessionManager.html#SessionManager" /> <keyword name="SessionManager (Constructor)" id="SessionManager (Constructor)" ref="eric6.WebBrowser.Session.SessionManager.html#SessionManager.__init__" /> @@ -15945,10 +15956,12 @@ <keyword name="VisibilityBase.setPublic" id="VisibilityBase.setPublic" ref="eric6.Utilities.ModuleParser.html#VisibilityBase.setPublic" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric6.Utilities.ClassBrowsers.idlclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#VisibilityMixin" /> + <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric6.Utilities.ClassBrowsers.pyclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric6.Utilities.ClassBrowsers.rbclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric6.Utilities.ClassBrowsers.idlclbr.html#VisibilityMixin.__init__" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#VisibilityMixin.__init__" /> + <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#VisibilityMixin.__init__" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric6.Utilities.ClassBrowsers.pyclbr.html#VisibilityMixin.__init__" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric6.Utilities.ClassBrowsers.rbclbr.html#VisibilityMixin.__init__" /> <keyword name="Visitor" id="Visitor" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#Visitor" /> @@ -17364,6 +17377,7 @@ <keyword name="printerr" id="printerr" ref="eric6.DebugClients.Python.DebugBase.html#printerr" /> <keyword name="process_options" id="process_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#process_options" /> <keyword name="process_tokens" id="process_tokens" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#process_tokens" /> + <keyword name="protoclbr (Module)" id="protoclbr (Module)" ref="eric6.Utilities.ClassBrowsers.protoclbr.html" /> <keyword name="proxyAuthenticationRequired" id="proxyAuthenticationRequired" ref="eric6.E5Network.E5NetworkProxyFactory.html#proxyAuthenticationRequired" /> <keyword name="purge (Module)" id="purge (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.PurgeExtension.purge.html" /> <keyword name="pushView" id="pushView" ref="eric6.WebBrowser.WebInspector.html#pushView" /> @@ -17405,6 +17419,7 @@ <keyword name="readmodule" id="readmodule" ref="eric6.Utilities.ClassBrowsers.__init__.html#readmodule" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.idlclbr.html#readmodule_ex" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.jsclbr.html#readmodule_ex" /> + <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.protoclbr.html#readmodule_ex" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.pyclbr.html#readmodule_ex" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.rbclbr.html#readmodule_ex" /> <keyword name="rebase (Module)" id="rebase (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html" /> @@ -18409,6 +18424,7 @@ <file>eric6.Utilities.ClassBrowsers.__init__.html</file> <file>eric6.Utilities.ClassBrowsers.idlclbr.html</file> <file>eric6.Utilities.ClassBrowsers.jsclbr.html</file> + <file>eric6.Utilities.ClassBrowsers.protoclbr.html</file> <file>eric6.Utilities.ClassBrowsers.pyclbr.html</file> <file>eric6.Utilities.ClassBrowsers.rbclbr.html</file> <file>eric6.Utilities.FtpUtilities.html</file>
--- a/Documentation/Source/eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html Sat Nov 18 12:35:13 2017 +0100 +++ b/Documentation/Source/eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html Sat Nov 18 18:27:25 2017 +0100 @@ -45,6 +45,9 @@ <td><a href="#Coding">Coding</a></td> <td>Class to represent a source coding.</td> </tr><tr> +<td><a href="#Enum">Enum</a></td> +<td>Class to represent an enum definition.</td> +</tr><tr> <td><a href="#Function">Function</a></td> <td>Class to represent a function or method.</td> </tr><tr> @@ -95,18 +98,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this attribute +</dd><dt><i>name</i> (str)</dt> <dd> -name of this class -</dd><dt><i>file</i></dt> +name of this attribute +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this attribute -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +line number of the attribute definition </dd> </dl><a NAME="Attribute.addAssignment" ID="Attribute.addAssignment"></a> <h4>Attribute.addAssignment</h4> @@ -114,10 +117,9 @@ <p> Public method to add another assignment line number. </p><dl> -<dt><i>lineno</i></dt> +<dt><i>lineno</i> (int)</dt> <dd> -linenumber of the additional attribute assignment - (integer) +line number of the additional attribute assignment </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -154,21 +156,21 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> name of the module containing this class -</dd><dt><i>name</i></dt> +</dd><dt><i>name</i> (str)</dt> <dd> name of this class -</dd><dt><i>superClasses</i></dt> +</dd><dt><i>superClasses</i> (list of str)</dt> <dd> list of class names this class is inherited from -</dd><dt><i>file</i></dt> +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this class -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +line number of the class definition </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -226,18 +228,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this object +</dd><dt><i>name</i> (str)</dt> <dd> -name of this class -</dd><dt><i>file</i></dt> +name of this object +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this object -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +linenumber of the object definition </dd> </dl><a NAME="ClbrBase._addattribute" ID="ClbrBase._addattribute"></a> <h4>ClbrBase._addattribute</h4> @@ -245,9 +247,9 @@ <p> Protected method to add information about attributes. </p><dl> -<dt><i>attr</i></dt> +<dt><i>attr</i> (Attribute)</dt> <dd> -Attribute object to be added (Attribute) +Attribute object to be added </dd> </dl><a NAME="ClbrBase._addclass" ID="ClbrBase._addclass"></a> <h4>ClbrBase._addclass</h4> @@ -255,12 +257,12 @@ <p> Protected method method to add a nested class to this class. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> name of the class -</dd><dt><i>_class</i></dt> +</dd><dt><i>_class</i> (Class)</dt> <dd> -Class object to be added (Class) +Class object to be added </dd> </dl><a NAME="ClbrBase._addglobal" ID="ClbrBase._addglobal"></a> <h4>ClbrBase._addglobal</h4> @@ -268,9 +270,9 @@ <p> Protected method to add information about global variables. </p><dl> -<dt><i>attr</i></dt> +<dt><i>attr</i> (Attribute)</dt> <dd> -Attribute object to be added (Attribute) +Attribute object to be added </dd> </dl><a NAME="ClbrBase._addmethod" ID="ClbrBase._addmethod"></a> <h4>ClbrBase._addmethod</h4> @@ -278,10 +280,10 @@ <p> Protected method to add information about a method. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> -name of method to be added (string) -</dd><dt><i>function</i></dt> +name of method to be added +</dd><dt><i>function</i> (Function)</dt> <dd> Function object to be added </dd> @@ -291,14 +293,19 @@ <p> Protected method to retrieve an attribute by name. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> -name of the attribute (string) +name of the attribute </dd> </dl><dl> <dt>Returns:</dt> <dd> -the named attribute or None +the named attribute +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Attribute or None </dd> </dl><a NAME="ClbrBase._getglobal" ID="ClbrBase._getglobal"></a> <h4>ClbrBase._getglobal</h4> @@ -306,14 +313,19 @@ <p> Protected method to retrieve a global variable by name. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> -name of the global variable (string) +name of the global variable </dd> </dl><dl> <dt>Returns:</dt> <dd> -the named global variable or None +the named global variable +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Attribute or None </dd> </dl><a NAME="ClbrBase._getmethod" ID="ClbrBase._getmethod"></a> <h4>ClbrBase._getmethod</h4> @@ -321,14 +333,19 @@ <p> Protected method to retrieve a method by name. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> name of the method (string) </dd> </dl><dl> <dt>Returns:</dt> <dd> -the named method or None +the named method +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +Function or None </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -382,7 +399,12 @@ </p><dl> <dt>Returns:</dt> <dd> -flag indicating Private visibility (boolean) +flag indicating Private visibility +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="ClbrVisibilityMixinBase.isProtected" ID="ClbrVisibilityMixinBase.isProtected"></a> <h4>ClbrVisibilityMixinBase.isProtected</h4> @@ -392,7 +414,12 @@ </p><dl> <dt>Returns:</dt> <dd> -flag indicating Protected visibility (boolean) +flag indicating Protected visibility +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="ClbrVisibilityMixinBase.isPublic" ID="ClbrVisibilityMixinBase.isPublic"></a> <h4>ClbrVisibilityMixinBase.isPublic</h4> @@ -402,7 +429,12 @@ </p><dl> <dt>Returns:</dt> <dd> -flag indicating Public visibility (boolean) +flag indicating Public visibility +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl><a NAME="ClbrVisibilityMixinBase.setPrivate" ID="ClbrVisibilityMixinBase.setPrivate"></a> <h4>ClbrVisibilityMixinBase.setPrivate</h4> @@ -454,22 +486,70 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this module -</dd><dt><i>file</i></dt> +name of the module containing this coding statement +</dd><dt><i>file</i> (str)</dt> <dd> -filename containing this module -</dd><dt><i>lineno</i></dt> +filename containing this coding statement +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the module definition -</dd><dt><i>coding</i></dt> +line number of the coding definition +</dd><dt><i>coding</i> (str)</dt> <dd> character coding of the source file </dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="Enum" ID="Enum"></a> +<h2>Enum</h2> +<p> + Class to represent an enum definition. +</p> +<h3>Derived from</h3> +ClbrBase +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#Enum.__init__">Enum</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Enum.__init__" ID="Enum.__init__"></a> +<h4>Enum (Constructor)</h4> +<b>Enum</b>(<i>module, name, file, lineno</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i> (str)</dt> +<dd> +name of the module containing this enum +</dd><dt><i>name</i> (str)</dt> +<dd> +name of this enum +</dd><dt><i>file</i> (str)</dt> +<dd> +filename containing this enum +</dd><dt><i>lineno</i> (int)</dt> +<dd> +line number of the enum definition +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="Function" ID="Function"></a> <h2>Function</h2> <p> @@ -502,30 +582,30 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> name of the module containing this function -</dd><dt><i>name</i></dt> +</dd><dt><i>name</i> (str)</dt> <dd> name of this function -</dd><dt><i>file</i></dt> +</dd><dt><i>file</i> (str)</dt> <dd> -filename containing this class -</dd><dt><i>lineno</i></dt> +filename containing this function +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition -</dd><dt><i>signature</i></dt> +line number of the function definition +</dd><dt><i>signature</i> (str)</dt> <dd> -parameterlist of the method -</dd><dt><i>separator</i></dt> +parameter list of the function +</dd><dt><i>separator</i> (str)</dt> <dd> -string separating the parameters -</dd><dt><i>modifierType</i></dt> +string separating the parameters of the function +</dd><dt><i>modifierType</i> (int)</dt> <dd> type of the function -</dd><dt><i>annotation</i></dt> +</dd><dt><i>annotation</i> (str)</dt> <dd> -return annotation +function return annotation </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -562,18 +642,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> name of the module containing this module -</dd><dt><i>name</i></dt> +</dd><dt><i>name</i> (str)</dt> <dd> name of this module -</dd><dt><i>file</i></dt> +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this module -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the module definition +line number of the module definition </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -613,18 +693,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this object +</dd><dt><i>name</i> (str)</dt> <dd> -name of this class -</dd><dt><i>file</i></dt> +name of this object +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this object -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +linenumber of the object definition </dd> </dl><a NAME="_ClbrBase.setEndLine" ID="_ClbrBase.setEndLine"></a> <h4>_ClbrBase.setEndLine</h4> @@ -632,9 +712,9 @@ <p> Public method to set the ending line number. </p><dl> -<dt><i>endLineNo</i></dt> +<dt><i>endLineNo</i> (int)</dt> <dd> -number of the last line (integer) +number of the last line </dd> </dl> <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html Sat Nov 18 12:35:13 2017 +0100 +++ b/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html Sat Nov 18 18:27:25 2017 +0100 @@ -28,13 +28,16 @@ </p><p> <ul> <li>CORBA IDL</li> -<li>Python</li> +<li>JavaScript</li> +<li>ProtoBuf</li> +<li>Python 2</li> +<li>Python 3</li> <li>Ruby</li> </ul> </p> <h3>Global Attributes</h3> <table> -<tr><td>IDL_SOURCE</td></tr><tr><td>JS_SOURCE</td></tr><tr><td>PTL_SOURCE</td></tr><tr><td>PY_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>__extensions</td></tr> +<tr><td>IDL_SOURCE</td></tr><tr><td>JS_SOURCE</td></tr><tr><td>PROTO_SOURCE</td></tr><tr><td>PTL_SOURCE</td></tr><tr><td>PY_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>__extensions</td></tr> </table> <h3>Classes</h3> <table> @@ -57,20 +60,20 @@ <p> Module function to extend the Python module finding mechanism. </p><p> - This function searches for files in the given path. If the filename - doesn't have an extension or an extension of .py, the normal search - implemented in the imp module is used. For all other supported files - only path is searched. + This function searches for files in the given list of paths. If the + file name doesn't have an extension or an extension of .py, the normal + Python search implemented in the imp module is used. For all other + supported files only the paths list is searched. </p><dl> -<dt><i>name</i></dt> +<dt><i>name</i> (str)</dt> <dd> -filename or modulename to search for (string) -</dd><dt><i>path</i></dt> +file name or module name to search for +</dd><dt><i>path</i> (list of str)</dt> <dd> -search path (list of strings) -</dd><dt><i>isPyFile</i></dt> +search paths +</dd><dt><i>isPyFile</i> (bool)</dt> <dd> -flag indicating a Python file (boolean) +flag indicating a Python file </dd> </dl><dl> <dt>Returns:</dt> @@ -79,6 +82,11 @@ is a tuple of file suffix, file mode and file type) </dd> </dl><dl> +<dt>Return Type:</dt> +<dd> +tuple +</dd> +</dl><dl> <dt>Raises <b>ImportError</b>:</dt> <dd> The file or module wasn't found. @@ -96,21 +104,26 @@ The real work of parsing the source file is delegated to the individual file parsers. </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the source file (string) -</dd><dt><i>path</i></dt> +name of the source file +</dd><dt><i>path</i> (list of str)</dt> <dd> -path the file should be searched in (list of strings) -</dd><dt><i>isPyFile</i></dt> +list of paths the file should be searched in +</dd><dt><i>isPyFile</i> (bool)</dt> <dd> -flag indicating a Python file (boolean) +flag indicating a Python file </dd> </dl><dl> <dt>Returns:</dt> <dd> the resulting dictionary </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr />
--- a/Documentation/Source/eric6.Utilities.ClassBrowsers.idlclbr.html Sat Nov 18 12:35:13 2017 +0100 +++ b/Documentation/Source/eric6.Utilities.ClassBrowsers.idlclbr.html Sat Nov 18 18:27:25 2017 +0100 @@ -93,18 +93,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this attribute +</dd><dt><i>name</i> (str)</dt> <dd> -name of this class -</dd><dt><i>file</i></dt> +name of this attribute +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this attribute -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +line number of the attribute definition </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -141,22 +141,22 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> name of the module containing this function -</dd><dt><i>name</i></dt> +</dd><dt><i>name</i> (str)</dt> <dd> name of this function -</dd><dt><i>file</i></dt> +</dd><dt><i>file</i> (str)</dt> <dd> -filename containing this class -</dd><dt><i>lineno</i></dt> +filename containing this function +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition -</dd><dt><i>signature</i></dt> +line number of the function definition +</dd><dt><i>signature</i> (str)</dt> <dd> -parameterlist of the method -</dd><dt><i>separator</i></dt> +parameter list of the function +</dd><dt><i>separator</i> (str)</dt> <dd> string separating the parameters </dd> @@ -195,22 +195,22 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this interface +</dd><dt><i>name</i> (str)</dt> <dd> name of this interface -</dd><dt><i>superClasses</i></dt> +</dd><dt><i>superClasses</i> (list of str)</dt> <dd> list of interface names this interface is inherited from -</dd><dt><i>file</i></dt> +</dd><dt><i>file</i> (str)</dt> <dd> filename containing this interface -</dd><dt><i>lineno</i></dt> +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the interface definition +line number of the interface definition </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -247,18 +247,18 @@ <p> Constructor </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the module containing this class -</dd><dt><i>name</i></dt> +name of the module containing this module +</dd><dt><i>name</i> (str)</dt> <dd> -name of this class -</dd><dt><i>file</i></dt> +name of this module +</dd><dt><i>file</i> (str)</dt> <dd> -filename containing this class -</dd><dt><i>lineno</i></dt> +filename containing this module +</dd><dt><i>lineno</i> (int)</dt> <dd> -linenumber of the class definition +line number of the module definition </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -304,18 +304,23 @@ Read a CORBA IDL file and return a dictionary of classes, functions and modules. </p><dl> -<dt><i>module</i></dt> +<dt><i>module</i> (str)</dt> <dd> -name of the CORBA IDL file (string) -</dd><dt><i>path</i></dt> +name of the CORBA IDL file +</dd><dt><i>path</i> (list of str)</dt> <dd> -path the file should be searched in (list of strings) +path the file should be searched in </dd> </dl><dl> <dt>Returns:</dt> <dd> the resulting dictionary </dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> </dl> <div align="right"><a href="#top">Up</a></div> <hr />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Utilities.ClassBrowsers.protoclbr.html Sat Nov 18 18:27:25 2017 +0100 @@ -0,0 +1,316 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Utilities.ClassBrowsers.protoclbr</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Utilities.ClassBrowsers.protoclbr</h1> +<p> +Parse a ProtoBuf protocol file and retrieve messages, enums, services and +rpc methods. +</p><p> +It is based on the Python class browser found in this package. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>SUPPORTED_TYPES</td></tr><tr><td>_commentsub</td></tr><tr><td>_getnext</td></tr><tr><td>_modules</td></tr><tr><td>_normalize</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#Enum">Enum</a></td> +<td>Class to represent a ProtoBuf Enum.</td> +</tr><tr> +<td><a href="#Message">Message</a></td> +<td>Class to represent a ProtoBuf Message.</td> +</tr><tr> +<td><a href="#Service">Service</a></td> +<td>Class to represent a ProtoBuf Service.</td> +</tr><tr> +<td><a href="#ServiceMethod">ServiceMethod</a></td> +<td>Class to represent a ProtoBuf Service Method.</td> +</tr><tr> +<td><a href="#VisibilityMixin">VisibilityMixin</a></td> +<td>Mixin class implementing the notion of visibility.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#readmodule_ex">readmodule_ex</a></td> +<td>Read a ProtoBuf protocol file and return a dictionary of messages, enums, services and rpc methods.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="Enum" ID="Enum"></a> +<h2>Enum</h2> +<p> + Class to represent a ProtoBuf Enum. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Enum, VisibilityMixin +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#Enum.__init__">Enum</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Enum.__init__" ID="Enum.__init__"></a> +<h4>Enum (Constructor)</h4> +<b>Enum</b>(<i>module, name, file, lineno</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i> (str)</dt> +<dd> +name of the module containing this enum +</dd><dt><i>name</i> (str)</dt> +<dd> +name of this enum +</dd><dt><i>file</i> (str)</dt> +<dd> +filename containing this enum +</dd><dt><i>lineno</i> (int)</dt> +<dd> +linenumber of the message enum +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="Message" ID="Message"></a> +<h2>Message</h2> +<p> + Class to represent a ProtoBuf Message. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Module, VisibilityMixin +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#Message.__init__">Message</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Message.__init__" ID="Message.__init__"></a> +<h4>Message (Constructor)</h4> +<b>Message</b>(<i>module, name, file, lineno</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i> (str)</dt> +<dd> +name of the module containing this message +</dd><dt><i>name</i> (str)</dt> +<dd> +name of this message +</dd><dt><i>file</i> (str)</dt> +<dd> +filename containing this message +</dd><dt><i>lineno</i> (int)</dt> +<dd> +linenumber of the message definition +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="Service" ID="Service"></a> +<h2>Service</h2> +<p> + Class to represent a ProtoBuf Service. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Class, VisibilityMixin +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#Service.__init__">Service</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Service.__init__" ID="Service.__init__"></a> +<h4>Service (Constructor)</h4> +<b>Service</b>(<i>module, name, file, lineno</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i> (str)</dt> +<dd> +name of the module containing this service +</dd><dt><i>name</i> (str)</dt> +<dd> +name of this service +</dd><dt><i>file</i> (str)</dt> +<dd> +filename containing this service +</dd><dt><i>lineno</i> (int)</dt> +<dd> +linenumber of the service definition +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="ServiceMethod" ID="ServiceMethod"></a> +<h2>ServiceMethod</h2> +<p> + Class to represent a ProtoBuf Service Method. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Function, VisibilityMixin +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#ServiceMethod.__init__">ServiceMethod</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="ServiceMethod.__init__" ID="ServiceMethod.__init__"></a> +<h4>ServiceMethod (Constructor)</h4> +<b>ServiceMethod</b>(<i>name, file, lineno, signature, returns</i>) +<p> + Constructor +</p><dl> +<dt><i>name</i> (str)</dt> +<dd> +name of this service method +</dd><dt><i>file</i> (str)</dt> +<dd> +filename containing this service method +</dd><dt><i>lineno</i> (int)</dt> +<dd> +linenumber of the service method definition +</dd><dt><i>signature</i> (str)</dt> +<dd> +parameter list of the service method +</dd><dt><i>returns</i> (str)</dt> +<dd> +return type of the service method +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="VisibilityMixin" ID="VisibilityMixin"></a> +<h2>VisibilityMixin</h2> +<p> + Mixin class implementing the notion of visibility. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.ClbrVisibilityMixinBase +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VisibilityMixin.__init__">VisibilityMixin</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VisibilityMixin.__init__" ID="VisibilityMixin.__init__"></a> +<h4>VisibilityMixin (Constructor)</h4> +<b>VisibilityMixin</b>(<i></i>) +<p> + Constructor +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="readmodule_ex" ID="readmodule_ex"></a> +<h2>readmodule_ex</h2> +<b>readmodule_ex</b>(<i>module, path=None</i>) +<p> + Read a ProtoBuf protocol file and return a dictionary of messages, enums, + services and rpc methods. +</p><dl> +<dt><i>module</i> (str)</dt> +<dd> +name of the ProtoBuf protocol file +</dd><dt><i>path</i> (list of str)</dt> +<dd> +path the file should be searched in +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +the resulting dictionary +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html Sat Nov 18 12:35:13 2017 +0100 +++ b/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html Sat Nov 18 18:27:25 2017 +0100 @@ -28,7 +28,10 @@ </p><p> <ul> <li>CORBA IDL</li> -<li>Python</li> +<li>JavaScript</li> +<li>ProtoBuf</li> +<li>Python 2</li> +<li>Python 3</li> <li>Ruby</li> </ul> </p> @@ -49,6 +52,9 @@ <td><a href="eric6.Utilities.ClassBrowsers.jsclbr.html">jsclbr</a></td> <td>Parse a JavaScript file and retrieve variables and functions.</td> </tr><tr> +<td><a href="eric6.Utilities.ClassBrowsers.protoclbr.html">protoclbr</a></td> +<td>Parse a ProtoBuf protocol file and retrieve messages, enums, services and rpc methods.</td> +</tr><tr> <td><a href="eric6.Utilities.ClassBrowsers.pyclbr.html">pyclbr</a></td> <td>Parse a Python file and retrieve classes, functions/methods and attributes.</td> </tr><tr>
--- a/UI/BrowserModel.py Sat Nov 18 12:35:13 2017 +0100 +++ b/UI/BrowserModel.py Sat Nov 18 18:27:25 2017 +0100 @@ -1137,6 +1137,9 @@ self._moduleName = os.path.basename(finfo) elif self.isProtobufFile(): pixName = "protobuf.png" + self._populated = False + self._lazyPopulation = True + self._moduleName = os.path.basename(finfo) elif self.isSvgFile(): pixName = "fileSvg.png" elif self.isPixmapFile(): @@ -1167,7 +1170,8 @@ self._filename = os.path.abspath(finfo) self.itemData[0] = os.path.basename(finfo) if self.isPython2File() or self.isPython3File() or \ - self.isRubyFile() or self.isIdlFile(): + self.isRubyFile() or self.isIdlFile() or \ + self.isProtobufFile(): self._dirName = os.path.dirname(finfo) self._moduleName = os.path.basename(finfo) @@ -1393,6 +1397,9 @@ self.ismodule = isinstance( self._classObject, Utilities.ClassBrowsers.ClbrBaseClasses.Module) + self.isenum = isinstance( + self._classObject, + Utilities.ClassBrowsers.ClbrBaseClasses.Enum) if self.isfunction: if cl.isPrivate(): self.icon = UI.PixmapCache.getIcon("method_private.png") @@ -1411,6 +1418,8 @@ # for e in self._classObject.parameters])) elif self.ismodule: self.icon = UI.PixmapCache.getIcon("module.png") + elif self.isenum: + self.icon = UI.PixmapCache.getIcon("attribute.png") else: if cl.isPrivate(): self.icon = UI.PixmapCache.getIcon("class_private.png")
--- a/Utilities/ClassBrowsers/ClbrBaseClasses.py Sat Nov 18 12:35:13 2017 +0100 +++ b/Utilities/ClassBrowsers/ClbrBaseClasses.py Sat Nov 18 18:27:25 2017 +0100 @@ -19,10 +19,14 @@ """ Constructor - @param module name of the module containing this class - @param name name of this class + @param module name of the module containing this object + @type str + @param name name of this object + @type str @param file filename containing this object - @param lineno linenumber of the class definition + @type str + @param lineno linenumber of the object definition + @type int """ self.module = module self.name = name @@ -34,7 +38,8 @@ """ Public method to set the ending line number. - @param endLineNo number of the last line (integer) + @param endLineNo number of the last line + @type int """ self.endlineno = endLineNo @@ -47,10 +52,14 @@ """ Constructor - @param module name of the module containing this class - @param name name of this class + @param module name of the module containing this object + @type str + @param name name of this object + @type str @param file filename containing this object - @param lineno linenumber of the class definition + @type str + @param lineno linenumber of the object definition + @type int """ _ClbrBase.__init__(self, module, name, file, lineno) self.methods = {} @@ -62,8 +71,10 @@ """ Protected method to add information about a method. - @param name name of method to be added (string) + @param name name of method to be added + @type str @param function Function object to be added + @type Function """ self.methods[name] = function @@ -72,7 +83,9 @@ Protected method to retrieve a method by name. @param name name of the method (string) - @return the named method or None + @type str + @return the named method + @rtype Function or None """ try: return self.methods[name] @@ -83,7 +96,8 @@ """ Protected method to add information about global variables. - @param attr Attribute object to be added (Attribute) + @param attr Attribute object to be added + @type Attribute """ if attr.name not in self.globals: self.globals[attr.name] = attr @@ -94,8 +108,10 @@ """ Protected method to retrieve a global variable by name. - @param name name of the global variable (string) - @return the named global variable or None + @param name name of the global variable + @type str + @return the named global variable + @rtype Attribute or None """ try: return self.globals[name] @@ -106,7 +122,8 @@ """ Protected method to add information about attributes. - @param attr Attribute object to be added (Attribute) + @param attr Attribute object to be added + @type Attribute """ if attr.name not in self.attributes: self.attributes[attr.name] = attr @@ -117,8 +134,10 @@ """ Protected method to retrieve an attribute by name. - @param name name of the attribute (string) - @return the named attribute or None + @param name name of the attribute + @type str + @return the named attribute + @rtype Attribute or None """ try: return self.attributes[name] @@ -130,7 +149,9 @@ Protected method method to add a nested class to this class. @param name name of the class - @param _class Class object to be added (Class) + @type str + @param _class Class object to be added + @type Class """ self.classes[name] = _class @@ -143,7 +164,8 @@ """ Public method to check, if the visibility is Private. - @return flag indicating Private visibility (boolean) + @return flag indicating Private visibility + @rtype bool """ return self.visibility == 0 @@ -151,7 +173,8 @@ """ Public method to check, if the visibility is Protected. - @return flag indicating Protected visibility (boolean) + @return flag indicating Protected visibility + @rtype bool """ return self.visibility == 1 @@ -159,7 +182,8 @@ """ Public method to check, if the visibility is Public. - @return flag indicating Public visibility (boolean) + @return flag indicating Public visibility + @rtype bool """ return self.visibility == 2 @@ -190,10 +214,14 @@ """ Constructor - @param module name of the module containing this class - @param name name of this class + @param module name of the module containing this attribute + @type str + @param name name of this attribute + @type str @param file filename containing this attribute - @param lineno linenumber of the class definition + @type str + @param lineno line number of the attribute definition + @type int """ _ClbrBase.__init__(self, module, name, file, lineno) @@ -203,8 +231,8 @@ """ Public method to add another assignment line number. - @param lineno linenumber of the additional attribute assignment - (integer) + @param lineno line number of the additional attribute assignment + @type int """ if lineno not in self.linenos: self.linenos.append(lineno) @@ -219,10 +247,15 @@ Constructor @param module name of the module containing this class + @type str @param name name of this class + @type str @param superClasses list of class names this class is inherited from + @type list of str @param file filename containing this class - @param lineno linenumber of the class definition + @type str + @param lineno line number of the class definition + @type int """ ClbrBase.__init__(self, module, name, file, lineno) if superClasses is None: @@ -239,9 +272,13 @@ Constructor @param module name of the module containing this module + @type str @param name name of this module + @type str @param file filename containing this module - @param lineno linenumber of the module definition + @type str + @param lineno line number of the module definition + @type int """ ClbrBase.__init__(self, module, name, file, lineno) @@ -260,13 +297,21 @@ Constructor @param module name of the module containing this function + @type str @param name name of this function - @param file filename containing this class - @param lineno linenumber of the class definition - @param signature parameterlist of the method - @param separator string separating the parameters + @type str + @param file filename containing this function + @type str + @param lineno line number of the function definition + @type int + @param signature parameter list of the function + @type str + @param separator string separating the parameters of the function + @type str @param modifierType type of the function - @param annotation return annotation + @type int + @param annotation function return annotation + @type str """ ClbrBase.__init__(self, module, name, file, lineno) self.parameters = [e.strip() for e in signature.split(separator)] @@ -282,10 +327,34 @@ """ Constructor - @param module name of the module containing this module - @param file filename containing this module - @param lineno linenumber of the module definition + @param module name of the module containing this coding statement + @type str + @param file filename containing this coding statement + @type str + @param lineno line number of the coding definition + @type int @param coding character coding of the source file + @type str """ ClbrBase.__init__(self, module, "Coding", file, lineno) self.coding = coding + + +class Enum(ClbrBase): + """ + Class to represent an enum definition. + """ + def __init__(self, module, name, file, lineno): + """ + Constructor + + @param module name of the module containing this enum + @type str + @param name name of this enum + @type str + @param file filename containing this enum + @type str + @param lineno line number of the enum definition + @type int + """ + ClbrBase.__init__(self, module, name, file, lineno)
--- a/Utilities/ClassBrowsers/__init__.py Sat Nov 18 12:35:13 2017 +0100 +++ b/Utilities/ClassBrowsers/__init__.py Sat Nov 18 18:27:25 2017 +0100 @@ -11,7 +11,10 @@ <ul> <li>CORBA IDL</li> -<li>Python</li> +<li>JavaScript</li> +<li>ProtoBuf</li> +<li>Python 2</li> +<li>Python 3</li> <li>Ruby</li> </ul> """ @@ -29,14 +32,17 @@ RB_SOURCE = 129 IDL_SOURCE = 130 JS_SOURCE = 131 +PROTO_SOURCE = 132 -SUPPORTED_TYPES = [PY_SOURCE, PTL_SOURCE, RB_SOURCE, IDL_SOURCE, JS_SOURCE] +SUPPORTED_TYPES = [PY_SOURCE, PTL_SOURCE, RB_SOURCE, IDL_SOURCE, JS_SOURCE, + PROTO_SOURCE] __extensions = { "IDL": [".idl"], "Python": [".py", ".pyw", ".ptl"], # currently not used "Ruby": [".rb"], "JavaScript": [".js"], + "ProtoBuf": [".proto"], } @@ -48,10 +54,14 @@ The real work of parsing the source file is delegated to the individual file parsers. - @param module name of the source file (string) - @param path path the file should be searched in (list of strings) - @param isPyFile flag indicating a Python file (boolean) + @param module name of the source file + @type str + @param path list of paths the file should be searched in + @type list of str + @param isPyFile flag indicating a Python file + @type bool @return the resulting dictionary + @rtype dict """ ext = os.path.splitext(module)[1].lower() path = [] if path is None else path[:] @@ -60,6 +70,10 @@ from . import idlclbr dictionary = idlclbr.readmodule_ex(module, path) idlclbr._modules.clear() + elif ext in __extensions["ProtoBuf"]: + from . import protoclbr + dictionary = protoclbr.readmodule_ex(module, path) + protoclbr._modules.clear() elif ext in __extensions["Ruby"]: from . import rbclbr dictionary = rbclbr.readmodule_ex(module, path) @@ -87,16 +101,20 @@ """ Module function to extend the Python module finding mechanism. - This function searches for files in the given path. If the filename - doesn't have an extension or an extension of .py, the normal search - implemented in the imp module is used. For all other supported files - only path is searched. + This function searches for files in the given list of paths. If the + file name doesn't have an extension or an extension of .py, the normal + Python search implemented in the imp module is used. For all other + supported files only the paths list is searched. - @param name filename or modulename to search for (string) - @param path search path (list of strings) - @param isPyFile flag indicating a Python file (boolean) + @param name file name or module name to search for + @type str + @param path search paths + @type list of str + @param isPyFile flag indicating a Python file + @type bool @return tuple of the open file, pathname and description. Description is a tuple of file suffix, file mode and file type) + @rtype tuple @exception ImportError The file or module wasn't found. """ ext = os.path.splitext(name)[1].lower() @@ -115,6 +133,13 @@ return (open(pathname), pathname, (ext, 'r', IDL_SOURCE)) raise ImportError + elif ext in __extensions["ProtoBuf"]: + for p in path: # only search in path + pathname = os.path.join(p, name) + if os.path.exists(pathname): + return (open(pathname), pathname, (ext, 'r', PROTO_SOURCE)) + raise ImportError + elif ext in __extensions["JavaScript"]: for p in path: # only search in path pathname = os.path.join(p, name)
--- a/Utilities/ClassBrowsers/idlclbr.py Sat Nov 18 12:35:13 2017 +0100 +++ b/Utilities/ClassBrowsers/idlclbr.py Sat Nov 18 18:27:25 2017 +0100 @@ -114,10 +114,14 @@ """ Constructor - @param module name of the module containing this class - @param name name of this class - @param file filename containing this class - @param lineno linenumber of the class definition + @param module name of the module containing this module + @type str + @param name name of this module + @type str + @param file filename containing this module + @type str + @param lineno line number of the module definition + @type int """ ClbrBaseClasses.Module.__init__(self, module, name, file, lineno) VisibilityMixin.__init__(self) @@ -131,12 +135,17 @@ """ Constructor - @param module name of the module containing this class + @param module name of the module containing this interface + @type str @param name name of this interface + @type str @param superClasses list of interface names this interface is inherited from + @type list of str @param file filename containing this interface - @param lineno linenumber of the interface definition + @type str + @param lineno line number of the interface definition + @type int """ ClbrBaseClasses.Class.__init__(self, module, name, superClasses, file, lineno) @@ -153,11 +162,17 @@ Constructor @param module name of the module containing this function + @type str @param name name of this function - @param file filename containing this class - @param lineno linenumber of the class definition - @param signature parameterlist of the method + @type str + @param file filename containing this function + @type str + @param lineno line number of the function definition + @type int + @param signature parameter list of the function + @type str @param separator string separating the parameters + @type str """ ClbrBaseClasses.Function.__init__(self, module, name, file, lineno, signature, separator) @@ -172,10 +187,14 @@ """ Constructor - @param module name of the module containing this class - @param name name of this class + @param module name of the module containing this attribute + @type str + @param name name of this attribute + @type str @param file filename containing this attribute - @param lineno linenumber of the class definition + @type str + @param lineno line number of the attribute definition + @type int """ ClbrBaseClasses.Attribute.__init__(self, module, name, file, lineno) VisibilityMixin.__init__(self) @@ -186,9 +205,12 @@ Read a CORBA IDL file and return a dictionary of classes, functions and modules. - @param module name of the CORBA IDL file (string) - @param path path the file should be searched in (list of strings) + @param module name of the CORBA IDL file + @type str + @param path path the file should be searched in + @type list of str @return the resulting dictionary + @rtype dict """ global _modules
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Utilities/ClassBrowsers/protoclbr.py Sat Nov 18 18:27:25 2017 +0100 @@ -0,0 +1,390 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Parse a ProtoBuf protocol file and retrieve messages, enums, services and +rpc methods. + +It is based on the Python class browser found in this package. +""" + +from __future__ import unicode_literals + +import re + +import Utilities +import Utilities.ClassBrowsers as ClassBrowsers +from . import ClbrBaseClasses + +SUPPORTED_TYPES = [ClassBrowsers.PROTO_SOURCE] + +_getnext = re.compile( + r""" + (?P<String> + " [^"\\\n]* (?: \\. [^"\\\n]*)* " + ) + +| (?P<Comment> + ^ [ \t]* // .*? $ + | + ^ [ \t]* /\* .*? \*/ + ) + +| (?P<Message> + ^ + (?P<MessageIndent> [ \t]* ) + message [ \t]+ + (?P<MessageName> [a-zA-Z_] [a-zA-Z0-9_]* ) + [ \t]* { + ) + +| (?P<Enum> + ^ + (?P<EnumIndent> [ \t]* ) + enum [ \t]+ + (?P<EnumName> [a-zA-Z_] [a-zA-Z0-9_]* ) + [ \t]* { + ) + +| (?P<Service> + ^ + (?P<ServiceIndent> [ \t]* ) + service [ \t]+ + (?P<ServiceName> [a-zA-Z_] [a-zA-Z0-9_]* ) + [ \t]* { + ) + +| (?P<Method> + ^ + (?P<MethodIndent> [ \t]* ) + rpc [ \t]+ + (?P<MethodName> [a-zA-Z_] [a-zA-Z0-9_]* ) + [ \t]* + \( + (?P<MethodSignature> [^)]+? ) + \) + [ \t]+ + returns + [ \t]* + \( + (?P<MethodReturn> [^)]+? ) + \) + [ \t]* + ) + +| (?P<Begin> + [ \t]* { + ) + +| (?P<End> + [ \t]* } [ \t]* ;? + )""", + re.VERBOSE | re.DOTALL | re.MULTILINE).search + +# function to replace comments +_commentsub = re.compile(r"""//[^\n]*\n|//[^\n]*$""").sub +# function to normalize whitespace +_normalize = re.compile(r"""[ \t]{2,}""").sub + +_modules = {} # cache of modules we've seen + + +class VisibilityMixin(ClbrBaseClasses.ClbrVisibilityMixinBase): + """ + Mixin class implementing the notion of visibility. + """ + def __init__(self): + """ + Constructor + """ + self.setPublic() + + +class Message(ClbrBaseClasses.Module, VisibilityMixin): + """ + Class to represent a ProtoBuf Message. + """ + def __init__(self, module, name, file, lineno): + """ + Constructor + + @param module name of the module containing this message + @type str + @param name name of this message + @type str + @param file filename containing this message + @type str + @param lineno linenumber of the message definition + @type int + """ + ClbrBaseClasses.Module.__init__(self, module, name, file, lineno) + VisibilityMixin.__init__(self) + + +class Enum(ClbrBaseClasses.Enum, VisibilityMixin): + """ + Class to represent a ProtoBuf Enum. + """ + def __init__(self, module, name, file, lineno): + """ + Constructor + + @param module name of the module containing this enum + @type str + @param name name of this enum + @type str + @param file filename containing this enum + @type str + @param lineno linenumber of the message enum + @type int + """ + ClbrBaseClasses.Enum.__init__(self, module, name, file, lineno) + VisibilityMixin.__init__(self) + + +class Service(ClbrBaseClasses.Class, VisibilityMixin): + """ + Class to represent a ProtoBuf Service. + """ + def __init__(self, module, name, file, lineno): + """ + Constructor + + @param module name of the module containing this service + @type str + @param name name of this service + @type str + @param file filename containing this service + @type str + @param lineno linenumber of the service definition + @type int + """ + ClbrBaseClasses.Class.__init__(self, module, name, None, file, + lineno) + VisibilityMixin.__init__(self) + + +class ServiceMethod(ClbrBaseClasses.Function, VisibilityMixin): + """ + Class to represent a ProtoBuf Service Method. + """ + def __init__(self, name, file, lineno, signature, returns): + """ + Constructor + + @param name name of this service method + @type str + @param file filename containing this service method + @type str + @param lineno linenumber of the service method definition + @type int + @param signature parameter list of the service method + @type str + @param returns return type of the service method + @type str + """ + ClbrBaseClasses.Function.__init__(self, None, name, file, lineno, + signature, + annotation="-> {0}".format(returns)) + VisibilityMixin.__init__(self) + + +def readmodule_ex(module, path=None): + """ + Read a ProtoBuf protocol file and return a dictionary of messages, enums, + services and rpc methods. + + @param module name of the ProtoBuf protocol file + @type str + @param path path the file should be searched in + @type list of str + @return the resulting dictionary + @rtype dict + """ + global _modules + + dictionary = {} + + if module in _modules: + # we've seen this file before... + return _modules[module] + + # search the path for the file + f = None + fullpath = [] if path is None else path[:] + f, file, (suff, mode, type) = ClassBrowsers.find_module(module, fullpath) + if f: + f.close() + if type not in SUPPORTED_TYPES: + # not ProtoBuf protocol source, can't do anything with this module + _modules[module] = dictionary + return dictionary + + _modules[module] = dictionary + classstack = [] # stack of (class, indent) pairs + indent = 0 + try: + src = Utilities.readEncodedFile(file)[0] + except (UnicodeError, IOError): + # can't do anything with this module + _modules[module] = dictionary + return dictionary + + lineno, last_lineno_pos = 1, 0 + lastGlobalEntry = None + cur_obj = None + i = 0 + while True: + m = _getnext(src, i) + if not m: + break + start, i = m.span() + + if m.start("Method") >= 0: + # found a method definition or function + thisindent = indent + meth_name = m.group("MethodName") + meth_sig = m.group("MethodSignature") + meth_sig = meth_sig and meth_sig.replace('\\\n', '') or '' + meth_sig = _commentsub('', meth_sig) + meth_sig = _normalize(' ', meth_sig) + meth_return = m.group("MethodReturn") + meth_return = meth_return and meth_return.replace('\\\n', '') or '' + meth_return = _commentsub('', meth_return) + meth_return = _normalize(' ', meth_return) + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + # close all interfaces/modules indented at least as much + while classstack and \ + classstack[-1][1] >= thisindent: + if classstack[-1][0] is not None: + # record the end line + classstack[-1][0].setEndLine(lineno - 1) + del classstack[-1] + if classstack: + # it's an interface/module method + cur_class = classstack[-1][0] + if isinstance(cur_class, Service): + # it's a method + f = ServiceMethod(meth_name, file, lineno, meth_sig, + meth_return) + cur_class._addmethod(meth_name, f) + # else it's a nested def + else: + f = None + else: + # the file is incorrect, ignore the entry + continue + if not classstack: + if lastGlobalEntry: + lastGlobalEntry.setEndLine(lineno - 1) + lastGlobalEntry = f + if cur_obj and isinstance(cur_obj, ServiceMethod): + cur_obj.setEndLine(lineno - 1) + cur_obj = f + classstack.append((f, thisindent)) # Marker for nested fns + + elif m.start("String") >= 0: + pass + + elif m.start("Comment") >= 0: + pass + + elif m.start("Message") >= 0: + # we found a message definition + thisindent = indent + indent += 1 + # close all messages/services indented at least as much + while classstack and \ + classstack[-1][1] >= thisindent: + if classstack[-1][0] is not None: + # record the end line + classstack[-1][0].setEndLine(lineno - 1) + del classstack[-1] + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + message_name = m.group("MessageName") + # remember this message + cur_class = Message(module, message_name, file, lineno) + if not classstack: + dictionary[message_name] = cur_class + else: + msg = classstack[-1][0] + msg._addclass(message_name, cur_class) + if not classstack: + if lastGlobalEntry: + lastGlobalEntry.setEndLine(lineno - 1) + lastGlobalEntry = cur_class + cur_obj = cur_class + classstack.append((cur_class, thisindent)) + + elif m.start("Enum") >= 0: + # we found a message definition + thisindent = indent + indent += 1 + # close all messages/services indented at least as much + while classstack and \ + classstack[-1][1] >= thisindent: + if classstack[-1][0] is not None: + # record the end line + classstack[-1][0].setEndLine(lineno - 1) + del classstack[-1] + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + enum_name = m.group("EnumName") + # remember this Enum + cur_class = Enum(module, enum_name, file, lineno) + if not classstack: + dictionary[enum_name] = cur_class + else: + enum = classstack[-1][0] + enum._addclass(enum_name, cur_class) + if not classstack: + if lastGlobalEntry: + lastGlobalEntry.setEndLine(lineno - 1) + lastGlobalEntry = cur_class + cur_obj = cur_class + classstack.append((cur_class, thisindent)) + + elif m.start("Service") >= 0: + # we found a message definition + thisindent = indent + indent += 1 + # close all messages/services indented at least as much + while classstack and \ + classstack[-1][1] >= thisindent: + if classstack[-1][0] is not None: + # record the end line + classstack[-1][0].setEndLine(lineno - 1) + del classstack[-1] + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + service_name = m.group("ServiceName") + # remember this Service + cur_class = Service(module, service_name, file, lineno) + if not classstack: + dictionary[service_name] = cur_class + else: + service = classstack[-1][0] + service._addclass(service_name, cur_class) + if not classstack: + if lastGlobalEntry: + lastGlobalEntry.setEndLine(lineno - 1) + lastGlobalEntry = cur_class + cur_obj = cur_class + classstack.append((cur_class, thisindent)) + + elif m.start("Begin") >= 0: + # a begin of a block we are not interested in + indent += 1 + + elif m.start("End") >= 0: + # an end of a block + indent -= 1 + + else: + assert 0, "regexp _getnext found something unexpected" + + return dictionary
--- a/changelog Sat Nov 18 12:35:13 2017 +0100 +++ b/changelog Sat Nov 18 18:27:25 2017 +0100 @@ -2,6 +2,8 @@ ---------- Version 17.12: - bug fixes +- General + -- added support for Google protobuf protocol files - Code Documentation Viewer -- added possibility to show the type of the object info is shown for -- modified the top row and the search part in order to allow smaller sizes
--- a/eric6.e4p Sat Nov 18 12:35:13 2017 +0100 +++ b/eric6.e4p Sat Nov 18 18:27:25 2017 +0100 @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> +<!DOCTYPE Project SYSTEM "Project-6.0.dtd"> <!-- eric project file for project eric6 --> <!-- Copyright (C) 2017 Detlev Offenbach, detlev@die-offenbachs.de --> -<Project version="5.1"> +<Project version="6.0"> <Language>en_US</Language> <ProjectWordList>Dictionaries/words.dic</ProjectWordList> <ProjectExcludeList>Dictionaries/excludes.dic</ProjectExcludeList> @@ -1258,6 +1258,7 @@ <Source>Utilities/ClassBrowsers/__init__.py</Source> <Source>Utilities/ClassBrowsers/idlclbr.py</Source> <Source>Utilities/ClassBrowsers/jsclbr.py</Source> + <Source>Utilities/ClassBrowsers/protoclbr.py</Source> <Source>Utilities/ClassBrowsers/pyclbr.py</Source> <Source>Utilities/ClassBrowsers/rbclbr.py</Source> <Source>Utilities/FtpUtilities.py</Source> @@ -2021,7 +2022,6 @@ <Resource>WebBrowser/data/icons.qrc</Resource> <Resource>WebBrowser/data/javascript.qrc</Resource> </Resources> - <Interfaces/> <Others> <Other>.hgignore</Other> <Other>APIs/Python/zope-2.10.7.api</Other>