open file dialog in folder of currently open file

This commit is contained in:
2021-10-29 14:27:45 +02:00
parent 029d60fc77
commit fbd378cbf4
3 changed files with 22 additions and 6 deletions

View File

@@ -27,7 +27,7 @@ class FullTabWidget(QWidget):
self.layout.addWidget(splitter) self.layout.addWidget(splitter)
def get_file(self) -> str: def get_file(self) -> str:
self.file_view.get_file() return self.file_view.get_file()
def destruct(self): def destruct(self):
self.file_view.destruct() self.file_view.destruct()

13
main.py
View File

@@ -99,10 +99,17 @@ class MainWindow(QMainWindow):
dialog.exec() dialog.exec()
def _open_file_dialog(self) -> None: 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) dialog = QFileDialog(self)
(selected_file, _filter) = dialog.getOpenFileName(caption=self.tr("Open File")) (selected_file, _filter) = dialog.getOpenFileName(
self.tabs.create_tab(selected_file) caption=self.tr("Open File"),
self._remember_recent_file(selected_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: def _open_file(self, file: str) -> None:
self.tabs.create_tab(file) self.tabs.create_tab(file)

13
tabs.py
View File

@@ -1,5 +1,5 @@
import os import os
from typing import Mapping from typing import Mapping, Optional
from PyQt6.QtWidgets import * from PyQt6.QtWidgets import *
from PyQt6.QtCore import * from PyQt6.QtCore import *
@@ -13,7 +13,6 @@ from settings import Settings
class Tabs(QWidget): class Tabs(QWidget):
tabs_by_index = {}
tabs_by_filename = {} tabs_by_filename = {}
def __init__(self, settings: Settings): def __init__(self, settings: Settings):
@@ -69,3 +68,13 @@ class Tabs(QWidget):
def destruct(self): def destruct(self):
while self.tabs.count() > 0: while self.tabs.count() > 0:
self._close_tab(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()