11 import re |
11 import re |
12 |
12 |
13 from PyQt6.QtCore import QObject |
13 from PyQt6.QtCore import QObject |
14 |
14 |
15 from eric7.EricWidgets.EricApplication import ericApp |
15 from eric7.EricWidgets.EricApplication import ericApp |
16 from eric7.QScintilla.Editor import Editor |
|
17 from eric7.Utilities.ModuleParser import PY_SOURCE, Module |
16 from eric7.Utilities.ModuleParser import PY_SOURCE, Module |
18 |
17 |
19 from .APIsManager import APIsManager, ApisNameProject |
18 from .APIsManager import APIsManager, ApisNameProject |
|
19 |
|
20 try: |
|
21 from eric7.QScintilla.Editor import EditorIconId |
|
22 |
|
23 AttributeID = EditorIconId.Attribute |
|
24 AttributeProtectedID = EditorIconId.AttributeProtected |
|
25 AttributePrivateID = EditorIconId.AttributePrivate |
|
26 FromDocumentID = EditorIconId.FromDocument |
|
27 MethodID = EditorIconId.Method |
|
28 MethodProtectedID = EditorIconId.MethodProtected |
|
29 MethodPrivateID = EditorIconId.MethodPrivate |
|
30 except ImportError: |
|
31 # backward compatibility for eric < 24.2 |
|
32 from eric7.QScintilla.Editor import Editor |
|
33 |
|
34 AttributeID = Editor.AttributeID |
|
35 AttributeProtectedID = Editor.AttributeProtectedID |
|
36 AttributePrivateID = Editor.AttributePrivateID |
|
37 FromDocumentID = Editor.FromDocumentID |
|
38 MethodID = Editor.MethodID |
|
39 MethodProtectedID = Editor.MethodProtectedID |
|
40 MethodPrivateID = Editor.MethodPrivateID |
20 |
41 |
21 AcsAPIs = 0x0001 |
42 AcsAPIs = 0x0001 |
22 AcsDocument = 0x0002 |
43 AcsDocument = 0x0002 |
23 AcsProject = 0x0004 |
44 AcsProject = 0x0004 |
24 |
45 |
582 for method in cl.methods.values(): |
601 for method in cl.methods.values(): |
583 if method.name == "__init__": |
602 if method.name == "__init__": |
584 continue |
603 continue |
585 # determine icon type |
604 # determine icon type |
586 if method.isPrivate(): |
605 if method.isPrivate(): |
587 iconID = Editor.MethodPrivateID |
606 iconID = MethodPrivateID |
588 elif method.isProtected(): |
607 elif method.isProtected(): |
589 iconID = Editor.MethodProtectedID |
608 iconID = MethodProtectedID |
590 else: |
609 else: |
591 iconID = Editor.MethodID |
610 iconID = MethodID |
592 if ( |
611 if ( |
593 prefix == "cls" and method.modifier == method.Class |
612 prefix == "cls" and method.modifier == method.Class |
594 ) or prefix == "self": |
613 ) or prefix == "self": |
595 comps.append((method.name, cl.name, iconID)) |
614 comps.append((method.name, cl.name, iconID)) |
596 if prefix != "cls": |
615 if prefix != "cls": |
597 for attribute in cl.attributes.values(): |
616 for attribute in cl.attributes.values(): |
598 # determine icon type |
617 # determine icon type |
599 if attribute.isPrivate(): |
618 if attribute.isPrivate(): |
600 iconID = Editor.AttributePrivateID |
619 iconID = AttributePrivateID |
601 elif attribute.isProtected(): |
620 elif attribute.isProtected(): |
602 iconID = Editor.AttributeProtectedID |
621 iconID = AttributeProtectedID |
603 else: |
622 else: |
604 iconID = Editor.AttributeID |
623 iconID = AttributeID |
605 comps.append((attribute.name, cl.name, iconID)) |
624 comps.append((attribute.name, cl.name, iconID)) |
606 for attribute in cl.globals.values(): |
625 for attribute in cl.globals.values(): |
607 # determine icon type |
626 # determine icon type |
608 if attribute.isPrivate(): |
627 if attribute.isPrivate(): |
609 iconID = Editor.AttributePrivateID |
628 iconID = AttributePrivateID |
610 elif attribute.isProtected(): |
629 elif attribute.isProtected(): |
611 iconID = Editor.AttributeProtectedID |
630 iconID = AttributeProtectedID |
612 else: |
631 else: |
613 iconID = Editor.AttributeID |
632 iconID = AttributeID |
614 comps.append((attribute.name, cl.name, iconID)) |
633 comps.append((attribute.name, cl.name, iconID)) |
615 |
634 |
616 if word != prefix: |
635 if word != prefix: |
617 completionsList.extend( |
636 completionsList.extend( |
618 [ |
637 [ |
663 ]: |
682 ]: |
664 # determine icon type |
683 # determine icon type |
665 if method.isPrivate(): |
684 if method.isPrivate(): |
666 if doHierarchy: |
685 if doHierarchy: |
667 continue |
686 continue |
668 iconID = Editor.MethodPrivateID |
687 iconID = MethodPrivateID |
669 elif method.isProtected(): |
688 elif method.isProtected(): |
670 iconID = Editor.MethodProtectedID |
689 iconID = MethodProtectedID |
671 else: |
690 else: |
672 iconID = Editor.MethodID |
691 iconID = MethodID |
673 comps.append((method.name, cl.name, iconID)) |
692 comps.append((method.name, cl.name, iconID)) |
674 for attribute in cl.globals.values(): |
693 for attribute in cl.globals.values(): |
675 # determine icon type |
694 # determine icon type |
676 if attribute.isPrivate(): |
695 if attribute.isPrivate(): |
677 iconID = Editor.AttributePrivateID |
696 iconID = AttributePrivateID |
678 elif attribute.isProtected(): |
697 elif attribute.isProtected(): |
679 iconID = Editor.AttributeProtectedID |
698 iconID = AttributeProtectedID |
680 else: |
699 else: |
681 iconID = Editor.AttributeID |
700 iconID = AttributeID |
682 comps.append((attribute.name, cl.name, iconID)) |
701 comps.append((attribute.name, cl.name, iconID)) |
683 |
702 |
684 if word != prefix: |
703 if word != prefix: |
685 completionsList.extend( |
704 completionsList.extend( |
686 [ |
705 [ |
745 completion |
764 completion |
746 and completion not in completionsList |
765 and completion not in completionsList |
747 and completion != word |
766 and completion != word |
748 ): |
767 ): |
749 completionsList.append( |
768 completionsList.append( |
750 "{0}?{1}".format(completion, self.__fromDocumentID) |
769 "{0}?{1}".format(completion, FromDocumentID) |
751 ) |
770 ) |
752 |
771 |
753 res = editor.findNextTarget() |
772 res = editor.findNextTarget() |
754 |
773 |
755 completionsList.sort() |
774 completionsList.sort() |