From 45204e6a8db540ebd89b7fead43fabeec028ec1a Mon Sep 17 00:00:00 2001 From: Andy Dneg Date: Mon, 9 Sep 2019 00:07:19 -0700 Subject: [PATCH] Bump version to v1.00 --- .gitignore | 0 COPYING | 1348 +++--- DSView/CMake/FindFFTW.cmake | 0 DSView/CMake/Findlibusb-1.0.cmake | 0 DSView/CMake/Findlibzip.cmake | 0 DSView/CMakeLists.txt | 199 +- DSView/COPYING | 0 DSView/DSView.desktop | 0 DSView/DSView.qrc | 190 +- DSView/DreamSourceLab.rules | 0 DSView/INSTALL | 98 +- DSView/NEWS | 10 +- DSView/README | 0 DSView/config.h.in | 0 DSView/darkstyle/rc/branch_closed-on.png | Bin 147 -> 0 bytes DSView/darkstyle/rc/branch_closed.png | Bin 160 -> 0 bytes DSView/darkstyle/rc/branch_open-on.png | Bin 150 -> 0 bytes DSView/darkstyle/rc/branch_open.png | Bin 166 -> 0 bytes DSView/darkstyle/rc/checkbox_checked.png | Bin 492 -> 0 bytes .../rc/checkbox_checked_disabled.png | Bin 491 -> 0 bytes .../darkstyle/rc/checkbox_checked_focus.png | Bin 512 -> 0 bytes .../darkstyle/rc/checkbox_indeterminate.png | Bin 493 -> 0 bytes .../rc/checkbox_indeterminate_disabled.png | Bin 492 -> 0 bytes .../rc/checkbox_indeterminate_focus.png | Bin 514 -> 0 bytes DSView/darkstyle/rc/checkbox_unchecked.png | Bin 464 -> 0 bytes .../rc/checkbox_unchecked_disabled.png | Bin 464 -> 0 bytes .../darkstyle/rc/checkbox_unchecked_focus.png | Bin 483 -> 0 bytes DSView/darkstyle/rc/close-hover.png | Bin 598 -> 0 bytes DSView/darkstyle/rc/close-pressed.png | Bin 598 -> 0 bytes DSView/darkstyle/rc/close.png | Bin 586 -> 0 bytes DSView/darkstyle/rc/down_arrow.png | Bin 165 -> 0 bytes DSView/darkstyle/rc/down_arrow_disabled.png | Bin 166 -> 0 bytes DSView/darkstyle/rc/left_arrow.png | Bin 166 -> 0 bytes DSView/darkstyle/rc/left_arrow_disabled.png | Bin 166 -> 0 bytes DSView/darkstyle/rc/radio_checked.png | Bin 940 -> 0 bytes .../darkstyle/rc/radio_checked_disabled.png | Bin 972 -> 0 bytes DSView/darkstyle/rc/radio_checked_focus.png | Bin 933 -> 0 bytes DSView/darkstyle/rc/radio_unchecked.png | Bin 728 -> 0 bytes .../darkstyle/rc/radio_unchecked_disabled.png | Bin 760 -> 0 bytes DSView/darkstyle/rc/radio_unchecked_focus.png | Bin 724 -> 0 bytes DSView/darkstyle/rc/right_arrow.png | Bin 160 -> 0 bytes DSView/darkstyle/rc/right_arrow_disabled.png | Bin 160 -> 0 bytes DSView/darkstyle/rc/sizegrip.png | Bin 129 -> 0 bytes DSView/darkstyle/rc/stylesheet-branch-end.png | Bin 224 -> 0 bytes .../darkstyle/rc/stylesheet-branch-more.png | Bin 182 -> 0 bytes DSView/darkstyle/rc/stylesheet-vline.png | Bin 239 -> 0 bytes DSView/darkstyle/rc/transparent.png | Bin 195 -> 0 bytes DSView/darkstyle/rc/undock.png | Bin 578 -> 0 bytes DSView/darkstyle/rc/up_arrow.png | Bin 158 -> 0 bytes DSView/darkstyle/rc/up_arrow_disabled.png | Bin 159 -> 0 bytes DSView/darkstyle/style.qrc | 42 - DSView/darkstyle/style.qss | 1302 ------ DSView/dsapplication.cpp | 0 DSView/dsapplication.h | 0 DSView/extdef.h | 0 DSView/icons/Blackman.png | Bin DSView/icons/Chinese.png | Bin 0 -> 706 bytes DSView/icons/English.png | Bin 0 -> 1400 bytes DSView/icons/Flat_top.png | Bin DSView/icons/Hamming.png | Bin DSView/icons/Hann.png | Bin DSView/icons/Rectangle.png | Bin DSView/icons/arrow-loop.png | Bin 8485 -> 0 bytes DSView/icons/close.png | Bin 173 -> 0 bytes DSView/icons/{ => dark}/about.png | Bin DSView/icons/{ => dark}/add.png | Bin DSView/icons/{ => dark}/bug.png | Bin DSView/icons/{ => dark}/capture.png | Bin DSView/icons/dark/close.png | Bin 0 -> 612 bytes DSView/icons/dark/daq.png | Bin 0 -> 5629 bytes DSView/icons/dark/dark.png | Bin 0 -> 2099 bytes DSView/icons/{ => dark}/del.png | Bin DSView/icons/dark/display.png | Bin 0 -> 2412 bytes DSView/icons/{ => dark}/down-arrow.png | Bin DSView/icons/{ => dark}/export.png | Bin DSView/icons/{ => dark}/fft.png | Bin DSView/icons/dark/file.png | Bin 0 -> 2461 bytes DSView/icons/dark/function.png | Bin 0 -> 3529 bytes DSView/icons/{ => dark}/gear.png | Bin DSView/icons/{ => dark}/hidden.png | Bin DSView/icons/dark/instant.png | Bin 0 -> 3047 bytes DSView/icons/dark/la.png | Bin 0 -> 829 bytes DSView/icons/dark/light.png | Bin 0 -> 1848 bytes DSView/icons/dark/lissajous.png | Bin 0 -> 3729 bytes DSView/icons/dark/logo_color.png | Bin 0 -> 713 bytes DSView/icons/dark/logo_noColor.png | Bin 0 -> 638 bytes DSView/icons/{ => dark}/manual.png | Bin DSView/icons/dark/math.png | Bin 0 -> 1543 bytes DSView/icons/dark/maximize.png | Bin 0 -> 400 bytes DSView/icons/dark/measure.png | Bin 0 -> 4682 bytes DSView/icons/dark/minimize.png | Bin 0 -> 380 bytes DSView/icons/dark/moder.png | Bin 0 -> 3286 bytes DSView/icons/dark/modes.png | Bin 0 -> 2707 bytes DSView/icons/{ => dark}/nav.png | Bin DSView/icons/{ => dark}/next.png | Bin DSView/icons/{ => dark}/oneloop.png | Bin DSView/icons/{ => dark}/open.png | Bin DSView/icons/dark/osc.png | Bin 0 -> 4465 bytes DSView/icons/dark/params.png | Bin 0 -> 3914 bytes DSView/icons/{ => dark}/pre.png | Bin DSView/icons/dark/protocol.png | Bin 0 -> 4695 bytes DSView/icons/{ => dark}/repeat.png | Bin DSView/icons/dark/restore.png | Bin 0 -> 447 bytes DSView/icons/{ => dark}/save.png | Bin DSView/icons/dark/search-bar.png | Bin 0 -> 4404 bytes DSView/icons/dark/search.png | Bin 0 -> 313 bytes DSView/icons/{ => dark}/shown.png | Bin DSView/icons/dark/single.png | Bin 0 -> 3126 bytes DSView/icons/dark/start.png | Bin 0 -> 2902 bytes DSView/icons/dark/stop.png | Bin 0 -> 2686 bytes DSView/icons/{ => dark}/support.png | Bin DSView/icons/dark/trigger.png | Bin 0 -> 4354 bytes DSView/icons/dark/wait.gif | Bin 0 -> 10098 bytes DSView/icons/del_dis.png | Bin 785 -> 0 bytes DSView/icons/file.png | Bin 1886 -> 0 bytes DSView/icons/file_dis.png | Bin 1896 -> 0 bytes DSView/icons/instant.png | Bin 2371 -> 0 bytes DSView/icons/instant_dis.png | Bin 2376 -> 0 bytes DSView/icons/light/about.png | Bin 0 -> 1556 bytes DSView/icons/{add_dis.png => light/add.png} | Bin 399 -> 399 bytes DSView/icons/light/bug.png | Bin 0 -> 2254 bytes DSView/icons/light/capture.png | Bin 0 -> 870 bytes DSView/icons/light/close.png | Bin 0 -> 628 bytes DSView/icons/light/daq.png | Bin 0 -> 5564 bytes DSView/icons/light/dark.png | Bin 0 -> 2090 bytes DSView/icons/light/del.png | Bin 0 -> 680 bytes DSView/icons/light/display.png | Bin 0 -> 1564 bytes DSView/icons/light/down-arrow.png | Bin 0 -> 429 bytes DSView/icons/light/export.png | Bin 0 -> 1122 bytes DSView/icons/light/fft.png | Bin 0 -> 1808 bytes DSView/icons/light/file.png | Bin 0 -> 1629 bytes DSView/icons/light/function.png | Bin 0 -> 2252 bytes DSView/icons/light/gear.png | Bin 0 -> 1657 bytes DSView/icons/light/hidden.png | Bin 0 -> 1342 bytes DSView/icons/light/instant.png | Bin 0 -> 1874 bytes DSView/icons/light/la.png | Bin 0 -> 823 bytes DSView/icons/light/light.png | Bin 0 -> 2081 bytes DSView/icons/light/lissajous.png | Bin 0 -> 3790 bytes DSView/icons/light/logo_color.png | Bin 0 -> 713 bytes DSView/icons/light/logo_noColor.png | Bin 0 -> 670 bytes DSView/icons/light/manual.png | Bin 0 -> 1551 bytes DSView/icons/light/math.png | Bin 0 -> 1544 bytes DSView/icons/light/maximize.png | Bin 0 -> 400 bytes DSView/icons/light/measure.png | Bin 0 -> 2865 bytes DSView/icons/light/minimize.png | Bin 0 -> 380 bytes DSView/icons/light/moder.png | Bin 0 -> 2038 bytes DSView/icons/light/modes.png | Bin 0 -> 1798 bytes DSView/icons/light/nav.png | Bin 0 -> 802 bytes DSView/icons/light/next.png | Bin 0 -> 584 bytes DSView/icons/light/oneloop.png | Bin 0 -> 1543 bytes DSView/icons/light/open.png | Bin 0 -> 778 bytes DSView/icons/light/osc.png | Bin 0 -> 4058 bytes DSView/icons/light/params.png | Bin 0 -> 2241 bytes DSView/icons/light/pre.png | Bin 0 -> 587 bytes DSView/icons/light/protocol.png | Bin 0 -> 2794 bytes DSView/icons/light/repeat.png | Bin 0 -> 1629 bytes DSView/icons/light/restore.png | Bin 0 -> 446 bytes DSView/icons/light/save.png | Bin 0 -> 574 bytes DSView/icons/light/search-bar.png | Bin 0 -> 2593 bytes DSView/icons/light/search.png | Bin 0 -> 313 bytes DSView/icons/light/shown.png | Bin 0 -> 997 bytes DSView/icons/light/single.png | Bin 0 -> 1874 bytes DSView/icons/light/start.png | Bin 0 -> 1776 bytes DSView/icons/light/stop.png | Bin 0 -> 1677 bytes DSView/icons/light/support.png | Bin 0 -> 2281 bytes DSView/icons/light/trigger.png | Bin 0 -> 2649 bytes DSView/icons/light/wait.gif | Bin 0 -> 9311 bytes DSView/icons/lissajous.png | Bin 0 -> 3208 bytes DSView/icons/load.gif | Bin 6494 -> 0 bytes DSView/icons/logo.png | Bin DSView/icons/logo.svg | 11 - DSView/icons/logo_128.png | Bin 7379 -> 0 bytes DSView/icons/logo_16.png | Bin 763 -> 0 bytes DSView/icons/logo_256.png | Bin 15979 -> 0 bytes DSView/icons/logo_32.png | Bin 1609 -> 0 bytes DSView/icons/logo_48.png | Bin 2498 -> 0 bytes DSView/icons/logo_64.png | Bin 3455 -> 0 bytes DSView/icons/logo_color.png | Bin 860 -> 0 bytes DSView/icons/logo_noColor.png | Bin 721 -> 0 bytes DSView/icons/mAmplitude.png | Bin 0 -> 557 bytes DSView/icons/mBurst.png | Bin 0 -> 491 bytes DSView/icons/mDelay.png | Bin 0 -> 495 bytes DSView/icons/mFall.png | Bin 0 -> 527 bytes DSView/icons/mFreq.png | Bin 0 -> 473 bytes DSView/icons/mHigh.png | Bin 0 -> 557 bytes DSView/icons/mLow.png | Bin 0 -> 567 bytes DSView/icons/mMax.png | Bin 0 -> 572 bytes DSView/icons/mMean.png | Bin 0 -> 621 bytes DSView/icons/mMin.png | Bin 0 -> 565 bytes DSView/icons/mNduty.png | Bin 0 -> 504 bytes DSView/icons/mNover.png | Bin 0 -> 542 bytes DSView/icons/mNwidth.png | Bin 0 -> 489 bytes DSView/icons/mPcount.png | Bin 0 -> 471 bytes DSView/icons/mPduty.png | Bin 0 -> 498 bytes DSView/icons/mPeriod.png | Bin 0 -> 473 bytes DSView/icons/mPover.png | Bin 0 -> 544 bytes DSView/icons/mPwidth.png | Bin 0 -> 491 bytes DSView/icons/mRise.png | Bin 0 -> 534 bytes DSView/icons/mRms.png | Bin 0 -> 624 bytes DSView/icons/mVpp.png | Bin 0 -> 568 bytes DSView/icons/math.png | Bin 5671 -> 1889 bytes DSView/icons/math_dis.png | Bin 3589 -> 0 bytes DSView/icons/maximize.png | Bin 158 -> 0 bytes DSView/icons/measure.png | Bin 4115 -> 0 bytes DSView/icons/measure_dis.png | Bin 4137 -> 0 bytes DSView/icons/minimize.png | Bin 108 -> 0 bytes DSView/icons/moder.png | Bin 2783 -> 0 bytes DSView/icons/moder_dis.png | Bin 2785 -> 0 bytes DSView/icons/modes.png | Bin 2369 -> 0 bytes DSView/icons/modes_dis.png | Bin 2373 -> 0 bytes DSView/icons/params.png | Bin 3514 -> 0 bytes DSView/icons/params_dis.png | Bin 3502 -> 0 bytes DSView/icons/protocol.png | Bin 4180 -> 0 bytes DSView/icons/protocol_dis.png | Bin 4195 -> 0 bytes DSView/icons/restore.png | Bin 238 -> 0 bytes DSView/icons/search-bar.png | Bin 3679 -> 0 bytes DSView/icons/search-bar_dis.png | Bin 3671 -> 0 bytes DSView/icons/search.png | Bin DSView/icons/settings.png | Bin 4440 -> 0 bytes DSView/icons/showDoc.png | Bin 38156 -> 0 bytes DSView/icons/showDoc25.png | Bin 0 -> 43062 bytes DSView/icons/showDoc31.png | Bin 0 -> 36731 bytes DSView/icons/single.png | Bin 2438 -> 0 bytes DSView/icons/single_dis.png | Bin 2443 -> 0 bytes DSView/icons/slider-handle.png | Bin 1211 -> 0 bytes DSView/icons/start.png | Bin 2183 -> 0 bytes DSView/icons/start_dis.png | Bin 2179 -> 0 bytes DSView/icons/stop.png | Bin 2110 -> 0 bytes DSView/icons/trigger.png | Bin 4093 -> 0 bytes DSView/icons/trigger_dis.png | Bin 4101 -> 0 bytes DSView/icons/wait.gif | Bin 9469 -> 0 bytes DSView/languages/language.qrc | 6 + DSView/languages/my_25.qm | Bin 0 -> 30023 bytes DSView/languages/qt_25.qm | Bin 0 -> 118333 bytes DSView/main.cpp | 12 +- DSView/pv/data/analog.cpp | 0 DSView/pv/data/analog.h | 0 DSView/pv/data/analogsnapshot.cpp | 22 +- DSView/pv/data/analogsnapshot.h | 2 - DSView/pv/data/decode/annotation.cpp | 2 +- DSView/pv/data/decode/annotation.h | 0 DSView/pv/data/decode/decoder.cpp | 7 +- DSView/pv/data/decode/decoder.h | 0 DSView/pv/data/decode/row.cpp | 0 DSView/pv/data/decode/row.h | 0 DSView/pv/data/decode/rowdata.cpp | 0 DSView/pv/data/decode/rowdata.h | 0 DSView/pv/data/decodermodel.cpp | 0 DSView/pv/data/decodermodel.h | 0 DSView/pv/data/decoderstack.cpp | 52 +- DSView/pv/data/decoderstack.h | 0 DSView/pv/data/dso.cpp | 0 DSView/pv/data/dso.h | 0 DSView/pv/data/dsosnapshot.cpp | 15 +- DSView/pv/data/dsosnapshot.h | 3 +- DSView/pv/data/group.cpp | 0 DSView/pv/data/group.h | 0 DSView/pv/data/groupsnapshot.cpp | 0 DSView/pv/data/groupsnapshot.h | 0 DSView/pv/data/logic.cpp | 0 DSView/pv/data/logic.h | 0 DSView/pv/data/logicsnapshot.cpp | 9 +- DSView/pv/data/logicsnapshot.h | 0 DSView/pv/data/mathstack.cpp | 491 ++- DSView/pv/data/mathstack.h | 108 +- DSView/pv/data/signaldata.cpp | 0 DSView/pv/data/signaldata.h | 0 DSView/pv/data/snapshot.cpp | 0 DSView/pv/data/snapshot.h | 0 DSView/pv/data/spectrumstack.cpp | 247 ++ DSView/pv/data/spectrumstack.h | 118 + DSView/pv/device/device.cpp | 2 +- DSView/pv/device/device.h | 2 +- DSView/pv/device/devinst.cpp | 4 +- DSView/pv/device/devinst.h | 2 +- DSView/pv/device/file.cpp | 33 + DSView/pv/device/file.h | 3 + DSView/pv/device/inputfile.cpp | 2 +- DSView/pv/device/inputfile.h | 2 +- DSView/pv/device/sessionfile.cpp | 2 +- DSView/pv/device/sessionfile.h | 2 +- DSView/pv/devicemanager.cpp | 15 + DSView/pv/devicemanager.h | 1 + DSView/pv/dialogs/about.cpp | 10 +- DSView/pv/dialogs/about.h | 0 DSView/pv/dialogs/calibration.cpp | 100 +- DSView/pv/dialogs/calibration.h | 7 + DSView/pv/dialogs/deviceoptions.cpp | 47 +- DSView/pv/dialogs/deviceoptions.h | 1 + DSView/pv/dialogs/dsdialog.cpp | 0 DSView/pv/dialogs/dsdialog.h | 0 DSView/pv/dialogs/dsmessagebox.cpp | 0 DSView/pv/dialogs/dsmessagebox.h | 0 DSView/pv/dialogs/dsomeasure.cpp | 130 +- DSView/pv/dialogs/dsomeasure.h | 27 +- DSView/pv/dialogs/fftoptions.cpp | 72 +- DSView/pv/dialogs/fftoptions.h | 0 DSView/pv/dialogs/interval.cpp | 0 DSView/pv/dialogs/interval.h | 0 DSView/pv/dialogs/lissajousoptions.cpp | 197 + DSView/pv/dialogs/lissajousoptions.h | 85 + DSView/pv/dialogs/mathoptions.cpp | 228 + DSView/pv/dialogs/mathoptions.h | 86 + DSView/pv/dialogs/protocolexp.cpp | 5 +- DSView/pv/dialogs/protocolexp.h | 0 DSView/pv/dialogs/protocollist.cpp | 0 DSView/pv/dialogs/protocollist.h | 0 DSView/pv/dialogs/regionoptions.cpp | 115 + DSView/pv/dialogs/regionoptions.h | 74 + DSView/pv/dialogs/search.cpp | 256 +- DSView/pv/dialogs/search.h | 144 +- DSView/pv/dialogs/shadow.cpp | 0 DSView/pv/dialogs/shadow.h | 0 DSView/pv/dialogs/storeprogress.cpp | 8 +- DSView/pv/dialogs/storeprogress.h | 2 +- DSView/pv/dialogs/waitingdialog.cpp | 20 +- DSView/pv/dialogs/waitingdialog.h | 3 +- DSView/pv/dock/dsotriggerdock.cpp | 873 ++-- DSView/pv/dock/dsotriggerdock.h | 205 +- DSView/pv/dock/measuredock.cpp | 1352 +++--- DSView/pv/dock/measuredock.h | 301 +- DSView/pv/dock/protocoldock.cpp | 1658 +++---- DSView/pv/dock/protocoldock.h | 298 +- DSView/pv/dock/searchdock.cpp | 533 +-- DSView/pv/dock/searchdock.h | 184 +- DSView/pv/dock/triggerdock.cpp | 1178 ++--- DSView/pv/dock/triggerdock.h | 284 +- DSView/pv/mainframe.cpp | 33 +- DSView/pv/mainframe.h | 4 +- DSView/pv/mainwindow.cpp | 261 +- DSView/pv/mainwindow.h | 18 +- DSView/pv/prop/binding/binding.cpp | 2 +- DSView/pv/prop/binding/binding.h | 0 DSView/pv/prop/binding/decoderoptions.cpp | 10 +- DSView/pv/prop/binding/decoderoptions.h | 0 DSView/pv/prop/binding/deviceoptions.cpp | 99 +- DSView/pv/prop/binding/deviceoptions.h | 14 +- DSView/pv/prop/binding/probeoptions.cpp | 56 +- DSView/pv/prop/binding/probeoptions.h | 12 +- DSView/pv/prop/bool.cpp | 6 +- DSView/pv/prop/bool.h | 2 +- DSView/pv/prop/double.cpp | 16 +- DSView/pv/prop/double.h | 2 +- DSView/pv/prop/enum.cpp | 13 +- DSView/pv/prop/enum.h | 2 +- DSView/pv/prop/int.cpp | 12 +- DSView/pv/prop/int.h | 2 +- DSView/pv/prop/property.cpp | 10 +- DSView/pv/prop/property.h | 4 +- DSView/pv/prop/string.cpp | 4 +- DSView/pv/prop/string.h | 2 +- DSView/pv/sigsession.cpp | 232 +- DSView/pv/sigsession.h | 53 +- DSView/pv/storesession.cpp | 201 +- DSView/pv/storesession.h | 4 +- DSView/pv/toolbars/filebar.cpp | 481 +- DSView/pv/toolbars/filebar.h | 185 +- DSView/pv/toolbars/logobar.cpp | 352 +- DSView/pv/toolbars/logobar.h | 167 +- DSView/pv/toolbars/samplingbar.cpp | 185 +- DSView/pv/toolbars/samplingbar.h | 17 +- DSView/pv/toolbars/titlebar.cpp | 55 +- DSView/pv/toolbars/titlebar.h | 6 +- DSView/pv/toolbars/trigbar.cpp | 506 ++- DSView/pv/toolbars/trigbar.h | 201 +- DSView/pv/view/analogsignal.cpp | 277 +- DSView/pv/view/analogsignal.h | 38 +- DSView/pv/view/cursor.cpp | 6 +- DSView/pv/view/cursor.h | 0 DSView/pv/view/decodetrace.cpp | 80 +- DSView/pv/view/decodetrace.h | 26 +- DSView/pv/view/devmode.cpp | 132 +- DSView/pv/view/devmode.h | 16 +- DSView/pv/view/dsldial.cpp | 352 +- DSView/pv/view/dsldial.h | 158 +- DSView/pv/view/dsosignal.cpp | 942 ++-- DSView/pv/view/dsosignal.h | 115 +- DSView/pv/view/groupsignal.cpp | 10 +- DSView/pv/view/groupsignal.h | 4 +- DSView/pv/view/header.cpp | 30 +- DSView/pv/view/header.h | 2 + DSView/pv/view/lissajoustrace.cpp | 210 + DSView/pv/view/lissajoustrace.h | 105 + DSView/pv/view/logicsignal.cpp | 49 +- DSView/pv/view/logicsignal.h | 12 +- DSView/pv/view/mathtrace.cpp | 712 +-- DSView/pv/view/mathtrace.h | 170 +- DSView/pv/view/ruler.cpp | 140 +- DSView/pv/view/ruler.h | 9 - DSView/pv/view/selectableitem.cpp | 0 DSView/pv/view/selectableitem.h | 0 DSView/pv/view/signal.cpp | 6 - DSView/pv/view/signal.h | 13 +- DSView/pv/view/spectrumtrace.cpp | 494 +++ DSView/pv/view/spectrumtrace.h | 156 + DSView/pv/view/timemarker.cpp | 9 +- DSView/pv/view/timemarker.h | 0 DSView/pv/view/trace.cpp | 73 +- DSView/pv/view/trace.h | 38 +- DSView/pv/view/view.cpp | 213 +- DSView/pv/view/view.h | 66 +- DSView/pv/view/viewport.cpp | 488 ++- DSView/pv/view/viewport.h | 24 +- DSView/pv/view/viewstatus.cpp | 247 ++ DSView/pv/{widgets => view}/viewstatus.h | 35 +- DSView/pv/view/xcursor.cpp | 233 + DSView/pv/view/xcursor.h | 147 + DSView/pv/widgets/border.cpp | 53 +- DSView/pv/widgets/border.h | 16 +- DSView/pv/widgets/decodergroupbox.cpp | 56 +- DSView/pv/widgets/decodergroupbox.h | 12 +- DSView/pv/widgets/decodermenu.cpp | 0 DSView/pv/widgets/decodermenu.h | 0 DSView/pv/widgets/fakelineedit.cpp | 82 +- DSView/pv/widgets/fakelineedit.h | 104 +- DSView/pv/widgets/viewstatus.cpp | 93 - DSView/res/DSCope.bin | Bin 341160 -> 341436 bytes DSView/res/DSCope1.def25.dsc | 74 + DSView/res/DSCope1.def31.dsc | 74 + .../{DSCope2.def.dsc => DSCope2.def25.dsc} | 93 +- .../{DSCope1.def.dsc => DSCope2.def31.dsc} | 89 +- DSView/res/DSCope20.bin | Bin 341436 -> 341160 bytes DSView/res/DSCopeB20.fw | Bin 8120 -> 0 bytes DSView/res/DSCopeC20.bin | Bin 341436 -> 0 bytes DSView/res/DSCopeC20.fw | Bin 8120 -> 0 bytes DSView/res/DSCopeC20B.bin | Bin 341160 -> 341436 bytes DSView/res/DSCopeC20B.fw | Bin 8120 -> 0 bytes DSView/res/DSCopeC20P.bin | Bin 341436 -> 341436 bytes DSView/res/DSCopeC20P.fw | Bin 8120 -> 0 bytes DSView/res/DSCopeU2B20.bin | Bin 0 -> 341436 bytes DSView/res/DSCopeU2P20.bin | Bin 0 -> 341436 bytes .../{DSLogic0.def.dsc => DSLogic0.def25.dsc} | 557 +-- DSView/res/DSLogic0.def31.dsc | 279 ++ DSView/res/DSLogic1.def25.dsc | 82 + DSView/res/DSLogic1.def31.dsc | 82 + .../{DSLogic2.def.dsc => DSLogic2.def25.dsc} | 103 +- .../{DSLogic1.def.dsc => DSLogic2.def31.dsc} | 101 +- DSView/res/DSLogic33.bin | Bin 341712 -> 341160 bytes DSView/res/DSLogic50.bin | Bin 341712 -> 341160 bytes DSView/res/DSLogicBasic.bin | Bin 341160 -> 341160 bytes DSView/res/DSLogicBasic.fw | Bin 8120 -> 0 bytes DSView/res/DSLogicPlus.bin | Bin 341712 -> 341160 bytes DSView/res/DSLogicPlus.fw | Bin 8120 -> 0 bytes DSView/res/DSLogicPro.bin | Bin 341436 -> 341160 bytes DSView/res/DSLogicU2Basic.bin | Bin 0 -> 341160 bytes DSView/res/license.txt | 38 +- DSView/res/virtual-demo1.dsc | 69 + DSView/stylesheet.qss | 568 +-- DSView/test/CMakeLists.txt | 0 DSView/test/data/analogsnapshot.cpp | 0 DSView/test/data/logicsnapshot.cpp | 0 DSView/test/test.cpp | 0 DSView/themes/LICENSE.md | 26 + DSView/themes/README.md | 96 + DSView/themes/breeze.qrc | 98 + DSView/themes/dark.qss | 1615 +++++++ DSView/themes/dark/branch_closed-on.svg | 3 + DSView/themes/dark/branch_closed.svg | 3 + DSView/themes/dark/branch_open-on.svg | 3 + DSView/themes/dark/branch_open.svg | 3 + DSView/themes/dark/checkbox_checked-hover.svg | 9 + DSView/themes/dark/checkbox_checked.svg | 9 + .../themes/dark/checkbox_checked_disabled.svg | 9 + .../dark/checkbox_indeterminate-hover.svg | 11 + DSView/themes/dark/checkbox_indeterminate.svg | 11 + .../dark/checkbox_indeterminate_disabled.svg | 11 + .../themes/dark/checkbox_unchecked-hover.svg | 8 + DSView/themes/dark/checkbox_unchecked.svg | 8 + .../dark/checkbox_unchecked_disabled.svg | 8 + DSView/themes/dark/close-hover.svg | 3 + DSView/themes/dark/close-pressed.svg | 3 + DSView/themes/dark/close.svg | 3 + DSView/themes/dark/down_arrow-hover.svg | 3 + DSView/themes/dark/down_arrow.svg | 3 + DSView/themes/dark/down_arrow_disabled.svg | 3 + DSView/themes/dark/hmovetoolbar.svg | 4 + DSView/themes/dark/hsepartoolbar.svg | 3 + DSView/themes/dark/left_arrow.svg | 3 + DSView/themes/dark/left_arrow_disabled.svg | 3 + DSView/themes/dark/mode_down_arrow.svg | 15 + DSView/themes/dark/radio_checked-hover.svg | 9 + DSView/themes/dark/radio_checked.svg | 9 + DSView/themes/dark/radio_checked_disabled.svg | 9 + DSView/themes/dark/radio_unchecked-hover.svg | 8 + DSView/themes/dark/radio_unchecked.svg | 8 + .../themes/dark/radio_unchecked_disabled.svg | 8 + DSView/themes/dark/right_arrow.svg | 3 + DSView/themes/dark/right_arrow_disabled.svg | 3 + DSView/themes/dark/sizegrip.svg | 3 + DSView/themes/dark/spinup_disabled.svg | 3 + .../dark/stylesheet-branch-end-closed.svg | 4 + .../dark/stylesheet-branch-end-open.svg | 4 + DSView/themes/dark/stylesheet-branch-end.svg | 4 + DSView/themes/dark/stylesheet-branch-more.svg | 4 + DSView/themes/dark/stylesheet-vline.svg | 3 + DSView/themes/dark/transparent.svg | 1 + DSView/themes/dark/undock-hover.svg | 5 + DSView/themes/dark/undock.svg | 3 + DSView/themes/dark/up_arrow-hover.svg | 3 + DSView/themes/dark/up_arrow.svg | 3 + DSView/themes/dark/up_arrow_disabled.svg | 3 + DSView/themes/dark/vmovetoolbar.svg | 8 + DSView/themes/dark/vsepartoolbars.svg | 7 + DSView/themes/light.qss | 1654 +++++++ DSView/themes/light/branch_closed-on.svg | 3 + DSView/themes/light/branch_closed.svg | 3 + DSView/themes/light/branch_open-on.svg | 3 + DSView/themes/light/branch_open.svg | 3 + .../themes/light/checkbox_checked-hover.svg | 9 + DSView/themes/light/checkbox_checked.svg | 9 + .../light/checkbox_checked_disabled.svg | 9 + .../light/checkbox_indeterminate-hover.svg | 11 + .../themes/light/checkbox_indeterminate.svg | 11 + .../light/checkbox_indeterminate_disabled.svg | 11 + .../themes/light/checkbox_unchecked-hover.svg | 8 + DSView/themes/light/checkbox_unchecked.svg | 8 + .../light/checkbox_unchecked_disabled.svg | 8 + DSView/themes/light/close-hover.svg | 3 + DSView/themes/light/close-pressed.svg | 3 + DSView/themes/light/close.svg | 3 + DSView/themes/light/down_arrow-hover.svg | 3 + DSView/themes/light/down_arrow.svg | 3 + DSView/themes/light/down_arrow_disabled.svg | 3 + DSView/themes/light/hmovetoolbar.svg | 5 + DSView/themes/light/hsepartoolbar.svg | 3 + DSView/themes/light/left_arrow.svg | 3 + DSView/themes/light/left_arrow_disabled.svg | 3 + DSView/themes/light/mode_down_arrow.svg | 15 + DSView/themes/light/radio_checked-hover.svg | 9 + DSView/themes/light/radio_checked.svg | 9 + .../themes/light/radio_checked_disabled.svg | 9 + DSView/themes/light/radio_unchecked-hover.svg | 8 + DSView/themes/light/radio_unchecked.svg | 8 + .../themes/light/radio_unchecked_disabled.svg | 8 + DSView/themes/light/right_arrow.svg | 3 + DSView/themes/light/right_arrow_disabled.svg | 3 + DSView/themes/light/sizegrip.svg | 3 + DSView/themes/light/spinup_disabled.svg | 3 + .../light/stylesheet-branch-end-closed.svg | 4 + .../light/stylesheet-branch-end-open.svg | 4 + DSView/themes/light/stylesheet-branch-end.svg | 4 + .../themes/light/stylesheet-branch-more.svg | 4 + DSView/themes/light/stylesheet-vline.svg | 3 + DSView/themes/light/transparent.svg | 1 + DSView/themes/light/undock-hover.svg | 5 + DSView/themes/light/undock.svg | 3 + DSView/themes/light/up_arrow-hover.svg | 3 + DSView/themes/light/up_arrow.svg | 3 + DSView/themes/light/up_arrow_disabled.svg | 3 + DSView/themes/light/vmovetoolbar.svg | 8 + DSView/themes/light/vsepartoolbars.svg | 7 + INSTALL | 0 NEWS | 254 -- NEWS25 | 290 ++ NEWS31 | 296 ++ README.md | 54 +- libsigrok4DSL/AUTHORS | 0 libsigrok4DSL/COPYING | 0 libsigrok4DSL/ChangeLog | 0 libsigrok4DSL/INSTALL | 0 libsigrok4DSL/Makefile.am | 0 libsigrok4DSL/NEWS | 0 libsigrok4DSL/README | 0 libsigrok4DSL/backend.c | 0 libsigrok4DSL/configure.ac | 0 libsigrok4DSL/dsdevice.c | 0 libsigrok4DSL/error.c | 0 libsigrok4DSL/hardware/DSL/Makefile.am | 0 libsigrok4DSL/hardware/DSL/command.c | 148 +- libsigrok4DSL/hardware/DSL/command.h | 342 +- libsigrok4DSL/hardware/DSL/dscope.c | 3374 +++++++------- libsigrok4DSL/hardware/DSL/dsl.c | 3891 +++++++++-------- libsigrok4DSL/hardware/DSL/dsl.h | 1742 +++++--- libsigrok4DSL/hardware/DSL/dslogic.c | 2651 +++++------ libsigrok4DSL/hardware/Makefile.am | 0 libsigrok4DSL/hardware/common/Makefile.am | 0 libsigrok4DSL/hardware/common/ezusb.c | 284 +- libsigrok4DSL/hardware/common/usb.c | 490 +-- libsigrok4DSL/hardware/demo/Makefile.am | 0 libsigrok4DSL/hardware/demo/demo.c | 201 +- libsigrok4DSL/hardware/demo/demo.h | 722 +-- libsigrok4DSL/hwdriver.c | 76 +- libsigrok4DSL/input/Makefile.am | 0 libsigrok4DSL/input/in_binary.c | 0 libsigrok4DSL/input/in_vcd.c | 7 +- libsigrok4DSL/input/in_wav.c | 0 libsigrok4DSL/input/input.c | 0 libsigrok4DSL/libsigrok-internal.h | 0 libsigrok4DSL/libsigrok.h | 121 +- libsigrok4DSL/libsigrok4DSL.pc.in | 30 +- libsigrok4DSL/log.c | 0 libsigrok4DSL/output/Makefile.am | 0 libsigrok4DSL/output/csv.c | 28 +- libsigrok4DSL/output/gnuplot.c | 6 +- libsigrok4DSL/output/output.c | 0 libsigrok4DSL/output/srzip.c | 6 +- libsigrok4DSL/output/vcd.c | 6 +- libsigrok4DSL/proto.h | 2 +- libsigrok4DSL/session.c | 2 +- libsigrok4DSL/session_driver.c | 191 +- libsigrok4DSL/session_file.c | 146 +- libsigrok4DSL/std.c | 0 libsigrok4DSL/strutil.c | 2 +- libsigrok4DSL/tests/Makefile.am | 0 libsigrok4DSL/tests/check_core.c | 0 libsigrok4DSL/tests/check_driver_all.c | 0 libsigrok4DSL/tests/check_main.c | 0 libsigrok4DSL/tests/check_strutil.c | 0 libsigrok4DSL/tests/lib.c | 0 libsigrok4DSL/tests/lib.h | 0 libsigrok4DSL/trigger.c | 0 libsigrok4DSL/version.c | 0 libsigrok4DSL/version.h | 0 libsigrok4DSL/version.h.in | 0 libsigrokdecode4DSL/AUTHORS | 0 libsigrokdecode4DSL/COPYING | 0 libsigrokdecode4DSL/Doxyfile | 437 +- libsigrokdecode4DSL/HACKING | 62 +- libsigrokdecode4DSL/Makefile.am | 4 +- libsigrokdecode4DSL/NEWS | 183 +- libsigrokdecode4DSL/README | 2 +- libsigrokdecode4DSL/configure.ac | 27 +- .../contrib/sigrok-logo-notext.png | Bin libsigrokdecode4DSL/decoder.c | 209 +- .../decoders/0-i2c/__init__.py | 3 +- libsigrokdecode4DSL/decoders/0-i2c/pd.py | 279 +- .../decoders/0-spi/__init__.py | 4 +- libsigrokdecode4DSL/decoders/0-spi/pd.py | 263 +- .../decoders/0-uart/__init__.py | 3 +- libsigrokdecode4DSL/decoders/0-uart/pd.py | 353 +- .../decoders/1-i2c/__init__.py | 3 +- libsigrokdecode4DSL/decoders/1-i2c/pd.py | 245 +- .../decoders/1-spi/__init__.py | 4 +- libsigrokdecode4DSL/decoders/1-spi/pd.py | 295 +- .../decoders/1-uart/__init__.py | 3 +- libsigrokdecode4DSL/decoders/1-uart/pd.py | 407 +- libsigrokdecode4DSL/decoders/ac97/__init__.py | 36 + libsigrokdecode4DSL/decoders/ac97/pd.py | 505 +++ .../decoders/ade77xx/__init__.py | 0 libsigrokdecode4DSL/decoders/ade77xx/lists.py | 0 libsigrokdecode4DSL/decoders/ade77xx/pd.py | 16 +- .../decoders/adf435x/__init__.py | 0 libsigrokdecode4DSL/decoders/adf435x/pd.py | 8 +- .../decoders/adns5020/__init__.py | 7 +- libsigrokdecode4DSL/decoders/adns5020/pd.py | 53 +- .../decoders/am230x/__init__.py | 3 +- libsigrokdecode4DSL/decoders/am230x/pd.py | 79 +- .../decoders/arm_etmv3/__init__.py | 5 +- libsigrokdecode4DSL/decoders/arm_etmv3/pd.py | 51 +- .../decoders/arm_itm/__init__.py | 5 +- libsigrokdecode4DSL/decoders/arm_itm/pd.py | 13 +- .../decoders/arm_tpiu/__init__.py | 12 +- libsigrokdecode4DSL/decoders/arm_tpiu/pd.py | 15 +- .../decoders/atsha204a/__init__.py | 30 + libsigrokdecode4DSL/decoders/atsha204a/pd.py | 323 ++ libsigrokdecode4DSL/decoders/aud/__init__.py | 3 +- libsigrokdecode4DSL/decoders/aud/pd.py | 37 +- .../decoders/avr_isp/__init__.py | 3 +- libsigrokdecode4DSL/decoders/avr_isp/parts.py | 3 +- libsigrokdecode4DSL/decoders/avr_isp/pd.py | 13 +- .../decoders/avr_pdi/__init__.py | 42 + libsigrokdecode4DSL/decoders/avr_pdi/pd.py | 576 +++ libsigrokdecode4DSL/decoders/can/__init__.py | 3 +- libsigrokdecode4DSL/decoders/can/pd.py | 84 +- libsigrokdecode4DSL/decoders/cec/__init__.py | 25 + libsigrokdecode4DSL/decoders/cec/pd.py | 312 ++ .../decoders/cec/protocoldata.py | 117 + libsigrokdecode4DSL/decoders/cfp/__init__.py | 34 + libsigrokdecode4DSL/decoders/cfp/pd.py | 110 + .../decoders/cjtag_oscan1/pd.py | 298 -- .../decoders/common/__init__.py | 19 + .../decoders/common/plugtrx/__init__.py | 20 + .../decoders/common/plugtrx/mod.py | 192 + .../decoders/common/sdcard/__init__.py | 20 + .../lists.py => common/sdcard/mod.py} | 16 +- .../decoders/common/srdhelper/__init__.py | 20 + .../decoders/common/srdhelper/mod.py | 36 + .../decoders/counter/__init__.py | 28 + libsigrokdecode4DSL/decoders/counter/pd.py | 145 + libsigrokdecode4DSL/decoders/dali/__init__.py | 24 + libsigrokdecode4DSL/decoders/dali/lists.py | 98 + libsigrokdecode4DSL/decoders/dali/pd.py | 245 ++ .../decoders/dcf77/__init__.py | 3 +- libsigrokdecode4DSL/decoders/dcf77/pd.py | 75 +- .../decoders/dmx512/__init__.py | 0 libsigrokdecode4DSL/decoders/dmx512/pd.py | 78 +- .../decoders/ds1307/__init__.py | 3 +- libsigrokdecode4DSL/decoders/ds1307/pd.py | 28 +- .../{maxim_ds28ea00 => ds243x}/__init__.py | 7 +- libsigrokdecode4DSL/decoders/ds243x/pd.py | 270 ++ .../decoders/ds28ea00/__init__.py | 0 libsigrokdecode4DSL/decoders/ds28ea00/pd.py | 8 +- libsigrokdecode4DSL/decoders/dsi/__init__.py | 0 libsigrokdecode4DSL/decoders/dsi/pd.py | 41 +- libsigrokdecode4DSL/decoders/edid/__init__.py | 14 +- libsigrokdecode4DSL/decoders/edid/config | 2 +- libsigrokdecode4DSL/decoders/edid/pd.py | 329 +- .../decoders/eeprom24xx/__init__.py | 3 +- .../decoders/eeprom24xx/lists.py | 37 +- libsigrokdecode4DSL/decoders/eeprom24xx/pd.py | 79 +- .../{eeprom93cxx => eeprom93xx}/__init__.py | 2 +- .../{eeprom93cxx => eeprom93xx}/pd.py | 16 +- .../decoders/em4100/__init__.py | 3 +- libsigrokdecode4DSL/decoders/em4100/pd.py | 88 +- .../decoders/em4305/__init__.py | 3 +- libsigrokdecode4DSL/decoders/em4305/pd.py | 139 +- libsigrokdecode4DSL/decoders/gpib/__init__.py | 0 libsigrokdecode4DSL/decoders/gpib/pd.py | 52 +- .../decoders/graycode/__init__.py | 24 + libsigrokdecode4DSL/decoders/graycode/pd.py | 200 + .../decoders/guess_bitrate/__init__.py | 13 +- .../decoders/guess_bitrate/pd.py | 56 +- .../decoders/i2cdemux/__init__.py | 3 +- libsigrokdecode4DSL/decoders/i2cdemux/pd.py | 9 +- libsigrokdecode4DSL/decoders/i2cfilter/pd.py | 6 +- libsigrokdecode4DSL/decoders/i2s/__init__.py | 3 +- libsigrokdecode4DSL/decoders/i2s/pd.py | 129 +- libsigrokdecode4DSL/decoders/iec/__init__.py | 24 + libsigrokdecode4DSL/decoders/iec/pd.py | 168 + .../decoders/ir_nec/__init__.py | 3 +- libsigrokdecode4DSL/decoders/ir_nec/lists.py | 3 +- libsigrokdecode4DSL/decoders/ir_nec/pd.py | 72 +- .../decoders/ir_rc5/__init__.py | 3 +- libsigrokdecode4DSL/decoders/ir_rc5/lists.py | 5 +- libsigrokdecode4DSL/decoders/ir_rc5/pd.py | 21 +- .../decoders/jitter/__init__.py | 4 +- libsigrokdecode4DSL/decoders/jitter/pd.py | 34 +- libsigrokdecode4DSL/decoders/jtag/__init__.py | 3 +- libsigrokdecode4DSL/decoders/jtag/pd.py | 48 +- .../decoders/jtag_ejtag/__init__.py | 25 + libsigrokdecode4DSL/decoders/jtag_ejtag/pd.py | 408 ++ .../decoders/jtag_stm32/__init__.py | 3 +- libsigrokdecode4DSL/decoders/jtag_stm32/pd.py | 75 +- libsigrokdecode4DSL/decoders/lin/__init__.py | 28 + libsigrokdecode4DSL/decoders/lin/pd.py | 235 + libsigrokdecode4DSL/decoders/lm75/__init__.py | 3 +- libsigrokdecode4DSL/decoders/lm75/pd.py | 11 +- libsigrokdecode4DSL/decoders/lpc/__init__.py | 5 +- libsigrokdecode4DSL/decoders/lpc/pd.py | 76 +- .../decoders/maple_bus/__init__.py | 25 + libsigrokdecode4DSL/decoders/maple_bus/pd.py | 219 + .../decoders/max7219/__init__.py | 3 +- libsigrokdecode4DSL/decoders/max7219/pd.py | 16 +- .../decoders/maxim_ds28ea00/pd.py | 90 - .../decoders/mcs48/__init__.py | 31 + libsigrokdecode4DSL/decoders/mcs48/pd.py | 119 + libsigrokdecode4DSL/decoders/mdio/pd.py | 34 +- .../decoders/microwire/__init__.py | 40 + libsigrokdecode4DSL/decoders/microwire/pd.py | 195 + libsigrokdecode4DSL/decoders/midi/__init__.py | 3 +- libsigrokdecode4DSL/decoders/midi/lists.py | 3 +- libsigrokdecode4DSL/decoders/midi/pd.py | 13 +- .../decoders/miller/__init__.py | 26 + libsigrokdecode4DSL/decoders/miller/pd.py | 190 + .../decoders/mlx90614/__init__.py | 3 +- libsigrokdecode4DSL/decoders/mlx90614/pd.py | 13 +- .../decoders/modbus/__init__.py | 3 +- libsigrokdecode4DSL/decoders/modbus/pd.py | 23 +- .../{cjtag_oscan1 => morse}/__init__.py | 17 +- libsigrokdecode4DSL/decoders/morse/pd.py | 250 ++ .../decoders/mrf24j40/__init__.py | 3 +- .../decoders/mrf24j40/lists.py | 3 +- libsigrokdecode4DSL/decoders/mrf24j40/pd.py | 19 +- .../decoders/mxc6225xu/__init__.py | 3 +- libsigrokdecode4DSL/decoders/mxc6225xu/pd.py | 11 +- .../decoders/nrf24l01/__init__.py | 3 +- libsigrokdecode4DSL/decoders/nrf24l01/pd.py | 20 +- .../decoders/nunchuk/__init__.py | 3 +- libsigrokdecode4DSL/decoders/nunchuk/pd.py | 11 +- .../decoders/onewire_link/__init__.py | 28 +- .../decoders/onewire_link/pd.py | 446 +- .../decoders/onewire_network/__init__.py | 3 +- .../decoders/onewire_network/pd.py | 29 +- libsigrokdecode4DSL/decoders/ook/__init__.py | 36 + libsigrokdecode4DSL/decoders/ook/pd.py | 484 ++ .../decoders/ook_oregon/__init__.py | 25 + .../decoders/ook_oregon/lists.py | 75 + libsigrokdecode4DSL/decoders/ook_oregon/pd.py | 389 ++ .../decoders/ook_vis/__init__.py | 25 + libsigrokdecode4DSL/decoders/ook_vis/pd.py | 194 + .../decoders/pan1321/__init__.py | 3 +- libsigrokdecode4DSL/decoders/pan1321/pd.py | 11 +- .../decoders/parallel/__init__.py | 3 +- libsigrokdecode4DSL/decoders/parallel/pd.py | 163 +- libsigrokdecode4DSL/decoders/ps2/pd.py | 47 +- libsigrokdecode4DSL/decoders/pwm/__init__.py | 5 +- libsigrokdecode4DSL/decoders/pwm/pd.py | 128 +- libsigrokdecode4DSL/decoders/qi/__init__.py | 3 +- libsigrokdecode4DSL/decoders/qi/pd.py | 35 +- .../decoders/rc_encode/__init__.py | 36 + libsigrokdecode4DSL/decoders/rc_encode/pd.py | 167 + .../decoders/rfm12/__init__.py | 3 +- libsigrokdecode4DSL/decoders/rfm12/pd.py | 13 +- .../decoders/rgb_led_spi/__init__.py | 3 +- .../decoders/rgb_led_spi/pd.py | 11 +- .../decoders/rgb_led_ws281x/__init__.py | 3 +- .../decoders/rgb_led_ws281x/pd.py | 110 +- .../decoders/rtc8564/__init__.py | 3 +- libsigrokdecode4DSL/decoders/rtc8564/pd.py | 18 +- .../decoders/sda2506/__init__.py | 24 + libsigrokdecode4DSL/decoders/sda2506/pd.py | 144 + .../decoders/sdcard_sd/__init__.py | 5 +- libsigrokdecode4DSL/decoders/sdcard_sd/pd.py | 68 +- .../decoders/sdcard_spi/__init__.py | 3 +- libsigrokdecode4DSL/decoders/sdcard_spi/pd.py | 155 +- .../decoders/spdif/__init__.py | 3 +- libsigrokdecode4DSL/decoders/spdif/pd.py | 68 +- .../decoders/spiflash/__init__.py | 3 +- .../decoders/spiflash/lists.py | 36 +- libsigrokdecode4DSL/decoders/spiflash/pd.py | 84 +- .../decoders/ssi32/__init__.py | 0 libsigrokdecode4DSL/decoders/ssi32/pd.py | 16 +- .../decoders/st7735/__init__.py | 27 + libsigrokdecode4DSL/decoders/st7735/pd.py | 173 + .../decoders/stepper_motor/__init__.py | 3 +- .../decoders/stepper_motor/pd.py | 47 +- libsigrokdecode4DSL/decoders/swd/__init__.py | 11 +- libsigrokdecode4DSL/decoders/swd/pd.py | 26 +- libsigrokdecode4DSL/decoders/swim/pd.py | 218 +- .../decoders/t55xx/__init__.py | 3 +- libsigrokdecode4DSL/decoders/t55xx/pd.py | 134 +- .../decoders/tca6408a/__init__.py | 3 +- libsigrokdecode4DSL/decoders/tca6408a/pd.py | 13 +- .../decoders/timing/__init__.py | 3 +- libsigrokdecode4DSL/decoders/timing/pd.py | 82 +- .../decoders/tlc5620/__init__.py | 3 +- libsigrokdecode4DSL/decoders/tlc5620/pd.py | 48 +- .../decoders/usb_packet/__init__.py | 3 +- libsigrokdecode4DSL/decoders/usb_packet/pd.py | 11 +- .../decoders/usb_power_delivery/__init__.py | 3 +- .../decoders/usb_power_delivery/pd.py | 331 +- .../decoders/usb_request/__init__.py | 3 +- .../decoders/usb_request/pd.py | 62 +- .../decoders/usb_signalling/__init__.py | 3 +- .../decoders/usb_signalling/pd.py | 78 +- .../decoders/wiegand/__init__.py | 3 +- libsigrokdecode4DSL/decoders/wiegand/pd.py | 41 +- libsigrokdecode4DSL/decoders/xfp/__init__.py | 8 +- libsigrokdecode4DSL/decoders/xfp/pd.py | 186 +- libsigrokdecode4DSL/decoders/z80/__init__.py | 5 +- libsigrokdecode4DSL/decoders/z80/pd.py | 17 +- libsigrokdecode4DSL/error.c | 3 +- libsigrokdecode4DSL/exception.c | 37 +- libsigrokdecode4DSL/instance.c | 1027 ++++- .../libsigrokdecode-internal.h | 53 +- libsigrokdecode4DSL/libsigrokdecode.h | 121 +- libsigrokdecode4DSL/libsigrokdecode4DSL.pc.in | 0 libsigrokdecode4DSL/log.c | 37 +- libsigrokdecode4DSL/m4/sigrok.m4 | 0 libsigrokdecode4DSL/module_sigrokdecode.c | 21 +- libsigrokdecode4DSL/session.c | 169 +- libsigrokdecode4DSL/srd.c | 115 +- libsigrokdecode4DSL/tests/core.c | 3 +- libsigrokdecode4DSL/tests/decoder.c | 8 +- libsigrokdecode4DSL/tests/inst.c | 3 +- libsigrokdecode4DSL/tests/lib.h | 3 +- libsigrokdecode4DSL/tests/main.c | 3 +- libsigrokdecode4DSL/tests/session.c | 47 +- libsigrokdecode4DSL/tools/install-decoders | 4 +- libsigrokdecode4DSL/type_decoder.c | 893 +++- libsigrokdecode4DSL/type_logic.c | 134 - libsigrokdecode4DSL/util.c | 322 +- libsigrokdecode4DSL/version.c | 4 +- libsigrokdecode4DSL/version.h.in | 0 ug.pdf | Bin 1933449 -> 0 bytes ug25.pdf | Bin 0 -> 2992308 bytes ug31.pdf | Bin 0 -> 2763021 bytes 867 files changed, 40942 insertions(+), 21467 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 COPYING mode change 100644 => 100755 DSView/CMake/FindFFTW.cmake mode change 100644 => 100755 DSView/CMake/Findlibusb-1.0.cmake mode change 100644 => 100755 DSView/CMake/Findlibzip.cmake mode change 100644 => 100755 DSView/CMakeLists.txt mode change 100644 => 100755 DSView/COPYING mode change 100644 => 100755 DSView/DSView.desktop mode change 100644 => 100755 DSView/DSView.qrc mode change 100644 => 100755 DSView/DreamSourceLab.rules mode change 100644 => 100755 DSView/INSTALL mode change 100644 => 100755 DSView/NEWS mode change 100644 => 100755 DSView/README mode change 100644 => 100755 DSView/config.h.in delete mode 100755 DSView/darkstyle/rc/branch_closed-on.png delete mode 100755 DSView/darkstyle/rc/branch_closed.png delete mode 100755 DSView/darkstyle/rc/branch_open-on.png delete mode 100755 DSView/darkstyle/rc/branch_open.png delete mode 100755 DSView/darkstyle/rc/checkbox_checked.png delete mode 100755 DSView/darkstyle/rc/checkbox_checked_disabled.png delete mode 100755 DSView/darkstyle/rc/checkbox_checked_focus.png delete mode 100755 DSView/darkstyle/rc/checkbox_indeterminate.png delete mode 100755 DSView/darkstyle/rc/checkbox_indeterminate_disabled.png delete mode 100755 DSView/darkstyle/rc/checkbox_indeterminate_focus.png delete mode 100755 DSView/darkstyle/rc/checkbox_unchecked.png delete mode 100755 DSView/darkstyle/rc/checkbox_unchecked_disabled.png delete mode 100755 DSView/darkstyle/rc/checkbox_unchecked_focus.png delete mode 100755 DSView/darkstyle/rc/close-hover.png delete mode 100755 DSView/darkstyle/rc/close-pressed.png delete mode 100755 DSView/darkstyle/rc/close.png delete mode 100755 DSView/darkstyle/rc/down_arrow.png delete mode 100755 DSView/darkstyle/rc/down_arrow_disabled.png delete mode 100755 DSView/darkstyle/rc/left_arrow.png delete mode 100755 DSView/darkstyle/rc/left_arrow_disabled.png delete mode 100755 DSView/darkstyle/rc/radio_checked.png delete mode 100755 DSView/darkstyle/rc/radio_checked_disabled.png delete mode 100755 DSView/darkstyle/rc/radio_checked_focus.png delete mode 100755 DSView/darkstyle/rc/radio_unchecked.png delete mode 100755 DSView/darkstyle/rc/radio_unchecked_disabled.png delete mode 100755 DSView/darkstyle/rc/radio_unchecked_focus.png delete mode 100755 DSView/darkstyle/rc/right_arrow.png delete mode 100755 DSView/darkstyle/rc/right_arrow_disabled.png delete mode 100755 DSView/darkstyle/rc/sizegrip.png delete mode 100755 DSView/darkstyle/rc/stylesheet-branch-end.png delete mode 100755 DSView/darkstyle/rc/stylesheet-branch-more.png delete mode 100755 DSView/darkstyle/rc/stylesheet-vline.png delete mode 100755 DSView/darkstyle/rc/transparent.png delete mode 100755 DSView/darkstyle/rc/undock.png delete mode 100755 DSView/darkstyle/rc/up_arrow.png delete mode 100755 DSView/darkstyle/rc/up_arrow_disabled.png delete mode 100755 DSView/darkstyle/style.qrc delete mode 100755 DSView/darkstyle/style.qss mode change 100644 => 100755 DSView/dsapplication.cpp mode change 100644 => 100755 DSView/dsapplication.h mode change 100644 => 100755 DSView/extdef.h mode change 100644 => 100755 DSView/icons/Blackman.png create mode 100755 DSView/icons/Chinese.png create mode 100755 DSView/icons/English.png mode change 100644 => 100755 DSView/icons/Flat_top.png mode change 100644 => 100755 DSView/icons/Hamming.png mode change 100644 => 100755 DSView/icons/Hann.png mode change 100644 => 100755 DSView/icons/Rectangle.png delete mode 100755 DSView/icons/arrow-loop.png delete mode 100644 DSView/icons/close.png rename DSView/icons/{ => dark}/about.png (100%) rename DSView/icons/{ => dark}/add.png (100%) rename DSView/icons/{ => dark}/bug.png (100%) rename DSView/icons/{ => dark}/capture.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/close.png create mode 100755 DSView/icons/dark/daq.png create mode 100755 DSView/icons/dark/dark.png rename DSView/icons/{ => dark}/del.png (100%) create mode 100755 DSView/icons/dark/display.png rename DSView/icons/{ => dark}/down-arrow.png (100%) mode change 100644 => 100755 rename DSView/icons/{ => dark}/export.png (100%) mode change 100644 => 100755 rename DSView/icons/{ => dark}/fft.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/file.png create mode 100755 DSView/icons/dark/function.png rename DSView/icons/{ => dark}/gear.png (100%) mode change 100644 => 100755 rename DSView/icons/{ => dark}/hidden.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/instant.png create mode 100755 DSView/icons/dark/la.png create mode 100755 DSView/icons/dark/light.png create mode 100755 DSView/icons/dark/lissajous.png create mode 100755 DSView/icons/dark/logo_color.png create mode 100755 DSView/icons/dark/logo_noColor.png rename DSView/icons/{ => dark}/manual.png (100%) create mode 100755 DSView/icons/dark/math.png create mode 100755 DSView/icons/dark/maximize.png create mode 100755 DSView/icons/dark/measure.png create mode 100755 DSView/icons/dark/minimize.png create mode 100755 DSView/icons/dark/moder.png create mode 100755 DSView/icons/dark/modes.png rename DSView/icons/{ => dark}/nav.png (100%) rename DSView/icons/{ => dark}/next.png (100%) mode change 100644 => 100755 rename DSView/icons/{ => dark}/oneloop.png (100%) rename DSView/icons/{ => dark}/open.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/osc.png create mode 100755 DSView/icons/dark/params.png rename DSView/icons/{ => dark}/pre.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/protocol.png rename DSView/icons/{ => dark}/repeat.png (100%) create mode 100755 DSView/icons/dark/restore.png rename DSView/icons/{ => dark}/save.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/search-bar.png create mode 100755 DSView/icons/dark/search.png rename DSView/icons/{ => dark}/shown.png (100%) mode change 100644 => 100755 create mode 100755 DSView/icons/dark/single.png create mode 100755 DSView/icons/dark/start.png create mode 100755 DSView/icons/dark/stop.png rename DSView/icons/{ => dark}/support.png (100%) create mode 100755 DSView/icons/dark/trigger.png create mode 100755 DSView/icons/dark/wait.gif delete mode 100755 DSView/icons/del_dis.png delete mode 100644 DSView/icons/file.png delete mode 100644 DSView/icons/file_dis.png delete mode 100644 DSView/icons/instant.png delete mode 100644 DSView/icons/instant_dis.png create mode 100755 DSView/icons/light/about.png rename DSView/icons/{add_dis.png => light/add.png} (50%) create mode 100755 DSView/icons/light/bug.png create mode 100755 DSView/icons/light/capture.png create mode 100755 DSView/icons/light/close.png create mode 100755 DSView/icons/light/daq.png create mode 100755 DSView/icons/light/dark.png create mode 100755 DSView/icons/light/del.png create mode 100755 DSView/icons/light/display.png create mode 100755 DSView/icons/light/down-arrow.png create mode 100755 DSView/icons/light/export.png create mode 100755 DSView/icons/light/fft.png create mode 100755 DSView/icons/light/file.png create mode 100755 DSView/icons/light/function.png create mode 100755 DSView/icons/light/gear.png create mode 100755 DSView/icons/light/hidden.png create mode 100755 DSView/icons/light/instant.png create mode 100755 DSView/icons/light/la.png create mode 100755 DSView/icons/light/light.png create mode 100755 DSView/icons/light/lissajous.png create mode 100755 DSView/icons/light/logo_color.png create mode 100755 DSView/icons/light/logo_noColor.png create mode 100755 DSView/icons/light/manual.png create mode 100755 DSView/icons/light/math.png create mode 100755 DSView/icons/light/maximize.png create mode 100755 DSView/icons/light/measure.png create mode 100755 DSView/icons/light/minimize.png create mode 100755 DSView/icons/light/moder.png create mode 100755 DSView/icons/light/modes.png create mode 100755 DSView/icons/light/nav.png create mode 100755 DSView/icons/light/next.png create mode 100755 DSView/icons/light/oneloop.png create mode 100755 DSView/icons/light/open.png create mode 100755 DSView/icons/light/osc.png create mode 100755 DSView/icons/light/params.png create mode 100755 DSView/icons/light/pre.png create mode 100755 DSView/icons/light/protocol.png create mode 100755 DSView/icons/light/repeat.png create mode 100755 DSView/icons/light/restore.png create mode 100755 DSView/icons/light/save.png create mode 100755 DSView/icons/light/search-bar.png create mode 100755 DSView/icons/light/search.png create mode 100755 DSView/icons/light/shown.png create mode 100755 DSView/icons/light/single.png create mode 100755 DSView/icons/light/start.png create mode 100755 DSView/icons/light/stop.png create mode 100755 DSView/icons/light/support.png create mode 100755 DSView/icons/light/trigger.png create mode 100755 DSView/icons/light/wait.gif create mode 100755 DSView/icons/lissajous.png delete mode 100644 DSView/icons/load.gif mode change 100644 => 100755 DSView/icons/logo.png delete mode 100755 DSView/icons/logo.svg delete mode 100755 DSView/icons/logo_128.png delete mode 100755 DSView/icons/logo_16.png delete mode 100755 DSView/icons/logo_256.png delete mode 100755 DSView/icons/logo_32.png delete mode 100755 DSView/icons/logo_48.png delete mode 100755 DSView/icons/logo_64.png delete mode 100755 DSView/icons/logo_color.png delete mode 100755 DSView/icons/logo_noColor.png create mode 100755 DSView/icons/mAmplitude.png create mode 100755 DSView/icons/mBurst.png create mode 100755 DSView/icons/mDelay.png create mode 100755 DSView/icons/mFall.png create mode 100755 DSView/icons/mFreq.png create mode 100755 DSView/icons/mHigh.png create mode 100755 DSView/icons/mLow.png create mode 100755 DSView/icons/mMax.png create mode 100755 DSView/icons/mMean.png create mode 100755 DSView/icons/mMin.png create mode 100755 DSView/icons/mNduty.png create mode 100755 DSView/icons/mNover.png create mode 100755 DSView/icons/mNwidth.png create mode 100755 DSView/icons/mPcount.png create mode 100755 DSView/icons/mPduty.png create mode 100755 DSView/icons/mPeriod.png create mode 100755 DSView/icons/mPover.png create mode 100755 DSView/icons/mPwidth.png create mode 100755 DSView/icons/mRise.png create mode 100755 DSView/icons/mRms.png create mode 100755 DSView/icons/mVpp.png mode change 100644 => 100755 DSView/icons/math.png delete mode 100644 DSView/icons/math_dis.png delete mode 100644 DSView/icons/maximize.png delete mode 100644 DSView/icons/measure.png delete mode 100644 DSView/icons/measure_dis.png delete mode 100644 DSView/icons/minimize.png delete mode 100755 DSView/icons/moder.png delete mode 100755 DSView/icons/moder_dis.png delete mode 100755 DSView/icons/modes.png delete mode 100755 DSView/icons/modes_dis.png delete mode 100644 DSView/icons/params.png delete mode 100644 DSView/icons/params_dis.png delete mode 100644 DSView/icons/protocol.png delete mode 100644 DSView/icons/protocol_dis.png delete mode 100644 DSView/icons/restore.png delete mode 100644 DSView/icons/search-bar.png delete mode 100644 DSView/icons/search-bar_dis.png mode change 100644 => 100755 DSView/icons/search.png delete mode 100644 DSView/icons/settings.png delete mode 100755 DSView/icons/showDoc.png create mode 100755 DSView/icons/showDoc25.png create mode 100755 DSView/icons/showDoc31.png delete mode 100644 DSView/icons/single.png delete mode 100644 DSView/icons/single_dis.png delete mode 100644 DSView/icons/slider-handle.png delete mode 100644 DSView/icons/start.png delete mode 100644 DSView/icons/start_dis.png delete mode 100644 DSView/icons/stop.png delete mode 100644 DSView/icons/trigger.png delete mode 100644 DSView/icons/trigger_dis.png delete mode 100644 DSView/icons/wait.gif create mode 100755 DSView/languages/language.qrc create mode 100755 DSView/languages/my_25.qm create mode 100755 DSView/languages/qt_25.qm mode change 100644 => 100755 DSView/main.cpp mode change 100644 => 100755 DSView/pv/data/analog.cpp mode change 100644 => 100755 DSView/pv/data/analog.h mode change 100644 => 100755 DSView/pv/data/analogsnapshot.cpp mode change 100644 => 100755 DSView/pv/data/analogsnapshot.h mode change 100644 => 100755 DSView/pv/data/decode/annotation.cpp mode change 100644 => 100755 DSView/pv/data/decode/annotation.h mode change 100644 => 100755 DSView/pv/data/decode/decoder.cpp mode change 100644 => 100755 DSView/pv/data/decode/decoder.h mode change 100644 => 100755 DSView/pv/data/decode/row.cpp mode change 100644 => 100755 DSView/pv/data/decode/row.h mode change 100644 => 100755 DSView/pv/data/decode/rowdata.cpp mode change 100644 => 100755 DSView/pv/data/decode/rowdata.h mode change 100644 => 100755 DSView/pv/data/decodermodel.cpp mode change 100644 => 100755 DSView/pv/data/decodermodel.h mode change 100644 => 100755 DSView/pv/data/decoderstack.cpp mode change 100644 => 100755 DSView/pv/data/decoderstack.h mode change 100644 => 100755 DSView/pv/data/dso.cpp mode change 100644 => 100755 DSView/pv/data/dso.h mode change 100644 => 100755 DSView/pv/data/dsosnapshot.cpp mode change 100644 => 100755 DSView/pv/data/dsosnapshot.h mode change 100644 => 100755 DSView/pv/data/group.cpp mode change 100644 => 100755 DSView/pv/data/group.h mode change 100644 => 100755 DSView/pv/data/groupsnapshot.cpp mode change 100644 => 100755 DSView/pv/data/groupsnapshot.h mode change 100644 => 100755 DSView/pv/data/logic.cpp mode change 100644 => 100755 DSView/pv/data/logic.h mode change 100644 => 100755 DSView/pv/data/logicsnapshot.cpp mode change 100644 => 100755 DSView/pv/data/logicsnapshot.h mode change 100644 => 100755 DSView/pv/data/mathstack.cpp mode change 100644 => 100755 DSView/pv/data/mathstack.h mode change 100644 => 100755 DSView/pv/data/signaldata.cpp mode change 100644 => 100755 DSView/pv/data/signaldata.h mode change 100644 => 100755 DSView/pv/data/snapshot.cpp mode change 100644 => 100755 DSView/pv/data/snapshot.h create mode 100755 DSView/pv/data/spectrumstack.cpp create mode 100755 DSView/pv/data/spectrumstack.h mode change 100644 => 100755 DSView/pv/device/device.cpp mode change 100644 => 100755 DSView/pv/device/device.h mode change 100644 => 100755 DSView/pv/device/devinst.cpp mode change 100644 => 100755 DSView/pv/device/devinst.h mode change 100644 => 100755 DSView/pv/device/file.cpp mode change 100644 => 100755 DSView/pv/device/file.h mode change 100644 => 100755 DSView/pv/device/inputfile.cpp mode change 100644 => 100755 DSView/pv/device/inputfile.h mode change 100644 => 100755 DSView/pv/device/sessionfile.cpp mode change 100644 => 100755 DSView/pv/device/sessionfile.h mode change 100644 => 100755 DSView/pv/devicemanager.cpp mode change 100644 => 100755 DSView/pv/devicemanager.h mode change 100644 => 100755 DSView/pv/dialogs/about.cpp mode change 100644 => 100755 DSView/pv/dialogs/about.h mode change 100644 => 100755 DSView/pv/dialogs/calibration.cpp mode change 100644 => 100755 DSView/pv/dialogs/calibration.h mode change 100644 => 100755 DSView/pv/dialogs/deviceoptions.cpp mode change 100644 => 100755 DSView/pv/dialogs/deviceoptions.h mode change 100644 => 100755 DSView/pv/dialogs/dsdialog.cpp mode change 100644 => 100755 DSView/pv/dialogs/dsdialog.h mode change 100644 => 100755 DSView/pv/dialogs/dsmessagebox.cpp mode change 100644 => 100755 DSView/pv/dialogs/dsmessagebox.h mode change 100644 => 100755 DSView/pv/dialogs/dsomeasure.cpp mode change 100644 => 100755 DSView/pv/dialogs/dsomeasure.h mode change 100644 => 100755 DSView/pv/dialogs/fftoptions.cpp mode change 100644 => 100755 DSView/pv/dialogs/fftoptions.h mode change 100644 => 100755 DSView/pv/dialogs/interval.cpp mode change 100644 => 100755 DSView/pv/dialogs/interval.h create mode 100755 DSView/pv/dialogs/lissajousoptions.cpp create mode 100755 DSView/pv/dialogs/lissajousoptions.h create mode 100755 DSView/pv/dialogs/mathoptions.cpp create mode 100755 DSView/pv/dialogs/mathoptions.h mode change 100644 => 100755 DSView/pv/dialogs/protocolexp.cpp mode change 100644 => 100755 DSView/pv/dialogs/protocolexp.h mode change 100644 => 100755 DSView/pv/dialogs/protocollist.cpp mode change 100644 => 100755 DSView/pv/dialogs/protocollist.h create mode 100755 DSView/pv/dialogs/regionoptions.cpp create mode 100755 DSView/pv/dialogs/regionoptions.h mode change 100644 => 100755 DSView/pv/dialogs/search.cpp mode change 100644 => 100755 DSView/pv/dialogs/search.h mode change 100644 => 100755 DSView/pv/dialogs/shadow.cpp mode change 100644 => 100755 DSView/pv/dialogs/shadow.h mode change 100644 => 100755 DSView/pv/dialogs/storeprogress.cpp mode change 100644 => 100755 DSView/pv/dialogs/storeprogress.h mode change 100644 => 100755 DSView/pv/dialogs/waitingdialog.cpp mode change 100644 => 100755 DSView/pv/dialogs/waitingdialog.h mode change 100644 => 100755 DSView/pv/dock/dsotriggerdock.cpp mode change 100644 => 100755 DSView/pv/dock/dsotriggerdock.h mode change 100644 => 100755 DSView/pv/dock/measuredock.cpp mode change 100644 => 100755 DSView/pv/dock/measuredock.h mode change 100644 => 100755 DSView/pv/dock/protocoldock.cpp mode change 100644 => 100755 DSView/pv/dock/protocoldock.h mode change 100644 => 100755 DSView/pv/dock/searchdock.cpp mode change 100644 => 100755 DSView/pv/dock/searchdock.h mode change 100644 => 100755 DSView/pv/dock/triggerdock.cpp mode change 100644 => 100755 DSView/pv/dock/triggerdock.h mode change 100644 => 100755 DSView/pv/mainframe.cpp mode change 100644 => 100755 DSView/pv/mainframe.h mode change 100644 => 100755 DSView/pv/mainwindow.cpp mode change 100644 => 100755 DSView/pv/mainwindow.h mode change 100644 => 100755 DSView/pv/prop/binding/binding.cpp mode change 100644 => 100755 DSView/pv/prop/binding/binding.h mode change 100644 => 100755 DSView/pv/prop/binding/decoderoptions.cpp mode change 100644 => 100755 DSView/pv/prop/binding/decoderoptions.h mode change 100644 => 100755 DSView/pv/prop/binding/deviceoptions.cpp mode change 100644 => 100755 DSView/pv/prop/binding/deviceoptions.h mode change 100644 => 100755 DSView/pv/prop/binding/probeoptions.cpp mode change 100644 => 100755 DSView/pv/prop/binding/probeoptions.h mode change 100644 => 100755 DSView/pv/prop/bool.cpp mode change 100644 => 100755 DSView/pv/prop/bool.h mode change 100644 => 100755 DSView/pv/prop/double.cpp mode change 100644 => 100755 DSView/pv/prop/double.h mode change 100644 => 100755 DSView/pv/prop/enum.cpp mode change 100644 => 100755 DSView/pv/prop/enum.h mode change 100644 => 100755 DSView/pv/prop/int.cpp mode change 100644 => 100755 DSView/pv/prop/int.h mode change 100644 => 100755 DSView/pv/prop/property.cpp mode change 100644 => 100755 DSView/pv/prop/property.h mode change 100644 => 100755 DSView/pv/prop/string.cpp mode change 100644 => 100755 DSView/pv/prop/string.h mode change 100644 => 100755 DSView/pv/sigsession.cpp mode change 100644 => 100755 DSView/pv/sigsession.h mode change 100644 => 100755 DSView/pv/storesession.cpp mode change 100644 => 100755 DSView/pv/storesession.h mode change 100644 => 100755 DSView/pv/toolbars/filebar.cpp mode change 100644 => 100755 DSView/pv/toolbars/filebar.h mode change 100644 => 100755 DSView/pv/toolbars/logobar.cpp mode change 100644 => 100755 DSView/pv/toolbars/logobar.h mode change 100644 => 100755 DSView/pv/toolbars/samplingbar.cpp mode change 100644 => 100755 DSView/pv/toolbars/samplingbar.h mode change 100644 => 100755 DSView/pv/toolbars/titlebar.cpp mode change 100644 => 100755 DSView/pv/toolbars/titlebar.h mode change 100644 => 100755 DSView/pv/toolbars/trigbar.cpp mode change 100644 => 100755 DSView/pv/toolbars/trigbar.h mode change 100644 => 100755 DSView/pv/view/analogsignal.cpp mode change 100644 => 100755 DSView/pv/view/analogsignal.h mode change 100644 => 100755 DSView/pv/view/cursor.cpp mode change 100644 => 100755 DSView/pv/view/cursor.h mode change 100644 => 100755 DSView/pv/view/decodetrace.cpp mode change 100644 => 100755 DSView/pv/view/decodetrace.h mode change 100644 => 100755 DSView/pv/view/devmode.cpp mode change 100644 => 100755 DSView/pv/view/devmode.h mode change 100644 => 100755 DSView/pv/view/dsldial.cpp mode change 100644 => 100755 DSView/pv/view/dsldial.h mode change 100644 => 100755 DSView/pv/view/dsosignal.cpp mode change 100644 => 100755 DSView/pv/view/dsosignal.h mode change 100644 => 100755 DSView/pv/view/groupsignal.cpp mode change 100644 => 100755 DSView/pv/view/groupsignal.h mode change 100644 => 100755 DSView/pv/view/header.cpp mode change 100644 => 100755 DSView/pv/view/header.h create mode 100755 DSView/pv/view/lissajoustrace.cpp create mode 100755 DSView/pv/view/lissajoustrace.h mode change 100644 => 100755 DSView/pv/view/logicsignal.cpp mode change 100644 => 100755 DSView/pv/view/logicsignal.h mode change 100644 => 100755 DSView/pv/view/mathtrace.cpp mode change 100644 => 100755 DSView/pv/view/mathtrace.h mode change 100644 => 100755 DSView/pv/view/ruler.cpp mode change 100644 => 100755 DSView/pv/view/ruler.h mode change 100644 => 100755 DSView/pv/view/selectableitem.cpp mode change 100644 => 100755 DSView/pv/view/selectableitem.h mode change 100644 => 100755 DSView/pv/view/signal.cpp mode change 100644 => 100755 DSView/pv/view/signal.h create mode 100755 DSView/pv/view/spectrumtrace.cpp create mode 100755 DSView/pv/view/spectrumtrace.h mode change 100644 => 100755 DSView/pv/view/timemarker.cpp mode change 100644 => 100755 DSView/pv/view/timemarker.h mode change 100644 => 100755 DSView/pv/view/trace.cpp mode change 100644 => 100755 DSView/pv/view/trace.h mode change 100644 => 100755 DSView/pv/view/view.cpp mode change 100644 => 100755 DSView/pv/view/view.h mode change 100644 => 100755 DSView/pv/view/viewport.cpp mode change 100644 => 100755 DSView/pv/view/viewport.h create mode 100755 DSView/pv/view/viewstatus.cpp rename DSView/pv/{widgets => view}/viewstatus.h (64%) mode change 100644 => 100755 create mode 100755 DSView/pv/view/xcursor.cpp create mode 100755 DSView/pv/view/xcursor.h mode change 100644 => 100755 DSView/pv/widgets/border.cpp mode change 100644 => 100755 DSView/pv/widgets/border.h mode change 100644 => 100755 DSView/pv/widgets/decodergroupbox.cpp mode change 100644 => 100755 DSView/pv/widgets/decodergroupbox.h mode change 100644 => 100755 DSView/pv/widgets/decodermenu.cpp mode change 100644 => 100755 DSView/pv/widgets/decodermenu.h mode change 100644 => 100755 DSView/pv/widgets/fakelineedit.cpp mode change 100644 => 100755 DSView/pv/widgets/fakelineedit.h delete mode 100644 DSView/pv/widgets/viewstatus.cpp create mode 100755 DSView/res/DSCope1.def25.dsc create mode 100755 DSView/res/DSCope1.def31.dsc rename DSView/res/{DSCope2.def.dsc => DSCope2.def25.dsc} (82%) rename DSView/res/{DSCope1.def.dsc => DSCope2.def31.dsc} (62%) mode change 100644 => 100755 delete mode 100755 DSView/res/DSCopeB20.fw delete mode 100755 DSView/res/DSCopeC20.bin delete mode 100755 DSView/res/DSCopeC20.fw delete mode 100755 DSView/res/DSCopeC20B.fw delete mode 100755 DSView/res/DSCopeC20P.fw create mode 100755 DSView/res/DSCopeU2B20.bin create mode 100755 DSView/res/DSCopeU2P20.bin rename DSView/res/{DSLogic0.def.dsc => DSLogic0.def25.dsc} (90%) mode change 100644 => 100755 create mode 100755 DSView/res/DSLogic0.def31.dsc create mode 100755 DSView/res/DSLogic1.def25.dsc create mode 100755 DSView/res/DSLogic1.def31.dsc rename DSView/res/{DSLogic2.def.dsc => DSLogic2.def25.dsc} (88%) mode change 100644 => 100755 rename DSView/res/{DSLogic1.def.dsc => DSLogic2.def31.dsc} (65%) mode change 100644 => 100755 delete mode 100755 DSView/res/DSLogicBasic.fw delete mode 100755 DSView/res/DSLogicPlus.fw create mode 100755 DSView/res/DSLogicU2Basic.bin mode change 100644 => 100755 DSView/res/license.txt create mode 100755 DSView/res/virtual-demo1.dsc mode change 100644 => 100755 DSView/stylesheet.qss mode change 100644 => 100755 DSView/test/CMakeLists.txt mode change 100644 => 100755 DSView/test/data/analogsnapshot.cpp mode change 100644 => 100755 DSView/test/data/logicsnapshot.cpp mode change 100644 => 100755 DSView/test/test.cpp create mode 100755 DSView/themes/LICENSE.md create mode 100755 DSView/themes/README.md create mode 100755 DSView/themes/breeze.qrc create mode 100755 DSView/themes/dark.qss create mode 100755 DSView/themes/dark/branch_closed-on.svg create mode 100755 DSView/themes/dark/branch_closed.svg create mode 100755 DSView/themes/dark/branch_open-on.svg create mode 100755 DSView/themes/dark/branch_open.svg create mode 100755 DSView/themes/dark/checkbox_checked-hover.svg create mode 100755 DSView/themes/dark/checkbox_checked.svg create mode 100755 DSView/themes/dark/checkbox_checked_disabled.svg create mode 100755 DSView/themes/dark/checkbox_indeterminate-hover.svg create mode 100755 DSView/themes/dark/checkbox_indeterminate.svg create mode 100755 DSView/themes/dark/checkbox_indeterminate_disabled.svg create mode 100755 DSView/themes/dark/checkbox_unchecked-hover.svg create mode 100755 DSView/themes/dark/checkbox_unchecked.svg create mode 100755 DSView/themes/dark/checkbox_unchecked_disabled.svg create mode 100755 DSView/themes/dark/close-hover.svg create mode 100755 DSView/themes/dark/close-pressed.svg create mode 100755 DSView/themes/dark/close.svg create mode 100755 DSView/themes/dark/down_arrow-hover.svg create mode 100755 DSView/themes/dark/down_arrow.svg create mode 100755 DSView/themes/dark/down_arrow_disabled.svg create mode 100755 DSView/themes/dark/hmovetoolbar.svg create mode 100755 DSView/themes/dark/hsepartoolbar.svg create mode 100755 DSView/themes/dark/left_arrow.svg create mode 100755 DSView/themes/dark/left_arrow_disabled.svg create mode 100755 DSView/themes/dark/mode_down_arrow.svg create mode 100755 DSView/themes/dark/radio_checked-hover.svg create mode 100755 DSView/themes/dark/radio_checked.svg create mode 100755 DSView/themes/dark/radio_checked_disabled.svg create mode 100755 DSView/themes/dark/radio_unchecked-hover.svg create mode 100755 DSView/themes/dark/radio_unchecked.svg create mode 100755 DSView/themes/dark/radio_unchecked_disabled.svg create mode 100755 DSView/themes/dark/right_arrow.svg create mode 100755 DSView/themes/dark/right_arrow_disabled.svg create mode 100755 DSView/themes/dark/sizegrip.svg create mode 100755 DSView/themes/dark/spinup_disabled.svg create mode 100755 DSView/themes/dark/stylesheet-branch-end-closed.svg create mode 100755 DSView/themes/dark/stylesheet-branch-end-open.svg create mode 100755 DSView/themes/dark/stylesheet-branch-end.svg create mode 100755 DSView/themes/dark/stylesheet-branch-more.svg create mode 100755 DSView/themes/dark/stylesheet-vline.svg create mode 100755 DSView/themes/dark/transparent.svg create mode 100755 DSView/themes/dark/undock-hover.svg create mode 100755 DSView/themes/dark/undock.svg create mode 100755 DSView/themes/dark/up_arrow-hover.svg create mode 100755 DSView/themes/dark/up_arrow.svg create mode 100755 DSView/themes/dark/up_arrow_disabled.svg create mode 100755 DSView/themes/dark/vmovetoolbar.svg create mode 100755 DSView/themes/dark/vsepartoolbars.svg create mode 100755 DSView/themes/light.qss create mode 100755 DSView/themes/light/branch_closed-on.svg create mode 100755 DSView/themes/light/branch_closed.svg create mode 100755 DSView/themes/light/branch_open-on.svg create mode 100755 DSView/themes/light/branch_open.svg create mode 100755 DSView/themes/light/checkbox_checked-hover.svg create mode 100755 DSView/themes/light/checkbox_checked.svg create mode 100755 DSView/themes/light/checkbox_checked_disabled.svg create mode 100755 DSView/themes/light/checkbox_indeterminate-hover.svg create mode 100755 DSView/themes/light/checkbox_indeterminate.svg create mode 100755 DSView/themes/light/checkbox_indeterminate_disabled.svg create mode 100755 DSView/themes/light/checkbox_unchecked-hover.svg create mode 100755 DSView/themes/light/checkbox_unchecked.svg create mode 100755 DSView/themes/light/checkbox_unchecked_disabled.svg create mode 100755 DSView/themes/light/close-hover.svg create mode 100755 DSView/themes/light/close-pressed.svg create mode 100755 DSView/themes/light/close.svg create mode 100755 DSView/themes/light/down_arrow-hover.svg create mode 100755 DSView/themes/light/down_arrow.svg create mode 100755 DSView/themes/light/down_arrow_disabled.svg create mode 100755 DSView/themes/light/hmovetoolbar.svg create mode 100755 DSView/themes/light/hsepartoolbar.svg create mode 100755 DSView/themes/light/left_arrow.svg create mode 100755 DSView/themes/light/left_arrow_disabled.svg create mode 100755 DSView/themes/light/mode_down_arrow.svg create mode 100755 DSView/themes/light/radio_checked-hover.svg create mode 100755 DSView/themes/light/radio_checked.svg create mode 100755 DSView/themes/light/radio_checked_disabled.svg create mode 100755 DSView/themes/light/radio_unchecked-hover.svg create mode 100755 DSView/themes/light/radio_unchecked.svg create mode 100755 DSView/themes/light/radio_unchecked_disabled.svg create mode 100755 DSView/themes/light/right_arrow.svg create mode 100755 DSView/themes/light/right_arrow_disabled.svg create mode 100755 DSView/themes/light/sizegrip.svg create mode 100755 DSView/themes/light/spinup_disabled.svg create mode 100755 DSView/themes/light/stylesheet-branch-end-closed.svg create mode 100755 DSView/themes/light/stylesheet-branch-end-open.svg create mode 100755 DSView/themes/light/stylesheet-branch-end.svg create mode 100755 DSView/themes/light/stylesheet-branch-more.svg create mode 100755 DSView/themes/light/stylesheet-vline.svg create mode 100755 DSView/themes/light/transparent.svg create mode 100755 DSView/themes/light/undock-hover.svg create mode 100755 DSView/themes/light/undock.svg create mode 100755 DSView/themes/light/up_arrow-hover.svg create mode 100755 DSView/themes/light/up_arrow.svg create mode 100755 DSView/themes/light/up_arrow_disabled.svg create mode 100755 DSView/themes/light/vmovetoolbar.svg create mode 100755 DSView/themes/light/vsepartoolbars.svg mode change 100644 => 100755 INSTALL delete mode 100644 NEWS create mode 100755 NEWS25 create mode 100755 NEWS31 mode change 100644 => 100755 README.md mode change 100644 => 100755 libsigrok4DSL/AUTHORS mode change 100644 => 100755 libsigrok4DSL/COPYING mode change 100644 => 100755 libsigrok4DSL/ChangeLog mode change 100644 => 100755 libsigrok4DSL/INSTALL mode change 100644 => 100755 libsigrok4DSL/Makefile.am mode change 100644 => 100755 libsigrok4DSL/NEWS mode change 100644 => 100755 libsigrok4DSL/README mode change 100644 => 100755 libsigrok4DSL/backend.c mode change 100644 => 100755 libsigrok4DSL/configure.ac mode change 100644 => 100755 libsigrok4DSL/dsdevice.c mode change 100644 => 100755 libsigrok4DSL/error.c mode change 100644 => 100755 libsigrok4DSL/hardware/DSL/Makefile.am mode change 100644 => 100755 libsigrok4DSL/hardware/DSL/command.c mode change 100644 => 100755 libsigrok4DSL/hardware/DSL/command.h mode change 100644 => 100755 libsigrok4DSL/hardware/DSL/dscope.c mode change 100644 => 100755 libsigrok4DSL/hardware/DSL/dsl.h mode change 100644 => 100755 libsigrok4DSL/hardware/Makefile.am mode change 100644 => 100755 libsigrok4DSL/hardware/common/Makefile.am mode change 100644 => 100755 libsigrok4DSL/hardware/common/ezusb.c mode change 100644 => 100755 libsigrok4DSL/hardware/common/usb.c mode change 100644 => 100755 libsigrok4DSL/hardware/demo/Makefile.am mode change 100644 => 100755 libsigrok4DSL/hardware/demo/demo.c mode change 100644 => 100755 libsigrok4DSL/hardware/demo/demo.h mode change 100644 => 100755 libsigrok4DSL/hwdriver.c mode change 100644 => 100755 libsigrok4DSL/input/Makefile.am mode change 100644 => 100755 libsigrok4DSL/input/in_binary.c mode change 100644 => 100755 libsigrok4DSL/input/in_vcd.c mode change 100644 => 100755 libsigrok4DSL/input/in_wav.c mode change 100644 => 100755 libsigrok4DSL/input/input.c mode change 100644 => 100755 libsigrok4DSL/libsigrok-internal.h mode change 100644 => 100755 libsigrok4DSL/libsigrok.h mode change 100644 => 100755 libsigrok4DSL/libsigrok4DSL.pc.in mode change 100644 => 100755 libsigrok4DSL/log.c mode change 100644 => 100755 libsigrok4DSL/output/Makefile.am mode change 100644 => 100755 libsigrok4DSL/output/csv.c mode change 100644 => 100755 libsigrok4DSL/output/gnuplot.c mode change 100644 => 100755 libsigrok4DSL/output/output.c mode change 100644 => 100755 libsigrok4DSL/output/srzip.c mode change 100644 => 100755 libsigrok4DSL/output/vcd.c mode change 100644 => 100755 libsigrok4DSL/proto.h mode change 100644 => 100755 libsigrok4DSL/session.c mode change 100644 => 100755 libsigrok4DSL/session_driver.c mode change 100644 => 100755 libsigrok4DSL/session_file.c mode change 100644 => 100755 libsigrok4DSL/std.c mode change 100644 => 100755 libsigrok4DSL/strutil.c mode change 100644 => 100755 libsigrok4DSL/tests/Makefile.am mode change 100644 => 100755 libsigrok4DSL/tests/check_core.c mode change 100644 => 100755 libsigrok4DSL/tests/check_driver_all.c mode change 100644 => 100755 libsigrok4DSL/tests/check_main.c mode change 100644 => 100755 libsigrok4DSL/tests/check_strutil.c mode change 100644 => 100755 libsigrok4DSL/tests/lib.c mode change 100644 => 100755 libsigrok4DSL/tests/lib.h mode change 100644 => 100755 libsigrok4DSL/trigger.c mode change 100644 => 100755 libsigrok4DSL/version.c mode change 100644 => 100755 libsigrok4DSL/version.h mode change 100644 => 100755 libsigrok4DSL/version.h.in mode change 100644 => 100755 libsigrokdecode4DSL/AUTHORS mode change 100644 => 100755 libsigrokdecode4DSL/COPYING mode change 100644 => 100755 libsigrokdecode4DSL/Doxyfile mode change 100644 => 100755 libsigrokdecode4DSL/HACKING mode change 100644 => 100755 libsigrokdecode4DSL/Makefile.am mode change 100644 => 100755 libsigrokdecode4DSL/NEWS mode change 100644 => 100755 libsigrokdecode4DSL/README mode change 100644 => 100755 libsigrokdecode4DSL/configure.ac mode change 100644 => 100755 libsigrokdecode4DSL/contrib/sigrok-logo-notext.png mode change 100644 => 100755 libsigrokdecode4DSL/decoder.c create mode 100755 libsigrokdecode4DSL/decoders/ac97/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/ac97/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ade77xx/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ade77xx/lists.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ade77xx/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/adf435x/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/adf435x/pd.py create mode 100755 libsigrokdecode4DSL/decoders/atsha204a/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/atsha204a/pd.py create mode 100755 libsigrokdecode4DSL/decoders/avr_pdi/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/avr_pdi/pd.py create mode 100755 libsigrokdecode4DSL/decoders/cec/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/cec/pd.py create mode 100755 libsigrokdecode4DSL/decoders/cec/protocoldata.py create mode 100755 libsigrokdecode4DSL/decoders/cfp/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/cfp/pd.py delete mode 100755 libsigrokdecode4DSL/decoders/cjtag_oscan1/pd.py create mode 100755 libsigrokdecode4DSL/decoders/common/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/common/plugtrx/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/common/plugtrx/mod.py create mode 100755 libsigrokdecode4DSL/decoders/common/sdcard/__init__.py rename libsigrokdecode4DSL/decoders/{sdcard_sd/lists.py => common/sdcard/mod.py} (92%) create mode 100755 libsigrokdecode4DSL/decoders/common/srdhelper/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/common/srdhelper/mod.py create mode 100755 libsigrokdecode4DSL/decoders/counter/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/counter/pd.py create mode 100755 libsigrokdecode4DSL/decoders/dali/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/dali/lists.py create mode 100755 libsigrokdecode4DSL/decoders/dali/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/dmx512/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/dmx512/pd.py rename libsigrokdecode4DSL/decoders/{maxim_ds28ea00 => ds243x}/__init__.py (75%) create mode 100755 libsigrokdecode4DSL/decoders/ds243x/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ds28ea00/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ds28ea00/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/dsi/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/dsi/pd.py rename libsigrokdecode4DSL/decoders/{eeprom93cxx => eeprom93xx}/__init__.py (98%) mode change 100644 => 100755 rename libsigrokdecode4DSL/decoders/{eeprom93cxx => eeprom93xx}/pd.py (95%) mode change 100644 => 100755 mode change 100644 => 100755 libsigrokdecode4DSL/decoders/gpib/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/gpib/pd.py create mode 100755 libsigrokdecode4DSL/decoders/graycode/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/graycode/pd.py create mode 100755 libsigrokdecode4DSL/decoders/iec/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/iec/pd.py create mode 100755 libsigrokdecode4DSL/decoders/jtag_ejtag/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/jtag_ejtag/pd.py create mode 100755 libsigrokdecode4DSL/decoders/lin/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/lin/pd.py create mode 100755 libsigrokdecode4DSL/decoders/maple_bus/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/maple_bus/pd.py delete mode 100755 libsigrokdecode4DSL/decoders/maxim_ds28ea00/pd.py create mode 100755 libsigrokdecode4DSL/decoders/mcs48/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/mcs48/pd.py create mode 100755 libsigrokdecode4DSL/decoders/microwire/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/microwire/pd.py create mode 100755 libsigrokdecode4DSL/decoders/miller/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/miller/pd.py rename libsigrokdecode4DSL/decoders/{cjtag_oscan1 => morse}/__init__.py (52%) create mode 100755 libsigrokdecode4DSL/decoders/morse/pd.py create mode 100755 libsigrokdecode4DSL/decoders/ook/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/ook/pd.py create mode 100755 libsigrokdecode4DSL/decoders/ook_oregon/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/ook_oregon/lists.py create mode 100755 libsigrokdecode4DSL/decoders/ook_oregon/pd.py create mode 100755 libsigrokdecode4DSL/decoders/ook_vis/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/ook_vis/pd.py create mode 100755 libsigrokdecode4DSL/decoders/rc_encode/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/rc_encode/pd.py create mode 100755 libsigrokdecode4DSL/decoders/sda2506/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/sda2506/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ssi32/__init__.py mode change 100644 => 100755 libsigrokdecode4DSL/decoders/ssi32/pd.py create mode 100755 libsigrokdecode4DSL/decoders/st7735/__init__.py create mode 100755 libsigrokdecode4DSL/decoders/st7735/pd.py mode change 100644 => 100755 libsigrokdecode4DSL/error.c mode change 100644 => 100755 libsigrokdecode4DSL/exception.c mode change 100644 => 100755 libsigrokdecode4DSL/instance.c mode change 100644 => 100755 libsigrokdecode4DSL/libsigrokdecode-internal.h mode change 100644 => 100755 libsigrokdecode4DSL/libsigrokdecode.h mode change 100644 => 100755 libsigrokdecode4DSL/libsigrokdecode4DSL.pc.in mode change 100644 => 100755 libsigrokdecode4DSL/log.c mode change 100644 => 100755 libsigrokdecode4DSL/m4/sigrok.m4 mode change 100644 => 100755 libsigrokdecode4DSL/module_sigrokdecode.c mode change 100644 => 100755 libsigrokdecode4DSL/session.c mode change 100644 => 100755 libsigrokdecode4DSL/srd.c mode change 100644 => 100755 libsigrokdecode4DSL/tests/core.c mode change 100644 => 100755 libsigrokdecode4DSL/tests/decoder.c mode change 100644 => 100755 libsigrokdecode4DSL/tests/inst.c mode change 100644 => 100755 libsigrokdecode4DSL/tests/lib.h mode change 100644 => 100755 libsigrokdecode4DSL/tests/main.c mode change 100644 => 100755 libsigrokdecode4DSL/tests/session.c mode change 100644 => 100755 libsigrokdecode4DSL/type_decoder.c delete mode 100644 libsigrokdecode4DSL/type_logic.c mode change 100644 => 100755 libsigrokdecode4DSL/util.c mode change 100644 => 100755 libsigrokdecode4DSL/version.c mode change 100644 => 100755 libsigrokdecode4DSL/version.h.in delete mode 100755 ug.pdf create mode 100755 ug25.pdf create mode 100755 ug31.pdf diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/COPYING b/COPYING old mode 100644 new mode 100755 index 818433e..94a9ed0 --- a/COPYING +++ b/COPYING @@ -1,674 +1,674 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/DSView/CMake/FindFFTW.cmake b/DSView/CMake/FindFFTW.cmake old mode 100644 new mode 100755 diff --git a/DSView/CMake/Findlibusb-1.0.cmake b/DSView/CMake/Findlibusb-1.0.cmake old mode 100644 new mode 100755 diff --git a/DSView/CMake/Findlibzip.cmake b/DSView/CMake/Findlibzip.cmake old mode 100644 new mode 100755 diff --git a/DSView/CMakeLists.txt b/DSView/CMakeLists.txt old mode 100644 new mode 100755 index c1c33e1..6e70b63 --- a/DSView/CMakeLists.txt +++ b/DSView/CMakeLists.txt @@ -104,9 +104,9 @@ find_package(FFTW REQUIRED) set(DS_TITLE DSView) set(DS_DESCRIPTION "A GUI for instruments of DreamSourceLab") -set(DS_VERSION_MAJOR 0) -set(DS_VERSION_MINOR 9) -set(DS_VERSION_MICRO 9) +set(DS_VERSION_MAJOR 1) +set(DS_VERSION_MINOR 0) +set(DS_VERSION_MICRO 0) set(DS_VERSION_STRING ${DS_VERSION_MAJOR}.${DS_VERSION_MINOR}.${DS_VERSION_MICRO} ) @@ -121,95 +121,102 @@ configure_file ( #------------------------------------------------------------------------------- set(DSView_SOURCES - main.cpp - pv/sigsession.cpp - pv/mainwindow.cpp - pv/devicemanager.cpp - pv/data/snapshot.cpp - pv/data/signaldata.cpp - pv/data/logicsnapshot.cpp - pv/data/logic.cpp - pv/data/analogsnapshot.cpp - pv/data/analog.cpp - pv/dialogs/deviceoptions.cpp - pv/prop/property.cpp - pv/prop/int.cpp - pv/prop/enum.cpp - pv/prop/double.cpp - pv/prop/bool.cpp - pv/prop/binding/binding.cpp - pv/toolbars/samplingbar.cpp - pv/view/viewport.cpp - pv/view/view.cpp - pv/view/timemarker.cpp - pv/view/signal.cpp - pv/view/ruler.cpp - pv/view/logicsignal.cpp - pv/view/header.cpp - pv/view/cursor.cpp - pv/view/analogsignal.cpp - pv/prop/binding/deviceoptions.cpp - pv/toolbars/trigbar.cpp - pv/toolbars/filebar.cpp - pv/dock/protocoldock.cpp - pv/dock/triggerdock.cpp - pv/dock/measuredock.cpp - pv/dock/searchdock.cpp - pv/toolbars/logobar.cpp - pv/data/groupsnapshot.cpp - pv/view/groupsignal.cpp - pv/data/group.cpp - pv/dialogs/about.cpp - pv/dialogs/search.cpp - pv/data/dsosnapshot.cpp + main.cpp + pv/sigsession.cpp + pv/mainwindow.cpp + pv/devicemanager.cpp + pv/data/snapshot.cpp + pv/data/signaldata.cpp + pv/data/logicsnapshot.cpp + pv/data/logic.cpp + pv/data/analogsnapshot.cpp + pv/data/analog.cpp + pv/dialogs/deviceoptions.cpp + pv/prop/property.cpp + pv/prop/int.cpp + pv/prop/enum.cpp + pv/prop/double.cpp + pv/prop/bool.cpp + pv/prop/binding/binding.cpp + pv/toolbars/samplingbar.cpp + pv/view/viewport.cpp + pv/view/view.cpp + pv/view/timemarker.cpp + pv/view/signal.cpp + pv/view/ruler.cpp + pv/view/logicsignal.cpp + pv/view/header.cpp + pv/view/cursor.cpp + pv/view/analogsignal.cpp + pv/prop/binding/deviceoptions.cpp + pv/toolbars/trigbar.cpp + pv/toolbars/filebar.cpp + pv/dock/protocoldock.cpp + pv/dock/triggerdock.cpp + pv/dock/measuredock.cpp + pv/dock/searchdock.cpp + pv/toolbars/logobar.cpp + pv/data/groupsnapshot.cpp + pv/view/groupsignal.cpp + pv/data/group.cpp + pv/dialogs/about.cpp + pv/dialogs/search.cpp + pv/data/dsosnapshot.cpp pv/data/dso.cpp - pv/view/dsosignal.cpp - pv/view/dsldial.cpp - pv/dock/dsotriggerdock.cpp - pv/view/trace.cpp - pv/view/selectableitem.cpp - pv/data/decoderstack.cpp - pv/data/decode/rowdata.cpp - pv/data/decode/row.cpp - pv/data/decode/decoder.cpp - pv/data/decode/annotation.cpp - pv/view/decodetrace.cpp - pv/prop/binding/decoderoptions.cpp - pv/widgets/fakelineedit.cpp - pv/widgets/decodermenu.cpp - pv/widgets/decodergroupbox.cpp - pv/prop/string.cpp - pv/device/sessionfile.cpp - pv/device/inputfile.cpp - pv/device/file.cpp - pv/device/devinst.cpp - pv/dialogs/storeprogress.cpp - pv/storesession.cpp - pv/view/devmode.cpp - pv/device/device.cpp - pv/dialogs/waitingdialog.cpp - pv/dialogs/dsomeasure.cpp - pv/dialogs/calibration.cpp - pv/data/decodermodel.cpp - pv/dialogs/protocollist.cpp - pv/dialogs/protocolexp.cpp - pv/dialogs/fftoptions.cpp - pv/data/mathstack.cpp - pv/view/mathtrace.cpp - dsapplication.cpp - pv/widgets/viewstatus.cpp - pv/toolbars/titlebar.cpp - pv/mainframe.cpp - pv/widgets/border.cpp - pv/dialogs/dsmessagebox.cpp - pv/dialogs/shadow.cpp + pv/view/dsosignal.cpp + pv/view/dsldial.cpp + pv/dock/dsotriggerdock.cpp + pv/view/trace.cpp + pv/view/selectableitem.cpp + pv/data/decoderstack.cpp + pv/data/decode/rowdata.cpp + pv/data/decode/row.cpp + pv/data/decode/decoder.cpp + pv/data/decode/annotation.cpp + pv/view/decodetrace.cpp + pv/prop/binding/decoderoptions.cpp + pv/widgets/fakelineedit.cpp + pv/widgets/decodermenu.cpp + pv/widgets/decodergroupbox.cpp + pv/prop/string.cpp + pv/device/sessionfile.cpp + pv/device/inputfile.cpp + pv/device/file.cpp + pv/device/devinst.cpp + pv/dialogs/storeprogress.cpp + pv/storesession.cpp + pv/view/devmode.cpp + pv/device/device.cpp + pv/dialogs/waitingdialog.cpp + pv/dialogs/dsomeasure.cpp + pv/dialogs/calibration.cpp + pv/data/decodermodel.cpp + pv/dialogs/protocollist.cpp + pv/dialogs/protocolexp.cpp + pv/dialogs/fftoptions.cpp + pv/data/mathstack.cpp + pv/view/mathtrace.cpp + dsapplication.cpp + pv/toolbars/titlebar.cpp + pv/mainframe.cpp + pv/widgets/border.cpp + pv/dialogs/dsmessagebox.cpp + pv/dialogs/shadow.cpp pv/dialogs/dsdialog.cpp pv/dialogs/interval.cpp pv/prop/binding/probeoptions.cpp + pv/view/viewstatus.cpp + pv/dialogs/lissajousoptions.cpp + pv/view/lissajoustrace.cpp + pv/view/spectrumtrace.cpp + pv/data/spectrumstack.cpp + pv/dialogs/mathoptions.cpp + pv/dialogs/regionoptions.cpp + pv/view/xcursor.cpp ) set(DSView_HEADERS - pv/sigsession.h + pv/sigsession.h pv/mainwindow.h pv/dialogs/deviceoptions.h pv/prop/property.h @@ -254,7 +261,7 @@ set(DSView_HEADERS pv/dialogs/fftoptions.h pv/data/mathstack.h pv/view/mathtrace.h - pv/widgets/viewstatus.h + pv/view/viewstatus.h pv/toolbars/titlebar.h pv/mainframe.h pv/widgets/border.h @@ -262,6 +269,17 @@ set(DSView_HEADERS pv/dialogs/shadow.h pv/dialogs/dsdialog.h pv/dialogs/interval.h + pv/dialogs/lissajousoptions.h + pv/view/lissajoustrace.h + pv/view/spectrumtrace.h + pv/data/spectrumstack.h + pv/dialogs/mathoptions.h + pv/dialogs/regionoptions.h + pv/view/xcursor.h + pv/view/signal.h + pv/view/logicsignal.h + pv/view/analogsignal.h + pv/view/dsosignal.h ) set(DSView_FORMS @@ -269,7 +287,8 @@ set(DSView_FORMS set(DSView_RESOURCES DSView.qrc - darkstyle/style.qrc + themes/breeze.qrc + languages/language.qrc ) if(ENABLE_DECODE) @@ -401,8 +420,10 @@ set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_ install(TARGETS ${PROJECT_NAME} DESTINATION bin/) install(DIRECTORY res DESTINATION share/${PROJECT_NAME}) install(FILES icons/logo.png DESTINATION share/${PROJECT_NAME} RENAME logo.png) -install(FILES ../NEWS DESTINATION share/${PROJECT_NAME} RENAME NEWS) -install(FILES ../ug.pdf DESTINATION share/${PROJECT_NAME} RENAME ug.pdf) +install(FILES ../NEWS25 DESTINATION share/${PROJECT_NAME} RENAME NEWS25) +install(FILES ../NEWS31 DESTINATION share/${PROJECT_NAME} RENAME NEWS31) +install(FILES ../ug25.pdf DESTINATION share/${PROJECT_NAME} RENAME ug25.pdf) +install(FILES ../ug31.pdf DESTINATION share/${PROJECT_NAME} RENAME ug31.pdf) install(FILES DreamSourceLab.rules DESTINATION /etc/udev/rules.d/) install(FILES DSView.desktop DESTINATION /usr/share/applications/) diff --git a/DSView/COPYING b/DSView/COPYING old mode 100644 new mode 100755 diff --git a/DSView/DSView.desktop b/DSView/DSView.desktop old mode 100644 new mode 100755 diff --git a/DSView/DSView.qrc b/DSView/DSView.qrc old mode 100644 new mode 100755 index 5425963..a50ef6b --- a/DSView/DSView.qrc +++ b/DSView/DSView.qrc @@ -1,71 +1,137 @@ - icons/search.png - icons/next.png - icons/pre.png - icons/file.png - icons/save.png - icons/open.png - icons/params.png - stylesheet.qss - icons/down-arrow.png - icons/slider-handle.png - icons/trigger.png - icons/measure.png - icons/search-bar.png - icons/protocol.png - icons/logo_noColor.png - icons/logo_color.png - icons/capture.png - icons/stop.png - icons/start.png - icons/dsl_logo.png - icons/logo.png - icons/hidden.png - icons/shown.png - icons/instant.png - icons/trigger_dis.png - icons/file_dis.png - icons/measure_dis.png - icons/protocol_dis.png - icons/search-bar_dis.png - icons/params_dis.png - icons/gear.png - icons/wait.gif - icons/instant_dis.png - icons/start_dis.png - icons/settings.png - darkstyle/style.qss - icons/export.png - icons/single.png - icons/single_dis.png - icons/math.png - icons/math_dis.png - icons/fft.png icons/Blackman.png + icons/dsl_logo.png icons/Flat_top.png icons/Hamming.png icons/Hann.png + icons/logo.png icons/Rectangle.png - icons/close.png - icons/maximize.png - icons/minimize.png - icons/restore.png - icons/nav.png - icons/oneloop.png - icons/repeat.png - icons/moder.png - icons/moder_dis.png - icons/modes.png - icons/modes_dis.png - icons/add.png - icons/del.png - icons/add_dis.png - icons/del_dis.png - icons/about.png - icons/manual.png - icons/bug.png - icons/support.png - icons/showDoc.png + icons/search.png + icons/dark/about.png + icons/dark/add.png + icons/dark/bug.png + icons/dark/capture.png + icons/dark/close.png + icons/dark/dark.png + icons/dark/del.png + icons/dark/display.png + icons/dark/down-arrow.png + icons/dark/export.png + icons/dark/fft.png + icons/dark/file.png + icons/dark/gear.png + icons/dark/hidden.png + icons/dark/instant.png + icons/dark/light.png + icons/dark/logo_color.png + icons/dark/logo_noColor.png + icons/dark/manual.png + icons/dark/maximize.png + icons/dark/measure.png + icons/dark/minimize.png + icons/dark/moder.png + icons/dark/modes.png + icons/dark/nav.png + icons/dark/next.png + icons/dark/oneloop.png + icons/dark/open.png + icons/dark/params.png + icons/dark/pre.png + icons/dark/protocol.png + icons/dark/repeat.png + icons/dark/restore.png + icons/dark/save.png + icons/dark/search.png + icons/dark/search-bar.png + icons/dark/shown.png + icons/dark/single.png + icons/dark/start.png + icons/dark/stop.png + icons/dark/support.png + icons/dark/trigger.png + icons/light/about.png + icons/light/add.png + icons/light/bug.png + icons/light/capture.png + icons/light/close.png + icons/light/dark.png + icons/light/del.png + icons/light/display.png + icons/light/down-arrow.png + icons/light/export.png + icons/light/fft.png + icons/light/file.png + icons/light/gear.png + icons/light/hidden.png + icons/light/instant.png + icons/light/light.png + icons/light/logo_color.png + icons/light/logo_noColor.png + icons/light/manual.png + icons/light/maximize.png + icons/light/measure.png + icons/light/minimize.png + icons/light/moder.png + icons/light/modes.png + icons/light/nav.png + icons/light/next.png + icons/light/oneloop.png + icons/light/open.png + icons/light/params.png + icons/light/pre.png + icons/light/protocol.png + icons/light/repeat.png + icons/light/restore.png + icons/light/save.png + icons/light/search.png + icons/light/search-bar.png + icons/light/shown.png + icons/light/single.png + icons/light/start.png + icons/light/stop.png + icons/light/support.png + icons/light/trigger.png + icons/mAmplitude.png + icons/mBurst.png + icons/mDelay.png + icons/mFall.png + icons/mFreq.png + icons/mHigh.png + icons/mLow.png + icons/mMax.png + icons/mMean.png + icons/mMin.png + icons/mNduty.png + icons/mNover.png + icons/mNwidth.png + icons/mPcount.png + icons/mPduty.png + icons/mPeriod.png + icons/mPover.png + icons/mPwidth.png + icons/mRise.png + icons/mRms.png + icons/mVpp.png + icons/light/lissajous.png + icons/dark/lissajous.png + icons/light/function.png + icons/dark/function.png + icons/light/math.png + icons/dark/math.png + icons/math.png + icons/Chinese.png + icons/English.png + icons/lissajous.png + icons/light/wait.gif + icons/dark/wait.gif + icons/light/daq.png + icons/light/la.png + icons/light/osc.png + icons/dark/daq.png + icons/dark/la.png + icons/dark/osc.png + icons/showDoc25.png + icons/showDoc31.png diff --git a/DSView/DreamSourceLab.rules b/DSView/DreamSourceLab.rules old mode 100644 new mode 100755 diff --git a/DSView/INSTALL b/DSView/INSTALL old mode 100644 new mode 100755 index 9b20e3a..bb41a59 --- a/DSView/INSTALL +++ b/DSView/INSTALL @@ -1,49 +1,49 @@ -------------------------------------------------------------------------------- -INSTALL -------------------------------------------------------------------------------- - -Requirements ------------- - - - git - - g++ - - make - - libtool - - pkg-config >= 0.22 - - cmake >= 2.6 - - libglib >= 2.28.0 - - Qt >= 4.5 - - libboost >= 1.42 (including the following libs): - - libboost-system - - libboost-thread - - libsigrok4DSL >= 0.2.0 - - -Building and installing ------------------------ -Get the DSView source code from: www.dreamsourcelab.com/download.html -In order to build it, run: - - $ cd DSView - $ cmake . - $ make - -For installing PulseView: - - $ make install - -See the following wiki page for more (OS-specific) instructions: - - http://sigrok.org/wiki/Building - - -Creating a source distribution package --------------------------------------- - -In order to build a source package begin with an unconfigured source tree. - - $ mkdir dist - $ cd dist - $ cmake .. - $ make package_source - +------------------------------------------------------------------------------- +INSTALL +------------------------------------------------------------------------------- + +Requirements +------------ + + - git + - g++ + - make + - libtool + - pkg-config >= 0.22 + - cmake >= 2.6 + - libglib >= 2.28.0 + - Qt >= 4.5 + - libboost >= 1.42 (including the following libs): + - libboost-system + - libboost-thread + - libsigrok4DSL >= 0.2.0 + + +Building and installing +----------------------- +Get the DSView source code from: www.dreamsourcelab.com/download.html +In order to build it, run: + + $ cd DSView + $ cmake . + $ make + +For installing PulseView: + + $ make install + +See the following wiki page for more (OS-specific) instructions: + + http://sigrok.org/wiki/Building + + +Creating a source distribution package +-------------------------------------- + +In order to build a source package begin with an unconfigured source tree. + + $ mkdir dist + $ cd dist + $ cmake .. + $ make package_source + diff --git a/DSView/NEWS b/DSView/NEWS old mode 100644 new mode 100755 index e7c2c79..dbbe970 --- a/DSView/NEWS +++ b/DSView/NEWS @@ -1,5 +1,5 @@ -0.1.0 (2013-12-15) ------------------- - - * Initial release. - +0.1.0 (2013-12-15) +------------------ + + * Initial release. + diff --git a/DSView/README b/DSView/README old mode 100644 new mode 100755 diff --git a/DSView/config.h.in b/DSView/config.h.in old mode 100644 new mode 100755 diff --git a/DSView/darkstyle/rc/branch_closed-on.png b/DSView/darkstyle/rc/branch_closed-on.png deleted file mode 100755 index d081e9b3b90d774450a8ea48f1184019e33a755a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq?nSt-CYAmd+F5V%0wNv=peG!PC{xWt~$(69A|)Be?(o diff --git a/DSView/darkstyle/rc/branch_closed.png b/DSView/darkstyle/rc/branch_closed.png deleted file mode 100755 index d652159a365396a046329cfc7695c89ee54431ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S90ZA8lL>4nJ za0`PlBg3pY5H=O_B-6{JiOAS{|sjWh15M=978y+r}k{*WnkcFe(-;BX~D)* rS0)5haD*y~YzrxP=F!`JhM)Jr2M#8aN7~DQS{OWC{an^LB{Ts5zf35P diff --git a/DSView/darkstyle/rc/branch_open.png b/DSView/darkstyle/rc/branch_open.png deleted file mode 100755 index 66f8e1ac619d242f3d5a31ffb11291c09ea40468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>w z1e^Sc1@brxJR*x37`TN&n2}-D90{Nxdx@v7EBhS|ac*foG2iHXppcfQi(?4K_2h&D z3_UzN#dZqZOE?US3>3JRaTpjFIL#0^D8eWr9I$mUBg3(s>=R~}U&3=E8!o-U3d z5v^~hTl*b$5NO-KaZ$^2My7CvC3jk<^u2WvDUf$c)s+rzv%V1E9{A4TMP-Z4lZ6F6 zJvyqaW~@Kfmu*$9pTBmh4fB87Nq1MQib$?;e-iXiZ<}* z4@CWD;9;1v<$&N$mS=`@#Ch2ZV#{}RJvQ4QaCNnQ-mU-(MmI+R8*yI$%dfxAYY;s7 z_m>{S8>aWE2aPM4zg_apbyj4!CUG}xvu2#YiDkvbx1hxrj-4fv9WXW}Qu2zs*=;EB~B@C9lD4Pt3jc#EK9uo4$63*ah<+ zss)BhMo2G`V&I;1@X1nvU9S{R&b}_{bpE^krGqN=vm#%w`~A&$lHbmbGYy8TuE%Y! g4!>ah-@}e^jYL&g^Ys^bz?fn1boFyt=akR{0GqMPK>z>% diff --git a/DSView/darkstyle/rc/checkbox_checked_disabled.png b/DSView/darkstyle/rc/checkbox_checked_disabled.png deleted file mode 100755 index cb63cc2fac47ad304451f864be5fb9b9085910ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E7Jo-U3d z5v^~h`}!SnkZ7B~UO?mu^MY^z;cfGr%T7e}s1?W?8ZIpHm|nqi{YV9S;d_3jiRW9V zC@j#CiOINs*XRD1%4NQnC4ao1_;X|a8O{J^t^>=I&uJH^EA=Yy=q@QJXMe6{= z3nu?QmTiqn8yL4lU7L4ID46lSggggJ-lhEfrK>ewSvD~j#OXbEpLgByNx%V?Yugz2 z%=F`x=yC0fIn20j(F*mKC7cqgJZ$I97rnv0D^bF3N854ErU!Bp^;Wf}GDU{OUt^u0 zW>d#j^wD7Ns`t{1S6kg*n)>$7^lzH?%EjxII~|lJaHueWsWo@_*Zi9Q-(<7@f_{&8 zrO0b9HEPU+9v)SBw)%l|Fntmmjz{W9#jS ei>v=l+`}wZn5FJg^3NX_F$|urelF{r5}E*p0K`TB diff --git a/DSView/darkstyle/rc/checkbox_checked_focus.png b/DSView/darkstyle/rc/checkbox_checked_focus.png deleted file mode 100755 index 3cf0e54059775600a8e836deedb6554ad585602d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E95o-U3d z5v^~hTl+BuinQ%-*02*_kmu;@QQ-Ph!-_?_db92FFvpMeB=MVEo(xKo_I3NC6zZ(=0&OIbJ3?_Dc8N+ z`UNkRF^0~(c}{-iCWbwnBBHfL%CQq1TMY!5EVl?<6pdb_n6PC1bXH4-y)I3~VM;~s z-FEcO)Z|&b)i}Xx>d_pnIwpaPh*fJC^JCvPMs7dMxW?tlzPPpL7)1rIz5Uz9aA=0Z z$0X%%56X6&eY&iWU8M128RLuKijP`*I@1^2k7JqZH~ZxrtGO>*ruKL*uUZiN(fk8z z4P*QPaR{|hzTnsSdauviQq3^Yy%*$?9v7vi2H2P(8128Bb|(G4PNvN{@ZTf(3sn_sOi&WJR5%589C1Db zhCs&)0xKfAB%rDi8*{57O<)4_5qWijS3LmgKot?w^!;`wQO?#_V**LxkEL?C;d$Q3 z34D<_j%&$$-a|FC);<7TfKs-gBytH%5;%7a2k<;^G*6NSFcsCSFK#waI05=$7(Tm( zXKA)Hc7gXz!E<>7_ErgOC56D&1`2f;J-djcl1whQ1*)tmxvW08H=aDaB2-ihxwfOi!+%lfAUc7T48B=@f2S)wSqMWl~v zZI(b4)#rJ^CmD~QfYn(73rQ)kZ~?z)ATUOY#(t96+Wf5x{DKuI1xkTZpzt0jI=8N~ z@D(TpewDxrBCCa!&WPR`@bXPS;RdLmG@G0AVz*kYZB*;P;G2LaatSOCE0wD-47cV1 zuZZ-3B^9~I`tuKy4iEtEUw^L;PUs>VUo&4)=p@!2lYf|GrJ*qgDsqPEE>LwM@VVy$ iRL|pXH+A&QKavmPo@ys59Ed6a0000i!=8^7%l^QFXfZK^@uS4j^DKMqVLM}aV4B)FR`rf|z!UHUJOS5t!0q0ePRBdo3H&O7iZuLG+L(Tz(n3IQ6(aHMb*NqB$;`zt z5D~a>3aD=v2%sNl)0?@WcEEe+ItBbS(H*J*S9_pKz#C8keK3QULB0kPzrtQF z6~}U&3=E9Eo-U3d z5v^~hTl*b$5Mg-k8hGeCL!&lB&^xD7y>BB#3gn$qXZC6ymd#kPSfgCwOO2D=r^N+5 zJw7|dgetV6qbk!>#or&Sckj|)rDfLlx9!BzLz){NpZKh3z}$B1``V5SO@~m`&d1TB zFPXg)nog`1-usI20_&}gBemzbKX;_n9XqyBf99W!7jwS#7#6F4()FBFa_MYZPgcU( zS_U_U-aih`PlO_t6}*e$OX!)Ie`yQ*8keuHPS3X2n8Pqxfn#3m>Ec5MHB4$L|F3^% zND!}B?-loe_r`C{2jMH2Uo}`Q;Db^cY&se~TB4iwmri9$b1?Uu;sB%_cFATAov~jhym_YEdgAln?ixeQ z^=a2;y}eWCW~RA2fzc;$?>Dw)YxnzqlxvtK94R$eY;o}lF!UKbUHx3vIVCg!09=m0 AT>t<8 diff --git a/DSView/darkstyle/rc/checkbox_unchecked_disabled.png b/DSView/darkstyle/rc/checkbox_unchecked_disabled.png deleted file mode 100755 index ade721e81ba47fa792d4586516b8744f8c49c8bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)z3Xli7-6*p9aNvlr>Itd;TFIVxd-y|OyrCsEBb@QA; zCyb(7HXkO*sBg@biZoF@2MSgIU*CL)>Rq?ji!Gh`NAd|iaAZN1hu>)c0000utO4E zgALe-72aZrdoVd*6iH49dk}js2nb`Lhd`h_#6-{6{ZstkQ_jGDkMzA%C6amA7L^2o zADFbM=L4k*k~Q{2mx$;fKvmX`OBbqa0u2FE(N{a#1({I@03MKYBN^JU5M4kdeIFO( z477-h#f)UIW=FY|Xr}B#+j(F`m90W*=?cKrRjMR_hWpdCZg)9=kqp*4tyTKws0;$sbqaXU_RZ>1VQv)VWFU8GbZ8()Nlj2>E@cM*00Fv5L_t(|+U=WLk^&(N zMNQT>E=U)k3)21RpJh4PJd%48X!1Rk<{TbF5DteGD^~0|g!!@C>GY`iyW{mLQwXR9 zjuawUp;Cior+G8=rW1YKL<346a~6o?i6 z?{azNxS!7yQSaX@eYYe*y&Lw~I5fO96fyKs5_ zy6%Wq@1q*&nfKd*=(Y$VMgp?uA^!zDB{1N>P63ZikG1hg_|Ito*$P`m0;}iYwLp&q zHaxr-YLO5D|8EUI6+I<5HvIcKKq-fN*91m!MLQ2@g<(~e)B}-PC>A_jKn)xdK16_J zA27UtS~#Wz%?8hwpwaM*^Mp_VHSm!VAk|=R&oeeflxnaSCSoLLra2!WK{LTeNN_t8 zMa*IEe9%Kt!~(_`37Qq2CE;g++G)V5=dIuQ^&@G>nP7%|MFEzZSE$DJ=G|h^>^+ap zZ@wUrJxU{aU6H9xwr+_{8tbBDYw}%RmCY=Ic3C>3gpljWFU8GbZ8()Nlj2>E@cM*00Fv5L_t(|+U=WLk^&(N zMNJl_8_?B`8_ zy6%Wq@1q*&nfKd*=(Y$VMgp?uA^!zDB{1N>P63ZikG1hg_|Ito*$P`m0;}iYwLp&q zHaxr-YLO5D|8EUI6+I<5HvIcKKq-fN*91m!MLQ2@g<(~e)B}-PC>A_jKn)xdK16_J zA27UtS~#Wz%?8hwpwaM*^Mp_VHSm!VAk|=R&oeeflxnaSCSoLLra2!WK{LTeNN_t8 zMa*IEe9%Kt!~(_`37Qq2CE;g++G)V5=dIuQ^&@G>nP7%|MFEzZSE$DJ=G|h^>^+ap zZ@wUrJxU{aU6H9xwr+_{8tbBDYw}%RmCY=Ic3C>3gpljWFU8GbZ8()Nlj2>E@cM*00FK^L_t(|+U=W3lEWYj zMI&9@_Q}(`u2cpl>3<1~)?G61A!s1*ckDcfFZ2UV}LO?5Uq!7sp&5|Lr zfTKjnjPRZkWJYjL5i&cxRf5b8ZWSRb!H-Cg)!=(2=w1ph*!w+IAXfO}IR0~7*F_Qa z`pw#RYZBDEVegGY!&^fUrH_&@lDEd7sB!Nt!IH1UVjcpe@#iI>l*c;nh*$5U8tIw$ z+l1&g2_h;1+4GS90-h2W@Lz|3$D+sDcqIJ$Fn}zDEtSCPdH7ynL;@Qgz8UI~5CQ)& z2cR}RH8?i>>pVc&4v)?WjLjA8JfIhbwX>uih_phn;OPQd;F$0s0xau*=>@dHF(qg= zc(w$MhG(27gbHYZkCXt}4UYCaV^Kue4UWP@RDxz2^AQp>6MTdOw?k3H81~KwJrqSu zV2n!8tne%eQYe>aG`#0`e*H)qaweD|UsZtR<`t^3qj^g#n!V@I`OOz3vPZ3w_Z69r zWc!xbim@+B4kW+tRoToUXqTlkN(i|wpGAW8(Zqf-18CSiA59@;O!aKeLkRQXw z1e^Sc1@brxJR*x37`TN&n2}-D90{Nxdx@v7EBhS|ac(A-+!@lDKp{;}7sn8e>&XcR z7pulY;Wn^IBG(*7A%~?b^VC!N=hHC=sm-IdEdjT~uc)I$ztaD0e F0ssj2CNKa1 diff --git a/DSView/darkstyle/rc/down_arrow_disabled.png b/DSView/darkstyle/rc/down_arrow_disabled.png deleted file mode 100755 index 5805d9842bb3c8bdf9ae741ebabc690a4929585a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;vAyZcdU741BJ9aT^vI=t|uoP zVCdoDDYjGKUczBuWT3#kjKjddz-flSK@mm~;ef4+85xf4WSF7(8A5T-G@y GGywodVJqnX diff --git a/DSView/darkstyle/rc/left_arrow_disabled.png b/DSView/darkstyle/rc/left_arrow_disabled.png deleted file mode 100755 index f5b9af8a34edb5f8dd767bf6afa303b89a31d38f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S9bR`<_$&i(E==bj5a^zeU&bwdtch>=_qAH5C#I(A02SZ= z-pqyvve{!vh3V|K2(Z;?j0;|Hq>tJ+4>OtTGCRJHZF@ZOcP8^q5Cr`I<~ScB9o=p= z&m^6bC_rXoz*@WDo;`Hvf?xzGIc?G2OIwY`1pwD|f5YrH(7gbIoJl|JS(+dUbvmTb zB5r&Bqu`aU1z`4E`<=%)mdf9?a};sgxR2RT5LuX#bWVMU#oQ*xD``&)6vecw1(rnna}5U zBv}}JUU#-zt!rHi$mjDrIL<6^D(>w}Oik4Xve{RW-j%cpG=ZjI)y&=*IB?)K*LCj$ zRDHh$oRrzj^z?Kq>70&LUiJM2-~*uKdfs9uz9g&qe#y)}0Tx})E2Z%}7S+9tjgq8G zz(UpczpGZOFDG$V%H`Y_mC6rh_9@YK{BbA$PyEhTe19x7TSPh3(2no@8jnJ}d` zxvz`)Xu-@3Q@U%O-8ttu@B6#&eeXFJcD1YLUFyZ`x^CY1#GHEIZf^VJ)fa|)EWFnC_vkwH{ z6N%(XrPA_FUeEIm3uZ8T)68avQmNeZ^mN!MezY4vBl-Klxl+0Oc_(iW1WUkMr#lwA61mWP^6gmcikThUVXxDm7!9M*?_AgI18~gF z1H*|#;zYYVZ2=^WVYb|CxN5a}7PC=xsG2|quMNcGX92#vbZHT|j#=*jKpN?%*2wG> z^-_116auGOL$e=c_Il3%1~2LHcaC7B3vd(Eku=gAhHwvQuxEgJEbHl{+%bXUhz^zO z1aMzw`&uyYd#6AxNnr@rTl>rgF}wdX0Kb}a^ohVmh_EiNtnd~J1gWB9;< zQeQOsw@G^iF9MGY79E(`tkvF|pP&B+z|Uqc0A~cJFP2I-+U4om@B3+mVcy`Fr2H#G zLmzjg?Ph4o^Sm*c%>u*JKeMaA-Ny3E)PG1ufSZlmvu)!&6#&$4$V4J>LSZbzKz@!f0oC0-WJTPn`cd7ULmjdwV_3N>JR^Ch@Mu49r zCVw66Td3zdkjbBj1)9P*4P3cX>YXHML93IjD=*_uduhM&erA5G6hBV=)%fnc3m~BEWl@{B4tt ztd`<#qlM`-0yvyl9|GPAWS6&QUfFbRVmcmrXh+{#yQ{Lvk8ZNi2H*ttC2;gmqI|Yd zoQ445R%2mn!Idkk7eHNTm$C^1d#C+i`2s+0wCA40l0kF;P`9C9YGz>P!&L7sK>(cJ zvJHO5IQaqqye_O*vrO)P(_UW&4#?dBw8Hj*6$t<=+DTbAfSD0yB{IN60y=A!tk7x+ zB$l>qbpQ{e1Bl-Qr?x%yZL1|Pvuis(4FdVd0A`jowRK7YIx@0%MLSOM_T z{v9eyV!0jJMQ5GH-hRa(IFHQ_b9)Z?mKvFOmNmV*@!=&7gwT^7eV48y+tYIRCxlLiT(zip~u_E}K!eZQ1UCJ)XWpcn*qFv|mj2Hymm zGOGZ1&1OGlqk`+ej=|zgCiDDE0Kzalw_mH}fqMq8tl7*>&(3Zg z<=pb}a>SKCQhxe=1 zDZv#_S~^K`0Q0>2NJI5nZ6eAi5Q&W)Tj`Fao}46Y)*j1A!XehJuV&-U1oWX;y{+O9Vm8?gbB$>af^ zw*ZW{XL~Faoy!4ZGMk^9n`^`d07#`$FMw5G<+u=%tPliCX7&)sr_<@k@^=LQ*e#cH zlGcEH(Ye>fV(~_l?|Kj7Dkc) diff --git a/DSView/darkstyle/rc/radio_unchecked_disabled.png b/DSView/darkstyle/rc/radio_unchecked_disabled.png deleted file mode 100755 index 6ece890e750b0685bbd818f22e5fbf999ccd35e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmV6Hyq3pRX0tGI#@4O=(z(ra$opASN0&l!V!~ zGsFupMi4Yn7A{E9xN<|Zbl8%Z;>x%YH!O_WHWI)PKm&#gz*M7gJ{PpnM5bj5JNs=u!`ga zdVmk2x~L*MwQ&UK2QB~`Dl%3m6rLT6fN7e+lZKH~)f)mY2nNUV`F!P|tYujVfhklk ztLk(#78{?OoOB!Qf1;T{t^7JLns=NBjk1M8p$uFZv8+*G>eJ>Xz*wU-!A3(nlNkmc z35?D<&ckN1bxP&(QZkYFE+Y35$z-KmF0XlIJs*K-nw{NUU8}&yS;x70*z&)zv)PwG z&(~_T&+A|YycTzd!$Uw!g29Pa$^inZw}4*5Fa|v{UIP(HqgwGgaEIaP+*}D*M%BLn zkV52jtL1e>^_8ez^ev!pO8&g(E#tx$L?XTg094i2O?hBJARzl5{sneL_4H8%R5gO? zZYu(BRiyu@0>FU48{Yx~Mc}+;S&3GgZQD)(=Mi(Ony70 zgw)FKi^z1|aUM4cH~kt$W3lniTU)BCIV+pJ6jU9r-EjY4+jdG^H>WTlBDu5C=s2S%SwytG|&qy1B<|RZG49PACf*`UEpTkaXb%RO9HU}g)|IfP+T{SND8Rm6FUm; qM77uv3N6gc%>4ATZ<{v%H@^W&H{IQg@q%gq0000YQ` z_uPBWJ)m8c*^W17=e(1L&RVkWoSZjh=e!d;=Vi`|J+lJUvcDE2>BeJo^#W9K zy=jzJ2ouYbgLz|sNV?d1?dri-LBF~2dyh=aPxZhlEQ)H+&+?T>(8aWZk~_nP6TmHB zWu_5x0LzzWKyOF*U@R~uXrc1d*bKUG^~g;OY^bs&U=9Ep74&1H=BE<)fY9Fn0M`{M zT@*lJm%k0m2mr*aQ`R&P5g@P^oCUClPxnOu6zu}`%mI{73d0u#07igV9xQY9L<%fFafwWq7xbPBT8dwyy zQf^{kqgJTxtVXM49}ywr{)#<6?>jaaNW5{BEYPdUmIzA--vLl=Pb=8xK17S1~JrkZN%U;P2o9NB+fxiifG0000~P diff --git a/DSView/darkstyle/rc/right_arrow.png b/DSView/darkstyle/rc/right_arrow.png deleted file mode 100755 index 9b0a4e6a7a8097818d9c0626c84f19f4d690dd31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S9wUkJ;l%oZHT?}(3D>Wp7T%b9XV|~Y(T_!;F44$rjF6*2UngIS-C?Eg; diff --git a/DSView/darkstyle/rc/sizegrip.png b/DSView/darkstyle/rc/sizegrip.png deleted file mode 100755 index 350583aaac4aa474ac449eaea2cc7ddd060276b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0A8dZe4lyHC-T!u_VYZ zn8D%MjWi%f)6>Nz(!sM1rC-2ha+zM<2rMwpeI*@Z@PO%TWH}e*?iSqXK(y9 XcW6R37#&FAr-gY z-rUH`puoZ4SQyZj9Qd}kRkgExspwA+*PdmovgYQ`l$1@M%Pi(EdF8VmvF&CX@A%e}M=bpY`_UHx3vIVCg!0H#+y$^ZZW diff --git a/DSView/darkstyle/rc/stylesheet-branch-more.png b/DSView/darkstyle/rc/stylesheet-branch-more.png deleted file mode 100755 index 62711409d7ed69ec98979394795822630458d9eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^5PiX%b9eR9<JS%C8jVk7;fc! UBk#RM6lem2r>mdKI;Vst0ANBkrT_o{ diff --git a/DSView/darkstyle/rc/stylesheet-vline.png b/DSView/darkstyle/rc/stylesheet-vline.png deleted file mode 100755 index 87536cce16aabb3710663f720f8d354b1bb0b757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^fk14@;zM~Ln>~) zy|9s&!GMF=@x%h2gO1`OFspnaH4_oY}#FfpL8m Q-wTkir>mdKI;Vst0J6j{!2kdN diff --git a/DSView/darkstyle/rc/undock.png b/DSView/darkstyle/rc/undock.png deleted file mode 100755 index 88691d779507c9b809391396407f5cb4a6497c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)WFU8GbZ8()Nlj2>E@cM*00E{+L_t(|+U=X$4#OY} zLz`&--S*43w`rPoNlWaQLS8pfd~hg*uq-oX%osV0`LJ!+SPR{}9r(JUC& zi*OVO>rs3r1nW_FCJ5_Yd@BU&U3e=9yOQ`b5bSE=k3zUrc5+?UXD9c4F9B>-qyH)% z1tH=BQxRVU!7FWl=67leWRLz4ahXo| zoe{&T7oZ-FMxDSsBBvjZ{}acq6e%f?_~rzJ_LzyflS`(bcuN3?R&llQTw-2U8((=NC3B QV*mgE07*qoM6N<$f{lRZzyJUM diff --git a/DSView/darkstyle/rc/up_arrow.png b/DSView/darkstyle/rc/up_arrow.png deleted file mode 100755 index abcc7245212f19a5dbff1bb19647b1dd4bb05b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;vAy| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;v6FKKb3EC1BH}5T^vI=t|uoP z;C)upuu) - - rc/up_arrow_disabled.png - rc/stylesheet-branch-end.png - rc/branch_closed-on.png - rc/stylesheet-vline.png - rc/branch_closed.png - rc/branch_open-on.png - rc/transparent.png - rc/right_arrow_disabled.png - rc/sizegrip.png - rc/close.png - rc/close-hover.png - rc/close-pressed.png - rc/down_arrow.png - rc/left_arrow.png - rc/stylesheet-branch-more.png - rc/up_arrow.png - rc/right_arrow.png - rc/left_arrow_disabled.png - rc/branch_open.png - rc/down_arrow_disabled.png - rc/undock.png - rc/checkbox_checked_disabled.png - rc/checkbox_checked_focus.png - rc/checkbox_checked.png - rc/checkbox_indeterminate.png - rc/checkbox_indeterminate_focus.png - rc/checkbox_unchecked_disabled.png - rc/checkbox_unchecked_focus.png - rc/checkbox_unchecked.png - rc/radio_checked_disabled.png - rc/radio_checked_focus.png - rc/radio_checked.png - rc/radio_unchecked_disabled.png - rc/radio_unchecked_focus.png - rc/radio_unchecked.png - - - style.qss - - diff --git a/DSView/darkstyle/style.qss b/DSView/darkstyle/style.qss deleted file mode 100755 index 28636f4..0000000 --- a/DSView/darkstyle/style.qss +++ /dev/null @@ -1,1302 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) <2013-2014> - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -QProgressBar:horizontal { - border: 1px solid #3A3939; - text-align: center; - padding: 1px; - background: #201F1F; -} -QProgressBar::chunk:horizontal { - background-color: qlineargradient(spread:reflect, x1:1, y1:0.545, x2:1, y2:0, stop:0 rgba(28, 66, 111, 255), stop:1 rgba(37, 87, 146, 255)); -} - -QToolTip -{ - border: 1px solid #3A3939; - background-color: rgb(90, 102, 117);; - color: white; - padding: 1px; - opacity: 200; -} - -QWidget -{ - color: silver; - background-color: #302F2F; - selection-background-color:#3d8ec9; - selection-color: black; - background-clip: border; - border-image: none; - outline: 0; -} - -QWidget:item:hover -{ - background-color: #78879b; - color: black; -} - -QWidget:item:selected -{ - background-color: #3d8ec9; -} - -QCheckBox -{ - spacing: 0px; - outline: none; - color: #bbb; - margin-bottom: 2px; -} - -QCheckBox:disabled -{ - color: #777777; -} -QCheckBox::indicator, -QGroupBox::indicator -{ - width: 18px; - height: 18px; -} -QGroupBox::indicator -{ - margin-left: 2px; -} - -QCheckBox::indicator:unchecked, -QCheckBox::indicator:unchecked:hover, -QGroupBox::indicator:unchecked, -QGroupBox::indicator:unchecked:hover -{ - image: url(:/qss_icons/rc/checkbox_unchecked.png); -} - -QCheckBox::indicator:unchecked:focus, -QCheckBox::indicator:unchecked:pressed, -QGroupBox::indicator:unchecked:focus, -QGroupBox::indicator:unchecked:pressed -{ - border: none; - image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); -} - -QCheckBox::indicator:checked, -QCheckBox::indicator:checked:hover, -QGroupBox::indicator:checked, -QGroupBox::indicator:checked:hover -{ - image: url(:/qss_icons/rc/checkbox_checked.png); -} - -QCheckBox::indicator:checked:focus, -QCheckBox::indicator:checked:pressed, -QGroupBox::indicator:checked:focus, -QGroupBox::indicator:checked:pressed -{ - border: none; - image: url(:/qss_icons/rc/checkbox_checked_focus.png); -} - -QCheckBox::indicator:indeterminate, -QCheckBox::indicator:indeterminate:hover, -QCheckBox::indicator:indeterminate:pressed -QGroupBox::indicator:indeterminate, -QGroupBox::indicator:indeterminate:hover, -QGroupBox::indicator:indeterminate:pressed -{ - image: url(:/qss_icons/rc/checkbox_indeterminate.png); -} - -QCheckBox::indicator:indeterminate:focus, -QGroupBox::indicator:indeterminate:focus -{ - image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); -} - -QCheckBox::indicator:checked:disabled, -QGroupBox::indicator:checked:disabled -{ - image: url(:/qss_icons/rc/checkbox_checked_disabled.png); -} - -QCheckBox::indicator:unchecked:disabled, -QGroupBox::indicator:unchecked:disabled -{ - image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); -} - -QRadioButton -{ - spacing: 5px; - outline: none; - color: #bbb; - margin-bottom: 2px; -} - -QRadioButton:disabled -{ - color: #777777; -} -QRadioButton::indicator -{ - width: 21px; - height: 21px; -} - -QRadioButton::indicator:unchecked, -QRadioButton::indicator:unchecked:hover -{ - image: url(:/qss_icons/rc/radio_unchecked.png); -} - -QRadioButton::indicator:unchecked:focus, -QRadioButton::indicator:unchecked:pressed -{ - border: none; - outline: none; - image: url(:/qss_icons/rc/radio_unchecked_focus.png); -} - -QRadioButton::indicator:checked, -QRadioButton::indicator:checked:hover -{ - border: none; - outline: none; - image: url(:/qss_icons/rc/radio_checked.png); -} - -QRadioButton::indicator:checked:focus, -QRadioButton::indicato::menu-arrowr:checked:pressed -{ - border: none; - outline: none; - image: url(:/qss_icons/rc/radio_checked_focus.png); -} - -QRadioButton::indicator:indeterminate, -QRadioButton::indicator:indeterminate:hover, -QRadioButton::indicator:indeterminate:pressed -{ - image: url(:/qss_icons/rc/radio_indeterminate.png); -} - -QRadioButton::indicator:checked:disabled -{ - outline: none; - image: url(:/qss_icons/rc/radio_checked_disabled.png); -} - -QRadioButton::indicator:unchecked:disabled -{ - image: url(:/qss_icons/rc/radio_unchecked_disabled.png); -} - - -QMenuBar -{ - background-color: #302F2F; - color: silver; -} - -QMenuBar::item -{ - background: transparent; -} - -QMenuBar::item:selected -{ - background: transparent; - border: 1px solid #3A3939; -} - -QMenuBar::item:pressed -{ - border: 1px solid #3A3939; - background-color: #3d8ec9; - color: black; - margin-bottom:-1px; - padding-bottom:1px; -} - -QMenu -{ - border: 1px solid #3A3939; - color: silver; - margin: 0px; -} - -QMenu::item -{ - padding: 5px 30px 5px 30px; - margin-left: 2px; - border: 1px solid transparent; /* reserve space for selection border */ -} - -QMenu::item:selected -{ - color: black; -} - -QMenu::separator { - height: 2px; - background: lightblue; - margin-left: 10px; - margin-right: 5px; -} - -QMenu::indicator { - width: 18px; - height: 18px; -} - -/* non-exclusive indicator = check box style indicator - (see QActionGroup::setExclusive) */ -QMenu::indicator:non-exclusive:unchecked { - image: url(:/qss_icons/rc/checkbox_unchecked.png); -} - -QMenu::indicator:non-exclusive:unchecked:selected { - image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); -} - -QMenu::indicator:non-exclusive:checked { - image: url(:/qss_icons/rc/checkbox_checked.png); -} - -QMenu::indicator:non-exclusive:checked:selected { - image: url(:/qss_icons/rc/checkbox_checked_disabled.png); -} - -/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ -QMenu::indicator:exclusive:unchecked { - image: url(:/qss_icons/rc/radio_unchecked.png); -} - -QMenu::indicator:exclusive:unchecked:selected { - image: url(:/qss_icons/rc/radio_unchecked_disabled.png); -} - -QMenu::indicator:exclusive:checked { - image: url(:/qss_icons/rc/radio_checked.png); -} - -QMenu::indicator:exclusive:checked:selected { - image: url(:/qss_icons/rc/radio_checked_disabled.png); -} - -QMenu::right-arrow { - margin: 5px; - image: url(:/qss_icons/rc/right_arrow.png) -} - - -QWidget:disabled -{ - color: #404040; - background-color: #302F2F; -} - -QAbstractItemView -{ - alternate-background-color: #3A3939; - color: silver; - border: 1px solid 3A3939; - border-radius: 2px; - padding: 1px; -} - -QTabWidget:focus, QCheckBox:focus, QRadioButton:focus, QSlider:focus -{ - border: none; -} - -QLineEdit -{ - background-color: #201F1F; - padding: 2px; - border-style: solid; - border: 1px solid #3A3939; - border-radius: 2px; - color: silver; -} - -QGroupBox { - border:1px solid #3A3939; - border-radius: 2px; - margin-top: 20px; -} - -QGroupBox::title { - subcontrol-origin: margin; - subcontrol-position: top center; - padding-left: 10px; - padding-right: 10px; - padding-top: 10px; -} - -QScrollBar:horizontal -{ - height: 15px; - margin: 3px 15px 3px 15px; - border: 1px transparent #2A2929; - border-radius: 4px; - background-color: #2A2929; -} - -QScrollBar::handle:horizontal -{ - background-color: #605F5F; - min-width: 15px; - border-radius: 4px; -} - -QScrollBar::add-line:horizontal -{ - margin: 0px 3px 0px 3px; - border-image: url(:/qss_icons/rc/right_arrow_disabled.png); - width: 10px; - height: 10px; - subcontrol-position: right; - subcontrol-origin: margin; -} - -QScrollBar::sub-line:horizontal -{ - margin: 0px 3px 0px 3px; - border-image: url(:/qss_icons/rc/left_arrow_disabled.png); - height: 10px; - width: 10px; - subcontrol-position: left; - subcontrol-origin: margin; -} - -QScrollBar::add-line:horizontal:hover,QScrollBar::add-line:horizontal:on -{ - border-image: url(:/qss_icons/rc/right_arrow.png); - height: 10px; - width: 10px; - subcontrol-position: right; - subcontrol-origin: margin; -} - - -QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on -{ - border-image: url(:/qss_icons/rc/left_arrow.png); - height: 10px; - width: 10px; - subcontrol-position: left; - subcontrol-origin: margin; -} - -QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal -{ - background: none; -} - - -QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal -{ - background: none; -} - -QScrollBar:vertical -{ - background-color: #2A2929; - width: 15px; - margin: 15px 3px 15px 3px; - border: 1px transparent #2A2929; - border-radius: 4px; -} - -QScrollBar::handle:vertical -{ - background-color: #605F5F; - min-height: 15px; - border-radius: 4px; -} - -QScrollBar::sub-line:vertical -{ - margin: 3px 0px 3px 0px; - border-image: url(:/qss_icons/rc/up_arrow_disabled.png); - height: 10px; - width: 10px; - subcontrol-position: top; - subcontrol-origin: margin; -} - -QScrollBar::add-line:vertical -{ - margin: 3px 0px 3px 0px; - border-image: url(:/qss_icons/rc/down_arrow_disabled.png); - height: 10px; - width: 10px; - subcontrol-position: bottom; - subcontrol-origin: margin; -} - -QScrollBar::sub-line:vertical:hover,QScrollBar::sub-line:vertical:on -{ - - border-image: url(:/qss_icons/rc/up_arrow.png); - height: 10px; - width: 10px; - subcontrol-position: top; - subcontrol-origin: margin; -} - - -QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:on -{ - border-image: url(:/qss_icons/rc/down_arrow.png); - height: 10px; - width: 10px; - subcontrol-position: bottom; - subcontrol-origin: margin; -} - -QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical -{ - background: none; -} - - -QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical -{ - background: none; -} - -QTextEdit -{ - background-color: #201F1F; - color: silver; - border: 1px solid #3A3939; - margin: 0; -} - -QPlainTextEdit -{ - background-color: #201F1F;; - color: silver; - border-radius: 2px; - border: 1px solid #3A3939; -} - -QHeaderView::section -{ - background-color: #3A3939; - color: silver; - padding-left: 4px; - border: 1px solid #6c6c6c; -} - -QSizeGrip { - image: url(:/qss_icons/rc/sizegrip.png); - width: 12px; - height: 12px; -} - - -QMenu::separator -{ - height: 1px; - background-color: #3A3939; - color: white; - padding-left: 4px; - margin-left: 10px; - margin-right: 5px; -} - -QFrame -{ - border-radius: 2px; - border: 1px solid #444; -} - -QFrame[frameShape="0"] -{ - border-radius: 2px; - border: 1px transparent #444; -} - -QStackedWidget -{ - border: 1px transparent black; -} - -QToolBar { - border: 1px transparent #393838; - background: 1px solid #302F2F; - font-weight: bold; -} - -QPushButton -{ - color: silver; - background-color: #302F2F; - border-width: 1px; - border-color: #202020; - border-style: solid; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 5px; - padding-right: 5px; - border-radius: 5px; - outline: none; -} - -QPushButton:disabled -{ - background-color: #302F2F; - border-width: 1px; - border-color: #3A3939; - border-style: solid; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 10px; - padding-right: 10px; - border-radius: 5px; - color: #454545; -} - -QComboBox -{ - selection-background-color: #3d8ec9; - background-color: #201F1F; - border-style: solid; - border: 1px solid #3A3939; - border-radius: 2px; - padding: 2px; - min-width: 30px; -} - -QPushButton:checked{ -background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, - stop: 0.5 #6a6868, - stop: 1 #302F2F); -} - -QPushButton:hover -{ -background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.4 #4E4D4D, - stop: 0.5 #6a6868, - stop: 0.6 #4E4D4D, stop: 1 #302F2F); -} - -QComboBox:hover,QAbstractSpinBox:hover,QLineEdit:hover,QPlainTextEdit:hover,QAbstractView:hover,QTreeView:hover -{ - border: 1px solid #606060; - color: silver; -} - -QComboBox:on -{ - background-color: #626873; - padding-top: 3px; - padding-left: 4px; - selection-background-color: #4a4a4a; -} - -QComboBox QAbstractItemView -{ - background-color: #201F1F; - border-radius: 2px; - border: 1px solid #444; - selection-background-color: #3d8ec9; -} - -QComboBox::drop-down -{ - subcontrol-origin: padding; - subcontrol-position: top right; - width: 10px; - - border-left-width: 0px; - border-left-color: darkgray; - border-left-style: solid; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} - -QComboBox::down-arrow -{ - image: url(:/qss_icons/rc/down_arrow_disabled.png); -} - -QComboBox::down-arrow:on, QComboBox::down-arrow:hover, -QComboBox::down-arrow:focus -{ - image: url(:/qss_icons/rc/down_arrow.png); -} - -QAbstractSpinBox { - padding-top: 2px; - padding-bottom: 2px; - border: 1px solid #3A3939; - background-color: #201F1F; - color: silver; - border-radius: 2px; - min-width: 60px; -} - -QAbstractSpinBox:up-button -{ - background-color: transparent; - subcontrol-origin: border; - subcontrol-position: center right; -} - -QAbstractSpinBox:down-button -{ - background-color: transparent; - subcontrol-origin: border; - subcontrol-position: center left; -} - -QAbstractSpinBox::up-arrow,QAbstractSpinBox::up-arrow:disabled,QAbstractSpinBox::up-arrow:off { - image: url(:/qss_icons/rc/up_arrow_disabled.png); - width: 10px; - height: 10px; -} -QAbstractSpinBox::up-arrow:hover -{ - image: url(:/qss_icons/rc/up_arrow.png); -} - - -QAbstractSpinBox::down-arrow,QAbstractSpinBox::down-arrow:disabled,QAbstractSpinBox::down-arrow:off -{ - image: url(:/qss_icons/rc/down_arrow_disabled.png); - width: 10px; - height: 10px; -} -QAbstractSpinBox::down-arrow:hover -{ - image: url(:/qss_icons/rc/down_arrow.png); -} - - -QLabel -{ - border: 0px solid black; - margin-left: 2px; - margin-right: 2px; -} - -QTabWidget{ - border: 1px transparent black; -} - -QTabWidget::pane { - border: 1px transparent #444; - border-radius: 3px; - padding: 3px; -} - -QTabBar -{ - qproperty-drawBase: 0; - left: 5px; /* move to the right by 5px */ -} - -QTabBar:focus -{ - border: 0px transparent black; -} - -QTabBar::close-button { - image: url(:/qss_icons/rc/close.png); - background: transparent; -} - -QTabBar::close-button:hover -{ - image: url(:/qss_icons/rc/close-hover.png); - background: transparent; -} - -QTabBar::close-button:pressed { - image: url(:/qss_icons/rc/close-pressed.png); - background: transparent; -} - -/* TOP TABS */ -QTabBar::tab:top { - color: #b1b1b1; - border: 1px solid #4A4949; - border-bottom: 1px transparent black; - background-color: #302F2F; - padding: 5px; - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} - -QTabBar::tab:top:!selected -{ - color: #b1b1b1; - background-color: #201F1F; - border: 1px transparent #4A4949; - border-bottom: 1px transparent #4A4949; - border-top-left-radius: 0px; - border-top-right-radius: 0px; -} - -QTabBar::tab:top:!selected:hover { - background-color: #48576b; -} - -/* BOTTOM TABS */ -QTabBar::tab:bottom { - color: #b1b1b1; - border: 1px solid #4A4949; - border-top: 1px transparent black; - background-color: #302F2F; - padding: 5px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -QTabBar::tab:bottom:!selected -{ - color: #b1b1b1; - background-color: #201F1F; - border: 1px transparent #4A4949; - border-top: 1px transparent #4A4949; - border-bottom-left-radius: 0px; - border-bottom-right-radius: 0px; -} - -QTabBar::tab:bottom:!selected:hover { - background-color: #78879b; -} - -/* LEFT TABS */ -QTabBar::tab:left { - color: #b1b1b1; - border: 1px transparent #4A4949; - border-left: 1px transparent black; - background-color: #48576b; - padding: 5px; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -QTabBar::tab:left:!selected -{ - color: #b1b1b1; - background-color: #302F2F; - border: 1px transparent #4A4949; - border-right: 1px transparent #4A4949; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -QTabBar::tab:left:hover { - background-color: #48576b; -} - -QTabBar::tab:left:disabled -{ - color: #3A3939; - background-color: #302F2F; - border: 1px transparent #4A4949; - border-right: 1px transparent #4A4949; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - - - -/* RIGHT TABS */ -QTabBar::tab:right { - color: #b1b1b1; - border: 1px solid #4A4949; - border-right: 1px transparent black; - background-color: #302F2F; - padding: 5px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} - -QTabBar::tab:right:!selected -{ - color: #b1b1b1; - background-color: #201F1F; - border: 1px transparent #4A4949; - border-right: 1px transparent #4A4949; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -QTabBar::tab:right:!selected:hover { - background-color: #48576b; -} - -QTabBar QToolButton::right-arrow:enabled { - image: url(:/qss_icons/rc/right_arrow.png); - } - - QTabBar QToolButton::left-arrow:enabled { - image: url(:/qss_icons/rc/left_arrow.png); - } - -QTabBar QToolButton::right-arrow:disabled { - image: url(:/qss_icons/rc/right_arrow_disabled.png); - } - - QTabBar QToolButton::left-arrow:disabled { - image: url(:/qss_icons/rc/left_arrow_disabled.png); - } - - -QDockWidget { - border: 1px transparent #403F3F; - titlebar-close-icon: url(:/qss_icons/rc/close.png); - titlebar-normal-icon: url(:/qss_icons/rc/undock.png); -} - -QDockWidget::title { - border: 1px solid #282727; - background-color: #2b2a2a; -} - -QDockWidget::close-button, QDockWidget::float-button { - border: 1px solid transparent; - border-radius: 2px; - background: transparent; -} - -QDockWidget::close-button:hover, QDockWidget::float-button:hover { - background: rgba(255, 255, 255, 10); -} - -QDockWidget::close-button:pressed, QDockWidget::float-button:pressed { - padding: 1px -1px -1px 1px; - background: rgba(255, 255, 255, 10); -} - -QTreeView, QListView -{ - border: 1px solid #444; - background-color: #201F1F; -} - -QTreeView:branch:selected, QTreeView:branch:hover -{ - background: url(:/qss_icons/rc/transparent.png); -} - -QTreeView::branch:has-siblings:!adjoins-item { - border-image: url(:/qss_icons/rc/transparent.png); -} - -QTreeView::branch:has-siblings:adjoins-item { - border-image: url(:/qss_icons/rc/transparent.png); -} - -QTreeView::branch:!has-children:!has-siblings:adjoins-item { - border-image: url(:/qss_icons/rc/transparent.png); -} - -QTreeView::branch:has-children:!has-siblings:closed, -QTreeView::branch:closed:has-children:has-siblings { - image: url(:/qss_icons/rc/branch_closed.png); -} - -QTreeView::branch:open:has-children:!has-siblings, -QTreeView::branch:open:has-children:has-siblings { - image: url(:/qss_icons/rc/branch_open.png); -} - -QTreeView::branch:has-children:!has-siblings:closed:hover, -QTreeView::branch:closed:has-children:has-siblings:hover { - image: url(:/qss_icons/rc/branch_closed-on.png); - } - -QTreeView::branch:open:has-children:!has-siblings:hover, -QTreeView::branch:open:has-children:has-siblings:hover { - image: url(:/qss_icons/rc/branch_open-on.png); - } - -QListView::item:!selected:hover, QListView::item:!selected:hover, QTreeView::item:!selected:hover { - background: rgba(0, 0, 0, 0); - outline: 0; - color: #FFFFFF -} - -QListView::item:selected:hover, QListView::item:selected:hover, QTreeView::item:selected:hover { - background: #3d8ec9; - color: #FFFFFF; -} - -QSlider::groove:horizontal { - border: 1px solid #3A3939; - height: 8px; - background: #201F1F; - margin: 2px 0; - border-radius: 2px; -} - -QSlider::groove:horizontal:disabled { - border: 1px solid #3A3939; - height: 8px; - background: #282727; - margin: 2px 0; - border-radius: 2px; -} - -QSlider::handle:horizontal { - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 silver, stop: 0.2 #a8a8a8, stop: 1 #727272); - border: 1px solid #3A3939; - width: 10px; - height: 14px; - margin: -4px 0; - border-radius: 2px; -} - -QSlider::handle:horizontal:disabled { - background: #4A4949; - border: 1px solid #3A3939; - width: 10px; - height: 14px; - margin: -4px 0; - border-radius: 2px; -} - -QSlider::groove:vertical { - border: 1px solid #3A3939; - width: 8px; - background: #201F1F; - margin: 0 0px; - border-radius: 2px; -} - -QSlider::groove:vertical:disabled { - border: 1px solid #3A3939; - height: 8px; - background: #403F3F; - margin: 2px 0; - border-radius: 2px; -} - -QSlider::handle:vertical { - background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 silver, - stop: 0.2 #a8a8a8, stop: 1 #727272); - border: 1px solid #3A3939; - width: 14px; - height: 10px; - margin: 0 -4px; - border-radius: 2px; -} - -QSlider::handle:vertical:disabled { - background: #4A4949; - border: 1px solid #3A3939; - width: 14px; - height: 10px; - margin: 0 -4px; - border-radius: 2px; -} - -QToolButton#MaximizeButton { - background-color: transparent; - border-left: 1px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.3 #606060, - stop: 0.5 #707070, - stop: 0.7 #606060, stop: 1 #302F2F); - border-right: 1px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.3 #606060, - stop: 0.5 #707070, - stop: 0.7 #606060, stop: 1 #302F2F); - border-radius: 0px; - margin: 0px; - padding: 0px; -} - -QToolButton#MinimizeButton, -QToolButton#CloseButton { - background-color: transparent; - border: 1px transparent #808080; - border-radius: 0px; - margin: 0px; - padding: 0px; -} - -QToolButton#MinimizeButton:hover, QToolButton#MinimizeButton::menu-button:hover, -QToolButton#MaximizeButton:hover, QToolButton#MaximizeButton::menu-button:hover{ - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.4 #4E4D4D, - stop: 0.5 #4A4949, - stop: 0.6 #4E4D4D, stop: 1 #302F2F); -} - -QToolButton#CloseButton:hover, QToolButton#CloseButton::menu-button:hover { -background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.2 #A82F2F, - stop: 0.5 #E83E4A, - stop: 0.8 #A82F2F, stop: 1 #302F2F); -} - -QToolButton { - background-color: transparent; - border: 1px transparent #4A4949; - border-radius: 2px; - margin: 3px; - padding: 3px; -} - -QToolButton[popupMode="1"] { /* only for MenuButtonPopup */ - padding-right: 20px; /* make way for the popup button */ - border: 1px transparent #4A4949; - border-radius: 5px; -} - -QToolButton[popupMode="2"] { /* only for InstantPopup */ - padding-right: 10px; /* make way for the popup button */ - border: 1px transparent #4A4949; -} - - -QToolButton:hover, QToolButton::menu-button:hover { - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, stop: 0.4 #4E4D4D, - stop: 0.5 #4A4949, - stop: 0.6 #4E4D4D, stop: 1 #302F2F); -} - -QToolButton:checked, QToolButton:pressed, -QToolButton::menu-button:pressed { - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, - stop: 0.5 #4A4949, - stop: 1.0 #302F2F); -} - -/* the subcontrol below is used only in the InstantPopup or DelayedPopup mode */ -QToolButton::menu-indicator { - image: url(:/qss_icons/rc/down_arrow.png); - top: -7px; left: -2px; /* shift it a bit */ -} - -/* the subcontrols below are used only in the MenuButtonPopup mode */ -QToolButton::menu-button { - border: 1px transparent #4A4949; - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; - /* 16px width + 4px for border = 20px allocated above */ - width: 16px; - outline: none; -} - -QToolButton::menu-arrow { - image: url(:/qss_icons/rc/down_arrow.png); -} - -QToolButton::menu-arrow:open { - top: 1px; left: 1px; /* shift it a bit */ - border: 1px solid #3A3939; -} - -QPushButton::menu-indicator { - subcontrol-origin: padding; - subcontrol-position: bottom right; - left: 8px; -} - -QTableView -{ - border: 1px transparent #444; - gridline-color: #6c6c6c; - background-color: #201F1F; -} - - -QTableView, QHeaderView -{ - border-radius: 0px; -} - -QTableView::item:pressed, QListView::item:pressed, QTreeView::item:pressed { - background: #78879b; - color: #FFFFFF; -} - -QTableView::item:selected:active, QTreeView::item:selected:active, QListView::item:selected:active { - background: #3d8ec9; - color: #FFFFFF; -} - -QHeaderView -{ - border: 1px transparent; - border-radius: 2px; - margin: 0px; - padding: 0px; -} - -QHeaderView::section { - background-color: #302F2F; - color: silver; - padding: 4px; - border: 1px transparent #6c6c6c; - border-radius: 0px; - text-align: center; -} - -QHeaderView::section::vertical::first, QHeaderView::section::vertical::only-one -{ - border-top: 1px transparent #6c6c6c; -} - -QHeaderView::section::vertical -{ - border-top: transparent; -} - -QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one -{ - border-left: 1px transparent #6c6c6c; -} - -QHeaderView::section::horizontal -{ - border-left: transparent; -} - - -QHeaderView::section:checked - { - color: white; - background-color: #5A5959; - } - - /* style the sort indicator */ -QHeaderView::down-arrow { - image: url(:/qss_icons/rc/down_arrow.png); -} - -QHeaderView::up-arrow { - image: url(:/qss_icons/rc/up_arrow.png); -} - - -QTableCornerButton::section { - background-color: #3A3939; - border: 1px solid #3A3939; - border-radius: 2px; -} - -QToolBox { - padding: 3px; - border: 1px transparent black; -} - -QToolBox::tab { - color: #b1b1b1; - background-color: #302F2F; - border: 1px solid #4A4949; - border-bottom: 1px transparent #302F2F; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - - QToolBox::tab:selected { /* italicize selected tabs */ - font: italic; - background-color: #302F2F; - border-color: #3d8ec9; - } - -QStatusBar::item { - border: 1px solid #3A3939; - border-radius: 2px; - } - -QFrame[height="3"], QFrame[width="3"] { - background-color: #444; -} - -QAbstractScrollArea -{ - border-radius: 2px; - border: 0px transparent #3A3939; - background-color: #302F2F; -} - -QSplitter::handle:horizontal, -QMainWindow::separator -{ - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, - stop: 0.4 #333333, - stop: 0.5 #404040, - stop: 0.6 #333333, - stop: 1 #302F2F); - color: white; - padding-left: 0px; - spacing: 0px; - width: 3px; - border: 0px solid #202020; -} - -QSplitter::handle:horizontal:hover, -QMainWindow::separator:hover -{ - background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0.0 #302F2F, - stop: 0.1 #333333, - stop: 0.5 #404040, - stop: 0.9 #333333, - stop: 1 #302F2F); - color: white; - padding-left: 0px; - spacing: 0px; - width: 3px; - border: 0px solid #202020; -} - -QSplitter::handle:vertical { - background-color: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, - stop: 0.0 #302F2F, - stop: 0.3 #505050, - stop: 0.5 #606060, - stop: 0.7 #505050, - stop: 1 #302F2F); - height: 3px; -} - -QSplitter::handle:vertical:hover { - background-color: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, - stop: 0.0 #302F2F, - stop: 0.1 #505050, - stop: 0.5 #606060, - stop: 0.8 #505050, - stop: 1 #302F2F); - height: 3px; -} diff --git a/DSView/dsapplication.cpp b/DSView/dsapplication.cpp old mode 100644 new mode 100755 diff --git a/DSView/dsapplication.h b/DSView/dsapplication.h old mode 100644 new mode 100755 diff --git a/DSView/extdef.h b/DSView/extdef.h old mode 100644 new mode 100755 diff --git a/DSView/icons/Blackman.png b/DSView/icons/Blackman.png old mode 100644 new mode 100755 diff --git a/DSView/icons/Chinese.png b/DSView/icons/Chinese.png new file mode 100755 index 0000000000000000000000000000000000000000..f138711303a1dcc7a23adb8ce2a180175ee44fb6 GIT binary patch literal 706 zcmWlXc}UZ77{-5T$sAaQVP>XiB^_8{L==z9F0Cnp-}WY;|AsEnWf`7f-tT1KhxHa4G+o7c@{0R7&3QQtSQ;4 zg4JqWk(QC3V@kuKB6*m#^o>$0TX7Nkoi@%_3q&#EFO(ksu;bgh51-2qJ=t z;36afBf(aJZ3M{#DFoXI%mh0Lb`xX}WD;Z%>>;oa>?N=g?3YE6OL2hWAjKhy!xT1( ze2QZf1r)^;B@`zqPEnkuD5W?WrP{VMZp_bty!zG4m4A&WMFx+Ce!%)v)XSmDI zz|hFh#L>)gkK;ba1CADsR*pv;Z5-_!k2yLxx;UP2baV7@^l?1pc**gK`uz6~^{mPxzDGAWJ*ISgMr?Z7+ylXr{x(&`L(fj1-C@(;872n`*RF0F z4EJ8;d^S7XW&ZAcZQT`{`p$T7;Pk~h$yHuo_RHkAYv0n^UZQg}p0i{pblacKnDp(6 zs2FQ5Ep>dDRC{d6c>T7|>vE?fco7*6G6#kiPV8!2SmtBy56v5K_pUVcuW3np7G?_2 zj4raPd+oC=uB*%RJ|Uq!Uz9^HMwS^%qQ?czy%%$g)4(XX69Dss~&A6n|m5FHU$){{FplDMBNfu7Y@09`lhONU2;p43n%Ec Ku~GG!4nJ zFzyCnMyofE9{~j=OI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kpdd@)zif> zq+-t7nXx{>=@Q55ZQo}4GkR}i2yKC;%>pKlI|2k?`1QM4ZAyMcHh*S<}+E+ z`O#6mJu}RsoqDF<^Kg4~G^r=;T~cAzrkqU=O_b{v7;y7#yt3_5|7HDM+&)h)TzkZF zPi@ZqP=1^9xBq{B{>_rjlti#1t_o?f}Fv|rBi#ddLqU5txZJKW42wlG|LVsaqq z-22`@ql76um5qC>`=OUJl#ZU5#HFpaxbf~=?;o$r81fa4 zy_l@w-~6%Uj`Hu>#j%gMFP>@Wn6+T<+NQ_s;mWgB{7SZLSa;G-W!4pynLTWMav310 zZ`-(ltOF@m^jbYkPVQ2(R=0|p;45^Tf88>mY{#q_zgNXE^)h~R>6)C*CQ&1yG_`4- zo%~(#c2D2eqU>$XC1v;h?aRyVrzcn}>GWK>;P)c~+giIIO`y_8Pi8Vc;#}C9&L&yi zaC&9Ib=j2j6SGx>ghe!ut?A4Tn|A5qO?UTnc_1sTS2L&wDD%d$sCV}}1-<1)yI-X< z9{y6!cvNTMF*UXNOoq)mg0aI{-*kAQ*x)$YQ{;7d~ahXnpZk+ZstAP zx2LfE+qwj{zmo(^ybolWZ!WF1>XGXF&;>Jkb8-p`60RHVX_VOir9$HK@k@nz|KCI7z_7k2 zaQ&&iwV@I`8?vKKzu!^x{m5YcjwNG7^pRCh&BAoIUkupZAzjWiYes;|LEG|<*xRcN zB@&Kb({kIpYS|Abg=Ef{w_k;L)Ia=K)Kd|X_l@0XlF~($@T%h+t340Bdh-0`S)l`G z|1l`biT3Mz8O(W*wZ1%WRRyb&U*oPpK({mT_@NmGL#US40# zc;m{fT6v&vVqSl~Sen?uzbzy%JobqF|F+G?x|A04&&dB`?RfBs$%4Y0i}sxK+by~L z?i}+xHE*Fvx&C=jj9=@oTS9%c z7mutkKeci*zlr-p>({4me%dv8*>$!5n}Bg%^z*!--q(sthDXDMf0yemy_C3c-?oxJV=ydBm{OFn<{#R$hMfM$YxZ-Pnn*$ZB?fo{V_Q2%jhIaO4vNLje zHwUIo{<-e8-1Yq5E7$8Dd>SGl*L$XjbA8(fJBKf|4vBeZKX>FcWH2r|d4uKo?517( z5gjw^erL?g;B_+m@%P`MU;amJHb0o&09F(EflVUs@`C&(Zpph07nxiZODjY*WRx(w za0~SQGg5)G!HO^P3g|kR{Hg^R4q+peFMrto{o6Rp;;gATu#{x*boFyt=akR{0Gh0f AX8-^I literal 0 HcmV?d00001 diff --git a/DSView/icons/Flat_top.png b/DSView/icons/Flat_top.png old mode 100644 new mode 100755 diff --git a/DSView/icons/Hamming.png b/DSView/icons/Hamming.png old mode 100644 new mode 100755 diff --git a/DSView/icons/Hann.png b/DSView/icons/Hann.png old mode 100644 new mode 100755 diff --git a/DSView/icons/Rectangle.png b/DSView/icons/Rectangle.png old mode 100644 new mode 100755 diff --git a/DSView/icons/arrow-loop.png b/DSView/icons/arrow-loop.png deleted file mode 100755 index d3df3243d4e4cc3a43f4d6547bd8a15580dcea38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8485 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 c+1hy6i@;wwrf$oy5oUZpfz^>_Yh+9=*_m=Xb zhKKJpsZV=$|M01(*Imr^IpzOeNZqkJmNDbqjOfEWe@u*b&n|Ls{P#KS(03NGpq8p8 T8^@(Us~9|8{an^LB{Ts5KIA@E diff --git a/DSView/icons/about.png b/DSView/icons/dark/about.png similarity index 100% rename from DSView/icons/about.png rename to DSView/icons/dark/about.png diff --git a/DSView/icons/add.png b/DSView/icons/dark/add.png similarity index 100% rename from DSView/icons/add.png rename to DSView/icons/dark/add.png diff --git a/DSView/icons/bug.png b/DSView/icons/dark/bug.png similarity index 100% rename from DSView/icons/bug.png rename to DSView/icons/dark/bug.png diff --git a/DSView/icons/capture.png b/DSView/icons/dark/capture.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/capture.png rename to DSView/icons/dark/capture.png diff --git a/DSView/icons/dark/close.png b/DSView/icons/dark/close.png new file mode 100755 index 0000000000000000000000000000000000000000..8eb85178daae840b51054b777f5d3ca7282c6775 GIT binary patch literal 612 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=m`#GqR6fO>`6O7#HKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1XXgF?NXl(xT*4hOhsd zU&E9+=jZ08=9MsfJ2P!RP>chtWav>e}P?mo@xQKlhLA>IaF(z6YYLe_pO$ z%fh&Sy~KPb#bYy)ds$e&fB(awnXq>55+TDMzox6RE)j~U2x`z)Y)ohMQe9G@aEUo& z%eCK$5_t@K-KVcBs5EY75fVDR;Q_>*hI4cUR2X`WTsYC%&GM(oTF_bDGkFtB z$JKuy+&Ok{>t=znfNnpovMmI761d2 N!PC{xWt~$(69ApQ<&ppZ literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/daq.png b/DSView/icons/dark/daq.png new file mode 100755 index 0000000000000000000000000000000000000000..69be862f9fd8e9f6ff93d82b298a1bafcf8b69ac GIT binary patch literal 5629 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 WKXJYZ_JrEy1Pt{|;FU0^C;tIWETs?t literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/dark.png b/DSView/icons/dark/dark.png new file mode 100755 index 0000000000000000000000000000000000000000..8f822aa8d7222160ee7337f2b6fc7ab40eb3c944 GIT binary patch literal 2099 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 ul`*}IgRONMH|>Z0pOh6u??8OwEqId3~vzt literal 0 HcmV?d00001 diff --git a/DSView/icons/down-arrow.png b/DSView/icons/dark/down-arrow.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/down-arrow.png rename to DSView/icons/dark/down-arrow.png diff --git a/DSView/icons/export.png b/DSView/icons/dark/export.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/export.png rename to DSView/icons/dark/export.png diff --git a/DSView/icons/fft.png b/DSView/icons/dark/fft.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/fft.png rename to DSView/icons/dark/fft.png diff --git a/DSView/icons/dark/file.png b/DSView/icons/dark/file.png new file mode 100755 index 0000000000000000000000000000000000000000..926ac2462da2a8f010295daaf06ff940772717b3 GIT binary patch literal 2461 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 N@O1M*^H66m{ui1hdTIaw literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/function.png b/DSView/icons/dark/function.png new file mode 100755 index 0000000000000000000000000000000000000000..718edebb30db9cbbf4957e7e98d10eba0a36fa53 GIT binary patch literal 3529 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 h3@M5~eBdy(c{po;v z>ALn7W;5rOqXKvb1bpvyMStXQR$USjS^{Vaz|3gNsPdWXtiDg5Hg@2T(P*^7?Sk3h zo(?>u(QH;%SB-MJH}>P*?sR;W8y+6MzO}ib1W>Rhy1J@@EEq%I)YjFV9T^?9b45pN zZSafh>-+OfqMsS$+ioFcMThPYjeo_cLarTr^$UKov~MSb477@fhyc3vqY;sjLt|q; z$!~%M_G%0&ClCT?A(4^wJ5U6#K0YO3qOXA7-`DqiB6K}ez5*_Ta0+4gMv=9bH`GbnZIq*ej5pN|fi|zWBt04}8%C*CL2`d8xK%vr!50lAb(Ib>g)Vnp}Kx$Vq zcgTMu2cFhrOw0bU2U38MNd%zJQph=krWa3c94UHWlzwVs;65ESss&jwmksWBMK;fC zK(o93WFc{*UM+|NK8lG1S<#oP9T!9(hwnfGXb@5JHu$E4{G;>sZC{)7v0`muFI}?E z!3*n4m6ViZMTIJ9@$cB5P9&(u(j;G!CXyQ|EqXi6Wm^@K5L&mpb9FTIr7F_D$BcXs zq{1_gL|TrkaREQT%mOt_@4`y0(Ko&^+oNc|8-CR5Rj86fVeYA|jOyS2`>CC`;Kl4A zPB_#F-%aM^pLrVMxky|&Zku7Nw)c3Tol*+K=ymezxHZGV@sCKw6fwq` z$ku!%5AQPu_pMT-IIcfMTff}FsnIUyn0z@Rco$=QOltA%n#2?9FWwd$vKo{iAc^^? mFEmAIyqI~OOy%mprcCkDWp+(?@=L*w1-M{o3s#-?PW(5x2(lai literal 0 HcmV?d00001 diff --git a/DSView/icons/gear.png b/DSView/icons/dark/gear.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/gear.png rename to DSView/icons/dark/gear.png diff --git a/DSView/icons/hidden.png b/DSView/icons/dark/hidden.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/hidden.png rename to DSView/icons/dark/hidden.png diff --git a/DSView/icons/dark/instant.png b/DSView/icons/dark/instant.png new file mode 100755 index 0000000000000000000000000000000000000000..c74c674cef9f046fa09a90bd3d31e055df48f66b GIT binary patch literal 3047 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 Q2Bs1QPgg&ebxsLQ02P}zjQ{`u literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/light.png b/DSView/icons/dark/light.png new file mode 100755 index 0000000000000000000000000000000000000000..23882479a6df1ee0c0cd708da3bcd782a8d3995e GIT binary patch literal 1848 zcmXxldpy(o9|!R7Zf!Hyu#9n#TSZoiD5Qo>5>b>(8#Y!hGm{l+>)Q-%pmem%ECRt`YzMDr6FIuVQXr zF4PJ|zrlzbQVcYcbRZr8Fq+E+0g6j?6o_P#ce^4-;b@H6Y9Ylg?l-vxuw4?^k+CeG zs#Zi&kTP3AL|S|pi@{_wVq*YJw9#sXD=quZSmrSnBO;OwRI7;`6sr1LSv2Z$)R4`H zrU9Gh)X<6zdU@j;OJ^riSu`M+xwIU|{C=Df9~MPbL|MQCu>PEaQOoR4WyLUJA^=cN znyE14|L+r6VKiWN>D2gtv7NEe(X<#g@J&?Mq_7psF+T=7iUwStdTFiz7@6qe$0_YB z35?Qq)oDMOx#PN(w^D^g+AK8kilNS?Hl#KBi<>aA%3qF70kl;jD>Pbe`ivq%^7%|{ zbOPof= z%p-c~K%(w8eO~eItKkdlb6%;?I%wp5+SQs4{4unA8{zT4pOM@T(}sKh9?@t(_o0K{ zS2-gGAQR7dp1sf>m@~xgd(e`8gZ4*Jw)cQL#e!g%F_<)uR3l(H<{86~LSHs1`(T@g z!#Y{MAc1$#^mS(45noRIpK|}$A0ZLK(gJo$59d9K(CN~!>m`;fCh3mU;jCmFIK<22 zFl!#SmT_OOkLRF&^wspra;*=h(M2<9f^{adMKe3oC1?7K7+k>!Px>5{T${5y9P+*W zcublPY=F_x54uo-l${?ylDOm5V!yl$;Ocdw5V@;gsGbr7BYAd+Keu>7V)6J^V>3vi zY$N>hs|$VrRriO@>p|rS4C9ru2#`YU1g#y0pUN*!pQ30Cdlc)oG(GSvsJ9BgbROBf zsTZ0_SbChqtwGQCXCJWYf~uNJZmIFG5*v}tBYSESa0qG#8|Sf$^8qLpRe|n)AwBqR-jZ(WQ}W4?*i|;=Zu&ZpqN($ z-%xFH`&_^w)=BuUNn5E?7wU?O33Mn+lnT5p?9%!x#B2Yvz7bPvn~-Q0hsavp8`^USE5 zWVQcj`LphAqIXZU+(+Y{YlWP3=SKY0MWVYQB1l(JPuW@VI-C5Mo55f!^XaWP;TTgT zrHC(#qPnLSg;6{lNnAHdL3?vKUvQ^Y!W;fc_=;bIl zxQd6*nG1Uw(~vr6HLf4rfKHTCLchbs%5Th!jXLX~Sp!Xf2H{gv0k*Whe# zPP-SZ&&2RlGjc|5R|LP{jd6V} zoDOqL1TDzpre#^>q2g#i#Ml?qBXM7VwMUlG-BsO(_2wrLT5-g^VcPIv3z>Lh(AH?r z8rwF5ABOGsJ`L)~FLo;-PyPIO5y%%3jehL^$gaV zTeV|5gw^M^ls!}>iNr?p2vq~2eqO)|OQVu879>C^IWPULi5kiB89r2Al5Li{f&z1! zAm+`W&&$9N(a1Hy=M1c;!;{VAN=B)MZq`4h6Ci4DmO5fQ%v{>n`7!(Lu{`Mp;Tpa^ zeHas2U?JPT znY-$78>6a}1V1~wo4_fhiNwG^s*F@14^wY(D>pot4VRSYoOsfn>|~>CV^D3Do064I zPt)i1J~!F-32*C9c97P6ZP{=^`^K9+Ws_kwB7b9TF? zc*nT#pJS1Ba=5fEZTOxjEi>7vY!GS5>alLU%Q%mio@d`bJqup>Hn$3FIhOagFPA#g hr8Z?sQFGqCsMgvgUuBZ+q4)v;fb8l;tldFL`yV)TG0p%0 literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/lissajous.png b/DSView/icons/dark/lissajous.png new file mode 100755 index 0000000000000000000000000000000000000000..632a722d6df8ea209ad74efcd92d3d94b5dde7c9 GIT binary patch literal 3729 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/logo_color.png b/DSView/icons/dark/logo_color.png new file mode 100755 index 0000000000000000000000000000000000000000..65ae5c6d2bb4831c57fe6200ff3506d2ebdd5d55 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfQ!3HF=w$;x9Qk(@Ik;M!Qd`Cc-ajG_-G*FPe z#M9T6{V|&a7n|~aXQ?`{kZVMVV`)i7ei6gUb!R+)LOdlvA(zzR zc>c}QNi#jJmo`2M-O0Xz_xSene|0K%TTY&G{hoK_#{V6RjyxPm4g$q+2?$y`pr)#}FzW879>hAAHy=Bfp6dY+#U}G^<0P0zHt?~ME{=c){zI$o(GI^z; ze*69G)0g`{ZdFYON#`-mx~cVD;@A$(6{}v~NtSr5matMn0HK|SW75jahQ;3-i+^(z zAJ=&HO?O-E{MlW%B{h^>UCN|4Xg`UVdAnh00=l)6Z_f(8T~UAZ^4r@2V2eO*4-jNL zd*-U-+=XixXD^#5;1qDx_gtaECbpd0+d9&#I#$g0JM)@BQK$Ovfo`RL%(lrOLl*%Z z==iF!LR2&$)PADA>E=~aay>)d@T_rB`SpDLs@Xx?R0F$}6&|*|+I7#raPA$o{xX%n hLV`D^N`AjAJ~b?cJJYD@<);T3K0RYH=7J2{x literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/logo_noColor.png b/DSView/icons/dark/logo_noColor.png new file mode 100755 index 0000000000000000000000000000000000000000..9ee4aad67c743a02f2610cde5e93db4066530e69 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfQ!3HF=w$;x9Qk(@Ik;M!Qd`Cc-ajG_-G*FPe z#M9T6{V|&a7qdX^lYU*WkZVMVV`)i7ei6gUb!R+)LOdlvA(zzR#dT6PcX2I5ZWOG)!P}^55M1^6sh&x_w~~K3rnyx5oOPQLD;r);f4FE;M3P zepLHK=AEYSg}e4{=O4~9V%!`Alu%@C5fK10tgWO!zp(u9>b{ZoZl<$3u1_{GZdW;e z>J-}zRDOLNvh?_NTaejcBfJC+l)UC%yeTbJ5Gj_u*0g+o?;LhRlLx!j zY2JG&7`xr?{k*lW;@(db`QJDdkItR>(5jWS$(BJI3`_G%XxZGLzA z{@r{KZ-1Y|p|@v0|EW4w>Sk?otMHXV+BY5TcgywjcZDsRwchR_Fqj!UUHx3vIVCg! E0GOofZ~y=R literal 0 HcmV?d00001 diff --git a/DSView/icons/manual.png b/DSView/icons/dark/manual.png similarity index 100% rename from DSView/icons/manual.png rename to DSView/icons/dark/manual.png diff --git a/DSView/icons/dark/math.png b/DSView/icons/dark/math.png new file mode 100755 index 0000000000000000000000000000000000000000..f84625f7960e3339cca0cb05e0c5f1238e926c7a GIT binary patch literal 1543 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 Sahp~OQsn9C=d#Wzp$P!QY;}bI literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/moder.png b/DSView/icons/dark/moder.png new file mode 100755 index 0000000000000000000000000000000000000000..0f13a3fcc1e9f29afbf722a8cb6d5e330f9911ef GIT binary patch literal 3286 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/modes.png b/DSView/icons/dark/modes.png new file mode 100755 index 0000000000000000000000000000000000000000..fca07844146e35b59ef228e2230bff29a3fe728b GIT binary patch literal 2707 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/nav.png b/DSView/icons/dark/nav.png similarity index 100% rename from DSView/icons/nav.png rename to DSView/icons/dark/nav.png diff --git a/DSView/icons/next.png b/DSView/icons/dark/next.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/next.png rename to DSView/icons/dark/next.png diff --git a/DSView/icons/oneloop.png b/DSView/icons/dark/oneloop.png similarity index 100% rename from DSView/icons/oneloop.png rename to DSView/icons/dark/oneloop.png diff --git a/DSView/icons/open.png b/DSView/icons/dark/open.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/open.png rename to DSView/icons/dark/open.png diff --git a/DSView/icons/dark/osc.png b/DSView/icons/dark/osc.png new file mode 100755 index 0000000000000000000000000000000000000000..233027f6817f44dfdc009ab4fa24c7dae30f993b GIT binary patch literal 4465 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/params.png b/DSView/icons/dark/params.png new file mode 100755 index 0000000000000000000000000000000000000000..e64cd54b208ba1cb908a7c02f87d9afedb58dc5e GIT binary patch literal 3914 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/pre.png b/DSView/icons/dark/pre.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/pre.png rename to DSView/icons/dark/pre.png diff --git a/DSView/icons/dark/protocol.png b/DSView/icons/dark/protocol.png new file mode 100755 index 0000000000000000000000000000000000000000..75378de680f31367af88722760efb9dd528002b6 GIT binary patch literal 4695 zcmXwd3p`W*|Nj|c%4JGf>cd=;v}97Qk!58f453_`$uPqdxyMwP$vyY*AtXMe^=Z;b zhL-stP2^J2NX1+m;dlD}AOAfbXXo*FzF+5@_jz5OujlI|+g&^_y;E@~007chOA8!$ zwgV3Xs5toV&xk7kPm;lwt`q>+wdc^z8qjv&>m3l2_j2|8I7dOd=72!hqGcxhxP9|6}Gz3=1Rx z)jtOg1Av?=*23H|qUcBA&1^TP;;y*0@n`R%oQ8%jI9=0Et*Lc(9~vVXCGPQ&+u@Tz zxa(_RfJECRSE!vA^SxV5wU;}89ezwGCS(JFcFP++aSloXao-`RwMLdAP`9?R`Cx9nfit~mQ&2T@O}EN*haHSsc=__> zeR-VeOD?J06B8qXo^f|rHZJ;P%{~yVaA7@EeaJ zWIr|$cIBVA#uYJ#aX%NW>9T!*dphg}3Rl@#ei{G}Xs8!W0cYh|=cv_k2+JgSc_DZo zKHS7>=Uq|SnWT-}m-^-RC&@&g(@>6bt*JxwQ>*m`rSa6%k#D zLjed`V9CjeMAlP0aMEVO;#6U)W9Huy2K*>D-f0KkN-b|L28KX6$X)BIr=D*UEkcH>3gRY}k7Ha|*xy z11oO(EEtG9U)_98tH->?pxzqL_B_M#Z?hb$n~(<;cACqjvFo$%eIivn*9Y=6p0uj@ z2M6nP!$*fdetf~~_lx(2uNl&pjsU~E)4RfFm|OMz{rwU$2Mrcvnf0t9OLfM+)Xq{A zJ0StF3;;0nRW&s=oDMv?{?en<_=2xHG4`hagwK1N*q1tX+QdW(T6PH-zN{&q3q!xG z(R{-{gjEb8la=pVn+?hYhlPc;PRx4-xaLkVe>#`<&s^(bv-hb{8S<%}JNo^W1?V!^ zF7ZTXL;B#80A77*_>CL;+<2Qw-tg2N<})IIoJ!c`GCP-ULuEaiB{_4LN3gpyQhp~` zbB0tqNtI?9d^9B>ARqztmEs<5TW0r*5EW%yh%_5CN;;AMc0YWoOXOC3Twvh$jYgM1 zchgc&^bsdHbYFF?5$p0}j}l9DrEVYHwP#PCx?j@DQDTrbzWw|eRKa4!-BQQeUdYUT zkez_!c)@RX!lU-#f3HXA?}8xcuoOLgeNnvBx0OiN9CJceOk}OM)QpA7FR3~(nN?;t z^Wtjbeew7cz+__4QXkIhcsu-#qf<;KiY?V)&=*qlqFmEYXS zk*$SryjMZhA#7${t(I5xLQXD9oQA4))S|%_r7D-P?BPK{M0A&9M8T=}8b__$u#s|2 ztL~<{>jhO~#XUYj#DIW}(C2RBxJN_UnFQg$8N@>Cxr&U}@X{#*x@yX2O1Y+X9dC{& zzcWc$+vOiGnaX7dun@wX-zVnXc71FQ41E;EzKc3VMJZjSk*?9EKMQ^hJFXX8jNhJF z68;1$`8s>JrU~g>JEVnkS}9pwT|K$6`eW3<$cPy<{^I7uPVvN2?HsFgOhx}tjpMiI z23{1oqW@P~AHT(?zZ~=RXv2#Ebxvp&!8L7sd>jSbZ$A0s_)s%JH35NK+}H%O{s35m zX<7IHx&t40oedp~|uv+{V?lz=oiE$O8Q3FX?b;Rq@c0MM4QK=gge)-zgT z`bovK()H+<4aw#ADei0d9II(V?oIwupBedf$EVt^spl9Nbytk(L^KVh!;YuOKvmk{ ziE~VFt9BY$!eo$sXTN=WV|%9oyTic5RgN4Fq3W|Cqe55dxlOY54N1MiW??=1}Hba!|A z+6aeN5i|ivJ2zDbvRLT>IDAGPBj7h7`%qF-ZydE&f}Ndt?)7t92{7Dli~xnP9|?00 z-;YlZ<&sl7uhw*QX7%`tC&Jc6RKA$F=9=?XHsMo4AeB7p3S5L5`Nrp4e|4n(M~Y=_ zXA7cpRjIK?Tl$*NS9TTs|Ln*2f;||B9|B|lE85ggPw@~}IDt{kcnn^o>g1$hWF8u*syIPfckb5(a;CiDHck>=DvYs@mf3Bh*WUNDjdip8l5ejI_bPH9pk(TiJ zF2F0M)k8nV)bjxT`vI`3LE??An_E|qRQZuTK$ex3?g4^t@#Z!Uj56Ar>K<3(WCe_VM}BmV4}qM{?KHi`LdwBVAow$U%OQm(ENLZ%$8s=V@^VJD=0_ znXx8HaS_7B>GXQH=K~n%en6*dZl&J#;ovpD0!Glp%NW~d&CNwb*Y`iB)OM+3NBl-t z8^p{3*IZ{W+V)YEOm zGBsGlf)v^%h&WxOL9$ifog7G@J)SD!lxvP> zSyjF&*Q|eh=@AiRr;rXEQ%G=diVAgWunF14Ac47^iZ1)_uLOh%NKD*w(B3@42jea7 zuaP~rCgz9N&p=hU!Z=!5+E}|GtAO${pTdkdLC?6;r>uLh z_1H1T0lgn89XhAt5Eth{fCt$c$2f{A)H4Pqp#1`(BJUtSEs3#5=U7#W0TVI8 z>AdsX$iF8J+=ir-TP7g%Y^r#YHtY3nn)2(<{GT$PS5{8@U^9Qd)BCYwP_H3N9SgdR z>!z)Mf&S=%E3j2!(qIGl(be<7B*v;nZz~QSCmorJt9hr&6+UhE3a%#>G>kA}7*#|w zw@mX8~TY!frXG*(X1bPy;4?_T3TA}XjYc$*-#olEqpTHI<{Mfc0AXr@*xaO;0jd% zm+uBL7--JKZ)9cIa8n&SB8H6d^qeRg=sg9vd|ncYQ16|sCnY8(?go%~g#EyzG<$gA z3)7_f$f!$t*Axqs&pczg8aA`pULKQ1*|O&febL=V9zTBUK@-d+AOho-C=3$o;*lR& z>XI;YYi(`G0-vNt&0XKz3gGvZ#_a{7XY4jd8Jp%b!GJ)voK;bwX1Le%;j#}JB*e1} z5_w@`bIH+ZQw9L|(F*99Ou-c;$vYjL`euWJgAQWxhuwKQF!q-rlkbzAA4rC9&j&mm zA%hKiEs86=^2Qn5y16+l2yB$SQ~L+{fXRDvvjYD&={Lj@+l_07zEx1~ff_&(-EGvs zYbnRo%m53+WhEH|VHwzBZE^|s)MshuDngbD8@jGG=82g{Y=dln>GbyRCC`|pr;b{O za8_gi$nfBVGsiq`mAPC|v#5V;?<{GQk%VG+0Z;b;^UQ`^n32?xli9MEeu}AuWnlw9T%zz*ENQD2Ac@&er+1TcTA{2F@D0 zlPd}?eF$7tqzN9ImXg6a2h=|u@B_3)U34`7P#}nS*y8$T>=~$eCGJC~A?wJ#)YC;5 zADSKJEFPgX+9q{;I-T`{blGa1hC0q3_H5wQ%rW(qkC^~~&EU@-{!+eGhD|LB01#Eu;Iu`O*0d-05|2tK-VJ| zNxP&RuOB zW_OGklRQ;v((S8mqM86SRQ?rbizyMVmGiAETl?p?Z|j25F?|x?sr)u!Hgxjft!fLz z3whS`$fraLgjU92#|42(RxE=83w`fhYi}u*{I3_wW&;q*o>{ECuoaQAQhi-LJ}dK$ z4b2n)s0RP~%IN05ZI}6?37oD?#5r6-L8uVX-<=Eeb6Fz6{0ER_QfvrQuWqwP{(OQ& z^TL1`4N29xOMWtYH!le?nXV?VtN3jbG7(;h1jFdh=m`#Gql)YSg_I$9AYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC+GB3+&?jv*1PZ>KwQ9Z=w5Nq%Yl zN#lS0C*_x#0hhGg76$IB7M}8k&+~walE_NsEmk}N7cD=nm|}Ft;>?_P&uuwZ$G}0S2BH>586(=_haOp0_b%t-Hfjuf-?7o;#BjH{GE>=aZmNwa|vYiPeV|7cdzx wFh68lm29y&&h}T2!?~YZ!w%j5@SRQX#05P)cIE6PKvyw%y85}Sb4q9e02pkXlmGw# literal 0 HcmV?d00001 diff --git a/DSView/icons/save.png b/DSView/icons/dark/save.png old mode 100644 new mode 100755 similarity index 100% rename from DSView/icons/save.png rename to DSView/icons/dark/save.png diff --git a/DSView/icons/dark/search-bar.png b/DSView/icons/dark/search-bar.png new file mode 100755 index 0000000000000000000000000000000000000000..e3a3298f0187a3374791d1fef3eed8a922223df8 GIT binary patch literal 4404 zcmXw-2{=^W|Hls_L@~DzmFSXv{SwBSy3**Yq_PY`vL)*f(_|@?8=>sG;)}#sV(e2Y zNf8O7>_tW;Lt^r^{cqp@^SjS;?s=Zqd7ty#d(ZuRKJR;PTb(f9F0fkw0I;2S46(*~ zE3E19^J3?Vb&*+Ew>99HJsAMOoqrk^$jTANAYU-i(u{8s$HOPQEA{zz|R+{vN@hu0ig=DPZ%DT=2iey~%EuTrp`7sBf)J#4!IK zZ0j22=k4bSTK7!HV2tno=Z6Hjxr3$6=7k~@!r z=bc9xv9ml(I;gVvJE;JODV>Co(-feImv+ER;-MoUnNFWSZ4_@7}$3ZOf;3 zWnWWibeB6^9=sm6f*Q9GlSU?TnmvoYIQMbO%ggUUXBLS`EtPV91en_tABA3W^p+f) zh5s@(KIchWKc6Ja(Py<%BYUZ}%&Mv?fHoA&Z)rGcKGD%}tdKm%?$c%r68O3s|gRA8=HDr&XC8yK- z4K+1S<-32}l_X2qOr1JgHt+)Z^(i4C;lV&ZG$dsGg6g-3w~7A= zkY6jxuj3}g-+T$G)SQm?IUqc7P_3%I-d5(bvpg|qJaxLoutylz8nZn6vF2NqQ@0Pv z#mQ;3(uWpVQ&-b)cPV30ZR((^6%rv6TQDC)Ip^D5!;EMsDJh9G8VVTb%Xs$e*`5?@ zN$~Clx`cMXN&7$FAp14c)GYRYsSv&Q@5^y@>iTtp|JxVK?jcU`e>U0wbhX`8KCP#5 zsJ_{SWVBzoh#TUHP~7L4YOQ{Sov2v!Ei@Cd;ZdH2bNjhtVU1|G4jU~EMPhY?31$C2UiodGB z&t1h-^PPvF6zls-$F&5sqRD^qux9xidW3^bxVB`c^~ z(sf!rCV4+qqYLQYbXKKavl2q z*+c4Li6X+|Dt=hiy>zQ?`&E7Z>nAxJ&PhqVfYu6XOj`9E_pA1Ho!cERUY=i=yLoeq z%k+@MUX8`m$gldYwG^g4xjR?4{Yba zW)}*XS8R|VmSgw>E4>$8*_kWp(1L$0vzlHfRu@glGkM(=+56!`*!0@UqLg{tLr1ku z`|$AaX!0Bm;FXHn@eA3Myz%?=h%$79h_IO?dHQ3}igw7~o;g0YDo0x)vcq#ZV+Jgb zRBMNyhWW&#DSe2*xGL(bY?H$We~w4`|3-wMRB{E128!Q$M52w|PZ`<|OPx%T?S8!N zxyB8{o)Tng6n^aN6aKxwzh8G!FK-u=&7#aQ{Q05?9vkXK{YG6Q|D-foB1-U2el6P; z4u{9IYJenoO5`RbPwK)n1gcQ47LFKago+BPq+0aI6MsswM!Xswg(mePG%fqKve)_H6HxEi;RkpvEm

*s4Fi z_q2?RO#S}P`)G6=2hi79EzoR#dP6`)-5_wHE%2I+nyK^WWKWf)g&Z@$emX;Je&sz}C zxwf{Jt(0n^3#I-v99M^p=(6dVWQby?xFn4J76TgX8B#dlMeDiUA&kjh5_Dmh05K%M zzYY!#i7~Ev_fsy)6bP}`-_h#F^o7BAa5n+IZrH;G{2ntS-jP<1f)6Z)|Mu$>9v)+I z@M;F7CqdGnuHyZ`0sEzMAE-SRir*Qb;68&R0oeo8r+#~lO7?~6Yu2UO0^oRabTpsv z=V)PLJw9M=QM3abk^uWi=OTQ3d^X(@jdX%1TDkbZV>{NNM#qR^D}~xUZql&@{iNn= zXgOKU$|A7QaSq$T*_>fH*v5xuGdy^_`uw%Y$;l9lQeKGgHAnEXUS1VbAI=KsW|Td6 zus<_DKSnQs3o?J9p&}$K9C-qX=>Pa}rDJ}6-hj>EjMXRHxpM*i9gh`;BZY;9QX=>E zA%>b-T8jZ>at$GLZbT|1BqWzBDkfo{(GV@=iY`u)4D1?~U5q>BDNSkzySOj$A*3=(pAx0`VsD!512uO-~iufjLb^$`y6U!M@7Ee%2o zW$299X$cpPLv3%fb$o|#zy`sxa`PR{dacDh$Uh;ed1{@pTduGrptIt)SU(L-9?|R2 z3@=&{vwAn0k!DdO1@*ex|7{5M7JKV&1wAnAH`Zc*`&dy)iRWRYo67D>OG}dh^9`Ia z6*18;_Q_pwFZ-K_ic=~Hf5YKWqZ%H7OLTojtQ(<34e?I1Pdpt!i# zm9!!W()S(k6ZflETO`45VM%?FdOCgmM&{G$oa_%+Qkptnz3wV5q`An!qR*KJR56R; zzf6pc_tn+cOT`z=90wW+Xs7K8>$aClEUXIa>ak*xU>tnzB%;HAy~Y%;U2$&kWqFvW zPWzn_?;&di5jo5^C|f9A?*4)xr$n}Ek|UF3S6M99e&UW?_mAcbPNG7Qj#%8wLL3ga z37PfsAya7^8ylY#VpFWYF}n6D7G<5x)n5u|bR6RbY}tYi!r%zku#~U5<#O@i>mIUK|+{0o>3kyZT_Ke`|3{@;HSC@Yn@B!9QbMxUO z*~UDy7}D$~dA4V$!hfZ(R{V<2?C&9CueF%Z4|8Zi1>X0LR7my%(AgtLa4DT%Jc{~x zv`mg792=!n4~T+;mZ07m_~&wFW~QA_cnz~@cqlz#U2Ip(lg7$l>$2QpRq#cX@Bzz#%+1WWTwL=xsHX9}_U*Vf(0x_ykm65=zp z`ZZ?K+4TxqXoi2Hn!G4~IXwz}dY`^=njH>6mG7|50eC=`_<^8{1A_;3bT)RtI(jUR z>(URy*whvd74<41&tWCZzf95-f;1M#q25U4q896K@?)#<_Gw1Rtd(kM{$l*XHju)a zo_^zVz?bmt8s9#<-kYdhR&K897fJ+4@vJ{BcRwswuosd+RJ>>>^;vUDA_DQ0JRE#j z#LNL-J%`yM@@!-TAn$JtG{vbONOFfD@_)C<&m=kP zf)SKeo99hi9k*h)JbZgbhV-3N;@woXOphk*xfr6hX|U}G|8+3UVx5fZczTg$GRS1s zsmUv+e?EJls=c+fHM>Be$sCF3rACsoioZQCnYqpXXg~?Ho`!$=x^>xd=0;binht*Z zt3_!GQ+(gPF)VKjhg4;8@E+nytWI5Ywb8M zoxe3$I1(q$Mz;78D&+zh^truoG2;Fvu1^Ye`W4BRpZHq6O&kRG3(@=?vt!_v z{2P<6-neW58c~Ob_qfV4f_maB?D?G)=G`T6pnrDbTo#(^jQtz{M6(k}#bKB0{|A8}KM?=` literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/search.png b/DSView/icons/dark/search.png new file mode 100755 index 0000000000000000000000000000000000000000..5a67758ef6a0fb268a29a71f5e5dff8a632b4f71 GIT binary patch literal 313 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 K?dom))BXbqAZn5T literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/stop.png b/DSView/icons/dark/stop.png new file mode 100755 index 0000000000000000000000000000000000000000..7017ec467280334d4a5192681c5e16a8b78f6f3a GIT binary patch literal 2686 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/support.png b/DSView/icons/dark/support.png similarity index 100% rename from DSView/icons/support.png rename to DSView/icons/dark/support.png diff --git a/DSView/icons/dark/trigger.png b/DSView/icons/dark/trigger.png new file mode 100755 index 0000000000000000000000000000000000000000..9ccd6c0c8e203183b229d90eea7f506bf39608a4 GIT binary patch literal 4354 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/dark/wait.gif b/DSView/icons/dark/wait.gif new file mode 100755 index 0000000000000000000000000000000000000000..8cff358c7859c14f9768531328fdcfdc7f8f5a6f GIT binary patch literal 10098 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 ivtQrHz}01^rRVNI9T)Ope|H< z>&pI+g_p@f?SjF_PhcU}h!V%rl8pQ!hL!8icmRcXN`OKxsl~}fnFS@8`FRY&oQldo zaW0U!bACZ(QD%BZ3BwxxGgd%RKCoy}Y9dIfLP=(BDud~FeomkaCrBnZKdq!Zu_%=x zw%|WVIXBqw%;MynM4-|lhV2Ko^aF)CK*HgPMR}Qd=?n*?pS1(U*dh8$i;`0rzW#51 z4O8ZvpPQSSSHke^%(VSLF*cC0kj#>tRE8DrE~zsxFy8TWaSZY3e0yzgmb9Y)!-JU` zUQgBZ1!6ds9A#`?9r7-PBP`MRm-Bmp_ivTo%#B%cD)|SyPnV60ft&T>b7qwc*ZrE* zdQ*?Q%qw4VVG`u3SS?`LhT6S&w`=B%`7 z^2sL}Gc}a9c6a?rnS3 z5|3K$<@aq5K6rY;=|{Znkf9+k>!o<11*E%v@dM+b)eszX!PR~z0rDiR;Y(C!|rSFzpfBp8lU0@2+ z&BSN%<(H3$3hwpyRdAVd-dExH#yeM3H!?HCGbZ?7W_w>ZS@}`>F|T0J^VceD;=G@( m*>q*^uZ53)@_p$St!KR6Zo*+AT-64Qc?M5cKbLh*2~7Y6YDriC diff --git a/DSView/icons/file.png b/DSView/icons/file.png deleted file mode 100644 index 78c469cc13bf521c2874e3235ab4d0f9ba9c70ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1886 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 Yy|g`#_(LBCB)0;9c5!!ZbPB)vH*2a};s5{u diff --git a/DSView/icons/instant_dis.png b/DSView/icons/instant_dis.png deleted file mode 100644 index 9c24bf07831aed72d80998e1c49c5363abae5ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376 zcmYM0do&aN8^>qNjG-E#efgGL$~CrHt|=RqkV~d7X_7IQnHix?qjYu2wP-HYO1>47 zzKD(a3UwOQx?wI$HA!ZOk?@;-=XZX8JkN8U*Yo~7=X}n2KIi#dI_&MPuDV4P005|C zJbAqa;ov0 zQX<0ErCX`QxCp>*nI=SDfvi{j;|bJLVU!5KG4k5FTWT|=da#EQg#g}SK|(j%OE5p@H_%upUn{{T~357>XSEIWvvAgIerSgvCw`Ht;P2CyIB({o7H(l z?*ZBcu?&@li~5+pwSXh-f#%PS?=S!xT>VkqkG>5;HhA$AM0885B~$X#_%onYWo9AO z&g`R@X3@wDSM90oa{_`7Go+yy&A2r50H|u;MqZy6xE=-(^)0%B=Zb? zo)ZS~ajwll+fhvK#pECOT>5rKPc#FZadi%`4KS9;z28Rh3TK=5sakSeYMEDuo62H`p{(0>hjpidY|qp70w}5mM|}d&XMH519x2 z`T!QcLnSR#&?M}NF|V3#ztKsL+0^DcD?BxPf)E^Kakx+M{@}c|I5n%?<#x)ogsH(b zRIZ5T8FXom?mHV0?&jZ9hfQm8>9)0Ls7n*B~l$XO9zrg13?Z7qc#oGo@rKsKCK+!U3$FXOLLA{(jQ0C$_6MQ#x2n%+$mi_ z+Z}rRt!zeQVx;K}AtTr@?qtH1CVkhzrb$0u6WKWA9aGjA{`DfG*l=PKDEcQTrCS*4 zH>J6!=c-AaPXChI*~7K(BiqDAKHN8TU z$yyV&!50^S)ewO0ps^Tp-(>2|O-BTG_Pyep@?uxQ z!avM}E9{)E>7S4-%f{v%%eFfz?rxJEfrWMn?uO z&ot<)LLX>kp0Tcp!)?}zx#U=6AFA$nbZfd5$7Pa%$`qj(Nk^`Xrxv))R1JJ6(bCs( zM$bJ9aZjtJ`=r=p{0pUC?)4Q zf8^y;AYE%igCb`67t^tm^YTl0ck)$15;Kl^S*8kcPJ46>Mcj-JY5DxY8b-aXMvd!U>+LMz{b#@*b- zccble0v}Se23I4-$<<1b@nLlDlH?p?&T^s7koZS)WlWvGTV$PzMmB^o@$iJK_bbgf z%jA`VJ6qlt6+YH!+8p;Uc>Z+|+h|NyeQV^(=`w3TjM3D*4^G@`<~f48WiH2ICybE+J;aTJTT&ALsnVK))j@NGqGc>lDl zFl}7vL&ax7R;Kl^tf|$C6?69BDjcE0gqpP-{V=bdfp#}EKCcq hDrj-ty}o%@!FHY6<>E_<=j9&;02bqou04Ry{11OaRxAJj diff --git a/DSView/icons/light/about.png b/DSView/icons/light/about.png new file mode 100755 index 0000000000000000000000000000000000000000..e1810a34088bcb1afc73cd7e7061b6224dd11d51 GIT binary patch literal 1556 zcmYk+dpy&77zgm*Hf=Txjk(4uv+k5j8o9*E$dXhPnPynbX10t}wv^I!>zraP%{eOT z>_|n8lIaNPXKBeHT_%wzoTF@|jx+T-uh;qG`981L`}usIKc8dalno{*TND5QCgk9t z2z~dTEkn5ey~0R;sc%SjaC8O$7-41$0!T`%^@!k-!$^n$1Ek?9ckIr-`tL-F;s)@z z$t(^as{(`dWX#o55Iuv&VX(OjRvLgo&R?i^)T{@x*jXG#QZg5in}S5WqQ5JL9zPq! zaT!cH;Gs1|>LJd_S!i;kSPDIl!D3BZH1&zeE zf%2ctDMzA$3U-Scj&l1=f5{d#$SM;4Su9)5a#7j5c)`^AJgR&99%MQy*s8k5$?0!p zH-EkAl)R+ZcTTFa&K!N-o|T^dhGzmC zFgRBfZQe6qhUgi3w-Cv}_c0T@AvlKJ1dMIz+InA%9sr{3DDy&BoC6m4&@=_}d@E?MX+QMUjY_^KaPoU;;JDGbDRe`zz^u zGf&MP4NAkIBCFe1-nyuKBz}o7_CkMs$4|4Uji-bu2NZEEqEjvOwt%MG>^6O|OA7Z_ z|E^rBWEz*g4Lv4t8x`~g(Yq?uiTsQl^!3iZG&8bZG!!&fCukctFhCV zu`SG+Uhi>x>c{ky^ltJc1ZU^Xq`*Wv6k9B%C>#}b{GwrDo3F-$YFmwLv?<5*%u!%t zQ;;LVjw(ow!7vP4+$$2m#ACQh@I>U1Y%6{{_+{NRQFyzp#r*w-d5#dz!rst91ik~_ z4K)%hMYa#FHK5mQI&v)zonz}gke6<$F>JazzR$>KnRqX7npl{&V9_D1cl}-K9@MhT zj{CL5J49Jaz8vNNBnI{HihIW$4(!9vYYqg?J5;xV+p?Yd^D0&&k5KRw;KIO5SRyp@ zb(9VKmP7U9r$vOFxk;5VXB8HF*NZxTuBq-Bh`neTqh28_cb)qRbLUfkc6k{}uKa7z z@aPyMu8vsn0J6l0eY@z}&_K94MB4Y%Hze0md`{A9J50s__PK=f!cIzed9aD1mF#v(5 LtDnm{r-UW|MQ0QA delta 56 zcmeBY?q{B0&-IXnm&rowX4~GI6FuK^IR`m0UE48pdjjKRCq_$=nf4O;?_MUXU;qM7 LS3j3^P6CvQ!P-!#@cnS$Jq%60=KA};O^hhcI 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/close.png b/DSView/icons/light/close.png new file mode 100755 index 0000000000000000000000000000000000000000..a3de9ec9696f8676419c3d027d3e22ce31408c6e GIT binary patch literal 628 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/dark.png b/DSView/icons/light/dark.png new file mode 100755 index 0000000000000000000000000000000000000000..889cac2b84021474adea0d0b86f7501d04a317ac GIT binary patch literal 2090 zcmXxldpOhW9|!R7W_G|xn3YpyBGt1Tev(7TA)_edTo2jC{KocdjIc0Dcm%N6k|OdqzLBu_ZIEpqzgD|6+4y$( zZsQ_jZPEARkAa&`H(R1MefBi(4vp6W*9*Nn6qO%9eaw9crgFFPamN2G5r5_G3QbXk+)Ug-uYF8s`?g=;xF+j)UL8uiXg4M{8CFj_B!LJ1$ zpo1PH@)gV{ zvaf7rznn;Nw*-GM)lP30KsDJ|)3k-1fCIP9gI1zeXGQU!niL~*jXtDUSm-)JmKDIZ zz7qH*-vwd&;%O)<5Dc6(<`X9r#bGw5Vk-hY?MXX9ZSJ4WSp$yym$U<@R>@}0`3LN!P8J@ z4AM6kyXQXUk?0=?ZRCe^bZcyA7}n30QsNesC^-7ccgWCtYWe)ZLhs&A(2%Lo4Z8^a zQ*#OblQ(a+fu}to{CffSj2dEF>Ln-Wr;E~>`JZ-){uF!SZ>z*qbx+6X?a z{86Q8+65hVo*k4H4eEbB9Ml$i3IJSm zC;(^!4Ny%`y2rZ+ZSOkbL4gqEFC^{TSI5;L>~<+2Q-up-8}ER5KfXS&NI9bIRFA&O z?WZZXWYa_5*ue@T(;ao35mw*>u92uakp+-9>ocX~E5(*^cD>=<}=@0(hgFvyZ> zqQ{*)X>nPQT=e{-NS0P#h{{*~&PuYKtBN#a8t!RuAY(gc%G+k1$MzqW@!v6?uiSK4 z`clTiylJgJtawv}2Ju2Ld z0W$l6hO~XseVXO4A?fR|F{cR`7Vi$xtZir-nu1(X)S0_bi&qvxWrW@Y8EfX^{)uK+ zFF@5POX<^D;PqTUr0B=bMDQ9I1C8?asV1gUQ1JQDLJ~Z?O zY6i2pyH9??!C&h%DlVfFpYYO^h0v#M)B|+MYm?0>&`OKSMVBJv(--{p*s5t|F?H}v z{qbiOF2=Fg6V~iMG%b8$dOO;Z4VPB0E>GF4eNQfb>e!0~1!2Id;ho`RyaR(6sM%C} z%SMfK>yb<7o0UddU8*OXOR7u& z?g!ync6dUn4?kRvBL_XZv=iiRq8|g>xqjRtodgYC{}K;<%layusO#9y3Um!BlStcP zo!OHJ-^{;nAXc97u);K`KloVO`|6bex+`z=>E))D(1!Z>l)`W$bKFPrQRV%uybq_B za6`MKbi1u2x2ey;4kEUUb42CR@3oMVyx=M$?#<7$1Zor%;u;U!VZ+=K=; zh>wX^_BNo75Hf%w?iX0C+0MgHGy#4SVrXagG)r{ux-g6)dJIohO__K<`XY(W!K&-f zrf@livt3CSRZ}O-IAqx3{`Q$wqc^A*;+2P1BY|LrG?8K1BRxr^H8!55kX(o3mY0== zP~qscuBWtbJ^}o~(?@mV&gYFU48N^Her+k52&S53Rrm%&s?kmfU}2rTXXNgRt$R?W zm)^!Z&0}T(W^G~Fk<6c)`u5%wP6vGHA^1%dWECLQd5Mh%>P7dix2JSWxtYC2M~&v# zs&%U@Y6VfVr4(Q^r@?en#W*2B=a`f2`S8<>fIsxn&Rh)tZFq`o>dVo&TtZ&Am+1C) zCCHZRO*-vS6}`or_}D7)c32MQ;uW>Wb7#ovCs6V;w^vIhqk#Gmy9vDjcC1>>2Qhth z199jC3`g=6is9S-zD?YqS8U0g&c)8OH1xU0W%s*sowZjwD%u>C z4``DuI@coM7gk2J&l!h=0>89og=?&Z6`<-p*K^eG(;=PsJ|Io<0RjNY-o>u$KtR&J DI(w<* literal 0 HcmV?d00001 diff --git a/DSView/icons/light/del.png b/DSView/icons/light/del.png new file mode 100755 index 0000000000000000000000000000000000000000..d361cfe3b38d5ee94504c6aaea36569ee9b1b00b GIT binary patch literal 680 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 c%Dn3WhjUHx3vIVCg!06x3XL;wH) literal 0 HcmV?d00001 diff --git a/DSView/icons/light/fft.png b/DSView/icons/light/fft.png new file mode 100755 index 0000000000000000000000000000000000000000..cc26ab4977f351836de9f5c6c4b627f4f1af7b36 GIT binary patch literal 1808 zcmXxlcU03^76paP*v6(%^; zfGlQqREn&CM2bW}${|XTHY+fUbfqs%>IC=fIq$xE&gXvb`}d_d*k6%BDWd=Ykg*|? zsFH4eR0x>le#X2#E@{XRvU4Z^NMnx*1QhU9JN%uufY4@r~-)QM^`C5$*?Cl6K- zGsqVZsm$D$82o?xVJt5OuyGjw<^M6O;J`pe5F6MO=QK+Ub`-nDWCt*SCrkZW03h|z zhGcP#!(S|*q{~|?b;MLRRN<3FwuBemUW(4N&F4S-7~hF1-A+F17;O>+}_OQ1l7Xp8s~+K%wc z(^Q)er&lxwqQ9sl0SnWQ(wy{6UzJtR{J_-wPD6vZBn&BcV8JJlMAl|kKI zSXp%(-AWL2qt?i73`SOl+iiHwgQL^*kVwDGf&CZ+P}wp{1?)_1Y7jDN7*Wr+ z$Gtn#%x=HG@$}dPyjE%(I@f`iOV*>P(;+_iX0YkG>ISVYy1r0}1Kw7qk-jPu5n?#{ zdhf6!J`b!bkXDP*5S}RPnx8@@`-`U34~vjcUefeaQ)TG4tLA>c zKZdsH(Q(kJR##zOBah5Lav=H%)^~s=(Jvx1d6!)(f(x?QuY z_V6<|R`?DOqkmT{+19|H=z@4IQHX}*P9tdjey}D16FF?CNCWR(vit+fMIMB6-2XYQ zPtO-9lwgFfP(9LB&hF@dw>eg2f>+4E2$0r(7_Pir1!UT>EOqM5y=c7}f@q;r+b#_% zZVk^)jm!iOgd*2H{qJeaw3fxDrRfK=Na)$<{09CWHLPc z)K7m3r$g~-%O17|uiWOOmNZ|SysnV|t=Y{#CAWd2n<_L7Dog9U@bwz^APu-eKF6x& zc%)95lmdDNaXc`7{JA2C9_=Q|{rUC+P@HN|o&qD^dN4YE|LxvS{(Zyb))EKE8800x z4(K}0ynnlM@rI4T&RYDzGXtMVWYz$rG1a<6%5hE;tM-)Oel0Jf0zRHw1N(2^V0hGY zsa3!H#I4y;o!Lu$A?swOM z%oLgZDGYCj$ax`AE7Exoqx%C19$qYLrp2=w&CNEcigIeqQwoVitwV#iwYz8iGk_26 z6m@gjXk%RowO&#73TRrjVYowei& zejQ;hXb0qUQ0l=H!m?-}`tR+x)=z|1HN6(UF^m8%09()0McC=4O-{y?QaI3IFDH`nNij#_d*=$!?MArpfFAjVg zJu=BRmK~E#c|QW4U@jz1c7A>7T=XY(Bw>+M0b5E(l@itoD|b%9e?je?KkbIf-?0?9 zouz?!_P?4GU+ar|)sSQ@t43H|vVO`5Jvu zAv-GhWVV^PsRMEq(yZCf=|_$oDz9T-6Oc0I_u%_H$f8`6I;;VeWOh@vDHcI oU`N4zEa|h7hT0-XkddS{VHT!}n{skoIQm}z8*6(~r6oP?FG?5?r2qf` literal 0 HcmV?d00001 diff --git a/DSView/icons/light/file.png b/DSView/icons/light/file.png new file mode 100755 index 0000000000000000000000000000000000000000..4dfc6ae949ff67eb53a21994911bd5af7e9dd591 GIT binary patch literal 1629 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 iUyhOcoTU;GD7ZusN? literal 0 HcmV?d00001 diff --git a/DSView/icons/light/gear.png b/DSView/icons/light/gear.png new file mode 100755 index 0000000000000000000000000000000000000000..794195c65030b1a8ae706352b299ae9200a1f023 GIT binary patch literal 1657 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 AU;qFB literal 0 HcmV?d00001 diff --git a/DSView/icons/light/instant.png b/DSView/icons/light/instant.png new file mode 100755 index 0000000000000000000000000000000000000000..8acd5871abb3acb61e7e066f54ed90fde5734841 GIT binary patch literal 1874 zcmY+_dpy)x9|!QCF=Oszn2B;7ii9R2V{7Di{t_TR&TvDfbuH_YDDt<1AUOM;AkWn`=X}i z?N{<)@V?35C8cqIy2gioYQpirRJ7(Rz)6$P~ScyqIph4&1 zUbSj}RZcu}J!-~drNjeHDjl?X2E9J>ZCU~^i^+)xqSL>u$FW~GXK`cMOm&n4v_N-$ zP%~`(h9jDKbBa!yhSUBBN`Qa)swQobLL%gJT9j^^Y(hToow*mh zzd`@#XQ?N~w&x!pqByk8>;mSO?@@%UReG@)%+18I3z7aTy_}|-fh`~U+aw+jy0V`u zrWFebT&@2?DSwt`pU4*FD z;ab%}L7Vl9x~VaV9XM-z*l{fv{2|~wdXrOdjBVVBmzHGm8Q};N2L3aiF;1QI5k&S#O z7+zU5Cy?kFzL&@)0=l@pXLO%R+cNN)Xi2kDBU#W>l(SdI2%(e({gEZtksC4LCBS{b zTdCcVO%zzGjl;aYl)#Use_6gW)}-lAuqOWw)k9OFR^ucfS%`=H>0LjTjtniY0^R}} z(1cPpw0+52zK8B!d2z58#S>POY70d=nrVP(owAIEBhCkHqagVh?01n*G!`#lC}%fV zle=Wa5qi42fgo|Rw^Rs-2IAy_Y^MYnA?j>O)yJR63nB6p+q;_kx6IZnhY_8Vrjz|A zjac?^t{aL%piQ>l!;%oBI_0W~v#WV2RkuxJ9DXjN`V_>bkHMxZFrByqz%%PBy}0I< zRCuNR3|C*b=W%&})n53+urX8Yorx_MTz(r=5RMO01I=gl*aE4@--It1OSUtKE~E@a zn`-giO4zHDy(?~ash(W2h^kw6joTYtFTQ-FHVHbY+wB5;3VsbLCZCCt8ZV#O?KONa zD|U|oqp-zhcJ-*B0rwKYjZj+^!z;JVrrbO{xrj z=l$Aq_p{xw6UEdEWn193yIwirvZLenpUuE(B)cGcD6@Ot(cJj9zFBXSaOBgi-eTpe zmqaj4pp#uu$Vl%lq0y$>l2F3HB87w7+Qw+@meSJIpYMl&GG7zarPaxcM?sI=4Sd-C zgdS(E5ZgdNg+EvhFNAg~v-NJkHNJZYDim!4k1Ip;-p=XaucS=cCx zY8zcc<7*NkBfq$o!?cj@nwfvP!XWCV;M=Uwc8RwXp?fLX+pDtgk9{b4^q~&aky;8v zKN&rYpgez?XN}#Gj+ENJU-i;0GpK&#Glrn_Fh- z`DWxbqmCs^cXHtS!+cyOi_4{T8uPa$lzHwH4IGgBG{l-0RE*zv8stCj*X~$F;3He@ z$R7BU!sy1QRtXK+o;R5z%N~18Cz@eFwaV`6Y+}vs1b8NtBN_@>Ggxr{w^Q-lc^1qo zoBok`i!(7@`UVOdAB-l=LH!KvH{AK5v(>!Bvwr9Wmy*JBZ;$w4Gc8@;ReF~fXo2Tx zr(U<8nm5ZtzHby)F5dZRQb<-I3lSzg4msP(s~W2qj-yEN3G3%z%u-mM@;qcI5C6ll z!=!a9)6q&0Bb$2>1zr-*2aWf|zt)BA*z_RIfk-4;2%`a7N-a<*iRGVTC2MLtk=RlGA>j3OEz|(&N@&zZM literal 0 HcmV?d00001 diff --git a/DSView/icons/light/la.png b/DSView/icons/light/la.png new file mode 100755 index 0000000000000000000000000000000000000000..25a361aa03e40934de86d0ca7f06f725e569b1a1 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EFZXnDkGR4^uD9B#o z>Fdh=m`#FHiFbmvhaXtTHKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1XXgF?NXl(xT*4hOhsd zU&E9+=jZ08=9MsfJ2P!RP>cDHGZds<|sV(ue}yZrxuGu&S<7E^IkRcTq}JodtSFBtb&F(2SzFlIQz zU_b^V=lbj3V})m`xGH8X6WMrQXlZiB#Z_^w26^ANUA1+*hd0zen-p06DEs(@w@PygKkzqxwlytc$2 z<*)2-eACOiEfnY-a55qO*W?6`hMf-{m%hvHKmJ&4`l_pcq;LJUtJS}Hy&-*V=g!|d zzwVl5Xj6UrXua~aS0z@tpQ1L-Vu*hFHe-e{LmI;j#sszo-FFY~xG%Dwko)bV#oaW9 zi0!H`wyXYOQ#h_Rujg_tTZ1G}p~S!115x+PyTF?6vmcnlNKPDpW3G-tA$)g%f?(iR QVESP2boFyt=akR{0QzD#c>n+a literal 0 HcmV?d00001 diff --git a/DSView/icons/light/light.png b/DSView/icons/light/light.png new file mode 100755 index 0000000000000000000000000000000000000000..ab90576cabd1f782c2cb5a83b2f59367b859fdb5 GIT binary patch literal 2081 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 Cb*Q-j literal 0 HcmV?d00001 diff --git a/DSView/icons/light/lissajous.png b/DSView/icons/light/lissajous.png new file mode 100755 index 0000000000000000000000000000000000000000..868be40afe0e057e0144662b88218b871c67048b GIT binary patch literal 3790 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 hLV`D^N`AjAJ~b?cJJYD@<);T3K0RYH=7J2{x literal 0 HcmV?d00001 diff --git a/DSView/icons/light/logo_noColor.png b/DSView/icons/light/logo_noColor.png new file mode 100755 index 0000000000000000000000000000000000000000..3a39b2e852ef51030cf38f1436a8fba4eb2c19d0 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfQ!3HF=w$;x9Qk(@Ik;M!Qd`Cc-ajG_-G*FPe z#M9T6{V|&ar!_0OSEW7_hC^WPk^~eLf}Y)0!YD$ zt9Bn|9uK|=v4$N>^4OP7JmdAggle^p9julH9e7`Po zqGC_0N&sHF?;9&Xtj zzuac;zO`T*!Oob;A(32CX(Z?Lu%Y(8H;3YqDeqLDH)==~NU+UMkI-Hf?Y=wx^RDaF zM~)a@Fb28WLv+Ks*XQpDfAkV9nD<<|=%Pe&>eGDBDOwNw8NR-qAG9m_XS7hM1(Q(T t+Sj|h`wG2o|J|be+STPrXxN?l`?vB^mt;O~y9JB}22WQ%mvv4FO#qP00+Rp$ literal 0 HcmV?d00001 diff --git a/DSView/icons/light/manual.png b/DSView/icons/light/manual.png new file mode 100755 index 0000000000000000000000000000000000000000..b0b6a71f33b87a93932eb6c2cfb69e89e25dec7d GIT binary patch literal 1551 zcmXxkdpOg390&04e*4+g=(rrA<5FWGHOVTH$tIgp$%rIQXKRbi+Ln~|^c$jksFX`M zT34l93b`$(nzSyY6NN((x>Af2jx(L-{PFpIp6B&>e?QOnukWGt0jo&_3jzRu#PVYV z>NXJBIjqpID)gE0O`NCbM2=n3-6RKo-LVmp`{q0Dxby7~Vng zxu0^j9OQ6J)cd#djf|5VPO@|6IyKe%ttXG5LK%xT+%?&xh;++-@zy8Z(RM z-KWd6zwXDJW*=CR){5yscYttAZa&+a7K9``{&=g<6f3}`$!v$*#hm7p_yS0l(_X}M z9JQynEKnisOp7!l)5xkUp#wW=GohVy^otq|t9Y!=0}dm@fOQ6Jb#I?gtSqn|_h>re zKR4Aw6d#%bKfb)`UT~5Smnza<8spMaWp5Wo6B-43lix;Hsl^V*4U-%ZH}<2 zp1dOMVxZGc)RYL8;desCTokY*kB;L4V5siVrr26#>U;cJ7>et=JW;6R+=A^PR4jy* zv~CSKl6;Y(()c1CNUZd7C}pr!3H?>2s%+3;$j)FdF11gJqcDb3+a~ns$FuL{d)ndv zwJaZTTUna%Gb;akBTa7Bi2K4V4z^QSUT3RLVaE$O__HHc)It1^Z;=tT4^_wKK=!rR zHG83&=Bsdg0{umMfzlw-^yZvpj~pVL1-odk34eG;&U+TktLJe7qunQG5AlQV+jXz# zUfv*YGRrO9=Ryzk=y6CpgeZk29o}M$c(1**NnN$aah=}Xqoj|(0If#y6`{$g7m9bu z>J0ULB|hmL;SHmAlwK8j<3;Qof5l*))-4wixlS}aKGlk^K`l65`guv&UAT%?K#aGj zoFCk}jaN@`n?D#lse5=avw0xtjFDB|D-kc1+-b0nB)j+a9psN}MNT}9F&xTNu0x)R zpIEW7Nt)f+9?K61E*yjV(b0+u{IoqU?$pgA_ewx~-q4z6vy49(rKyT)r>PIkuRf#L<{ zr@|W9^m^rn_l9eC`&&RMin#7M-TDp1CzItF542<73VN)>w=Z?%4h%E5V>U~E51Tbf zYOK)&Ek17lw$Bppi_Wg;IF3gHt5p{KL7_ZLQnvClWDc1BwEtj*M1W+Pd0bcZQP zSOG1)e|Q3CMphep-FslP@GvovM_cev$Zymbe5bW&&W=PU*1>b6E#D@E=4O@JDTQnA zoTNo4k8>l=86BO4yu|8|n`({kNm!0ug$}s$%Q!u7(U6rxc=6o&lE?2@=1b*tZ)kE>L^LpI7Rx>wopcI75yL}~d{ngjK qRME?RxyzbmpStv}oyhEreq(*HJY0M_qI+2P?*SGwfKj|EGVx!mq?;N5 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/math.png b/DSView/icons/light/math.png new file mode 100755 index 0000000000000000000000000000000000000000..39168f0d8ca2990b85bf3b24ce2465c2a2fcac6a GIT binary patch literal 1544 zcmXxkdpy%?90%~- zmdY8OP_1Otk;CbiA}5hJQ3+@3yv`rb^L@SE-_P^BUeEWBr*NOIy9!zh4FG_Orw1uO zT8XlSRFLjh>4|?y3ySFxk^}%s8)ORxRC94sR0KVJ$cnG!u&VZ&CR5ni??gTbx+H^f z3>I*uRqP=pWl&0_*rXU1oe9zz3BU%_w(U|!%iN8@OlQ$)aUjr)5j#j#^}DiSqhwJ% zkRBfk>|Dm6q#cy3v!6i)Q=?e1Ksa+<7FYUyIXx-nSd=u%0y;#3Gg3y%_&^jZfu2AE zL|dlvrKb4b`D9j1EbwVPcjo_?8zVkGHUR{d#O1$9O+gk5q=Uy|fy;9eV*rpF@+7$g zrg3L$!V7|eH2SiWXo4H+)q7{%jBElrvkUs`bM$H=GK!q==LDj-hs_l>J&jt?uI=eX zNd0z{=}bcg+Dtb?&1||m`u^#YKBq!1lS8Wsr5*WMmbJH%mTtWrJ3~mIt}$QL-TWgW zbJjWa`rT!RnUu0elQrxWPP#z1kF$-iyKdNoj-5AXy9`7cv0qt2+bMJyBKU?{+SrgS z;22zQwOnSBvH(y+=sMNYTm^k58_k>u`Rx>d*fiwD_>Yy*SZmPnf)|7 z4fvkN?^i>kNUqNFaAr-_YIXhM2K;*hccYx&#PdVimwxOtW;-7_ti+zvSV?CV^Jb|_ z0r7669`^Mn-VED4Yt{)Kp=j&gJJTah@W6eBLz(rvii(wSWh8Z!6RC8aTXs8-fzs}G zNY@p=X9PTt$iRf72>Y}2g`mn1 zvZQ=Ek?%L)E<#iAE?tPqJwThL(4iNK8*S7Hqes6{wYBAZpN9}GBwS&bSVPKn zgaY0S2kRMDI@&bJ?2!$|60zh}-7aoyncF|+1JWcLP3gc0M9@aVpos^xAa%!;Z)HiY zHecRKPEQpt)#{}ClY%`*R2;oos?qx-0nl-%AwywNoq62=;d}qEd842IL7&y}$-?H| z1@$)Vk@Nfk`{J|F#4x-&FyxmxyJs|wys{%i-!M#~z}>c5(rzpv55t)GRgSTK16077B$dAz}oAOj=8sFePN}{JK`lTNN&!tBQPhYE9|0-5Q1J41YOg zt>yrGG=VAc5>2KnpY#>&`@wsRV_tT!e6&fSp^sg|(KW~__7=B_kLrPN(S_a*aRUAs zcCM(#rlRp(chHGl-U|l!-~UnPI!?>ko;%yMT;5;#;)#)h98sbL^%^}s9z*r(5LKX{ z$kwy9L z6O_9=YP8EWv|%PErsO!eI^=2I$~E8UTuk9sDso)V`VK_9o`Jm<6^Sf_f{3{u@l(H? zfyx)=gUeYZT|MIpgiFs{*X56^W#jq&lx!VD!-h74H8t{zq0Tr-`c_rXO}%v;umjQ| zWGGMHdxo4tv^H`c4nIW!2jn|{9emPY#kuGYSD#`0Ss?g$!d$GBzdc;2KT)i)xcntX n_~sO50Fe!^(10G<;lJsE!^A*6mxpQ64-fDp`;uB+DLMZF{iLN) literal 0 HcmV?d00001 diff --git a/DSView/icons/light/maximize.png b/DSView/icons/light/maximize.png new file mode 100755 index 0000000000000000000000000000000000000000..08d9385395e8627c5d1a9c52d9e425498d04e710 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=m`#GqNMrJD14girYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC+GBGH~Mjv*1PZ?A9UWKiI72~>VJ z`S0-)E*phhjyO%&{3CqX$HEAeX)|4CYSqdf;BVL_z3cbn`I3U$&i%_tNKxN+a%Es8 rGtd|aINtl>YMzDry@tYBi~-D6zuEauUw)aQ1d{Z0^>bP0l+XkKHiUt5 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/measure.png b/DSView/icons/light/measure.png new file mode 100755 index 0000000000000000000000000000000000000000..41c711e7dc5828b4310fbccc39f2d00993df8694 GIT binary patch literal 2865 zcmXxmc{tQv8wc=N>_d!wiy9HxLxw_S24j$Hk)4=^!CC6?<<%lTI z)2dz@E(w#kgbIodjKUL1_=s?jgy3Nnt_%Hf%Lrn86dre(1gaG6HRbAoe>Ez||4;M~ z2_F^>IasK_GA9{+~GP-^20IfdqeUGz!!R)Ms*8;16H$j|#_! z<3NDI_f)R&|8M`5sK6l5`u>fD|HmvN!oq^WNuZ71oR?hV`xA4)lL$eevSrp$?!CV; zs535cjHUd<8oH}o*EPjV>UfxNwd~`wJCEbfIN@5(hs?V~L0W=u1zyBw&~qMN7Yn&{ zKQFfX0&NiqYwF4?XE!74qe1Kb0E3ts>hgSCImTqC@3qcK7Ixn=8Jh{Lw|81AGb4 zF{_U6#qHEtr(%xgEgib>G$J68t>tG}gFd!rKzve^kN8UT<7dlb6fW6$=pU4YH-j1> ziO`o&rA{}b(BJw9CTIr~=(OEQ&%>&ohr`mT7uhjvceV>V7!&H`?aOvzj{!d@FTpp+ zA8BfLlaEVT6$>cx{RYR`vC8V{{oo0(8aTgn=PD4#mhwZa=n>P38iER4QXDmo9tX|B z#+Bhl_ZWjj!>C(Doq$%7&c;7HJ`hDg#)U^Ft~_)^&80J+Yp6a2Pd)GNjRbhCWfU3L zq8<3!#Ni6UX>jAF2J_IbCw;{k;?L$o!&T$7&xi9iM8S z5=QE6ZY#2z4YT>*OId69;i8~KllP$U%!V&iD$>~EH0!<$X!ENso`f2r$I2~mAMBKD z;ukGx$ZgNd&Dda_HS!*CpOynQplATu@JJsNfkzB(Su<^>J_p9sQErpZ!#RIFuPzah zRMS)Lw?bKHS+B-{wp1NLgKC{o!krHi^qE6@@JP88Ijx>*oBmTLOdb{ntS)Cz&%pJa zSc*v#8I>if(g;1o3rHy%71O*77Jg^6D;viXF%TPlMYa7xVCFc?o!szk)A^$%kP`RH zmuFmaZh7b>cvKhBrZJ}+H>P|LZY|~EnRtE((hRu*n6D^X>pf42sUw#jNv4{GD)EC) zLN&=|lz;U6^T8I_FnKZsFr$^^n%Z8Z7W6K|Ba>FUrpWqmIPXZKgCtEqttKHUqZLdL zTIBoLV^nYm?=`=s%C7a=wXIZW4h&6JKq`(3Afa)}iL-LF`RM4f&Ze#hKoel#?wtG zsKIO*#O&0uzMYA0SqTMpX-XZaZyZLEN3kd^$1ja$t<1LcGtIb^W7Xl{?l^gP?m<#2 zRhGtFfdQE{c6p+Ve1>i3`MW@7WXSvgbyO;%PHPwx+wlHJB>S1yM<%dwFTKz&RsTTZ z82(xMwbLlZF+3mhQy^J`=Cj-rV0!&|N)$Zuun%zqdmp-}Ip^ENGy=i^!KUusT*E^M z^VHTkOInFl#{}R;Q?l9RhhhgOH)|ZP!8|uG$hT`Ui#5UYsBHRakDDaa&sW*jd-3b> zs~{)BFTIUQ4^k!-jUJfG*MO-qnMP42aZ z6#W>UHeN+a!?z$>PAq}0{lqJ~hiGoE&e%niNPFmVtP@x!4k9E zII%IHHW^#~0yYYREyn{3Kn0+QsmFECLw`eXWQRNT4-2paiD@Ksv&1AG@_=CNJ1}l* z-0hh`ElZ<_a=FU6TjtZ#~Px_7O+B;dh%9Db}Jv!-nXmEr;)(R z!2KDmtJ-tvF+Y|0ywK6xYp109u@nQ!rs`)U_{&$uaiz9zBKBDZ&0ofV0f1(hi#xvl zxt3R#r%xw=;yMJ01+_6WHPNDBi0L&4z7qfL>`t*oy$}xbpcvfP&wIOIxCfe5f0m^U zZ~y}P4dJ<^6SVL9;tg%4*nhNcsit0NKZuOiPf9Mlk3J8P;mm2i4JA)9hmnYwE`0eMZCQ(s z-H}i;S}^%Fb#va9y~<=Ry*M-{M0kDl(wiKAeP8t(-gkiyhTeAed{-H2!@_ATwLr4A zD&G-re!F*)1p-MTrJFbz#!;XF*uwz1E3$fe2=lRlROwbatVLwGLoQ3YF?=;02R>&T zlH+BA3xKXzGP2DN;9RR9=C&g|Xy24Xx#~?~UR&8Va`SIxZ5(wt?J{I6Kw>iSCP|%%R0G;m@3HxArdN>-@jsvAT`MAZ6PGm9#}yq}-ULQ(eX2#zQLaGWp&9 zrwzlLAu+fNSb|&&*N5vy*`W--qN{n-unF2hjya{b5kR{q%h#Z=8Dy#2nx(M-``O?2 zH0$guT9U>ik_ZRfhmH|IYptlW?0Dqq7~n0mX} zF8LJ1Rf<4?s1NP}u!7W=qx#8`zNh zP9neOw8|5!zY?CbwY6#5-+uSlW!TNzQ@vphQb`+nqztBOs(glpwm;e$pFcOKJ=VO{ z>ydE~tvzvTm%LOn!niTnBd%v${NRMZ-Q8V)H1JtrW}VqFb1uT}vMA$Oyi9i+mbD-B z46V1nP&WGmwWs`k+q3EV?2(#7rh-~j2MFxzBzB>w#p_%pjr%hMVbBh!sFdh=m`#GqnDKql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC+GBJQ3pjv*1PZ?A9UWl-Q@cI>&K z{=0u-r%!*zL`}P;v*+B2+~)o%?Ta-~DIC->tci{Y^}ps-{`$-#-i}N*1>PH*7`UuY SpF7q8Qsn9C=d#Wzp$Pynu5}>* literal 0 HcmV?d00001 diff --git a/DSView/icons/light/moder.png b/DSView/icons/light/moder.png new file mode 100755 index 0000000000000000000000000000000000000000..09e01af27efe98949ce6461777b522f70b6095c4 GIT binary patch literal 2038 zcmZwIdpr~B9|!QE%v_u0=!7LZ(p)On+)Jjhvg7Bv+%=bJ%*<-$5*@F@N~jFwdT`cB z+RAyMb(&a=LdqtJgb78RnYm4}-*kSzzka_zp6B~|y}zI5c|EV^pYLTKG*Ux#uPOil z(D3p^_{yt~eA%lg%lC7wS>^HqB6^-l0RYq>+e-mZUb#n(K(d#&2XJ}^2)N%SSQ?~Vp6cAcp^DIi2#6r_QT|^y6x^sL@Fsh4o3#u)9QDW ztLAql#YAmK4axC|F#y{&Es(qe+V1!z#gZveq!>ULQMMgd`+j+R3N|519wh-Db~G2s zS!J7pqDX{zLL8t&Z#GYEz<$w8wvOkxHuA^eF6eOn0XKV>$w}gN#~@sM{EKQ)f-zedpkOQ zwfJiAsMR0KeVE4I{7w5}Etn2?hi2mh8`2<28d_oQo{}p(4!(B0_SnE&+OZ?-wXf1j zQ5$PDGl}vwLu*drERt+hi>TF-O81Fsm-OXVP+;58j;)bF$b(%j3TppbuqVf&P@i_` z`%0^`JJq}iTvZqm?eg04l{4kNn+ zzqaP_XsS1T9o6S1ohvViVY3NI2|aD=4i^o;A;{iA8tA5Pd0yWU%1zee!BRxcRNP`1 zW-pl1x@>84iJ*4VcW=JggI&m>t$1C#$dXOS*Q3>4nlXxnozWarxDmR?GW85|LcoSj z&}g#e<(4eP@!dxlHlT=3kCxeSOwJ4&QUMc6Sq|f4vOOGa3DGikG(C4~SH6+3fgt@{ zo*nQTrcl~4yR!ZRp^#<~mOSK8)0w>A6$WG~Y^v%~%sR*(9dtf-sXqjR56}4-*;RfP zxYHB0i9hFbZJ zd-fLh?C;ti#+{3c*!@EOcAHH%G;H!KI5|FNElvou*D1o@GJii|BzzRyJ}nNU=05S; z0$ub%pSp1L14n%y)7AB|HLR}va)Bdi?WxG};Cp5B#Puzc81dgc9k6)r+xff0e55am zG7VX`V(|{Vd-H0}mlHIgW73DkSwt?>5K*5DbMmb=Tm6jS3^AN>bUM(%D4b*{o~O}X zfRk-mU0n771{vi(|4nB^p}(P2O9X{fv4@RSE#)xIh1qJQ{DC*Cc4ZS37~cNn7ULPiKWdG^bcLIeF_53JL#i#ybDZ+29?Y^abq1+x71&@ChLRS zxkl7(jmaL&J1@gV_Ate1Omm20Pgh|#tvb8SO$gI6ATld9g^;7CK3mmZMmg@3`!S;D zNybs=ooV7hFtL~eGc@_V>QEPiSQ5J7$Ye^+0ZA6D;^IYbjqn;AQR#sn^pqKW$Mw7q zC{c8!VG>{Vo||4VbH+Y|JE~NIi%1a9lW$p5)wNn?e5{m4dUZ7RGv&)Kw$RoMAFfEQy!tnDx9|5m7tWhice9=>*sDED=2Db|Gv-7-{k4W}q@ zhM6BKF95kC49R1L6CQg*-SOmlBNunqbc1KJBCZrHMkwi>T7*-J(tdnm2&`xjef}L**w6>#bYuHG8MIY=k_U4uy%FJtX>S2sn6C+ zQAU@RWh;Cx#b2u_q7}}UR-Hu<;u!SqDeO9pTiICnW$D*vVXsr3&(w*RJnAf0voZ-) z8B1$z%DmhG(AC9n9T0JpgXCw}EKa5(wGtF0Y6_irxN)CMrPybK=Sw+X?f>i}*gZG? z^YuDx_$0!FS73DYO7>yLg@uI*yTs8ZlJUmOQb04|-SziZ=N1#PvSirwlgU2yrjs&Q kn(RgG|DO#185gph8(Ox_PI|h#<>L+D<$*@9PDK9lZ$I+BF#rGn literal 0 HcmV?d00001 diff --git a/DSView/icons/light/modes.png b/DSView/icons/light/modes.png new file mode 100755 index 0000000000000000000000000000000000000000..62a348b05430710396f2193e4211bea48e396b83 GIT binary patch literal 1798 zcmY+^c~sKr8VB$n2#Da4gIncNXq)4VnOd0XSmF^)O>@D?B@i(YMFK>E-I8#U_2r1pq8=bHjl0N)t6|^1OUKG?fS~&7HQZ zc?SRfOdg@Uqe;BjL=Mm*9VDqqo2MosolD~|*gQre3&3gZv{XB0)7=xr#bBKQpzX8SYSaAB{Ui>J4y9gW~&YLv6-_7`%8o z(7gD34*(!Xy@*GHQYuvyVWN^?gMoBqQm+FozcEX=jbCqqcsj$R0lMvuTCBEsvaYFc-*s`|26gG7PIe2 z7PTjqBea4DzUDApjV578a6;0np1s8-Z>;e6Ot1*DqQu4OAyJBS%qx)QhV9rc2jb!U z*7rM`R2h3EApXFXQrH+Q5M1}*iVKtw8H!Wb2fLiI@$|s?6XU=EAp?2wHjLp_9FT%c zhuH*-C+$n)o!D_3#6LGqF>2OC?GhwmbkF4iE!$h3CR6Np`#95uC* zVz*o_S+96boYdOOXka6wW6Ra_m$G1aoe=wf3Z=q{d~?L_??m*=_FORWhO%S zqSHj%Mi%y_i;S^(@I%JgnngSDDL4Ih!YU>=RL|ku<6`uX$xGA5i$6AGoI&Pmu+S=d zx4_(vS~=RZV*fCOYjSm>nhZ&vt((agJA&il2MC!%Gndh!Syk?^^#55_@1^karR}+tuH8vlEEffPrg^dFJxmwARhP}{PNSB}eV8wP`))#-M zsFPGwNhR|Hpeu^&g)9J_JAG`Sy_B{`6W=z!&xR}^7y0DMHk;ss2BlKTX-~Gjky86$ zb`?V>6)}Zbz^Lv)#OxbKn%`S1Mk&erJ8IDHIuW~3KU28!@(KSq*rV4EWkhnGDA$MC zj{DRq+ymZ%9!Wm>YWE0fzV*y&bJcwnKB31w3HwpU>pb04Dwhg=m(T9UDlxLO8v~_e zC{gH`Gx8hpZA{b9k-jzu^wjLG?gVacuSBh)coRg4Zx*^-;(tjn`e#JPl@NJ5xoXZL+N&vi>SyxYa`Ad zy4V~+-i#%m{xDSGtH>v=Q5As;oV)wVZ!V_#$oM~>d-Bcq35e>TakDCc9rC+??e?ZA zTT?`TMhGmHH9{OqTJspN-domboq^ucgE1I3uF!|n1+xG~TI0rg=>d|P#0FDrhQ&3@ zS?@Q5)y2bxud3hFugh6emxh0u6TqiY(Fdh=n1z$W$hgDaPZBKT8d2g{T9T1p#ISPR84sWkPYF=SCAB!YD6^m>Ge3_(m{U<1 zD9!~Ecg`=UEXqvJC}CK`f5r+Z$_ExLN=*bQRVc~KO=U3s&d&*y;RMM9=ckpFCl;kL z#1{MqDdz?oo>`onlL%B=#IXIqmVTfx2S_+Pu_!MyFP-6l^s{!L7&}CNX;E@2!`J`K zuVKoZ^K)}k^GX=Lotd^DD8>d-7Lr+#lghB--6eGf2FACZE{-7)tw*oj?(R(#IsWnd zyfzJIJ(XE^RtR>-Xo~B_XfBP>2s+Uktn#Gbb&?v}_enBYT_^rO%6lqs)6K8Gar4`x zZ}Yb0p10edeD(J2&ugAX?tdS3{&v;9prt_{?RAvO67GJm>E=t8*Gn>N9zfPQWDSeLXPfd5oYsdPHkjzIT99gD351r#4jHI z1^Epf8j0bd718atj~Rb1k7p3vD8OF8_tc=SK6s9U7#;F4o<+2UKWWB(!3*(c7#%QCtg`L^nV-;`e>ZQ&I+EPjeR zxbP(UhgO_saC!Z9{+o25frfmuGv%_`b$Hf)Tre})Ldox;QJ9EA%x3MGKR3@z=8*od z)ZwG~j9I5Gt0i5Jc!;V=&AVvF*q8Qf?ly+vNEe-4CeetyjTMr~Gk-2lZxBlewz!dY z^W&L4ce5NWlLx#|7n>PL#n_r4B2INV^pFXqxGiN}2qkqQDk}kF#_j12A zGiZe0pI^9oIz#iS1HEV7y!3i6{-AZ{{q3{&vi)FQu%WN|*ok`%z@)(7>FVdQ&MBb@ E0A*)H*Z=?k literal 0 HcmV?d00001 diff --git a/DSView/icons/light/next.png b/DSView/icons/light/next.png new file mode 100755 index 0000000000000000000000000000000000000000..ebec6e154a750e7b9e183babc314293acdc29b31 GIT binary patch literal 584 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=n1z$WNPmu|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1XXgF?NXl(xT*4hOhsd zU&E9+=jZ08=9MsfJ2P!RP>c=Q%kF9RH}l z;}Z9R4`*c1^hKDUzHaWCYCDyN3HG|m0qYSG*C^e*3m>saP;eH@EkLLrIKT}1UJLA2Ffeafy@wBT~%$jR+IGS<$ jEGG5`96oCfGp<{Bdkg!DxP!UC0AuiU^>bP0l+XkK9(B_M literal 0 HcmV?d00001 diff --git a/DSView/icons/light/oneloop.png b/DSView/icons/light/oneloop.png new file mode 100755 index 0000000000000000000000000000000000000000..4eee0d71f4b5d2f0e88836323b648414c9b4250b GIT binary patch literal 1543 zcmX|>dpOg39LImV@-wrwIblmtBqKz#PBD|~bXq-3QPd1$HO4mN);9IHmt0adsUvmL zRi{!Nl^;6wlu;p(OFPsemn0odIh?KYob$)$`+1(%=kYN4Klxz$H+7zye-J1=fHSo9tFgh)J- zB(XvfP!y}i3&cJG^D|u|kubiLh z>>V{IcYl6Vhe_x<;=1QDs+p9KPsguiy0|#UDf(IlUullUoKC+ce%7m))yrueNI!Ld zVSi%#g4^12fq5m zZpkWc0Yz{-nb_Lgjt${`jYn0gcD+3)4O|(iheNG~R1SKsh|-J~TYUa%uRcbHRFeq$ zyGFGXNw;rKp^7r$s&RoDr9NsIOt!+l9c|bl+9In6Hx$6mV{1vkp7vJZ{VuA($=)^U zH1)1CZF`61nNVDbQECGULaQswcnjzUim{S@p%a7cnF!y#t1(r4fTTRaqD2I5^ULAmwxrm z?hRvpJie*vomsXro9HI1p>sA)l{=C!_NFXl@I2N(jWB1?BKVQPK?-F|zss0)~IBeE879 zxU~w|L%txO-Pnv{O+$~5)l*PCO8lgSFT(up1xmRQ#e{okbc^hY8SUC9OhG5%TISa5 zC*8;q>v>Wb)_&j3I(X>e0?Q-!8N!vdNP#Lg>i8RT`jsig&gheZGB(9yaNCmQMt%r) zUUJMTlqT=hYp=Nh4_U!ou3zlBy83`VA!4?>!H#Xr>o&Nj-yin7B(ElEdxdNX^zF{M zeM|l1j)|Yg%%Po(%i@LU^CJ@Jt)NWt%qsQy>4Tc*;eUKiI5qUvt*Z*2feEu5<=j2P z&HentXW0M>W0y4m-D_&{ddfOh6V6C2m|xtCb830K!}EicUk9DDbZY&l!H>QPh9)ic zD>^~8`*PY1<{jctpS&E6Q56vCz!c|sukwht75*oCk^SfoYawdX=?4$h`cq*1zQ(PA zvB|rem{OZqUZfl&$E=wXH+aq<8Uc?JjjY-e%^qcLFE_;POgmCtA?ty2JAYybVAuJp gE&jhH?Q_U^Oe#u>E&r{!RD16LrVq>e>Sj*XKf4{3UjP6A literal 0 HcmV?d00001 diff --git a/DSView/icons/light/open.png b/DSView/icons/light/open.png new file mode 100755 index 0000000000000000000000000000000000000000..38cd27cb0a191c070d0378136f3324fcbcdea245 GIT binary patch literal 778 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 AuK)l5 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/pre.png b/DSView/icons/light/pre.png new file mode 100755 index 0000000000000000000000000000000000000000..600842db8641d3ab0f332ea01c81f0ac99cea4cd GIT binary patch literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=n1z$WNPmu|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1XXgF?NXl(xT*4hOhsd zU&E9+=jZ08=9MsfJ2P!RP>c zNh%Tgf|3l$54dzfzRnQ6UC^+;;pFel%sCBtVKrwrF~xs4zl%{fw06nUD{~(*+}7DK z(}7_hd)mS~8I3X(@uBbYm^OaUVC1eyWz?=vW%RDdWX!J6WaO_%WYn)vWc06C*U)js z_MyOz9+xGIF%8?qWq9}nO09(E4M*-;<8qUcmEIg&lYe9U4FnS_4E><)~W-+ ziwcCRJf~Q($_Xv)U%1s}sbzv@V5LB$r;D!>cjt>h8STU(@h2WS&O85qHfcWNHRta9 lG)*Dr2P`rTfg1l<{}pV%bhNH`9x%)pJYD@<);T3K0RRR`&=&vz literal 0 HcmV?d00001 diff --git a/DSView/icons/light/protocol.png b/DSView/icons/light/protocol.png new file mode 100755 index 0000000000000000000000000000000000000000..a726aab69b8001b587e862de44aff278aca423d7 GIT binary patch literal 2794 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 nf1&kVpij-qcft?G~(I@$TF!fM5 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/repeat.png b/DSView/icons/light/repeat.png new file mode 100755 index 0000000000000000000000000000000000000000..2a5826560df458b8cf3564a8d49fde085cbc081c GIT binary patch literal 1629 zcmX|>dpOg39LInA&F+{pw?#xQi;jiic<6{&jL0=P)R}emkicKhN{}yuP33`+Wa+?+FhJ)We(M0RYfr z1O-HDy05mdXwBIQZ+oO^IDSyvb^st4Y6}6>)R8q1BV>fqF_StttgEZqGjIP_MBgOz zOBW{d1VBrhEJ%ZNg&GvV-o8};^Mx>v3mD?8Z8RLO<^DW=wg65_76PY;GA|9)|4Iey zM6GHigwxo7`y3Icnc%dOC>|utOcbzz&3v_1CwyHFZ{NyE)TjdBH))sl8CWfjO%!lp zZW16hpW3Zqn1Al43%0U>59)$f|7rfbv@|wX2&iP0S2PT*)uLe`hYd8(-k|^hY6T;} zFFLF4bxm%GoKC*JX6|Bm+YW1kThyb?XD_T0tJWFOqm3A>CAfOO-#0eX%gKiVj@j)w zU{rj$4z8%Yyot>C=^I7_9CyFKEL#1dC8CfgDdz5!%{-d*%9(w%nDM-IQQF~5yOQ+# zyP3~Zl5EJ_Ridj-65j_|QJKCRM0<<3)w%rpatniaU(QSY5+^HC4?KG9Rz}Y$!uMc3v;b(zCt!;X!F8`+;uz zt+{)N(8Zg%%^{ee6mS;&18IuTGcJ8VOn{(TyALRn?3{bhN~QkUKG~_0#da1}Fv;1} zvm3M4q;_;YBMIO=soNCdDh+0qNft>d{PjlVa$6X6wxV9o(#y2_qdZTkfH>x7>33c? zpi%neZU&~}KTg;xi0bcg$s2A!nJ)<69_$K_>`krP3yMkOLWk#750EpCM;{^p+5(~4 zae6z`<#zOOW!HJ)eZuNWr-9Q5@f3oX{+BXkysrZ>KP0FS!1yEw4)+@)yr>aId1F)Ls1nnW0E2jD!_wMOMi8{)3=B>krmQTO$G7d_qaPyB0joK#ugt!XE ztf5GA?CNvQ;eT-LdHseW4r|%97%8*AG`e7g7=C=N=-NKj*nnJ_-J6lX-F9#S9c#>} z0*L6=GBA}y^Tw{;{Ny8D+!hiSx|7VK`k z&4iZFYEkQT^pDBm%<8pCq{*ihoHm`d_oK~Ad!H6aoUW%?#D>q$4wwEiPsdl^_K)|@ zzX1(T*=#{vzij^ARFc+H^laR+)M2-s^fHtYbce4XB&d#)TsFdh=m`#Gqm|d~ZMiMOK8d2g{T9T1p#ISPR84sWkPYF=SCAB!YD6^m>Ge3_(m{U<1 zD9!~Ecg`=UEXqvJC}CK`f5r+Z$_ExLN=*bQRVc~KO=U3s&d&*y;RMM9=ckpFCl;kL z#1{MqDdz?oo>`onlL%B=#IXIqmVTfx2S_+Pu_!MyFP-6l^s{!L7&}CNX;E@2!`J`K zuVKoZ^K)}k^GX=Lotd^DD8>d-7Lr+#lghB--6eIPNT;WZV@O2n+vyiM4=C`sB)_z~ zdGzdDjlWz|wsZw%Ou6@$)9am_=K&QZk(J6@tat=2T7K%7*)F|&%A|MCZ8=xu%$k;U zJChYR-Jw6{lb}$w(1yQ>)rS@rFc~l~ vKV(~#Y_U1c_E(R?xu09Z4&DFoolP&ZUj6Y4{|6>OM=^N1`njxgN@xNA?f{*e literal 0 HcmV?d00001 diff --git a/DSView/icons/light/save.png b/DSView/icons/light/save.png new file mode 100755 index 0000000000000000000000000000000000000000..60804f4c2abf378ce859d9929a3fcde474bca16b GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=n1z$W$m-+cZ+pQ)t`Q}Ur6n2pMGPy~o$&w)@st3CTvCgZi!uvJGV}8oggF(J zf#O^sap(Mk%A(Blj1q=5{Aa9yqI_V{qSQo?QiYPt+*AhB@BExV8BUN)aDG}zd16s2 zLu|o+kaBLY;hDwBIf+1}MGV^yZ0QFIbAW`y6N~aP^U@g(NIwI4fgPg1v?w{1;p_kA z*Dz(y`MJ5Nc_j?r&P>}66k`J^3&||WNo82^?vgqK10$!Wi(^PeU zBbuJSIV$wV;jKcL(%cSF4^ESf<<=LuXPz`rQR2u>xUZR0X7;r!0;OP=>Kf$}ysHv$V@13G6Bf|ziCF5gzmh6^vocT(+;D&F?W`+Rs*H$yG zJ{Dj&AC|+ufai()p0C?pCd+Hd$tb3syEChUt$$|xarKbR+WTjg-<~@E2#4Wk)h*Lo z9C$=0xUnt?WXueCAna1|Mp)YGP4tWK5Eqlkk5_vFOf$um&%HEtI#cs+-}K6evmAeQ zwG?`}JQg!uTG3#F#5^sUasRlN&}-GN(WhAZ1GIp$md}3YTCiS~E|u5QP`tKP9vDmv Mp00i_>zopr01b=G7XSbN literal 0 HcmV?d00001 diff --git a/DSView/icons/light/search-bar.png b/DSView/icons/light/search-bar.png new file mode 100755 index 0000000000000000000000000000000000000000..5f85363cf2ab2fd329c8456418ceb5e9e16b56f4 GIT binary patch literal 2593 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/search.png b/DSView/icons/light/search.png new file mode 100755 index 0000000000000000000000000000000000000000..5a67758ef6a0fb268a29a71f5e5dff8a632b4f71 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3dtTpz6=aiY77hwEes65fI|H(?D00Zt#WBR<^wLR&e9ZaW7`Hl5htz9TmIaCxtdB|7)Wb^a%3JQli_F?Fdh=n1z$W$U^?@^od|0*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS)UrfoX%Mi(^Pem(-B-rNlGE#dx6UChuELPR3JaYsbZMMoyV?4I zQ_1wD=f1@%o45bIzTaul93a>ST@O z%8$J6boWN|M;Dsv=_=MgFxhu7-J*qg=Fhu9_xGwW3vOh)y+L$)#E(b07HzdRCeNHd ze{I`lBLTtHA0@UuJ~nH^k-{?%)$VjYb$;acNcGLRGr^CuByT&o-052$5}YRS{!!$a zlxN{f&xh_{_D}Hk-OsZR%n+Y?ERqJHm9a62(H%>qGIkbXzcJ{HKlKkn;G2TCvmZEw$}O6XO8gISYNPP9d%^>wBNiPf{$gxbMtzAjC$pcGDQ-3{ds53#Ap91-#(GI<3>a5j@@ccWZxW9pZT-&<>h5legv4F z44s*VGuW(H4JKbLh*2~7a+biK|1 literal 0 HcmV?d00001 diff --git a/DSView/icons/light/single.png b/DSView/icons/light/single.png new file mode 100755 index 0000000000000000000000000000000000000000..48862af49ff462329814cbbeb63731b3fffa72f1 GIT binary patch literal 1874 zcmY+_dpOkj9tZHBF=OtSVT4=Wn#Kc~ z^zM6URQHSKBqy##t$6H=WMG?G53T8-*E(NkrSS3-bCLm8_UE-Y_RHmLZW1R^6U_ly zp_|`p7`4W+i8-0<%v1ncKU1tR`@({ckKVDm+K@RwE&TV_=5#N!H!nBJp>MUUV&DDN&tJHw9O ziQ3s@c;J)FALG>f4-ior({6PZ^YgbT;)Ys-Bn;+SYQ@>OP_{wgt!ojj?+4nYe)qZy zo-3azs|`oi>5P=9J(W{Zb-QwkJK}0?ZhmDUSh{HrDm33H6o#O2v@p;r2Bs}08jH?B z)GKhEy2!}&hTK3SI}c*9P)SU z1Kp2^ty;yxAt+BFlhj}ySFa1Qi=ydhsbM#SuOUI5$?Rz(5W8Tqa8=^I?q1YGl%d#B zu?5^+Q#&V+8koG5Dx?C2q@#Cqhg#P*;*w}lyGAQr&?_$V(lbM-0ny-oMFeMCikujKBBS=hkK~1DMTXOD?VWZrjj9nu*QDj- zz!5XH%YJWtaWrJ=^erq6Vbq{nv2gdcE~gUOwZ`G6bL);m9L5;zSv95$7Y;misOrPD zv}VFk*S%tfc^R1c$E zWxM*_on`vVBYn$0x2gVIvWQA(xWw&aHA*h*t51V=5qdm;k5R8c<>XUQTJweD+XF`K zXI2gfsv(CLb3zl2<)l=COnSNpF?IaYW^kvzm5%hauEGtCmFXQ zXewc`@Y(PZ9E>#cjVmI0Jof$k;-x?|1#1F|_zmG@RFYW9$PEr3EudT+0J&{sxb80- z@C)l(kVd#xgws!u!&5|<+?UfXnj*b3@Hx5cqjTZzgZX0Rju1na?|m*F^gl>JVJ&Kn z|KR=7d;62~$To^)0Ltl<&-O;ugvaL28-KL`D{-7t1;cqgI}Q{jxA)HkqJ$4WUhgYa zy?j9evjlnt)g{dAo-!KkS$i5v7$H`=`mC;F>9&@aul#g38k7fHpw6#Mo;v{g73uR~ zJ5zeyxzaOCMk^THRAwx_1qSy!`?+sPxPcVx=D6%dSuX&)Un5SXl>T;l&PehBEyH!j z-7CgIuIiG_j$1DF&SXQe(I{c3?4%CW9}E+?2wG*M;eL-h&h4}iteV`g1cky%O1RM0QF?H z!kCX{_hTu~pAedd6J`Bl^pe9#kVQuPi$IZILw4lSp zJay&J%yw-(iAqlGHju{{K!+KhT%w+5HyM>X&sri=8YJpfBzm!*9vl0nxv?=G-=(0r z2}tChLm1r#^kAkwJ5Dr6ZA#l>L*C0`vAVtK`7!6it}+iUu8RKtS`o+aC336)vMZ5~ z=Ub6i%{mt`J?Rl|_wsRhY%Z79WzOH2QsKWvG#IW3YD%&`RXu+7No44FNQYZ3k&kS1 zCi~%!2wBZf>{FTw{I4ZGT=Mg>oM?eX)~kB1a7dT8r@-@|LeX&as_}yFzqXamongZQ z3K$;}ujfoWD}N0|j1RGl=AZ$l?rZM+@QFHJ>WL8af=5}&>DhfD*gRYBH#LEkr*yzG zw4<*&j?P=TGjYTn)aaZ*TDBTEn#y{?5DD{Gr;nQo&<$zg}*V8SB3Sak-nRqX!L zt<$1yL!z6#AVEI&dpvkvG9NkKpZtmd+iZGozblDEvJp1Qe?r vE+g&7F2h$X#j6#8|37ufb`<^p4dhiV$u1(L?>QjWd>ue&&@NhY0C?=*H+m;N literal 0 HcmV?d00001 diff --git a/DSView/icons/light/start.png b/DSView/icons/light/start.png new file mode 100755 index 0000000000000000000000000000000000000000..8f1b00531a562365be3980852de6d2203c294026 GIT binary patch literal 1776 zcmY+Edo-JA8o<9qNInt~I*3cmU}6R{F1vPAF;rA^)Fp)ID7n-n>XMr_XiI1-8MUob zHKi_{wv<#!cWGxrM^G83OWUDF&?T6vN)biXWokd&vuDrz@x0G@f6woE&->5wNWw#d zF!~ny003Zu$s`Jt!=dm*=|N}ey}U{&fgExy9{>zYb^``fR+&Q(DF{9kh@3%y$WILA zzawsaK!G%Yf0iI6lLs_5_md%n7C?xU$Y=4`905Bs126$Uv4gn&E)U4$Wb@d`DFUDg z+wTQY!w-~~$kM30grVo2vxw{N@Qk|-~@x02pr+;?CJ&|9%u7eX$(l^0rwTH z7a)w<#W4(C20J4eP*~0uK@9od{wy9V5m?(P)cj8i$V^X9%n$%?`^!5arnjp_u?1;~ zK*Qpo0|4l@2b27xgjEYykBF(%J-_6AHBj+a>vW>W-Ecc;EX!qo%GnK9u}h)w3s*;k zM>nPW+#^DL(Mg$$Q$yKj#bnA;Vh9{3v2u5|@aL5z9=#qtCbqdWY4aDKCVnM2IR!?+raISQgDt$yk=67A9@t-_5aJN%LzXm z9zctkF|dHDFZbooD0J0T(i;Az#)S7mB@y?9)6pE4a2uaV6uNuIQ~-An9jCj<@GAY+ z)L~ZWWMBjZ7WjJ(UC-6v3LNbmE8AZM{~7)pP}?{!q3AkRj zG)=EVDou`5%DqJw;op%lT6b3m#v98GH1Gkcsgg4>8t%zyH^%LG8L0A z-nXBAX3j;-ct6pM1cs7QKab#qpOjk@RK?`)oVWpHhvt1iK% zb^zgvD{Z%a&uV4Fv7Y7DgHKRa*yjYF1jOMgw*TGXG+WsLQj#arh?~~sS-8eHc{nc~ zcKgQ5QwqbP7N=esy-w`R*&G#d^)x+HoXldp2)-S<-a$!4>y%6S22&=h^^k6l>8BbN z>(X1aDB30AqWJWqvoHlyEh?MrEXzC;hAHl{qf@6h&PZ#HzdKmGRasfdJM{TfUXBTowCy4Gp6aSQIi8zJ zLla;ZfMwms94iy94HqXgxN=JxMA>Yp&(+}=YQAw4BA%C2uNKsqWj$!coHbNut3Q9a z!L(N5o3QOeUT@-#-D5gf^oaE7#{eUfl`QV{kYH3B(<6qH!Trh~ z3%ChO+}V$`-|8ofZ`kr;EP|wR8(Ot%b+2jh=tRI1bKLz6aLB6(+lZSc<-m`xTO_Ys z6$M4Dh3h9=RxM7OsvWMyQVXBwNcvFD3zD#lhB`x09&6i3SSsty#`fFU+1Zc$B9BUu z<=^$~r!GVmKr=$F9bZG?@CfHR?Ys0q-`dH=HS78443ySaOYiQm5Jpq6Kk9gXYR*Fe4Nn8MDXw+=si=`^;h$Y)36T`mWK;zO;x<57POkm%%K>xZ)3R zg{zKy&3o`EO*WAoqKqD|*po4O4={+zN^YRlHI(4N4uto?DaSmN>MZq8Z=2hKDpljJ z8|`Q|q6~p8A`aM(3E(z5#Z-^EpAv(m|GYlD8m#8Z`OWsB4BgU~Hs|SAMsp@6A1xo#Cdi9kBdgFH(;k3(_eRX=Ga^MjnGfq9H{>dU`ri{z%pM5B+y} jq_>%de_o1z+K}5A8NC0%1#}JvTI@hDG^EY@=>`7*{pJbM literal 0 HcmV?d00001 diff --git a/DSView/icons/light/stop.png b/DSView/icons/light/stop.png new file mode 100755 index 0000000000000000000000000000000000000000..7f2b01e56448af3b0019e730dfd031625a987e36 GIT binary patch literal 1677 zcmY+^dsNbA7zgklAU8?LjI^>;1l`n~k|ZygN#L#2HIt%ng(EaVg%AS83`+A}vJ0s> zhto_EZ)GWzT{NCAX&(bJ1hdU*j`_g zT7Fa^CuS+?AmS!)0P|6#N2)NaimZ5bCM>{(1o^((OoX@Y&;IZ5Rpb>|PWK^} zFl!9u>HTFXa0WK1aHOvjF0>E^>1-D~ev>>IB&o?w^@z&xTbR>|-JrupU>Z0Eg=tcH ze`|4fbya7DA!i_apgoFe9A;0}05}W=gK?UaOOXm!XLVK+1Pha>e)C;MAbt@%zxq9~ z|AJ<8Mdv5s4hfLJL*_<8KcqM7rZ3XYETxe-Ezx83?*0&iVjoD>IsFJPghj7nS_P4$P-y>1yS^S7gsfH{EML9p|)UP+{*-~Z({svHJJlB zMaA;*!21?W!4nWYS$~|qRk=f*J2?Po5vAaP{XVJY+HeE>n;bcwWOY7yoif?RcwI9i zL<$0EDxjWy*&{O|-uZxW;d7p2+bV|rVjGOHkM|0IW`1XT(Qb%cGA6heV0FV%XX%cr z+*&A|dZu!v(Hb~+e`JkdwYwhv;FmT~s4#TrN>;p>tItL*_ZGA4ZhP0iUJ#={!QWkZ z^Qc$N)G_-DcN_(yc11(!9)#194XHL)5isUcG4UuKUnB3r4{S7QHEFn;w_s9byZw6$ z`q@Pqc{jkvVOwX!^)6#eY0Iu#6dRvnL| z-}6qT;}pEqARR-?_mP_U;jS1uzF52-pxz=%W5sPJz5jHD4aLXVNXsDECijAET!Y7-MDe!_uz>j@J1hZD+ECWg2L5nAuHgMy>S64esmorWYOwJ$ z(i`a?gvTA}wV)Fy(x*(L7U#{UAhE@ zH5+i8F8D)+t=>VQC3ae#h(iv@7-@&Rt3Mx3W}#ZGx;ZyuVc+9PEpzlM6#Zc6fz}Q% z=&ZD$JzFG`y_0~I-Gk=w%az;%Pq>bPM*-unMk~RwjHXLM3vdf~T$zk9eydq8SbB96 z(0ZT-|GEoo_Kd9MPGn57L(emvUPtIN_OE-L+ikA*(SGHa$#1L}zQ_G3q=gh?H5=Bt zm1K|fzx}nLts3rjw;V1TeY|sARg08H(cf0!YF1qFNRpqEzxy<`b3HT-R5{%kDWrhR z8WP;?yPk)g?#M*Khf6?DV=Bt8TvJ`j+*9GZlQz}(W}NzLINBqE4OdQXAKe}8iE|?q z|D=1Kv<=FK@HJD9(vRj?R|$^mp?XUE^9?wR=jN4eu_;XY+jEAJl@B$$+922AJ=)J; zb?~|!KD}1@z0|vZX^=re7Bb4UC}GZD*bQ8zouU A?EnA( literal 0 HcmV?d00001 diff --git a/DSView/icons/light/support.png b/DSView/icons/light/support.png new file mode 100755 index 0000000000000000000000000000000000000000..0c8abcb5f7915880b5b16d45d73ca841253e2af5 GIT binary patch literal 2281 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 Hu0mjf&{h3b literal 0 HcmV?d00001 diff --git a/DSView/icons/light/wait.gif b/DSView/icons/light/wait.gif new file mode 100755 index 0000000000000000000000000000000000000000..97142aa2da7e7299a9bc1cb79e64068f2fffaadd GIT binary patch literal 9311 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 J9y&nZ_+L6NRwe)d literal 0 HcmV?d00001 diff --git a/DSView/icons/lissajous.png b/DSView/icons/lissajous.png new file mode 100755 index 0000000000000000000000000000000000000000..f767b6b614e68821962c9eeffe2c022d7a90dbfa GIT binary patch literal 3208 zcmY+GcQo8>)5m`Zt45G$5j7-tMDNj7ixMq*FHtvPm$g>k6$B9_YN9L=Jz@2-Axb1# z^pYS-1dFJ#O0am={l3p1&vnjRbIxbJb6xY#%$euLhT06YoU{M{FzD)NnvgvB!luMwTvo`8o-L5V{6hphZe@^6NJatq*PfMOsz}HGhOB3=WiG z`*lc&9zjByZhkIshz|k+g90oxd;%m+d%-neK0$DZhbICkXY9X6qL=@ra5v`*DK7%z z?FPskGSZMDG#3$5m^&iC8SVzy`Hd8j;^*S!Op?NZ#`d}-5~jYumd&uAktstcJJ1mWcdlx~gQB7I@1tEpxd zn6sG`f-s-Jbhm|U`wfQSTUnSTsPeBo;=ccIBlg2f!-{FGO@soX-v1kTb95pG`;eD$ zSc@x4DLmQD_QwYsuP2TL@3GT1h{rGPU5+dOliz%5Yy+mJSrR&&A)Ri8kaIjEn-o0- zU&>fv#nD+adgbtBV|zLz@8h9DeC&=hYu@AVvTt={rVQc}S+Y*=$ck;osPtvp&7Mq$ zmr=cb3~`ZR^;R|$f>BHj#fdtM0+x}fIzK#j;{P#LxS25(3zLFdP38u?-T$dfmR`pv*}+@=yY18*Ej%E)?rv_; z8EOi>>#xbq_Gft{W^BTG-m9oZnec`3x<%?LFhkaU3sz~w=WF~kO<}L-guSDRJRnfo zCQ;UJcrwsDWGH*b-iwQ`9<2f~>FlOlzp4=IbGycRLqPbvK+|Qy&(KHl5!lmj=x(Rr z+|rpzuslv&-3vGg|U0yHOLwiwBRO=B#(!F?|`|^{dDW! z1i>Mt$$VO1p0wW-FUi|=dpY`d?k=BAj(YliCw6r8p>uCH3sCLk_&46ZBWw}5t>QXZ zhT5HR?)&Dy=A6i{w>NY%F}q_@)iZw-Io#R(T|#CqKF+42VVA<49aP*RqN4#VWmYL+>0CT zgI|`b2rmmd6**kA$vz|mX=ufdHj1;yyc`TD%*H;?tF$1FWOXKgixd^VdHkR!i&QC$ zjEwlna8D>xagsB5sm&epgWG%Efq8E4o}IXio<;x!2HlGFTdnuJ9Oj5D}HVI*vc{$1B)#(iz^Ac z;J-zy(X(HGD?b9?+-@mb;lPU#F+M?TQ@yR*4>HU2#s|(r;S)r;LDZaADKR>8t+ECb zvdyQS#4TdKxeL12DKhIQ&%)-dJo)b0fCC>WaZ}vS+!o{Hv4~?m^!7@^>D=Y9v8@d% zZ~7UXDD=^D@SeioEmZN2|1Tnw2vRFkzvb{A`+FW6ne9zqHRYyR>VX`BdDqnatrtyh zHRq7vZpVs}yBK#;C^Bc728_Bi;zb4LkCy%#z8sW)ywVXxb^o<*87@A2`<~FA zWM46O>gpQ~L5YAJc(>C+6dJL?m0IsXMP7Y9bG@} zRT|v;9t3TmN<_b)q=WHy*2+zWIvr^dr0Xp;TcpnIlhP|J1R_JsRl+{vijTEwtMM_& z-6ahrGrQuZeTtH%8&cpqPoxM`^yv>ObY#Z4LE&@hMb@>gMB&G)ODpUe4oT_CERfBh zZ;i#u$X2f8jKPrJZJ5W?$%KRUYFMx#@~-4}yIKF@Sv%9_2^IgnAQ9xU_d>VgD}|2D zShA6Q4B?q7yd*wv(ivMZi-MjQyDSfFnBi?82W|Y1iVoS6BR=Niu|*!!E(Wk6>c)Ly zl=jzFx~?%v-`(2h$48FqVUMQH+akvP>d9~oNfrObI0bwL%0{|h%TY5EL)hYUWzBgE z%5wu^Zm6D#dz72eeMWIWw`Q2V)>^Y$IvVSHmh)2G&mUOa@!zxpVKl>*Y0@Rooik@o zB1J&hoQwYTd5h~QQqxB`-j#jm_$La(i4hrlZvU3|xC(!uYD8~oRgyHHZKWIldAD}D zCWTb{!%Dc+uEv5AkbeaHW8y>~&Sj~BpU`{$hdf30_A4qDsyBavo<`48by+4K{Xz8- zFIADry8KbRA&;k2J5xvI9RL5KSXNN>&Tk% zm`{xx)qN6%#j4Cz6E|dsPK1fFOm|RBIYTv|B$?Npsy1n%b-~+Hz8d?>*&AN(GEDxQ zkJEi^?I(6AF5oG6lp9$klxTn}6=X!=#QUYPOGoPSiC&Xv3P98L!}h^nfs=aA zHQMyJHlcL;R4e-tz4h;Thd_#*Z8L1OB24b z=5VE1|1u^pi&|GC_~>!w#{8PtZs^A6UF$@yST1Ec`ihVEYw28egGy)2OgYsN<#st9 z{nL!oK>$0nJlGtgVvbEYt&9VYgxOSi)=L^~F*MZ+8v1klOooHkc_?NU&y~_5xVUvB zX0MrUIXx&{_8AZqjMrpiSuAp02IHi8<5QM)R{3vb-jE8fSRa*fMRybw1@OL_R&OYM zh#TP{M0{#v5p{8NH62Rr$mm?0#yyim&ap$4>+I>+&f}z1v=fB3Urp_mbOh$_PzGqq z*3EBSZFHfEqJM9Fb+FYu_pI}f>iRp2%%n7)2hw)_N!|ydfw#D1=EkWKi~`Av<9rujMo9Jc$d(`YJ+3|pS2~nh{2HMg zijhOK@Y&5N7I=p|pjyXnW>Ysy<#jdPqfrDEuN}r@DUN*_PSQ~~)WKVfCjNsNT4*q* z>tdy@qQ&oaIj!&#G7n={mAi~Pl%MjlytSA*^57q^k5Q}3i~45Ju+P21FUrxFzYz{# zS417_Yv7%-W4HDmUh?Syq!jcfEC96CWFG74EoKpp3{JHh@ z<8sMceOs&dZ?_bAFzMcPelw-%<7ZN!S(D^<$n<4XBgp8d&+!u}v0%*REHOsCF|D?J ziHko=cl6GqpZ92>lKF?O+Wp_94Csu)!ch*!i70NP^1JgiPAi&(cx;vw-~_ZQvP6G~ zRoPS3(Z4P}0hm@mD7siQsXP`FPW_mgVT~4}b=`g=O@CUbJfKs{gRY?>!}Sg(eIt2k zXVNLgpNZ=1FN!c|d0a#Bse1CFBml(8Z4<~*^E*9)=Q}cGw4BJBU*o5soq^4;_~uUE zZHi+{du3Xuai$Nt!(sDNm_UW+AZ;%`G9q5x7yXcM9J#8Qw-?x+$oYwzaNs#(`m@p; mT`%C&@;~e9x(2KrO<`tsSsYw>6Gd9M0bMOaO{}_8#D4(F)e%ep literal 0 HcmV?d00001 diff --git a/DSView/icons/load.gif b/DSView/icons/load.gif deleted file mode 100644 index ffcb5622b8c2d86b3eaf3d840a881edb8434e3d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6494 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 WhyDwH9&2X-jsQmUkAFS>eEc6*E2)D3 diff --git a/DSView/icons/logo.png b/DSView/icons/logo.png old mode 100644 new mode 100755 diff --git a/DSView/icons/logo.svg b/DSView/icons/logo.svg deleted file mode 100755 index b713c30..0000000 --- a/DSView/icons/logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/DSView/icons/logo_128.png b/DSView/icons/logo_128.png deleted file mode 100755 index 0d46a075e34e2644f08d9387589d41dad485f5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7379 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 FV1g&ygiQbd diff --git a/DSView/icons/logo_16.png b/DSView/icons/logo_16.png deleted file mode 100755 index 67042eb351714c83d8f85a59b47251a47faef19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 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 Hu0mjf9IqP9 diff --git a/DSView/icons/logo_48.png b/DSView/icons/logo_48.png deleted file mode 100755 index eb8b41628fe9ef3f10ff36a826e8e56b29de5ef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2498 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 diff --git a/DSView/icons/logo_color.png b/DSView/icons/logo_color.png deleted file mode 100755 index 0761dd75243d998014e4d7822092b13f6483db50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 860 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=ke!W9P&hRAzd2aQHKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1QA>utW5h7A2=LeEr}2 z8m7!SKQ}iuuY}>-nQ8lhVr(E~A(Anp0J}p+y9%p z4=Xqv+4hG`LvW>l4I}>q@ddpu;!;sdb`(u#v+~ZoyoBe9jpM8Z0SBZNI&_&19(nUm z#8c1i_oO>_=arv-vG0^rb^7!Bb8pVIj`T>H7`Tsl!&0#av!fhtZmD9=`O0TBUuUZD zgy~TY`B{u+9`&x?^*@g_$?l7{l6J_pt?AG|CS$e&#f0L`fj5HrIOeJGN;UlPn$e?p@_z7Ro)&wx+$dLuN}YCoxjN=0 zd#(P+y#Mqd_OrIe+-J7}bF#nL%{%lW;lr=OJvo=+B^h%*9DRDDSN(RfU`zhD>(8f} zaymKOn)q+>mLMyyWA^I4Ol|>}C6BX(81cH?x%=)wC0B3rO&+73cd4HeN_Gl9U2;X~ zUexW(`L#upY#G)GI$U^C`Yr4I&+^>`pNf|%+pp_Le8>WTg*XeKFdh=ke!W9OkQ}F>TR%)Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQI#*z&OX##W5tK@$F1QzrzM1ZS}W1 z6J9hNX$T3;33+R1!65!XN@l@chU*E5PZ;JfC3UJMbxdg#-f}W|h1RW8Dt^CaO%M4u z&7<%0pZ}HH=1EFm5bVIG<0_f2bGi5n^S z8YuW)x$1B&N{Q*&=b4YX*h}Ux9#yKHf6#wng2SwPk`YtS{`!8-;ZDHB6^%@)9KYRV z-t$bE-6zf5eUx>%K|GJispj)m8`;%v(4kpwpz7mTW;lh z=Qwe#`gT({a@yU#Fdh=n1!1|LW=+WrE6dz*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS#*6^25``F(jk$?evR$hZQ(n_on^- ze=^x$?O23%)E<+^dra>}^(nY^cvKnBls%xQctDNiMhnAifrQWXObjdyvwu3P2C%<# zO^R9|zJZ;yl(Un=g+=V(nh!T?9psO8O;6s$MnP7{ zy~rh}3wNcK%fv}ee}8ZKq{X%yW<6Y480CHL=WXk%s3}W4*{TjkzE!_0q~#cG#ynZb zYvp|b9jlpZr-9H$0f4v^{g%zpEH`KISe0mFd7)78&qol`;+ E01Fdh=n1!25Tke1E@`+#}*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS#*6vdz=QF(jk$?aYH*%!)j$lOO&6 zUsNTuE%((mv2v-(;wuV${v8Y4TSA|?2|nChy84>Q zZPUhc=IX|)qBo}fWPz&jXh^%!>AC4$wan|ezf>EOFW%gopnCJL?riP)Ryme)NxNt1 zv_9WhDFdh=n1!25Te_b;SPm@Y8d2g{T9T1p#ISPR84sWkPYF=SCAB!YD6^m>Ge3_(m{U<1 zD9!~Ecg`=UEXqvJC}CK`f5r+Z$_ExLN=*bQRVc~KO=U3s&d&*y;RMM9=ckpFCl;kL z#1{MqDdz?oo>`onlL%B=#IXIqmVTfx2S_+Pu_!MyFP-6l^fQnb*dh8$i;`0rzW#51 z4O8ZvpPQSSSHke^%(VSLF*cC0kj#>tRE8DrE~x`Wc6quuhGaCpoq3S!h=PFg+@t^h zKYg>(K<93dtRmazKGuWjCS1G>zBBo&nL>3A9AnDSIp7wzpr5aU|ID4L_q7 tYn@e@@9@K1TatUjMh0o_4HLzGFeUCau01K`H5KR!22WQ%mvv4FO#s#1uOR>c literal 0 HcmV?d00001 diff --git a/DSView/icons/mFall.png b/DSView/icons/mFall.png new file mode 100755 index 0000000000000000000000000000000000000000..1b2a9ac3ad5d8703fe7cc8ef448c8cfd93e91b0c GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!2@N8(&B-wd#jYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQB^jx#j8N7?RQWcE&-zLk2v~(ntRP zFS0OnJle3XY>h|Van9V@8qj=d9ie zcic^VH*hehR_ujt!E40wD(M9ifxEpI*DaQsMh_~3z`n)3m-32 zkACs$YyAhas+S87tPP#TkR+$VbYlCYB~Hf=GyZq1?6|tc{{T~#&VpkgV%gpU%s&>S Vc`FI**bMX~gQu&X%Q~loCIHBP!#@B3 literal 0 HcmV?d00001 diff --git a/DSView/icons/mFreq.png b/DSView/icons/mFreq.png new file mode 100755 index 0000000000000000000000000000000000000000..ed8ccf14a56bab9550d49d9253acd482db569ce1 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!25TQZT;$OtUt8d2g{T9T1p#ISPR84sWkPYF=SCAB!YD6^m>Ge3_(m{U<1 zD9!~Ecg`=UEXqvJC}CK`f5r+Z$_ExLN=*bQRVc~KO=U3s&d&*y;RMM9=ckpFCl;kL z#1{MqDdz?oo>`onlL%B=#IXIqmVTfx2S_+Pu_!MyFP-6l^fQnb*dh8$i;`0rzW#51 z4O8ZvpPQSSSHke^%(VSLF*cC0kj#>tRE8DrE~x`WmUy~2hGaCpo$1KcVj#ehe&m1s zPFqe(o!!!t7n+pKUApnoL`ehHqmysG5SKX0WFod;BSSB1#TwojgM@leLU z^QF6DbI%``SGwJ*{;zgPIaJRZLDSo*-l_i{OMCoZ+5)x+Br}V7PnBVL&SrHVpnDlS MUHx3vIVCg!0K@~PCjbBd literal 0 HcmV?d00001 diff --git a/DSView/icons/mHigh.png b/DSView/icons/mHigh.png new file mode 100755 index 0000000000000000000000000000000000000000..665d4c0c376ec9a68efb1db1951d73f590eec5d9 GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!1|RHJCxUx<)vM2TZ*Nk)DV!^(AMJb5{7SQrtJrcv4NC@WR~QlGOT!aNgXKi!_&nvB%|@|bZ@@H3OuZpq3`Nb z%UfNPm?Uy?qRy|&^13&}pSMF}?wR9O2ecFud^sY7nXa`onEqF1Xkgg!(msMIwLo9! zFw@opaw<2xJ31U(E^rth-fHDw$t{+o@t*m-!CKWrf9L()>8^L}<8ckQyp)|r%HA!X z-`vhOR!-J=�O9ebR2#BXcdwnPQHx7O|H9J$aM|YDp|3zioZ@vIFbFDwld}k9(1; z(EDL)`Pn_oZ=dmOpRRYw*Fj5%VO8(ajVhsj3u7M!2idt5XPiBp@WRc^bi)O;w+qdf v&u@r2zTpgTe~DWM4f%WKK= literal 0 HcmV?d00001 diff --git a/DSView/icons/mLow.png b/DSView/icons/mLow.png new file mode 100755 index 0000000000000000000000000000000000000000..779a0e16192a03a7fc1aab05f54a59da625ef26e GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!1|fPdBNJ*HqG*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS)Urfsx76#W5tK@$Jmhd`yZwu9_eJ z+uwZM)gr*cRg%|hySr0z*>SryS`3%;C*Ne8BgB;B)Zojpfs@hfzq*2wfS~#BcCQ6| zce;;ka?nrU7kVYcq`+`QX@+dva`r2c2_3oI3=_7sochW;F|u-6x(;WJ^%}k{xgTOV zbK_SU8E~!IQ+Dab+r8TPhYI=cByFF5r&cK2`~2L7X|I{gs~nwEpjHJl@>~D!Sa=|K z^{0#fLjLcuvsw{5KmGdV-|1^?^i|z$H|(v8{&R3*aozWQRZ&xxc(PR;jQlz|lXL0< z-S$RL&ZSr6Im9NP(P7Tr5SDyHhuQyOTF*NqpU8W7PK;eybp91Ed>A}k{an^LB{Ts5 D4nxXU literal 0 HcmV?d00001 diff --git a/DSView/icons/mMax.png b/DSView/icons/mMax.png new file mode 100755 index 0000000000000000000000000000000000000000..36572e3a39cc297335c78ad6a364a806a12a9532 GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!2z)1=|SA5O54Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H;LB0 zFlEm9xw)x%B@ExrOxq6>V*@D*$t=l9Wmxgi1T2KMDL`V3y0ka9wlCJJX&omyF*U zrYzVRp=VOxHq$WMDJpyshfSx~{k0+qay6>pujcrrS3|H^If@SLo-#oK0L zp|tNJ-Pw&V>J={@@^Za(SchqA#A>q~vBuax|1}D&5)aHac;GAX;aL^4e8HYGyjO*P RR{#Tv!PC{xWt~$(697En)4u=! literal 0 HcmV?d00001 diff --git a/DSView/icons/mMean.png b/DSView/icons/mMean.png new file mode 100755 index 0000000000000000000000000000000000000000..a65dd0980b3ae46fab919d608784a5176c4f31e9 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!3mif<$Hl&4@J*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS)UrfziU##W5tK@omIKzQYO}Q~v(9 z-#mTh7QWcV#TSlx|4In0;OyBupO>2MVOz&`M9N}o!wRbnP9g!hleOotWaQ`spEz^J z?k&sr=hrK0wtU|E_+Q`5`So%$%!*HYibwPMdM7ePyT&GS2 zZfAJ8C~I2;i_h6P9xV6%ym-Fdh=n1!32jqj93ohMkxHKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1QA>utW5h7A2=LeEr}2 z8m7!SKQ}iuuY}>-nQ8lhVr(E~A(9ceZ6lHU@c%;=&1c_UxKRDlg@ENeI!vz-pi`Y)`YBrtLIzh>0{ zws)>c5f3yI_=VnxFgY-ID9@1Gx0+ug{Gd}#6a&Lm%_-+qU8-KrJT4(rQ5_+f5&K}X z(4AdLYaO&#)Z{MR@VeSvEpaE?k{N4N%kz`+UhNcqproe|$Ssq^3bkroL;Jk_uE7c6 ztM?drZjZ}Y@_Ndn%r!F$cb%P6^5N3t65$D4-`-X`D658+EsQ<5e94~PXA4ZtnJ@iv zR|{Pd%Mj!4#rf0Xq0E7w`AJ(vZXNxoEx>fGrNLA&;p|5y``$T+Ws~QL*8)R_!PC{x JWt~$(69C^)$VUJG literal 0 HcmV?d00001 diff --git a/DSView/icons/mNduty.png b/DSView/icons/mNduty.png new file mode 100755 index 0000000000000000000000000000000000000000..fb2ea68e03b76dd41ae1be0939f5af7c98ff9a2a GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!25TkPXD{l#D**N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS#*6a@fN7mjjW-}i+x!l9S-3Yb_TF3~4sy7uG3ecP%wtp3h+;M%`n&KS`j-$HIB z-*(TKQkEFC;A&>*cV#o*2U#KZ>wWhgVV$HQz4zkZs`D3XxA`Qnaj)3eAjQ4HQ@_B) r#(K%GuZ-7ce&IY&uXz+dy~E(?>gTe~DWM4fZ6~;J literal 0 HcmV?d00001 diff --git a/DSView/icons/mNover.png b/DSView/icons/mNover.png new file mode 100755 index 0000000000000000000000000000000000000000..80342c5967cc037b791914ccd35c241c18be1c47 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!2DhGl}ELmODgHKN3^v?L?Hh+*ZrGaf)8o)VytOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1QA>utW5h7A2=LeEr}2 z8m7!SKQ}iuuY}>-nQ8lhVr(E~A(CTu$$+y$zz7tN12joFH`QdZc2&Uv8A`mrA=#!J^MG& z6Gpw?);frN6Faei@7p>DwkU?Ze0J+Dzb?J`X2fJ4(PQd3!~HJ%LA0n+b*4F^Z-U_4j1zh$={A3A5}qaZ7)Bhs`@OW{e|*xr qVg}!zTw54si8)+m$~eWnhvB~S9>y6)_6|T#GkCiCxvXFdh=n1!25Te$JgZ5^ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQB^j+2ZNq7?RQWcBUg=g8~mr^x^;e zWBgTS2xw&74Jq$?v2e5Llm)Y9raW^HFA(Qiu#iCtM9flBTC~dh@r^Ski)PHV+INvL zf6;2rx0^0K{35#ms^SY%>NltSimlm!$GP+`^Yw7mZ2Dm~WoqaAf5JtaUncc=)o;1> zSYB3Or<&Z{ea|CPcX7L3ZVTjoR%j(G;^53^BH}PPE+JcJf9b)einZ)h_D3EJVBlrF e5WwJD)hNvO+A6s_b|p8^{S2P2elF{r5}E+;nyJzN literal 0 HcmV?d00001 diff --git a/DSView/icons/mPcount.png b/DSView/icons/mPcount.png new file mode 100755 index 0000000000000000000000000000000000000000..eab790723cfa772054a69364c39140862fe47459 GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!25TQL99E}#fd$TgzGv9u&3zldSwx-%X?As&#BOKNd)QD#9&W_})nFsGt2 zP@D@S?wnsxS(KTcQNpl>|BMw-ln*Rgl$r=qs!)=do62DNou3mZ!wHfJ&QB{TPb^Ah zh%NXJQqB!FJhM1CClRQ$h++GIE&V`Y4v=toVo_dZUOK}8>1QA>fSnecUs{x$%JB7n z^J|zg=ltB<)VvagZ)c|M2a2(Qw1#As2{)s}22Wt-YKlx|<0$!>cfR>?t_aTdpgE#f!6$$43QE#0hZ6u$Kp zTihGTaM}GEXYTwa-NE3?k^xrsUtq$M&8^vG?*bBRUYs)6T=Y7A;YP)M+1)AclIQ+Q zYq+`d>-r1p!REO%EZch^taNQo?*+@-S^F8E>Z|%dP2sp;!#KguCs)&D-X5T989ZJ6 KT-G@yGywo~n52;a literal 0 HcmV?d00001 diff --git a/DSView/icons/mPduty.png b/DSView/icons/mPduty.png new file mode 100755 index 0000000000000000000000000000000000000000..ab4a48d3e961fd1d3a311b67a7c9b749462170c5 GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!25n}6!v_GGY-Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQB^j+3V@z7?RQWcIH8@!v;LgYcKx) zpZZqhMAu}~EvsKGEYH!aGVA1JJ-OnHx9kHQv4CVoQ?Y>HxCCig1`Csi9*=feWLtVX zs<*x%5&9#eeO=O&#Wn0Y3yv{mfr(SxOIEw=S7S(!eth%Sh5FxLlcsOH(irLB`lG|; zLG;x5$3DrP&|15y?ucJP*vsW*4<8GCpPJL?E;@hieb1liSKy}P2tHr7rpjshdxk&L jgL+u6L^$+Fdh=n1!25oA1%B?O(w{t`Q}Ur6n2pMGPy~o$&w)@st3CTvCgZi!uvJGV}8oggF(J zf#O^sap(Mk%A(Blj1q=5{Aa9yqI_V{qSQo?QiYPt+*AhB@BExV8BUN)aDG}zd16s2 zLu|o+kaBLY;hDwBIf+1}MGV^yZ0QFIbAW`y6N~aP^U@g(NIwI4fgPg1v?w{1;p_kA z*Dz(y`MJ5Nc_j?r&P>}66k`J^3&||WNo82^?vgrCWQnJXV@O8h+nJ7BEd~NC=|}$8 z@3iH#)Y&aPd7(+!+@%{YO_VfHJv#a33vr2~OeSIrHZt_GW_+91Zv6SujcHRve@^-o z%R47zZbp9H5vKbMtQk5E$&6Cm7yjs8@VmNNc$?CHS>76}i8FP3o~*xrVEg157Y}9p zJ72mhHuwC2d8ON}>i=q<cBr5j4G>>Ye)Uv9!nkr7d8KKr*wK_f#2{=WJH@0lJsL M)78&qol`;+0Li?lwg3PC literal 0 HcmV?d00001 diff --git a/DSView/icons/mPover.png b/DSView/icons/mPover.png new file mode 100755 index 0000000000000000000000000000000000000000..d7077a8febcaebba754df1c51af372c5f7864c58 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!2DTvU>4=YFt|Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt)pmU;`-&$t=l9Wmxgu_NWx^MoNeL_9Wl%eR~GJl*Z%c$ z_OrLz0Xp`oUYgeryDX{Mo!;rqdTW8)!ss(Bx29e@GxO*krgH6j_cl*65R~A2s+t(p z82|U3;>V5LU#*Xw`5Jp;=FiPnj-L3=@L}DY@6#&VcQKv$a6o=b0M~{<&JDliE%q`A zT7)Y&{byDWSK#ty3cST0A@Jdc?iB;o2epSb94bx;+W#u>5OeQ=jBFP!ex5Lf4)Hxn tRYu1jocZpc64cFdh=n1!25n}_GhwVPle*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS#*6vdz=QF(jk$?M!dJ1_d6Ml^_3w z%Z01x^h|jlF?YL3+ZV$lVWte4M(n#A0#y#UG3BTnP}_6hX3^%Exi702&Q!nOFLYwd zn*eTG&USwXkStiqvem-ppRD^m?Rr-1{kaZ1Uz}O^Zl%Nd6GHzucCus{_7`oxe6R82 zZ%&)HUsj1k9sBw!ctwnk_?}m_3)FVdQ&MBb@0EqFjsQ>@~ literal 0 HcmV?d00001 diff --git a/DSView/icons/mRise.png b/DSView/icons/mRise.png new file mode 100755 index 0000000000000000000000000000000000000000..69eef45fa4e85b80fb49d6a866f30f505f88e046 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!2@M{#0D+XS$XYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQB^jdFbil7?RQWc7`L@VFMnP@TLF% zZ>kcK2;T0w=4#S~J5o$nJyu`q+-dFiY^h$tbg_WTOj%J5zT7J;;~uR2Q)Ilmwy&^U z+WtGsJfXYut*gXOvdnWyZ#8k+eV5%saF(@9>pH9byZ&<>*WVawH!)TBoyScUiKEP} zOf&ae885Y-aJP1WLxbqt2CV}P61Hxo+#{8U2qvzr=qr!~gr=#BU1+JgHOBb?SP@96!zCajdWE-XmFk^BuTXWHOrS hE?CBTMMnPvFdh=n1!3mif#W5nd@L7*N76w(vpn)B8HXg&UgTYcuIgmE~&-IMVSR9nfZAP!kmiA zKyfaRxO09%Wl?5&MhU|j{xeoUQ9iI}QEDPcsX|F+ZYqQ6cYaQw3@1n?I6tkVJh3R1 zA-3Q@NI5sy@XX@moJ63~B8Ke;w)6vqIY7eUiA8ytdFc!Xq@RJjzz)%0T9lm1@b!Q5 zYnU?U{M_8syb^|QXQu53im`!|g=CiGq%y2{cS)UrfzjI2#W5tK@omIKzQYO}Evf(i zpMI07cCJ&mh%0)}68>ef1$P3&BVArh|Jb2-pxaqNs@=hauQB6~J!6_!THCv_6BW)( zrAi@}gxE#%SGV3;B&ZVcTR)_!o8$YnXD)N^S0@Weiez*yY3#TV&3bX&x4O2{o!ibF z@VdIo_`sP(KZ{EIeT_csD(71!a>9f?o+V6ldFhSMY)ZE_@ZZTjk@NTr%N|+h#oh|h z6P0TOHk_D|I$`@8=J2j_`=)hHs^z~ExV83Kr2d6__Y*g3vKsO3JnbaOW_gw;B4q9S zSU-l$?eiXGifC-ORV3LM``OS};g#^_ttndEy|WgXW^pne$vhmpgCoUaWrJpeRpD#X z)FmrsJG@`u<-LvR)yX-Q0y}<$dFra2aZ+Vm^|^FTpwA4ZK##5bXC4T298(nN1%`ya Y(#4OWUsZO>00Wl6)78&qol`;+0C)Q9OaK4? literal 0 HcmV?d00001 diff --git a/DSView/icons/mVpp.png b/DSView/icons/mVpp.png new file mode 100755 index 0000000000000000000000000000000000000000..4c42d1a3a80432f5c3e612ee05f151273c9706de GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5D9B#o z>Fdh=n1!1|LU(&m`Ax8pYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($7F%V29{0ElN&h`1-&3 zHB6aver|4RUJ1juGt>41#n?c~LNZHoQW;jfyQI#*z{u?B;uwOgS7%l#7%y|aAUmVKc6Uev93u4#9xZgWNyiho$a$~_Tc z=Zz57vKK$+SBOMh)#}#?y2!n?WNzG_*{jp%Wf?!0-Sb^Zl&SBalS|#PSsPW;=Q?>e ziO;O*S+*cuj&0d{r)7 literal 0 HcmV?d00001 diff --git a/DSView/icons/math.png b/DSView/icons/math.png old mode 100644 new mode 100755 index dbb83a78fec272e7b6a5b1b20f0431491b6a66af..a468dc6a166540339b6e04d21f2d42569707aaa5 GIT binary patch delta 1670 zcmV;126_3XEa46ziBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jN|53gZM6 z3@khM-`;AGN!EV`EJ;K`RCt{2TU%@tRT%!hncc1}BD*b-s(=I{DugazjYc0teDX<+ zMhrnD8UiZ82QH=;Qb2Z#+P;_=jfonYcz@9+6E86_(Wr^h9Yrc?tPm7U%PzOlcDwWW z&=$AL%ksaf_gJAcB9WFbEC|GuVBm<;LSq{u!MI z>qAO!6Vy=YzCcJ5>In$?fMjFE8yrVSBQpVPb@J8NBYQw@Az1m25Rh=cQO&^vfP{SQ z&8b>P0Fb=OsAhu~Bc{Co0k1a*I!qyb&On3#Rz7J}2;Kw`dXjC?N3u=xI{HFqLMM(^ zRRrN*5LbV?yLAepNusV0m8Vxgz|maWkv$8B0S5ZbJxJm=3@X5dG^2^93A}} z7W@5tQvpVx$^IG{->87kus|#{prT+3jqZD zl5Ac6zLPK67Tsh^9cE47&i)-s|2fa!zVa}D9ye~+S3uH90;7{`#95c%lK_tA#MTn5 zb>sH}f=eQCt0mdm)am3;wMF;3-8(DxL(~Kxck??6U;{6u+M-Vs+ri^)(VKH^ja`Yl z;bDLMO!C@ddGdikJQBCyCV~^j2mdL^*={k8uYd_0no1|Lacp~Z5ai)fd9pDsLQ65R z#S9+sNe;*cfp|ka@o2u7@V>+Xll-jE-~k^BAgC9C%t!fRQti<`0q+#U=O}lXf}^ROH=L%Fo6)BiE+xSW-GK{@X)izkK-H39`0UKHV_Sb|?wHrn z7fRKhDoZ&%AI>Gg@V*~jC%K{04UR#>8R?-DZOcD!^3IAU?lXb60fws69ld4{TvwIG z000b;#u`^I_+Zrr4*=xD23Xw1tz7(oKB0mJOO+;+1k`K)dnXJj#+=J4C2;OIBem& zR9m#DQz7|KAG6W`p3k*ACPA`1g;Fx>NbLpW80T>ulfP$yGT@Q`PDWear;}VXb|vZ{ z%`cS)()`A*M9EcRw=p>;K@yuIvBcWkgOXk#qLwWEpd`s_hey<3A4@nN(k!MgK!D^G zPCnOlfZGklqMX~M1Z#gmOj*o)eern?&@h0#f_=L!tq~pMhiR=2f zwFAHcFC4zk0RZkoDAOB`Szj8^B9P5q3H&Yq2+Sq1W~vjfuU}4qa=?&O^x@-jfW)yp zZpX90m4bl30)+07u)Z3<&qL@>rvu$??h&J=qsAUN0ixiK4yA&?h)KKWKNur2pDmhI Qk^lez07*qoM6N<$g0hJd=l}o! delta 5482 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 diff --git a/DSView/icons/math_dis.png b/DSView/icons/math_dis.png deleted file mode 100644 index 9850dd5e09f1ac5da0cd70726cc86e942c89cc38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3589 zcmZ9PXHXMb)5k*^fzXRUC`wS8G%1m)l+XmJ(whjxL;>@J(4+?GA_N7bStwEz!7E5H zlqd)&fg89W9Rf-~z<`PdMCA$ho%hT0Vb9L|_J4NH%-K16Hp|Junx7ZJ3jhH4ZEesl z9Pe~!Feqou75@5^<9P5kUJ(EQT=dYm0Hx)U9LPIEatPLFkZ(AOa3g#9a#qi1NrQa5(QFx44FnCEzY&iGT({njwb@{7VTT zfrrv#L|j-1K#wiR!-?=5MqIC9h|z(B5P%>4;7|_#H#sgMC^V2GB>>u}EqNRaJH#G= zgm7H=WdK#0nZaS)|F=Jq5EKIVesE*s|78}}!ootriGUxpq8<)|9?CA@h@l~XI@XvH z=lpbAwAqE2^3UaQEpBe&{Yk5@3o{ri^7sUCT(1tcA;x!NqfD?OazI?SwTzw3Rn?+i<(*|Tr5P< zC1HxDN5cj?CB$$#MgqlPU0@P-4Q1bG_QL|jn1qRvqk}i41zvD9lTOYjuqX)!k70Zk z7{ONApVD&)c3D?{0%cj<74}^e(6q}6ukUHD7}y|S5qyLz0ICT5maH?Ea6W4z8qU5& zhP>~HdsBVEh#LifCrbo9$Sdk#`ZM0sr!K9*=Rm)z$I^?vt})I%JiQ$meb7z$8#n^4 z0ewgw8lv5~Gu5gIPfjds<$A271>)m^_MI^q^3@Sq3oz>fsVYkhNKsX&@eGMkv*<-w zyhIGB7?`8xZ0*?kd5BCe${y`1ea*Gk`=ZKz@BOw)#`BdF-Ot=DfB-&r_wf8;_T32f z3I-+HE~(ES(`Zw;7p7?_F5cT%(?8CYkbH_7NY%cG$$u^goKOBR9Lh$9xZvm-H-r_e zg69*YN*8}}<)zB|z=lYZqe5pk=dZXTz(vxpr?+t@ooh_o8;(`r!g1hn3}hiZAr2EQzp{GGBU5hc@v0Ss}m<79!3Kr+V|ne#zt)a-q1I0FIyoE&)r6 zucizK-RL)?{4vt)a*_}}Xd-A+&{vElYwNm`%&ZiD$*@x&O{18^f$1AQ;M@m5e|`=3FlMTN}4rPvT7bD!&# zX&=4NKks9?vek;zD?VqDp``OH)*FY?XqV%>Wd21jk-j2rTPt~U?bUK%o=;e zJ8v<~UOLiX8Is)8Kdf%a-5^pNi==j&G>G~mf={Ld$W4g9I}gcj?GmXryJ*m?EX4DfKoxu9fGxZm9P_yubR*^&>eN8^*dYvv((4FsH5n7kQR#{Anmy zI}$sVgp@(Z+M@s|Itut!T|Gj>2+xY9RqhnK!ePfUVgh8d=f_(PD$kXp$5+QRK}Mh& zu&|i25pz0eyxBE>eDP-W{^dc)d$2Jy9yC=p<(uRFV~O<#^QgSKf?G}w;ZoO#MFxOn zM03?GKRTehyWBsz2c-GBHurWUkl#Ir=u77R=H7YeU|zFmL{!w0&ecmtB`A-7QNt_X zb+2p5vAhP?>m_kQyC#f8!`Y^XxpSn=`L}fnL-{=H4t%$4Y>K8Cb3vxXB@Y^In)+L7 z{IsC(Glc$8Pm86INrj0z;n>EF(S_mbI%QDb+|b<$zt6-}U6}7Gt4YiVhiM*lmCH*X za}5+-U-2w?VN=-;>VdrHdSERw4U@b*H$b{d?mM%^vRn<&iIc|S*>^t-%qJ9<`0@Ud zEQwq7m|fBz^F-GaPgBj6UR#az+CZj7^S47ul_uo-D8AunK?Pfic)LkCMbo(Mk4rLu@RF%!aT*4j7SsZEjF)v9C2!QPD}f#mO=N!J;W`8gM>EVTl{t?f~gW)_1DA zYdjs^?91oJsf-1jYVP_f_%hDgNy@>Z_bWSO{cZXN6Z8Pso$bDPbN=^4!3@Is67bFl zNfvv;n0FUAGdD6|Ie0CaLOGy}WzQ!-ywOots^v-1NbXN3Feuf;*R=kJkc)cwuq;Ev zx_GQr$T^i)vKKr&?&e%`7L6*{AIBC z?>5gFGJ5fb`+76I#z~%MF6HtJ~Hl-m~Z?DW!n8v4D-3s2QEJza$v+ed$6C0tS(zU}L`3Ai5woTP_UouDGW%4(= z#(T3-11Cp^Dhar8kH*g-f7!k1-^@Aeym~-UBtP(G+FeVmwKVflii8i{*9&(HGn*-_ z;GHcFW6!LQX_5$Gnm0MwoL@cg;QLLA(lN?k27fnWHOgU7-L&5bQaYy_xY{*Tey94I z_Go{Xbz}O6a9#k9G)Dtt_rQdtC(q_?s7y|t7-v#b*LX=;k+t_E-Pli0f)y9+=Chn5 z7a!jP`H;)jyHwL;2j!Y1De;YSxmIDqw*T{2u<0$B{Ur4K?oVXo)u62Smwh&AraCu) zRJNr{mw@Lc>t0TRj&zoG&djLXfT;X2?ej9}=F{s=o`dQtlRe@%P66<~Dn@G*ZWw<} ziKc}fWy~s%w}IZM=kYJ%E(vA7%XkMIqvW)}Hq(*M())5{EmqfR73i%Y#6_s?_+v#n z4O+!`%R_xIZz2~h>PS+SNGXTm)RB>yFgjD8x=SvFgvv5M2*s9>!B!=uey>Kci?N8A z?i>ZzkJ0NkcEAm%Uo5(psGN<2q;1~Mg(b?J5RbAJ<^!an%PR(@W{z6cHbULo z_uqMTI9L3UTcQs#p7{x?VSF5StaP4OkDcYS-M={jHZ0tTL9FF6@2Ra*MUHy~U9#25 zKniXn#q3-&(i4qk5BLiDze}FG+$C-KXh9T~ttH!z{BiIaKfFc1ks~6Q zFlIl4pyLFB>|`vbv9WUd05F@+zj*M*rH^ zO(#6X97#I;zD5Y;f?eIREtqQO+N~`y$r@9Hj>UedN8p4dA&G4d9n{bk7@4sFZ*q&e zz<}ei+ABL*s;8Pkqz$KIE*5nsS)I4q+I;dC_hM8u(`yW(h8;v_Mw8QnrO7;+ud^z@ zC{-@aa?$v4kIUZL+9gdro}5oUF1W*+`~|yasVx4`pKouqwJ&#T8#V!RF82$*Px`tr zVzzE^#1d=Sq%w^T&(pt6byj8yGOkDW9HG*XZjjdbX3wMh^BK#7lOWf~ht&q$DVbRf z+0)7vpJ3xzCs^Ib%4hAvVW<1LtLE}v1*UD@sPtFZK{eak6lT_TCic;o6&-BL)(`z2 z-i|@|hHg|cS*%&tUGdND@*{+MIk$;LT+TAzJ8UM)viv25)g?iLwik@QTnC;*bc&dy zwyWGd`?qC6qf*+RT1$pvLH|TfrIo_mEhG$6d3*!rLnb!LvspJDQA3s}N1uBmoMN^u zDi)3qQaf{ZD3(hHrokmG89y4()A#na1bwZag*&N5BdhgNtD@x^tef<+wBRZovay=x zzBd~(p5~@%scq>ruabQlWIaEzPSQ60tAl&2G`QROW2m$ua-0NhD6><7d>Px;`6IdD tTdjr3liN|9txrpY^zJ5_AC3_RAj%cCu+^VsU(U1xu(fnRH=18e`7bkqf_4A^ diff --git a/DSView/icons/maximize.png b/DSView/icons/maximize.png deleted file mode 100644 index bb4bffb855e02052ad8655447158c97c2fae48fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 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 O0WOa2=o$z7<$nW_0wnza diff --git a/DSView/icons/moder_dis.png b/DSView/icons/moder_dis.png deleted file mode 100755 index 8bc447215db1bf8ff2b8d4614f61ca88f38acb07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2785 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 Gx%^*FatVz9 diff --git a/DSView/icons/modes.png b/DSView/icons/modes.png deleted file mode 100755 index c8e465ceb7b8e1864e096e8bdd45d9aa09ec062b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2369 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 diff --git a/DSView/icons/params.png b/DSView/icons/params.png deleted file mode 100644 index d6a9fff7e00b5d973b0859be97ddc3fa2fba6ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3514 zcmX|^dpy(a8^>o3!(v864rO=>b1Gw@oaTItjbUMlQVe4;hxmpt;+YB+Q6auc^ zh!ClS^k|8Z(-S?;hkkl~uix*F&wahF_w~81*Y&#py6-e+M=KHGgTfF9M8w7#=du@_ ze@jqc@61FlKiLaHq1GPZ5C~l2w|F3T@}>76EW*aY0>A`4=KDJ|kc z2o+LZ*=N0n_C@R=oPW3gy4vXs;slyW$!W5D`hH`a{ly{`zf)|2sS|+%Jf{XQe_K*tJ=ESnxM? zCsQebl=Bd_EH`D3!T#G%qx$(nR(>VU{m*6|5*+MLiGZy3<*@dcz;7EqFe1nwQnvW+ z$lm_RHaJs!RQ^JKOvWLCWS4Pp;Ap~>B7bgCm5Lbxxlp-0(_2OGvr8ftzd8%AwJfqI zDK{H2tA;~^6;0rAF3E0(RgOCI_;m`Z92PS#7Q5A6L%<8~-dsLP@tWD}I#Cl7U&HF^ z+vcu$S#LV%8M1C0u8nW>pIFO}S!_C9)ZBdcWOpX8^B0h1uqsAW`oF-b075W-KhzPL z3Ekx};`ywILJW|Avl_*_3!GgK#(n1%}B z?FHs=#m=q>^)){qPA@wW5c(%us_Q4a!D7;hzNT0wTrmr=pQRLQ(VMq_T`_@GxeyTL z3(*!W{B<7XK_7c@5q%M!uD8lmfjg@*FPO0cl|W9vKTAqfC8 z?u}^?K}#{;&{q}B)Sv{~;m~8DxU^p01mo21SPqq8L&`aj25zbb*&C{wE=2-#_H(08 zn#r}|Sn2iH+n2U@8p>yN*qA)!%Nup?fszyDKeG~agnELzbp7ckGpv$o`4%mf8rPgS zD#i+s45%Bg67HO0r?TTKWu4<`paH+@7!QH*0@lZ$!{~;2jM-h?Yk=-5Y`>6Nm(x?Q zkcK~Y8$zOKX-sppr;_35DL5} zQ-E@s5Ju~tn2-~YD=hNaIx^d8PRQbOBYU?evx5lo`K6ime2i|<3^xBi*-?5``)>68 z1PWmd881J0baN+knHl-zpn=ir<5+qxVDs`jb0qYp^zDZ_sCWFNG^C8f*HT_}pkRb_ z0za*jmmVG=a9}zvIwivvtI+68Ks>>BKLUEIH^N&A@ZZimd_^Ni)2^q4(Y&YRPvoAp zkxOa9S~aJKpNKn?pJ=CBCtp)#qb(F8^QJ@-oc%h^!qTH;uPceM<%c%dLwS<`v+>|v zPN9`fnoo!IcCFpn&z&Amz@@{TUyI?b1=l<_9z>It-FSU8!oS$PJg(eU)ZgE)J7srv zq>8*>IN1s?%>ykdT}J>I0Nch=EixgWgp=DIqNwrrokx;wrhPewecP+Z?cV&(Lxb!U z>9oMZ>~6FBKLYMMW2>Bx$|2Cu7x=IDR8Y(IcPx)}^7g*e7%>VuDCtpy$%{EI79KjV zk3yHr(?n^3v;KLLBo$O-Ox#1@ZndDZ+dSWHvd6Nm)T)MWM(Q@kVX8@7un07tQPFW} zu4AL^OLC#_uX-tTaT~OFtr*?m-UHG>kHO>?-A0*4_Q{Nn?gEpUG@_5KPTHj^)h}W} ztH&^nQ>QqxgB?DEF0$KlO;cp0?l{yD$?SSJPRzAXiBF#*pO z$kC%>oX#~>Yl=(1oUZz*s*x5$9?bs&^BX75le7C`ezu)qZ=jY7(fY%;OlCaHzju7J zen3k%1V&NImd=!YrS;cQPi2XSK1t?ujho9FjhvN1GOaeqf@Nm(G}fIl{no7>RaiP~ zrl4yARccHRSNVbAbfKtOg#+yb8%AV8SAyi;Z7WFXWtcz+JJMXxXpS{E1-6*}Js)sH ziWSQ@!WSf*lIc0<3^o5SNbnH&Y!>3{tM4qv91f?z%5>_K)MsZvbZ3ScSaeb20v1@@ zOQaqyw^8ix$l5CCVhww{T3U8mC>bqw2OSi2ouRz$Do(Exy_d&dH;v;i2m-VSLJs-j znAW5zFMedGUSZP0&zr@B(f)Y*WWjb;iGCox+YmG$5>mLN__H6bvkjWn zqe_>dL@MP7a@NdO{>&`}VcTU``TPCf1}60Pmq;WO>468eRxI^@zI;%@7MWPwV}36-+pC> zM3QoqF-g+Lxar`!P@GDbT9vZ7@R^Gr?0uC;x2XI^v`8Myvqlm$H4$wz200?=UgBwr z98G3M@yFTZUt{LYX#!%myG#ftd0fYgL@c>w3@ah|c~;-A>l;>C>|U~%ED;}eRqAytQOx@#nLW&Jl%(P|E^==4 zL$*79%J$co_k?Gy#e&`d;<1d!E0dShGpHb*D}we?%o^OeV>zo^&HHIwDZ&zgU6J5} zKdL88Bxz)63q2DXVFZIbu4$KW=aN(ZnYZ}4KkYWVMrgM8Bsei9yIA2ekDu=xPO9~4 z6*z6g+BsfzAMb&r^RGMHQmc5bhT(W{hSdB6%4df!1u8$`6Ky-jRSJ3~Ro+WJKIIxN z(X1v@En_ENo)ib9XLAX;W;xgOv|y~efNgbSz@}&WgEHHmRf+bYD2@6>Qeg8i(YN%H z`^9sk7iv_o81Y{80xw|)`$LkkR)>k;vBr(R(mSI0fSS32&R*D^PefZz21ZA!iSQfX zS8o0g0cQt^o|OF0*R&vM-IviEZP}x_aR&R>Uz~R=HgmIzRtr^cRrtjMwsck$7*mQ} zky0yL&_BU?vMf+KsDHHvZucx!+o7Ot9`7l+eM)*=lp9ZTw)fVT+MZwIKa8Xw9OH`+ z<(ei*?~}`|@Au@kZTX3YHzAxLEvd=*i#_4Hw_&k)x36B0f5TR1-$pG*-HE;^S_aOB z5qmy`v32q~x8QnV@g}&5kWF)5gozw)tU#0n?jA_BJ2WZIT%4bm!}|B!Z2eC2xC}8o z*tAf~`jcVu1&tLB_YsBM%GfkKumQ}XB2WUx;|GR&D9WJCt)Y8MO$$6 z%}EWas51wnA#asYUWxA)M&P_Lz#$DNVTC-e$TnapxV{e|58hTasQ~LYH2XjNhzpw2 zz8c`XEd*djR;x78raR_|ARjoZ9Q}F>k}t(92H`qGcT$m~fdAxqQ@Ew~q10}vj1LHT zFcSbbFa#R|;C}iJd4IP_q7Ba!PL1lNgaqdf4E~EP(vPr^qTCk+Y(RnBUIXdyl zCFvsHwMDa%tW!y2b9PPAm;6}qvT_ah@8%~m1T*ztRi1Py*0G(tvp8S(~h3_tQ$*jh-l~fL>D2PXmL5N8gm)l;6rS z#@#ADb+H&6sbf^*kGWx`V}7i5T59T#ANM`gR(g?{ua`F4ITr#RdEun|{Jyl!?C-p$ zavH0?{p{6~#e2ko`So$)s7u~L;wjL8;oYXspK~(yty#N| z0PxfP>jj!(zb3|tP%kH(g<(&zgl4S(c=FSs(j X7DtAJ6SVfeC=eS9M_i?u@74bRHuhQm diff --git a/DSView/icons/params_dis.png b/DSView/icons/params_dis.png deleted file mode 100644 index af2518a79d3016b5e09083dee660d0d91d47e994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3502 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 diff --git a/DSView/icons/search-bar.png b/DSView/icons/search-bar.png deleted file mode 100644 index 1e58096d44e309e6efab825b0200958c308c0f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3679 zcmXxnc{CK<{|E3HV;kF8O7>+IA`)4%^kBjmOV+5AH3nm(v2Qb!C0mB9A(|92$d-^v z65>%K>x7}wGub_iJzqV)^ZVm-?>VpgzW3a7?;rQv)XO&J{5%po004j=Wr4Im?l1o- zZqDO2Q)r|1xB~}UxZVK(ct!pc5K#0;>=?Q5DC~gP0Yt#^uw&=>z-PS^+cdtB>w%@6N=sCZo#^XL8@ZHD*;rE;T;m*g4AVWN%6NQ?c7k z05y(@IM~`VY9K>~p@2H{*|RAeEKXS#r_O?8xhlUKMV;8GCu?o>7BsOdZ2abrFwaoX zCwRfJ(wIjm3<&*z>zv3=NN0nBG%>Y9R$U`fJhNup-Cn2wwpxN{U%FZMmMniRd)ss% zhpWErMk31CJ+mWRYhtTrOTsFG4cq!zD)J-zkbL6_*xH@u^cXu2UMxZ_%ZkKr2a&(nL8Ax^$jUwCC7H>d&z|Rc;zu7<t~z zUbNV&^M}(2%s98#5WB$H$VEE@q<4~Y%1BgKM3+Oi!@E_HP(xg`c-?w##%kav%dEse zOpy&MD-gq>TT<=|$(UDQNTDE|C;Ad^%Y9Azdcz5e#AWI&RF~w(;*5R;Qbj^DmA+ExaUEFE{vDN=Fd|GmJrdA;(_{GIcsq%RzCz|N>q1eFB1cY5xWVT6^4RJV+{j;afNFZ4g~M?e>j7=D+4b`ci=1F#fZV8fv^!0n-D5^NzYaUF1mht zZJe|s7iLD-Ck9nKQ2dt{0u3ADXLn5|FV=BTa+-u+W!Be)JGTw>MGuv*^NIR_Hr&g1=9(+X32Bd`5T;%>8Z((TPV&Qwk{kt1h1Hgpub4=?0nAuy6ac z0NQ?@T{svW1&9DpS(;ExD%r_ZlHN%0s>XLo?K~m9m(s@&Qy6-Xf45|6T>gJ%ER^xRF+U3l9>RsF&y{xH6>5Ig)92H*TI|3as?GX06 z`SMgo!!-Y9QmthsTYQzxl?Q!)n_ow?5U@V$XVI?`l$6{6WGR`+bc! zWuFGOLE`{L)ay#8Ns0AM{sWG6=Pg@b)_g=BT zvZT>8XF_{k(jhx-Rk+)11=3M_e*%|>_YKK! zv5XpHogwLt6DYDu*d0~rF{6x+%M6@)@LXwt0n(by&1QexquB5mDSM@uE8dcqpRF+kame;ABO=Kdg|!rhdaNf)pI9-`S~G5FF?1^0Y1 zSJh6c>JvU|kc^xu39Fkc60mt@?jZ3(&!XY&|%&BvC+*I6r zZ?r$_0-6TN5lXtRe@AXk`$Pl41&YyEA^{&X2~GG#A8opZ#d2hiNOGc%ilRIDb-Adl zW~ZV$#X&wtnW(Tw^+E-zn0w2OW~E_zx$0lf-)a8(OI^L&hv$LgSwNio$YV2RnYwQ zGWSi<8Kz{*MU#m!Nx~&6h(u|P4Uv4;Yeg4aJrg6P z8$@Iay}#yp>(g1uBf8_3zs~3%UG;nfu&Z38O1f5 z(THqrX(g7l+}8r_?iruIw}X^xyk|9gM=^uYF=6qgM()|wnavB0$%QY}1dZlkus#Qg zP;issIO{sf5ShS;>z*;>JBapg8D+&G|7mU(~Z0rOQH`YyW^uYC-dn zhY5PYp2E$f-*xDGY$uLRcjNK8dfj^;59L(dORk-dgg$jznicR~J+y+YC&1S37uz zNcKNVlX)+*Ut~G}dy|^td-IZ%){5yX$t)prHc4}suTEZp;H=1GPQmG$cP6|Fa=WhQ z#&iojzDe82zLu3^Yvw0mEmR=*4hIr=rgK(kjF&s?uwtab_@T|7Up*+n59U_~x>oxjBaE zy8FCk*sG2FZwU5vs$;DB_iOwr1A+cUe$KAv@^$x@q5ie`WNk~Y&{Mq^oM>7txF?>V zVc15NYsU;oMdh0Q$P3AwhxeL+#n_u9?S~%qo#}FQWiBgd@ceLdEULUM1+0RomX#Y= zsFn$@Tr?dtQ$9UqbJdsk!$o)d2@lDKZm^d z>lKzM0V&ct`-$ad9VHS^ p=XN;x11MUgTGdmHs5*ZHz*C)ivY#a-9RH&Ls7p3Tiivx|{{U^K$G`vp diff --git a/DSView/icons/search-bar_dis.png b/DSView/icons/search-bar_dis.png deleted file mode 100644 index 1b2d6955dd5e18ac6a6d65ff378f5c1c238ec7b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3671 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 diff --git a/DSView/icons/search.png b/DSView/icons/search.png old mode 100644 new mode 100755 diff --git a/DSView/icons/settings.png b/DSView/icons/settings.png deleted file mode 100644 index b0065b510a7b42f26f5cece13c439feef66091a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4440 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 lN*7{tFHMu|og= diff --git a/DSView/icons/showDoc.png b/DSView/icons/showDoc.png deleted file mode 100755 index 7a306d110a9f760c8b1b8c9c01b59045a354a12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38156 zcmd3NWm6qZ)GbMn;O-6wcY?dS1b6qK!JXjl!QC}@aMuu=gS)%Cb0^PRZ`G~)3+{(g zhuWvrNopWAU+%bAH2`dfMp4;p9uJZb&%3>f`CBk z|M&TjM2CbA7-5{H<;7vPpz%MmfUM<1NB=X4YdQ2^Au5qac>pWYe^y5`qklt5oULrlAlUDbVS!&@ z|NWw3Z|>}7{J!3y5y~y->gg z^FROZ;%H(9ar+*4{J+CQ?QLz%?3^L)Mw7b$8}z?ns#eZ6W)P)k(^L=;BoNYK!m93> zCmn9?1oIwEJ`*Q4_L_!MuyK&m{>Juot){o%A{%XFT}`Ev8K@MhChT{_8qtSpF&AqI z{lb6ljA3iE3@4v7mrClXmh@957~7M04&4cSStpLvJNei~0`ajQjgPaM!gZY6X*{j& zI%A((Uc2L4Qj8D@%4f)c1d;4hxX+Lu{e?(yB2g@XFO<(RD5R7B3@ATIL~^12{Y5Pt zBn1C&(AR*^{#gHp=R%@>WB?}kC=5#msr}znXkwom{+pB{?EmkHdaObOmN9{wFM<5O zA2a}rVD(U4QwSB%5)C}S1{($4Ol#aXe?!K6?~A$-hql#vJ!F3&W?{5&$oJ>bFWohm z4AR@h*uXqge~UHr(@uGS1(kLH4@NJZi=+e7L^^!`e^*V(yzL{fj?7u!Z;|)Y4K{>Q zXwX^`N(g@vfAcOqfX^APHNY;;{I701Uaf)IRVDY}+ju0eI(qUE$3{P) zMruM;J*p!A@@O{x)U3Nwy?Y*5G19Y7Rfh7n@#s)E2x-^+j=hRA7%J5I#BT;*XJulD#b(C>I_fBzWw{J}kx^W?F)P}99#xqWTmDrf@f$A* zu!C>{dklrtW)sE~nFZjJtMc-mabl9Q9+=vpN7^w{qa}8fJ`&#CCw}fPwM>N(axaC+ zC`r#-Q}|nc^cmr9^TvJ3IqWHvS+i0K8e9W$0QnlYpu1~X2KfiB;~9C=R{x{2HdkO^ z$4|9c(hn@}DBleb2CPWK1I(S!GdGXd;_Z7Enbhi&mHE`{5@AZ2fSU9V;qwsL=e^QS~Se&Qt%cdcHKQQ+KGN z4Y8{hRq+ud(<}25Z}o6SEc=J@Rr_eZ3}P2ysCsflv# zWmadJjA~BtBoRbB?nU!tQpNRs!KZs$!6&~<$5=Lp}!dYi8km!b&aG==W z=3yCSwRl8*jJCA#J0jCa|EJ&z()fP0)4|Q}sIe5ydsV!!&d5{kogc(uRAj_C@M*5O zl>T<~Z{bNBg#B%WDincj=VDnLWz(3D?CXXiUJAofAfbUqV2{ReVaAtl{-#@)KzrFk zy{nHtB}A}Tg^^=v&Lxsy3X&EjR^QR(T-oO5;F&NJKhgL=bhyu>ZPiNl%bn;=i*In5-5Ui6-v7<2JtTKZ<-Gq$b z&KF}cVK&&-o}g8`-Z@iQ!3)ym@ya6}^Loqzc~Pgf$w{RXp1tyjlR)15;|2cR1G7WI z)4~i6goqE)3C!s|I}V8Ow4jCtD7~7qK0o$ANS;4Z2dzO>$A5Sh&vC2kqGEzVgcIO3 zSII3Qpkc>I@{lsllp7bdCYIem-i6BB(#~fiA)v!Q2RMb9*brCuOgnpwVLux+zpPzF zZG20MrOZ3@Y<(0_Y}z+JDnI1zWgNCF?c=uWy9E#N8+iQ5wMO%_qZ1j7{D2e1p*wpW zANtHMmGHAl<<5+36$

)|nixmx%v0$}0UaxKOa^DHAa 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 TW_klsK|s^GqpMbdwt4y=+2P}o diff --git a/DSView/icons/showDoc25.png b/DSView/icons/showDoc25.png new file mode 100755 index 0000000000000000000000000000000000000000..c1ea34c40e4e0ac193ca2f214ad41c808dc25570 GIT binary patch literal 43062 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 literal 0 HcmV?d00001 diff --git a/DSView/icons/showDoc31.png b/DSView/icons/showDoc31.png new file mode 100755 index 0000000000000000000000000000000000000000..0bbfebeb174c1f1b339e59d20086d996270e818e GIT binary patch literal 36731 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 B%g_J- literal 0 HcmV?d00001 diff --git a/DSView/icons/single.png b/DSView/icons/single.png deleted file mode 100644 index c0565af0449c936b4e0e6cb575004112efdeec9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 zcmX}udpy%^9|!Q?hB4<1IYy2lAxyVI2Zzlm5t4Ikj5cfzi!joONJ#gbt99e9B&$)_ z7IzM{k-1CGD@6`DGokiO&+B>q_+HoRdVfFH_rL4)x~_Y;J4uPFhyws1g+$nU3U-g3 z5`zfVyj{zW1sgOL;YR=f3D{17fRZvL0gA>W-5f-@BEm9C20l~sQoqUJO#HEg_{bPM zP+P}B2uLzsK=vp?7#iI~_6cuYiOJn%?{Wi3$Y--<_t?nE`? zF<2B}$&-N!I?$btR}4BnDHM+a0%Q3*af#o0=WG8kS6Mr5B)Xa1A1+z{e?T?)% zmVGY^z82`D-f4&NYS7H^Hp6+C?m{vQyNbmJ5eCR_}!i6BUsQpZx#gj;1*r4P&q`s3Dnx@typ# zb_A%b_K&-;A79C|qfJ zO@nN}>R!KXlDz1^={^Vzj$zHgxjc(?FFSy~Z~9_Qd4qQ5Pm65P`umTF^kJ&ZnUmYG z^TAA)reA@vnEZGSD-mG45i#lfK}@PC=UTtxpA)*wZ7q<#GSs!SzaGjHH_qAi2T6jH zirHDcTVux;Nj%GI2XnhtF3+wo3w1wF{fI1GvJPEAmYH10ruR7KlhBF!^>wn_XYBd& z815*1LXiv!5=t9(4_{~xyUa}(n<^Hz)IzTlG{;XSdwB-O9w;4d*|j0Ll)z=^{?z6` z&^|&RCNqPIR!4o7&WeAVTIh&NaO-FsdbFjuA5F{cfPB@eZ+O3buFGg!SLJncrs}{i zMx5l7e}{P40zrOk_aS-d@yf_UkAy&?@-!J|#x zmIZZ64A?+9sUV_dM)?h2WdA;eRHIGXOS4*4m6n6j+h!k%8=tnaTv=+Y98#rZPmda6 zQwBG*?=SE4-A%*8&d2&1b-;A5CLHZhzhXg0oLBgrp=)VSt4kxCZaMkiqhvuj?X+R` zoc1ffs0@lZ6F&0Dd0&5%Znt^u@~707t+FHdE)^}Vfl9Nw3;B^^{#~!5nt`yLhha1bq0(mjuJLnKI^5EsGB0axRs6fCqQ22U$>4y{ zL~*Dnfj?6nS$4-YlZV3YJrtPB_V2{T9qq$X9Pm-nS)xX-lr{7LFkr;Z*HA4u<>_bLWiwMoZqi zePiAs(aK9z>`}ioZFj2j?J1JJT&_!D7}_N^XY)16mE@%J-6WbiG&UKTlH&jT)p9bn zo>fEJ@F`{8ugUwv-c$YAb&B;D}hJ_s#ExR55E6ob`_d`{yxC>g|Lj+T?ky*x*4r5nc z-Lpr{XWP`D4{^S%7m*(qSwL4kgE3o%rW)YHGI`zDYcGiqwT{~jwjrDxQ4b;MjTAeV z{P|4H%Ou`rFSVeAy$4k1dOpkVj?8IxLe5ZDagN z{b(B9d;5ri@CY)Mu&&2_f=+BX?-<)NKw>lZ1k?h)o!|lIr7FgeoZ+Yj6{~>()q-pM z460RVHKq6SUxSWu$BV6_<&3LLmKy;RucTzy;!Cp4SK(TKkcmdy=Xx zLC*JbtB}z(3WPO5_UV{VIkk63LTA7bhBQd2u5NC*QlEP^!q!5){dPSRsd~;_{-=29 zU_Ke!J(GJpNn|95ar#Sdu_SrWFxXCd*8y(yFY3Tl>)xO`x|EjlQT|&yF*WcQFQHpG zfCmKFtWW%Dv5Zi8or`9^M=fv_^XK&!pRY)D)-W#0-&yEK!{=8R4_zzHxrA8FCm0{h zh*q|uRDfusCR>t?bb~Q)N8LoZWEV|$1-5OG0Z1}_XSV5GrhWm{t@CI!e z(Uz{eam^%el#`}%4$iwr=9LdfU&n1TZ%KA7DvU}&$2d5hxdE2;+8v$Qv4Xv-i>>J0 s-rr&H(`;rfP;X49E~tzb*uWQhnr?SPPxAYk;JX1J9o+5fj)!Fa2d+AS-T(jq diff --git a/DSView/icons/single_dis.png b/DSView/icons/single_dis.png deleted file mode 100644 index 4e1221f83739bd06294778e61b0f596b17d90473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2443 zcmX|@c{tQ-8^?cRiLvBJ&e)PYB~*h%WoL#4Av+O{M#yW+k~4a*_xy8H{e28~uORm=N8W;ofhynmnse=Lmg+($vD1?I}tb{m%0us{tn=rb>Ph{neGsELT z&{&|dmJZ_~F&qzB21Ny6Q5YNw9SKN*l~s9MzQ_a0m{lmY^H)=;5Cf8{~gr zRl=bnf&l$Z2{2CqA1KafBre7u8wB`Z_7Ci$Kf_T`0pb2UD;A*88gh78_yD{4V{`($}4G03(_iu6kXR|;@Lxh$+(eRuDMI~Ns&espKH1I!HA&y!*53=>8^?XJGT~2Rn;z9o%ip1 zYw|WS0OeM&ZT{Szg`D&fG9R-=+5DbC zqEbpq0&mG;y!?I-GhG-7y)c;ur(`4aJWZiYJ_WwZ=lWEa`MdYnY(gtPMBOLL zHWqm~e`;aG0Ynyz-(%YZ-^I%Qt%EwFF|G;fUj%bda+GHlG!SQf=tlaK)wu9QG1gz4 z2PjSku_Qu2D_>Br9+J8v$1)OKvy%(ecm7JFF993;6uqWBJGimeYo?RU7+vw%>)1gM zMMv)&kXRDg`Q`P8q=^c~?>ec-;Y{xJFP&sQs@6P4i&TK7hs&>Mm8wD##pfR4n(x;* z@fD8BaU7a{)tweu(T7*`swK9Zt!EP0&TNN0V5_cN^htDYw(wy`T}9eJ-PHHU!DK)F zZ|!eVK)RFLF>QaCF-}66;9Vm~v%>83_><@~uIYZ}x^&tm+~{biYIi*i$MF{0F~r!oks)dd{#?~rGwwY$PH`cK@X{&RBMNXv{jQZa4Yd?i3~ z?_EV|jMsgyK)G1)tq83LEfP7>X(I{b$47?l6pZQ;5>4h2@JnrP!o&Y#&57z5N!`z1 z%Yn%kj0(TffvlC4FY9NHxR{!xoX@TbJ4YSAF;4M2TmNdJ!NzIiHFHvzHoOFpC$aqLYdYtd#qcj62WR$I_g?y>&(Y+Fjc-S; zD(3hMMwsfZtJd2YvS-UH3CRXiAvBcf%%mFHs<6oD!flUvQ5uB#$|^u`MFSd)>LTEY#Oxcp zOX;mZ7`81~O~1G|4XgUVMr0(65Nz8a@m{n6Y)BTpED>(2T{0`X(0PkQ9k3n6Pd=r4 zlfwEI8_3|n#-5hX*~Jy&$S0s|xQOp?^{>OKkYPK7Mr=D1!&Ew#53)#p*HK2B#ovkl zRtsYG-VxGX8d#OTDcAq}qR_<$A>M@wP_HzvAzhsSzKbgJrXG(!Zy4D0F_|yK^GCvN z1zG>uNf`@Nw8GPsi3_C&wa-^y!p2VdslI6cO&aeqo32_ZaKHS>8KNx>b_%3Q+T16d zAs38#hBEc7)ewK!tC9%FVR06J;vouR@gl~a@w}CN_wm9)2g1ALO5TRT8vo|@a@9>y zXZYP;KhljbHZ_d~O_zd@TIvYC@gdhS>S1~YA>xD;SfNy7LK7q4)*DZN^OjZ^^O3z1 zmxhA~oD^stNhx_a6w(L*uJ13}=1!!kq!UI-OdTk? zb<<=Cf4tws?G;|)mApHbyi?iwr+h)~5H7Wk9-ruW>GHUwAKEoIgIFdHoicexFk`Rk zmr2DmcyvTpT-ZXd757T2MzLlHnWE0;Gqc(U0*|7L~o;^!v>Z^4( zkA+_A@`bAsy9gOrRE|D8fI>N|JYTx$FB03yUf%GjRU+QER71eVQnkc)KIADvnF=9D zOQ#+@@Ud1ZX<(xFNp3c-mf$d>oBhCrt3H*NK>uc$uIxj z(le^d1z-5g`R-W9&`%8`n6IAG`YP9Z?1_fo3ilV9W^L`_3i-rj`#@rd(bJ|Q2Fj>_ z@ZZX=`$Of=)Yo{lT%D^WFu9NJ?T!*bP_HlCZqR$d#Qv1%o#v6wzRwghOYmIEccIjF z+74CcLMB&{P}QA$CuVOxCD#%gz-LFLp5MR%^e%bvcTpHuVC|{P5aI7+DgoUoTHl%lIa+LI6Ydkk$ xM_V%TztabA6furJb!7)lA*L2O_AhaZhz004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00006VoOIv0RI600RN!9r;`8x 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 Vu13Mr0_m9q9C6OrN;}fE{{Y>vzAXR% diff --git a/DSView/icons/trigger.png b/DSView/icons/trigger.png deleted file mode 100644 index 6b1ca1b8e3bd865f2d0d50a2e64a25bdc05d909e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4093 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 diff --git a/DSView/icons/trigger_dis.png b/DSView/icons/trigger_dis.png deleted file mode 100644 index eb401cff315562160b57869f5f18811b853cac56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4101 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 diff --git a/DSView/icons/wait.gif b/DSView/icons/wait.gif deleted file mode 100644 index b3ba36a619d15ef20c1e7f5087fcfcef2ea452f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9469 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 + + my_25.qm + qt_25.qm + + diff --git a/DSView/languages/my_25.qm b/DSView/languages/my_25.qm new file mode 100755 index 0000000000000000000000000000000000000000..2430370fea5fdfd37b1dc4487c6df93ed087dea3 GIT binary patch literal 30023 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 literal 0 HcmV?d00001 diff --git a/DSView/languages/qt_25.qm b/DSView/languages/qt_25.qm new file mode 100755 index 0000000000000000000000000000000000000000..3e5c146b14e0e5bd643a55a9f4fa625c547ad2b0 GIT binary patch literal 118333 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 E2ZWfXlmGw# literal 0 HcmV?d00001 diff --git a/DSView/main.cpp b/DSView/main.cpp old mode 100644 new mode 100755 index e8157ff..7350d34 --- a/DSView/main.cpp +++ b/DSView/main.cpp @@ -63,12 +63,15 @@ int main(int argc, char *argv[]) struct sr_context *sr_ctx = NULL; const char *open_file = NULL; + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication a(argc, argv); // Set some application metadata QApplication::setApplicationVersion(DS_VERSION_STRING); QApplication::setApplicationName("DSView"); - QApplication::setOrganizationDomain("http://www.DreamSourceLab.com"); + QApplication::setOrganizationName("DreamSourceLab"); + QApplication::setOrganizationDomain("www.DreamSourceLab.com"); // Parse arguments while (1) { @@ -115,7 +118,7 @@ int main(int argc, char *argv[]) } else if (argc - optind == 1) open_file = argv[argc - 1]; - // Initialise DS_RES_PATH + // Initialise DS_RES_PATH QDir dir(QCoreApplication::applicationDirPath()); if (dir.cd("..") && dir.cd("share") && @@ -153,11 +156,6 @@ int main(int argc, char *argv[]) // Initialise the main frame pv::MainFrame w(device_manager, open_file); - //QFile qss(":/stylesheet.qss"); - QFile qss(":darkstyle/style.qss"); - qss.open(QFile::ReadOnly); - a.setStyleSheet(qss.readAll()); - qss.close(); w.show(); w.readSettings(); w.show_doc(); diff --git a/DSView/pv/data/analog.cpp b/DSView/pv/data/analog.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/analog.h b/DSView/pv/data/analog.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/analogsnapshot.cpp b/DSView/pv/data/analogsnapshot.cpp old mode 100644 new mode 100755 index bd73ae9..91e11e6 --- a/DSView/pv/data/analogsnapshot.cpp +++ b/DSView/pv/data/analogsnapshot.cpp @@ -123,18 +123,16 @@ void AnalogSnapshot::first_payload(const sr_datafeed_analog &analog, uint64_t to for (unsigned int i = 0; i < _channel_num; i++) { uint64_t envelop_count = _total_sample_count / EnvelopeScaleFactor; for (unsigned int level = 0; level < ScaleStepCount; level++) { - envelop_count = ((envelop_count + EnvelopeDataUnit - 1) / - EnvelopeDataUnit) * EnvelopeDataUnit; +// envelop_count = ((envelop_count + EnvelopeDataUnit - 1) / +// EnvelopeDataUnit) * EnvelopeDataUnit; + _envelope_levels[i][level].count = envelop_count; + if (envelop_count == 0) + break; _envelope_levels[i][level].samples = (EnvelopeSample*)malloc(envelop_count * sizeof(EnvelopeSample)); - _envelope_levels[i][level].max = (uint8_t *)malloc(envelop_count * _unit_bytes); - _envelope_levels[i][level].min = (uint8_t *)malloc(envelop_count * _unit_bytes); - if (!_envelope_levels[i][level].samples || - !_envelope_levels[i][level].max || - !_envelope_levels[i][level].min) { + if (!_envelope_levels[i][level].samples) { isOk = false; break; } - _envelope_levels[i][level].count = envelop_count; envelop_count = envelop_count / EnvelopeScaleFactor; } if (!isOk) @@ -277,7 +275,7 @@ void AnalogSnapshot::append_payload_to_envelope_levels() if (e0.length == 0) continue; - reallocate_envelope(e0); + //reallocate_envelope(e0); dest_ptr = e0.samples + prev_length; @@ -324,13 +322,13 @@ void AnalogSnapshot::append_payload_to_envelope_levels() if (e.ring_length == prev_length) break; - reallocate_envelope(e); + //reallocate_envelope(e); // Subsample the level lower level const EnvelopeSample *src_ptr = el.samples + prev_length * EnvelopeScaleFactor; - const EnvelopeSample *const end_dest_ptr = e.samples + e.ring_length; - dest_ptr = e.samples + prev_length; + const EnvelopeSample *const end_dest_ptr = (e.ring_length == e.count) ? e.samples : e.samples + e.ring_length; + dest_ptr = (prev_length == e.count) ? e.samples : e.samples + prev_length; while(dest_ptr != end_dest_ptr) { const EnvelopeSample * end_src_ptr = src_ptr + EnvelopeScaleFactor; diff --git a/DSView/pv/data/analogsnapshot.h b/DSView/pv/data/analogsnapshot.h old mode 100644 new mode 100755 index 25d1c0d..644dbfa --- a/DSView/pv/data/analogsnapshot.h +++ b/DSView/pv/data/analogsnapshot.h @@ -54,8 +54,6 @@ public: uint64_t length; uint64_t samples_num; EnvelopeSample *samples; - uint8_t *max; - uint8_t *min; }; private: diff --git a/DSView/pv/data/decode/annotation.cpp b/DSView/pv/data/decode/annotation.cpp old mode 100644 new mode 100755 index 3581817..c433a28 --- a/DSView/pv/data/decode/annotation.cpp +++ b/DSView/pv/data/decode/annotation.cpp @@ -45,7 +45,7 @@ Annotation::Annotation(const srd_proto_data *const pdata) : _type = pda->ann_type; const char *const *annotations = (char**)pda->ann_text; - while(*annotations) { + while(*annotations) { _annotations.push_back(QString::fromUtf8(*annotations)); annotations++; } diff --git a/DSView/pv/data/decode/annotation.h b/DSView/pv/data/decode/annotation.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decode/decoder.cpp b/DSView/pv/data/decode/decoder.cpp old mode 100644 new mode 100755 index fed10d7..486340c --- a/DSView/pv/data/decode/decoder.cpp +++ b/DSView/pv/data/decode/decoder.cpp @@ -43,7 +43,8 @@ Decoder::~Decoder() { for (map::const_iterator i = _options_back.begin(); i != _options_back.end(); i++) - g_variant_unref((*i).second); + if ((*i).second) + g_variant_unref((*i).second); } const srd_decoder* Decoder::decoder() const @@ -81,7 +82,9 @@ const std::map& Decoder::options() const void Decoder::set_option(const char *id, GVariant *value) { assert(value); - g_variant_unref(_options_back[id]); + if (_options_back[id]) { + g_variant_unref(_options_back[id]); + } g_variant_ref(value); _options_back[id] = value; _setted = true; diff --git a/DSView/pv/data/decode/decoder.h b/DSView/pv/data/decode/decoder.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decode/row.cpp b/DSView/pv/data/decode/row.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decode/row.h b/DSView/pv/data/decode/row.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decode/rowdata.cpp b/DSView/pv/data/decode/rowdata.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decode/rowdata.h b/DSView/pv/data/decode/rowdata.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decodermodel.cpp b/DSView/pv/data/decodermodel.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decodermodel.h b/DSView/pv/data/decodermodel.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/decoderstack.cpp b/DSView/pv/data/decoderstack.cpp old mode 100644 new mode 100755 index 8e6a803..61a66da --- a/DSView/pv/data/decoderstack.cpp +++ b/DSView/pv/data/decoderstack.cpp @@ -478,7 +478,6 @@ void DecoderStack::decode_data( } uint64_t entry_cnt = 0; - uint8_t chunk_type = 0; uint64_t i = decode_start; char *error = NULL; while(!boost::this_thread::interruption_requested() && @@ -492,6 +491,7 @@ void DecoderStack::decode_data( int sig_index = logic_di->dec_channelmap[j]; if (sig_index == -1) { chunk.push_back(NULL); + chunk_const.push_back(0); } else { if (_snapshot->has_data(sig_index)) { chunk.push_back(_snapshot->get_samples(i, chunk_end, sig_index)); @@ -502,57 +502,17 @@ void DecoderStack::decode_data( } } } + if (chunk_end > decode_end) + chunk_end = decode_end; if (chunk_end - i > MaxChunkSize) chunk_end = i + MaxChunkSize; - if (srd_session_send(session, chunk_type, i, chunk_end, - chunk.data(), chunk_const.data(), &error) != SRD_OK) { + if (srd_session_send(session, i, chunk_end, + chunk.data(), chunk_const.data(), chunk_end - i, &error) != SRD_OK) { _error_message = QString::fromLocal8Bit(error); break; } - - if (logic_di && logic_di->logic_mask != 0 && logic_di->cur_pos < decode_end) { - uint64_t cur_pos = logic_di->cur_pos; - uint64_t sample; - if (logic_di->edge_index == -1) { - std::vector pos_vector; - cur_pos++; - for (int j =0 ; j < logic_di->dec_num_channels; j++) { - int index = logic_di->dec_channelmap[j]; - if (index != -1 && (logic_di->logic_mask & (1 << j))) { - bool last_sample = _snapshot->get_sample(cur_pos - 1, index); - pos_vector.push_back(cur_pos); - _snapshot->get_nxt_edge(pos_vector.back(), last_sample, decode_end, 1, index); - } - } - cur_pos = *std::min_element(pos_vector.begin(), pos_vector.end()); - } else { - bool last_sample = _snapshot->get_sample(cur_pos, logic_di->edge_index); - do { - sample = 0; - cur_pos++; - if (!_snapshot->get_nxt_edge(cur_pos, last_sample, decode_end, 1, logic_di->edge_index)) - break; - for (int j =0 ; j < logic_di->dec_num_channels; j++) { - if (logic_di->logic_mask & (1 << j)) { - int index = logic_di->dec_channelmap[j]; - bool index_sample = _snapshot->get_sample(cur_pos, index); - sample += index_sample << j; - if (index == logic_di->edge_index) - last_sample = index_sample; - } - } - } while(sample != logic_di->exp_logic); - } - - i = cur_pos; - if (i >= decode_end) - i = decode_end; - chunk_type = 0; - } else { - i = chunk_end + 1; - chunk_type = 1; - } + i = chunk_end; { boost::lock_guard lock(_output_mutex); diff --git a/DSView/pv/data/decoderstack.h b/DSView/pv/data/decoderstack.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/dso.cpp b/DSView/pv/data/dso.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/dso.h b/DSView/pv/data/dso.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/dsosnapshot.cpp b/DSView/pv/data/dsosnapshot.cpp old mode 100644 new mode 100755 index f90b8e7..ae576be --- a/DSView/pv/data/dsosnapshot.cpp +++ b/DSView/pv/data/dsosnapshot.cpp @@ -163,16 +163,20 @@ void DsoSnapshot::append_payload(const sr_datafeed_dso &dso) append_data(dso.data, dso.num_samples, _instant); // Generate the first mip-map from the data + //if (_envelope_en) + // append_payload_to_envelope_levels(dso.samplerate_tog); if (_envelope_en) - append_payload_to_envelope_levels(dso.samplerate_tog); + append_payload_to_envelope_levels(true); } } void DsoSnapshot::append_data(void *data, uint64_t samples, bool instant) { if (instant) { + if(_sample_count + samples > _total_sample_count) + samples = _total_sample_count - _sample_count; memcpy((uint8_t*)_data + _sample_count * _channel_num, data, samples*_channel_num); - _sample_count = (_sample_count + samples) % (_total_sample_count + 1); + _sample_count += samples; } else { memcpy((uint8_t*)_data, data, samples*_channel_num); _sample_count = samples; @@ -304,12 +308,17 @@ void DsoSnapshot::append_payload_to_envelope_levels(bool header) const Envelope &el = _envelope_levels[i][level-1]; // Expand the data buffer to fit the new samples - prev_length = e.length; + if (header) + prev_length = 0; + else + prev_length = e.length; e.length = el.length / EnvelopeScaleFactor; // Break off if there are no more samples to computed // if (e.length == prev_length) // break; + if (e.length == 0) + break; if (e.length == prev_length) prev_length = 0; diff --git a/DSView/pv/data/dsosnapshot.h b/DSView/pv/data/dsosnapshot.h old mode 100644 new mode 100755 index 7b56c47..aa19cca --- a/DSView/pv/data/dsosnapshot.h +++ b/DSView/pv/data/dsosnapshot.h @@ -82,7 +82,8 @@ public: void clear(); void init(); - void first_payload(const sr_datafeed_dso &dso, uint64_t total_sample_count, std::map ch_enable, bool instant); + void first_payload(const sr_datafeed_dso &dso, uint64_t total_sample_count, + std::map ch_enable, bool instant); void append_payload(const sr_datafeed_dso &dso); diff --git a/DSView/pv/data/group.cpp b/DSView/pv/data/group.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/group.h b/DSView/pv/data/group.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/groupsnapshot.cpp b/DSView/pv/data/groupsnapshot.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/groupsnapshot.h b/DSView/pv/data/groupsnapshot.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/logic.cpp b/DSView/pv/data/logic.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/logic.h b/DSView/pv/data/logic.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/logicsnapshot.cpp b/DSView/pv/data/logicsnapshot.cpp old mode 100644 new mode 100755 index d0cfec7..0542672 --- a/DSView/pv/data/logicsnapshot.cpp +++ b/DSView/pv/data/logicsnapshot.cpp @@ -222,11 +222,14 @@ void LogicSnapshot::append_cross_payload( _src_ptr = logic.data; uint64_t len = logic.length; + // samples not accurate, lead to a larger _sampole_count + // _sample_count should be fixed in the last packet + // so _total_sample_count must be align to LeafBlock uint64_t samples = ceil(logic.length * 8.0 / _channel_num); if (_sample_count + samples < _total_sample_count) { _sample_count += samples; } else { - len = ceil((_total_sample_count - _sample_count) * _channel_num / 8.0); + //len = ceil((_total_sample_count - _sample_count) * _channel_num / 8.0); _sample_count = _total_sample_count; } @@ -471,7 +474,7 @@ const uint8_t *LogicSnapshot::get_samples(uint64_t start_sample, uint64_t &end_s { //assert(data); assert(start_sample < get_sample_count()); - assert(end_sample < get_sample_count()); + assert(end_sample <= get_sample_count()); assert(start_sample <= end_sample); int order = get_ch_order(sig_index); @@ -481,7 +484,7 @@ const uint8_t *LogicSnapshot::get_samples(uint64_t start_sample, uint64_t &end_s end_sample = (root_index << (LeafBlockPower + RootScalePower)) + (root_pos << LeafBlockPower) + ~(~0ULL << LeafBlockPower); - end_sample = min(end_sample, get_sample_count() - 1); + end_sample = min(end_sample + 1, get_sample_count()); if (order == -1 || _ch_data[order][root_index].lbp[root_pos] == NULL) diff --git a/DSView/pv/data/logicsnapshot.h b/DSView/pv/data/logicsnapshot.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/mathstack.cpp b/DSView/pv/data/mathstack.cpp old mode 100644 new mode 100755 index e33df5e..5b9ce7a --- a/DSView/pv/data/mathstack.cpp +++ b/DSView/pv/data/mathstack.cpp @@ -36,39 +36,75 @@ using namespace std; namespace pv { namespace data { -const QString MathStack::windows_support[5] = { - QT_TR_NOOP("Rectangle"), - QT_TR_NOOP("Hann"), - QT_TR_NOOP("Hamming"), - QT_TR_NOOP("Blackman"), - QT_TR_NOOP("Flat_top") +const int MathStack::EnvelopeScalePower = 8; +const int MathStack::EnvelopeScaleFactor = 1 << EnvelopeScalePower; +const float MathStack::LogEnvelopeScaleFactor = logf(EnvelopeScaleFactor); +const uint64_t MathStack::EnvelopeDataUnit = 4*1024; // bytes + +const uint64_t MathStack::vDialValue[MathStack::vDialValueCount] = { + 1, + 2, + 5, + 10, + 20, + 50, + 100, + 200, + 500, + 1000, + 2000, + 5000, + 10000, + 20000, + 50000, + 100000, + 200000, + 500000, + 1000000, }; - -const uint64_t MathStack::length_support[5] = { - 1024, - 2048, - 4096, - 8192, - 16384, +const QString MathStack::vDialAddUnit[MathStack::vDialUnitCount] = { + "mV", + "V", +}; +const QString MathStack::vDialMulUnit[MathStack::vDialUnitCount] = { + "mV*V", + "V*V", +}; +const QString MathStack::vDialDivUnit[MathStack::vDialUnitCount] = { + "mV/V", + "V/V", }; -MathStack::MathStack(pv::SigSession &session, int index) : +MathStack::MathStack(pv::SigSession &session, + boost::shared_ptr dsoSig1, + boost::shared_ptr dsoSig2, + MathType type) : _session(session), - _index(index), - _dc_ignore(true), - _sample_interval(1), + _dsoSig1(dsoSig1), + _dsoSig2(dsoSig2), + _type(type), + _sample_num(0), + _total_sample_num(0), _math_state(Init), - _fft_plan(NULL) + _envelope_en(false), + _envelope_done(false) { + memset(_envelope_level, 0, sizeof(_envelope_level)); } MathStack::~MathStack() { - _xn.clear(); - _xk.clear(); - _power_spectrum.clear(); - if (_fft_plan) - fftw_destroy_plan(_fft_plan); + _math.clear(); + free_envelop(); +} + +void MathStack::free_envelop() +{ + BOOST_FOREACH(Envelope &e, _envelope_level) { + if (e.samples) + free(e.samples); + } + memset(_envelope_level, 0, sizeof(_envelope_level)); } void MathStack::clear() @@ -77,11 +113,13 @@ void MathStack::clear() void MathStack::init() { + _sample_num = 0; + _envelope_done = false; } -int MathStack::get_index() const +MathStack::MathType MathStack::get_type() const { - return _index; + return _type; } uint64_t MathStack::get_sample_num() const @@ -89,158 +127,351 @@ uint64_t MathStack::get_sample_num() const return _sample_num; } -void MathStack::set_sample_num(uint64_t num) +void MathStack::realloc(uint64_t num) { - _sample_num = num; - _xn.resize(_sample_num); - _xk.resize(_sample_num); - _power_spectrum.resize(_sample_num/2+1); - _fft_plan = fftw_plan_r2r_1d(_sample_num, _xn.data(), _xk.data(), - FFTW_R2HC, FFTW_ESTIMATE); + if (num != _total_sample_num) { + free_envelop(); + _total_sample_num = num; + + _math.resize(_total_sample_num); + uint64_t envelop_count = _total_sample_num / EnvelopeScaleFactor; + for (unsigned int level = 0; level < ScaleStepCount; level++) { + envelop_count = ((envelop_count + EnvelopeDataUnit - 1) / + EnvelopeDataUnit) * EnvelopeDataUnit; + _envelope_level[level].samples = (EnvelopeSample*)malloc(envelop_count * sizeof(EnvelopeSample)); + envelop_count = envelop_count / EnvelopeScaleFactor; + } + } } -int MathStack::get_windows_index() const +void MathStack::enable_envelope(bool enable) { - return _windows_index; + if (!_envelope_done && enable) + append_to_envelope_level(true); + _envelope_en = enable; } -void MathStack::set_windows_index(int index) +uint64_t MathStack::default_vDialValue() { - _windows_index = index; -} + uint64_t value = 0; + view::dslDial *dial1 = _dsoSig1->get_vDial(); + view::dslDial *dial2 = _dsoSig1->get_vDial(); + const uint64_t dial1_value = dial1->get_value() * dial1->get_factor(); + const uint64_t dial2_value = dial2->get_value() * dial2->get_factor(); + + switch(_type) { + case MATH_ADD: + case MATH_SUB: + value = max(dial1_value, dial2_value); + break; + case MATH_MUL: + value = dial1_value * dial2_value / 1000.0; + break; + case MATH_DIV: + value = dial1_value * 1000.0 / dial2_value; + break; + } -bool MathStack::dc_ignored() const -{ - return _dc_ignore; -} + for (int i = 0; i < vDialValueCount; i++) { + if (vDialValue[i] >= value) { + value = vDialValue[i]; + break; + } + } -void MathStack::set_dc_ignore(bool ignore) -{ - _dc_ignore = ignore; + return value; } -int MathStack::get_sample_interval() const +view::dslDial * MathStack::get_vDial() { - return _sample_interval; -} + QVector vValue; + QVector vUnit; + view::dslDial *dial1 = _dsoSig1->get_vDial(); + view::dslDial *dial2 = _dsoSig2->get_vDial(); + const uint64_t dial1_min = dial1->get_value(0) * dial1->get_factor(); + const uint64_t dial1_max = dial1->get_value(dial1->get_count() - 1) * dial1->get_factor(); + const uint64_t dial2_min = dial2->get_value(0) * dial2->get_factor(); + const uint64_t dial2_max = dial2->get_value(dial2->get_count() - 1) * dial2->get_factor(); + + switch(_type) { + case MATH_ADD: + case MATH_SUB: + for (int i = 0; i < vDialValueCount; i++) { + if (vDialValue[i] < min(dial1_min, dial2_min)) + continue; + vValue.append(vDialValue[i]); + if (vDialValue[i] > max(dial1_max, dial2_max)) + break; + } + for(int i = 0; i < vDialUnitCount; i++) + vUnit.append(vDialAddUnit[i]); + break; + case MATH_MUL: + for (int i = 0; i < vDialValueCount; i++) { + if (vDialValue[i] < dial1_min * dial2_min / 1000.0) + continue; + vValue.append(vDialValue[i]); + if (vDialValue[i] > dial1_max * dial2_max / 1000.0) + break; + } + for(int i = 0; i < vDialUnitCount; i++) + vUnit.append(vDialMulUnit[i]); + break; + case MATH_DIV: + for (int i = 0; i < vDialValueCount; i++) { + if (vDialValue[i] < min(dial1_min * 1000.0 / dial2_max, dial2_min * 1000.0 / dial1_max)) + continue; + vValue.append(vDialValue[i]); + if (vDialValue[i] > max(dial1_max * 1000.0 / dial2_min, dial2_max * 1000.0 / dial1_min)) + break; + } + for(int i = 0; i < vDialUnitCount; i++) + vUnit.append(vDialDivUnit[i]); + break; + } -void MathStack::set_sample_interval(int interval) -{ - _sample_interval = interval; + view::dslDial *vDial = new view::dslDial(vValue.count(), vDialValueStep, vValue, vUnit); + return vDial; } -const std::vector MathStack::get_windows_support() const +QString MathStack::get_unit(int level) { - std::vector windows; - for (size_t i = 0; i < sizeof(windows_support)/sizeof(windows_support[0]); i++) - { - windows.push_back(windows_support[i]); + if (level >= vDialUnitCount) + return tr(" "); + + QString unit; + switch(_type) { + case MATH_ADD: + case MATH_SUB: + unit = vDialAddUnit[level]; + break; + case MATH_MUL: + unit = vDialMulUnit[level]; + break; + case MATH_DIV: + unit = vDialDivUnit[level]; + break; } - return windows; + + return unit; } -const std::vector MathStack::get_length_support() const +double MathStack::get_math_scale() { - std::vector length; - for (size_t i = 0; i < sizeof(length_support)/sizeof(length_support[0]); i++) - { - length.push_back(length_support[i]); + double scale = 0; + switch(_type) { + case MATH_ADD: + case MATH_SUB: + scale = 1.0 / DS_CONF_DSO_VDIVS; + break; + case MATH_MUL: + //scale = 1.0 / (DS_CONF_DSO_VDIVS * DS_CONF_DSO_VDIVS); + scale = 1.0 / DS_CONF_DSO_VDIVS; + break; + case MATH_DIV: + scale = 1.0 / DS_CONF_DSO_VDIVS; + break; } - return length; + + return scale; } -const std::vector MathStack::get_fft_spectrum() const +const double* MathStack::get_math(uint64_t start) const { - std::vector empty; - if (_math_state == Stopped) - return _power_spectrum; - else - return empty; + return _math.data() + start; } -double MathStack::get_fft_spectrum(uint64_t index) +void MathStack::get_math_envelope_section(EnvelopeSection &s, + uint64_t start, uint64_t end, float min_length) const { - double ret = -1; - if (_math_state == Stopped && index < _power_spectrum.size()) - ret = _power_spectrum[index]; + assert(end <= get_sample_num()); + assert(start <= end); + assert(min_length > 0); + + if (!_envelope_done) { + s.length = 0; + return; + } + + const unsigned int min_level = max((int)floorf(logf(min_length) / + LogEnvelopeScaleFactor) - 1, 0); + const unsigned int scale_power = (min_level + 1) * + EnvelopeScalePower; + start >>= scale_power; + end >>= scale_power; + + s.start = start << scale_power; + s.scale = 1 << scale_power; + if (_envelope_level[min_level].length == 0) + s.length = 0; + else + s.length = end - start; - return ret; + s.samples = _envelope_level[min_level].samples + start; } -void MathStack::calc_fft() +void MathStack::calc_math() { _math_state = Running; - // Get the dso data - boost::shared_ptr data; - boost::shared_ptr dsoSig; - BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { - if ((dsoSig = dynamic_pointer_cast(s))) { - if (dsoSig->get_index() == _index && dsoSig->enabled()) { - data = dsoSig->dso_data(); - break; - } - } - } - if (!data) - return; - - // Check we have a snapshot of data + const boost::shared_ptr data = _dsoSig1->dso_data(); const deque< boost::shared_ptr > &snapshots = data->get_snapshots(); if (snapshots.empty()) return; - _snapshot = snapshots.front(); - if (_snapshot->get_sample_count() < _sample_num*_sample_interval) + const boost::shared_ptr &snapshot = + snapshots.front(); + if (snapshot->empty()) return; - // Get the samplerate - _samplerate = data->samplerate(); - if (_samplerate == 0.0) - _samplerate = 1.0; - - // prepare _xn data - const double offset = dsoSig->get_hw_offset(); - const double vscale = dsoSig->get_vDialValue() * dsoSig->get_factor() * DS_CONF_DSO_VDIVS / (1000*255.0); - const uint16_t step = _snapshot->get_channel_num() * _sample_interval; - const uint8_t *const samples = _snapshot->get_samples(0, _sample_num*_sample_interval-1, _index); - double wsum = 0; - for (unsigned int i = 0; i < _sample_num; i++) { - double w = window(i, _windows_index); - _xn[i] = ((double)samples[i*step] - offset) * vscale * w; - wsum += w; - } + if (_math.size() < _total_sample_num) + return; - // fft - fftw_execute(_fft_plan); + if (!_dsoSig1->enabled() || !_dsoSig2->enabled()) + return; - // calculate power spectrum - _power_spectrum[0] = abs(_xk[0])/wsum; /* DC component */ - for (unsigned int k = 1; k < (_sample_num + 1) / 2; ++k) /* (k < N/2 rounded up) */ - _power_spectrum[k] = sqrt((_xk[k]*_xk[k] + _xk[_sample_num-k]*_xk[_sample_num-k]) * 2) / wsum; - if (_sample_num % 2 == 0) /* N is even */ - _power_spectrum[_sample_num/2] = abs(_xk[_sample_num/2])/wsum; /* Nyquist freq. */ + const double scale1 = _dsoSig1->get_vDialValue() / 1000.0 * _dsoSig1->get_factor() * DS_CONF_DSO_VDIVS * + _dsoSig1->get_scale() / _dsoSig1->get_view_rect().height(); + const double delta1 = _dsoSig1->get_hw_offset() * scale1; + + const double scale2 = _dsoSig2->get_vDialValue() / 1000.0 * _dsoSig2->get_factor() * DS_CONF_DSO_VDIVS * + _dsoSig2->get_scale() / _dsoSig2->get_view_rect().height(); + const double delta2 = _dsoSig2->get_hw_offset() * scale2; + + const int index1 = _dsoSig1->get_index(); + const int index2 = _dsoSig2->get_index(); + + const int num_channels = snapshot->get_channel_num(); + const uint8_t* value = snapshot->get_samples(0, 0, 0); + _sample_num = snapshot->get_sample_count(); + assert(_sample_num <= _total_sample_num); + + double value1, value2; + for (uint64_t sample = 0; sample < _sample_num; sample++) { + value1 = value[sample * num_channels + index1]; + value2 = value[sample * num_channels + index2]; + switch(_type) { + case MATH_ADD: + _math[sample] = (delta1 - scale1 * value1) + (delta2 - scale2 * value2); + break; + case MATH_SUB: + _math[sample] = (delta1 - scale1 * value1) - (delta2 - scale2 * value2); + break; + case MATH_MUL: + _math[sample] = (delta1 - scale1 * value1) * (delta2 - scale2 * value2); + break; + case MATH_DIV: + _math[sample] = (delta1 - scale1 * value1) / (delta2 - scale2 * value2); + break; + } + } + if (_envelope_en) + append_to_envelope_level(true); + + // stop _math_state = Stopped; } -double MathStack::window(uint64_t i, int type) -{ - const double n_m_1 = _sample_num-1; - switch(type) { - case 1: // Hann window - return 0.5*(1-cos(2*PI*i/n_m_1)); - case 2: // Hamming window - return 0.54-0.46*cos(2*PI*i/n_m_1); - case 3: // Blackman window - return 0.42659-0.49656*cos(2*PI*i/n_m_1) + 0.076849*cos(4*PI*i/n_m_1); - case 4: // Flat_top window - return 1-1.93*cos(2*PI*i/n_m_1)+1.29*cos(4*PI*i/n_m_1)- - 0.388*cos(6*PI*i/n_m_1)+0.028*cos(8*PI*i/n_m_1); - default: - return 1; +void MathStack::reallocate_envelope(Envelope &e) +{ + const uint64_t new_data_length = ((e.length + EnvelopeDataUnit - 1) / + EnvelopeDataUnit) * EnvelopeDataUnit; + if (new_data_length > e.data_length) + { + e.data_length = new_data_length; + } +} + +void MathStack::append_to_envelope_level(bool header) +{ + Envelope &e0 = _envelope_level[0]; + uint64_t prev_length; + EnvelopeSample *dest_ptr; + + if (header) + prev_length = 0; + else + prev_length = e0.length; + e0.length = _sample_num / EnvelopeScaleFactor; + + if (e0.length == 0) + return; + if (e0.length == prev_length) + prev_length = 0; + + // Expand the data buffer to fit the new samples + reallocate_envelope(e0); + + dest_ptr = e0.samples + prev_length; + + // Iterate through the samples to populate the first level mipmap + const double *const stop_src_ptr = (double*)_math.data() + + e0.length * EnvelopeScaleFactor; + for (const double *src_ptr = (double*)_math.data() + + prev_length * EnvelopeScaleFactor; + src_ptr < stop_src_ptr; src_ptr += EnvelopeScaleFactor) + { + const double * begin_src_ptr = + src_ptr; + const double *const end_src_ptr = + src_ptr + EnvelopeScaleFactor; + + EnvelopeSample sub_sample; + sub_sample.min = *begin_src_ptr; + sub_sample.max = *begin_src_ptr; + //begin_src_ptr += _channel_num; + while (begin_src_ptr < end_src_ptr) + { + sub_sample.min = min(sub_sample.min, *begin_src_ptr); + sub_sample.max = max(sub_sample.max, *begin_src_ptr); + begin_src_ptr ++; + } + *dest_ptr++ = sub_sample; + } + + // Compute higher level mipmaps + for (unsigned int level = 1; level < ScaleStepCount; level++) + { + Envelope &e = _envelope_level[level]; + const Envelope &el = _envelope_level[level-1]; + + // Expand the data buffer to fit the new samples + prev_length = e.length; + e.length = el.length / EnvelopeScaleFactor; + + // Break off if there are no more samples to computed +// if (e.length == prev_length) +// break; + if (e.length == prev_length) + prev_length = 0; + + reallocate_envelope(e); + + // Subsample the level lower level + const EnvelopeSample *src_ptr = + el.samples + prev_length * EnvelopeScaleFactor; + const EnvelopeSample *const end_dest_ptr = e.samples + e.length; + for (dest_ptr = e.samples + prev_length; + dest_ptr < end_dest_ptr; dest_ptr++) + { + const EnvelopeSample *const end_src_ptr = + src_ptr + EnvelopeScaleFactor; + + EnvelopeSample sub_sample = *src_ptr++; + while (src_ptr < end_src_ptr) + { + sub_sample.min = min(sub_sample.min, src_ptr->min); + sub_sample.max = max(sub_sample.max, src_ptr->max); + src_ptr++; + } + + *dest_ptr = sub_sample; + } } + + _envelope_done = true; } } // namespace data diff --git a/DSView/pv/data/mathstack.h b/DSView/pv/data/mathstack.h old mode 100644 new mode 100755 index 88c5fca..ffb80db --- a/DSView/pv/data/mathstack.h +++ b/DSView/pv/data/mathstack.h @@ -29,8 +29,6 @@ #include #include -#include - #include #include @@ -40,6 +38,7 @@ class SigSession; namespace view { class DsoSignal; +class dslDial; } namespace data { @@ -51,10 +50,6 @@ class MathStack : public QObject, public SignalData { Q_OBJECT -private: - static const QString windows_support[5]; - static const uint64_t length_support[5]; - public: enum math_state { Init, @@ -62,56 +57,95 @@ public: Running }; + enum MathType { + MATH_ADD, + MATH_SUB, + MATH_MUL, + MATH_DIV, + }; + + struct EnvelopeSample + { + double min; + double max; + }; + + struct EnvelopeSection + { + uint64_t start; + unsigned int scale; + uint64_t length; + EnvelopeSample *samples; + }; + +private: + struct Envelope + { + uint64_t length; + uint64_t data_length; + EnvelopeSample *samples; + }; + +private: + static const unsigned int ScaleStepCount = 10; + static const int EnvelopeScalePower; + static const int EnvelopeScaleFactor; + static const float LogEnvelopeScaleFactor; + static const uint64_t EnvelopeDataUnit; + + static const uint64_t vDialValueStep = 1000; + static const int vDialValueCount = 19; + static const uint64_t vDialValue[vDialValueCount]; + static const int vDialUnitCount = 2; + static const QString vDialAddUnit[vDialUnitCount]; + static const QString vDialMulUnit[vDialUnitCount]; + static const QString vDialDivUnit[vDialUnitCount]; + public: - MathStack(pv::SigSession &_session, int index); + MathStack(pv::SigSession &_session, + boost::shared_ptr dsoSig1, + boost::shared_ptr dsoSig2, MathType type); virtual ~MathStack(); void clear(); void init(); + void free_envelop(); + void realloc(uint64_t num); - int get_index() const; - + MathType get_type() const; uint64_t get_sample_num() const; - void set_sample_num(uint64_t num); - - int get_windows_index() const; - void set_windows_index(int index); - const std::vector get_windows_support() const; - const std::vector get_length_support() const; + void enable_envelope(bool enable); - bool dc_ignored() const; - void set_dc_ignore(bool ignore); + uint64_t default_vDialValue(); + view::dslDial *get_vDial(); + QString get_unit(int level); + double get_math_scale(); - int get_sample_interval() const; - void set_sample_interval(int interval); + const double *get_math(uint64_t start) const; + void get_math_envelope_section(EnvelopeSection &s, + uint64_t start, uint64_t end, float min_length) const; - const std::vector get_fft_spectrum() const; - double get_fft_spectrum(uint64_t index); - - void calc_fft(); - - double window(uint64_t i, int type); + void calc_math(); + void reallocate_envelope(Envelope &e); + void append_to_envelope_level(bool header); signals: private: pv::SigSession &_session; + boost::shared_ptr _dsoSig1; + boost::shared_ptr _dsoSig2; - int _index; + MathType _type; uint64_t _sample_num; - int _windows_index; - bool _dc_ignore; - int _sample_interval; - - boost::shared_ptr _snapshot; - - std::unique_ptr _math_thread; + uint64_t _total_sample_num; math_state _math_state; - fftw_plan _fft_plan; - std::vector _xn; - std::vector _xk; - std::vector _power_spectrum; + struct Envelope _envelope_level[ScaleStepCount]; + std::vector _math; + + bool _envelope_en; + bool _envelope_done; }; } // namespace data diff --git a/DSView/pv/data/signaldata.cpp b/DSView/pv/data/signaldata.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/signaldata.h b/DSView/pv/data/signaldata.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/snapshot.cpp b/DSView/pv/data/snapshot.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/data/snapshot.h b/DSView/pv/data/snapshot.h old mode 100644 new mode 100755 diff --git a/DSView/pv/data/spectrumstack.cpp b/DSView/pv/data/spectrumstack.cpp new file mode 100755 index 0000000..d040eb9 --- /dev/null +++ b/DSView/pv/data/spectrumstack.cpp @@ -0,0 +1,247 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2016 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "spectrumstack.h" + +#include +#include + +#include +#include +#include +#include + +#define PI 3.1415 + +using namespace boost; +using namespace std; + +namespace pv { +namespace data { + +const QString SpectrumStack::windows_support[5] = { + QT_TR_NOOP("Rectangle"), + QT_TR_NOOP("Hann"), + QT_TR_NOOP("Hamming"), + QT_TR_NOOP("Blackman"), + QT_TR_NOOP("Flat_top") +}; + +const uint64_t SpectrumStack::length_support[5] = { + 1024, + 2048, + 4096, + 8192, + 16384, +}; + +SpectrumStack::SpectrumStack(pv::SigSession &session, int index) : + _session(session), + _index(index), + _dc_ignore(true), + _sample_interval(1), + _spectrum_state(Init), + _fft_plan(NULL) +{ +} + +SpectrumStack::~SpectrumStack() +{ + _xn.clear(); + _xk.clear(); + _power_spectrum.clear(); + if (_fft_plan) + fftw_destroy_plan(_fft_plan); +} + +void SpectrumStack::clear() +{ +} + +void SpectrumStack::init() +{ +} + +int SpectrumStack::get_index() const +{ + return _index; +} + +uint64_t SpectrumStack::get_sample_num() const +{ + return _sample_num; +} + +void SpectrumStack::set_sample_num(uint64_t num) +{ + _sample_num = num; + _xn.resize(_sample_num); + _xk.resize(_sample_num); + _power_spectrum.resize(_sample_num/2+1); + _fft_plan = fftw_plan_r2r_1d(_sample_num, _xn.data(), _xk.data(), + FFTW_R2HC, FFTW_ESTIMATE); +} + +int SpectrumStack::get_windows_index() const +{ + return _windows_index; +} + +void SpectrumStack::set_windows_index(int index) +{ + _windows_index = index; +} + +bool SpectrumStack::dc_ignored() const +{ + return _dc_ignore; +} + +void SpectrumStack::set_dc_ignore(bool ignore) +{ + _dc_ignore = ignore; +} + +int SpectrumStack::get_sample_interval() const +{ + return _sample_interval; +} + +void SpectrumStack::set_sample_interval(int interval) +{ + _sample_interval = interval; +} + +const std::vector SpectrumStack::get_windows_support() const +{ + std::vector windows; + for (size_t i = 0; i < sizeof(windows_support)/sizeof(windows_support[0]); i++) + { + windows.push_back(windows_support[i]); + } + return windows; +} + +const std::vector SpectrumStack::get_length_support() const +{ + std::vector length; + for (size_t i = 0; i < sizeof(length_support)/sizeof(length_support[0]); i++) + { + length.push_back(length_support[i]); + } + return length; +} + +const std::vector SpectrumStack::get_fft_spectrum() const +{ + std::vector empty; + if (_spectrum_state == Stopped) + return _power_spectrum; + else + return empty; +} + +double SpectrumStack::get_fft_spectrum(uint64_t index) +{ + double ret = -1; + if (_spectrum_state == Stopped && index < _power_spectrum.size()) + ret = _power_spectrum[index]; + + return ret; +} + +void SpectrumStack::calc_fft() +{ + _spectrum_state = Running; + // Get the dso data + boost::shared_ptr data; + boost::shared_ptr dsoSig; + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + if ((dsoSig = dynamic_pointer_cast(s))) { + if (dsoSig->get_index() == _index && dsoSig->enabled()) { + data = dsoSig->dso_data(); + break; + } + } + } + + if (!data) + return; + + // Check we have a snapshot of data + const deque< boost::shared_ptr > &snapshots = + data->get_snapshots(); + if (snapshots.empty()) + return; + _snapshot = snapshots.front(); + + if (_snapshot->get_sample_count() < _sample_num*_sample_interval) + return; + + // Get the samplerate + _samplerate = data->samplerate(); + if (_samplerate == 0.0) + _samplerate = 1.0; + + // prepare _xn data + const int offset = dsoSig->get_hw_offset(); + const double vscale = dsoSig->get_vDialValue() * dsoSig->get_factor() * DS_CONF_DSO_VDIVS / (1000*255.0); + const uint16_t step = _snapshot->get_channel_num() * _sample_interval; + const uint8_t *const samples = _snapshot->get_samples(0, _sample_num*_sample_interval-1, _index); + double wsum = 0; + for (unsigned int i = 0; i < _sample_num; i++) { + double w = window(i, _windows_index); + _xn[i] = (samples[i*step] - offset) * vscale * w; + wsum += w; + } + + // fft + fftw_execute(_fft_plan); + + // calculate power spectrum + _power_spectrum[0] = abs(_xk[0])/wsum; /* DC component */ + for (unsigned int k = 1; k < (_sample_num + 1) / 2; ++k) /* (k < N/2 rounded up) */ + _power_spectrum[k] = sqrt((_xk[k]*_xk[k] + _xk[_sample_num-k]*_xk[_sample_num-k]) * 2) / wsum; + if (_sample_num % 2 == 0) /* N is even */ + _power_spectrum[_sample_num/2] = abs(_xk[_sample_num/2])/wsum; /* Nyquist freq. */ + + _spectrum_state = Stopped; +} + +double SpectrumStack::window(uint64_t i, int type) +{ + const double n_m_1 = _sample_num-1; + switch(type) { + case 1: // Hann window + return 0.5*(1-cos(2*PI*i/n_m_1)); + case 2: // Hamming window + return 0.54-0.46*cos(2*PI*i/n_m_1); + case 3: // Blackman window + return 0.42659-0.49656*cos(2*PI*i/n_m_1) + 0.076849*cos(4*PI*i/n_m_1); + case 4: // Flat_top window + return 1-1.93*cos(2*PI*i/n_m_1)+1.29*cos(4*PI*i/n_m_1)- + 0.388*cos(6*PI*i/n_m_1)+0.028*cos(8*PI*i/n_m_1); + default: + return 1; + } +} + +} // namespace data +} // namespace pv diff --git a/DSView/pv/data/spectrumstack.h b/DSView/pv/data/spectrumstack.h new file mode 100755 index 0000000..caa4d26 --- /dev/null +++ b/DSView/pv/data/spectrumstack.h @@ -0,0 +1,118 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2016 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef DSVIEW_PV_DATA_SPECTRUMSTACK_H +#define DSVIEW_PV_DATA_SPECTRUMSTACK_H + +#include "signaldata.h" + +#include + +#include +#include +#include + +#include + +#include +#include + +namespace pv { + +class SigSession; + +namespace view { +class DsoSignal; +} + +namespace data { + +class DsoSnapshot; +class Dso; + +class SpectrumStack : public QObject, public SignalData +{ + Q_OBJECT + +private: + static const QString windows_support[5]; + static const uint64_t length_support[5]; + +public: + enum spectrum_state { + Init, + Stopped, + Running + }; + +public: + SpectrumStack(pv::SigSession &_session, int index); + virtual ~SpectrumStack(); + void clear(); + void init(); + + int get_index() const; + + uint64_t get_sample_num() const; + void set_sample_num(uint64_t num); + + int get_windows_index() const; + void set_windows_index(int index); + + const std::vector get_windows_support() const; + const std::vector get_length_support() const; + + bool dc_ignored() const; + void set_dc_ignore(bool ignore); + + int get_sample_interval() const; + void set_sample_interval(int interval); + + const std::vector get_fft_spectrum() const; + double get_fft_spectrum(uint64_t index); + + void calc_fft(); + + double window(uint64_t i, int type); + +signals: + +private: + pv::SigSession &_session; + + int _index; + uint64_t _sample_num; + int _windows_index; + bool _dc_ignore; + int _sample_interval; + + boost::shared_ptr _snapshot; + spectrum_state _spectrum_state; + + fftw_plan _fft_plan; + std::vector _xn; + std::vector _xk; + std::vector _power_spectrum; +}; + +} // namespace data +} // namespace pv + +#endif // DSVIEW_PV_DATA_SPECTRUMSTACK_H diff --git a/DSView/pv/device/device.cpp b/DSView/pv/device/device.cpp old mode 100644 new mode 100755 index 8214f41..4eb77b3 --- a/DSView/pv/device/device.cpp +++ b/DSView/pv/device/device.cpp @@ -40,7 +40,7 @@ sr_dev_inst* Device::dev_inst() const return _sdi; } -void Device::use(SigSession *owner) throw(QString) +void Device::use(SigSession *owner) { DevInst::use(owner); diff --git a/DSView/pv/device/device.h b/DSView/pv/device/device.h old mode 100644 new mode 100755 index a98ffc0..f1ec24f --- a/DSView/pv/device/device.h +++ b/DSView/pv/device/device.h @@ -34,7 +34,7 @@ public: sr_dev_inst* dev_inst() const; - void use(SigSession *owner) throw(QString); + void use(SigSession *owner); void release(); diff --git a/DSView/pv/device/devinst.cpp b/DSView/pv/device/devinst.cpp old mode 100644 new mode 100755 index 494a681..6aeeeb8 --- a/DSView/pv/device/devinst.cpp +++ b/DSView/pv/device/devinst.cpp @@ -50,7 +50,7 @@ void* DevInst::get_id() const return _id; } -void DevInst::use(SigSession *owner) throw(QString) +void DevInst::use(SigSession *owner) { assert(owner); assert(!_owner); @@ -125,7 +125,7 @@ uint64_t DevInst::get_sample_limit() uint64_t sample_limit; GVariant* gvar = get_config(NULL, NULL, SR_CONF_LIMIT_SAMPLES); if (gvar != NULL) { - sample_limit = g_variant_get_uint64(gvar); + sample_limit = g_variant_get_uint64(gvar); g_variant_unref(gvar); } else { sample_limit = 0U; diff --git a/DSView/pv/device/devinst.h b/DSView/pv/device/devinst.h old mode 100644 new mode 100755 index c35fd95..b7c7f8c --- a/DSView/pv/device/devinst.h +++ b/DSView/pv/device/devinst.h @@ -53,7 +53,7 @@ protected: public: virtual sr_dev_inst* dev_inst() const = 0; - virtual void use(SigSession *owner) throw(QString); + virtual void use(SigSession *owner); virtual void release(); diff --git a/DSView/pv/device/file.cpp b/DSView/pv/device/file.cpp old mode 100644 new mode 100755 index 04b6eb4..4637608 --- a/DSView/pv/device/file.cpp +++ b/DSView/pv/device/file.cpp @@ -91,10 +91,43 @@ QJsonArray File::get_decoders() dec_array = sessionDoc.array(); } } + + zip_close(archive); } return dec_array; } +QJsonDocument File::get_session() +{ + struct zip *archive; + struct zip_file *zf; + struct zip_stat zs; + int ret; + char *dec_file; + QJsonDocument sessionDoc; + QJsonParseError error; + + archive = zip_open(_path.toLocal8Bit().data(), 0, &ret); + if (archive) { + /* read "decoders" */ + if (zip_stat(archive, "session", 0, &zs) != -1) { + dec_file = (char *)g_try_malloc(zs.size); + if (dec_file) { + zf = zip_fopen_index(archive, zs.index, 0); + zip_fread(zf, dec_file, zs.size); + zip_fclose(zf); + + //QString sessionData = QString::fromUtf8(dec_file); + sessionDoc = QJsonDocument::fromJson(QByteArray::fromRawData(dec_file, zs.size), &error); + } + } + + zip_close(archive); + } + + return sessionDoc; +} + } // device } // pv diff --git a/DSView/pv/device/file.h b/DSView/pv/device/file.h old mode 100644 new mode 100755 index 000b950..d4299e7 --- a/DSView/pv/device/file.h +++ b/DSView/pv/device/file.h @@ -26,6 +26,7 @@ #include #include +#include #include "devinst.h" @@ -42,6 +43,8 @@ public: QJsonArray get_decoders(); + QJsonDocument get_session(); + public: QString format_device_title() const; diff --git a/DSView/pv/device/inputfile.cpp b/DSView/pv/device/inputfile.cpp old mode 100644 new mode 100755 index 84d8957..32b63cc --- a/DSView/pv/device/inputfile.cpp +++ b/DSView/pv/device/inputfile.cpp @@ -43,7 +43,7 @@ sr_dev_inst* InputFile::dev_inst() const return _input->sdi; } -void InputFile::use(SigSession *owner) throw(QString) +void InputFile::use(SigSession *owner) { (void)owner; assert(!_input); diff --git a/DSView/pv/device/inputfile.h b/DSView/pv/device/inputfile.h old mode 100644 new mode 100755 index c063dea..e1c1e17 --- a/DSView/pv/device/inputfile.h +++ b/DSView/pv/device/inputfile.h @@ -39,7 +39,7 @@ public: sr_dev_inst* dev_inst() const; - virtual void use(SigSession *owner) throw(QString); + virtual void use(SigSession *owner); virtual void release(); diff --git a/DSView/pv/device/sessionfile.cpp b/DSView/pv/device/sessionfile.cpp old mode 100644 new mode 100755 index 5540e42..2a3368a --- a/DSView/pv/device/sessionfile.cpp +++ b/DSView/pv/device/sessionfile.cpp @@ -35,7 +35,7 @@ sr_dev_inst* SessionFile::dev_inst() const return _sdi; } -void SessionFile::use(SigSession *owner) throw(QString) +void SessionFile::use(SigSession *owner) { assert(!_sdi); diff --git a/DSView/pv/device/sessionfile.h b/DSView/pv/device/sessionfile.h old mode 100644 new mode 100755 index 51d6d3f..08783bd --- a/DSView/pv/device/sessionfile.h +++ b/DSView/pv/device/sessionfile.h @@ -34,7 +34,7 @@ public: sr_dev_inst* dev_inst() const; - virtual void use(SigSession *owner) throw(QString); + virtual void use(SigSession *owner); virtual void release(); diff --git a/DSView/pv/devicemanager.cpp b/DSView/pv/devicemanager.cpp old mode 100644 new mode 100755 index 3b760f9..d7778be --- a/DSView/pv/devicemanager.cpp +++ b/DSView/pv/devicemanager.cpp @@ -72,6 +72,21 @@ void DeviceManager::add_device(boost::shared_ptr device) _devices.push_front(device); } +void DeviceManager::del_device(boost::shared_ptr device) +{ + assert(device); + BOOST_FOREACH(shared_ptr dev, _devices) { + assert(dev); + if(dev == device) { + dev->release(); + break; + } + } + if (std::find(_devices.begin(), _devices.end(), device) != + _devices.end()) + _devices.remove(device); +} + std::list > DeviceManager::driver_scan( struct sr_dev_driver *const driver, GSList *const drvopts) { diff --git a/DSView/pv/devicemanager.h b/DSView/pv/devicemanager.h old mode 100644 new mode 100755 index 3f0b313..426b9aa --- a/DSView/pv/devicemanager.h +++ b/DSView/pv/devicemanager.h @@ -61,6 +61,7 @@ public: const std::list< boost::shared_ptr >& devices() const; void add_device(boost::shared_ptr device); + void del_device(boost::shared_ptr device); std::list< boost::shared_ptr > driver_scan( struct sr_dev_driver *const driver, diff --git a/DSView/pv/dialogs/about.cpp b/DSView/pv/dialogs/about.cpp old mode 100644 new mode 100755 index 4b80090..5dea373 --- a/DSView/pv/dialogs/about.cpp +++ b/DSView/pv/dialogs/about.cpp @@ -54,9 +54,11 @@ About::About(QWidget *parent) : QString url = tr("Website: %1
" "Gitbub: %2
" + "Copyright:%3
" "

") .arg(QApplication::organizationDomain()) - .arg("https://github.com/DreamSourceLab/DSView"); + .arg("https://github.com/DreamSourceLab/DSView") + .arg(tr("© DreamSourceLab. All rights reserved.")); QString thanks = tr("Special Thanks
" "All backers on kickstarter
" @@ -67,9 +69,13 @@ About::About(QWidget *parent) : .arg("http://sigrok.org/"); QString changlogs = tr("Changelogs
"); + #ifndef Q_OS_LINUX + QDir dir(QCoreApplication::applicationDirPath()); + #else QDir dir(DS_RES_PATH); dir.cdUp(); - QString filename = dir.absolutePath() + "/NEWS"; + #endif + QString filename = dir.absolutePath() + "/NEWS" + QString::number(qApp->property("Language").toInt()); QFile news(filename); if (news.open(QIODevice::ReadOnly)) { QTextCodec *code=QTextCodec::codecForName("UTF-8"); diff --git a/DSView/pv/dialogs/about.h b/DSView/pv/dialogs/about.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/calibration.cpp b/DSView/pv/dialogs/calibration.cpp old mode 100644 new mode 100755 index f3d231d..ab11ca9 --- a/DSView/pv/dialogs/calibration.cpp +++ b/DSView/pv/dialogs/calibration.cpp @@ -30,6 +30,7 @@ #include #include "../view/trace.h" +#include "../dialogs/dsmessagebox.h" using namespace boost; using namespace std; @@ -39,6 +40,7 @@ namespace dialogs { const QString Calibration::VGAIN = QT_TR_NOOP(" VGAIN"); const QString Calibration::VOFF = QT_TR_NOOP(" VOFF"); +const QString Calibration::VCOMB = QT_TR_NOOP(" VCOMB"); Calibration::Calibration(QWidget *parent) : DSDialog(parent) @@ -52,9 +54,10 @@ Calibration::Calibration(QWidget *parent) : this->setModal(false); _dev_inst = NULL; - _save_btn = new QPushButton(tr("Save"), this); - _reset_btn = new QPushButton(tr("Reset"), this); - _exit_btn = new QPushButton(tr("Exit"), this); + _save_btn = new QPushButton(this); + _abort_btn = new QPushButton(this); + _reset_btn = new QPushButton(this); + _exit_btn = new QPushButton(this); _flayout = new QFormLayout(); _flayout->setVerticalSpacing(10); @@ -64,21 +67,43 @@ Calibration::Calibration(QWidget *parent) : QGridLayout *glayout = new QGridLayout(); glayout->setVerticalSpacing(5); - glayout->addLayout(_flayout, 1, 0, 1, 5); + glayout->addLayout(_flayout, 1, 0, 1, 7); glayout->addWidget(_save_btn, 2, 0); glayout->addWidget(new QWidget(this), 2, 1); glayout->setColumnStretch(1, 1); - glayout->addWidget(_reset_btn, 2, 2); + glayout->addWidget(_abort_btn, 2, 2); glayout->addWidget(new QWidget(this), 2, 3); glayout->setColumnStretch(3, 1); - glayout->addWidget(_exit_btn, 2, 4); + glayout->addWidget(_reset_btn, 2, 4); + glayout->addWidget(new QWidget(this), 2, 5); + glayout->setColumnStretch(5, 1); + glayout->addWidget(_exit_btn, 2, 6); layout()->addLayout(glayout); - setTitle(tr("Manual Calibration")); connect(_save_btn, SIGNAL(clicked()), this, SLOT(on_save())); + connect(_abort_btn, SIGNAL(clicked()), this, SLOT(on_abort())); connect(_reset_btn, SIGNAL(clicked()), this, SLOT(on_reset())); connect(_exit_btn, SIGNAL(clicked()), this, SLOT(reject())); + + retranslateUi(); +} + +void Calibration::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + retranslateUi(); + DSDialog::changeEvent(event); +} + +void Calibration::retranslateUi() +{ + _save_btn->setText(tr("Save")); + _abort_btn->setText(tr("Abort")); + _reset_btn->setText(tr("Reset")); + _exit_btn->setText(tr("Exit")); + + setTitle(tr("Manual Calibration")); } void Calibration::set_device(boost::shared_ptr dev_inst) @@ -135,12 +160,12 @@ void Calibration::set_device(boost::shared_ptr dev_inst) uint64_t voff = 0; uint16_t voff_range = 0; - gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_VOFF); + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_PREOFF); if (gvar != NULL) { voff = g_variant_get_uint16(gvar); g_variant_unref(gvar); } - gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_VOFF_RANGE); + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_PREOFF_MARGIN); if (gvar != NULL) { voff_range = g_variant_get_uint16(gvar); g_variant_unref(gvar); @@ -155,6 +180,31 @@ void Calibration::set_device(boost::shared_ptr dev_inst) _slider_list.push_back(off_slider); _label_list.push_back(off_label); + bool comb_comp_en = false; + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_COMB_COMP_EN); + if (gvar != NULL) { + comb_comp_en = g_variant_get_boolean(gvar); + g_variant_unref(gvar); + } + if (comb_comp_en) { + int16_t comb_comp = 0; + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_COMB_COMP); + if (gvar != NULL) { + comb_comp = g_variant_get_int16(gvar); + g_variant_unref(gvar); + } + QSlider *comp_slider = new QSlider(Qt::Horizontal, this); + comp_slider->setRange(-127, 127); + comp_slider->setValue(comb_comp); + comp_slider->setObjectName(VCOMB+probe->index); + QString comp_string = tr("Channel") + QString::number(probe->index) + VCOMB; + QLabel *comp_label = new QLabel(comp_string, this); + _flayout->addRow(comp_label, comp_slider); + _slider_list.push_back(comp_slider); + _label_list.push_back(comp_label); + connect(comp_slider, SIGNAL(valueChanged(int)), this, SLOT(set_value(int))); + } + connect(gain_slider, SIGNAL(valueChanged(int)), this, SLOT(set_value(int))); connect(off_slider, SIGNAL(valueChanged(int)), this, SLOT(set_value(int))); } @@ -194,9 +244,13 @@ void Calibration::set_value(int value) } break; } else if (sc->objectName() == VOFF+probe->index) { - _dev_inst->set_config(probe, NULL, SR_CONF_PROBE_VOFF, + _dev_inst->set_config(probe, NULL, SR_CONF_PROBE_PREOFF, g_variant_new_uint16(value)); break; + } else if (sc->objectName() == VCOMB+probe->index) { + _dev_inst->set_config(probe, NULL, SR_CONF_PROBE_COMB_COMP, + g_variant_new_int16(value)); + break; } } } @@ -212,7 +266,7 @@ void Calibration::on_save() //while( QTime::currentTime() < dieTime ); }); Qt::WindowFlags flags = Qt::CustomizeWindowHint; - QProgressDialog dlg(tr("Save Calibration Result... It can take a while."), + QProgressDialog dlg(tr("Save calibration results... It can take a while."), tr("Cancel"),0,0,this,flags); dlg.setWindowModality(Qt::WindowModal); dlg.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | @@ -227,7 +281,7 @@ void Calibration::on_save() this->show(); } -void Calibration::on_reset() +void Calibration::on_abort() { this->hide(); QFuture future; @@ -239,7 +293,7 @@ void Calibration::on_reset() //while( QTime::currentTime() < dieTime ); }); Qt::WindowFlags flags = Qt::CustomizeWindowHint; - QProgressDialog dlg(tr("Reset Calibration Result... It can take a while."), + QProgressDialog dlg(tr("Reload last calibration results... It can take a while."), tr("Cancel"),0,0,this,flags); dlg.setWindowModality(Qt::WindowModal); dlg.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | @@ -280,12 +334,12 @@ void Calibration::reload_value() uint64_t voff = 0; uint16_t voff_range = 0; - gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_VOFF); + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_PREOFF); if (gvar != NULL) { voff = g_variant_get_uint16(gvar); g_variant_unref(gvar); } - gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_VOFF_RANGE); + gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_PREOFF_MARGIN); if (gvar != NULL) { voff_range = g_variant_get_uint16(gvar); g_variant_unref(gvar); @@ -304,5 +358,21 @@ void Calibration::reload_value() } } +void Calibration::on_reset() +{ + + dialogs::DSMessageBox msg(this); + msg.mBox()->setText(tr("Attention")); + msg.mBox()->setInformativeText(tr("All calibration settings will become the defualt values!")); + msg.mBox()->addButton(tr("Ok"), QMessageBox::AcceptRole); + msg.mBox()->addButton(tr("Cancel"), QMessageBox::RejectRole); + msg.mBox()->setIcon(QMessageBox::Warning); + if (msg.exec()) { + _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO_DEFAULT, + g_variant_new_boolean(true)); + reload_value(); + } +} + } // namespace dialogs } // namespace pv diff --git a/DSView/pv/dialogs/calibration.h b/DSView/pv/dialogs/calibration.h old mode 100644 new mode 100755 index 9e469f1..97bf7ce --- a/DSView/pv/dialogs/calibration.h +++ b/DSView/pv/dialogs/calibration.h @@ -46,6 +46,7 @@ class Calibration : public DSDialog private: static const QString VGAIN; static const QString VOFF; + static const QString VCOMB; public: Calibration(QWidget *parent); @@ -55,9 +56,14 @@ protected: void accept(); void reject(); +private: + void changeEvent(QEvent *event); + void retranslateUi(); + private slots: void set_value(int value); void on_save(); + void on_abort(); void on_reset(); void reload_value(); @@ -66,6 +72,7 @@ private: toolbars::TitleBar *_titlebar; QPushButton *_save_btn; + QPushButton *_abort_btn; QPushButton *_reset_btn; QPushButton *_exit_btn; QFormLayout *_flayout; diff --git a/DSView/pv/dialogs/deviceoptions.cpp b/DSView/pv/dialogs/deviceoptions.cpp old mode 100644 new mode 100755 index 79fd019..4ffd808 --- a/DSView/pv/dialogs/deviceoptions.cpp +++ b/DSView/pv/dialogs/deviceoptions.cpp @@ -144,7 +144,7 @@ QGridLayout * DeviceOptions::get_property_form(QWidget * parent) BOOST_FOREACH(boost::shared_ptr p, properties) { assert(p); - const QString label = p->labeled_widget() ? QString() : p->name(); + const QString label = p->labeled_widget() ? QString() : p->label(); layout->addWidget(new QLabel(label, parent), i, 0); if (label == tr("Operation Mode")) layout->addWidget(p->get_widget(parent, true), i, 1); @@ -196,7 +196,8 @@ void DeviceOptions::logic_probes(QGridLayout &layout) ch_opts->setChecked(true); } } - g_variant_unref(gvar_opts); + if (gvar_opts) + g_variant_unref(gvar_opts); } } @@ -307,12 +308,14 @@ void DeviceOptions::zero_adj() dialogs::DSMessageBox msg(this); msg.mBox()->setText(tr("Information")); msg.mBox()->setInformativeText(tr("Auto Calibration program will be started. Please keep all channels out of singal input. It can take a while!")); - //msg.mBox()->setStandardButtons(QMessageBox::); msg.mBox()->addButton(tr("Ok"), QMessageBox::AcceptRole); msg.mBox()->addButton(tr("Cancel"), QMessageBox::RejectRole); msg.mBox()->setIcon(QMessageBox::Information); + if (msg.exec()) { _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO, g_variant_new_boolean(true)); + } else { + _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO, g_variant_new_boolean(false)); } } @@ -366,6 +369,22 @@ void DeviceOptions::channel_check() _dynamic_box->setVisible(_dynamic_box->title() != NULL); } +void DeviceOptions::analog_channel_check() +{ + QCheckBox* sc=dynamic_cast(sender()); + if(sc != NULL) { + for (const GSList *l = _dev_inst->dev_inst()->channels; l; l = l->next) { + sr_channel *const probe = (sr_channel*)l->data; + assert(probe); + if (sc->property("index").toInt() == probe->index) + _dev_inst->set_config(probe, NULL, SR_CONF_PROBE_MAP_DEFAULT, + g_variant_new_boolean(sc->isChecked())); + } + } + dynamic_widget(_dynamic_layout); + _dynamic_box->setVisible(_dynamic_box->title() != NULL); +} + void DeviceOptions::channel_enable() { if (_dev_inst->dev_inst()->mode == LOGIC) { @@ -491,7 +510,6 @@ void DeviceOptions::analog_probes(QGridLayout &layout) probe_layout->addWidget(en_label, 0, 0, 1, 1); probe_layout->addWidget(probe_checkBox, 0, 1, 1, 3); - pv::prop::binding::ProbeOptions *probe_options_binding = new pv::prop::binding::ProbeOptions(_dev_inst->dev_inst(), probe); const vector< boost::shared_ptr > &properties = @@ -500,9 +518,26 @@ void DeviceOptions::analog_probes(QGridLayout &layout) BOOST_FOREACH(boost::shared_ptr p, properties) { assert(p); - probe_layout->addWidget(new QLabel(p->name(), probe_widget), i, 0, 1, 1); - QWidget *pow = p->get_widget(probe_widget); + const QString label = p->labeled_widget() ? QString() : p->label(); + probe_layout->addWidget(new QLabel(label, probe_widget), i, 0, 1, 1); + + QWidget * pow = p->get_widget(probe_widget); pow->setEnabled(probe_checkBox->isChecked()); + if (p->name().contains("Map Default")) { + pow->setProperty("index", probe->index); + connect(pow, SIGNAL(clicked()), this, SLOT(analog_channel_check())); + } else { + if (probe_checkBox->isChecked() && p->name().contains("Map")) { + bool map_default = true; + GVariant* gvar = _dev_inst->get_config(probe, NULL, SR_CONF_PROBE_MAP_DEFAULT); + if (gvar != NULL) { + map_default =g_variant_get_boolean(gvar); + g_variant_unref(gvar); + } + if (map_default) + pow->setEnabled(false); + } + } probe_layout->addWidget(pow, i, 1, 1, 3); i++; } diff --git a/DSView/pv/dialogs/deviceoptions.h b/DSView/pv/dialogs/deviceoptions.h old mode 100644 new mode 100755 index 1deae44..0b9591f --- a/DSView/pv/dialogs/deviceoptions.h +++ b/DSView/pv/dialogs/deviceoptions.h @@ -78,6 +78,7 @@ private slots: void zero_adj(); void mode_check(); void channel_check(); + void analog_channel_check(); void on_calibration(); void channel_enable(); diff --git a/DSView/pv/dialogs/dsdialog.cpp b/DSView/pv/dialogs/dsdialog.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/dsdialog.h b/DSView/pv/dialogs/dsdialog.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/dsmessagebox.cpp b/DSView/pv/dialogs/dsmessagebox.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/dsmessagebox.h b/DSView/pv/dialogs/dsmessagebox.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/dsomeasure.cpp b/DSView/pv/dialogs/dsomeasure.cpp old mode 100644 new mode 100755 index b0cf271..d1acaa1 --- a/DSView/pv/dialogs/dsomeasure.cpp +++ b/DSView/pv/dialogs/dsomeasure.cpp @@ -21,9 +21,14 @@ #include "dsomeasure.h" #include "../device/devinst.h" +#include "../sigsession.h" +#include "../view/view.h" #include #include +#include +#include +#include #include @@ -34,31 +39,74 @@ using namespace pv::view; namespace pv { namespace dialogs { -DsoMeasure::DsoMeasure(QWidget *parent, boost::shared_ptr dsoSig) : - DSDialog(parent), - _dsoSig(dsoSig), - _button_box(QDialogButtonBox::Ok, +DsoMeasure::DsoMeasure(SigSession &session, View &parent, + unsigned int position, int last_sig_index) : + DSDialog((QWidget *)&parent), + _session(session), + _view(parent), + _position(position), + _button_box(QDialogButtonBox::Reset | QDialogButtonBox::Cancel, Qt::Horizontal, this) { - setMinimumWidth(300); - - for (int i=DSO_MS_BEGIN+1; iget_ms_string(i), this); - checkBox->setProperty("id", QVariant(i)); - checkBox->setChecked(dsoSig->get_ms_en(i)); - _layout.addWidget(checkBox); - connect(checkBox, SIGNAL(toggled(bool)), this, SLOT(set_measure(bool))); + setMinimumSize(500, 400); + + _measure_tab = new QTabWidget(this); + _measure_tab->setTabPosition(QTabWidget::West); + _measure_tab->setUsesScrollButtons(false); + + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s)) && dsoSig->enabled()) { + QWidget *measure_widget = new QWidget(this); + this->add_measure(measure_widget, dsoSig); + _measure_tab->addTab(measure_widget, QString::number(dsoSig->get_index())); + _measure_tab->tabBar()->setMinimumHeight(30); + _measure_tab->tabBar()->setPalette(QPalette(Qt::red)); + measure_widget->setProperty("index", dsoSig->get_index()); + if (dsoSig->get_index() == last_sig_index) + _measure_tab->setCurrentIndex(last_sig_index); + } } - _layout.addWidget(&_button_box); + _layout.addWidget(_measure_tab); + _layout.addWidget(&_button_box, Qt::AlignHCenter | Qt::AlignBottom); layout()->addLayout(&_layout); setTitle(tr("Measurements")); - connect(&_button_box, SIGNAL(accepted()), this, SLOT(accept())); - connect(&_button_box, SIGNAL(rejected()), this, SLOT(accept())); + connect(_button_box.button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject())); + connect(_button_box.button(QDialogButtonBox::Reset), SIGNAL(clicked()), this, SLOT(reset())); + connect(_session.get_device().get(), SIGNAL(device_updated()), this, SLOT(reject())); +} - connect(_dsoSig->get_device().get(), SIGNAL(device_updated()), this, SLOT(reject())); +void DsoMeasure::add_measure(QWidget *widget, const boost::shared_ptr dsoSig) +{ + const int Column = 5; + const int IconSizeForText = 5; + QGridLayout *layout = new QGridLayout(widget); + layout->setMargin(0); + layout->setSpacing(0); + for (int i=DSO_MS_BEGIN+1; isetProperty("id", QVariant(i)); + button->setIconSize(QSize(48, 48)); + QPixmap msPix(get_ms_icon(i)); + QBitmap msMask = msPix.createMaskFromColor(QColor("black"), Qt::MaskOutColor); + msPix.fill(dsoSig->get_colour()); + msPix.setMask(msMask); + button->setIcon(QIcon(msPix)); + layout->addWidget(button, + ((i-1)/Column)*IconSizeForText, (i-1)%Column, + IconSizeForText-1, 1, + Qt::AlignCenter); + layout->addWidget(new QLabel(get_ms_text(i), this), + ((i-1)/Column)*IconSizeForText+4, (i-1)%Column, + 1, 1, + Qt::AlignCenter); + layout->setColumnMinimumWidth((i-1)%Column, this->width()/Column); + + connect(button, SIGNAL(clicked()), this, SLOT(accept())); + } } void DsoMeasure::set_measure(bool en) @@ -67,21 +115,67 @@ void DsoMeasure::set_measure(bool en) QCheckBox* sc=dynamic_cast(sender()); if(sc != NULL) { QVariant id = sc->property("id"); - _dsoSig->set_ms_en(id.toInt(), sc->isChecked()); } } +QString DsoMeasure::get_ms_icon(int ms_type) +{ + assert(ms_type >= DSO_MS_BEGIN); + assert(ms_type < DSO_MS_END); + const QString icon_name[DSO_MS_END-DSO_MS_BEGIN] = {"blank.png", + "mFreq.png", "mPeriod.png", "mPduty.png", "mNduty.png", "mPcount.png", + "mRise.png", "mFall.png", "mPwidth.png", "mNwidth.png", "mBurst.png", + "mAmplitude.png", "mHigh.png", "mLow.png", "mRms.png", "mMean.png", + "mVpp.png", "mMax.png", "mMin.png", "mPover.png", "mNover.png"}; + return ":/icons/"+icon_name[ms_type]; +} + +QString DsoMeasure::get_ms_text(int ms_type) +{ + assert(ms_type >= DSO_MS_BEGIN); + assert(ms_type < DSO_MS_END); + const QString label_name[DSO_MS_END-DSO_MS_BEGIN] = {tr("NULL"), + tr("Freq"), tr("Period"), tr("+Duty"), tr("-Duty"), tr("+Count"), + tr("Rise"), tr("Fall"), tr("+Width"), tr("-Width"), tr("BrstW"), + tr("Ampl"), tr("High"), tr("Low"), tr("RMS"), tr("Mean"), + tr("PK-PK"), tr("Max"), tr("Min"), tr("+Over"), tr("-Over")}; + return label_name[ms_type]; +} + void DsoMeasure::accept() { using namespace Qt; - QDialog::accept(); + QToolButton* sc=dynamic_cast(sender()); + if(sc != NULL) { + QVariant id = sc->property("id"); + enum DSO_MEASURE_TYPE ms_type = DSO_MEASURE_TYPE(id.toInt()); + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s))) { + if (_measure_tab->currentWidget()->property("index").toInt() == dsoSig->get_index()) { + _view.get_viewstatus()->set_measure(_position, false, dsoSig->get_index(), ms_type); + break; + } + } + } + } + QDialog::accept(); } void DsoMeasure::reject() { using namespace Qt; + _view.get_viewstatus()->set_measure(_position, true, -1, DSO_MS_BEGIN); + QDialog::reject(); +} + +void DsoMeasure::reset() +{ + using namespace Qt; + + _view.get_viewstatus()->set_measure(_position, false, -1, DSO_MS_BEGIN); QDialog::reject(); } diff --git a/DSView/pv/dialogs/dsomeasure.h b/DSView/pv/dialogs/dsomeasure.h old mode 100644 new mode 100755 index a50689b..ab9c25e --- a/DSView/pv/dialogs/dsomeasure.h +++ b/DSView/pv/dialogs/dsomeasure.h @@ -23,8 +23,10 @@ #ifndef DSVIEW_PV_DSOMEASURE_H #define DSVIEW_PV_DSOMEASURE_H -#include #include +#include +#include +#include #include @@ -34,8 +36,10 @@ namespace pv { +class SigSession; + namespace view { -class DsoSignal; +class View; } namespace dialogs { @@ -45,20 +49,33 @@ class DsoMeasure : public DSDialog Q_OBJECT public: - DsoMeasure(QWidget *parent, boost::shared_ptr dsoSig); + DsoMeasure(SigSession &session, view::View &parent, + unsigned int position, int last_sig_index); + + static QString get_ms_icon(int ms_type); + static QString get_ms_text(int ms_type); + +private: + void add_measure(QWidget *widget, const boost::shared_ptr dsoSig); private slots: void set_measure(bool en); + void reset(); protected: void accept(); void reject(); private: - boost::shared_ptr _dsoSig; + SigSession &_session; + view::View &_view; + unsigned int _position; + toolbars::TitleBar *_titlebar; - QVBoxLayout _layout; QDialogButtonBox _button_box; + QTabWidget *_measure_tab; + QVBoxLayout _layout; + std::vector _mbtn_vec; }; } // namespace dialogs diff --git a/DSView/pv/dialogs/fftoptions.cpp b/DSView/pv/dialogs/fftoptions.cpp old mode 100644 new mode 100755 index f3793b1..8fd4954 --- a/DSView/pv/dialogs/fftoptions.cpp +++ b/DSView/pv/dialogs/fftoptions.cpp @@ -27,10 +27,10 @@ #include #include "../sigsession.h" -#include "../data/mathstack.h" +#include "../data/spectrumstack.h" #include "../view/trace.h" #include "../view/dsosignal.h" -#include "../view/mathtrace.h" +#include "../view/spectrumtrace.h" using namespace boost; using namespace std; @@ -75,13 +75,13 @@ FftOptions::FftOptions(QWidget *parent, SigSession &session) : std::vector length; std::vector view_modes; std::vector dbv_ranges; - BOOST_FOREACH(const boost::shared_ptr t, _session.get_math_signals()) { - boost::shared_ptr mathTrace; - if ((mathTrace = dynamic_pointer_cast(t))) { - windows = mathTrace->get_math_stack()->get_windows_support(); - length = mathTrace->get_math_stack()->get_length_support(); - view_modes = mathTrace->get_view_modes_support(); - dbv_ranges = mathTrace->get_dbv_ranges(); + BOOST_FOREACH(const boost::shared_ptr t, _session.get_spectrum_traces()) { + boost::shared_ptr spectrumTraces; + if ((spectrumTraces = dynamic_pointer_cast(t))) { + windows = spectrumTraces->get_spectrum_stack()->get_windows_support(); + length = spectrumTraces->get_spectrum_stack()->get_length_support(); + view_modes = spectrumTraces->get_view_modes_support(); + dbv_ranges = spectrumTraces->get_dbv_ranges(); break; } } @@ -125,19 +125,19 @@ FftOptions::FftOptions(QWidget *parent, SigSession &session) : } // load current settings - BOOST_FOREACH(const boost::shared_ptr t, _session.get_math_signals()) { - boost::shared_ptr mathTrace; - if ((mathTrace = dynamic_pointer_cast(t))) { - if (mathTrace->enabled()) { + BOOST_FOREACH(const boost::shared_ptr t, _session.get_spectrum_traces()) { + boost::shared_ptr spectrumTraces; + if ((spectrumTraces = dynamic_pointer_cast(t))) { + if (spectrumTraces->enabled()) { _en_checkbox->setChecked(true); for (int i = 0; i < _ch_combobox->count(); i++) { - if (mathTrace->get_index() == _ch_combobox->itemData(i).toInt()) { + if (spectrumTraces->get_index() == _ch_combobox->itemData(i).toInt()) { _ch_combobox->setCurrentIndex(i); break; } } for (int i = 0; i < _len_combobox->count(); i++) { - if (mathTrace->get_math_stack()->get_sample_num() == _len_combobox->itemData(i).toULongLong()) { + if (spectrumTraces->get_spectrum_stack()->get_sample_num() == _len_combobox->itemData(i).toULongLong()) { _len_combobox->setCurrentIndex(i); break; } @@ -150,20 +150,20 @@ FftOptions::FftOptions(QWidget *parent, SigSession &session) : qVariantFromValue(i)); } for (int i = 0; i < _interval_combobox->count(); i++) { - if (mathTrace->get_math_stack()->get_sample_interval() == _interval_combobox->itemData(i).toInt()) { + if (spectrumTraces->get_spectrum_stack()->get_sample_interval() == _interval_combobox->itemData(i).toInt()) { _interval_combobox->setCurrentIndex(i); break; } } for (int i = 0; i < _dbv_combobox->count(); i++) { - if (mathTrace->dbv_range() == _dbv_combobox->itemData(i).toLongLong()) { + if (spectrumTraces->dbv_range() == _dbv_combobox->itemData(i).toLongLong()) { _dbv_combobox->setCurrentIndex(i); break; } } - _window_combobox->setCurrentIndex(mathTrace->get_math_stack()->get_windows_index()); - _dc_checkbox->setChecked(mathTrace->get_math_stack()->dc_ignored()); - _view_combobox->setCurrentIndex(mathTrace->view_mode()); + _window_combobox->setCurrentIndex(spectrumTraces->get_spectrum_stack()->get_windows_index()); + _dc_checkbox->setChecked(spectrumTraces->get_spectrum_stack()->dc_ignored()); + _view_combobox->setCurrentIndex(spectrumTraces->view_mode()); } } } @@ -214,26 +214,26 @@ void FftOptions::accept() QDialog::accept(); - BOOST_FOREACH(const boost::shared_ptr t, _session.get_math_signals()) { - boost::shared_ptr mathTrace; - if ((mathTrace = dynamic_pointer_cast(t))) { - mathTrace->set_enable(false); - if (mathTrace->get_index() == _ch_combobox->currentData().toInt()) { - mathTrace->get_math_stack()->set_dc_ignore(_dc_checkbox->isChecked()); - mathTrace->get_math_stack()->set_sample_num(_len_combobox->currentData().toULongLong()); - mathTrace->get_math_stack()->set_sample_interval(_interval_combobox->currentData().toInt()); - mathTrace->get_math_stack()->set_windows_index(_window_combobox->currentData().toInt()); - mathTrace->set_view_mode(_view_combobox->currentData().toUInt()); - //mathTrace->init_zoom(); - mathTrace->set_dbv_range(_dbv_combobox->currentData().toInt()); - mathTrace->set_enable(_en_checkbox->isChecked()); + BOOST_FOREACH(const boost::shared_ptr t, _session.get_spectrum_traces()) { + boost::shared_ptr spectrumTraces; + if ((spectrumTraces = dynamic_pointer_cast(t))) { + spectrumTraces->set_enable(false); + if (spectrumTraces->get_index() == _ch_combobox->currentData().toInt()) { + spectrumTraces->get_spectrum_stack()->set_dc_ignore(_dc_checkbox->isChecked()); + spectrumTraces->get_spectrum_stack()->set_sample_num(_len_combobox->currentData().toULongLong()); + spectrumTraces->get_spectrum_stack()->set_sample_interval(_interval_combobox->currentData().toInt()); + spectrumTraces->get_spectrum_stack()->set_windows_index(_window_combobox->currentData().toInt()); + spectrumTraces->set_view_mode(_view_combobox->currentData().toUInt()); + //spectrumTraces->init_zoom(); + spectrumTraces->set_dbv_range(_dbv_combobox->currentData().toInt()); + spectrumTraces->set_enable(_en_checkbox->isChecked()); if (_session.get_capture_state() == SigSession::Stopped && - mathTrace->enabled()) - mathTrace->get_math_stack()->calc_fft(); + spectrumTraces->enabled()) + spectrumTraces->get_spectrum_stack()->calc_fft(); } } } - _session.mathTraces_rebuild(); + _session.spectrum_rebuild(); } void FftOptions::reject() diff --git a/DSView/pv/dialogs/fftoptions.h b/DSView/pv/dialogs/fftoptions.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/interval.cpp b/DSView/pv/dialogs/interval.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/interval.h b/DSView/pv/dialogs/interval.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/lissajousoptions.cpp b/DSView/pv/dialogs/lissajousoptions.cpp new file mode 100755 index 0000000..8bc54fc --- /dev/null +++ b/DSView/pv/dialogs/lissajousoptions.cpp @@ -0,0 +1,197 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2015 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "lissajousoptions.h" +#include "../device/devinst.h" +#include "../sigsession.h" +#include "../view/view.h" +#include "../view/lissajoustrace.h" + +#include +#include +#include +#include +#include + +#include + +using namespace boost; +using namespace std; +using namespace pv::view; + +namespace pv { +namespace dialogs { + +LissajousOptions::LissajousOptions(SigSession &session, QWidget *parent) : + DSDialog(parent), + _session(session), + _button_box(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, + Qt::Horizontal, this) +{ + setMinimumSize(300, 300); + + _enable = new QCheckBox(this); + + QLabel *lisa_label = new QLabel(this); + lisa_label->setPixmap(QPixmap(":/icons/lissajous.png")); + + _percent = new QSlider(Qt::Horizontal, this); + _percent->setRange(100, 100); + _percent->setEnabled(false); + if (_session.cur_samplelimits() > WellLen) { + int min = WellLen*100.0/_session.cur_samplelimits(); + _percent->setEnabled(true); + _percent->setRange(min, 100); + _percent->setValue(min); + } + + _x_group = new QGroupBox(this); + _y_group = new QGroupBox(this); + QHBoxLayout *xlayout = new QHBoxLayout(); + QHBoxLayout *ylayout = new QHBoxLayout(); + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s))) { + QString index_str = QString::number(dsoSig->get_index()); + QRadioButton *xradio = new QRadioButton(index_str, _x_group); + xradio->setProperty("index", dsoSig->get_index()); + xlayout->addWidget(xradio); + QRadioButton *yradio = new QRadioButton(index_str, _y_group); + yradio->setProperty("index", dsoSig->get_index()); + ylayout->addWidget(yradio); + _x_radio.append(xradio); + _y_radio.append(yradio); + } + } + _x_group->setLayout(xlayout); + _y_group->setLayout(ylayout); + + + boost::shared_ptr lissajous = _session.get_lissajous_trace(); + if (lissajous) { + _enable->setChecked(lissajous->enabled()); + _percent->setValue(lissajous->percent()); + for (QVector::const_iterator i = _x_radio.begin(); + i != _x_radio.end(); i++) { + if ((*i)->property("index").toInt() == lissajous->xIndex()) { + (*i)->setChecked(true); + break; + } + } + for (QVector::const_iterator i = _y_radio.begin(); + i != _y_radio.end(); i++) { + if ((*i)->property("index").toInt() == lissajous->yIndex()) { + (*i)->setChecked(true); + break; + } + } + } else { + _enable->setChecked(false); + for (QVector::const_iterator i = _x_radio.begin(); + i != _x_radio.end(); i++) { + (*i)->setChecked(true); + break; + } + for (QVector::const_iterator i = _y_radio.begin(); + i != _y_radio.end(); i++) { + (*i)->setChecked(true); + break; + } + } + + _layout = new QGridLayout(); + _layout->setMargin(0); + _layout->setSpacing(0); + _layout->addWidget(lisa_label, 0, 0, 1, 2, Qt::AlignCenter); + _layout->addWidget(_enable, 1, 0, 1, 1); + _layout->addWidget(_percent, 2, 0, 1, 2); + _layout->addWidget(_x_group, 3, 0, 1, 1); + _layout->addWidget(_y_group, 3, 1, 1, 1); + _layout->addWidget(new QLabel(this), 4, 1, 1, 1); + _layout->addWidget(&_button_box, 5, 1, 1, 1, Qt::AlignHCenter | Qt::AlignBottom); + + layout()->addLayout(_layout); + + connect(&_button_box, SIGNAL(rejected()), this, SLOT(reject())); + connect(&_button_box, SIGNAL(accepted()), this, SLOT(accept())); + + retranslateUi(); +} + +void LissajousOptions::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + retranslateUi(); + DSDialog::changeEvent(event); +} + +void LissajousOptions::retranslateUi() +{ + _enable->setText(tr("Enable")); + _x_group->setTitle(tr("X-axis")); + _y_group->setTitle(tr("Y-axis")); + setTitle(tr("Lissajous Options")); +} + +void LissajousOptions::accept() +{ + using namespace Qt; + QDialog::accept(); + + int xindex = -1; + int yindex = -1; + for (QVector::const_iterator i = _x_radio.begin(); + i != _x_radio.end(); i++) { + if ((*i)->isChecked()) { + xindex = (*i)->property("index").toInt(); + break; + } + } + for (QVector::const_iterator i = _y_radio.begin(); + i != _y_radio.end(); i++) { + if ((*i)->isChecked()) { + yindex = (*i)->property("index").toInt(); + break; + } + } + bool enable = (xindex != -1 && yindex != -1 && _enable->isChecked()); + _session.lissajous_rebuild(enable, xindex, yindex, _percent->value()); + + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s))) { + dsoSig->set_show(!enable); + } + } + boost::shared_ptr mathTrace = _session.get_math_trace(); + if (mathTrace && mathTrace->enabled()) { + mathTrace->set_show(!enable); + } +} + +void LissajousOptions::reject() +{ + using namespace Qt; + QDialog::reject(); +} + +} // namespace dialogs +} // namespace pv diff --git a/DSView/pv/dialogs/lissajousoptions.h b/DSView/pv/dialogs/lissajousoptions.h new file mode 100755 index 0000000..b3fd13f --- /dev/null +++ b/DSView/pv/dialogs/lissajousoptions.h @@ -0,0 +1,85 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2015 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifndef DSVIEW_PV_LISSAJOUSOPTIONS_H +#define DSVIEW_PV_LISSAJOUSOPTIONS_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "../view/dsosignal.h" +#include "../toolbars/titlebar.h" +#include "dsdialog.h" + +namespace pv { + +class SigSession; + +namespace view { +class View; +} + +namespace dialogs { + +class LissajousOptions : public DSDialog +{ + Q_OBJECT + +private: + static const int WellLen = SR_Kn(16); + +public: + LissajousOptions(SigSession &session, QWidget *parent); + +private: + void changeEvent(QEvent *event); + void retranslateUi(); + +protected: + void accept(); + void reject(); + +private: + SigSession &_session; + + QCheckBox *_enable; + QGroupBox *_x_group; + QGroupBox *_y_group; + QSlider *_percent; + QVector _x_radio; + QVector _y_radio; + QDialogButtonBox _button_box; + QGridLayout *_layout; +}; + +} // namespace dialogs +} // namespace pv + +#endif // DSVIEW_PV_LISSAJOUSOPTIONS_H diff --git a/DSView/pv/dialogs/mathoptions.cpp b/DSView/pv/dialogs/mathoptions.cpp new file mode 100755 index 0000000..f41b9e2 --- /dev/null +++ b/DSView/pv/dialogs/mathoptions.cpp @@ -0,0 +1,228 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2015 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "mathoptions.h" +#include "../device/devinst.h" +#include "../sigsession.h" +#include "../view/view.h" +#include "../view/mathtrace.h" +#include "../data/mathstack.h" + +#include +#include +#include +#include +#include + +#include + +using namespace boost; +using namespace std; +using namespace pv::view; + +namespace pv { +namespace dialogs { + +MathOptions::MathOptions(SigSession &session, QWidget *parent) : + DSDialog(parent), + _session(session), + _button_box(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, + Qt::Horizontal, this) +{ + setMinimumSize(300, 300); + + _enable = new QCheckBox(this); + + QLabel *lisa_label = new QLabel(this); + lisa_label->setPixmap(QPixmap(":/icons/math.png")); + + _math_group = new QGroupBox(this); + QHBoxLayout *type_layout = new QHBoxLayout(); + QRadioButton *add_radio = new QRadioButton(tr("Add"), _math_group); + add_radio->setProperty("type", data::MathStack::MATH_ADD); + type_layout->addWidget(add_radio); + QRadioButton *sub_radio = new QRadioButton(tr("Substract"), _math_group); + sub_radio->setProperty("type", data::MathStack::MATH_SUB); + type_layout->addWidget(sub_radio); + QRadioButton *mul_radio = new QRadioButton(tr("Multiply"), _math_group); + mul_radio->setProperty("type", data::MathStack::MATH_MUL); + type_layout->addWidget(mul_radio); + QRadioButton *div_radio = new QRadioButton(tr("Divide"), _math_group); + div_radio->setProperty("type", data::MathStack::MATH_DIV); + type_layout->addWidget(div_radio); + _math_radio.append(add_radio); + _math_radio.append(sub_radio); + _math_radio.append(mul_radio); + _math_radio.append(div_radio); + _math_group->setLayout(type_layout); + + _src1_group = new QGroupBox(this); + _src2_group = new QGroupBox(this); + QHBoxLayout *src1_layout = new QHBoxLayout(); + QHBoxLayout *src2_layout = new QHBoxLayout(); + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s))) { + QString index_str = QString::number(dsoSig->get_index()); + QRadioButton *xradio = new QRadioButton(index_str, _src1_group); + xradio->setProperty("index", dsoSig->get_index()); + src1_layout->addWidget(xradio); + QRadioButton *yradio = new QRadioButton(index_str, _src2_group); + yradio->setProperty("index", dsoSig->get_index()); + src2_layout->addWidget(yradio); + _src1_radio.append(xradio); + _src2_radio.append(yradio); + } + } + _src1_group->setLayout(src1_layout); + _src2_group->setLayout(src2_layout); + + + boost::shared_ptr math = _session.get_math_trace(); + if (math) { + _enable->setChecked(math->enabled()); + for (QVector::const_iterator i = _src1_radio.begin(); + i != _src1_radio.end(); i++) { + if ((*i)->property("index").toInt() == math->src1()) { + (*i)->setChecked(true); + break; + } + } + for (QVector::const_iterator i = _src2_radio.begin(); + i != _src2_radio.end(); i++) { + if ((*i)->property("index").toInt() == math->src2()) { + (*i)->setChecked(true); + break; + } + } + for (QVector::const_iterator i = _math_radio.begin(); + i != _math_radio.end(); i++) { + if ((*i)->property("type").toInt() == math->get_math_stack()->get_type()) { + (*i)->setChecked(true); + break; + } + } + } else { + _enable->setChecked(false); + for (QVector::const_iterator i = _src1_radio.begin(); + i != _src1_radio.end(); i++) { + (*i)->setChecked(true); + break; + } + for (QVector::const_iterator i = _src2_radio.begin(); + i != _src2_radio.end(); i++) { + (*i)->setChecked(true); + break; + } + for (QVector::const_iterator i = _math_radio.begin(); + i != _math_radio.end(); i++) { + (*i)->setChecked(true); + break; + } + } + + _layout = new QGridLayout(); + _layout->setMargin(0); + _layout->setSpacing(0); + _layout->addWidget(lisa_label, 0, 0, 1, 2, Qt::AlignCenter); + _layout->addWidget(_enable, 1, 0, 1, 1); + _layout->addWidget(_math_group, 2, 0, 1, 2); + _layout->addWidget(_src1_group, 3, 0, 1, 1); + _layout->addWidget(_src2_group, 3, 1, 1, 1); + _layout->addWidget(new QLabel(this), 4, 1, 1, 1); + _layout->addWidget(&_button_box, 5, 1, 1, 1, Qt::AlignHCenter | Qt::AlignBottom); + + layout()->addLayout(_layout); + + connect(&_button_box, SIGNAL(rejected()), this, SLOT(reject())); + connect(&_button_box, SIGNAL(accepted()), this, SLOT(accept())); + + retranslateUi(); +} + +void MathOptions::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + retranslateUi(); + DSDialog::changeEvent(event); +} + +void MathOptions::retranslateUi() +{ + _enable->setText(tr("Enable")); + _math_group->setTitle(tr("Math Type")); + _src1_group->setTitle(tr("1st Source")); + _src2_group->setTitle(tr("2nd Source")); + setTitle(tr("Math Options")); +} + +void MathOptions::accept() +{ + using namespace Qt; + QDialog::accept(); + + int src1 = -1; + int src2 = -1; + data::MathStack::MathType type = data::MathStack::MATH_ADD; + for (QVector::const_iterator i = _src1_radio.begin(); + i != _src1_radio.end(); i++) { + if ((*i)->isChecked()) { + src1 = (*i)->property("index").toInt(); + break; + } + } + for (QVector::const_iterator i = _src2_radio.begin(); + i != _src2_radio.end(); i++) { + if ((*i)->isChecked()) { + src2 = (*i)->property("index").toInt(); + break; + } + } + for (QVector::const_iterator i = _math_radio.begin(); + i != _math_radio.end(); i++) { + if ((*i)->isChecked()) { + type = (data::MathStack::MathType)(*i)->property("type").toInt(); + break; + } + } + bool enable = (src1 != -1 && src2 != -1 && _enable->isChecked()); + boost::shared_ptr dsoSig1; + boost::shared_ptr dsoSig2; + BOOST_FOREACH(const boost::shared_ptr s, _session.get_signals()) { + boost::shared_ptr dsoSig; + if ((dsoSig = dynamic_pointer_cast(s))) { + if (dsoSig->get_index() == src1) + dsoSig1 = dsoSig; + if (dsoSig->get_index() == src2) + dsoSig2 = dsoSig; + } + } + _session.math_rebuild(enable, dsoSig1, dsoSig2, type); +} + +void MathOptions::reject() +{ + using namespace Qt; + QDialog::reject(); +} + +} // namespace dialogs +} // namespace pv diff --git a/DSView/pv/dialogs/mathoptions.h b/DSView/pv/dialogs/mathoptions.h new file mode 100755 index 0000000..d11afa3 --- /dev/null +++ b/DSView/pv/dialogs/mathoptions.h @@ -0,0 +1,86 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2015 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifndef DSVIEW_PV_MATHOPTIONS_H +#define DSVIEW_PV_MATHOPTIONS_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "../view/dsosignal.h" +#include "../toolbars/titlebar.h" +#include "dsdialog.h" + +namespace pv { + +class SigSession; + +namespace view { +class View; +} + +namespace dialogs { + +class MathOptions : public DSDialog +{ + Q_OBJECT + +private: + static const int WellLen = SR_Kn(16); + +public: + MathOptions(SigSession &session, QWidget *parent); + +private: + void changeEvent(QEvent *event); + void retranslateUi(); + +protected: + void accept(); + void reject(); + +private: + SigSession &_session; + + QCheckBox *_enable; + QGroupBox *_src1_group; + QGroupBox *_src2_group; + QGroupBox *_math_group; + QVector _src1_radio; + QVector _src2_radio; + QVector _math_radio; + QDialogButtonBox _button_box; + QGridLayout *_layout; +}; + +} // namespace dialogs +} // namespace pv + +#endif // DSVIEW_PV_MATHOPTIONS_H diff --git a/DSView/pv/dialogs/protocolexp.cpp b/DSView/pv/dialogs/protocolexp.cpp old mode 100644 new mode 100755 index 04be836..dce4d33 --- a/DSView/pv/dialogs/protocolexp.cpp +++ b/DSView/pv/dialogs/protocolexp.cpp @@ -23,6 +23,7 @@ #include +#include #include #include #include @@ -118,7 +119,7 @@ void ProtocolExp::accept() filter.append(";;"); } const QString DIR_KEY("ProtocolExportPath"); - QSettings settings; + QSettings settings(QApplication::organizationName(), QApplication::applicationName()); QString default_filter = _format_combobox->currentText(); QString file_name = QFileDialog::getSaveFileName( this, tr("Export Data"), settings.value(DIR_KEY).toString(),filter,&default_filter); @@ -136,7 +137,7 @@ void ProtocolExp::accept() file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out.setCodec("UTF-8"); - out.setGenerateByteOrderMark(true); + //out.setGenerateByteOrderMark(true); // UTF-8 without BOM QFuture future; future = QtConcurrent::run([&]{ diff --git a/DSView/pv/dialogs/protocolexp.h b/DSView/pv/dialogs/protocolexp.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/protocollist.cpp b/DSView/pv/dialogs/protocollist.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/protocollist.h b/DSView/pv/dialogs/protocollist.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/regionoptions.cpp b/DSView/pv/dialogs/regionoptions.cpp new file mode 100755 index 0000000..0a11313 --- /dev/null +++ b/DSView/pv/dialogs/regionoptions.cpp @@ -0,0 +1,115 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2016 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "regionoptions.h" + +#include + +#include "../sigsession.h" +#include "../view/cursor.h" +#include "../view/view.h" +#include "../device/devinst.h" + +using namespace boost; +using namespace std; + +namespace pv { +namespace dialogs { + +const QString RegionOptions::RegionStart = QT_TR_NOOP("Start"); +const QString RegionOptions::RegionEnd = QT_TR_NOOP("End"); + +RegionOptions::RegionOptions(view::View *view, SigSession &session, QWidget *parent) : + DSDialog(parent), + _session(session), + _view(view), + _button_box(QDialogButtonBox::Ok, + Qt::Horizontal, this) +{ + QHBoxLayout *hlayout = new QHBoxLayout(); + hlayout->setMargin(0); + hlayout->setSpacing(0); + _start_comboBox = new QComboBox(this); + _end_comboBox = new QComboBox(this); + _start_comboBox->addItem(RegionStart); + _end_comboBox->addItem(RegionEnd); + if (_view) { + int index = 1; + for(std::list::iterator i = _view->get_cursorList().begin(); + i != _view->get_cursorList().end(); i++) { + QString curCursor = tr("Cursor ")+QString::number(index); + _start_comboBox->addItem(curCursor); + _end_comboBox->addItem(curCursor); + index++; + } + } + hlayout->addWidget(new QLabel("Start: ", this)); + hlayout->addWidget(_start_comboBox); + hlayout->addWidget(new QLabel(" ", this)); + hlayout->addWidget(new QLabel("End: ", this)); + hlayout->addWidget(_end_comboBox); + + QVBoxLayout *vlayout = new QVBoxLayout(); + vlayout->addLayout(hlayout); + vlayout->addWidget(&_button_box); + + layout()->addLayout(vlayout); + setTitle(tr("Region")); + + connect(&_button_box, SIGNAL(accepted()), this, SLOT(set_region())); + connect(_session.get_device().get(), SIGNAL(device_updated()), this, SLOT(reject())); + +} + +void RegionOptions::set_region() +{ + const uint64_t last_samples = _session.cur_samplelimits() - 1; + const int index1 = _start_comboBox->currentIndex(); + const int index2 = _end_comboBox->currentIndex(); + uint64_t start, end; + + _session.set_save_start(0); + _session.set_save_end(last_samples); + + if (index1 == 0) { + start = 0; + } else { + start = _view->get_cursor_samples(index1-1); + } + if (index2 == 0) { + end = last_samples; + } else { + end = _view->get_cursor_samples(index2-1); + } + + if (start > last_samples) + start = 0; + if (end > last_samples) + end = last_samples; + + _session.set_save_start(min(start, end)); + _session.set_save_end(max(start, end)); + + QDialog::accept(); +} + +} // namespace dialogs +} // namespace pv diff --git a/DSView/pv/dialogs/regionoptions.h b/DSView/pv/dialogs/regionoptions.h new file mode 100755 index 0000000..097baff --- /dev/null +++ b/DSView/pv/dialogs/regionoptions.h @@ -0,0 +1,74 @@ +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2016 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifndef DSVIEW_PV_REGIONOPTIONS_H +#define DSVIEW_PV_REGIONOPTIONS_H + +#include +#include +#include +#include +#include + +#include + +#include "../toolbars/titlebar.h" +#include "dsdialog.h" + +namespace pv { + +class SigSession; + +namespace view { +class View; +} + +namespace dialogs { + +class RegionOptions : public DSDialog +{ + Q_OBJECT +private: + static const QString RegionStart; + static const QString RegionEnd; + +public: + RegionOptions(view::View *view, SigSession &session, QWidget *parent = 0); + +private slots: + void set_region(); + +private: + SigSession &_session; + view::View *_view; + + QComboBox *_start_comboBox; + QComboBox *_end_comboBox; + + QDialogButtonBox _button_box; + +}; + +} // namespace dialogs +} // namespace pv + +#endif // DSVIEW_PV_REGIONOPTIONS_H diff --git a/DSView/pv/dialogs/search.cpp b/DSView/pv/dialogs/search.cpp old mode 100644 new mode 100755 index 06b029e..86e69dd --- a/DSView/pv/dialogs/search.cpp +++ b/DSView/pv/dialogs/search.cpp @@ -1,128 +1,128 @@ -/* - * This file is part of the DSView project. - * DSView is based on PulseView. - * - * Copyright (C) 2013 DreamSourceLab - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "search.h" -#include "../view/logicsignal.h" - -#include -#include - -#include - -namespace pv { -namespace dialogs { - -Search::Search(QWidget *parent, SigSession &session, std::map pattern) : - DSDialog(parent), - _session(session) -{ - - QFont font("Monaco"); - font.setStyleHint(QFont::Monospace); - font.setFixedPitch(true); - //this->setMinimumWidth(350); - - QRegExp value_rx("[10XRFCxrfc]+"); - QValidator *value_validator = new QRegExpValidator(value_rx, this); - - search_buttonBox.addButton(QDialogButtonBox::Ok); - search_buttonBox.addButton(QDialogButtonBox::Cancel); - - QGridLayout *search_layout = new QGridLayout(); - search_layout->setVerticalSpacing(0); - - int index = 0; - BOOST_FOREACH(const boost::shared_ptr sig, - _session.get_signals()) { - assert(sig); - boost::shared_ptr logic_sig; - if ((logic_sig = boost::dynamic_pointer_cast(sig))) { - QLineEdit *search_lineEdit = new QLineEdit(this); - if (pattern.find(logic_sig->get_index()) != pattern.end()) - search_lineEdit->setText(pattern[logic_sig->get_index()]); - else - search_lineEdit->setText("X"); - search_lineEdit->setValidator(value_validator); - search_lineEdit->setMaxLength(1); - search_lineEdit->setInputMask("X"); - search_lineEdit->setFont(font); - _search_lineEdit_vec.push_back(search_lineEdit); - - search_layout->addWidget(new QLabel(logic_sig->get_name()+":"), index, 0, Qt::AlignRight); - search_layout->addWidget(new QLabel(QString::number(logic_sig->get_index())), index, 1, Qt::AlignRight); - search_layout->addWidget(search_lineEdit, index, 2); - - connect(search_lineEdit, SIGNAL(editingFinished()), this, SLOT(format())); - - index++; - } - } - - search_layout->addWidget(new QLabel(" "), index,0); - search_layout->addWidget(new QLabel(tr("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge")), 0, 3, index, 1); - search_layout->addWidget(&search_buttonBox, index+1, 3); - search_layout->setColumnStretch(3, 100); - - layout()->addLayout(search_layout); - setTitle(tr("Search Options")); - - connect(&search_buttonBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(&search_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); - connect(_session.get_device().get(), SIGNAL(device_updated()), this, SLOT(reject())); -} - -Search::~Search() -{ -} - -void Search::accept() -{ - using namespace Qt; - - QDialog::accept(); -} - -void Search::format() -{ - QLineEdit *sc = qobject_cast(sender()); - sc->setText(sc->text().toUpper()); -} - -std::map Search::get_pattern() -{ - std::map pattern; - - int index = 0; - BOOST_FOREACH(const boost::shared_ptr sig, - _session.get_signals()) { - assert(sig); - boost::shared_ptr logic_sig; - if ((logic_sig = boost::dynamic_pointer_cast(sig))) { - pattern[logic_sig->get_index()] = _search_lineEdit_vec[index]->text(); - index++; - } - } - - return pattern; -} - -} // namespace decoder -} // namespace pv +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2013 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "search.h" +#include "../view/logicsignal.h" + +#include +#include + +#include + +namespace pv { +namespace dialogs { + +Search::Search(QWidget *parent, SigSession &session, std::map pattern) : + DSDialog(parent), + _session(session) +{ + + QFont font("Monaco"); + font.setStyleHint(QFont::Monospace); + font.setFixedPitch(true); + //this->setMinimumWidth(350); + + QRegExp value_rx("[10XRFCxrfc]+"); + QValidator *value_validator = new QRegExpValidator(value_rx, this); + + search_buttonBox.addButton(QDialogButtonBox::Ok); + search_buttonBox.addButton(QDialogButtonBox::Cancel); + + QGridLayout *search_layout = new QGridLayout(); + search_layout->setVerticalSpacing(0); + + int index = 0; + BOOST_FOREACH(const boost::shared_ptr sig, + _session.get_signals()) { + assert(sig); + boost::shared_ptr logic_sig; + if ((logic_sig = boost::dynamic_pointer_cast(sig))) { + QLineEdit *search_lineEdit = new QLineEdit(this); + if (pattern.find(logic_sig->get_index()) != pattern.end()) + search_lineEdit->setText(pattern[logic_sig->get_index()]); + else + search_lineEdit->setText("X"); + search_lineEdit->setValidator(value_validator); + search_lineEdit->setMaxLength(1); + search_lineEdit->setInputMask("X"); + search_lineEdit->setFont(font); + _search_lineEdit_vec.push_back(search_lineEdit); + + search_layout->addWidget(new QLabel(logic_sig->get_name()+":"), index, 0, Qt::AlignRight); + search_layout->addWidget(new QLabel(QString::number(logic_sig->get_index())), index, 1, Qt::AlignRight); + search_layout->addWidget(search_lineEdit, index, 2); + + connect(search_lineEdit, SIGNAL(editingFinished()), this, SLOT(format())); + + index++; + } + } + + search_layout->addWidget(new QLabel(" "), index,0); + search_layout->addWidget(new QLabel(tr("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge")), 0, 3, index, 1); + search_layout->addWidget(&search_buttonBox, index+1, 3); + search_layout->setColumnStretch(3, 100); + + layout()->addLayout(search_layout); + setTitle(tr("Search Options")); + + connect(&search_buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(&search_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + connect(_session.get_device().get(), SIGNAL(device_updated()), this, SLOT(reject())); +} + +Search::~Search() +{ +} + +void Search::accept() +{ + using namespace Qt; + + QDialog::accept(); +} + +void Search::format() +{ + QLineEdit *sc = qobject_cast(sender()); + sc->setText(sc->text().toUpper()); +} + +std::map Search::get_pattern() +{ + std::map pattern; + + int index = 0; + BOOST_FOREACH(const boost::shared_ptr sig, + _session.get_signals()) { + assert(sig); + boost::shared_ptr logic_sig; + if ((logic_sig = boost::dynamic_pointer_cast(sig))) { + pattern[logic_sig->get_index()] = _search_lineEdit_vec[index]->text(); + index++; + } + } + + return pattern; +} + +} // namespace decoder +} // namespace pv diff --git a/DSView/pv/dialogs/search.h b/DSView/pv/dialogs/search.h old mode 100644 new mode 100755 index 31e965e..d1f7950 --- a/DSView/pv/dialogs/search.h +++ b/DSView/pv/dialogs/search.h @@ -1,72 +1,72 @@ -/* - * This file is part of the DSView project. - * DSView is based on PulseView. - * - * Copyright (C) 2013 DreamSourceLab - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#ifndef DSVIEW_PV_SEARCH_H -#define DSVIEW_PV_SEARCH_H - -#include -#include -#include -#include -#include - -#include "../sigsession.h" -#include "../toolbars/titlebar.h" -#include "dsdialog.h" -#include "../device/devinst.h" - -#include - -namespace pv { -namespace dialogs { - -class Search : public DSDialog -{ - Q_OBJECT - -public: - - Search(QWidget *parent, SigSession &session, std::map pattern); - ~Search(); - - std::map get_pattern(); - -protected: - void accept(); - -signals: - -private slots: - void format(); - -private: - SigSession &_session; - - toolbars::TitleBar *_titlebar; - QVector _search_lineEdit_vec; - QDialogButtonBox search_buttonBox; -}; - -} // namespace decoder -} // namespace pv - -#endif // DSVIEW_PV_SEARCH_H +/* + * This file is part of the DSView project. + * DSView is based on PulseView. + * + * Copyright (C) 2013 DreamSourceLab + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifndef DSVIEW_PV_SEARCH_H +#define DSVIEW_PV_SEARCH_H + +#include +#include +#include +#include +#include + +#include "../sigsession.h" +#include "../toolbars/titlebar.h" +#include "dsdialog.h" +#include "../device/devinst.h" + +#include + +namespace pv { +namespace dialogs { + +class Search : public DSDialog +{ + Q_OBJECT + +public: + + Search(QWidget *parent, SigSession &session, std::map pattern); + ~Search(); + + std::map get_pattern(); + +protected: + void accept(); + +signals: + +private slots: + void format(); + +private: + SigSession &_session; + + toolbars::TitleBar *_titlebar; + QVector _search_lineEdit_vec; + QDialogButtonBox search_buttonBox; +}; + +} // namespace decoder +} // namespace pv + +#endif // DSVIEW_PV_SEARCH_H diff --git a/DSView/pv/dialogs/shadow.cpp b/DSView/pv/dialogs/shadow.cpp old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/shadow.h b/DSView/pv/dialogs/shadow.h old mode 100644 new mode 100755 diff --git a/DSView/pv/dialogs/storeprogress.cpp b/DSView/pv/dialogs/storeprogress.cpp old mode 100644 new mode 100755 index fc01b21..ac84b80 --- a/DSView/pv/dialogs/storeprogress.cpp +++ b/DSView/pv/dialogs/storeprogress.cpp @@ -70,10 +70,10 @@ void StoreProgress::timeout() QTimer::singleShot(100, this, SLOT(timeout())); } -void StoreProgress::save_run() +void StoreProgress::save_run(QString session_file) { - _info.setText("Saving..."); - if (_store_session.save_start()) + _info.setText(tr("Saving...")); + if (_store_session.save_start(session_file)) show(); else show_error(); @@ -83,7 +83,7 @@ void StoreProgress::save_run() void StoreProgress::export_run() { - _info.setText("Exporting..."); + _info.setText(tr("Exporting...")); if (_store_session.export_start()) show(); else diff --git a/DSView/pv/dialogs/storeprogress.h b/DSView/pv/dialogs/storeprogress.h old mode 100644 new mode 100755 index 30cfc84..28cf5cb --- a/DSView/pv/dialogs/storeprogress.h +++ b/DSView/pv/dialogs/storeprogress.h @@ -61,7 +61,7 @@ private: void closeEvent(QCloseEvent* e); public slots: - void save_run(); + void save_run(QString session_file); void export_run(); private slots: diff --git a/DSView/pv/dialogs/waitingdialog.cpp b/DSView/pv/dialogs/waitingdialog.cpp old mode 100644 new mode 100755 index ee89d2f..f3d77fc --- a/DSView/pv/dialogs/waitingdialog.cpp +++ b/DSView/pv/dialogs/waitingdialog.cpp @@ -41,8 +41,9 @@ namespace dialogs { const QString WaitingDialog::TIPS_WAIT = QT_TR_NOOP("Waiting"); const QString WaitingDialog::TIPS_FINISHED = QT_TR_NOOP("Finished!"); -WaitingDialog::WaitingDialog(QWidget *parent, boost::shared_ptr dev_inst) : +WaitingDialog::WaitingDialog(QWidget *parent, boost::shared_ptr dev_inst, int key) : DSDialog(parent), + _key(key), _dev_inst(dev_inst), _button_box(QDialogButtonBox::Abort, Qt::Horizontal, this) @@ -50,8 +51,9 @@ WaitingDialog::WaitingDialog(QWidget *parent, boost::shared_ptrsetFixedSize((GIF_WIDTH+TIP_WIDTH)*1.2, (GIF_HEIGHT+TIP_HEIGHT)*4); this->setWindowOpacity(0.7); + QString iconPath = ":/icons/" + qApp->property("Style").toString(); label = new QLabel(this); - movie = new QMovie(":/icons/wait.gif"); + movie = new QMovie(iconPath+"/wait.gif"); label->setMovie(movie); label->setAlignment(Qt::AlignCenter); @@ -89,13 +91,11 @@ void WaitingDialog::accept() QFuture future; future = QtConcurrent::run([&]{ - //QTime dieTime = QTime::currentTime().addSecs(1); _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO_SET, g_variant_new_boolean(true)); - //while( QTime::currentTime() < dieTime ); }); Qt::WindowFlags flags = Qt::CustomizeWindowHint; - QProgressDialog dlg(tr("Save Auto Zero Result... It can take a while."), + QProgressDialog dlg(tr("Save calibration Result... It can take a while."), tr("Cancel"),0,0,this,flags); dlg.setWindowModality(Qt::WindowModal); dlg.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | @@ -103,8 +103,8 @@ void WaitingDialog::accept() dlg.setCancelButton(NULL); QFutureWatcher watcher; - watcher.setFuture(future); connect(&watcher,SIGNAL(finished()),&dlg,SLOT(cancel())); + watcher.setFuture(future); dlg.exec(); } @@ -119,14 +119,12 @@ void WaitingDialog::reject() QFuture future; future = QtConcurrent::run([&]{ - //QTime dieTime = QTime::currentTime().addSecs(1); - _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO, g_variant_new_boolean(false)); + _dev_inst->set_config(NULL, NULL, _key, g_variant_new_boolean(false)); _dev_inst->set_config(NULL, NULL, SR_CONF_ZERO_LOAD, g_variant_new_boolean(true)); - //while( QTime::currentTime() < dieTime ); }); Qt::WindowFlags flags = Qt::CustomizeWindowHint; - QProgressDialog dlg(tr("Load Current Setting... It can take a while."), + QProgressDialog dlg(tr("Load current setting... It can take a while."), tr("Cancel"),0,0,this,flags); dlg.setWindowModality(Qt::WindowModal); dlg.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | @@ -164,7 +162,7 @@ void WaitingDialog::changeText() tips->setText(TIPS_WAIT); index = 0; - GVariant* gvar = _dev_inst->get_config(NULL, NULL, SR_CONF_ZERO); + GVariant* gvar = _dev_inst->get_config(NULL, NULL, _key); if (gvar != NULL) { bool zero = g_variant_get_boolean(gvar); g_variant_unref(gvar); diff --git a/DSView/pv/dialogs/waitingdialog.h b/DSView/pv/dialogs/waitingdialog.h old mode 100644 new mode 100755 index 6813083..5c06e3c --- a/DSView/pv/dialogs/waitingdialog.h +++ b/DSView/pv/dialogs/waitingdialog.h @@ -52,7 +52,7 @@ private: static const QString TIPS_FINISHED; public: - WaitingDialog(QWidget *parent, boost::shared_ptr dev_inst); + WaitingDialog(QWidget *parent, boost::shared_ptr dev_inst, int key); int start(); protected: @@ -64,6 +64,7 @@ private slots: void stop(); private: + int _key; boost::shared_ptr _dev_inst; toolbars::TitleBar *_titlebar; QDialogButtonBox _button_box; diff --git a/DSView/pv/dock/dsotriggerdock.cpp b/DSView/pv/dock/dsotriggerdock.cpp old mode 100644 new mode 100755 index 77f5dcf..f646f35 --- a/DSView/pv/dock/dsotriggerdock.cpp +++ b/DSView/pv/dock/dsotriggerdock.cpp @@ -1,420 +1,453 @@ -/* - * This file is part of the DSView project. - * DSView is based on PulseView. - * - * Copyright (C) 2013 DreamSourceLab - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "dsotriggerdock.h" -#include "../sigsession.h" -#include "../device/devinst.h" -#include "../dialogs/dsmessagebox.h" -#include "../view/dsosignal.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -using namespace boost; -using namespace std; - -namespace pv { -namespace dock { - -DsoTriggerDock::DsoTriggerDock(QWidget *parent, SigSession &session) : - QScrollArea(parent), - _session(session) -{ - this->setWidgetResizable(true); - _widget = new QWidget(this); - - QLabel *position_label = new QLabel(tr("Trigger Position: "), _widget); - position_spinBox = new QSpinBox(_widget); - position_spinBox->setRange(0, 99); - position_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); - position_slider = new QSlider(Qt::Horizontal, _widget); - position_slider->setRange(0, 99); - connect(position_slider, SIGNAL(valueChanged(int)), position_spinBox, SLOT(setValue(int))); - connect(position_spinBox, SIGNAL(valueChanged(int)), position_slider, SLOT(setValue(int))); - connect(position_slider, SIGNAL(valueChanged(int)), this, SLOT(pos_changed(int))); - - QLabel *holdoff_label = new QLabel(tr("Hold Off Time: "), _widget); - holdoff_comboBox = new QComboBox(_widget); - holdoff_comboBox->addItem(tr("uS"), qVariantFromValue(1000)); - holdoff_comboBox->addItem(tr("mS"), qVariantFromValue(1000000)); - holdoff_comboBox->addItem(tr("S"), qVariantFromValue(1000000000)); - holdoff_comboBox->setCurrentIndex(0); - holdoff_spinBox = new QSpinBox(_widget); - holdoff_spinBox->setRange(0, 999); - holdoff_spinBox->setButtonSymbols(QAbstractSpinBox::NoButtons); - holdoff_slider = new QSlider(Qt::Horizontal, _widget); - holdoff_slider->setRange(0, 999); - connect(holdoff_slider, SIGNAL(valueChanged(int)), holdoff_spinBox, SLOT(setValue(int))); - connect(holdoff_spinBox, SIGNAL(valueChanged(int)), holdoff_slider, SLOT(setValue(int))); - connect(holdoff_slider, SIGNAL(valueChanged(int)), this, SLOT(hold_changed(int))); - connect(holdoff_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(hold_changed(int))); - - QLabel *margin_label = new QLabel(tr("Noise Sensitivity: "), _widget); - margin_slider = new QSlider(Qt::Horizontal, _widget); - margin_slider->setRange(0, 15); - connect(margin_slider, SIGNAL(valueChanged(int)), this, SLOT(margin_changed(int))); - - - QLabel *tSource_labe = new QLabel(tr("Trigger Sources: "), _widget); - QRadioButton *auto_radioButton = new QRadioButton(tr("Auto")); - auto_radioButton->setChecked(true); - QRadioButton *ch0_radioButton = new QRadioButton(tr("Channel 0")); - QRadioButton *ch1_radioButton = new QRadioButton(tr("Channel 1")); - QRadioButton *ch0a1_radioButton = new QRadioButton(tr("Channel 0 && 1")); - QRadioButton *ch0o1_radioButton = new QRadioButton(tr("Channel 0 | 1")); - connect(auto_radioButton, SIGNAL(clicked()), this, SLOT(source_changed()