pyqt-code-editor 0.0.12__tar.gz → 0.0.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/PKG-INFO +1 -1
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/__init__.py +1 -1
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/app.py +2 -2
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/complete.py +28 -5
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/COPYING +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyproject.toml +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/_settings.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/code_editors.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/python.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/text.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/editor_panel.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/find_in_files.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/jupyter_console.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/project_explorer.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/settings_panel.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/sigmund.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/workspace_explorer.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/auto_indent.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/auto_pair.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/base.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/check.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/comment.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/execute.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/file_link.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/line_number.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/search_replace.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/shortcuts.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/symbols.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/theme.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/zoom.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/python_utils.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/signal_router.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/themes.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/utils.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/watchdog.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/completion_popup.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/dock.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/generic.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/python.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/manager.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/process.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/__init__.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/codestral.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/jedi.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/ruff.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/symbol.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/settings.py +0 -0
- {pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/readme.md +0 -0
|
@@ -14,7 +14,7 @@ from .components.jupyter_console import JupyterConsole
|
|
|
14
14
|
from .components.workspace_explorer import WorkspaceExplorer
|
|
15
15
|
from .components.sigmund import Sigmund
|
|
16
16
|
from .components.settings_panel import SettingsPanel
|
|
17
|
-
from . import settings, watchdog
|
|
17
|
+
from . import settings, watchdog, __version__
|
|
18
18
|
from pyqt_code_editor.signal_router import signal_router
|
|
19
19
|
|
|
20
20
|
logging.basicConfig(level=logging.INFO, force=True)
|
|
@@ -29,7 +29,7 @@ class MainWindow(QMainWindow):
|
|
|
29
29
|
if not root_path:
|
|
30
30
|
root_path = settings.current_folder
|
|
31
31
|
|
|
32
|
-
self.setWindowTitle("Sigmund Analyst")
|
|
32
|
+
self.setWindowTitle(f"Sigmund Analyst {__version__}")
|
|
33
33
|
# The editor panel provides splittable editor tabs
|
|
34
34
|
self._editor_panel = EditorPanel()
|
|
35
35
|
self._editor_panel.open_folder_requested.connect(self._open_folder)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from qtpy.QtCore import QTimer, Qt
|
|
3
3
|
from qtpy.QtGui import QTextCursor
|
|
4
|
+
from qtpy.QtWidgets import QApplication
|
|
4
5
|
from ..widgets.completion_popup import CompletionPopup
|
|
5
6
|
from ..widgets.calltip_widget import CalltipWidget
|
|
6
7
|
from .. import settings
|
|
@@ -447,6 +448,7 @@ class Complete:
|
|
|
447
448
|
"""
|
|
448
449
|
Display the calltip as a small persistent widget below the cursor line,
|
|
449
450
|
horizontally aligned with the cursor, so it doesn't obscure typed text.
|
|
451
|
+
If there's not enough space below, show it above the cursor instead.
|
|
450
452
|
"""
|
|
451
453
|
if self._cm_calltip_widget.isVisible():
|
|
452
454
|
logger.info("Calltip widget already visible, updating text.")
|
|
@@ -460,12 +462,33 @@ class Complete:
|
|
|
460
462
|
# the text cursor relative to the editor's viewport.
|
|
461
463
|
cr = self.cursorRect()
|
|
462
464
|
|
|
463
|
-
#
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
465
|
+
# Get the screen geometry to check boundaries
|
|
466
|
+
screen = QApplication.primaryScreen()
|
|
467
|
+
screen_rect = screen.availableGeometry()
|
|
468
|
+
|
|
469
|
+
# Calculate the calltip size
|
|
470
|
+
self._cm_calltip_widget.adjustSize()
|
|
471
|
+
calltip_height = self._cm_calltip_widget.height()
|
|
472
|
+
|
|
473
|
+
# Convert cursor bottom-left to global coordinates
|
|
474
|
+
global_bottom_left = self.mapToGlobal(cr.bottomLeft())
|
|
475
|
+
global_bottom_left.setX(global_bottom_left.x() + self.viewportMargins().left())
|
|
476
|
+
|
|
477
|
+
# Check if calltip would fit below the cursor
|
|
478
|
+
if global_bottom_left.y() + calltip_height > screen_rect.bottom():
|
|
479
|
+
# Not enough space below, show above cursor instead
|
|
480
|
+
global_pos = self.mapToGlobal(cr.topRight())
|
|
481
|
+
global_pos.setX(global_pos.x() + self.viewportMargins().left())
|
|
482
|
+
global_pos.setY(global_pos.y() - calltip_height)
|
|
483
|
+
logger.info("Positioning calltip above cursor due to screen boundaries.")
|
|
484
|
+
else:
|
|
485
|
+
# Enough space below, use bottom-left position
|
|
486
|
+
global_pos = global_bottom_left
|
|
487
|
+
logger.info("Positioning calltip below cursor.")
|
|
488
|
+
|
|
489
|
+
print(f'intended position: {global_pos}')
|
|
468
490
|
self._cm_calltip_widget.move(global_pos)
|
|
491
|
+
print(f'actual position: {self._cm_calltip_widget.pos()}')
|
|
469
492
|
self._cm_calltip_widget.show()
|
|
470
493
|
|
|
471
494
|
def closeEvent(self, event):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/code_editors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/code_editors/languages/text.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/editor_panel.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/find_in_files.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/jupyter_console.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/project_explorer.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/components/settings_panel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/python_auto_indent.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/search_replace.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/mixins/widgets/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/syntax_highlighters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/calltip_widget.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/completion_popup.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/quick_open_dialog.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/quick_symbol_dialog.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/search_replace_frame.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/tab_splitter.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/widgets/tabbed_editor.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/generic.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/languages/python.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/__init__.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/codestral.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/jedi.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/ruff.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/sigmund.py
RENAMED
|
File without changes
|
{pyqt_code_editor-0.0.12 → pyqt_code_editor-0.0.13}/pyqt_code_editor/worker/providers/symbol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|