From fbd378cbf4e774d9a3b94bfe77967708af0aa75d Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Fri, 29 Oct 2021 14:27:45 +0200 Subject: [PATCH] open file dialog in folder of currently open file --- fulltabwidget.py | 2 +- main.py | 13 ++++++++++--- tabs.py | 13 +++++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/fulltabwidget.py b/fulltabwidget.py index af1cd04..c72982b 100644 --- a/fulltabwidget.py +++ b/fulltabwidget.py @@ -27,7 +27,7 @@ class FullTabWidget(QWidget): self.layout.addWidget(splitter) def get_file(self) -> str: - self.file_view.get_file() + return self.file_view.get_file() def destruct(self): self.file_view.destruct() diff --git a/main.py b/main.py index bdf0e12..9a51a1c 100644 --- a/main.py +++ b/main.py @@ -99,10 +99,17 @@ class MainWindow(QMainWindow): dialog.exec() def _open_file_dialog(self) -> None: + current_file = self.tabs.current_file() + directory = os.path.dirname(current_file) if current_file else '' + dialog = QFileDialog(self) - (selected_file, _filter) = dialog.getOpenFileName(caption=self.tr("Open File")) - self.tabs.create_tab(selected_file) - self._remember_recent_file(selected_file) + (selected_file, _filter) = dialog.getOpenFileName( + caption=self.tr("Open File"), + directory=directory + ) + if selected_file: + self.tabs.create_tab(selected_file) + self._remember_recent_file(selected_file) def _open_file(self, file: str) -> None: self.tabs.create_tab(file) diff --git a/tabs.py b/tabs.py index 6f5d9b2..d167a53 100644 --- a/tabs.py +++ b/tabs.py @@ -1,5 +1,5 @@ import os -from typing import Mapping +from typing import Mapping, Optional from PyQt6.QtWidgets import * from PyQt6.QtCore import * @@ -13,7 +13,6 @@ from settings import Settings class Tabs(QWidget): - tabs_by_index = {} tabs_by_filename = {} def __init__(self, settings: Settings): @@ -69,3 +68,13 @@ class Tabs(QWidget): def destruct(self): while self.tabs.count() > 0: self._close_tab(0) + + def _current_tab(self) -> int: + return self.tabs.currentIndex() + + def current_file(self) -> Optional[str]: + if self.tabs.currentIndex() < 0: + return None + + full_tab: FullTabWidget = self.tabs.widget(self.tabs.currentIndex()) + return full_tab.get_file()