Initial commit

This commit is contained in:
2025-07-04 19:26:39 +02:00
commit c8682d4801
248 changed files with 12519 additions and 0 deletions

View File

@ -0,0 +1,76 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<title>data-conversion.interface API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>data-conversion.interface</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">from .windowmanager import WindowManager</code></pre>
</details>
</section>
<section>
<h2 class="section-title" id="header-submodules">Sub-modules</h2>
<dl>
<dt><code class="name"><a title="data-conversion.interface.mainwindow" href="mainwindow.html">data-conversion.interface.mainwindow</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt><code class="name"><a title="data-conversion.interface.windowmanager" href="windowmanager.html">data-conversion.interface.windowmanager</a></code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="data-conversion" href="../index.html">data-conversion</a></code></li>
</ul>
</li>
<li><h3><a href="#header-submodules">Sub-modules</a></h3>
<ul>
<li><code><a title="data-conversion.interface.mainwindow" href="mainwindow.html">data-conversion.interface.mainwindow</a></code></li>
<li><code><a title="data-conversion.interface.windowmanager" href="windowmanager.html">data-conversion.interface.windowmanager</a></code></li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
</footer>
</body>
</html>

View File

@ -0,0 +1,161 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<title>data-conversion.interface.mainwindow API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>data-conversion.interface.mainwindow</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">from PySide6.QtWidgets import QMainWindow, QPushButton, QListWidget
class MainWindow(QMainWindow):
&#34;&#34;&#34;
Class written just for autocompletion and type hinting.
Lists dynamic attributes of the loaded window
so that PyCharm can know that the following attributes
exist in the loaded file.
The class is then used for type hinting in the
`WindowManager` class.
&#34;&#34;&#34;
file_button: QPushButton
button_csv_export: QPushButton
button_txt_export: QPushButton
list_widget: QListWidget</code></pre>
</details>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="data-conversion.interface.mainwindow.MainWindow"><code class="flex name class">
<span>class <span class="ident">MainWindow</span></span>
<span>(</span><span>parent: Optional[PySide6.QtWidgets.QWidget] = None, flags: PySide6.QtCore.Qt.WindowFlags = Default(Qt.WindowFlags))</span>
</code></dt>
<dd>
<div class="desc"><p>Class written just for autocompletion and type hinting.</p>
<p>Lists dynamic attributes of the loaded window
so that PyCharm can know that the following attributes
exist in the loaded file.</p>
<p>The class is then used for type hinting in the
<code>WindowManager</code> class.</p>
<p><strong>init</strong>(self, parent: Optional[PySide6.QtWidgets.QWidget] = None, flags: PySide6.QtCore.Qt.WindowFlags = Default(Qt.WindowFlags)) -&gt; None</p>
<p>Initialize self.
See help(type(self)) for accurate signature.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MainWindow(QMainWindow):
&#34;&#34;&#34;
Class written just for autocompletion and type hinting.
Lists dynamic attributes of the loaded window
so that PyCharm can know that the following attributes
exist in the loaded file.
The class is then used for type hinting in the
`WindowManager` class.
&#34;&#34;&#34;
file_button: QPushButton
button_csv_export: QPushButton
button_txt_export: QPushButton
list_widget: QListWidget</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li>PySide6.QtWidgets.QMainWindow</li>
<li>PySide6.QtWidgets.QWidget</li>
<li>PySide6.QtCore.QObject</li>
<li>PySide6.QtGui.QPaintDevice</li>
<li>Shiboken.Object</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="data-conversion.interface.mainwindow.MainWindow.button_csv_export"><code class="name">var <span class="ident">button_csv_export</span> : PySide6.QtWidgets.QPushButton</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="data-conversion.interface.mainwindow.MainWindow.button_txt_export"><code class="name">var <span class="ident">button_txt_export</span> : PySide6.QtWidgets.QPushButton</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="data-conversion.interface.mainwindow.MainWindow.file_button"><code class="name">var <span class="ident">file_button</span> : PySide6.QtWidgets.QPushButton</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="data-conversion.interface.mainwindow.MainWindow.list_widget"><code class="name">var <span class="ident">list_widget</span> : PySide6.QtWidgets.QListWidget</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="data-conversion.interface.mainwindow.MainWindow.staticMetaObject"><code class="name">var <span class="ident">staticMetaObject</span></code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="data-conversion.interface" href="index.html">data-conversion.interface</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="data-conversion.interface.mainwindow.MainWindow" href="#data-conversion.interface.mainwindow.MainWindow">MainWindow</a></code></h4>
<ul class="">
<li><code><a title="data-conversion.interface.mainwindow.MainWindow.button_csv_export" href="#data-conversion.interface.mainwindow.MainWindow.button_csv_export">button_csv_export</a></code></li>
<li><code><a title="data-conversion.interface.mainwindow.MainWindow.button_txt_export" href="#data-conversion.interface.mainwindow.MainWindow.button_txt_export">button_txt_export</a></code></li>
<li><code><a title="data-conversion.interface.mainwindow.MainWindow.file_button" href="#data-conversion.interface.mainwindow.MainWindow.file_button">file_button</a></code></li>
<li><code><a title="data-conversion.interface.mainwindow.MainWindow.list_widget" href="#data-conversion.interface.mainwindow.MainWindow.list_widget">list_widget</a></code></li>
<li><code><a title="data-conversion.interface.mainwindow.MainWindow.staticMetaObject" href="#data-conversion.interface.mainwindow.MainWindow.staticMetaObject">staticMetaObject</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
</footer>
</body>
</html>

