open files by drag&drop
This commit is contained in:
13
main.py
13
main.py
@@ -8,11 +8,13 @@ from PyQt6.QtCore import *
|
|||||||
from PyQt6.QtGui import *
|
from PyQt6.QtGui import *
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import urlutils
|
||||||
from aboutdialog import AboutDialog
|
from aboutdialog import AboutDialog
|
||||||
from ravenui import RavenUI
|
from ravenui import RavenUI
|
||||||
from settings import Settings
|
from settings import Settings
|
||||||
from settingsstore import SettingsStore
|
from settingsstore import SettingsStore
|
||||||
from tabs import Tabs
|
from tabs import Tabs
|
||||||
|
from urlutils import url_is_file
|
||||||
|
|
||||||
MAX_LINE_LENGTH = 4096
|
MAX_LINE_LENGTH = 4096
|
||||||
|
|
||||||
@@ -28,6 +30,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.setWindowTitle(self.tr("RavenLog"))
|
self.setWindowTitle(self.tr("RavenLog"))
|
||||||
self.setGeometry(0, 0, 640, 480)
|
self.setGeometry(0, 0, 640, 480)
|
||||||
self.setDockNestingEnabled(True)
|
self.setDockNestingEnabled(True)
|
||||||
|
self.setAcceptDrops(True)
|
||||||
|
|
||||||
self.tabs = Tabs(self.settings)
|
self.tabs = Tabs(self.settings)
|
||||||
self.tabs.create_tab("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv")
|
self.tabs.create_tab("/home/andi/ws/performanceDb/data/production/logs_2018-09-06_2018-09-06.csv")
|
||||||
@@ -121,6 +124,16 @@ class MainWindow(QMainWindow):
|
|||||||
self.settings.set_session('general', 'recent_files', recent_files)
|
self.settings.set_session('general', 'recent_files', recent_files)
|
||||||
self._update_recent_files_menu()
|
self._update_recent_files_menu()
|
||||||
|
|
||||||
|
def dragEnterEvent(self, e: QDragEnterEvent):
|
||||||
|
if e.mimeData().hasFormat('text/plain') and url_is_file(e.mimeData().text()):
|
||||||
|
e.accept()
|
||||||
|
else:
|
||||||
|
e.ignore()
|
||||||
|
|
||||||
|
def dropEvent(self, e):
|
||||||
|
file = urlutils.url_to_path(e.mimeData().text())
|
||||||
|
self._open_file(file)
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
self.destruct()
|
self.destruct()
|
||||||
|
|
||||||
|
|||||||
49
scribble.py
49
scribble.py
@@ -1,44 +1,9 @@
|
|||||||
|
import os
|
||||||
|
import urllib
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import multiprocessing
|
url = "file:///home/andi/.local/share/ravenlog/session.ini"
|
||||||
import time
|
|
||||||
|
|
||||||
from multiprocessing import Pool
|
|
||||||
|
|
||||||
file = "/tmp/tmp123123"
|
|
||||||
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
def writer():
|
|
||||||
with open(file, "w+b") as f:
|
|
||||||
for i in range(0, 10):
|
|
||||||
f.write(("%s"%(i)).encode("utf8"))
|
|
||||||
time.sleep(0.5)
|
|
||||||
print("writing ", time.time())
|
|
||||||
|
|
||||||
def reader():
|
|
||||||
with open(file, "rb") as f:
|
|
||||||
for i in range(0,10):
|
|
||||||
|
|
||||||
lines = f.readlines()
|
|
||||||
time.sleep(0.5)
|
|
||||||
print("read ", time.time())
|
|
||||||
|
|
||||||
pool = Pool(5)
|
|
||||||
|
|
||||||
with pool as p:
|
|
||||||
p.apply_async(writer)
|
|
||||||
p.apply_async(reader)
|
|
||||||
|
|
||||||
pool.join()
|
|
||||||
|
|
||||||
|
|
||||||
executor = ThreadPoolExecutor(2)
|
|
||||||
future1 = executor.submit(writer)
|
|
||||||
future2 = executor.submit(reader)
|
|
||||||
|
|
||||||
print(future1.result())
|
|
||||||
print(future2.result())
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
p = urlparse(url)
|
||||||
|
final_path = os.path.abspath(os.path.join(p.netloc, p.path))
|
||||||
|
print(final_path)
|
||||||
|
|||||||
14
urlutils.py
Normal file
14
urlutils.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import os
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
|
||||||
|
def url_to_path(url: str) -> str:
|
||||||
|
p = urlparse(url)
|
||||||
|
return os.path.abspath(os.path.join(p.netloc, p.path))
|
||||||
|
|
||||||
|
|
||||||
|
def url_is_file(url: str) -> bool:
|
||||||
|
if url.startswith("file://"):
|
||||||
|
path = url_to_path(url)
|
||||||
|
return os.path.isfile(path)
|
||||||
|
return False
|
||||||
Reference in New Issue
Block a user