{"id":496,"date":"2020-10-11T13:11:07","date_gmt":"2020-10-11T04:11:07","guid":{"rendered":"https:\/\/shibaura-it.tokyo\/it-solution\/?p=496"},"modified":"2020-10-11T13:11:07","modified_gmt":"2020-10-11T04:11:07","slug":"asammdfgui-wrapper%e3%81%ae%e5%ae%9f%e8%a3%85%ef%bc%881%ef%bc%89","status":"publish","type":"post","link":"https:\/\/shibaura-it.tokyo\/it-solution\/asammdfgui-wrapper%e3%81%ae%e5%ae%9f%e8%a3%85%ef%bc%881%ef%bc%89\/","title":{"rendered":"asammdfgui wrapper\u306e\u5b9f\u88c5\uff081\uff09"},"content":{"rendered":"<p>\u30d1\u30bf\u30fc\u30f3\u5225\u306bWrapper\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3092\u9032\u3081\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u306f\u3001\u65e2\u5b58\u306e\u6a5f\u80fd\uff08\u30e1\u30cb\u30e5\u30fc\u3042\u308a\uff09\u306b\u6a5f\u80fd\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5<\/p>\n<p>\u524d\u9805\u3067\u7d39\u4ecb\u3055\u305b\u3066\u9802\u3044\u305f\u201dGUI_Main.py\u201d\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3001&#8221;def open_file&#8221;\u306b\u306f\u5bfe\u8c61\u3068\u306a\u308b\u62e1\u5f35\u5b50\u3068\u3057\u3066&#8221;zip&#8221;\u304c\u30ea\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001<br \/>\nasammdfgui\u304c\u4f7f\u7528\u3059\u308bwidgets\u306b\u3042\u308b&#8221;file.py&#8221;\u3067\u306f\u3001zip\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"lang:python decode:true \" title=\"GUI_Main.py (def open_file)\">    def open_file(self, event):\r\n        file_names, _ = QtWidgets.QFileDialog.getOpenFileNames(\r\n            self,\r\n            \"Select measurement file\",\r\n            self._settings.value(\"last_opened_path\", \"\", str),\r\n            \"MDF v3 (*.dat *.mdf);;MDF v4(*.mf4);;All files (*.dat *.mdf *.mf4 *.zip)\",\r\n            \"All files (*.dat *.mdf *.mf4 *.zip)\",\r\n        )\r\n<\/pre>\n<p>\u3053\u306e\u305f\u3081\u3001&#8221;ZIP&#8221;\u30d5\u30a1\u30a4\u30eb\u304c\u8aad\u307f\u8fbc\u3081\u308b\u69d8\u306b\u3001Wrapper\uff08Add On\uff09\u3092\u8ffd\u52a0\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e6\u30fc\u30b6\u304cGUI\u4e0a\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u958b\u304f\u969b\u3001GUI_Main.py\u304b\u3089\u306f\u3001file.py\u306e\u547c\u3073\u51fa\u3057\u304c\u884c\u308f\u308c\u307e\u3059\u3002<br \/>\n&#8220;ZIP\u201d\u30d5\u30a1\u30a4\u30eb\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u3001file.py\u304c\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u306e\u3067\u3059\u304b\u3089\u3001file.py\u306b\u7d9a\u3044\u3066\u3001<\/p>\n<p>\u5177\u4f53\u7684\u306b\u306f &#8220;_open_file&#8221;\u306b\u3066\u3001FileWidget\u3092\u5b9f\u884c\u3059\u308b\u3068\u30a8\u30e9\u30fc\u304c\u623b\u308b\u306e\u3060\u304b\u3089&#8230;<\/p>\n<pre class=\"lang:python decode:true\" title=\"Before.py\">    def _open_file(self, file_name):\r\n        file_name = Path(file_name)\r\n        index = self.files.count()\r\n\r\n        try:\r\n            widget = FileWidget(\r\n                file_name,\r\n                self.with_dots,\r\n                self.subplots,\r\n                self.subplots_link,\r\n                self.ignore_value2text_conversions,\r\n                self,\r\n            )\r\n        except:\r\n            raise\r\n        else:\r\n<\/pre>\n<p>&#8220;_open_file&#8221;\u3092\u4e0b\u8a18\u306e\u69d8\u306b\u4fee\u6b63\u3059\u308b\u3053\u3068\u3067\u3001Wrapper\u3068\u3057\u3066\u4f5c\u6210\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5b9f\u884c\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u8ffd\u52a0\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3092\u898b\u308c\u3070\u7406\u89e3\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3001file.py\u3067\u306fZIP\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u30a8\u30e9\u30fc\u3068\u306a\u308b\u3053\u3068\u3092\u5229\u7528\u3057\u3066\u3001<br \/>\nWrapper\u304c\u5b9f\u884c\u3067\u304d\u308b\u69d8\u306b\u3057\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"lang:python decode:true \" title=\"After\">    def _open_file(self, file_name):\r\n        file_name = Path(file_name)\r\n        index = self.files.count()\r\n\r\n        try:\r\n            widget = FileWidget(\r\n                file_name,\r\n                self.with_dots,\r\n                self.subplots,\r\n                self.subplots_link,\r\n                self.ignore_value2text_conversions,\r\n                self,\r\n            )\r\n        except:\r\n            try:\r\n                widget = FileWidget2(\r\n                    file_name,\r\n                    self.with_dots,\r\n                    self.subplots,\r\n                    self.subplots_link,\r\n                    self.ignore_value2text_conversions,\r\n                    self,\r\n                )\r\n            except:\r\n                raise\r\n        else:\r\n<\/pre>\n<p>Wrapper\u306e\u5b9f\u88c5\u306f\u3068\u3044\u3046\u3068\u3001\u307e\u305a&#8221;GUI_Main.py&#8221;\u306b\u3001Wrapper\u306e\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u3067\u304d\u308b\u69d8\u306b\u5b9a\u7fa9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br \/>\n\u3053\u3053\u3067\u306f&#8221;\u00a5GUI_Portable\u00a5gui&#8221;\u306b\u65b0\u305f\u306b\u201dwidgets2&#8243;\u3068\u3044\u3046\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001ZIP\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5bfe\u5fdc\u3057\u305f\u30b3\u30fc\u30c9<br \/>\n\u201dfile2.py\u201d\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<p>\u5f93\u3044\u307e\u3057\u3066\u3001&#8221;GUI_Main.py&#8221;\u306e\u5ba3\u8a00\u90e8\u306b\u3001file2.py\u306b\u5b9a\u7fa9\u3055\u308c\u3066FileWidget2\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u69d8\u306b\u3001file.py\u306b\u7d9a\u3044\u3066\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:python decode:true \">from ..widgets.file import FileWidget\r\nfrom ..widgets2.file2 import FileWidget2\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u3055\u3089\u306b\u3001&#8221;\u00a5GUI_Portable\u00a5gui\u00a5widgets2\u00a5file2.py&#8221;\u3068\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n\u306a\u304a\u3001\u3053\u3053\u3067\u306f\u307e\u3060FileWidget2\u306b\u306f\u3001ZIP\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u6a5f\u80fd\u306f\u5b9f\u88c5\u3055\u308c\u3066\u304a\u3089\u305a\u3001<br \/>\n\u30a8\u30e9\u30fc\u3068\u306a\u3089\u305a\u306b\u3001FileWidets2\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001&#8221;Print\u6587\u201d\u306b\u3088\u308b\u8868\u793a\u306e\u307f\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:python decode:true \" title=\"file2.py\"># -*- coding: utf-8 -*-\r\nfrom datetime import datetime\r\nfrom functools import partial\r\nimport json\r\nimport os\r\nfrom pathlib import Path\r\nfrom tempfile import gettempdir\r\nfrom time import perf_counter\r\nfrom traceback import format_exc\r\n\r\nfrom natsort import natsorted\r\nimport numpy as np\r\nimport pandas as pd\r\nimport psutil\r\nfrom PyQt5 import QtCore, QtGui, QtWidgets\r\nimport pyqtgraph as pg\r\n\r\nfrom ..utils import (\r\n    add_children,\r\n    compute_signal,\r\n    get_required_signals,\r\n    HelperChannel,\r\n    load_dsp,\r\n    load_lab,\r\n    run_thread_with_progress,\r\n    setup_progress,\r\n    TERMINATED,\r\n)\r\n\r\nfrom ..ui import resource_rc as resource_rc\r\nfrom ..ui.file_widget import Ui_file_widget\r\n\r\nfrom ..widgets.mdi_area import MdiAreaWidget, WithMDIArea\r\n\r\nclass FileWidget2(WithMDIArea, Ui_file_widget, QtWidgets.QWidget):\r\n    \r\n    open_new_file = QtCore.pyqtSignal(str)\r\n    full_screen_toggled = QtCore.pyqtSignal()\r\n\r\n    def __init__(\r\n        self,\r\n        file_name,\r\n        with_dots,\r\n        subplots=False,\r\n        subplots_link=False,\r\n        ignore_value2text_conversions=False,\r\n        *args,\r\n        **kwargs,\r\n    ):\r\n\r\n        super(Ui_file_widget, self).__init__(*args, **kwargs)\r\n        WithMDIArea.__init__(self)\r\n        self.setupUi(self)\r\n        self._settings = QtCore.QSettings()\r\n        self.uuid = os.urandom(6).hex()\r\n\r\n        file_name = Path(file_name)\r\n        self.subplots = subplots\r\n        self.subplots_link = subplots_link\r\n        self.ignore_value2text_conversions = ignore_value2text_conversions\r\n        self._viewbox = pg.ViewBox()\r\n        self._viewbox.setXRange(0, 10)\r\n\r\n        self.file_name = file_name\r\n        self.progress = None\r\n        self.mdf = None\r\n        self.info_index = None\r\n        self.with_dots = with_dots\r\n\r\n        self._show_filter_tree = False\r\n        \r\n        progress = QtWidgets.QProgressDialog(\r\n            f'Opening \"{self.file_name}\"', \"\", 0, 100, self.parent()\r\n        )\r\n\r\n        if file_name.suffix.lower() == \".zip\":\r\n            progress.setLabelText(\"Opening zipped MF4 file\")\r\n            print(\"for zip in file2\")\r\n\r\n            #self.mdf = ZIP(file_name)<\/pre>\n<p>\u4ee5\u4e0a\u3001Wrapper\u306e\u5b9f\u88c5\u4f8b\uff08\u305d\u306e1\uff09\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30d1\u30bf\u30fc\u30f3\u5225\u306bWrapper\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3092\u9032\u3081\u3066\u3044\u304d\u305f\u3044\u3068\u601d&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":455,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,7],"tags":[],"_links":{"self":[{"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/posts\/496"}],"collection":[{"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/comments?post=496"}],"version-history":[{"count":2,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"predecessor-version":[{"id":498,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/posts\/496\/revisions\/498"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/media\/455"}],"wp:attachment":[{"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shibaura-it.tokyo\/it-solution\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}