View File

@ -0,0 +1,343 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<title>data-conversion.interface.windowmanager API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>data-conversion.interface.windowmanager</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">from typing import Union
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QFileDialog, QWidget, QListWidgetItem
from interface.mainwindow import MainWindow
from loaders import CSVManager
class WindowManager:
&#34;&#34;&#34;
Class used to manage the Qt window and its associated data.
Attributes:
_window: Private, contains the main window.
_csv_manager: Private, holds a CSV manager.
&#34;&#34;&#34;
_window: Union[QWidget, MainWindow] = None # Qt window managed by this class
_csv_manager: CSVManager = None # Object used to manage CSV data
def __init__(self):
&#34;&#34;&#34;
Initialize our window manager.
&#34;&#34;&#34;
loader = QUiLoader()
self._window = loader.load(&#34;files/designer/demo-dialog.ui&#34;)
# Once the window is loaded, connect actions to code
self.setup_actions()
def setup_actions(self):
&#34;&#34;&#34;Connect actions of controls to methods.&#34;&#34;&#34;
self._window.file_button.clicked.connect(self.on_file_select)
self._window.button_csv_export.clicked.connect(self.on_export_csv)
def on_file_select(self):
&#34;&#34;&#34;
Action when the file button is clicked.
Shows a file select dialog to pick a CSV
and loads the CSV file in the CSVManager instance of the object.
&#34;&#34;&#34;
filter_text = &#34;CSV File (*.csv)&#34;
selection: tuple = QFileDialog.getOpenFileName(self._window, &#34;CSV File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager = CSVManager(path)
self._window.button_csv_export.setEnabled(True)
# Empty and enable the list widget
self._window.list_widget.clear()
self._window.list_widget.setEnabled(True)
for row in self._csv_manager.data:
item = QListWidgetItem(&#34;;&#34;.join(row))
self._window.list_widget.addItem(item)
def on_export_csv(self):
&#34;&#34;&#34;
Action when the export to CSV button is clicked.
Shows a file select dialog to select a file destination.
The output file is then saved to the selected path.
&#34;&#34;&#34;
filter_text = &#34;Text File (*.txt)&#34;
selection: tuple = QFileDialog.getSaveFileName(self._window, &#34;Text File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager.export_text(selection[0])
def show(self):
&#34;&#34;&#34;
Public method to show our window.
The window is loaded automatically at instanciation
in the `__init__` method.
&#34;&#34;&#34;
self._window.show()</code></pre>
</details>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="data-conversion.interface.windowmanager.WindowManager"><code class="flex name class">
<span>class <span class="ident">WindowManager</span></span>
</code></dt>
<dd>
<div class="desc"><p>Class used to manage the Qt window and its associated data.</p>
<h2 id="attributes">Attributes</h2>
<dl>
<dt><strong><code>_window</code></strong></dt>
<dd>Private, contains the main window.</dd>
<dt><strong><code>_csv_manager</code></strong></dt>
<dd>Private, holds a CSV manager.</dd>
</dl>
<p>Initialize our window manager.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class WindowManager:
&#34;&#34;&#34;
Class used to manage the Qt window and its associated data.
Attributes:
_window: Private, contains the main window.
_csv_manager: Private, holds a CSV manager.
&#34;&#34;&#34;
_window: Union[QWidget, MainWindow] = None # Qt window managed by this class
_csv_manager: CSVManager = None # Object used to manage CSV data
def __init__(self):
&#34;&#34;&#34;
Initialize our window manager.
&#34;&#34;&#34;
loader = QUiLoader()
self._window = loader.load(&#34;files/designer/demo-dialog.ui&#34;)
# Once the window is loaded, connect actions to code
self.setup_actions()
def setup_actions(self):
&#34;&#34;&#34;Connect actions of controls to methods.&#34;&#34;&#34;
self._window.file_button.clicked.connect(self.on_file_select)
self._window.button_csv_export.clicked.connect(self.on_export_csv)
def on_file_select(self):
&#34;&#34;&#34;
Action when the file button is clicked.
Shows a file select dialog to pick a CSV
and loads the CSV file in the CSVManager instance of the object.
&#34;&#34;&#34;
filter_text = &#34;CSV File (*.csv)&#34;
selection: tuple = QFileDialog.getOpenFileName(self._window, &#34;CSV File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager = CSVManager(path)
self._window.button_csv_export.setEnabled(True)
# Empty and enable the list widget
self._window.list_widget.clear()
self._window.list_widget.setEnabled(True)
for row in self._csv_manager.data:
item = QListWidgetItem(&#34;;&#34;.join(row))
self._window.list_widget.addItem(item)
def on_export_csv(self):
&#34;&#34;&#34;
Action when the export to CSV button is clicked.
Shows a file select dialog to select a file destination.
The output file is then saved to the selected path.
&#34;&#34;&#34;
filter_text = &#34;Text File (*.txt)&#34;
selection: tuple = QFileDialog.getSaveFileName(self._window, &#34;Text File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager.export_text(selection[0])
def show(self):
&#34;&#34;&#34;
Public method to show our window.
The window is loaded automatically at instanciation
in the `__init__` method.
&#34;&#34;&#34;
self._window.show()</code></pre>
</details>
<h3>Methods</h3>
<dl>
<dt id="data-conversion.interface.windowmanager.WindowManager.on_export_csv"><code class="name flex">
<span>def <span class="ident">on_export_csv</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"><p>Action when the export to CSV button is clicked.</p>
<p>Shows a file select dialog to select a file destination.
The output file is then saved to the selected path.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def on_export_csv(self):
&#34;&#34;&#34;
Action when the export to CSV button is clicked.
Shows a file select dialog to select a file destination.
The output file is then saved to the selected path.
&#34;&#34;&#34;
filter_text = &#34;Text File (*.txt)&#34;
selection: tuple = QFileDialog.getSaveFileName(self._window, &#34;Text File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager.export_text(selection[0])</code></pre>
</details>
</dd>
<dt id="data-conversion.interface.windowmanager.WindowManager.on_file_select"><code class="name flex">
<span>def <span class="ident">on_file_select</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"><p>Action when the file button is clicked.</p>
<p>Shows a file select dialog to pick a CSV
and loads the CSV file in the CSVManager instance of the object.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def on_file_select(self):
&#34;&#34;&#34;
Action when the file button is clicked.
Shows a file select dialog to pick a CSV
and loads the CSV file in the CSVManager instance of the object.
&#34;&#34;&#34;
filter_text = &#34;CSV File (*.csv)&#34;
selection: tuple = QFileDialog.getOpenFileName(self._window, &#34;CSV File&#34;, &#34;&#34;, filter_text)
path: str = selection[0]
if path:
self._csv_manager = CSVManager(path)
self._window.button_csv_export.setEnabled(True)
# Empty and enable the list widget
self._window.list_widget.clear()
self._window.list_widget.setEnabled(True)
for row in self._csv_manager.data:
item = QListWidgetItem(&#34;;&#34;.join(row))
self._window.list_widget.addItem(item)</code></pre>
</details>
</dd>
<dt id="data-conversion.interface.windowmanager.WindowManager.setup_actions"><code class="name flex">
<span>def <span class="ident">setup_actions</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"><p>Connect actions of controls to methods.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def setup_actions(self):
&#34;&#34;&#34;Connect actions of controls to methods.&#34;&#34;&#34;
self._window.file_button.clicked.connect(self.on_file_select)
self._window.button_csv_export.clicked.connect(self.on_export_csv)</code></pre>
</details>
</dd>
<dt id="data-conversion.interface.windowmanager.WindowManager.show"><code class="name flex">
<span>def <span class="ident">show</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"><p>Public method to show our window.</p>
<p>The window is loaded automatically at instanciation
in the <code>__init__</code> method.</p></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def show(self):
&#34;&#34;&#34;
Public method to show our window.
The window is loaded automatically at instanciation
in the `__init__` method.
&#34;&#34;&#34;
self._window.show()</code></pre>
</details>
</dd>
</dl>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="data-conversion.interface" href="index.html">data-conversion.interface</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="data-conversion.interface.windowmanager.WindowManager" href="#data-conversion.interface.windowmanager.WindowManager">WindowManager</a></code></h4>
<ul class="">
<li><code><a title="data-conversion.interface.windowmanager.WindowManager.on_export_csv" href="#data-conversion.interface.windowmanager.WindowManager.on_export_csv">on_export_csv</a></code></li>
<li><code><a title="data-conversion.interface.windowmanager.WindowManager.on_file_select" href="#data-conversion.interface.windowmanager.WindowManager.on_file_select">on_file_select</a></code></li>
<li><code><a title="data-conversion.interface.windowmanager.WindowManager.setup_actions" href="#data-conversion.interface.windowmanager.WindowManager.setup_actions">setup_actions</a></code></li>
<li><code><a title="data-conversion.interface.windowmanager.WindowManager.show" href="#data-conversion.interface.windowmanager.WindowManager.show">show</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
</footer>
</body>
</html>