Skip to content

Commit

Permalink
modified gui layout
Browse files Browse the repository at this point in the history
  • Loading branch information
wxwilcke committed Mar 8, 2024
1 parent 6da9e41 commit ce858e6
Showing 1 changed file with 48 additions and 39 deletions.
87 changes: 48 additions & 39 deletions src/csvw_gui.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import sys
import os
import datetime
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QFileDialog, QRadioButton, QTextEdit
import webbrowser
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QGridLayout, QHBoxLayout, QLabel, QPushButton, QFileDialog, QRadioButton, QTextEdit
try:
# git install
from converter.csvw import CSVWConverter, build_schema, extensions
Expand All @@ -11,82 +12,86 @@

from rdflib import ConjunctiveGraph

COW_WIKI = "https://github.com/CLARIAH/COW/wiki"

class COWGUI(QMainWindow):
def __init__(self):
super().__init__()

self.initUI()

def initUI(self):
self.setWindowTitle('CSV on the Web Converter GUI')
self.setWindowTitle('CSV on the Web Converter')
self.setGeometry(100, 100, 400, 300) # Adjusted for additional button

self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)

layout = QVBoxLayout()

self.mode_label = QLabel('Select Mode:')
layout.addWidget(self.mode_label)

self.mode_radio_layout = QHBoxLayout()
self.mode_radio_build = QRadioButton('Build')
self.mode_radio_convert = QRadioButton('Convert')
self.mode_radio_build.setChecked(True)
self.mode_radio_layout.addWidget(self.mode_radio_build)
self.mode_radio_layout.addWidget(self.mode_radio_convert)
layout.addLayout(self.mode_radio_layout)
layout = QGridLayout()

self.file_label = QLabel('Select File:')
layout.addWidget(self.file_label)

self.file_button = QPushButton('Browse Files')
self.file_button = QPushButton('Select CSV File(s)')
self.file_button.clicked.connect(self.browse_files)
layout.addWidget(self.file_button)
layout.addWidget(self.file_button, 1, 0, 1, 2)

self.process_button = QPushButton('Build/Convert')
self.process_button.clicked.connect(self.process_files)
layout.addWidget(self.process_button)
self.process_button = QPushButton('Build Metadata File')
self.process_button.clicked.connect(self.build_schemas)
layout.addWidget(self.process_button, 2, 0)

# Button for editing the JSON file
self.edit_button = QPushButton('Edit JSON')
self.edit_button = QPushButton('Customize Metadata File')
self.edit_button.clicked.connect(self.edit_json)
layout.addWidget(self.edit_button)
layout.addWidget(self.edit_button, 2, 1)

self.process_button = QPushButton('Convert CSV File(s)')
self.process_button.clicked.connect(self.convert_files)
layout.addWidget(self.process_button, 3, 0, 1, 2)


self.output_text_edit = QTextEdit()
layout.addWidget(self.output_text_edit)
layout.addWidget(self.output_text_edit, 4, 0, 1, 2)

self.process_button = QPushButton('Help')
self.process_button.clicked.connect(self.wiki)
layout.addWidget(self.process_button, 5, 0)

self.process_button = QPushButton('Exit')
self.process_button.clicked.connect(self.quit)
layout.addWidget(self.process_button, 5, 1)

self.output_text_edit.append("Welcome to COW!\n\nStart by selecting one or"
" more CSV files. Next, click 'build' to"
" generate a metadata file with"
" mappings, and finally click 'convert' to"
" translate your data to RDF.\n")

self.central_widget.setLayout(layout)

self.files = []
self.mode = 'build' # Default mode

def wiki(self):
webbrowser.open(COW_WIKI)

def quit(self):
sys.exit(0)

def browse_files(self):
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
options |= QFileDialog.ExistingFiles

file_dialog = QFileDialog()
file_dialog.setNameFilter('CSV Files (*.csv)')
selected_files, _ = file_dialog.getOpenFileNames(self, 'Select CSV File(s)', '', 'CSV Files (*.csv);;All Files (*)', options=options)
selected_files, _ = file_dialog.getOpenFileNames(self, caption='Select CSV File(s)',
filter='CSV Files (*.csv);;All Files (*)',
options=options)
if selected_files:
self.files = selected_files
self.output_text_edit.append(f"Added the files {', '.join(self.files)}")

def process_files(self):
def build_schemas(self):
if not self.files:
self.output_text_edit.append("No files selected.")
return

# Determine the mode based on the selected radio button
self.mode = 'convert' if self.mode_radio_convert.isChecked() else 'build'

# Execute the appropriate method based on the mode
if self.mode == 'build':
self.build_schemas()
elif self.mode == 'convert':
self.convert_files()

def build_schemas(self):
for file in self.files:
self.output_text_edit.append(f"Building schema for {file}")
target_file = f"{file}-metadata.json"
Expand All @@ -100,6 +105,10 @@ def build_schemas(self):
self.output_text_edit.append(f"Schema built and saved as {target_file}")

def convert_files(self):
if not self.files:
self.output_text_edit.append("No files selected.")
return

for file in self.files:
self.output_text_edit.append(f"Converting {file} to RDF")
try:
Expand Down

0 comments on commit ce858e6

Please sign in to comment.