.
+; For use only on Windows operating systems.
+
+[Strings]
+Analog = "Analog Devices, Inc."
+PlutoDeviceID = "VID_0456&PID_B673&MI_00"
+PlutoDevice = "PlutoSDR USB Ethernet/RNDIS Gadget"
+M2kDeviceID = "VID_0456&PID_B672&MI_00"
+M2kDevice = "M2k USB Ethernet/RNDIS Gadget"
+Vista_Property = "Optional Vista Property"
+
+[Version]
+Signature = "$Windows NT$"
+Class = Net
+ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
+Provider = %Analog%
+DriverVer = 06/21/2006,6.0.6000.16384
+CatalogFile = pluto-rndis.cat
+
+[Manufacturer]
+%Analog% = LinuxDevices,NTx86,NTamd64,NTia64
+
+; Decoration for x86 architecture
+[LinuxDevices.NTx86]
+%PlutoDevice% = RNDIS.NT.5.1, USB\%PlutoDeviceID%
+%M2kDevice% = RNDIS.NT.5.1, USB\%M2kDeviceID%
+; Decoration for x64 architecture
+[LinuxDevices.NTamd64]
+%PlutoDevice% = RNDIS.NT.5.1, USB\%PlutoDeviceID%
+%M2kDevice% = RNDIS.NT.5.1, USB\%M2kDeviceID%
+; Decoration for ia64 architecture
+[LinuxDevices.NTia64]
+%PlutoDevice% = RNDIS.NT.5.1, USB\%PlutoDeviceID%
+%M2kDevice% = RNDIS.NT.5.1, USB\%M2kDeviceID%
+
+;@@@ This is the common setting for setup
+[ControlFlags]
+ExcludeFromSelect=*
+
+; DDInstall section
+; References the in-build Netrndis.inf
+[RNDIS.NT.5.1]
+Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
+BusType = 15
+; NEVER REMOVE THE FOLLOWING REFERENCE FOR NETRNDIS.INF
+include = netrndis.inf
+needs = Usb_Rndis.ndi
+AddReg = Rndis_AddReg_Vista
+
+; DDInstal.Services section
+[RNDIS.NT.5.1.Services]
+include = netrndis.inf
+needs = Usb_Rndis.ndi.Services
+
+; Optional registry settings. You can modify as needed.
+[RNDIS_AddReg_Vista]
+HKR, NDI\params\VistaProperty, ParamDesc, 0, %Vista_Property%
+HKR, NDI\params\VistaProperty, type, 0, "edit"
+HKR, NDI\params\VistaProperty, LimitText, 0, "12"
+HKR, NDI\params\VistaProperty, UpperCase, 0, "1"
+HKR, NDI\params\VistaProperty, default, 0, " "
+HKR, NDI\params\VistaProperty, optional, 0, "1"
+
+; No sys copyfiles - the sys files are already in-build
+; (part of the operating system).
+; We do not support XP SP1-, 2003 SP1-, ME, 9x.
+
+
diff --git a/drivers/pluto-usbd.cat b/drivers/pluto-usbd.cat
new file mode 100644
index 0000000000..57bd2f6703
Binary files /dev/null and b/drivers/pluto-usbd.cat differ
diff --git a/drivers/pluto-usbd.inf b/drivers/pluto-usbd.inf
new file mode 100644
index 0000000000..bc9157bba1
Binary files /dev/null and b/drivers/pluto-usbd.inf differ
diff --git a/drivers/x86/WdfCoInstaller01011.dll b/drivers/x86/WdfCoInstaller01011.dll
new file mode 100644
index 0000000000..e943ea45ef
Binary files /dev/null and b/drivers/x86/WdfCoInstaller01011.dll differ
diff --git a/drivers/x86/winusbcoinstaller2.dll b/drivers/x86/winusbcoinstaller2.dll
new file mode 100644
index 0000000000..fc450d2b25
Binary files /dev/null and b/drivers/x86/winusbcoinstaller2.dll differ
diff --git a/icons/default/ADALM2000.png b/icons/default/ADALM2000.png
new file mode 100644
index 0000000000..cd8ed5dfd4
Binary files /dev/null and b/icons/default/ADALM2000.png differ
diff --git a/icons/default/ADALM2000Pinout.png b/icons/default/ADALM2000Pinout.png
new file mode 100644
index 0000000000..f121b46cd5
Binary files /dev/null and b/icons/default/ADALM2000Pinout.png differ
diff --git a/icons/default/add.svg b/icons/default/add.svg
new file mode 100644
index 0000000000..881f36ce67
--- /dev/null
+++ b/icons/default/add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/default/adi.png b/icons/default/adi.png
new file mode 100644
index 0000000000..d7b45abb77
Binary files /dev/null and b/icons/default/adi.png differ
diff --git a/icons/default/face.png b/icons/default/face.png
new file mode 100644
index 0000000000..c86b7f55f3
Binary files /dev/null and b/icons/default/face.png differ
diff --git a/icons/default/home.png b/icons/default/home.png
new file mode 100644
index 0000000000..c872ba2137
Binary files /dev/null and b/icons/default/home.png differ
diff --git a/icons/default/ic adalm.png b/icons/default/ic adalm.png
new file mode 100644
index 0000000000..6bdd8be75a
Binary files /dev/null and b/icons/default/ic adalm.png differ
diff --git a/icons/default/ic adalm.svg b/icons/default/ic adalm.svg
new file mode 100644
index 0000000000..9648b34552
--- /dev/null
+++ b/icons/default/ic adalm.svg
@@ -0,0 +1,69 @@
+
+
+
+ C7953CEC-1985-4C73-9530-59F852DD5708
+ Created with sketchtool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ADALM2000
+
+
+
+
+
+
\ No newline at end of file
diff --git a/icons/default/icons/calibration.png b/icons/default/icons/calibration.png
new file mode 100644
index 0000000000..3f9da51e08
Binary files /dev/null and b/icons/default/icons/calibration.png differ
diff --git a/icons/default/icons/debugger.png b/icons/default/icons/debugger.png
new file mode 100644
index 0000000000..a8558bced9
Binary files /dev/null and b/icons/default/icons/debugger.png differ
diff --git a/icons/default/icons/io.png b/icons/default/icons/io.png
new file mode 100644
index 0000000000..8c4ca65040
Binary files /dev/null and b/icons/default/icons/io.png differ
diff --git a/icons/default/icons/logic_analyzer.png b/icons/default/icons/logic_analyzer.png
new file mode 100644
index 0000000000..a20ea400d6
Binary files /dev/null and b/icons/default/icons/logic_analyzer.png differ
diff --git a/icons/default/icons/network_analyzer.png b/icons/default/icons/network_analyzer.png
new file mode 100644
index 0000000000..259686a2c3
Binary files /dev/null and b/icons/default/icons/network_analyzer.png differ
diff --git a/icons/default/icons/oscilloscope.png b/icons/default/icons/oscilloscope.png
new file mode 100644
index 0000000000..4ebe20fe1c
Binary files /dev/null and b/icons/default/icons/oscilloscope.png differ
diff --git a/icons/default/icons/pattern_generator.png b/icons/default/icons/pattern_generator.png
new file mode 100644
index 0000000000..d2fe950127
Binary files /dev/null and b/icons/default/icons/pattern_generator.png differ
diff --git a/icons/default/icons/power_supply.png b/icons/default/icons/power_supply.png
new file mode 100644
index 0000000000..7c91f7154e
Binary files /dev/null and b/icons/default/icons/power_supply.png differ
diff --git a/icons/default/icons/signal_generator.png b/icons/default/icons/signal_generator.png
new file mode 100644
index 0000000000..dac4ac6763
Binary files /dev/null and b/icons/default/icons/signal_generator.png differ
diff --git a/icons/default/icons/spectrum_analyzer.png b/icons/default/icons/spectrum_analyzer.png
new file mode 100644
index 0000000000..2f92ed3691
Binary files /dev/null and b/icons/default/icons/spectrum_analyzer.png differ
diff --git a/icons/default/icons/voltmeter.png b/icons/default/icons/voltmeter.png
new file mode 100644
index 0000000000..6015d85ca1
Binary files /dev/null and b/icons/default/icons/voltmeter.png differ
diff --git a/icons/default/index.theme b/icons/default/index.theme
new file mode 100644
index 0000000000..ed952a2981
--- /dev/null
+++ b/icons/default/index.theme
@@ -0,0 +1,7 @@
+[Icon Theme]
+Name=default
+Comment=Default dark theme
+Directories=icons
+
+[icons]
+Size=16
diff --git a/icons/default/menu_button.png b/icons/default/menu_button.png
new file mode 100644
index 0000000000..a3e6421ffc
Binary files /dev/null and b/icons/default/menu_button.png differ
diff --git a/icons/default/options.png b/icons/default/options.png
new file mode 100644
index 0000000000..4a8c09f47f
Binary files /dev/null and b/icons/default/options.png differ
diff --git a/icons/default/scopy_title.png b/icons/default/scopy_title.png
new file mode 100644
index 0000000000..8db083727e
Binary files /dev/null and b/icons/default/scopy_title.png differ
diff --git a/icons/light/icons/Gear.png b/icons/light/icons/Gear.png
new file mode 100644
index 0000000000..883eaf6b33
Binary files /dev/null and b/icons/light/icons/Gear.png differ
diff --git a/icons/light/icons/Rectangle_6_copy_12.png b/icons/light/icons/Rectangle_6_copy_12.png
new file mode 100644
index 0000000000..9d65147e7f
Binary files /dev/null and b/icons/light/icons/Rectangle_6_copy_12.png differ
diff --git a/icons/light/icons/debugger.png b/icons/light/icons/debugger.png
new file mode 100644
index 0000000000..883eaf6b33
Binary files /dev/null and b/icons/light/icons/debugger.png differ
diff --git a/icons/light/icons/house.png b/icons/light/icons/house.png
new file mode 100644
index 0000000000..057044bf19
Binary files /dev/null and b/icons/light/icons/house.png differ
diff --git a/icons/light/icons/ic load.svg b/icons/light/icons/ic load.svg
new file mode 100644
index 0000000000..b1434ccc00
--- /dev/null
+++ b/icons/light/icons/ic load.svg
@@ -0,0 +1,16 @@
+
+
+
+ D53F0AF1-68DA-4E77-B3F5-3CA7CFEE268F
+ Created with sketchtool.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/icons/light/icons/ic save.svg b/icons/light/icons/ic save.svg
new file mode 100644
index 0000000000..0705ebcd89
--- /dev/null
+++ b/icons/light/icons/ic save.svg
@@ -0,0 +1,16 @@
+
+
+
+ E376C00B-4D9F-47A7-9492-0381FE96F84A
+ Created with sketchtool.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/icons/light/icons/ico info.png b/icons/light/icons/ico info.png
new file mode 100644
index 0000000000..5a223cc257
Binary files /dev/null and b/icons/light/icons/ico info.png differ
diff --git a/icons/light/icons/io.png b/icons/light/icons/io.png
new file mode 100644
index 0000000000..4359ab54c0
Binary files /dev/null and b/icons/light/icons/io.png differ
diff --git a/icons/light/icons/logic_analyzer.png b/icons/light/icons/logic_analyzer.png
new file mode 100644
index 0000000000..2e0a1be73b
Binary files /dev/null and b/icons/light/icons/logic_analyzer.png differ
diff --git a/icons/light/icons/logo analog.png b/icons/light/icons/logo analog.png
new file mode 100644
index 0000000000..398afd8b29
Binary files /dev/null and b/icons/light/icons/logo analog.png differ
diff --git a/icons/light/icons/logo.png b/icons/light/icons/logo.png
new file mode 100644
index 0000000000..bba9f1142b
Binary files /dev/null and b/icons/light/icons/logo.png differ
diff --git a/icons/light/icons/menu.png b/icons/light/icons/menu.png
new file mode 100644
index 0000000000..14d16820f9
Binary files /dev/null and b/icons/light/icons/menu.png differ
diff --git a/icons/light/icons/network_analyzer.png b/icons/light/icons/network_analyzer.png
new file mode 100644
index 0000000000..487c01b32d
Binary files /dev/null and b/icons/light/icons/network_analyzer.png differ
diff --git a/icons/light/icons/oscilloscope.png b/icons/light/icons/oscilloscope.png
new file mode 100644
index 0000000000..fccb8bd398
Binary files /dev/null and b/icons/light/icons/oscilloscope.png differ
diff --git a/icons/light/icons/pattern_generator.png b/icons/light/icons/pattern_generator.png
new file mode 100644
index 0000000000..d481ea5c26
Binary files /dev/null and b/icons/light/icons/pattern_generator.png differ
diff --git a/icons/light/icons/power_supply.png b/icons/light/icons/power_supply.png
new file mode 100644
index 0000000000..23cd1a6516
Binary files /dev/null and b/icons/light/icons/power_supply.png differ
diff --git a/icons/light/icons/signal_generator.png b/icons/light/icons/signal_generator.png
new file mode 100644
index 0000000000..f193f388a3
Binary files /dev/null and b/icons/light/icons/signal_generator.png differ
diff --git a/icons/light/icons/spectrum_analyzer.png b/icons/light/icons/spectrum_analyzer.png
new file mode 100644
index 0000000000..28e580336e
Binary files /dev/null and b/icons/light/icons/spectrum_analyzer.png differ
diff --git a/icons/light/icons/voltmeter.png b/icons/light/icons/voltmeter.png
new file mode 100644
index 0000000000..e4f8564353
Binary files /dev/null and b/icons/light/icons/voltmeter.png differ
diff --git a/icons/light/index.theme b/icons/light/index.theme
new file mode 100644
index 0000000000..6ebb89f8c0
--- /dev/null
+++ b/icons/light/index.theme
@@ -0,0 +1,8 @@
+[Icon Theme]
+Name=LightTheme
+Comment=An example icon theme
+
+[icons]
+Size=16
+Context=Actions
+Type=Fixed
diff --git a/iio-emu b/iio-emu
new file mode 160000
index 0000000000..710386fda8
--- /dev/null
+++ b/iio-emu
@@ -0,0 +1 @@
+Subproject commit 710386fda8daa5bbb3ffb6d4f214f014aa260f57
diff --git a/resources/about.html.cmakein b/resources/about.html.cmakein
new file mode 100644
index 0000000000..f918f3946b
--- /dev/null
+++ b/resources/about.html.cmakein
@@ -0,0 +1,14 @@
+
+Scopy, a multi-functional software toolset with strong capabilities for signal analysis.
+
+Scopy version: ${scopy_VERSION}-${SCOPY_VERSION_GIT}
+ Build info: here
+
+Copyright 2019-2020 Analog Devices and others. Scopy is made possible by the Scopy open source project and other open source software .
+
+Latest Release
+Documentation
+Support Forum
+
+
+
diff --git a/resources/aboutpage.qrc b/resources/aboutpage.qrc
new file mode 100644
index 0000000000..963dcd477a
--- /dev/null
+++ b/resources/aboutpage.qrc
@@ -0,0 +1,5 @@
+
+
+ @ABOUT_HTML_QRC_SOURCES@
+
+
diff --git a/resources/buildinfo.html.cmakein b/resources/buildinfo.html.cmakein
new file mode 100644
index 0000000000..637cf391fa
--- /dev/null
+++ b/resources/buildinfo.html.cmakein
@@ -0,0 +1,26 @@
+
+Scopy version: ${scopy_VERSION}-${SCOPY_VERSION_GIT}
+This Scopy version was built on ${TODAY} ${NOW}
+on machine: ${BUILD_HOST} by user: $ENV{USERNAME}
+
+Build machine is ${CMAKE_HOST_SYSTEM}
+Built using ${CMAKE_CXX_COMPILER} - ${CMAKE_CXX_COMPILER_VERSION}
+Compiler library architecture: ${CMAKE_CXX_LIBRARY_ARCHITECTURE}
+
+${APPVEYOR_INFO}
+
+This Scopy version uses the following library/tools versions:
+libboost: ${Boost_VERSION}
+libqt5: ${Qt5_VERSION}
+volk: ${Volk_VERSION}
+cmake: ${CMAKE_VERSION}
+gnuradio: ${Gnuradio_VERSION}
+python: ${PYTHON_VERSION_STRING}
+pythonlibs: ${PYTHONLIBS_VERSION_STRING}
+libsigrokdecode: ${LIBSIGROK_DECODE_VERSION}
+libm2k: ${libm2k_VERSION}-${libm2k_VERSION_GIT}
+
+Scopy dependencies info:
+${SCOPY_MINGW_BUILD_STATUS_INFO}
+
+
diff --git a/resources/credits.html.cmakein b/resources/credits.html.cmakein
new file mode 100644
index 0000000000..8894d3f9d3
--- /dev/null
+++ b/resources/credits.html.cmakein
@@ -0,0 +1,234 @@
+
+Scopy includes or is linked to a number of open source libraries, released under their own licenses.
+
+
+
+
+
+
+
diff --git a/resources/icons.qrc b/resources/icons.qrc
new file mode 100644
index 0000000000..b273f50eb3
--- /dev/null
+++ b/resources/icons.qrc
@@ -0,0 +1,209 @@
+
+
+ icons/default/ADALM2000.png
+ icons/default/ADALM2000Pinout.png
+ icons/default/add.svg
+ icons/default/adi.png
+ icons/default/face.png
+ icons/default/home.png
+ icons/default/ic adalm.png
+ icons/default/ic adalm.svg
+ icons/default/index.theme
+ icons/default/menu_button.png
+ icons/default/options.png
+ icons/default/scopy_title.png
+ icons/light/icons/debugger.png
+ icons/light/icons/Gear.png
+ icons/light/icons/house.png
+ icons/light/icons/ic load.svg
+ icons/light/icons/ic save.svg
+ icons/light/icons/ico info.png
+ icons/light/icons/io.png
+ icons/light/icons/logic_analyzer.png
+ icons/light/icons/logo analog.png
+ icons/light/icons/logo.png
+ icons/light/icons/menu.png
+ icons/light/icons/network_analyzer.png
+ icons/light/icons/oscilloscope.png
+ icons/light/icons/pattern_generator.png
+ icons/light/icons/power_supply.png
+ icons/light/icons/Rectangle_6_copy_12.png
+ icons/light/icons/signal_generator.png
+ icons/light/icons/spectrum_analyzer.png
+ icons/light/icons/voltmeter.png
+ icons/light/index.theme
+ icons/measurements/amplitude.svg
+ icons/measurements/area.svg
+ icons/measurements/cycle_area.svg
+ icons/measurements/cycle_mean.svg
+ icons/measurements/cycle_rms.svg
+ icons/measurements/fall_time.svg
+ icons/measurements/frequency.svg
+ icons/measurements/high.svg
+ icons/measurements/low.svg
+ icons/measurements/max.svg
+ icons/measurements/mean.svg
+ icons/measurements/middle.svg
+ icons/measurements/min.svg
+ icons/measurements/n_duty.svg
+ icons/measurements/n_overshoot.svg
+ icons/measurements/n_width.svg
+ icons/measurements/p_duty.svg
+ icons/measurements/p_overshoot.svg
+ icons/measurements/p_width.svg
+ icons/measurements/peak_to_peak.svg
+ icons/measurements/period.svg
+ icons/measurements/rise_time.svg
+ icons/measurements/rms.svg
+ icons/add-decoder.svg
+ icons/channels.svg
+ icons/close.svg
+ icons/close_hovered.svg
+ icons/configure.png
+ icons/decoder-delete.svg
+ icons/decoder-hidden.svg
+ icons/decoder-shown.svg
+ icons/dio100.svg
+ icons/dio101.svg
+ icons/dio101.svg1
+ icons/document-open.png
+ icons/document-save-as.png
+ icons/dots_on_plot.svg
+ icons/floppy.svg
+ icons/floppy_hover.svg
+ icons/gate_handle.svg
+ icons/gear_wheel.svg
+ icons/gear_wheel_hover.svg
+ icons/gear_wheel_pressed.svg
+ icons/h_cursor_handle.svg
+ icons/handle_down_arrow.svg
+ icons/handle_right_arrow.svg
+ icons/handle_up_arrow.svg
+ icons/house.png
+ icons/ic arrow down.svg
+ icons/ic arrow left.svg
+ icons/ic arrow right.svg
+ icons/ic arrow up.svg
+ icons/ic load.svg
+ icons/ic printer.svg
+ icons/ic save.svg
+ icons/ic-locked.svg
+ icons/ic-unlocked.svg
+ icons/ic_note_checked.svg
+ icons/ic_note_unchecked.svg
+ icons/ico-collapse.svg
+ icons/ico-expand.svg
+ icons/ico-oneshot.svg
+ icons/ico-play-green.svg
+ icons/ico-play.svg
+ icons/ico-stop.svg
+ icons/in-out-in.svg
+ icons/in-out-out.svg
+ icons/level_trigger_down.svg
+ icons/level_trigger_handle.svg
+ icons/level_trigger_up.svg
+ icons/lines_on_plot.svg
+ icons/redX.svg
+ icons/refresh.svg
+ icons/sba_cmb_box_arrow.svg
+ icons/sba_cmb_box_arrow_right.svg
+ icons/sba_dn_btn.svg
+ icons/sba_dn_btn_hover.svg
+ icons/sba_dn_btn_pressed.svg
+ icons/sba_up_btn.svg
+ icons/sba_up_btn_hover.svg
+ icons/sba_up_btn_pressed.svg
+ icons/setup3_checked.svg
+ icons/setup3_checked.xcf-setup3_checked.svg.svg
+ icons/setup3_checked.xcf.svg
+ icons/setup3_checked_hover.svg
+ icons/setup3_unchecked.svg
+ icons/setup3_unchecked_hover.svg
+ icons/setup_btn_checked.svg
+ icons/setup_btn_checked_hover.svg
+ icons/setup_btn_hover.svg
+ icons/setup_btn_unchecked.svg
+ icons/show-cursors.svg
+ icons/status-green.svg
+ icons/status-grey.svg
+ icons/status-red.svg
+ icons/time_trigger_handle.svg
+ icons/time_trigger_left.svg
+ icons/time_trigger_right.svg
+ icons/trigger_any_disabled.svg
+ icons/trigger_any_enabled.svg
+ icons/trigger_falling_disabled.svg
+ icons/trigger_falling_enabled.svg
+ icons/trigger_high_disabled.svg
+ icons/trigger_high_enabled.svg
+ icons/trigger_low_disabled.svg
+ icons/trigger_low_enabled.svg
+ icons/trigger_rising_disabled.svg
+ icons/trigger_rising_enabled.svg
+ icons/v_cursor_handle.svg
+ icons/zoom-fit.png
+ icons/zoom-in.png
+ icons/zoom-original.png
+ icons/zoom-out.png
+ menu/ADALM2000.png
+ menu/ADALM2000Pinout.png
+ menu/add.svg
+ menu/adi.png
+ menu/calibration.png
+ menu/debugger.png
+ menu/face.png
+ menu/home.png
+ menu/ic adalm.png
+ menu/ic adalm.svg
+ menu/io.png
+ menu/logic_analyzer.png
+ menu/menu_button.png
+ menu/network_analyzer.png
+ menu/options.png
+ menu/oscilloscope.png
+ menu/pattern_generator.png
+ menu/power_supply.png
+ menu/scopy_title.png
+ menu/signal_generator.png
+ menu/spectrum_analyzer.png
+ menu/voltmeter.png
+ stylesheets/bigCustomSwitch.qss
+ stylesheets/browser.qss
+ stylesheets/channel_widget.qss
+ stylesheets/customSwitch.qss
+ stylesheets/default.qss
+ stylesheets/dropdown_switch_list.qss
+ stylesheets/global.qss
+ stylesheets/smallOnOffSwitch.qss
+ stylesheets/spinbox_type_a.qss
+ stylesheets/stopButton.qss
+ stylesheets/toolMenuItem.qss
+ translations/scopy_ar.ts
+ translations/scopy_cn.ts
+ translations/scopy_de.ts
+ translations/scopy_en.ts
+ translations/scopy_es.ts
+ translations/scopy_fr.ts
+ translations/scopy_it.ts
+ translations/scopy_jp.ts
+ translations/scopy_kr.ts
+ translations/scopy_ro.ts
+ about.html.cmakein
+ aboutpage.qrc
+ buildinfo.html.cmakein
+ credits.html.cmakein
+ filter.json
+ icon.ico
+ icon_big.svg
+ icon_small.svg
+ icons.qrc
+ m2k.html
+ open-sans-regular.ttf
+ resources.qrc
+ scopy.desktop.cmakein
+ scopy.html
+ Scopy.icns
+ scopy_osp.html.cmakein
+ translations.qrc
+
+
diff --git a/resources/icons/scopy-default/icons/calibration.png b/resources/icons/scopy-default/icons/calibration.png
new file mode 100644
index 0000000000..3f9da51e08
Binary files /dev/null and b/resources/icons/scopy-default/icons/calibration.png differ
diff --git a/resources/icons/scopy-default/icons/debugger.png b/resources/icons/scopy-default/icons/debugger.png
new file mode 100644
index 0000000000..a8558bced9
Binary files /dev/null and b/resources/icons/scopy-default/icons/debugger.png differ
diff --git a/resources/icons/house.png b/resources/icons/scopy-default/icons/house.png
similarity index 100%
rename from resources/icons/house.png
rename to resources/icons/scopy-default/icons/house.png
diff --git a/resources/icons/scopy-default/icons/ico info.png b/resources/icons/scopy-default/icons/ico info.png
new file mode 100644
index 0000000000..fe6c06f811
Binary files /dev/null and b/resources/icons/scopy-default/icons/ico info.png differ
diff --git a/resources/icons/scopy-default/icons/io.png b/resources/icons/scopy-default/icons/io.png
new file mode 100644
index 0000000000..8c4ca65040
Binary files /dev/null and b/resources/icons/scopy-default/icons/io.png differ
diff --git a/resources/icons/scopy-default/icons/logic_analyzer.png b/resources/icons/scopy-default/icons/logic_analyzer.png
new file mode 100644
index 0000000000..a20ea400d6
Binary files /dev/null and b/resources/icons/scopy-default/icons/logic_analyzer.png differ
diff --git a/resources/icons/scopy-default/icons/network_analyzer.png b/resources/icons/scopy-default/icons/network_analyzer.png
new file mode 100644
index 0000000000..259686a2c3
Binary files /dev/null and b/resources/icons/scopy-default/icons/network_analyzer.png differ
diff --git a/resources/icons/scopy-default/icons/oscilloscope.png b/resources/icons/scopy-default/icons/oscilloscope.png
new file mode 100644
index 0000000000..4ebe20fe1c
Binary files /dev/null and b/resources/icons/scopy-default/icons/oscilloscope.png differ
diff --git a/resources/icons/scopy-default/icons/pattern_generator.png b/resources/icons/scopy-default/icons/pattern_generator.png
new file mode 100644
index 0000000000..d2fe950127
Binary files /dev/null and b/resources/icons/scopy-default/icons/pattern_generator.png differ
diff --git a/resources/icons/scopy-default/icons/power_supply.png b/resources/icons/scopy-default/icons/power_supply.png
new file mode 100644
index 0000000000..7c91f7154e
Binary files /dev/null and b/resources/icons/scopy-default/icons/power_supply.png differ
diff --git a/resources/icons/scopy-default/icons/signal_generator.png b/resources/icons/scopy-default/icons/signal_generator.png
new file mode 100644
index 0000000000..dac4ac6763
Binary files /dev/null and b/resources/icons/scopy-default/icons/signal_generator.png differ
diff --git a/resources/icons/scopy-default/icons/spectrum_analyzer.png b/resources/icons/scopy-default/icons/spectrum_analyzer.png
new file mode 100644
index 0000000000..2f92ed3691
Binary files /dev/null and b/resources/icons/scopy-default/icons/spectrum_analyzer.png differ
diff --git a/resources/icons/scopy-default/icons/voltmeter.png b/resources/icons/scopy-default/icons/voltmeter.png
new file mode 100644
index 0000000000..6015d85ca1
Binary files /dev/null and b/resources/icons/scopy-default/icons/voltmeter.png differ
diff --git a/resources/icons/scopy-default/index.theme b/resources/icons/scopy-default/index.theme
new file mode 100644
index 0000000000..46abccf93f
--- /dev/null
+++ b/resources/icons/scopy-default/index.theme
@@ -0,0 +1,8 @@
+[Icon Theme]
+Name=DefaultTheme
+Comment=Default dark theme
+
+Directories=icons
+
+[icons]
+Size=16
diff --git a/resources/icons/scopy-light/icons/Gear.png b/resources/icons/scopy-light/icons/Gear.png
new file mode 100644
index 0000000000..883eaf6b33
Binary files /dev/null and b/resources/icons/scopy-light/icons/Gear.png differ
diff --git a/resources/icons/scopy-light/icons/Gear.svg b/resources/icons/scopy-light/icons/Gear.svg
new file mode 100644
index 0000000000..398cc68734
--- /dev/null
+++ b/resources/icons/scopy-light/icons/Gear.svg
@@ -0,0 +1,11 @@
+
+
+
+ F6E21ED0-2276-4CD7-B3D4-285F7E40FB42
+ Created with sketchtool.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/debugger.png b/resources/icons/scopy-light/icons/debugger.png
new file mode 100644
index 0000000000..883eaf6b33
Binary files /dev/null and b/resources/icons/scopy-light/icons/debugger.png differ
diff --git a/resources/icons/scopy-light/icons/gear_wheel_hover.png b/resources/icons/scopy-light/icons/gear_wheel_hover.png
new file mode 100644
index 0000000000..cf5b50fb49
Binary files /dev/null and b/resources/icons/scopy-light/icons/gear_wheel_hover.png differ
diff --git a/resources/icons/scopy-light/icons/gear_wheel_pressed.svg b/resources/icons/scopy-light/icons/gear_wheel_pressed.svg
new file mode 100644
index 0000000000..dfc74ef190
--- /dev/null
+++ b/resources/icons/scopy-light/icons/gear_wheel_pressed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/house.png b/resources/icons/scopy-light/icons/house.png
new file mode 100644
index 0000000000..057044bf19
Binary files /dev/null and b/resources/icons/scopy-light/icons/house.png differ
diff --git a/resources/icons/scopy-light/icons/ic load.svg b/resources/icons/scopy-light/icons/ic load.svg
new file mode 100644
index 0000000000..b1434ccc00
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ic load.svg
@@ -0,0 +1,16 @@
+
+
+
+ D53F0AF1-68DA-4E77-B3F5-3CA7CFEE268F
+ Created with sketchtool.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/ic loadD.png b/resources/icons/scopy-light/icons/ic loadD.png
new file mode 100644
index 0000000000..5472ba654e
Binary files /dev/null and b/resources/icons/scopy-light/icons/ic loadD.png differ
diff --git a/resources/icons/scopy-light/icons/ic save.svg b/resources/icons/scopy-light/icons/ic save.svg
new file mode 100644
index 0000000000..0705ebcd89
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ic save.svg
@@ -0,0 +1,16 @@
+
+
+
+ E376C00B-4D9F-47A7-9492-0381FE96F84A
+ Created with sketchtool.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/ic saveD.png b/resources/icons/scopy-light/icons/ic saveD.png
new file mode 100644
index 0000000000..14740ca2eb
Binary files /dev/null and b/resources/icons/scopy-light/icons/ic saveD.png differ
diff --git a/resources/icons/scopy-light/icons/ic_note_checked.svg b/resources/icons/scopy-light/icons/ic_note_checked.svg
new file mode 100644
index 0000000000..3a386fda56
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ic_note_checked.svg
@@ -0,0 +1,12 @@
+
+
+
+ A8FEBD7D-95E8-4125-8AAF-B10795811545
+ Created with sketchtool.
+
+
+
+
+
+
+
diff --git a/resources/icons/scopy-light/icons/ic_note_unchecked.svg b/resources/icons/scopy-light/icons/ic_note_unchecked.svg
new file mode 100644
index 0000000000..7f04b373d7
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ic_note_unchecked.svg
@@ -0,0 +1,12 @@
+
+
+
+ DC6DF08B-A28D-4962-A0CB-9C15F196A791
+ Created with sketchtool.
+
+
+
+
+
+
+
diff --git a/resources/icons/scopy-light/icons/ico info.png b/resources/icons/scopy-light/icons/ico info.png
new file mode 100644
index 0000000000..5a223cc257
Binary files /dev/null and b/resources/icons/scopy-light/icons/ico info.png differ
diff --git a/resources/icons/scopy-light/icons/ico-play-green.svg b/resources/icons/scopy-light/icons/ico-play-green.svg
new file mode 100644
index 0000000000..4c00092506
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ico-play-green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/ico-stop.svg b/resources/icons/scopy-light/icons/ico-stop.svg
new file mode 100644
index 0000000000..fdca095ec6
--- /dev/null
+++ b/resources/icons/scopy-light/icons/ico-stop.svg
@@ -0,0 +1 @@
+
diff --git a/resources/icons/scopy-light/icons/io.png b/resources/icons/scopy-light/icons/io.png
new file mode 100644
index 0000000000..4359ab54c0
Binary files /dev/null and b/resources/icons/scopy-light/icons/io.png differ
diff --git a/resources/icons/scopy-light/icons/logic_analyzer.png b/resources/icons/scopy-light/icons/logic_analyzer.png
new file mode 100644
index 0000000000..2e0a1be73b
Binary files /dev/null and b/resources/icons/scopy-light/icons/logic_analyzer.png differ
diff --git a/resources/icons/scopy-light/icons/logo analog.png b/resources/icons/scopy-light/icons/logo analog.png
new file mode 100644
index 0000000000..398afd8b29
Binary files /dev/null and b/resources/icons/scopy-light/icons/logo analog.png differ
diff --git a/resources/icons/scopy-light/icons/logo.png b/resources/icons/scopy-light/icons/logo.png
new file mode 100644
index 0000000000..bba9f1142b
Binary files /dev/null and b/resources/icons/scopy-light/icons/logo.png differ
diff --git a/resources/icons/scopy-light/icons/menu.png b/resources/icons/scopy-light/icons/menu.png
new file mode 100644
index 0000000000..14d16820f9
Binary files /dev/null and b/resources/icons/scopy-light/icons/menu.png differ
diff --git a/resources/icons/scopy-light/icons/network_analyzer.png b/resources/icons/scopy-light/icons/network_analyzer.png
new file mode 100644
index 0000000000..487c01b32d
Binary files /dev/null and b/resources/icons/scopy-light/icons/network_analyzer.png differ
diff --git a/resources/icons/scopy-light/icons/oscilloscope.png b/resources/icons/scopy-light/icons/oscilloscope.png
new file mode 100644
index 0000000000..0d32cae2d9
Binary files /dev/null and b/resources/icons/scopy-light/icons/oscilloscope.png differ
diff --git a/resources/icons/scopy-light/icons/pattern_generator.png b/resources/icons/scopy-light/icons/pattern_generator.png
new file mode 100644
index 0000000000..d481ea5c26
Binary files /dev/null and b/resources/icons/scopy-light/icons/pattern_generator.png differ
diff --git a/resources/icons/scopy-light/icons/power_supply.png b/resources/icons/scopy-light/icons/power_supply.png
new file mode 100644
index 0000000000..23cd1a6516
Binary files /dev/null and b/resources/icons/scopy-light/icons/power_supply.png differ
diff --git a/resources/icons/scopy-light/icons/sba_cmb_box_arrow.svg b/resources/icons/scopy-light/icons/sba_cmb_box_arrow.svg
new file mode 100644
index 0000000000..3782071b1f
--- /dev/null
+++ b/resources/icons/scopy-light/icons/sba_cmb_box_arrow.svg
@@ -0,0 +1 @@
+
diff --git a/resources/icons/scopy-light/icons/sba_cmb_box_arrow_right.svg b/resources/icons/scopy-light/icons/sba_cmb_box_arrow_right.svg
new file mode 100644
index 0000000000..968fd7fb77
--- /dev/null
+++ b/resources/icons/scopy-light/icons/sba_cmb_box_arrow_right.svg
@@ -0,0 +1,9 @@
+
+
+ CFAC343D-103A-4674-8E8F-56E5FD84F30A
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/setup3_checked_hover.svg b/resources/icons/scopy-light/icons/setup3_checked_hover.svg
new file mode 100644
index 0000000000..993e4c6667
--- /dev/null
+++ b/resources/icons/scopy-light/icons/setup3_checked_hover.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+image/svg+xml
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/icons/scopy-light/icons/setup3_unchecked.png b/resources/icons/scopy-light/icons/setup3_unchecked.png
new file mode 100644
index 0000000000..efa13c967d
Binary files /dev/null and b/resources/icons/scopy-light/icons/setup3_unchecked.png differ
diff --git a/resources/icons/scopy-light/icons/setup3_unchecked_hover.png b/resources/icons/scopy-light/icons/setup3_unchecked_hover.png
new file mode 100644
index 0000000000..a78d93d548
Binary files /dev/null and b/resources/icons/scopy-light/icons/setup3_unchecked_hover.png differ
diff --git a/resources/icons/scopy-light/icons/signal_generator.png b/resources/icons/scopy-light/icons/signal_generator.png
new file mode 100644
index 0000000000..f193f388a3
Binary files /dev/null and b/resources/icons/scopy-light/icons/signal_generator.png differ
diff --git a/resources/icons/scopy-light/icons/spectrum_analyzer.png b/resources/icons/scopy-light/icons/spectrum_analyzer.png
new file mode 100644
index 0000000000..28e580336e
Binary files /dev/null and b/resources/icons/scopy-light/icons/spectrum_analyzer.png differ
diff --git a/resources/icons/scopy-light/icons/voltmeter.png b/resources/icons/scopy-light/icons/voltmeter.png
new file mode 100644
index 0000000000..e4f8564353
Binary files /dev/null and b/resources/icons/scopy-light/icons/voltmeter.png differ
diff --git a/resources/icons/scopy-light/index.theme b/resources/icons/scopy-light/index.theme
new file mode 100644
index 0000000000..6ebb89f8c0
--- /dev/null
+++ b/resources/icons/scopy-light/index.theme
@@ -0,0 +1,8 @@
+[Icon Theme]
+Name=LightTheme
+Comment=An example icon theme
+
+[icons]
+Size=16
+Context=Actions
+Type=Fixed
diff --git a/resources/resources.qrc b/resources/resources.qrc
index dc1045bc10..240c19c0e3 100644
--- a/resources/resources.qrc
+++ b/resources/resources.qrc
@@ -127,7 +127,6 @@
icons/ic arrow left.svg
icons/ic arrow right.svg
icons/ic arrow up.svg
- icons/house.png
icons/ic_note_checked.svg
icons/ic_note_unchecked.svg
m2k.html
@@ -136,9 +135,91 @@
icons/gate_handle.svg
icons/refresh.svg
open-sans-regular.ttf
+ icons/dio101.svg1
+ icons/setup3_checked.xcf-setup3_checked.svg.svg
+ icons/setup3_checked.xcf.svg
+ icons/zoom-out.png
+ stylesheets/bigCustomSwitch.qss
+ stylesheets/browser.qss
+ stylesheets/channel_widget.qss
+ stylesheets/customSwitch.qss
+ stylesheets/dropdown_switch_list.qss
+ stylesheets/light.qss
+ stylesheets/smallOnOffSwitch.qss
+ stylesheets/spinbox_type_a.qss
+ stylesheets/stopButton.qss
+ stylesheets/toolMenuItem.qss
+ translations/scopy_ar.ts
+ translations/scopy_cn.ts
+ translations/scopy_de.ts
+ translations/scopy_en.ts
+ translations/scopy_es.ts
+ translations/scopy_fr.ts
+ translations/scopy_it.ts
+ translations/scopy_jp.ts
+ translations/scopy_kr.ts
+ translations/scopy_ro.ts
+ about.html.cmakein
+ aboutpage.qrc
+ buildinfo.html.cmakein
+ credits.html.cmakein
+ icon_big.svg
+ icon_small.svg
+ resources.qrc
+ scopy.desktop.cmakein
+ Scopy.icns
+ scopy_osp.html.cmakein
+ translations.qrc
+ stylesheets/default.qss
+ icons/scopy-default/index.theme
+ icons/scopy-default/icons/oscilloscope.png
+ icons/scopy-default/icons/calibration.png
+ icons/scopy-default/icons/debugger.png
+ icons/scopy-default/icons/io.png
+ icons/scopy-default/icons/logic_analyzer.png
+ icons/scopy-default/icons/network_analyzer.png
+ icons/scopy-default/icons/pattern_generator.png
+ icons/scopy-default/icons/power_supply.png
+ icons/scopy-default/icons/signal_generator.png
+ icons/scopy-default/icons/spectrum_analyzer.png
+ icons/scopy-default/icons/voltmeter.png
+ icons/scopy-light/index.theme
+ icons/scopy-light/icons/debugger.png
+ icons/scopy-light/icons/house.png
+ icons/scopy-light/icons/ic load.svg
+ icons/scopy-light/icons/ico info.png
+ icons/scopy-light/icons/ic save.svg
+ icons/scopy-light/icons/io.png
+ icons/scopy-light/icons/logic_analyzer.png
+ icons/scopy-light/icons/logo.png
+ icons/scopy-light/icons/logo analog.png
+ icons/scopy-light/icons/menu.png
+ icons/scopy-light/icons/network_analyzer.png
+ icons/scopy-light/icons/oscilloscope.png
+ icons/scopy-light/icons/pattern_generator.png
+ icons/scopy-light/icons/power_supply.png
+ icons/scopy-light/icons/signal_generator.png
+ icons/scopy-light/icons/spectrum_analyzer.png
+ icons/scopy-light/icons/voltmeter.png
+ icons/scopy-light/icons/gear_wheel_pressed.svg
+ icons/scopy-light/icons/sba_cmb_box_arrow.svg
+ icons/scopy-light/icons/sba_cmb_box_arrow_right.svg
+ icons/scopy-light/icons/setup3_checked_hover.svg
+ icons/scopy-light/icons/ico-play-green.svg
+ icons/scopy-light/icons/ico-stop.svg
+ icons/scopy-light/icons/Gear.svg
+ icons/scopy-light/icons/Gear.png
+ icons/scopy-light/icons/gear_wheel_hover.png
+ icons/scopy-light/icons/setup3_unchecked.png
+ icons/scopy-light/icons/setup3_unchecked_hover.png
+ icons/scopy-default/icons/house.png
+ icons/scopy-light/icons/ic loadD.png
+ icons/scopy-light/icons/ic saveD.png
+ icons/scopy-light/icons/ic_note_checked.svg
+ icons/scopy-light/icons/ic_note_unchecked.svg
+ icons/scopy-default/icons/ico info.png
- stylesheets/global.qss
stylesheets/spinbox_type_a.qss
stylesheets/dropdown_switch_list.qss
stylesheets/customSwitch.qss
@@ -146,5 +227,8 @@
stylesheets/bigCustomSwitch.qss
stylesheets/toolMenuItem.qss
stylesheets/stopButton.qss
+ stylesheets/browser.qss
+ stylesheets/channel_widget.qss
+ stylesheets/default.qss
diff --git a/resources/scopy.html b/resources/scopy.html
index a1c79fe1a3..43bce635a5 100644
--- a/resources/scopy.html
+++ b/resources/scopy.html
@@ -2,7 +2,7 @@
-
+
diff --git a/resources/scopy_osp.html.cmakein b/resources/scopy_osp.html.cmakein
new file mode 100644
index 0000000000..ec0a28b54d
--- /dev/null
+++ b/resources/scopy_osp.html.cmakein
@@ -0,0 +1,20 @@
+
+Scopy is released under GPLv3 .
+
+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 https://www.gnu.org/licenses/ .
+You may obtain the complete corresponding Source code from us for a period of three years after our last shipment of this product, which will be no earlier than three years past ${TODAY} by sending a money order or check for 100 (RON) to:
+
+Analog Devices Inc.
+Systems Development Group
+GPL Compliance
+Attention: Adrian Suciu
+
+TEODOR MIHALI 64,
+CLUJ-NAPOCA, CLUJ,
+400591
+ROMANIA
+
+
+Please write Source for Scopy in the memo line of your payment. Since the source does not fit on a DVD-RW, it will be delivered on a USB Thumb drive (hence the higher cost than just DVD or CD).
+You will also find the source on-line, and are encouraged to obtain it for zero cost, at the project web sites.
+
diff --git a/resources/stylesheets/browser.qss b/resources/stylesheets/browser.qss
new file mode 100644
index 0000000000..0554f8b642
--- /dev/null
+++ b/resources/stylesheets/browser.qss
@@ -0,0 +1,2 @@
+body {color: rgba(255,255,255,150);}
+a {color: white; }
diff --git a/resources/stylesheets/channel_widget.qss b/resources/stylesheets/channel_widget.qss
new file mode 100644
index 0000000000..e85a5d2537
--- /dev/null
+++ b/resources/stylesheets/channel_widget.qss
@@ -0,0 +1,82 @@
+QWidget {
+ color: rgba(0, 0, 0, 170);
+
+ border-width: 0px;
+ border-radius: 6px;
+}
+
+/* Widget containing box, name, btn */
+QWidget#widget {
+ background-color: transparent;
+ border-radius: 4px;
+}
+QWidget#widget[selected=true] {
+ background-color: rbga(0, 0, 0, 40);
+}
+
+/* Round check box */
+QCheckBox#box{
+ spacing: 0px;
+ background-color: none;
+ font-size: 14px;
+ font-weight: bold;
+}
+QCheckBox#box::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+ border-radius: 9px;
+}
+QCheckBox#box::indicator:unchecked {
+ background-color: transparent;
+}
+QCheckBox#box::indicator:checked {
+ background-color: #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
+
+/* Name */
+QPushButton#name {
+ font-size: 14px;
+ font-weight: bold;
+ background-color: none;
+}
+
+/* Delete Button */
+QPushButton#delBtn {
+ width: 24px;
+ height: 24px;
+ background-color: transparent;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-image: url(:/icons/redX.svg);
+}
+QPushButton#delBtn::hover {
+ background-image: url(:/icons/redX.svg);
+}
+
+/* Menu button */
+QPushButton#btn {
+ width: 40px;
+ height: 20px;
+ background-color: transparent;
+}
+QPushButton#btn:pressed {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+QPushButton#btn:!pressed {
+ border-image: url(:/icons/setup_btn_unchecked.svg)
+}
+QPushButton#btn:hover:!pressed:!checked {
+ border-image: url(:/icons/setup_btn_hover.svg)
+}
+QPushButton#btn:checked {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+
+/* Underline */
+QFrame#line {
+ border: 2px solid transparent;
+}
+QFrame#line[selected=true] {
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
diff --git a/resources/stylesheets/default.qss b/resources/stylesheets/default.qss
new file mode 100644
index 0000000000..1ac70060d6
--- /dev/null
+++ b/resources/stylesheets/default.qss
@@ -0,0 +1,878 @@
+/* Default background color */
+QMainWindow > .QWidget, adiscope--Sismograph > QwtPlotCanvas, QMessageBox, QToolTip {
+ background-color: #272730;
+}
+
+/* Default settings for QWidget and its sub-classes */
+QWidget {
+ background-color: transparent;
+ color: #bebebe;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 13px;
+}
+
+QToolTip {
+ padding: 6px;
+ border: 1px solid rgba(149, 152, 154, 150);
+ color: white;
+}
+
+QLabel {
+ color: rgba(255, 255, 255, 150);
+ font-size: 13px;
+ font-style: normal;
+ font-weight: normal;
+ text-align: left;
+}
+
+QLabel:disabled, QRadioButton:disabled {color: rgba(255, 255, 255, 80); }
+
+QLabel[invalid=true] { color: red; }
+
+QLabel[valid=true] { color: rgba(255, 255, 255, 150) }
+
+QTextBrowser { background-color: rgba(0, 0, 0, 150); }
+
+/* Apply a gradient to the MenuAnim widgets */
+adiscope--MenuAnim, adiscope--DMM #widget_2, .adiscope--PowerController #rightMenu {
+ background-color: qlineargradient(spread:pad, x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(0, 0, 0, 40), stop: 0.15 transparent, stop: 0.85 transparent, stop: 1.0 rgba(0, 0, 0, 40));
+}
+
+/* Except for the tool launcher's MenuAnim */
+QMainWindow > .QWidget > .adiscope--MenuAnim { background-color: none; }
+
+QwtPlot, QwtPolarPlot, pv--view--Viewport, QWidget[plot_container=true]{
+ background-color: black;
+}
+
+/* QwtPlot should have a black background, except the sismographs */
+adiscope--Sismograph { background-color: transparent; }
+
+QwtPlotCanvas { background-color: #141416; }
+
+QwtPolarCanvas { background-color: none; }
+
+QwtScaleWidget { color: rgba(255, 255, 255, 180); }
+
+QwtThermo {
+ color: #999999;
+ font-size: 26px;
+}
+
+adiscope--BufferPreviewer {
+ border: 1px solid #7092be;
+ alternate-background-color: #4a64ff;
+ selection-background-color: #141416;
+ selection-color: #ff7200;
+ color: white;
+}
+
+QDial {
+ background-color: black;
+ color: #4963ff;
+}
+
+QTabWidget::tab-bar { left: 0; }
+
+QTabWidget::pane { border-top: 0px; }
+
+QTabBar::tab {
+ min-width: 100px;
+ min-height: 32px;
+ padding-bottom: 5px;
+ font: normal;
+}
+
+QTabBar::tab:selected {
+ color: white;
+ border-bottom: 2px solid #f36d0a;
+ margin-top: 0px;
+}
+
+QTabBar::tab:!selected {
+ border-bottom: 2px solid #373740;
+}
+
+QRadioButton {
+ color: white;
+ spacing: 12px;
+}
+
+QRadioButton::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid;
+ border-radius: 9px;
+ border-color: #4963FF;
+}
+
+QRadioButton::indicator:checked { background-color: #4963FF; }
+
+QRadioButton::indicator:disabled { border-color: #555555; }
+
+QRadioButton::indicator:checked:disabled { background-color: #555555; }
+
+QLineEdit {
+ color: white;
+ font-size: 16px;
+ border: 0px solid gray;
+ border-bottom: 1px solid rgba(255, 255, 255, 102);
+ padding: 2px;
+}
+
+QLineEdit[valid=true]{ color: white; }
+QLineEdit[invalid=true]{ color: red; }
+
+QComboBox {
+ height: 24px;
+ border: none;
+ font-size: 14px;
+
+ border-bottom: 1px solid rgba(255, 255, 255, 102);
+ padding-bottom: 4px;
+}
+
+QComboBox:disabled, QLineEdit:disabled { color: #555555; }
+
+QComboBox QAbstractItemView {
+ border: none;
+ background-color: #1b1b21;
+ text-align: left;
+ color: #bebebe;
+ outline: none;
+
+ border-bottom: 1px solid #bebebe;
+ border-top: 1px solid #bebebe;
+}
+
+/* This only works on Windows */
+QComboBox QAbstractItemView {
+ selection-background-color: #272730;
+}
+
+/* This does not work on Windows */
+QComboBox::item:selected {
+ font-weight: bold;
+ font-size: 18px;
+ border-bottom: 0px solid none;
+ background-color: #272730;
+}
+
+QComboBox::drop-down {
+ subcontrol-position: center right;
+ border-image: url(:/icons/sba_cmb_box_arrow.svg);
+ width: 10px;
+ height: 6px;
+ font-size: 16px;
+ text-align: left;
+}
+
+QComboBox::indicator {
+ background-color: transparent;
+ selection-background-color: transparent;
+ color: transparent;
+ selection-color: transparent;
+}
+
+QMessageBox QLabel {
+ height: 420px;
+ width: 680px;
+ color: rgba(255,255,255,240);
+ font-size: 14px;
+ font: bold;
+}
+
+QMessageBox QPushButton {
+ height: 20px;
+ width: 120px;
+ background-color: #4a64ff;
+ color: white;
+ font-size: 16px;
+ font: bold;
+ border-radius: 5px;
+ border-color: #4a64ff;
+ border-style: solid;
+ border-width: 1px;
+}
+
+QAbstractSpinBox {
+ height: 45px;
+ font-size: 16px;
+ font-weight: bold;
+ border-bottom: 1px solid rgba(255, 255, 255, 102);
+}
+
+QAbstractSpinBox::up-button, QAbstractSpinBox::down-button {
+ height: 20px;
+ width: 20px;
+}
+
+QAbstractSpinBox::up-button { border-image: url(:/icons/sba_up_btn.svg); }
+
+QAbstractSpinBox::up-button:hover { border-image: url(:/icons/sba_up_btn_hover.svg); }
+
+QAbstractSpinBox::up-button:pressed { border-image: url(:/icons/sba_up_btn_pressed.svg); }
+
+QAbstractSpinBox::down-button { border-image: url(:/icons/sba_dn_btn.svg); }
+
+QAbstractSpinBox::down-button:hover { border-image: url(:/icons/sba_dn_btn_hover.svg); }
+
+QAbstractSpinBox::down-button:pressed { border-image: url(:/icons/sba_dn_btn_pressed.svg); }
+
+QGroupBox {
+ border: 2px solid rgba(255, 255, 255, 40);
+ border-radius: 8px;
+ color: rgba(255, 255, 255, 40);
+ font-size: 16px;
+ font-weight: bold;
+ margin-top: 9px;
+ padding-top: 5px;
+}
+
+QGroupBox::title {
+ subcontrol-origin: margin;
+ subcontrol-position: top left; /* position at the top center */
+}
+
+QScrollBar:vertical {
+ background: #262628;
+ max-width: 8px;
+}
+
+QScrollBar::handle:vertical {
+ background: #404040;
+ border: 0;
+ border-radius: 3px;
+}
+QScrollBar::handle:vertical:hover {
+ background: #4a4a4b;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; }
+
+QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
+ border: none;
+ background: none;
+}
+
+QScrollBar:horizontal {
+ background: #262628;
+ max-height: 6px;
+ border-radius: 3px;
+}
+
+QScrollBar::handle:horizontal {
+ background: #404040;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::handle:horizontal:hover {
+ background: #4a4a4b;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { background: none; }
+
+QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
+ border: none;
+ background: none;
+}
+
+QDialog { background-color: #1b1b21; }
+
+ScopyAboutDialog QPushButton{
+ background-color: #4a64ff;
+ color: #ffffff;
+}
+
+QTextBrowser#aboutTextBrowser{
+ background-color: transparent;
+ link-color: yellow;
+ selection-color: yellow;
+ color: white;
+}
+
+/* Label, line and arrow button dividers between sections */
+
+QLabel[subsection_label=true]{
+ font-size: 12px;
+ color: rgba(255, 255, 255, 70);
+}
+
+QFrame[subsection_line=true]{ border: 1px solid rgba(255, 255, 255, 70); }
+
+QPushButton[subsection_arrow_button=true]{
+ max-height: 6px;
+ max-width: 10px;
+ border-image: url(:/icons/sba_cmb_box_arrow.svg);
+}
+
+QPushButton[subsection_arrow_button=true]:checked{
+ max-height: 10px;
+ max-width: 6px;
+ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
+}
+
+
+/* Label associated with settings menu, right above a blue line divider */
+
+QLabel[general_settings_label=true]{
+ color: white;
+ font-size: 14px;
+ font-weight: normal;
+}
+
+/* Blue line divider */
+
+QFrame[blue_line=true]{ border: 2px solid #4A64FF; }
+
+
+/* General style for blue buttons */
+
+QPushButton[blue_button=true]{
+ background-color: #4a64ff;
+ color: #ffffff;
+ border-radius: 4px;
+ font-size: 14px;
+}
+
+QPushButton[blue_button=true]:pressed{ background-color: #2a44df; }
+
+QPushButton[blue_button=true]:hover{ background-color: #4a34ff; }
+
+QPushButton[blue_button=true]:disabled { background-color: grey; }
+
+/* Info button for each tool */
+
+QPushButton[info_button=true]{
+ min-height: 40px;
+ max-height: 40px;
+ min-width: 40px;
+ max-width: 40px;
+ background-color: transparent;
+ border-radius: 4px;
+}
+
+QPushButton[info_button=true]:hover { background-color: rgba(0, 0, 0, 60); }
+
+
+/* Menu title label */
+
+QLabel[menu_title_label=true]{
+ color: white;
+ font-weight: normal;
+ font-size: 14px;
+}
+
+
+/* Style for all SpinBoxes */
+
+QSpinBox{
+ color: white;
+ border: 0px;
+ border-bottom: 1px solid rgba(255, 255, 255, 100);
+}
+
+
+QCheckBox {
+ spacing: 8px;
+ background-color: transparent;
+ font-size: 14px;
+ font-weight: bold;
+ color: rgba(255, 255, 255, 153);
+}
+
+QCheckBox::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid rgb(74,100,255);
+ border-radius: 4px;
+}
+
+QCheckBox::indicator:unchecked { background-color: transparent; }
+QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
+
+
+QSlider::groove {
+ border: 1px solid #444444;
+ height: 2px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
+ background: #999999;
+ margin: 2px 0;
+ border-radius: 2px;
+}
+
+QSlider::handle {
+ background: rgb(73, 99, 255);
+ border: 0px solid;
+ width: 18px;
+ margin: -8px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ border-radius: 8px;
+}
+
+QSlider::handle:disabled { background: #444444; }
+
+QSlider::sub-page:horizontal { background: #4A64FF; }
+
+
+/* Style for settings and general settings buttons from all menus */
+
+QPushButton[menu_icon_button=true] {
+ min-height: 40px;
+ max-height: 40px;
+ min-width: 60px;
+ max-width: 60px;
+ padding-top:5px
+}
+
+QPushButton[menu_icon_button=true]:checked { border-top: 1px solid rgba(255,255,255,150); }
+
+QPushButton[menu_icon_button=true]:!checked { border-top: 1px solid rgba(255,255,255,0); }
+
+QPushButton[menu_icon_button=true]:!checked:hover { border-top: 1px solid rgba(255,255,255,0); }
+
+QPushButton[menu_icon_button=true]:checked:hover { border-top: 1px solid rgba(255,255,255,200); }
+
+
+/* Style for all Tool launcher buttons, such as Home, Menu, Preferences, Load, Save, Notes, etc. */
+
+QPushButton[tool_launcher_custom_widget=true] {
+ text-align:left;
+ border: none;
+ background-color: none;
+}
+
+.QWidget[tool_launcher_custom_widget=true]:hover {
+ background-color: rgba(0, 0, 0, 60);
+ border: 1px solid rgba(0, 0, 0, 30);
+ border-radius:5px;
+}
+
+QWidget[tool_launcher_custom_widget=true][selected=true] {
+ background-color: rgba(0, 0, 0, 60);
+ border: 1px solid rgba(0, 0, 0, 30);
+ border-radius:5px;
+}
+
+
+/* Style for icon-buttons such as Device, Home, Plus, etc. */
+
+QWidget[menu_button=true][selected=true] {
+ opacity: 0.6;
+ border-radius: 4px;
+ background-color: #141416;
+}
+
+QWidget[menu_button=true][selected=false] { background-color: transparent; }
+
+
+/* Styles for DigitalIO widgets */
+
+QWidget#page {
+ border-radius: 12px;
+ background-color: rgba(0, 0, 0, 80);
+}
+
+QWidget#stackedWidgetPage1 {
+ border-radius: 12px;
+ background-color: #141416;
+}
+
+
+/* Background color for info page */
+
+.adiscope--StackedHomepage#stackedWidget{ background-color: black; }
+
+
+/* Style for all line separators */
+
+QFrame[line_separator=true]{ background-color: rgba(255, 255, 255, 16); }
+
+
+/* Background color for Voltmeter and Power Supply */
+
+.adiscope--PowerController #leftPanel, .adiscope--DMM #leftPanel{
+ background-color: rgba(0, 0, 0, 40);
+}
+
+
+/* Gradient background for all instruments */
+
+.adiscope--Oscilloscope #mainWidget, .adiscope--SpectrumAnalyzer #mainWidget,
+.adiscope--NetworkAnalyzer #mainWidget, .adiscope--SignalGenerator #mainWidget,
+.adiscope--logic--LogicAnalyzer #mainWidget, .adiscope--logic--PatternGenerator #mainWidget,
+.adiscope--DigitalIO #widget, .adiscope--DMM #hLayout_top_btn_area_voltmeter, .adiscope--PowerController #hWidget_top_area {
+ background-color: qlineargradient(spread:pad, x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 rgba(0, 0, 0, 40), stop: 0.1 transparent, stop: 1.0 transparent);
+}
+
+/* Remove inherited gradient from the export setting of the Oscilloscope */
+
+.adiscope--ExportSettings #mainWidget, .adiscope--ImportSettings #mainWidget {
+ background-color: none;
+}
+
+adiscope--CursorReadouts {
+ background-color: black;
+}
+
+QWidget[scopy_logo=true]{
+ background-image: url(:/menu/scopy_title.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QPushButton[menu_icon=true]{
+ background-image: url(:/menu/menu_button.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QWidget[adi_logo=true]{
+ background-image: url(:/menu/adi.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+ min-width: 104px;
+ min-height: 30px;
+}
+
+QPushButton[save_logo=true]{
+ background-image: url(:/icons/ic save.svg);
+ background-repeat: no-repeat;
+}
+
+QPushButton[load_logo=true]{
+ background-image: url(:/icons/ic load.svg);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QPushButton[preferences_icon=true]{
+ background-image: url(:/menu/debugger.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+ qproperty-text: "Preferences";
+ text-align: center;
+}
+
+QPushButton[general_settings_icon=true]:checked {
+ image: url(:/icons/gear_wheel_pressed.svg);
+}
+
+QPushButton[general_settings_icon=true]:!checked {
+ image: url(:/icons/gear_wheel.svg);
+}
+
+
+QPushButton[general_settings_icon=true]:!checked:hover {
+ image: url(:/icons/gear_wheel_hover.svg);
+}
+
+QPushButton[general_settings_icon=true]:checked:hover {
+ image: url(:/icons/gear_wheel_pressed.svg);
+}
+
+QPushButton[settings_icon=true]:checked {
+ image: url(:/icons/setup3_checked_hover.svg);
+}
+
+QPushButton[settings_icon=true]:!checked {
+ image: url(:/icons/setup3_unchecked.svg);
+}
+
+QPushButton[settings_icon=true]:!checked:hover {
+ image: url(:/icons/setup3_unchecked_hover.svg);
+}
+
+QPushButton[settings_icon=true]:checked:hover {
+ image: url(:/icons/setup3_checked_hover.svg);
+}
+
+QHeaderView::section {
+ background-color: transparent;
+}
+
+QHeaderView::section:checked {
+ background-color: transparent;
+}
+
+/*************************************************************/
+
+
+
+/************************** Channel widget **************************/
+
+adiscope--ChannelWidget QWidget {
+ color: rgba(255, 255, 255, 153);
+
+ border-width: 0px;
+ border-radius: 6px;
+}
+
+/* Widget containing box, name, btn */
+
+adiscope--ChannelWidget QWidget#widget {
+ background-color: transparent;
+ border-radius: 4px;
+}
+adiscope--ChannelWidget QWidget#widget[selected=true] {
+ background-color: rbga(20, 20, 22, 153);
+}
+
+/* Round check box */
+adiscope--ChannelWidget QCheckBox#box{
+ spacing: 0px;
+ background-color: none;
+ font-size: 14px;
+ font-weight: bold;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+ border-radius: 9px;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator:unchecked {
+ background-color: transparent;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator:checked {
+ background-color: #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
+
+/* Name */
+adiscope--ChannelWidget QPushButton#name {
+ font-size: 14px;
+ font-weight: bold;
+ background-color: none;
+}
+
+/* Delete Button */
+adiscope--ChannelWidget QPushButton#delBtn {
+ width: 24px;
+ height: 24px;
+ background-color: transparent;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-image: url(:/icons/redX.svg);
+}
+adiscope--ChannelWidget QPushButton#delBtn::hover {
+ background-image: url(:/icons/redX.svg);
+}
+
+/* Menu button */
+adiscope--ChannelWidget QPushButton#btn {
+ width: 40px;
+ height: 20px;
+ background-color: transparent;
+}
+adiscope--ChannelWidget QPushButton#btn:pressed {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:!pressed {
+ border-image: url(:/icons/setup_btn_unchecked.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:hover:!pressed:!checked {
+ border-image: url(:/icons/setup_btn_hover.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:checked {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+
+/* Underline */
+adiscope--ChannelWidget QFrame#line {
+ border: 2px solid transparent;
+}
+adiscope--ChannelWidget QFrame#line[selected=true] {
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
+
+/*************************************************************/
+
+
+
+/******************** Dropdown switch list ************************/
+
+adiscope--DropdownSwitchList {
+ height: 30px;
+ border: 0px;
+ font-size: 18px;
+ border-radius: 4px;
+ padding-left: 20px;
+}
+
+adiscope--DropdownSwitchList:editable{
+ background-color: #141416;
+ color: white;
+}
+
+adiscope--DropdownSwitchList::drop-down {
+ subcontrol-position: center right;
+ width: 10px;
+ height: 6px;
+ border-image: url(:/icons/sba_cmb_box_arrow.svg);
+ margin-right: 20px;
+}
+
+adiscope--DropdownSwitchList QAbstractItemView {
+ border: 0px;
+ background-color: #141416;
+ font-size: 18px;
+ outline: 0px;
+
+ /* Add left space. Color should match background-color*/
+ border-left: 0px solid #141416; /* setting to 0 for now */
+}
+
+adiscope--DropdownSwitchList QAbstractItemView::item {
+ color: #ffffff;
+ height: 60px;
+}
+
+adiscope--DropdownSwitchList QAbstractItemView::item:hover {
+ background-color: #141416;
+ font-weight: bold;
+ border-bottom: 0px solid none;
+}
+
+adiscope--DropdownSwitchList QHeaderView {
+ /* Cancel the effect of the QAbstractItemView border-left property. It's
+ necessary because the border (or padding) of the QAbstractItemView applies to
+ this element as well. */
+ padding-left: -0px;
+}
+
+adiscope--DropdownSwitchList QHeaderView:section {
+ color: rgba(255, 255, 255, 153);
+ background-color: #141416;
+ border: 0px;
+ font: 14px;
+}
+
+adiscope--DropdownSwitchList QCheckBox {
+ background-color: #141416;
+}
+
+adiscope--DropdownSwitchList QCheckBox::indicator {
+ width: 16px;
+ height: 16px;
+ subcontrol-position: center;
+}
+
+/*************************************************************/
+
+
+
+/************************* SpinBoxes *************************/
+
+adiscope--SpinBoxA QPushButton#SBA_UpButton {
+ width: 30px;
+ height: 30px;
+ border-image: url(:/icons/sba_up_btn.svg);
+ border: 0px;
+}
+
+adiscope--SpinBoxA QPushButton#SBA_UpButton:pressed {
+ border-image: url(:/icons/sba_up_btn_pressed.svg);
+}
+adiscope--SpinBoxA QPushButton#SBA_UpButton:hover:!pressed {
+ border-image: url(:/icons/sba_up_btn_hover.svg);
+}
+
+adiscope--SpinBoxA QPushButton#SBA_DownButton {
+ width: 30px;
+ height: 30px;
+ border-image: url(:/icons/sba_dn_btn.svg);
+ border: 0px;
+}
+adiscope--SpinBoxA QPushButton#SBA_DownButton:pressed {
+ border-image: url(:/icons/sba_dn_btn_pressed.svg);
+}
+adiscope--SpinBoxA QPushButton#SBA_DownButton:hover:!pressed {
+ border-image: url(:/icons/sba_dn_btn_hover.svg);
+}
+
+adiscope--SpinBoxA QLabel#SBA_Label {
+ color: rgba(255, 255, 255, 102);
+ font-size: 14px;
+}
+
+adiscope--SpinBoxA QLineEdit#SBA_LineEdit {
+ height: 20px;
+ width: 75px;
+ font-size: 18px;
+ border: 0px;
+ bottom: 10px;
+}
+
+adiscope--SpinBoxA QFrame#SBA_Line {
+ color: #4a64ff;
+}
+
+adiscope--SpinBoxA QFrame#SBA_Line:disabled {
+ color: #555555;
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox {
+ height: 20px;
+ font-size: 12px;
+ font-weight: normal;
+ border-bottom: 0px;
+ padding-bottom: 0px;
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox::drop-down {
+ subcontrol-position: center right;
+ width: 10px;
+ height: 6px;
+ border-image: url(:/icons/sba_cmb_box_arrow.svg);
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox::drop-down:disabled {
+ subcontrol-position: center right;
+ width: 0px;
+ height: 0px;
+ border-image: url(:/icons/sba_cmb_box_arrow.svg);
+}
+
+adiscope--SpinBoxA QDial#SBA_CompletionCircle {
+ background-color: black;
+ color: #4963ff;
+}
+/*************************************************************/
+
+
+/******************** Stop buttons *************************/
+
+QPushButton[stopButton=true] {
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+QPushButton[stopButton=true]:enabled {
+ background-image: url(:/icons/ico-stop.svg);
+}
+
+QPushButton[stopButton=true][disabled=true][enabled=false] {
+ background-image: url(:/icons/ico-stop.svg);
+}
+
+QPushButton[stopButton=true]:checked {
+ background-image: url(:/icons/ico-play-green.svg);
+}
+
+/*************************************************************/
+
+/******************** User Notes *************************/
+
+QPushButton[userNote=true] {
+ background-image: url(:/icons/ic_note_unchecked.svg);
+}
+
+QPushButton[userNote=true]:checked {
+ background-image: url(:/icons/ic_note_checked.svg);
+}
+
+/*************************************************************/
diff --git a/resources/stylesheets/dropdown_switch_list.qss b/resources/stylesheets/dropdown_switch_list.qss
index 5c91fbd1bc..1d48f6f2e6 100644
--- a/resources/stylesheets/dropdown_switch_list.qss
+++ b/resources/stylesheets/dropdown_switch_list.qss
@@ -1,6 +1,5 @@
adiscope--DropdownSwitchList {
height: 30px;
- color: rgba(255, 255, 255, 102);
border: 0px;
font-size: 18px;
border-radius: 4px;
@@ -8,8 +7,8 @@ adiscope--DropdownSwitchList {
}
adiscope--DropdownSwitchList:editable{
- background-color: #141416;
- color: white;
+ background-color: white;
+ color: rgba(0, 0, 0, 200);
}
adiscope--DropdownSwitchList::drop-down {
@@ -22,21 +21,23 @@ adiscope--DropdownSwitchList::drop-down {
adiscope--DropdownSwitchList QAbstractItemView {
border: 0px;
- background-color: #141416;
+ background-color: white;
font-size: 18px;
outline: 0px;
/* Add left space. Color should match background-color*/
- border-left: 0px solid #141416; /* setting to 0 for now */
+ border-left: 0px solid white; /* setting to 0 for now */
}
adiscope--DropdownSwitchList QAbstractItemView::item {
- color: #ffffff;
+ color: rgba(0, 0, 0, 200);
height: 60px;
}
adiscope--DropdownSwitchList QAbstractItemView::item:hover {
- background-color: #141416;
+ background-color: #EDEDED;
+ font-weight: bold;
+ border-bottom: 0px solid none;
}
QHeaderView {
@@ -47,45 +48,18 @@ QHeaderView {
}
QHeaderView:section {
- color: rgba(255, 255, 255, 153);
- background-color: #141416;
+ color: rgba(0, 0, 0, 200);
+ background-color: white;
border: 0px;
font: 14px;
}
QCheckBox {
- background-color: #141416;
+ background-color: white;
}
QCheckBox::indicator {
- border: 2px solid rgb(74, 100, 255);
- border-radius: 4px;
width: 16px;
height: 16px;
- background-color: #272730;
subcontrol-position: center;
}
-
-QCheckBox::indicator:checked {
- background-color: rgb(74, 100, 255);
-}
-
-QScrollBar:vertical {
- background: #262628;
- max-width: 8px;
-}
-
-QScrollBar::handle:vertical {
- background: #4a4a4b;
- border: 0;
- border-radius: 3px;
-}
-
-QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
- background: none;
-}
-
-QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
- border: none;
- background: none;
-}
diff --git a/resources/stylesheets/global.qss b/resources/stylesheets/global.qss
deleted file mode 100644
index 1269c4977d..0000000000
--- a/resources/stylesheets/global.qss
+++ /dev/null
@@ -1,328 +0,0 @@
-/* Default background color */
-QMainWindow > .QWidget, adiscope--Sismograph > QwtPlotCanvas, QMessageBox, QToolTip {
- background-color: #272730;
-}
-
-/* Default settings for QWidget and its sub-classes */
-QWidget {
- background-color: transparent;
- color: #bebebe;
- font-style: normal;
- font-weight: normal;
- font-size: 13px;
-}
-
-QToolTip {
- padding: 6px;
- border: 1px solid rgba(149, 152, 154, 150);
- color: white;
-}
-
-QLabel {
- color: rgba(255, 255, 255, 150);
- font-size: 13px;
- font-style: normal;
- font-weight: normal;
- text-align: left;
-}
-
-QLabel:disabled, QRadioButton:disabled {
- color: rgba(255, 255, 255, 80);
-}
-
-QTextBrowser {
- background-color: rgba(0, 0, 0, 150);
-}
-
-/* Apply a gradiant to the MenuAnim widgets */
-adiscope--MenuAnim {
- background-color: qlineargradient(spread:pad, x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgba(0, 0, 0, 40), stop: 0.15 transparent, stop: 0.85 transparent, stop: 1.0 rgba(0, 0, 0, 40));
-}
-
-/* Except for the tool launcher's MenuAnim */
-QMainWindow > .QWidget > .adiscope--MenuAnim {
- background-color: none;
-}
-
-QwtPlot, QwtPolarPlot, pv--view--Viewport, adiscope--SignalGenerator #plot_2, adiscope--Oscilloscope #widgetPlotContainer, adiscope--NetworkAnalyzer #widgetPlotContainer {
- background-color: black;
-}
-
-/* QwtPlot should have a black background, except the sismographs */
-adiscope--Sismograph {
- background-color: transparent;
-}
-
-QwtPlotCanvas {
- background-color: #141416;
-}
-
-QwtPolarCanvas {
- background-color: none;
-}
-
-QwtScaleWidget {
- color: rgba(255, 255, 255, 180);
-}
-
-QwtThermo {
- color: #999999;
- font-size: 26px;
-}
-
-adiscope--BufferPreviewer {
- border: 1px solid #7092be;
- alternate-background-color: #4a64ff;
- selection-background-color: #141416;
- selection-color: #ff7200;
- color: white;
-}
-
-QDial {
- background-color: black;
- color: #4963ff;
-}
-
-QTabWidget::tab-bar {
- left: 0;
-}
-
-QTabWidget::pane {
- border-top: 0px;
-}
-
-QTabBar::tab {
- min-width: 100px;
- min-height: 32px;
- padding-bottom: 5px;
- font: normal;
-}
-
-QTabBar::tab:selected {
- color: white;
- border-bottom: 2px solid #f36d0a;
- margin-top: 0px;
-}
-
-QTabBar::tab:!selected {
- border-bottom: 2px solid #373740;
- margin-top: 0px;
-}
-
-QRadioButton {
- color: white;
- spacing: 12px;
-}
-
-QRadioButton::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid;
- border-radius: 9px;
- border-color: #4963FF;
-}
-
-QRadioButton::indicator:checked {
- background-color: #4963FF;
-}
-
-QRadioButton::indicator:disabled {
- border-color: #555555;
-}
-
-QRadioButton::indicator:checked:disabled {
- background-color: #555555;
-}
-
-QLineEdit {
- color: white;
- font-size: 16px;
- border: 0px solid gray;
- border-bottom: 1px solid rgba(255, 255, 255, 102);
- padding: 2px;
-}
-
-QComboBox {
- height: 24px;
- border: none;
- font-size: 14px;
-
- border-bottom: 1px solid rgba(255, 255, 255, 102);
- padding-bottom: 4px;
-}
-
-QComboBox:disabled, QLineEdit:disabled
-{
- color: #555555;
-}
-
-QComboBox QAbstractItemView {
- border: none;
- background-color: #1b1b21;
- text-align: left;
- color: #bebebe;
- outline: none;
-
- border-bottom: 1px solid #bebebe;
- border-top: 1px solid #bebebe;
-}
-
-/* This only works on Windows */
-QComboBox QAbstractItemView {
- selection-background-color: #272730;
-}
-
-/* This does not work on Windows */
-QComboBox::item:selected {
- font-weight: bold;
- font-size: 18px;
- border-bottom: 0px solid none;
- background-color: #272730;
-}
-
-QComboBox::drop-down {
- subcontrol-position: center right;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
- width: 10px;
- height: 6px;
- font-size: 16px;
- text-align: left;
-}
-
-QComboBox::indicator {
- background-color: transparent;
- selection-background-color: transparent;
- color: transparent;
- selection-color: transparent;
-}
-
-QMessageBox QLabel {
- height: 420px;
- width: 680px;
- color: rgba(255,255,255,240);
- font-size: 14px;
- font: bold;
-}
-
-QMessageBox QPushButton {
- height: 20px;
- width: 120px;
- background-color: #4a64ff;
- color: white;
- font-size: 16px;
- font: bold;
- border-radius: 5px;
- border-color: #4a64ff;
- border-style: solid;
- border-width: 1px;
-}
-
-QAbstractSpinBox
-{
- height: 45px;
- font-size: 16px;
- font-weight: bold;
- border-bottom: 1px solid rgba(255, 255, 255, 102);
-}
-
-QAbstractSpinBox::up-button, QAbstractSpinBox::down-button {
- height: 20px;
- width: 20px;
-}
-
-QAbstractSpinBox::up-button
-{
- border-image: url(:/icons/sba_up_btn.svg);
-}
-
-QAbstractSpinBox::up-button:hover
-{
- border-image: url(:/icons/sba_up_btn_hover.svg);
-}
-
-QAbstractSpinBox::up-button:pressed
-{
- border-image: url(:/icons/sba_up_btn_pressed.svg);
-}
-
-QAbstractSpinBox::down-button
-{
- border-image: url(:/icons/sba_dn_btn.svg);
-}
-
-QAbstractSpinBox::down-button:hover
-{
- border-image: url(:/icons/sba_dn_btn_hover.svg);
-}
-
-QAbstractSpinBox::down-button:pressed
-{
- border-image: url(:/icons/sba_dn_btn_pressed.svg);
-}
-
-QGroupBox {
- border: 2px solid rgba(255, 255, 255, 40);
- border-radius: 8px;
- color: rgba(255, 255, 255, 40);
- font-size: 16px;
- font-weight: bold;
- margin-top: 9px;
- padding-top: 5px;
-}
-
-QGroupBox::title {
- subcontrol-origin: margin;
- subcontrol-position: top left; /* position at the top center */
-}
-
-QScrollBar:vertical {
- background: #262628;
- max-width: 8px;
-}
-
-QScrollBar::handle:vertical {
- background: #404040;
- border: 0;
- border-radius: 3px;
-}
-QScrollBar::handle:vertical:hover {
- background: #4a4a4b;
- border: 0;
- border-radius: 3px;
-}
-
-QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
- background: none;
-}
-
-QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
- border: none;
- background: none;
-}
-
-QScrollBar:horizontal {
- background: #262628;
- max-height: 6px;
- border-radius: 3px;
-}
-
-QScrollBar::handle:horizontal {
- background: #404040;
- border: 0;
- border-radius: 3px;
-}
-
-QScrollBar::handle:horizontal:hover {
- background: #4a4a4b;
- border: 0;
- border-radius: 3px;
-}
-
-QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
- background: none;
-}
-
-QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
- border: none;
- background: none;
-}
diff --git a/resources/stylesheets/light.qss b/resources/stylesheets/light.qss
new file mode 100644
index 0000000000..4aa40cb6d8
--- /dev/null
+++ b/resources/stylesheets/light.qss
@@ -0,0 +1,877 @@
+/* Default background color */
+QMainWindow > .QWidget, adiscope--Sismograph > QwtPlotCanvas, QMessageBox, QToolTip {
+ background-color: #F7F7F7;
+}
+
+/* Default settings for QWidget and its sub-classes */
+QWidget {
+ background-color: transparent;
+ color: #141416;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 13px;
+}
+
+QToolTip {
+ padding: 6px;
+ border: 1px solid rgba(149, 152, 154, 150);
+ color: rgba(0, 0, 0, 200);
+}
+
+QLabel {
+ color: rgba(0, 0, 0, 200);
+ font-size: 13px;
+ font-style: normal;
+ font-weight: normal;
+ text-align: left;
+}
+
+QLabel:disabled, QRadioButton:disabled {color: rgba(0, 0, 0, 70); }
+
+QLabel[invalid=true] { color: red; }
+
+QLabel[valid=true] { color: rgba(0, 0, 0, 200); }
+
+QTextBrowser { background-color: #EDEDED; }
+
+/* Apply a gradient to the MenuAnim widgets */
+adiscope--MenuAnim, adiscope--DMM #widget_2, .adiscope--PowerController #rightMenu {
+ background-color: qlineargradient(spread:pad, x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #EDEDED, stop: 0.15 #F7F7F7, stop: 0.85 #F7F7F7, stop: 1.0 #EDEDED);
+}
+
+/* Except for the tool launcher's MenuAnim */
+QMainWindow > .QWidget > .adiscope--MenuAnim { background-color: none; }
+
+QwtPlot, QwtPolarPlot, pv--view--Viewport, QWidget[plot_container=true] {
+ background-color: white;
+}
+
+/* QwtPlot should have a black background, except the sismographs */
+adiscope--Sismograph { background-color: transparent; }
+
+QwtPlotCanvas { background-color: white; }
+
+QwtPolarCanvas { background-color: none; }
+
+QwtScaleWidget { color: rgba(0, 0, 0, 180); }
+
+QwtThermo {
+ color: #999999;
+ font-size: 26px;
+}
+
+adiscope--BufferPreviewer {
+ border: 1px solid #7092be;
+ alternate-background-color: #4a64ff;
+ selection-background-color: #F7F7F7;
+ selection-color: #ff7200;
+ color: white;
+}
+
+QDial {
+ background-color: white;
+ color: #4963ff;
+}
+
+QTabWidget::tab-bar { left: 0; }
+
+QTabWidget::pane { border-top: 0px; }
+
+QTabBar::tab {
+ min-width: 100px;
+ min-height: 32px;
+ padding-bottom: 5px;
+ font: normal;
+}
+
+QTabBar::tab:selected {
+ color: #7D7D83;
+ border-bottom: 2px solid #f36d0a;
+ margin-top: 0px;
+}
+
+QTabBar::tab:!selected {
+ border-bottom: 2px solid #7D7D83;
+}
+
+QRadioButton {
+ color: rgba(0, 0, 0, 200);
+ spacing: 12px;
+}
+
+QRadioButton::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid;
+ border-radius: 9px;
+ border-color: #4963FF;
+}
+
+QRadioButton::indicator:checked { background-color: #4963FF; }
+
+QRadioButton::indicator:disabled { border-color: #C5C5C5; }
+
+QRadioButton::indicator:checked:disabled { background-color: #C5C5C5; }
+
+QLineEdit {
+ color: rgba(0, 0, 0, 200);
+ font-size: 16px;
+ border: 0px solid gray;
+ border-bottom: 1px solid rgba(0, 0, 0, 40);
+ padding: 2px;
+}
+
+QLineEdit[valid=true]{ color: rgba(0, 0, 0, 200); }
+QLineEdit[invalid=true]{ color: red; }
+
+QComboBox {
+ height: 24px;
+ border: none;
+ font-size: 14px;
+
+ border-bottom: 1px solid rgba(0, 0, 0, 40);
+ padding-bottom: 4px;
+}
+
+QComboBox:disabled, QLineEdit:disabled { color: rgba(0, 0, 0, 70); }
+
+QComboBox QAbstractItemView {
+ border: none;
+ background-color: white;
+ text-align: left;
+ color: #bebebe;
+ outline: none;
+
+ border-bottom: 1px solid #bebebe;
+ border-top: 1px solid #bebebe;
+}
+
+/* This only works on Windows */
+QComboBox QAbstractItemView {
+ selection-background-color: #EDEDED;
+}
+
+/* This does not work on Windows */
+QComboBox::item:selected {
+ font-weight: bold;
+ font-size: 18px;
+ border-bottom: 0px solid none;
+ background-color: #EDEDED;
+}
+
+QComboBox::drop-down {
+ subcontrol-position: center right;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow.svg);
+ width: 10px;
+ height: 6px;
+ font-size: 16px;
+ text-align: left;
+}
+
+QComboBox::indicator {
+ background-color: transparent;
+ selection-background-color: transparent;
+ color: transparent;
+ selection-color: transparent;
+}
+
+QMessageBox QLabel {
+ height: 420px;
+ width: 680px;
+ color: rgba(0, 0, 0, 200);
+ font-size: 14px;
+ font: bold;
+}
+
+QMessageBox QPushButton {
+ height: 20px;
+ width: 120px;
+ background-color: #4a64ff;
+ color: white;
+ font-size: 16px;
+ font: bold;
+ border-radius: 5px;
+ border-color: #4a64ff;
+ border-style: solid;
+ border-width: 1px;
+}
+
+QAbstractSpinBox {
+ height: 45px;
+ font-size: 16px;
+ font-weight: bold;
+ border-bottom: 1px solid rgba(0, 0, 0, 40);
+}
+
+QAbstractSpinBox::up-button, QAbstractSpinBox::down-button {
+ height: 20px;
+ width: 20px;
+}
+
+QAbstractSpinBox::up-button { border-image: url(:/icons/sba_up_btn.svg); }
+
+QAbstractSpinBox::up-button:hover { border-image: url(:/icons/sba_up_btn_hover.svg); }
+
+QAbstractSpinBox::up-button:pressed { border-image: url(:/icons/sba_up_btn_pressed.svg); }
+
+QAbstractSpinBox::down-button { border-image: url(:/icons/sba_dn_btn.svg); }
+
+QAbstractSpinBox::down-button:hover { border-image: url(:/icons/sba_dn_btn_hover.svg); }
+
+QAbstractSpinBox::down-button:pressed { border-image: url(:/icons/sba_dn_btn_pressed.svg); }
+
+QGroupBox {
+ border: 2px solid rgba(255, 255, 255, 40);
+ border-radius: 8px;
+ color: rgba(255, 255, 255, 40);
+ font-size: 16px;
+ font-weight: bold;
+ margin-top: 9px;
+ padding-top: 5px;
+}
+
+QGroupBox::title {
+ subcontrol-origin: margin;
+ subcontrol-position: top left; /* position at the top center */
+}
+
+QScrollBar:vertical {
+ background: #F7F7F7;
+ max-width: 8px;
+}
+
+QScrollBar::handle:vertical {
+ background: #BEBEC1;
+ border: 0;
+ border-radius: 3px;
+}
+QScrollBar::handle:vertical:hover {
+ background: #7D7D83;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; }
+
+QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
+ border: none;
+ background: none;
+}
+
+QScrollBar:horizontal {
+ background: #F7F7F7;
+ max-height: 6px;
+ border-radius: 3px;
+}
+
+QScrollBar::handle:horizontal {
+ background: #BEBEC1;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::handle:horizontal:hover {
+ background: #7D7D83;
+ border: 0;
+ border-radius: 3px;
+}
+
+QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { background: none; }
+
+QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
+ border: none;
+ background: none;
+}
+
+QDialog { background-color: white; }
+
+ScopyAboutDialog QPushButton{
+ background-color: #4a64ff;
+ color: #ffffff;
+}
+
+QTextBrowser#aboutTextBrowser{
+ background-color: transparent;
+ link-color: yellow;
+ selection-color: yellow;
+ color: rgba(0, 0, 0, 200);
+}
+
+/* Label, line and arrow button dividers between sections */
+
+QLabel[subsection_label=true]{
+ font-size: 12px;
+ color: rgba(0, 0, 0, 70);
+}
+
+QFrame[subsection_line=true]{ border: 1px solid rgba(0, 0, 0, 50); }
+
+QPushButton[subsection_arrow_button=true]{
+ max-height: 6px;
+ max-width: 10px;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow.svg);
+}
+
+QPushButton[subsection_arrow_button=true]:checked{
+ max-height: 10px;
+ max-width: 6px;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow_right.svg);
+}
+
+
+/* Label associated with settings menu, right above a blue line divider */
+
+QLabel[general_settings_label=true]{
+ color: rgba(0, 0, 0, 200);
+ font-size: 14px;
+ font-weight: normal;
+}
+
+/* Blue line divider */
+
+QFrame[blue_line=true]{ border: 2px solid #4A64FF; }
+
+
+/* General style for blue buttons */
+
+QPushButton[blue_button=true]{
+ background-color: #4a64ff;
+ color: #ffffff;
+ border-radius: 4px;
+ font-size: 14px;
+}
+
+QPushButton[blue_button=true]:pressed{ background-color: #2a44df; }
+
+QPushButton[blue_button=true]:hover{ background-color: #4a34ff; }
+
+QPushButton[blue_button=true]:disabled { background-color: grey; }
+
+/* Info button for each tool */
+
+QPushButton[info_button=true]{
+ min-height: 40px;
+ max-height: 40px;
+ min-width: 40px;
+ max-width: 40px;
+ background-color: transparent;
+ border-radius: 4px;
+}
+
+QPushButton[info_button=true]:hover { background-color: rgba(0, 0, 0, 60); }
+
+/* Menu title label */
+
+QLabel[menu_title_label=true]{
+ color: rgba(0, 0, 0, 200);
+ font-weight: normal;
+ font-size: 14px;
+}
+
+
+/* Style for all SpinBoxes */
+
+QSpinBox{
+ color: rgba(0, 0, 0, 200);
+ border: 0px;
+ border-bottom: 1px solid rgba(0, 0, 0, 40);
+}
+
+
+QCheckBox {
+ spacing: 8px;
+ background-color: transparent;
+ font-size: 14px;
+ font-weight: normal;
+ color: rgba(0, 0, 0, 200);
+}
+
+QCheckBox::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid rgb(74,100,255);
+ border-radius: 4px;
+}
+
+QCheckBox::indicator:unchecked { background-color: transparent; }
+QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
+
+
+QSlider::groove {
+ border: 1px solid #444444;
+ height: 2px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
+ background: #999999;
+ margin: 2px 0;
+ border-radius: 2px;
+}
+
+QSlider::handle {
+ background: rgb(73, 99, 255);
+ border: 0px solid;
+ width: 18px;
+ margin: -8px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ border-radius: 8px;
+}
+
+QSlider::handle:disabled { background: #444444; }
+
+QSlider::sub-page:horizontal { background: #4A64FF; }
+
+
+/* Style for settings and general settings buttons from all menus */
+
+QPushButton[menu_icon_button=true] {
+ min-height: 40px;
+ max-height: 40px;
+ min-width: 60px;
+ max-width: 60px;
+ padding-top:5px
+}
+
+QPushButton[menu_icon_button=true]:checked { border-top: 1px solid rgba(0, 0, 0, 150); }
+
+QPushButton[menu_icon_button=true]:!checked { border-top: 1px solid rgba(0, 0, 0, 0); }
+
+QPushButton[menu_icon_button=true]:!checked:hover { border-top: 1px solid rgba(0, 0, 0, 0); }
+
+QPushButton[menu_icon_button=true]:checked:hover { border-top: 1px solid rgba(0, 0, 0, 200); }
+
+
+/* Style for all Tool launcher buttons, such as Home, Menu, Preferences, Load, Save, Notes, etc. */
+
+QPushButton[tool_launcher_custom_widget=true] {
+ text-align:left;
+ border: none;
+ background-color: none;
+}
+
+.QWidget[tool_launcher_custom_widget=true]:hover {
+ background-color: rgba(0, 0, 0, 60);
+ border: 1px solid rgba(0, 0, 0, 30);
+ border-radius:5px;
+}
+
+QWidget[tool_launcher_custom_widget=true][selected=true] {
+ background-color: rgba(0, 0, 0, 60);
+ border: 1px solid rgba(0, 0, 0, 30);
+ border-radius:5px;
+}
+
+
+/* Style for icon-buttons such as Device, Home, Plus, etc. */
+
+QWidget[menu_button=true][selected=true] {
+ opacity: 0.6;
+ border-radius: 4px;
+ background-color: #C5C5C5;
+}
+
+QWidget[menu_button=true][selected=false] { background-color: transparent; }
+
+
+/* Styles for DigitalIO widgets */
+
+QWidget#page {
+ border-radius: 12px;
+ background-color: rgba(0, 0, 0, 40);
+}
+
+QWidget#stackedWidgetPage1 {
+ border-radius: 12px;
+ background-color: rgba(0, 0, 0, 80);
+}
+
+
+/* Background color for info page */
+
+.adiscope--StackedHomepage#stackedWidget{ background-color: #EDEDED; }
+
+
+/* Style for all line separators */
+
+QFrame[line_separator=true]{ background-color: rgba(0, 0, 0, 20); }
+
+
+/* Background color for Voltmeter and Power Supply */
+
+.adiscope--PowerController #leftPanel, .adiscope--DMM #leftPanel{
+ background-color: #EDEDED;
+}
+
+
+/* Gradient background for all instruments */
+
+.adiscope--Oscilloscope #mainWidget, .adiscope--SpectrumAnalyzer #mainWidget,
+.adiscope--NetworkAnalyzer #mainWidget, .adiscope--SignalGenerator #mainWidget,
+.adiscope--logic--LogicAnalyzer #mainWidget, .adiscope--logic--PatternGenerator #mainWidget,
+.adiscope--DigitalIO #widget, .adiscope--DMM #hLayout_top_btn_area_voltmeter, .adiscope--PowerController #hWidget_top_area {
+ background-color: qlineargradient(spread:pad, x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #EDEDED, stop: 0.1 #F7F7F7, stop: 1.0 #F7F7F7);
+}
+
+/* Remove inherited gradient from the export setting of the Oscilloscope */
+
+.adiscope--ExportSettings #mainWidget, .adiscope--ImportSettings #mainWidget {
+ background-color: none;
+}
+
+adiscope--CursorReadouts {
+ background-color: white;
+}
+
+QWidget[scopy_logo=true]{
+ background-image: url(:/icons/scopy-light/icons/logo.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QPushButton[menu_icon=true]{
+ background-image: url(:/icons/scopy-light/icons/menu.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QWidget[adi_logo=true]{
+ background-image: url(:/icons/scopy-light/icons/logo analog.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+ min-width: 104px;
+ min-height: 30px;
+}
+
+QPushButton[save_logo=true]{
+ background-image: url(:/icons/scopy-light/icons/ic save.svg);
+ background-repeat: no-repeat;
+}
+
+QPushButton[load_logo=true]{
+ background-image: url(:/icons/scopy-light/icons/ic load.svg);
+ background-repeat: no-repeat;
+ background-position: left center;
+}
+
+QPushButton[preferences_icon=true]{
+ background-image: url(:/icons/scopy-light/icons/Gear.png);
+ background-repeat: no-repeat;
+ background-position: left center;
+ qproperty-text: "Preferences";
+ text-align: center;
+}
+
+QPushButton[general_settings_icon=true]:checked {
+ image: url(:/icons/scopy-light/icons/gear_wheel_pressed.svg);
+}
+
+QPushButton[general_settings_icon=true]:!checked {
+ image: url(:/icons/scopy-light/icons/Gear.png);
+}
+
+
+QPushButton[general_settings_icon=true]:!checked:hover {
+ image: url(:/icons/scopy-light/icons/gear_wheel_hover.png);
+}
+
+QPushButton[general_settings_icon=true]:checked:hover {
+ image: url(:/icons/scopy-light/icons/gear_wheel_pressed.svg);
+}
+
+QPushButton[settings_icon=true]:checked {
+ image: url(:/icons/scopy-light/icons/setup3_checked_hover.svg);
+}
+
+QPushButton[settings_icon=true]:!checked {
+ image: url(:/icons/scopy-light/icons/setup3_unchecked.png);
+}
+
+QPushButton[settings_icon=true]:!checked:hover {
+ image: url(:/icons/scopy-light/icons/setup3_unchecked_hover.png);
+}
+
+QPushButton[settings_icon=true]:checked:hover {
+ image: url(:/icons/scopy-light/icons/setup3_checked_hover.svg);
+}
+
+QHeaderView::section {
+ background-color: #D3D3D3;
+}
+
+QHeaderView::section:checked {
+ background-color: #D3D3D3;
+}
+
+/*************************************************************/
+
+
+
+/*********************** Channel widget *******************/
+
+adiscope--ChannelWidget QWidget {
+ color: rgba(0, 0, 0, 170);
+
+ border-width: 0px;
+ border-radius: 6px;
+}
+
+/* Widget containing box, name, btn */
+adiscope--ChannelWidget QWidget#widget {
+ background-color: transparent;
+ border-radius: 4px;
+}
+adiscope--ChannelWidget QWidget#widget[selected=true] {
+ background-color: rbga(0, 0, 0, 40);
+}
+
+/* Round check box */
+adiscope--ChannelWidget QCheckBox#box{
+ spacing: 0px;
+ background-color: none;
+ font-size: 14px;
+ font-weight: bold;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator {
+ width: 14px;
+ height: 14px;
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+ border-radius: 9px;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator:unchecked {
+ background-color: transparent;
+}
+adiscope--ChannelWidget QCheckBox#box::indicator:checked {
+ background-color: #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
+
+/* Name */
+adiscope--ChannelWidget QPushButton#name {
+ font-size: 14px;
+ font-weight: bold;
+ background-color: none;
+}
+
+/* Delete Button */
+adiscope--ChannelWidget QPushButton#delBtn {
+ width: 24px;
+ height: 24px;
+ background-color: transparent;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-image: url(:/icons/redX.svg);
+}
+adiscope--ChannelWidget QPushButton#delBtn::hover {
+ background-image: url(:/icons/redX.svg);
+}
+
+/* Menu button */
+adiscope--ChannelWidget QPushButton#btn {
+ width: 40px;
+ height: 20px;
+ background-color: transparent;
+}
+adiscope--ChannelWidget QPushButton#btn:pressed {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:!pressed {
+ border-image: url(:/icons/setup_btn_unchecked.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:hover:!pressed:!checked {
+ border-image: url(:/icons/setup_btn_hover.svg)
+}
+adiscope--ChannelWidget QPushButton#btn:checked {
+ border-image: url(:/icons/setup_btn_checked.svg)
+}
+
+/* Underline */
+adiscope--ChannelWidget QFrame#line {
+ border: 2px solid transparent;
+}
+adiscope--ChannelWidget QFrame#line[selected=true] {
+ border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
+}
+
+/*************************************************************/
+
+
+
+/******************* Dropdown ***************/
+
+adiscope--DropdownSwitchList {
+ height: 30px;
+ border: 0px;
+ font-size: 18px;
+ border-radius: 4px;
+ padding-left: 20px;
+}
+
+adiscope--DropdownSwitchList:editable{
+ background-color: white;
+ color: rgba(0, 0, 0, 200);
+}
+
+adiscope--DropdownSwitchList::drop-down {
+ subcontrol-position: center right;
+ width: 10px;
+ height: 6px;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow.svg);
+ margin-right: 20px;
+}
+
+adiscope--DropdownSwitchList QAbstractItemView {
+ border: 0px;
+ background-color: white;
+ font-size: 18px;
+ outline: 0px;
+
+ /* Add left space. Color should match background-color*/
+ border-left: 0px solid white; /* setting to 0 for now */
+}
+
+adiscope--DropdownSwitchList QAbstractItemView::item {
+ color: rgba(0, 0, 0, 200);
+ height: 60px;
+}
+
+adiscope--DropdownSwitchList QAbstractItemView::item:hover {
+ background-color: #EDEDED;
+ font-weight: bold;
+ border-bottom: 0px solid none;
+}
+
+adiscope--DropdownSwitchList QHeaderView {
+ /* Cancel the effect of the QAbstractItemView border-left property. It's
+ necessary because the border (or padding) of the QAbstractItemView applies to
+ this element as well. */
+ padding-left: -0px;
+}
+
+adiscope--DropdownSwitchList QHeaderView:section {
+ color: rgba(0, 0, 0, 200);
+ background-color: white;
+ border: 0px;
+ font: 14px;
+}
+
+adiscope--DropdownSwitchList QCheckBox {
+ background-color: white;
+}
+
+adiscope--DropdownSwitchList QCheckBox::indicator {
+ width: 16px;
+ height: 16px;
+ subcontrol-position: center;
+}
+
+/*************************************************************/
+
+
+
+/**************** SpinBoxes *****************/
+
+adiscope--SpinBoxA QPushButton#SBA_UpButton {
+ width: 30px;
+ height: 30px;
+ border-image: url(:/icons/sba_up_btn.svg);
+ border: 0px;
+}
+
+adiscope--SpinBoxA QPushButton#SBA_UpButton:pressed {
+ border-image: url(:/icons/sba_up_btn_pressed.svg);
+}
+adiscope--SpinBoxA QPushButton#SBA_UpButton:hover:!pressed {
+ border-image: url(:/icons/sba_up_btn_hover.svg);
+}
+
+adiscope--SpinBoxA QPushButton#SBA_DownButton {
+ width: 30px;
+ height: 30px;
+ border-image: url(:/icons/sba_dn_btn.svg);
+ border: 0px;
+}
+adiscope--SpinBoxA QPushButton#SBA_DownButton:pressed {
+ border-image: url(:/icons/sba_dn_btn_pressed.svg);
+}
+adiscope--SpinBoxA QPushButton#SBA_DownButton:hover:!pressed {
+ border-image: url(:/icons/sba_dn_btn_hover.svg);
+}
+
+adiscope--SpinBoxA QLabel#SBA_Label {
+ color: rgba(0, 0, 0, 200);
+ font-size: 14px;
+}
+
+adiscope--SpinBoxA QLineEdit#SBA_LineEdit {
+ height: 20px;
+ width: 75px;
+ font-size: 18px;
+ border: 0px;
+ bottom: 10px;
+}
+
+adiscope--SpinBoxA QFrame#SBA_Line {
+ color: #4a64ff;
+}
+
+adiscope--SpinBoxA QFrame#SBA_Line:disabled {
+ color: #555555;
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox {
+ height: 20px;
+ font-size: 12px;
+ font-weight: normal;
+ border-bottom: 0px;
+ padding-bottom: 0px;
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox::drop-down {
+ subcontrol-position: center right;
+ width: 10px;
+ height: 6px;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow.svg);
+}
+
+adiscope--SpinBoxA QComboBox#SBA_Combobox::drop-down:disabled {
+ subcontrol-position: center right;
+ width: 0px;
+ height: 0px;
+ border-image: url(:/icons/scopy-light/icons/sba_cmb_box_arrow.svg);
+}
+
+adiscope--SpinBoxA QDial#SBA_CompletionCircle {
+ background-color: #C5C5C5;
+ color: #4963ff;
+}
+
+/*************************************************************/
+
+
+/******************** Stop buttons *************************/
+
+QPushButton[stopButton=true] {
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+
+QPushButton[stopButton=true]:enabled {
+ background-image: url(:/icons/scopy-light/icons/ico-stop.svg);
+}
+
+QPushButton[stopButton=true][disabled=true][enabled=false] {
+ background-image: url(:/icons/scopy-light/icons/ico-stop.svg);
+}
+
+QPushButton[stopButton=true]:checked {
+ background-image: url(:/icons/scopy-light/icons/ico-play-green.svg);
+}
+
+/*************************************************************/
+
+/******************** User Notes *************************/
+
+QPushButton[userNote=true] {
+ background-image: url(:/icons/scopy-light/icons/ic_note_unchecked.svg);
+}
+
+QPushButton[userNote=true]:checked {
+ background-image: url(:/icons/scopy-light/icons/ic_note_checked.svg);
+}
+
+/*************************************************************/
diff --git a/resources/stylesheets/spinbox_type_a.qss b/resources/stylesheets/spinbox_type_a.qss
index b83a2e4d01..6c253e9c7b 100644
--- a/resources/stylesheets/spinbox_type_a.qss
+++ b/resources/stylesheets/spinbox_type_a.qss
@@ -25,7 +25,7 @@ QPushButton#SBA_DownButton:hover:!pressed {
}
QLabel#SBA_Label {
- color: rgba(255, 255, 255, 102);
+ color: rgba(0, 0, 0, 200);
font-size: 14px;
}
@@ -68,6 +68,6 @@ QComboBox#SBA_Combobox::drop-down:disabled {
}
QDial#SBA_CompletionCircle {
- background-color: black;
+ background-color: #C5C5C5;
color: #4963ff;
}
diff --git a/resources/translations.qrc b/resources/translations.qrc
index 68d99c8df2..94186dd8f9 100644
--- a/resources/translations.qrc
+++ b/resources/translations.qrc
@@ -1,8 +1,5 @@
- scopy_en.qm
- scopy_ro.qm
- scopy_fr.qm
- scopy_cn.qm
+ @TRANSLATIONS@
diff --git a/resources/translations/scopy_ar.ts b/resources/translations/scopy_ar.ts
new file mode 100644
index 0000000000..80da7e24b3
--- /dev/null
+++ b/resources/translations/scopy_ar.ts
@@ -0,0 +1,6455 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+
+
+
+
+ BaseMenuItem
+
+
+ Form
+
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+
+
+
+
+ Init Value
+ Init Value
+ القيمة الأولية
+
+
+
+
+ 0
+
+
+
+
+ Frequency
+ Frequency
+ التردد
+
+
+
+ 1000
+
+
+
+
+ Start counter
+ Start counter
+ بداية العداد
+
+
+
+ End counter
+ End counter
+ نهاية العداد
+
+
+
+ 65535
+
+
+
+
+ Increment
+ Increment
+ مقدار التزايد
+
+
+
+ 1
+
+
+
+
+ BitfieldWidget
+
+
+ Form
+
+
+
+
+
+ TextLabel
+ TextLabel
+ ملصق نصي
+
+
+
+ 0x
+
+
+
+
+ CalibrationTemplate
+
+
+ Form
+
+
+
+
+ Calibration info here
+ Calibration info here
+ معلومات المعايرة
+
+
+
+ Set
+ Set
+ ضبط
+
+
+
+ Measured
+ Measured
+ قياس
+
+
+
+ Enter value here
+ Enter value here
+ ادخل القيم هنا
+
+
+
+ Restart
+ Restart
+ اعادة تشغيل
+
+
+
+ Next
+ Next
+ التالي
+
+
+
+ Finish
+ Finish
+ انهاء
+
+
+
+ Channel
+
+
+ Form
+
+
+
+
+ Channel
+ Channel
+ مسار
+
+
+
+ ChannelSettings
+
+
+ Form
+
+
+
+
+ Channel
+ Channel
+ مسار
+
+
+
+ MATH
+ MATH
+ الحساب
+
+
+
+ Edit Function
+ Edit Function
+ تعديل المعادلة
+
+
+
+ HORIZONTAL
+ HORIZONTAL
+ أفقي
+
+
+
+ VERTICAL
+ VERTICAL
+ رأسي
+
+
+
+ SETTINGS
+ SETTINGS
+ الإعدادات
+
+
+
+ CH Thickness
+ CH Thickness
+ سمك المسار
+
+
+
+ 0.5
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Memory depth
+ Memory depth
+ عمق الذاكرة
+
+
+
+ Probe
+Attenuation
+ Probe Attenuation
+ تهوين/إضعاف المجس
+
+
+
+ 0.1X
+
+
+
+
+ 1X
+
+
+
+
+ 10X
+
+
+
+
+ 100X
+
+
+
+
+ Curve Style
+ Curve Style
+ نمط رسم المنحني
+
+
+
+ Lines
+ Lines
+ خطوط
+
+
+
+ Dots
+ Dots
+ نقط
+
+
+
+ Steps
+ Steps
+
+
+
+
+ Sticks
+ Sticks
+ أعواد
+
+
+
+ Smooth
+ Smooth
+ أملس
+
+
+
+ Software
+AC Coupling
+ Software AC Coupling
+ برنامج ربط التيار المتردد
+
+
+
+ Filter 1 - Enabled
+ Filter 1 - Enabled
+ تفعيل منقح 1
+
+
+
+
+ TC
+
+
+
+
+
+ Gain
+ Gain
+ الربح
+
+
+
+
+ 0
+
+
+
+
+ Filter 2 - Enabled
+ Filter 2 - Enabled
+ تفعيل منقح 2
+
+
+
+ Autoset
+ Autoset
+ ضبط أوتوماتيكي
+
+
+
+ Snapshot
+ Snapshot
+ لقطة فوتغرافية
+
+
+
+ Connect
+
+
+ Form
+
+
+
+
+ URI (Hostname)
+ URI (Hostname)
+ عنوان الموقع (اسم المضيف)
+
+
+
+ Connect
+ Connect
+ اتصل
+
+
+
+ Context info
+ Context info
+ معلومات السياق
+
+
+
+ ConstantPatternUI
+
+
+ Form
+
+
+
+
+ Constant
+ Constant
+ ثابت
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ CursorReadouts
+
+
+ Form
+
+
+
+
+ Δt =
+
+
+
+
+
+ 0.000ms
+
+
+
+
+ CurT2 =
+
+
+
+
+ 1/Δt =
+
+
+
+
+ - 000.000 ms
+
+
+
+
+ - 000.000 mHz
+
+
+
+
+ CurT1 =
+
+
+
+
+ CurV2
+
+
+
+
+ ΔV
+
+
+
+
+ CurV1
+
+
+
+
+
+ 000.000 mV
+
+
+
+
+ - 000.000 mV
+
+
+
+
+
+
+ =
+
+
+
+
+ CursorsSettings
+
+
+ Form
+
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+ Normal
+ Normal
+ عادي
+
+
+
+ Track
+ Track
+ تعقب
+
+
+
+ 0
+
+
+
+
+ HORIZONTAL
+ HORIZONTAL
+ أفقي
+
+
+
+ VERTICAL
+ VERTICAL
+ رأسي
+
+
+
+ CURSOR READOUTS
+ CURSOR READOUTS
+ قراءات المؤشر
+
+
+
+ Transparency 0%
+ Transparency 0%
+ الشفافية 0%
+
+
+
+ Position
+ Position
+ الوضع
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+
+
+
+
+ DMM
+
+
+
+ MAX
+ MAX
+ الحد الأقصى
+
+
+
+
+ MIN
+ MIN
+ الحد الأدنى
+
+
+
+
+ VDC
+ VDC
+ فولت تيار مباشر
+
+
+
+ Run
+ Run
+ انطلق
+
+
+
+ Channel 1
+ Channel 1
+ مسار 1
+
+
+
+
+ DC (Direct Current)
+ DC (Direct Current)
+ تيار الثابت
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ AC (20 Hz - 40 kHz)
+ تيار متغير (20Hz -40kHz)
+
+
+
+
+ 1s
+ 1s
+ ثانية
+
+
+
+
+ 10s
+ 10s
+ 10 ثوان
+
+
+
+
+ 60s
+ 60s
+ 60 ثانية
+
+
+
+
+ History
+ History
+ التاريخ
+
+
+
+
+ Line thickness
+ Line thickness
+ سمك الخط
+
+
+
+
+ 0.5
+
+
+
+
+
+ 1
+
+
+
+
+
+ 1.5
+
+
+
+
+
+ 2
+
+
+
+
+
+ 2.5
+
+
+
+
+
+ 3
+
+
+
+
+
+ 3.5
+
+
+
+
+
+ 4
+
+
+
+
+
+ 4.5
+
+
+
+
+
+ 5
+
+
+
+
+ Channel 2
+ Channel 2
+ مسار 2
+
+
+
+ PEAK HOLD
+ PEAK HOLD
+ حيز الذروة
+
+
+
+ Reset
+ Reset
+ إعادة الضبط
+
+
+
+ DATA LOGGING
+ DATA LOGGING
+ تسجيل البيانات
+
+
+
+ Browse
+ Browse
+ تصفح
+
+
+
+ Append
+ Append
+ ألحق
+
+
+
+ Choose a file
+ Choose a file
+ اختر ملف
+
+
+
+ Overwrite
+ Overwrite
+ اكتب على الملف السابق
+
+
+
+ DbClickButtons
+
+
+ Form
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ Debugger
+
+
+ MainWindow
+ MainWindow
+ النافذة الرئيسية
+
+
+
+ SCRIPTING ENGINE
+ SCRIPTING ENGINE
+ محرك النص
+
+
+
+ Load Script
+ Load Script
+ تحميل البرنامج النصي
+
+
+
+ Run
+ Run
+ تشغيل
+
+
+
+ Filename
+ Filename
+ اسم الملف
+
+
+
+
+ Read
+ Read
+ اقرأ
+
+
+
+ Device
+ Device
+ الجهاز
+
+
+
+ New Window
+ New Window
+ نافذة جديدة
+
+
+
+
+ Write
+ Write
+ اكتب
+
+
+
+
+ Value:
+ Value:
+ القيمة:
+
+
+
+ DEVICE SELECTION
+ DEVICE SELECTION
+ اخيار الجهاز
+
+
+
+ Detailed Register Map
+ Detailed Register Map
+ خريطة مفصلة عن السجل
+
+
+
+ Address:
+ Address:
+ العنوان:
+
+
+
+ 0x0000
+
+
+
+
+ Display mode:
+ Display mode:
+ وضع العرض:
+
+
+
+ <value>
+ <value>
+ <القيمة>
+
+
+
+
+ 0x
+
+
+
+
+ Description:
+ Description:
+ الوصف:
+
+
+
+ Default Value:
+ Default Value:
+ القيمة المبدأية
+
+
+
+ Source:
+ Source:
+ المصدر:
+
+
+
+ Enable AutoRead
+ Enable AutoRead
+ تفعيل القراءة اتوماتيكيا
+
+
+
+ REGISTER MAP SETTINGS
+ REGISTER MAP SETTINGS
+ إعدادات خريطة السجل
+
+
+
+ DetachDragZone
+
+
+ Form
+
+
+
+
+ Drag here to detach!
+ Drag here to detach!
+ اسحب هنا للفصل!
+
+
+
+ Device
+
+
+ Form
+
+
+
+
+ DigitalIO
+
+
+ Form
+
+
+
+
+ Run
+ Run
+ تشغيل
+
+
+
+ DigitalIoMenu
+
+
+ Form
+
+
+
+
+ PollingRate
+ PollingRate
+ معدل الاقتراع
+
+
+
+ 1000
+
+
+
+
+ Enable Outputs
+ Enable Outputs
+ تفعيل النتائج
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ Trigger Settings
+ إعدادات المحفز
+
+
+
+ Trigger mode
+ Trigger mode
+ وضع المحفز
+
+
+
+ auto
+ auto
+ أوتوماتيكي
+
+
+
+ normal
+ normal
+ عادي
+
+
+
+ Trigger Logic
+ Trigger Logic
+ منطق المحفز
+
+
+
+ OR
+ OR
+ أو
+
+
+
+ AND
+ AND
+ و
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNAL TRIGGER
+ محفز خارجي
+
+
+
+ Source
+ Source
+ المصدر
+
+
+
+ Condition
+ Condition
+ الحالة
+
+
+
+ None
+ None
+ لا شيء
+
+
+
+ EXTERNAL TRIGGER OUT
+ EXTERNAL TRIGGER OUT
+ مخرج المحفز الخارجي
+
+
+
+ DragZone
+
+
+ Form
+
+
+
+
+ EmptyPatternUI
+
+
+ Form
+
+
+
+
+ ExportSettings
+
+
+ Form
+
+
+
+
+ EXPORT
+ EXPORT
+ إخراج
+
+
+
+ Export All
+ Export All
+ إخراج الكل
+
+
+
+ Export
+ Export
+ إخراج
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+
+
+
+
+ Frequency
+ Frequency
+ التردد
+
+
+
+ 1000
+
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+
+
+
+
+ Script status
+ Script status
+ حالة النص
+
+
+
+ Clear console
+ Clear console
+ مسح وحدة التحكم
+
+
+
+ HomepageControls
+
+
+ Form
+
+
+
+
+ I2CPatternUI
+
+
+ Form
+
+
+
+
+ R
+ R
+ اقرأ
+
+
+
+ W
+ W
+ اكتب
+
+
+
+ Read/Write
+ Read/Write
+ اقرأ/اكتب
+
+
+
+ MSB First
+ MSB First
+ البت الأعلى قيمة أولا
+
+
+
+ Address
+ Address
+ العنوان
+
+
+
+ Inter frame space
+ Inter frame space
+ أدخل مسافة الاطار
+
+
+
+ Data
+ Data
+ المعلومات
+
+
+
+ InfoPage
+
+
+ Form
+
+
+
+
+ Forget device
+ Forget device
+ انسى الجهاز
+
+
+
+ Identify
+ Identify
+ عرّف
+
+
+
+ Connect
+ Connect
+ اتصل
+
+
+
+ Calibrate
+ Calibrate
+ عاير
+
+
+
+ InfoWidget
+
+
+ Form
+
+
+
+
+ Move
+ Move
+ تحرك
+
+
+
+ InstrumentNotes
+
+
+ Form
+
+
+
+
+ Notes
+ Notes
+ الملاحظات
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+
+ Insert notes here
+ Insert notes here
+ أدخل الملاحظات هنا
+
+
+
+ LAChannelGroup
+
+
+ Form
+
+
+
+
+ DIO
+ DIO
+
+
+
+
+
+ 12
+
+
+
+
+ None
+ None
+ لا شيء
+
+
+
+ LAChannelManager
+
+
+ Form
+
+
+
+
+ LAManagerHeader
+
+
+ Form
+
+
+
+
+ View
+ View
+ عرض
+
+
+
+ Name
+ Name
+ الاسم
+
+
+
+ DIO
+
+
+
+
+ Trigger
+ Trigger
+ المحفز
+
+
+
+ Select
+ Select
+ اختار
+
+
+
+ LARequiredChannel
+
+
+ Form
+
+
+
+
+ Settings
+ Settings
+ الإعدادات
+
+
+
+
+ Role
+ Role
+ الدور
+
+
+
+ LASettingsWidget
+
+
+ Form
+
+
+
+
+ REQUIRED
+ REQUIRED
+ مطلوب
+
+
+
+ OPTIONAL
+ OPTIONAL
+ اختياري
+
+
+
+ OPTIONS
+ OPTIONS
+ الاختيارات
+
+
+
+ LChannelSettings
+
+
+ Form
+
+
+
+
+ BG Color
+ BG Color
+ لون الخلفية
+
+
+
+ Edge Color
+ Edge Color
+ لون الطرف
+
+
+
+ Low Color
+ Low Color
+ لون قليل
+
+
+
+ High Color
+ High Color
+ لون مرتفع
+
+
+
+ SETTINGS
+ SETTINGS
+ الإعدادات
+
+
+
+ COLOR SETTINGS
+ COLOR SETTINGS
+ إعدادات اللون
+
+
+
+ Name
+ Name
+ الإسم
+
+
+
+ Thickness
+ Thickness
+ السمك
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ LFSRPatternUI
+
+
+ Form
+
+
+
+
+
+ 0x0001
+
+
+
+
+ Generator Polynomial
+ Generator Polynomial
+ مُولد مُتعدِّد الحدود
+
+
+
+ Start State
+ Start State
+ الحالة الأولية
+
+
+
+ Period
+ Period
+ المدة
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Scopy Logic Analyzer
+ سكوبي محلل منطقي
+
+
+
+ Group
+ Group
+ مجموعة
+
+
+
+
+ Channel Settings
+ Channel Settings
+ إعدادات المسار
+
+
+
+
+ -
+ -
+
+
+
+
+ Name
+ Name
+ الإسم
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ Trace Height
+ ارتفاع المنحنى
+
+
+
+ GROUP
+ GROUP
+ المجموعة
+
+
+
+ Stack Decoder:
+ Stack Decoder:
+ محلل المكدس
+
+
+
+ Trigger Settings
+ Trigger Settings
+ إعدادات المحفز
+
+
+
+ Trigger mode
+ Trigger mode
+ وضع المحفز
+
+
+
+ auto
+ auto
+ أوتوماتيكي
+
+
+
+ normal
+ normal
+ عادي
+
+
+
+ Trigger Logic
+ Trigger Logic
+ منطق المحفز
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNAL TRIGGER
+ المحفز الخارجي
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Warning: This feature is not supported on the current firmware version!"
+ "إنذار: هذه الخاصية غير متاحة في نسخة البرنامج الحالية"
+
+
+
+ Source
+ Source
+ المصدر
+
+
+
+ Condition
+ Condition
+ الحالة
+
+
+
+ General Settings
+ General Settings
+ الإعدادات العامة
+
+
+
+ OneShot
+ OneShot
+ لقطة واحدة
+
+
+
+ AVAILABLE CHANNELS
+ AVAILABLE CHANNELS
+ المسارات المتاحة
+
+
+
+ DECODERS
+ DECODERS
+ مزيل الشفرات
+
+
+
+ Close
+ Close
+ أغلق
+
+
+
+ Print
+ Print
+ اطبع
+
+
+
+ Stream
+ Stream
+ تيار
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+
+ Trigger
+ Trigger
+ المحفز
+
+
+
+ ManualCalibration
+
+
+ Form
+
+
+
+
+ Load Calibration
+ Load Calibration
+ تحميل المعايره
+
+
+
+ Save Calibration
+ Save Calibration
+ حفظ المعايره
+
+
+
+ Run automatic
+ Run automatic
+ تشغيل أوتوماتيكي
+
+
+
+ MarkerTable
+
+
+ Form
+
+
+
+
+ Math
+
+
+ Form
+
+
+
+
+ f(t) =
+
+
+
+
+ cos
+
+
+
+
+ 2
+
+
+
+
+ 7
+
+
+
+
+ ,
+
+
+
+
+ 3
+
+
+
+
+ ←
+
+
+
+
+ (
+
+
+
+
+ exp
+
+
+
+
+ 1
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ /
+
+
+
+
+ *
+
+
+
+
+ e
+
+
+
+
+ C
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ )
+
+
+
+
+ log
+
+
+
+
+ t
+
+
+
+
+ +
+
+
+
+
+ 9
+
+
+
+
+ tan
+
+
+
+
+ ^
+
+
+
+
+ 4
+
+
+
+
+ Apply
+
+
+
+
+ pi
+
+
+
+
+ 5
+
+
+
+
+ sin
+
+
+
+
+ MathPanel
+
+
+ Form
+
+
+
+
+ Add channel
+ Add channel
+ إضافة مسار
+
+
+
+ MeasureSettings
+
+
+ Form
+
+
+
+
+ Measure
+ Measure
+ قِس
+
+
+
+ Channel
+ Channel
+ مسار
+
+
+
+ MEASUREMENTS
+ MEASUREMENTS
+ القياسات
+
+
+
+ Counter
+ Counter
+ العداد
+
+
+
+ Display All
+ Display All
+ عرض الكل
+
+
+
+
+ Delete All
+ Delete All
+ مسح الكل
+
+
+
+ STATISTICS
+ STATISTICS
+ الإحصائيات
+
+
+
+ Reset
+ Reset
+ إعادة الضبط
+
+
+
+ CUSTOM SELECTION
+ CUSTOM SELECTION
+ اختيار مخصص
+
+
+
+ Enable
+ Enable
+ تفعيل
+
+
+
+ GATING SETTINGS
+ GATING SETTINGS
+ إعدادات البوابات
+
+
+
+ MeasurementsPanel
+
+
+ Form
+
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ Print
+ اطبع
+
+
+
+ Current Frequency:
+ Current Frequency:
+ التردد الحالي:
+
+
+
+ Sample:
+ Sample:
+ العينة:
+
+
+
+ Average:
+ Average:
+ المتوسط:
+
+
+
+ Phase (°)
+ Phase (°)
+ الدرجة (°)
+
+
+
+ Magnitude (dB)
+ Magnitude (dB)
+ المقدار (dB)
+
+
+
+ °
+
+
+
+
+ 10
+
+
+
+
+ Settings
+ Settings
+ الإعدادات
+
+
+
+
+ REFERENCE
+ REFERENCE
+ المرجع
+
+
+
+ Channel 1
+ Channel 1
+ مسار 1
+
+
+
+ Channel 2
+ Channel 2
+ مسار 2
+
+
+
+ 0
+
+
+
+
+ Gain Mode
+ Gain Mode
+ حالة الربح
+
+
+
+ Automatic
+ Automatic
+ أوتوماتيكي
+
+
+
+ Low
+ Low
+ منخفض
+
+
+
+ High
+ High
+ مرتفع
+
+
+
+ RESPONSE
+ Response
+ الإجابة
+
+
+
+ DC Filtering
+ DC Filtering
+ منقح للتيار الثابت
+
+
+
+
+ On
+ On
+ يعمل
+
+
+
+
+ Off
+ Off
+ لا يعمل
+
+
+
+ SWEEP
+ SWEEP
+ المدى
+
+
+
+ Logarithmic
+ Logarithmic
+ لُوغارِتمِيّ
+
+
+
+ Linear
+ Linear
+ خطي
+
+
+
+ Average
+ Average
+ المتوسط
+
+
+
+
+ Apply
+ Apply
+ طَبِّق
+
+
+
+ Periods
+ Periods
+ المدد
+
+
+
+ DISPLAY
+ DISPLAY
+ عرض
+
+
+
+ Delta Label
+ Delta Label
+ ملصق الدلتا
+
+
+
+ BUFFER PREVIEWER
+ BUFFER PREVIEWER
+ مراجعة المنظم
+
+
+
+ ViewInOsc
+ ViewInOsc
+ اعرض في جهاز رسم الموجات
+
+
+
+ Previous
+ Previous
+ السابق
+
+
+
+ Next
+ Next
+ التالي
+
+
+
+ General Settings
+ General Settings
+ الإعدادات العامة
+
+
+
+ PLOT
+ PLOT
+ ارسم
+
+
+
+ Type
+ Type
+ النوع
+
+
+
+ Bode
+ Bode
+ بود
+
+
+
+ Nyquist
+ Nyquist
+ نايكويست
+
+
+
+ Nichols
+ Nichols
+ نيكولس
+
+
+
+ Line thickness
+ Line thickness
+ سمك الخط
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ EXPORT
+ EXPORT
+ إخراج
+
+
+
+ Export
+ Export
+ إخراج
+
+
+
+ Import
+ Import
+ أورد
+
+
+
+ Snapshot
+ Snapshot
+ لقطة فوتغرافية
+
+
+
+ Remove Reference
+ Remove Reference
+ إزالة المرجع
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+ CURSOR READOUTS
+ CURSOR READOUTS
+ قراءات المؤشر
+
+
+
+ Transparency 0%
+ Transparency 0%
+ الشفافية 0%
+
+
+
+ Position
+ Position
+ الوضع
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+
+
+
+
+ Note
+
+
+ TextLabel
+ TextLabel
+ ملصق نصي
+
+
+
+ NumberPatternUI
+
+
+ Form
+
+
+
+
+ Number
+ Number
+ رقم
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ GeneralSettings
+ الإعدادات العامة
+
+
+
+ General settings
+ General settings
+ الإعدادات العامة
+
+
+
+ VIEWS
+ VIEWS
+ طريقة العرض
+
+
+
+ FFT
+ FFT
+ انتقال فورير السريع
+
+
+
+ X-Y
+
+
+
+
+ Histogram
+ Histogram
+ مخَطط دَرَجي
+
+
+
+ X-Y
+
+
+
+
+ Y-Axis
+ Y-Axis
+ محور Y
+
+
+
+ X-Axis
+ X-Axis
+ محور X
+
+
+
+ dots
+ dots
+ نقط
+
+
+
+ lines
+ lines
+ خطوط
+
+
+
+ X-Y Line thickness
+ X-Y Line thickness
+ سمك الخط
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ 6
+
+
+
+
+ 7
+
+
+
+
+ 8
+
+
+
+
+ 9
+
+
+
+
+ 10
+
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy Oscilloscope
+ جهاز سكوبي لرسم الموجات
+
+
+
+ Print
+ Print
+ اطبع
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+ Measure
+ Measure
+ قِس
+
+
+
+ Trigger
+ Trigger
+ المحفز
+
+
+
+ Close
+ Close
+ أغلق
+
+
+
+ PGCGSettings
+
+
+ Form
+
+
+
+
+ TextLabel
+ TextLabel
+ ملصق نصي
+
+
+
+ Pattern
+ Pattern
+ النمط
+
+
+
+ Output
+ Output
+ النتيجة
+
+
+
+ PP
+ PP
+
+
+
+
+ OD
+
+
+
+
+ CLOCK
+ CLOCK
+ الساعة
+
+
+
+ SETTINGS
+ SETTINGS
+ الإعدادات
+
+
+
+ Name
+ Name
+ الإسم
+
+
+
+ Thickness
+ Thickness
+ السمك
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ COLOR SETTINGS
+ COLOR SETTINGS
+ إعدادات اللون
+
+
+
+ BG Color
+ BG Color
+ لون الخلفية
+
+
+
+ Edge Color
+ Edge Color
+ لون الطرف
+
+
+
+ Low Color
+ Low Color
+ لون قليل
+
+
+
+ High Color
+ High Color
+ لون مرتفع
+
+
+
+ PGChannel
+
+
+ Form
+
+
+
+
+ TextLabel
+ TextLabel
+ ملصق نصي
+
+
+
+ PGChannelGroup
+
+
+ Form
+
+
+
+
+ TextLabel
+ TextLabel
+ ملصق نصي
+
+
+
+ 12
+
+
+
+
+ PGChannelManager
+
+
+ Form
+
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+
+
+
+
+ Enable
+ Enable
+ تفعيل
+
+
+
+ Name
+ Name
+ الإسم
+
+
+
+ DIO
+
+
+
+
+ Select
+ Select
+ اختار
+
+
+
+ PGSettings
+
+
+ Form
+
+
+
+
+ Settings
+ Settings
+ الإعدادات
+
+
+
+ Autoset
+ Autoset
+ ضبط أوتوماتيكي
+
+
+
+ Sample Rate
+ Sample Rate
+ سرعة المعاينة
+
+
+
+ Buffer Size
+ Buffer Size
+ حجم المنظم
+
+
+
+ ExternalClock
+ ExternalClock
+ ساعة خارجية
+
+
+
+ External Clock Frequency
+ External Clock Frequency
+ تردد الساعة الخارجية
+
+
+
+ Reset Instrument
+ Reset Instrument
+ إعادة ضبط الجهاز
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Scopy Pattern Generator
+ سكوبي مولد إشارة
+
+
+
+ Print
+ Print
+ اطبع
+
+
+
+ Group
+ Group
+ مجموعة
+
+
+
+
+ Channel Settings
+ Channel Settings
+ إعدادات المسار
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ Trace Height
+ ارتفاع المنحنى
+
+
+
+ Name
+ Name
+ الإسم
+
+
+
+ Open-Drain
+ Open-Drain
+ الصرف مفتوح
+
+
+
+ Push-Pull
+ Push-Pull
+ ادفع-اسحب
+
+
+
+ GROUP
+ GROUP
+ مجموعة
+
+
+
+ Pattern
+ Pattern
+ النمط
+
+
+
+ Trigger Settings
+ Trigger Settings
+ إعدادات المحفز
+
+
+
+ Trigger mode
+ Trigger mode
+ وضع المحفز
+
+
+
+ auto
+ auto
+ أوتوماتيكي
+
+
+
+ normal
+ normal
+ عادي
+
+
+
+ Trigger Logic
+ Trigger Logic
+ منطق المحفز
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNAL TRIGGER
+ محفز خارجي
+
+
+
+ Source
+ Source
+ المصدر
+
+
+
+ Condition
+ Condition
+ الحالة
+
+
+
+ -
+
+
+
+
+ General Settings
+ General Settings
+ الإعدادات العامة
+
+
+
+ AVAILABLE CHANNELS
+ AVAILABLE CHANNELS
+ المسارات المتاحة
+
+
+
+ Cursors
+ Cursors
+ المؤشرات
+
+
+
+ Trigger
+ Trigger
+ المحفز
+
+
+
+ Close
+ Close
+ أغلق
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy Power Control
+ سكوبي للتحكم في الطاقة
+
+
+
+
+ Set
+ Set
+ ضبط
+
+
+
+
+ Measure
+ Measure
+ قِس
+
+
+
+
+
+
+ VDC
+ VDC
+ فولت تيار مباشر
+
+
+
+ Tracking ratio control
+ Tracking ratio control
+ مراقبة ضبط النسبة
+
+
+
+ Independent
+ Independent
+ مستقل
+
+
+
+ Tracking
+ Tracking
+ تعقب
+
+
+
+ 100
+
+
+
+
+ %
+
+
+
+
+ Positive output
+ Positive output
+ نتيجة إجابية
+
+
+
+
+ Enable
+ Enable
+ تفعيل
+
+
+
+ Negative output
+ Negative output
+ نتيجة سلبية
+
+
+
+ Preferences
+
+
+ Form
+
+
+
+
+ GENERAL
+ GENERAL
+ عام
+
+
+
+ OSCILLOSCOPE
+ OSCILLOSCOPE
+ جهاز لرسم الموجات
+
+
+
+ Enable labels on the plot
+ Enable labels on the plot
+ تفعيل اللاصق على الرسمة
+
+
+
+ Enable graticule
+ Enable graticule
+ تفعيل التقسيم إلى مربعات
+
+
+
+ Enable mini histogram
+ Enable mini histogram
+ تفعيل مصغر من المخَطط الدَرَجي
+
+
+
+ Enable all instrument notes
+ Enable all instrument notes
+ تفعيل الملاحاظات لكل الأجهزة
+
+
+
+ Language (requires app restart)
+ Language (requires app restart)
+ اللغة (تتطلب إعادة تشغيل البرنامج)
+
+
+
+ Restart the application for changes to take effect
+ Restart the application for changes to take effect
+ أعد تشغيل البرنامج لتفعيل التغيرات
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ محاولة معايرة درجة الحرارة (اختباريا)
+
+
+
+ Enable animations
+ Enable animations
+ تفعيل الحركة
+
+
+
+ 1
+
+
+
+
+ Run external scripts (Experimental)
+ Run external scripts (Experimental)
+ تشغيل النصوص الخارجية (اختباريا)
+
+
+
+ SPECTRUM ANALYZER
+ SPECTRUM ANALYZER
+ محلل الطيف
+
+
+
+ Only search marker peaks in visible domain
+ Only search marker peaks in visible domain
+ ابحث عن علامات الذروة في النطاق المرئي فقط
+
+
+
+ Double click to detach a tool
+ Double click to detach a tool
+ انقر مرتين لفصل الاداه
+
+
+
+ Save session when closing Scopy
+ Save session when closing Scopy
+ احفظ الإعدادات حين غلق سكوبي
+
+
+
+ NETWORK ANALYZER
+ NETWORK ANALYZER
+ محلل شبكات
+
+
+
+ Always display 0db value on graph
+ Always display 0db value on graph
+ دائما أظهر قيمة 0dB على الرسم البياني
+
+
+
+ Scriptable manual calibration
+ Scriptable manual calibration
+ معايرة يدوية للنص
+
+
+
+ Show advanced device information
+ Show advanced device information
+ أظهر معلومات متقدمة عن الجهاز
+
+
+
+ LOGIC ANALYZER
+ LOGIC ANALYZER
+ محلل منطقي
+
+
+
+ Display sampling points when zoomed
+ Display sampling points when zoomed
+ أظهر نقط العينات عند التحديق
+
+
+
+ SIGNAL GENERATOR
+ SIGNAL GENERATOR
+ مُولد اشارة
+
+
+
+ Number of displayed periods
+ Number of displayed periods
+ عدد المدد المعروضة
+
+
+
+ Enable digital decoders
+ Enable digital decoders
+ تفعيل فك الشفرة الرقمية
+
+
+
+ Enable sample rate filters
+ Enable sample rate filters
+ تفعيل منقحات سرعة المعاينة
+
+
+
+ Show ADC digital filter config
+ Show ADC digital filter config
+ أظهر إعدادات المنقح الرقمي لمحوّل التماثلي إلى رقمي
+
+
+
+ DEBUG
+ DEBUG
+ نقّح
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ تفعيل تنقيح الرسائل (فقط للتنقيح والإبلاغ عن الأخطاء)
+
+
+
+ Enable Debug Instrument
+ Enable Debug Instrument
+ تفعيل تنقيح الجهاز
+
+
+
+ Enable user notes in main page
+ Enable user notes in main page
+ تفعيل ملاحظات المستخدم في الصفحة الرئيسية
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ Skip calibration if already calibrated (cal values are not default)
+ أهمل المعايرة اذا تمت المعايرة سابقا (المعايرة ليس لها قيم أولية)
+
+
+
+ Reset Scopy
+ Reset Scopy
+ أعد تشغيل سكوبي
+
+
+
+ PulsePatternUI
+
+
+ Form
+
+
+
+
+ Low
+ Low
+ الحد الأدنى
+
+
+
+
+
+
+ 0
+
+
+
+
+ High
+ High
+ الحد الأعلى
+
+
+
+ 100
+
+
+
+
+ Counter Init
+ Counter Init
+ بداية العداد
+
+
+
+ Delay
+ Delay
+ مدة التأخير
+
+
+
+
+ 1
+
+
+
+
+ Delay polarity
+ Delay polarity
+ قطبية التأخير
+
+
+
+ Number of pulses
+ Number of pulses
+ عدد النبضات
+
+
+
+ QObject
+
+
+ Period
+ Period
+
+
+
+
+ Frequency
+
+
+
+
+ Min
+
+
+
+
+ Max
+
+
+
+
+ Peak-peak
+
+
+
+
+ Mean
+
+
+
+
+ Cycle Mean
+
+
+
+
+ RMS
+
+
+
+
+ Cycle RMS
+
+
+
+
+ AC RMS
+
+
+
+
+ Area
+
+
+
+
+ Cycle Area
+
+
+
+
+ Low
+
+
+
+
+ High
+
+
+
+
+ Amplitude
+
+
+
+
+ Middle
+
+
+
+
+ +Over
+
+
+
+
+ -Over
+
+
+
+
+ Rise
+
+
+
+
+ Fall
+
+
+
+
+ +Width
+
+
+
+
+ -Width
+
+
+
+
+ +Duty
+
+
+
+
+ -Duty
+
+
+
+
+ RegisterWidget
+
+
+ Form
+
+
+
+
+ RunSingleWidget
+
+
+ Form
+
+
+
+
+ Run
+ Run
+ تشغيل
+
+
+
+ Single
+ Single
+ مرة
+
+
+
+ SPIPatternUI
+
+
+ Form
+
+
+
+
+ MSB First
+ MSB First
+ البت الأعلى قيمة أولا
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ 0
+
+
+
+
+ CLK Phase
+ CLK Phase
+ درجة الساعة
+
+
+
+ CS Polarity
+ CS Polarity
+ قطبية انتقاء الدائرة
+
+
+
+ CLK Polarity
+ CLK Polarity
+ قطبية الساعة
+
+
+
+ Bytes per frame
+ Bytes per frame
+ البايت في الإطار
+
+
+
+ Inter frame space
+ Inter frame space
+ أدخل مسافة الاطار
+
+
+
+ Data
+ Data
+ المعلومات
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Scopy Signal Generator
+ سكوبي مولد إشارة
+
+
+
+ Constant
+ Constant
+ ثابت
+
+
+
+ Waveform
+ Waveform
+ الشكل الموجي
+
+
+
+ Sine
+ Sine
+ جيب الزاوية
+
+
+
+ Square
+ Square
+ مربع
+
+
+
+ Triangle
+ Triangle
+ مثلث
+
+
+
+ Trapezoidal
+ Trapezoidal
+ رباعي شبه منحرف
+
+
+
+ Rising Ramp Sawtooth
+ Rising Ramp Sawtooth
+ مطلع سن المنشار
+
+
+
+ Falling Ramp Sawtooth
+ Falling Ramp Sawtooth
+ منزل سن المنشار
+
+
+
+ Stair Step
+ Stair Step
+ درج السلم
+
+
+
+ TIMING
+ TIMING
+ التوقيت
+
+
+
+ Buffer
+ Buffer
+ منظم
+
+
+
+ FILE
+ FILE
+ ملف
+
+
+
+ Path
+ Path
+ مسار
+
+
+
+
+ No file loaded
+ No file loaded
+ لم يتم تحميل الملف
+
+
+
+ Format
+ Format
+ التنسيق
+
+
+
+ Size
+ Size
+ الحجم
+
+
+
+ 0 samples
+ 0 samples
+ لا يوجد عينات
+
+
+
+ Load file
+ Load file
+ حمّل الملف
+
+
+
+ Channel
+ Channel
+ مسار
+
+
+
+ SCALING
+ SCALING
+ تغير الحجم
+
+
+
+ Math
+ Math
+ الحساب
+
+
+
+ NOISE
+ NOISE
+ الشوشرة
+
+
+
+ None
+ None
+ لا شيء
+
+
+
+ Uniform
+ Uniform
+ منتظم
+
+
+
+ Gaussian
+ Gaussian
+ غاوسي
+
+
+
+ Laplacian
+ Laplacian
+ لابلاس
+
+
+
+ Impulse
+ Impulse
+ دَفعة
+
+
+
+ OTHER
+ OTHER
+ آخرى
+
+
+
+ Line thickness
+ Line thickness
+ سمك الخط
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Close
+ Close
+ أغلق
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+
+
+
+
+ Print
+ Print
+ اطبع
+
+
+
+ Preset
+ Preset
+ ضبط مسبق
+
+
+
+
+ dBFS
+ dBFS
+
+
+
+
+ Sample:
+ Sample:
+ العينة:
+
+
+
+ Average Sample:
+ Average Sample:
+ متوسط العينات
+
+
+
+ Marker_n 0.000 Hz 0dB
+ Marker_n 0.000 Hz 0dB
+ علامة_n 0Hz 0dB
+
+
+
+ Channel
+ Channel
+ مسار
+
+
+
+ Type
+ Type
+ النوع
+
+
+
+ Sample
+ Sample
+ العينة
+
+
+
+ and other types
+ and other types
+ والأنواع الآخرى
+
+
+
+ Window
+ Window
+ نافذة
+
+
+
+ Uniform (none)
+ Uniform (none)
+ منتظم (لا شيء)
+
+
+
+ and others windows
+ and others windows
+ والنوافذ الآخرى
+
+
+
+ Averaging
+ Averaging
+ عدد العينات لحساب المتوسط
+
+
+
+ Apply
+ Apply
+ طَبِّق
+
+
+
+ CH Thickness
+ CH Thickness
+ سمك المسار
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ History
+ History
+ التاريخ
+
+
+
+ Gain mode
+ Gain mode
+ حالة الربح
+
+
+
+
+ Low
+ Low
+ منخفض
+
+
+
+ High
+ High
+ مرتفع
+
+
+
+ Snapshot
+ Snapshot
+ لقطة فوتغرافية
+
+
+
+ General settings
+ General settings
+ الإعدادات العامة
+
+
+
+ Export
+ Export
+ إخراج
+
+
+
+
+ Sweep
+ Sweep
+ المدى
+
+
+
+ Logarithmic
+ Logarithmic
+ لُوغارِتمِيّ
+
+
+
+ Linear
+ Linear
+ خطي
+
+
+
+ FREQUENCY
+ FREQUENCY
+ التردد
+
+
+
+ AMPLITUDE
+ AMPLITUDE
+ ارتفاع الموجة الأقصى
+
+
+
+ Resolution BW
+ Resolution BW
+ عرض نطاق التبيين
+
+
+
+ Units
+ Units
+ الوحدات
+
+
+
+
+ Markers
+ Markers
+ العلامات
+
+
+
+ Settings
+ Settings
+ الإعدادات
+
+
+
+ MARKER
+ MARKER
+ العلامة
+
+
+
+ Normal
+ Normal
+ عادي
+
+
+
+ Delta
+ Delta
+ دلتا
+
+
+
+ Peak
+ Peak
+ الذروة
+
+
+
+
+ Peak
+ Peak
+ الذروة
+
+
+
+
+ Ampl
+ Ampl
+ ارتفاع الموجة الأقصى
+
+
+
+ GENERAL
+ GENERAL
+ عام
+
+
+
+ Marker Table
+ Marker Table
+ جدول العلامات
+
+
+
+ Import Reference Channels
+ Import Reference Channels
+ إيراد مرجع المسارات
+
+
+
+ No file selected!
+ No file selected!
+ لم يتم تحميل الملف
+
+
+
+ Browse
+ Browse
+ تصفح
+
+
+
+ Import
+ Import
+ أورد
+
+
+
+ SpinBoxA
+
+
+ Form
+
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+
+
+
+
+ Statistic
+
+
+ Form
+
+
+
+
+ Avg:
+ Avg:
+ المتوسط:
+
+
+
+
+
+ 0.000
+
+
+
+
+ Min:
+ Min:
+ الحد الأدنى
+
+
+
+ Max:
+ Max:
+ الحد الأقصى
+
+
+
+ 1
+
+
+
+
+ Measurement
+ Measurement
+ القياسات
+
+
+
+ StatisticsPanel
+
+
+ Form
+
+
+
+
+ ToolLauncher
+
+
+ Scopy
+ Scopy
+ سكوبي
+
+
+
+ Home
+ Home
+ الصفحة الرئيسية
+
+
+
+ Save
+ Save
+ احفظ
+
+
+
+ Load
+ Load
+ حمّل
+
+
+
+ Preferences
+ Preferences
+ التفضيلات
+
+
+
+ Notes
+ Notes
+ الملاحظات
+
+
+
+ Quit
+ Quit
+ خروج
+
+
+
+ ADC Offset
+ ADC Offset
+ إزاحة المحول الرقمي التناظري
+
+
+
+ ADC Gain
+ ADC Gain
+ ربح المحول الرقمي التناظري
+
+
+
+ Reset ADC Calibration
+ Reset ADC Calibration
+ إعادة معايرة المحول الرقمي التناظري
+
+
+
+ TriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ Trigger Settings
+ إعدادات المحفز
+
+
+
+ Trigger mode
+ Trigger mode
+ وضع المحفز
+
+
+
+ auto
+ auto
+ أوتوماتيكي
+
+
+
+ normal
+ normal
+ عادي
+
+
+
+
+ Source
+ Source
+ المصدر
+
+
+
+ INTERNAL (ANALOG)
+ INTERNAL (ANALOG)
+ داخلي (أنالوج)
+
+
+
+
+ Condition
+ Condition
+ الحالة
+
+
+
+
+ Rising Edge
+ Rising Edge
+ وقت النهوض
+
+
+
+
+ Falling Edge
+ Falling Edge
+ وقت الهبوط
+
+
+
+
+ Low
+ Low
+ منخفض
+
+
+
+
+ High
+ High
+ مرتفع
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ This feature is not supported while the Mixed Signal View is enabled!
+ هذه الخاصية غير متاحة عند تفعيل عرض الاشارة المختلطة
+
+
+
+ DIGITAL
+ DIGITAL
+ رقمي
+
+
+
+ Any Edge
+ Any Edge
+ أي وقت
+
+
+
+ M2K daisychain position
+ M2K daisychain position
+ M2k وضع السلسة التعاقبية
+
+
+
+ TRIGGER LOGIC
+ TRIGGER LOGIC
+ منطق التحفيز
+
+
+
+ Analog - Digital
+ Analog - Digital
+ قياسي - رقمي
+
+
+
+ Digital OR Analog
+ Digital OR Analog
+ قياسي أو رقمي
+
+
+
+ Digital AND Analog
+ Digital AND Analog
+ قياسي ورقمي
+
+
+
+ Digital XOR Analog
+ Digital XOR Analog
+ قياسي XOR رقمي
+
+
+
+ !Digital OR Analog
+ !Digital OR Analog
+ قياسي أو !(رقمي)
+
+
+
+ !Digital AND Analog
+ !Digital AND Analog
+ قياسي و!(رقمي)
+
+
+
+ !Digital XOR Analog
+ !Digital XOR Analog
+ قياسي XOR !(رقمي)
+
+
+
+ EXTERNAL TRIGGER OUT
+ EXTERNAL TRIGGER OUT
+ مخرج المحفز الخارجي
+
+
+
+ UARTPatternUI
+
+
+ Form
+
+
+
+
+ Stop
+ Stop
+ توقف
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ Baud
+ Baud
+ سرعة الإرسال
+
+
+
+
+ 9600
+
+
+
+
+ 1200
+
+
+
+
+ 2400
+
+
+
+
+ 4800
+
+
+
+
+ 14400
+
+
+
+
+ 19200
+
+
+
+
+ 28800
+
+
+
+
+ 38400
+
+
+
+
+ 57600
+
+
+
+
+ 115200
+
+
+
+
+ 230400
+
+
+
+
+ Parity
+ Parity
+ الزوجية
+
+
+
+ NONE
+ NONE
+ لا شيء
+
+
+
+ ODD
+ ODD
+ فردي
+
+
+
+ EVEN
+ EVEN
+ زوجي
+
+
+
+ MARK
+ MARK
+ علامة
+
+
+
+ SPACE
+ SPACE
+ مسافة
+
+
+
+ Parameters
+ Parameters
+ المعامِلات
+
+
+
+ Data to Send
+ Data to Send
+ البيانات للإرسال
+
+
+
+ UserNotePage
+
+
+ Form
+
+
+
+
+ Remove note
+ Remove note
+ إزالة الملحوظة
+
+
+
+ UserNotes
+
+
+ Form
+
+
+
+
+ Save
+ Save
+ احفظ
+
+
+
+ File path
+ File path
+ مسار الملف
+
+
+
+ Browse
+ Browse
+ تصفح
+
+
+
+ Note name
+ Note name
+ اسم الملحوظة
+
+
+
+ WalkingPatternUI
+
+
+ Form
+
+
+
+
+ Walking level
+ Walking level
+ مستوى المشي
+
+
+
+ 0
+
+
+
+
+
+ 1
+
+
+
+
+ Frequency
+ Frequency
+ التردد
+
+
+
+ 1000
+
+
+
+
+ Direction
+ Direction
+ الاتجاه
+
+
+
+ Right
+ Right
+ يمين
+
+
+
+ Left
+ Left
+ يسار
+
+
+
+ Length
+ Length
+ الطول
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+
+
+
+
+
+ /div
+
+
+
+
+ Waiting
+
+
+
+
+ Triggered
+
+
+
+
+ Stop
+
+
+
+
+ Auto
+
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+
+
+
+
+ Phase
+
+
+
+
+ Duty
+
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+
+
+
+
+ Waiting for connection ...
+
+
+
+
+
+ Context info
+
+
+
+
+ Add
+
+
+
+
+ Warning
+
+
+
+
+ Error: Unable to find host: No such host is known!
+
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+
+
+
+
+ off
+
+
+
+
+ adiscope::DMM
+
+
+ Timer
+
+
+
+
+ Stop
+
+
+
+
+ Run
+
+
+
+
+ Export
+
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+
+
+
+
+ No file selected
+
+
+
+
+
+ File is open in another program
+
+
+
+
+
+ Choose a file
+
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+
+
+
+
+ JavaScript (*.js)
+
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+
+
+
+
+ Run
+
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+
+
+
+
+ Name
+
+
+
+
+ Export
+
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+
+
+
+
+ Open file
+
+
+
+
+ Import selected channels
+
+
+
+
+ No file selected
+
+
+
+
+ Export
+
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+
+
+
+
+ Import all
+
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+
+
+
+
+ Connected
+
+
+
+
+ Your hardware revision does not support the identify feature
+
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+
+
+
+
+ Can't identify this device.
+
+
+
+
+ Can't identify device. Please try to update your firmware!
+
+
+
+
+ Your hardware revision does not support the identify feature
+
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+
+
+
+
+ ini (*.ini)
+
+
+
+
+
+ °C
+
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+
+
+
+
+ Marker
+
+
+
+
+ Channel
+
+
+
+
+ Frequency
+
+
+
+
+ Magnitude
+
+
+
+
+ Type
+
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+
+
+
+
+
+ Name
+
+
+
+
+
+ Measure
+
+
+
+
+
+ Stats
+
+
+
+
+ Vertical
+
+
+
+
+
+ Recover
+
+
+
+
+
+ Delete All
+
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+
+
+
+
+ Frequency (Hz)
+
+
+
+
+ Magnitude(dB)
+
+
+
+
+ Phase (°)
+
+
+
+
+ Samples count
+
+
+
+
+ Samps/decade
+
+
+
+
+ Step
+
+
+
+
+ Amplitude
+
+
+
+
+ Offset
+
+
+
+
+ Max. Magnitude
+
+
+
+
+ Min. Magnitude
+
+
+
+
+ Max. Phase
+
+
+
+
+ Min. Phase
+
+
+
+
+
+ Settling time
+
+
+
+
+ Before Buffer
+
+
+
+
+ After Buffer
+
+
+
+
+
+ Sample:
+
+
+
+
+
+ Current Frequency:
+
+
+
+
+
+ DC Voltage:
+
+
+
+
+
+ Response channel voltage < 50mV!
+
+
+
+
+
+ Low
+
+
+
+
+
+ High
+
+
+
+
+
+ Gain Mode:
+
+
+
+
+ Transparency
+
+
+
+
+ Image
+
+
+
+
+ Save to
+
+
+
+
+ Import
+
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+ All Files(*)
+
+
+
+
+ Export
+
+
+
+
+ Average:
+
+
+
+
+ Running
+
+
+
+
+ Stopping...
+
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+
+
+
+
+
+ Position
+
+
+
+
+ Volts/Div
+
+
+
+
+
+ Add Channel
+
+
+
+
+
+
+ Export
+
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+
+ All Files(*)
+
+
+
+
+ Transparency
+
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+
+
+
+
+ Math
+
+
+
+
+ Browse
+
+
+
+
+ No file selected
+
+
+
+
+
+ Reference
+
+
+
+
+ Logic
+
+
+
+
+ Add channel
+
+
+
+
+ Import selected channels
+
+
+
+
+ Enable Mixed Signal View
+
+
+
+
+ Import
+
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+
+ Snapshot
+
+
+
+
+ Filter 1 - Enable -
+
+
+
+
+ Filter 2 - Enable -
+
+
+
+
+
+ Save
+
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Value
+
+
+
+
+
+ Disable
+
+
+
+
+
+ Enable
+
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+
+
+
+
+ By resetting scopy you will lose the current configuration!
+
+
+
+
+ Do you want to reset?
+
+
+
+
+ Load language
+
+
+
+
+ Language files (*.qm)
+
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+
+
+
+
+ Image
+
+
+
+
+ Export File Name
+
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+
+
+
+
+
+
+ Single
+
+
+
+
+
+
+
+
+ Stop
+
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+
+
+
+
+ π rad
+
+
+
+
+
+
+
+
+ ns
+
+
+
+
+
+
+
+
+ μs
+
+
+
+
+
+
+
+
+ ms
+
+
+
+
+
+
+
+
+ s
+
+
+
+
+
+
+ Phase
+
+
+
+
+ μVolts p-p
+
+
+
+
+ mVolts p-p
+
+
+
+
+ Volts p-p
+
+
+
+
+
+
+ Amplitude
+
+
+
+
+
+
+
+ μVolts
+
+
+
+
+
+
+
+
+ mVolts
+
+
+
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Offset
+
+
+
+
+ mHz
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency
+
+
+
+
+ Rising
+
+
+
+
+ Falling
+
+
+
+
+ Rise Time
+
+
+
+
+ Fall Time
+
+
+
+
+ High Time
+
+
+
+
+ Low Time
+
+
+
+
+
+ SampleRate
+
+
+
+
+ Record Length
+
+
+
+
+ Value
+
+
+
+
+ Duty Cycle
+
+
+
+
+
+
+ samples
+
+
+
+
+ Open File
+
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+
+
+
+
+ Time (s)
+
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+
+
+
+
+ dBFS
+
+
+
+
+ dBV
+
+
+
+
+ dBu
+
+
+
+
+ Vpeak
+
+
+
+
+ Vrms
+
+
+
+
+ V/√Hz
+
+
+
+
+ Sample
+
+
+
+
+ Peak Hold
+
+
+
+
+ Peak Hold Continous
+
+
+
+
+ Min Hold
+
+
+
+
+ Min Hold Continous
+
+
+
+
+ Linear RMS
+
+
+
+
+ Linear dB
+
+
+
+
+ Exponential RMS
+
+
+
+
+ Exponential dB
+
+
+
+
+ Flat top
+
+
+
+
+ Rectangular
+
+
+
+
+ Triangular (Bartlett)
+
+
+
+
+ Hamming
+
+
+
+
+ Hann
+
+
+
+
+ Blackman-Harris
+
+
+
+
+ Kaiser
+
+
+
+
+ Manual
+
+
+
+
+ Peak
+
+
+
+
+ Delta
+
+
+
+
+ Fixed
+
+
+
+
+ Scale/Div
+
+
+
+
+
+ Top
+
+
+
+
+
+ Bottom
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency Position
+
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+
+ All Files(*)
+
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ Snapshot
+
+
+
+
+ Sample:
+
+
+
+
+ Average Sample:
+
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+
+
+
+
+ Stop
+
+
+
+
+ Center
+
+
+
+
+ Span
+
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+
+
+
+
+ Calibration skipped because already calibrated.
+
+
+
+
+ Calibrated
+
+
+
+
+ Save session
+
+
+
+
+
+ Scopy-Files (*.ini)
+
+
+
+
+ Load session
+
+
+
+
+ Click to open the home menu
+
+
+
+
+ Click to disconnect the device
+
+
+
+
+ Click to save the current session
+
+
+
+
+
+ Click to load a session
+
+
+
+
+
+ Select a device first
+
+
+
+
+
+
+ Click to connect the device
+
+
+
+
+ Report a bug!
+
+
+
+
+ Connecting...
+
+
+
+
+ Disconnecting...
+
+
+
+
+ Connect
+
+
+
+
+ Calibrating...
+
+
+
+
+ Calibration Failed
+
+
+
+
+
+ Disconnect
+
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+
+
+
+
+ Calibrating
+
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+
+
+
+
+ Spectrum Analyzer
+
+
+
+
+ Network Analyzer
+
+
+
+
+ Signal Generator
+
+
+
+
+ Logic Analyzer
+
+
+
+
+ Pattern Generator
+
+
+
+
+ Digital IO
+
+
+
+
+ Voltmeter
+
+
+
+
+ Power Supply
+
+
+
+
+ Debugger
+
+
+
+
+ Calibration
+
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+
+
+
+
+ Oscilloscope
+
+
+
+
+
+ Logic Analyzer
+
+
+
+
+
+ μVolts
+
+
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+ Level
+
+
+
+
+ Hysteresis
+
+
+
+
+ External Trigger In
+
+
+
+
+ None
+
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+
+
+
+
+ Invalid or empty file!
+
+
+
+
+ Path:
+
+
+
+
+ Warning: The file is empty!
+
+
+
+
+ Warning: The path is invalid!
+
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+
+
+
+
+ Nr of samples
+
+
+
+
+ Delay
+
+
+
+
+ Transparency
+
+
+
+
+ Select a decoder to add
+
+
+
+
+ External Trigger In
+
+
+
+
+ Oscilloscope
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+ Value Change Dump(*.vcd)
+
+
+
+
+ All Files(*)
+
+
+
+
+ Export
+
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ dioChannel
+
+
+ Form
+
+
+
+
+
+ 0
+
+
+
+
+ in
+
+
+
+
+ out
+
+
+
+
+ 1
+
+
+
+
+ dioElement
+
+
+ Form
+
+
+
+
+ 0 - 7
+
+
+
+
+ Individual
+
+
+
+
+ Group
+
+
+
+
+ in
+
+
+
+
+ out
+
+
+
+
+ 127
+
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+
+
+
+
+ PulseScript
+
+
+
+
+ NumberOfPulses
+
+
+
+
+ Samples/Pulse
+
+
+
+
+ Hi
+
+
+
+
+ Lo
+
+
+
+
+ Frequency:
+
+
+
+
+ PushButton
+
+
+
+
+ INVALID
+
+
+
+
diff --git a/resources/translations/scopy_de.ts b/resources/translations/scopy_de.ts
new file mode 100644
index 0000000000..4e758c249c
--- /dev/null
+++ b/resources/translations/scopy_de.ts
@@ -0,0 +1,5967 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+ Form
+
+
+
+ BaseMenuItem
+
+
+ Form
+ Form
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+ Form
+
+
+
+ Init Value
+ Anfangswert
+
+
+
+
+ 0
+ 0
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ 1000
+ 1000
+
+
+
+ Start counter
+ Zähler starten
+
+
+
+ End counter
+ Zähler beenden
+
+
+
+ 65535
+ 65535
+
+
+
+ Increment
+ Zuwachs
+
+
+
+ 1
+ 1
+
+
+
+ BitfieldWidget
+
+
+ Form
+ Form
+
+
+
+
+ TextLabel
+ TextLabel
+
+
+
+ 0x
+ 0x
+
+
+
+ CalibrationTemplate
+
+
+ Form
+ Form
+
+
+
+ Calibration info here
+ Kalibrierungsinfo hier
+
+
+
+ Set
+ Einstellen
+
+
+
+ Measured
+ Gemessen
+
+
+
+ Enter value here
+ Geben Sie hier den Wert ein
+
+
+
+ Restart
+ Neustart
+
+
+
+ Next
+ Nächster
+
+
+
+ Finish
+ Fertig
+
+
+
+ Channel
+
+
+ Form
+ Form
+
+
+
+ Channel
+ Kanal
+
+
+
+ ChannelSettings
+
+
+ Form
+ Form
+
+
+
+ Channel
+ Kanal
+
+
+
+ MATH
+
+
+
+
+ Edit Function
+ Funktion bearbeiten
+
+
+
+ HORIZONTAL
+
+
+
+
+ VERTICAL
+ VERTIKAL
+
+
+
+ SETTINGS
+ EINSTELLUNGEN
+
+
+
+ CH Thickness
+ CH Dicke
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Memory depth
+ Speichertiefe
+
+
+
+ Probe
+Attenuation
+ Tastkopfdämpfung
+
+
+
+ 0.1X
+ 0.1X
+
+
+
+ 1X
+ 1X
+
+
+
+ 10X
+ 10X
+
+
+
+ 100X
+ 100X
+
+
+
+ Curve Style
+ Kurvenstil
+
+
+
+ Lines
+ Linien
+
+
+
+ Dots
+ Punkte
+
+
+
+ Steps
+ Schritte
+
+
+
+ Sticks
+ Sticks
+
+
+
+ Smooth
+ Glatt
+
+
+
+ Software
+AC Coupling
+
+
+
+
+ Filter 1 - Enabled
+ Filter 1 - Aktiviert
+
+
+
+
+ TC
+ TC
+
+
+
+
+ Gain
+ Dazugewinnen
+
+
+
+
+ 0
+ 0
+
+
+
+ Filter 2 - Enabled
+ Filter 2 - Aktiviert
+
+
+
+ Autoset
+ Autoset
+
+
+
+ Snapshot
+ Schnappschuss
+
+
+
+ Connect
+
+
+ Form
+ Form
+
+
+
+ URI (Hostname)
+ URI (Hostname)
+
+
+
+ Connect
+ Verbinden
+
+
+
+ Context info
+ Kontextinfo
+
+
+
+ ConstantPatternUI
+
+
+ Form
+ Form
+
+
+
+ Constant
+ Konstante
+
+
+
+ 0
+ 0
+
+
+
+ 1
+ 1
+
+
+
+ CursorReadouts
+
+
+ Form
+ Form
+
+
+
+ Δt =
+ Δt =
+
+
+
+
+ 0.000ms
+ 0,000ms
+
+
+
+ CurT2 =
+ CurT2 =
+
+
+
+ 1/Δt =
+ 1/Δt =
+
+
+
+ - 000.000 ms
+ - 000.000 ms
+
+
+
+ - 000.000 mHz
+ - 000.000 mHz
+
+
+
+ CurT1 =
+ CurT1 =
+
+
+
+ CurV2
+ CurV2
+
+
+
+ ΔV
+
+
+
+
+ CurV1
+ CurV1
+
+
+
+
+ 000.000 mV
+ 000.000 mV
+
+
+
+ - 000.000 mV
+ - 000.000 mV
+
+
+
+
+
+ =
+ =
+
+
+
+ CursorsSettings
+
+
+ Form
+ Form
+
+
+
+ Cursors
+ Cursor
+
+
+
+ Normal
+ Normal
+
+
+
+ Track
+ Spur
+
+
+
+ 0
+ 0
+
+
+
+ HORIZONTAL
+
+
+
+
+ VERTICAL
+ VERTIKAL
+
+
+
+ CURSOR READOUTS
+
+
+
+
+ Transparency 0%
+ Transparenz 0%
+
+
+
+ Position
+ Position
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+ Form
+
+
+
+ DMM
+
+
+
+ MAX
+ MAX
+
+
+
+
+ MIN
+ MIN
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Run
+ Run
+
+
+
+ Channel 1
+ Kanal 1
+
+
+
+
+ DC (Direct Current)
+ DC (Gleichstrom)
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ AC (20 Hz - 40 kHz)
+
+
+
+
+ 1s
+ 1s
+
+
+
+
+ 10s
+ 10s
+
+
+
+
+ 60s
+ 60s
+
+
+
+
+ History
+ Verlauf
+
+
+
+
+ Line thickness
+ Dicke der Linie
+
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+ 1
+ 1
+
+
+
+
+ 1.5
+ 1.5
+
+
+
+
+ 2
+ 2
+
+
+
+
+ 2.5
+ 2.5
+
+
+
+
+ 3
+ 3
+
+
+
+
+ 3.5
+ 3.5
+
+
+
+
+ 4
+ 4
+
+
+
+
+ 4.5
+ 4.5
+
+
+
+
+ 5
+ 5
+
+
+
+ Channel 2
+ Kanal 2
+
+
+
+ PEAK HOLD
+
+
+
+
+ Reset
+ Zurücksetzen
+
+
+
+ DATA LOGGING
+
+
+
+
+ Browse
+ Durchsuchen
+
+
+
+ Append
+ Anhängen
+
+
+
+ Choose a file
+ Wähle eine Datei aus
+
+
+
+ Overwrite
+ Überschreiben
+
+
+
+ DbClickButtons
+
+
+ Form
+ Form
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ Debugger
+
+
+ MainWindow
+ Hauptfenster
+
+
+
+ SCRIPTING ENGINE
+ SCRIPTING ENGINE
+
+
+
+ Load Script
+ Skript laden
+
+
+
+ Run
+ Run
+
+
+
+ Filename
+ Dateiname
+
+
+
+
+ Read
+ Lesen
+
+
+
+ Device
+ Gerät
+
+
+
+ New Window
+ Neues Fenster
+
+
+
+
+ Write
+ Schreiben
+
+
+
+
+ Value:
+ Wert:
+
+
+
+ DEVICE SELECTION
+ GERÄTEAUSWAHL
+
+
+
+ Detailed Register Map
+ Detaillierte Registerkarte
+
+
+
+ Address:
+ Adresse:
+
+
+
+ 0x0000
+ 0x0000
+
+
+
+ Display mode:
+ Anzeigemodus:
+
+
+
+ <value>
+ <Wert>
+
+
+
+
+ 0x
+ 0x
+
+
+
+ Description:
+ Beschreibung:
+
+
+
+ Default Value:
+ Standardwert:
+
+
+
+ Source:
+ Quelle:
+
+
+
+ Enable AutoRead
+ Aktiviere AutoRead
+
+
+
+ REGISTER MAP SETTINGS
+ KARTENEINSTELLUNGEN REGISTRIEREN
+
+
+
+ DetachDragZone
+
+
+ Form
+ Form
+
+
+
+ Drag here to detach!
+ Zum Abnehmen hierher ziehen!
+
+
+
+ Device
+
+
+ Form
+ Form
+
+
+
+ DigitalIO
+
+
+ Form
+ Form
+
+
+
+ Run
+ Run
+
+
+
+ DigitalIoMenu
+
+
+ Form
+ Form
+
+
+
+ PollingRate
+ Abfragerate
+
+
+
+ 1000
+ 1000
+
+
+
+ Enable Outputs
+ Ausgänge aktivieren
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+ Form
+
+
+
+ Trigger Settings
+ Trigger-Einstellungen
+
+
+
+ Trigger mode
+ Trigger-Mode
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normal
+
+
+
+ Trigger Logic
+ Trigger Logik
+
+
+
+ OR
+ ODER
+
+
+
+ AND
+ UND
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNER TRIGGER
+
+
+
+ Source
+ Quelle
+
+
+
+ Condition
+ Bedingung
+
+
+
+ None
+ Keiner
+
+
+
+ EXTERNAL TRIGGER OUT
+ EXTERNER TRIGGER AUS
+
+
+
+ DragZone
+
+
+ Form
+ Form
+
+
+
+ EmptyPatternUI
+
+
+ Form
+ Form
+
+
+
+ ExportSettings
+
+
+ Form
+ Form
+
+
+
+ EXPORT
+
+
+
+
+ Export All
+ Alle exportieren
+
+
+
+ Export
+ Export
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+ Form
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ 1000
+ 1000
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+ Form
+
+
+
+ Script status
+ Skriptstatus
+
+
+
+ Clear console
+ Ausgabe zurücksetzen
+
+
+
+ HomepageControls
+
+
+ Form
+ Form
+
+
+
+ I2CPatternUI
+
+
+ Form
+ Form
+
+
+
+ R
+ R
+
+
+
+ W
+ W
+
+
+
+ Read/Write
+ Lesen/Schreiben
+
+
+
+ MSB First
+ MSB zuerst
+
+
+
+ Address
+ Adresse
+
+
+
+ Inter frame space
+ Zwischenrahmenraum
+
+
+
+ Data
+ Daten
+
+
+
+ InfoPage
+
+
+ Form
+ Form
+
+
+
+ Forget device
+ Gerät vergessen
+
+
+
+ Identify
+ Identifizieren
+
+
+
+ Connect
+ Verbinden
+
+
+
+ Calibrate
+ Kalibrieren
+
+
+
+ InfoWidget
+
+
+ Form
+ Form
+
+
+
+ Move
+ Bewegung
+
+
+
+ InstrumentNotes
+
+
+ Form
+ Form
+
+
+
+ Notes
+ Anmerkungen
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+
+ Insert notes here
+ Fügen Sie hier Notizen ein
+
+
+
+ LAChannelGroup
+
+
+ Form
+ Form
+
+
+
+ DIO
+ DIO
+
+
+
+
+ 12
+ 12
+
+
+
+ None
+ Keiner
+
+
+
+ LAChannelManager
+
+
+ Form
+ Form
+
+
+
+ LAManagerHeader
+
+
+ Form
+ Form
+
+
+
+ View
+ Ansicht
+
+
+
+ Name
+ Name
+
+
+
+ DIO
+ DIO
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Select
+ Wählen
+
+
+
+ LARequiredChannel
+
+
+ Form
+ Form
+
+
+
+ Settings
+ die Einstellungen
+
+
+
+
+ Role
+ Rolle
+
+
+
+ LASettingsWidget
+
+
+ Form
+ Form
+
+
+
+ REQUIRED
+ BENÖTIGT
+
+
+
+ OPTIONAL
+ OPTIONAL
+
+
+
+ OPTIONS
+ OPTIONEN
+
+
+
+ LChannelSettings
+
+
+ Form
+ Form
+
+
+
+ BG Color
+ Hintergrund Farbe
+
+
+
+ Edge Color
+ Kantenfarbe
+
+
+
+ Low Color
+ Niedrige Farbe
+
+
+
+ High Color
+ Hohe Farbe
+
+
+
+ SETTINGS
+ Einstellungen
+
+
+
+ COLOR SETTINGS
+ Frabeinstellungen
+
+
+
+ Name
+ Name
+
+
+
+ Thickness
+ Dicke
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ LFSRPatternUI
+
+
+ Form
+ Form
+
+
+
+
+ 0x0001
+ 0x0001
+
+
+
+ Generator Polynomial
+ Generatorpolynom
+
+
+
+ Start State
+ Startstatus
+
+
+
+ Period
+ Zeitraum
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Scopy Logic Analyzer
+
+
+
+ Group
+ Gruppe
+
+
+
+
+ Channel Settings
+ Kanaleinstellungen
+
+
+
+
+ -
+ -
+
+
+
+ Name
+ Name
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ Tracehöhe
+
+
+
+ GROUP
+ GRUPPIERE
+
+
+
+ Stack Decoder:
+ Stapeldecoder:
+
+
+
+ Trigger Settings
+ Trigger-Einstellungen
+
+
+
+ Trigger mode
+ Trigger-Mode
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normal
+
+
+
+ Trigger Logic
+ Trigger Logik
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNER TIGGER
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Warnung: Diese Funktion wird in der aktuellen Firmware-Version nicht unterstützt!"
+
+
+
+ Source
+ Quelle
+
+
+
+ Condition
+ Bedingung
+
+
+
+ General Settings
+ Allgemeine Einstellungen
+
+
+
+ OneShot
+ OneShot
+
+
+
+ AVAILABLE CHANNELS
+ VERFÜGBARE KANÄLE
+
+
+
+ DECODERS
+
+
+
+
+ Close
+ Schließen
+
+
+
+ Print
+ Drucken
+
+
+
+ Stream
+ Strom
+
+
+
+ Cursors
+ Cursor
+
+
+
+
+ Trigger
+ Trigger
+
+
+
+ ManualCalibration
+
+
+ Form
+ Form
+
+
+
+ Load Calibration
+ Kalibrierung laden
+
+
+
+ Save Calibration
+ Kalibrierung speichern
+
+
+
+ Run automatic
+ Automatisch ausführen
+
+
+
+ MarkerTable
+
+
+ Form
+ Form
+
+
+
+ Math
+
+
+ Form
+ Form
+
+
+
+ f(t) =
+
+
+
+
+ cos
+ cos
+
+
+
+ 2
+ 2
+
+
+
+ 7
+ 7
+
+
+
+ ,
+ ,
+
+
+
+ 3
+ 3
+
+
+
+ ←
+ ←
+
+
+
+ (
+ (
+
+
+
+ exp
+ exp
+
+
+
+ 1
+ 1
+
+
+
+ 8
+ 8
+
+
+
+ -
+ -
+
+
+
+ /
+ /
+
+
+
+ *
+ *
+
+
+
+ e
+ e
+
+
+
+ C
+ C
+
+
+
+ 0
+ 0
+
+
+
+ 6
+ 6
+
+
+
+ )
+ )
+
+
+
+ log
+ log
+
+
+
+ t
+ t
+
+
+
+ +
+ +
+
+
+
+ 9
+ 9
+
+
+
+ tan
+ tan
+
+
+
+ ^
+ ^
+
+
+
+ 4
+ 4
+
+
+
+ Apply
+ Anwenden
+
+
+
+ pi
+ pi
+
+
+
+ 5
+ 5
+
+
+
+ sin
+ sin
+
+
+
+ MathPanel
+
+
+ Form
+ Form
+
+
+
+ Add channel
+ Kanal hinzufügen
+
+
+
+ MeasureSettings
+
+
+ Form
+ Form
+
+
+
+ Measure
+ Messen
+
+
+
+ Channel
+ Kanal
+
+
+
+ MEASUREMENTS
+ MESSUNGEN
+
+
+
+ Counter
+ Zähler
+
+
+
+ Display All
+ Alle anzeigen
+
+
+
+
+ Delete All
+ Alles löschen
+
+
+
+ STATISTICS
+ STATISTIKEN
+
+
+
+ Reset
+ Zurücksetzen
+
+
+
+ CUSTOM SELECTION
+ Benutzerdefinierte Auswahl
+
+
+
+ Enable
+ Aktivieren
+
+
+
+ GATING SETTINGS
+ EINSTELLUNGEN
+
+
+
+ MeasurementsPanel
+
+
+ Form
+ Form
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ Drucken
+
+
+
+ Current Frequency:
+ Aktuelle Frequenz:
+
+
+
+ Sample:
+
+
+
+
+ Average:
+ Mittelwert:
+
+
+
+ Phase (°)
+ Phase (°)
+
+
+
+ Magnitude (dB)
+ Magnitude (dB)
+
+
+
+ °
+ °
+
+
+
+ 10
+ 10
+
+
+
+ Settings
+ die Einstellungen
+
+
+
+
+ REFERENCE
+ REFERENZ
+
+
+
+ Channel 1
+ Kanal 1
+
+
+
+ Channel 2
+ Kanal 2
+
+
+
+ 0
+ 0
+
+
+
+ Gain Mode
+ Verstärkungsmodus
+
+
+
+ Automatic
+ Automatisch
+
+
+
+ Low
+ Niedrig
+
+
+
+ High
+ Hoch
+
+
+
+ RESPONSE
+ RESPONSE
+
+
+
+ DC Filtering
+ DC-Filterung
+
+
+
+
+ On
+ An
+
+
+
+
+ Off
+ Aus
+
+
+
+ SWEEP
+ SWEEP
+
+
+
+ Logarithmic
+ Logarithmisch
+
+
+
+ Linear
+ Linear
+
+
+
+ Average
+ Durchschnittlich
+
+
+
+
+ Apply
+ Anwenden
+
+
+
+ Periods
+ Perioden
+
+
+
+ DISPLAY
+ DARSETELLUNG
+
+
+
+ Delta Label
+ Delta Label
+
+
+
+ BUFFER PREVIEWER
+
+
+
+
+ ViewInOsc
+ ViewInOsc
+
+
+
+ Previous
+ Bisherige
+
+
+
+ Next
+ Nächste
+
+
+
+ General Settings
+ Allgemeine Einstellungen
+
+
+
+ PLOT
+
+
+
+
+ Type
+ Art
+
+
+
+ Bode
+ Bode
+
+
+
+ Nyquist
+ Nyquist
+
+
+
+ Nichols
+ Nichols
+
+
+
+ Line thickness
+ Dicke der Linie
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ EXPORT
+
+
+
+
+ Export
+ Export
+
+
+
+ Import
+ Importieren
+
+
+
+ Snapshot
+ Schnappschuss
+
+
+
+ Remove Reference
+ Referenz entfernen
+
+
+
+ Cursors
+ Cursor
+
+
+
+ CURSOR READOUTS
+ CURSOR READOUTS
+
+
+
+ Transparency 0%
+ Transparenz 0%
+
+
+
+ Position
+ Position
+
+
+
+ Cursors
+
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+ Form
+
+
+
+ Note
+
+
+ TextLabel
+ TextLabel
+
+
+
+ NumberPatternUI
+
+
+ Form
+ Form
+
+
+
+ Number
+ Nummer
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ Allgemeine Einstellungen
+
+
+
+ General settings
+ Allgemeine Einstellungen
+
+
+
+ VIEWS
+ ANSICHTEN
+
+
+
+ FFT
+ FFT
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Histogram
+ Histogramm
+
+
+
+ X-Y
+
+
+
+
+ Y-Axis
+ Y-Achse
+
+
+
+ X-Axis
+ X-Achse
+
+
+
+ dots
+ Punkte
+
+
+
+ lines
+ Linien
+
+
+
+ X-Y Line thickness
+ X-Y Linienstärke
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ 6
+ 6
+
+
+
+ 7
+ 7
+
+
+
+ 8
+ 8
+
+
+
+ 9
+ 9
+
+
+
+ 10
+ 10
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy-Oszilloskop
+
+
+
+ Print
+ Drucken
+
+
+
+ Cursors
+ Cursor
+
+
+
+ Measure
+ Messen
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Close
+ Schließen
+
+
+
+ PGCGSettings
+
+
+ Form
+ Form
+
+
+
+ TextLabel
+ TextLabel
+
+
+
+ Pattern
+ Muster
+
+
+
+ Output
+ Ausgabe
+
+
+
+ PP
+ PP
+
+
+
+ OD
+ OD
+
+
+
+ CLOCK
+ TAKT
+
+
+
+ SETTINGS
+ EINSTELLUNGEN
+
+
+
+ Name
+ Name
+
+
+
+ Thickness
+ Dicke
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ COLOR SETTINGS
+ FARBEINSTELLUNGEN
+
+
+
+ BG Color
+ Hintergrund Farbe
+
+
+
+ Edge Color
+ Kantenfarbe
+
+
+
+ Low Color
+ Niedrige Farbe
+
+
+
+ High Color
+ Hohe Farbe
+
+
+
+ PGChannel
+
+
+ Form
+ Form
+
+
+
+ TextLabel
+ TextLabel
+
+
+
+ PGChannelGroup
+
+
+ Form
+ Form
+
+
+
+ TextLabel
+ TextLabel
+
+
+
+ 12
+ 12
+
+
+
+ PGChannelManager
+
+
+ Form
+ Form
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+ Form
+
+
+
+ Enable
+ Aktivieren
+
+
+
+ Name
+ Name
+
+
+
+ DIO
+ DIO
+
+
+
+ Select
+ Wählen
+
+
+
+ PGSettings
+
+
+ Form
+ Form
+
+
+
+ Settings
+ die Einstellungen
+
+
+
+ Autoset
+ Autoset
+
+
+
+ Sample Rate
+ Samplerate
+
+
+
+ Buffer Size
+ Puffergröße
+
+
+
+ ExternalClock
+ Externer Takt
+
+
+
+ External Clock Frequency
+ Externe Taktfrequenz
+
+
+
+ Reset Instrument
+ Instrument zurücksetzen
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Scopy Pattern Generator
+
+
+
+ Print
+ Drucken
+
+
+
+ Group
+ Gruppe
+
+
+
+
+ Channel Settings
+ Kanaleinstellungen
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ Tracehöhe
+
+
+
+ Name
+ Name
+
+
+
+ Open-Drain
+ Open-Drain
+
+
+
+ Push-Pull
+ Push-Pull
+
+
+
+ GROUP
+ GRUPPIEREN
+
+
+
+ Pattern
+ Muster
+
+
+
+ Trigger Settings
+ Trigger-Einstellungen
+
+
+
+ Trigger mode
+ Trigger-Mode
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normal
+
+
+
+ Trigger Logic
+ Trigger Logik
+
+
+
+ EXTERNAL TRIGGER
+ EXTERNER TRIGGER
+
+
+
+ Source
+ Quelle
+
+
+
+ Condition
+ Bedingung
+
+
+
+ -
+ -
+
+
+
+ General Settings
+ Allgemeine Einstellungen
+
+
+
+ AVAILABLE CHANNELS
+ VERFÜGBARE KANÄLE
+
+
+
+ Cursors
+ Cursor
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Close
+ Schließen
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy Power Control
+
+
+
+
+ Set
+ Eingestellt
+
+
+
+
+ Measure
+ Gemessen
+
+
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Tracking ratio control
+ Steuerung des Nachführungsverhältnisses
+
+
+
+ Independent
+ Unabhängig
+
+
+
+ Tracking
+ Nachführung
+
+
+
+ 100
+ 100
+
+
+
+ %
+ %
+
+
+
+ Positive output
+ Positiver Ausgang
+
+
+
+
+ Enable
+ Aktivieren
+
+
+
+ Negative output
+ Negativer Ausgang
+
+
+
+ Preferences
+
+
+ Form
+ Form
+
+
+
+ GENERAL
+ ALLGEMEIN
+
+
+
+ OSCILLOSCOPE
+ OSZILLOSKOP
+
+
+
+ Enable labels on the plot
+ Beschriftungen im Plot aktivieren
+
+
+
+ Enable graticule
+ Raster aktivieren
+
+
+
+ Enable mini histogram
+ Aktiviere das Mini-Histogramm
+
+
+
+ Enable all instrument notes
+ Aktiviere alle Instrumenten Hinweise
+
+
+
+ Language (requires app restart)
+ Sprache (erfordert einen Neustart der App)
+
+
+
+ Restart the application for changes to take effect
+
+Starten Sie die Anwendung neu, damit die Änderungen wirksam werden
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ Versuch einer temperaturbasierten Kalibrierung (EXPERIMENTELL)
+
+
+
+ Enable animations
+ Animationen aktivieren
+
+
+
+ 1
+ 1
+
+
+
+ Run external scripts (Experimental)
+ Führe externe Skripte aus (experimentell)
+
+
+
+ SPECTRUM ANALYZER
+
+
+
+
+ Only search marker peaks in visible domain
+ Nur Suchmarker-Peaks im sichtbaren Bereich
+
+
+
+ Double click to detach a tool
+ Doppelklicken um ein Werkzeug abzunehmen
+
+
+
+ Save session when closing Scopy
+ Sitzung beim Schließen von Scopy speichern
+
+
+
+ NETWORK ANALYZER
+ NETZWERK ANALYZER
+
+
+
+ Always display 0db value on graph
+ Zeige im Diagramm immer den Wert 0 dB an
+
+
+
+ Scriptable manual calibration
+ Skriptfähige manuelle Kalibrierung
+
+
+
+ Show advanced device information
+ Erweiterte Geräteinformationen anzeigen
+
+
+
+ LOGIC ANALYZER
+ LOGIK ANALYZER
+
+
+
+ Display sampling points when zoomed
+ Zeige beim Zoomen Abtastpunkte an
+
+
+
+ SIGNAL GENERATOR
+
+
+
+
+ Number of displayed periods
+ Anzahl dargestellter Perioden
+
+
+
+ Enable digital decoders
+ Aktiviere digitale Decoder
+
+
+
+ Enable sample rate filters
+ Aktiviere Abtastratenfilter
+
+
+
+ Show ADC digital filter config
+ ADC-Digitalfilterkonfiguration anzeigen
+
+
+
+ DEBUG
+ DEBUGGEN
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ Debug-Meldungen aktivieren (nur zum Debuggen, Fehlerberichterstattung)
+
+
+
+ Enable Debug Instrument
+ Debug-Instrument aktivieren
+
+
+
+ Enable user notes in main page
+ Aktiviere Benutzerhinweise auf der Hauptseite
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ Kalibrierung überspringen, falls bereits kalibriert (Kalibrierungswerte sind nicht Standard)
+
+
+
+ Reset Scopy
+ Scopy zurücksetzen
+
+
+
+ PulsePatternUI
+
+
+ Form
+ Form
+
+
+
+ Low
+ Low
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ High
+ High
+
+
+
+ 100
+ 100
+
+
+
+ Counter Init
+ Zähler Init
+
+
+
+ Delay
+ Verzögern
+
+
+
+
+ 1
+ 1
+
+
+
+ Delay polarity
+ Polarität verzögern
+
+
+
+ Number of pulses
+ Anzahl der Impulse
+
+
+
+ QObject
+
+
+ Period
+ Zeitraum
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ Min
+ Min
+
+
+
+ Max
+ Max
+
+
+
+ Peak-peak
+ Peak-Peak
+
+
+
+ Mean
+ Mittelwert
+
+
+
+ Cycle Mean
+ Zyklusmittelwert
+
+
+
+ RMS
+ RMS
+
+
+
+ Cycle RMS
+ Zyklus RMS
+
+
+
+ AC RMS
+ AC RMS
+
+
+
+ Area
+ Bereich
+
+
+
+ Cycle Area
+ Zyklusbereich
+
+
+
+ Low
+ Low
+
+
+
+ High
+ High
+
+
+
+ Amplitude
+ Amplitude
+
+
+
+ Middle
+ Mitte
+
+
+
+ +Over
+ +Über
+
+
+
+ -Over
+ -Über
+
+
+
+ Rise
+ Anstieg
+
+
+
+ Fall
+ Fallen
+
+
+
+ +Width
+ +Breite
+
+
+
+ -Width
+ -Breite
+
+
+
+ +Duty
+ +Tasverhältnis
+
+
+
+ -Duty
+ -Tasverhältnis
+
+
+
+ RegisterWidget
+
+
+ Form
+ Form
+
+
+
+ RunSingleWidget
+
+
+ Form
+ Form
+
+
+
+ Run
+ Run
+
+
+
+ Single
+ Single
+
+
+
+ SPIPatternUI
+
+
+ Form
+ Form
+
+
+
+ MSB First
+ MSB zuerst
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+ 0
+ 0
+
+
+
+ CLK Phase
+ CLK-Phase
+
+
+
+ CS Polarity
+ CS Polarität
+
+
+
+ CLK Polarity
+ CLK-Polarität
+
+
+
+ Bytes per frame
+ Bytes pro Frame
+
+
+
+ Inter frame space
+ Zwischenrahmenraum
+
+
+
+ Data
+ Daten
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Scopy-Signalgenerator
+
+
+
+ Constant
+ Konstante
+
+
+
+ Waveform
+ Wellenform
+
+
+
+ Sine
+ Sinus
+
+
+
+ Square
+ Quadrat
+
+
+
+ Triangle
+ Dreieck
+
+
+
+ Trapezoidal
+ Trapezförmig
+
+
+
+ Rising Ramp Sawtooth
+ Steigende Rampe Sägezahn
+
+
+
+ Falling Ramp Sawtooth
+ Fallende Rampe Sägezahn
+
+
+
+ Stair Step
+ Treppenstufe
+
+
+
+ TIMING
+
+ZEITLICHE KOORDINIERUNG
+
+
+
+ Buffer
+ Puffer
+
+
+
+ FILE
+ DATEI
+
+
+
+ Path
+ Pfad
+
+
+
+
+ No file loaded
+ Keine Datei geladen
+
+
+
+ Format
+ Format
+
+
+
+ Size
+ Größe
+
+
+
+ 0 samples
+ 0 Samples
+
+
+
+ Load file
+ Lade Datei
+
+
+
+ Channel
+ Kanal
+
+
+
+ SCALING
+ SKALIERUNG
+
+
+
+ Math
+ Mathematik
+
+
+
+ NOISE
+ RAUSCHEN
+
+
+
+ None
+ Keiner
+
+
+
+ Uniform
+ Uniform
+
+
+
+ Gaussian
+ Gaußsch
+
+
+
+ Laplacian
+ Laplace
+
+
+
+ Impulse
+ Impuls
+
+
+
+ OTHER
+ ANDERE
+
+
+
+ Line thickness
+ Dicke der Linie
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Close
+ Schließen
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+ Form
+
+
+
+ Print
+ Drucken
+
+
+
+ Preset
+ Voreinstellung
+
+
+
+
+ dBFS
+ dBFS
+
+
+
+ Sample:
+ Stichprobe:
+
+
+
+ Average Sample:
+
+
+
+
+ Marker_n 0.000 Hz 0dB
+ Marker_n 0.000 Hz 0dB
+
+
+
+ Channel
+ Kanal
+
+
+
+ Type
+ Art
+
+
+
+ Sample
+ Sample
+
+
+
+ and other types
+ und andere Arten
+
+
+
+ Window
+ Fenster
+
+
+
+ Uniform (none)
+ Uniform (keine)
+
+
+
+ and others windows
+ und andere Fenster
+
+
+
+ Averaging
+ Mittelwertbildung
+
+
+
+ Apply
+ Anwenden
+
+
+
+ CH Thickness
+ CH Dicke
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ History
+ Verlauf
+
+
+
+ Gain mode
+ Verstärkungsmodus
+
+
+
+
+ Low
+ Niedrig
+
+
+
+ High
+ Hoch
+
+
+
+ Snapshot
+ Schnappschuss
+
+
+
+ General settings
+ Allgemeine Einstellungen
+
+
+
+ Export
+ Export
+
+
+
+
+ Sweep
+ SWEEP
+
+
+
+ Logarithmic
+ Logarithmisch
+
+
+
+ Linear
+ Linear
+
+
+
+ FREQUENCY
+ FREQUENZ
+
+
+
+ AMPLITUDE
+ AMPLITUDE
+
+
+
+ Resolution BW
+ Auflösung BW
+
+
+
+ Units
+ Einheiten
+
+
+
+
+ Markers
+ Marker
+
+
+
+ Settings
+ die Einstellungen
+
+
+
+ MARKER
+ MARKER
+
+
+
+ Normal
+ Normal
+
+
+
+ Delta
+ Delta
+
+
+
+ Peak
+
+
+
+
+
+ Peak
+ Maximum
+
+
+
+
+ Ampl
+ Ampl
+
+
+
+ GENERAL
+ ALLGEMEIN
+
+
+
+ Marker Table
+ Markertabelle
+
+
+
+ Import Reference Channels
+ Referenzkanäle importieren
+
+
+
+ No file selected!
+ Keine Datei ausgewählt!
+
+
+
+ Browse
+ Durchsuche
+
+
+
+ Import
+ Importieren
+
+
+
+ SpinBoxA
+
+
+ Form
+ Form
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+ Form
+
+
+
+ Statistic
+
+
+ Form
+ Form
+
+
+
+ Avg:
+ Durchschn:
+
+
+
+
+
+ 0.000
+ 0.000
+
+
+
+ Min:
+ Min:
+
+
+
+ Max:
+ Max:
+
+
+
+ 1
+ 1
+
+
+
+ Measurement
+ Messung
+
+
+
+ StatisticsPanel
+
+
+ Form
+ Form
+
+
+
+ ToolLauncher
+
+
+ Scopy
+ Scopy
+
+
+
+ Home
+
+
+
+
+ Save
+ Speichern
+
+
+
+ Load
+ Laden
+
+
+
+ Preferences
+ Einstellungen
+
+
+
+ Notes
+ Anmerkungen
+
+
+
+ Quit
+ Verlassen
+
+
+
+ ADC Offset
+ ADC-Offset
+
+
+
+ ADC Gain
+ ADC Gain
+
+
+
+ Reset ADC Calibration
+ ADC-Kalibrierung zurücksetzen
+
+
+
+ TriggerSettings
+
+
+ Form
+ Form
+
+
+
+ Trigger Settings
+ Trigger-Einstellungen
+
+
+
+ Trigger mode
+ Trigger-Mode
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normal
+
+
+
+
+ Source
+ Quelle
+
+
+
+ INTERNAL (ANALOG)
+ INTERN (ANALOG)
+
+
+
+
+ Condition
+ Bedingung
+
+
+
+
+ Rising Edge
+ Steigende Flanke
+
+
+
+
+ Falling Edge
+ Fallende Flanke
+
+
+
+
+ Low
+ Low
+
+
+
+
+ High
+ High
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ Diese Funktion wird nicht unterstützt, solange die gemischte Signalansicht aktiviert ist!
+
+
+
+ DIGITAL
+ DIGITAL
+
+
+
+ Any Edge
+ Beliebige Flanke
+
+
+
+ M2K daisychain position
+ M2K Daisychain Position
+
+
+
+ TRIGGER LOGIC
+ TRIGGER LOGIK
+
+
+
+ Analog - Digital
+ Analog Digital
+
+
+
+ Digital OR Analog
+ Digital ODER Analog
+
+
+
+ Digital AND Analog
+ Digital UND Analog
+
+
+
+ Digital XOR Analog
+ Digital XOR Analog
+
+
+
+ !Digital OR Analog
+ !Digital ODER Analog
+
+
+
+ !Digital AND Analog
+ !Digital UND Analog
+
+
+
+ !Digital XOR Analog
+ !Digital XOR Analog
+
+
+
+ EXTERNAL TRIGGER OUT
+ EXTERNER TRIGGER AUSGANG
+
+
+
+ UARTPatternUI
+
+
+ Form
+ Form
+
+
+
+ Stop
+ Stop
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ Baud
+ Baud
+
+
+
+
+ 9600
+ 9600
+
+
+
+ 1200
+ 1200
+
+
+
+ 2400
+ 2400
+
+
+
+ 4800
+ 4800
+
+
+
+ 14400
+ 14400
+
+
+
+ 19200
+ 19200
+
+
+
+ 28800
+ 28800
+
+
+
+ 38400
+ 38400
+
+
+
+ 57600
+ 57600
+
+
+
+ 115200
+ 115200
+
+
+
+ 230400
+ 230400
+
+
+
+ Parity
+ Parity
+
+
+
+ NONE
+ KEINER
+
+
+
+ ODD
+ Ungerade
+
+
+
+ EVEN
+ Gerade
+
+
+
+ MARK
+ MARK
+
+
+
+ SPACE
+ SPACE
+
+
+
+ Parameters
+ Parameter
+
+
+
+ Data to Send
+ Zu sendende Daten
+
+
+
+ UserNotePage
+
+
+ Form
+ Form
+
+
+
+ Remove note
+ Notiz entfernen
+
+
+
+ UserNotes
+
+
+ Form
+ Form
+
+
+
+ Save
+ Speichern
+
+
+
+ File path
+ Dateipfad
+
+
+
+ Browse
+ Durchsuche
+
+
+
+ Note name
+ Name notieren
+
+
+
+ WalkingPatternUI
+
+
+ Form
+ Form
+
+
+
+ Walking level
+ Gehhöhe
+
+
+
+ 0
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ 1000
+ 1000
+
+
+
+ Direction
+ Richtung
+
+
+
+ Right
+ Recht
+
+
+
+ Left
+ Links
+
+
+
+ Length
+ Länge
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+
+
+
+
+
+ /div
+ / div
+
+
+
+ Waiting
+ Warten
+
+
+
+ Triggered
+ Ausgelöst
+
+
+
+ Stop
+ Stop
+
+
+
+ Auto
+ Auto
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ Phase
+ Phase
+
+
+
+ Duty
+ Tastverhältnis
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ Verbinden
+
+
+
+ Waiting for connection ...
+ Auf Verbindung warten ...
+
+
+
+
+ Context info
+ Kontextinfo
+
+
+
+ Add
+ Hinzufügen
+
+
+
+ Warning
+ Warnung
+
+
+
+ Error: Unable to find host: No such host is known!
+ Fehler: Host kann nicht gefunden werden: Ein solcher Host ist nicht bekannt!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ an
+
+
+
+ off
+ aus
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ Timer
+
+
+
+ Stop
+ Stop
+
+
+
+ Run
+ Run
+
+
+
+ Export
+ Export
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ Durch Kommas getrennte Wertedateien (* .csv) ;; Alle Dateien (*)
+
+
+
+ No file selected
+ Keine Datei ausgewählt
+
+
+
+
+ File is open in another program
+ Die Datei ist in einem anderen Programm geöffnet
+
+
+
+
+ Choose a file
+ Wähle eine Datei aus
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ Datei speichern
+
+
+
+ JavaScript (*.js)
+ JavaScript (*.js)
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ Stop
+
+
+
+ Run
+ Run
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ Kanäle
+
+
+
+ Name
+ Name
+
+
+
+ Export
+ Export
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ Open file
+ Datei öffnen
+
+
+
+ Import selected channels
+ Importieren Sie ausgewählte Kanäle
+
+
+
+ No file selected
+ Keine Datei ausgewählt
+
+
+
+ Export
+ Export
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Durch Kommas getrennte Wertedateien (* .csv); Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ Importieren
+
+
+
+ Import all
+ Alle importieren
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+ Fehler: Verbindung fehlgeschlagen!
+
+
+
+ Connected
+ Verbunden
+
+
+
+ Your hardware revision does not support the identify feature
+ Ihre Hardwareversion unterstützt die Identifizierungsfunktion nicht
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+ M2K
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ Nicht verbunden
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ Trennen Sie vor der Kalibrierung immer die analogen Ein-/Ausgänge
+
+
+
+ Can't identify this device.
+ Dieses Gerät kann nicht identifiziert werden.
+
+
+
+ Can't identify device. Please try to update your firmware!
+ Gerät kann nicht identifiziert werden. Bitte versuchen Sie Ihre Firmware zu aktualisieren!
+
+
+
+ Your hardware revision does not support the identify feature
+ Ihre Hardwareversion unterstützt die Identifizierungsfunktion nicht
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ Datei speichern
+
+
+
+ ini (*.ini)
+ ini (*.ini)
+
+
+
+
+ °C
+
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+ Id
+
+
+
+ Marker
+ Marker
+
+
+
+ Channel
+ Kanal
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ Magnitude
+ Magnitude
+
+
+
+ Type
+ Art
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ Horizontal
+
+
+
+
+ Name
+ Name
+
+
+
+
+ Measure
+ Messen
+
+
+
+
+ Stats
+ Statistiken
+
+
+
+ Vertical
+ Vertikal
+
+
+
+
+ Recover
+ Wiederherstellen
+
+
+
+
+ Delete All
+ Alles löschen
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ Gestoppt
+
+
+
+ Frequency (Hz)
+ Frequenz (Hz)
+
+
+
+ Magnitude(dB)
+ Größe (dB)
+
+
+
+ Phase (°)
+ Phase (°)
+
+
+
+ Samples count
+ Samples zählen
+
+
+
+ Samps/decade
+ Samps/Dekade
+
+
+
+ Step
+ Schritt
+
+
+
+ Amplitude
+ Amplitude
+
+
+
+ Offset
+ Offset
+
+
+
+ Max. Magnitude
+ Max. Magnitude
+
+
+
+ Min. Magnitude
+ Min. Magnitude
+
+
+
+ Max. Phase
+ Max. Phase
+
+
+
+ Min. Phase
+ Min. Phase
+
+
+
+
+ Settling time
+ Einschwingzeit
+
+
+
+ Before Buffer
+ Vor dem Puffer
+
+
+
+ After Buffer
+ Nach dem Puffer
+
+
+
+
+ Sample:
+
+
+
+
+
+ Current Frequency:
+ Momentane Frequenz
+
+
+
+
+ DC Voltage:
+ Gleichspannung
+
+
+
+
+ Response channel voltage < 50mV!
+ Antwortkanalspannung <50mV!
+
+
+
+
+ Low
+ Niedrig
+
+
+
+
+ High
+ Hoch
+
+
+
+
+ Gain Mode:
+
+
+
+
+ Transparency
+ Transparenz
+
+
+
+ Image
+ Bild
+
+
+
+ Save to
+ Speichern unter
+
+
+
+ Import
+ Importieren
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Durch Kommas getrennte Wertedateien (* .csv); Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+ Comma-separated values files (*.csv)
+ Durch Kommas getrennte Wertedateien (* .csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+ All Files(*)
+ Alle Dateien(*)
+
+
+
+ Export
+ Export
+
+
+
+ Average:
+ Mittelwert:
+
+
+
+ Running
+ Laufen
+
+
+
+ Stopping...
+ Anhalten ...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ Transparenz
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ Zeitbasis
+
+
+
+
+ Position
+ Position
+
+
+
+ Volts/Div
+ Volts/Div
+
+
+
+
+ Add Channel
+ Kanal hinzufügen
+
+
+
+
+
+ Export
+ Export
+
+
+
+
+ Comma-separated values files (*.csv)
+ Durch Kommas getrennte Wertedateien (* .csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+
+ All Files(*)
+ Alle Dateien(*)
+
+
+
+ Transparency
+ Transparenz
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Warnung: Diese Funktion wird in der aktuellen Firmware-Version nicht unterstützt!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * Wenn die gemischte Signalansicht aktiviert ist, wird das LogicAnalyzer-Tool deaktiviert!
+** Der Trigger kann deaktiviert oder nur auf den digitalen oder analogen Kanälen eingestellt werden, nicht auf beiden gleichzeitig!
+
+
+
+ Math
+ Mathematik
+
+
+
+ Browse
+ Durchsuche
+
+
+
+ No file selected
+ Keine Datei ausgewählt
+
+
+
+
+ Reference
+ Referenz
+
+
+
+ Logic
+ Logik
+
+
+
+ Add channel
+ Kanal hinzufügen
+
+
+
+ Import selected channels
+ Importieren Sie ausgewählte Kanäle
+
+
+
+ Enable Mixed Signal View
+ Aktivieren Sie die gemischte Signalansicht
+
+
+
+ Import
+ Importieren
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Durch Kommas getrennte Wertedateien (* .csv); Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+
+ Snapshot
+ Schnappschuss
+
+
+
+ Filter 1 - Enable -
+ Filter 1 - Aktivieren -
+
+
+
+ Filter 2 - Enable -
+ Filter 2 - Aktivieren -
+
+
+
+
+ Save
+ Speichern
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+ mVolt
+
+
+
+
+ Volts
+ Volt
+
+
+
+
+ Value
+ Wert
+
+
+
+
+ Disable
+ Deaktivieren
+
+
+
+
+ Enable
+ Aktivieren
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ Diese Änderung wird erst nach einem Scopy-Reset angewendet.
+
+
+
+ By resetting scopy you will lose the current configuration!
+ Durch das Zurücksetzen von scopy verlieren Sie die aktuelle Konfiguration!
+
+
+
+ Do you want to reset?
+ Möchten Sie zurücksetzen?
+
+
+
+ Load language
+ Sprache laden
+
+
+
+ Language files (*.qm)
+ Sprachdateien (* .qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ Unterlagen
+
+
+
+ Image
+ Bild
+
+
+
+ Export File Name
+ Dateinamen exportieren
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ Samplerate
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ Run
+
+
+
+
+
+ Single
+ Single
+
+
+
+
+
+
+
+ Stop
+ Stop
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ Frequenz
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+ Grad
+
+
+
+ π rad
+ π rad
+
+
+
+
+
+
+
+ ns
+ ns
+
+
+
+
+
+
+
+ μs
+ μs
+
+
+
+
+
+
+
+ ms
+ ms
+
+
+
+
+
+
+
+ s
+ s
+
+
+
+
+
+ Phase
+ Phase
+
+
+
+ μVolts p-p
+ μVolts p-p
+
+
+
+ mVolts p-p
+ mVolts p-p
+
+
+
+ Volts p-p
+ Volts p-p
+
+
+
+
+
+ Amplitude
+ Amplitude
+
+
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+
+
+
+ mVolts
+ mVolt
+
+
+
+
+
+
+
+ Volts
+ Volt
+
+
+
+
+ Offset
+ Offset
+
+
+
+ mHz
+ mHz
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency
+ Frequenz
+
+
+
+ Rising
+ Steigend
+
+
+
+ Falling
+ Fallen
+
+
+
+ Rise Time
+ Anstiegszeit
+
+
+
+ Fall Time
+ Abfallzeit
+
+
+
+ High Time
+ Höchste Zeit
+
+
+
+ Low Time
+ Niedrige Zeit
+
+
+
+
+ SampleRate
+ Samplerate
+
+
+
+ Record Length
+ Aufzeichnungslänge
+
+
+
+ Value
+ Wert
+
+
+
+ Duty Cycle
+ Auslastungsgrad
+
+
+
+
+
+ samples
+
+
+
+
+ Open File
+ Datei öffnen
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ Durch Kommas getrennte Wertedateien (* .csv); Tabulatorgetrennte Wertedateien (* .txt); Wellenform-Audiodateiformat (* .wav); Matlab-Dateien (* .mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ Spannung (V)
+
+
+
+ Time (s)
+ Zeit (en)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ Export
+
+
+
+ dBFS
+ dBFS
+
+
+
+ dBV
+ dBV
+
+
+
+ dBu
+ dBu
+
+
+
+ Vpeak
+ Vpeak
+
+
+
+ Vrms
+ Vrms
+
+
+
+ V/√Hz
+ V/√Hz
+
+
+
+ Sample
+ Sample
+
+
+
+ Peak Hold
+ Peak Hold
+
+
+
+ Peak Hold Continous
+ Peak Hold Continuous
+
+
+
+ Min Hold
+ Min Hold
+
+
+
+ Min Hold Continous
+ Min Hold Continuous
+
+
+
+ Linear RMS
+ Linearer Effektivwert
+
+
+
+ Linear dB
+ Linear dB
+
+
+
+ Exponential RMS
+ Exponentieller Effektivwert
+
+
+
+ Exponential dB
+ Exponentielle dB
+
+
+
+ Flat top
+ Flat top
+
+
+
+ Rectangular
+ Rechteckig
+
+
+
+ Triangular (Bartlett)
+ Dreieckig (Bartlett)
+
+
+
+ Hamming
+ Hamming
+
+
+
+ Hann
+ Hann
+
+
+
+ Blackman-Harris
+ Blackman-Harris
+
+
+
+ Kaiser
+ Kaiser
+
+
+
+ Manual
+ Manuell
+
+
+
+ Peak
+ Maximum
+
+
+
+ Delta
+ Delta
+
+
+
+ Fixed
+ Fest
+
+
+
+ Scale/Div
+ Skala/Div
+
+
+
+
+ Top
+ Max
+
+
+
+
+ Bottom
+ Min
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency Position
+ Frequenzposition
+
+
+
+
+ Comma-separated values files (*.csv)
+ Durch Kommas getrennte Wertedateien (* .csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+
+ All Files(*)
+ Alle Dateien(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Durch Kommas getrennte Wertedateien (* .csv); Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+ Snapshot
+ Schnappschuss
+
+
+
+ Sample:
+ Stichprobe:
+
+
+
+ Average Sample:
+ Durchschnittliche Samples:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ Start
+
+
+
+ Stop
+ Stop
+
+
+
+ Center
+ Center
+
+
+
+ Span
+ Spanne
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ Einstellungen
+
+
+
+ Calibration skipped because already calibrated.
+ Kalibrierung übersprungen, da bereits kalibriert.
+
+
+
+ Calibrated
+ Kalibriert
+
+
+
+ Save session
+ Sitzung speichern
+
+
+
+
+ Scopy-Files (*.ini)
+ Scopy-Dateien (* .ini)
+
+
+
+ Load session
+ Sitzung laden
+
+
+
+ Click to open the home menu
+ Klicken Sie hier, um das Home-Menü zu öffnen
+
+
+
+ Click to disconnect the device
+ Klicken Sie hier, um das Gerät zu trennen
+
+
+
+ Click to save the current session
+ Klicken Sie hier, um die aktuelle Sitzung zu speichern
+
+
+
+
+ Click to load a session
+ Klicken Sie hier, um eine Sitzung zu laden
+
+
+
+
+ Select a device first
+ Wählen Sie zuerst ein Gerät aus
+
+
+
+
+
+ Click to connect the device
+ Klicken Sie hier, um das Gerät anzuschließen
+
+
+
+ Report a bug!
+ Melde einen technischen Fehler!
+
+
+
+ Connecting...
+ Anschließen ...
+
+
+
+ Disconnecting...
+ Trennen ...
+
+
+
+ Connect
+ Verbinden
+
+
+
+ Calibrating...
+ Kalibrieren ...
+
+
+
+ Calibration Failed
+ Kalibrierung fehlgeschlagen
+
+
+
+
+ Disconnect
+ Trennen
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ Die Unterstützung für digitale Decoder ist deaktiviert. Einige Funktionen fehlen möglicherweise
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ Beim Initialisieren von libsigrokdecode ist ein Problem aufgetreten. Einige Funktionen fehlen möglicherweise
+
+
+
+ Calibrating
+ Kalibrieren
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ Oszilloskop
+
+
+
+ Spectrum Analyzer
+ Spektrumanalysator
+
+
+
+ Network Analyzer
+ Netzwerkanalysator
+
+
+
+ Signal Generator
+ Signalgenerator
+
+
+
+ Logic Analyzer
+ Logikanalysator
+
+
+
+ Pattern Generator
+ Mustergenerator
+
+
+
+ Digital IO
+ Digital IO
+
+
+
+ Voltmeter
+ Voltmeter
+
+
+
+ Power Supply
+ Spannungsversorgung
+
+
+
+ Debugger
+ Debugger
+
+
+
+ Calibration
+ Kalibrierung
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ Kalibrieren ...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ Vorwärtstriggereingang
+
+
+
+ Oscilloscope
+ Oszilloskop
+
+
+
+
+ Logic Analyzer
+ Logikanalysator
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+ mVolts
+ mVolt
+
+
+
+
+ Volts
+ Volt
+
+
+
+ Level
+ Pegel
+
+
+
+ Hysteresis
+ Hysterese
+
+
+
+ External Trigger In
+ Externer Trigger In
+
+
+
+ None
+ Keiner
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ Hinweis
+
+
+
+ Invalid or empty file!
+ Ungültige oder leere Datei!
+
+
+
+ Path:
+ Pfad:
+
+
+
+ Warning: The file is empty!
+ Warnung: Die Datei ist leer!
+
+
+
+ Warning: The path is invalid!
+ Warnung: Der Pfad ist ungültig!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ Samplerate
+
+
+
+ Nr of samples
+ Anzahl Samples
+
+
+
+ Delay
+ Verzögern
+
+
+
+ Transparency
+ Transparenz
+
+
+
+ Select a decoder to add
+ Wählen Sie einen Decoder zum Hinzufügen aus
+
+
+
+ External Trigger In
+ Externer Trigger In
+
+
+
+ Oscilloscope
+ Oszilloskop
+
+
+
+ Comma-separated values files (*.csv)
+ Durch Kommas getrennte Wertedateien (* .csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ Tabulatorgetrennte Wertedateien (* .txt)
+
+
+
+ Value Change Dump(*.vcd)
+ Value Change Dump (*. VCD)
+
+
+
+ All Files(*)
+ Alle Dateien(*)
+
+
+
+ Export
+ Export
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+ Das Abfragen des Konfigurationsschlüssels% 1 ergab% 2
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+ Das Abfragen des Konfigurationsschlüssels% 1 ergab% 2
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+ Das Abfragen des Konfigurationsschlüssels% 1 ergab% 2
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ Das Abfragen des Konfigurationsschlüssels% 1 ergab% 2
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ Das Abfragen des Konfigurationsschlüssels% 1 ergab% 2
+
+
+
+ dioChannel
+
+
+ Form
+ Form
+
+
+
+
+ 0
+ 0
+
+
+
+ in
+ im
+
+
+
+ out
+ out
+
+
+
+ 1
+ 1
+
+
+
+ dioElement
+
+
+ Form
+ Form
+
+
+
+ 0 - 7
+ 0 - 7
+
+
+
+ Individual
+ Individuell
+
+
+
+ Group
+ Gruppe
+
+
+
+ in
+ im
+
+
+
+ out
+ out
+
+
+
+ 127
+ 127
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+ Form
+
+
+
+ PulseScript
+ PulseScript
+
+
+
+ NumberOfPulses
+ Anzahl der Impulse
+
+
+
+ Samples/Pulse
+ Samples/Puls
+
+
+
+ Hi
+ Hi
+
+
+
+ Lo
+ Lo
+
+
+
+ Frequency:
+ Frequenz:
+
+
+
+ PushButton
+ Druckknopf
+
+
+
+ INVALID
+ UNGÜLTIG
+
+
+
diff --git a/resources/translations/scopy_es.ts b/resources/translations/scopy_es.ts
new file mode 100644
index 0000000000..4093120618
--- /dev/null
+++ b/resources/translations/scopy_es.ts
@@ -0,0 +1,5965 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+
+
+
+
+ BaseMenuItem
+
+
+ Form
+
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+
+
+
+
+ Init Value
+ Valor inicial
+
+
+
+
+ 0
+
+
+
+
+ Frequency
+ Frecuencia
+
+
+
+ 1000
+
+
+
+
+ Start counter
+ Empezar contador
+
+
+
+ End counter
+ terminar contador
+
+
+
+ 65535
+
+
+
+
+ Increment
+ Incremento
+
+
+
+ 1
+
+
+
+
+ BitfieldWidget
+
+
+ Form
+
+
+
+
+
+ TextLabel
+
+
+
+
+ 0x
+
+
+
+
+ CalibrationTemplate
+
+
+ Form
+
+
+
+
+ Calibration info here
+ Información de calibración aquí
+
+
+
+ Set
+ Establecer
+
+
+
+ Measured
+ Medido
+
+
+
+ Enter value here
+ Introducir el valor aqui
+
+
+
+ Restart
+ Reiniciar
+
+
+
+ Next
+ Próximo
+
+
+
+ Finish
+ Terminar
+
+
+
+ Channel
+
+
+ Form
+
+
+
+
+ Channel
+ Canal
+
+
+
+ ChannelSettings
+
+
+ Form
+
+
+
+
+ Channel
+ Canal
+
+
+
+ MATH
+ MATEMÁTICAS
+
+
+
+ Edit Function
+ Editar Funciones
+
+
+
+ HORIZONTAL
+
+
+
+
+ VERTICAL
+
+
+
+
+ SETTINGS
+ Ajustes
+
+
+
+ CH Thickness
+ CH Grosor
+
+
+
+ 0.5
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Memory depth
+ Profundidad de la memoria
+
+
+
+ Probe
+Attenuation
+ Atenuaciones de la sonda
+
+
+
+ 0.1X
+
+
+
+
+ 1X
+
+
+
+
+ 10X
+
+
+
+
+ 100X
+
+
+
+
+ Curve Style
+ Estilo de curva
+
+
+
+ Lines
+ Líneas
+
+
+
+ Dots
+ Puntos
+
+
+
+ Steps
+ Pasos
+
+
+
+ Sticks
+ Barras
+
+
+
+ Smooth
+ Suave
+
+
+
+ Software
+AC Coupling
+ Acoplamiento de CA por Software
+
+
+
+ Filter 1 - Enabled
+ Filtro 1 - Habilitado
+
+
+
+
+ TC
+
+
+
+
+
+ Gain
+ Gano
+
+
+
+
+ 0
+
+
+
+
+ Filter 2 - Enabled
+ Filtro 2 - Habilitado
+
+
+
+ Autoset
+ Ajuste automático
+
+
+
+ Snapshot
+ Instantánea
+
+
+
+ Connect
+
+
+ Form
+
+
+
+
+ URI (Hostname)
+ URI (Nombre de Host)
+
+
+
+ Connect
+ Conectar
+
+
+
+ Context info
+ Info de contexto
+
+
+
+ ConstantPatternUI
+
+
+ Form
+
+
+
+
+ Constant
+ Constante
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ CursorReadouts
+
+
+ Form
+
+
+
+
+ Δt =
+
+
+
+
+
+ 0.000ms
+
+
+
+
+ CurT2 =
+
+
+
+
+ 1/Δt =
+
+
+
+
+ - 000.000 ms
+
+
+
+
+ - 000.000 mHz
+
+
+
+
+ CurT1 =
+
+
+
+
+ CurV2
+
+
+
+
+ ΔV
+
+
+
+
+ CurV1
+
+
+
+
+
+ 000.000 mV
+
+
+
+
+ - 000.000 mV
+
+
+
+
+
+
+ =
+
+
+
+
+ CursorsSettings
+
+
+ Form
+
+
+
+
+ Cursors
+ Cursores
+
+
+
+ Normal
+ Normal
+
+
+
+ Track
+ Rastrear
+
+
+
+ 0
+
+
+
+
+ HORIZONTAL
+ HORIZONTAL
+
+
+
+ VERTICAL
+ VERTICAL
+
+
+
+ CURSOR READOUTS
+ LECTURAS DEL CURSOR
+
+
+
+ Transparency 0%
+ Transparencia 0%
+
+
+
+ Position
+ Posición
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+
+
+
+
+ DMM
+
+
+
+ MAX
+
+
+
+
+
+ MIN
+
+
+
+
+
+ VDC
+
+
+
+
+ Run
+ Ejecutar
+
+
+
+ Channel 1
+ Canal 1
+
+
+
+
+ DC (Direct Current)
+ CC (Corriente Continua)
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ CA (20 Hz - 40 KHz)
+
+
+
+
+ 1s
+
+
+
+
+
+ 10s
+
+
+
+
+
+ 60s
+
+
+
+
+
+ History
+ Historia
+
+
+
+
+ Line thickness
+ Grosor de la línea
+
+
+
+
+ 0.5
+
+
+
+
+
+ 1
+
+
+
+
+
+ 1.5
+
+
+
+
+
+ 2
+
+
+
+
+
+ 2.5
+
+
+
+
+
+ 3
+
+
+
+
+
+ 3.5
+
+
+
+
+
+ 4
+
+
+
+
+
+ 4.5
+
+
+
+
+
+ 5
+
+
+
+
+ Channel 2
+ Canal 2
+
+
+
+ PEAK HOLD
+ SOSTENER PICO
+
+
+
+ Reset
+ Reiniciar
+
+
+
+ DATA LOGGING
+ LOGGING DE DATOS
+
+
+
+ Browse
+ Buscar
+
+
+
+ Append
+ Adjuntar
+
+
+
+ Choose a file
+ Escoge un archivo
+
+
+
+ Overwrite
+ Sobrescribir
+
+
+
+ DbClickButtons
+
+
+ Form
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ Debugger
+
+
+ MainWindow
+ VentanaPrincipal
+
+
+
+ SCRIPTING ENGINE
+ Motor de Scripting
+
+
+
+ Load Script
+ Cragar Script
+
+
+
+ Run
+ Ejecutar
+
+
+
+ Filename
+ Nombre del archivo
+
+
+
+
+ Read
+ Leer
+
+
+
+ Device
+ Dispositivo
+
+
+
+ New Window
+ Nueva Ventana
+
+
+
+
+ Write
+ Escribir
+
+
+
+
+ Value:
+ Valor:
+
+
+
+ DEVICE SELECTION
+ SELECCIÓN DE DISPOSITIVO
+
+
+
+ Detailed Register Map
+ Mapa de Registro Detallado
+
+
+
+ Address:
+ Dirección:
+
+
+
+ 0x0000
+
+
+
+
+ Display mode:
+ Modo de visualización:
+
+
+
+ <value>
+ <valor>
+
+
+
+
+ 0x
+
+
+
+
+ Description:
+ Descripción:
+
+
+
+ Default Value:
+ Valor por defecto:
+
+
+
+ Source:
+ Fuente:
+
+
+
+ Enable AutoRead
+ Habilitar Lectura Automática
+
+
+
+ REGISTER MAP SETTINGS
+ CONFIGURACIÓN DEL MAPA DE REGISTROS
+
+
+
+ DetachDragZone
+
+
+ Form
+
+
+
+
+ Drag here to detach!
+ Arrasta aquí para separar!
+
+
+
+ Device
+
+
+ Form
+
+
+
+
+ DigitalIO
+
+
+ Form
+
+
+
+
+ Run
+ Ejecutar
+
+
+
+ DigitalIoMenu
+
+
+ Form
+
+
+
+
+ PollingRate
+ Tasa de Sondeo
+
+
+
+ 1000
+
+
+
+
+ Enable Outputs
+ Habilitar Salidas
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ Configuración de Disparo
+
+
+
+ Trigger mode
+ Modo de disparo
+
+
+
+ auto
+
+
+
+
+ normal
+
+
+
+
+ Trigger Logic
+ Lógica de Disparo
+
+
+
+ OR
+
+
+
+
+ AND
+
+
+
+
+ EXTERNAL TRIGGER
+ DISPARADOR EXTERNO
+
+
+
+ Source
+ Fuente
+
+
+
+ Condition
+ Condición
+
+
+
+ None
+ Ninguno
+
+
+
+ EXTERNAL TRIGGER OUT
+ DISPARADOR EXTERNO SALIDA
+
+
+
+ DragZone
+
+
+ Form
+
+
+
+
+ EmptyPatternUI
+
+
+ Form
+
+
+
+
+ ExportSettings
+
+
+ Form
+
+
+
+
+ EXPORT
+ EXPORTAR
+
+
+
+ Export All
+ Exportar Todo
+
+
+
+ Export
+ Exportar
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+
+
+
+
+ Frequency
+ frecuencia
+
+
+
+ 1000
+
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+
+
+
+
+ Script status
+ Estado del script
+
+
+
+ Clear console
+ Consola limpia
+
+
+
+ HomepageControls
+
+
+ Form
+
+
+
+
+ I2CPatternUI
+
+
+ Form
+
+
+
+
+ R
+ L
+
+
+
+ W
+ E
+
+
+
+ Read/Write
+ Ler/Escribir
+
+
+
+ MSB First
+ MSB Primero
+
+
+
+ Address
+ Dirección
+
+
+
+ Inter frame space
+ Espacio entre frame
+
+
+
+ Data
+ Datos
+
+
+
+ InfoPage
+
+
+ Form
+
+
+
+
+ Forget device
+ Olvidar dispositivo
+
+
+
+ Identify
+ Identificar
+
+
+
+ Connect
+ Conectar
+
+
+
+ Calibrate
+ Calibrar
+
+
+
+ InfoWidget
+
+
+ Form
+
+
+
+
+ Move
+ Mover
+
+
+
+ InstrumentNotes
+
+
+ Form
+
+
+
+
+ Notes
+ Notas
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+
+ Insert notes here
+ Insertar notas aquí
+
+
+
+ LAChannelGroup
+
+
+ Form
+
+
+
+
+ DIO
+
+
+
+
+
+ 12
+
+
+
+
+ None
+ Ninguno
+
+
+
+ LAChannelManager
+
+
+ Form
+
+
+
+
+ LAManagerHeader
+
+
+ Form
+
+
+
+
+ View
+ Ver
+
+
+
+ Name
+ Nombre
+
+
+
+ DIO
+
+
+
+
+ Trigger
+ Disparador
+
+
+
+ Select
+ Seleccionar
+
+
+
+ LARequiredChannel
+
+
+ Form
+
+
+
+
+ Settings
+ Configuraciones
+
+
+
+
+ Role
+ Rol
+
+
+
+ LASettingsWidget
+
+
+ Form
+
+
+
+
+ REQUIRED
+ NECESARIO
+
+
+
+ OPTIONAL
+ OPCIONAL
+
+
+
+ OPTIONS
+ OPCIONES
+
+
+
+ LChannelSettings
+
+
+ Form
+
+
+
+
+ BG Color
+ Color de Fondo
+
+
+
+ Edge Color
+ Color del Borde
+
+
+
+ Low Color
+ Color Bajo
+
+
+
+ High Color
+ Color de Alta
+
+
+
+ SETTINGS
+ Configuraciones
+
+
+
+ COLOR SETTINGS
+ AJUSTES DE COLOR
+
+
+
+ Name
+ Nombre
+
+
+
+ Thickness
+ Grosor
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ LFSRPatternUI
+
+
+ Form
+
+
+
+
+
+ 0x0001
+
+
+
+
+ Generator Polynomial
+ Polinomio Generador
+
+
+
+ Start State
+ Estado de inicio
+
+
+
+ Period
+ Período
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Scopy Analizador Lógico
+
+
+
+ Group
+ Grupo
+
+
+
+
+ Channel Settings
+ Configuración de canal
+
+
+
+
+ -
+
+
+
+
+ Name
+ Nombre
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ Traza Altura
+
+
+
+ GROUP
+ GRUPO
+
+
+
+ Stack Decoder:
+ Stack Decodificador:
+
+
+
+ Trigger Settings
+ Configuración de Disparo
+
+
+
+ Trigger mode
+ Modo de Disparo
+
+
+
+ auto
+
+
+
+
+ normal
+
+
+
+
+ Trigger Logic
+ Lógica de Disparo
+
+
+
+ EXTERNAL TRIGGER
+ DISPARADOR EXTERNO
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Aviso: esta función no es compatible con la versión de firmware actual!"
+
+
+
+ Source
+ Fuente
+
+
+
+ Condition
+ Condición
+
+
+
+ General Settings
+ Configuración general
+
+
+
+ OneShot
+
+
+
+
+ AVAILABLE CHANNELS
+ CANALES DISPONIBLES
+
+
+
+ DECODERS
+ DECODIFICADORES
+
+
+
+ Close
+ Cerrar
+
+
+
+ Print
+ Imprimir
+
+
+
+ Stream
+
+
+
+
+ Cursors
+ Cursores
+
+
+
+
+ Trigger
+ Disparador
+
+
+
+ ManualCalibration
+
+
+ Form
+
+
+
+
+ Load Calibration
+ Cargar calibración
+
+
+
+ Save Calibration
+ Guardar calibración
+
+
+
+ Run automatic
+ Ejecutar automático
+
+
+
+ MarkerTable
+
+
+ Form
+
+
+
+
+ Math
+
+
+ Form
+
+
+
+
+ f(t) =
+
+
+
+
+ cos
+
+
+
+
+ 2
+
+
+
+
+ 7
+
+
+
+
+ ,
+
+
+
+
+ 3
+
+
+
+
+ ←
+
+
+
+
+ (
+
+
+
+
+ exp
+
+
+
+
+ 1
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ /
+
+
+
+
+ *
+
+
+
+
+ e
+
+
+
+
+ C
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ )
+
+
+
+
+ log
+
+
+
+
+ t
+
+
+
+
+ +
+
+
+
+
+ 9
+
+
+
+
+ tan
+
+
+
+
+ ^
+
+
+
+
+ 4
+
+
+
+
+ Apply
+ Aplicar
+
+
+
+ pi
+
+
+
+
+ 5
+
+
+
+
+ sin
+
+
+
+
+ MathPanel
+
+
+ Form
+
+
+
+
+ Add channel
+ Agregar canal
+
+
+
+ MeasureSettings
+
+
+ Form
+
+
+
+
+ Measure
+ Medir
+
+
+
+ Channel
+ Canal
+
+
+
+ MEASUREMENTS
+ MEDICIONES
+
+
+
+ Counter
+ Contador
+
+
+
+ Display All
+ Mostrar todo
+
+
+
+
+ Delete All
+ Eliminar todos
+
+
+
+ STATISTICS
+ ESTADÍSTICAS
+
+
+
+ Reset
+ Reiniciar
+
+
+
+ CUSTOM SELECTION
+ SELECCIÓN PERSONALIZADA
+
+
+
+ Enable
+ Habilitar
+
+
+
+ GATING SETTINGS
+ GATING AJUSTES
+
+
+
+ MeasurementsPanel
+
+
+ Form
+
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ Imprimir
+
+
+
+ Current Frequency:
+ Frecuencia actual:
+
+
+
+ Sample:
+ Muestra:
+
+
+
+ Average:
+ Promedio:
+
+
+
+ Phase (°)
+ Fase (°)
+
+
+
+ Magnitude (dB)
+ Magnitud (dB)
+
+
+
+ °
+
+
+
+
+ 10
+
+
+
+
+ Settings
+ Configuraciones
+
+
+
+
+ REFERENCE
+ REFERENCIA
+
+
+
+ Channel 1
+ Canal 1
+
+
+
+ Channel 2
+ Canal 2
+
+
+
+ 0
+
+
+
+
+ Gain Mode
+ Modo de Gano
+
+
+
+ Automatic
+ Automático
+
+
+
+ Low
+ Bajo
+
+
+
+ High
+ Alto
+
+
+
+ RESPONSE
+ RESPUESTA
+
+
+
+ DC Filtering
+ Filtración CC
+
+
+
+
+ On
+ On
+
+
+
+
+ Off
+ Off
+
+
+
+ SWEEP
+ BARRER
+
+
+
+ Logarithmic
+ Logarítmico
+
+
+
+ Linear
+ Lineal
+
+
+
+ Average
+ Promedio
+
+
+
+
+ Apply
+ Aplicar
+
+
+
+ Periods
+ Periodos
+
+
+
+ DISPLAY
+ MOSTRAR
+
+
+
+ Delta Label
+ Delta Etiqueta
+
+
+
+ BUFFER PREVIEWER
+ VISOR PREVIO DE BÚFER
+
+
+
+ ViewInOsc
+ VerEnOsc
+
+
+
+ Previous
+ Previo
+
+
+
+ Next
+ Próximo
+
+
+
+ General Settings
+ Configuración general
+
+
+
+ PLOT
+ TRAZAR
+
+
+
+ Type
+ Tipo
+
+
+
+ Bode
+
+
+
+
+ Nyquist
+
+
+
+
+ Nichols
+
+
+
+
+ Line thickness
+ Grosor de la línea
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ EXPORT
+ EXPORTAR
+
+
+
+ Export
+ Exportar
+
+
+
+ Import
+ Importar
+
+
+
+ Snapshot
+ Instantánea
+
+
+
+ Remove Reference
+ Eliminar referencia
+
+
+
+ Cursors
+ Cursores
+
+
+
+ CURSOR READOUTS
+ LECTURAS DEL CURSOR
+
+
+
+ Transparency 0%
+ Transparencia 0%
+
+
+
+ Position
+ Posición
+
+
+
+ Cursors
+ Cursores
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+
+
+
+
+ Note
+
+
+ TextLabel
+
+
+
+
+ NumberPatternUI
+
+
+ Form
+
+
+
+
+ Number
+ Número
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ ConfiguraciónGeneral
+
+
+
+ General settings
+ Configuración general
+
+
+
+ VIEWS
+ PUNTOS DE VISTA
+
+
+
+ FFT
+
+
+
+
+ X-Y
+
+
+
+
+ Histogram
+ Histograma
+
+
+
+ X-Y
+
+
+
+
+ Y-Axis
+
+
+
+
+ X-Axis
+
+
+
+
+ dots
+ puntos
+
+
+
+ lines
+ líneas
+
+
+
+ X-Y Line thickness
+ X-Y Grosor de la línea
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ 6
+
+
+
+
+ 7
+
+
+
+
+ 8
+
+
+
+
+ 9
+
+
+
+
+ 10
+
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy Osciloscopio
+
+
+
+ Print
+ Imprimir
+
+
+
+ Cursors
+ Cursores
+
+
+
+ Measure
+ Medida
+
+
+
+ Trigger
+ Disparador
+
+
+
+ Close
+ Cerrar
+
+
+
+ PGCGSettings
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ Pattern
+ Patrón
+
+
+
+ Output
+ Salida
+
+
+
+ PP
+
+
+
+
+ OD
+
+
+
+
+ CLOCK
+ RELOJ
+
+
+
+ SETTINGS
+ AJUSTES
+
+
+
+ Name
+ Nombre
+
+
+
+ Thickness
+ Grosor
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ COLOR SETTINGS
+ AJUSTES DE COLOR
+
+
+
+ BG Color
+ Color de Fondo
+
+
+
+ Edge Color
+ Color del Borde
+
+
+
+ Low Color
+ Color Bajo
+
+
+
+ High Color
+ Color de Alta
+
+
+
+ PGChannel
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ PGChannelGroup
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ 12
+
+
+
+
+ PGChannelManager
+
+
+ Form
+
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+
+
+
+
+ Enable
+ Habilitar
+
+
+
+ Name
+ Nombre
+
+
+
+ DIO
+
+
+
+
+ Select
+ Seleccione
+
+
+
+ PGSettings
+
+
+ Form
+
+
+
+
+ Settings
+ Configuraciones
+
+
+
+ Autoset
+ Ajuste automático
+
+
+
+ Sample Rate
+ Frecuencia de Muestreo
+
+
+
+ Buffer Size
+ Tamaño del búfer
+
+
+
+ ExternalClock
+ Reloj externo
+
+
+
+ External Clock Frequency
+ Frecuencia de Reloj Externo
+
+
+
+ Reset Instrument
+ Restablecer instrumento
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Scopy Generador de Patrones
+
+
+
+ Print
+ Impirmir
+
+
+
+ Group
+ Grupo
+
+
+
+
+ Channel Settings
+ Configuración de Canal
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ Traza Altura
+
+
+
+ Name
+ Nombre
+
+
+
+ Open-Drain
+
+
+
+
+ Push-Pull
+
+
+
+
+ GROUP
+ GRUPO
+
+
+
+ Pattern
+ Patrón
+
+
+
+ Trigger Settings
+ Configuración de Disparo
+
+
+
+ Trigger mode
+ Modo de Disparo
+
+
+
+ auto
+
+
+
+
+ normal
+
+
+
+
+ Trigger Logic
+ Lógica de disparo
+
+
+
+ EXTERNAL TRIGGER
+ DISPARADOR EXTERNO
+
+
+
+ Source
+ Fuente
+
+
+
+ Condition
+ Condición
+
+
+
+ -
+
+
+
+
+ General Settings
+ Configuración General
+
+
+
+ AVAILABLE CHANNELS
+ CANALES DISPONIBLES
+
+
+
+ Cursors
+ Cursores
+
+
+
+ Trigger
+ Disparador
+
+
+
+ Close
+ Cerrar
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy Control de Potencia
+
+
+
+
+ Set
+ Establecer
+
+
+
+
+ Measure
+ Medida
+
+
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Tracking ratio control
+ Rastreo del control de proporción
+
+
+
+ Independent
+ Independiente
+
+
+
+ Tracking
+ Rastreo
+
+
+
+ 100
+
+
+
+
+ %
+
+
+
+
+ Positive output
+ Salida positiva
+
+
+
+
+ Enable
+ Habilitar
+
+
+
+ Negative output
+ Salida negativa
+
+
+
+ Preferences
+
+
+ Form
+
+
+
+
+ GENERAL
+ GENERAL
+
+
+
+ OSCILLOSCOPE
+ OSCILOSCOPIO
+
+
+
+ Enable labels on the plot
+ Habilitar etiquetas en la trama
+
+
+
+ Enable graticule
+ Habilitar retícula
+
+
+
+ Enable mini histogram
+ Habilitar mini histograma
+
+
+
+ Enable all instrument notes
+ Habilitar todas las notas del instrumento
+
+
+
+ Language (requires app restart)
+ Idioma (requiere reiniciar la aplicación)
+
+
+
+ Restart the application for changes to take effect
+ Reinicie la aplicación para que los cambios surtan efecto
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ Intentar calibración basada en temperatura (EXPERIMENTAL)
+
+
+
+ Enable animations
+ Habilitar animaciones
+
+
+
+ 1
+
+
+
+
+ Run external scripts (Experimental)
+ Ejecutar scripts externos (Experimental)
+
+
+
+ SPECTRUM ANALYZER
+ ANALIZADOR DE ESPECTRO
+
+
+
+ Only search marker peaks in visible domain
+ Solo buscar picos de marcadores en el dominio visible
+
+
+
+ Double click to detach a tool
+ Doble clic para separar una herramienta
+
+
+
+ Save session when closing Scopy
+ Guardar sesión al cerrar Scopy
+
+
+
+ NETWORK ANALYZER
+ ANALIZADOR DE RED
+
+
+
+ Always display 0db value on graph
+ Mostrar siempre el valor 0db en el gráfico
+
+
+
+ Scriptable manual calibration
+ Calibración manual programable
+
+
+
+ Show advanced device information
+ Mostrar información avanzada del dispositivo
+
+
+
+ LOGIC ANALYZER
+ ANALIZADOR LÓGICO
+
+
+
+ Display sampling points when zoomed
+ Mostrar puntos de muestreo cuando se amplía
+
+
+
+ SIGNAL GENERATOR
+ GENERADOR DE SEÑALES
+
+
+
+ Number of displayed periods
+ Número de períodos mostrados
+
+
+
+ Enable digital decoders
+ Habilitar decodificadores digitales
+
+
+
+ Enable sample rate filters
+ Habilitar filtros de frecuencia de muestreo
+
+
+
+ Show ADC digital filter config
+ Mostrar la config del filtro digital de ADC
+
+
+
+ DEBUG
+
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ Habilitar mensajes de Debug (solo para Debugging, Informe de errores)
+
+
+
+ Enable Debug Instrument
+ Habilitar Instrumento de Debug
+
+
+
+ Enable user notes in main page
+ Habilitar notas de usuario en la página principal
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ Omita la calibración si ya está calibrado (los valores de cal no son los predeterminados)
+
+
+
+ Reset Scopy
+ Reiniciar Scopy
+
+
+
+ PulsePatternUI
+
+
+ Form
+
+
+
+
+ Low
+ Bajo
+
+
+
+
+
+
+ 0
+
+
+
+
+ High
+ Alto
+
+
+
+ 100
+
+
+
+
+ Counter Init
+ Iniciar Contador
+
+
+
+ Delay
+ Retrasar
+
+
+
+
+ 1
+
+
+
+
+ Delay polarity
+ Demora de polaridad
+
+
+
+ Number of pulses
+ Numero de pulsos
+
+
+
+ QObject
+
+
+ Period
+ Período
+
+
+
+ Frequency
+ Frecuencia
+
+
+
+ Min
+
+
+
+
+ Max
+
+
+
+
+ Peak-peak
+ Pico-pico
+
+
+
+ Mean
+ Media
+
+
+
+ Cycle Mean
+ Media del Ciclo
+
+
+
+ RMS
+
+
+
+
+ Cycle RMS
+ Ciclo RMS
+
+
+
+ AC RMS
+ CA RMS
+
+
+
+ Area
+ Área
+
+
+
+ Cycle Area
+ Área de Ciclo
+
+
+
+ Low
+ Bajo
+
+
+
+ High
+ Alto
+
+
+
+ Amplitude
+ Amplitud
+
+
+
+ Middle
+ Medio
+
+
+
+ +Over
+ +Terminado
+
+
+
+ -Over
+ -Terminado
+
+
+
+ Rise
+ Subir
+
+
+
+ Fall
+ Caer
+
+
+
+ +Width
+ +Anchura
+
+
+
+ -Width
+ -Anchura
+
+
+
+ +Duty
+ +Ciclo de trabajo
+
+
+
+ -Duty
+ -Ciclo de trabajo
+
+
+
+ RegisterWidget
+
+
+ Form
+
+
+
+
+ RunSingleWidget
+
+
+ Form
+
+
+
+
+ Run
+ Ejecutar
+
+
+
+ Single
+ Único
+
+
+
+ SPIPatternUI
+
+
+ Form
+
+
+
+
+ MSB First
+ MSB Primero
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ 0
+
+
+
+
+ CLK Phase
+ CLK Fase
+
+
+
+ CS Polarity
+ CS Polaridad
+
+
+
+ CLK Polarity
+ CLK Polaridad
+
+
+
+ Bytes per frame
+ Bytes por frame
+
+
+
+ Inter frame space
+ Espacio entre frames
+
+
+
+ Data
+ Datos
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Scopy Generador de Señal
+
+
+
+ Constant
+ Constante
+
+
+
+ Waveform
+ Forma de onda
+
+
+
+ Sine
+ Seno
+
+
+
+ Square
+ Cuadrado
+
+
+
+ Triangle
+ Triángulo
+
+
+
+ Trapezoidal
+ Trapezoidal
+
+
+
+ Rising Ramp Sawtooth
+ Diente de sierra de Rampa Ascendente
+
+
+
+ Falling Ramp Sawtooth
+ Diente de sierra de Rampa Descendente
+
+
+
+ Stair Step
+ Escalón
+
+
+
+ TIMING
+ SINCRONIZACIÓN
+
+
+
+ Buffer
+ Buffer
+
+
+
+ FILE
+ ARCHIVO
+
+
+
+ Path
+ Camino
+
+
+
+
+ No file loaded
+ Ningún archivo cargado
+
+
+
+ Format
+ Formato
+
+
+
+ Size
+ Talla
+
+
+
+ 0 samples
+ 0 muestras
+
+
+
+ Load file
+ Cargar archivo
+
+
+
+ Channel
+ Canal
+
+
+
+ SCALING
+ ESCALADA
+
+
+
+ Math
+ Matemáticas
+
+
+
+ NOISE
+ RUIDO
+
+
+
+ None
+ Ninguno
+
+
+
+ Uniform
+ Uniforme
+
+
+
+ Gaussian
+ Gaussiano
+
+
+
+ Laplacian
+ Laplaciano
+
+
+
+ Impulse
+ Impulso
+
+
+
+ OTHER
+ OTRO
+
+
+
+ Line thickness
+ Grosor de la Línea
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Close
+ Cerrar
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+
+
+
+
+ Print
+ Impresión
+
+
+
+ Preset
+ Preestablecido
+
+
+
+
+ dBFS
+
+
+
+
+ Sample:
+ Muestra:
+
+
+
+ Average Sample:
+ Muestra Promedio:
+
+
+
+ Marker_n 0.000 Hz 0dB
+ Marcador_n 0.000 Hz 0dB
+
+
+
+ Channel
+ Canal
+
+
+
+ Type
+ Tipo
+
+
+
+ Sample
+ Muestra
+
+
+
+ and other types
+ y otros tipos
+
+
+
+ Window
+ Ventana
+
+
+
+ Uniform (none)
+ Uniforme (ninguno)
+
+
+
+ and others windows
+ Y otras ventanas
+
+
+
+ Averaging
+ Promediando
+
+
+
+ Apply
+ Aplicar
+
+
+
+ CH Thickness
+ CH Grosor
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ History
+ Historia
+
+
+
+ Gain mode
+ Modo de Gano
+
+
+
+
+ Low
+ Bajo
+
+
+
+ High
+ Alto
+
+
+
+ Snapshot
+ Instantánea
+
+
+
+ General settings
+ Configuración general
+
+
+
+ Export
+ Exportar
+
+
+
+
+ Sweep
+ Barrer
+
+
+
+ Logarithmic
+ Logarítmico
+
+
+
+ Linear
+ Lineal
+
+
+
+ FREQUENCY
+ FRECUENCIA
+
+
+
+ AMPLITUDE
+ AMPLITUD
+
+
+
+ Resolution BW
+ Resolución BW
+
+
+
+ Units
+ Unidades
+
+
+
+
+ Markers
+ Marcadores
+
+
+
+ Settings
+ Configuraciones
+
+
+
+ MARKER
+ MARCADOR
+
+
+
+ Normal
+
+
+
+
+ Delta
+ Delta
+
+
+
+ Peak
+ Pico
+
+
+
+
+ Peak
+ Pico
+
+
+
+
+ Ampl
+
+
+
+
+ GENERAL
+
+
+
+
+ Marker Table
+ Tabla de Marcadores
+
+
+
+ Import Reference Channels
+ Importar Canales de Referencia
+
+
+
+ No file selected!
+ Ningún archivo seleccionado!
+
+
+
+ Browse
+ Buscar
+
+
+
+ Import
+ Importar
+
+
+
+ SpinBoxA
+
+
+ Form
+
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+
+
+
+
+ Statistic
+
+
+ Form
+
+
+
+
+ Avg:
+
+
+
+
+
+
+ 0.000
+
+
+
+
+ Min:
+
+
+
+
+ Max:
+
+
+
+
+ 1
+
+
+
+
+ Measurement
+ Medición
+
+
+
+ StatisticsPanel
+
+
+ Form
+
+
+
+
+ ToolLauncher
+
+
+ Scopy
+
+
+
+
+ Home
+ Casa
+
+
+
+ Save
+ Salvar
+
+
+
+ Load
+ Cargar
+
+
+
+ Preferences
+ Preferencias
+
+
+
+ Notes
+ Notas
+
+
+
+ Quit
+ Salir
+
+
+
+ ADC Offset
+ ADC Offset
+
+
+
+ ADC Gain
+ ADC Gano
+
+
+
+ Reset ADC Calibration
+ Restablecer la calibración de ADC
+
+
+
+ TriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ Configuración de Disparo
+
+
+
+ Trigger mode
+ Modo de Disparo
+
+
+
+ auto
+
+
+
+
+ normal
+
+
+
+
+
+ Source
+ Fuente
+
+
+
+ INTERNAL (ANALOG)
+ INTERNO (ANALÓGICO)
+
+
+
+
+ Condition
+ Condición
+
+
+
+
+ Rising Edge
+ Flanco Ascendente
+
+
+
+
+ Falling Edge
+ Flanco Descendente
+
+
+
+
+ Low
+ Bajo
+
+
+
+
+ High
+ Alto
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ Esta función no es compatible mientras la Vista de Señales Mixtas está habilitada!
+
+
+
+ DIGITAL
+
+
+
+
+ Any Edge
+ Cualquier borde
+
+
+
+ M2K daisychain position
+ M2K daisychain posición
+
+
+
+ TRIGGER LOGIC
+ LÓGICA DE DISPARO
+
+
+
+ Analog - Digital
+ Analógico - Digital
+
+
+
+ Digital OR Analog
+ Digital OR Analógico
+
+
+
+ Digital AND Analog
+ Digital AND Analógico
+
+
+
+ Digital XOR Analog
+ Digital XOR Analógico
+
+
+
+ !Digital OR Analog
+ !Digital OR Analógico
+
+
+
+ !Digital AND Analog
+ !Digital AND Analógico
+
+
+
+ !Digital XOR Analog
+ !Digital XOR Analógico
+
+
+
+ EXTERNAL TRIGGER OUT
+ DISPARADOR EXTERNO SALIDA
+
+
+
+ UARTPatternUI
+
+
+ Form
+
+
+
+
+ Stop
+ Parar
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ Baud
+
+
+
+
+
+ 9600
+
+
+
+
+ 1200
+
+
+
+
+ 2400
+
+
+
+
+ 4800
+
+
+
+
+ 14400
+
+
+
+
+ 19200
+
+
+
+
+ 28800
+
+
+
+
+ 38400
+
+
+
+
+ 57600
+
+
+
+
+ 115200
+
+
+
+
+ 230400
+
+
+
+
+ Parity
+ Paridad
+
+
+
+ NONE
+ NINGUNO
+
+
+
+ ODD
+ IMPAR
+
+
+
+ EVEN
+ PAR
+
+
+
+ MARK
+ MARCA
+
+
+
+ SPACE
+ ESPACIO
+
+
+
+ Parameters
+ Parámetros
+
+
+
+ Data to Send
+ Datos para Enviar
+
+
+
+ UserNotePage
+
+
+ Form
+
+
+
+
+ Remove note
+ Eliminar nota
+
+
+
+ UserNotes
+
+
+ Form
+
+
+
+
+ Save
+ Salvar
+
+
+
+ File path
+ Ruta de archivo
+
+
+
+ Browse
+ Buscar
+
+
+
+ Note name
+ Nombre de la nota
+
+
+
+ WalkingPatternUI
+
+
+ Form
+
+
+
+
+ Walking level
+ Nivel para caminar
+
+
+
+ 0
+
+
+
+
+
+ 1
+
+
+
+
+ Frequency
+ Frecuencia
+
+
+
+ 1000
+
+
+
+
+ Direction
+ Dirección
+
+
+
+ Right
+ Derecha
+
+
+
+ Left
+ Izquierda
+
+
+
+ Length
+ Longitud
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+ Enfocar:
+
+
+
+
+ /div
+
+
+
+
+ Waiting
+ Esperando
+
+
+
+ Triggered
+ Disparado
+
+
+
+ Stop
+ Parar
+
+
+
+ Auto
+
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ Phase
+ Fase
+
+
+
+ Duty
+ Ciclo de trabajo
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ Conectar
+
+
+
+ Waiting for connection ...
+ Esperando la conexión ...
+
+
+
+
+ Context info
+ Info de Contexto
+
+
+
+ Add
+ Añadir
+
+
+
+ Warning
+ Aviso
+
+
+
+ Error: Unable to find host: No such host is known!
+ Error: No se puede encontrar el host: No se conoce tal host!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ on
+
+
+
+ off
+ off
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ Temporizador
+
+
+
+ Stop
+ Parar
+
+
+
+ Run
+ Ejecutar
+
+
+
+ Export
+ Exportar
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ Archivos de valores separados por comas (* .csv) ;; Todos los archivos (*)
+
+
+
+ No file selected
+ Ningún archivo seleccionado
+
+
+
+
+ File is open in another program
+ El archivo está abierto en otro programa
+
+
+
+
+ Choose a file
+ Escoge un archivo
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ Guardar el archivo
+
+
+
+ JavaScript (*.js)
+
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ Parar
+
+
+
+ Run
+ Ejecutar
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ Canales
+
+
+
+ Name
+ Nombre
+
+
+
+ Export
+ Exportar
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ Open file
+ Abrir documento
+
+
+
+ Import selected channels
+ Importar canales seleccionados
+
+
+
+ No file selected
+ Ningún archivo seleccionado
+
+
+
+ Export
+ Exportar
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Archivos de valores separados por comas (* .csv) ;; Archivos de valores delimitados por tabulaciones (* .txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ Importar
+
+
+
+ Import all
+ Importar todo
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+ Error: Conexión fallida!
+
+
+
+ Connected
+ Conectado
+
+
+
+ Your hardware revision does not support the identify feature
+ Su revisión de hardware no admite la función de identificación
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ No conectado
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ Desconecte siempre las entradas / salidas analógicas antes de la calibración
+
+
+
+ Can't identify this device.
+ No se puede identificar este dispositivo.
+
+
+
+ Can't identify device. Please try to update your firmware!
+ No se puede identificar el dispositivo. Intente actualizar su firmware!
+
+
+
+ Your hardware revision does not support the identify feature
+ Su revisión de hardware no admite la función de identificación
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ Guardar el Archivo
+
+
+
+ ini (*.ini)
+
+
+
+
+
+ °C
+
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+
+
+
+
+ Marker
+ Marcador
+
+
+
+ Channel
+ Canal
+
+
+
+ Frequency
+ Frecuencia
+
+
+
+ Magnitude
+ Magnitud
+
+
+
+ Type
+ Tipo
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ Horizontal
+
+
+
+
+ Name
+ Nombre
+
+
+
+
+ Measure
+ Medida
+
+
+
+
+ Stats
+ Estadísticas
+
+
+
+ Vertical
+
+
+
+
+
+ Recover
+ Recuperar
+
+
+
+
+ Delete All
+ Eliminar Todos
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ Parado
+
+
+
+ Frequency (Hz)
+ Frecuencia (Hz)
+
+
+
+ Magnitude(dB)
+ Magnitud(dB)
+
+
+
+ Phase (°)
+ Fase (°)
+
+
+
+ Samples count
+ Recuento de muestras
+
+
+
+ Samps/decade
+ Muestras/década
+
+
+
+ Step
+ Paso
+
+
+
+ Amplitude
+ Amplitud
+
+
+
+ Offset
+
+
+
+
+ Max. Magnitude
+ Máx. Magnitud
+
+
+
+ Min. Magnitude
+ Mín Magnitud
+
+
+
+ Max. Phase
+ Máx Fase
+
+
+
+ Min. Phase
+ Mín Fase
+
+
+
+
+ Settling time
+ Tiempo de estabilización
+
+
+
+ Before Buffer
+ Antes del Búfer
+
+
+
+ After Buffer
+ Después de Búfer
+
+
+
+
+ Sample:
+ Muestra:
+
+
+
+
+ Current Frequency:
+ Frecuencia actual:
+
+
+
+
+ DC Voltage:
+ CC Voltaje:
+
+
+
+
+ Response channel voltage < 50mV!
+ Voltaje del canal de respuesta <50 mV!
+
+
+
+
+ Low
+ Bajo
+
+
+
+
+ High
+ Alto
+
+
+
+
+ Gain Mode:
+ Modo de Gano:
+
+
+
+ Transparency
+ Transparencia
+
+
+
+ Image
+ Imagen
+
+
+
+ Save to
+ Salvar a
+
+
+
+ Import
+ Importar
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Archivos de valores separados por comas (* .csv) ;; Archivos de valores delimitados por tabulaciones (* .txt)
+
+
+
+ Comma-separated values files (*.csv)
+ Archivos de valores separados por comas (* .csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ Archivos de valores delimitados por tabuladores (* .txt)
+
+
+
+ All Files(*)
+ Todos los archivos(*)
+
+
+
+ Export
+ Exportar
+
+
+
+ Average:
+ Promedio:
+
+
+
+ Running
+ Corriendo
+
+
+
+ Stopping...
+ Parada...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ Transparencia
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ Base de Tiempo
+
+
+
+
+ Position
+ Posición
+
+
+
+ Volts/Div
+
+
+
+
+
+ Add Channel
+ Agregar canal
+
+
+
+
+
+ Export
+ Exportar
+
+
+
+
+ Comma-separated values files (*.csv)
+ Archivos de valores separados por comas (* .csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ Archivos de valores delimitados por tabuladores (* .txt)
+
+
+
+
+ All Files(*)
+ Todos los archivos(*)
+
+
+
+ Transparency
+ Transparencia
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Aviso: esta función no es compatible con la versión de firmware actual!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * Cuando la Vista de Señal Mixta está habilitada la herramienta AnalizadorLógico estará deshabilitada.
+** El disparador se puede desactivar o configurar solo en los canales digitales o analógicos, ¡no en ambos al mismo tiempo!
+
+
+
+ Math
+ Matemáticas
+
+
+
+ Browse
+ Buscar
+
+
+
+ No file selected
+ Ningún archivo seleccionado
+
+
+
+
+ Reference
+ Referencia
+
+
+
+ Logic
+ Lógica
+
+
+
+ Add channel
+ Agregar canal
+
+
+
+ Import selected channels
+ Importar canales seleccionados
+
+
+
+ Enable Mixed Signal View
+ Habilitar la vista de Señal Mixta
+
+
+
+ Import
+ Importar
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Archivos de valores separados por comas (* .csv) ;; Archivos de valores delimitados por tabulaciones (* .txt)
+
+
+
+
+ Snapshot
+ Instantánea
+
+
+
+ Filter 1 - Enable -
+ Filtro 1 - Habilitado -
+
+
+
+ Filter 2 - Enable -
+ Filtro 2 - Habilitado -
+
+
+
+
+ Save
+ Salvar
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Value
+ Valor
+
+
+
+
+ Disable
+ Inhabilitar
+
+
+
+
+ Enable
+ Habilitar
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ Este cambio se aplicará solo después de un reinicio de Scopy.
+
+
+
+ By resetting scopy you will lose the current configuration!
+ Al resetear scopy perderá la configuración actual!
+
+
+
+ Do you want to reset?
+ Quieres resetear?
+
+
+
+ Load language
+ Cargar idioma
+
+
+
+ Language files (*.qm)
+ Archivos de idioma (* .qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ Documentos
+
+
+
+ Image
+ Imagen
+
+
+
+ Export File Name
+ Exportar Nombre de Archivo
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ Frecuencia de Muestreo
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ Ejecutar
+
+
+
+
+
+ Single
+ Único
+
+
+
+
+
+
+
+ Stop
+ Parar
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ Frecuencia
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+
+
+
+
+ π rad
+
+
+
+
+
+
+
+
+ ns
+
+
+
+
+
+
+
+
+ μs
+
+
+
+
+
+
+
+
+ ms
+
+
+
+
+
+
+
+
+ s
+
+
+
+
+
+
+ Phase
+ Fase
+
+
+
+ μVolts p-p
+
+
+
+
+ mVolts p-p
+
+
+
+
+ Volts p-p
+
+
+
+
+
+
+ Amplitude
+ Amplitud
+
+
+
+
+
+
+ μVolts
+
+
+
+
+
+
+
+
+ mVolts
+
+
+
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Offset
+
+
+
+
+ mHz
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency
+ Frecuencia
+
+
+
+ Rising
+ Creciente
+
+
+
+ Falling
+ Descendente
+
+
+
+ Rise Time
+ Tiempo de subida
+
+
+
+ Fall Time
+ Tiempo de caída
+
+
+
+ High Time
+ Tiempo Alto
+
+
+
+ Low Time
+ Tiempo Bajo
+
+
+
+
+ SampleRate
+ FrecuenciaDeMuestreo
+
+
+
+ Record Length
+ Grabar Longitud
+
+
+
+ Value
+ Valor
+
+
+
+ Duty Cycle
+ Ciclo de Trabajo
+
+
+
+
+
+ samples
+ muestras
+
+
+
+ Open File
+ Abrir documento
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ Archivos de valores separados por comas (* .csv) ;; Archivos de valores delimitados por tabuladores (* .txt) ;; Formato de archivo waveform audio (* .wav) ;; Archivos Matlab (* .mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ Voltaje (V)
+
+
+
+ Time (s)
+ Tiempo (s)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ Exportar
+
+
+
+ dBFS
+
+
+
+
+ dBV
+
+
+
+
+ dBu
+
+
+
+
+ Vpeak
+
+
+
+
+ Vrms
+
+
+
+
+ V/√Hz
+
+
+
+
+ Sample
+ Muestra
+
+
+
+ Peak Hold
+ Sostener Pico
+
+
+
+ Peak Hold Continous
+ Sostener Pico Continuo
+
+
+
+ Min Hold
+ Sostener Min
+
+
+
+ Min Hold Continous
+ Sostener Min Continuo
+
+
+
+ Linear RMS
+ Lineal RMS
+
+
+
+ Linear dB
+ Lineal dB
+
+
+
+ Exponential RMS
+ Exponencial RMS
+
+
+
+ Exponential dB
+ Exponencial dB
+
+
+
+ Flat top
+ Superficie plana
+
+
+
+ Rectangular
+ Rectangular
+
+
+
+ Triangular (Bartlett)
+
+
+
+
+ Hamming
+
+
+
+
+ Hann
+
+
+
+
+ Blackman-Harris
+
+
+
+
+ Kaiser
+
+
+
+
+ Manual
+ Manual
+
+
+
+ Peak
+ Pico
+
+
+
+ Delta
+
+
+
+
+ Fixed
+ Fijo
+
+
+
+ Scale/Div
+ Escala/Div
+
+
+
+
+ Top
+ Top
+
+
+
+
+ Bottom
+ Fondo
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency Position
+ Posición de Frecuencia
+
+
+
+
+ Comma-separated values files (*.csv)
+ Archivos de valores separados por comas (* .csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ Archivos de valores delimitados por tabuladores (* .txt)
+
+
+
+
+ All Files(*)
+ Todos los archivos(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ Archivos de valores separados por comas (* .csv) ;; Archivos de valores delimitados por tabulaciones (* .txt)
+
+
+
+ Snapshot
+ Instantánea
+
+
+
+ Sample:
+ Muestra:
+
+
+
+ Average Sample:
+ Muestra Promedio:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ Empezar
+
+
+
+ Stop
+ Parar
+
+
+
+ Center
+ Centrar
+
+
+
+ Span
+ Abarcar
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ Preferencias
+
+
+
+ Calibration skipped because already calibrated.
+ Calibración omitida porque ya está calibrada.
+
+
+
+ Calibrated
+ Calibrado
+
+
+
+ Save session
+ Guardar la sesión
+
+
+
+
+ Scopy-Files (*.ini)
+ Scopy-Archivos (*.ini)
+
+
+
+ Load session
+ Cargar sesión
+
+
+
+ Click to open the home menu
+ Haga clic para abrir el menú de inicio
+
+
+
+ Click to disconnect the device
+ Haga clic para desconectar el dispositivo
+
+
+
+ Click to save the current session
+ Haga clic para guardar la sesión actual
+
+
+
+
+ Click to load a session
+ Haga clic para cargar una sesión
+
+
+
+
+ Select a device first
+ Seleccione un dispositivo primero
+
+
+
+
+
+ Click to connect the device
+ Haga clic para conectar el dispositivo
+
+
+
+ Report a bug!
+ Reportar un error!
+
+
+
+ Connecting...
+ Conectando...
+
+
+
+ Disconnecting...
+ Desconectando...
+
+
+
+ Connect
+ Conectar
+
+
+
+ Calibrating...
+ Calibrando...
+
+
+
+ Calibration Failed
+ Error de Calibración
+
+
+
+
+ Disconnect
+ Desconectar
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ Soporte de decodificadores digitales está deshabilitada. Es posible que falten algunas funciones
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ Hubo un problema al inicializar libsigrokdecode. Es posible que falten algunas funciones
+
+
+
+ Calibrating
+ Calibrando
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ Osciloscopio
+
+
+
+ Spectrum Analyzer
+ Analizador de Espectro
+
+
+
+ Network Analyzer
+ Analizador de Rede
+
+
+
+ Signal Generator
+ Generador de Señal
+
+
+
+ Logic Analyzer
+ Analizador Lógico
+
+
+
+ Pattern Generator
+ Generador de Patrones
+
+
+
+ Digital IO
+ IO Digital
+
+
+
+ Voltmeter
+ Voltímetro
+
+
+
+ Power Supply
+ Fuente de Alimentación
+
+
+
+ Debugger
+
+
+
+
+ Calibration
+ Calibración
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ Calibrando...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ Disparador hacia adelante In
+
+
+
+ Oscilloscope
+ Osciloscopio
+
+
+
+
+ Logic Analyzer
+ Analizador lógico
+
+
+
+
+ μVolts
+
+
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+ Level
+ Nivel
+
+
+
+ Hysteresis
+ Histéresis
+
+
+
+ External Trigger In
+ Disparador Externo In
+
+
+
+ None
+ Ninguno
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ Nota
+
+
+
+ Invalid or empty file!
+ Archivo inválido o vacío!
+
+
+
+ Path:
+ Camino:
+
+
+
+ Warning: The file is empty!
+ Aviso: El archivo está vacío!
+
+
+
+ Warning: The path is invalid!
+ Aviso: El camino no es válido!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ Frecuencia de Muestreo
+
+
+
+ Nr of samples
+ No de muestras
+
+
+
+ Delay
+ Retrasar
+
+
+
+ Transparency
+ Transparencia
+
+
+
+ Select a decoder to add
+ Seleccione un decodificador para agregar
+
+
+
+ External Trigger In
+ Disparador externo In
+
+
+
+ Oscilloscope
+ Osciloscopio
+
+
+
+ Comma-separated values files (*.csv)
+ Archivos de valores separados por comas (* .csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ Archivos de valores delimitados por tabuladores (* .txt)
+
+
+
+ Value Change Dump(*.vcd)
+ Volcado de cambio de valor (*. Vcd)
+
+
+
+ All Files(*)
+ Todos los archivos(*)
+
+
+
+ Export
+ Exportar
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+ La consulta de la clave de configuración %1 resultó en %2
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+ La consulta de la clave de configuración %1 resultó en %2
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+ La consulta de la clave de configuración %1 resultó en %2
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ La consulta de la clave de configuración %1 resultó en %2
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ La consulta de la clave de configuración %1 resultó en %2
+
+
+
+ dioChannel
+
+
+ Form
+
+
+
+
+
+ 0
+
+
+
+
+ in
+ entrada
+
+
+
+ out
+ salida
+
+
+
+ 1
+
+
+
+
+ dioElement
+
+
+ Form
+
+
+
+
+ 0 - 7
+
+
+
+
+ Individual
+
+
+
+
+ Group
+ Grupo
+
+
+
+ in
+ entrada
+
+
+
+ out
+ salida
+
+
+
+ 127
+
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+
+
+
+
+ PulseScript
+
+
+
+
+ NumberOfPulses
+ NúmeroDePulsos
+
+
+
+ Samples/Pulse
+ Muestras/Pulso
+
+
+
+ Hi
+ Alto
+
+
+
+ Lo
+ Bajo
+
+
+
+ Frequency:
+ Frecuencia:
+
+
+
+ PushButton
+ PresionarElBotón
+
+
+
+ INVALID
+ INVÁLIDO
+
+
+
diff --git a/resources/translations/scopy_it.ts b/resources/translations/scopy_it.ts
new file mode 100644
index 0000000000..da95c9e136
--- /dev/null
+++ b/resources/translations/scopy_it.ts
@@ -0,0 +1,5972 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+ Scheda
+
+
+
+ BaseMenuItem
+
+
+ Form
+ Could be also 'Modulo' really depends on the context
+ Scheda
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+ Modulo
+
+
+
+ Init Value
+ Valore Iniziale
+
+
+
+
+ 0
+ 0
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ 1000
+ 1000
+
+
+
+ Start counter
+ Avvia il contatore
+
+
+
+ End counter
+ Ferma il contatore
+
+
+
+ 65535
+ 65535
+
+
+
+ Increment
+ Incremento
+
+
+
+ 1
+ 1
+
+
+
+ BitfieldWidget
+
+
+ Form
+ Modulo
+
+
+
+
+ TextLabel
+ Etichetta del Testo
+
+
+
+ 0x
+ 0x
+
+
+
+ CalibrationTemplate
+
+
+ Form
+ Modulo
+
+
+
+ Calibration info here
+ Informazioni di calibrazione qui
+
+
+
+ Set
+ Imposta
+
+
+
+ Measured
+ Misurato
+
+
+
+ Enter value here
+ Inserisci il valore qui
+
+
+
+ Restart
+ Riavvia
+
+
+
+ Next
+ Prossimo
+
+
+
+ Finish
+ Completa
+
+
+
+ Channel
+
+
+ Form
+ Scheda
+
+
+
+ Channel
+ Canale
+
+
+
+ ChannelSettings
+
+
+ Form
+ Scheda
+
+
+
+ Channel
+ Canale
+
+
+
+ MATH
+ MATEMATICA
+
+
+
+ Edit Function
+ Modifica Funzione
+
+
+
+ HORIZONTAL
+ ORIZZONTALE
+
+
+
+ VERTICAL
+ VERICALE
+
+
+
+ SETTINGS
+ IMPOSTAZIONI
+
+
+
+ CH Thickness
+ Spessore CH
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Memory depth
+ Profondità memoria
+
+
+
+ Probe
+Attenuation
+ Attenuazione sonda
+
+
+
+ 0.1X
+ 0.1X
+
+
+
+ 1X
+ 1X
+
+
+
+ 10X
+ 10X
+
+
+
+ 100X
+ 100X
+
+
+
+ Curve Style
+ Stile curva
+
+
+
+ Lines
+ Linee
+
+
+
+ Dots
+ Punti
+
+
+
+ Steps
+ Step
+
+
+
+ Sticks
+ Barre
+
+
+
+ Smooth
+ Smussato
+
+
+
+ Software
+AC Coupling
+ Accoppiamento AC Software
+
+
+
+ Filter 1 - Enabled
+ Filtro 1 - Abilitato
+
+
+
+
+ TC
+ TC
+
+
+
+
+ Gain
+ Guadagno
+
+
+
+
+ 0
+ 0
+
+
+
+ Filter 2 - Enabled
+ Filtro 2 - Abilitato
+
+
+
+ Autoset
+ Autoset
+
+
+
+ Snapshot
+ Istantanea
+
+
+
+ Connect
+
+
+ Form
+ Scheda
+
+
+
+ URI (Hostname)
+ URI (Hostname)
+
+
+
+ Connect
+ Connetti
+
+
+
+ Context info
+ Informazioni Contestuali
+
+
+
+ ConstantPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Constant
+ Costante
+
+
+
+ 0
+ 0
+
+
+
+ 1
+ 1
+
+
+
+ CursorReadouts
+
+
+ Form
+ Scheda
+
+
+
+ Δt =
+ Δt =
+
+
+
+
+ 0.000ms
+ 0.000ms
+
+
+
+ CurT2 =
+ CurT2 =
+
+
+
+ 1/Δt =
+ 1/Δt =
+
+
+
+ - 000.000 ms
+ - 000.000 ms
+
+
+
+ - 000.000 mHz
+ - 000.000 mHz
+
+
+
+ CurT1 =
+ CurT1 =
+
+
+
+ CurV2
+ CurV2
+
+
+
+ ΔV
+ CurV2
+
+
+
+ CurV1
+ CurV1
+
+
+
+
+ 000.000 mV
+ 000.000 mV
+
+
+
+ - 000.000 mV
+ - 000.000 mV
+
+
+
+
+
+ =
+ =
+
+
+
+ CursorsSettings
+
+
+ Form
+ Scheda
+
+
+
+ Cursors
+ Cursori
+
+
+
+ Normal
+ Normale
+
+
+
+ Track
+ Traccia
+
+
+
+ 0
+ 0
+
+
+
+ HORIZONTAL
+ ORIZZONTALE
+
+
+
+ VERTICAL
+ VERTICALE
+
+
+
+ CURSOR READOUTS
+ LETTURE DEI CURSORI
+
+
+
+ Transparency 0%
+ Traparenza 0%
+
+
+
+ Position
+ Posizione
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+ Scheda
+
+
+
+ DMM
+
+
+
+ MAX
+ MAX
+
+
+
+
+ MIN
+ MIN
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Run
+ Avvia
+
+
+
+ Channel 1
+ Canale 1
+
+
+
+
+ DC (Direct Current)
+ DC (Corrente diretta)
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ AC (20 Hz - 40 kHz)
+
+
+
+
+ 1s
+ 1s
+
+
+
+
+ 10s
+ 10s
+
+
+
+
+ 60s
+ 60s
+
+
+
+
+ History
+ Storia
+
+
+
+
+ Line thickness
+ Spessore linea
+
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+ 1
+ 1
+
+
+
+
+ 1.5
+ 1.5
+
+
+
+
+ 2
+ 2
+
+
+
+
+ 2.5
+ 2.5
+
+
+
+
+ 3
+ 3
+
+
+
+
+ 3.5
+ 3.5
+
+
+
+
+ 4
+ 4
+
+
+
+
+ 4.5
+ 4.5
+
+
+
+
+ 5
+ 5
+
+
+
+ Channel 2
+ Canale 2
+
+
+
+ PEAK HOLD
+ BLOCCA PICCO
+
+
+
+ Reset
+ Reset
+
+
+
+ DATA LOGGING
+ DATA LOGGING
+
+
+
+ Browse
+ Sfoglia
+
+
+
+ Append
+ Appendi
+
+
+
+ Choose a file
+ Scegli un file
+
+
+
+ Overwrite
+ Sovrascrivi
+
+
+
+ DbClickButtons
+
+
+ Form
+ Scheda
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ Debugger
+
+
+ MainWindow
+ Finestra Principale
+
+
+
+ SCRIPTING ENGINE
+ SCRIPTING ENGINE
+
+
+
+ Load Script
+ Cairca Script
+
+
+
+ Run
+ Avvia
+
+
+
+ Filename
+ Nome File
+
+
+
+
+ Read
+ Leggi
+
+
+
+ Device
+ Dispositivo
+
+
+
+ New Window
+ Nuova Finestra
+
+
+
+
+ Write
+ Scrivi
+
+
+
+
+ Value:
+ Valore
+
+
+
+ DEVICE SELECTION
+ SELEZIONE DISPOSITIVO
+
+
+
+ Detailed Register Map
+ Mappa dei Registri dettagliata
+
+
+
+ Address:
+ Indirizzo:
+
+
+
+ 0x0000
+ 0x0000
+
+
+
+ Display mode:
+ Modalità di visualizzazione:
+
+
+
+ <value>
+ <valore>
+
+
+
+
+ 0x
+ 0x
+
+
+
+ Description:
+ Descrizione:
+
+
+
+ Default Value:
+ Valore di default:
+
+
+
+ Source:
+ Sorgente:
+
+
+
+ Enable AutoRead
+ Abilita AutoRead
+
+
+
+ REGISTER MAP SETTINGS
+ IMPOSTAZIONI MAPPA REGISTRI
+
+
+
+ DetachDragZone
+
+
+ Form
+ Scheda
+
+
+
+ Drag here to detach!
+ Trascina qui per disancorare!
+
+
+
+ Device
+
+
+ Form
+ Scheda
+
+
+
+ DigitalIO
+
+
+ Form
+ Scheda
+
+
+
+ Run
+ Avvia
+
+
+
+ DigitalIoMenu
+
+
+ Form
+
+
+
+
+ PollingRate
+ Frequenza di Polling
+
+
+
+ 1000
+ 1000
+
+
+
+ Enable Outputs
+ Abilita Uscite
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+ Scheda
+
+
+
+ Trigger Settings
+ Impostazioni di Trigger
+
+
+
+ Trigger mode
+ Modalità di Trigger
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normale
+
+
+
+ Trigger Logic
+ Logica del Trigger
+
+
+
+ OR
+ OR
+
+
+
+ AND
+ AND
+
+
+
+ EXTERNAL TRIGGER
+ TRIGGER ESTERNO
+
+
+
+ Source
+ Sorgente
+
+
+
+ Condition
+ Condizione
+
+
+
+ None
+ Nessuno
+
+
+
+ EXTERNAL TRIGGER OUT
+ TRIGGER OUT ESTERNO
+
+
+
+ DragZone
+
+
+ Form
+ Scheda
+
+
+
+ EmptyPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ ExportSettings
+
+
+ Form
+ Scheda
+
+
+
+ EXPORT
+ ESPORTA
+
+
+
+ Export All
+ Esporta tutti
+
+
+
+ Export
+ Esporta
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ 1000
+ 1000
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Script status
+ Stato dello script
+
+
+
+ Clear console
+ Pulisci la console
+
+
+
+ HomepageControls
+
+
+ Form
+ Scheda
+
+
+
+ I2CPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ R
+ R
+
+
+
+ W
+ W
+
+
+
+ Read/Write
+ Leggi/Scrivi
+
+
+
+ MSB First
+ Byte più significativo prima
+
+
+
+ Address
+ Indirizzo
+
+
+
+ Inter frame space
+ Spazio Inter frame
+
+
+
+ Data
+ Dati
+
+
+
+ InfoPage
+
+
+ Form
+ Scheda
+
+
+
+ Forget device
+ Dimentica dispositivo
+
+
+
+ Identify
+ Identifica
+
+
+
+ Connect
+ Connetti
+
+
+
+ Calibrate
+ Calibra
+
+
+
+ InfoWidget
+
+
+ Form
+ Scheda
+
+
+
+ Move
+ Sposta
+
+
+
+ InstrumentNotes
+
+
+ Form
+ Scheda
+
+
+
+ Notes
+ Note
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+ Definitely a bug
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+ Insert notes here
+ Inserisci note qui
+
+
+
+ LAChannelGroup
+
+
+ Form
+ Scheda
+
+
+
+ DIO
+ DIO
+
+
+
+
+ 12
+ 12
+
+
+
+ None
+ Nessuno
+
+
+
+ LAChannelManager
+
+
+ Form
+ Scheda
+
+
+
+ LAManagerHeader
+
+
+ Form
+ Scheda
+
+
+
+ View
+ Mostra
+
+
+
+ Name
+ Nome
+
+
+
+ DIO
+ DIO
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Select
+ Seleziona
+
+
+
+ LARequiredChannel
+
+
+ Form
+ Scheda
+
+
+
+ Settings
+ Impostazioni
+
+
+
+
+ Role
+ Ruolo
+
+
+
+ LASettingsWidget
+
+
+ Form
+ Scheda
+
+
+
+ REQUIRED
+ RICHIESTO
+
+
+
+ OPTIONAL
+ OPZIONALE
+
+
+
+ OPTIONS
+ OPZIONI
+
+
+
+ LChannelSettings
+
+
+ Form
+ Scheda
+
+
+
+ BG Color
+ Colore BG
+
+
+
+ Edge Color
+ Colore Bordo
+
+
+
+ Low Color
+ Colore Basso
+
+
+
+ High Color
+ Colore Alto
+
+
+
+ SETTINGS
+ IMPOSTAZIONI
+
+
+
+ COLOR SETTINGS
+ IMPOSTAZIONI COLORE
+
+
+
+ Name
+ Nome
+
+
+
+ Thickness
+ Spessore
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ LFSRPatternUI
+
+
+ Form
+ Scheda
+
+
+
+
+ 0x0001
+ 0x0001
+
+
+
+ Generator Polynomial
+ Generatore Polinomiale
+
+
+
+ Start State
+ Stato Iniziale
+
+
+
+ Period
+ Peiodo
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Analizatore Logico Scopy
+
+
+
+ Group
+ Gruppo
+
+
+
+
+ Channel Settings
+ Impostazioni canali
+
+
+
+
+ -
+ -
+
+
+
+ Name
+ Nome
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ Altezza traccia
+
+
+
+ GROUP
+ GRUPPO
+
+
+
+ Stack Decoder:
+ Decoder Stack:
+
+
+
+ Trigger Settings
+ Impostazioni di trigger
+
+
+
+ Trigger mode
+ Modalità trigger
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normale
+
+
+
+ Trigger Logic
+ Logica Trigger
+
+
+
+ EXTERNAL TRIGGER
+ TRIGGER ESTERNO
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Avviso: Questa funzionalità non è supportata sulla versione corrente del firmware!"
+
+
+
+ Source
+ Sorgente
+
+
+
+ Condition
+ Condizione
+
+
+
+ General Settings
+ Impostazioni Generali
+
+
+
+ OneShot
+ Shot singolo
+
+
+
+ AVAILABLE CHANNELS
+ CANALI DISPONIBILI
+
+
+
+ DECODERS
+ DECODERS
+
+
+
+ Close
+ Chiudi
+
+
+
+ Print
+ Stampa
+
+
+
+ Stream
+ Stream
+
+
+
+ Cursors
+ Cursori
+
+
+
+
+ Trigger
+ Trigger
+
+
+
+ ManualCalibration
+
+
+ Form
+ Scheda
+
+
+
+ Load Calibration
+ Carica Calibrazione
+
+
+
+ Save Calibration
+ Salva Calibrazione
+
+
+
+ Run automatic
+ Esegui autmaticamente
+
+
+
+ MarkerTable
+
+
+ Form
+ Scheda
+
+
+
+ Math
+
+
+ Form
+ Scheda
+
+
+
+ f(t) =
+ f(t) =
+
+
+
+ cos
+ cos
+
+
+
+ 2
+ 2
+
+
+
+ 7
+ 7
+
+
+
+ ,
+ ,
+
+
+
+ 3
+ 3
+
+
+
+ ←
+ ←
+
+
+
+ (
+ (
+
+
+
+ exp
+ exp
+
+
+
+ 1
+ 1
+
+
+
+ 8
+ 8
+
+
+
+ -
+ -
+
+
+
+ /
+ /
+
+
+
+ *
+ *
+
+
+
+ e
+ e
+
+
+
+ C
+ C
+
+
+
+ 0
+ 0
+
+
+
+ 6
+ 6
+
+
+
+ )
+ )
+
+
+
+ log
+ log
+
+
+
+ t
+ t
+
+
+
+ +
+ +
+
+
+
+ 9
+ 9
+
+
+
+ tan
+ tan
+
+
+
+ ^
+ ^
+
+
+
+ 4
+ 4
+
+
+
+ Apply
+ Applica
+
+
+
+ pi
+ pi
+
+
+
+ 5
+ 5
+
+
+
+ sin
+ sin
+
+
+
+ MathPanel
+
+
+ Form
+ Scheda
+
+
+
+ Add channel
+ Aggiungi canale
+
+
+
+ MeasureSettings
+
+
+ Form
+ Scheda
+
+
+
+ Measure
+ Misura
+
+
+
+ Channel
+ Canale
+
+
+
+ MEASUREMENTS
+ MISURE
+
+
+
+ Counter
+ Contatore
+
+
+
+ Display All
+ Mostra Tutto
+
+
+
+
+ Delete All
+ Cancella Tutto
+
+
+
+ STATISTICS
+ STATISTICHE
+
+
+
+ Reset
+ Reimposta
+
+
+
+ CUSTOM SELECTION
+ SELEZIONE PERSONALIZZATA
+
+
+
+ Enable
+ Abilita
+
+
+
+ GATING SETTINGS
+ IMPOSTAZIONI DI GATING
+
+
+
+ MeasurementsPanel
+
+
+ Form
+ Scheda
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ Stampa
+
+
+
+ Current Frequency:
+ Frequenza attuale:
+
+
+
+ Sample:
+ Campione:
+
+
+
+ Average:
+ Media:
+
+
+
+ Phase (°)
+ Fase (°)
+
+
+
+ Magnitude (dB)
+ Ampiezza (dB)
+
+
+
+ °
+ °
+
+
+
+ 10
+ 10
+
+
+
+ Settings
+ Impostazioni
+
+
+
+
+ REFERENCE
+ RIFERIMENTO
+
+
+
+ Channel 1
+ Canale 1
+
+
+
+ Channel 2
+ Canale 2
+
+
+
+ 0
+ 0
+
+
+
+ Gain Mode
+ Tipo di Guadagno
+
+
+
+ Automatic
+ Automatico
+
+
+
+ Low
+ Basso
+
+
+
+ High
+ Alto
+
+
+
+ RESPONSE
+ RISPOSTA
+
+
+
+ DC Filtering
+ Filtraggio DC
+
+
+
+
+ On
+ Acceso
+
+
+
+
+ Off
+ Spento
+
+
+
+ SWEEP
+ SCANSIONE
+
+
+
+ Logarithmic
+ Logaritmica
+
+
+
+ Linear
+ Lineare
+
+
+
+ Average
+ Media
+
+
+
+
+ Apply
+ Applica
+
+
+
+ Periods
+ Periodi
+
+
+
+ DISPLAY
+ MOSTRA
+
+
+
+ Delta Label
+ Etichetta Delta
+
+
+
+ BUFFER PREVIEWER
+ PREVISUALIZZATORE BUFFER
+
+
+
+ ViewInOsc
+ VisualizzaInOsc
+
+
+
+ Previous
+ Precedente
+
+
+
+ Next
+ Successivo
+
+
+
+ General Settings
+ Impostazioni Generali
+
+
+
+ PLOT
+ STAMPA
+
+
+
+ Type
+ Tipo
+
+
+
+ Bode
+ Bode
+
+
+
+ Nyquist
+ Nyquist
+
+
+
+ Nichols
+ Nichols
+
+
+
+ Line thickness
+ Spessore Linea
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ EXPORT
+ ESPORTA
+
+
+
+ Export
+ Esporta
+
+
+
+ Import
+ Importa
+
+
+
+ Snapshot
+ Istantanea
+
+
+
+ Remove Reference
+ Rimuovi Riferimento
+
+
+
+ Cursors
+ Cursori
+
+
+
+ CURSOR READOUTS
+ LETTURE CURSORI
+
+
+
+ Transparency 0%
+ Trasparenza 0%
+
+
+
+ Position
+ Posizione
+
+
+
+ Cursors
+ Cursori
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+ Scheda
+
+
+
+ Note
+
+
+ TextLabel
+ Etichetta
+
+
+
+ NumberPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Number
+ Numero
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ Impostazioni Generali
+
+
+
+ General settings
+ Impostazioni Generali
+
+
+
+ VIEWS
+ VISTE
+
+
+
+ FFT
+ FFT
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Histogram
+ Istogramma
+
+
+
+ X-Y
+ X-YX-Y
+
+
+
+ Y-Axis
+ Asse-Y
+
+
+
+ X-Axis
+ Asse-X
+
+
+
+ dots
+ punti
+
+
+
+ lines
+ linee
+
+
+
+ X-Y Line thickness
+ Spessore Linee X-Y
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ 6
+ 6
+
+
+
+ 7
+ 7
+
+
+
+ 8
+ 8
+
+
+
+ 9
+ 9
+
+
+
+ 10
+ 10
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy Oscilloscopio
+
+
+
+ Print
+ Stampa
+
+
+
+ Cursors
+ Cursori
+
+
+
+ Measure
+ Misura
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Close
+ Chiudi
+
+
+
+ PGCGSettings
+
+
+ Form
+ Scheda
+
+
+
+ TextLabel
+ Etichetta
+
+
+
+ Pattern
+ Pattern
+
+
+
+ Output
+ Uscita
+
+
+
+ PP
+ PD
+
+
+
+ OD
+ OD
+
+
+
+ CLOCK
+ CLOCK
+
+
+
+ SETTINGS
+ IMPOSTAZIONI
+
+
+
+ Name
+ Nome
+
+
+
+ Thickness
+ Spessore
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ COLOR SETTINGS
+ IMPOSTAZIONI COLORI
+
+
+
+ BG Color
+ Colore BG
+
+
+
+ Edge Color
+ Colore Bordo
+
+
+
+ Low Color
+ Colore Basso
+
+
+
+ High Color
+ Colore Alto
+
+
+
+ PGChannel
+
+
+ Form
+ Scheda
+
+
+
+ TextLabel
+ Etichetta
+
+
+
+ PGChannelGroup
+
+
+ Form
+ Scheda
+
+
+
+ TextLabel
+ Etichetta
+
+
+
+ 12
+ 12
+
+
+
+ PGChannelManager
+
+
+ Form
+ Scheda
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+ Scheda
+
+
+
+ Enable
+ Abilita
+
+
+
+ Name
+ Nome
+
+
+
+ DIO
+ DIO
+
+
+
+ Select
+ Seleziona
+
+
+
+ PGSettings
+
+
+ Form
+ Scheda
+
+
+
+ Settings
+ Impostazioni
+
+
+
+ Autoset
+ AUtoconfigura
+
+
+
+ Sample Rate
+ Frequenza di campionamento
+
+
+
+ Buffer Size
+ Dimensione del buffer
+
+
+
+ ExternalClock
+ Clock esterno
+
+
+
+ External Clock Frequency
+ Frequenza del clock esterno
+
+
+
+ Reset Instrument
+ Reimposta strumento
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Generatore di Pattern Scopy
+
+
+
+ Print
+ Stampa
+
+
+
+ Group
+ Raggruppa
+
+
+
+
+ Channel Settings
+ Impostazioni Canale
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ Altezza traccia
+
+
+
+ Name
+ Nome
+
+
+
+ Open-Drain
+ Open-Drain
+
+
+
+ Push-Pull
+ Push-Pull
+
+
+
+ GROUP
+ GRUPPO
+
+
+
+ Pattern
+ Pattern
+
+
+
+ Trigger Settings
+ Impostazioni Trigger
+
+
+
+ Trigger mode
+ Modalità Trigger
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normale
+
+
+
+ Trigger Logic
+ Logica Trigger
+
+
+
+ EXTERNAL TRIGGER
+ TRIGGER ESTERNO
+
+
+
+ Source
+ Sorgente
+
+
+
+ Condition
+ Condizione
+
+
+
+ -
+ -
+
+
+
+ General Settings
+ Impostazioni Generali
+
+
+
+ AVAILABLE CHANNELS
+ CANALI DISPONIBILI
+
+
+
+ Cursors
+ Cursori
+
+
+
+ Trigger
+ Trigger
+
+
+
+ Close
+ Chiudi
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy Power Control
+
+
+
+
+ Set
+ Imposta
+
+
+
+
+ Measure
+ Misura
+
+
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Tracking ratio control
+ Controllo del rapporto di Tracciamento
+
+
+
+ Independent
+ Indipendente
+
+
+
+ Tracking
+ Tracciamento
+
+
+
+ 100
+ 100
+
+
+
+ %
+ %
+
+
+
+ Positive output
+ Uscita Positiva
+
+
+
+
+ Enable
+ Abilita
+
+
+
+ Negative output
+ Uscita Negativa
+
+
+
+ Preferences
+
+
+ Form
+ Scheda
+
+
+
+ GENERAL
+ GENERALE
+
+
+
+ OSCILLOSCOPE
+ OSCILLOSCOPIO
+
+
+
+ Enable labels on the plot
+ Abilita etichette sulla figura
+
+
+
+ Enable graticule
+ Abilita griglia
+
+
+
+ Enable mini histogram
+ Abilita mini istogramma
+
+
+
+ Enable all instrument notes
+ Abilita tutte le note degli strumenti
+
+
+
+ Language (requires app restart)
+ Linguaggio (richede il riavvio dell'app)
+
+
+
+ Restart the application for changes to take effect
+ Riavvia l'applicazione per rendere i cambiamenti effettivi
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ Tentativo di calibrazione basata sulla temperatura (SPERIMENTALE)
+
+
+
+ Enable animations
+ Abilita animazioni
+
+
+
+ 1
+ 1
+
+
+
+ Run external scripts (Experimental)
+ Esegui gli script esterni (Sperimentale)
+
+
+
+ SPECTRUM ANALYZER
+ ANALIZZATORE DI SPETTRO
+
+
+
+ Only search marker peaks in visible domain
+ Cerca picchi marker sono nel dominio visibile
+
+
+
+ Double click to detach a tool
+ Doppio click per disancorare un tool
+
+
+
+ Save session when closing Scopy
+ Salva sessione quando chiudi Scopy
+
+
+
+ NETWORK ANALYZER
+ ANALIZZATORE DI RETE
+
+
+
+ Always display 0db value on graph
+ Mostra sempre 0dB sul grafico
+
+
+
+ Scriptable manual calibration
+ Calibrazione manuale basata su script
+
+
+
+ Show advanced device information
+ Mosta informazioni avanzate dispositivo
+
+
+
+ LOGIC ANALYZER
+ ANALIZZATORE LOGICO
+
+
+
+ Display sampling points when zoomed
+ Mostra punti di campionamento quando ingrandisci
+
+
+
+ SIGNAL GENERATOR
+ GENERATORE DI SEGNALE
+
+
+
+ Number of displayed periods
+ Numeri di periodi mostrati
+
+
+
+ Enable digital decoders
+ Abilita i decoder digitali
+
+
+
+ Enable sample rate filters
+ Abilita i filtri di campionamento
+
+
+
+ Show ADC digital filter config
+ Mostra la configurazione dei filtri digitali dell'ADC
+
+
+
+ DEBUG
+ DEBUG
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ Abilita i messaggi di debug (solo per scopi di debug, bug report)
+
+
+
+ Enable Debug Instrument
+ Abilita Strumento di Debug
+
+
+
+ Enable user notes in main page
+ Abilita note utente nella pagina principale
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ Salta la calibrazione se già calibrato (i valori di calibrazione non sono i default)
+
+
+
+ Reset Scopy
+ Ripristina Scopy
+
+
+
+ PulsePatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Low
+ Low
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ High
+ High
+
+
+
+ 100
+ 100
+
+
+
+ Counter Init
+ Inizializza contatore
+
+
+
+ Delay
+ Ritardo
+
+
+
+
+ 1
+ 1
+
+
+
+ Delay polarity
+ Polarità del ritardo
+
+
+
+ Number of pulses
+ Numero di Impulsi
+
+
+
+ QObject
+
+
+ Period
+ Periodo
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ Min
+ Min
+
+
+
+ Max
+ Max
+
+
+
+ Peak-peak
+ Picco-Picco
+
+
+
+ Mean
+ Media
+
+
+
+ Cycle Mean
+ Media Cycle
+
+
+
+ RMS
+ RMS
+
+
+
+ Cycle RMS
+ RMS Cycle
+
+
+
+ AC RMS
+ RMC AC
+
+
+
+ Area
+ Area
+
+
+
+ Cycle Area
+ Area Cycle
+
+
+
+ Low
+ Basso
+
+
+
+ High
+ Alto
+
+
+
+ Amplitude
+ Ampiezza
+
+
+
+ Middle
+ Medio
+
+
+
+ +Over
+ + Over
+
+
+
+ -Over
+ - Over
+
+
+
+ Rise
+ Salita
+
+
+
+ Fall
+ Discesa
+
+
+
+ +Width
+ + Larghezza
+
+
+
+ -Width
+ - Larghezza
+
+
+
+ +Duty
+ + Duty
+
+
+
+ -Duty
+ - Duty
+
+
+
+ RegisterWidget
+
+
+ Form
+ Scheda
+
+
+
+ RunSingleWidget
+
+
+ Form
+ Scheda
+
+
+
+ Run
+ Avvia
+
+
+
+ Single
+ Acquisizione Singola
+
+
+
+ SPIPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ MSB First
+ Byte più significativo prima
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+ 0
+ 0
+
+
+
+ CLK Phase
+ Fase CLK
+
+
+
+ CS Polarity
+ Polarità CS
+
+
+
+ CLK Polarity
+ Polarità CLK
+
+
+
+ Bytes per frame
+ Byte per frame
+
+
+
+ Inter frame space
+ Spazio Inter frame
+
+
+
+ Data
+ Dati
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Generatore di Segnali Scopy
+
+
+
+ Constant
+ Costante
+
+
+
+ Waveform
+ Forma d'onda
+
+
+
+ Sine
+ Seno
+
+
+
+ Square
+ Onda quadra
+
+
+
+ Triangle
+ Onda Triangolare
+
+
+
+ Trapezoidal
+ Onda Trapezoidale
+
+
+
+ Rising Ramp Sawtooth
+ Dente di sega a rampa ascendente
+
+
+
+ Falling Ramp Sawtooth
+ Dente di sega a rampa discendente
+
+
+
+ Stair Step
+ Rampa spezzata
+
+
+
+ TIMING
+ TEMPO
+
+
+
+ Buffer
+ Buffer
+
+
+
+ FILE
+ FILE
+
+
+
+ Path
+ Percorso
+
+
+
+
+ No file loaded
+ Nessun file caricato
+
+
+
+ Format
+ Formato
+
+
+
+ Size
+ Dimensione
+
+
+
+ 0 samples
+ 0 campioni
+
+
+
+ Load file
+ Carica File
+
+
+
+ Channel
+ Canale
+
+
+
+ SCALING
+ SCALING
+
+
+
+ Math
+ Matematica
+
+
+
+ NOISE
+ RUMORE
+
+
+
+ None
+ Nessuno
+
+
+
+ Uniform
+ Uniforme
+
+
+
+ Gaussian
+ Gaussiano
+
+
+
+ Laplacian
+ Laplaciano
+
+
+
+ Impulse
+ Impulso
+
+
+
+ OTHER
+ ALTRO
+
+
+
+ Line thickness
+ Spessore linea
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Close
+ Chiudi
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+ Scheda
+
+
+
+ Print
+ Stampa
+
+
+
+ Preset
+ Preset
+
+
+
+
+ dBFS
+ dBFS
+
+
+
+ Sample:
+ Campione:
+
+
+
+ Average Sample:
+ Media Campione:
+
+
+
+ Marker_n 0.000 Hz 0dB
+ Marker_n 0.000 Hz 0dB
+
+
+
+ Channel
+ Canale
+
+
+
+ Type
+ Tipo
+
+
+
+ Sample
+ Campione
+
+
+
+ and other types
+ e altri tipi
+
+
+
+ Window
+ Finestra
+
+
+
+ Uniform (none)
+ Uniforme (nessuna)
+
+
+
+ and others windows
+ e altre finestre
+
+
+
+ Averaging
+ Media
+
+
+
+ Apply
+ Applica
+
+
+
+ CH Thickness
+ Spessore CH
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ History
+ Storia
+
+
+
+ Gain mode
+ Modo Guadagno
+
+
+
+
+ Low
+ Basso
+
+
+
+ High
+ Alto
+
+
+
+ Snapshot
+ Istantanea
+
+
+
+ General settings
+ Impostazioni Generali
+
+
+
+ Export
+ Esporta
+
+
+
+
+ Sweep
+ Spazzolata
+
+
+
+ Logarithmic
+ Logaritmica
+
+
+
+ Linear
+ Lineare
+
+
+
+ FREQUENCY
+ FREQUENZA
+
+
+
+ AMPLITUDE
+ AMPIEZZA
+
+
+
+ Resolution BW
+ Risoluzione BW
+
+
+
+ Units
+ Unità
+
+
+
+
+ Markers
+ Marcatori
+
+
+
+ Settings
+ Impostazioni
+
+
+
+ MARKER
+ MARCATORE
+
+
+
+ Normal
+ Normale
+
+
+
+ Delta
+ Delta
+
+
+
+ Peak
+ Picco
+
+
+
+
+ Peak
+ Picco
+
+
+
+
+ Ampl
+ Ampl
+
+
+
+ GENERAL
+ GENERALE
+
+
+
+ Marker Table
+ Tabella Marcatore
+
+
+
+ Import Reference Channels
+ Impota canali di riferimento
+
+
+
+ No file selected!
+ Nessun file selezionato!
+
+
+
+ Browse
+ Sfoglia
+
+
+
+ Import
+ Importa
+
+
+
+ SpinBoxA
+
+
+ Form
+ Scheda
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+ Scheda
+
+
+
+ Statistic
+
+
+ Form
+ Scheda
+
+
+
+ Avg:
+ Media:
+
+
+
+
+
+ 0.000
+ 0.000
+
+
+
+ Min:
+ Min:
+
+
+
+ Max:
+ Max:
+
+
+
+ 1
+ 1
+
+
+
+ Measurement
+ Misura
+
+
+
+ StatisticsPanel
+
+
+ Form
+ Scheda
+
+
+
+ ToolLauncher
+
+
+ Scopy
+ Scopy
+
+
+
+ Home
+ Home
+
+
+
+ Save
+ Salva
+
+
+
+ Load
+ Carica
+
+
+
+ Preferences
+ Preferenze
+
+
+
+ Notes
+ Nte
+
+
+
+ Quit
+ Abbandona
+
+
+
+ ADC Offset
+ ADC Offset
+
+
+
+ ADC Gain
+ Guadagno del ADC
+
+
+
+ Reset ADC Calibration
+ Reimposta Calibrazione ADC
+
+
+
+ TriggerSettings
+
+
+ Form
+ Scheda
+
+
+
+ Trigger Settings
+ Impostazioni Trigger
+
+
+
+ Trigger mode
+ Modalità Trigger
+
+
+
+ auto
+ auto
+
+
+
+ normal
+ normale
+
+
+
+
+ Source
+ Sorgente
+
+
+
+ INTERNAL (ANALOG)
+ INTERNO (ANALOGICO)
+
+
+
+
+ Condition
+ Condizione
+
+
+
+
+ Rising Edge
+ Fronte di Salita
+
+
+
+
+ Falling Edge
+ Fronte di Discesa
+
+
+
+
+ Low
+ Basso
+
+
+
+
+ High
+ Alto
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ Questa funzionalità non è supportata mente la Mixed Signal View è abilitata!
+
+
+
+ DIGITAL
+ DIGITALE
+
+
+
+ Any Edge
+ Qualunque fronte
+
+
+
+ M2K daisychain position
+ M2K posizione daisychain
+
+
+
+ TRIGGER LOGIC
+ LOGICA TRIGGER
+
+
+
+ Analog - Digital
+ Analogico - Digitale
+
+
+
+ Digital OR Analog
+ Digitale OR Analogico
+
+
+
+ Digital AND Analog
+ Digitale AND Analogico
+
+
+
+ Digital XOR Analog
+ Digitale XOR Analogico
+
+
+
+ !Digital OR Analog
+ !Digitale OR Analogico
+
+
+
+ !Digital AND Analog
+ !Digitale AND Analogico
+
+
+
+ !Digital XOR Analog
+ !Digitale XOR Analogico
+
+
+
+ EXTERNAL TRIGGER OUT
+ TRIGGER OUT ESTERNO
+
+
+
+ UARTPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Stop
+ Stop
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ Baud
+ Baud
+
+
+
+
+ 9600
+ 9600
+
+
+
+ 1200
+ 9600
+
+
+
+ 2400
+ 2400
+
+
+
+ 4800
+ 4800
+
+
+
+ 14400
+ 14400
+
+
+
+ 19200
+ 19200
+
+
+
+ 28800
+ 28800
+
+
+
+ 38400
+ 38400
+
+
+
+ 57600
+ 57600
+
+
+
+ 115200
+ 115200
+
+
+
+ 230400
+ 230400
+
+
+
+ Parity
+ Parità
+
+
+
+ NONE
+ NESSUNA
+
+
+
+ ODD
+ DISPARI
+
+
+
+ EVEN
+ PARI
+
+
+
+ MARK
+ MARK
+
+
+
+ SPACE
+ SPACE
+
+
+
+ Parameters
+ Parametri
+
+
+
+ Data to Send
+ Data to Send
+
+
+
+ UserNotePage
+
+
+ Form
+
+
+
+
+ Remove note
+ Rimuovi nota
+
+
+
+ UserNotes
+
+
+ Form
+ Scheda
+
+
+
+ Save
+ Salva
+
+
+
+ File path
+ Percorso del file
+
+
+
+ Browse
+ Sfoglia
+
+
+
+ Note name
+ Nome Nota
+
+
+
+ WalkingPatternUI
+
+
+ Form
+ Scheda
+
+
+
+ Walking level
+ Livello Scorrimento
+
+
+
+ 0
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ 1000
+ 100
+
+
+
+ Direction
+ Direzione
+
+
+
+ Right
+ Destra
+
+
+
+ Left
+ Sinistra
+
+
+
+ Length
+ Lunghezza
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+ Zoom:
+
+
+
+
+ /div
+ /div
+
+
+
+ Waiting
+ In attesa
+
+
+
+ Triggered
+ Trigger attivo
+
+
+
+ Stop
+ Ferma
+
+
+
+ Auto
+ Auto
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ Phase
+ Fase
+
+
+
+ Duty
+ Duty
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ Connetti
+
+
+
+ Waiting for connection ...
+ In attesa di connessione...
+
+
+
+
+ Context info
+ Informazioni contestuali
+
+
+
+ Add
+ Aggiungi
+
+
+
+ Warning
+ Avviso
+
+
+
+ Error: Unable to find host: No such host is known!
+ Errore: Impossibile trovare l'host: non esiste alcun host con questo nome!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+
+
+
+
+ off
+ spento
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ Timer
+
+
+
+ Stop
+ Ferma
+
+
+
+ Run
+ Avvia
+
+
+
+ Export
+ Esporta
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ File Comma-separated values (.*csv);;Tutti i Files(*)
+
+
+
+ No file selected
+ Nessun file selezionato
+
+
+
+
+ File is open in another program
+ Il file è aperto in un altro programma
+
+
+
+
+ Choose a file
+ Scegli un file
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ Salva File
+
+
+
+ JavaScript (*.js)
+ JavaScript (*.js)
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ Interrompi
+
+
+
+ Run
+ Avvia
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ Canali
+
+
+
+ Name
+ Nome
+
+
+
+ Export
+ Esporta
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ Open file
+ Apri file
+
+
+
+ Import selected channels
+ Importa i canali selezionati
+
+
+
+ No file selected
+ Nessun file selezionato
+
+
+
+ Export
+ Esporta
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ File CSV (*.CSV);;File con valori delimitati da Tab (.*txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ Importa
+
+
+
+ Import all
+ Importa tutti
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+ Errore: Connessione fallita!
+
+
+
+ Connected
+ Connesso
+
+
+
+ Your hardware revision does not support the identify feature
+ La revisione del tuo hardware non supporta la funzionalità di identificazione
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+ M2K
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ Non connesso
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ Disconnettere sempre gli ingressi/uscite analogiche prima della calibrazione
+
+
+
+ Can't identify this device.
+ Impossibile identificare questo dispositivo
+
+
+
+ Can't identify device. Please try to update your firmware!
+ Impossibile identificare dispositivo. Si prega di provare ad aggiornare il firmware!
+
+
+
+ Your hardware revision does not support the identify feature
+ La revisione del tuo hardware non supporta la funzionalità di identificazione
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ Salva File
+
+
+
+ ini (*.ini)
+ ini (*.ini)
+
+
+
+
+ °C
+ °C
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+ Identificativo
+
+
+
+ Marker
+ Marcatore
+
+
+
+ Channel
+ Canale
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ Magnitude
+ Ampiezza
+
+
+
+ Type
+ Tipo
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ Orizzontale
+
+
+
+
+ Name
+ Nome
+
+
+
+
+ Measure
+ Misura
+
+
+
+
+ Stats
+ Statistiche
+
+
+
+ Vertical
+ Verticale
+
+
+
+
+ Recover
+ Recupera
+
+
+
+
+ Delete All
+ Cancella Tutto
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ Arrestato
+
+
+
+ Frequency (Hz)
+ Frequenza (Hz)
+
+
+
+ Magnitude(dB)
+ Ampiezza (dB)
+
+
+
+ Phase (°)
+ Fase (°)
+
+
+
+ Samples count
+ Conteggio campioni
+
+
+
+ Samps/decade
+ Campioni/decade
+
+
+
+ Step
+ Passo
+
+
+
+ Amplitude
+ Ampiezza
+
+
+
+ Offset
+ Offset
+
+
+
+ Max. Magnitude
+ Ampiezza Max.
+
+
+
+ Min. Magnitude
+ Ampiezza Min.
+
+
+
+ Max. Phase
+ Fase Max.
+
+
+
+ Min. Phase
+ Fase Min.
+
+
+
+
+ Settling time
+ Tempo di assestamento
+
+
+
+ Before Buffer
+ Pre-buffer
+
+
+
+ After Buffer
+ Post-buffer
+
+
+
+
+ Sample:
+ Campione:
+
+
+
+
+ Current Frequency:
+ Frequenza Corrente:
+
+
+
+
+ DC Voltage:
+ Tensione DC:
+
+
+
+
+ Response channel voltage < 50mV!
+ Risposta tensione canale < 50mV!
+
+
+
+
+ Low
+ Basso
+
+
+
+
+ High
+ Alto
+
+
+
+
+ Gain Mode:
+ Modo Guadagno:
+
+
+
+ Transparency
+ Trasparenza
+
+
+
+ Image
+ Immagine
+
+
+
+ Save to
+ Salva come
+
+
+
+ Import
+ Importa
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ File Comma-separated values (*.csv);;File Tab-delimited values (*.txt)
+
+
+
+ Comma-separated values files (*.csv)
+ File Comma-separated values (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ File Tab-delimited values (*.txt)
+
+
+
+ All Files(*)
+ Tutti i file (*)
+
+
+
+ Export
+ Esporta
+
+
+
+ Average:
+ Media:
+
+
+
+ Running
+ Eseguendo
+
+
+
+ Stopping...
+ Arrestando...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ Trasparenza
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ Base dei Tempi
+
+
+
+
+ Position
+ Posizione
+
+
+
+ Volts/Div
+ Volt/Div
+
+
+
+
+ Add Channel
+ Aggiungi Canale
+
+
+
+
+
+ Export
+ Esporta
+
+
+
+
+ Comma-separated values files (*.csv)
+ File Comma-separated values (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ File Tab-delimited values (*.txt)
+
+
+
+
+ All Files(*)
+ Tutti i File (*)
+
+
+
+ Transparency
+ Trasparenza
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "Avviso: Questa funzionalità non è supportata dall versione corrente del firmware!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * Quando la Mixed Signal View è abilitata l'Analizatore Logico è disabilitato! ** Il trigger può essere disabilitato o abilitato solo o sui canali Digitali o su quelli Analogici, ma non su entrambi allo stesso tempo!
+
+
+
+ Math
+ Matematica
+
+
+
+ Browse
+ Sfoglia
+
+
+
+ No file selected
+ Nessun file selezionato
+
+
+
+
+ Reference
+ Riferimento
+
+
+
+ Logic
+ Logica
+
+
+
+ Add channel
+ Aggiungi Canale
+
+
+
+ Import selected channels
+ Importa i canali selezionati
+
+
+
+ Enable Mixed Signal View
+ Abilita Mixed Signal View
+
+
+
+ Import
+ Importa
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ File Comma-separated values (*.csv);;File Tab-delimited values (*.txt)
+
+
+
+
+ Snapshot
+ Istantanea
+
+
+
+ Filter 1 - Enable -
+ Filtro 1 - Abilita -
+
+
+
+ Filter 2 - Enable -
+ Filtro 2 - Abilita -
+
+
+
+
+ Save
+ Salva
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+ milliVolt
+
+
+
+
+ Volts
+ Volt
+
+
+
+
+ Value
+ Valore
+
+
+
+
+ Disable
+ Disabilita
+
+
+
+
+ Enable
+ Abilita
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ Questo cambiamento sarà applicato al riavvio di Scopy
+
+
+
+ By resetting scopy you will lose the current configuration!
+ Ripristinando Scopy perderai la configurazione attuale!
+
+
+
+ Do you want to reset?
+ Vuoi ripristinare?
+
+
+
+ Load language
+ Carica linguaggio
+
+
+
+ Language files (*.qm)
+ File di Linguaggio (*.qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ Documenti
+
+
+
+ Image
+ Immagine
+
+
+
+ Export File Name
+ lack of context
+ Nome del file Esportato
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ Frequenza di Campionamento
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ Avvia
+
+
+
+
+
+ Single
+ Acquisizione Singola
+
+
+
+
+
+
+
+ Stop
+ Ferma
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ Frequenza
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+ deg
+
+
+
+ π rad
+ π rad
+
+
+
+
+
+
+
+ ns
+ ns
+
+
+
+
+
+
+
+ μs
+ μs
+
+
+
+
+
+
+
+ ms
+ ms
+
+
+
+
+
+
+
+ s
+ s
+
+
+
+
+
+ Phase
+ Fase
+
+
+
+ μVolts p-p
+ μVolt p-p
+
+
+
+ mVolts p-p
+ mVolt p-p
+
+
+
+ Volts p-p
+ Volt p-p
+
+
+
+
+
+ Amplitude
+ Ampiezza
+
+
+
+
+
+
+ μVolts
+ μVolt
+
+
+
+
+
+
+
+ mVolts
+ mVolt
+
+
+
+
+
+
+
+ Volts
+ Volt
+
+
+
+
+ Offset
+ Offset
+
+
+
+ mHz
+ mHz
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency
+ Frequenza
+
+
+
+ Rising
+ Salita
+
+
+
+ Falling
+ Discesa
+
+
+
+ Rise Time
+ Tempo di Salita
+
+
+
+ Fall Time
+ Tempo di Discesa
+
+
+
+ High Time
+ Tempo Alto
+
+
+
+ Low Time
+ Tempo Basso
+
+
+
+
+ SampleRate
+ Frequenza di Campionamento
+
+
+
+ Record Length
+ Lungezza Record
+
+
+
+ Value
+ Valore
+
+
+
+ Duty Cycle
+ Duty Cycle
+
+
+
+
+
+ samples
+ campioni
+
+
+
+ Open File
+ Apri File
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ File Comma-separated values (*.csv);;File Tab-delimited values (*.txt);;File Waveform Audio Format (*.wav);;File Matlab (*.mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ Tesione (V)
+
+
+
+ Time (s)
+ Tempo (s)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ Esporta
+
+
+
+ dBFS
+ dBFS
+
+
+
+ dBV
+ dBV
+
+
+
+ dBu
+ dBu
+
+
+
+ Vpeak
+ Vpicco
+
+
+
+ Vrms
+ Vrms
+
+
+
+ V/√Hz
+ V/√Hz
+
+
+
+ Sample
+ Campione
+
+
+
+ Peak Hold
+ Peak Hold
+
+
+
+ Peak Hold Continous
+ Peak Hold Continous
+
+
+
+ Min Hold
+ Min Hold
+
+
+
+ Min Hold Continous
+ Min Hold Continous
+
+
+
+ Linear RMS
+ RMS lineare
+
+
+
+ Linear dB
+ bB Lineare
+
+
+
+ Exponential RMS
+ RMS esponenziale
+
+
+
+ Exponential dB
+ dB Esponenziale
+
+
+
+ Flat top
+ Testa piatta
+
+
+
+ Rectangular
+ Rettangolare
+
+
+
+ Triangular (Bartlett)
+ Triangolare (Bartlett)
+
+
+
+ Hamming
+ Hamming
+
+
+
+ Hann
+ Hann
+
+
+
+ Blackman-Harris
+ Blackman-Harris
+
+
+
+ Kaiser
+ Kaiser
+
+
+
+ Manual
+ Manuale
+
+
+
+ Peak
+ Picco
+
+
+
+ Delta
+ Delta
+
+
+
+ Fixed
+ Fisso
+
+
+
+ Scale/Div
+ Scala/Div
+
+
+
+
+ Top
+ Sopra
+
+
+
+
+ Bottom
+ Sotto
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency Position
+ Posizione frequenza
+
+
+
+
+ Comma-separated values files (*.csv)
+ File Comma-separated values (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ File Tab-delimited values (*.txt)
+
+
+
+
+ All Files(*)
+ Tutti i file(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ File Comma-separated values (*.csv);;File Tab-delimited values (*.txt)
+
+
+
+ Snapshot
+ Istantanea
+
+
+
+ Sample:
+ Campione:
+
+
+
+ Average Sample:
+ Media Campione:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ Avvia
+
+
+
+ Stop
+ Ferma
+
+
+
+ Center
+ Centro
+
+
+
+ Span
+ Durata
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ Preferenze
+
+
+
+ Calibration skipped because already calibrated.
+ Calibrazione saltata perchè già calibrato.
+
+
+
+ Calibrated
+ Calibrato
+
+
+
+ Save session
+ Salva sessione
+
+
+
+
+ Scopy-Files (*.ini)
+ Scopy-File (*ini)
+
+
+
+ Load session
+ Carica Sessione
+
+
+
+ Click to open the home menu
+ Clicca per aprire il menu iniziale
+
+
+
+ Click to disconnect the device
+ Clicca per disconnettere il dispositivo
+
+
+
+ Click to save the current session
+ Clicca per salvare la sessione corrente
+
+
+
+
+ Click to load a session
+ Clicca per caricare una sessione
+
+
+
+
+ Select a device first
+ Seleziona un dispositivo prima
+
+
+
+
+
+ Click to connect the device
+ Clicca per connettere un dispositivo
+
+
+
+ Report a bug!
+ Riporta un bug!
+
+
+
+ Connecting...
+ Connettendo...
+
+
+
+ Disconnecting...
+ Disconnettendo...
+
+
+
+ Connect
+ Connesso
+
+
+
+ Calibrating...
+ Calibrando...
+
+
+
+ Calibration Failed
+ Connessione Fallita
+
+
+
+
+ Disconnect
+ Disconnesso
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ Il supporto dei decoder digitali è disabilitato. Alcune funzionalità potrebbere mancare
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ C'è stato un problema nell'inizializzazione di libsigrokdecode. Alcune funzionalità potrebbero mancare
+
+
+
+ Calibrating
+ Calibrando
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ Oscilloscopio
+
+
+
+ Spectrum Analyzer
+ Analizzatore di Spettro
+
+
+
+ Network Analyzer
+ Analizzatore di Rete
+
+
+
+ Signal Generator
+ Generatore di Segnale
+
+
+
+ Logic Analyzer
+ Analizzatore Logico
+
+
+
+ Pattern Generator
+ Generatore di Pattern
+
+
+
+ Digital IO
+ IO Digitale
+
+
+
+ Voltmeter
+ Voltmetro
+
+
+
+ Power Supply
+ Generatore
+
+
+
+ Debugger
+ Debugger
+
+
+
+ Calibration
+ Calibrazione
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ Calibrando...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ Lack of context
+ Forward Trigger In
+
+
+
+ Oscilloscope
+ Oscilloscopio
+
+
+
+
+ Logic Analyzer
+ Analizzatore Logico
+
+
+
+
+ μVolts
+ μVolt
+
+
+
+
+ mVolts
+ mVolt
+
+
+
+
+ Volts
+ Volt
+
+
+
+ Level
+ Livello
+
+
+
+ Hysteresis
+ Isteresi
+
+
+
+ External Trigger In
+ Trigger In esterno
+
+
+
+ None
+ Nessuno
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ Nota
+
+
+
+ Invalid or empty file!
+ File invalido o vuoto
+
+
+
+ Path:
+ Percorso
+
+
+
+ Warning: The file is empty!
+ Avviso: Il file è vuoto!
+
+
+
+ Warning: The path is invalid!
+ Avviso: Il percorso non è valido!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ Frequenza di Campionamento
+
+
+
+ Nr of samples
+ Nr di Campioni
+
+
+
+ Delay
+ Ritardo
+
+
+
+ Transparency
+ Trasparenza
+
+
+
+ Select a decoder to add
+ Seleziona un decoder da aggiungere
+
+
+
+ External Trigger In
+ Trigger In esterno
+
+
+
+ Oscilloscope
+ Oscilloscopio
+
+
+
+ Comma-separated values files (*.csv)
+ File comma-separated values (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ File tab-delimited values (*.txt)
+
+
+
+ Value Change Dump(*.vcd)
+ Value Change Dump(*.vcd)
+
+
+
+ All Files(*)
+ Tutti i File (*)
+
+
+
+ Export
+ Esporta
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+ L'interrogazione della chiave di configurazione %1 ha prodotto %2 come risultato
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+ L'interrogazione della chiave di configurazione %1 ha prodotto %2 come risultato
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+ L'interrogazione della chiave di configurazione %1 ha prodotto %2 come risultato
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ L'interrogazione della chiave di configurazione %1 ha prodotto %2 come risultato
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ L'interrogazione della chiave di configurazione %1 ha prodotto %2 come risultato
+
+
+
+ dioChannel
+
+
+ Form
+ Scheda
+
+
+
+
+ 0
+ 0
+
+
+
+ in
+ ingresso
+
+
+
+ out
+ uscita
+
+
+
+ 1
+ 1
+
+
+
+ dioElement
+
+
+ Form
+ Scheda
+
+
+
+ 0 - 7
+ 0 - 7
+
+
+
+ Individual
+ Individuale
+
+
+
+ Group
+ Gruppo
+
+
+
+ in
+ ingresso
+
+
+
+ out
+ uscita
+
+
+
+ 127
+ 127
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+ Scheda
+
+
+
+ PulseScript
+ Script di Impulsi
+
+
+
+ NumberOfPulses
+ Numero di Impulsi
+
+
+
+ Samples/Pulse
+ Campioni/Impulso
+
+
+
+ Hi
+ Hi
+
+
+
+ Lo
+ Lo
+
+
+
+ Frequency:
+ Frequenza:
+
+
+
+ PushButton
+ Bottone
+
+
+
+ INVALID
+ INVALIDO
+
+
+
diff --git a/resources/translations/scopy_jp.ts b/resources/translations/scopy_jp.ts
new file mode 100644
index 0000000000..c2ed3c2e86
--- /dev/null
+++ b/resources/translations/scopy_jp.ts
@@ -0,0 +1,5964 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+
+
+
+
+ BaseMenuItem
+
+
+ Form
+
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+
+
+
+
+ Init Value
+ 初期値
+
+
+
+
+ 0
+
+
+
+
+ Frequency
+ 周波数
+
+
+
+ 1000
+
+
+
+
+ Start counter
+
+
+
+
+ End counter
+
+
+
+
+ 65535
+
+
+
+
+ Increment
+ インクリメント
+
+
+
+ 1
+
+
+
+
+ BitfieldWidget
+
+
+ Form
+
+
+
+
+
+ TextLabel
+ テキストラベル
+
+
+
+ 0x
+
+
+
+
+ CalibrationTemplate
+
+
+ Form
+
+
+
+
+ Calibration info here
+ キャリブレーション情報
+
+
+
+ Set
+ 設定
+
+
+
+ Measured
+ 測定
+
+
+
+ Enter value here
+ 値を入力
+
+
+
+ Restart
+ 再スタート
+
+
+
+ Next
+
+
+
+
+ Finish
+
+
+
+
+ Channel
+
+
+ Form
+
+
+
+
+ Channel
+ チャンネル
+
+
+
+ ChannelSettings
+
+
+ Form
+
+
+
+
+ Channel
+ チャンネル
+
+
+
+ MATH
+ 演算
+
+
+
+ Edit Function
+ 機能を編集
+
+
+
+ HORIZONTAL
+ 水平軸
+
+
+
+ VERTICAL
+ 垂直軸
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ CH Thickness
+
+
+
+
+ 0.5
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Memory depth
+
+
+
+
+ Probe
+Attenuation
+
+
+
+
+ 0.1X
+
+
+
+
+ 1X
+
+
+
+
+ 10X
+
+
+
+
+ 100X
+
+
+
+
+ Curve Style
+ カーブスタイル
+
+
+
+ Lines
+
+
+
+
+ Dots
+
+
+
+
+ Steps
+
+
+
+
+ Sticks
+
+
+
+
+ Smooth
+
+
+
+
+ Software
+AC Coupling
+
+
+
+
+ Filter 1 - Enabled
+
+
+
+
+
+ TC
+
+
+
+
+
+ Gain
+
+
+
+
+
+ 0
+
+
+
+
+ Filter 2 - Enabled
+
+
+
+
+ Autoset
+
+
+
+
+ Snapshot
+ スナップショット
+
+
+
+ Connect
+
+
+ Form
+
+
+
+
+ URI (Hostname)
+
+
+
+
+ Connect
+ 接続
+
+
+
+ Context info
+ 接続情報
+
+
+
+ ConstantPatternUI
+
+
+ Form
+
+
+
+
+ Constant
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ CursorReadouts
+
+
+ Form
+
+
+
+
+ Δt =
+
+
+
+
+
+ 0.000ms
+
+
+
+
+ CurT2 =
+
+
+
+
+ 1/Δt =
+
+
+
+
+ - 000.000 ms
+
+
+
+
+ - 000.000 mHz
+
+
+
+
+ CurT1 =
+
+
+
+
+ CurV2
+
+
+
+
+ ΔV
+
+
+
+
+ CurV1
+
+
+
+
+
+ 000.000 mV
+
+
+
+
+ - 000.000 mV
+
+
+
+
+
+
+ =
+
+
+
+
+ CursorsSettings
+
+
+ Form
+
+
+
+
+ Cursors
+ カーソル
+
+
+
+ Normal
+ ノーマル
+
+
+
+ Track
+
+
+
+
+ 0
+
+
+
+
+ HORIZONTAL
+ 水平軸
+
+
+
+ VERTICAL
+ 垂直軸
+
+
+
+ CURSOR READOUTS
+
+
+
+
+ Transparency 0%
+
+
+
+
+ Position
+ 位置
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+
+
+
+
+ DMM
+
+
+
+ MAX
+
+
+
+
+
+ MIN
+
+
+
+
+
+ VDC
+
+
+
+
+ Run
+ 実行
+
+
+
+ Channel 1
+ チャンネル1
+
+
+
+
+ DC (Direct Current)
+
+
+
+
+
+ AC (20 Hz - 40 kHz)
+
+
+
+
+
+ 1s
+
+
+
+
+
+ 10s
+
+
+
+
+
+ 60s
+
+
+
+
+
+ History
+
+
+
+
+
+ Line thickness
+
+
+
+
+
+ 0.5
+
+
+
+
+
+ 1
+
+
+
+
+
+ 1.5
+
+
+
+
+
+ 2
+
+
+
+
+
+ 2.5
+
+
+
+
+
+ 3
+
+
+
+
+
+ 3.5
+
+
+
+
+
+ 4
+
+
+
+
+
+ 4.5
+
+
+
+
+
+ 5
+
+
+
+
+ Channel 2
+ チャンネル2
+
+
+
+ PEAK HOLD
+
+
+
+
+ Reset
+ リセット
+
+
+
+ DATA LOGGING
+
+
+
+
+ Browse
+ ブラウズ
+
+
+
+ Append
+
+
+
+
+ Choose a file
+ ファイルを選択
+
+
+
+ Overwrite
+ 上書き
+
+
+
+ DbClickButtons
+
+
+ Form
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ Debugger
+
+
+ MainWindow
+
+
+
+
+ SCRIPTING ENGINE
+
+
+
+
+ Load Script
+
+
+
+
+ Run
+
+
+
+
+ Filename
+
+
+
+
+
+ Read
+
+
+
+
+ Device
+
+
+
+
+ New Window
+
+
+
+
+
+ Write
+
+
+
+
+
+ Value:
+
+
+
+
+ DEVICE SELECTION
+
+
+
+
+ Detailed Register Map
+
+
+
+
+ Address:
+
+
+
+
+ 0x0000
+
+
+
+
+ Display mode:
+
+
+
+
+ <value>
+
+
+
+
+
+ 0x
+
+
+
+
+ Description:
+
+
+
+
+ Default Value:
+
+
+
+
+ Source:
+
+
+
+
+ Enable AutoRead
+
+
+
+
+ REGISTER MAP SETTINGS
+
+
+
+
+ DetachDragZone
+
+
+ Form
+
+
+
+
+ Drag here to detach!
+
+
+
+
+ Device
+
+
+ Form
+
+
+
+
+ DigitalIO
+
+
+ Form
+
+
+
+
+ Run
+ 実行
+
+
+
+ DigitalIoMenu
+
+
+ Form
+
+
+
+
+ PollingRate
+
+
+
+
+ 1000
+
+
+
+
+ Enable Outputs
+
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ トリガー設定
+
+
+
+ Trigger mode
+ トリガーモード
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ ノーマル
+
+
+
+ Trigger Logic
+ トリガーロジック
+
+
+
+ OR
+
+
+
+
+ AND
+
+
+
+
+ EXTERNAL TRIGGER
+ 外部トリガー
+
+
+
+ Source
+ ソース
+
+
+
+ Condition
+ 状態
+
+
+
+ None
+
+
+
+
+ EXTERNAL TRIGGER OUT
+ 外部トリガー出力
+
+
+
+ DragZone
+
+
+ Form
+
+
+
+
+ EmptyPatternUI
+
+
+ Form
+
+
+
+
+ ExportSettings
+
+
+ Form
+
+
+
+
+ EXPORT
+ エクスポート
+
+
+
+ Export All
+ すべてエクスポート
+
+
+
+ Export
+ エクスポート
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+
+
+
+
+ Frequency
+ 周波数
+
+
+
+ 1000
+
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+
+
+
+
+ Script status
+
+
+
+
+ Clear console
+
+
+
+
+ HomepageControls
+
+
+ Form
+
+
+
+
+ I2CPatternUI
+
+
+ Form
+
+
+
+
+ R
+
+
+
+
+ W
+
+
+
+
+ Read/Write
+
+
+
+
+ MSB First
+
+
+
+
+ Address
+
+
+
+
+ Inter frame space
+
+
+
+
+ Data
+
+
+
+
+ InfoPage
+
+
+ Form
+
+
+
+
+ Forget device
+
+
+
+
+ Identify
+
+
+
+
+ Connect
+ 接続
+
+
+
+ Calibrate
+ キャリブレート
+
+
+
+ InfoWidget
+
+
+ Form
+
+
+
+
+ Move
+
+
+
+
+ InstrumentNotes
+
+
+ Form
+
+
+
+
+ Notes
+
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+
+ Insert notes here
+
+
+
+
+ LAChannelGroup
+
+
+ Form
+
+
+
+
+ DIO
+
+
+
+
+
+ 12
+
+
+
+
+ None
+
+
+
+
+ LAChannelManager
+
+
+ Form
+
+
+
+
+ LAManagerHeader
+
+
+ Form
+
+
+
+
+ View
+
+
+
+
+ Name
+ 名前
+
+
+
+ DIO
+
+
+
+
+ Trigger
+ トリガー
+
+
+
+ Select
+ 選択
+
+
+
+ LARequiredChannel
+
+
+ Form
+
+
+
+
+ Settings
+ 設定
+
+
+
+
+ Role
+
+
+
+
+ LASettingsWidget
+
+
+ Form
+
+
+
+
+ REQUIRED
+
+
+
+
+ OPTIONAL
+
+
+
+
+ OPTIONS
+ オプション
+
+
+
+ LChannelSettings
+
+
+ Form
+
+
+
+
+ BG Color
+
+
+
+
+ Edge Color
+
+
+
+
+ Low Color
+
+
+
+
+ High Color
+
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ COLOR SETTINGS
+
+
+
+
+ Name
+
+
+
+
+ Thickness
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ LFSRPatternUI
+
+
+ Form
+
+
+
+
+
+ 0x0001
+
+
+
+
+ Generator Polynomial
+
+
+
+
+ Start State
+
+
+
+
+ Period
+
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Scopyロジックアナライザー
+
+
+
+ Group
+ グループ
+
+
+
+
+ Channel Settings
+ チャンネル設定
+
+
+
+
+ -
+
+
+
+
+ Name
+ 名前
+
+
+
+ 1
+
+
+
+
+ Trace Height
+
+
+
+
+ GROUP
+ グループ
+
+
+
+ Stack Decoder:
+
+
+
+
+ Trigger Settings
+ トリガー設定
+
+
+
+ Trigger mode
+ トリガーモード
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ ノーマル
+
+
+
+ Trigger Logic
+ トリガーロジック
+
+
+
+ EXTERNAL TRIGGER
+ 外部トリガー
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+
+
+
+
+ Source
+ ソース
+
+
+
+ Condition
+ 状態
+
+
+
+ General Settings
+
+
+
+
+ OneShot
+ ワンショット
+
+
+
+ AVAILABLE CHANNELS
+
+
+
+
+ DECODERS
+ デコーダー
+
+
+
+ Close
+ 閉じる
+
+
+
+ Print
+ 印刷
+
+
+
+ Stream
+
+
+
+
+ Cursors
+ カーソル
+
+
+
+
+ Trigger
+ トリガー
+
+
+
+ ManualCalibration
+
+
+ Form
+
+
+
+
+ Load Calibration
+ キャリブレーションをロード
+
+
+
+ Save Calibration
+ キャリブレーションを保存
+
+
+
+ Run automatic
+ 自動的に実行
+
+
+
+ MarkerTable
+
+
+ Form
+
+
+
+
+ Math
+
+
+ Form
+
+
+
+
+ f(t) =
+
+
+
+
+ cos
+
+
+
+
+ 2
+
+
+
+
+ 7
+
+
+
+
+ ,
+
+
+
+
+ 3
+
+
+
+
+ ←
+
+
+
+
+ (
+
+
+
+
+ exp
+
+
+
+
+ 1
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ /
+
+
+
+
+ *
+
+
+
+
+ e
+
+
+
+
+ C
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ )
+
+
+
+
+ log
+
+
+
+
+ t
+
+
+
+
+ +
+
+
+
+
+ 9
+
+
+
+
+ tan
+
+
+
+
+ ^
+
+
+
+
+ 4
+
+
+
+
+ Apply
+
+
+
+
+ pi
+
+
+
+
+ 5
+
+
+
+
+ sin
+
+
+
+
+ MathPanel
+
+
+ Form
+
+
+
+
+ Add channel
+ チャンネル追加
+
+
+
+ MeasureSettings
+
+
+ Form
+
+
+
+
+ Measure
+ 測定
+
+
+
+ Channel
+ チャンネル
+
+
+
+ MEASUREMENTS
+
+
+
+
+ Counter
+ カウンター
+
+
+
+ Display All
+
+
+
+
+
+ Delete All
+ すべて消去
+
+
+
+ STATISTICS
+
+
+
+
+ Reset
+ リセット
+
+
+
+ CUSTOM SELECTION
+
+
+
+
+ Enable
+
+
+
+
+ GATING SETTINGS
+
+
+
+
+ MeasurementsPanel
+
+
+ Form
+
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ 印刷
+
+
+
+ Current Frequency:
+ 現在の周波数:
+
+
+
+ Sample:
+ サンプル:
+
+
+
+ Average:
+ 平均:
+
+
+
+ Phase (°)
+ 位相 (°)
+
+
+
+ Magnitude (dB)
+
+
+
+
+ °
+
+
+
+
+ 10
+
+
+
+
+ Settings
+ 設定
+
+
+
+
+ REFERENCE
+ リファレンス
+
+
+
+ Channel 1
+ チャンネル1
+
+
+
+ Channel 2
+ チャンネル2
+
+
+
+ 0
+
+
+
+
+ Gain Mode
+ ゲインモード
+
+
+
+ Automatic
+ 自動
+
+
+
+ Low
+
+
+
+
+ High
+
+
+
+
+ RESPONSE
+
+
+
+
+ DC Filtering
+
+
+
+
+
+ On
+
+
+
+
+
+ Off
+
+
+
+
+ SWEEP
+
+
+
+
+ Logarithmic
+
+
+
+
+ Linear
+
+
+
+
+ Average
+
+
+
+
+
+ Apply
+
+
+
+
+ Periods
+
+
+
+
+ DISPLAY
+
+
+
+
+ Delta Label
+
+
+
+
+ BUFFER PREVIEWER
+
+
+
+
+ ViewInOsc
+
+
+
+
+ Previous
+
+
+
+
+ Next
+
+
+
+
+ General Settings
+
+
+
+
+ PLOT
+
+
+
+
+ Type
+
+
+
+
+ Bode
+
+
+
+
+ Nyquist
+
+
+
+
+ Nichols
+
+
+
+
+ Line thickness
+
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ EXPORT
+ エクスポート
+
+
+
+ Export
+ エクスポート
+
+
+
+ Import
+ インポート
+
+
+
+ Snapshot
+ スナップショット
+
+
+
+ Remove Reference
+
+
+
+
+ Cursors
+ カーソル
+
+
+
+ CURSOR READOUTS
+
+
+
+
+ Transparency 0%
+
+
+
+
+ Position
+ 位置
+
+
+
+ Cursors
+ カーソル
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+
+
+
+
+ Note
+
+
+ TextLabel
+
+
+
+
+ NumberPatternUI
+
+
+ Form
+
+
+
+
+ Number
+
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+
+
+
+
+ General settings
+
+
+
+
+ VIEWS
+
+
+
+
+ FFT
+
+
+
+
+ X-Y
+
+
+
+
+ Histogram
+ ヒストグラム
+
+
+
+ X-Y
+
+
+
+
+ Y-Axis
+
+
+
+
+ X-Axis
+
+
+
+
+ dots
+
+
+
+
+ lines
+
+
+
+
+ X-Y Line thickness
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ 6
+
+
+
+
+ 7
+
+
+
+
+ 8
+
+
+
+
+ 9
+
+
+
+
+ 10
+
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopyオシロスコープ
+
+
+
+ Print
+ 印刷
+
+
+
+ Cursors
+ カーソル
+
+
+
+ Measure
+ 測定
+
+
+
+ Trigger
+ トリガー
+
+
+
+ Close
+ 閉じる
+
+
+
+ PGCGSettings
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ Pattern
+ パターン
+
+
+
+ Output
+
+
+
+
+ PP
+
+
+
+
+ OD
+
+
+
+
+ CLOCK
+
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ Name
+ 名前
+
+
+
+ Thickness
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ COLOR SETTINGS
+
+
+
+
+ BG Color
+
+
+
+
+ Edge Color
+
+
+
+
+ Low Color
+
+
+
+
+ High Color
+
+
+
+
+ PGChannel
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ PGChannelGroup
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ 12
+
+
+
+
+ PGChannelManager
+
+
+ Form
+
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+
+
+
+
+ Enable
+
+
+
+
+ Name
+ 名前
+
+
+
+ DIO
+
+
+
+
+ Select
+ 選択
+
+
+
+ PGSettings
+
+
+ Form
+
+
+
+
+ Settings
+ 設定
+
+
+
+ Autoset
+ 自動設定
+
+
+
+ Sample Rate
+ サンプルレート
+
+
+
+ Buffer Size
+
+
+
+
+ ExternalClock
+ 外部クロック
+
+
+
+ External Clock Frequency
+ 外部クロック周波数
+
+
+
+ Reset Instrument
+
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Scopyパターン発生器
+
+
+
+ Print
+ 印刷
+
+
+
+ Group
+ グループ
+
+
+
+
+ Channel Settings
+ チャンネル設定
+
+
+
+ 1
+
+
+
+
+ Trace Height
+
+
+
+
+ Name
+
+
+
+
+ Open-Drain
+
+
+
+
+ Push-Pull
+
+
+
+
+ GROUP
+ グループ
+
+
+
+ Pattern
+ パターン
+
+
+
+ Trigger Settings
+ トリガー設定
+
+
+
+ Trigger mode
+ トリガーモード
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ ノーマル
+
+
+
+ Trigger Logic
+ トリガーロジック
+
+
+
+ EXTERNAL TRIGGER
+ 外部トリガー
+
+
+
+ Source
+ ソース
+
+
+
+ Condition
+ 状態
+
+
+
+ -
+
+
+
+
+ General Settings
+
+
+
+
+ AVAILABLE CHANNELS
+
+
+
+
+ Cursors
+ カーソル
+
+
+
+ Trigger
+ トリガー
+
+
+
+ Close
+ 閉じる
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy安定化電源
+
+
+
+
+ Set
+ 設定
+
+
+
+
+ Measure
+ 計測
+
+
+
+
+
+
+ VDC
+
+
+
+
+ Tracking ratio control
+ トラッキング制御
+
+
+
+ Independent
+
+
+
+
+ Tracking
+ トラッキング
+
+
+
+ 100
+
+
+
+
+ %
+
+
+
+
+ Positive output
+ 正出力
+
+
+
+
+ Enable
+
+
+
+
+ Negative output
+ 負出力
+
+
+
+ Preferences
+
+
+ Form
+
+
+
+
+ GENERAL
+ 一般
+
+
+
+ OSCILLOSCOPE
+ オシロスコープ
+
+
+
+ Enable labels on the plot
+ ラベルをプロット
+
+
+
+ Enable graticule
+ グリッドを表示
+
+
+
+ Enable mini histogram
+ ミニヒストグラムを表示
+
+
+
+ Enable all instrument notes
+ ノートを追加
+
+
+
+ Language (requires app restart)
+ 言語(要再起動)
+
+
+
+ Restart the application for changes to take effect
+ 変更のため再起動
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+
+
+
+
+ Enable animations
+ アニメーション
+
+
+
+ 1
+
+
+
+
+ Run external scripts (Experimental)
+ 外部スクリプトを実行
+
+
+
+ SPECTRUM ANALYZER
+ スペクトラムアナライザー
+
+
+
+ Only search marker peaks in visible domain
+
+
+
+
+ Double click to detach a tool
+
+
+
+
+ Save session when closing Scopy
+ Scopyを閉じる際にセッションを保存
+
+
+
+ NETWORK ANALYZER
+ ネットワークアナライザー
+
+
+
+ Always display 0db value on graph
+ 常に0dBを表示
+
+
+
+ Scriptable manual calibration
+
+
+
+
+ Show advanced device information
+ アドバンスドデバイス情報ほ表示
+
+
+
+ LOGIC ANALYZER
+ ロジックアナライザー
+
+
+
+ Display sampling points when zoomed
+ ズームの際にサンプリングポイントを表示
+
+
+
+ SIGNAL GENERATOR
+ 信号発生器
+
+
+
+ Number of displayed periods
+ 表示ピリオド数
+
+
+
+ Enable digital decoders
+ デジタルデコーダーを表示
+
+
+
+ Enable sample rate filters
+ サンプルレートフィルタを表示
+
+
+
+ Show ADC digital filter config
+ ADCデジタルフィルタ設定を表示
+
+
+
+ DEBUG
+
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+
+
+
+
+ Enable Debug Instrument
+
+
+
+
+ Enable user notes in main page
+ ユーザーノートをメインページに表示
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ キャリブレーション済みの場合キャリブレーションをスキップ
+
+
+
+ Reset Scopy
+ Scopyをリセット
+
+
+
+ PulsePatternUI
+
+
+ Form
+
+
+
+
+ Low
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ High
+
+
+
+
+ 100
+
+
+
+
+ Counter Init
+
+
+
+
+ Delay
+ 遅延
+
+
+
+
+ 1
+
+
+
+
+ Delay polarity
+ 遅延極性
+
+
+
+ Number of pulses
+ パルス数
+
+
+
+ QObject
+
+
+ Period
+
+
+
+
+ Frequency
+ 周波数
+
+
+
+ Min
+
+
+
+
+ Max
+
+
+
+
+ Peak-peak
+
+
+
+
+ Mean
+
+
+
+
+ Cycle Mean
+
+
+
+
+ RMS
+
+
+
+
+ Cycle RMS
+
+
+
+
+ AC RMS
+
+
+
+
+ Area
+
+
+
+
+ Cycle Area
+
+
+
+
+ Low
+
+
+
+
+ High
+
+
+
+
+ Amplitude
+ 振幅
+
+
+
+ Middle
+
+
+
+
+ +Over
+
+
+
+
+ -Over
+
+
+
+
+ Rise
+
+
+
+
+ Fall
+
+
+
+
+ +Width
+
+
+
+
+ -Width
+
+
+
+
+ +Duty
+
+
+
+
+ -Duty
+
+
+
+
+ RegisterWidget
+
+
+ Form
+
+
+
+
+ RunSingleWidget
+
+
+ Form
+
+
+
+
+ Run
+ 実行
+
+
+
+ Single
+ シングル
+
+
+
+ SPIPatternUI
+
+
+ Form
+
+
+
+
+ MSB First
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ 0
+
+
+
+
+ CLK Phase
+ CLK位相
+
+
+
+ CS Polarity
+ CS極性
+
+
+
+ CLK Polarity
+ CLK極性
+
+
+
+ Bytes per frame
+
+
+
+
+ Inter frame space
+
+
+
+
+ Data
+ データ
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Scopy信号発生器
+
+
+
+ Constant
+
+
+
+
+ Waveform
+ 波形
+
+
+
+ Sine
+
+
+
+
+ Square
+
+
+
+
+ Triangle
+
+
+
+
+ Trapezoidal
+
+
+
+
+ Rising Ramp Sawtooth
+
+
+
+
+ Falling Ramp Sawtooth
+
+
+
+
+ Stair Step
+
+
+
+
+ TIMING
+
+
+
+
+ Buffer
+
+
+
+
+ FILE
+
+
+
+
+ Path
+
+
+
+
+
+ No file loaded
+
+
+
+
+ Format
+
+
+
+
+ Size
+ サイズ
+
+
+
+ 0 samples
+ 0サンプル
+
+
+
+ Load file
+ ファイルをロード
+
+
+
+ Channel
+ チャンネル
+
+
+
+ SCALING
+
+
+
+
+ Math
+ 演算
+
+
+
+ NOISE
+
+
+
+
+ None
+
+
+
+
+ Uniform
+
+
+
+
+ Gaussian
+
+
+
+
+ Laplacian
+
+
+
+
+ Impulse
+
+
+
+
+ OTHER
+
+
+
+
+ Line thickness
+
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Close
+ 閉じる
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+
+
+
+
+ Print
+ 印刷
+
+
+
+ Preset
+ プリセット
+
+
+
+
+ dBFS
+
+
+
+
+ Sample:
+ サンプル:
+
+
+
+ Average Sample:
+ 平均サンプル:
+
+
+
+ Marker_n 0.000 Hz 0dB
+
+
+
+
+ Channel
+ チャンネル
+
+
+
+ Type
+ タイプ
+
+
+
+ Sample
+ サンプル
+
+
+
+ and other types
+
+
+
+
+ Window
+
+
+
+
+ Uniform (none)
+
+
+
+
+ and others windows
+
+
+
+
+ Averaging
+ 平均化
+
+
+
+ Apply
+
+
+
+
+ CH Thickness
+
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ History
+
+
+
+
+ Gain mode
+ ゲインモード
+
+
+
+
+ Low
+
+
+
+
+ High
+
+
+
+
+ Snapshot
+ スナップショット
+
+
+
+ General settings
+
+
+
+
+ Export
+ エクスポート
+
+
+
+
+ Sweep
+
+
+
+
+ Logarithmic
+
+
+
+
+ Linear
+
+
+
+
+ FREQUENCY
+ 周波数
+
+
+
+ AMPLITUDE
+ 振幅
+
+
+
+ Resolution BW
+ BW分解能
+
+
+
+ Units
+
+
+
+
+
+ Markers
+ マーカー
+
+
+
+ Settings
+ 設定
+
+
+
+ MARKER
+ マーカー
+
+
+
+ Normal
+
+
+
+
+ Delta
+
+
+
+
+ Peak
+
+
+
+
+
+ Peak
+
+
+
+
+
+ Ampl
+
+
+
+
+ GENERAL
+
+
+
+
+ Marker Table
+ マーカーテーブル
+
+
+
+ Import Reference Channels
+ リファレンスチャンネルをインポート
+
+
+
+ No file selected!
+
+
+
+
+ Browse
+ ブラウズ
+
+
+
+ Import
+ インポート
+
+
+
+ SpinBoxA
+
+
+ Form
+
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+
+
+
+
+ Statistic
+
+
+ Form
+
+
+
+
+ Avg:
+
+
+
+
+
+
+ 0.000
+
+
+
+
+ Min:
+
+
+
+
+ Max:
+
+
+
+
+ 1
+
+
+
+
+ Measurement
+ 計測
+
+
+
+ StatisticsPanel
+
+
+ Form
+
+
+
+
+ ToolLauncher
+
+
+ Scopy
+
+
+
+
+ Home
+ ホーム
+
+
+
+ Save
+ 保存
+
+
+
+ Load
+ ロード
+
+
+
+ Preferences
+ 環境設定
+
+
+
+ Notes
+ ノート
+
+
+
+ Quit
+ 終了
+
+
+
+ ADC Offset
+ ADCオフセット
+
+
+
+ ADC Gain
+ ADCゲイン
+
+
+
+ Reset ADC Calibration
+ ADCキャリブレーションをリセット
+
+
+
+ TriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ トリガー設定
+
+
+
+ Trigger mode
+ トリガーモード
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ ノーマル
+
+
+
+
+ Source
+ ソース
+
+
+
+ INTERNAL (ANALOG)
+
+
+
+
+
+ Condition
+ 状態
+
+
+
+
+ Rising Edge
+
+
+
+
+
+ Falling Edge
+
+
+
+
+
+ Low
+
+
+
+
+
+ High
+
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+
+
+
+
+ DIGITAL
+ デジタル
+
+
+
+ Any Edge
+
+
+
+
+ M2K daisychain position
+
+
+
+
+ TRIGGER LOGIC
+ トリガーロジック
+
+
+
+ Analog - Digital
+
+
+
+
+ Digital OR Analog
+
+
+
+
+ Digital AND Analog
+
+
+
+
+ Digital XOR Analog
+
+
+
+
+ !Digital OR Analog
+
+
+
+
+ !Digital AND Analog
+
+
+
+
+ !Digital XOR Analog
+
+
+
+
+ EXTERNAL TRIGGER OUT
+ 外部トリガー出力
+
+
+
+ UARTPatternUI
+
+
+ Form
+
+
+
+
+ Stop
+ 停止
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ Baud
+
+
+
+
+
+ 9600
+
+
+
+
+ 1200
+
+
+
+
+ 2400
+
+
+
+
+ 4800
+
+
+
+
+ 14400
+
+
+
+
+ 19200
+
+
+
+
+ 28800
+
+
+
+
+ 38400
+
+
+
+
+ 57600
+
+
+
+
+ 115200
+
+
+
+
+ 230400
+
+
+
+
+ Parity
+
+
+
+
+ NONE
+
+
+
+
+ ODD
+
+
+
+
+ EVEN
+
+
+
+
+ MARK
+
+
+
+
+ SPACE
+
+
+
+
+ Parameters
+
+
+
+
+ Data to Send
+
+
+
+
+ UserNotePage
+
+
+ Form
+
+
+
+
+ Remove note
+ ノートを消去
+
+
+
+ UserNotes
+
+
+ Form
+
+
+
+
+ Save
+ 保存
+
+
+
+ File path
+
+
+
+
+ Browse
+ ブラウズ
+
+
+
+ Note name
+
+
+
+
+ WalkingPatternUI
+
+
+ Form
+
+
+
+
+ Walking level
+
+
+
+
+ 0
+
+
+
+
+
+ 1
+
+
+
+
+ Frequency
+ 周波数
+
+
+
+ 1000
+
+
+
+
+ Direction
+
+
+
+
+ Right
+
+
+
+
+ Left
+
+
+
+
+ Length
+
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+
+
+
+
+
+ /div
+
+
+
+
+ Waiting
+
+
+
+
+ Triggered
+ トリガー
+
+
+
+ Stop
+ 停止
+
+
+
+ Auto
+ 自動
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ Phase
+ 位相
+
+
+
+ Duty
+ デューティ
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ 接続
+
+
+
+ Waiting for connection ...
+ 接続中...
+
+
+
+
+ Context info
+
+
+
+
+ Add
+ 追加
+
+
+
+ Warning
+ 警告
+
+
+
+ Error: Unable to find host: No such host is known!
+
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ オン
+
+
+
+ off
+ オフ
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ タイマー
+
+
+
+ Stop
+ 停止
+
+
+
+ Run
+ 実行
+
+
+
+ Export
+ エクスポート
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+
+
+
+
+ No file selected
+
+
+
+
+
+ File is open in another program
+
+
+
+
+
+ Choose a file
+ ファイルを選択
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ ファイルを保存
+
+
+
+ JavaScript (*.js)
+
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ 停止
+
+
+
+ Run
+ 実行
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ チャンネル
+
+
+
+ Name
+ 名前
+
+
+
+ Export
+ エクスポート
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ Open file
+ ファイルを開く
+
+
+
+ Import selected channels
+
+
+
+
+ No file selected
+
+
+
+
+ Export
+ エクスポート
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ インポート
+
+
+
+ Import all
+ すべてインポート
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+
+
+
+
+ Connected
+ 接続
+
+
+
+ Your hardware revision does not support the identify feature
+
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ 接続されていません
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ キャリブレーションの前はアナログ入出力はいつも未接続
+
+
+
+ Can't identify this device.
+ デバイスを認識できません.
+
+
+
+ Can't identify device. Please try to update your firmware!
+ デバイスを認識ません.ファームウェアをアップデートしてください!
+
+
+
+ Your hardware revision does not support the identify feature
+ このハードウェアのバージョンではこの機能はサポートされていません
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ ファイルを保存
+
+
+
+ ini (*.ini)
+
+
+
+
+
+ °C
+
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+
+
+
+
+ Marker
+
+
+
+
+ Channel
+ チャンネル
+
+
+
+ Frequency
+ 周波数
+
+
+
+ Magnitude
+
+
+
+
+ Type
+ タイプ
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ 水平軸
+
+
+
+
+ Name
+ 名前
+
+
+
+
+ Measure
+ 測定
+
+
+
+
+ Stats
+
+
+
+
+ Vertical
+ 垂直軸
+
+
+
+
+ Recover
+
+
+
+
+
+ Delete All
+ すべて消去
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ 停止
+
+
+
+ Frequency (Hz)
+ 周波数(Hz)
+
+
+
+ Magnitude(dB)
+
+
+
+
+ Phase (°)
+ 位相(°)
+
+
+
+ Samples count
+ サンプル数
+
+
+
+ Samps/decade
+ サンプル/デコード
+
+
+
+ Step
+ ステップ
+
+
+
+ Amplitude
+ 振幅
+
+
+
+ Offset
+ オフセット
+
+
+
+ Max. Magnitude
+
+
+
+
+ Min. Magnitude
+
+
+
+
+ Max. Phase
+ Max. 位相
+
+
+
+ Min. Phase
+ Min. 位相
+
+
+
+
+ Settling time
+ セトリング時間
+
+
+
+ Before Buffer
+
+
+
+
+ After Buffer
+
+
+
+
+
+ Sample:
+ サンプル:
+
+
+
+
+ Current Frequency:
+ 現在の周波数:
+
+
+
+
+ DC Voltage:
+ DC電圧:
+
+
+
+
+ Response channel voltage < 50mV!
+
+
+
+
+
+ Low
+
+
+
+
+
+ High
+
+
+
+
+
+ Gain Mode:
+ ゲインモード:
+
+
+
+ Transparency
+
+
+
+
+ Image
+
+
+
+
+ Save to
+ 保存
+
+
+
+ Import
+ インポート
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+ All Files(*)
+ すべてのファイル(*)
+
+
+
+ Export
+ エクスポート
+
+
+
+ Average:
+ 平均:
+
+
+
+ Running
+ 実行中
+
+
+
+ Stopping...
+ 停止中...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ 時間軸
+
+
+
+
+ Position
+ 位置
+
+
+
+ Volts/Div
+
+
+
+
+
+ Add Channel
+ チャンネル追加
+
+
+
+
+
+ Export
+ エクスポート
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+
+ All Files(*)
+ すべてのファイル(*)
+
+
+
+ Transparency
+
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+
+
+
+
+ Math
+ 演算
+
+
+
+ Browse
+ ブラウズ
+
+
+
+ No file selected
+
+
+
+
+
+ Reference
+ リファレンス
+
+
+
+ Logic
+ ロジック
+
+
+
+ Add channel
+ チャンネル追加
+
+
+
+ Import selected channels
+ 選択したチャンネルをインポート
+
+
+
+ Enable Mixed Signal View
+ ミックスドシグナルビューをイネーブル
+
+
+
+ Import
+ インポート
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+
+ Snapshot
+ スナップショット
+
+
+
+ Filter 1 - Enable -
+
+
+
+
+ Filter 2 - Enable -
+
+
+
+
+
+ Save
+ 保存
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Value
+
+
+
+
+
+ Disable
+
+
+
+
+
+ Enable
+
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+
+
+
+
+ By resetting scopy you will lose the current configuration!
+
+
+
+
+ Do you want to reset?
+
+
+
+
+ Load language
+
+
+
+
+ Language files (*.qm)
+
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ ドキュメント
+
+
+
+ Image
+ イメージ
+
+
+
+ Export File Name
+ ファイル名をエクスポート
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ サンプルレート
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ 実行
+
+
+
+
+
+ Single
+ シングル
+
+
+
+
+
+
+
+ Stop
+ 停止
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ 周波数
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+
+
+
+
+ π rad
+
+
+
+
+
+
+
+
+ ns
+
+
+
+
+
+
+
+
+ μs
+
+
+
+
+
+
+
+
+ ms
+
+
+
+
+
+
+
+
+ s
+
+
+
+
+
+
+ Phase
+ 位相
+
+
+
+ μVolts p-p
+
+
+
+
+ mVolts p-p
+
+
+
+
+ Volts p-p
+
+
+
+
+
+
+ Amplitude
+ 振幅
+
+
+
+
+
+
+ μVolts
+
+
+
+
+
+
+
+
+ mVolts
+
+
+
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Offset
+ オフセット
+
+
+
+ mHz
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency
+ 周波数
+
+
+
+ Rising
+
+
+
+
+ Falling
+
+
+
+
+ Rise Time
+
+
+
+
+ Fall Time
+
+
+
+
+ High Time
+
+
+
+
+ Low Time
+
+
+
+
+
+ SampleRate
+ サンプルレート
+
+
+
+ Record Length
+ 保存長
+
+
+
+ Value
+ 値
+
+
+
+ Duty Cycle
+ デューティサイクル
+
+
+
+
+
+ samples
+ サンプル
+
+
+
+ Open File
+ ファイルを開く
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ 電圧 (V)
+
+
+
+ Time (s)
+ 時間 (s)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ エクスポート
+
+
+
+ dBFS
+
+
+
+
+ dBV
+
+
+
+
+ dBu
+
+
+
+
+ Vpeak
+
+
+
+
+ Vrms
+
+
+
+
+ V/√Hz
+
+
+
+
+ Sample
+ サンプル
+
+
+
+ Peak Hold
+
+
+
+
+ Peak Hold Continous
+
+
+
+
+ Min Hold
+
+
+
+
+ Min Hold Continous
+
+
+
+
+ Linear RMS
+
+
+
+
+ Linear dB
+
+
+
+
+ Exponential RMS
+
+
+
+
+ Exponential dB
+
+
+
+
+ Flat top
+
+
+
+
+ Rectangular
+
+
+
+
+ Triangular (Bartlett)
+
+
+
+
+ Hamming
+
+
+
+
+ Hann
+
+
+
+
+ Blackman-Harris
+
+
+
+
+ Kaiser
+
+
+
+
+ Manual
+
+
+
+
+ Peak
+
+
+
+
+ Delta
+
+
+
+
+ Fixed
+
+
+
+
+ Scale/Div
+
+
+
+
+
+ Top
+
+
+
+
+
+ Bottom
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency Position
+ 周波数位置
+
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+
+ All Files(*)
+ すべてのファイル(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+
+
+
+
+ Snapshot
+ スナップショット
+
+
+
+ Sample:
+ サンプル:
+
+
+
+ Average Sample:
+ 平均サンプル:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ 開始
+
+
+
+ Stop
+ 停止
+
+
+
+ Center
+
+
+
+
+ Span
+
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ 環境設定
+
+
+
+ Calibration skipped because already calibrated.
+ すでにキャリブレーション済みのためキャリブレーションをスキップ.
+
+
+
+ Calibrated
+ キャリブレーション済み
+
+
+
+ Save session
+ セッションを保存
+
+
+
+
+ Scopy-Files (*.ini)
+
+
+
+
+ Load session
+ セッションをロード
+
+
+
+ Click to open the home menu
+ クリックしてホームメニューを開く
+
+
+
+ Click to disconnect the device
+ クリックしてデバイスを切断
+
+
+
+ Click to save the current session
+ クリックして現在のセッションを保存
+
+
+
+
+ Click to load a session
+ クリックしてセッションをロード
+
+
+
+
+ Select a device first
+ デバイスを選択
+
+
+
+
+
+ Click to connect the device
+ クリックしてデバイスを接続
+
+
+
+ Report a bug!
+ バグを報告!
+
+
+
+ Connecting...
+ 接続中...
+
+
+
+ Disconnecting...
+ 切断中...
+
+
+
+ Connect
+ 接続
+
+
+
+ Calibrating...
+ キャリブレーション中...
+
+
+
+ Calibration Failed
+ キャリブレーション失敗
+
+
+
+
+ Disconnect
+ 切断
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+
+
+
+
+ Calibrating
+ キャリブレーション中
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ オシロスコープ
+
+
+
+ Spectrum Analyzer
+ スペクトラムアナライザー
+
+
+
+ Network Analyzer
+ ネットワークアナライザー
+
+
+
+ Signal Generator
+ 信号発生器
+
+
+
+ Logic Analyzer
+ ロジックアナライザー
+
+
+
+ Pattern Generator
+ パターン発生器
+
+
+
+ Digital IO
+ デジタル IO
+
+
+
+ Voltmeter
+ 電圧計
+
+
+
+ Power Supply
+ 安定化電源
+
+
+
+ Debugger
+
+
+
+
+ Calibration
+ キャリブレーション
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ キャリブレーション中...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+
+
+
+
+ Oscilloscope
+ オシロスコープ
+
+
+
+
+ Logic Analyzer
+ ロジックアナライザー
+
+
+
+
+ μVolts
+
+
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+ Level
+ レベル
+
+
+
+ Hysteresis
+ ヒステリシス
+
+
+
+ External Trigger In
+ 外部トリガー入力
+
+
+
+ None
+
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+
+
+
+
+ Invalid or empty file!
+
+
+
+
+ Path:
+ パス:
+
+
+
+ Warning: The file is empty!
+
+
+
+
+ Warning: The path is invalid!
+
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ サンプルレート
+
+
+
+ Nr of samples
+
+
+
+
+ Delay
+ 遅延
+
+
+
+ Transparency
+
+
+
+
+ Select a decoder to add
+ 追加するデコーダを選択
+
+
+
+ External Trigger In
+ 外部トリガー入力
+
+
+
+ Oscilloscope
+ オシロスコープ
+
+
+
+ Comma-separated values files (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+
+
+
+
+ Value Change Dump(*.vcd)
+
+
+
+
+ All Files(*)
+
+
+
+
+ Export
+ エクスポート
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ dioChannel
+
+
+ Form
+
+
+
+
+
+ 0
+
+
+
+
+ in
+
+
+
+
+ out
+
+
+
+
+ 1
+
+
+
+
+ dioElement
+
+
+ Form
+
+
+
+
+ 0 - 7
+
+
+
+
+ Individual
+
+
+
+
+ Group
+
+
+
+
+ in
+
+
+
+
+ out
+
+
+
+
+ 127
+
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+
+
+
+
+ PulseScript
+
+
+
+
+ NumberOfPulses
+
+
+
+
+ Samples/Pulse
+
+
+
+
+ Hi
+
+
+
+
+ Lo
+
+
+
+
+ Frequency:
+ 周波数:
+
+
+
+ PushButton
+
+
+
+
+ INVALID
+
+
+
+
diff --git a/resources/translations/scopy_kr.ts b/resources/translations/scopy_kr.ts
new file mode 100644
index 0000000000..faa6b35864
--- /dev/null
+++ b/resources/translations/scopy_kr.ts
@@ -0,0 +1,5971 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+
+
+
+
+ BaseMenuItem
+
+
+ Form
+
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+
+
+
+
+ Init Value
+ 초기값
+
+
+
+
+ 0
+ 0
+
+
+
+ Frequency
+ 주파수
+
+
+
+ 1000
+ 1000
+
+
+
+ Start counter
+ 시작카운터
+
+
+
+ End counter
+ 종료카운터
+
+
+
+ 65535
+ 65535
+
+
+
+ Increment
+ 증가
+
+
+
+ 1
+ 1
+
+
+
+ BitfieldWidget
+
+
+ Form
+
+
+
+
+
+ TextLabel
+
+
+
+
+ 0x
+ 0x
+
+
+
+ CalibrationTemplate
+
+
+ Form
+
+
+
+
+ Calibration info here
+ 캘리브레이션 정보 확인
+
+
+
+ Set
+ 설정
+
+
+
+ Measured
+ 측정
+
+
+
+ Enter value here
+ 이곳에서 값 입력
+
+
+
+ Restart
+ 재시작
+
+
+
+ Next
+ 다음
+
+
+
+ Finish
+ 마침
+
+
+
+ Channel
+
+
+ Form
+
+
+
+
+ Channel
+ 채널
+
+
+
+ ChannelSettings
+
+
+ Form
+
+
+
+
+ Channel
+ 채널
+
+
+
+ MATH
+ 연산
+
+
+
+ Edit Function
+ 함수 편집
+
+
+
+ HORIZONTAL
+ 수평축
+
+
+
+ VERTICAL
+ 수직축
+
+
+
+ SETTINGS
+ 설정
+
+
+
+ CH Thickness
+ 채널 굵기
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Memory depth
+ 메모리 크기
+
+
+
+ Probe
+Attenuation
+ 프로브
+감쇄
+
+
+
+ 0.1X
+ 0.1X
+
+
+
+ 1X
+ 1X
+
+
+
+ 10X
+ 10X
+
+
+
+ 100X
+ 100X
+
+
+
+ Curve Style
+ 곡선 형태
+
+
+
+ Lines
+
+
+
+
+ Dots
+
+
+
+
+ Steps
+ 스텝
+
+
+
+ Sticks
+
+
+
+
+ Smooth
+ 스무스
+
+
+
+ Software
+AC Coupling
+ 소프트웨어
+AC 커플링
+
+
+
+ Filter 1 - Enabled
+ 필터 1 - 실행-
+
+
+
+
+ TC
+ TC
+
+
+
+
+ Gain
+ 이득
+
+
+
+
+ 0
+ 0
+
+
+
+ Filter 2 - Enabled
+ 필터 2 - 실행-
+
+
+
+ Autoset
+ 오토셋
+
+
+
+ Snapshot
+ 스냅샷
+
+
+
+ Connect
+
+
+ Form
+
+
+
+
+ URI (Hostname)
+ URI (호스트이름)
+
+
+
+ Connect
+ 연결
+
+
+
+ Context info
+ 컨텍스트 정보
+
+
+
+ ConstantPatternUI
+
+
+ Form
+
+
+
+
+ Constant
+ 상수
+
+
+
+ 0
+ 0
+
+
+
+ 1
+ 1
+
+
+
+ CursorReadouts
+
+
+ Form
+
+
+
+
+ Δt =
+ Δt =
+
+
+
+
+ 0.000ms
+ 0.000ms
+
+
+
+ CurT2 =
+ CurT2 =
+
+
+
+ 1/Δt =
+ 1/Δt =
+
+
+
+ - 000.000 ms
+ - 000.000 ms
+
+
+
+ - 000.000 mHz
+ - 000.000 mHz
+
+
+
+ CurT1 =
+ CurT1 =
+
+
+
+ CurV2
+ CurV2
+
+
+
+ ΔV
+ ΔV
+
+
+
+ CurV1
+ CurV1
+
+
+
+
+ 000.000 mV
+ 000.000 mV
+
+
+
+ - 000.000 mV
+ - 000.000 mV
+
+
+
+
+
+ =
+ =
+
+
+
+ CursorsSettings
+
+
+ Form
+
+
+
+
+ Cursors
+ 커서
+
+
+
+ Normal
+ 노멀
+
+
+
+ Track
+ 트랙
+
+
+
+ 0
+ 0
+
+
+
+ HORIZONTAL
+ 수평축
+
+
+
+ VERTICAL
+ 수직축
+
+
+
+ CURSOR READOUTS
+ 커서 값
+
+
+
+ Transparency 0%
+ 투명도 0%
+
+
+
+ Position
+ 위치
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+
+
+
+
+ DMM
+
+
+
+ MAX
+ 최대
+
+
+
+
+ MIN
+ 최소
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Run
+ 실행
+
+
+
+ Channel 1
+ 채널 1
+
+
+
+
+ DC (Direct Current)
+ DC (직류 전류)
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ AC (20 Hz - 40 kHz)
+
+
+
+
+ 1s
+ 1s
+
+
+
+
+ 10s
+ 10s
+
+
+
+
+ 60s
+ 60s
+
+
+
+
+ History
+ 내역
+
+
+
+
+ Line thickness
+ 선 굵기
+
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+ 1
+ 1
+
+
+
+
+ 1.5
+ 1.5
+
+
+
+
+ 2
+ 2
+
+
+
+
+ 2.5
+ 2.5
+
+
+
+
+ 3
+ 3
+
+
+
+
+ 3.5
+ 3.5
+
+
+
+
+ 4
+ 4
+
+
+
+
+ 4.5
+ 4.5
+
+
+
+
+ 5
+ 5
+
+
+
+ Channel 2
+ 채널 2
+
+
+
+ PEAK HOLD
+ 피크 홀드
+
+
+
+ Reset
+ 리셋
+
+
+
+ DATA LOGGING
+ 데이터 기록
+
+
+
+ Browse
+ 검색
+
+
+
+ Append
+ 추가
+
+
+
+ Choose a file
+ 파일 선택
+
+
+
+ Overwrite
+ 덮어쓰기
+
+
+
+ DbClickButtons
+
+
+ Form
+
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ Debugger
+
+
+ MainWindow
+ 메인윈도우
+
+
+
+ SCRIPTING ENGINE
+ 스크립트 엔진
+
+
+
+ Load Script
+ 스크립트 적용
+
+
+
+ Run
+ 실행
+
+
+
+ Filename
+ 파일이름
+
+
+
+
+ Read
+ 읽기
+
+
+
+ Device
+ 장치
+
+
+
+ New Window
+ 새 윈도우
+
+
+
+
+ Write
+ 쓰기
+
+
+
+
+ Value:
+ 값:
+
+
+
+ DEVICE SELECTION
+ 장치 선택
+
+
+
+ Detailed Register Map
+ 상세 리지스터 맵
+
+
+
+ Address:
+ 어드레스:
+
+
+
+ 0x0000
+ 0x0000
+
+
+
+ Display mode:
+ 디스플레이 모드:
+
+
+
+ <value>
+ <값>
+
+
+
+
+ 0x
+ 0x
+
+
+
+ Description:
+ 설명:
+
+
+
+ Default Value:
+ 기본값:
+
+
+
+ Source:
+ 소스:
+
+
+
+ Enable AutoRead
+ 자동읽기 실행
+
+
+
+ REGISTER MAP SETTINGS
+ 리지스터 맵 설정
+
+
+
+ DetachDragZone
+
+
+ Form
+
+
+
+
+ Drag here to detach!
+ 이 곳으로 끌어 윈도우 분리!
+
+
+
+ Device
+
+
+ Form
+
+
+
+
+ DigitalIO
+
+
+ Form
+
+
+
+
+ Run
+ 실행
+
+
+
+ DigitalIoMenu
+
+
+ Form
+
+
+
+
+ PollingRate
+
+
+
+
+ 1000
+ 1000
+
+
+
+ Enable Outputs
+ 출력 실행
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ 트리거 설정
+
+
+
+ Trigger mode
+ 트리거 모드
+
+
+
+ auto
+ 오토
+
+
+
+ normal
+ 노멀
+
+
+
+ Trigger Logic
+ 트리거 로직
+
+
+
+ OR
+ OR
+
+
+
+ AND
+ AND
+
+
+
+ EXTERNAL TRIGGER
+ 외부 트리거
+
+
+
+ Source
+ 소스
+
+
+
+ Condition
+ 조건
+
+
+
+ None
+ 없음
+
+
+
+ EXTERNAL TRIGGER OUT
+ 외부 트리거 출력
+
+
+
+ DragZone
+
+
+ Form
+
+
+
+
+ EmptyPatternUI
+
+
+ Form
+
+
+
+
+ ExportSettings
+
+
+ Form
+
+
+
+
+ EXPORT
+ 내보내기
+
+
+
+ Export All
+ 모두 내보내기
+
+
+
+ Export
+ 내보내기
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+
+
+
+
+ Frequency
+ 주파수
+
+
+
+ 1000
+ 1000
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+
+
+
+
+ Script status
+ 스크립트 상태
+
+
+
+ Clear console
+ 콘솔 지우기
+
+
+
+ HomepageControls
+
+
+ Form
+
+
+
+
+ I2CPatternUI
+
+
+ Form
+
+
+
+
+ R
+ R
+
+
+
+ W
+ W
+
+
+
+ Read/Write
+ 읽기/쓰기
+
+
+
+ MSB First
+ MSB 우선
+
+
+
+ Address
+ 어드레스
+
+
+
+ Inter frame space
+ 프레임간 간격
+
+
+
+ Data
+ 데이터
+
+
+
+ InfoPage
+
+
+ Form
+
+
+
+
+ Forget device
+ 장치 무시
+
+
+
+ Identify
+ 확인
+
+
+
+ Connect
+ 연결
+
+
+
+ Calibrate
+ 교정
+
+
+
+ InfoWidget
+
+
+ Form
+
+
+
+
+ Move
+ 이동
+
+
+
+ InstrumentNotes
+
+
+ Form
+
+
+
+
+ Notes
+ 노트
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+ Insert notes here
+ 여기에 노트 삽입
+
+
+
+ LAChannelGroup
+
+
+ Form
+
+
+
+
+ DIO
+ DIO
+
+
+
+
+ 12
+ 12
+
+
+
+ None
+ 없음
+
+
+
+ LAChannelManager
+
+
+ Form
+
+
+
+
+ LAManagerHeader
+
+
+ Form
+
+
+
+
+ View
+ 보기
+
+
+
+ Name
+ 이름
+
+
+
+ DIO
+ DIO
+
+
+
+ Trigger
+ 트리거
+
+
+
+ Select
+ 선택
+
+
+
+ LARequiredChannel
+
+
+ Form
+
+
+
+
+ Settings
+ 설정
+
+
+
+
+ Role
+ 역
+
+
+
+ LASettingsWidget
+
+
+ Form
+
+
+
+
+ REQUIRED
+ 필수
+
+
+
+ OPTIONAL
+ 선택사항
+
+
+
+ OPTIONS
+ 옵션
+
+
+
+ LChannelSettings
+
+
+ Form
+
+
+
+
+ BG Color
+ BG 색상
+
+
+
+ Edge Color
+ 에지 색상
+
+
+
+ Low Color
+ 로우 색상
+
+
+
+ High Color
+ 하이 색상
+
+
+
+ SETTINGS
+ 설정
+
+
+
+ COLOR SETTINGS
+ 색상 설정
+
+
+
+ Name
+ 이름
+
+
+
+ Thickness
+ 굵기
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ LFSRPatternUI
+
+
+ Form
+
+
+
+
+
+ 0x0001
+ 0x0001
+
+
+
+ Generator Polynomial
+ 생성 다항식
+
+
+
+ Start State
+ 시작 상태
+
+
+
+ Period
+ 주기
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ 스코피 로직 분석기
+
+
+
+ Group
+ 그룹
+
+
+
+
+ Channel Settings
+ 채널 설정
+
+
+
+
+ -
+ -
+
+
+
+ Name
+ 이름
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ 트레이스 높이
+
+
+
+ GROUP
+ 그룹
+
+
+
+ Stack Decoder:
+ 스택 디코더:
+
+
+
+ Trigger Settings
+ 트리거 설정
+
+
+
+ Trigger mode
+ 트리거 모드
+
+
+
+ auto
+ 오토
+
+
+
+ normal
+ 노멀
+
+
+
+ Trigger Logic
+ 트리거 로직
+
+
+
+ EXTERNAL TRIGGER
+ 외부 트리거
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "경고: 이 기능은 현재 펌웨어 버전에서 지원되지 않습니다!"
+
+
+
+ Source
+ 소스
+
+
+
+ Condition
+ 조건
+
+
+
+ General Settings
+ 일반 설정
+
+
+
+ OneShot
+ 원샷
+
+
+
+ AVAILABLE CHANNELS
+ 가능 채널
+
+
+
+ DECODERS
+ 디코더
+
+
+
+ Close
+ 닫기
+
+
+
+ Print
+ 출력
+
+
+
+ Stream
+ 스트림
+
+
+
+ Cursors
+ 커서
+
+
+
+
+ Trigger
+ 트리거
+
+
+
+ ManualCalibration
+
+
+ Form
+
+
+
+
+ Load Calibration
+ 캘리브레이션 적용
+
+
+
+ Save Calibration
+ 캘리브레이션 저장
+
+
+
+ Run automatic
+ 자동 실행
+
+
+
+ MarkerTable
+
+
+ Form
+
+
+
+
+ Math
+
+
+ Form
+
+
+
+
+ f(t) =
+ f(t) =
+
+
+
+ cos
+ cos
+
+
+
+ 2
+ 2
+
+
+
+ 7
+ 7
+
+
+
+ ,
+ ,
+
+
+
+ 3
+ 3
+
+
+
+ ←
+ ←
+
+
+
+ (
+ (
+
+
+
+ exp
+ exp
+
+
+
+ 1
+ 1
+
+
+
+ 8
+ 8
+
+
+
+ -
+ -
+
+
+
+ /
+ /
+
+
+
+ *
+ *
+
+
+
+ e
+ e
+
+
+
+ C
+ C
+
+
+
+ 0
+ 0
+
+
+
+ 6
+ 6
+
+
+
+ )
+ )
+
+
+
+ log
+ log
+
+
+
+ t
+ t
+
+
+
+ +
+ +
+
+
+
+ 9
+ 9
+
+
+
+ tan
+ tan
+
+
+
+ ^
+ ^
+
+
+
+ 4
+ 4
+
+
+
+ Apply
+ 적용
+
+
+
+ pi
+ pi
+
+
+
+ 5
+ 5
+
+
+
+ sin
+ sin
+
+
+
+ MathPanel
+
+
+ Form
+
+
+
+
+ Add channel
+ 채널 추가
+
+
+
+ MeasureSettings
+
+
+ Form
+
+
+
+
+ Measure
+ 측정
+
+
+
+ Channel
+ 채널
+
+
+
+ MEASUREMENTS
+ 측정
+
+
+
+ Counter
+ 카운터
+
+
+
+ Display All
+ 모두 디스플레이
+
+
+
+
+ Delete All
+ 모두 삭제
+
+
+
+ STATISTICS
+ 통계
+
+
+
+ Reset
+ 리셋
+
+
+
+ CUSTOM SELECTION
+ 사용자 선택
+
+
+
+ Enable
+ 실행
+
+
+
+ GATING SETTINGS
+ 케이트 설정
+
+
+
+ MeasurementsPanel
+
+
+ Form
+
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ 출력
+
+
+
+ Current Frequency:
+ 현재 주파수:
+
+
+
+ Sample:
+ 샘플:
+
+
+
+ Average:
+ 평균:
+
+
+
+ Phase (°)
+ 위상 (°)
+
+
+
+ Magnitude (dB)
+ 진폭 (dB)
+
+
+
+ °
+ °
+
+
+
+ 10
+ 10
+
+
+
+ Settings
+ 설정
+
+
+
+
+ REFERENCE
+ 환경설정
+
+
+
+ Channel 1
+ 채널 1
+
+
+
+ Channel 2
+ 채널 2
+
+
+
+ 0
+ 0
+
+
+
+ Gain Mode
+ 이득 모드
+
+
+
+ Automatic
+ 자동
+
+
+
+ Low
+ 로우
+
+
+
+ High
+ 하이
+
+
+
+ RESPONSE
+ 응답
+
+
+
+ DC Filtering
+ DC 필터
+
+
+
+
+ On
+ 켜짐
+
+
+
+
+ Off
+ 꺼짐
+
+
+
+ SWEEP
+ 스위프
+
+
+
+ Logarithmic
+ 로그형
+
+
+
+ Linear
+ 선형
+
+
+
+ Average
+ 평균
+
+
+
+
+ Apply
+ 적용
+
+
+
+ Periods
+ 주기
+
+
+
+ DISPLAY
+ 디스플레이
+
+
+
+ Delta Label
+ 델타 레이블
+
+
+
+ BUFFER PREVIEWER
+ 버퍼 미리보기
+
+
+
+ ViewInOsc
+
+
+
+
+ Previous
+ 이전
+
+
+
+ Next
+ 다음
+
+
+
+ General Settings
+ 일반 설정
+
+
+
+ PLOT
+ 그리기
+
+
+
+ Type
+ 종류
+
+
+
+ Bode
+ 보드
+
+
+
+ Nyquist
+ 나이퀴스트
+
+
+
+ Nichols
+ 니콜즈
+
+
+
+ Line thickness
+ 선 굵기
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ EXPORT
+ 내보내기
+
+
+
+ Export
+ 내보내기
+
+
+
+ Import
+ 불러오기
+
+
+
+ Snapshot
+ 스냅샷
+
+
+
+ Remove Reference
+ 레퍼런스 제거
+
+
+
+ Cursors
+ 커서
+
+
+
+ CURSOR READOUTS
+ 커서 값
+
+
+
+ Transparency 0%
+ 투명도 0%
+
+
+
+ Position
+ 위치
+
+
+
+ Cursors
+ 커서
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+
+
+
+
+ Note
+
+
+ TextLabel
+
+
+
+
+ NumberPatternUI
+
+
+ Form
+
+
+
+
+ Number
+ 숫자
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ 일반설정
+
+
+
+ General settings
+ 일반 설정
+
+
+
+ VIEWS
+ 보기
+
+
+
+ FFT
+ FFT
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Histogram
+ 히스토그램
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Y-Axis
+ Y-축
+
+
+
+ X-Axis
+ X-축
+
+
+
+ dots
+ 점
+
+
+
+ lines
+ 선
+
+
+
+ X-Y Line thickness
+ X-Y 선 굵기
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ 6
+ 6
+
+
+
+ 7
+ 7
+
+
+
+ 8
+ 8
+
+
+
+ 9
+ 9
+
+
+
+ 10
+ 10
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ 스코피 오실로스코프
+
+
+
+ Print
+ 출력
+
+
+
+ Cursors
+ 커서
+
+
+
+ Measure
+ 측정
+
+
+
+ Trigger
+ 트리거
+
+
+
+ Close
+ 닫기
+
+
+
+ PGCGSettings
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ Pattern
+ 패턴
+
+
+
+ Output
+ 출력
+
+
+
+ PP
+ PP
+
+
+
+ OD
+ OD
+
+
+
+ CLOCK
+ 클럭
+
+
+
+ SETTINGS
+ 설정
+
+
+
+ Name
+ 이름
+
+
+
+ Thickness
+ 굵기
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ COLOR SETTINGS
+ 색상 설정
+
+
+
+ BG Color
+ BG 색상
+
+
+
+ Edge Color
+ 경계 색상
+
+
+
+ Low Color
+ 로우 색상
+
+
+
+ High Color
+ 하이 색상
+
+
+
+ PGChannel
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ PGChannelGroup
+
+
+ Form
+
+
+
+
+ TextLabel
+
+
+
+
+ 12
+ 12
+
+
+
+ PGChannelManager
+
+
+ Form
+
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+
+
+
+
+ Enable
+ 실행
+
+
+
+ Name
+ 이름
+
+
+
+ DIO
+ DIO
+
+
+
+ Select
+ 선택
+
+
+
+ PGSettings
+
+
+ Form
+
+
+
+
+ Settings
+ 설정
+
+
+
+ Autoset
+ 오토셋
+
+
+
+ Sample Rate
+ 샘플 속도
+
+
+
+ Buffer Size
+ 버퍼 크기
+
+
+
+ ExternalClock
+ 외부클럭
+
+
+
+ External Clock Frequency
+ 외부 클럭 주파수
+
+
+
+ Reset Instrument
+ 리셋 장치
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ 스코피 패턴 생성기
+
+
+
+ Print
+ 출력
+
+
+
+ Group
+ 그룹
+
+
+
+
+ Channel Settings
+ 채널 설정
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ 트레이스 높이
+
+
+
+ Name
+ 이름
+
+
+
+ Open-Drain
+ 오픈-드레인
+
+
+
+ Push-Pull
+ 푸시-풀
+
+
+
+ GROUP
+ 그룹
+
+
+
+ Pattern
+ 패턴
+
+
+
+ Trigger Settings
+ 트리거 설정
+
+
+
+ Trigger mode
+ 트리거 모드
+
+
+
+ auto
+ 오토
+
+
+
+ normal
+ 노멀
+
+
+
+ Trigger Logic
+ 트리거 로직
+
+
+
+ EXTERNAL TRIGGER
+ 외부 트리거
+
+
+
+ Source
+ 소스
+
+
+
+ Condition
+ 조건
+
+
+
+ -
+ -
+
+
+
+ General Settings
+ 일반 설정
+
+
+
+ AVAILABLE CHANNELS
+ 가능 채널
+
+
+
+ Cursors
+ 커서
+
+
+
+ Trigger
+ 트리거
+
+
+
+ Close
+ 닫기
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ 스코피 파워 제어
+
+
+
+
+ Set
+ 설정
+
+
+
+
+ Measure
+ 측정
+
+
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Tracking ratio control
+ 비율 출력 제어
+
+
+
+ Independent
+ 단일
+
+
+
+ Tracking
+ 비율
+
+
+
+ 100
+ 100
+
+
+
+ %
+ %
+
+
+
+ Positive output
+ 양극성 출력
+
+
+
+
+ Enable
+ 실행
+
+
+
+ Negative output
+ 음극성 출력
+
+
+
+ Preferences
+
+
+ Form
+
+
+
+
+ GENERAL
+ 일반
+
+
+
+ OSCILLOSCOPE
+ 오실로스코프
+
+
+
+ Enable labels on the plot
+ 그래프에 레이블 표시
+
+
+
+ Enable graticule
+ 눈금자 표시
+
+
+
+ Enable mini histogram
+ 미니 히스토그램 활성화
+
+
+
+ Enable all instrument notes
+ 모드 장치 노트 활성화
+
+
+
+ Language (requires app restart)
+ 언어 (프로그램 재시작 필요)
+
+
+
+ Restart the application for changes to take effect
+ 변경사항 적용을 위해 프로그램을 재시작 하세요
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ 온도 기반 교정 수행 (시험단계)
+
+
+
+ Enable animations
+ 애니메이션 활성화
+
+
+
+ 1
+ 1
+
+
+
+ Run external scripts (Experimental)
+ 외부 스크립트 실행 (시험단계)
+
+
+
+ SPECTRUM ANALYZER
+ 스펙트럼 분석기
+
+
+
+ Only search marker peaks in visible domain
+ 보이는 영역에서만 마커 피크 찾기
+
+
+
+ Double click to detach a tool
+ 더블 클릭하여 윈도우 분리
+
+
+
+ Save session when closing Scopy
+ 스코피 종료 시 세션 저장
+
+
+
+ NETWORK ANALYZER
+ 네트워크 분석기
+
+
+
+ Always display 0db value on graph
+ 그래프상에 항상 0dB 값 표시
+
+
+
+ Scriptable manual calibration
+
+
+
+
+ Show advanced device information
+ 상세 장치 정보 보기
+
+
+
+ LOGIC ANALYZER
+ 로직 분석기
+
+
+
+ Display sampling points when zoomed
+ 확대 시 샘플링 포인트 표시
+
+
+
+ SIGNAL GENERATOR
+ 신호 발생기
+
+
+
+ Number of displayed periods
+
+
+
+
+ Enable digital decoders
+ 디지털 디코더 실행
+
+
+
+ Enable sample rate filters
+ 샘플 레이트 필터 실행
+
+
+
+ Show ADC digital filter config
+ ADC 디지털 필터 설정 보기
+
+
+
+ DEBUG
+ 디버그
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ 디버그 메시지 실행 (디버깅과 버그 리포트 용도)
+
+
+
+ Enable Debug Instrument
+ 디버그 장치 실행
+
+
+
+ Enable user notes in main page
+ 메인 페이지에서 사용자 노트 실행
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ 교정이 끝났으면 교정 건너뛰기 (교정값은 디폴트 아님)
+
+
+
+ Reset Scopy
+ 스코피 리셋
+
+
+
+ PulsePatternUI
+
+
+ Form
+
+
+
+
+ Low
+ 로우
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ High
+ 하이
+
+
+
+ 100
+ 100
+
+
+
+ Counter Init
+ 카운터 초기화
+
+
+
+ Delay
+ 지연
+
+
+
+
+ 1
+ 1
+
+
+
+ Delay polarity
+ 지연 극성
+
+
+
+ Number of pulses
+ 펄스 개수
+
+
+
+ QObject
+
+
+ Period
+ 주기
+
+
+
+ Frequency
+ 주파수
+
+
+
+ Min
+ 최소
+
+
+
+ Max
+ 최대
+
+
+
+ Peak-peak
+ 피크-피크
+
+
+
+ Mean
+ 평균
+
+
+
+ Cycle Mean
+ 사이클 평균
+
+
+
+ RMS
+ RMS
+
+
+
+ Cycle RMS
+ 사이클 RMS
+
+
+
+ AC RMS
+ AC RMS
+
+
+
+ Area
+ 면적
+
+
+
+ Cycle Area
+ 사이클 면적
+
+
+
+ Low
+ 로우
+
+
+
+ High
+ 하이
+
+
+
+ Amplitude
+ 진폭
+
+
+
+ Middle
+ 중간
+
+
+
+ +Over
+ +초과
+
+
+
+ -Over
+ -초과
+
+
+
+ Rise
+ 상승
+
+
+
+ Fall
+ 하강
+
+
+
+ +Width
+ +폭
+
+
+
+ -Width
+ -폭
+
+
+
+ +Duty
+ +듀티
+
+
+
+ -Duty
+ -듀티
+
+
+
+ RegisterWidget
+
+
+ Form
+
+
+
+
+ RunSingleWidget
+
+
+ Form
+
+
+
+
+ Run
+ 실행
+
+
+
+ Single
+ 싱글
+
+
+
+ SPIPatternUI
+
+
+ Form
+
+
+
+
+ MSB First
+ MSB 우선
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+ 0
+ 0
+
+
+
+ CLK Phase
+ CLK 위상
+
+
+
+ CS Polarity
+ CS 극성
+
+
+
+ CLK Polarity
+ CLK 극성
+
+
+
+ Bytes per frame
+ 프레임당 바이트
+
+
+
+ Inter frame space
+ 프레임간 간격
+
+
+
+ Data
+ 데이터
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ 스코피 신호 발생기
+
+
+
+ Constant
+ 상수
+
+
+
+ Waveform
+ 파형
+
+
+
+ Sine
+ Sine
+
+
+
+ Square
+ 제곱
+
+
+
+ Triangle
+ 삼각형
+
+
+
+ Trapezoidal
+ 사다리꼴
+
+
+
+ Rising Ramp Sawtooth
+ 상승 램프 톱니파
+
+
+
+ Falling Ramp Sawtooth
+ 하강 램프 톱니파
+
+
+
+ Stair Step
+ 계단형
+
+
+
+ TIMING
+ 타이밍
+
+
+
+ Buffer
+ 버퍼
+
+
+
+ FILE
+ 파일
+
+
+
+ Path
+ 경로
+
+
+
+
+ No file loaded
+ 적용된 파일 없음
+
+
+
+ Format
+ 포맷
+
+
+
+ Size
+ 크기
+
+
+
+ 0 samples
+ 0 샘플
+
+
+
+ Load file
+ 파일 적용
+
+
+
+ Channel
+ 채널
+
+
+
+ SCALING
+ 스케일링
+
+
+
+ Math
+ 연산
+
+
+
+ NOISE
+ 잠음
+
+
+
+ None
+ 없음
+
+
+
+ Uniform
+ 균등
+
+
+
+ Gaussian
+ 가우시안
+
+
+
+ Laplacian
+ 라플라시안
+
+
+
+ Impulse
+ 임펄스
+
+
+
+ OTHER
+ 기타
+
+
+
+ Line thickness
+ 선 굵기
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Close
+ 닫기
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+
+
+
+
+ Print
+ 출력
+
+
+
+ Preset
+ 프리셋
+
+
+
+
+ dBFS
+ dBFS
+
+
+
+ Sample:
+ 샘플:
+
+
+
+ Average Sample:
+ 평균 샘플:
+
+
+
+ Marker_n 0.000 Hz 0dB
+ 마커_n 0.000 Hz 0dB
+
+
+
+ Channel
+ 채널
+
+
+
+ Type
+ 종류
+
+
+
+ Sample
+ 샘플
+
+
+
+ and other types
+ 그리고 다른 종류
+
+
+
+ Window
+ 윈도우
+
+
+
+ Uniform (none)
+ 균등 (없음)
+
+
+
+ and others windows
+ 그리고 다른 윈도우
+
+
+
+ Averaging
+ 평균
+
+
+
+ Apply
+ 적용
+
+
+
+ CH Thickness
+ 채널 굵기
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ History
+ 내역
+
+
+
+ Gain mode
+ 이득 모드
+
+
+
+
+ Low
+ 로우
+
+
+
+ High
+ 하이
+
+
+
+ Snapshot
+ 스냅샷
+
+
+
+ General settings
+ 일반 설정
+
+
+
+ Export
+ 내보내기
+
+
+
+
+ Sweep
+ 스위프
+
+
+
+ Logarithmic
+ 로그형
+
+
+
+ Linear
+ 선형
+
+
+
+ FREQUENCY
+ 주파수
+
+
+
+ AMPLITUDE
+ 진폭
+
+
+
+ Resolution BW
+ 해당도 대역폭
+
+
+
+ Units
+ 단위
+
+
+
+
+ Markers
+ 마커
+
+
+
+ Settings
+ 설정
+
+
+
+ MARKER
+ 마커
+
+
+
+ Normal
+ 노멀
+
+
+
+ Delta
+ 델타
+
+
+
+ Peak
+ 피크
+
+
+
+
+ Peak
+ 피크
+
+
+
+
+ Ampl
+ 진폭
+
+
+
+ GENERAL
+ 일반
+
+
+
+ Marker Table
+ 마커 테이블
+
+
+
+ Import Reference Channels
+ 레퍼런스 채널 불러오기
+
+
+
+ No file selected!
+ 선택된 파일 없음!
+
+
+
+ Browse
+ 검색
+
+
+
+ Import
+ 불러오기
+
+
+
+ SpinBoxA
+
+
+ Form
+
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+
+
+
+
+ Statistic
+
+
+ Form
+
+
+
+
+ Avg:
+ 평균:
+
+
+
+
+
+ 0.000
+ 0.000
+
+
+
+ Min:
+ 최소:
+
+
+
+ Max:
+ 최대:
+
+
+
+ 1
+ 1
+
+
+
+ Measurement
+ 측정
+
+
+
+ StatisticsPanel
+
+
+ Form
+
+
+
+
+ ToolLauncher
+
+
+ Scopy
+ 스코피
+
+
+
+ Home
+ 홈
+
+
+
+ Save
+ 저장
+
+
+
+ Load
+ 적용
+
+
+
+ Preferences
+ 환경설정
+
+
+
+ Notes
+ 노트
+
+
+
+ Quit
+ 종료
+
+
+
+ ADC Offset
+ ADC 오프셋
+
+
+
+ ADC Gain
+ ADC 이득
+
+
+
+ Reset ADC Calibration
+ ADC 캘리브레이션 리셋
+
+
+
+ TriggerSettings
+
+
+ Form
+
+
+
+
+ Trigger Settings
+ 트리거 설정
+
+
+
+ Trigger mode
+ 트리거 모드
+
+
+
+ auto
+ 오토
+
+
+
+ normal
+ 노멀
+
+
+
+
+ Source
+ 소스
+
+
+
+ INTERNAL (ANALOG)
+ 내부 (아나로그)
+
+
+
+
+ Condition
+ 조건
+
+
+
+
+ Rising Edge
+ 상승 에지
+
+
+
+
+ Falling Edge
+ 하강 에지
+
+
+
+
+ Low
+ 로우
+
+
+
+
+ High
+ 하이
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ 이 기능은 혼합 신호 보기에서 지원되지 않습니다!
+
+
+
+ DIGITAL
+ 디지털
+
+
+
+ Any Edge
+ 모든 에지
+
+
+
+ M2K daisychain position
+ M2K 데이지체인 위치
+
+
+
+ TRIGGER LOGIC
+ 트리거 로직
+
+
+
+ Analog - Digital
+ 아나로그 - 디지털
+
+
+
+ Digital OR Analog
+ 디지털 OR 아나로그
+
+
+
+ Digital AND Analog
+ 디지털 AND 아나로그
+
+
+
+ Digital XOR Analog
+ 디지털 XOR 아나로그
+
+
+
+ !Digital OR Analog
+ !디지털 OR 아나로그
+
+
+
+ !Digital AND Analog
+ !디지털 OR 아나로그
+
+
+
+ !Digital XOR Analog
+ !디지털 XOR 아나로그
+
+
+
+ EXTERNAL TRIGGER OUT
+ 외부 트리거 출력
+
+
+
+ UARTPatternUI
+
+
+ Form
+
+
+
+
+ Stop
+ 중지
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ Baud
+ 보 레이트
+
+
+
+
+ 9600
+ 9600
+
+
+
+ 1200
+ 1200
+
+
+
+ 2400
+ 2400
+
+
+
+ 4800
+ 4800
+
+
+
+ 14400
+ 14400
+
+
+
+ 19200
+ 19200
+
+
+
+ 28800
+ 19200
+
+
+
+ 38400
+ 38400
+
+
+
+ 57600
+ 57600
+
+
+
+ 115200
+ 115200
+
+
+
+ 230400
+ 230400
+
+
+
+ Parity
+ 패리티
+
+
+
+ NONE
+ 없음
+
+
+
+ ODD
+ 홀수
+
+
+
+ EVEN
+ 짝수
+
+
+
+ MARK
+ 마크
+
+
+
+ SPACE
+ 스페이스
+
+
+
+ Parameters
+ 파라미터
+
+
+
+ Data to Send
+ 보낼 데이터
+
+
+
+ UserNotePage
+
+
+ Form
+
+
+
+
+ Remove note
+ 노트 제거
+
+
+
+ UserNotes
+
+
+ Form
+
+
+
+
+ Save
+ 저장
+
+
+
+ File path
+ 파일 경로
+
+
+
+ Browse
+ 검색
+
+
+
+ Note name
+ 노트 이름
+
+
+
+ WalkingPatternUI
+
+
+ Form
+
+
+
+
+ Walking level
+ 워킹 패턴
+
+
+
+ 0
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+ Frequency
+ 주파수
+
+
+
+ 1000
+ 1000
+
+
+
+ Direction
+ 방향
+
+
+
+ Right
+ 우측
+
+
+
+ Left
+ 좌측
+
+
+
+ Length
+ 길이
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+ 확대:
+
+
+
+
+ /div
+ /눈금
+
+
+
+ Waiting
+ 기다리는중
+
+
+
+ Triggered
+ 트리거완료
+
+
+
+ Stop
+ 중지
+
+
+
+ Auto
+ 오토
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ Phase
+ 위상
+
+
+
+ Duty
+ 듀티
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ 연결
+
+
+
+ Waiting for connection ...
+ 연결 대기 중 ...
+
+
+
+
+ Context info
+ 컨텍스트 정보
+
+
+
+ Add
+ 추가
+
+
+
+ Warning
+ 경고
+
+
+
+ Error: Unable to find host: No such host is known!
+ 에러: 호스트를 찾을 수 없음: 알수 없는 호스트!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ 켜짐
+
+
+
+ off
+ 꺼짐
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ 타이머
+
+
+
+ Stop
+ 중지
+
+
+
+ Run
+ 실행
+
+
+
+ Export
+ 내보내기
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ 콤마 구분 파일 (*.csv);;모든 파일(*)
+
+
+
+ No file selected
+ 선택된 파일 없음
+
+
+
+
+ File is open in another program
+ 파일이 다른 프로그램에서 사용 중
+
+
+
+
+ Choose a file
+ 파일 선택
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ 파일 저장
+
+
+
+ JavaScript (*.js)
+ 자바스크립트 (*.js)
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ 중지
+
+
+
+ Run
+ 실행
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ 채널
+
+
+
+ Name
+ 이름
+
+
+
+ Export
+ 내보내기
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ Open file
+ 파일 열기
+
+
+
+ Import selected channels
+ 선택 채널 불러오기
+
+
+
+ No file selected
+ 선택된 파일 없음
+
+
+
+ Export
+ 내보내기
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 콤마 구분 파일 (*.csv);;탭 구분 파일 (*.txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ 불러오기
+
+
+
+ Import all
+ 모두 불러오기
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+ 에러: 연결 실패!
+
+
+
+ Connected
+ 연결됨
+
+
+
+ Your hardware revision does not support the identify feature
+ 이 하드웨어 버전은 해당 기능을 지원하지 않습니다
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+ M2K
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ 연결되지 않음
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ 교정전엔 항상 아나로그 입/출력을 연결해제 하세요
+
+
+
+ Can't identify this device.
+ 장치를 인식할 수 없습니다.
+
+
+
+ Can't identify device. Please try to update your firmware!
+ 장치를 인식할 수 없습니다. 펌웨어를 업데이트 하세요!
+
+
+
+ Your hardware revision does not support the identify feature
+ 이 하드웨어 버전은 해당 기능을 지원하지 않습니다
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ 파일 저장
+
+
+
+ ini (*.ini)
+ ini (*.ini)
+
+
+
+
+ °C
+ °C
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+ Id
+
+
+
+ Marker
+ 마커
+
+
+
+ Channel
+ 채널
+
+
+
+ Frequency
+ 주파수
+
+
+
+ Magnitude
+ 진폭
+
+
+
+ Type
+ 종류
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ 수평축
+
+
+
+
+ Name
+ 이름
+
+
+
+
+ Measure
+ 측정
+
+
+
+
+ Stats
+ 통계
+
+
+
+ Vertical
+ 수직축
+
+
+
+
+ Recover
+ 복구
+
+
+
+
+ Delete All
+ 모두 삭제
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ 중지됨
+
+
+
+ Frequency (Hz)
+ 주파수 (Hz)
+
+
+
+ Magnitude(dB)
+ 진폭(dB)
+
+
+
+ Phase (°)
+ 위상 (°)
+
+
+
+ Samples count
+ 샘플 수
+
+
+
+ Samps/decade
+ 샘플/데케이드
+
+
+
+ Step
+ 스텝
+
+
+
+ Amplitude
+ 진폭
+
+
+
+ Offset
+ 오프셋
+
+
+
+ Max. Magnitude
+ 최대 진폭
+
+
+
+ Min. Magnitude
+ 최소 진폭
+
+
+
+ Max. Phase
+ 최대 위상
+
+
+
+ Min. Phase
+ 최소 위상
+
+
+
+
+ Settling time
+ 안정화 시간
+
+
+
+ Before Buffer
+ 버퍼 이전
+
+
+
+ After Buffer
+ 버퍼 이후
+
+
+
+
+ Sample:
+ 샘플:
+
+
+
+
+ Current Frequency:
+ 현재 주파수:
+
+
+
+
+ DC Voltage:
+ DC 전압:
+
+
+
+
+ Response channel voltage < 50mV!
+ 응답 채널 전압 < 50mV!
+
+
+
+
+ Low
+ 로우
+
+
+
+
+ High
+ 하이
+
+
+
+
+ Gain Mode:
+ 이득 모드:
+
+
+
+ Transparency
+ 투명도
+
+
+
+ Image
+ 이미지
+
+
+
+ Save to
+ 위치에 저장
+
+
+
+ Import
+ 불러오기
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 콤마 구분 파일 (*.csv);;탭 구분 파일 (*.txt)
+
+
+
+ Comma-separated values files (*.csv)
+ 콤마 구분 파일 (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ 탭 구분 파일 (*.txt)
+
+
+
+ All Files(*)
+ 모든 파일(*)
+
+
+
+ Export
+ 내보내기
+
+
+
+ Average:
+ 평균:
+
+
+
+ Running
+ 실행중
+
+
+
+ Stopping...
+ 중지중...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ 투명도
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ 타임베이스
+
+
+
+
+ Position
+ 위치
+
+
+
+ Volts/Div
+ 볼트/눈금
+
+
+
+
+ Add Channel
+ 채널 추가
+
+
+
+
+
+ Export
+ 내보내기
+
+
+
+
+ Comma-separated values files (*.csv)
+ 콤마 구분 파일 (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ 탭 구분 파일 (*.txt)
+
+
+
+
+ All Files(*)
+ 모든 파일(*)
+
+
+
+ Transparency
+ 투명도
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "경고: 이 기능은 현재 펌웨어 버전에서 지원되지 않습니다!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * 혼합 신호 보기에서는 로직 분석기 툴은 활성화되지 않습니다!
+** 트리거는 비활성화 하거나, 디지털 채널 또는 아나로그 채널에 설정 하십시요. 두 채널에 동시에 설정되지 않습니다!
+
+
+
+ Math
+ 연산
+
+
+
+ Browse
+ 검색
+
+
+
+ No file selected
+ 선택된 파일 없음
+
+
+
+
+ Reference
+ 레퍼런스
+
+
+
+ Logic
+ 로직
+
+
+
+ Add channel
+ 채널 추가
+
+
+
+ Import selected channels
+ 선택 채널 불러오기
+
+
+
+ Enable Mixed Signal View
+ 혼합 신호 보기 실행
+
+
+
+ Import
+ 불러오기
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 콤마 구분 파일 (*.csv);;탭 구분 파일 (*.txt)
+
+
+
+
+ Snapshot
+ 스냅샷
+
+
+
+ Filter 1 - Enable -
+ 필터 1 - 실행-
+
+
+
+ Filter 2 - Enable -
+ 필터 2 - 실행 -
+
+
+
+
+ Save
+ 저장
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+ 밀리볼트
+
+
+
+
+ Volts
+ 볼트
+
+
+
+
+ Value
+ 값
+
+
+
+
+ Disable
+ 실행종료
+
+
+
+
+ Enable
+ 실행
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ 이 변경은 스코피 리셋 후 적용됩니다.
+
+
+
+ By resetting scopy you will lose the current configuration!
+ 스코피를 리셋하면 현재 설정은 제거됩니다!
+
+
+
+ Do you want to reset?
+ 리셋을 원하세요?
+
+
+
+ Load language
+ 언어 적용
+
+
+
+ Language files (*.qm)
+ 언어 파일 (*.qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ 문서
+
+
+
+ Image
+ 이미지
+
+
+
+ Export File Name
+ 내보내기 파일 이름
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ 샘플 속도
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ 실행
+
+
+
+
+
+ Single
+ 싱글
+
+
+
+
+
+
+
+ Stop
+ 중지
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ 주파수
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+ 도
+
+
+
+ π rad
+ π rad
+
+
+
+
+
+
+
+ ns
+ ns
+
+
+
+
+
+
+
+ μs
+ μs
+
+
+
+
+
+
+
+ ms
+ ms
+
+
+
+
+
+
+
+ s
+ s
+
+
+
+
+
+ Phase
+ 위상
+
+
+
+ μVolts p-p
+ μVolts p-p
+
+
+
+ mVolts p-p
+ mVolts p-p
+
+
+
+ Volts p-p
+ Volts p-p
+
+
+
+
+
+ Amplitude
+ 진폭
+
+
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+
+
+
+ mVolts
+ mVolts
+
+
+
+
+
+
+
+ Volts
+ Volts
+
+
+
+
+ Offset
+ 오프셋
+
+
+
+ mHz
+ mHz
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency
+ 주파수
+
+
+
+ Rising
+ 상승
+
+
+
+ Falling
+ 하강
+
+
+
+ Rise Time
+ 상승 시간
+
+
+
+ Fall Time
+ 하강 시간
+
+
+
+ High Time
+ 정극성 펄스폭
+
+
+
+ Low Time
+ 부극성 펄스폭
+
+
+
+
+ SampleRate
+ 샘플 속도
+
+
+
+ Record Length
+ 측정시간
+
+
+
+ Value
+ 값
+
+
+
+ Duty Cycle
+ 듀티 사이클
+
+
+
+
+
+ samples
+ 샘플
+
+
+
+ Open File
+ 파일 열기
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ 콤마 구분 파일 (*.csv);;탭 구분 파일 (*.txt);;파형 오디오 파일 포맷 (*.wav);;Matlab 파일 (*.mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ 전압 (V)
+
+
+
+ Time (s)
+ 시간 (s)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ 내보내기
+
+
+
+ dBFS
+ dBFS
+
+
+
+ dBV
+ dBV
+
+
+
+ dBu
+ dBu
+
+
+
+ Vpeak
+ Vpeak
+
+
+
+ Vrms
+ Vrms
+
+
+
+ V/√Hz
+ V/√Hz
+
+
+
+ Sample
+ 샘플
+
+
+
+ Peak Hold
+ 피크 홀드
+
+
+
+ Peak Hold Continous
+ 피크 홀드 연속
+
+
+
+ Min Hold
+ 최소 홀드
+
+
+
+ Min Hold Continous
+ 최소 홀드 연속
+
+
+
+ Linear RMS
+ 선형 RMS
+
+
+
+ Linear dB
+ 선형 dB
+
+
+
+ Exponential RMS
+ 지수형 RMS
+
+
+
+ Exponential dB
+ 지수형 dB
+
+
+
+ Flat top
+ 고전압
+
+
+
+ Rectangular
+ Rectangular
+
+
+
+ Triangular (Bartlett)
+ Triangular (Bartlett)
+
+
+
+ Hamming
+ Hamming
+
+
+
+ Hann
+ Hann
+
+
+
+ Blackman-Harris
+ Blackman-Harris
+
+
+
+ Kaiser
+ Kaiser
+
+
+
+ Manual
+ 매뉴얼
+
+
+
+ Peak
+ 피크
+
+
+
+ Delta
+ 델타
+
+
+
+ Fixed
+ 고정
+
+
+
+ Scale/Div
+ 스케일/눈금
+
+
+
+
+ Top
+ 최상
+
+
+
+
+ Bottom
+ 최하
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency Position
+ 주파수 위치
+
+
+
+
+ Comma-separated values files (*.csv)
+ 콤마 구분 파일 (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ 탭 구분 파일 (*.txt)
+
+
+
+
+ All Files(*)
+ 모든 파일(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 콤마 구분 파일 (*.csv);;탭 구분 파일 (*.txt)
+
+
+
+ Snapshot
+ 스냅샷
+
+
+
+ Sample:
+ 샘플:
+
+
+
+ Average Sample:
+ 평균 샘플:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ 시작
+
+
+
+ Stop
+ 중지
+
+
+
+ Center
+ 중심
+
+
+
+ Span
+ 스팬
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ 환경설정
+
+
+
+ Calibration skipped because already calibrated.
+ 교정이 이미 수행되었으므로 교정을 건너뜁니다.
+
+
+
+ Calibrated
+ 교정됨
+
+
+
+ Save session
+ 세션 저장
+
+
+
+
+ Scopy-Files (*.ini)
+ 스코피 파일 (*.ini)
+
+
+
+ Load session
+ 세션 적용
+
+
+
+ Click to open the home menu
+ 클릭하여 홈메뉴 열기
+
+
+
+ Click to disconnect the device
+ 클릭하여 장치 연결 해제
+
+
+
+ Click to save the current session
+ 클릭하여 현재 세션 저장
+
+
+
+
+ Click to load a session
+ 클릭하여 세션 적용
+
+
+
+
+ Select a device first
+ 장치 우선 선택
+
+
+
+
+
+ Click to connect the device
+ 클릭하여 장치 연결
+
+
+
+ Report a bug!
+ 버그 리포트 하기!
+
+
+
+ Connecting...
+ 연결중...
+
+
+
+ Disconnecting...
+ 연결 해제중...
+
+
+
+ Connect
+ 연결
+
+
+
+ Calibrating...
+ 교정중...
+
+
+
+ Calibration Failed
+ 교정 실패
+
+
+
+
+ Disconnect
+ 연결 해제
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ 디지탈 디코더 지원이 해제됩니다. 일부 기능을 찾을 수 없습니다
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ libsigrokdecode 설정 중 문제가 발견 되었습니다. 일부 기능을 찾을 수 없습니다
+
+
+
+ Calibrating
+ 교정중
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ 오실로스코프
+
+
+
+ Spectrum Analyzer
+ 스펙트럼 분석기
+
+
+
+ Network Analyzer
+ 네트워크 분석기
+
+
+
+ Signal Generator
+ 신호 발생기
+
+
+
+ Logic Analyzer
+ 로직 분석기
+
+
+
+ Pattern Generator
+ 패턴 발생기
+
+
+
+ Digital IO
+ 디지털 IO
+
+
+
+ Voltmeter
+ 볼트미터
+
+
+
+ Power Supply
+ 파워 서플라이
+
+
+
+ Debugger
+ 디버거
+
+
+
+ Calibration
+ 교정
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ 교정중...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ 포워드 트리거 입력
+
+
+
+ Oscilloscope
+ 오실로스코프
+
+
+
+
+ Logic Analyzer
+ 로직 분석기
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+ mVolts
+ mVolts
+
+
+
+
+ Volts
+ Volts
+
+
+
+ Level
+ Level
+
+
+
+ Hysteresis
+ 히스테리시스
+
+
+
+ External Trigger In
+ 외부 트리거 입력
+
+
+
+ None
+ 없음
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ 노트
+
+
+
+ Invalid or empty file!
+ 유효하지 않거나 비어 있는 파일!
+
+
+
+ Path:
+ 경로:
+
+
+
+ Warning: The file is empty!
+ 경고: 파일이 비어 있습니다!
+
+
+
+ Warning: The path is invalid!
+ 경고: 경로가 유효하지 않습니다!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ 샘플 속도
+
+
+
+ Nr of samples
+ 샘플 Nr
+
+
+
+ Delay
+ 지연
+
+
+
+ Transparency
+ 투명도
+
+
+
+ Select a decoder to add
+ 추가할 디코더 선택
+
+
+
+ External Trigger In
+ 외부 트리거 입력
+
+
+
+ Oscilloscope
+ 오실로스코프
+
+
+
+ Comma-separated values files (*.csv)
+ 콤마 구분 파일 (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ 탭 구분 파일 (*.txt)
+
+
+
+ Value Change Dump(*.vcd)
+
+
+
+
+ All Files(*)
+ 모든 파일(*)
+
+
+
+ Export
+ 내보내기
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ Querying config key %1 resulted in %2
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ Querying config key %1 resulted in %2
+
+
+
+ dioChannel
+
+
+ Form
+
+
+
+
+
+ 0
+ 0
+
+
+
+ in
+ 입력
+
+
+
+ out
+ 출력
+
+
+
+ 1
+ 1
+
+
+
+ dioElement
+
+
+ Form
+
+
+
+
+ 0 - 7
+ 0 - 7
+
+
+
+ Individual
+ 개별
+
+
+
+ Group
+ 그룹
+
+
+
+ in
+ 입력
+
+
+
+ out
+ 출력
+
+
+
+ 127
+ 127
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+
+
+
+
+ PulseScript
+ 펄스스크립트
+
+
+
+ NumberOfPulses
+ 펄스수
+
+
+
+ Samples/Pulse
+ 샘플/펄스
+
+
+
+ Hi
+ 하이
+
+
+
+ Lo
+ 로우
+
+
+
+ Frequency:
+ 주파수:
+
+
+
+ PushButton
+ 푸쉬버튼
+
+
+
+ INVALID
+ 유효하지 않음
+
+
+
diff --git a/resources/translations/scopy_th.ts b/resources/translations/scopy_th.ts
new file mode 100644
index 0000000000..6ca98f751f
--- /dev/null
+++ b/resources/translations/scopy_th.ts
@@ -0,0 +1,5969 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ BaseMenuItem
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Init Value
+ ค่าเริ่มต้น
+
+
+
+
+ 0
+ 0
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ 1000
+ 1000
+
+
+
+ Start counter
+ เริ่มตัวนับ
+
+
+
+ End counter
+ สิ้นสุดตัวนับ
+
+
+
+ 65535
+ 65535
+
+
+
+ Increment
+ เพิ่มขึ้น
+
+
+
+ 1
+ 1
+
+
+
+ BitfieldWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+
+ TextLabel
+ ป้ายข้อความ
+
+
+
+ 0x
+ 0x
+
+
+
+ CalibrationTemplate
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Calibration info here
+ ข้อมูลสอบเทียบตรงนี้
+
+
+
+ Set
+ ตั้งค่า
+
+
+
+ Measured
+ ค่าที่วัดได้
+
+
+
+ Enter value here
+ ใส่ค่าตรงนี้
+
+
+
+ Restart
+ เริ่มใหม่
+
+
+
+ Next
+ ถัดไป
+
+
+
+ Finish
+ เสร็จสิ้น
+
+
+
+ Channel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Channel
+ ช่อง
+
+
+
+ ChannelSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Channel
+ ช่อง
+
+
+
+ MATH
+ คณิตศาสตร์
+
+
+
+ Edit Function
+ แก้ไขฟังก์ชั่น
+
+
+
+ HORIZONTAL
+ แนวนอน
+
+
+
+ VERTICAL
+ แนวตั้ง
+
+
+
+ SETTINGS
+ ตั้งค่า
+
+
+
+ CH Thickness
+ ความหนาช่อง
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Memory depth
+ ความลึกหน่วยความจำ
+
+
+
+ Probe
+Attenuation
+ อัตราการลดทอนโพรบ
+
+
+
+ 0.1X
+ 0.1 เท่า
+
+
+
+ 1X
+ 1 เท่า
+
+
+
+ 10X
+ 10 เท่า
+
+
+
+ 100X
+ 100 เท่า
+
+
+
+ Curve Style
+ รูปแบบเส้นโค้ง
+
+
+
+ Lines
+ เส้น
+
+
+
+ Dots
+ จุด
+
+
+
+ Steps
+ ขั้น
+
+
+
+ Sticks
+ แท่ง
+
+
+
+ Smooth
+ เรียบ
+
+
+
+ Software
+AC Coupling
+ ซอฟต์แวร์การเชื่อมต่อกระแสสลับ
+
+
+
+ Filter 1 - Enabled
+ ตัวกรอง 1 เปิด
+
+
+
+
+ TC
+ ค่าคงที่เวลา
+
+
+
+
+ Gain
+ อัตราขยาย
+
+
+
+
+ 0
+ 0
+
+
+
+ Filter 2 - Enabled
+ ตัวกรอง 2 เปิด
+
+
+
+ Autoset
+ ตั้งค่าอัตโนมัติ
+
+
+
+ Snapshot
+ ภาพรวม
+
+
+
+ Connect
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ URI (Hostname)
+ URI (ชื่อโฮสต์)
+
+
+
+ Connect
+ เชื่อมต่อ
+
+
+
+ Context info
+ ข้อมูลบริบท
+
+
+
+ ConstantPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Constant
+ ค่าคงที่
+
+
+
+ 0
+ 0
+
+
+
+ 1
+ 1
+
+
+
+ CursorReadouts
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Δt =
+ Δt =
+
+
+
+
+ 0.000ms
+ 0.000 mSec
+
+
+
+ CurT2 =
+ CurT2 =
+
+
+
+ 1/Δt =
+ 1/Δt =
+
+
+
+ - 000.000 ms
+ - 000.000 mSec
+
+
+
+ - 000.000 mHz
+ - 000.000 mHz
+
+
+
+ CurT1 =
+ CurT1 =
+
+
+
+ CurV2
+ CurT2 =
+
+
+
+ ΔV
+ ΔV
+
+
+
+ CurV1
+
+
+
+
+
+ 000.000 mV
+ 000.000 mV
+
+
+
+ - 000.000 mV
+ - 000.000 mV
+
+
+
+
+
+ =
+ =
+
+
+
+ CursorsSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+ Normal
+ ปกติ
+
+
+
+ Track
+ ติดตาม
+
+
+
+ 0
+ 0
+
+
+
+ HORIZONTAL
+ แนวนอน
+
+
+
+ VERTICAL
+ แนวตั้ง
+
+
+
+ CURSOR READOUTS
+ การอ่านค่าเคอร์เซอร์
+
+
+
+ Transparency 0%
+ ความโปร่งใส 0%
+
+
+
+ Position
+ ตำแหน่ง
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ DMM
+
+
+
+ MAX
+ สุงสุด
+
+
+
+
+ MIN
+ ต่ำสุด
+
+
+
+
+ VDC
+ แรงดันไฟกระแสตรง
+
+
+
+ Run
+ เริ่ม
+
+
+
+ Channel 1
+ ช่อง 1
+
+
+
+
+ DC (Direct Current)
+ กระแสตรง
+
+
+
+
+ AC (20 Hz - 40 kHz)
+ กระแสสลับ (20 Hz - 40 kHz)
+
+
+
+
+ 1s
+ 1 Sec
+
+
+
+
+ 10s
+ 10 Sec
+
+
+
+
+ 60s
+ 60 Sec
+
+
+
+
+ History
+ ประวัติ
+
+
+
+
+ Line thickness
+ ความหนาเส้น
+
+
+
+
+ 0.5
+ 0.5
+
+
+
+
+ 1
+ 1
+
+
+
+
+ 1.5
+ 1.5
+
+
+
+
+ 2
+ 2
+
+
+
+
+ 2.5
+ 2.5
+
+
+
+
+ 3
+ 3
+
+
+
+
+ 3.5
+ 3.5
+
+
+
+
+ 4
+ 4
+
+
+
+
+ 4.5
+ 4.5
+
+
+
+
+ 5
+ 5
+
+
+
+ Channel 2
+ ช่อง 2
+
+
+
+ PEAK HOLD
+ สูงสุด คงไว้
+
+
+
+ Reset
+ ตั้งค่าใหม่
+
+
+
+ DATA LOGGING
+ การบันทึกข้อมูล
+
+
+
+ Browse
+ เรียกดู
+
+
+
+ Append
+ ผนวก
+
+
+
+ Choose a file
+ เลือกไฟล์
+
+
+
+ Overwrite
+ เขียนทับ
+
+
+
+ DbClickButtons
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ Debugger
+
+
+ MainWindow
+ หน้าต่างหลัก
+
+
+
+ SCRIPTING ENGINE
+ กลไกการเขียนสคริปต์
+
+
+
+ Load Script
+ โหลดสคริปต์
+
+
+
+ Run
+ ใช้
+
+
+
+ Filename
+ ชื่อไฟล์
+
+
+
+
+ Read
+ อ่าน
+
+
+
+ Device
+ อุปกรณ์
+
+
+
+ New Window
+ หน้าต่างใหม่
+
+
+
+
+ Write
+ เขียน
+
+
+
+
+ Value:
+ ค่า:
+
+
+
+ DEVICE SELECTION
+ การเลือกอุปกรณ์
+
+
+
+ Detailed Register Map
+ แผนผังรีจิสเตอร์โดยละเอียด
+
+
+
+ Address:
+ ที่อยู่:
+
+
+
+ 0x0000
+ 0x0000
+
+
+
+ Display mode:
+ โหมดการแสดงผล:
+
+
+
+ <value>
+ <ค่า>
+
+
+
+
+ 0x
+ 0x
+
+
+
+ Description:
+ คำอธิบาย:
+
+
+
+ Default Value:
+ ค่าเริ่มต้น:
+
+
+
+ Source:
+ แหล่งที่มา:
+
+
+
+ Enable AutoRead
+ เปิดใช้งาน อ่านค่าอัตโนมัติ
+
+
+
+ REGISTER MAP SETTINGS
+ ตั้งค่าแผนผังรีจิสเตอร์
+
+
+
+ DetachDragZone
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Drag here to detach!
+ ลากมาที่นี่เพื่อปลดออก!
+
+
+
+ Device
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ DigitalIO
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Run
+ ใช้
+
+
+
+ DigitalIoMenu
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ PollingRate
+ อัตราการสำรวจ
+
+
+
+ 1000
+ 1000
+
+
+
+ Enable Outputs
+ เปิดใช้งานเอาท์พุท
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Trigger Settings
+ ตั้งค่าตัวกระตุ้น
+
+
+
+ Trigger mode
+ โหมดตัวกระตุ้น
+
+
+
+ auto
+ อัตโนมัติ
+
+
+
+ normal
+ ปกติ
+
+
+
+ Trigger Logic
+ ตรรกะตัวกระตุ้น
+
+
+
+ OR
+ OR
+
+
+
+ AND
+ AND
+
+
+
+ EXTERNAL TRIGGER
+ ตัวกระตุ้นภายนอก
+
+
+
+ Source
+ แหล่งที่มา
+
+
+
+ Condition
+ เงื่อนไข
+
+
+
+ None
+ ไม่มี
+
+
+
+ EXTERNAL TRIGGER OUT
+ ตัวกระตุ้นภายนอก ออก
+
+
+
+ DragZone
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ EmptyPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ ExportSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ EXPORT
+ นำออก
+
+
+
+ Export All
+ นำออกทั้งหมด
+
+
+
+ Export
+ นำออก
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ 1000
+ 1000
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Script status
+ สถานะสคริปต์
+
+
+
+ Clear console
+ ล้างแผงควบคุม
+
+
+
+ HomepageControls
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ I2CPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ R
+ R
+
+
+
+ W
+ W
+
+
+
+ Read/Write
+ อ่าน/เขียน
+
+
+
+ MSB First
+ MSB ก่อน
+
+
+
+ Address
+ ที่อยู่
+
+
+
+ Inter frame space
+ ช่องว่างระหว่างเฟรม
+
+
+
+ Data
+ ข้อมูล
+
+
+
+ InfoPage
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Forget device
+ ลบการจำอุปกรณ์
+
+
+
+ Identify
+ จำแนก
+
+
+
+ Connect
+ เชื่อมต่อ
+
+
+
+ Calibrate
+ สอบเทียบ
+
+
+
+ InfoWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Move
+ ย้าย
+
+
+
+ InstrumentNotes
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Notes
+ หมายเหตุ
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+ Insert notes here
+ แทรกหมายเหตุตรงนี้
+
+
+
+ LAChannelGroup
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ DIO
+ อินพุท/เอาท์พุทแบบติจิทัล
+
+
+
+
+ 12
+ 12
+
+
+
+ None
+ ไม่มี
+
+
+
+ LAChannelManager
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ LAManagerHeader
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ View
+ มุมมอง
+
+
+
+ Name
+ ชื่อ
+
+
+
+ DIO
+ อินพุท/เอาท์พุทแบบติจิทัล
+
+
+
+ Trigger
+ ตัวกระตุ้น
+
+
+
+ Select
+ เลือก
+
+
+
+ LARequiredChannel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Settings
+ ตั้งค่า
+
+
+
+
+ Role
+ หน้าที่
+
+
+
+ LASettingsWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ REQUIRED
+ จำเป็น
+
+
+
+ OPTIONAL
+ ทางเลือก
+
+
+
+ OPTIONS
+ ตัวเลือก
+
+
+
+ LChannelSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ BG Color
+ สีพื้นหลัง
+
+
+
+ Edge Color
+ สีขอบ
+
+
+
+ Low Color
+ สีต่ำ
+
+
+
+ High Color
+ สีสูง
+
+
+
+ SETTINGS
+ ตั้งค่า
+
+
+
+ COLOR SETTINGS
+ ตั้งค่าสี
+
+
+
+ Name
+ ชื่อ
+
+
+
+ Thickness
+ ความหนา
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ LFSRPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+
+ 0x0001
+ 0x0001
+
+
+
+ Generator Polynomial
+ ตัวสร้างพหุนาม
+
+
+
+ Start State
+ สถานะเริ่มต้น
+
+
+
+ Period
+ คาบเวลา
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ ตัววิเคราะห์ตรรกะ Scopy
+
+
+
+ Group
+ กลุ่ม
+
+
+
+
+ Channel Settings
+ ตั้งค่าช่อง
+
+
+
+
+ -
+ -
+
+
+
+ Name
+ ชื่อ
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ ความสูงการติดตาม
+
+
+
+ GROUP
+ กลุ่ม
+
+
+
+ Stack Decoder:
+ ตัวถอดรหัสซ้อน:
+
+
+
+ Trigger Settings
+ ตั้งค่าตัวกระตุ้น
+
+
+
+ Trigger mode
+ โหมดตัวกระตุ้น
+
+
+
+ auto
+ อัตโนมัติ
+
+
+
+ normal
+ ปกติ
+
+
+
+ Trigger Logic
+ ตรรกะตัวกระตุ้น
+
+
+
+ EXTERNAL TRIGGER
+ ตัวกระตุ้นภายนอก
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "คำเตือน: ฟีเจอร์นี้ไม่รองรับบนเฟิร์มแวร์เวอร์ชันปัจจุบัน!"
+
+
+
+ Source
+ แหล่งที่มา
+
+
+
+ Condition
+ เงื่อนไข
+
+
+
+ General Settings
+ ตั้งค่าทั่วไป
+
+
+
+ OneShot
+ ครั้งเดียว
+
+
+
+ AVAILABLE CHANNELS
+ ช่องที่มีอยู่
+
+
+
+ DECODERS
+ ตัวถอดรหัส
+
+
+
+ Close
+ ปิด
+
+
+
+ Print
+ พิมพ์
+
+
+
+ Stream
+ ไหลต่อเนื่อง
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+
+ Trigger
+ ตัวกระตุ้น
+
+
+
+ ManualCalibration
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Load Calibration
+ โหลดการสอบเทียบ
+
+
+
+ Save Calibration
+ บันทึกการสอบเทียบ
+
+
+
+ Run automatic
+ ใช้งานอัตโนมัติ
+
+
+
+ MarkerTable
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Math
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ f(t) =
+ f(t) =
+
+
+
+ cos
+ cos
+
+
+
+ 2
+ 2
+
+
+
+ 7
+ 7
+
+
+
+ ,
+ ,
+
+
+
+ 3
+ 3
+
+
+
+ ←
+ ←
+
+
+
+ (
+ (
+
+
+
+ exp
+ exp
+
+
+
+ 1
+ 1
+
+
+
+ 8
+ 8
+
+
+
+ -
+ -
+
+
+
+ /
+ /
+
+
+
+ *
+ *
+
+
+
+ e
+ e
+
+
+
+ C
+ C
+
+
+
+ 0
+ 0
+
+
+
+ 6
+ 6
+
+
+
+ )
+ )
+
+
+
+ log
+ log
+
+
+
+ t
+ t
+
+
+
+ +
+ +
+
+
+
+ 9
+ 9
+
+
+
+ tan
+ tan
+
+
+
+ ^
+ ^
+
+
+
+ 4
+ 4
+
+
+
+ Apply
+ ใช้
+
+
+
+ pi
+ π
+
+
+
+ 5
+ 5
+
+
+
+ sin
+ sin
+
+
+
+ MathPanel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Add channel
+ เพิ่มช่อง
+
+
+
+ MeasureSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Measure
+ วัด
+
+
+
+ Channel
+ ช่อง
+
+
+
+ MEASUREMENTS
+ การวัด
+
+
+
+ Counter
+ ตัวนับ
+
+
+
+ Display All
+ แสดงทั้งหมด
+
+
+
+
+ Delete All
+ ลบทั้งหมด
+
+
+
+ STATISTICS
+ สถิติ
+
+
+
+ Reset
+ ตั้งค่าใหม่
+
+
+
+ CUSTOM SELECTION
+ การเลือกแบบกำหนดเอง
+
+
+
+ Enable
+ เปิดใช้งาน
+
+
+
+ GATING SETTINGS
+ ตั้งค่าช่องทาง
+
+
+
+ MeasurementsPanel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ พิมพ์
+
+
+
+ Current Frequency:
+ ความถี่ปัจจุบัน:
+
+
+
+ Sample:
+ ตัวอย่าง:
+
+
+
+ Average:
+ ค่าเฉลี่ย:
+
+
+
+ Phase (°)
+ เฟส (°)
+
+
+
+ Magnitude (dB)
+ ขนาด (dB)
+
+
+
+ °
+ °
+
+
+
+ 10
+ 10
+
+
+
+ Settings
+ การตั้งค่า
+
+
+
+
+ REFERENCE
+ ค่าอ้างอิง
+
+
+
+ Channel 1
+ ช่อง 1
+
+
+
+ Channel 2
+ ช่อง 2
+
+
+
+ 0
+ 0
+
+
+
+ Gain Mode
+ โหมดขยาย
+
+
+
+ Automatic
+ อัตโนมัติ
+
+
+
+ Low
+ ต่ำ
+
+
+
+ High
+ สูง
+
+
+
+ RESPONSE
+ การตอบสนอง
+
+
+
+ DC Filtering
+ การกรองกระแสตรง
+
+
+
+
+ On
+ เปิด
+
+
+
+
+ Off
+ ปิด
+
+
+
+ SWEEP
+ กวาด
+
+
+
+ Logarithmic
+ ลอการิทึม
+
+
+
+ Linear
+ เชิงเส้น
+
+
+
+ Average
+ ค่าเฉลี่ย
+
+
+
+
+ Apply
+ ใช้
+
+
+
+ Periods
+ ช่วงเวลา
+
+
+
+ DISPLAY
+ แสดง
+
+
+
+ Delta Label
+ ป้ายความต่าง
+
+
+
+ BUFFER PREVIEWER
+ ดูตัวอย่างบัฟเฟอร์
+
+
+
+ ViewInOsc
+ มุมมองใน Osc
+
+
+
+ Previous
+ ก่อนหน้า
+
+
+
+ Next
+ ถัดไป
+
+
+
+ General Settings
+ ตั้งค่าทั่วไป
+
+
+
+ PLOT
+ วาดกราฟ
+
+
+
+ Type
+ ประเภท
+
+
+
+ Bode
+ Bode
+
+
+
+ Nyquist
+ Nyquist
+
+
+
+ Nichols
+ Nichols
+
+
+
+ Line thickness
+ ความหนาเส้น
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ EXPORT
+ นำออก
+
+
+
+ Export
+ นำออก
+
+
+
+ Import
+ นำเข้า
+
+
+
+ Snapshot
+ ภาพรวม
+
+
+
+ Remove Reference
+ ลบการอ้างอิง
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+ CURSOR READOUTS
+ การอ่านเคอร์เซอร์
+
+
+
+ Transparency 0%
+ ความโปร่งใส 0%
+
+
+
+ Position
+ ตำแหน่ง
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Note
+
+
+ TextLabel
+ ป้ายข้อความ
+
+
+
+ NumberPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Number
+ ตัวเลข
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ ตั้งค่าทั่วไป
+
+
+
+ General settings
+ ตั้งค่าทั่วไป
+
+
+
+ VIEWS
+ มุมมอง
+
+
+
+ FFT
+ FFT
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Histogram
+ Histogram
+
+
+
+ X-Y
+ X-Y
+
+
+
+ Y-Axis
+ แกน Y
+
+
+
+ X-Axis
+ แกน X
+
+
+
+ dots
+ จุด
+
+
+
+ lines
+ เส้น
+
+
+
+ X-Y Line thickness
+ ความหนาเส้น X-Y
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ 4
+ 4
+
+
+
+ 5
+ 5
+
+
+
+ 6
+ 6
+
+
+
+ 7
+ 7
+
+
+
+ 8
+ 8
+
+
+
+ 9
+ 9
+
+
+
+ 10
+ 10
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy ออสซิลโลสโคป
+
+
+
+ Print
+ พิมพ์
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+ Measure
+ วัด
+
+
+
+ Trigger
+ ตัวกระตุ้น
+
+
+
+ Close
+ ปิด
+
+
+
+ PGCGSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ TextLabel
+ ป้ายข้อความ
+
+
+
+ Pattern
+ รูปแบบ
+
+
+
+ Output
+ เอาท์พุท
+
+
+
+ PP
+ PP
+
+
+
+ OD
+ OD
+
+
+
+ CLOCK
+ นาฬิกา
+
+
+
+ SETTINGS
+ ตั้งค่า
+
+
+
+ Name
+ ชื่อ
+
+
+
+ Thickness
+ ความหนา
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ COLOR SETTINGS
+ ตั้งค่าสี
+
+
+
+ BG Color
+ สีพื้นหลัง
+
+
+
+ Edge Color
+ สีขอบ
+
+
+
+ Low Color
+ สีต่ำ
+
+
+
+ High Color
+ สีสูง
+
+
+
+ PGChannel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ TextLabel
+ ป้ายข้อความ
+
+
+
+ PGChannelGroup
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ TextLabel
+ ป้ายข้อความ
+
+
+
+ 12
+ 12
+
+
+
+ PGChannelManager
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Enable
+ เปิดใช้งาน
+
+
+
+ Name
+ ชื่อ
+
+
+
+ DIO
+ อินพุท/เอาท์พุทแบบติจิทัล
+
+
+
+ Select
+ เลือก
+
+
+
+ PGSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Settings
+ ตั้งค่า
+
+
+
+ Autoset
+ ตั้งค่าอัตโนมัติ
+
+
+
+ Sample Rate
+ อัตราตัวอย่าง
+
+
+
+ Buffer Size
+ ขนาดบัฟเฟอร์
+
+
+
+ ExternalClock
+ สัญญาณนาฬิกาภายนอก
+
+
+
+ External Clock Frequency
+ ความถี่สัญญาณนาฬิกาภายนอก
+
+
+
+ Reset Instrument
+ ตั้งค่าเครื่องมือวัดใหม่
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ ตัวสร้างรูปแบบ Scopy
+
+
+
+ Print
+ พิมพ์
+
+
+
+ Group
+ กลุ่ม
+
+
+
+
+ Channel Settings
+ ตั้งค่าช่อง
+
+
+
+ 1
+ 1
+
+
+
+ Trace Height
+ ความสูงการติดตาม
+
+
+
+ Name
+ ชื่อ
+
+
+
+ Open-Drain
+ Open-Drain
+
+
+
+ Push-Pull
+ Push-Pull
+
+
+
+ GROUP
+ กลุ่ม
+
+
+
+ Pattern
+ รูปแบบ
+
+
+
+ Trigger Settings
+ ตั้งค่าตัวกระตุ้น
+
+
+
+ Trigger mode
+ โหมดตัวกระตุ้น
+
+
+
+ auto
+ อัตโนมัติ
+
+
+
+ normal
+ ปกติ
+
+
+
+ Trigger Logic
+ ตรรกะตัวกระตุ้น
+
+
+
+ EXTERNAL TRIGGER
+ ตัวกระตุ้นภายนอก
+
+
+
+ Source
+ แหล่งที่มา
+
+
+
+ Condition
+ เงื่อนไข
+
+
+
+ -
+ -
+
+
+
+ General Settings
+ ตั้งค่าทั่วไป
+
+
+
+ AVAILABLE CHANNELS
+ ช่องที่มีอยู่
+
+
+
+ Cursors
+ เคอร์เซอร์
+
+
+
+ Trigger
+ ตัวกระตุ้น
+
+
+
+ Close
+ ปิด
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ การควบคุมพลังงาน Scopy
+
+
+
+
+ Set
+ ตั้งค่า
+
+
+
+
+ Measure
+ วัด
+
+
+
+
+
+
+ VDC
+ VDC
+
+
+
+ Tracking ratio control
+ การควบคุมอัตราส่วนการติดตาม
+
+
+
+ Independent
+ อิสระ
+
+
+
+ Tracking
+ การติดตาม
+
+
+
+ 100
+ 100
+
+
+
+ %
+ %
+
+
+
+ Positive output
+ เอาท์พุทบวก
+
+
+
+
+ Enable
+ เปิดใช้งาน
+
+
+
+ Negative output
+ เอาท์พุทลบ
+
+
+
+ Preferences
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ GENERAL
+ ทั่วไป
+
+
+
+ OSCILLOSCOPE
+ ออสซิลโลสโคป
+
+
+
+ Enable labels on the plot
+ เปิดใช้งานป้ายกำกับบนการวาดกราฟ
+
+
+
+ Enable graticule
+ เปิดใช้งาน Graticule
+
+
+
+ Enable mini histogram
+ เปิดใช้งาน Mini histogram
+
+
+
+ Enable all instrument notes
+ เปิดใช้งานทุกบันทึกการวัด
+
+
+
+ Language (requires app restart)
+ ภาษา (ต้องเริ่มแอปใหม่)
+
+
+
+ Restart the application for changes to take effect
+ เริ่มแอปพลิเคชั่นใหม่เพื่อให้การเปลี่ยนแปลงมีผล
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ พยายามสอบเทียบตามอุณหภูมิ (การทดลอง)
+
+
+
+ Enable animations
+ เปิดใช้งานภาพเคลื่อนไหว
+
+
+
+ 1
+ 1
+
+
+
+ Run external scripts (Experimental)
+ เรียกใช้สคริปต์ภายนอก (ทดลอง)
+
+
+
+ SPECTRUM ANALYZER
+ ตัววิเคราะห์คลื่นความถี่
+
+
+
+ Only search marker peaks in visible domain
+ ค้นหาเครื่องหมายที่ยอดสูงสุดในโดเมนที่มองเห็นได้เท่านั้น
+
+
+
+ Double click to detach a tool
+ ดับเบิลคลิ้กเพื่อถอดเครื่องมือ
+
+
+
+ Save session when closing Scopy
+ บันทึกข้อมูลเมื่อปิด Scopy
+
+
+
+ NETWORK ANALYZER
+ ตัววิเคราะห์เครือข่าย
+
+
+
+ Always display 0db value on graph
+ แสดงค่า 0db บนกราฟเสมอ
+
+
+
+ Scriptable manual calibration
+ การสอบเทียบด้วยตนเองแบบเขียนสคริปต์ได้
+
+
+
+ Show advanced device information
+ แสดงข้อมูลอุปกรณ์ขั้นสูง
+
+
+
+ LOGIC ANALYZER
+ ตัววิเคราะห์ตรรกะ
+
+
+
+ Display sampling points when zoomed
+ แสดงจุดสุ่มตัวอย่างเมื่อซูม
+
+
+
+ SIGNAL GENERATOR
+ ตัวกำเนิดสัญญาณ
+
+
+
+ Number of displayed periods
+ จำนวนช่วงเวลาที่แสดง
+
+
+
+ Enable digital decoders
+ เปิดใช้งานตัวถอดรหัสดิจิทัล
+
+
+
+ Enable sample rate filters
+ เปิดใช้งานตัวกรองอัตราการสุ่มตัวอย่าง
+
+
+
+ Show ADC digital filter config
+ แสดงการกำหนดค่าตัวกรองดิจิทัล ADC
+
+
+
+ DEBUG
+ แก้ปัญหา
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ เปิดใช้งานข้อความแก้ปัญหา (เฉพาะสำหรับการแก้ปัญหา, การรายงานข้อบกพร่อง)
+
+
+
+ Enable Debug Instrument
+ เปิดใช้งานเครื่องมือแก้ไขข้อบกพร่อง
+
+
+
+ Enable user notes in main page
+ เปิดใช้งานบันทึกย่อของผู้ใช้ในหน้าหลัก
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ ข้าม การสอบเทียบหากปรับเทียบแล้ว (ค่า cal ไม่ใช่ค่าเริ่มต้น)
+
+
+
+ Reset Scopy
+ ตั้งค่า Scopy ใหม่
+
+
+
+ PulsePatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Low
+ ต่ำ
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ High
+ สูง
+
+
+
+ 100
+ 100
+
+
+
+ Counter Init
+ การเริ่มต้นตัวนับ
+
+
+
+ Delay
+ หน่วงเวลา
+
+
+
+
+ 1
+ 1
+
+
+
+ Delay polarity
+ ขั้วการหน่วงเวลา
+
+
+
+ Number of pulses
+ จำนวนพัลส์
+
+
+
+ QObject
+
+
+ Period
+ คาบเวลา
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ Min
+ ต่ำสุด
+
+
+
+ Max
+ สูงสุด
+
+
+
+ Peak-peak
+ Peak-Peak
+
+
+
+ Mean
+ Mean
+
+
+
+ Cycle Mean
+ Cycle Mean
+
+
+
+ RMS
+ RMS
+
+
+
+ Cycle RMS
+ Cycle RMS
+
+
+
+ AC RMS
+ AC RMS
+
+
+
+ Area
+ Area
+
+
+
+ Cycle Area
+ Cycle Area
+
+
+
+ Low
+ ต่ำ
+
+
+
+ High
+ สูง
+
+
+
+ Amplitude
+ ความสูง
+
+
+
+ Middle
+ ตรงกลาง
+
+
+
+ +Over
+ +Over
+
+
+
+ -Over
+ -Over
+
+
+
+ Rise
+ ขาขึ้น
+
+
+
+ Fall
+ ขาลง
+
+
+
+ +Width
+ +Width
+
+
+
+ -Width
+ -Width
+
+
+
+ +Duty
+ +Duty
+
+
+
+ -Duty
+ -Duty
+
+
+
+ RegisterWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ RunSingleWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Run
+ ใช้
+
+
+
+ Single
+ ครั้งเดียว
+
+
+
+ SPIPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ MSB First
+ MSB ก่อน
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+ 0
+ 0
+
+
+
+ CLK Phase
+ CLK Phase
+
+
+
+ CS Polarity
+ CS Polarity
+
+
+
+ CLK Polarity
+ CLK Polarity
+
+
+
+ Bytes per frame
+ จำนวนไบต์ต่อเฟรม
+
+
+
+ Inter frame space
+ ช่องว่างระหว่างเฟรม
+
+
+
+ Data
+ ข้อมูล
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ เครื่องกำเนิดสัญญาณ Scopy
+
+
+
+ Constant
+ ค่าคงที่
+
+
+
+ Waveform
+ รูปคลื่น
+
+
+
+ Sine
+ ซายน์
+
+
+
+ Square
+ สี่เหลี่ยมจตุรัส
+
+
+
+ Triangle
+ สามเหลี่ยม
+
+
+
+ Trapezoidal
+ สี่เหลี่ยมคางหมู
+
+
+
+ Rising Ramp Sawtooth
+ ฟันเลื่อยลาดขึ้น
+
+
+
+ Falling Ramp Sawtooth
+ ฟันเลื่อยลาดลง
+
+
+
+ Stair Step
+ ขั้นบันได
+
+
+
+ TIMING
+ ช่วงเวลา
+
+
+
+ Buffer
+ บัฟเฟอร์
+
+
+
+ FILE
+ ไฟล์
+
+
+
+ Path
+ เส้นทาง
+
+
+
+
+ No file loaded
+ ไม่มีไฟล์ถูกโหลด
+
+
+
+ Format
+ รูปแบบ
+
+
+
+ Size
+ ขนาด
+
+
+
+ 0 samples
+ 0 ตัวอย่าง
+
+
+
+ Load file
+ โหลดไฟล์
+
+
+
+ Channel
+ ช่อง
+
+
+
+ SCALING
+ อัตราส่วน
+
+
+
+ Math
+ คณิตศาสตร์
+
+
+
+ NOISE
+ สิ่งรบกวน
+
+
+
+ None
+ ไม่มี
+
+
+
+ Uniform
+ Uniform
+
+
+
+ Gaussian
+ Gaussian
+
+
+
+ Laplacian
+ Laplacian
+
+
+
+ Impulse
+ Impulse
+
+
+
+ OTHER
+ แบบอื่นๆ
+
+
+
+ Line thickness
+ ความหนาเส้น
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ Close
+ ปิด
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Print
+ พิมพ์
+
+
+
+ Preset
+ ที่ตั้งไว้ล่วงหน้า
+
+
+
+
+ dBFS
+ dBFS
+
+
+
+ Sample:
+ ตัวอย่าง:
+
+
+
+ Average Sample:
+ ตัวอย่างเฉลี่ย:
+
+
+
+ Marker_n 0.000 Hz 0dB
+ เครื่องหมาย_n 0.000 Hz 0dB
+
+
+
+ Channel
+ ช่อง
+
+
+
+ Type
+ ประเภท
+
+
+
+ Sample
+ ตัวอย่าง
+
+
+
+ and other types
+ และประเภทอื่นๆ
+
+
+
+ Window
+ หน้าต่าง
+
+
+
+ Uniform (none)
+ เครื่องแบบ (ไม่มี)
+
+
+
+ and others windows
+ และหน้าต่างอื่นๆ
+
+
+
+ Averaging
+ ค่าเฉลี่ย
+
+
+
+ Apply
+ ใช้
+
+
+
+ CH Thickness
+ ความหนาช่อง
+
+
+
+ 0.5
+ 0.5
+
+
+
+ 1
+ 1
+
+
+
+ 1.5
+ 1.5
+
+
+
+ 2
+ 2
+
+
+
+ 2.5
+ 2.5
+
+
+
+ 3
+ 3
+
+
+
+ 3.5
+ 3.5
+
+
+
+ 4
+ 4
+
+
+
+ 4.5
+ 4.5
+
+
+
+ 5
+ 5
+
+
+
+ History
+ ประวัติ
+
+
+
+ Gain mode
+ โหมดขยาย
+
+
+
+
+ Low
+ ต่ำ
+
+
+
+ High
+ สูง
+
+
+
+ Snapshot
+ ภาพรวม
+
+
+
+ General settings
+ ตั้งค่าทั่วไป
+
+
+
+ Export
+ นำออก
+
+
+
+
+ Sweep
+ กวาด
+
+
+
+ Logarithmic
+ ลอการิทึม
+
+
+
+ Linear
+ เชิงเส้น
+
+
+
+ FREQUENCY
+ ความถี่
+
+
+
+ AMPLITUDE
+ ขนาด
+
+
+
+ Resolution BW
+ ความละเอียดความกว้างแถบความถี่
+
+
+
+ Units
+ หน่วย
+
+
+
+
+ Markers
+ เครื่องหมาย
+
+
+
+ Settings
+ ตั้งค่า
+
+
+
+ MARKER
+ เครื่องหมาย
+
+
+
+ Normal
+ ค่าปกติ
+
+
+
+ Delta
+ ความต่าง
+
+
+
+ Peak
+ ค่าสูงสุด
+
+
+
+
+ Peak
+ ค่าสูงสุด
+
+
+
+
+ Ampl
+ ขนาด
+
+
+
+ GENERAL
+ ทั่วไป
+
+
+
+ Marker Table
+ ตารางเครื่องหมาย
+
+
+
+ Import Reference Channels
+ นำเข้าช่องอ้างอิง
+
+
+
+ No file selected!
+ ไม่มีไฟล์ถูกเลือก!
+
+
+
+ Browse
+ เรียกดู
+
+
+
+ Import
+ นำเข้า
+
+
+
+ SpinBoxA
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Statistic
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Avg:
+ ค่าเฉลี่ย:
+
+
+
+
+
+ 0.000
+ 0.000
+
+
+
+ Min:
+ ค่าน้อยสุด:
+
+
+
+ Max:
+ ค่ามากสุด:
+
+
+
+ 1
+ 1
+
+
+
+ Measurement
+ การวัด
+
+
+
+ StatisticsPanel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ ToolLauncher
+
+
+ Scopy
+ Scopy
+
+
+
+ Home
+ หน้าหลัก
+
+
+
+ Save
+ บันทึก
+
+
+
+ Load
+ โหลด
+
+
+
+ Preferences
+ ค่ากำหนด
+
+
+
+ Notes
+ หมายเหตุ
+
+
+
+ Quit
+ ออก
+
+
+
+ ADC Offset
+ ค่าชดเชย ADC
+
+
+
+ ADC Gain
+ อัตราขยาย ADC
+
+
+
+ Reset ADC Calibration
+ ตั้งค่าการสอบเทียบ ADC ใหม่
+
+
+
+ TriggerSettings
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Trigger Settings
+ ตั้งค่าตัวกระตุ้น
+
+
+
+ Trigger mode
+ โหมดตัวกระตุ้น
+
+
+
+ auto
+ อัตโนมัติ
+
+
+
+ normal
+ ปกติ
+
+
+
+
+ Source
+ แหล่งที่มา
+
+
+
+ INTERNAL (ANALOG)
+ ภายใน (อนาล็อก)
+
+
+
+
+ Condition
+ เงื่อนไข
+
+
+
+
+ Rising Edge
+ ขอบขาขึ้น
+
+
+
+
+ Falling Edge
+ ขอบขาลง
+
+
+
+
+ Low
+ ต่ำ
+
+
+
+
+ High
+ สูง
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ คุณสมบัตินี้ไม่รองรับในขณะที่เปิดใช้งานมุมมองสัญญาณผสม!
+
+
+
+ DIGITAL
+ ติจิทัล
+
+
+
+ Any Edge
+ ขอบใดๆ
+
+
+
+ M2K daisychain position
+ ตำแหน่งเชื่อมโยง M2K
+
+
+
+ TRIGGER LOGIC
+ ตรรกะตัวกระตุ้น
+
+
+
+ Analog - Digital
+ อนาล็อก - ดิจิทัล
+
+
+
+ Digital OR Analog
+ Digital OR Analog
+
+
+
+ Digital AND Analog
+ Digital AND Analog
+
+
+
+ Digital XOR Analog
+ Digital XOR Analog
+
+
+
+ !Digital OR Analog
+ !Digital OR Analog
+
+
+
+ !Digital AND Analog
+ !Digital AND Analog
+
+
+
+ !Digital XOR Analog
+ !Digital XOR Analog
+
+
+
+ EXTERNAL TRIGGER OUT
+ ตัวกระตุ้นภายนอก ออก
+
+
+
+ UARTPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Stop
+ หยุด
+
+
+
+ 1
+ 1
+
+
+
+ 2
+ 2
+
+
+
+ 3
+ 3
+
+
+
+ Baud
+ Baudrate
+
+
+
+
+ 9600
+ 9600
+
+
+
+ 1200
+ 1200
+
+
+
+ 2400
+ 2400
+
+
+
+ 4800
+ 4800
+
+
+
+ 14400
+ 14400
+
+
+
+ 19200
+ 19200
+
+
+
+ 28800
+ 28800
+
+
+
+ 38400
+ 38400
+
+
+
+ 57600
+ 57600
+
+
+
+ 115200
+ 115200
+
+
+
+ 230400
+ 230400
+
+
+
+ Parity
+ Parity
+
+
+
+ NONE
+ NONE
+
+
+
+ ODD
+ ODD
+
+
+
+ EVEN
+ EVEN
+
+
+
+ MARK
+ MARK
+
+
+
+ SPACE
+ SPACE
+
+
+
+ Parameters
+ พารามิเตอร์
+
+
+
+ Data to Send
+ ข้อมูลที่ส่ง
+
+
+
+ UserNotePage
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Remove note
+ ลบหมายเหตุ
+
+
+
+ UserNotes
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Save
+ บันทึก
+
+
+
+ File path
+ เส้นทางไฟล์
+
+
+
+ Browse
+ เรียกดู
+
+
+
+ Note name
+ ชื่อหมายเหตุ
+
+
+
+ WalkingPatternUI
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ Walking level
+ ระดับการเดิน
+
+
+
+ 0
+ 0
+
+
+
+
+ 1
+ 1
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ 1000
+ 1000
+
+
+
+ Direction
+ ทิศทาง
+
+
+
+ Right
+ ขวา
+
+
+
+ Left
+ ซ้าย
+
+
+
+ Length
+ ความยาว
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+ ซูม:
+
+
+
+
+ /div
+ /ช่อง
+
+
+
+ Waiting
+ กำลังรอ
+
+
+
+ Triggered
+ กระตุ้นแล้ว
+
+
+
+ Stop
+ หยุด
+
+
+
+ Auto
+ อัตโนมัติ
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ Phase
+ เฟส
+
+
+
+ Duty
+ หน้าที่
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ เชื่อมต่อ
+
+
+
+ Waiting for connection ...
+ รอการเชื่อมต่อ ...
+
+
+
+
+ Context info
+ ข้อมูลบริบท
+
+
+
+ Add
+ เพิ่ม
+
+
+
+ Warning
+ คำเตือน
+
+
+
+ Error: Unable to find host: No such host is known!
+ ข้อผิดพลาด: ไม่พบโฮสต์: ไม่รู้จักโฮสต์ดังกล่าว!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ เปิด
+
+
+
+ off
+ ปิด
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ ตัวจับเวลา
+
+
+
+ Stop
+ หยุด
+
+
+
+ Run
+ ใช้
+
+
+
+ Export
+ นำออก
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ทุกไฟล์ (*)
+
+
+
+ No file selected
+ ไม่มีไฟล์ถูกเลือก
+
+
+
+
+ File is open in another program
+ ไฟล์ถูกเปิดโดยโปรแกรมอื่นอยู่
+
+
+
+
+ Choose a file
+ เลือกไฟล์
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ บันทึกไฟล์
+
+
+
+ JavaScript (*.js)
+ สคริปต์ Java (*.js)
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ หยุด
+
+
+
+ Run
+ ใช้
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ ช่อง
+
+
+
+ Name
+ ชื่อ
+
+
+
+ Export
+ นำออก
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ Open file
+ เปิดไฟล์
+
+
+
+ Import selected channels
+ นำเข้าช่องที่เลือก
+
+
+
+ No file selected
+ ไม่มีไฟล์ถูกเลือก
+
+
+
+ Export
+ นำออก
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ นำเข้า
+
+
+
+ Import all
+ นำเข้าทั้งหมด
+
+
+
+ adiscope::InfoPage
+
+
+ Error: Connection failed!
+ ข้อผิดพลาด: การเชื่อมต่อล้มเหลว!
+
+
+
+ Connected
+ เชื่อมต่อแล้ว
+
+
+
+ Your hardware revision does not support the identify feature
+ การปรับปรุงฮาร์ดแวร์ใหม่ของคุณไม่รองรับคุณลักษณะการระบุตัวตน
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+ M2K
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ ไม่เชื่อมต่อ
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ ตัดการเชื่อมต่ออินพุต/เอาต์พุตแบบอะนาล็อกทุกครั้งก่อนการสอบเทียบ
+
+
+
+ Can't identify this device.
+ ไม่สามารถระบุอุปกรณ์นี้ได้.
+
+
+
+ Can't identify device. Please try to update your firmware!
+ ไม่สามารถระบุอุปกรณ์ได้ โปรดลองอัปเดตเฟิร์มแวร์ของคุณ!
+
+
+
+ Your hardware revision does not support the identify feature
+ การปรับปรุงฮาร์ดแวร์ใหม่ของคุณไม่รองรับคุณลักษณะการระบุตัวตน
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ บันทึกไฟล์
+
+
+
+ ini (*.ini)
+ ini (*.ini)
+
+
+
+
+ °C
+ °C
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+ รหัสประจำตัว
+
+
+
+ Marker
+ เครื่องหมาย
+
+
+
+ Channel
+ ช่อง
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ Magnitude
+ ขนาด
+
+
+
+ Type
+ ชนิด
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ แนวนอน
+
+
+
+
+ Name
+ ชื่อ
+
+
+
+
+ Measure
+ วัด
+
+
+
+
+ Stats
+ สถิติ
+
+
+
+ Vertical
+ แนวตั้ง
+
+
+
+
+ Recover
+ กู้คืน
+
+
+
+
+ Delete All
+ ลบทั้งหมด
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ หยุด
+
+
+
+ Frequency (Hz)
+ ความถี่ (Hz)
+
+
+
+ Magnitude(dB)
+ ขนาด (dB)
+
+
+
+ Phase (°)
+ เฟส (°)
+
+
+
+ Samples count
+ นับตัวอย่าง
+
+
+
+ Samps/decade
+ ตัวอย่าง/decade
+
+
+
+ Step
+ ขั้น
+
+
+
+ Amplitude
+ ความสูง
+
+
+
+ Offset
+ ค่าชดเชย
+
+
+
+ Max. Magnitude
+ ขนาดมากสุด
+
+
+
+ Min. Magnitude
+ ขนาดน้อยสุด
+
+
+
+ Max. Phase
+ เฟสมากสุด
+
+
+
+ Min. Phase
+ เฟสน้อยสุด
+
+
+
+
+ Settling time
+ เวลาการตั้งค่า
+
+
+
+ Before Buffer
+ ก่อนบัฟเฟอร์
+
+
+
+ After Buffer
+ หลังบัฟเฟอร์
+
+
+
+
+ Sample:
+ ตัวอย่าง:
+
+
+
+
+ Current Frequency:
+ ความถี่ปัจจุบัน:
+
+
+
+
+ DC Voltage:
+ แรงดันกระแสตรง:
+
+
+
+
+ Response channel voltage < 50mV!
+ แรงดันไฟฟ้าของช่องตอบสนอง < 50mV!
+
+
+
+
+ Low
+ ต่ำ
+
+
+
+
+ High
+ สูง
+
+
+
+
+ Gain Mode:
+ โหมดขยาย:
+
+
+
+ Transparency
+ ความโปร่งแสง
+
+
+
+ Image
+ รูปภาพ
+
+
+
+ Save to
+ บันทึกไปที่
+
+
+
+ Import
+ นำเข้า
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+ Comma-separated values files (*.csv)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+ All Files(*)
+ ทุกไฟล์ (*)
+
+
+
+ Export
+ นำออก
+
+
+
+ Average:
+ ค่าเฉลี่ย:
+
+
+
+ Running
+ กำลังทำ
+
+
+
+ Stopping...
+ กำลังหยุด...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ ความโปร่งใส
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ ฐานเวลา
+
+
+
+
+ Position
+ ตำแหน่ง
+
+
+
+ Volts/Div
+ โวลต์/ช่อง
+
+
+
+
+ Add Channel
+ เพิ่มช่อง
+
+
+
+
+
+ Export
+ นำออก
+
+
+
+
+ Comma-separated values files (*.csv)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+
+ All Files(*)
+ ทุกไฟล์ (*)
+
+
+
+ Transparency
+ ความโปร่งใส
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "คำเตือน: ฟีเจอร์นี้ไม่รองรับบนเฟิร์มแวร์เวอร์ชันปัจจุบัน!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * เมื่อเปิดใช้งานมุมมองผสมสัญญาณ เครื่องมือวิเคราะห์ตรรกะจะถูกปิดใช้งาน!
+** ตัวกระตุ้นสามารถปิดใช้งานหรือตั้งค่าได้เฉพาะในช่องดิจิทัลหรือช่องอนาล็อกเท่านั้น ไม่สามารถตั้งค่าทั้งสองช่องพร้อมกันได้!
+
+
+
+ Math
+ คณิตศาสตร์
+
+
+
+ Browse
+ เรียกดู
+
+
+
+ No file selected
+ ไม่มีไฟล์ถูกเลือก
+
+
+
+
+ Reference
+ อ้างอิง
+
+
+
+ Logic
+ ตรรกะ
+
+
+
+ Add channel
+ เพิ่มช่อง
+
+
+
+ Import selected channels
+ นำเข้าช่องที่เลือก
+
+
+
+ Enable Mixed Signal View
+ เปิดใช้งานมุมมองผสมสัญญาณ
+
+
+
+ Import
+ นำเข้า
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+
+ Snapshot
+ ภาพรวม
+
+
+
+ Filter 1 - Enable -
+ ตัวกรอง 1 - เปิดใช้งาน -
+
+
+
+ Filter 2 - Enable -
+ ตัวกรอง 2 - เปิดใช้งาน -
+
+
+
+
+ Save
+ บันทึก
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+ mVolts
+
+
+
+
+ Volts
+ Volts
+
+
+
+
+ Value
+ ค่า
+
+
+
+
+ Disable
+ ปิดการใช้งาน
+
+
+
+
+ Enable
+ เปิดการใช้งาน
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ การเปลี่ยนแปลงนี้จะมีผลหลังจากตั้งค่า Scopy ใหม่เท่านั้น.
+
+
+
+ By resetting scopy you will lose the current configuration!
+ การตั้งค่า Scopy ใหม่จะทำให้การกำหนดค่าปัจจุบันหายไป!
+
+
+
+ Do you want to reset?
+ คุณต้องการตั้งค่าใหม่ไหม?
+
+
+
+ Load language
+ โหลดภาษา
+
+
+
+ Language files (*.qm)
+ ไฟล์ภาษา (*.qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ เอกสาร
+
+
+
+ Image
+ รูปภาพ
+
+
+
+ Export File Name
+ ชื่อไฟล์นำออก
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ อัตราส่วนตัวอย่าง
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ ใช้
+
+
+
+
+
+ Single
+ ครั้งเดียว
+
+
+
+
+
+
+
+ Stop
+ หยุด
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ ความถี่
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+ deg
+
+
+
+ π rad
+ π rad
+
+
+
+
+
+
+
+ ns
+ nSec
+
+
+
+
+
+
+
+ μs
+ μSec
+
+
+
+
+
+
+
+ ms
+ mSec
+
+
+
+
+
+
+
+ s
+ Sec
+
+
+
+
+
+ Phase
+ เฟส
+
+
+
+ μVolts p-p
+ μVolts p-p
+
+
+
+ mVolts p-p
+ mVolts p-p
+
+
+
+ Volts p-p
+ Volts p-p
+
+
+
+
+
+ Amplitude
+ ความสูง
+
+
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+
+
+
+ mVolts
+ mVolts
+
+
+
+
+
+
+
+ Volts
+ Volts
+
+
+
+
+ Offset
+ ค่าชดเชย
+
+
+
+ mHz
+ mHz
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency
+ ความถี่
+
+
+
+ Rising
+ ขาขึ้น
+
+
+
+ Falling
+ ขาลง
+
+
+
+ Rise Time
+ เวลาขึ้น
+
+
+
+ Fall Time
+ เวลาลง
+
+
+
+ High Time
+ เวลาสูง
+
+
+
+ Low Time
+ เวลาต่ำ
+
+
+
+
+ SampleRate
+ อัตราส่วนตัวอย่าง
+
+
+
+ Record Length
+ ความยาวการบันทึก
+
+
+
+ Value
+ ค่า
+
+
+
+ Duty Cycle
+ รอบการทำงาน
+
+
+
+
+
+ samples
+ ตัวอย่าง
+
+
+
+ Open File
+ เปิดไฟล์
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt);;ไฟล์เสียงแบบรูปคลื่น (*.wav);;ไฟล์ Matlab (*.mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ แรงดัน (V)
+
+
+
+ Time (s)
+ เวลา (Sec)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ นำออก
+
+
+
+ dBFS
+ dBFS
+
+
+
+ dBV
+ dBV
+
+
+
+ dBu
+ dBu
+
+
+
+ Vpeak
+ Vpeak
+
+
+
+ Vrms
+ Vrms
+
+
+
+ V/√Hz
+ V/√Hz
+
+
+
+ Sample
+ ตัวอย่าง
+
+
+
+ Peak Hold
+ สูงสุด คงไว้
+
+
+
+ Peak Hold Continous
+ สูงสุด คงไว้ต่อเนื่อง
+
+
+
+ Min Hold
+ ต่ำสุด คงไว้
+
+
+
+ Min Hold Continous
+ ต่ำสุด คงไว้ต่อเนื่อง
+
+
+
+ Linear RMS
+ เชิงเส้น RMS
+
+
+
+ Linear dB
+ เชิงเส้น dB
+
+
+
+ Exponential RMS
+ เอกซ์โพเนนเชียล RMS
+
+
+
+ Exponential dB
+ เอกซ์โพเนนเชียล dB
+
+
+
+ Flat top
+ ด้านบนแบน
+
+
+
+ Rectangular
+ สี่เหลี่ยม
+
+
+
+ Triangular (Bartlett)
+ สามเหลี่ยม (บาร์ตเลตต์)
+
+
+
+ Hamming
+ Hamming
+
+
+
+ Hann
+ Hann
+
+
+
+ Blackman-Harris
+ Blackman-Harris
+
+
+
+ Kaiser
+ Kaiser
+
+
+
+ Manual
+ ปรับด้วยมือ
+
+
+
+ Peak
+ จุดสูงสุด
+
+
+
+ Delta
+ ความต่าง
+
+
+
+ Fixed
+ อยู่กับที่
+
+
+
+ Scale/Div
+ มาตราส่วน/ช่อง
+
+
+
+
+ Top
+ บน
+
+
+
+
+ Bottom
+ ล่าง
+
+
+
+ Hz
+ Hz
+
+
+
+ kHz
+ kHz
+
+
+
+ MHz
+ MHz
+
+
+
+ Frequency Position
+ ตำแหน่งความถี่
+
+
+
+
+ Comma-separated values files (*.csv)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+
+ All Files(*)
+ ทุกไฟล์ (*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv);;ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+ Snapshot
+ ภาพรวม
+
+
+
+ Sample:
+ ตัวอย่าง:
+
+
+
+ Average Sample:
+ ค่าเฉลี่ยตัวอย่าง:
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ เริ่ม
+
+
+
+ Stop
+ หยุด
+
+
+
+ Center
+ ตรงกลาง
+
+
+
+ Span
+ ช่วง
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ ค่ากำหนด
+
+
+
+ Calibration skipped because already calibrated.
+ ข้ามการสอบเทียบเนื่องจากได้รับการปรับเทียบแล้ว.
+
+
+
+ Calibrated
+ สอบเทียบแล้ว
+
+
+
+ Save session
+ บันทึกรายการ
+
+
+
+
+ Scopy-Files (*.ini)
+ ไฟล์ Scopy (*.ini)
+
+
+
+ Load session
+ โหลดรายการ
+
+
+
+ Click to open the home menu
+ คลิกเพื่อเปิดเมนูหลัก
+
+
+
+ Click to disconnect the device
+ คลิกเพื่อยกเลิกการเชื่อมต่ออุปกรณ์
+
+
+
+ Click to save the current session
+ คลิกเพื่อบันทึกรายการปัจจุบัน
+
+
+
+
+ Click to load a session
+ คลิกเพื่อโหลดรายการ
+
+
+
+
+ Select a device first
+ เลือกอุปกรณ์ก่อน
+
+
+
+
+
+ Click to connect the device
+ คลิกเพื่อเชื่อมต่ออุปกรณ์
+
+
+
+ Report a bug!
+ รายงานข้อพกพร่อง!
+
+
+
+ Connecting...
+ กำลังเชื่อมต่อ...
+
+
+
+ Disconnecting...
+ กำลังยกเลิกการเชื่อมต่อ...
+
+
+
+ Connect
+ เชื่อมต่อ
+
+
+
+ Calibrating...
+ กำลังสอบเทียบ...
+
+
+
+ Calibration Failed
+ การสอบเทียบล้มเหลว
+
+
+
+
+ Disconnect
+ ยกเลิกการเชื่อมต่อ
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ การสนับสนุนตัวถอดรหัสดิจิทัลถูกปิดใช้งาน คุณสมบัติบางอย่างอาจขาดหายไป
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ มีปัญหาในการเริ่มต้น libsigrokdecode คุณสมบัติบางอย่างอาจขาดหายไป
+
+
+
+ Calibrating
+ กำลังสอบเทียบ
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ ออสซิลโลสโคป
+
+
+
+ Spectrum Analyzer
+ ตัววิเคราะห์แถบความถี่
+
+
+
+ Network Analyzer
+ ตัววิเคราะห์เครือข่าย
+
+
+
+ Signal Generator
+ ตัวกำเนิดสัญญาณ
+
+
+
+ Logic Analyzer
+ ตัววิเคราะห์ตรรกะ
+
+
+
+ Pattern Generator
+ ตัวกำเนิดรูปแบบ
+
+
+
+ Digital IO
+ อินพุท/เอาท์พุทแบบติจิทัล
+
+
+
+ Voltmeter
+ โวลต์มิเตอร์
+
+
+
+ Power Supply
+ แหล่งจ่ายไฟ
+
+
+
+ Debugger
+ ตัวแก้ไขข้อบกพร่อง
+
+
+
+ Calibration
+ การสอบเทียบ
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ กำลังสอบเทียบ...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ ตัวกระตุ้นที่ส่งมา เข้า
+
+
+
+ Oscilloscope
+ ออสซิลโลสโคป
+
+
+
+
+ Logic Analyzer
+ ตัววิเคราะห์ตรรกะ
+
+
+
+
+ μVolts
+ μVolts
+
+
+
+
+ mVolts
+ mVolts
+
+
+
+
+ Volts
+ Volts
+
+
+
+ Level
+ ระดับ
+
+
+
+ Hysteresis
+ Hysteresis
+
+
+
+ External Trigger In
+ ตัวกระตุ้นภายนอก เข้า
+
+
+
+ None
+ ไม่มี
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ หมายเหตุ
+
+
+
+ Invalid or empty file!
+ ไฟล์ไม่ถูกต้องหรือว่างเปล่า!
+
+
+
+ Path:
+ เส้นทาง:
+
+
+
+ Warning: The file is empty!
+ คำเตือน: ไฟล์ว่างเปล่า!
+
+
+
+ Warning: The path is invalid!
+ คำเตือน: ไฟล์ไม่ถูกต้อง!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ อัตราส่วนตัวอย่าง
+
+
+
+ Nr of samples
+ จำนวนตัวอย่าง
+
+
+
+ Delay
+ เวลาหน่วง
+
+
+
+ Transparency
+ ความโปร่งใส
+
+
+
+ Select a decoder to add
+ เลือกตัวถอดรหัสที่จะเพิ่ม
+
+
+
+ External Trigger In
+ ตัวถอดรหัสภายนอก เข้า
+
+
+
+ Oscilloscope
+ ออสซิลโลสโคป
+
+
+
+ Comma-separated values files (*.csv)
+ ไฟล์ค่าที่แยกด้วยจุลภาค (*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ ไฟล์ค่าที่จำกัดจำนวนด้วยแท็บ (*.txt)
+
+
+
+ Value Change Dump(*.vcd)
+ ถ่ายโอนค่าที่เปลี่ยนแปลง (*.vcd)
+
+
+
+ All Files(*)
+ ทุกไฟล์ (*)
+
+
+
+ Export
+ นำออก
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+ ปรับการตั้งค่าการสืบค้น %1 ส่งผลให้ %2
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+ ปรับการตั้งค่าการสืบค้น %1 ส่งผลให้ %2
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+ ปรับการตั้งค่าการสืบค้น %1 ส่งผลให้ %2
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ ปรับการตั้งค่าการสืบค้น %1 ส่งผลให้ %2
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ ปรับการตั้งค่าการสืบค้น %1 ส่งผลให้ %2
+
+
+
+ dioChannel
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+
+ 0
+ 0
+
+
+
+ in
+ เข้า
+
+
+
+ out
+ ออก
+
+
+
+ 1
+ 1
+
+
+
+ dioElement
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ 0 - 7
+ 0 - 7
+
+
+
+ Individual
+ รายบุคคล
+
+
+
+ Group
+ กลุ่ม
+
+
+
+ in
+ เข้า
+
+
+
+ out
+ ออก
+
+
+
+ 127
+ 127
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+ แบบฟอร์ม
+
+
+
+ PulseScript
+ สคริปต์พัลส์
+
+
+
+ NumberOfPulses
+ จำนวนพัลส์
+
+
+
+ Samples/Pulse
+ จำนวนตัวอย่าง/พัลส์
+
+
+
+ Hi
+ สูง
+
+
+
+ Lo
+ ต่ำ
+
+
+
+ Frequency:
+ ความถี่:
+
+
+
+ PushButton
+ กดปุ่ม
+
+
+
+ INVALID
+ ไม่ถูกต้อง
+
+
+
diff --git a/resources/translations/scopy_tw.ts b/resources/translations/scopy_tw.ts
new file mode 100644
index 0000000000..2647dad0ed
--- /dev/null
+++ b/resources/translations/scopy_tw.ts
@@ -0,0 +1,6191 @@
+
+
+
+
+ BaseMenu
+
+
+ Form
+ 表格
+
+
+
+ BaseMenuItem
+
+
+ Form
+ 表格
+
+
+
+ BinaryCounterPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Init Value
+ 初始值
+
+
+
+
+ 0
+
+
+
+
+ Frequency
+ 頻率
+
+
+
+ 1000
+
+
+
+
+ Start counter
+ 起始值
+
+
+
+ End counter
+ 終止值
+
+
+
+ 65535
+
+
+
+
+ Increment
+ 增量
+
+
+
+ 1
+
+
+
+
+ BitfieldWidget
+
+
+ Form
+ 表格
+
+
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ 0x
+
+
+
+
+ CalibrationTemplate
+
+
+ Form
+ 表格
+
+
+
+ Calibration info here
+ 此處查看校正信息
+
+
+
+ Set
+ 設定
+
+
+
+ Measured
+ 測量
+
+
+
+ Enter value here
+ 請輸入參數
+
+
+
+ Restart
+ 重啟
+
+
+
+ Next
+ 下一步
+
+
+
+ Finish
+ 完成
+
+
+
+ Channel
+
+
+ Form
+ 表格
+
+
+
+ Channel
+ 通道
+
+
+
+ ChannelSettings
+
+
+ Form
+ 表格
+
+
+
+ Channel
+ 通道
+
+
+
+ MATH
+ 公式
+
+
+
+ Edit Function
+ 編輯函數
+
+
+
+ HORIZONTAL
+ 水平
+
+
+
+ VERTICAL
+ 垂直
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ CH Thickness
+ 通道顯示線寬
+
+
+
+ 0.5
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Memory depth
+ 記憶深度
+
+
+
+ Probe
+Attenuation
+ 探頭衰減
+
+
+
+ 0.1X
+
+
+
+
+ 1X
+
+
+
+
+ 10X
+
+
+
+
+ 100X
+
+
+
+
+ Software
+AC Coupling
+ 軟體AC耦合
+
+
+
+ Curve Style
+ 曲線樣式
+
+
+
+ Lines
+ 線
+
+
+
+ Dots
+ 點狀
+
+
+
+ Steps
+ 階梯
+
+
+
+ Sticks
+ 桿狀
+
+
+
+ Smooth
+ 平滑
+
+
+ Software AC Coupling
+ 軟體交流耦合
+
+
+
+ Filter 1 - Enabled
+ 過濾器1-已開啟
+
+
+
+
+ TC
+
+
+
+
+
+ Gain
+ 增益
+
+
+
+
+ 0
+
+
+
+
+ Filter 2 - Enabled
+ 過濾器2-已開啟
+
+
+
+ Autoset
+ 自動設定
+
+
+
+ Snapshot
+ 快照
+
+
+
+ Connect
+
+
+ Form
+ 表格
+
+
+ Hostname
+ 主機名稱
+
+
+
+ URI (Hostname)
+ URI(主機名稱)
+
+
+
+ Connect
+ 連接
+
+
+
+ Context info
+ 環境信息
+
+
+
+ ConstantPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Constant
+ 常數
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ CursorReadouts
+
+
+ Form
+ 表格
+
+
+
+ Δt =
+
+
+
+
+
+ 0.000ms
+
+
+
+
+ CurT2 =
+
+
+
+
+ 1/Δt =
+
+
+
+
+ - 000.000 ms
+
+
+
+
+ - 000.000 mHz
+
+
+
+
+ CurT1 =
+
+
+
+
+ CurV2
+
+
+
+
+ ΔV
+
+
+
+
+ CurV1
+
+
+
+
+
+ 000.000 mV
+
+
+
+
+ - 000.000 mV
+
+
+
+
+
+
+ =
+
+
+
+
+ CursorsSettings
+
+
+ Form
+ 表格
+
+
+
+ Cursors
+ 遊標
+
+
+
+ Normal
+ 普通
+
+
+
+ Track
+ 跟蹤
+
+
+
+ 0
+
+
+
+
+ HORIZONTAL
+ 水平
+
+
+
+ VERTICAL
+ 垂直
+
+
+
+ CURSOR READOUTS
+ 遊標讀數
+
+
+
+ Transparency 0%
+ 透明度 0%
+
+
+
+ Position
+ 位置
+
+
+
+ CustomPlotPositionButton
+
+
+ Form
+ 表格
+
+
+
+ DMM
+
+
+
+ MAX
+ 最大值
+
+
+
+
+ MIN
+ 最小值
+
+
+
+
+ VDC
+
+
+
+
+ Run
+ 運行
+
+
+
+ Channel 1
+ 通道1
+
+
+
+
+ DC (Direct Current)
+ DC(直流)
+
+
+
+
+ AC (20 Hz - 40 kHz)
+
+
+
+
+
+ 1s
+
+
+
+
+
+ 10s
+
+
+
+
+
+ 60s
+
+
+
+
+
+ History
+ 歷史記錄
+
+
+
+
+ Line thickness
+ 線寬
+
+
+
+
+ 0.5
+
+
+
+
+
+ 1
+
+
+
+
+
+ 1.5
+
+
+
+
+
+ 2
+
+
+
+
+
+ 2.5
+
+
+
+
+
+ 3
+
+
+
+
+
+ 3.5
+
+
+
+
+
+ 4
+
+
+
+
+
+ 4.5
+
+
+
+
+
+ 5
+
+
+
+
+ Channel 2
+ 通道2
+
+
+
+ PEAK HOLD
+ 峰值保持
+
+
+
+ Reset
+ 覆位
+
+
+
+ DATA LOGGING
+ 數據記錄
+
+
+
+ Browse
+ 瀏覽
+
+
+
+ Append
+ 疊加
+
+
+
+ Choose a file
+ 選擇一個檔案
+
+
+
+ Overwrite
+ 覆蓋
+
+
+
+ DbClickButtons
+
+
+ Form
+ 表格
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ Debugger
+
+
+ MainWindow
+ 主界面
+
+
+
+ SCRIPTING ENGINE
+ 腳本引擎
+
+
+
+ Load Script
+ 載入腳本
+
+
+
+ Run
+ 運行
+
+
+
+ Filename
+ 檔案名
+
+
+
+
+ Read
+ 讀取
+
+
+
+ Device
+ 裝置
+
+
+
+ New Window
+ 新建窗口
+
+
+
+
+ Write
+ 寫入
+
+
+
+
+ Value:
+ 值:
+
+
+
+ DEVICE SELECTION
+ 裝置選擇
+
+
+
+ Detailed Register Map
+ 暫存器映射詳解
+
+
+
+ Address:
+ 地址:
+
+
+
+ 0x0000
+
+
+
+
+ Display mode:
+ 顯示模式:
+
+
+
+ <value>
+ <值>
+
+
+
+
+ 0x
+
+
+
+
+ Description:
+ 描述:
+
+
+
+ Default Value:
+ 默認值:
+
+
+
+ Source:
+ 資料來源:
+
+
+
+ Enable AutoRead
+ 開啟自動讀取
+
+
+
+ REGISTER MAP SETTINGS
+ 暫存器映射設定
+
+
+
+ DetachDragZone
+
+
+ Form
+ 表格
+
+
+
+ Drag here to detach!
+ 拖放到此處拆分!
+
+
+
+ Device
+
+
+ Form
+ 表格
+
+
+
+ DigitalIO
+
+
+ Form
+ 表格
+
+
+
+ Run
+ 運行
+
+
+
+ DigitalIoMenu
+
+
+ Form
+ 表格
+
+
+
+ PollingRate
+
+
+
+
+ 1000
+
+
+
+
+ Enable Outputs
+ 開啟輸出
+
+
+
+ DigitalTriggerSettings
+
+
+ Form
+ 表格
+
+
+
+ Trigger Settings
+ 觸發設定
+
+
+
+ Trigger mode
+ 觸發模式
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ 普通
+
+
+
+ Trigger Logic
+ 觸發邏輯
+
+
+
+ OR
+ 或
+
+
+
+ AND
+ 且
+
+
+
+ EXTERNAL TRIGGER
+ 外部觸發
+
+
+
+ Source
+ 源
+
+
+
+ Condition
+ 觸發條件
+
+
+
+ None
+
+
+
+
+ EXTERNAL TRIGGER OUT
+ 退出外部觸發
+
+
+
+ DragZone
+
+
+ Form
+ 表格
+
+
+
+ EmptyPatternUI
+
+
+ Form
+ 表格
+
+
+
+ ExportSettings
+
+
+ Form
+ 表格
+
+
+
+ EXPORT
+ 匯出
+
+
+
+ Export All
+ 全部匯出
+
+
+
+ Export
+ 匯出
+
+
+
+ FrequencyPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Frequency
+ 頻率
+
+
+
+ 1000
+
+
+
+
+ GenericJSPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Script status
+ 腳本狀態
+
+
+
+ Clear console
+ 清除控制台
+
+
+
+ HomepageControls
+
+
+ Form
+ 表格
+
+
+
+ I2CPatternUI
+
+
+ Form
+ 表格
+
+
+
+ R
+
+
+
+
+ W
+
+
+
+
+ Read/Write
+ 讀/寫
+
+
+
+ MSB First
+ 最高有效位優先
+
+
+
+ Address
+ 地址
+
+
+
+ Inter frame space
+ 幀間空間
+
+
+
+ Data
+ 數據
+
+
+
+ InfoPage
+
+
+ Form
+ 表格
+
+
+
+ Forget device
+ 忘記裝置
+
+
+
+ Identify
+ 識別
+
+
+
+ Connect
+ 連接
+
+
+
+ Calibrate
+ 校正
+
+
+
+ InfoWidget
+
+
+ Form
+ 表格
+
+
+
+ Move
+ 移動
+
+
+
+ InstrumentNotes
+
+
+ Form
+ 表格
+
+
+
+ Notes
+ 注釋
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+
+
+ Insert notes here
+ 在這里新增注釋
+
+
+
+ LAChannelGroup
+
+
+ Form
+ 表格
+
+
+
+ DIO
+ 通道
+
+
+
+
+ 12
+
+
+
+
+ None
+
+
+
+
+ LAChannelManager
+
+
+ Form
+ 表格
+
+
+
+ LAManagerHeader
+
+
+ Form
+ 表格
+
+
+
+ View
+ 查看
+
+
+
+ Name
+ 名稱
+
+
+
+ DIO
+ 通道
+
+
+
+ Trigger
+ 觸發器
+
+
+
+ Select
+ 選擇
+
+
+
+ LARequiredChannel
+
+
+ Form
+ 表格
+
+
+
+ Settings
+ 設定
+
+
+
+
+ Role
+ 角色
+
+
+
+ LASettingsWidget
+
+
+ Form
+ 表格
+
+
+
+ REQUIRED
+ 必填
+
+
+
+ OPTIONAL
+ 選填
+
+
+
+ OPTIONS
+ 選項
+
+
+
+ LChannelSettings
+
+
+ Form
+ 表格
+
+
+
+ BG Color
+ 背景顏色
+
+
+
+ Edge Color
+ 邊界顏色
+
+
+
+ Low Color
+ 低電位顏色
+
+
+
+ High Color
+ 高電位顏色
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ COLOR SETTINGS
+ 顏色設定
+
+
+
+ Name
+ 名稱
+
+
+
+ Thickness
+ 線寬
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ LFSRPatternUI
+
+
+ Form
+ 表格
+
+
+
+
+ 0x0001
+
+
+
+
+ Generator Polynomial
+ 生成多項式
+
+
+
+ Start State
+ 啟始狀態
+
+
+
+ Period
+ 周期
+
+
+
+ LogicAnalyzer
+
+
+ Scopy Logic Analyzer
+ Scopy邏輯分析儀
+
+
+
+ Group
+ 組
+
+
+
+
+ Channel Settings
+ 通道設定
+
+
+
+
+ -
+
+
+
+
+ Name
+ 名稱
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ 跟蹤高度
+
+
+
+ GROUP
+ 組
+
+
+
+ Stack Decoder:
+ 堆棧解碼器:
+
+
+
+ Trigger Settings
+ 觸發設定
+
+
+
+ Trigger mode
+ 觸發模式
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ 普通
+
+
+
+ Trigger Logic
+ 觸發邏輯
+
+
+
+ EXTERNAL TRIGGER
+ 外部觸發
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "警告:當前韌體版本不支持此功能!"警告:當前韌體版本不支持此功能!"
+
+
+
+ Source
+ 源
+
+
+
+ Condition
+ 觸發條件
+
+
+
+ General Settings
+ 通用設定
+
+
+
+ OneShot
+ 單次
+
+
+
+ AVAILABLE CHANNELS
+ 可以獲取的通道
+
+
+
+ DECODERS
+ 解碼器
+
+
+
+ Close
+ 關閉
+
+
+ Hide inactive
+ 隱藏非活動
+
+
+ Group with selected
+ 將已選擇通道合並為組
+
+
+
+ Print
+ 列印
+
+
+ Run
+ 運行
+
+
+ Single
+ 單次運行
+
+
+ Settings
+ 設定
+
+
+ Run Mode
+ 運行模式
+
+
+ Repeated
+ 重覆觸發
+
+
+
+ Stream
+ 數據流
+
+
+ Reset Instrument
+ 覆位儀器
+
+
+
+ Cursors
+ 遊標
+
+
+
+
+ Trigger
+ 觸發
+
+
+
+ ManualCalibration
+
+
+ Form
+ 表格
+
+
+
+ Load Calibration
+ 載入校正
+
+
+
+ Save Calibration
+ 儲存校正
+
+
+
+ Run automatic
+ 自動運行
+
+
+
+ MarkerTable
+
+
+ Form
+ 表格
+
+
+
+ Math
+
+
+ Form
+ 表格
+
+
+
+ f(t) =
+
+
+
+
+ cos
+
+
+
+
+ 2
+
+
+
+
+ 7
+
+
+
+
+ ,
+
+
+
+
+ 3
+
+
+
+
+ ←
+
+
+
+
+ (
+
+
+
+
+ exp
+
+
+
+
+ 1
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ /
+
+
+
+
+ *
+
+
+
+
+ e
+
+
+
+
+ C
+
+
+
+
+ 0
+
+
+
+
+ 6
+
+
+
+
+ )
+
+
+
+
+ log
+
+
+
+
+ t
+
+
+
+
+ +
+
+
+
+
+ 9
+
+
+
+
+ tan
+
+
+
+
+ ^
+
+
+
+
+ 4
+
+
+
+
+ Apply
+ 啟用
+
+
+
+ pi
+
+
+
+
+ 5
+
+
+
+
+ sin
+
+
+
+
+ MathPanel
+
+
+ Form
+ 表格
+
+
+
+ Add channel
+ 新增通道
+
+
+
+ MeasureSettings
+
+
+ Form
+ 表格
+
+
+
+ Measure
+ 測量
+
+
+
+ Channel
+ 通道
+
+
+
+ MEASUREMENTS
+ 測量
+
+
+
+ Counter
+ 計數器
+
+
+
+ Display All
+ 全部顯示
+
+
+
+
+ Delete All
+ 全部刪除
+
+
+
+ STATISTICS
+ 統計
+
+
+
+ Reset
+ 覆位
+
+
+
+ CUSTOM SELECTION
+ 自定義選擇
+
+
+
+ Enable
+ 開啟
+
+
+
+ GATING SETTINGS
+ 門設定
+
+
+
+ MeasurementsPanel
+
+
+ Form
+ 表格
+
+
+
+ NetworkAnalyzer
+
+
+ Print
+ 列印
+
+
+
+ Current Frequency:
+ 電流頻率:
+
+
+
+ Sample:
+ 取樣:
+
+
+
+ Average:
+ 平均值:
+
+
+
+ Phase (°)
+ 相位(°)
+
+
+
+ Magnitude (dB)
+ 幅度(dB)
+
+
+
+ °
+
+
+
+
+ 10
+
+
+
+
+ Settings
+ 設定
+
+
+ REFERENCE
+ 參考
+
+
+
+
+ REFERENCE
+ 參考
+
+
+
+ Channel 1
+ 通道 1
+
+
+
+ Channel 2
+ 通道 2
+
+
+
+ 0
+
+
+
+
+ Gain Mode
+ 增益模式
+
+
+
+ Automatic
+ 自動
+
+
+
+ Low
+ 低電位
+
+
+
+ High
+ 高電位
+
+
+
+ RESPONSE
+ 響應
+
+
+
+ DC Filtering
+ 直流濾波
+
+
+
+
+ On
+ 開
+
+
+
+
+ Off
+ 關
+
+
+
+ SWEEP
+ 掃描
+
+
+
+ Logarithmic
+ 對數
+
+
+
+ Linear
+ 線性
+
+
+
+ Average
+ 平均值
+
+
+
+
+ Apply
+ 啟用
+
+
+
+ Periods
+ 周期
+
+
+
+ DISPLAY
+ 顯示
+
+
+
+ Delta Label
+ Delta標簽
+
+
+
+ BUFFER PREVIEWER
+ 緩衝預覽
+
+
+
+ ViewInOsc
+ 在示波器中查看
+
+
+
+ Previous
+ 上一步
+
+
+
+ Next
+ 下一步
+
+
+
+ General Settings
+ 通用設定
+
+
+
+ PLOT
+ 繪圖
+
+
+
+ Type
+ 類型
+
+
+
+ Bode
+
+
+
+
+ Nyquist
+
+
+
+
+ Nichols
+
+
+
+
+ Line thickness
+ 線寬
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ EXPORT
+ 匯出
+
+
+
+ Export
+ 匯出
+
+
+
+ Import
+ 匯入
+
+
+
+ Snapshot
+ 快照
+
+
+
+ Remove Reference
+ 移除參考
+
+
+
+ Cursors
+ 遊標
+
+
+
+ CURSOR READOUTS
+ 遊標讀數
+
+
+
+ Transparency 0%
+ 透明度 0%
+
+
+
+ Position
+ 位置
+
+
+
+ Cursors
+ 遊標
+
+
+
+ NetworkAnalyzerBufferViewer
+
+
+ Form
+ 表格
+
+
+
+ Note
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ NumberPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Number
+ 數
+
+
+
+ OscGeneralSettings
+
+
+ GeneralSettings
+ 通用設定
+
+
+
+ General settings
+ 通用設定
+
+
+
+ VIEWS
+ 視圖
+
+
+
+ FFT
+
+
+
+
+ X-Y
+
+
+
+
+ Histogram
+ 直方圖
+
+
+
+ X-Y
+
+
+
+
+ Y-Axis
+ Y-軸
+
+
+
+ X-Axis
+ X-軸
+
+
+
+ dots
+ 點
+
+
+
+ lines
+ 線
+
+
+
+ X-Y Line thickness
+ X-Y 線寬
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+ 5
+
+
+
+
+ 6
+
+
+
+
+ 7
+
+
+
+
+ 8
+
+
+
+
+ 9
+
+
+
+
+ 10
+
+
+
+
+ Oscilloscope
+
+
+ Scopy Oscilloscope
+ Scopy示波器
+
+
+
+ Print
+ 列印
+
+
+
+ Cursors
+ 遊標
+
+
+
+ Measure
+ 測量
+
+
+
+ Trigger
+ 觸發
+
+
+
+ Close
+ 關閉
+
+
+
+ PGCGSettings
+
+
+ Form
+ 表格
+
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ Pattern
+ 模式碼
+
+
+
+ Output
+ 輸出
+
+
+
+ PP
+
+
+
+
+ OD
+
+
+
+
+ CLOCK
+ 時鐘
+
+
+
+ SETTINGS
+ 設定
+
+
+
+ Name
+ 名稱
+
+
+
+ Thickness
+ 線寬
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ COLOR SETTINGS
+ 顏色設定
+
+
+
+ BG Color
+ 背景顏色
+
+
+
+ Edge Color
+ 邊界顏色
+
+
+
+ Low Color
+ 低電位顏色
+
+
+
+ High Color
+ 高電位顏色
+
+
+
+ PGChannel
+
+
+ Form
+ 表格
+
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ PGChannelGroup
+
+
+ Form
+ 表格
+
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ 12
+
+
+
+
+ PGChannelManager
+
+
+ Form
+ 表格
+
+
+
+ PGChannelManagerHeader
+
+
+ Form
+ 表格
+
+
+
+ Enable
+ 開啟
+
+
+
+ Name
+ 名稱
+
+
+
+ DIO
+ 通道
+
+
+
+ Select
+ 選擇
+
+
+
+ PGSettings
+
+
+ Form
+ 表格
+
+
+
+ Settings
+ 設定
+
+
+
+ Autoset
+ 自動設定
+
+
+
+ Sample Rate
+ 取樣率
+
+
+
+ Buffer Size
+ 緩衝區大小
+
+
+
+ ExternalClock
+ 外部時鐘
+
+
+
+ External Clock Frequency
+ 外部時鐘頻率
+
+
+
+ Reset Instrument
+ 覆位儀器
+
+
+
+ PatternGenerator
+
+
+ Scopy Pattern Generator
+ Scopy模式產生器
+
+
+
+ Print
+ 列印
+
+
+
+ Group
+ 組
+
+
+
+
+ Channel Settings
+ 通道設定
+
+
+
+ 1
+
+
+
+
+ Trace Height
+ 跟蹤高度
+
+
+
+ Name
+ 名稱
+
+
+
+ Open-Drain
+ 開漏
+
+
+
+ Push-Pull
+ 推挽
+
+
+
+ GROUP
+ 組
+
+
+
+ Pattern
+ 模式碼
+
+
+
+ Trigger Settings
+ 觸發設定
+
+
+
+ Trigger mode
+ 觸發模式
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ 普通
+
+
+
+ Trigger Logic
+ 觸發邏輯
+
+
+
+ EXTERNAL TRIGGER
+ 外部觸發
+
+
+
+ Source
+ 源
+
+
+
+ Condition
+ 觸發條件
+
+
+
+ -
+
+
+
+
+ General Settings
+ 通用設定
+
+
+
+ AVAILABLE CHANNELS
+ 可以獲取的通道
+
+
+
+ Cursors
+ 遊標
+
+
+
+ Trigger
+ 觸發器
+
+
+
+ Close
+ 關閉
+
+
+ Hide inactive
+ 隱藏非活動
+
+
+ Group with selected
+ 將已選擇通道合並為組
+
+
+ Run
+ 運行
+
+
+ Single
+ 單次運行
+
+
+ TextLabel
+ 文字標籤
+
+
+
+ PowerController
+
+
+ Scopy Power Control
+ Scopy電源控制
+
+
+
+
+ Set
+ 設定
+
+
+
+
+ Measure
+ 測量
+
+
+
+
+
+
+ VDC
+
+
+
+
+ Tracking ratio control
+ 跟蹤比率控制
+
+
+
+ Independent
+ 獨立模式
+
+
+
+ Tracking
+ 跟蹤模式
+
+
+
+ 100
+
+
+
+
+ %
+
+
+
+
+ Positive output
+ 輸出正電壓
+
+
+
+
+ Enable
+ 開啟
+
+
+
+ Negative output
+ 輸出負電壓
+
+
+
+ Preferences
+
+
+ Form
+ 表格
+
+
+
+ GENERAL
+ 通用
+
+
+
+ OSCILLOSCOPE
+ 示波器
+
+
+
+ Enable labels on the plot
+ 開啟圖上的標簽
+
+
+
+ Enable graticule
+ 開啟方格圖
+
+
+ Enable oscilloscope filters
+ 開啟示波器濾波器
+
+
+
+ Enable mini histogram
+ 開啟微型直方圖
+
+
+
+ Language (requires app restart)
+ 語言(要求重啟應用程序)
+
+
+
+ Restart the application for changes to take effect
+ 重啟應用程序,使更改生效
+
+
+
+ Attempt temperature-based calibration (EXPERIMENTAL)
+ 嘗試基於溫度的校正(實驗)
+
+
+
+ Enable animations
+ 開啟動畫
+
+
+
+ 1
+
+
+
+
+ Run external scripts (Experimental)
+ 運行外部腳本(試驗性)
+
+
+
+ SPECTRUM ANALYZER
+ 頻譜分析儀
+
+
+
+ Only search marker peaks in visible domain
+ 只在可見域搜索標記峰值
+
+
+
+ Enable all instrument notes
+ 開啟所有儀器注釋
+
+
+
+ Double click to detach a tool
+ 雙擊以分離工具
+
+
+
+ Save session when closing Scopy
+ 關閉Scopy時儲存會話
+
+
+
+ NETWORK ANALYZER
+ 網絡分析儀
+
+
+
+ Always display 0db value on graph
+ 始終在圖上顯示0db值
+
+
+ Enable user notes
+ 開啟用戶筆記
+
+
+
+ Scriptable manual calibration
+ 可編寫腳本的手動校正
+
+
+
+ Show advanced device information
+ 顯示詳細裝置的信息
+
+
+
+ LOGIC ANALYZER
+ 邏輯分析儀
+
+
+
+ Display sampling points when zoomed
+ 縮放時顯示取樣點
+
+
+
+ SIGNAL GENERATOR
+ 信號產生器
+
+
+
+ Number of displayed periods
+ 顯示的周期數
+
+
+
+ Enable digital decoders
+ 開啟數位解碼器
+
+
+
+ Enable sample rate filters
+ 開啟取樣率過濾器
+
+
+
+ Show ADC digital filter config
+ 顯示ADC數位濾波器配置
+
+
+
+ DEBUG
+
+
+
+
+ Enable Debug Messages (Only for Debugging, Bugreporting)
+ 開啟debug信息
+
+
+
+ Enable Debug Instrument
+ 啟用調試工具
+
+
+
+ Enable user notes in main page
+ 在主頁開啟用戶注釋
+
+
+
+ Skip calibration if already calibrated (cal values are not default)
+ 跳過校正如果已經校正
+
+
+
+ Reset Scopy
+ 重啟:Scopy
+
+
+
+ PulsePatternUI
+
+
+ Form
+ 表格
+
+
+
+ Low
+ 低電位
+
+
+
+
+
+
+ 0
+
+
+
+
+ High
+ 高電位
+
+
+
+ 100
+
+
+
+
+ Counter Init
+ 初始化計數器
+
+
+
+ Delay
+ 延時
+
+
+
+
+ 1
+
+
+
+
+ Delay polarity
+ 延遲極性
+
+
+
+ Number of pulses
+ 脈衝數
+
+
+
+ QObject
+
+
+ Period
+ 周期
+
+
+
+ Frequency
+ 頻率
+
+
+
+ Min
+ 最小值
+
+
+
+ Max
+ 最大值
+
+
+
+ Peak-peak
+ 峰對峰
+
+
+
+ Mean
+ 平均值
+
+
+
+ Cycle Mean
+ 周期平均值
+
+
+
+ RMS
+
+
+
+
+ Cycle RMS
+ 周期RMS
+
+
+
+ AC RMS
+
+
+
+
+ Area
+ 區域
+
+
+
+ Cycle Area
+ 循環區
+
+
+
+ Low
+ 低電位
+
+
+
+ High
+ 高電位
+
+
+
+ Amplitude
+ 幅度
+
+
+
+ Middle
+ 中值
+
+
+
+ +Over
+
+
+
+
+ -Over
+
+
+
+
+ Rise
+ 上升沿
+
+
+
+ Fall
+ 下降沿
+
+
+
+ +Width
+ +寬度
+
+
+
+ -Width
+ -寬度
+
+
+
+ +Duty
+ +占空比
+
+
+
+ -Duty
+ -占空比
+
+
+
+ RegisterWidget
+
+
+ Form
+ 表格
+
+
+
+ RunSingleWidget
+
+
+ Form
+ 表格
+
+
+
+ Run
+ 運行
+
+
+
+ Single
+ 單次運行
+
+
+
+ SPIPatternUI
+
+
+ Form
+ 表格
+
+
+
+ MSB First
+ 最高有效位優先
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ 0
+
+
+
+
+ CLK Phase
+ CLK相位
+
+
+
+ CS Polarity
+ CS極性
+
+
+
+ CLK Polarity
+ CLK 極性
+
+
+
+ Bytes per frame
+ 每幀的字節數
+
+
+
+ Inter frame space
+ 幀間空間
+
+
+
+ Data
+ 數據
+
+
+
+ SignalGenerator
+
+
+ Scopy Signal Generator
+ Scopy信號產生器
+
+
+
+ Constant
+ 常數
+
+
+
+ Waveform
+ 波形
+
+
+
+ Sine
+ 正弦波
+
+
+
+ Square
+ 方波
+
+
+
+ Triangle
+ 三角波
+
+
+
+ Trapezoidal
+ 梯形波
+
+
+
+ Rising Ramp Sawtooth
+ 上升斜坡鋸齒波
+
+
+
+ Falling Ramp Sawtooth
+ 下降斜坡鋸齒波
+
+
+
+ Stair Step
+ 梯形台階波
+
+
+
+ TIMING
+ 時序
+
+
+
+ Buffer
+ 播放檔案
+
+
+
+ FILE
+ 檔案
+
+
+
+ Path
+ 路徑
+
+
+
+
+ No file loaded
+ 未載入檔案
+
+
+
+ Format
+ 格式
+
+
+
+ Size
+ 尺寸
+
+
+
+ 0 samples
+ 0取樣點
+
+
+
+ Load file
+ 載入檔案
+
+
+
+ Channel
+ 通道
+
+
+
+ SCALING
+ 縮放比例
+
+
+
+ Math
+ 數學
+
+
+
+ NOISE
+
+
+
+ NOISE
+ 噪聲
+
+
+
+ None
+
+
+
+
+ Uniform
+ 均勻
+
+
+
+ Gaussian
+ 高斯
+
+
+
+ Laplacian
+ 拉普拉斯
+
+
+
+ Impulse
+ 脈衝
+
+
+
+ OTHER
+ 其他
+
+
+
+ Line thickness
+ 線寬
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ Close
+ 關閉
+
+
+
+ SpectrumAnalyzer
+
+
+ Form
+ 表格
+
+
+
+ Print
+ 列印
+
+
+
+ Preset
+ 預先設定
+
+
+
+
+ dBFS
+
+
+
+
+ Sample:
+ 樣本:
+
+
+
+ Average Sample:
+ 平均樣本:
+
+
+
+ Marker_n 0.000 Hz 0dB
+
+
+
+
+ Channel
+ 通道
+
+
+
+ Type
+ 類型
+
+
+
+ Sample
+ 取樣
+
+
+
+ and other types
+ 其他類型
+
+
+
+ Window
+ 窗口
+
+
+
+ Uniform (none)
+ 均勻
+
+
+
+ and others windows
+ 其他窗口
+
+
+
+ Averaging
+ 均值
+
+
+
+ Apply
+ 啟用
+
+
+
+ CH Thickness
+ 通道顯示線寬
+
+
+
+ 0.5
+
+
+
+
+ 1
+
+
+
+
+ 1.5
+
+
+
+
+ 2
+
+
+
+
+ 2.5
+
+
+
+
+ 3
+
+
+
+
+ 3.5
+
+
+
+
+ 4
+
+
+
+
+ 4.5
+
+
+
+
+ 5
+
+
+
+
+ History
+ 歷史記錄
+
+
+
+ Gain mode
+ 增益模式
+
+
+
+
+ Low
+ 低電位
+
+
+
+ High
+ 高電位
+
+
+
+ Snapshot
+ 快照
+
+
+
+ General settings
+ 通用設定
+
+
+
+ Export
+ 匯出
+
+
+
+
+ Sweep
+ 掃描
+
+
+
+ Logarithmic
+ 對數
+
+
+
+ Linear
+ 線性
+
+
+
+ FREQUENCY
+ 頻率
+
+
+
+ AMPLITUDE
+ 幅度
+
+
+
+ Resolution BW
+ 解析度頻寬
+
+
+
+ Units
+ 單位
+
+
+
+
+ Markers
+ 標記
+
+
+
+ Settings
+ 設定
+
+
+
+ MARKER
+ 標記
+
+
+
+ Normal
+ 普通
+
+
+
+ Delta
+ 差值
+
+
+
+ Peak
+ 峰值
+
+
+
+
+ Peak
+ 峰值
+
+
+
+
+ Ampl
+ 振幅
+
+
+
+ GENERAL
+ 通用
+
+
+
+ Marker Table
+ 標記表
+
+
+
+ Import Reference Channels
+ 匯入參考通道
+
+
+
+ No file selected!
+ 未選擇檔案!
+
+
+
+ Browse
+ 瀏覽
+
+
+
+ Import
+ 匯入
+
+
+
+ SpinBoxA
+
+
+ Form
+ 表格
+
+
+
+ StartStopRangeWidget
+
+
+ Form
+ 表格
+
+
+
+ Statistic
+
+
+ Form
+ 表格
+
+
+
+ Avg:
+ 平均:
+
+
+
+
+
+ 0.000
+
+
+
+
+ Min:
+ 最小值:
+
+
+
+ Max:
+ 最大值:
+
+
+
+ 1
+
+
+
+
+ Measurement
+ 測量
+
+
+
+ StatisticsPanel
+
+
+ Form
+ 表格
+
+
+
+ ToolLauncher
+
+
+ Scopy
+
+
+
+
+ Home
+ 主頁
+
+
+
+ Save
+ 儲存
+
+
+
+ Load
+ 載入
+
+
+
+ Preferences
+ 偏好設定
+
+
+
+ Notes
+ 注釋
+
+
+
+ Quit
+ 退出
+
+
+
+ ADC Offset
+ ADC偏移
+
+
+
+ ADC Gain
+ ADC增益
+
+
+
+ Reset ADC Calibration
+ 覆位ADC校正
+
+
+
+ TriggerSettings
+
+
+ Form
+ 表格
+
+
+
+ Trigger Settings
+ 觸發設定
+
+
+
+ Trigger mode
+ 觸發模式
+
+
+
+ auto
+ 自動
+
+
+
+ normal
+ 普通
+
+
+
+
+ Source
+ 源
+
+
+
+ INTERNAL (ANALOG)
+ 內部(類比)
+
+
+
+
+ Condition
+ 觸發條件
+
+
+
+
+ Rising Edge
+ 上升沿
+
+
+
+
+ Falling Edge
+ 下降沿
+
+
+
+
+ Low
+ 低電位
+
+
+
+
+ High
+ 高電位
+
+
+
+ This feature is not supported while the Mixed Signal View is enabled!
+ 啟用混合信號視圖時,不支持此功能!
+
+
+
+ DIGITAL
+ 數位
+
+
+
+ Any Edge
+ 所有沿
+
+
+
+ M2K daisychain position
+ M2K菊花鏈位置
+
+
+
+ TRIGGER LOGIC
+ 觸發邏輯
+
+
+
+ Analog - Digital
+ 類比 - 數位
+
+
+
+ Digital OR Analog
+ 數位或類比
+
+
+
+ Digital AND Analog
+ 數位和類比
+
+
+
+ Digital XOR Analog
+ 數位異或類比
+
+
+
+ !Digital OR Analog
+ !數位或類比
+
+
+
+ !Digital AND Analog
+ !數位和類比
+
+
+
+ !Digital XOR Analog
+ !數位異或類比
+
+
+
+ EXTERNAL TRIGGER OUT
+ 外部觸發
+
+
+
+ UARTPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Stop
+ 停止
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+ Baud
+ 波特率
+
+
+
+
+ 9600
+
+
+
+
+ 1200
+
+
+
+
+ 2400
+
+
+
+
+ 4800
+
+
+
+
+ 14400
+
+
+
+
+ 19200
+
+
+
+
+ 28800
+
+
+
+
+ 38400
+
+
+
+
+ 57600
+
+
+
+
+ 115200
+
+
+
+
+ 230400
+
+
+
+
+ Parity
+ 奇偶性
+
+
+
+ NONE
+
+
+
+
+ ODD
+ 奇校驗
+
+
+
+ EVEN
+ 偶校驗
+
+
+
+ MARK
+ 標記
+
+
+
+ SPACE
+ 空間
+
+
+
+ Parameters
+ 參量
+
+
+
+ Data to Send
+ 要發送的數據
+
+
+
+ UserNotePage
+
+
+ Form
+ 表格
+
+
+
+ Remove note
+ 刪除注釋
+
+
+
+ UserNotes
+
+
+ Form
+ 表格
+
+
+
+ Save
+ 儲存
+
+
+
+ File path
+ 檔案路徑
+
+
+
+ Browse
+ 瀏覽
+
+
+
+ Note name
+ 備注名稱
+
+
+
+ WalkingPatternUI
+
+
+ Form
+ 表格
+
+
+
+ Walking level
+ 步進等級
+
+
+
+ 0
+
+
+
+
+
+ 1
+
+
+
+
+ Frequency
+ 頻率
+
+
+
+ 1000
+
+
+
+
+ Direction
+ 方向
+
+
+
+ Right
+ 右
+
+
+
+ Left
+ 左
+
+
+
+ Length
+ 長度
+
+
+
+ adiscope::BinaryCounterPatternUI
+
+
+ Frequency
+ 頻率
+
+
+
+ adiscope::CapturePlot
+
+
+
+
+
+
+
+ Zoom:
+ 縮放:
+
+
+
+
+ /div
+ /格
+
+
+
+ Waiting
+ 等待中
+
+
+
+ Triggered
+ 已觸發
+
+
+
+ Stop
+ 停止
+
+
+
+ Auto
+ 自動
+
+
+
+ adiscope::ClockPatternUI
+
+
+ Frequency
+ 頻率
+
+
+
+ Phase
+ 相位
+
+
+
+ Duty
+ 占空比
+
+
+
+ adiscope::ConnectDialog
+
+
+
+ Connect
+ 連接
+
+
+
+ Waiting for connection ...
+ 等待連接...
+
+
+
+
+ Context info
+ 環境信息
+
+
+
+ Add
+ 新增
+
+
+
+ Warning
+ 警告
+
+
+
+ Error: Unable to find host: No such host is known!
+ Error:不能找到主機:沒有對應的主機名!
+
+
+
+ adiscope::CustomSwitch
+
+
+ on
+ 開
+
+
+
+ off
+ 關
+
+
+
+ adiscope::DMM
+
+
+ Timer
+ 計時器
+
+
+
+ Stop
+ 停止
+
+
+
+ Run
+ 運行
+
+
+
+ Export
+ 匯出
+
+
+
+ Comma-separated values files (*.csv);;All Files(*)
+ 逗號分隔值檔案(*.csv);;所有檔案(*)
+
+
+
+ No file selected
+ 未選擇檔案
+
+
+
+
+ File is open in another program
+ 檔案在另一個程序中打開
+
+
+
+
+ Choose a file
+ 選擇一個檔案
+
+
+
+ adiscope::Debugger
+
+
+ Save File
+ 儲存檔案
+
+
+
+ JavaScript (*.js)
+
+
+
+
+ adiscope::DigitalIO
+
+
+ Stop
+ 停止
+
+
+
+ Run
+ 運行
+
+
+
+ adiscope::ExportSettings
+
+
+ Channels
+ 通道
+
+
+
+ Name
+ 名稱
+
+
+
+ Export
+ 匯出
+
+
+
+ adiscope::GrayCounterPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::I2CPatternUI
+
+
+ Frequency
+
+
+
+
+ adiscope::ImportPatternUI
+
+
+ Frequency
+ 頻率
+
+
+
+ Open file
+ 打開檔案
+
+
+
+ Import selected channels
+ 匯入所選的通道
+
+
+
+ No file selected
+ 未選擇檔案
+
+
+
+ Export
+ 匯出
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv);;標簽分隔的值檔案(*.txt)
+
+
+
+ adiscope::ImportSettings
+
+
+ Import
+ 匯入
+
+
+
+ Import all
+ 全部匯入
+
+
+
+ adiscope::InfoPage
+
+ Firmware version
+ 韌體版本
+
+
+ Model
+ 型號
+
+
+ Model variant
+ 型號變化
+
+
+ Serial
+ 序號
+
+
+ Product ID
+ 產品ID
+
+
+ Vendor ID
+ 供應商ID
+
+
+ Product name
+ 產品名稱
+
+
+ Vendor
+ 供應商
+
+
+ Release
+ 發布
+
+
+ IP Address
+ IP地址
+
+
+
+ Error: Connection failed!
+ 錯誤:連接失敗
+
+
+
+ Connected
+ 已連接
+
+
+
+ Your hardware revision does not support the identify feature
+ 您的硬體版本不支持識別功能
+
+
+
+ adiscope::LogicAnalyzer
+
+ Time Base
+ 時間長/格
+
+
+ Position
+ 位置
+
+
+ Frequency
+ 頻率
+
+
+ Export
+ 匯出
+
+
+ Comma-separated values files (*.csv)
+ Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv)
+
+
+ Waiting
+ 等待中
+
+
+ Triggered
+ 已觸發
+
+
+ Stop
+ 停止
+
+
+ Auto
+ 自動
+
+
+ Scan
+ 掃描
+
+
+ Zoom:
+ 縮放:
+
+
+ /div
+ /格
+
+
+ Run
+ 運行
+
+
+ Single
+ 單次運行
+
+
+ Show all
+ 顯示全部
+
+
+ Hide inactive
+ 隱藏非活動
+
+
+
+ adiscope::M2kDeviceWidget
+
+
+ M2K
+
+
+
+
+ adiscope::M2kInfoPage
+
+
+ Not connected
+ 沒有鏈接
+
+
+
+ Always disconnect analog inputs/outputs before calibration
+ 校正前一定要斷開類比輸入/輸出的連接。
+
+
+
+ Can't identify this device.
+ 無法識別這個裝置。
+
+
+
+ Can't identify device. Please try to update your firmware!
+ 無法識別裝置。請嘗試更新您的韌體
+
+
+
+ Your hardware revision does not support the identify feature
+ 您的硬體版本不支持識別功能
+
+
+
+ adiscope::ManualCalibration
+
+
+ Save File
+ 儲存檔案
+
+
+
+ ini (*.ini)
+
+
+
+
+
+ °C
+
+
+
+
+ adiscope::MarkerTable
+
+
+ Id
+
+
+
+
+ Marker
+ 標記
+
+
+
+ Channel
+ 通道
+
+
+
+ Frequency
+ 頻率
+
+
+
+ Magnitude
+ 幅度
+
+
+
+ Type
+ 類型
+
+
+
+ adiscope::MeasureSettings
+
+
+ Horizontal
+ 水平
+
+
+
+
+ Name
+ 名稱
+
+
+
+
+ Measure
+ 測量
+
+
+
+
+ Stats
+ 統計
+
+
+
+ Vertical
+ 垂直
+
+
+
+
+ Recover
+ 恢覆
+
+
+
+
+ Delete All
+ 全部刪除
+
+
+
+ adiscope::NetworkAnalyzer
+
+
+
+ Stopped
+ 已停止
+
+
+
+ Frequency (Hz)
+ 頻率(Hz)
+
+
+
+ Magnitude(dB)
+ 幅度(dB)
+
+
+
+ Phase (°)
+ 相位(°)
+
+
+
+ Samples count
+ 取樣計數
+
+
+
+ Samps/decade
+
+
+
+
+ Step
+ 步進
+
+
+
+ Amplitude
+ 幅度
+
+
+
+ Offset
+ 偏移
+
+
+
+ Max. Magnitude
+ 最大幅度
+
+
+
+ Min. Magnitude
+ 最小幅度
+
+
+
+ Max. Phase
+ 最大相位
+
+
+
+ Min. Phase
+ 最小相位
+
+
+
+
+ Settling time
+ 穩定時間
+
+
+
+ Before Buffer
+ 緩衝之前
+
+
+
+ After Buffer
+ 緩衝之後
+
+
+
+
+ Sample:
+ 取樣:
+
+
+
+
+ Current Frequency:
+ 電流頻率:
+
+
+
+
+ DC Voltage:
+ DC電壓:
+
+
+
+
+ Response channel voltage < 50mV!
+ 響應通道電壓 < 50mV!
+
+
+
+
+ Low
+ 低電位
+
+
+
+
+ High
+
+
+
+
+
+ Gain Mode:
+ 增益模式
+
+
+
+ Transparency
+ 透明度
+
+
+
+ Image
+ 圖片
+
+
+
+ Save to
+ 儲存至
+
+
+
+ Import
+ 匯入
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv);;標簽分隔的值檔案(*.txt)
+
+
+
+ Comma-separated values files (*.csv)
+ 逗號分隔值檔案(*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ 標簽分隔的值檔案(*.txt)
+
+
+
+ All Files(*)
+ 所有檔案(*)
+
+
+
+ Export
+ 匯出
+
+
+
+ Average:
+ 平均值:
+
+
+ Comma-separated values files (*.csv)
+ Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv)
+
+
+
+ Running
+ 正在運行
+
+
+
+ Stopping...
+ 停止中...
+
+
+
+ adiscope::NetworkAnalyzer_API
+
+
+ Transparency
+ 透明度
+
+
+
+ adiscope::Oscilloscope
+
+
+
+ Time Base
+ 時間長/格
+
+
+
+
+ Position
+ 位置
+
+
+
+ Volts/Div
+ 伏特/格
+
+
+
+
+ Add Channel
+ 新增通道
+
+
+
+
+ Comma-separated values files (*.csv)
+ 逗號分隔值檔案(*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ 標簽分隔的值檔案(*.txt)
+
+
+
+
+ All Files(*)
+ 所有檔案(*)
+
+
+
+
+
+ Export
+ 匯出
+
+
+ Comma-separated values files (*.csv)
+ Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv)
+
+
+
+ Transparency
+ 透明度
+
+
+
+ "Warning: This feature is not supported on the current firmware version!"
+ "警告:當前韌體版本不支持此功能!"警告:當前韌體版本不支持此功能!"
+
+
+
+ * When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!
+** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!
+ * 當混合信號視圖啟用時,LogicAnalyzer工具將被禁用!
+** 觸發器只能在數位通道或類比通道上禁用或設定,不能同時在兩個通道上禁用或設定。
+
+
+
+ Math
+ 計算
+
+
+
+ Browse
+ 瀏覽
+
+
+
+ No file selected
+ 未選擇檔案
+
+
+
+
+ Reference
+ 參考
+
+
+
+ Logic
+ 邏輯
+
+
+
+ Add channel
+ 新增通道
+
+
+
+ Import selected channels
+ 匯入所選的通道
+
+
+
+ Enable Mixed Signal View
+ 啟用混合信號視圖
+
+
+
+ Import
+ 匯入
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv);;標簽分隔的值檔案(*.txt)
+
+
+
+
+ Snapshot
+ 快照
+
+
+
+ Filter 1 - Enable -
+ 過濾器1-開啟-
+
+
+
+ Filter 2 - Enable -
+ 過濾器2-開啟-
+
+
+
+
+ Save
+ 儲存
+
+
+
+ adiscope::PatternGenerator
+
+ Stop
+ 停止
+
+
+ Run
+ 運行
+
+
+ Show All
+ 顯示全部
+
+
+ Hide Inactive
+ 隱藏非活動
+
+
+
+ adiscope::PowerController
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Value
+ 值:
+
+
+
+
+ Disable
+ 失能
+
+
+
+
+ Enable
+ 開啟
+
+
+
+ adiscope::Preferences
+
+
+ This change will be applied only after a Scopy reset.
+ 此更改僅在Scopy覆位之後生效.
+
+
+
+ By resetting scopy you will lose the current configuration!
+ 覆位scopy將會丟失當前配置!
+
+
+
+ Do you want to reset?
+ 仍要覆位?
+
+
+
+ Load language
+ 載入語言
+
+
+
+ Language files (*.qm)
+ 載入語言(*.qm)
+
+
+
+ adiscope::PrintablePlot
+
+
+
+
+
+ Documents
+ 文件
+
+
+
+ Image
+
+
+
+ Images
+ 鏡像
+
+
+
+ Export File Name
+ 匯出檔案名稱
+
+
+
+ adiscope::PulsePatternUI
+
+
+ Sample Rate
+ 取樣率
+
+
+
+ adiscope::RandomPatternUI
+
+
+ Frequency
+ 頻率
+
+
+
+ adiscope::RunSingleWidget
+
+
+
+
+ Run
+ 運行
+
+
+
+
+
+ Single
+ 單次運行
+
+
+
+
+
+
+
+ Stop
+ 停止
+
+
+
+ adiscope::SPIPatternUI
+
+
+ Frequency
+ 頻率
+
+
+
+ adiscope::SignalGenerator
+
+
+ deg
+
+
+
+
+ π rad
+
+
+
+
+
+
+
+
+ ns
+
+
+
+
+
+
+
+
+ μs
+
+
+
+
+
+
+
+
+ ms
+
+
+
+
+
+
+
+
+ s
+
+
+
+
+
+
+ Phase
+ 相位
+
+
+
+ μVolts p-p
+
+
+
+
+ mVolts p-p
+
+
+
+
+ Volts p-p
+
+
+
+
+
+
+ Amplitude
+ 幅度
+
+
+
+
+
+
+ μVolts
+
+
+
+
+
+
+
+
+ mVolts
+
+
+
+
+
+
+
+
+ Volts
+
+
+
+
+
+ Offset
+ 偏移
+
+
+
+ mHz
+
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency
+ 頻率
+
+
+
+ Rising
+ 上升沿
+
+
+
+ Falling
+ 下降沿
+
+
+
+ Rise Time
+ 上升時間
+
+
+
+ Fall Time
+ 下降時間
+
+
+
+ High Time
+ 高電位時間
+
+
+
+ Low Time
+ 低電位時間
+
+
+
+
+ SampleRate
+ 取樣率
+
+
+
+ Record Length
+ 記錄長度
+
+
+
+ Value
+ 值:
+
+
+
+ Duty Cycle
+ 占空比
+
+
+
+
+
+ samples
+ 取樣
+
+
+
+ Open File
+ 打開檔案
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt);;Waveform Audio File Format (*.wav);;Matlab files (*.mat)
+ 逗號分隔值檔案(*.csv);;制表符分隔值檔案(*.txt);;波形音頻檔案格式(*.wav);;Matlab檔案(*.mat)
+
+
+
+ adiscope::Sismograph
+
+
+ Voltage (V)
+ 電壓(V)
+
+
+
+ Time (s)
+ 時間(s)
+
+
+
+ adiscope::SpectrumAnalyzer
+
+
+
+
+
+ Export
+ 匯出
+
+
+ Comma-separated values files (*.csv)
+ Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv)
+
+
+
+ dBFS
+
+
+
+
+ dBV
+
+
+
+
+ dBu
+
+
+
+
+ Vpeak
+
+
+
+
+ Vrms
+
+
+
+
+ V/√Hz
+
+
+
+
+ Sample
+ 取樣
+
+
+
+ Peak Hold
+ 峰值保持
+
+
+
+ Peak Hold Continous
+ 峰值保持 連續
+
+
+
+ Min Hold
+ 最短保持時間
+
+
+
+ Min Hold Continous
+ 最短保持時間 連續
+
+
+
+ Linear RMS
+ 線性RMS
+
+
+
+ Linear dB
+ 線性 dB
+
+
+
+ Exponential RMS
+ 指數RMS
+
+
+
+ Exponential dB
+ 指數dB
+
+
+
+ Flat top
+ 平頂型
+
+
+
+ Rectangular
+ 矩形
+
+
+
+ Triangular (Bartlett)
+ 三角形(Bartlett)
+
+
+
+ Hamming
+
+
+
+
+ Hann
+
+
+
+
+ Blackman-Harris
+
+
+
+
+ Kaiser
+
+
+
+
+ Manual
+ 手動
+
+
+
+ Peak
+ 峰值
+
+
+
+ Delta
+ 差值
+
+
+
+ Fixed
+ 固定
+
+
+
+ Scale/Div
+ 刻度
+
+
+
+ Sample:
+ 樣本
+
+
+
+ Average Sample:
+ 平均樣本
+
+
+ Range
+ 範圍
+
+
+
+
+ Top
+ 頂部
+
+
+
+
+ Bottom
+ 底部
+
+
+
+ Hz
+
+
+
+
+ kHz
+
+
+
+
+ MHz
+
+
+
+
+ Frequency Position
+ 頻率位置
+
+
+
+
+ Comma-separated values files (*.csv)
+ 逗號分隔值檔案(*.csv)
+
+
+
+
+ Tab-delimited values files (*.txt)
+ 標簽分隔的值檔案(*.txt)
+
+
+
+
+ All Files(*)
+ 所有檔案(*)
+
+
+
+ Comma-separated values files (*.csv);;Tab-delimited values files (*.txt)
+ 逗號分隔值檔案(*.csv);;標簽分隔的值檔案(*.txt)
+
+
+
+ Snapshot
+ 快照
+
+
+
+ adiscope::StartStopRangeWidget
+
+
+ Start
+ 開始
+
+
+
+ Stop
+ 結束
+
+
+
+ Center
+ 中心頻率
+
+
+
+ Span
+ 掃描寬度
+
+
+
+ adiscope::ToolLauncher
+
+
+ Preferences
+ 偏好設定
+
+
+
+ Calibration skipped because already calibrated.
+ 因為已經校正,所以跳過校正。
+
+
+
+ Calibrated
+ 已校正
+
+
+
+ Save session
+ 載入會話
+
+
+
+
+ Scopy-Files (*.ini)
+ Scopy檔案(*.ini)
+
+
+
+ Load session
+ 載入會話
+
+
+
+ Click to open the home menu
+ 單擊打開主菜單
+
+
+
+ Click to disconnect the device
+ 單擊斷開裝置連接
+
+
+
+ Click to save the current session
+ 單擊儲存當前會話
+
+
+
+
+ Click to load a session
+ 單擊載入會話
+
+
+
+
+ Select a device first
+ 先選擇裝置
+
+
+
+
+
+ Click to connect the device
+ 單擊以連接裝置
+
+
+
+ Report a bug!
+ 報告錯誤!
+
+
+
+ Connecting...
+ 連接中...
+
+
+
+ Disconnecting...
+ 斷開連接中...
+
+
+
+ Connect
+ 連接
+
+
+
+ Calibrating...
+ 校正中...
+
+
+
+ Calibration Failed
+ 校正失敗
+
+
+
+
+ Disconnect
+ 斷開連接
+
+
+
+ Digital decoders support is disabled. Some features may be missing
+ 數位解碼器支持已禁用.某些特性可能丟失
+
+
+
+ There was a problem initializing libsigrokdecode. Some features may be missing
+ 初始化 libsigrokdecode 時出現了問題.可能缺少一些功能
+
+
+
+ Calibrating
+ 校正中
+
+
+
+ adiscope::ToolMenu
+
+
+ Oscilloscope
+ 示波器
+
+
+
+ Spectrum Analyzer
+ 頻譜分析儀
+
+
+
+ Network Analyzer
+ 網絡分析儀
+
+
+
+ Signal Generator
+ 信號產生器
+
+
+
+ Logic Analyzer
+ 邏輯分析儀
+
+
+
+ Pattern Generator
+ 碼型產生器
+
+
+
+ Digital IO
+ 數位IO
+
+
+
+ Voltmeter
+ 電壓表
+
+
+
+ Power Supply
+ 電源供應器
+
+
+
+ Debugger
+ 調試器
+
+
+
+ Calibration
+ 校正
+
+
+
+ adiscope::ToolMenuItem
+
+
+ Calibrating...
+ 校正中...
+
+
+
+ adiscope::TriggerSettings
+
+
+ Forward Trigger In
+ 正向觸發
+
+
+
+ Oscilloscope
+ 示波器
+
+
+
+
+ Logic Analyzer
+ 邏輯分析儀
+
+
+
+
+ μVolts
+
+
+
+
+
+ mVolts
+
+
+
+
+
+ Volts
+
+
+
+
+ Level
+ 觸發等級
+
+
+
+ Hysteresis
+ 觸發滯後
+
+
+
+ External Trigger In
+ 外部觸發
+
+
+
+ None
+
+
+
+
+ adiscope::UserNotes
+
+
+ Note
+ 筆記本
+
+
+
+ Invalid or empty file!
+ 檔案無效或空檔案!
+
+
+
+ Path:
+ 路徑:
+
+
+
+ Warning: The file is empty!
+ Warning:檔案為空!
+
+
+
+ Warning: The path is invalid!
+ Warning:路徑無效!
+
+
+
+ adiscope::logic::LogicAnalyzer
+
+
+ Sample Rate
+ 取樣率
+
+
+
+ Nr of samples
+ 樣本數量
+
+
+
+ Delay
+ 延時
+
+
+
+ Transparency
+ 透明度
+
+
+
+ Select a decoder to add
+ 選擇一個要新增的解碼器
+
+
+
+ External Trigger In
+ 外部觸發
+
+
+
+ Oscilloscope
+ 示波器
+
+
+
+ Comma-separated values files (*.csv)
+ 逗號分隔值檔案(*.csv)
+
+
+
+ Tab-delimited values files (*.txt)
+ 標簽分隔的值檔案(*.txt)
+
+
+
+ Value Change Dump(*.vcd)
+ 值變化轉存(*.vcd)
+
+
+
+ All Files(*)
+ 所有檔案(*)
+
+
+
+ Export
+ 匯出
+
+
+
+ adiscope::prop::Bool
+
+
+
+ Querying config key %1 resulted in %2
+ 查詢配置鍵%1導致%2
+
+
+
+ adiscope::prop::Double
+
+
+
+ Querying config key %1 resulted in %2
+ 查詢配置鍵%1導致%2
+
+
+
+ adiscope::prop::Enum
+
+
+
+ Querying config key %1 resulted in %2
+ 查詢配置鍵%1導致%2
+
+
+
+ adiscope::prop::Int
+
+
+
+ Querying config key %1 resulted in %2
+ 查詢配置鍵%1導致%2
+
+
+
+ adiscope::prop::String
+
+
+
+ Querying config key %1 resulted in %2
+ 查詢配置鍵%1導致%2
+
+
+
+ dioChannel
+
+
+ Form
+ 表格
+
+
+
+
+ 0
+
+
+
+
+ in
+ 輸入
+
+
+
+ out
+ 輸出
+
+
+
+ 1
+
+
+
+
+ dioElement
+
+
+ Form
+ 表格
+
+
+
+ 0 - 7
+
+
+
+
+ Individual
+ 單個
+
+
+
+ Group
+ 組
+
+
+
+ in
+ 輸入
+
+
+
+ out
+ 輸出
+
+
+
+ 127
+
+
+
+
+ scriptedBinaryCounter
+
+
+ Form
+ 表格
+
+
+
+ PulseScript
+ 脈衝腳本
+
+
+
+ NumberOfPulses
+ 脈衝數
+
+
+
+ Samples/Pulse
+ 取樣/脈衝
+
+
+
+ Hi
+ 高電位
+
+
+
+ Lo
+ 低電位
+
+
+
+ Frequency:
+ 頻率:
+
+
+
+ PushButton
+ 按鈕
+
+
+
+ INVALID
+ 無效
+
+
+
diff --git a/scopy-32.iss.cmakein b/scopy-32.iss.cmakein
index 136aa7f18d..828f614a06 100644
--- a/scopy-32.iss.cmakein
+++ b/scopy-32.iss.cmakein
@@ -2,6 +2,7 @@
#define AppName "Scopy"
#define AppDev "Analog Devices"
#define Python "@PYTHON_VERSION@"
+#define DriverVersion "0.7"
[Setup]
AppId={{02A7A7F9-F068-4B1C-85F6-B6D325938E19}
@@ -48,9 +49,20 @@ Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
+[Code]
+function isDriverInstalled(): Boolean;
+begin
+ Result := True;
+ if not RegKeyExists(HKLM, 'Software\Analog Devices\{#AppName}\Settings') then
+ begin
+ Result := False;
+ end;
+end;
+
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: "deleteini"; Description: Delete previous settings (Scopy.ini)
+Name: "drivers"; Description: Install drivers for ADALM2000; Check: not isDriverInstalled;
[Files]
Source: "c:\scopy_32\*"; DestDir: "{app}"; Check: not Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
@@ -62,3 +74,18 @@ Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desk
[InstallDelete]
Type: files; Name: "{userappdata}\ADI\Scopy.ini"; Tasks: deleteini
+
+[Run]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/PATH ""{app}\drivers"" {param:dpinstflags|/F}" ; Flags: waituntilterminated; Tasks: drivers
+
+[UninstallRun]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-cdc-acm.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-rndis.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-usbd.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-dfu.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+
+[Registry]
+Root: HKLM; Subkey: "Software\Analog Devices"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallVersion"; ValueData: {#DriverVersion}
diff --git a/scopy-64.iss.cmakein b/scopy-64.iss.cmakein
index 02d7e651db..500d281a36 100644
--- a/scopy-64.iss.cmakein
+++ b/scopy-64.iss.cmakein
@@ -2,6 +2,7 @@
#define AppName "Scopy"
#define AppDev "Analog Devices"
#define Python "@PYTHON_VERSION@"
+#define DriverVersion "0.7"
[Setup]
AppId={{02A7A7F9-F068-4B1C-85F6-B6D325938E19}
@@ -48,9 +49,20 @@ Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
+[Code]
+function isDriverInstalled(): Boolean;
+begin
+ Result := True;
+ if not RegKeyExists(HKLM, 'Software\Analog Devices\{#AppName}\Settings') then
+ begin
+ Result := False;
+ end;
+end;
+
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: "deleteini"; Description: Delete previous settings (Scopy.ini)
+Name: "drivers"; Description: Install drivers for ADALM2000; Check: not isDriverInstalled;
[Files]
Source: "c:\scopy_64\*"; DestDir: "{app}"; Check: Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
@@ -62,3 +74,18 @@ Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desk
[InstallDelete]
Type: files; Name: "{userappdata}\ADI\Scopy.ini"; Tasks: deleteini
+
+[Run]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/PATH ""{app}\drivers"" {param:dpinstflags|/F}" ; Flags: waituntilterminated; Tasks: drivers
+
+[UninstallRun]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-cdc-acm.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-rndis.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-usbd.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-dfu.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+
+[Registry]
+Root: HKLM; Subkey: "Software\Analog Devices"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallVersion"; ValueData: {#DriverVersion}
diff --git a/scopy.iss.cmakein b/scopy.iss.cmakein
index f2eb22dcf6..eaa38ba170 100644
--- a/scopy.iss.cmakein
+++ b/scopy.iss.cmakein
@@ -2,6 +2,7 @@
#define AppName "Scopy"
#define AppDev "Analog Devices"
#define Python "@PYTHON_VERSION@"
+#define DriverVersion "0.7"
[Setup]
AppId={{02A7A7F9-F068-4B1C-85F6-B6D325938E19}
@@ -48,13 +49,25 @@ Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
+[Code]
+function isDriverInstalled(): Boolean;
+begin
+ Result := True;
+ if not RegKeyExists(HKLM, 'Software\Analog Devices\{#AppName}\Settings') then
+ begin
+ Result := False;
+ end;
+end;
+
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: "deleteini"; Description: Delete previous settings (Scopy.ini)
+Name: "drivers"; Description: Install drivers for ADALM2000; Check: not isDriverInstalled;
[Files]
-Source: "c:\scopy_32\*"; DestDir: "{app}"; Check: not Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "c:\scopy_64\*"; DestDir: "{app}"; Check: Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "c:\scopy_32\*"; DestDir: "{app}"; Check: not Is64BitInstallMode; Flags: ignoreversion recursesubdirs createallsubdirs
+
[Icons]
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"
@@ -63,3 +76,18 @@ Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desk
[InstallDelete]
Type: files; Name: "{userappdata}\ADI\Scopy.ini"; Tasks: deleteini
+
+[Run]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/PATH ""{app}\drivers"" {param:dpinstflags|/F}" ; Flags: waituntilterminated; Tasks: drivers
+
+[UninstallRun]
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-cdc-acm.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-rndis.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-usbd.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+Filename: "{app}\drivers\dpinst.exe"; Parameters: "/s /U pluto-dfu.inf"; WorkingDir: "{app}\drivers"; Flags: waituntilterminated;
+
+[Registry]
+Root: HKLM; Subkey: "Software\Analog Devices"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
+Root: HKLM; Subkey: "Software\Analog Devices\{#AppName}\Settings"; ValueType: string; ValueName: "InstallVersion"; ValueData: {#DriverVersion}
diff --git a/src/DisplayPlot.cc b/src/DisplayPlot.cc
index 721e6c6117..a6da863954 100644
--- a/src/DisplayPlot.cc
+++ b/src/DisplayPlot.cc
@@ -56,6 +56,7 @@
#include
#include
#include
+#include
using namespace adiscope;
@@ -579,6 +580,12 @@ DisplayPlot::DisplayPlot(int nplots, QWidget* parent,
plotLayout()->setAlignCanvasToScales(true);
+ QColor plotColor;
+ if (QIcon::themeName() == "scopy-default") {
+ plotColor = QColor("#6E6E6F");
+ } else {
+ plotColor = QColor("#D3D3D3");
+ }
for (unsigned int i = 0; i < 4; i++) {
QwtScaleDraw::Alignment scale =
@@ -591,8 +598,9 @@ DisplayPlot::DisplayPlot(int nplots, QWidget* parent,
scaleItem->setFont(this->axisWidget(QwtPlot::yLeft)->font());
QPalette palette = scaleItem->palette();
- palette.setBrush(QPalette::Foreground, QColor("#6E6E6F"));
- palette.setBrush(QPalette::Text, QColor("#6E6E6F"));
+
+ palette.setBrush(QPalette::Foreground, plotColor);
+ palette.setBrush(QPalette::Text, plotColor);
scaleItem->setPalette(palette);
scaleItem->setBorderDistance(0);
scaleItem->attach(this);
@@ -626,7 +634,7 @@ DisplayPlot::DisplayPlot(int nplots, QWidget* parent,
// Plot needs a grid
d_grid = new EdgelessPlotGrid();
- QColor majorPenColor("#353537");
+ QColor majorPenColor(plotColor);
d_grid->setMajorPen(majorPenColor, 1.0, Qt::DashLine);
d_grid->attach(this);
}
diff --git a/src/TimeDomainDisplayPlot.cc b/src/TimeDomainDisplayPlot.cc
index a4bb042745..f2212fb63d 100644
--- a/src/TimeDomainDisplayPlot.cc
+++ b/src/TimeDomainDisplayPlot.cc
@@ -185,6 +185,8 @@ TimeDomainDisplayPlot::TimeDomainDisplayPlot(QWidget* parent, unsigned int xNumD
d_nb_ref_curves = 0;
+ d_autoscale_state = false;
+
// Reconfigure the bottom horizontal axis that was created by the base class
configureAxis(QwtPlot::xBottom, 0);
configureAxis(QwtPlot::yLeft, 0);
@@ -448,24 +450,27 @@ TimeDomainDisplayPlot::plotNewData(const std::string &sender,
// }
// }
-// if(d_autoscale_state) {
-// double bottom=1e20, top=-1e20;
-// for(int n = 0; n < d_nplots; n++) {
-// for(int64_t point = 0; point < numDataPoints; point++) {
-// if(d_ydata[n][point] < bottom) {
-// bottom = d_ydata[n][point];
-// }
-// if(d_ydata[n][point] > top) {
-// top = d_ydata[n][point];
-// }
-// }
-// }
-// _autoScale(bottom, top);
-// if(d_autoscale_shot) {
-// d_autoscale_state = false;
-// d_autoscale_shot = false;
-// }
-// }
+
+ if(d_autoscale_state) {
+ double bottom=1e20, top=-1e20;
+ for(int n = 0; n < d_nplots; n++) {
+ if(d_plot_curve[n]->plot()) {
+ for(int64_t point = 0; point < numDataPoints; point++) {
+ if(d_ydata[n][point] < bottom) {
+ bottom = d_ydata[n][point];
+ }
+ if(d_ydata[n][point] > top) {
+ top = d_ydata[n][point];
+ }
+ }
+ }
+ }
+ _autoScale(bottom, top);
+ if(d_autoscale_shot) {
+ d_autoscale_state = false;
+ d_autoscale_shot = false;
+ }
+ }
replot();
@@ -563,8 +568,8 @@ void
TimeDomainDisplayPlot::_autoScale(double bottom, double top)
{
// Auto scale the y-axis with a margin of 20% (10 dB for log scale)
- double _bot = bottom - fabs(bottom)*0.20;
- double _top = top + fabs(top)*0.20;
+ double _bot = bottom - fabs(bottom-top)*0.125;
+ double _top = top + fabs(bottom-top)*0.125;
if(d_semilogy) {
if(bottom > 0) {
setYaxis(_bot-10, _top+10);
@@ -574,8 +579,15 @@ TimeDomainDisplayPlot::_autoScale(double bottom, double top)
}
}
else {
- setYaxis(_bot, _top);
+ if(_bot == 0 && _top == 0){
+ setYaxis(-1e-3, 1e-3);
+ }
+ else{
+ setYaxis(_bot, _top);
+ }
}
+
+ replot();
}
void
@@ -636,10 +648,34 @@ void TimeDomainDisplayPlot::setXAxisNumPoints(unsigned int pts)
d_nbPtsXAxis = pts;
}
-void
-TimeDomainDisplayPlot::setAutoScale(bool state)
+void TimeDomainDisplayPlot::setAutoScale(bool state)
{
d_autoscale_state = state;
+
+ if(d_autoscale_state) {
+ double bottom=1e20, top=-1e20;
+ for(int n = 0; n < d_nplots; n++) {
+ if(d_plot_curve[n]->plot()) {
+ for(int64_t point = 0; point < Curve(n)->data()->size(); point++) {
+ if(d_ydata[n][point] < bottom) {
+ bottom = d_ydata[n][point];
+ }
+ if(d_ydata[n][point] > top) {
+ top = d_ydata[n][point];
+ }
+ }
+ }
+ }
+ _autoScale(bottom, top);
+ if(d_autoscale_shot) {
+ d_autoscale_state = false;
+ d_autoscale_shot = false;
+ }
+ }
+ else{
+ setYaxis(-5, 5);
+ replot();
+ }
}
void
diff --git a/src/TimeDomainDisplayPlot.h b/src/TimeDomainDisplayPlot.h
index 1405d53e2a..d8549efbaf 100644
--- a/src/TimeDomainDisplayPlot.h
+++ b/src/TimeDomainDisplayPlot.h
@@ -219,6 +219,7 @@ private Q_SLOTS:
bool isReferenceWaveform(QwtPlotCurve *curve);
bool isMathWaveform(QwtPlotCurve *curve) const;
int countReferenceWaveform(int position);
+ QVector d_logic_curves;
private:
void _resetXAxisPoints(double*& xAxis, unsigned long long numPoints, double sampleRate);
@@ -254,7 +255,6 @@ private Q_SLOTS:
QMap d_ref_curves;
QMap d_math_curves;
- QVector d_logic_curves;
int d_nb_ref_curves;
int getCurveNextTo(int pos);
};
diff --git a/src/application_restarter.cpp b/src/application_restarter.cpp
new file mode 100644
index 0000000000..aa51d98690
--- /dev/null
+++ b/src/application_restarter.cpp
@@ -0,0 +1,39 @@
+#include "application_restarter.h"
+
+#include
+#include
+#include
+
+using namespace adiscope;
+
+ApplicationRestarter::ApplicationRestarter(const QString &executable)
+ : m_executable(executable)
+ , m_currentPath(QDir::currentPath())
+{
+
+}
+
+void ApplicationRestarter::setArguments(const QStringList &arguments)
+{
+ m_arguments = arguments;
+}
+
+QStringList ApplicationRestarter::getArguments() const
+{
+ return m_arguments;
+}
+
+int ApplicationRestarter::restart(int exitCode)
+{
+ if (qApp->property("restart").toBool()) {
+ QProcess::startDetached(m_executable, m_arguments, m_currentPath);
+ }
+
+ return exitCode;
+}
+
+void ApplicationRestarter::triggerRestart()
+{
+ qApp->setProperty("restart", QVariant(true));
+ qApp->exit();
+}
diff --git a/src/application_restarter.h b/src/application_restarter.h
new file mode 100644
index 0000000000..96ff0f3e29
--- /dev/null
+++ b/src/application_restarter.h
@@ -0,0 +1,25 @@
+#ifndef APPLICATIONRESTARTER_H
+#define APPLICATIONRESTARTER_H
+
+#include
+#include
+
+namespace adiscope {
+class ApplicationRestarter
+{
+public:
+ ApplicationRestarter(const QString &executable);
+
+ void setArguments(const QStringList &arguments);
+ QStringList getArguments() const;
+
+ int restart(int exitCode);
+ static void triggerRestart();
+
+private:
+ QString m_executable;
+ QStringList m_arguments;
+ QString m_currentPath;
+};
+} // namespace adiscope
+#endif // APPLICATIONRESTARTER_H
diff --git a/src/calibration.cpp b/src/calibration.cpp
index e7cad0e541..4790a817b8 100644
--- a/src/calibration.cpp
+++ b/src/calibration.cpp
@@ -135,6 +135,16 @@ void Calibration::cancelCalibration()
m_cancel = true;
}
+bool Calibration::hasContextCalibration() const
+{
+ return m_m2k->hasContextCalibration();
+}
+
+float Calibration::calibrateFromContext()
+{
+ return m_m2k->calibrateFromContext();
+}
+
/* FIXME: TODO: Move this into a HW class / lib M2k */
double Calibration::getIioDevTemp(const QString& devName) const
{
diff --git a/src/calibration.hpp b/src/calibration.hpp
index 6ae362ca0a..8ade9ecd3f 100644
--- a/src/calibration.hpp
+++ b/src/calibration.hpp
@@ -71,6 +71,8 @@ class Calibration
bool calibrateAll();
bool calibrateAdc();
bool calibrateDac();
+ bool hasContextCalibration() const;
+ float calibrateFromContext();
bool resetCalibration();
void updateCorrections();
diff --git a/src/connectDialog.cpp b/src/connectDialog.cpp
index 062d22e67a..973ba45d71 100644
--- a/src/connectDialog.cpp
+++ b/src/connectDialog.cpp
@@ -27,11 +27,12 @@
#include
#include
+#include
using namespace adiscope;
ConnectDialog::ConnectDialog(QWidget *widget) : QWidget(widget),
- ui(new Ui::Connect), connected(false)
+ ui(new Ui::Connect), connected(false), enableDemo(false)
{
ui->setupUi(this);
ui->connectBtn->setText(tr("Connect"));
@@ -39,6 +40,7 @@ ConnectDialog::ConnectDialog(QWidget *widget) : QWidget(widget),
ui->connectBtn->setDisabled(true);
connect(ui->connectBtn, SIGNAL(clicked()), this, SLOT(btnClicked()));
+ connect(ui->enableDemoBtn, SIGNAL(clicked()), this, SLOT(enableDemoBtn()));
connect(ui->hostname, SIGNAL(returnPressed()),
this, SLOT(btnClicked()));
connect(ui->hostname, SIGNAL(textChanged(const QString&)),
@@ -50,6 +52,10 @@ ConnectDialog::ConnectDialog(QWidget *widget) : QWidget(widget),
setDynamicProperty(ui->hostname, "invalid", false);
setDynamicProperty(ui->hostname, "valid", false);
ui->infoSection->hide();
+
+ ui->demoDevicesComboBox->addItem("adalm2000");
+ ui->demoDevicesComboBox->setDisabled(false);
+ process = new QProcess(this);
}
ConnectDialog::~ConnectDialog()
@@ -90,6 +96,56 @@ void ConnectDialog::btnClicked()
}
}
+void ConnectDialog::enableDemoBtn()
+{
+ if (!enableDemo) {
+ QProcess killProcess;
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
+ killProcess.start("taskkill /im iio-emu /f");
+#else
+ killProcess.start("pkill iio-emu");
+#endif
+ killProcess.waitForFinished();
+
+ // iio-emu found in system
+ QString dirPath = QCoreApplication::applicationDirPath();
+ QString program = dirPath + "/iio-emu";
+ QStringList arguments;
+ arguments.append(ui->demoDevicesComboBox->currentText());
+ process->setProgram(program);
+ process->setArguments(arguments);
+ process->start();
+ auto started = process->waitForStarted();
+ if (!started) {
+ // retry to start the process
+ // path for iio-emu when Scopy is built manually
+ program = dirPath + "/iio-emu/iio-emu";
+ process->setProgram(program);
+ process->start();
+ started = process->waitForStarted();
+ if (!started) {
+ ui->description->setText("Server failed to start");
+ qDebug() << "Process failed to start";
+ return;
+ }
+ }
+
+ ui->enableDemoBtn->setChecked(true);
+ ui->enableDemoBtn->setText("Disable Demo");
+ ui->hostname->setText("127.0.0.1");
+
+ enableDemo = true;
+ } else {
+ process->kill();
+ ui->enableDemoBtn->setChecked(false);
+ ui->enableDemoBtn->setText("Enable Demo");
+ ui->hostname->setText("");
+
+ enableDemo = false;
+ }
+
+}
+
void ConnectDialog::discardSettings()
{
if (!ui->hostname->text().isEmpty()) {
diff --git a/src/connectDialog.hpp b/src/connectDialog.hpp
index bb1431846c..f132db3dab 100644
--- a/src/connectDialog.hpp
+++ b/src/connectDialog.hpp
@@ -22,6 +22,7 @@
#define CONNECTDIALOG_HPP
#include
+#include
extern "C" {
struct iio_context;
@@ -52,6 +53,7 @@ public Q_SLOTS:
private Q_SLOTS:
void btnClicked();
+ void enableDemoBtn();
void validateInput();
void updatePopUp(struct iio_context *ctx);
@@ -59,6 +61,8 @@ private Q_SLOTS:
private:
Ui::Connect *ui;
bool connected;
+ bool enableDemo;
+ QProcess *process;
void createContext(const QString& uri);
bool eventFilter(QObject *watched, QEvent *event);
};
diff --git a/src/cursor_readouts.cpp b/src/cursor_readouts.cpp
index 15ae5d57f9..2a18d65ba9 100644
--- a/src/cursor_readouts.cpp
+++ b/src/cursor_readouts.cpp
@@ -23,6 +23,7 @@
#include
#include
+#include
#include
#include
#include
@@ -41,18 +42,19 @@ CursorReadouts::CursorReadouts(QwtPlot *plot):
vAxis(QwtPlot::yLeft)
{
ui->setupUi(this);
-
ui->TimeCursors->setParent(plot->canvas());
ui->VoltageCursors->setParent(plot->canvas());
this->setGeometry(0, 0, 0, 0);
- plot->canvas()->installEventFilter(this);
+ plot->canvas()->installEventFilter(this);
ui->TimeCursors->setAttribute(Qt::WA_TransparentForMouseEvents);
ui->VoltageCursors->setAttribute(Qt::WA_TransparentForMouseEvents);
anim = new CustomAnimation(ui->VoltageCursors, "geometry");
anim2 = new CustomAnimation(ui->TimeCursors, "geometry");
+
+ setTransparency(0);
}
CursorReadouts::~CursorReadouts()
@@ -65,15 +67,21 @@ CursorReadouts::~CursorReadouts()
void CursorReadouts::setTransparency(int value)
{
double percent = (100 - value) / 100.0;
- QString color = "rgba(20, 20, 22, " + QString::number(percent);
+
+ QString color = "";
+ if (QIcon::themeName() == "scopy-default") {
+ color +="rgba(20, 20, 22, ";
+ } else {
+ color +="rgba(197, 197, 197, ";
+ }
+
+ color += QString::number(percent);
ui->TimeCursors->setStyleSheet("QWidget {"
"background-color: " + color + ");"
- "color: white;"
"}");
ui->VoltageCursors->setStyleSheet("QWidget {"
"background-color: " + color + ");"
- "color: white;"
"}");
}
diff --git a/src/dbgraph.cpp b/src/dbgraph.cpp
index fba30b0d5f..0a9f6d06d6 100644
--- a/src/dbgraph.cpp
+++ b/src/dbgraph.cpp
@@ -25,6 +25,7 @@
#include "plotpickerwrapper.h"
#include
+#include
using namespace adiscope;
@@ -123,8 +124,15 @@ dBgraph::dBgraph(QWidget *parent) : QwtPlot(parent),
setAxisAutoScale(QwtPlot::yLeft, false);
setAxisAutoScale(QwtPlot::xTop, false);
+ QColor plotColor;
+ if (QIcon::themeName() == "scopy-default") {
+ plotColor = QColor("#6E6E6F");
+ } else {
+ plotColor = QColor("#D3D3D3");
+ }
+
EdgelessPlotGrid *grid = new EdgelessPlotGrid;
- grid->setMajorPen(QColor("#353537"), 1.0, Qt::DashLine);
+ grid->setMajorPen(plotColor, 1.0, Qt::DashLine);
grid->setXAxis(QwtPlot::xTop);
grid->attach(this);
@@ -183,8 +191,8 @@ dBgraph::dBgraph(QWidget *parent) : QwtPlot(parent),
QwtAbstractScaleDraw::Labels, false);
QPalette palette = scaleItem->palette();
- palette.setBrush(QPalette::Foreground, QColor("#6E6E6F"));
- palette.setBrush(QPalette::Text, QColor("#6E6E6F"));
+ palette.setBrush(QPalette::Foreground, plotColor);
+ palette.setBrush(QPalette::Text, plotColor);
scaleItem->setPalette(palette);
scaleItem->setBorderDistance(0);
scaleItem->attach(this);
diff --git a/src/debug.cpp b/src/debug.cpp
index 0d59e1da54..51c2c6c09c 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -147,7 +147,7 @@ void Debug::scanChannels(const QString& devName)
void Debug::scanChannelAttributes(QString devName, QString& channel)
{
struct iio_device *device;
- struct iio_channel *ch;
+ struct iio_channel *ch = nullptr;
const char *attr;
unsigned int nb_attrs;
bool isOutput;
@@ -166,36 +166,37 @@ void Debug::scanChannelAttributes(QString devName, QString& channel)
attributeAvailable.clear();
filename.clear();
- if (channel != QString("Global")) {
+ const bool isGlobal = (channel == QString("Global"));
+ if (isGlobal) {
+ nb_attrs = iio_device_get_attrs_count(device);
+ } else {
ch = iio_device_find_channel(device, channel.toLatin1().data(), isOutput);
-
nb_attrs = iio_channel_get_attrs_count(ch);
+ }
- for (unsigned int k = 0; k < nb_attrs; k++) {
+ for (unsigned int k = 0; k < nb_attrs; k++) {
+ if (isGlobal) {
+ attr = iio_device_get_attr(device, k);
+ } else {
attr = iio_channel_get_attr(ch, k);
-
- if (QString(attr).contains("available", Qt::CaseInsensitive)) {
- attributeAvailable.append(QString(attr));
- } else {
- filename << QString(iio_channel_attr_get_filename(ch, attr));
- attributeList << QString(attr);
- }
}
- } else {
- nb_attrs = iio_device_get_attrs_count(device);
-
- for (unsigned int k = 0; k < nb_attrs; k++) {
- attr = iio_device_get_attr(device, k);
- if (QString(attr).contains("available", Qt::CaseInsensitive)) {
- attributeAvailable.append(QString(attr));
- } else {
+ if (QString(attr).contains("available", Qt::CaseInsensitive)) {
+ std::string tmp_attr = std::string(attr);
+ std::string to_erase = "_available";
+ size_t pos = tmp_attr.find(to_erase);
+ if (pos != std::string::npos) {
+ tmp_attr.erase(pos, to_erase.length());
+ }
+ attributeAvailable.append(QString::fromStdString(tmp_attr));
+ } else {
+ if (isGlobal) {
filename << QString(attr);
- attributeList << QString(attr);
+ } else {
+ filename << QString(iio_channel_attr_get_filename(ch, attr));
}
-
+ attributeList << QString(attr);
}
-
}
}
diff --git a/src/debugger.cpp b/src/debugger.cpp
index e9df9b96de..bbd109f529 100644
--- a/src/debugger.cpp
+++ b/src/debugger.cpp
@@ -18,6 +18,7 @@
* along with this program. If not, see .
*/
+#include "utils.h"
#include "debugger.h"
#include "ui_debugger.h"
#include
@@ -104,7 +105,10 @@ void Debugger::updateChannelComboBox(QString devName)
channels.append(QString("None"));
}
- std::sort(channels.begin(), channels.end(), std::less_equal());
+ std::sort(channels.begin(), channels.end(), [](QString a, QString b) {
+ return Util::compareNatural(a.toStdString(), b.toStdString());
+ });
+
ui->ChannelComboBox->addItems(channels);
updateAttributeComboBox(ui->ChannelComboBox->currentText());
@@ -153,7 +157,7 @@ void Debugger::updateValueWidget(QString attribute)
ui->valueStackedWidget->setEnabled(true);
for (QString t : availableValues) {
- if (t.contains(attribute.toLatin1(), Qt::CaseInsensitive)) {
+ if (!QString::compare(t, attribute, Qt::CaseInsensitive)) {
available = true;
/*read device, channel and get values to update widget*/
diff --git a/src/device_widget.cpp b/src/device_widget.cpp
index e094acad7e..ccdcbaec4c 100644
--- a/src/device_widget.cpp
+++ b/src/device_widget.cpp
@@ -43,7 +43,8 @@ DeviceWidget::DeviceWidget(QString uri, QString name,
if (name.compare("M2K") != 0) {
m_infoPage = InfoPageBuilder::newPage(InfoPageBuilder::GENERIC,
m_uri,
- parent->getPrefPanel());
+ parent->getPrefPanel(),
+ parent->getPhoneHome());
connect(m_infoPage->forgetDeviceButton(), SIGNAL(clicked(bool)),
this, SLOT(forgetDevice_clicked(bool)));
connect(m_infoPage->identifyDeviceButton(), SIGNAL(clicked(bool)),
@@ -183,6 +184,7 @@ M2kDeviceWidget::M2kDeviceWidget(QString uri, QString name, ToolLauncher *parent
m_infoPage = InfoPageBuilder::newPage(InfoPageBuilder::M2K,
m_uri,
parent->getPrefPanel(),
+ parent->getPhoneHome(),
nullptr);
connect(m_infoPage->forgetDeviceButton(), SIGNAL(clicked(bool)),
diff --git a/src/digitalio.cpp b/src/digitalio.cpp
index 351854e388..cc40bb947a 100644
--- a/src/digitalio.cpp
+++ b/src/digitalio.cpp
@@ -183,6 +183,8 @@ DigitalIO::DigitalIO(struct iio_context *ctx, Filter *filt, ToolMenuItem *toolMe
updateUi();
readPreferences();
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/digitalio");
+
}
void DigitalIO::readPreferences()
diff --git a/src/dmm.cpp b/src/dmm.cpp
index 38e4bf5cbc..570608ef1f 100644
--- a/src/dmm.cpp
+++ b/src/dmm.cpp
@@ -33,6 +33,10 @@
#include
#include
#include
+#include
+#include
+#include
+#include
#include
@@ -69,7 +73,10 @@ DMM::DMM(struct iio_context *ctx, Filter *filt, ToolMenuItem *toolMenuItem,
filename(""),
use_timer(false),
logging_refresh_rate(0),
- wheelEventGuard(nullptr)
+ wheelEventGuard(nullptr),
+ m_autoGainEnabled({true, true}),
+ m_historyForGain({0, 0}),
+ m_gainHistorySize(10)
{
ui->setupUi(this);
@@ -79,6 +86,13 @@ DMM::DMM(struct iio_context *ctx, Filter *filt, ToolMenuItem *toolMenuItem,
ui->sismograph_ch1->setColor(QColor("#ff7200"));
ui->sismograph_ch2->setColor(QColor("#9013fe"));
+ std::vector scales {ui->scaleCh1, ui->scaleCh2};
+ for (auto scale : scales) {
+ scale->setOrientation(Qt::Horizontal);
+ scale->setScalePosition(QwtThermo::LeadingScale);
+ scale->setOriginMode(QwtThermo::OriginCustom);
+ }
+
data_logging_timer = new PositionSpinButton({
{"s", 1},
{"min", 60},
@@ -160,6 +174,14 @@ DMM::DMM(struct iio_context *ctx, Filter *filt, ToolMenuItem *toolMenuItem,
connect(ui->btnCollapsePeakHold, SIGNAL(toggled(bool)),
SLOT(collapsePeakHold(bool)));
+ std::vector comboBoxes {ui->gainCh1ComboBox, ui->gainCh2ComboBox};
+
+ for (auto cb : comboBoxes) {
+ connect(cb, QOverload::of(&QComboBox::currentIndexChanged),
+ this, &DMM::gainModeChanged);
+ cb->setCurrentIndex(0);
+ }
+
setHistorySizeCh1(ui->historySizeCh1->currentIndex());
setHistorySizeCh2(ui->historySizeCh2->currentIndex());
@@ -188,6 +210,8 @@ DMM::DMM(struct iio_context *ctx, Filter *filt, ToolMenuItem *toolMenuItem,
wheelEventGuard = new MouseWheelWidgetGuard(ui->widget_2);
wheelEventGuard->installEventRecursively(ui->widget_2);
readPreferences();
+
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/voltmeter");
}
void DMM::readPreferences()
@@ -195,6 +219,52 @@ void DMM::readPreferences()
ui->instrumentNotes->setVisible(prefPanel->getInstrumentNotesActive());
}
+void DMM::gainModeChanged(int idx)
+{
+ const QObject *who = QObject::sender();
+ const int channelIdx = who == ui->gainCh1ComboBox ? 0 : (who == ui->gainCh2ComboBox ? 1 : -1);
+
+ if (channelIdx == -1 || !who) {
+ return;
+ }
+
+ QLabel *gainLabel = channelIdx == 0 ? ui->currentGainCh1Label : ui->currentGainCh2Label;
+
+ const bool started = isIioManagerStarted();
+ if (started) {
+ manager->lock();
+ }
+
+ // rebuild the flowgraph
+ // there might be data on in the gnuradio flowgraph that
+ // was captured using one gain mode and plotted and converted
+ // with another gain mode. This will ensure this situation doesn't
+ // happen
+ manager->disconnect(id_ch1);
+ manager->disconnect(id_ch2);
+
+ configureModes();
+
+ m_autoGainEnabled[channelIdx] = false;
+ if (idx == 0) { // auto
+ m_autoGainEnabled[channelIdx] = true;
+ } else if (idx == 1) { // low
+ gainLabel->setText("Low Gain");
+ m_m2k_analogin->setRange(static_cast(channelIdx),
+ libm2k::analog::PLUS_MINUS_25V);
+ } else if (idx == 2) { // high
+ gainLabel->setText("High Gain");
+ m_m2k_analogin->setRange(static_cast(channelIdx),
+ libm2k::analog::PLUS_MINUS_2_5V);
+ }
+
+ if (started) {
+ manager->start(id_ch1);
+ manager->start(id_ch2);
+ manager->unlock();
+ }
+}
+
void DMM::disconnectAll()
{
bool started = isIioManagerStarted();
@@ -227,8 +297,8 @@ void DMM::updateValuesList(std::vector values)
if(!use_timer)
boost::unique_lock lock(data_mutex);
- double volts_ch1 = m_m2k_analogin->convertRawToVolts(0, (int)values[0]);
- double volts_ch2 = m_m2k_analogin->convertRawToVolts(1, (int)values[1]);
+ const double volts_ch1 = m_m2k_analogin->convertRawToVolts(0, static_cast(values[0]));
+ const double volts_ch2 = m_m2k_analogin->convertRawToVolts(1, static_cast(values[1]));
ui->lcdCh1->display(volts_ch1);
ui->lcdCh2->display(volts_ch2);
@@ -242,6 +312,11 @@ void DMM::updateValuesList(std::vector values)
checkPeakValues(0, volts_ch1);
checkPeakValues(1, volts_ch2);
+ checkAndUpdateGainMode({m_m2k_analogin->convertRawToVolts(0, static_cast(values[2])),
+ m_m2k_analogin->convertRawToVolts(0, static_cast(values[3])),
+ m_m2k_analogin->convertRawToVolts(0, static_cast(values[4])),
+ m_m2k_analogin->convertRawToVolts(0, static_cast(values[5]))});
+
if(!use_timer)
data_cond.notify_all();
}
@@ -267,6 +342,102 @@ bool DMM::isIioManagerStarted() const
return manager->started() && ui->run_button->isChecked();
}
+void DMM::checkAndUpdateGainMode(const std::vector &volts)
+{
+ if (volts.size() < m_adc_nb_channels * 2) {
+ return;
+ }
+
+ std::vector gainLabels {ui->currentGainCh1Label, ui->currentGainCh2Label};
+ std::vector errorLabels {ui->ch1ErrorLabel, ui->ch2ErrorLabel};
+
+ double hi = 0.0;
+ double lo = 0.0;
+ std::tie(lo, hi) = m_m2k_analogin->getRangeLimits(libm2k::analog::PLUS_MINUS_2_5V);
+
+ // hist interval 10% from range of High gain ~ 250 mV
+ const double percent = 0.1; // 10%
+ const double half_hist_interval = (hi * percent) / 2.0;
+
+ const double hi_hi = hi + half_hist_interval;
+ const double hi_lo = hi - half_hist_interval;
+ const double lo_hi = lo + half_hist_interval;
+ const double lo_lo = lo - half_hist_interval;
+
+ for (int i = 0; i < m_adc_nb_channels; ++i) {
+ libm2k::analog::M2K_RANGE gain = libm2k::analog::PLUS_MINUS_25V;
+
+ bool changed = false;
+ if (volts[m_adc_nb_channels * i] > 0.0) {
+ changed = true;
+ if (volts[m_adc_nb_channels * i] >= hi_hi) {
+ gain = libm2k::analog::PLUS_MINUS_25V;
+ } else if (volts[m_adc_nb_channels * i] <= hi_lo) {
+ gain = libm2k::analog::PLUS_MINUS_2_5V;
+ } else {
+ changed = false;
+ }
+ }
+
+ if (volts[m_adc_nb_channels * i + 1] <= 0.0) {
+ changed = true;
+ if (volts[m_adc_nb_channels * i + 1] <= lo_lo ) {
+ gain = libm2k::analog::PLUS_MINUS_25V;
+ } else if (volts[m_adc_nb_channels * i + 1] >= lo_hi) {
+ gain = libm2k::analog::PLUS_MINUS_2_5V;
+ } else {
+ changed = false;
+ }
+ }
+
+ if (!changed) {
+ continue;
+ }
+
+ if (gain == libm2k::analog::PLUS_MINUS_2_5V && m_m2k_analogin->getRange(static_cast(i)) != gain
+ && m_historyForGain[i] < m_gainHistorySize) {
+ m_historyForGain[i]++;
+ continue; // we don't wanna change the gain now;
+ }
+
+ if (gain == libm2k::analog::PLUS_MINUS_25V) {
+ m_historyForGain[i] = 0;
+ }
+
+ errorLabels[i]->setText("");
+ if (m_m2k_analogin->getRange(static_cast(i)) != gain) {
+ if (m_autoGainEnabled[i]) {
+ const bool started = isIioManagerStarted();
+ if (started) {
+ manager->lock();
+ }
+
+ // rebuild the flowgraph
+ // there might be data on in the gnuradio flowgraph that
+ // was captured using one gain mode and plotted and converted
+ // with another gain mode. This will ensure this situation doesn't
+ // happen
+ manager->disconnect(id_ch1);
+ manager->disconnect(id_ch2);
+
+ configureModes();
+
+ m_m2k_analogin->setRange(static_cast(i), gain);
+
+ gainLabels[i]->setText(gain == libm2k::analog::PLUS_MINUS_25V ? "Low Gain" : "High Gain");
+
+ if (started) {
+ manager->start(id_ch1);
+ manager->start(id_ch2);
+ manager->unlock();
+ }
+ } else {
+ errorLabels[i]->setText("Out of range!");
+ }
+ }
+ }
+}
+
void DMM::collapseDataLog(bool checked)
{
if(checked)
@@ -370,17 +541,36 @@ void DMM::configureModes()
auto s2f1 = gr::blocks::short_to_float::make();
auto s2f2 = gr::blocks::short_to_float::make();
- bool is_ac_ch1 = ui->btn_ch1_ac->isChecked();
- bool is_ac_ch2 = ui->btn_ch2_ac->isChecked();
+ auto max1 = gr::blocks::max_ff::make(sample_rate / 10);
+ auto max2 = gr::blocks::max_ff::make(sample_rate / 10);
+ auto min1 = gr::blocks::min_ff::make(sample_rate / 10);
+ auto min2 = gr::blocks::min_ff::make(sample_rate / 10);
+ auto stv1 = gr::blocks::stream_to_vector::make(sizeof(float), sample_rate / 10);
+ auto stv2 = gr::blocks::stream_to_vector::make(sizeof(float), sample_rate / 10);
+
+ const bool is_ac_ch1 = ui->btn_ch1_ac->isChecked();
+ const bool is_ac_ch2 = ui->btn_ch2_ac->isChecked();
id_ch1 = manager->connect(s2f1, 0, 0, false, sample_rate / 10);
id_ch2 = manager->connect(s2f2, 1, 0, false, sample_rate / 10);
+ manager->connect(s2f1, 0, stv1, 0);
+ manager->connect(s2f2, 0, stv2, 0);
+ manager->connect(stv1, 0, max1, 0);
+ manager->connect(stv2, 0, max2, 0);
+ manager->connect(stv1, 0, min1, 0);
+ manager->connect(stv2, 0, min2, 0);
+
auto block1 = configureGraph(s2f1, is_ac_ch1);
auto block2 = configureGraph(s2f2, is_ac_ch2);
manager->connect(block1, 0, signal, 0);
manager->connect(block2, 0, signal, 1);
+
+ manager->connect(max1, 0, signal, 2);
+ manager->connect(min1, 0, signal, 3);
+ manager->connect(max2, 0, signal, 4);
+ manager->connect(min2, 0, signal, 5);
}
void DMM::chooseFile()
@@ -657,7 +847,6 @@ void DMM::writeAllSettingsToHardware()
for (unsigned int i = 0; i < m_adc_nb_channels; i++) {
auto chn = static_cast(i);
m_m2k_analogin->setVerticalOffset(chn, 0.0);
- m_m2k_analogin->setRange(chn, libm2k::analog::PLUS_MINUS_25V);
if (trigger) {
trigger->setAnalogMode(i, libm2k::ALWAYS);
}
diff --git a/src/dmm.hpp b/src/dmm.hpp
index 9b2a0e6cf5..a2bc5748a4 100644
--- a/src/dmm.hpp
+++ b/src/dmm.hpp
@@ -86,6 +86,10 @@ namespace adiscope {
std::vector m_min, m_max;
+ std::vector m_autoGainEnabled;
+ std::vector m_historyForGain;
+ int m_gainHistorySize;
+
void disconnectAll();
gr::basic_block_sptr configureGraph(gr::basic_block_sptr s2f,
bool is_ac);
@@ -94,6 +98,7 @@ namespace adiscope {
void writeAllSettingsToHardware();
void checkPeakValues(int, double);
bool isIioManagerStarted() const;
+ void checkAndUpdateGainMode(const std::vector &volts);
public Q_SLOTS:
void toggleTimer(bool start);
@@ -130,6 +135,8 @@ namespace adiscope {
void readPreferences();
+ void gainModeChanged(int idx);
+
Q_SIGNALS:
void showTool();
};
diff --git a/src/dmm_api.cpp b/src/dmm_api.cpp
index afefe27070..cfc309f1e2 100644
--- a/src/dmm_api.cpp
+++ b/src/dmm_api.cpp
@@ -189,4 +189,20 @@ void DMM_API::setNotes(QString str)
dmm->ui->instrumentNotes->setNotes(str);
}
+QVector DMM_API::getGainModes() const
+{
+ return {dmm->ui->gainCh1ComboBox->currentIndex(),
+ dmm->ui->gainCh2ComboBox->currentIndex()};
+}
+
+void DMM_API::setGainModes(const QVector &gainModes)
+{
+ if (gainModes.size() < dmm->m_adc_nb_channels) {
+ return;
+ }
+
+ dmm->ui->gainCh1ComboBox->setCurrentIndex(gainModes[0]);
+ dmm->ui->gainCh2ComboBox->setCurrentIndex(gainModes[1]);
+}
+
}
diff --git a/src/dmm_api.hpp b/src/dmm_api.hpp
index c292c56400..cfbff25d45 100644
--- a/src/dmm_api.hpp
+++ b/src/dmm_api.hpp
@@ -69,6 +69,8 @@ class DMM_API : public ApiObject
WRITE setPeakHoldEn)
Q_PROPERTY(QString notes READ getNotes WRITE setNotes)
+ Q_PROPERTY(QVector gainModes READ getGainModes WRITE setGainModes)
+
public:
bool get_mode_ac_ch1() const;
bool get_mode_ac_ch2() const;
@@ -113,6 +115,9 @@ class DMM_API : public ApiObject
QString getNotes();
void setNotes(QString);
+ QVector getGainModes() const;
+ void setGainModes(const QVector &gainModes);
+
Q_INVOKABLE void show();
explicit DMM_API(DMM *dmm) : ApiObject(), dmm(dmm) {}
diff --git a/src/dropdown_switch_list.cpp b/src/dropdown_switch_list.cpp
index b19b1aec2a..05f8affad8 100644
--- a/src/dropdown_switch_list.cpp
+++ b/src/dropdown_switch_list.cpp
@@ -89,11 +89,6 @@ DropdownSwitchList::DropdownSwitchList(int switchColCount, QWidget *parent):
m_treeView->setUniformRowHeights(true);
m_treeView->header()->setSectionResizeMode(0, QHeaderView::Fixed);
m_treeView->header()->setDefaultAlignment(Qt::AlignCenter);
-
- QFile file(":stylesheets/stylesheets/dropdown_switch_list.qss");
- file.open(QFile::ReadOnly);
- QString styleSheet = QString::fromLatin1(file.readAll());
- setStyleSheet(styleSheet);
}
QString DropdownSwitchList::title() const
diff --git a/src/homepage_controls.cpp b/src/homepage_controls.cpp
index dbf150056c..c4543629a7 100644
--- a/src/homepage_controls.cpp
+++ b/src/homepage_controls.cpp
@@ -52,7 +52,7 @@ HomepageControls::~HomepageControls()
void HomepageControls::updatePosition()
{
- move(parentWidget()->width() - 150, geometry().topLeft().y());
+ move(parentWidget()->width() - 120, 5);
}
bool HomepageControls::eventFilter(QObject *watched, QEvent *event)
diff --git a/src/info_page.cpp b/src/info_page.cpp
index b3105ad277..2bd36d901a 100644
--- a/src/info_page.cpp
+++ b/src/info_page.cpp
@@ -24,15 +24,17 @@
#include
#include
#include "libm2k/analog/dmm.hpp"
-
+#include "dynamicWidget.hpp"
#include
#include
#include
+#include
+#include
using namespace std;
using namespace adiscope;
-InfoPage::InfoPage(QString uri, Preferences *pref,
+InfoPage::InfoPage(QString uri, Preferences *pref, PhoneHome* phoneHome,
struct iio_context *ctx,
QWidget *parent) :
QWidget(parent),
@@ -44,7 +46,8 @@ InfoPage::InfoPage(QString uri, Preferences *pref,
m_led_timer(new QTimer(this)),
m_blink_timer(new QTimer(this)),
m_connected(false),
- m_search_interrupted(false)
+ m_search_interrupted(false),
+ m_phoneHome(phoneHome)
{
ui->setupUi(this);
ui->paramLabel->setText(uri);
@@ -170,8 +173,9 @@ QPair InfoPage::translateInfoParams(QString key)
} else if (key.contains("ip")) {
key = "IP Address";
} else if (key.startsWith("cal,gain") ||
- key.startsWith("cal,offset")) {
- key = "";
+ key.startsWith("cal,offset") ||
+ key.startsWith("cal,temp_lut")) {
+ advanced = true;
}
return QPair(advanced, key);
}
@@ -202,7 +206,14 @@ void InfoPage::setStatusLabel(QLabel *lbl, QString str, QString color)
{
lbl->setVisible(true);
lbl->setText(str);
- lbl->setStyleSheet("color: " + color);
+
+ if(color == "white"){
+ setDynamicProperty(lbl, "invalid", false);
+ setDynamicProperty(lbl, "valid", true);
+ }
+ else { setDynamicProperty(lbl, "valid", false);
+ setDynamicProperty(lbl, "invalid", true);
+ }
}
else
{
@@ -240,11 +251,13 @@ void InfoPage::refreshInfoWidget()
}
int pos = 0;
+ ui->paramLayout->setRowMinimumHeight(pos, 20);
+
for (auto key : m_info_params.keys()) {
QLabel *valueLbl = new QLabel(this);
QLabel *keyLbl = new QLabel(this);
valueLbl->setText(m_info_params.value(key));
- valueLbl->setStyleSheet("color: white");
+ valueLbl->setWordWrap(true);
keyLbl->setText(key);
keyLbl->setMinimumWidth(240);
keyLbl->setMaximumWidth(240);
@@ -252,23 +265,31 @@ void InfoPage::refreshInfoWidget()
ui->paramLayout->addWidget(valueLbl, pos, 1, 1, 1);
pos++;
}
+ pos++;
+ ui->paramLayout->addWidget(new QLabel(""), pos, 0, 1, 1);
if (m_advanced) {
- ui->paramLayout->setRowMinimumHeight(pos, 20);
pos++;
ui->paramLayout->addWidget(new QLabel("Advanced"), pos, 0, 1, 1);
pos++;
for (auto key : m_info_params_advanced.keys()) {
QLabel *valueLbl = new QLabel(this);
QLabel *keyLbl = new QLabel(this);
+
+ valueLbl->setWordWrap(true);
valueLbl->setText(m_info_params_advanced.value(key));
- valueLbl->setStyleSheet("color: white");
keyLbl->setText(key);
+
ui->paramLayout->addWidget(keyLbl, pos, 0, 1, 1);
ui->paramLayout->addWidget(valueLbl, pos, 1, 1, 1);
pos++;
}
+ pos++;
+ ui->paramLayout->addWidget(new QLabel(""), pos, 0, 1, 1);
}
+ // creates some spacing
+
+
}
QString InfoPage::uri() const
@@ -386,12 +407,23 @@ bool InfoPage::supportsCalibration()
return false;
}
+QString InfoPage::getFirmwareVersion() const
+{
+ return m_info_params.value("Firmware version", "");
+}
+
+QString InfoPage::getSerialNumber() const
+{
+ return m_info_params.value("Serial", "");
+}
+
M2kInfoPage::M2kInfoPage(QString uri,
Preferences* prefPanel,
+ PhoneHome* phoneHome,
struct iio_context *ctx,
QWidget *parent) :
- InfoPage(uri, prefPanel, ctx, parent),
- m_fabric_channel(nullptr)
+ InfoPage(uri, prefPanel, phoneHome, ctx, parent),
+ m_fabric_channel(nullptr), m_m2k(nullptr), m_refreshTemperatureTimer(nullptr)
{
ui->btnCalibrate->setEnabled(false);
ui->extraWidget->setFrameShape(QFrame::NoFrame);
@@ -401,6 +433,14 @@ M2kInfoPage::M2kInfoPage(QString uri,
ui->extraWidget->setMinimumHeight(700);
setConnectionStatusLabel(tr("Not connected"));
setCalibrationInfoLabel(tr("Always disconnect analog inputs/outputs before calibration"));
+ if(ctx) {
+ m_m2k = libm2k::context::m2kOpen(ctx, uri.toLocal8Bit().constData());
+ }
+
+ m_refreshTemperatureTimer = new QTimer(this);
+ connect(m_refreshTemperatureTimer, SIGNAL(timeout()), this, SLOT(refreshTemperature()));
+ connect(ui->btnRegister,SIGNAL(clicked()),this,SLOT(m2kRegistration()));
+ m_refreshTemperatureTimer->start(m_temperatureUpdateInterval);
}
@@ -409,10 +449,71 @@ M2kInfoPage::~M2kInfoPage()
}
+
+void M2kInfoPage::updateFwVersionWidget() {
+ if(m_phoneHome->getDone())
+ {
+ const int checked = this->checkLatestFwVersion(m_info_params.value("Firmware version"));
+ if (checked == 1) {
+ ui->lblFirmware->setText(tr("Firmware is up to date!"));
+ } else if (checked == 0) {
+ const QString message = tr("New firmware version is available. ") +
+ "Download " + m_phoneHome->getM2kVersion() + " "
+ "lblFirmware->setText(message + m_phoneHome->getM2kLink() + "\">here ");
+ ui->lblFirmware->setTextFormat(Qt::RichText);
+ ui->lblFirmware->setTextInteractionFlags(Qt::TextBrowserInteraction);
+ ui->lblFirmware->setOpenExternalLinks(true);
+ }
+ }
+}
+
+void M2kInfoPage::m2kRegistration()
+{
+ QString versionString = QString(m_info_params["Model"].split("Rev")[1][1]);
+ QString url = "https://my.analog.com/en/app/registration/hardware/ADALM2000?sn="+QString(getSerialNumber())+"&v=Rev."+versionString;
+ QDesktopServices::openUrl(QUrl(url));
+}
+
void M2kInfoPage::getDeviceInfo()
{
InfoPage::getDeviceInfo();
- //refreshTemperature();
+ updateFwVersionWidget();
+ refreshTemperature();
+}
+
+void M2kInfoPage::refreshTemperature()
+{
+
+ libm2k::context::M2k *temp_m2k = nullptr;
+ if(!m_ctx) {
+ temp_m2k = libm2k::context::m2kOpen(m_uri.toLocal8Bit().constData());
+ } else {
+ temp_m2k = m_m2k;
+ }
+
+ if(temp_m2k) {
+ auto dmm = temp_m2k->getDMM("ad9963");
+ auto ch = dmm->readChannel("temp0");
+ auto val = ch.value;
+ m_info_params["Temperature"] = QString::number(val);
+ }
+
+ if(!m_ctx) {
+ libm2k::context::contextClose(temp_m2k, false);
+ }
+
+ refreshInfoWidget();
+}
+
+void M2kInfoPage::setCtx(iio_context *ctx)
+{
+ InfoPage::setCtx(ctx);
+ if(ctx) {
+ m_m2k = libm2k::context::m2kOpen(ctx, "");
+ } else {
+ m_m2k = nullptr;
+ }
}
void M2kInfoPage::startIdentification(bool start)
@@ -483,3 +584,15 @@ void M2kInfoPage::blinkTimeout()
"done_led_overwrite_powerdown",
!oldVal);
}
+
+int M2kInfoPage::checkLatestFwVersion(const QString ¤tVersion) const {
+ if (m_phoneHome->getM2kVersion().isEmpty()) {
+ return -1;
+ }
+
+ if (m_phoneHome->getM2kVersion() == currentVersion) {
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/src/info_page.hpp b/src/info_page.hpp
index a649542694..b79b44d05b 100644
--- a/src/info_page.hpp
+++ b/src/info_page.hpp
@@ -27,9 +27,15 @@
#include
#include
#include
+#include
#include "iio.h"
+#include "phonehome.h"
+#include "libm2k/contextbuilder.hpp"
+#include "libm2k/context.hpp"
+
+
namespace Ui {
class InfoPage;
}
@@ -44,13 +50,14 @@ class InfoPage : public QWidget
public:
explicit InfoPage(QString uri,
Preferences* prefPanel,
+ PhoneHome* phoneHome,
struct iio_context *ctx = nullptr,
QWidget *parent = 0);
virtual ~InfoPage();
struct iio_context *ctx() const;
- void setCtx(iio_context *ctx);
+ virtual void setCtx(iio_context *ctx);
QString uri() const;
void setUri(QString uri);
@@ -67,6 +74,9 @@ class InfoPage : public QWidget
bool supportsIdentification();
bool supportsCalibration();
+ QString getFirmwareVersion() const;
+ QString getSerialNumber() const;
+
public Q_SLOTS:
void readPreferences();
void identifyDevice(bool clicked = true);
@@ -105,6 +115,7 @@ private Q_SLOTS:
QTimer *m_blink_timer;
bool m_connected;
bool m_search_interrupted;
+ PhoneHome* m_phoneHome;
};
@@ -114,20 +125,31 @@ class M2kInfoPage : public InfoPage
public:
explicit M2kInfoPage(QString uri,
Preferences* prefPanel,
+ PhoneHome* phoneHome,
struct iio_context *ctx = nullptr,
- QWidget *parent = 0);
+ QWidget *parent = 0);
~M2kInfoPage();
- void getDeviceInfo();
+
+ void getDeviceInfo() override;
+ void updateFwVersionWidget();
+ void setCtx(iio_context *ctx) override;
+ int checkLatestFwVersion(const QString ¤tVersion) const;
protected:
virtual void startIdentification(bool);
private Q_SLOTS:
void blinkTimeout();
+public Q_SLOTS:
+ void refreshTemperature();
+ void m2kRegistration();
private:
struct iio_channel *m_fabric_channel;
QFuture calibration_thread;
+ libm2k::context::M2k *m_m2k;
+ QTimer *m_refreshTemperatureTimer;
+ const int m_temperatureUpdateInterval = 5000;
};
@@ -142,13 +164,14 @@ class InfoPageBuilder
static InfoPage* newPage(InfoPageType page_type,
QString uri,
Preferences* prefPanel,
+ PhoneHome* phoneHome,
struct iio_context *ctx = nullptr,
QWidget *parent = 0)
{
switch (page_type) {
- case GENERIC: return new InfoPage(uri, prefPanel,
+ case GENERIC: return new InfoPage(uri, prefPanel, phoneHome,
ctx, parent);
- case M2K: return new M2kInfoPage(uri, prefPanel,
+ case M2K: return new M2kInfoPage(uri, prefPanel, phoneHome,
ctx, parent);
}
return nullptr;
diff --git a/src/linked_button.cpp b/src/linked_button.cpp
new file mode 100644
index 0000000000..344884d7ef
--- /dev/null
+++ b/src/linked_button.cpp
@@ -0,0 +1,29 @@
+#include "linked_button.hpp"
+#include "dynamicWidget.hpp"
+
+#include
+#include
+#include
+
+using namespace adiscope;
+
+LinkedButton::LinkedButton(QWidget* parent)
+ : QPushButton(parent)
+{
+ setDynamicProperty(this,"info_button", true);
+
+ this->setIcon(QIcon::fromTheme("ico info"));
+ this->setIconSize(QSize(32, 32));
+
+ this->setToolTip("See more info");
+
+ connect(this, SIGNAL(clicked()), this, SLOT(openUrl()));
+}
+
+void LinkedButton::openUrl() {
+ QDesktopServices::openUrl(QUrl(this->url));
+}
+
+void LinkedButton::setUrl(QString url) {
+ this->url = url;
+}
diff --git a/src/linked_button.hpp b/src/linked_button.hpp
new file mode 100644
index 0000000000..3366a9f968
--- /dev/null
+++ b/src/linked_button.hpp
@@ -0,0 +1,25 @@
+#ifndef LINKEDBUTTON_HPP
+#define LINKEDBUTTON_HPP
+
+#include
+
+namespace adiscope {
+
+class LinkedButton : public QPushButton
+{
+ Q_OBJECT
+
+public:
+ explicit LinkedButton(QWidget* parent = Q_NULLPTR);
+
+ void setUrl(QString url);
+
+private:
+ QString url;
+
+public Q_SLOTS:
+ void openUrl();
+};
+}
+
+#endif // LINKEDBUTTON_HPP
diff --git a/src/logicanalyzer/annotationcurve.cpp b/src/logicanalyzer/annotationcurve.cpp
index 59cea4ad7b..c490f9e9a9 100644
--- a/src/logicanalyzer/annotationcurve.cpp
+++ b/src/logicanalyzer/annotationcurve.cpp
@@ -441,8 +441,15 @@ void AnnotationCurve::drawLines(QPainter *painter, const QwtScaleMap &xMap, cons
painter->save();
- painter->setPen(QPen(QBrush(Qt::white), 2));
- painter->setBrush(QBrush(Qt::black));
+ QColor painterColor;
+
+ if (QIcon::themeName() == "scopy-default") {
+ painterColor = Qt::white;
+ } else {
+ painterColor = Qt::black;
+ }
+
+ painter->setPen(QPen(QBrush(painterColor), 2));
int currentTitleIndex = 0;
const int pixOffsetFromCanvasMargin = 5;
for (const QString &title : titles) {
diff --git a/src/logicanalyzer/logic_analyzer.cpp b/src/logicanalyzer/logic_analyzer.cpp
index ea9137e84b..0607bc298c 100644
--- a/src/logicanalyzer/logic_analyzer.cpp
+++ b/src/logicanalyzer/logic_analyzer.cpp
@@ -53,12 +53,15 @@
#include "osc_export_settings.h"
#include "filemanager.h"
#include "config.h"
+#include "state_updater.h"
using namespace adiscope;
using namespace adiscope::logic;
constexpr int MAX_BUFFER_SIZE_ONESHOT = 4 * 1024 * 1024; // 4M
-constexpr int MAX_BUFFER_SIZE_STREAM = 64 * 4 * 1024 * 1024; // 64 x 4M
+constexpr int MAX_BUFFER_SIZE_STREAM = 1024 * 1024 * 1024; // 1Gb
+constexpr int MAX_SR_STREAM = 5e6; // 10M
+constexpr int MAX_KERNEL_BUFFERS = 64;
constexpr int DIGITAL_NR_CHANNELS = 16;
/* helper method to sort srd_decoder objects based on ids(name) */
@@ -93,7 +96,7 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
{"k samples", 1E+3},
{"M samples", 1E+6},
{"G samples", 1E+9},
- }, tr("Nr of samples"), 1,
+ }, tr("Nr of samples"), 1000,
MAX_BUFFER_SIZE_ONESHOT,
true, false, this, {1, 2, 5})),
m_timePositionButton(new PositionSpinButton({
@@ -109,6 +112,7 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
m_resetHorizAxisOffset(true),
m_captureThread(nullptr),
m_stopRequested(false),
+ m_acquisitionStarted(false),
m_plotScrollBar(new QScrollBar(Qt::Vertical, this)),
m_started(false),
m_selectedChannel(-1),
@@ -123,7 +127,9 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
m_saveRestoreSettings(nullptr),
m_oscPlot(nullptr),
m_oscChannelSelected(-1),
- m_oscDecoderMenu(nullptr)
+ m_oscDecoderMenu(nullptr),
+ m_currentKernelBuffers(4),
+ m_triggerUpdater(new StateUpdater(250, this))
{
// setup ui
setupUi();
@@ -133,8 +139,6 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
m_plot.setLeftVertAxesCount(1);
- // TODO: get number of channels from libm2k;
-
for (uint8_t i = 0; i < m_nbChannels; ++i) {
QCheckBox *channelBox = new QCheckBox("DIO " + QString::number(i));
@@ -151,9 +155,11 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
channelBox->setChecked(true);
+ triggerBox->setStyleSheet("QComboBox QAbstractItemView { min-width: 130px; }");
+
+ triggerBox->setSizeAdjustPolicy(QComboBox::AdjustToContentsOnFirstShow);
for (int i = 1; i < ui->triggerComboBox->count(); ++i) {
- triggerBox->addItem(ui->triggerComboBox->itemIcon(i),
- ui->triggerComboBox->itemText(i));
+ triggerBox->addItem(ui->triggerComboBox->itemText(i));
}
int condition = static_cast(
@@ -218,14 +224,18 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
m_timePositionButton->setStep(1);
- // default: stream
- ui->btnStreamOneShot->setChecked(false);
+ // default: oneshot
+ ui->btnStreamOneShot->setChecked(true);
// default
m_sampleRateButton->setValue(m_sampleRate);
m_sampleRateButton->setIntegerDivider(m_sampleRateButton->maxValue());
m_bufferSizeButton->setValue(m_bufferSize);
+ m_triggerUpdater->setOffState(CapturePlot::Stop);
+ connect(m_triggerUpdater, &StateUpdater::outputChanged,
+ &m_plot, &CapturePlot::setTriggerState);
+
readPreferences();
ui->btnGeneralSettings->setChecked(true);
@@ -238,6 +248,8 @@ LogicAnalyzer::LogicAnalyzer(struct iio_context *ctx, adiscope::Filter *filt,
// Scroll wheel event filter
m_wheelEventGuard = new MouseWheelWidgetGuard(ui->mainWidget);
m_wheelEventGuard->installEventRecursively(ui->mainWidget);
+
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/logicanalyzer");
}
LogicAnalyzer::~LogicAnalyzer()
@@ -250,11 +262,6 @@ LogicAnalyzer::~LogicAnalyzer()
disconnect(prefPanel, &Preferences::notify, this, &LogicAnalyzer::readPreferences);
- for (auto &curve : m_plotCurves) {
- m_plot.removeDigitalPlotCurve(curve);
- delete curve;
- }
-
if (m_captureThread) {
m_stopRequested = true;
m_m2kDigital->cancelAcquisition();
@@ -263,6 +270,11 @@ LogicAnalyzer::~LogicAnalyzer()
m_captureThread = nullptr;
}
+ for (auto &curve : m_plotCurves) {
+ m_plot.removeDigitalPlotCurve(curve);
+ delete curve;
+ }
+
if (m_buffer) {
delete[] m_buffer;
m_buffer = nullptr;
@@ -304,6 +316,13 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
// save the state of the tool
m_saveRestoreSettings = std::unique_ptr(new SaveRestoreToolSettings(this));
+ if (m_started) {
+ auto btn = dynamic_cast(run_button);
+ if (btn) {
+ btn->setChecked(false);
+ }
+ }
+
// disable the menu item for the logic analyzer when mixed signal view is enabled
toolMenuItem->setDisabled(true);
@@ -314,6 +333,12 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
QTabWidget *tabWidget = new QTabWidget();
tabWidget->setMovable(true);
+ QScrollArea *generalScrollArea = new QScrollArea();
+ generalScrollArea->setWidgetResizable(true);
+ generalScrollArea->setMinimumSize(220, 300);
+ generalScrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ generalScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
QWidget *channelEnumerator = new QWidget();
QVBoxLayout *layout = new QVBoxLayout();
QGridLayout *chEnumeratorLayout = new QGridLayout();
@@ -342,6 +367,7 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
});
QCheckBox *channelBox = new QCheckBox("DIO " + QString::number(i));
+ curve->setName("DIO " + QString::number(i));
QHBoxLayout *hBoxLayout = new QHBoxLayout(this);
@@ -371,9 +397,10 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
});
connect(channelBox, &QCheckBox::toggled, [=](bool toggled){
+ const int oscAnalogChannels = m_oscPlot->getAnalogChannels();
m_oscPlot->enableDigitalPlotCurve(i, toggled);
- m_oscPlot->setOffsetWidgetVisible(i + m_oscAnalogChannels, toggled);
- m_oscPlot->positionInGroupChanged(i + m_oscAnalogChannels, 0, 0);
+ m_oscPlot->setOffsetWidgetVisible(i + oscAnalogChannels, toggled);
+ m_oscPlot->positionInGroupChanged(i + oscAnalogChannels, 0, 0);
m_oscPlot->replot();
});
channelBox->setChecked(false);
@@ -588,9 +615,10 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
decoderComboBox->setCurrentIndex(0);
connect(decoderBox, &QCheckBox::toggled, [=](bool toggled){
- m_oscPlot->enableDigitalPlotCurve(m_oscAnalogChannels + m_nbChannels + itemsInLayout, toggled);
- m_oscPlot->setOffsetWidgetVisible(m_oscAnalogChannels + m_nbChannels + itemsInLayout, toggled);
- m_oscPlot->positionInGroupChanged(m_oscAnalogChannels + m_nbChannels + itemsInLayout, 0, 0);
+ const int analogChannels = m_oscPlot->getAnalogChannels();
+ m_oscPlot->enableDigitalPlotCurve(analogChannels + m_nbChannels + itemsInLayout, toggled);
+ m_oscPlot->setOffsetWidgetVisible(analogChannels + m_nbChannels + itemsInLayout, toggled);
+ m_oscPlot->positionInGroupChanged(analogChannels + m_nbChannels + itemsInLayout, 0, 0);
m_oscPlot->replot();
});
@@ -633,7 +661,24 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
nameLineEdit->setAlignment(Qt::AlignCenter);
nameLineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ QLineEdit *traceHeightLineEdit = new QLineEdit();
+ traceHeightLineEdit->setText("");
+ traceHeightLineEdit->setVisible(true);
+ traceHeightLineEdit->setDisabled(true);
+ traceHeightLineEdit->setAlignment(Qt::AlignCenter);
+ traceHeightLineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+ QComboBox *currentChannelTriggerComboBox = new QComboBox();
+ currentChannelTriggerComboBox->addItem("-");
+ for (int i = 1; i < ui->triggerComboBox->count(); ++i) {
+ currentChannelTriggerComboBox->addItem(ui->triggerComboBox->itemIcon(i),
+ ui->triggerComboBox->itemText(i));
+ }
+
currentChannelMenuLayout->addWidget(nameLineEdit);
+ currentChannelMenuLayout->addWidget(traceHeightLineEdit);
+ currentChannelMenuLayout->addWidget(currentChannelTriggerComboBox);
+
currentChannelMenuLayout->addLayout(decoderSettingsLayout);
currentChannelMenu->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -645,17 +690,97 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
stackDecoderLayout->insertSpacerItem(0, new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding));
stackDecoderLayout->insertWidget(1, stackDecoderComboBox);
- currentChannelMenuLayout->insertItem(-1, new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
+ /* Setup external trigger menu */
+ QWidget *externalTrigger = new QWidget(currentChannelMenu);
+ QVBoxLayout *externalTriggerLayout = new QVBoxLayout(externalTrigger);
+ externalTriggerLayout->setContentsMargins(0, 0, 0, 0);
+ externalTrigger->setLayout(externalTriggerLayout);
+
+ QHBoxLayout *externalSubTitle = new QHBoxLayout();
+ auto label = new QLabel("EXTERNAL TRIGGER ");
+
+ externalSubTitle->addWidget(label);
+ externalSubTitle->setContentsMargins(0, 0, 0, 0);
+ externalSubTitle->setSpacing(0);
+
+ QFrame *line = new QFrame(externalTrigger);
+ line->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ line->setMaximumSize(QSize(16777215, 1));
+ line->setStyleSheet(QString::fromUtf8("border: 1px solid rgba(255, 255, 255, 70);"));
+ line->setFrameShape(QFrame::HLine);
+ line->setFrameShadow(QFrame::Sunken);
+
+ externalSubTitle->addWidget(line);
+ externalTriggerLayout->addLayout(externalSubTitle);
+
+ QGridLayout *externalGridLayout = new QGridLayout();
+ auto externalOnOff = new adiscope::CustomSwitch();
+ externalGridLayout->addWidget(externalOnOff, 0, 0);
+ auto labelCondition = new QLabel("Condition");
+ externalGridLayout->addWidget(labelCondition, 1, 0);
+
+ QFile file(":stylesheets/stylesheets/customSwitch.qss");
+ file.open(QFile::ReadOnly);
+ QString styleSheet = QString::fromLatin1(file.readAll());
+ externalOnOff->setStyleSheet(styleSheet);
+
+ auto comboBoxCondition = new QComboBox();
+ externalGridLayout->addWidget(comboBoxCondition, 1, 1);
+
+ comboBoxCondition->setDisabled(true);
+
+ connect(externalOnOff, &CustomSwitch::toggled, [=](bool on){
+ if (on) {
+ comboBoxCondition->setEnabled(true);
+ m_m2kDigital->getTrigger()->setDigitalSource(SRC_TRIGGER_IN);
+ const int condition = comboBoxCondition->currentIndex();
+ m_m2kDigital->getTrigger()->setDigitalExternalCondition(
+ static_cast((condition + 5) % 6));
+ } else {
+ comboBoxCondition->setCurrentIndex(0);
+ comboBoxCondition->setDisabled(true);
+ m_m2kDigital->getTrigger()->setDigitalSource(SRC_NONE);
+ }
+ });
+ comboBoxCondition->addItem("-");
+ for (int i = 1; i < ui->triggerComboBox->count(); ++i) {
+ comboBoxCondition->addItem(ui->triggerComboBox->itemIcon(i),
+ ui->triggerComboBox->itemText(i));
+ }
+
+ connect(comboBoxCondition, QOverload::of(&QComboBox::currentIndexChanged), [=](int index){
+ m_m2kDigital->getTrigger()->setDigitalExternalCondition(
+ static_cast((index + 5) % 6));
+ });
+
+ externalTriggerLayout->addLayout(externalGridLayout);
+
+ layout->addWidget(externalTrigger);
+
+ currentChannelMenuLayout->insertItem(-1, new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
tabWidget->addTab(channelEnumerator, "General");
const int channelMenuTabId = tabWidget->addTab(currentChannelMenuScrollArea, "Channel");
- connect(m_oscPlot, &CapturePlot::channelSelected, [=](int chIdx, bool selected){
+ m_oscChannelSelectedConnection = connect(m_oscPlot, &CapturePlot::channelSelected, [=](int chIdx, bool selected){
chIdx -= m_oscAnalogChannels;
if (m_oscChannelSelected != chIdx && selected) {
m_oscChannelSelected = chIdx;
nameLineEdit->setEnabled(true);
nameLineEdit->setText(m_oscPlotCurves[chIdx]->getName());
+ traceHeightLineEdit->setEnabled(true);
+ traceHeightLineEdit->setText(QString::number(m_oscPlotCurves[chIdx]->getTraceHeight()));
+
+ if (m_oscChannelSelected < m_nbChannels) {
+ currentChannelTriggerComboBox->setEnabled(true);
+ QComboBox *triggerBox = qobject_cast(chEnumeratorLayout->itemAtPosition(m_oscChannelSelected % 8,
+ m_oscChannelSelected / 8)->layout()->itemAt(1)->widget());
+ currentChannelTriggerComboBox->setCurrentIndex(triggerBox->currentIndex());
+ } else {
+ currentChannelTriggerComboBox->setDisabled(true);
+ QSignalBlocker sb(currentChannelTriggerComboBox);
+ currentChannelTriggerComboBox->setCurrentIndex(0);
+ }
tabWidget->setCurrentIndex(channelMenuTabId);
@@ -680,6 +805,10 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
m_oscChannelSelected = -1;
nameLineEdit->setDisabled(true);
nameLineEdit->setText("No channel selected!");
+ traceHeightLineEdit->setDisabled(true);
+ traceHeightLineEdit->setText("");
+ currentChannelTriggerComboBox->setDisabled(true);
+ currentChannelTriggerComboBox->setCurrentIndex(0);
if (m_oscDecoderMenu) {
decoderSettingsLayout->removeWidget(m_oscDecoderMenu);
@@ -691,6 +820,32 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
updateButtonStackedDecoder();
});
+ connect(traceHeightLineEdit, &QLineEdit::editingFinished, [=](){
+ int value = traceHeightLineEdit->text().toInt();
+ m_oscPlotCurves[m_oscChannelSelected]->setTraceHeight(value);
+ m_oscPlot->replot();
+ m_oscPlot->positionInGroupChanged(m_oscChannelSelected, 0, 0);
+ });
+
+ connect(currentChannelTriggerComboBox, QOverload::of(&QComboBox::currentIndexChanged), [=](int index) {
+ if (m_oscChannelSelected != -1 && m_oscChannelSelected < m_nbChannels) {
+ QComboBox *triggerBox = qobject_cast(chEnumeratorLayout->itemAtPosition(m_oscChannelSelected % 8,
+ m_oscChannelSelected / 8)->layout()->itemAt(1)->widget());
+ triggerBox->setCurrentIndex(index);
+ }
+ });
+
+ connect(tabWidget, &QTabWidget::currentChanged, [=](int index){
+ if (index == tabWidget->indexOf(currentChannelMenuScrollArea)) {
+ if (m_oscChannelSelected != -1 && m_oscChannelSelected < m_nbChannels) {
+ currentChannelTriggerComboBox->setEnabled(true);
+ QComboBox *triggerBox = qobject_cast(chEnumeratorLayout->itemAtPosition(m_oscChannelSelected % 8,
+ m_oscChannelSelected / 8)->layout()->itemAt(1)->widget());
+ currentChannelTriggerComboBox->setCurrentIndex(triggerBox->currentIndex());
+ }
+ }
+ });
+
connect(stackDecoderComboBox, &QComboBox::currentTextChanged, [=](const QString &text) {
if (m_oscChannelSelected < m_nbChannels) {
return;
@@ -735,11 +890,12 @@ std::vector LogicAnalyzer::enableMixedSignalView(CapturePlot *osc, in
});
currentChannelMenuScrollArea->setWidget(currentChannelMenu);
+ generalScrollArea->setWidget(channelEnumerator);
- tabWidget->addTab(channelEnumerator, "General");
+ tabWidget->addTab(generalScrollArea, "General");
tabWidget->addTab(currentChannelMenuScrollArea, "Channel");
- return {tabWidget};
+ return {tabWidget, generalScrollArea};
}
void LogicAnalyzer::disableMixedSignalView()
@@ -758,6 +914,10 @@ void LogicAnalyzer::disableMixedSignalView()
curve = m_oscPlot->getDigitalPlotCurve(0);
}
+ m_oscPlotCurves.clear();
+ m_oscChannelSelected = -1;
+
+ disconnect(m_oscChannelSelectedConnection);
m_oscPlot = nullptr;
}
@@ -855,6 +1015,11 @@ void LogicAnalyzer::onTimeTriggerValueChanged(double value)
return;
}
+ const bool wasRunning = m_started;
+ if (wasRunning) {
+ startStop(false);
+ }
+
m_plot.cancelZoom();
m_plot.zoomBaseUpdate();
@@ -870,16 +1035,25 @@ void LogicAnalyzer::onTimeTriggerValueChanged(double value)
m_m2kDigital->getTrigger()->setDigitalDelay(value);
updateBufferPreviewer(0, m_lastCapturedSample);
+
+ if (wasRunning) {
+ startStop(true);
+ }
}
void LogicAnalyzer::onSampleRateValueChanged(double value)
{
+ const bool wasRunning = m_started;
+ if (wasRunning) {
+ startStop(false);
+ }
+
qDebug() << "Sample rate: " << value;
m_sampleRate = value;
if (ui->btnStreamOneShot->isChecked()) { // oneshot
m_plot.cancelZoom();
- m_timePositionButton->setValue(m_timeTriggerOffset);
+// m_timePositionButton->setValue(m_timeTriggerOffset * m_sampleRate);
m_plot.setHorizOffset(1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset);
m_horizOffset = 1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset;
m_plot.replot();
@@ -905,15 +1079,24 @@ void LogicAnalyzer::onSampleRateValueChanged(double value)
double maxT = (1 << 13) * (1.0 / m_sampleRate) - 1.0 / m_sampleRate * m_bufferSize / 2.0; // 8192 * time between samples
double minT = -((1 << 13) - 1) * (1.0 / m_sampleRate) - 1.0 / m_sampleRate * m_bufferSize / 2.0; // (2 << 13) - 1 max hdl fifo depth
m_plot.setTimeTriggerInterval(minT, maxT);
+
+ if (wasRunning) {
+ startStop(true);
+ }
}
void LogicAnalyzer::onBufferSizeChanged(double value)
{
+ const bool wasRunning = m_started;
+ if (wasRunning) {
+ startStop(false);
+ }
+
m_bufferSize = value;
if (ui->btnStreamOneShot->isChecked()) { // oneshot
m_plot.cancelZoom();
- m_timePositionButton->setValue(m_timeTriggerOffset);
+// m_timePositionButton->setValue(m_timeTriggerOffset);
m_plot.setHorizOffset(1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset);
m_horizOffset = 1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset;
m_plot.replot();
@@ -938,22 +1121,29 @@ void LogicAnalyzer::onBufferSizeChanged(double value)
double maxT = (1 << 13) * (1.0 / m_sampleRate) - 1.0 / m_sampleRate * m_bufferSize / 2.0; // 8192 * time between samples
double minT = -((1 << 13) - 1) * (1.0 / m_sampleRate) - 1.0 / m_sampleRate * m_bufferSize / 2.0; // (2 << 13) - 1 max hdl fifo depth
m_plot.setTimeTriggerInterval(minT, maxT);
+
+ if (wasRunning) {
+ startStop(true);
+ }
}
void LogicAnalyzer::on_btnStreamOneShot_toggled(bool toggled)
{
- qDebug() << "Btn stream one shot toggled !!!!!: " << toggled;
+ const bool wasRunning = m_started;
+ if (wasRunning) {
+ startStop(false);
+ }
m_plot.enableTimeTrigger(toggled);
- m_timePositionButton->setVisible(toggled);
+ m_timePositionButton->setEnabled(toggled);
m_m2kDigital->getTrigger()->setDigitalStreamingFlag(toggled);
if (toggled) { // oneshot
m_plot.cancelZoom();
- m_timePositionButton->setValue(m_timeTriggerOffset);
- m_plot.setHorizOffset(1.0 / m_sampleRate * m_bufferSize / 2.0 - m_timeTriggerOffset);
- m_horizOffset = 1.0 / m_sampleRate * m_bufferSize / 2.0 - m_timeTriggerOffset;
+ m_timePositionButton->setValue(m_timeTriggerOffset * m_sampleRate);
+ m_plot.setHorizOffset(1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset);
+ m_horizOffset = 1.0 / m_sampleRate * m_bufferSize / 2.0 + m_timeTriggerOffset;
m_plot.replot();
m_plot.zoomBaseUpdate();
} else { // streaming
@@ -968,6 +1158,10 @@ void LogicAnalyzer::on_btnStreamOneShot_toggled(bool toggled)
m_bufferSizeButton->setMaxValue(toggled ? MAX_BUFFER_SIZE_ONESHOT
: MAX_BUFFER_SIZE_STREAM);
m_bufferPreviewer->setCursorVisible(toggled);
+
+ if (wasRunning) {
+ startStop(true);
+ }
}
void LogicAnalyzer::on_btnGroupChannels_toggled(bool checked)
@@ -998,6 +1192,13 @@ void LogicAnalyzer::channelSelectedChanged(int chIdx, bool selected)
qDebug() << "Selected channel: " << chIdx;
m_selectedChannel = chIdx;
+
+ if (m_selectedChannel < m_nbChannels) {
+ ui->hardwareName->setText("DIO " + QString::number(m_selectedChannel));
+ } else {
+ ui->hardwareName->setText("");
+ }
+
ui->nameLineEdit->setEnabled(true);
ui->nameLineEdit->setText(m_plotCurves[m_selectedChannel]->getName());
ui->traceHeightLineEdit->setEnabled(true);
@@ -1040,6 +1241,7 @@ void LogicAnalyzer::channelSelectedChanged(int chIdx, bool selected)
}
} else if (m_selectedChannel == chIdx && !selected) {
m_selectedChannel = -1;
+ ui->hardwareName->setText("");
ui->nameLineEdit->setDisabled(true);
ui->nameLineEdit->setText("");
ui->traceHeightLineEdit->setDisabled(true);
@@ -1065,7 +1267,7 @@ void LogicAnalyzer::setupUi()
ui->setupUi(this);
// Hide the run button
- ui->runSingleWidget->enableRunButton(false);
+// ui->runSingleWidget->enableRunButton(false);
int gsettings_panel = ui->stackedWidget->indexOf(ui->generalSettings);
ui->btnGeneralSettings->setProperty("id", QVariant(-gsettings_panel));
@@ -1127,8 +1329,6 @@ void LogicAnalyzer::setupUi()
ui->vLayoutBufferSlot->addWidget(m_bufferPreviewer);
- m_plot.canvas()->setStyleSheet("background-color: #272730");
-
// Setup sweep settings menu
@@ -1272,18 +1472,6 @@ void LogicAnalyzer::connectSignalsAndSlots()
connect(ui->nameLineEdit, &QLineEdit::textChanged, [=](const QString &text){
m_plot.setChannelName(text, m_selectedChannel);
m_plotCurves[m_selectedChannel]->setName(text);
- if (m_selectedChannel < m_nbChannels) {
- QLayout *widgetInLayout = ui->channelEnumeratorLayout->itemAtPosition(m_selectedChannel % 8,
- m_selectedChannel / 8)->layout();
- auto channelBox = dynamic_cast(widgetInLayout->itemAt(0)->widget());
- channelBox->setText(text);
- } else {
- const int selectedDecoder = m_selectedChannel - m_nbChannels;
- QLayout *widgetInLayout = ui->decoderEnumeratorLayout->itemAtPosition(selectedDecoder / 2,
- selectedDecoder % 2)->widget()->layout();
- auto decoderBox = dynamic_cast(widgetInLayout->itemAt(0)->widget());
- decoderBox->setText(text);
- }
});
connect(ui->traceHeightLineEdit, &QLineEdit::textChanged, [=](const QString &text){
@@ -1427,10 +1615,10 @@ void LogicAnalyzer::updateBufferPreviewer(int64_t min, int64_t max)
long long totalSamples = m_bufferSize;
if (totalSamples > 0) {
- const int offset = ui->btnStreamOneShot->isChecked() ? m_timePositionButton->value() * (1.0 / m_sampleRate)
+ const int offset = ui->btnStreamOneShot->isChecked() ? m_timePositionButton->value()
: 0;
- dataInterval.setMinValue(-((min / m_sampleRate) + offset));
- dataInterval.setMaxValue((max / m_sampleRate) - offset);
+ dataInterval.setMinValue(offset / m_sampleRate);
+ dataInterval.setMaxValue((offset + max) / m_sampleRate);
}
// Use the two intervals to determine the width and position of the
@@ -1487,11 +1675,11 @@ void LogicAnalyzer::initBufferScrolling()
});
connect(m_bufferPreviewer, &BufferPreviewer::bufferResetPosition, [=](){
m_plot.setHorizOffset(1.0 / m_sampleRate * m_bufferSize / 2.0 +
- (ui->btnStreamOneShot ? 0 : m_timeTriggerOffset));
+ (ui->btnStreamOneShot ? 0 : m_timeTriggerOffset / m_sampleRate));
m_plot.replot();
updateBufferPreviewer(0, m_lastCapturedSample);
m_horizOffset = 1.0 / m_sampleRate * m_bufferSize / 2.0 +
- (ui->btnStreamOneShot ? 0 : m_timeTriggerOffset);
+ (ui->btnStreamOneShot ? 0 : m_timeTriggerOffset / m_sampleRate);
});
}
@@ -1503,6 +1691,7 @@ void LogicAnalyzer::startStop(bool start)
m_started = start;
+ m_triggerUpdater->setEnabled(start);
if (start) {
if (m_captureThread) {
m_stopRequested = true;
@@ -1511,6 +1700,10 @@ void LogicAnalyzer::startStop(bool start)
m_captureThread = nullptr;
}
+ m_plot.setSampleRatelabelValue(m_sampleRate);
+ m_plot.setBufferSizeLabelValue(m_bufferSize);
+ m_plot.setTimeBaseLabelValue(m_bufferSize / m_sampleRate / m_plot.xAxisNumDiv());
+
m_stopRequested = false;
m_m2kDigital->stopAcquisition();
@@ -1527,7 +1720,7 @@ void LogicAnalyzer::startStop(bool start)
const double delay = oneShotOrStream ? m_timeTriggerOffset * m_sampleRate
: 0;
- const double setSampleRate = m_m2kDigital->setSampleRateIn((sampleRate+1));
+ const double setSampleRate = m_m2kDigital->setSampleRateIn((sampleRate + 1));
m_sampleRateButton->setValue(setSampleRate);
m_m2kDigital->getTrigger()->setDigitalStreamingFlag(!oneShotOrStream);
@@ -1544,26 +1737,6 @@ void LogicAnalyzer::startStop(bool start)
m_lastCapturedSample = 0;
- if (m_autoMode) {
-
- m_plot.setTriggerState(CapturePlot::Auto);
-
- double oneBufferTimeOut = m_timerTimeout;
-
- if (!oneShotOrStream) {
- uint64_t chunks = 4;
- while ((bufferSizeAdjusted >> chunks) > (1 << 19)) {
- chunks++; // select a small size for the chunks
- // example: 2^19 samples in each chunk
- }
- const uint64_t chunk_size = (bufferSizeAdjusted >> chunks) > 0 ? (bufferSizeAdjusted >> chunks) : 4 ;
- const uint64_t buffersCount = bufferSizeAdjusted / chunk_size;
- oneBufferTimeOut /= buffersCount;
- }
-
- m_timer->start(oneBufferTimeOut);
- }
-
m_captureThread = new std::thread([=](){
if (m_buffer) {
@@ -1571,95 +1744,201 @@ void LogicAnalyzer::startStop(bool start)
m_buffer = nullptr;
}
- m_buffer = new uint16_t[bufferSize];
+ m_buffer = new uint16_t[bufferSizeAdjusted];
QMetaObject::invokeMethod(this, [=](){
m_exportSettings->enableExportButton(true);
}, Qt::DirectConnection);
- QMetaObject::invokeMethod(this, [=](){
- m_plot.setTriggerState(CapturePlot::Waiting);
- }, Qt::QueuedConnection);
+ uint64_t totalSamples = bufferSizeAdjusted;
+ uint64_t chunk_size = 0;
- if (ui->btnStreamOneShot->isChecked()) {
- try {
- const uint16_t * const temp = m_m2kDigital->getSamplesP(bufferSize);
- memcpy(m_buffer, temp, bufferSizeAdjusted * sizeof(uint16_t));
+ double oneBufferTimeout = m_timerTimeout;
+
+ // clear any warning
+ m_plot.setMaxBufferSizeErrorLabel(false);
+
+ if (oneShotOrStream) { // oneshot
+ do {
+ try {
+ m_m2kDigital->setKernelBuffersCountIn(1);
+ break;
+ } catch (libm2k::m2k_exception &e) {
+ qDebug() << e.what();
+ }
+ } while (true);
- QMetaObject::invokeMethod(this, [=](){
- m_plot.setTriggerState(CapturePlot::Triggered);
- }, Qt::QueuedConnection);
+ chunk_size = bufferSizeAdjusted;
- m_lastCapturedSample = bufferSize;
- Q_EMIT dataAvailable(0, bufferSize);
- updateBufferPreviewer(0, m_lastCapturedSample);
+ } else { // streaming
+ const int minKernelBuffers = 4;
+ const int oneBufferMaxSize = 2 * 1024 * 1024; // 2M
- } catch (libm2k::m2k_exception &e) {
- HANDLE_EXCEPTION(e)
- qDebug() << e.what();
+ m_currentKernelBuffers = minKernelBuffers;
+
+ /* ensure we have the minimum amount of kernel buffers to fit the buffer
+ * ex: we want to capture a 40M buffer, we will use (at least) 10 kernel buffers
+ * */
+ while (bufferSizeAdjusted > (m_currentKernelBuffers * oneBufferMaxSize)
+ && m_currentKernelBuffers < MAX_KERNEL_BUFFERS) {
+ m_currentKernelBuffers++;
}
- } else {
- uint64_t chunks = 4;
- while ((bufferSizeAdjusted >> chunks) > (1 << 19)) {
- chunks++; // select a small size for the chunks
- // example: 2^19 samples in each chunk
+
+ /* ensure we don't spend more than 100ms on a acquiring a buffer if we can
+ * further divide it into smaller buffers (kernel buffers still available)
+ * */
+ const double maxCaptureDuration = 0.1; // 100ms
+ while (((static_cast(bufferSizeAdjusted) / setSampleRate)
+ / static_cast(m_currentKernelBuffers)) > maxCaptureDuration
+ && m_currentKernelBuffers < MAX_KERNEL_BUFFERS) {
+ m_currentKernelBuffers++;
+ }
+
+ // buffer size per kernel buffer
+ chunk_size = bufferSizeAdjusted / m_currentKernelBuffers;
+
+ uint64_t chunkSizeBeforeAdjust = chunk_size;
+
+ // buffer size must be divisible by 4
+ chunk_size = 4 * (chunk_size / 4);
+
+ /* If the chunk_size was not disible by 4 in the first place we would get a smaller
+ * value for it. Let's check if we can increase the chunk_size to the next divisible by 4
+ * number otherwise we need to add another kernel buffer if this is possible
+ * */
+ if (chunk_size + 4 <= oneBufferMaxSize && chunkSizeBeforeAdjust != chunk_size) {
+ chunk_size += 4;
+ }
+
+ // If the buffer size is > 64 * 4M we need to cap the chunk_size to 4M
+ if (chunk_size > oneBufferMaxSize) {
+ chunk_size = oneBufferMaxSize;
+ }
+
+ if (bufferSizeAdjusted >= MAX_KERNEL_BUFFERS * oneBufferMaxSize) {
+ /* in this case if the sample rate is greater than 5M samples / s
+ * warn that data might not be continuos
+ * */
+ if (setSampleRate > MAX_SR_STREAM) {
+ m_plot.setMaxBufferSizeErrorLabel(true, "Data might not be continuous, lower sample rate or buffer size");
+ }
}
- const uint64_t chunk_size = (bufferSizeAdjusted >> chunks) > 0 ? (bufferSizeAdjusted >> chunks) : 4 ;
- uint64_t totalSamples = bufferSizeAdjusted;
- m_m2kDigital->setKernelBuffersCountIn(64);
- uint64_t absIndex = 0;
do {
- const uint64_t captureSize = std::min(chunk_size, totalSamples);
try {
- const uint16_t * const temp = m_m2kDigital->getSamplesP(captureSize);
- memcpy(m_buffer + absIndex, temp, sizeof(uint16_t) * captureSize);
- absIndex += captureSize;
- totalSamples -= captureSize;
+ m_m2kDigital->setKernelBuffersCountIn(m_currentKernelBuffers);
+ break;
+ } catch (libm2k::m2k_exception &e) {
+ qDebug() << e.what();
+ }
+ } while (true);
+
+ // time for one kernel buffer + 100ms for the transfer
+ oneBufferTimeout = ((oneBufferTimeout - 100) / m_currentKernelBuffers) + 100;
+ }
+
+ uint64_t absIndex = 0;
+ // notify that the acquisition started one waiting for it
+ // to start, in order to correctly stop it
+ {
+ std::unique_lock lock(m_acquisitionStartedMutex);
+ m_m2kDigital->startAcquisition(chunk_size);
+ m_acquisitionStarted = true;
+ }
+ m_acquisitionStartedCv.notify_one();
+
+ do {
+ const uint64_t captureSize = std::min(chunk_size, totalSamples);
+
+ try {
+ if (m_autoMode) {
QMetaObject::invokeMethod(this, [=](){
- m_plot.setTriggerState(CapturePlot::Triggered);
- }, Qt::QueuedConnection);
+ m_timer->start(oneBufferTimeout);
+ });
+ }
- } catch (libm2k::m2k_exception &e) {
- HANDLE_EXCEPTION(e)
- qDebug() << e.what();
- break;
+ const uint16_t * const temp = m_m2kDigital->getSamplesP(chunk_size);
+ memcpy(m_buffer + absIndex, temp, sizeof(uint16_t) * captureSize);
+
+ absIndex += captureSize;
+ totalSamples -= captureSize;
+
+ if (m_autoMode) {
+ QMetaObject::invokeMethod(this, [=](){
+ m_timer->stop();
+ });
}
- if (m_stopRequested) {
- break;
+ if (m_triggerState.empty()) {
+ QMetaObject::invokeMethod(this, [=](){
+ m_triggerUpdater->setInput(CapturePlot::Triggered);
+ }, Qt::QueuedConnection);
+ } else {
+ QMetaObject::invokeMethod(this, [=](){
+ m_triggerUpdater->setInput(CapturePlot::Auto);
+ }, Qt::QueuedConnection);
}
- Q_EMIT dataAvailable(absIndex - captureSize, absIndex);
+ } catch (libm2k::m2k_exception &e) {
+// HANDLE_EXCEPTION(e)
+ qDebug() << e.what() << " code: " << e.iioCode();
+ break;
+ }
- QMetaObject::invokeMethod(&m_plot, // trigger replot on Main Thread
- "replot",
- Qt::QueuedConnection);
- m_lastCapturedSample = absIndex;
- updateBufferPreviewer(0, m_lastCapturedSample);
+ if (m_stopRequested) {
+ break;
+ }
- } while (totalSamples);
- }
+ Q_EMIT dataAvailable(absIndex - captureSize, absIndex);
- m_started = false;
+ QMetaObject::invokeMethod(&m_plot, // trigger replot on Main Thread
+ "replot",
+ Qt::QueuedConnection);
+ m_lastCapturedSample = absIndex;
+ updateBufferPreviewer(0, m_lastCapturedSample);
- QMetaObject::invokeMethod(this,
- "restoreTriggerState",
- Qt::DirectConnection);
+ QMetaObject::invokeMethod(this,
+ "restoreTriggerState",
+ Qt::QueuedConnection);
- //
- QMetaObject::invokeMethod(ui->runSingleWidget,
- "toggle",
- Qt::QueuedConnection,
- Q_ARG(bool, false));
+ if (!totalSamples && ui->runSingleWidget->runButtonChecked()) {
+ m_m2kDigital->stopAcquisition();
+ {
+ std::unique_lock lock(m_acquisitionStartedMutex);
+ m_acquisitionStarted = false;
+ }
+ m_m2kDigital->getTrigger()->setDigitalStreamingFlag(!oneShotOrStream);
+
+ // notify that the acquisition started one waiting for it
+ // to start, in order to correctly stop it
+ {
+ std::unique_lock lock(m_acquisitionStartedMutex);
+ m_m2kDigital->startAcquisition(chunk_size);
+ m_acquisitionStarted = true;
+ }
+ m_acquisitionStartedCv.notify_one();
+
+ totalSamples = bufferSizeAdjusted;
+ absIndex = 0;
+
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+ }
+ } while (totalSamples && !m_stopRequested);
+
+ m_started = false;
+
+ if (ui->runSingleWidget->singleButtonChecked()) {
+ QMetaObject::invokeMethod(ui->runSingleWidget,
+ "toggle",
+ Qt::QueuedConnection,
+ Q_ARG(bool, false));
+ m_triggerUpdater->setEnabled(false);
+ }
+ m_m2kDigital->stopAcquisition();
QMetaObject::invokeMethod(&m_plot,
"replot");
- QMetaObject::invokeMethod(this, [=](){
- m_plot.setTriggerState(CapturePlot::Stop);
- }, Qt::QueuedConnection);
-
QMetaObject::invokeMethod(this, [=](){
m_exportSettings->enableExportButton(true);
}, Qt::DirectConnection);
@@ -1668,6 +1947,14 @@ void LogicAnalyzer::startStop(bool start)
} else {
if (m_captureThread) {
+ // a stop request might be triggered before getting to getSamplesP,
+ // thus cancelAcquisition in this case will be a no-op. In order to avoid
+ // this issue we wait for acquisition to be started
+ {
+ std::unique_lock lock(m_acquisitionStartedMutex);
+ m_acquisitionStartedCv.wait(lock, [=]{ return m_acquisitionStarted; });
+ }
+
m_stopRequested = true;
try {
m_m2kDigital->cancelAcquisition(); // cancelBufferIn
@@ -1676,15 +1963,13 @@ void LogicAnalyzer::startStop(bool start)
}
m_captureThread->join();
+ m_acquisitionStarted = false;
+
delete m_captureThread;
m_captureThread = nullptr;
restoreTriggerState();
}
-
- m_plot.setTriggerState(CapturePlot::Stop);
-
}
-
}
void LogicAnalyzer::setupDecoders()
@@ -1980,20 +2265,12 @@ void LogicAnalyzer::setupTriggerMenu()
{
connect(ui->btnTriggerMode, &CustomSwitch::toggled, [=](bool toggled){
m_autoMode = toggled;
-
if (m_autoMode && m_started) {
double oneBufferTimeOut = m_timerTimeout;
if (!ui->btnStreamOneShot->isChecked()) {
- uint64_t chunks = 4;
- while ((m_bufferSize >> chunks) > (1 << 19)) {
- chunks++; // select a small size for the chunks
- // example: 2^19 samples in each chunk
- }
- const uint64_t chunk_size = (m_bufferSize >> chunks) > 0 ? (m_bufferSize >> chunks) : 4 ;
- const uint64_t buffersCount = m_bufferSize / chunk_size;
- oneBufferTimeOut /= buffersCount;
+ oneBufferTimeOut /= m_currentKernelBuffers;
}
m_timer->start(oneBufferTimeOut);
@@ -2001,6 +2278,18 @@ void LogicAnalyzer::setupTriggerMenu()
qDebug() << "auto mode: " << m_autoMode << " with timeout: "
<< oneBufferTimeOut << " when logic is started: " << m_started;
}
+
+ if (toggled) {
+ m_triggerUpdater->setIdleState(CapturePlot::Auto);
+ m_triggerUpdater->setInput(CapturePlot::Auto);
+ } else {
+ m_triggerUpdater->setIdleState(CapturePlot::Waiting);
+ m_triggerUpdater->setInput(CapturePlot::Waiting);
+ }
+
+ if (!m_autoMode) {
+ m_timer->stop();
+ }
});
ui->triggerLogicComboBox->addItem("OR");
@@ -2064,18 +2353,19 @@ void LogicAnalyzer::setupTriggerMenu()
ui->lblWarningFw->setVisible(true);
}
- m_timer->setSingleShot(true);
connect(m_timer, &QTimer::timeout,
this, &LogicAnalyzer::saveTriggerState);
-
- m_plot.setTriggerState(CapturePlot::Stop);
-
}
void LogicAnalyzer::saveTriggerState()
{
// save trigger state and set to no trigger each channel
- if (m_started) {
+ if (m_started && !m_triggerState.size()) {
+ const bool streaming = !ui->btnStreamOneShot->isChecked();
+ if (streaming) {
+ m_m2kDigital->getTrigger()->setDigitalStreamingFlag(false);
+ }
+
for (int i = 0; i < m_nbChannels; ++i) {
m_triggerState.push_back(m_m2kDigital->getTrigger()->getDigitalCondition(i));
m_m2kDigital->getTrigger()->setDigitalCondition(i, M2K_TRIGGER_CONDITION_DIGITAL::NO_TRIGGER_DIGITAL);
@@ -2084,13 +2374,22 @@ void LogicAnalyzer::saveTriggerState()
auto externalTriggerCondition = m_m2kDigital->getTrigger()->getDigitalExternalCondition();
m_triggerState.push_back(externalTriggerCondition);
m_m2kDigital->getTrigger()->setDigitalExternalCondition(M2K_TRIGGER_CONDITION_DIGITAL::NO_TRIGGER_DIGITAL);
+
+ if (streaming) {
+ m_m2kDigital->getTrigger()->setDigitalStreamingFlag(true);
+ }
}
}
void LogicAnalyzer::restoreTriggerState()
{
// restored saved trigger state
- if (!m_started && m_triggerState.size()) {
+ if (m_triggerState.size()) {
+ const bool streaming = !ui->btnStreamOneShot->isChecked();
+ if (streaming) {
+ m_m2kDigital->getTrigger()->setDigitalStreamingFlag(false);
+ }
+
for (int i = 0; i < m_nbChannels; ++i) {
m_triggerState.push_back(m_m2kDigital->getTrigger()->getDigitalCondition(i));
m_m2kDigital->getTrigger()->setDigitalCondition(i, m_triggerState[i]);
@@ -2098,6 +2397,10 @@ void LogicAnalyzer::restoreTriggerState()
m_m2kDigital->getTrigger()->setDigitalExternalCondition(m_triggerState.back());
+ if (streaming) {
+ m_m2kDigital->getTrigger()->setDigitalStreamingFlag(true);
+ }
+
m_triggerState.clear();
}
}
diff --git a/src/logicanalyzer/logic_analyzer.h b/src/logicanalyzer/logic_analyzer.h
index bf3ebd1524..2f9ac9722b 100644
--- a/src/logicanalyzer/logic_analyzer.h
+++ b/src/logicanalyzer/logic_analyzer.h
@@ -61,6 +61,7 @@ class Filter;
class BaseMenu;
class LogicAnalyzer_API;
class ExportSettings;
+class StateUpdater;
namespace logic {
@@ -176,9 +177,10 @@ private Q_SLOTS:
// capture
std::thread *m_captureThread;
std::atomic m_stopRequested;
+ bool m_acquisitionStarted;
// prob not needed
- std::mutex m_captureMutex;
- std::condition_variable m_captureCv;
+ std::mutex m_acquisitionStartedMutex;
+ std::condition_variable m_acquisitionStartedCv;
bool m_started;
@@ -206,6 +208,11 @@ private Q_SLOTS:
int m_oscChannelSelected;
QVector m_oscPlotCurves;
QWidget *m_oscDecoderMenu;
+ QMetaObject::Connection m_oscChannelSelectedConnection;
+
+ int m_currentKernelBuffers;
+
+ StateUpdater *m_triggerUpdater;
};
diff --git a/src/logicanalyzer/logicanalyzer_api.h b/src/logicanalyzer/logicanalyzer_api.h
index 036835cd2a..fcef82e67c 100644
--- a/src/logicanalyzer/logicanalyzer_api.h
+++ b/src/logicanalyzer/logicanalyzer_api.h
@@ -32,9 +32,9 @@ class LogicAnalyzer_API : public ApiObject
Q_OBJECT
/* sweep settings */
+ Q_PROPERTY(bool streamOneShot READ getStreamOrOneShot WRITE setStreamOrOneShot)
Q_PROPERTY(double sampleRate READ getSampleRate WRITE setSampleRate)
Q_PROPERTY(int bufferSize READ getBufferSize WRITE setBufferSize)
- Q_PROPERTY(bool streamOneShot READ getStreamOrOneShot WRITE setStreamOrOneShot)
Q_PROPERTY(int delay READ getDelay WRITE setDelay)
/* channel settings */
diff --git a/src/logicanalyzer/logicdatacurve.cpp b/src/logicanalyzer/logicdatacurve.cpp
index 4450a34bb9..8e94da8b00 100644
--- a/src/logicanalyzer/logicdatacurve.cpp
+++ b/src/logicanalyzer/logicdatacurve.cpp
@@ -38,7 +38,7 @@ static const QColor LowColor(0xC0, 0x00, 0x00);
static const QColor SamplingPointColor(0x77, 0x77, 0x77);
LogicDataCurve::LogicDataCurve(uint16_t *data, uint8_t bit, adiscope::logic::LogicTool *logic) :
- GenericLogicPlotCurve(QString("Dio " + QString::number(bit)), QString("Dio " + QString::number(bit))),
+ GenericLogicPlotCurve(QString(QString::number(bit)), QString(QString::number(bit))),
m_logic(logic),
m_startSample(0),
m_endSample(0),
@@ -69,10 +69,8 @@ void LogicDataCurve::dataAvailable(uint64_t from, uint64_t to)
// Take into account the last pushed edge from the previous chunk of
// available data
uint64_t currentSample = from;
- if (m_edges.size()) {
- if (m_edges.back().first + 1 < currentSample) {
- currentSample = m_edges.back().first + 1;
- }
+ if (from > 0) {
+ currentSample--;
}
if (from == to) {
@@ -170,7 +168,9 @@ void LogicDataCurve::drawLines(QPainter *painter, const QwtScaleMap &xMap,
displayedData += QPointF(fromSampleToTime(m_endSample - 1), (!edges.back().second) * heightInPoints + m_pixelOffset);
}
- displayedData += QPointF(plot()->axisInterval(QwtAxis::xBottom).maxValue(), displayedData.back().y());
+ if (edges.back().first + 1 == m_endSample - 1) {
+ displayedData += QPointF(plot()->axisInterval(QwtAxis::xBottom).maxValue(), displayedData.back().y());
+ }
painter->save();
painter->setPen(QColor(74, 100, 255)); //4a64ff
@@ -227,101 +227,75 @@ void LogicDataCurve::getSubsampledEdges(std::vector> &
- double dist = xMap.transform(fromSampleToTime(1)) - xMap.transform(fromSampleToTime(0));
-
- QwtInterval interval = plot()->axisInterval(QwtAxis::xBottom);
-// qDebug() << "from plot, left: " << interval.minValue() << " right: " << interval.maxValue();
- uint64_t firstEdge = edgeAtX(fromTimeToSample(interval.minValue()), m_edges);
- uint64_t lastEdge = edgeAtX(fromTimeToSample(interval.maxValue()), m_edges);
-
-// qDebug() << "First edge is: " << firstEdge;
-// qDebug() << "Last edge is: " << lastEdge;
-
-// qDebug() << "first edge: " << firstEdge;
-// qDebug() << "last edge: " << lastEdge;
-
- if (m_edges.size() == 0) {
-// qDebug() << "first edge: " << firstEdge << " last edge: " << lastEdge;
- }
+ double dist = xMap.transform(fromSampleToTime(1)) - xMap.transform(fromSampleToTime(0));
- if (firstEdge > 0) {
- firstEdge--;
- }
+ QwtInterval interval = plot()->axisInterval(QwtAxis::xBottom);
+ uint64_t firstEdge = edgeAtX(fromTimeToSample(interval.minValue()), m_edges);
+ uint64_t lastEdge = edgeAtX(fromTimeToSample(interval.maxValue()), m_edges);
- if (lastEdge < m_edges.size() - 1) {
-// qDebug() << "lastEdge: " << lastEdge << " < " << "m_edges.size() - 1: " << m_edges.size() - 1;
- lastEdge++;
- }
-
- if (m_edges.size() == 1) { // corner case
- edges.emplace_back(m_edges.front());
- return;
- }
+ if (firstEdge > 0) {
+ firstEdge--;
+ }
- // If plot is zoomed in / not so many edges close together
- // draw them all
- if (dist > 0.10) {
+ if (lastEdge < m_edges.size() - 1) {
+ lastEdge++;
+ }
- if (lastEdge == m_edges.size() - 1) {
- lastEdge = m_edges.size();
+ if (m_edges.size() == 1) { // corner case
+ edges.emplace_back(m_edges.front());
+ return;
}
- for (; firstEdge < lastEdge; ++firstEdge) {
- edges.emplace_back(m_edges[firstEdge]);
- }
- } else {
-
- const uint64_t pointsPerPixel = 1.0 / dist;
-
- // Save last transition (high, low)
- bool reachedEnd = false;
- bool lastTransition = m_edges[firstEdge].second;
- for (; firstEdge < lastEdge && !reachedEnd; ) {
- const int64_t lastSample = m_edges[firstEdge].first;
- edges.emplace_back(m_edges[firstEdge]);
-
- // Find the next edge that is at least "pointsPerPixel" away
- // from the current one
- auto next = std::upper_bound(m_edges.begin(), m_edges.end(),
- std::make_pair(edges.back().first + pointsPerPixel - 1, false),
- [=](const std::pair &lhs, const std::pair &rhs) -> bool {
- return lhs.first < rhs.first;
- });
-
- if (next == m_edges.end()) {
- next = m_edges.end() - 1;
- reachedEnd = true;
+ // If plot is zoomed in / not so many edges close together
+ // draw them all
+ if (dist > 0.10) {
+ if (lastEdge == m_edges.size() - 1) {
+ lastEdge = m_edges.size();
}
- auto previous = next;
- std::advance(previous, -1);
-
- const int64_t a1 = (*next).first;
- const int64_t a2 = (*previous).first;
-
- // If the distance between next found edge and it's predecessor is greater
- // than the nr of samples/1px draw both edges as there will be a visible gap
- // between the blocks and we want to make sure we display the correct logic level
- if (std::abs(a1 - a2) > pointsPerPixel) {
- edges.emplace_back(m_edges[std::distance(m_edges.begin(), previous)]);
-// qDebug() << "gap emplace!!!!!!!";
- } else {
- const int64_t currentSample = (*next).first;
- if ((*next).second == lastTransition) {
- edges.emplace_back((lastSample + currentSample) / 2, !lastTransition);
-// qDebug() << "HACK!!!!!!";
- }
- }
-
- firstEdge = std::distance(m_edges.begin(), next);
+ for (; firstEdge < lastEdge; ++firstEdge) {
+ edges.emplace_back(m_edges[firstEdge]);
+ }
+ } else {
- lastTransition = (*next).second;
+ const uint64_t pointsPerPixel = 1.0 / dist;
- if (reachedEnd) {
+ // always add the first edge
edges.emplace_back(m_edges[firstEdge]);
- }
- }
- }
+
+ for (; firstEdge < lastEdge; ) {
+ // Find the next edge that is at least "pointsPerPixel" away
+ // from the current one
+ auto next = std::upper_bound(m_edges.begin(), m_edges.end(),
+ std::make_pair(edges.back().first + pointsPerPixel - 1, false),
+ [=](const std::pair &lhs, const std::pair &rhs) -> bool {
+ return lhs.first < rhs.first;
+ });
+
+ bool didReachEnd = false;
+ if (next == m_edges.end()) {
+ next = m_edges.end() - 1;
+ didReachEnd = true;
+ }
+
+ if (next->second == edges.back().second) {
+ std::advance(next, -1);
+ if (didReachEnd) {
+ // If the end is reached (next == last edge) and it has the same transition as the last
+ // edge in the "edges" vector we have to add "next - 1" and "next" to the "edges" array
+ // in order to have valid transition, and also plot the last edge.
+ edges.emplace_back(*next);
+ std::advance(next, 1);
+ edges.emplace_back(*next);
+ break;
+ }
+ }
+
+ edges.emplace_back(*next);
+
+ firstEdge = std::distance(m_edges.begin(), next);
+ }
+ }
}
uint64_t LogicDataCurve::edgeAtX(int x, const std::vector> &edges) const {
diff --git a/src/logicanalyzer/logicgroupitem.cpp b/src/logicanalyzer/logicgroupitem.cpp
index fcf316317e..fd74fff99e 100644
--- a/src/logicanalyzer/logicgroupitem.cpp
+++ b/src/logicanalyzer/logicgroupitem.cpp
@@ -79,10 +79,16 @@ void LogicGroupItem::buildUi()
dragWidget->setMinimumSize(QSize(16, 16));
// add 3 lines one on top of the other like ||| but flipped vertically
+ QString color = "";
+ if (QIcon::themeName() == "scopy-default") {
+ color +="border: 2px solid rgba(20, 20, 22, 70);";
+ } else {
+ color +="border: 2px solid rgb(197, 197, 197);";
+ }
for (int i = 0; i < 3; ++i) {
QFrame *frame = new QFrame(dragWidget);
frame->setMaximumSize(QSize(16, 2));
- frame->setStyleSheet(QString::fromUtf8("border: 2px solid rgba(255, 255, 255, 70)"));
+ frame->setStyleSheet(color);
frame->setFrameShadow(QFrame::Plain);
frame->setLineWidth(2);
frame->setFrameShape(QFrame::HLine);
diff --git a/src/main.cpp b/src/main.cpp
index 92e00355a1..977452b3f0 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -32,6 +32,13 @@
#include "tool_launcher.hpp"
#include "scopyApplication.hpp"
#include
+#ifdef LIBM2K_ENABLE_LOG
+#include
+#endif
+
+//#include "coloreditor.h"
+#include "scopy_color_editor.h"
+#include "application_restarter.h"
using namespace adiscope;
@@ -39,6 +46,12 @@ using namespace adiscope;
int main(int argc, char **argv)
{
ScopyApplication app(argc, argv);
+#ifdef LIBM2K_ENABLE_LOG
+ enableLogging(true);
+ google::InitGoogleLogging(argv[0]);
+ FLAGS_logbuflevel = -1;
+#endif
+
#if BREAKPAD_HANDLER
#ifdef Q_OS_LINUX
google_breakpad::MinidumpDescriptor descriptor("/tmp");
@@ -62,13 +75,7 @@ int main(int argc, char **argv)
QFont font("Open Sans");
app.setFont(font);
- if (app.styleSheet().isEmpty()) {
- QFile file(":/stylesheets/stylesheets/global.qss");
- file.open(QFile::ReadOnly);
-
- QString stylesheet = QString::fromLatin1(file.readAll());
- app.setStyleSheet(stylesheet);
- }
+ ApplicationRestarter restarter(QString::fromLocal8Bit(argv[0]));
#ifdef WIN32
auto pythonpath = qgetenv("SCOPY_PYTHONPATH");
@@ -111,6 +118,8 @@ int main(int argc, char **argv)
parser.process(app);
+ restarter.setArguments(parser.positionalArguments());
+
QTranslator myappTranslator;
// TODO: Use Preferences_API to get language key - cannot be done right now
@@ -140,6 +149,20 @@ int main(int argc, char **argv)
ToolLauncher launcher(prevCrashDump);
+ ScopyColorEditor *colorEditor = new ScopyColorEditor(&app);
+ colorEditor->setVisible(false);
+
+ QString currentStylesheet = pref.value(QString("Preferences/currentStylesheet")).toString();
+ QStringList userStylesheets = pref.value(QString("Preferences/userStylesheets")).toStringList();
+ colorEditor->setUserStylesheets(userStylesheets);
+ colorEditor->setCurrentStylesheet(currentStylesheet);
+
+ if (app.styleSheet().isEmpty()) {
+ app.setStyleSheet(colorEditor->getStyleSheet());
+ }
+
+ launcher.getPrefPanel()->setColorEditor(colorEditor);
+
bool nogui = parser.isSet("nogui");
bool nodecoders = parser.isSet("nodecoders");
if (nodecoders) {
@@ -181,6 +204,6 @@ int main(int argc, char **argv)
Q_ARG(QString, contents),
Q_ARG(QString, script));
}
- return app.exec();
+ return restarter.restart(app.exec());
}
diff --git a/src/manualcalibration.cpp b/src/manualcalibration.cpp
index 425bcca38e..fceafbae42 100644
--- a/src/manualcalibration.cpp
+++ b/src/manualcalibration.cpp
@@ -242,7 +242,7 @@ void ManualCalibration::positivePowerSupplyParam(const int step)
/*adc offset calibration*/
try {
- value = m_m2k_powersupply->readChannel(0);
+ value = m_m2k_powersupply->readChannel(0, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't read value: " << e.what();
@@ -276,7 +276,7 @@ void ManualCalibration::positivePowerSupplyParam(const int step)
/*adc gain calibration*/
try {
- value = m_m2k_powersupply->readChannel(0);
+ value = m_m2k_powersupply->readChannel(0, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't read value: " << e.what();
@@ -319,7 +319,7 @@ void ManualCalibration::setEnablePositiveSuppply(bool enabled)
void ManualCalibration::setPositiveValue(double value)
{
try {
- m_m2k_powersupply->pushChannel(0, value);
+ m_m2k_powersupply->pushChannel(0, value, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't write value: " << e.what();
@@ -363,7 +363,7 @@ void ManualCalibration::negativePowerSupplyParam(const int step)
/*adc offset calibration*/
try {
- value = m_m2k_powersupply->readChannel(1);
+ value = m_m2k_powersupply->readChannel(1, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't read value: " << e.what();
@@ -396,7 +396,7 @@ void ManualCalibration::negativePowerSupplyParam(const int step)
/*adc gain calibration*/
try {
- value = m_m2k_powersupply->readChannel(1);
+ value = m_m2k_powersupply->readChannel(1, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't read value: " << e.what();
@@ -438,7 +438,7 @@ void ManualCalibration::setEnableNegativeSuppply(bool enabled)
void ManualCalibration::setNegativeValue(double value)
{
try {
- m_m2k_powersupply->pushChannel(1, value);
+ m_m2k_powersupply->pushChannel(1, value, false);
} catch (libm2k::m2k_exception &e) {
HANDLE_EXCEPTION(e)
qDebug(CAT_CALIBRATION_MANUAL) << "Can't write value: " << e.what();
@@ -548,10 +548,12 @@ void ManualCalibration::on_loadButton_clicked()
void ManualCalibration::on_saveButton_clicked()
{
QString fileName;
+ QString selectedFilter;
+
if (calibrationFilePath == "") {
- fileName = QFileDialog::getOpenFileName(this, tr("Save File"),
- "/home",
- tr("ini (*.ini)"));
+ fileName = QFileDialog::getSaveFileName(this,
+ tr("Save file"), "", tr("Ini files (*.ini)"),
+ &selectedFilter, (m_useNativeDialogs ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog));
} else {
fileName = calibrationFilePath;
}
@@ -559,13 +561,13 @@ void ManualCalibration::on_saveButton_clicked()
QFile file(fileName);
QString temp_ad9963, temp_fpga;
if (m_dmm_ad9963) {
- temp_ad9963 = m_dmm_ad9963->readChannel("temp0").value;
+ temp_ad9963 = QString::number(m_dmm_ad9963->readChannel("temp0").value);
}
if (m_dmm_xadc) {
- temp_fpga = m_dmm_xadc->readChannel("temp0").value;
+ temp_fpga = QString::number(m_dmm_xadc->readChannel("temp0").value);
}
- if (file.open(QFile::WriteOnly | QFile::Truncate)) {
+ if (file.open(QIODevice::WriteOnly)) {
QTextStream stream(&file);
stream << "#Calibration time: " << QDate::currentDate().toString() << ", "
diff --git a/src/network_analyzer.cpp b/src/network_analyzer.cpp
index 7c7363794c..933aa00390 100644
--- a/src/network_analyzer.cpp
+++ b/src/network_analyzer.cpp
@@ -165,6 +165,8 @@ void NetworkAnalyzer::_configureAdcFlowgraph(size_t buffer_size)
// Build the flowgraph only once
m_initFlowgraph = false;
+
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/networkanalyzer");
}
NetworkAnalyzer::NetworkAnalyzer(struct iio_context *ctx, Filter *filt,
@@ -616,7 +618,6 @@ NetworkAnalyzer::NetworkAnalyzer(struct iio_context *ctx, Filter *filt,
}
painter.end();
- img.invertPixels(QImage::InvertRgb);
img.save(fileName, 0, -1);
});
@@ -1667,7 +1668,15 @@ void NetworkAnalyzer::startStop(bool pressed)
m_dBgraph.sweepDone();
m_phaseGraph.sweepDone();
ui->statusLabel->setText(tr("Stopped"));
- m_m2k_analogin->setKernelBuffersCount(KERNEL_BUFFERS_DEFAULT);
+ do {
+ try {
+ m_m2k_analogin->setKernelBuffersCount(KERNEL_BUFFERS_DEFAULT);
+ break;
+ } catch (libm2k::m2k_exception &e) {
+ qDebug() << e.what();
+ }
+
+ } while (true);
}
}
diff --git a/src/oscilloscope.cpp b/src/oscilloscope.cpp
index 37bdf0da78..53e7708b97 100644
--- a/src/oscilloscope.cpp
+++ b/src/oscilloscope.cpp
@@ -392,7 +392,7 @@ Oscilloscope::Oscilloscope(struct iio_context *ctx, Filter *filt,
for (uint i = 0; i < nb_channels; i++)
xy_plot.setYaxisMouseGesturesEnabled(i, false);
- xy_plot.setLineColor(0, QColor("#F8E71C"));
+ xy_plot.setLineColor(0, QColor("#4a64ff"));
ui->hlayout_fft->addWidget(&fft_plot);
ui->container_fft_plot->hide();
@@ -827,12 +827,13 @@ Oscilloscope::Oscilloscope(struct iio_context *ctx, Filter *filt,
connect(this, &Tool::detachedState,
this, &Oscilloscope::toolDetached);
- min_detached_width = this->minimumWidth();
toolDetached(false);
connect(&plot,SIGNAL(leftGateChanged(double)),SLOT(onLeftGateChanged(double)));
connect(&plot,SIGNAL(rightGateChanged(double)),SLOT(onRightGateChanged(double)));
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/oscilloscope");
+
}
int Oscilloscope::binSearchPointOnXaxis(double time)
@@ -1285,13 +1286,18 @@ void Oscilloscope::setFilteringEnabled(bool set)
setSampleRate(active_sample_rate);
}
-void Oscilloscope::enableMixedSignalView()
+void Oscilloscope::enableMixedSignalView(ChannelWidget *cw)
{
const bool iioStarted = isIioManagerStarted();
if (iioStarted) {
iio->lock();
}
+ const bool hasLabels = plot.labelsEnabled();
+ if (hasLabels) {
+ enableLabels(false);
+ }
+
m_mixedSignalViewEnabled = true;
m_mixedSignalViewMenu = m_logicAnalyzer->enableMixedSignalView(&plot, nb_channels +
@@ -1299,6 +1305,13 @@ void Oscilloscope::enableMixedSignalView()
ui->logicSettingsLayout->addWidget(m_mixedSignalViewMenu[0]);
+ QTabWidget *tb = qobject_cast(m_mixedSignalViewMenu[0]);
+ showLogicAnalyzerTriggerConnection = connect(&trigger_settings, &TriggerSettings::showLogicAnalyzerTriggerSettings,
+ this, [=](){
+ cw->menuButton()->setChecked(true);
+ tb->setCurrentIndex(tb->indexOf(m_mixedSignalViewMenu[1]));
+ });
+
mixed_sink = mixed_signal_sink::make(m_logicAnalyzer, &this->plot, active_sample_count);
mixed_source = gr::m2k::mixed_signal_source::make_from(m_m2k_context, active_sample_count);
@@ -1327,6 +1340,10 @@ void Oscilloscope::enableMixedSignalView()
onHorizScaleValueChanged(timeBase->value());
onTimePositionChanged(timePosition->value());
+
+ if (hasLabels) {
+ enableLabels(true);
+ }
}
void Oscilloscope::disableMixedSignalView()
@@ -1339,6 +1356,8 @@ void Oscilloscope::disableMixedSignalView()
m_mixedSignalViewEnabled = false;
+ disconnect(showLogicAnalyzerTriggerConnection);
+
// disable mixed signal from logic
ui->logicSettingsLayout->removeWidget(m_mixedSignalViewMenu[0]);
m_logicAnalyzer->disableMixedSignalView();
@@ -1858,7 +1877,7 @@ void Oscilloscope::toggleCursorsMode(bool toggled)
void Oscilloscope::toolDetached(bool detached)
{
if (detached) {
- this->setMinimumWidth(min_detached_width);
+ this->setMinimumSize(910, 490);
this->setSizePolicy(QSizePolicy::Preferred,
QSizePolicy::Preferred);
} else {
@@ -1978,7 +1997,6 @@ void Oscilloscope::create_add_channel_panel()
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(labelWarningMixedSignal->sizePolicy().hasHeightForWidth());
labelWarningMixedSignal->setSizePolicy(sizePolicy);
- labelWarningMixedSignal->setStyleSheet(QString::fromUtf8("color: white;"));
labelWarningMixedSignal->setWordWrap(true);
labelWarningMixedSignal->setVisible(false);
@@ -1987,13 +2005,11 @@ void Oscilloscope::create_add_channel_panel()
layout_logic->insertWidget(1, labelWarningMixedSignal);
QLabel *infoLabel = new QLabel(tr("* When the Mixed Signal View is enabled the LogicAnalyzer tool will be disabled!\n"
- "** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!"));
- infoLabel->setStyleSheet(QString::fromUtf8("color: white;"));
+ "** The trigger can be disabled or set only on the Digital channels or Analog channels, not on both at the same time!"), panel);
+ layout_logic->insertWidget(2, infoLabel);
infoLabel->setWordWrap(true);
infoLabel->setVisible(true);
- layout_logic->insertWidget(2, infoLabel);
-
QPushButton *btn = math_ui.btnAddChannel;
Math *math = new Math(nullptr, nb_channels);
@@ -2077,6 +2093,22 @@ void Oscilloscope::create_add_channel_panel()
tabWidget->addTab(logic, tr("Logic"));
+ connect(ui->mixedSignalBtn, &QPushButton::clicked, [=](){
+ if (!m_mixedSignalViewEnabled) {
+ ui->btnAddMath->click();
+ tabWidget->setCurrentIndex(tabWidget->indexOf(logic));
+ } else {
+ for (int i = 0; i < ui->channelsList->count(); ++i) {
+ ChannelWidget *cw = qobject_cast(
+ ui->channelsList->itemAt(i)->widget());
+ if (cw && cw->fullName() == "Logic Analyzer") {
+ cw->deleteButton()->click();
+ break;
+ }
+ }
+ }
+ });
+
connect(btnOpenFile, &QPushButton::clicked, this, &Oscilloscope::import);
connect(tabWidget, &QTabWidget::currentChanged, [=](int index) {
@@ -2106,6 +2138,7 @@ void Oscilloscope::create_add_channel_panel()
if (tabWidget->currentIndex() == 2) {
qDebug() << "Enable mixed signal view!";
+ ui->mixedSignalBtn->setText("Disable Mixed\nSignal View");
ChannelWidget *logicAnalyzerChannelWidget = new ChannelWidget(-1, true, false,
QColor(Qt::yellow), this);
@@ -2145,13 +2178,14 @@ void Oscilloscope::create_add_channel_panel()
logicAnalyzerChannelWidget->deleteLater();
tabWidget->setTabEnabled(logicTab, true);
+ ui->mixedSignalBtn->setText("Enable Mixed\nSignal View");
disableMixedSignalView();
});
logicAnalyzerChannelWidget->menuButton()->setChecked(true);
- enableMixedSignalView();
+ enableMixedSignalView(logicAnalyzerChannelWidget);
return;
}
@@ -4314,11 +4348,11 @@ void Oscilloscope::measure_panel_init()
cursor_readouts_ui->setupUi(cursorReadouts);
cursor_readouts_ui->TimeCursors->setStyleSheet("QWidget {"
- "background-color: transparent;"
- "color: white;}");
+ "background-color: transparent;}"
+ );
cursor_readouts_ui->VoltageCursors->setStyleSheet("QWidget {"
- "background-color: transparent;"
- "color: white;}");
+ "background-color: transparent;}"
+ );
// Avoid labels jumping around to left or right by imposing a min width
QLabel *label = new QLabel(this);
diff --git a/src/oscilloscope.hpp b/src/oscilloscope.hpp
index c933120bbd..a12c9ea2fa 100644
--- a/src/oscilloscope.hpp
+++ b/src/oscilloscope.hpp
@@ -243,7 +243,7 @@ namespace adiscope {
void toolDetached(bool);
void setFilteringEnabled(bool set);
- void enableMixedSignalView();
+ void enableMixedSignalView(ChannelWidget *cw);
void disableMixedSignalView();
void setDigitalPlotCurvesParams();
@@ -490,6 +490,7 @@ namespace adiscope {
gr::m2k::mixed_signal_source::sptr mixed_source;
mixed_signal_sink::sptr mixed_sink;
+ QMetaObject::Connection showLogicAnalyzerTriggerConnection;
};
}
#endif /* M2K_OSCILLOSCOPE_H */
diff --git a/src/oscilloscope_plot.cpp b/src/oscilloscope_plot.cpp
index 08c356a0e8..abce26dc2b 100644
--- a/src/oscilloscope_plot.cpp
+++ b/src/oscilloscope_plot.cpp
@@ -83,10 +83,11 @@ CapturePlot::CapturePlot(QWidget *parent,
d_startedGrouping(false),
d_bottomHandlesArea(nullptr),
d_xAxisInterval{0.0, 0.0},
- d_currentHandleInitPx(1)
+ d_currentHandleInitPx(30),
+ d_maxBufferError(nullptr)
{
- setMinimumHeight(250);
- setMinimumWidth(500);
+ setMinimumHeight(200);
+ setMinimumWidth(450);
/* Initial colors scheme */
d_trigAactiveLinePen = QPen(QColor(255, 255, 255), 2, Qt::SolidLine);
@@ -150,16 +151,17 @@ CapturePlot::CapturePlot(QWidget *parent,
// Sample Rate and Buffer Size
d_sampleRateLabel = new QLabel("", this);
- d_sampleRateLabel->setStyleSheet("QLabel {"
- "color: #ffffff;"
- "}");
// Trigger State
d_triggerStateLabel = new QLabel(this);
- d_triggerStateLabel->setStyleSheet("QLabel {"
- "color: #ffffff;"
+
+ d_maxBufferError = new QLabel(this);
+ d_maxBufferError->setStyleSheet("QLabel {"
+ "color: #ff0000;"
"}");
+ d_maxBufferError->setWordWrap(true);
+
// Top area layout
QHBoxLayout *topWidgetLayout = new QHBoxLayout(d_topWidget);
topWidgetLayout->setContentsMargins(d_leftHandlesArea->minimumWidth(),
@@ -171,7 +173,9 @@ CapturePlot::CapturePlot(QWidget *parent,
Qt::AlignBottom);
topWidgetLayout->insertWidget(1, d_sampleRateLabel, 0, Qt::AlignLeft |
Qt::AlignBottom);
- topWidgetLayout->insertWidget(2, d_triggerStateLabel, 0, Qt::AlignRight |
+ topWidgetLayout->insertWidget(2, d_maxBufferError, 0, Qt::AlignRight |
+ Qt::AlignBottom);
+ topWidgetLayout->insertWidget(3, d_triggerStateLabel, 0, Qt::AlignRight |
Qt::AlignBottom);
QSpacerItem *spacerItem = new QSpacerItem(0, 0, QSizePolicy::Expanding,
@@ -1047,6 +1051,11 @@ void CapturePlot::printWithNoBackground(const QString& toolName, bool editScaleD
DisplayPlot::printWithNoBackground(toolName, editScaleDraw);
}
+int CapturePlot::getAnalogChannels() const
+{
+ return d_ydata.size() + d_ref_ydata.size();
+}
+
void CapturePlot::setHorizCursorsLocked(bool value)
{
horizCursorsLocked = value;
@@ -1439,37 +1448,8 @@ void CapturePlot::removeDigitalPlotCurve(QwtPlotCurve *curve)
{
for (int i = 0; i < d_offsetHandles.size(); ++i) {
if (curve == getDigitalPlotCurve(i)) {
-
-// auto hdl = d_offsetHandles.at(i);
-// qDebug() << "Removed id: " << i;
-// for (auto &group : d_groupHandles) {
-// group.removeOne(hdl);
-// if (!group.isEmpty()) {
-// group.first()->triggerMove();
-// }
-// }
- // remove digital plot curves
- // TODO: always keep digital stuff at the end ch1 ch2 ref1 ref2 d1 d2 ...
- // add ref3 -> ch1 ch2 ref1 ref2 ref3 d1 d2 ...
removeOffsetWidgets(d_ydata.size() + d_ref_ydata.size() + i);
-
-// int groupIndx = -1;
-// for (int i = 0; i < d_groupHandles.size(); ++i) {
-// if (d_groupHandles[i].size() < 2) {
-// groupIndx = i;
-// }
-// }
-
-// if (groupIndx != -1) {
-// d_groupHandles.removeAt(groupIndx);
-// }
-
-// if (d_groupMarkers.size() > d_groupHandles.size()){
-// auto marker = d_groupMarkers.takeLast();
-// marker->detach();
-// delete marker;
-// }
-
+ removeLeftVertAxis(d_ydata.size() + d_ref_ydata.size() + i);
break;
}
}
@@ -1501,7 +1481,6 @@ void CapturePlot::addToGroup(int currentGroup, int toAdd)
void CapturePlot::onDigitalChannelAdded(int chnIdx)
{
- qDebug() << "Digital Channel Added!";
setLeftVertAxesCount(d_ydata.size() + d_ref_ydata.size() + chnIdx + 1);
setAxisScale( QwtAxisId(QwtPlot::yLeft, d_ydata.size() + d_ref_ydata.size() + chnIdx), -5, 5);
replot();
@@ -1886,6 +1865,16 @@ void CapturePlot::positionInGroupChanged(int chnIdx, int from, int to)
void CapturePlot::setGroups(const QVector > &groups)
{
+ auto selectedHandleIt = std::find_if(d_offsetHandles.begin(), d_offsetHandles.end(),
+ [](RoundedHandleV *handle){
+ return handle->isSelected();
+ });
+
+ if (selectedHandleIt != d_offsetHandles.end()) {
+ (*selectedHandleIt)->setSelected(false);
+ (*selectedHandleIt)->selected(false);
+ }
+
for (const auto &grp : groups) {
if (grp.size() < 2) { continue; }
beginGroupSelection();
@@ -1899,6 +1888,11 @@ void CapturePlot::setGroups(const QVector > &groups)
d_groupHandles.back().front()->setPosition(d_groupHandles.back().front()->position());
}
+ if (selectedHandleIt != d_offsetHandles.end()) {
+ (*selectedHandleIt)->setSelected(true);
+ (*selectedHandleIt)->selected(true);
+ }
+
replot();
}
@@ -2015,9 +2009,24 @@ void CapturePlot::handleInGroupChangedPosition(int position)
replot();
}
+void adiscope::CapturePlot::pushBackNewOffsetWidgets(RoundedHandleV *chOffsetHdl, HorizBar *chOffsetBar)
+{
+ int indexOfNewChannel = d_ydata.size() - 1;
+ d_offsetBars.insert(indexOfNewChannel, chOffsetBar);
+ d_offsetHandles.insert(indexOfNewChannel, chOffsetHdl);
+
+ for (int i = 0; i < d_offsetBars.size(); ++i) {
+ d_offsetBars[i]->setMobileAxis(QwtAxisId(QwtPlot::yLeft, i));
+ }
+
+ for (int i = 0; i < d_logic_curves.size(); ++i) {
+ d_logic_curves[i]->setAxes(QwtPlot::xBottom, QwtAxisId(QwtPlot::yLeft, d_ydata.size() + d_ref_ydata.size() + i));
+ }
+}
+
void CapturePlot::onChannelAdded(int chnIdx)
{
- setLeftVertAxesCount(chnIdx + 1);
+ setLeftVertAxesCount(d_offsetHandles.size() + 1);
QColor chnColor = getLineColor(chnIdx);
/* Channel offset widget */
@@ -2026,7 +2035,6 @@ void CapturePlot::onChannelAdded(int chnIdx)
chOffsetBar->setCanLeavePlot(true);
chOffsetBar->setVisible(false);
chOffsetBar->setMobileAxis(QwtAxisId(QwtPlot::yLeft, chnIdx));
- d_offsetBars.push_back(chOffsetBar);
RoundedHandleV *chOffsetHdl = new RoundedHandleV(
QPixmap(":/icons/handle_right_arrow.svg"),
@@ -2036,7 +2044,7 @@ void CapturePlot::onChannelAdded(int chnIdx)
chOffsetHdl->setRoundRectColor(chnColor);
chOffsetHdl->setPen(QPen(chnColor, 2, Qt::SolidLine));
chOffsetHdl->setVisible(true);
- d_offsetHandles.push_back(chOffsetHdl);
+ pushBackNewOffsetWidgets(chOffsetHdl, chOffsetBar);
connect(chOffsetHdl, &RoundedHandleV::positionChanged,
[=](int pos) {
@@ -2359,6 +2367,15 @@ void CapturePlot::setTriggerState(int triggerState)
d_triggerStateLabel->show();
}
+void CapturePlot::setMaxBufferSizeErrorLabel(bool reached, const QString &customWarning)
+{
+ QString errorMessage = "Maximum buffer size reached";
+ if (customWarning.length()) {
+ errorMessage = customWarning;
+ }
+ d_maxBufferError->setText(reached ? errorMessage : "");
+}
+
void CapturePlot::setCursorReadoutsTransparency(int value)
{
d_cursorReadouts->setTransparency(value);
@@ -2372,8 +2389,10 @@ void CapturePlot::moveCursorReadouts(CustomPlotPositionButton::ReadoutsPosition
void CapturePlot::updateBufferSizeSampleRateLabel(int nsamples, double sr)
{
QString txtSampleRate = d_cursorMetricFormatter.format(sr, "sps", 0);
- QString txtSamplingPeriod = d_cursorTimeFormatter.format(1 / sr, "", 0);
- QString text = QString("%1 Samples at ").arg(nsamples) + txtSampleRate;
+ d_cursorMetricFormatter.setTrimZeroes(true);
+ QString txtSamples = d_cursorMetricFormatter.format(nsamples, "", 3);
+ d_cursorMetricFormatter.setTrimZeroes(false);
+ QString text = QString("%1 Samples at ").arg(txtSamples) + txtSampleRate;
d_sampleRateLabel->setText(text);
}
diff --git a/src/oscilloscope_plot.hpp b/src/oscilloscope_plot.hpp
index 5e84c6e179..38ca368614 100644
--- a/src/oscilloscope_plot.hpp
+++ b/src/oscilloscope_plot.hpp
@@ -168,16 +168,23 @@ namespace adiscope {
void setBufferSizeLabelValue(int numSamples);
void setSampleRatelabelValue(double sampleRate);
void setTriggerState(int triggerState);
+ void setMaxBufferSizeErrorLabel(bool reached, const QString &customWarning = "");
void setCursorReadoutsTransparency(int value);
void moveCursorReadouts(CustomPlotPositionButton::ReadoutsPosition position);
void setHorizCursorsLocked(bool value);
void setVertCursorsLocked(bool value);
void showEvent(QShowEvent *event);
void printWithNoBackground(const QString& toolName = "", bool editScaleDraw = true);
+
+ int getAnalogChannels() const;
+
+ /* digital channels */
void onDigitalChannelAdded(int chnIdx);
void setChannelSelectable(int chnIdx, bool selectable);
void removeDigitalPlotCurve(QwtPlotCurve *curve);
void setOffsetHandleVisible(int chIdx, bool visible);
+
+ /* channel group */
void addToGroup(int currentGroup, int toAdd);
void beginGroupSelection();
bool endGroupSelection(bool moveAnnotationCurvesLast = false); // TODO: toggle group selection
@@ -249,6 +256,7 @@ namespace adiscope {
QLabel *d_timeBaseLabel;
QLabel *d_sampleRateLabel;
QLabel *d_triggerStateLabel;
+ QLabel *d_maxBufferError;
int d_bufferSizeLabelVal;
double d_sampleRateLabelVal;
@@ -325,6 +333,7 @@ namespace adiscope {
QPair d_xAxisInterval;
int d_currentHandleInitPx;
+ void pushBackNewOffsetWidgets(RoundedHandleV *chOffsetHdl, HorizBar *chOffsetBar);
};
}
diff --git a/src/patterngenerator/pattern_generator.cpp b/src/patterngenerator/pattern_generator.cpp
index e14b711676..90260e32ef 100644
--- a/src/patterngenerator/pattern_generator.cpp
+++ b/src/patterngenerator/pattern_generator.cpp
@@ -118,6 +118,11 @@ PatternGenerator::PatternGenerator(struct iio_context *ctx, Filter *filt,
m_plot.replot();
checkEnabledChannels();
+
+ if (m_isRunning) {
+ startStop(false);
+ startStop(true);
+ }
});
channelBox->setChecked(false);
}
@@ -144,6 +149,8 @@ PatternGenerator::PatternGenerator(struct iio_context *ctx, Filter *filt,
TOOL_PATTERN_GENERATOR)));
api->load(*settings);
api->js_register(engine);
+
+ m_ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/pattgen");
}
void PatternGenerator::readPreferences()
@@ -237,8 +244,6 @@ void PatternGenerator::setupUi()
m_ui->gridLayoutPlot->addWidget(m_plot.bottomHandlesArea(), 3, 0, 1, 4);
m_ui->gridLayoutPlot->addItem(plotSpacer, 4, 0, 1, 4);
- // TODO: investigate why the plot's canvas background color is weird
- m_plot.canvas()->setStyleSheet("background-color: #272730");
m_plot.enableAxis(QwtPlot::yLeft, false);
m_plot.enableAxis(QwtPlot::xBottom, false);
@@ -697,8 +702,8 @@ void PatternGenerator::startStop(bool start)
lockMask = lockMask | enabled << i;
if (enabled) {
m_m2kDigital->setDirection(i, DIO_OUTPUT);
- m_m2kDigital->enableChannel(i, true);
}
+ m_m2kDigital->enableChannel(i, enabled);
}
m_diom->setMode(m_outputMode);
@@ -751,10 +756,17 @@ void PatternGenerator::generateBuffer()
m_sampleRate = sr;
const uint64_t bufferSize = computeBufferSize(sr);
+ m_plot.setMaxBufferSizeErrorLabel(bufferSize == MAX_BUFFER_SIZE);
qDebug() << "Buffer size is: " << bufferSize;
m_bufferSize = bufferSize;
+ m_plot.setSampleRatelabelValue(m_sampleRate);
+ m_plot.setBufferSizeLabelValue(m_bufferSize);
+ m_plot.setTimeBaseLabelValue(static_cast(m_bufferSize) /
+ static_cast(m_sampleRate) /
+ m_plot.xAxisNumDiv());
+
if (m_buffer) {
delete[] m_buffer;
}
diff --git a/src/patterngenerator/patterns/patterns.cpp b/src/patterngenerator/patterns/patterns.cpp
index 131a5d23d5..471d9a2578 100644
--- a/src/patterngenerator/patterns/patterns.cpp
+++ b/src/patterngenerator/patterns/patterns.cpp
@@ -34,6 +34,7 @@
#include "../pattern_generator.h"
#include "../../logicanalyzer/annotationcurve.h"
#include "../../logicanalyzer/annotationdecoder.h"
+#include "dynamicWidget.hpp"
#include
@@ -149,7 +150,7 @@ void Pattern::setNrOfChannels(int channels)
uint32_t Pattern::get_min_sampling_freq()
{
- return 1; // minimum 1 hertz if not specified otherwise
+ return 1000; // minimum 1 kHz if not specified otherwise
}
uint32_t Pattern::get_required_nr_of_samples(uint32_t sample_rate,
@@ -778,9 +779,11 @@ void NumberPatternUI::parse_ui()
max = (1 << pattern->nrOfChannels()) - 1;
if (val <= max && ok) {
- ui->numberLineEdit->setStyleSheet("color:white");
+ setDynamicProperty(ui->numberLineEdit, "valid", true);
+ setDynamicProperty(ui->numberLineEdit, "invalid", false);
} else {
- ui->numberLineEdit->setStyleSheet("color:red");
+ setDynamicProperty(ui->numberLineEdit, "invalid", true);
+ setDynamicProperty(ui->numberLineEdit, "valid", false);
}
pattern->set_nr(val);
@@ -1443,12 +1446,12 @@ uint8_t UARTPattern::generate_pattern(uint32_t sample_rate,
memset(buffer, 0xff, (number_of_samples)*sizeof(short));
short *buf_ptr = buffer;
+ short *buf_ptr_end = buffer + number_of_samples;
const char *str_ptr = str.c_str();
int i;
- for (i=0; iLE_toSend->setStyleSheet("color:red");
+ setDynamicProperty(ui->LE_toSend, "invalid", true);
+ setDynamicProperty(ui->LE_toSend, "valid", false);
} else {
- ui->LE_toSend->setStyleSheet("color:white");
+ setDynamicProperty(ui->LE_toSend, "valid", true);
+ setDynamicProperty(ui->LE_toSend, "invalid", false);
}
@@ -2125,6 +2130,7 @@ uint8_t SPIPattern::generate_pattern(uint32_t sample_rate,
}
short *buf_ptr = buffer;
+ short *buf_ptr_end = buffer + number_of_samples;
auto samples_per_bit = 2 * (sample_rate/clkFrequency);
buf_ptr += waitClocks * samples_per_bit;
@@ -2139,7 +2145,7 @@ uint8_t SPIPattern::generate_pattern(uint32_t sample_rate,
if(CPHA && start_new_frame)
{
- for (auto i=samples_per_bit/2; i> 1;
}
- for (auto i=0; iLE_toSend->setStyleSheet("color:red");
+ setDynamicProperty(ui->LE_toSend, "invalid", true);
+ setDynamicProperty(ui->LE_toSend, "valid", false);
} else {
- ui->LE_toSend->setStyleSheet("color:white");
+ setDynamicProperty(ui->LE_toSend, "valid", true);
+ setDynamicProperty(ui->LE_toSend, "invalid", false);
}
diff --git a/src/patterngenerator/patterns/patterns.hpp b/src/patterngenerator/patterns/patterns.hpp
index fb48ade04a..88717c9947 100644
--- a/src/patterngenerator/patterns/patterns.hpp
+++ b/src/patterngenerator/patterns/patterns.hpp
@@ -458,6 +458,7 @@ class I2CPattern: virtual public Pattern
uint8_t bytesPerFrame;
short *buf_ptr;
+ short *buf_ptr_end;
const int SDA = 1;
const int SCL = 0;
diff --git a/src/phonehome.cpp b/src/phonehome.cpp
new file mode 100644
index 0000000000..d7668eee6d
--- /dev/null
+++ b/src/phonehome.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2020 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+
+#include "phonehome.h"
+#include
+#include
+
+using namespace adiscope;
+
+bool PhoneHome::getDone() const
+{
+ return done;
+}
+
+PhoneHome::PhoneHome(QSettings *settings, Preferences *pref) :
+ ApiObject(), m_timestamp(0), m_versionsJson(""),
+ preferences(pref), settings(settings), done(false)
+{
+ setObjectName("phonehome");
+ load(*settings);
+}
+
+PhoneHome::~PhoneHome() {
+ save(*settings);
+}
+
+void PhoneHome::setPreferences(Preferences* preferences)
+{
+ PhoneHome::preferences = preferences;
+}
+
+void PhoneHome::versionsRequest(bool force)
+{
+ const qint64 now = QDateTime::currentMSecsSinceEpoch();
+ const qint64 timeout = 24 * 60 * 60 * 1000; // 24 hours
+ //qint64 timeout = 5 * 1000; // 5 seconds for testing
+
+ if(m_timestamp + timeout < now || force) {
+ // from swdownloads
+ QNetworkAccessManager* manager = new QNetworkAccessManager(this);
+ connect(manager, &QNetworkAccessManager::finished, this, &PhoneHome::onVersionsRequestFinished);
+ connect(manager, &QNetworkAccessManager::finished, manager, &QNetworkAccessManager::deleteLater);
+
+ manager->get(QNetworkRequest(QUrl(preferences->getCheck_updates_url())));
+ Q_EMIT scopyVersionCheckRequested();
+ } else {
+ // from cache
+ if(!m_versionsJson.isEmpty()) {
+ const QJsonDocument doc = QJsonDocument::fromJson(m_versionsJson.toUtf8());
+ extractVersionStringsFromJson(doc);
+ }
+ Q_EMIT checkUpdatesFinished(m_timestamp);
+ }
+}
+
+void PhoneHome::extractVersionStringsFromJson(const QJsonDocument &doc)
+{
+ auto content = doc.object().toVariantMap();
+ m_scopyVersion = content["scopy"].toMap()["version"].toString();
+ m_m2kVersion = content["m2k-fw"].toMap()["version"].toString();
+ m_scopyLink = content["scopy"].toMap()["link"].toString();
+ m_m2kLink = content["m2k-fw"].toMap()["link"].toString();
+ done = true;
+ Q_EMIT scopyVersionChanged();
+ Q_EMIT m2kVersionChanged();
+
+}
+
+void PhoneHome::onVersionsRequestFinished(QNetworkReply* reply)
+{
+ const auto err = reply->error();
+ if (err == QNetworkReply::NoError) {
+ const auto data = reply->readAll().trimmed();
+ const auto doc = QJsonDocument::fromJson(data);
+ extractVersionStringsFromJson(doc);
+ m_versionsJson = QString(data.trimmed());
+ m_timestamp = QDateTime::currentMSecsSinceEpoch();
+ Q_EMIT checkUpdatesFinished(m_timestamp);
+
+ } else {
+ qDebug() << "Wasn't able to access versions database!\n";
+ Q_EMIT checkUpdatesFinished(0);
+ }
+}
+
+QString PhoneHome::getTimestamp() const
+{
+ return QString::number(m_timestamp);
+}
+void PhoneHome::setTimestamp(QString val)
+{
+ m_timestamp = val.toLongLong();
+}
+QString PhoneHome::getVersionsJson() const
+{
+ return m_versionsJson;
+}
+void PhoneHome::setVersionsJson(const QString &val)
+{
+ m_versionsJson = val;
+
+}
+
diff --git a/src/phonehome.h b/src/phonehome.h
new file mode 100644
index 0000000000..909b9da1f5
--- /dev/null
+++ b/src/phonehome.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2020 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+
+#ifndef PHONEHOME_H
+#define PHONEHOME_H
+#include "preferences.h"
+#include
+#include
+#include
+#include
+#include
+
+namespace adiscope {
+class PhoneHome : public ApiObject
+{
+ Q_OBJECT
+private:
+ QString m_lastRequestContent;
+ QString m_scopyVersion;
+ QString m_m2kVersion;
+ QString m_scopyLink;
+ QString m_m2kLink;
+ qint64 m_timestamp;
+ QString m_versionsJson;
+ PhoneHome* instance;
+ Preferences* preferences;
+ QSettings *settings;
+ bool done;
+
+
+ Q_PROPERTY(QString timestamp READ getTimestamp WRITE setTimestamp)
+ Q_PROPERTY(QString versionsJson READ getVersionsJson WRITE setVersionsJson)
+
+public:
+ PhoneHome(QSettings *settings, Preferences *preferences);
+ ~PhoneHome();
+ void versionsRequest(bool force = false);
+ void extractVersionStringsFromJson(const QJsonDocument &doc);
+ QString getScopyVersion() const { return m_scopyVersion; }
+ QString getM2kVersion() { return m_m2kVersion; }
+ QString getScopyLink() { return m_scopyLink; }
+ QString getM2kLink() { return m_m2kLink; }
+ void setPreferences(Preferences* preferences);
+ QString getTimestamp() const;
+ void setTimestamp(QString);
+ QString getVersionsJson() const;
+ void setVersionsJson(const QString &val);
+ bool getDone() const;
+
+Q_SIGNALS:
+ void scopyVersionCheckRequested();
+ void scopyVersionChanged();
+ void m2kVersionChanged();
+ void checkUpdatesFinished(qint64);
+
+public Q_SLOTS:
+ void onVersionsRequestFinished(QNetworkReply*);
+};
+}
+#endif // PHONEHOME_H
diff --git a/src/plot_line_handle.cpp b/src/plot_line_handle.cpp
index a0bf5fd1ec..1fa9887563 100644
--- a/src/plot_line_handle.cpp
+++ b/src/plot_line_handle.cpp
@@ -23,6 +23,7 @@
#include
#include
+#include
#include
@@ -662,14 +663,14 @@ void FreePlotLineHandleV::paintEvent(QPaintEvent *)
setToolTip("");
}
- const double textHeight = QFontMetrics(QFont(fontFamily, fontSize)).height();
-
- QPointF textPos(0.0, m_height / 2.0 + textHeight / 4.0);
+ const QSizeF size = QFontMetricsF(QFont(fontFamily, fontSize)).size(Qt::TextSingleLine, m_name);
+ QRectF textRect(QPointF(0.0, 0.0), size);
+ textRect.moveCenter(QPointF(m_image.width() / 2.0, m_height / 2.0));
p.save();
p.setPen(QPen(QBrush(Qt::white), 20));
p.setFont(QFont(fontFamily, fontSize));
- p.drawText(textPos, m_name);
+ p.drawText(textRect, m_name);
p.restore();
} else {
p.drawPixmap(imageTopLeft, m_image);
@@ -734,7 +735,11 @@ void RoundedHandleV::paintEvent(QPaintEvent *pv)
QRect rect(0, 0, m_image.width() - 1, m_image.height() - 1);
if (m_selected && m_selectable) {
- p.setPen(QPen(Qt::white, 2, Qt::SolidLine));
+ if (QIcon::themeName() == "scopy-default") {
+ p.setPen(QPen(Qt::white, 2, Qt::SolidLine));
+ } else {
+ p.setPen(QPen(Qt::black, 2, Qt::SolidLine));
+ }
} else {
p.setPen(QPen(m_roundRectColor, 1, Qt::SolidLine));
}
diff --git a/src/plot_utils.cpp b/src/plot_utils.cpp
index b94fec18a6..36233ebc70 100644
--- a/src/plot_utils.cpp
+++ b/src/plot_utils.cpp
@@ -54,6 +54,17 @@ bool PrefixFormatter::getTwoDecimalMode()
QString PrefixFormatter::buildString(double value, QString prefix, QString unitType, int precision) const
{
+
+ if (m_trimZeroes) {
+ for (auto i = 0; i < precision; i++) {
+ const double singlePrecision = value * pow(10,i);
+ if (singlePrecision == round(singlePrecision)) {
+ precision = i;
+ break;
+ }
+ }
+ }
+
return QLocale().toString(value, 'f', precision) + " " + prefix + unitType;
}
@@ -75,6 +86,16 @@ int PrefixFormatter::findPrefixIndex(double value) const
return index;
}
+bool PrefixFormatter::getTrimZeroes() const
+{
+ return m_trimZeroes;
+}
+
+void PrefixFormatter::setTrimZeroes(bool trimZeroes)
+{
+ m_trimZeroes = trimZeroes;
+}
+
QString PrefixFormatter::format(double value, QString unitType = "", int precision = 0) const
{
int index = findPrefixIndex(value);
diff --git a/src/plot_utils.hpp b/src/plot_utils.hpp
index f4520d3ebb..8dd6e0697a 100644
--- a/src/plot_utils.hpp
+++ b/src/plot_utils.hpp
@@ -35,6 +35,9 @@ namespace adiscope {
virtual QString format(double value, QString unitType, int precision) const;
void getFormatAttributes(double value, QString& prefix, double& scale) const;
+ bool getTrimZeroes() const;
+ void setTrimZeroes(bool trimZeroes);
+
protected:
virtual QString buildString(double value, QString prefix, QString unitType, int precision) const;
int findPrefixIndex(double value) const;
@@ -43,6 +46,7 @@ namespace adiscope {
std::vector> m_prefixes;
int m_defaultPrefixIndex;
bool m_twoDecimalMode;
+ bool m_trimZeroes;
};
class MetricPrefixFormatter: public PrefixFormatter
diff --git a/src/power_controller.cpp b/src/power_controller.cpp
index c055bf771c..10a069bf58 100644
--- a/src/power_controller.cpp
+++ b/src/power_controller.cpp
@@ -104,6 +104,13 @@ PowerController::PowerController(struct iio_context *ctx,
connect(ui->dac1, &QPushButton::toggled, this, &PowerController::toggleRunButton);
connect(ui->dac2, &QPushButton::toggled, this, &PowerController::toggleRunButton);
+ std::vector scales {ui->scale_dac1, ui->scale_dac2};
+ for (auto scale : scales) {
+ scale->setOrientation(Qt::Horizontal);
+ scale->setScalePosition(QwtThermo::LeadingScale);
+ scale->setOriginMode(QwtThermo::OriginCustom);
+ }
+
api->setObjectName(QString::fromStdString(Filter::tool_name(
TOOL_POWER_CONTROLLER)));
api->load(*settings);
@@ -111,6 +118,8 @@ PowerController::PowerController(struct iio_context *ctx,
readPreferences();
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/power-supply");
+
}
PowerController::~PowerController()
diff --git a/src/preferences.cpp b/src/preferences.cpp
index f408f55af4..c94e1f0f94 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -30,6 +30,7 @@
#include
#include
#include
+#include "application_restarter.h"
using namespace adiscope;
@@ -64,7 +65,12 @@ Preferences::Preferences(QWidget *parent) :
m_instrument_notes_active(false),
m_debug_messages_active(false),
m_attemptTempLutCalib(false),
- m_skipCalIfCalibrated(true)
+ m_skipCalIfCalibrated(true),
+ automatical_version_checking_enabled(false),
+ first_application_run(true),
+ check_updates_url("https://swdownloads.analog.com/cse/sw_versions.json"),
+ m_colorEditor(nullptr),
+ m_logging_enabled(false)
{
ui->setupUi(this);
@@ -143,6 +149,11 @@ Preferences::Preferences(QWidget *parent) :
Q_EMIT notify();
});
+ connect(ui->enableLoggingCheckBox, &QCheckBox::stateChanged, [=](int state) {
+ m_logging_enabled = !!state;
+ Q_EMIT notify();
+ });
+
connect(ui->enableAnimCheckBox, &QCheckBox::stateChanged, [=](int state) {
animations_enabled = (!state ? false : true);
Q_EMIT notify();
@@ -177,6 +188,13 @@ Preferences::Preferences(QWidget *parent) :
info.exec();
}
});
+ connect(ui->autoUpdatesCheckBox, &QCheckBox::stateChanged, [=](int state) {
+ automatical_version_checking_enabled = (!state ? false : true);
+ if(automatical_version_checking_enabled) {
+ Q_EMIT requestUpdateCheck();
+ }
+ Q_EMIT notify();
+ });
connect(ui->instrumentNotesCheckbox, &QCheckBox::stateChanged, [=](int state) {
m_instrument_notes_active = (!state ? false : true);
@@ -194,13 +212,6 @@ Preferences::Preferences(QWidget *parent) :
pref_api->setObjectName(QString("Preferences"));
pref_api->load(settings);
- ui->label_restart->setVisible(false);
- //////////////////////
- // TEMPORARY UNTIL ACTUAL IMPLEMENTATION
- ui->tempLutCalibCheckbox->setVisible(false);
- ui->label_28->setVisible(false);
- //////////////////////////
-
ui->languageCombo->addItems(getOptionsList());
@@ -212,7 +223,7 @@ Preferences::Preferences(QWidget *parent) :
ui->languageCombo->addItem(language);
ui->languageCombo->setCurrentText(language);
if (m_initialized) {
- ui->label_restart->setVisible(true);
+ requestRestart();
}
} else {
if(!getLanguageList().contains(language)){
@@ -220,12 +231,11 @@ Preferences::Preferences(QWidget *parent) :
language = info.fileName().remove(".qm");
}
ui->languageCombo->setCurrentText(language);
- ui->label_restart->setVisible(false);
}
} else {
language = lang;
if (m_initialized) {
- ui->label_restart->setVisible(true);
+ requestRestart();
}
Q_EMIT notify();
@@ -236,6 +246,59 @@ Preferences::Preferences(QWidget *parent) :
m_displaySamplingPoints = (!state ? false : true);
Q_EMIT notify();
});
+
+ ui->comboBoxTheme->addItem("default");
+ ui->comboBoxTheme->addItem("light");
+ ui->comboBoxTheme->addItem("browse");
+ connect(ui->comboBoxTheme, &QComboBox::currentTextChanged, [=](const QString &stylesheet) {
+ if (stylesheet == "browse") {
+ QString filePath = QFileDialog::getOpenFileName(this,
+ tr("Load Theme"), "", tr("Stylesheet files (*.qss)"),
+ nullptr, (m_useNativeDialogs ? QFileDialog::Options() : QFileDialog::DontUseNativeDialog));
+
+ if (filePath.isEmpty()) {
+ QSignalBlocker blocker(ui->comboBoxTheme);
+ ui->comboBoxTheme->setCurrentText(m_colorEditor->getCurrentStylesheet());
+ return;
+ }
+
+ m_colorEditor->setUserStylesheets({filePath});
+ m_colorEditor->setCurrentStylesheet(filePath);
+
+ requestRestart();
+
+
+ } else {
+ m_colorEditor->setCurrentStylesheet(stylesheet);
+
+ // force saving of the ini file as the new Scopy process
+ // when restarted will start before scopy closes. A race condition
+ // will appear on who gets to read/write to the .ini file first
+ QString preference_ini_file = getPreferenceIniFile();
+ QSettings settings(preference_ini_file, QSettings::IniFormat);
+ pref_api->save(settings);
+
+ requestRestart();
+ }
+ });
+}
+
+void Preferences::requestRestart()
+{
+ QMessageBox msgBox;
+ msgBox.setText(tr("An application restart is required for these settings to take effect .. "));
+ msgBox.setInformativeText(tr("Do you want to restart now ?"));
+ msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ auto buttonOk = msgBox.button(QMessageBox::Ok);
+ auto buttonCancel = msgBox.button(QMessageBox::Cancel);
+ buttonOk->setText("Now");
+ buttonCancel->setText("Later");
+ int ret = msgBox.exec();
+
+ if (ret == QMessageBox::Ok) {
+ // restart:
+ adiscope::ApplicationRestarter::triggerRestart();
+ }
}
QStringList Preferences::getOptionsList()
@@ -325,6 +388,16 @@ void Preferences::showEvent(QShowEvent *event)
ui->skipCalCheckbox->setChecked(m_skipCalIfCalibrated);
// by this point the preferences menu is initialized
m_initialized = true;
+ ui->autoUpdatesCheckBox->setChecked(automatical_version_checking_enabled);
+#ifdef LIBM2K_ENABLE_LOG
+ ui->enableLoggingCheckBox->setChecked(m_logging_enabled);
+ ui->loggingUnavailableLabel->setVisible(false);
+#else
+ ui->enableLoggingCheckBox->setChecked(false);
+ ui->enableLoggingCheckBox->setCheckable(false);
+ ui->loggingUnavailableLabel->setVisible(true);
+ m_logging_enabled = false;
+#endif
QWidget::showEvent(event);
}
@@ -334,7 +407,6 @@ QString Preferences::getPreferenceIniFile()
QSettings settings;
QFileInfo fileInfo(settings.fileName());
QString preference_ini_file = fileInfo.absolutePath() + "/Preferences.ini";
-
return preference_ini_file;
}
@@ -571,6 +643,57 @@ void Preferences::setSkipCalIfCalibrated(bool val)
{
m_skipCalIfCalibrated = val;
}
+bool Preferences::getAutomatical_version_checking_enabled() const
+{
+ return automatical_version_checking_enabled;
+}
+
+void Preferences::setAutomatical_version_checking_enabled(bool value)
+{
+ automatical_version_checking_enabled = value;
+}
+
+QString Preferences::getCheck_updates_url() const
+{
+ return check_updates_url;
+}
+
+void Preferences::setCheck_update_url(const QString& link)
+{
+ check_updates_url = link;
+}
+
+bool Preferences::getFirst_application_run() const
+{
+ return first_application_run;
+}
+
+void Preferences::setFirst_application_run(bool value)
+{
+ first_application_run = value;
+}
+
+
+void Preferences::setColorEditor(ScopyColorEditor *colorEditor)
+{
+ m_colorEditor = colorEditor;
+ QSignalBlocker blocker(ui->comboBoxTheme);
+ if (m_colorEditor->getUserStylesheets().size()) {
+ ui->comboBoxTheme->insertItem(2, m_colorEditor->getUserStylesheets().back());
+ }
+ ui->comboBoxTheme->setCurrentText(m_colorEditor->getCurrentStylesheet());
+ QIcon::setThemeName("scopy-" + m_colorEditor->getCurrentStylesheet());
+}
+
+bool Preferences::getLogging_enabled() const
+{
+ return m_logging_enabled;
+}
+
+void Preferences::setLogging_enabled(bool value)
+{
+ m_logging_enabled = value;
+}
bool Preferences_API::getAnimationsEnabled() const
{
@@ -758,6 +881,34 @@ void Preferences_API::setSkipCalIfCalibrated(bool val)
preferencePanel->m_skipCalIfCalibrated = val;
}
+QString Preferences_API::getCurrentStylesheet() const
+{
+ if (!preferencePanel->m_colorEditor) {
+ return "";
+ }
+
+ return preferencePanel->m_colorEditor->getCurrentStylesheet();
+}
+
+void Preferences_API::setCurrentStylesheet(const QString ¤tStylesheet)
+{
+// preferencePanel->m_colorEditor->setCurrentStylesheet(currentStylesheet);
+}
+
+QStringList Preferences_API::getUserStylesheets() const
+{
+ if (!preferencePanel->m_colorEditor) {
+ return QStringList();
+ }
+
+ return preferencePanel->m_colorEditor->getUserStylesheets();
+}
+
+void Preferences_API::setUserStylesheets(const QStringList &userStylesheets)
+{
+// preferencePanel->m_colorEditor->setUserStylesheets(userStylesheets);
+}
+
bool Preferences::hasNativeDialogs() const
{
return m_useNativeDialogs;
@@ -807,3 +958,32 @@ void Preferences_API::setDebugMessagesActive(bool val)
{
preferencePanel->setDebugMessagesActive(val);
}
+bool Preferences_API::getAutomaticalVersionCheckingEnabled() const
+{
+ return preferencePanel->automatical_version_checking_enabled;
+}
+
+void Preferences_API::setAutomaticalVersionCheckingEnabled(const bool &enabled)
+{
+ preferencePanel->automatical_version_checking_enabled = enabled;
+}
+
+QString Preferences_API::getCheckUpdatesUrl() const
+{
+ return preferencePanel->check_updates_url;
+}
+
+void Preferences_API::setCheckUpdatesUrl(const QString &link)
+{
+ preferencePanel->check_updates_url = link;
+}
+
+bool Preferences_API::getFirstApplicationRun() const
+{
+ return preferencePanel->first_application_run;
+}
+
+void Preferences_API::setFirstApplicationRun(const bool &first)
+{
+ preferencePanel->first_application_run = first;
+}
diff --git a/src/preferences.h b/src/preferences.h
index 75422dfcc8..eedfda6d80 100644
--- a/src/preferences.h
+++ b/src/preferences.h
@@ -26,6 +26,8 @@
#include
#include "apiObject.hpp"
+//#include "coloreditor.h"
+#include "scopy_color_editor.h"
namespace Ui {
@@ -100,6 +102,7 @@ class Preferences : public QWidget
bool getDigital_decoders_enabled() const;
void setDigital_decoders_enabled(bool value);
+
bool getShowADCFilters() const ;
void setShowADCFilters(bool value);
@@ -123,10 +126,26 @@ class Preferences : public QWidget
bool getSkipCalIfCalibrated() const;
void setSkipCalIfCalibrated(bool val);
+ bool getAutomatical_version_checking_enabled() const;
+ void setAutomatical_version_checking_enabled(bool value);
+
+ QString getCheck_updates_url() const;
+ void setCheck_update_url(const QString &link);
+
+ bool getFirst_application_run() const;
+ void setFirst_application_run(bool value);
+
+ void requestRestart();
+ void setColorEditor(ScopyColorEditor *colorEditor);
+
+ bool getLogging_enabled() const;
+ void setLogging_enabled(bool value);
+
Q_SIGNALS:
void notify();
void reset();
+ void requestUpdateCheck();
public Q_SLOTS:
@@ -159,6 +178,9 @@ private Q_SLOTS:
bool show_ADC_digital_filters;
bool mini_hist_enabled;
bool digital_decoders_enabled;
+ bool automatical_version_checking_enabled;
+ QString check_updates_url;
+ bool first_application_run;
bool m_initialized;
bool m_useNativeDialogs;
QString language;
@@ -167,8 +189,11 @@ private Q_SLOTS:
bool m_debug_messages_active;
bool m_attemptTempLutCalib;
bool m_skipCalIfCalibrated;
+ bool m_logging_enabled;
Preferences_API *pref_api;
+
+ ScopyColorEditor *m_colorEditor;
};
class Preferences_API : public ApiObject
@@ -198,6 +223,11 @@ class Preferences_API : public ApiObject
Q_PROPERTY(bool debug_messages_active READ getDebugMessagesActive WRITE setDebugMessagesActive)
Q_PROPERTY(bool attemptTempLutCalib READ getAttemptTempLutCalib WRITE setAttemptTempLutCalib)
Q_PROPERTY(bool skipCalIfCalibrated READ getSkipCalIfCalibrated WRITE setSkipCalIfCalibrated)
+ Q_PROPERTY(bool automatical_version_checking_enabled READ getAutomaticalVersionCheckingEnabled WRITE setAutomaticalVersionCheckingEnabled)
+ Q_PROPERTY(QString check_updates_url READ getCheckUpdatesUrl WRITE setCheckUpdatesUrl)
+ Q_PROPERTY(bool first_application_run READ getFirstApplicationRun WRITE setFirstApplicationRun)
+ Q_PROPERTY(QString currentStylesheet READ getCurrentStylesheet WRITE setCurrentStylesheet)
+ Q_PROPERTY(QStringList userStylesheets READ getUserStylesheets WRITE setUserStylesheets)
public:
@@ -272,6 +302,21 @@ class Preferences_API : public ApiObject
bool getSkipCalIfCalibrated() const;
void setSkipCalIfCalibrated(bool val);
+ bool getAutomaticalVersionCheckingEnabled() const;
+ void setAutomaticalVersionCheckingEnabled(const bool& enabled);
+
+ QString getCheckUpdatesUrl() const;
+ void setCheckUpdatesUrl(const QString& link);
+
+ bool getFirstApplicationRun() const;
+ void setFirstApplicationRun(const bool& first);
+
+ QString getCurrentStylesheet() const;
+ void setCurrentStylesheet(const QString ¤tStylesheet);
+
+ QStringList getUserStylesheets() const;
+ void setUserStylesheets(const QStringList &userStylesheets);
+
private:
Preferences *preferencePanel;
diff --git a/src/qtgui_util.cc b/src/qtgui_util.cc
index dc069c8a4e..78c7507838 100644
--- a/src/qtgui_util.cc
+++ b/src/qtgui_util.cc
@@ -40,6 +40,9 @@
*/
#include "utils.h"
+#include
+#include
+#include
#include
#include
@@ -124,11 +127,46 @@ void Util::setWidgetNrOfChars(QWidget *w,
}
}
-void Util::loadStylesheetFromFile(QString path, QWidget *widget)
+QString Util::loadStylesheetFromFile(const QString &path)
{
QFile file(path);
file.open(QFile::ReadOnly);
QString stylesheet = QString::fromLatin1(file.readAll());
- widget->setStyleSheet(stylesheet);
+ return stylesheet;
+}
+
+bool Util::compareNatural(const std::string& a, const std::string& b) {
+ if (a == b) {
+ return (a < b);
+ } else if (a.empty()) {
+ return true;
+ } else if (b.empty()) {
+ return false;
+ } else if (std::isdigit(a[0]) && !std::isdigit(b[0])) {
+ return true;
+ } else if (!std::isdigit(a[0]) && std::isdigit(b[0])) {
+ return false;
+ } else if (!std::isdigit(a[0]) && !std::isdigit(b[0])) {
+ if (a[0] == b[0]) {
+ return compareNatural(a.substr(1), b.substr(1));
+ }
+ return (a < b);
+ }
+
+ std::istringstream string_stream_a(a);
+ std::istringstream string_stream_b(b);
+
+ int int_a, int_b;
+ std::string a_new, b_new;
+
+ string_stream_a >> int_a;
+ string_stream_b >> int_b;
+ if (int_a != int_b) {
+ return (int_a < int_b);
+ }
+
+ std::getline(string_stream_a, a_new);
+ std::getline(string_stream_b, b_new);
+ return (compareNatural(a_new, b_new));
}
diff --git a/src/saverestoretoolsettings.h b/src/saverestoretoolsettings.h
index 03ee570ef9..ce7374949e 100644
--- a/src/saverestoretoolsettings.h
+++ b/src/saverestoretoolsettings.h
@@ -9,7 +9,11 @@
namespace adiscope {
class SaveRestoreToolSettings
{
- Q_DISABLE_COPY_MOVE(SaveRestoreToolSettings)
+ SaveRestoreToolSettings(const SaveRestoreToolSettings &) = delete;
+ SaveRestoreToolSettings &operator=(const SaveRestoreToolSettings &) = delete;
+
+ SaveRestoreToolSettings(SaveRestoreToolSettings &&) = delete;
+ SaveRestoreToolSettings &operator=(SaveRestoreToolSettings &&) = delete;
public:
SaveRestoreToolSettings(Tool *tool);
~SaveRestoreToolSettings();
diff --git a/src/scopyExceptionHandler.h b/src/scopyExceptionHandler.h
index c334a0f01b..67a4f404d1 100644
--- a/src/scopyExceptionHandler.h
+++ b/src/scopyExceptionHandler.h
@@ -6,25 +6,33 @@
#include
#include
#include
+#include
using namespace adiscope;
#define HANDLE_EXCEPTION(e) \
- if(GetScopyApplicationInstance()->getDebugMode()) { \
+if (GetScopyApplicationInstance()->getDebugMode()) { \
+ auto me = dynamic_cast(&e); \
+ auto handleLambda = [me, e](){ \
QMessageBox msg; \
QString str; \
- auto me = dynamic_cast(&e);\
- if(me) { \
+ if (me) { \
str = QString("Exception %1\ne.type() - %2\ne.what() - %3\ne.iioCode() - %4\nthrown from %5:%6\ncaught in %7:%8\nScopy git tag %9\n") \
.arg("m2k_exception").arg(me->type()).arg(me->what()).arg(me->iioCode()).arg(QString::fromStdString(me->file())).arg(QString::number(me->line())).arg(__FILE__).arg(__LINE__).arg(SCOPY_VERSION_GIT); \
} else { \
str = QString("Exception %1\ncaught in %2:%3\nScopy git tag %4\n").arg(e.what()).arg(__FILE__).arg(__LINE__).arg(SCOPY_VERSION_GIT); \
} \
- if(WriteScopyMinidump()) { \
+ if (WriteScopyMinidump()) { \
str = str + "Created minidump."; \
- }\
- msg.setText(str);\
- msg.exec();\
+ } \
+ msg.setText(str); \
+ msg.exec(); \
+ }; \
+ if (GetScopyApplicationInstance()->thread() != QThread::currentThread()) { \
+ QMetaObject::invokeMethod(GetScopyApplicationInstance(), handleLambda, Qt::BlockingQueuedConnection); \
+ } else { \
+ handleLambda(); \
} \
+} \
#endif // SCOPYEXCEPTIONHANDLER_H
diff --git a/src/scopy_color_editor.cpp b/src/scopy_color_editor.cpp
new file mode 100644
index 0000000000..c642d41e91
--- /dev/null
+++ b/src/scopy_color_editor.cpp
@@ -0,0 +1,556 @@
+/*
+ * Copyright (c) 2021 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+#include "scopy_color_editor.h"
+#include "ui_scopy_color_editor.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include "application_restarter.h"
+
+void ScopyColorEditor::parseAndBuildMap(QString toParse)
+{
+ QStringList print = toParse.split("{").join("").split("}");
+
+ QString textEditText = "";
+
+ for (auto token : print) {
+ // TODO: skip empty parts is only available in qt >= 5.14
+// QStringList ttoken = token.split("\n", Qt::SkipEmptyParts);
+ QStringList ttoken;
+ if (ttoken.size()) {
+ for (auto t : ttoken) {
+ if (t.startsWith("/*")) continue; //ignore comments
+ textEditText += t;
+ textEditText += '\n';
+ break;
+ }
+
+ int i = 0;
+ QString mapKey = "";
+ for (; i < ttoken.size(); ++i) {
+ if (ttoken[i].startsWith("/*")) continue; // ignore comments
+ mapKey = ttoken[i];
+ break;
+ }
+
+ if (mapKey == "") {
+ break;
+ }
+
+ m_entityStylesheetMap[mapKey] = QStringList();
+
+ i++; // advance so we skip the key
+
+ for (; i < ttoken.size(); ++i) {
+ m_entityStylesheetMap[mapKey].push_back(ttoken[i]);
+ }
+ }
+ }
+}
+
+ScopyColorEditor::ScopyColorEditor(QApplication *app, QWidget *parent)
+ : QWidget(parent)
+ , m_ui(new Ui::ScopyColorEditor)
+ , m_app(app)
+ , m_currentStylesheet("default")
+ , m_sh(nullptr)
+{
+ m_ui->setupUi(this);
+
+ m_ui->searchLineEdit->setAttribute(Qt::WA_MacShowFocusRect, false);
+
+ QDir themes(":/stylesheets/themes/");
+ QStringList stylesheets = themes.entryList();
+
+ for (const QString &entry : stylesheets) {
+ m_ui->stylesheetsCmbBox->addItem(entry);
+ }
+
+ connect(m_ui->copyBtn, &QPushButton::clicked,
+ this, &ScopyColorEditor::copy);
+ connect(m_ui->removeBtn, &QPushButton::clicked,
+ this, &ScopyColorEditor::remove);
+ connect(m_ui->stylesheetsCmbBox, &QComboBox::currentTextChanged,
+ this, &ScopyColorEditor::stylesheetSelected);
+ connect(m_ui->searchLineEdit, &QLineEdit::textChanged,
+ this, &ScopyColorEditor::search);
+ connect(m_ui->tabWidget, &QTabWidget::currentChanged,
+ this, &ScopyColorEditor::tabChanged);
+ connect(m_ui->nextMatchBtn, &QPushButton::clicked,
+ this, &ScopyColorEditor::nextMatch);
+ connect(m_ui->prevMatchBtn, &QPushButton::clicked,
+ this, &ScopyColorEditor::prevMatch);
+ connect(m_ui->saveBtn, &QPushButton::clicked,
+ this, &ScopyColorEditor::advancedEditorChanged);
+ connect(m_ui->advancedEditorTextEdit, &QTextEdit::textChanged, [=](){
+ m_ui->saveBtn->setEnabled(true);
+ });
+ connect(m_ui->restartBtn, &QPushButton::clicked, [=](){
+ adiscope::ApplicationRestarter::triggerRestart();
+ });
+
+ m_sh = new SearchHighlight(m_ui->advancedEditorTextEdit->document());
+
+ QFile file(":/stylesheets/themes/global.qss");
+ file.open(QFile::ReadOnly);
+ QString toParse = QString::fromLatin1(file.readAll());
+
+// disable color editor for now
+// parseAndBuildMap(toParse);
+// m_ui->advancedEditorTextEdit->setText(toParse);
+// buildMenuForMap();
+}
+
+ScopyColorEditor::~ScopyColorEditor()
+{
+ delete m_ui;
+}
+
+QString ScopyColorEditor::getStyleSheet() const
+{
+ QString source = m_currentStylesheet;
+ if (!m_userStylesheets.contains(source)) {
+ source = ":/stylesheets/" + source +".qss";
+ }
+
+ QFile file(source);
+ file.open(QFile::ReadOnly);
+
+ return QString::fromLatin1(file.readAll());
+}
+
+QString ScopyColorEditor::getCurrentStylesheet() const
+{
+ return m_currentStylesheet;
+}
+
+void ScopyColorEditor::setCurrentStylesheet(const QString ¤tStylesheet)
+{
+ if (currentStylesheet.length()) {
+ m_currentStylesheet = currentStylesheet;
+ }
+
+// m_app->setStyleSheet(getStyleSheet());
+
+// m_ui->stylesheetsCmbBox->setCurrentText(m_currentStylesheet);
+
+// const bool isUserStylesheet = m_userStylesheets.contains(m_currentStylesheet);
+
+// m_ui->removeBtn->setEnabled(isUserStylesheet);
+// m_ui->tabWidget->setVisible(isUserStylesheet);
+// m_ui->searchLineEdit->setVisible(isUserStylesheet);
+// m_ui->nextMatchBtn->setVisible(isUserStylesheet);
+// m_ui->prevMatchBtn->setVisible(isUserStylesheet);
+}
+
+QStringList ScopyColorEditor::getUserStylesheets() const
+{
+ return m_userStylesheets;
+}
+
+void ScopyColorEditor::setUserStylesheets(const QStringList &userStylesheets)
+{
+ m_userStylesheets = userStylesheets;
+// for (const QString &entry : m_userStylesheets) {
+// QFile entryFile(entry);
+// if (!entryFile.exists()) { continue; }
+// m_ui->stylesheetsCmbBox->addItem(entry);
+// }
+}
+
+void ScopyColorEditor::buildMenuForMap()
+{
+ for (auto it = m_entityStylesheetMap.begin(); it != m_entityStylesheetMap.end(); ++it) {
+// m_scrollArea->widget()->layout()->addWidget(new QPushButton(it.key()));
+ auto layout = m_ui->scrollArea->widget()->layout();
+ QWidget *colorEditor = new QWidget();
+ colorEditor->setObjectName("colorEditor");
+ QVBoxLayout *vBox = new QVBoxLayout();
+ colorEditor->setLayout(vBox);
+ vBox->addWidget(new QLabel(it.key()));
+ colorEditor->setStyleSheet("QWidget#colorEditor{background-color: rgba(0, 0, 0, 60);}");
+
+// std::cout << it.key().toStdString() << std::endl;
+
+ bool toAdd = false;
+
+ for (auto line : it.value()) {
+ std::vector controls;
+ int index = 0;
+ while ((index = line.indexOf("rgba(", index)) != -1) {
+// std::cout << "Found rgba( on line: " << line.toStdString() << " at index: " << index << std::endl;
+ auto btn = new QPushButton(line.split(":")[0].replace(" ", ""));
+ btn->setProperty("key", QVariant(it.key()));
+ btn->setProperty("line", QVariant(line));
+ btn->setProperty("index", QVariant(index));
+
+ controls.push_back(btn);
+ ++index;
+ }
+
+ index = 0;
+ while ((index = line.indexOf("#", index)) != -1) {
+// std::cout << "Found # on line: " << line.toStdString() << " at index: " << index << std::endl;
+ auto btn = new QPushButton(line.split(":")[0].replace(" ", ""));
+ btn->setProperty("key", QVariant(it.key()));
+ btn->setProperty("line", QVariant(line));
+ btn->setProperty("index", QVariant(index));
+
+ controls.push_back(btn);
+ ++index;
+ }
+
+ QHBoxLayout *btnLayout = nullptr;
+ if (controls.size()) {
+ btnLayout = new QHBoxLayout();
+ }
+ for (auto b : controls) {
+ connect(b, &QPushButton::clicked,
+ this, &ScopyColorEditor::changeColor);
+ btnLayout->addWidget(b);
+ toAdd = true;
+ }
+ if (btnLayout) {
+ btnLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding));
+ vBox->addLayout(btnLayout);
+ vBox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding));
+ }
+ }
+
+ if (toAdd) {
+ m_colorEditors.append(colorEditor);
+ layout->addWidget(colorEditor);
+ }
+ }
+}
+
+bool ScopyColorEditor::handleRgbaColor(const QString &key, const QString &line, int index, QPushButton *btn)
+{
+ int endIndex = -1;
+ for (int i = index; i < line.size(); ++i) {
+ if (line[i] == ")") {
+ endIndex = i;
+ }
+ }
+
+ std::cout << line[index].toLatin1() << " " << line[endIndex].toLatin1() << std::endl;
+
+ QString colorString = "";
+ for (int i = index; i <= endIndex; ++i) {
+ colorString += line.at(i);
+ }
+
+ std::cout << colorString.toStdString() << std::endl;
+
+ QStringList values = colorString.split("(")[1].split(")")[0].replace(" ", "").split(",");
+ int r = 0, g = 0, b = 0, a = 0;
+
+ r = values[0].toInt();
+ g = values[1].toInt();
+ b = values[2].toInt();
+ if (values.size() == 4) {
+ a = values[3].toInt();
+ }
+
+ std::cout << r << " " << g << " " << b << " " << a << std::endl;
+ QColor oldColor = QColor();
+ oldColor.setRed(r);
+ oldColor.setGreen(g);
+ oldColor.setBlue(b);
+ oldColor.setAlpha(a);
+
+ QColor newColor = QColorDialog::getColor(oldColor);
+ if (!newColor.isValid()) {
+ return false;
+ }
+
+ QString newColorString = "rgba(" + QString::number(newColor.red())
+ + ", " + QString::number(newColor.green())
+ + ", " + QString::number(newColor.blue())
+ + ", " + QString::number(newColor.alpha())
+ + ")";
+
+ std::cout << newColorString.toStdString() << std::endl;
+
+ QStringList value = m_entityStylesheetMap[key];
+ for (int i = 0; i < value.size(); ++i) {
+ if (value[i] == line) {
+ value[i].replace(index, endIndex - index + 1, newColorString);
+ btn->setProperty("line", QVariant(value[i]));
+ }
+ }
+ m_entityStylesheetMap[key] = value;
+
+ return true;
+}
+
+bool ScopyColorEditor::handleHexColor(const QString &key, const QString &line, int index, QPushButton *btn)
+{
+ int endIndex = -1;
+ for (int i = index; i < line.size(); ++i) {
+ if (line[i] == " " || line[i] == ";") {
+ endIndex = i;
+ }
+ }
+
+ QString colorString = "";
+ for (int i = index; i < endIndex; ++i) {
+ colorString += line.at(i);
+ }
+
+ QColor oldColor(colorString);
+
+ QColor newColor = QColorDialog::getColor(oldColor);
+ if (!newColor.isValid()) {
+ return false;
+ }
+
+ QString newColorString = newColor.name();
+
+ QStringList value = m_entityStylesheetMap[key];
+ for (int i = 0; i < value.size(); ++i) {
+ if (value[i] == line) {
+ value[i].replace(index, endIndex - index, newColorString);
+ btn->setProperty("line", QVariant(value[i]));
+ }
+ }
+ m_entityStylesheetMap[key] = value;
+
+ return true;
+}
+
+void ScopyColorEditor::writeNewStylesheetToFile(QString stylesheet)
+{
+ QString source = m_currentStylesheet;
+ if (!m_userStylesheets.contains(source)) {
+ source = ":/stylesheets/themes/" + source;
+ }
+ QFile file(source);
+ file.open(QFile::ReadWrite | QFile::Truncate | QFile::Text);
+ QTextStream in(&file);
+ in << stylesheet;
+}
+
+void ScopyColorEditor::rebuildAndApplyStylesheet()
+{
+ QString stylesheet = "";
+ for (auto it = m_entityStylesheetMap.begin(); it != m_entityStylesheetMap.end(); ++it) {
+ stylesheet += it.key() + " {\n";
+
+ for (auto line : it.value()) {
+ stylesheet += line + "\n";
+ }
+
+ stylesheet += "}\n\n";
+ }
+
+ m_app->setStyleSheet(stylesheet);
+
+ m_ui->advancedEditorTextEdit->setText(stylesheet);
+
+ writeNewStylesheetToFile(stylesheet);
+}
+
+void ScopyColorEditor::createNewFile()
+{
+
+}
+
+void ScopyColorEditor::loadFile()
+{
+
+}
+
+void ScopyColorEditor::changeColor()
+{
+ QPushButton *btn = qobject_cast(QObject::sender());
+
+ QString key = btn->property("key").toString();
+ QString line = btn->property("line").toString();
+ int index = btn->property("index").toInt();
+
+ bool changed = false;
+ if (line[index] == "r") {
+ changed = handleRgbaColor(key, line, index, btn);
+ } else if (line[index] == "#") {
+ changed = handleHexColor(key, line, index, btn);
+ }
+
+ if (changed) {
+ rebuildAndApplyStylesheet();
+ }
+}
+
+void ScopyColorEditor::copy()
+{
+ QStringList filter;
+ filter += QString(tr("Qt stylesheet (*.qss)"));
+
+ QString selectedFilter = filter[0];
+
+ QString fileName = QFileDialog::getSaveFileName(this,
+ tr("Copy"), "", filter.join(";;"),
+ &selectedFilter, QFileDialog::Options());
+
+ if (!fileName.length()) {
+ return;
+ }
+
+ if (fileName.split(".").size() <= 1) {
+ // file name w/o extension. Let's append it
+ fileName += ".qss";
+ }
+
+ QString source = m_ui->stylesheetsCmbBox->currentText();
+ if (!m_userStylesheets.contains(source)) {
+ source = ":/stylesheets/themes/" + source;
+ }
+ qDebug() << QFile::copy(source, fileName);
+
+ m_userStylesheets.append(fileName);
+ m_ui->stylesheetsCmbBox->addItem(fileName);
+}
+
+void ScopyColorEditor::remove()
+{
+ QString file = m_ui->stylesheetsCmbBox->currentText();
+ if (m_userStylesheets.contains(file)) {
+ m_userStylesheets.removeOne(file);
+ m_ui->stylesheetsCmbBox->removeItem(m_ui->stylesheetsCmbBox->currentIndex());
+ }
+}
+
+QString ScopyColorEditor::clearAndRebuildEditor(const QString &stylesheet)
+{
+ m_entityStylesheetMap.clear();
+ auto layout = m_ui->scrollArea->widget()->layout();
+ for (QWidget *widget : m_colorEditors) {
+ layout->removeWidget(widget);
+ widget->deleteLater();
+ }
+
+ m_colorEditors.clear();
+
+ QString source = stylesheet;
+ if (!m_userStylesheets.contains(source)) {
+ source = ":/stylesheets/themes/" + source;
+ }
+ QFile file(source);
+ file.open(QFile::ReadOnly);
+ QString toParse = QString::fromLatin1(file.readAll());
+ parseAndBuildMap(toParse);
+ buildMenuForMap();
+
+ return source;
+}
+
+void ScopyColorEditor::stylesheetSelected(const QString &stylesheet)
+{
+ const bool isUserStylesheet = m_userStylesheets.contains(stylesheet);
+
+ m_ui->removeBtn->setEnabled(isUserStylesheet);
+ m_ui->tabWidget->setVisible(isUserStylesheet);
+ m_ui->searchLineEdit->setVisible(isUserStylesheet);
+ m_ui->nextMatchBtn->setVisible(isUserStylesheet);
+ m_ui->prevMatchBtn->setVisible(isUserStylesheet);
+
+ QString source = clearAndRebuildEditor(stylesheet);
+ QFile file(source);
+ file.open(QFile::ReadOnly);
+ QString toParse = QString::fromLatin1(file.readAll());
+ m_ui->advancedEditorTextEdit->setText(toParse);
+
+ rebuildAndApplyStylesheet();
+
+ m_currentStylesheet = stylesheet;
+}
+
+void ScopyColorEditor::search(const QString &searchText)
+{
+ for (QWidget *w : m_colorEditors) {
+ QLabel *label = qobject_cast(w->layout()->itemAt(0)->widget());
+ bool hasSearchedWords = label->text().contains(searchText);
+ w->setVisible(hasSearchedWords);
+ }
+
+ m_sh->searchText(searchText);
+}
+
+void ScopyColorEditor::tabChanged(int index)
+{
+ if (m_ui->tabWidget->widget(index) != m_ui->advancedEditorWidget) {
+ m_ui->nextMatchBtn->setDisabled(true);
+ m_ui->prevMatchBtn->setDisabled(true);
+ } else {
+ m_ui->nextMatchBtn->setEnabled(true);
+ m_ui->prevMatchBtn->setEnabled(true);
+ }
+}
+
+void ScopyColorEditor::nextMatch()
+{
+ m_ui->advancedEditorTextEdit->find(m_ui->searchLineEdit->text(), QTextDocument::FindCaseSensitively);
+ m_ui->advancedEditorTextEdit->ensureCursorVisible();
+ m_sh->rehighlight();
+}
+
+void ScopyColorEditor::prevMatch()
+{
+ m_ui->advancedEditorTextEdit->find(m_ui->searchLineEdit->text(), QTextDocument::FindCaseSensitively | QTextDocument::FindBackward);
+ m_ui->advancedEditorTextEdit->ensureCursorVisible();
+ m_sh->rehighlight();
+}
+
+void ScopyColorEditor::advancedEditorChanged()
+{
+ writeNewStylesheetToFile(m_ui->advancedEditorTextEdit->toPlainText());
+ clearAndRebuildEditor(m_currentStylesheet);
+ rebuildAndApplyStylesheet();
+ m_ui->saveBtn->setDisabled(true);
+}
+
+SearchHighlight::SearchHighlight(QTextDocument *parent)
+ : QSyntaxHighlighter(parent)
+{
+ m_format.setBackground(Qt::green);
+}
+
+void SearchHighlight::searchText(const QString &text)
+{
+ m_pattern = QRegularExpression(text);
+ rehighlight();;
+}
+
+void SearchHighlight::highlightBlock(const QString &text)
+{
+ QRegularExpressionMatchIterator matchIterator = m_pattern.globalMatch(text);
+ while (matchIterator.hasNext()) {
+ QRegularExpressionMatch match = matchIterator.next();
+// qDebug() << "Match at: " << match.capturedStart();
+ setFormat(match.capturedStart(), match.capturedLength(), m_format);
+ }
+}
diff --git a/src/scopy_color_editor.h b/src/scopy_color_editor.h
new file mode 100644
index 0000000000..4ad4255913
--- /dev/null
+++ b/src/scopy_color_editor.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2021 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+#ifndef SCOPY_COLOR_EDITOR_H
+#define SCOPY_COLOR_EDITOR_H
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+namespace Ui {
+class ScopyColorEditor;
+}
+
+class SearchHighlight : public QSyntaxHighlighter
+{
+ Q_OBJECT
+public:
+ explicit SearchHighlight(QTextDocument *parent = nullptr);
+
+ void searchText(const QString &text);
+
+protected:
+ virtual void highlightBlock(const QString &text) override;
+
+private:
+ QRegularExpression m_pattern;
+ QTextCharFormat m_format;
+};
+
+class ScopyColorEditor : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit ScopyColorEditor(QApplication *app, QWidget *parent = nullptr);
+ ~ScopyColorEditor();
+
+ QString getStyleSheet() const;
+
+ QString getCurrentStylesheet() const;
+ void setCurrentStylesheet(const QString ¤tStylesheet);
+
+ QStringList getUserStylesheets() const;
+ void setUserStylesheets(const QStringList &userStylesheets);
+
+private:
+ void buildMenuForMap();
+ bool handleRgbaColor(const QString &key, const QString &line, int index,
+ QPushButton *btn);
+ bool handleHexColor(const QString &key, const QString &line, int index,
+ QPushButton *btn);
+
+ void rebuildAndApplyStylesheet();
+
+ void createNewFile();
+ void loadFile();
+ void parseAndBuildMap(QString toParse);
+ void writeNewStylesheetToFile(QString stylesheet);
+
+private Q_SLOTS:
+ void changeColor();
+ void copy();
+ void remove();
+ void stylesheetSelected(const QString &stylesheet);
+ void search(const QString &searchText);
+ void tabChanged(int index);
+ void nextMatch();
+ void prevMatch();
+ void advancedEditorChanged();
+
+private:
+ Ui::ScopyColorEditor *m_ui;
+
+ QVector m_colorEditors;
+ QMap m_entityStylesheetMap;
+ QScrollArea *m_scrollArea{nullptr};
+ QTextEdit *m_textEdit{nullptr};
+ QApplication *m_app;
+
+ QString m_currentStylesheet;
+ QStringList m_userStylesheets;
+
+ SearchHighlight *m_sh;
+ QString clearAndRebuildEditor(const QString &stylesheet);
+};
+
+#endif // SCOPY_COLOR_EDITOR_H
diff --git a/src/scopyaboutdialog.cpp b/src/scopyaboutdialog.cpp
new file mode 100644
index 0000000000..34733b918d
--- /dev/null
+++ b/src/scopyaboutdialog.cpp
@@ -0,0 +1,56 @@
+#include "scopyaboutdialog.hpp"
+#include "ui_scopyaboutdialog.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+using namespace adiscope;
+
+
+ScopyAboutDialog::ScopyAboutDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::ScopyAboutDialog),
+ landingPage(QUrl("qrc:/about.html"))
+{
+ ui->setupUi(this);
+ ui->centeredUnderLogo->setText("Released under GPLv3");
+
+ QString stylesheet = Util::loadStylesheetFromFile(":stylesheets/stylesheets/browserStylesheet.qss");
+ ui->aboutTextBrowser->document()->setDefaultStyleSheet(stylesheet);
+
+ ui->aboutTextBrowser->setWordWrapMode(QTextOption::WordWrap);
+ ui->aboutTextBrowser->setSource(landingPage);
+ ui->checkForUpdatesLbl->setText("");
+
+ connect(ui->backButton,SIGNAL(clicked()),ui->aboutTextBrowser,SLOT(backward()));
+ connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept()));
+ connect(this,SIGNAL(finished(int)),this,SLOT(dismiss(int)));
+ connect(ui->checkForUpdatesBtn, &QPushButton::clicked, [=](int state) {
+ ui->checkForUpdatesLbl->setText(tr("Checking server for updates ... "));
+ Q_EMIT forceCheckForUpdates();
+ });
+}
+
+void ScopyAboutDialog::dismiss(int)
+{
+ ui->aboutTextBrowser->clearHistory();
+ ui->aboutTextBrowser->setSource(landingPage);
+}
+
+ScopyAboutDialog::~ScopyAboutDialog()
+{
+ delete ui;
+}
+
+void ScopyAboutDialog::updateCheckUpdateLabel(qint64 timestamp)
+{
+ if(timestamp) {
+ ui->checkForUpdatesLbl->setText(tr("Last checked for updates at ") + QDateTime::fromMSecsSinceEpoch(timestamp).toString("dddd d MMMM yyyy hh:mm:ss"));
+ } else {
+ ui->checkForUpdatesLbl->setText(tr("Check for updates failed ... "));
+ }
+}
diff --git a/src/scopyaboutdialog.hpp b/src/scopyaboutdialog.hpp
new file mode 100644
index 0000000000..2c5dbd510e
--- /dev/null
+++ b/src/scopyaboutdialog.hpp
@@ -0,0 +1,32 @@
+#ifndef SCOPYABOUTDIALOG_HPP
+#define SCOPYABOUTDIALOG_HPP
+
+#include
+#include
+
+namespace Ui {
+class ScopyAboutDialog;
+}
+
+namespace adiscope {
+class ScopyAboutDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit ScopyAboutDialog(QWidget *parent = nullptr);
+ ~ScopyAboutDialog();
+
+Q_SIGNALS:
+ void forceCheckForUpdates();
+
+public Q_SLOTS:
+ void dismiss(int);
+ void updateCheckUpdateLabel(qint64);
+
+private:
+ Ui::ScopyAboutDialog *ui;
+ QUrl landingPage;
+};
+}
+#endif // SCOPYABOUTDIALOG_HPP
diff --git a/src/session_info.cpp b/src/session_info.cpp
new file mode 100644
index 0000000000..7e98c0e75c
--- /dev/null
+++ b/src/session_info.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2021 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+#include "session_info.h"
+
+#include "config.h"
+
+#include
+
+using namespace adiscope;
+
+SessionInfo::SessionInfo()
+ : ApiObject()
+ , m_lastConnectedFirmware{}
+ , m_lastConnectedSerialNumber{}
+
+{
+ setObjectName("SessionInfo");
+}
+
+QString SessionInfo::getOperatingSystem() const { return QSysInfo::prettyProductName(); }
+
+QString SessionInfo::getGitTag() const { return SCOPY_VERSION_GIT; }
+
+QString SessionInfo::getLastConnectedFirmware() const { return m_lastConnectedFirmware; }
+
+void SessionInfo::setLastConnectedFirmware(const QString& firmware) { m_lastConnectedFirmware = firmware; }
+
+QString SessionInfo::getLastConnectedSerialNumber() const { return m_lastConnectedSerialNumber; }
+
+void SessionInfo::setLastConnectedSerialNumber(const QString& serial) { m_lastConnectedSerialNumber = serial; }
diff --git a/src/session_info.h b/src/session_info.h
new file mode 100644
index 0000000000..c88110d1b2
--- /dev/null
+++ b/src/session_info.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2021 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+#ifndef SESSIONINFO_H
+#define SESSIONINFO_H
+
+#include "apiObject.hpp"
+
+#include
+#include
+
+namespace adiscope {
+class SessionInfo : public ApiObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QString os READ getOperatingSystem WRITE setOperatingSystem)
+ Q_PROPERTY(QString gitTag READ getGitTag WRITE setGitTag)
+ Q_PROPERTY(QString firmware READ getLastConnectedFirmware WRITE setLastConnectedFirmware)
+ Q_PROPERTY(QString serialNumber READ getLastConnectedSerialNumber WRITE setLastConnectedSerialNumber)
+public:
+ explicit SessionInfo();
+
+ // write functions had to be written for all the properties
+ // otherwise none of them would've been saved
+ QString getOperatingSystem() const;
+ void setOperatingSystem(const QString& /*os*/) {}
+
+ QString getGitTag() const;
+ void setGitTag(const QString& /*tag*/) {}
+
+ QString getLastConnectedFirmware() const;
+ void setLastConnectedFirmware(const QString& firmware);
+
+ QString getLastConnectedSerialNumber() const;
+ void setLastConnectedSerialNumber(const QString& serial);
+
+private:
+ QString m_lastConnectedFirmware;
+ QString m_lastConnectedSerialNumber;
+};
+} // namespace adiscope
+#endif // SESSIONINFO_H
diff --git a/src/signal_generator.cpp b/src/signal_generator.cpp
index 1cfc92233e..87d01cb479 100644
--- a/src/signal_generator.cpp
+++ b/src/signal_generator.cpp
@@ -378,7 +378,7 @@ SignalGenerator::SignalGenerator(struct iio_context *_ctx, Filter *filt,
connect(ui->btnNoiseCollapse,&QPushButton::clicked,
[=](bool check) {
- ui->wNoise->setVisible(!check);
+ ui->wNoise->setVisible(check);
});
unsigned int nb_channels = m_m2k_analogout->getNbChannels();
@@ -491,7 +491,10 @@ SignalGenerator::SignalGenerator(struct iio_context *_ctx, Filter *filt,
ui->plot->insertWidget(0,plot, 0, 0);
connect(ui->btnAppearanceCollapse, SIGNAL(toggled(bool)),ui->wAppearance, SLOT(setVisible(bool)));
- ui->wAppearance->hide();
+
+ connect(ui->btnSigGenAutoscale, &QPushButton::toggled, [=](bool checked){
+ plot->setAutoScale(checked);
+ });
fileManager = new FileManager("Signal Generator");
@@ -500,7 +503,6 @@ SignalGenerator::SignalGenerator(struct iio_context *_ctx, Filter *filt,
api->load(*settings);
api->js_register(engine);
- renameConfigPanel();
connect(ui->rightMenu, SIGNAL(finished(bool)), this,
SLOT(rightMenuFinished(bool)));
@@ -593,6 +595,8 @@ SignalGenerator::SignalGenerator(struct iio_context *_ctx, Filter *filt,
// Reduce the extent of the yLeft axis because it is not needed
plot->axisWidget(QwtPlot::yLeft)->scaleDraw()->setMinimumExtent(65);
+
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/siggen");
}
SignalGenerator::~SignalGenerator()
@@ -1083,8 +1087,8 @@ void SignalGenerator::tabChanged(int index)
void SignalGenerator::updatePreview()
{
- static const float MAX_PREVIEW_RANGE = (float)(SHRT_MAX);
- static const float MIN_PREVIEW_RANGE = (float)(SHRT_MIN);
+ static const float MAX_PREVIEW_RANGE = AMPLITUDE_VOLTS;
+ static const float MIN_PREVIEW_RANGE = -AMPLITUDE_VOLTS;
const int nb_points_correction = 16; // generate slightly more points to avoid incomplete scope_sink_f buffer
gr::top_block_sptr top = make_top_block("Signal Generator Update");
@@ -1938,18 +1942,6 @@ void adiscope::SignalGenerator::channelWidgetMenuToggled(bool checked)
triggerRightMenuToggle(cw->id(), checked);
}
-void adiscope::SignalGenerator::renameConfigPanel()
-{
- /*ui->config_panel->setTitle(QString("Configuration for %1").arg(
- channels[currentChannel]->fullName()));*/
- QString stylesheet = "QTabBar::tab:selected {\
- color: white;\
- margin-top: 0px;\
- border-bottom: 2px solid "
- + channels[currentChannel]->color().name() + "}";
- ui->tabWidget->setStyleSheet(stylesheet);
-}
-
int SignalGenerator::sg_waveform_to_idx(enum sg_waveform wave)
{
switch (wave) {
@@ -2051,7 +2043,6 @@ void SignalGenerator::updateRightMenuForChn(int chIdx)
ui->type->setCurrentIndex(sg_waveform_to_idx(ptr->waveform));
waveformUpdateUi(ptr->waveform);
- renameConfigPanel();
ui->tabWidget->setCurrentIndex((int) ptr->type);
resizeTabWidget((int)ptr->type);
}
diff --git a/src/signal_generator.hpp b/src/signal_generator.hpp
index b6fe9a28ca..fff07a6ebd 100644
--- a/src/signal_generator.hpp
+++ b/src/signal_generator.hpp
@@ -180,7 +180,6 @@ class SignalGenerator : public Tool
QSharedPointer getData(QWidget *obj);
QSharedPointer getCurrentData();
- void renameConfigPanel();
void start();
void resetZoom();
diff --git a/src/signal_generator_api.cpp b/src/signal_generator_api.cpp
index 6b797a64ab..7a8b403681 100644
--- a/src/signal_generator_api.cpp
+++ b/src/signal_generator_api.cpp
@@ -838,7 +838,17 @@ void SignalGenerator_API::setLineThickness(const QList& list)
}
}
int index = (int)(gen->getCurrentData()->lineThickness / 0.5) - 1;
- gen->ui->cbLineThickness->setCurrentIndex(index);
+ gen->ui->cbLineThickness->setCurrentIndex(index);
+}
+
+bool SignalGenerator_API::getAutoscale() const
+{
+ return gen->ui->btnSigGenAutoscale->isChecked();
+}
+
+void SignalGenerator_API::setAutoscale(bool checked)
+{
+ gen->ui->btnSigGenAutoscale->setChecked(checked);
}
}
diff --git a/src/signal_generator_api.hpp b/src/signal_generator_api.hpp
index 3224dc7113..70944548cc 100644
--- a/src/signal_generator_api.hpp
+++ b/src/signal_generator_api.hpp
@@ -93,6 +93,8 @@ class SignalGenerator_API : public ApiObject
Q_PROPERTY(QList line_thickness
READ getLineThickness WRITE setLineThickness)
+ Q_PROPERTY(bool autoscale READ getAutoscale WRITE setAutoscale);
+
public:
bool running() const;
@@ -171,6 +173,10 @@ class SignalGenerator_API : public ApiObject
QList getLineThickness() const;
void setLineThickness(const QList& list);
+ bool getAutoscale() const;
+ void setAutoscale(bool checked);
+
+
Q_INVOKABLE void show();
diff --git a/src/singletone_wrapper.h b/src/singletone_wrapper.h
new file mode 100644
index 0000000000..cae947c963
--- /dev/null
+++ b/src/singletone_wrapper.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2020 Analog Devices Inc.
+ *
+ * This file is part of Scopy
+ * (see http://www.github.com/analogdevicesinc/scopy).
+ *
+ * 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 .
+ */
+
+#ifndef SINGLETONE_WRAPPER_H
+#define SINGLETONE_WRAPPER_H
+
+namespace adiscope {
+template
+class SingleToneWrapper {
+public:
+ SingleToneWrapper() = default;
+
+ SingleToneWrapper(const SingleToneWrapper&) = delete;
+ SingleToneWrapper& operator=(const SingleToneWrapper &) = delete;
+public:
+ static SingleToneWrapper& getInstance() {
+ static SingleToneWrapper instance;
+ return instance;
+ }
+
+ void setWrapped(T wrapped) {
+ m_wrapped = wrapped;
+ }
+
+ T getWrapped() {
+ return m_wrapped;
+ }
+
+private:
+ T m_wrapped;
+};
+
+} // namespace adiscope
+
+#endif // SINGLETONE_WRAPPER_H
diff --git a/src/spectrum_analyzer.cpp b/src/spectrum_analyzer.cpp
index 1f7dbd539a..0b699b110e 100644
--- a/src/spectrum_analyzer.cpp
+++ b/src/spectrum_analyzer.cpp
@@ -206,8 +206,6 @@ SpectrumAnalyzer::SpectrumAnalyzer(struct iio_context *ctx, Filter *filt,
settings_group->setExclusive(true);
fft_plot = new FftDisplayPlot(m_adc_nb_channels, this);
- fft_plot->canvas()->setStyleSheet(QString("QwtPlotCanvas { "
- "background-color: #141416; }"));
fft_plot->disableLegend();
// Disable mouse interactions with the axes until they are in a working state
fft_plot->setXaxisMouseGesturesEnabled(false);
@@ -605,6 +603,8 @@ SpectrumAnalyzer::SpectrumAnalyzer(struct iio_context *ctx, Filter *filt,
connect(ui->btnExport, &QPushButton::clicked,
this, &SpectrumAnalyzer::btnExportClicked);
readPreferences();
+
+ ui->btnHelp->setUrl("https://wiki.analog.com/university/tools/m2k/scopy/spectrumanalyzer");
}
SpectrumAnalyzer::~SpectrumAnalyzer()
@@ -2124,8 +2124,8 @@ void SpectrumAnalyzer::on_cmb_units_currentIndexChanged(const QString& unit)
switch (magType) {
case FftDisplayPlot::VPEAK:
case FftDisplayPlot::VRMS:
- unit_per_div->setValue(1);
- bottom->setValue(-100);
+ unit_per_div->setValue(2);
+ bottom->setValue(-10);
fft_plot->setAxisScale(QwtPlot::yLeft, bottom->value(), top->value());
break;
case FftDisplayPlot::VROOTHZ:
@@ -2134,7 +2134,7 @@ void SpectrumAnalyzer::on_cmb_units_currentIndexChanged(const QString& unit)
fft_plot->setAxisScale(QwtPlot::yLeft, bottom_scale->value(), top_scale->value());
break;
default:
- unit_per_div->setValue(1);
+ unit_per_div->setValue(20);
bottom->setValue(-200);
fft_plot->setAxisScale(QwtPlot::yLeft, bottom->value(), top->value());
break;
diff --git a/src/spinbox_a.cpp b/src/spinbox_a.cpp
index 08a32285a7..cc3c709780 100644
--- a/src/spinbox_a.cpp
+++ b/src/spinbox_a.cpp
@@ -21,6 +21,7 @@
#include "spinbox_a.hpp"
#include "completion_circle.h"
#include "apiobjectmanager.h"
+#include "singletone_wrapper.h"
#include "ui_spinbox_a.h"
@@ -56,13 +57,6 @@ SpinBoxA::SpinBoxA(QWidget *parent) : QWidget(parent),
ui->setupUi(this);
ui->SBA_LineEdit->setValidator(m_validator);
- QFile file(":stylesheets/stylesheets/spinbox_type_a.qss");
- file.open(QFile::ReadOnly);
- QString styleSheet = QString::fromLatin1(file.readAll());
-
- const QString& currentStylesheet = this->styleSheet();
- this->setStyleSheet(currentStylesheet + styleSheet);
-
ui->SBA_LineEdit->installEventFilter(this);
ui->SBA_CompletionCircle->installEventFilter(this);
@@ -119,7 +113,7 @@ SpinBoxA::SpinBoxA(vector >units, const QString& name,
QSettings oldSettings;
QFile tempFile(oldSettings.fileName() + ".bak");
- m_settings = new QSettings(tempFile.fileName(), QSettings::IniFormat);
+ m_settings = SingleToneWrapper::getInstance().getWrapped();
m_sba_api->load(*m_settings);
m_is_step_down = false;
@@ -130,8 +124,8 @@ SpinBoxA::~SpinBoxA()
current_id--;
m_sba_api->save(*m_settings);
+
delete m_sba_api;
- delete m_settings;
delete ui;
}
diff --git a/src/tool_launcher.cpp b/src/tool_launcher.cpp
index b3780640e3..b1222a8dd1 100644
--- a/src/tool_launcher.cpp
+++ b/src/tool_launcher.cpp
@@ -35,6 +35,8 @@
#include "user_notes.hpp"
#include "external_script_api.hpp"
#include "animationmanager.h"
+#include "singletone_wrapper.h"
+#include "phonehome.h"
#include "ui_device.h"
#include "ui_tool_launcher.h"
@@ -102,7 +104,8 @@ ToolLauncher::ToolLauncher(QString prevCrashDump, QWidget *parent) :
initialCalibrationFlag(true),
skip_calibration_if_already_calibrated(true),
m_adc_tools_failed(false),
- m_dac_tools_failed(false)
+ m_dac_tools_failed(false),
+ about(nullptr)
{
if (!isatty(STDIN_FILENO))
notifier.setEnabled(false);
@@ -128,13 +131,19 @@ ToolLauncher::ToolLauncher(QString prevCrashDump, QWidget *parent) :
connect(ui->btnNotes, &QPushButton::clicked, [=](){
swapMenu(static_cast(notesPanel));
});
+ about = new ScopyAboutDialog(this);
+ connect(ui->btnAbout, &QPushButton::clicked, [=](){
+ if(!about)
+ about = new ScopyAboutDialog(this);
+ about->setModal(false);
+ about->show();
+ about->raise();
+ about->activateWindow();
+ });
connect(prefPanel, &Preferences::reset, this, &ToolLauncher::resetSession);
connect(prefPanel, &Preferences::notify, this, &ToolLauncher::readPreferences);
- const QVector& uris = searchDevices();
- for (const QString& each : uris)
- addContext(each);
current = ui->homeWidget;
@@ -192,6 +201,7 @@ ToolLauncher::ToolLauncher(QString prevCrashDump, QWidget *parent) :
scopy.copy(tempFile.fileName());
settings = new QSettings(tempFile.fileName(), QSettings::IniFormat);
+ SingleToneWrapper::getInstance().setWrapped(settings);
tl_api->ApiObject::load(*settings);
@@ -207,19 +217,49 @@ ToolLauncher::ToolLauncher(QString prevCrashDump, QWidget *parent) :
ui->saveLbl->setVisible(opened);
ui->loadLbl->setVisible(opened);
ui->prefBtn->setText(opened ? tr("Preferences") : "");
+ menu->hideMenuText(!opened);
});
connect(ui->stackedWidget, SIGNAL(moved(int)),
this, SLOT(pageMoved(int)));
+ m_phoneHome = new PhoneHome(settings, prefPanel);
+ if (prefPanel->getFirst_application_run()) {
+ QMessageBox* msgBox = new QMessageBox(this);
+
+ QSize mSize = msgBox->sizeHint(); // here's what you want, not m.width()/height()
+ QRect screenRect = QDesktopWidget().screenGeometry();
+
+ msgBox->setText("Do you want to automatically check for newer Scopy and m2k-firmware versions?");
+ msgBox->setInformativeText("You can change this anytime from the Preferences menu.");
+ msgBox->setStandardButtons(msgBox->Yes | msgBox->No);
+ msgBox->setModal(false);
+ msgBox->show();
+ msgBox->activateWindow();
+ msgBox->move( QPoint( screenRect.x() + screenRect.width()/2 - mSize.width()/2,
+ screenRect.y() + screenRect.height()/2 - mSize.height()/2 ) );
+ connect(msgBox->button(QMessageBox::Yes), &QAbstractButton::pressed, [&] () {
+ prefPanel->setAutomatical_version_checking_enabled(true);
+ prefPanel->setFirst_application_run(false);
+ });
+ connect(msgBox->button(QMessageBox::No), &QAbstractButton::pressed, [&] () {
+ prefPanel->setFirst_application_run(false);
+ });
+ }
+ connect(prefPanel, &Preferences::requestUpdateCheck, [=]() { m_phoneHome->versionsRequest(true);});
+ connect(about, &ScopyAboutDialog::forceCheckForUpdates,[=](){
+ m_phoneHome->versionsRequest(true);
+ });
+ connect(m_phoneHome, SIGNAL(checkUpdatesFinished(qint64)), about, SLOT(updateCheckUpdateLabel(qint64)));
+
+
setupHomepage();
ui->stackedWidget->setCurrentIndex(0);
setupAddPage();
readPreferences();
- ui->stackedWidget->setStyleSheet("background-color:black;");
this->installEventFilter(this);
- ui->btnConnect->hide();
+ ui->btnConnect->hide();
_setupToolMenu();
@@ -233,13 +273,29 @@ ToolLauncher::ToolLauncher(QString prevCrashDump, QWidget *parent) :
menu->getToolMenuItemFor(TOOL_SPECTRUM_ANALYZER)->setCalibrating(false);
menu->getToolMenuItemFor(TOOL_NETWORK_ANALYZER)->setCalibrating(false);
- if (okc.second) {
- selectedDev->infoPage()->setCalibrationStatusLabel(tr("Calibration skipped because already calibrated."));
- } else if (okc.first) {
+ if (!okc.second && okc.first) {
selectedDev->infoPage()->setCalibrationStatusLabel(tr("Calibrated"));
}
+
});
+
+ const QVector& uris = searchDevices();
+ for (const QString& each : uris)
+ addContext(each);
+
+ if (prefPanel->getAutomatical_version_checking_enabled()) {
+ m_phoneHome->versionsRequest();
+ } else {
+
+ }
+
+ // TO DO: Remove temporary spaces
+ // set home icon
+ ui->btnHome->setText(" Home");
+ ui->btnHome->setIcon(QIcon::fromTheme("house"));
+ ui->btnHome->setIconSize(QSize(32,32));
+
}
void ToolLauncher::_setupToolMenu()
@@ -319,6 +375,7 @@ void ToolLauncher::_toolSelected(enum tool tool)
void ToolLauncher::readPreferences()
{
+ m_logging_enable = prefPanel->getLogging_enabled();
m_use_decoders = prefPanel->getDigital_decoders_enabled();
debugger_enabled = prefPanel->getDebugger_enabled();
skip_calibration_if_already_calibrated = prefPanel->getSkipCalIfCalibrated();
@@ -631,10 +688,13 @@ ToolLauncher::~ToolLauncher()
delete alive_timer;
delete infoWidget;
-
+ delete m_phoneHome;
tl_api->ApiObject::save(*settings);
+ m_sessionInfo.save(*settings);
+
+ delete settings;
+ SingleToneWrapper::getInstance().setWrapped(nullptr);
- delete settings;
delete tl_api;
delete ui;
@@ -806,6 +866,29 @@ void ToolLauncher::setupHomepage()
QWidget *homepage = new QWidget(ui->stackedWidget);
QVBoxLayout *layout = new QVBoxLayout(homepage);
+ QLabel* versionLabel = new QLabel(this);
+
+ versionLabel->setText(tr("Auto update checks not enabled. Check preferences menu."));
+ connect(m_phoneHome, &PhoneHome::scopyVersionChanged, this, [=] () {
+ if (m_phoneHome->getScopyVersion().isEmpty()) {
+ //versionLabel->setText(tr("Unable to check update server!"));
+ } else if (m_phoneHome->getScopyVersion() != QString("v" + QString(PROJECT_VERSION))) {
+ versionLabel->setText(tr("Version ") + m_phoneHome->getScopyVersion() + " of Scopy was released. " +
+ "getScopyLink() +
+ tr("\">Click to update "));
+ versionLabel->setTextFormat(Qt::RichText);
+ versionLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
+ versionLabel->setOpenExternalLinks(true);
+ } else {
+ versionLabel->setText(tr("Scopy is up to date!"));
+ }
+ versionLabel->setVisible(true);
+ });
+
+ connect(m_phoneHome, &PhoneHome::scopyVersionCheckRequested, this ,[=]() {
+ versionLabel->setText(tr("Checking server for updates ... "));
+ });
+
welcome = new QTextBrowser(homepage);
welcome->setFrameShape(QFrame::NoFrame);
welcome->setOpenExternalLinks(true);
@@ -831,26 +914,7 @@ void ToolLauncher::setupHomepage()
layout->addWidget(reportRegion);
connect(reportBtn, &QPushButton::clicked, [=](){
- std::string os = QSysInfo::prettyProductName().toStdString();
- std::string gittag = SCOPY_VERSION_GIT;
- std::string fw = "";
- if (ctx) {
- fw = std::string(iio_context_get_attr_value(ctx, "fw_version"));
- }
- QSettings settings;
- QFileInfo info(settings.fileName());
- std::string head = "https://github.com/analogdevicesinc/scopy/issues/new?title=%3CInstrument%3E:%20%3CShort%20description%20of%20the%20bug%3E&body=";
- std::string os_version_urlstring = "OS%20Version: " + os;
- std::string fw_version_urlstring = "%0AFW%20Version: " + fw;
- std::string gittag_urlstring = "%0ASW%20Version: " + gittag;
- std::string description_urlstring = "%0A%0ADescription%20of%20the%20bug:%3Cdescription%3E%0ASteps%20to%20reproduce:"
- "%0A-%0A-%0A%0AThe%20ini%20files%20might%20be%20useful%20to%20reproduce%20the%20error.";
- std::string ini_file_urlstring = "%0AThe%20ini%20file%20is%20located%20at: " + info.absoluteFilePath().toStdString();
- std::string finalpart = "%0APlease%20consider%20attaching%20it.&labels=bug,reported-from-scopy";
- QUrl url(QString::fromStdString(head + os_version_urlstring +
- fw_version_urlstring + gittag_urlstring +
- description_urlstring + ini_file_urlstring +
- finalpart));
+ const QUrl url("https://wiki.analog.com/university/tools/m2k/scopy/report");
QDesktopServices::openUrl(url);
});
@@ -864,6 +928,10 @@ void ToolLauncher::setupHomepage()
index = new QTextBrowser(ui->stackedWidget);
index->setFrameShape(QFrame::NoFrame);
+ layout->addWidget(versionLabel);
+ versionLabel->raise();
+ versionLabel->setVisible(true);
+
if (indexFile == "") {
return;
}
@@ -1048,9 +1116,12 @@ void adiscope::ToolLauncher::disconnect()
destroyContext();
loadToolTips(false);
resetStylesheets();
+ auto infoPg = selectedDev->infoPage();
+ if (infoPg) {
+ infoPg->setConnectionStatusLabel("Not connected");
+ infoPg->setCalibrationStatusLabel("");
+ }
search_timer->start(TIMER_TIMEOUT_MS);
- selectedDev->infoPage()->setConnectionStatusLabel("Not connected");
- selectedDev->infoPage()->setCalibrationStatusLabel("");
}
/* Update the list of devices now */
@@ -1100,8 +1171,30 @@ void adiscope::ToolLauncher::connectBtn_clicked(bool pressed)
if (connectedDev != selectedDev) {
/* Connect to the selected device, if any */
if (selectedDev) {
+#ifdef LIBM2K_ENABLE_LOG
+ QString path = QFileInfo(settings->fileName()).absolutePath();
+ path.append("/ScopyLog-");
+ if (m_logging_enable) {
+ // logging enabled
+ google::SetLogDestination(google::GLOG_INFO, "");
+ google::SetLogDestination(google::GLOG_INFO, path.toStdString().c_str());
+ // do not create a symlink
+ google::SetLogSymlink(google::GLOG_INFO, "");
+ // log build info
+ QFile fileBuildInfo(":/buildinfo.html");
+ fileBuildInfo.open(QIODevice::ReadOnly | QIODevice::Text);
+ auto buildInfo = QString(fileBuildInfo.readAll());
+ fileBuildInfo.close();
+ buildInfo = buildInfo.remove(QRegExp("<(/?)(body|pre)>"));
+ LOG(INFO) << buildInfo.toLocal8Bit().toStdString();
+ } else {
+ // logging disabled
+ google::SetLogDestination(google::GLOG_INFO, "");
+ }
+#endif
QString uri = selectedDev->uri();
selectedDev->infoPage()->identifyDevice(false);
+ search_timer->stop();
bool success = switchContext(uri);
if (success) {
selectedDev->setConnected(true, false, ctx);
@@ -1110,14 +1203,13 @@ void adiscope::ToolLauncher::connectBtn_clicked(bool pressed)
selectedDev->infoPage()->identifyDevice(true);
setDynamicProperty(ui->btnConnect, "connected", true);
- search_timer->stop();
-
+ alive_timer->start(ALIVE_TIMER_TIMEOUT_MS);
ui->saveBtn->parentWidget()->setEnabled(true);
-
} else {
setDynamicProperty(ui->btnConnect, "failed", true);
selectedDev->setConnected(false, true);
selectedDev->connectButton()->setEnabled(true);
+ disconnect();
}
Q_EMIT connectionDone(success);
@@ -1348,14 +1440,19 @@ QPair adiscope::ToolLauncher::calibrate()
bool skipCalib = false;
if (calib->isInitialized()) {
- if (prefPanel->getAttemptTempLutCalib()) {
- //calib->calibrateFromTemperature();
- //selectedDev->infoPage()->setCalibrationStatusLabel(tr("Calibrated from temperature @ ") + "50G");
+ if (prefPanel->getAttemptTempLutCalib() && calib->hasContextCalibration()) {
+ float calibTemperature = calib->calibrateFromContext();
+ selectedDev->infoPage()->setCalibrationStatusLabel(tr("Calibrated from look-up table @ ") + QString::number(calibTemperature) + " deg. Celsius" );
+ skipCalib = true;
ok = true;
+
} else {
+ // always calibrate if initial flag is set
+ // if it's calibrated and skip_calibration_if_calibrated - do not calibrate
if (!(initialCalibrationFlag && skip_calibration_if_already_calibrated && calib->isCalibrated() )) {
ok = calib->calibrateAll();
} else {
+ selectedDev->infoPage()->setCalibrationStatusLabel(tr("Calibration skipped because already calibrated."));
skipCalib = true;
ok = true;
}
@@ -1477,6 +1574,9 @@ void adiscope::ToolLauncher::enableDacBasedTools()
if (m_adc_tools_failed || m_dac_tools_failed) {
disconnect();
+ } else {
+ m_sessionInfo.setLastConnectedFirmware(selectedDev->infoPage()->getFirmwareVersion());
+ m_sessionInfo.setLastConnectedSerialNumber(selectedDev->infoPage()->getSerialNumber());
}
}
@@ -1500,78 +1600,84 @@ bool adiscope::ToolLauncher::switchContext(const QString& uri)
}
m_m2k = m2kOpen(ctx, "");
-
- alive_timer->start(ALIVE_TIMER_TIMEOUT_MS);
+#ifdef LIBM2K_ENABLE_LOG
+ m_m2k->logAllAttributes();
+#endif
filter = new Filter(ctx);
calib = new Calibration(ctx, &js_engine);
calib->initialize();
- if (filter->compatible(TOOL_PATTERN_GENERATOR)
- || filter->compatible(TOOL_DIGITALIO)) {
- dioManager = new DIOManager(ctx, filter);
- }
+ try {
+ if (filter->compatible(TOOL_PATTERN_GENERATOR)
+ || filter->compatible(TOOL_DIGITALIO)) {
+ dioManager = new DIOManager(ctx, filter);
+ }
- if (filter->compatible(TOOL_LOGIC_ANALYZER)
- || filter->compatible(TOOL_PATTERN_GENERATOR)) {
+ if (filter->compatible(TOOL_LOGIC_ANALYZER)
+ || filter->compatible(TOOL_PATTERN_GENERATOR)) {
- if (!m_use_decoders) {
- search_timer->stop();
+ if (!m_use_decoders) {
+ search_timer->stop();
- QMessageBox info(this);
- info.setText(tr("Digital decoders support is disabled. Some features may be missing"));
- info.exec();
- } else {
- bool success = loadDecoders(QCoreApplication::applicationDirPath() +
- "/decoders");
+ QMessageBox info(this);
+ info.setText(tr("Digital decoders support is disabled. Some features may be missing"));
+ info.exec();
+ } else {
+ bool success = loadDecoders(QCoreApplication::applicationDirPath() +
+ "/decoders");
- if (!success) {
- search_timer->stop();
+ if (!success) {
+ search_timer->stop();
- QMessageBox error(this);
- error.setText(tr("There was a problem initializing libsigrokdecode. Some features may be missing"));
- error.exec();
+ QMessageBox error(this);
+ error.setText(tr("There was a problem initializing libsigrokdecode. Some features may be missing"));
+ error.exec();
+ }
}
}
- }
- if (filter->compatible(TOOL_DIGITALIO)) {
- dio = new DigitalIO(nullptr, filter, menu->getToolMenuItemFor(TOOL_DIGITALIO),
- dioManager, &js_engine, this);
- toolList.push_back(dio);
- connect(dio, &DigitalIO::showTool, [=]() {
- menu->getToolMenuItemFor(TOOL_DIGITALIO)->getToolBtn()->click();
- });
- }
+ if (filter->compatible(TOOL_DIGITALIO)) {
+ dio = new DigitalIO(nullptr, filter, menu->getToolMenuItemFor(TOOL_DIGITALIO),
+ dioManager, &js_engine, this);
+ toolList.push_back(dio);
+ connect(dio, &DigitalIO::showTool, [=]() {
+ menu->getToolMenuItemFor(TOOL_DIGITALIO)->getToolBtn()->click();
+ });
+ }
- if (filter->compatible(TOOL_POWER_CONTROLLER)) {
- power_control = new PowerController(ctx, menu->getToolMenuItemFor(TOOL_POWER_CONTROLLER),
- &js_engine, this);
- toolList.push_back(power_control);
- connect(power_control, &PowerController::showTool, [=]() {
- menu->getToolMenuItemFor(TOOL_POWER_CONTROLLER)->getToolBtn()->click();
- });
- }
+ if (filter->compatible(TOOL_POWER_CONTROLLER)) {
+ power_control = new PowerController(ctx, menu->getToolMenuItemFor(TOOL_POWER_CONTROLLER),
+ &js_engine, this);
+ toolList.push_back(power_control);
+ connect(power_control, &PowerController::showTool, [=]() {
+ menu->getToolMenuItemFor(TOOL_POWER_CONTROLLER)->getToolBtn()->click();
+ });
+ }
- if (filter->compatible(TOOL_LOGIC_ANALYZER)) {
- logic_analyzer = new logic::LogicAnalyzer(ctx, filter, menu->getToolMenuItemFor(TOOL_LOGIC_ANALYZER),
- &js_engine, this);
- toolList.push_back(logic_analyzer);
- connect(logic_analyzer, &logic::LogicAnalyzer::showTool, [=]() {
- menu->getToolMenuItemFor(TOOL_LOGIC_ANALYZER)->getToolBtn()->click();
- });
- }
+ if (filter->compatible(TOOL_LOGIC_ANALYZER)) {
+ logic_analyzer = new logic::LogicAnalyzer(ctx, filter, menu->getToolMenuItemFor(TOOL_LOGIC_ANALYZER),
+ &js_engine, this);
+ toolList.push_back(logic_analyzer);
+ connect(logic_analyzer, &logic::LogicAnalyzer::showTool, [=]() {
+ menu->getToolMenuItemFor(TOOL_LOGIC_ANALYZER)->getToolBtn()->click();
+ });
+ }
- if (filter->compatible((TOOL_PATTERN_GENERATOR))) {
- pattern_generator = new logic::PatternGenerator(ctx, filter,
- menu->getToolMenuItemFor(TOOL_PATTERN_GENERATOR), &js_engine, dioManager, this);
- toolList.push_back(pattern_generator);
- connect(pattern_generator, &logic::PatternGenerator::showTool, [=]() {
- menu->getToolMenuItemFor(TOOL_PATTERN_GENERATOR)->getToolBtn()->click();
- });
+ if (filter->compatible((TOOL_PATTERN_GENERATOR))) {
+ pattern_generator = new logic::PatternGenerator(ctx, filter,
+ menu->getToolMenuItemFor(TOOL_PATTERN_GENERATOR), &js_engine, dioManager, this);
+ toolList.push_back(pattern_generator);
+ connect(pattern_generator, &logic::PatternGenerator::showTool, [=]() {
+ menu->getToolMenuItemFor(TOOL_PATTERN_GENERATOR)->getToolBtn()->click();
+ });
+ }
+ }
+ catch (libm2k::m2k_exception &e) {
+ return false;
}
connect(menu->getToolMenuItemFor(TOOL_NETWORK_ANALYZER)->getToolStopBtn(),
@@ -1708,6 +1814,8 @@ void ToolLauncher::toolDetached(bool detached)
}
tool->setVisible(detached);
+
+ tool->setMinimumSize(910, 490);
}
void ToolLauncher::closeEvent(QCloseEvent *event)
@@ -1740,6 +1848,11 @@ Calibration *ToolLauncher::getCalibration() const
return calib;
}
+PhoneHome *ToolLauncher::getPhoneHome() const
+{
+ return m_phoneHome;
+}
+
bool ToolLauncher::eventFilter(QObject *watched, QEvent *event)
{
if (event->type() == QEvent::MouseButtonRelease) {
diff --git a/src/tool_launcher.hpp b/src/tool_launcher.hpp
index 4ebafea9f0..6e98b7f65f 100644
--- a/src/tool_launcher.hpp
+++ b/src/tool_launcher.hpp
@@ -41,6 +41,7 @@
#include "oscilloscope.hpp"
#include "power_controller.hpp"
#include "signal_generator.hpp"
+#include "scopyaboutdialog.hpp"
#include "logicanalyzer/logic_analyzer.h"
#include "patterngenerator/pattern_generator.h"
@@ -53,6 +54,7 @@
#include "device_widget.hpp"
#include "connectDialog.hpp"
#include "toolmenu.h"
+#include "session_info.h"
extern "C" {
struct iio_context;
@@ -93,6 +95,8 @@ class ToolLauncher : public QMainWindow
bool hasNativeDialogs() const;
void setNativeDialogs(bool nativeDialogs);
+ PhoneHome *getPhoneHome() const;
+
Q_SIGNALS:
void connectionDone(bool success);
void adcCalibrationDone();
@@ -190,6 +194,7 @@ private Q_SLOTS:
Ui::ToolLauncher *ui;
struct iio_context *ctx;
libm2k::context::M2k *m_m2k;
+ ScopyAboutDialog *about;
ToolMenu *menu;
@@ -257,6 +262,7 @@ private Q_SLOTS:
DeviceWidget* selectedDev;
bool m_use_decoders;
+ bool m_logging_enable;
bool m_useNativeDialogs;
@@ -265,6 +271,10 @@ private Q_SLOTS:
void _setupToolMenu();
void saveRunningToolsBeforeCalibration();
void stopToolsBeforeCalibration();
+
+ PhoneHome* m_phoneHome;
+
+ SessionInfo m_sessionInfo;
};
}
#endif // M2K_TOOL_LAUNCHER_H
diff --git a/src/tool_launcher_api.cpp b/src/tool_launcher_api.cpp
index bd494686e5..1917f980f7 100644
--- a/src/tool_launcher_api.cpp
+++ b/src/tool_launcher_api.cpp
@@ -249,6 +249,7 @@ void ToolLauncher_API::save(const QString& file)
QSettings settings(file, QSettings::IniFormat);
this->ApiObject::save(settings);
+ this->tl->m_sessionInfo.save(settings);
if (tl->notesPanel)
tl->notesPanel->api()->save(settings);
diff --git a/src/toolmenu.cpp b/src/toolmenu.cpp
index 725b490485..d57b7f33d9 100644
--- a/src/toolmenu.cpp
+++ b/src/toolmenu.cpp
@@ -36,17 +36,17 @@ ToolMenu::ToolMenu(Preferences *preferences, QWidget *parent):
<< tr("Digital IO") << tr("Voltmeter")
<< tr("Power Supply") << tr("Debugger") << tr("Calibration");
- d_availableIcons = QStringList() << ":/menu/oscilloscope.png"
- << ":/menu/spectrum_analyzer.png"
- << ":/menu/network_analyzer.png"
- << ":/menu/signal_generator.png"
- << ":/menu/logic_analyzer.png"
- << ":/menu/pattern_generator.png"
- << ":/menu/io.png"
- << ":/menu/voltmeter.png"
- << ":/menu/power_supply.png"
- << ":/menu/debugger.png"
- << ":/menu/calibration.png";
+ d_availableIcons = QStringList() << "oscilloscope"
+ << "spectrum_analyzer"
+ << "network_analyzer"
+ << "signal_generator"
+ << "logic_analyzer"
+ << "pattern_generator"
+ << "io"
+ << "voltmeter"
+ << "power_supply"
+ << "debugger"
+ << "calibration";
_loadState();
d_buttonGroup = new QButtonGroup(this);
@@ -117,6 +117,13 @@ QButtonGroup *ToolMenu::getButtonGroup()
return d_buttonGroup;
}
+void ToolMenu::hideMenuText(bool hidden)
+{
+ for (int i = 0; i < d_tools.size(); ++i) {
+ static_cast(d_tools[i].first)->hideText(hidden);
+ }
+}
+
void ToolMenu::_updateToolList(short from, short to)
{
if (d_items == d_tools.size()) {
diff --git a/src/toolmenu.h b/src/toolmenu.h
index e29bad90c7..5f8e82d98c 100644
--- a/src/toolmenu.h
+++ b/src/toolmenu.h
@@ -43,6 +43,8 @@ class ToolMenu : public BaseMenu
QButtonGroup *getButtonGroup();
+ void hideMenuText(bool hidden);
+
Q_SIGNALS:
void toolSelected(tool);
void enableInfoWidget(bool);
diff --git a/src/toolmenuitem.cpp b/src/toolmenuitem.cpp
index 9c8ef9f208..063b3eb77d 100644
--- a/src/toolmenuitem.cpp
+++ b/src/toolmenuitem.cpp
@@ -26,7 +26,7 @@
#include
#include
#include
-
+#include "dynamicWidget.hpp"
#include "dynamicWidget.hpp"
#include "utils.h"
@@ -44,8 +44,7 @@ ToolMenuItem::ToolMenuItem(QString name, QString iconPath, QWidget *parent):
_buildUI();
// Load stylesheets
- Util::loadStylesheetFromFile(":stylesheets/stylesheets/toolMenuItem.qss", this);
- Util::loadStylesheetFromFile(":stylesheets/stylesheets/stopButton.qss", d_toolStopBtn);
+ this->setStyleSheet(Util::loadStylesheetFromFile(":stylesheets/stylesheets/toolMenuItem.qss"));
setDynamicProperty(this, "allowHover", true);
@@ -130,6 +129,15 @@ void ToolMenuItem::setCalibrating(bool calibrating)
}
}
+void ToolMenuItem::hideText(bool hidden)
+{
+ if(hidden) {
+ d_toolBtn->setText("");
+ } else {
+ d_toolBtn->setText(d_name);
+ }
+}
+
void ToolMenuItem::setDisabled(bool disabled)
{
BaseMenuItem::setDisabled(disabled);
@@ -183,10 +191,11 @@ void ToolMenuItem::_buildUI()
layout->addWidget(d_toolBtn);
layout->addWidget(d_toolStopBtn);
+ setDynamicProperty(d_toolStopBtn, "stopButton", true);
d_toolStopBtn->setMaximumSize(32, 32);
d_toolBtn->setMinimumHeight(42);
- d_toolBtn->setIcon(QIcon(d_iconPath));
+ d_toolBtn->setIcon(QIcon::fromTheme(d_iconPath));
d_toolBtn->setCheckable(true);
d_toolBtn->setIconSize(QSize(32, 32));
diff --git a/src/toolmenuitem.h b/src/toolmenuitem.h
index 14d1e2ce79..44776a57b7 100644
--- a/src/toolmenuitem.h
+++ b/src/toolmenuitem.h
@@ -46,6 +46,8 @@ class ToolMenuItem : public BaseMenuItem
void setCalibrating(bool calibrating);
+ void hideText(bool hidden);
+
Q_SIGNALS:
void detach();
void toggleButtonGroup(bool);
diff --git a/src/trigger_settings.cpp b/src/trigger_settings.cpp
index da63fd0fcc..ff4f152c3c 100644
--- a/src/trigger_settings.cpp
+++ b/src/trigger_settings.cpp
@@ -74,7 +74,8 @@ TriggerSettings::TriggerSettings(M2kAnalogIn* libm2k_adc,
trigger_raw_delay(0),
daisyChainCompensation(0),
m_trigger_in(false),
- m_has_external_trigger_out(false)
+ m_has_external_trigger_out(false),
+ digital_trigger_was_on(false)
{
initInstrumentStrings();
ui->setupUi(this);
@@ -169,6 +170,10 @@ TriggerSettings::TriggerSettings(M2kAnalogIn* libm2k_adc,
wheelEventGuard->installEventRecursively(this);
ui->mixedSignalLbl->setVisible(false);
+ ui->btnLogicAnalyzerTriggers->setVisible(false);
+
+ connect(ui->btnLogicAnalyzerTriggers, &QPushButton::clicked,
+ this, &TriggerSettings::showLogicAnalyzerTriggerSettings);
}
TriggerSettings::~TriggerSettings()
@@ -253,6 +258,12 @@ void TriggerSettings::enableMixedSignalView()
ui->extern_en->setDisabled(true);
ui->extern_to_en->setDisabled(true);
ui->mixedSignalLbl->setVisible(true);
+ ui->btnLogicAnalyzerTriggers->setVisible(true);
+ ui->btnLogicAnalyzerTriggers->setEnabled(true);
+ digital_trigger_was_on = ui->digital_controls->isEnabled();
+ if (digital_trigger_was_on) {
+ ui->digital_controls->setDisabled(true);
+ }
}
void TriggerSettings::disableMixedSignalView()
@@ -260,6 +271,11 @@ void TriggerSettings::disableMixedSignalView()
ui->extern_en->setEnabled(true);
ui->extern_to_en->setEnabled(true);
ui->mixedSignalLbl->setVisible(false);
+ ui->btnLogicAnalyzerTriggers->setVisible(false);
+ ui->btnLogicAnalyzerTriggers->setDisabled(true);
+ if (digital_trigger_was_on) {
+ ui->digital_controls->setEnabled(true);
+ }
}
void TriggerSettings::setDcLevelCoupled(double value)
diff --git a/src/trigger_settings.hpp b/src/trigger_settings.hpp
index cfb395e410..5e98953b16 100644
--- a/src/trigger_settings.hpp
+++ b/src/trigger_settings.hpp
@@ -84,6 +84,7 @@ namespace adiscope {
void levelChanged(double);
void analogTriggerEnabled(bool);
void triggerModeChanged(int);
+ void showLogicAnalyzerTriggerSettings();
public Q_SLOTS:
void setTriggerDelay(long long);
@@ -145,6 +146,8 @@ namespace adiscope {
libm2k::M2kHardwareTrigger* m_trigger;
bool m_trigger_in;
+ bool digital_trigger_was_on;
+
std::vector> externalTriggerOutMapping;
QList trigg_configs;
diff --git a/src/user_notes.cpp b/src/user_notes.cpp
index 9e9d52cb09..97713420e3 100644
--- a/src/user_notes.cpp
+++ b/src/user_notes.cpp
@@ -61,8 +61,7 @@ UserNotes::UserNotes(QWidget *parent) :
QFile tempFile(oldSettings.fileName() + ".bak");
QSettings settings(tempFile.fileName(), QSettings::IniFormat);
- notes_api->load(settings);
- ui->stackedWidget->setStyleSheet("background-color: black;");
+ notes_api->load(settings);
ui->stackedWidget->set_controls_enabled(false);
}
@@ -104,17 +103,13 @@ void UserNotes::browse_btn_clicked(bool clicked)
setDynamicProperty(ui->pathLineEdit, "invalid", false);
ui->pathWarning->setText("");
- QString pathToFile = "";
- auto export_dialog( new QFileDialog( this ) );
- export_dialog->setWindowModality( Qt::WindowModal );
- export_dialog->setFileMode( QFileDialog::AnyFile );
- export_dialog->setAcceptMode( QFileDialog::AcceptOpen );
- export_dialog->setNameFilters({"(*.html)"});
- if (export_dialog->exec()){
- QFile f(export_dialog->selectedFiles().at(0));
- pathToFile = f.fileName();
- ui->pathLineEdit->setText(pathToFile);
- ui->pathLineEdit->setStyleSheet("");
+ QString fileName = QFileDialog::getOpenFileName(this,
+ tr("Import"), "", tr("Html (*.html);;"),
+ nullptr);
+
+ if (fileName.length()) {
+ ui->pathLineEdit->setText(fileName);
+ ui->pathLineEdit->setStyleSheet("");
}
}
diff --git a/src/utils.h b/src/utils.h
index 7227b06120..405189f961 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -60,7 +60,8 @@ class Util
public:
static void retainWidgetSizeWhenHidden(QWidget *w, bool retain = true);
static void setWidgetNrOfChars(QWidget *w, int minNrOfChars, int maxNrOfChars=0);
- static void loadStylesheetFromFile(QString path, QWidget* widget);
+ static QString loadStylesheetFromFile(const QString &path);
+ static bool compareNatural(const std::string &a, const std::string &b);
};
#endif /* M2K_UTILS_H */
diff --git a/tools/README b/tools/README
new file mode 100644
index 0000000000..18d0dab137
--- /dev/null
+++ b/tools/README
@@ -0,0 +1,11 @@
+The script assumes that the flatpak is uncompressed/opened like this (on linux)
+
+ostree init --repo=repo --mode=bare-user
+ostree static-delta apply-offline --repo=repo scopy.flatpak
+ostree checkout --repo=repo -U $(basename $(echo repo/objects/*/*.commit | cut -d/ -f3- --output-delimiter= ) .commit) outdir
+
+then run the attached shell script (table.sh) which pokes ubuntu/debian sites to find the home pages of projects.
+This will create the attached html file in a couple minutes (5 or so)…
+(then you only need to fix things that are missing from upstream).
+
+
diff --git a/tools/flatpak-licenses.html b/tools/flatpak-licenses.html
new file mode 100644
index 0000000000..8d7ef64d8b
--- /dev/null
+++ b/tools/flatpak-licenses.html
@@ -0,0 +1,65 @@
+
+fail with _dbus_bindings.so
+_dbus_bindings.so not unstream
+fail with _dbus_glib_bindings.so
+_dbus_glib_bindings.so not unstream
+libad9361.so.0 Homepage [github.com]
+libavahi-client.so.3.2.9 Homepage [avahi.org]
+libavahi-common.so.3.5.3 Homepage [avahi.org]
+libavahi-core.so.7.0.2 Homepage [avahi.org]
+libavahi-glib.so.1.0.2 Homepage [avahi.org]
+libavahi-gobject.so.0.0 Homepage [avahi.org]
+libboost_atomic.so.1 Homepage [www.boost.org]
+libboost_chrono.so.1 Homepage [www.boost.org]
+libboost_date_time.so.1 Homepage [www.boost.org]
+libboost_filesystem.so.1 Homepage [boost.org]
+libboost_prg_exec_monitor.so.1 Homepage [www.boost.org]
+libboost_program_options.so.1 Homepage [www.boost.org]
+libboost_regex.so.1 Homepage [www.boost.org]
+libboost_system.so.1 Homepage [www.boost.org]
+libboost_thread.so.1 Homepage [www.boost.org]
+libboost_timer.so.1 Homepage [www.boost.org]
+libboost_unit_test_framework.so.1 Homepage [www.boost.org]
+libdbus-glib-1.so.2.3 Homepage [www.freedesktop.org]
+libdns_sd.so.1.0.0 Homepage [avahi.org]
+libfftw3f.so.3 Homepage [fftw.org]
+libfftw3f_threads.so.3 Homepage [fftw.org]
+libgio-2.0.so.0 Homepage [www.gtk.org]
+libgiomm-2.4.so.1.3.0 Homepage [www.gtkmm.org]
+libglib-2.0.so.0 Homepage [www.gtk.org]
+libglibmm-2.4.so.1.3.0 Homepage [www.gtkmm.org]
+libglibmm_generate_extra_defs-2.4.so.1.3.0 Homepage [www.gtkmm.org]
+libgmodule-2.0.so.0 Homepage [www.gtk.org]
+libgmp.so.10 Homepage [gmplib.org]
+libgmpxx.so.4 Homepage [gmplib.org]
+libgnuradio-analog.so.3 Homepage [gnuradio.org]
+libgnuradio-blocks.so.3 Homepage [gnuradio.org]
+libgnuradio-fft.so.3 Homepage [gnuradio.org]
+libgnuradio-filter.so.3 Homepage [gnuradio.org]
+fail with libgnuradio-iio.so
+libgnuradio-iio.so not unstream
+fail with libgnuradio-m2k.so
+libgnuradio-m2k.so not unstream
+libgnuradio-pmt.so.3 Homepage [gnuradio.org]
+libgnuradio-runtime.so.3 Homepage [gnuradio.org]
+fail with libgnuradio-scopy.so
+libgnuradio-scopy.so not unstream
+libgobject-2.0.so.0 Homepage [www.gtk.org]
+libiio.so.0 Homepage [github.com]
+liblog4cpp.so.5.0 Homepage [log4cpp.sourceforge.net]
+fail with libm2k.so
+libm2k.so not unstream
+libmatio.so Homepage [sourceforge.net]
+liborc-0.4.so.0 Homepage [code.entropywave.com]
+liborc-test-0.4.so.0 Homepage [code.entropywave.com]
+libqwtmathml.so.6 Homepage [qwt.sourceforge.net]
+fail with libqwtpolar.so
+libqwtpolar.so not unstream
+libqwt.so.6 Homepage [qwt.sourceforge.net]
+libsigc-2.0.so.0.0.0 unknown
+libsigrokdecode.so Homepage [sigrok.org]
+libusb-1.0.so.0.1.0 Homepage [www.libusb.info]
+libvolk.so Homepage [libvolk.org]
+libxml2.so.2.9 Homepage [xmlsoft.org]
+libzip.so.4.0.0 Homepage [www.nih.at]
+
diff --git a/tools/flatpak_deps_licenses.sh b/tools/flatpak_deps_licenses.sh
new file mode 100644
index 0000000000..cd7154f167
--- /dev/null
+++ b/tools/flatpak_deps_licenses.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#set -x
+
+echo ""
+for f in $(find ./outdir -name "*.so*" -type f | awk -F/ '{print $NF}' | sed -e 's/\.debug//g' | sort | uniq) ; do
+ name=$(basename $f)
+ loop=1
+ while [ ${loop} -eq 1 ] ; do
+# echo looking for $name
+ attempt=1
+ while [ ${attempt} -le 5 ] ; do
+ wget -o test.url -O test "https://packages.ubuntu.com/search?suite=xenial&arch=amd64&mode=filename&searchon=contents&keywords=${name}"
+ if [ $(cat test | wc -l) -ne 0 ] ; then
+ break
+ fi
+ sleep 1
+ attempt=$(expr $attempt + 1)
+ done
+ url=$(sed '/<\/table>/Q' test | sed -n '//,$p' | \
+ sed '/^[[:space:]]*$/d' | grep -v \ | \
+ grep href | sort | uniq -c | head -1 | \
+ sed -e 's/^.*href=\"//' -e 's/\".*$//')
+# echo found $url
+ if [ $(echo -n $url | wc -c) -eq 0 ] ; then
+# echo trying again
+ if [ "${name}" = "$(echo ${name} | sed -e 's/\.[0-9]*$//')" ] ; then
+ echo fail with ${name}
+ break
+ else
+ name=$(echo $name | sed -e 's/\.[0-9]*$//')
+ fi
+ else
+# echo found
+ break
+ fi
+ done
+
+ if [ $(echo -n $url | wc -c) -eq 0 ] ; then
+ home="not unstream"
+ else
+ wget -o /dev/null -O test "https://packages.ubuntu.com/${url}"
+ home=$(grep Homepage test | grep \ | sed -e 's: ::' -e 's:<\/li>::')
+ fi
+ if [ $(echo -n $home | wc -c) -eq 0 ] ; then
+ home="unknown"
+ fi
+
+ echo "$name $home "
+done
+
+echo "
"
diff --git a/ui/basemenu.ui b/ui/basemenu.ui
index 705a00c18c..cccceb5ecf 100644
--- a/ui/basemenu.ui
+++ b/ui/basemenu.ui
@@ -76,15 +76,15 @@
1
-
- color: rgba(255,255,255,50);
-
QFrame::Plain
Qt::Horizontal
+
+ true
+
-
diff --git a/ui/basemenuitem.ui b/ui/basemenuitem.ui
index 959ceca1c2..9287f02043 100644
--- a/ui/basemenuitem.ui
+++ b/ui/basemenuitem.ui
@@ -38,7 +38,7 @@
- color: rgba(255,255,255,50);
+
QFrame::HLine
@@ -46,6 +46,9 @@
QFrame::Plain
+
+ true
+
-
@@ -80,15 +83,15 @@
1
-
- color: rgba(255,255,255,50);
-
QFrame::HLine
QFrame::Plain
+
+ true
+
diff --git a/ui/channel.ui b/ui/channel.ui
index e0b4a30eb9..9ed812c8a1 100644
--- a/ui/channel.ui
+++ b/ui/channel.ui
@@ -32,88 +32,7 @@
Form
- QWidget {
- color: rgba(255, 255, 255, 153);
-
- border-width: 0px;
- border-radius: 6px;
-}
-
-/* Widget containing box, name, btn */
-QWidget#widget {
- background-color: transparent;
- border-radius: 4px;
-}
-QWidget#widget[selected=true] {
- background-color: rbga(20, 20, 22, 153);
-}
-
-/* Round check box */
-QCheckBox#box{
- spacing: 0px;
- background-color: none;
- font-size: 14px;
- font-weight: bold;
-}
-QCheckBox#box::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
- border-radius: 9px;
-}
-QCheckBox#box::indicator:unchecked {
- background-color: transparent;
-}
-QCheckBox#box::indicator:checked {
- background-color: #000000; /* Will be overwritted in the ChannelWidget constructor */
-}
-
-/* Name */
-QPushButton#name {
- font-size: 14px;
- font-weight: bold;
- background-color: none;
-}
-
-/* Delete Button */
-QPushButton#delBtn {
- width: 24px;
- height: 24px;
- background-color: transparent;
- background-position: center center;
- background-repeat: no-repeat;
- background-image: url(:/icons/redX.svg);
-}
-QPushButton#delBtn::hover {
- background-image: url(:/icons/redX.svg);
-}
-
-/* Menu button */
-QPushButton#btn {
- width: 40px;
- height: 20px;
- background-color: transparent;
-}
-QPushButton#btn:pressed {
- border-image: url(:/icons/setup_btn_checked.svg)
-}
-QPushButton#btn:!pressed {
- border-image: url(:/icons/setup_btn_unchecked.svg)
-}
-QPushButton#btn:hover:!pressed:!checked {
- border-image: url(:/icons/setup_btn_hover.svg)
-}
-QPushButton#btn:checked {
- border-image: url(:/icons/setup_btn_checked.svg)
-}
-
-/* Underline */
-QFrame#line {
- border: 2px solid transparent;
-}
-QFrame#line[selected=true] {
- border: 2px solid #000000; /* Will be overwritted in the ChannelWidget constructor */
-}
+
@@ -268,6 +187,9 @@ QFrame#line[selected=true] {
Qt::Horizontal
+
+ true
+
diff --git a/ui/channel_settings.ui b/ui/channel_settings.ui
index 57540954a8..071b2dcbdd 100644
--- a/ui/channel_settings.ui
+++ b/ui/channel_settings.ui
@@ -34,15 +34,12 @@
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
Channel
+
+ true
+
-
@@ -76,7 +73,7 @@ font-weight: normal;
- border: 2px solid #ff7200
+ border: 2px solid #ff7200;
Qt::Horizontal
@@ -198,12 +195,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -214,15 +211,12 @@ font-weight: normal;
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-}
-
MATH
+
+ true
+
-
@@ -273,11 +267,7 @@ color: rgba(255, 255, 255, 70);
-
- QLabel {
- color: white;
- font: bold ;
- font-size: 16px;
-}
+
@@ -314,31 +304,13 @@ color: rgba(255, 255, 255, 70);
- QPushButton {
+ QPushButton{
min-height: 30px;
max-height: 30px;
min-width: 240px;
max-width: 240px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:disabled {
- background-color: #727273;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
@@ -347,6 +319,9 @@ QPushButton:hover {
true
+
+ true
+
@@ -403,15 +378,12 @@ QPushButton:hover {
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-}
-
HORIZONTAL
+
+ true
+
-
@@ -428,12 +400,12 @@ color: rgba(255, 255, 255, 70);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -495,12 +467,12 @@ color: rgba(255, 255, 255, 70);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -511,15 +483,12 @@ color: rgba(255, 255, 255, 70);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-}
-
VERTICAL
+
+ true
+
-
@@ -604,15 +573,12 @@ color: rgba(255, 255, 255, 70);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-}
-
SETTINGS
+
+ true
+
-
@@ -629,12 +595,12 @@ color: rgba(255, 255, 255, 70);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -684,9 +650,6 @@ color: rgba(255, 255, 255, 70);
-
-
- font-size: 13px;
-
CH Thickness
@@ -764,9 +727,6 @@ color: rgba(255, 255, 255, 70);
-
-
- font-size: 13px;
-
Memory depth
@@ -787,9 +747,6 @@ color: rgba(255, 255, 255, 70);
-
-
- font-size: 13px;
-
Curve Style
@@ -857,9 +814,6 @@ color: rgba(255, 255, 255, 70);
-
-
- font-size: 13px;
-
Probe
Attenuation
@@ -926,9 +880,6 @@ Attenuation
-
-
- font-size: 13px;
-
Software
AC Coupling
@@ -954,22 +905,7 @@ AC Coupling
-
- QCheckBox::indicator {
- border: 2px solid rgb(74, 100, 255);
- border-radius: 4px;
- width: 16px;
- height: 16px;
- subcontrol-position: left;
-}
-
-QCheckBox::indicator:checked {
- background-color: rgb(74, 100, 255);
-}
-
-QCheckBox{
-text-align: center;
-
-}
+
@@ -998,12 +934,12 @@ text-align: center;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -1113,6 +1049,9 @@ text-align: center;
-
+
+
+
0
@@ -1143,33 +1082,18 @@ text-align: center;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
- QCheckBox::indicator {
- border: 2px solid rgb(74, 100, 255);
- border-radius: 4px;
- width: 16px;
- height: 16px;
- subcontrol-position: left;
-}
-
-QCheckBox::indicator:checked {
- background-color: rgb(74, 100, 255);
-}
-
-QCheckBox{
-text-align: center;
-
-}
+
Filter 2 - Enabled
@@ -1288,12 +1212,12 @@ text-align: center;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1324,33 +1248,18 @@ text-align: center;
QPushButton{
width: 175px;
height: 30px;
- border-radius: 4px;
- background-color: #4a64ff;
-
- font-size: 14px;
+
font-weight: normal;
font-style: normal;
text-align: center;
- color: #ffffff;
-}
-
-
-QPushButton:disabled {
- background-color: grey;
- color:white;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
Autoset
+
+ true
+
-
@@ -1375,33 +1284,18 @@ QPushButton:hover {
QPushButton{
width: 175px;
height: 30px;
- border-radius: 4px;
- background-color: #4a64ff;
-
- font-size: 14px;
+
font-weight: normal;
font-style: normal;
text-align: center;
- color: #ffffff;
-}
-
-
-QPushButton:disabled {
- background-color: grey;
- color:white;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
Snapshot
+
+ true
+
-
diff --git a/ui/connect.ui b/ui/connect.ui
index 8b08d96eb9..a69b299142 100644
--- a/ui/connect.ui
+++ b/ui/connect.ui
@@ -13,9 +13,6 @@
Form
-
- background-color: transparent;
-
20
@@ -69,12 +66,7 @@
- QLineEdit {
-border-color: grey;
-color: white;
-}
-
-QLineEdit[invalid=true] {
+ QLineEdit[invalid=true] {
border-color: red;
color: red;
}
@@ -117,37 +109,71 @@ color: green;
min-height: 30px;
max-height: 30px;
border: 0px;
- border-radius: 4px;
- background-color: #4a64ff;
- color: #ffffff;
- font-size: 14px;
-}
-
-QPushButton:disabled {
-background-color: grey;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
+}
Connect
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 240
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+ 240
+ 30
+
+
+
+ QPushButton {
+ min-height: 30px;
+ max-height: 30px;
+ border: 0px;
+}
+
+
+ Enable Demo
+
+
+ true
+
-
-
- color:white
-
diff --git a/ui/cursor_readouts.ui b/ui/cursor_readouts.ui
index 056f8c21cc..3e713fbb3e 100644
--- a/ui/cursor_readouts.ui
+++ b/ui/cursor_readouts.ui
@@ -25,6 +25,9 @@
Form
+
+
+
0
@@ -62,11 +65,7 @@
- QWidget {
- background-color: rgb(20, 20, 22);
- color: white;
-}
-
+
@@ -156,9 +155,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
Δt =
@@ -188,9 +184,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
CurT2 =
@@ -207,9 +200,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
1/Δt =
@@ -265,9 +255,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
CurT1 =
@@ -300,10 +287,7 @@
- QWidget {
- background-color: rgb(20, 20, 22);
- color: white;
-}
+
@@ -329,9 +313,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
CurV2
@@ -348,9 +329,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
ΔV
@@ -367,9 +345,6 @@
0
-
- color: rgba(255, 255, 255, 153);
-
CurV1
@@ -499,9 +474,6 @@
-
-
- color: rgba(255, 255, 255, 153);
-
=
@@ -509,9 +481,6 @@
-
-
- color: rgba(255, 255, 255, 153);
-
=
@@ -519,9 +488,6 @@
-
-
- color: rgba(255, 255, 255, 153);
-
=
diff --git a/ui/cursors_settings.ui b/ui/cursors_settings.ui
index c40b9e92aa..d2a8d845d6 100644
--- a/ui/cursors_settings.ui
+++ b/ui/cursors_settings.ui
@@ -6,8 +6,8 @@
0
0
- 278
- 537
+ 314
+ 603
@@ -30,109 +30,134 @@
0
-
-
+
-
+
0
0
-
- color: white;
- font-size: 14px;
- font-weight: normal;
+
+ Qt::ScrollBarAsNeeded
-
- Cursors
+
+ Qt::ScrollBarAlwaysOff
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
+
+ true
-
-
- 0
- 15
-
-
-
-
- -
-
-
-
- 240
- 2
-
-
-
-
- 240
- 2
-
-
-
- border: 2px solid rgb(74, 100, 255);
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- 0
-
-
- QLayout::SetDefaultConstraint
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 10
- 25
-
-
-
-
- -
-
-
- 0
-
+
+
+
+ 0
+ 0
+ 276
+ 601
+
+
+
-
-
-
- true
-
+
-
+
0
0
+
+ Cursors
+
+
+ true
+
+
+
+ -
+
- 238
- 30
+ 240
+ 2
+
+
+
+
+ 240
+ 2
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 15
-
- QPushButton {
+
+
+ -
+
+
+ 0
+
+
+ QLayout::SetDefaultConstraint
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 25
+
+
+
+
+ -
+
+
+ 0
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 238
+ 30
+
+
+
+ QPushButton {
min-height: 30px;
max-height: 30px;
min-width: 238px;
@@ -194,551 +219,527 @@ QLabel#off:disabled {
color: rgba(255,255,255,51);
}
+
+
+
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ Normal
+
+
+ Track
+
+
+ 0
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ 10
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ HORIZONTAL
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 15
+
+
+
+
+
+
+ -
+
+
+ 6
+
+ -
+
+
+ 0
+
+ -
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ QPushButton[use_icon=true]
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ -
+
+
+ 0
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 25
+
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ VERTICAL
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 15
+
+
+
+
+
+
+ -
+
+
+ 10
+
+ -
+
+
+ 0
+
+ -
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ QPushButton[use_icon=true]
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ -
+
+
+ 0
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- Normal
-
-
- Track
+
+ 0
-
- 0
+
+ 0
-
+
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- 10
-
-
-
+
-
+
0
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- HORIZONTAL
-
-
-
- -
-
0
- 1
-
-
-
-
- 16777215
- 1
+ 50
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 15
-
-
-
-
-
-
- -
-
-
- 6
-
- -
-
-
- 0
-
- -
-
-
- true
-
-
- true
-
+
+
+ 10
+
+
+ QLayout::SetMinimumSize
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ false
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+ 0
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ CURSOR READOUTS
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 10
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 25
+
+
+
+
+
+
+ -
+
+
+ Transparency 0%
+
+
+
+ -
+
+
+
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Position
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 80
+ 80
+
+
+
+
+
+
+
-
-
+
- Qt::Horizontal
+ Qt::Vertical
-
-
- 40
- 20
-
-
-
-
- -
-
-
- QPushButton[use_icon=true]
-
-
-
-
-
- true
-
-
-
-
-
-
-
- -
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- VERTICAL
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 25
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 15
-
-
-
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- 10
-
- -
-
-
- 0
-
- -
-
-
- true
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
+
+ QSizePolicy::Expanding
- 40
- 20
+ 20
+ 40
- -
-
-
- QPushButton[use_icon=true]
-
-
-
-
-
- true
-
-
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
- -
-
-
-
- 0
- 20
-
-
-
-
- 10
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
-
-
- false
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- QFrame::Sunken
-
-
- 1
-
-
- 0
-
-
- Qt::Horizontal
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- CURSOR READOUTS
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 10
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 25
-
-
-
-
-
-
- -
-
-
- font-size: 13px;
-
-
- Transparency 0%
-
-
-
- -
-
-
- QSlider::groove {
- border: 1px solid #444444;
- height: 2px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
- background: #999999;
- margin: 2px 0;
- border-radius: 2px;
-}
-
-QSlider::handle {
- background: rgb(73, 99, 255);
- border: 0px solid;
- width: 18px;
- margin: -8px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
- border-radius: 8px;
-}
-
-QSlider::handle:disabled {
- background: #444444;
-}
-
-QSlider::sub-page:horizontal {
- background: #4A64FF;
-}
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- font-size: 13px;
-
-
- Position
-
-
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 80
- 80
-
-
-
-
-
-
-
+
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Expanding
-
-
-
- 20
- 40
-
-
-
-
- adiscope::SmallOnOffSwitch
+ adiscope::CustomSwitch
QPushButton
-
+
- adiscope::CustomSwitch
+ adiscope::SmallOnOffSwitch
QPushButton
-
+
diff --git a/ui/customplotpositionbutton.ui b/ui/customplotpositionbutton.ui
index 7a0bb351af..14edbc80df 100644
--- a/ui/customplotpositionbutton.ui
+++ b/ui/customplotpositionbutton.ui
@@ -6,7 +6,7 @@
0
0
- 80
+ 88
80
@@ -24,7 +24,10 @@
border-radius: 4px;
border: 2px solid rgba(0, 0, 0, 60);
background-color: none;
-}
+}
+
+QPushButton[selected=true] { background-color: #4A64FF;}
+QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
@@ -56,10 +59,6 @@
20
-
- QPushButton[selected=true] { background-color: #4A64FF;}
-QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
-
@@ -85,10 +84,6 @@ QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
20
-
- QPushButton[selected=true] { background-color: #4A64FF;}
-QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
-
@@ -115,8 +110,7 @@ QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
- QPushButton[selected=true] { background-color: #4A64FF;}
-QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
+
@@ -143,11 +137,6 @@ QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
20
-
- QPushButton[selected=true] { background-color: #4A64FF;}
-QPushButton[selected=false] { background-color: rgba(0, 0, 0, 60); }
-
-
diff --git a/ui/db_click_buttons.ui b/ui/db_click_buttons.ui
index f87fea9c94..65a2c68a36 100644
--- a/ui/db_click_buttons.ui
+++ b/ui/db_click_buttons.ui
@@ -20,6 +20,10 @@
height: 26px;
border-radius: 4px;
background-color: none;
+}
+
+QPushButton[is_selected=true] {
+ border: 4px solid white;
}
@@ -50,12 +54,7 @@
QPushButton[is_checked=true] {
background-color: #F44336;
-}
-
-QPushButton[is_selected=true] {
- border: 4px solid white;
-}
-
+}
1
@@ -83,12 +82,7 @@ QPushButton[is_selected=true] {
QPushButton[is_checked=true] {
background-color: #2096F3;
-}
-
-QPushButton[is_selected=true] {
- border: 4px solid white;
-}
-
+}
2
@@ -116,12 +110,7 @@ QPushButton[is_selected=true] {
QPushButton[is_checked=true] {
background-color: #8BC34A;
-}
-
-QPushButton[is_selected=true] {
- border: 4px solid white;
-}
-
+}
3
@@ -149,12 +138,7 @@ QPushButton[is_selected=true] {
QPushButton[is_checked=true] {
background-color: #FF5721;
-}
-
-QPushButton[is_selected=true] {
- border: 4px solid white;
-}
-
+}
4
@@ -183,10 +167,6 @@ QPushButton[is_selected=true] {
QPushButton[is_checked=true] {
background-color: #607D8B;
}
-
-QPushButton[is_selected=true] {
- border: 4px solid white;
-}
diff --git a/ui/debugger.ui b/ui/debugger.ui
index 270a166608..9cd85849e5 100644
--- a/ui/debugger.ui
+++ b/ui/debugger.ui
@@ -32,11 +32,7 @@
1.000000000000000
- QWidget#dragContainer{
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
-QPushButton
+ QPushButton
{
width: 175px;
height: 30px;
@@ -45,63 +41,15 @@ QPushButton
min-width: 240px;
max-width: 240px;
- background-color: #4a64ff;
- border-radius: 4px;
-
- font-size: 14px;
font-weight: normal;
font-style: normal;
text-align: center;
- color: #ffffff;
-
-}
-
-QPushButton:hover
-{
- background-color: #4a34ff;
-}
-
-QCheckBox::indicator {
- border: 2px solid rgb(74, 100, 255);
- border-radius: 4px;
- width: 16px;
- height: 16px;
- subcontrol-position: left;
-}
-
-QCheckBox::indicator:checked {
- background-color: rgb(74, 100, 255);
-}
-
-QCheckBox{
-text-align: center;
}
QLabel {
background-color: transparent;
-}
-
-QScrollBar:horizontal {
- background: #262628;
-}
-
-QScrollBar::handle:horizontal {
- background: #4a4a4b;
- border: 0;
- border-radius: 3px;
-}
-
-QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
- background: none;
-}
-
-QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
- border: none;
- background: none;
-}
-
-
+}
-
@@ -147,15 +95,12 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
SCRIPTING ENGINE
+
+ true
+
-
@@ -172,12 +117,12 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -215,6 +160,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Load Script
+
+ true
+
-
@@ -225,6 +173,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Run
+
+ true
+
@@ -384,6 +335,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Read
+
+ true
+
-
@@ -410,6 +364,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
New Window
+
+ true
+
-
@@ -417,6 +374,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Write
+
+ true
+
-
@@ -498,18 +458,15 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
DEVICE SELECTION
Qt::AlignCenter
+
+ true
+
-
@@ -526,12 +483,12 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -600,9 +557,6 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
0
-
- color: rgb(238, 238, 236);
-
Address:
@@ -686,6 +640,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Read
+
+ true
+
-
@@ -741,6 +698,9 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
Write
+
+ true
+
-
@@ -751,9 +711,6 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
0
-
- color: rgb(238, 238, 236);
-
Value:
@@ -829,18 +786,15 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
REGISTER MAP SETTINGS
Qt::AlignCenter
+
+ true
+
-
@@ -857,12 +811,12 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
diff --git a/ui/detachdragzone.ui b/ui/detachdragzone.ui
index a932458e41..7277248815 100644
--- a/ui/detachdragzone.ui
+++ b/ui/detachdragzone.ui
@@ -23,12 +23,7 @@
false
- QWidget {
-background-color : black;
-}
-QWidget#DetachDragZone[hover=true] {
-border: 1px solid white;
- }
+
@@ -50,7 +45,6 @@ border: 1px solid white;
-
-1
@@ -59,7 +53,6 @@ border: 1px solid white;
font-size: 30px;
-color: white;
diff --git a/ui/device.ui b/ui/device.ui
index 5cb8555ef6..8e369630ca 100644
--- a/ui/device.ui
+++ b/ui/device.ui
@@ -71,19 +71,16 @@
- [selected=true] {
- opacity: 0.6;
- border-radius: 4px;
- background-color: #141416;
-}
-
-[selected=false] {
- background-color: transparent;
+ QLabel {
+qproperty-alignment: AlignCenter;
}
false
+
+ true
+
3
@@ -109,11 +106,7 @@
- QLabel {
-qproperty-alignment: AlignCenter;
-color: white;
-
-}
+
@@ -135,27 +128,7 @@ color: white;
- /*QPushButton {
-color: white;
-
-font-weight: bold;
-height: 30px;
-border-width: 0px;
-border-radius: 3px;
-min-width: 6em;
-}
-QPushButton:hover {
-background-color: orange;
-}
-QPushButton:checked {
-background-color: #F45000;
-}
-QPushButton[connected=true] {
-background-color: green;
-}
-QPushButton[failed=true] {
-background-color: red;
-}*/
+
@@ -186,12 +159,6 @@ background-color: red;
0
-
- QLabel {
-color: white;
-qproperty-alignment: AlignCenter;
-}
-
diff --git a/ui/digitalIoChannel.ui b/ui/digitalIoChannel.ui
index 58665aac89..88c8ffb8d8 100644
--- a/ui/digitalIoChannel.ui
+++ b/ui/digitalIoChannel.ui
@@ -73,7 +73,6 @@ border:1px solid red;
background:transparent;
height: 28px;
width: 14px;
-color: #FFFFFF;
font-size: 24px;
line-height: 28px;
diff --git a/ui/digitalIoElement.ui b/ui/digitalIoElement.ui
index c7257e3728..12ff028793 100644
--- a/ui/digitalIoElement.ui
+++ b/ui/digitalIoElement.ui
@@ -68,11 +68,12 @@
- height: 55px; width: 195px; color: rgba(255,255,255,255);
-
- font-size: 18px;
- font-weight: normal;
- font-style: normal;
+ height: 55px;
+ width: 195px;
+
+ font-size: 18px;
+ font-weight: normal;
+ font-style: normal;
0 - 7
@@ -87,6 +88,9 @@
0
+
+ QComboBox QAbstractItemView { min-width: 130px; }
+
-
Individual
@@ -138,12 +142,10 @@
{
height: 190px;
width: 1310px;
-border-radius: 12px;
-background-color: rgba(0, 0, 0, 80);
}
- 0
+ 1
@@ -215,8 +217,6 @@ background-color: rgba(0, 0, 0, 80);
{
height: 190px;
width: 1310px;
-border-radius: 12px;
-background-color: #141416;
}
QWidget#stackedWidgetPage1[locked=true]
@@ -317,27 +317,19 @@ background:transparent;
}
QSlider::groove:horizontal {
- background-color: rgba(255,255,255,50);
height:20px;
}
QSlider::handle:horizontal:enabled {
border-image:url(":/icons/time_trigger_handle.svg");
- height: 30px; width: 40px; border-radius: 4px;
+ height: 30px;
+ width: 40px;
+ border-radius: 4px;
margin: -5 -20px;
border-bot:2px;
border-left:2px;
border-backgroundcolor:black;
-}
-
-QSlider::handle:horizontal:!enabled {
-
-}
-
-QSlider::sub-page:horizontal {
- background: #4A64FF;
-}
-
+}
255
diff --git a/ui/digital_trigger_settings.ui b/ui/digital_trigger_settings.ui
index 9f5a1eecb6..2382f2f3bd 100644
--- a/ui/digital_trigger_settings.ui
+++ b/ui/digital_trigger_settings.ui
@@ -35,56 +35,6 @@
QWidget
{
color: rgb(190, 190, 190);
-}
-
-/* QComboBoxes*/
-QComboBox
-{
- height: 24px;
- border: 0px;
- color: white;
- font-size: 14px;
- border-bottom: 1px solid rgba(255, 255, 255, 102);
- padding-bottom: 4px;
-}
-QComboBox::drop-down
-{
- subcontrol-position: center right;
- width: 10px;
- height: 6px;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
-}
-QComboBox QAbstractItemView {
- border: 0px;
- color: white;
- selection-background-color: rgba(25, 25, 25);
- outline: 0px;
-}
-QComboBox:disabled
-{
- color: rgb(85, 85, 85);
-}
-
-/* QLabels
-QLabel:disabled
-{
- color: rgb(85, 85, 85);
-}*/
-
-QRadioButton {
-color: white;
-spacing: 12px;
-background-color: transparent;
-}
-QRadioButton::indicator {
-width: 14px;
-height: 14px;
-border: 2px solid;
-border-radius: 9px;
-border-color: rgb(73, 99, 255);
-}
-QRadioButton::indicator:checked {
-background-color: rgb(73, 99, 255);
}
@@ -105,14 +55,12 @@ background-color: rgb(73, 99, 255);
-
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
Trigger Settings
+
+ true
+
-
@@ -133,9 +81,6 @@ font-weight: normal;
-
-
- color: #4A64FF;
-
QFrame::Plain
@@ -145,6 +90,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
-
@@ -188,9 +136,6 @@ font-weight: normal;
0
-
- font-size: 13px;
-
Trigger mode
@@ -278,9 +223,6 @@ font-weight: normal;
0
-
- font-size: 13px;
-
Trigger Logic
@@ -335,15 +277,12 @@ font-weight: normal;
16777215
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
-}
-
EXTERNAL TRIGGER
+
+ true
+
-
@@ -360,12 +299,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -510,9 +449,6 @@ font-weight: normal;
0
-
- font-size: 13px;
-
Condition
@@ -532,9 +468,9 @@ font-weight: normal;
- 255
- 255
- 255
+ 190
+ 190
+ 190
@@ -550,18 +486,18 @@ font-weight: normal;
- 255
- 255
- 255
+ 190
+ 190
+ 190
- 255
- 255
- 255
+ 190
+ 190
+ 190
@@ -583,14 +519,23 @@ font-weight: normal;
+
+
+
+ 190
+ 190
+ 190
+
+
+
- 255
- 255
- 255
+ 190
+ 190
+ 190
@@ -606,18 +551,18 @@ font-weight: normal;
- 255
- 255
- 255
+ 190
+ 190
+ 190
- 255
- 255
- 255
+ 190
+ 190
+ 190
@@ -639,14 +584,23 @@ font-weight: normal;
+
+
+
+ 190
+ 190
+ 190
+
+
+
- 85
- 85
- 85
+ 190
+ 190
+ 190
@@ -662,18 +616,18 @@ font-weight: normal;
- 85
- 85
- 85
+ 190
+ 190
+ 190
- 85
- 85
- 85
+ 190
+ 190
+ 190
@@ -695,77 +649,18 @@ font-weight: normal;
+
+
+
+ 190
+ 190
+ 190
+
+
+
-
- QComboBox
-{
- height: 19px;
-
- border: 0px;
- border-bottom: 1px solid rgba(255, 255, 255, 102);
-
- font-size: 16px;
- font-weight: normal;
- font-style: normal;
- text-align: left;
- color: #ffffff;
-/*background-color:green;*/
-
-}
-QComboBox::drop-down
-{
- subcontrol-position: center right;
- width: 10px;
- height: 6px;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
-
- font-size: 16px;
- font-weight: normal;
- font-style: normal;
- text-align: left;
- color: #e0e0e0;
-}
-QComboBox QAbstractItemView {
- border: 0px;
- selection-background-color: rgba(25, 25, 25);
- outline: 0px;
-}
-
-QComboBox QAbstractItemView::item {
-width:30px;
-hieght:20px;
-margin-top: 0px;
-border:0px;
-padding:0px;
-}
-
-QComboBox:disabled
-{
- color: rgb(85, 85, 85);
-}
-
-/* Color of the selected list item. */
-QComboBox::item:selected {
-
- font-size: 16px;
- font-weight: normal;
- font-style: normal;
- text-align: left;
- color: #ffffff;
- border-bottom: 1px solid rgba(255, 255, 255, 102);
-
-}
-/* Indicator will shine through the label text if you don't make it hidden. */
-QComboBox::indicator{
- background-color:transparent;
- selection-background-color:transparent;
- color:transparent;
- selection-color:transparent;
-}
-
-
QComboBox::AdjustToMinimumContentsLengthWithIcon
@@ -909,15 +804,12 @@ QComboBox::indicator{
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
EXTERNAL TRIGGER OUT
+
+ true
+
-
@@ -934,12 +826,12 @@ QComboBox::indicator{
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
diff --git a/ui/digitalio.ui b/ui/digitalio.ui
index f17cf996d8..2b31a9361c 100644
--- a/ui/digitalio.ui
+++ b/ui/digitalio.ui
@@ -11,7 +11,7 @@
-
+
0
0
@@ -49,11 +49,6 @@
50
-
- #widget {
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
0
@@ -76,8 +71,27 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 r
0
- 20
+ 15
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Preferred
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
@@ -147,7 +161,7 @@ background-color: grey;
- 30
+ 50
0
@@ -255,9 +269,15 @@ background-color: grey;
1
+
+ adiscope::LinkedButton
+ QPushButton
+
+
+
diff --git a/ui/digitaliomenu.ui b/ui/digitaliomenu.ui
index ede0119f83..f2d694b798 100644
--- a/ui/digitaliomenu.ui
+++ b/ui/digitaliomenu.ui
@@ -16,20 +16,11 @@
QLineEdit
{
-
font-size: 18px;
line-height: 21px;
- color: #FFFFFF;
- border: 0px;
border-bottom: 1px solid rgba(255,255,255,100);
}
-QLineEdit:disabled
-{
- color: rgb(85, 85, 85);
-}
-
-
diff --git a/ui/dmm.ui b/ui/dmm.ui
index 6a9e2ea9d7..fba8128fc3 100644
--- a/ui/dmm.ui
+++ b/ui/dmm.ui
@@ -7,7 +7,7 @@
0
0
900
- 818
+ 830
@@ -16,7 +16,7 @@
0
-
+
0
@@ -33,1397 +33,1699 @@
0
-
-
-
- QWidget#leftPanel { background-color: rgba(0, 0, 0, 40); }
-QLabel { color: rgba(255, 255, 255, 90); font-size: 51px; font-weight: bold; qproperty-alignment: 'AlignBottom | AlignLeft'; }
-
-
+
+
+
+ 40
+
- 32
+ 0
- 32
+ 15
- 16
+ 50
- 32
+ 15
-
-
-
- 20
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 40
+ 10
+
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::RightToLeft
+
+
+ QPushButton {
+ width: 80px;
+ height: 40px;
+ border-radius: 4px;
+ background-color: #27b34f;
+ color: white;
+
+ font-weight: bold;
+
+ text-align: left;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
+QPushButton[running=true] {
+ background-color: #F45000;
+}
+
+QPushButton:disabled {
+ background-color: grey;
+}
+
+
+ Run
+
+
+
+ :/icons/ico-play.svg
+ :/icons/ico-stop.svg :/icons/ico-play.svg
+
+
+
+ 8
+ 10
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ QLabel {
+ font-size: 51px;
+ font-weight: bold;
+ qproperty-alignment: 'AlignBottom | AlignLeft';
+ }
+
+
+
+ 32
+
+
+ 32
+
+
+ 16
+
+
+ 32
-
-
-
- Qt::Vertical
-
-
- QSizePolicy::Maximum
-
-
-
- 0
- 0
-
-
-
-
- -
-
+
- 12
+ 20
-
-
-
-
- 0
- 0
-
+
+
+ Qt::Vertical
-
- QFrame::NoFrame
+
+ QSizePolicy::Maximum
+
+
+
+ 0
+ 0
+
-
+
-
-
+
- 0
+ 12
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
- QLCDNumber { color: #ff7200; }
-
-
- QFrame::NoFrame
-
-
- 7
-
-
- QLCDNumber::Flat
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
- QLCDNumber { color: #ff7200; }
-
-
- QFrame::NoFrame
-
-
- 7
-
-
- QLCDNumber::Flat
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 130
- 0
-
-
-
- MAX
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 130
- 0
-
-
-
- MIN
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 20
- 0
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 0
- 40
-
-
-
-
-
-
-
- -
-
+
+
+ 0
+
- 40
+ 0
-
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Expanding
-
-
-
- 0
- 0
-
-
-
-
- -
-
+
-
+
0
0
-
-
- 345
- 105
-
-
-
- QLCDNumber { color: #ff7200; }
-
QFrame::NoFrame
-
- 7
-
-
- QLCDNumber::Flat
-
-
-
-
-
- 0
- 0
-
-
-
-
- 130
- 105
-
-
-
- QLabel[ac=false] { qproperty-text: "VDC"; }
-QLabel[ac=true] { qproperty-text: "VRMS"; }
-
-
- VDC
+
+
+ 0
-
+ -
+
+
+ font-size: 13px;
+
+
+ Low Gain
+
+
+
+ -
+
+
+ font-size: 13px;
+color: red;
+
+
+
+
+
+
+
-
-
-
- -0.100000000000000
-
-
- 0.100000000000000
-
-
- 5
-
-
- 5
-
-
- Qt::Horizontal
-
-
- QwtThermo::LeadingScale
-
-
- QwtThermo::OriginCustom
-
-
+
+
0
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Maximum
-
-
-
- 0
- 40
-
-
-
-
- -
-
-
- 12
-
- -
-
-
-
- 0
- 0
-
-
-
- QFrame::NoFrame
-
-
-
- -
-
-
- 0
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 130
- 0
-
-
-
- MIN
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
- QLCDNumber { color: #9013fe; }
-
-
- QFrame::NoFrame
-
-
- 7
-
-
- QLCDNumber::Flat
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 0
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
- QLCDNumber { color: #9013fe; }
-
-
- QFrame::NoFrame
-
-
- 7
-
-
- QLCDNumber::Flat
-
-
-
- -
-
-
-
- 0
- 0
-
+ -
+
+
+
+ 0
-
-
- 130
- 0
-
+
+ 0
-
- MAX
+
+ 0
-
-
- -
-
-
- Qt::Vertical
+
+ 0
-
-
- 0
- 40
-
+
+ 0
-
-
-
-
-
- -
-
-
- 40
-
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 0
+
+
+
+ QLCDNumber { color: #ff7200; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 0
+
+
+
+ QLCDNumber { color: #ff7200; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 0
+
+
+
+ MAX
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 0
+
+
+
+ MIN
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 20
+ 0
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 40
+
+
+
+
+
+
+
-
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Expanding
-
-
-
- 0
- 0
-
+
+
+ 40
-
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Expanding
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 345
+ 105
+
+
+
+ QLCDNumber { color: #ff7200; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 105
+
+
+
+ QLabel[ac=false] { qproperty-text: "VDC"; }
+QLabel[ac=true] { qproperty-text: "VRMS"; }
+
+
+ VDC
+
+
+
+
-
-
-
-
- 0
- 0
-
-
-
-
- 340
- 105
-
+
+
+ -0.100000000000000
-
- QLCDNumber { color: #9013fe; }
+
+ 0.100000000000000
-
- QFrame::NoFrame
+
+ 5
-
- 7
+
+ 5
-
- QLCDNumber::Flat
+
+ 0
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Maximum
+
+
+
+ 0
+ 40
+
+
+
+
+ -
+
+
+ 12
+
+ -
+
+
+ 0
+
+
+ 0
+
-
-
+
-
+
0
0
-
-
- 130
- 105
-
-
-
- QLabel[ac=false] { qproperty-text: "VDC"; }
-QLabel[ac=true] { qproperty-text: "VRMS"; }
-
-
- VDC
+
+ QFrame::NoFrame
+ -
+
+
+ 0
+
+ -
+
+
+ font-size: 13px;
+
+
+ Low Gain
+
+
+
+ -
+
+
+ font-size: 13px;
+color: red;
+
+
+
+
+
+
+
+
-
-
-
- -0.100000000000000
-
-
- 0.100000000000000
-
-
- 5
-
-
- 5
-
-
- 0
-
-
- Qt::Horizontal
-
-
- QwtThermo::LeadingScale
-
-
- QwtThermo::OriginCustom
-
-
+
+
0
-
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 0
+
+
+
+ MIN
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 0
+
+
+
+ QLCDNumber { color: #9013fe; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 0
+
+
+
+ QLCDNumber { color: #9013fe; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 0
+
+
+
+ MAX
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 40
+
+
+
+
+
+
+
+ -
+
+
+ 40
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Expanding
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 340
+ 105
+
+
+
+ QLCDNumber { color: #9013fe; }
+
+
+ QFrame::NoFrame
+
+
+ 7
+
+
+ QLCDNumber::Flat
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 130
+ 105
+
+
+
+ QLabel[ac=false] { qproperty-text: "VDC"; }
+QLabel[ac=true] { qproperty-text: "VRMS"; }
+
+
+ VDC
+
+
+
+
+
+ -
+
+
+ -0.100000000000000
+
+
+ 0.100000000000000
+
+
+ 5
+
+
+ 5
+
+
+ 0
+
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Maximum
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+
+
+ 25
+
+
+ 20
+
+
+ 5
+
+
+ 0
+
-
-
-
- -
-
-
- Qt::Vertical
+
+
+ true
-
- QSizePolicy::Maximum
+
+
+ 0
+ 0
+
-
+
- 0
+ 200
0
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
-
-
- 25
-
-
- 20
-
-
- 5
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- Qt::RightToLeft
-
-
- QPushButton {
- width: 80px;
- height: 40px;
- border-radius: 4px;
- background-color: #27b34f;
- color: white;
-
- font-weight: bold;
-
- text-align: left;
- padding-left: 20px;
- padding-right: 20px;
-}
-
-QPushButton[running=true] {
- background-color: #F45000;
-}
-
-QPushButton:disabled {
- background-color: grey;
-}
-
-
- Run
-
-
-
- :/icons/ico-play.svg
- :/icons/ico-stop.svg :/icons/ico-play.svg
-
-
-
- 8
- 10
-
-
-
- true
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 24
-
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 200
- 0
-
-
-
- QFrame::NoFrame
-
-
- Qt::ScrollBarAlwaysOff
-
-
- true
-
-
-
-
- 0
- 0
- 186
- 914
-
-
-
-
- 0
- 0
-
-
-
-
- 15
-
-
- 0
+
+ QFrame::NoFrame
-
- 0
+
+ Qt::ScrollBarAlwaysOff
-
- 10
+
+ true
-
- 20
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- color: white;
- font-size:14px;
- font-weight:normal;
-}
-
-
- Channel 1
-
-
-
- -
-
-
-
- 0
- 0
-
+
+
+
+ 0
+ 0
+ 186
+ 1102
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 15
-
- QFrame { color: #ff7200; }
+
+ 0
-
- QFrame::Plain
+
+ 0
-
- 2
+
+ 10
-
- Qt::Horizontal
+
+ 20
-
-
- -
-
-
-
-
- DC (Direct Current)
+
+
+
+ 0
+ 0
+
+
+
+ Channel 1
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame { color: #ff7200; }
+
+
+ QFrame::Plain
+
+
+ 2
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+ -
+
+
+ DC (Direct Current)
+
+
+ true
+
+
+ buttonGroup
+
+
+
+ -
+
+
+ AC (20 Hz - 40 kHz)
+
+
+ buttonGroup
+
+
+
+
+
+ -
+
+
+ 0
+
+ -
+
+
+ Gain
+
+
+
+ -
+
+ -
+
+ Auto
+
+
+ -
+
+ Low
+
+
+ -
+
+ High
+
+
+
+
+
+
+ -
+
+
+ 5
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 80
+ 0
+
+
+
+ 1
+
+ -
+
+ 1s
+
+
+ -
+
+ 10s
+
+
+ -
+
+ 60s
+
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+ -
+
+
+ History
+
+
+
+ -
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ Line thickness
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 1
+
+ -
+
+ 0.5
+
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+ -
+
+ 2.5
+
+
+ -
+
+ 3
+
+
+ -
+
+ 3.5
+
+
+ -
+
+ 4
+
+
+ -
+
+ 4.5
+
+
+ -
+
+ 5
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
-
- true
+
+ QSizePolicy::Fixed
-
- buttonGroup
-
-
+
+
+ 0
+ 24
+
+
+
-
-
+
+
+
+ 0
+ 0
+
+
+
+ false
+
- AC (20 Hz - 40 kHz)
+ Channel 2
+
+
+ true
-
- buttonGroup
-
-
-
- -
-
-
- 5
-
- -
-
+ -
+
-
+
0
0
-
-
- 80
- 0
-
+
+ QFrame { color: #9013fe; }
+
+
+ QFrame::Plain
-
- 1
+
+ 2
+
+ Qt::Horizontal
+
+
+
+ -
+
-
-
- 1s
-
-
- -
-
- 10s
-
+
+
+ DC (Direct Current)
+
+
+ true
+
+
+ buttonGroup_2
+
+
-
-
- 60s
-
+
+
+ AC (20 Hz - 40 kHz)
+
+
+ buttonGroup_2
+
+
-
+
- -
-
-
- 10
-
+ -
+
0
- -
-
+ -
+
- History
+ Gain
- -
-
-
- true
+ -
+
+ -
+
+ Auto
+
+
+ -
+
+ Low
+
+
+ -
+
+ High
+
+
+
+
+
+
+ -
+
+
+ 5
+
+ -
+
+
+
+ 0
+ 0
+
-
- true
+
+
+ 80
+ 0
+
+
+ 1
+
+ -
+
+ 1s
+
+
+ -
+
+ 10s
+
+
+ -
+
+ 60s
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+ -
+
+
+ History
+
+
+
+ -
+
+
+ true
+
+
+ true
+
+
+
+
+
-
-
- -
-
-
- 0
-
-
- 0
-
-
-
+
0
-
- 0
-
0
- -
-
-
- font-size: 13px;
-
-
- Line thickness
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 1
-
- -
-
- 0.5
-
-
- -
-
- 1
-
-
- -
-
- 1.5
-
-
- -
-
- 2
-
-
- -
-
- 2.5
-
-
- -
-
- 3
-
-
- -
-
- 3.5
-
-
- -
-
- 4
-
-
- -
-
- 4.5
-
-
- -
-
- 5
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 24
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- false
-
-
- QLabel {
- color: white;
- font-size:14px;
- font-weight:normal;
-}
-
-
- Channel 2
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QFrame { color: #9013fe; }
-
-
- QFrame::Plain
-
-
- 2
-
-
- Qt::Horizontal
-
-
-
- -
-
- -
-
-
- DC (Direct Current)
-
-
- true
-
-
- buttonGroup_2
-
-
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ Line thickness
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 1
+
+ -
+
+ 0.5
+
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+ -
+
+ 2.5
+
+
+ -
+
+ 3
+
+
+ -
+
+ 3.5
+
+
+ -
+
+ 4
+
+
+ -
+
+ 4.5
+
+
+ -
+
+ 5
+
+
+
+
+
-
-
-
- AC (20 Hz - 40 kHz)
+
+
+ Qt::Vertical
-
- buttonGroup_2
-
-
-
-
-
- -
-
-
- 5
-
- -
-
-
-
- 0
- 0
-
+
+ QSizePolicy::Fixed
-
+
- 80
- 0
+ 0
+ 20
-
- 1
-
- -
-
- 1s
-
-
- -
-
- 10s
-
-
- -
-
- 60s
-
-
-
+
- -
-
+ -
+
- 10
+ 0
0
-
-
+
- History
+
-
-
- -
-
true
-
+
true
-
-
-
-
- -
-
5
-
- 0
-
-
- 0
-
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- font-size: 13px;
+
+
+
+ 0
+ 0
+
- Line thickness
+ PEAK HOLD
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ QFrame::Plain
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+ true
-
-
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
0
- 0
+ 5
-
- 1
-
- -
-
- 0.5
-
-
- -
-
- 1
-
-
- -
-
- 1.5
-
-
- -
-
- 2
-
-
- -
-
- 2.5
-
-
- -
-
- 3
-
-
- -
-
- 3.5
+
+
+ -
+
+
+
+ 0
-
- -
-
- 4
+
+ 0
-
- -
-
- 4.5
+
+ 0
-
- -
-
- 5
+
+ 0
-
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ QPushButton{
+height:25px;
+
+font-size: 12px;
+line-height: 14px;
+}
+
+
+ Reset
+
+
+ true
+
+
+
+
+
+
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 20
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
-
-
- QPushButton {
- max-height: 6px;
- max-width: 10px;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
-}
-
-QPushButton:checked
-{
- max-height: 10px;
- max-width: 6px;
-border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
-}
-
-
-
-
+
+
+ Qt::Vertical
-
-
+
+ QSizePolicy::Fixed
-
- true
+
+
+ 20
+ 20
+
-
+
-
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
-}
+
+
+ 0
-
- PEAK HOLD
+
+ 0
-
+ -
+
+
+
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ DATA LOGGING
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ QFrame::Plain
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
-
-
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
- 0
- 1
+ 20
+ 5
-
+
+
+ -
+
+
- 16777215
- 1
+ 0
+ 0
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- QFrame::Plain
-
-
- 1
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 5
-
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
+
0
@@ -1433,390 +1735,201 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
0
- -
-
+
+ 30
+
+
+ 0
+
+ -
+
true
-
- true
-
-
-
- -
-
-
-
- 0
- 30
-
-
-
- QPushButton{
-height:25px;
-background-color: #4A64FF;
-border-radius: 4px;
-
-
-font-size: 12px;
-line-height: 14px;
-color: #FFFFFF;
-}
-QPushButton:hover
-{
- background-color: #4a34ff;
-}
-
-
- Reset
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
- QPushButton {
- max-height: 6px;
- max-width: 10px;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
-}
-
-QPushButton:checked
-{
- max-height: 10px;
- max-width: 6px;
-border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
-}
-
-
-
-
-
-
-
-
-
- true
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
-}
-
-
- DATA LOGGING
-
-
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- QFrame::Plain
-
-
- 1
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 5
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 30
-
-
- 0
-
- -
-
-
-
-
-
- true
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
- 10
+ -
+
+
+
+ 0
0
-
-
- -
-
-
- 3
+
+ 0
-
+
0
- -
-
-
-
+ -
+
+
+ 10
+
+
+ 0
+
+
+
+ -
+
+
+ 3
+
+
+ 0
+
+ -
+
+
+
QLineEdit[invalid=true] {
border-color: red
}
QLineEdit[invalid=false] {
border-color: grey;
}
-
-
- true
-
-
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 20
+ 25
+
+
+
+ Qt::LeftToRight
+
+
+ QPushButton{
+height:25px;
+
+font-size: 12px;
+line-height: 14px;
+}
+
+
+ Browse
+
+
+
+ 20
+ 20
+
+
+
+ true
+
+
+
+
- -
-
-
-
- 0
- 0
-
+ -
+
+
+ Qt::Vertical
-
+
+ QSizePolicy::Fixed
+
+
20
- 25
+ 10
-
- Qt::LeftToRight
+
+
+ -
+
+
+ Append
+
+
+ -
+
- QPushButton{
-height:25px;
-background-color: #4A64FF;
-border-radius: 4px;
-
-
-font-size: 12px;
-line-height: 14px;
-color: #FFFFFF;
-}
-QPushButton:hover
-{
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
- background-color: grey;
-}
+
- Browse
+ Choose a file
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
-
+
20
- 20
+ 10
+
+
+ -
+
+
+ Overwrite
+
+
+ true
+
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 10
-
-
-
-
- -
-
-
- Append
-
-
-
- -
-
-
-
-
-
- Choose a file
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 10
-
-
-
-
- -
-
-
- Overwrite
-
-
- true
-
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::MinimumExpanding
-
-
-
- 0
- 2
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::MinimumExpanding
+
+
+
+ 0
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1827,17 +1940,22 @@ QPushButton:disabled {
1
-
- adiscope::CustomSwitch
- QPushButton
-
-
adiscope::InstrumentNotes
QWidget
1
+
+ adiscope::LinkedButton
+ QPushButton
+
+
+
+ adiscope::CustomSwitch
+ QPushButton
+
+
QwtThermo
QWidget
@@ -1862,6 +1980,7 @@ QPushButton:disabled {
+
diff --git a/ui/info_page.ui b/ui/info_page.ui
index ef5bb3ea8c..d310523553 100644
--- a/ui/info_page.ui
+++ b/ui/info_page.ui
@@ -6,7 +6,7 @@
0
0
- 789
+ 948
394
@@ -14,28 +14,38 @@
Form
- /*background-color:black;*/
-QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
+
+
+
+ -
+
+
+
+ 180
+ 30
+
+
+
+ QPushButton {
+ min-height: 30px;
+ max-height: 30px;
- color: rgba(255, 255, 255, 153);
-}
+ border: 0px;
-QCheckBox::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
+ font-size: 14px;
}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-
- -
-
+
+
+
+ Calibrate
+
+
+ true
+
+
+
+ -
+
0
@@ -60,33 +70,20 @@ QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
- background-color: #727273;
}
- Forget device
+ Identify
+
+
+ true
- -
-
+ -
+
0
@@ -111,28 +108,15 @@ QPushButton:disabled {
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
- background-color: #727273;
}
- Identify
+ Forget device
+
+
+ true
@@ -159,46 +143,19 @@ QPushButton:disabled {
QPushButton {
border: 0px;
- border-radius: 4px;
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
}
-
-QPushButton:hover
-{
-background-color: #4a34ff;
-}
-
-QPushButton:disabled {
-background-color: gray;
-color:white;
-}
-
-QPushButton:disabled {
- background-color: #727273;
-}
Connect
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 0
- 0
-
+
+ true
-
+
- -
+
-
QFrame::NoFrame
@@ -211,8 +168,8 @@ QPushButton:disabled {
0
0
- 771
- 255
+ 930
+ 242
@@ -231,22 +188,9 @@ QPushButton:disabled {
0
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
+
+ 0
+
-
@@ -271,7 +215,7 @@ QPushButton:disabled {
0
- -
+
-
@@ -281,7 +225,23 @@ QPushButton:disabled {
- -
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ -
@@ -301,9 +261,6 @@ QPushButton:disabled {
0
-
- background-color: transparent;
-
QFrame::NoFrame
@@ -321,7 +278,7 @@ QPushButton:disabled {
- -
+
-
Qt::Vertical
@@ -341,8 +298,21 @@ QPushButton:disabled {
- -
-
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
180
@@ -355,32 +325,20 @@ QPushButton:disabled {
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
- background-color: #727273;
-}
+
- Calibrate
+ Register
+
+
+ true
- -
+
-
0
@@ -388,8 +346,21 @@ QPushButton:disabled {
0
+ -
+
+
+ font-size: 13px;
+
+
+
+
+
+
-
+
+ font-size: 13px;
+
@@ -418,6 +389,9 @@ QPushButton:disabled {
20
+
+ font-size: 13px;
+
@@ -447,9 +421,7 @@ QPushButton:disabled {
- QLabel {
- color: red;
-}
+ font-size: 13px;
@@ -479,6 +451,9 @@ QPushButton:disabled {
20
+
+ font-size: 13px;
+
diff --git a/ui/instrumentnotes.ui b/ui/instrumentnotes.ui
index 120fb3bee2..4456e4b2e7 100644
--- a/ui/instrumentnotes.ui
+++ b/ui/instrumentnotes.ui
@@ -31,19 +31,6 @@
Form
-
- Line
-{
-color: rgb(255, 190, 190);
-border: 1px solid rgba(255, 255, 255, 70);
-}
-
-QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
-}
-
-
0
@@ -79,6 +66,9 @@ QLabel {
Notes
+
+ true
+
-
@@ -113,6 +103,9 @@ QLabel {
Qt::Horizontal
+
+ true
+
diff --git a/ui/la_channel_group.ui b/ui/la_channel_group.ui
index 41f1ecedfa..5409155082 100644
--- a/ui/la_channel_group.ui
+++ b/ui/la_channel_group.ui
@@ -70,14 +70,14 @@
QWidget[highlight=true] { background-color: #1b1b21; }
+
QWidget[hover-property=true] { border:1px solid #4a64ff; }
+
QLabel {
-color: white;
font-size: 16px;
font-weight: normal;
font-style: normal;
-}
-QLabel:disabled { color: #555555; }
+}
@@ -341,6 +341,15 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
+
+
+
+ 255
+ 255
+ 255
+
+
+
@@ -397,6 +406,15 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
+
+
+
+ 255
+ 255
+ 255
+
+
+
@@ -453,6 +471,15 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
+
+
+
+ 255
+ 255
+ 255
+
+
+
@@ -1072,6 +1099,15 @@ QPushButton:!checked {
+
+
+
+ 0
+ 0
+ 0
+
+
+
@@ -1209,6 +1245,15 @@ QPushButton:!checked {
+
+
+
+ 0
+ 0
+ 0
+
+
+
@@ -1346,26 +1391,20 @@ QPushButton:!checked {
+
+
+
+ 0
+ 0
+ 0
+
+
+
- QCheckBox
-{
- spacing: 0px;
-}
-QCheckBox:indicator
-{
-height: 16px;
-width: 16px;
-border-radius:4px;
-border: 2px solid #4a64ff;
-}
-
-QCheckBox:indicator:checked
-{
-background:#4a64ff;
-}
+
diff --git a/ui/la_channel_manager.ui b/ui/la_channel_manager.ui
index 722abcf752..3474334ed7 100644
--- a/ui/la_channel_manager.ui
+++ b/ui/la_channel_manager.ui
@@ -20,9 +20,7 @@
Form
- #LAChannelManager {
-background-color: qlineargradient(spread:pad, x1:0, y1:0.9, x2:0, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
+
@@ -76,7 +74,12 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0.9, x2:0, y2:0, stop:0 r
- QLabel{\n\n \n font-size: 16px;\n font-weight: normal;\n font-style: normal;\n text-align: left;\n color: rgba(255,255,255,140)\n}
+ QLabel{
+font-size: 16px;
+ font-weight: normal;
+font-style: normal;
+text-align: left;
+}
@@ -101,16 +104,15 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0.9, x2:0, y2:0, stop:0 r
-
-
- color: rgba(255,255,255,60);
-
-
QFrame::Plain
Qt::Horizontal
+
+ true
+
-
@@ -159,7 +161,7 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0.9, x2:0, y2:0, stop:0 r
0
0
16
- 314
+ 321
@@ -205,7 +207,7 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0.9, x2:0, y2:0, stop:0 r
0
0
- 85
+ 68
335
diff --git a/ui/la_decoder_reqChannel.ui b/ui/la_decoder_reqChannel.ui
index 4076fe01bc..68c718805c 100644
--- a/ui/la_decoder_reqChannel.ui
+++ b/ui/la_decoder_reqChannel.ui
@@ -68,7 +68,7 @@
- 0
+ 1
@@ -95,9 +95,6 @@
0
-
- font-size: 13px;
-
Settings
@@ -156,9 +153,6 @@
0
-
- font-size: 13px;
-
Role
@@ -182,9 +176,6 @@
-
-
- font-size: 13px;
-
Role
diff --git a/ui/la_manager_header.ui b/ui/la_manager_header.ui
index 11291f6e86..152ba5def7 100644
--- a/ui/la_manager_header.ui
+++ b/ui/la_manager_header.ui
@@ -47,14 +47,7 @@
font-weight: normal;
font-style: normal;
text-align: left;
- color: #ffffff;
-}
-
-QLabel:disabled
-{
- color:rgb(85,85,85);
-}
-
+}
@@ -104,22 +97,12 @@ QLabel:disabled
QLabel
-{
-
+{
font-size: 16px;
- font-weight: normal;
- font-style: normal;
- text-align: left;
- color: #ffffff;
border: 0px solid red;
margin:0px;
padding:0px;
}
-
-QLabel:disabled
-{
- color:rgb(85,85,85);
-}
diff --git a/ui/la_settings.ui b/ui/la_settings.ui
index a27f32e7fa..6e29f7c5f4 100644
--- a/ui/la_settings.ui
+++ b/ui/la_settings.ui
@@ -7,7 +7,7 @@
0
0
334
- 266
+ 277
@@ -47,8 +47,6 @@
QPushButton{
width: 40px;
height: 30px;
- border-radius: 4px;
- background-color: #4a64ff;
}
@@ -83,14 +81,12 @@
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
+
+ true
+
-
@@ -128,6 +124,9 @@ font-weight: normal;
30
+
+ true
+
-
@@ -152,15 +151,15 @@ font-weight: normal;
30
+
+ true
+
-
-
- color: #4A64FF;
-
QFrame::Plain
@@ -170,6 +169,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
@@ -230,15 +232,15 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Sunken
Qt::Horizontal
+
+ true
+
-
@@ -249,15 +251,12 @@ font-weight: normal;
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
REQUIRED
+
+ true
+
-
@@ -340,15 +339,12 @@ font-weight: normal;
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
OPTIONAL
+
+ true
+
-
@@ -365,15 +361,15 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Sunken
Qt::Horizontal
+
+ true
+
-
@@ -465,15 +461,15 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Sunken
Qt::Horizontal
+
+ true
+
-
@@ -484,15 +480,12 @@ font-weight: normal;
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
OPTIONS
+
+ true
+
-
diff --git a/ui/logic_analyzer.ui b/ui/logic_analyzer.ui
index 24c62653bb..efb8871aa0 100644
--- a/ui/logic_analyzer.ui
+++ b/ui/logic_analyzer.ui
@@ -46,11 +46,6 @@
-
-
- #mainWidget {
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
0
@@ -97,34 +92,23 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 r
+ -
+
+
-
Qt::RightToLeft
-
-QPushButton {
-width: 80px;
+ QPushButton{
+ width: 80px;
height: 40px;
-text-align: left;
+ text-align: left;
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
-border-radius: 4px;
-
-background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
-background-color: #2a44df;
-}
-
-QPushButton:hover {
-background-color: #4a34ff;
}
@@ -140,34 +124,25 @@ background-color: #4a34ff;
10
+
+ true
+
+
+ true
+
-
-
-QPushButton {
-width: 80px;
+ QPushButton{
+ width: 80px;
height: 40px;
-text-align: left;
+ text-align: left;
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
-
-border-radius: 4px;
-
-background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
-background-color: #2a44df;
-}
-
-QPushButton:hover {
-background-color: #4a34ff;
}
@@ -176,6 +151,12 @@ background-color: #4a34ff;
true
+
+ true
+
+
+ true
+
-
@@ -212,31 +193,6 @@ background-color: #4a34ff;
0
-
- QPushButton {
- min-height: 40px;
- max-height: 40px;
- min-width: 60px;
- max-width: 60px;
- padding-top:5px
-}
-
-QPushButton:checked {
-border-top: 1px solid rgba(255,255,255,150);
-}
-
-QPushButton:!checked {
-border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:!checked:hover {
-border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:checked:hover {
-border-top: 1px solid rgba(255,255,255,200);
-}
-
0
@@ -255,30 +211,18 @@ border-top: 1px solid rgba(255,255,255,200);
-
-
- QPushButton:checked {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
-
-QPushButton:!checked {
-image: url(:/icons/gear_wheel.svg);
-}
-
-
-QPushButton:!checked:hover {
-image: url(:/icons/gear_wheel_hover.svg);
-}
-
-QPushButton:checked:hover {
-image: url(:/icons/gear_wheel_pressed.svg);
-}
-
true
+
+ true
+
+
+ true
+
settings_group
@@ -286,29 +230,18 @@ image: url(:/icons/gear_wheel_pressed.svg);
-
-
- QPushButton:checked {
- image: url(:/icons/setup3_checked_hover.svg);
-}
-
-QPushButton:!checked {
-image: url(:/icons/setup3_unchecked.svg);
-}
-
-QPushButton:!checked:hover {
-image: url(:/icons/setup3_unchecked_hover.svg);
-}
-
-QPushButton:checked:hover {
-image: url(:/icons/setup3_checked_hover.svg);
-}
-
true
+
+ true
+
+
+ true
+
@@ -328,162 +261,161 @@ image: url(:/icons/setup3_checked_hover.svg);
0
-
-
- -
-
-
- background-color:black;
-
-
-
- 0
-
-
- 20
-
-
- 0
-
-
- 20
-
-
- 0
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 10
- 10
-
-
-
-
- -
-
-
- 0
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 10
- 10
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
-
-
-
- -
-
-
- false
-
-
- background-color: black;
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
+
+
+ true
+
+
+ -
+
+
+
+ 0
+
+
+ 20
+
+
+ 0
+
+
+ 20
+
+
+ 0
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 10
+ 10
+
+
+
+
+ -
+
+
+ 0
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 10
+ 10
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ false
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
- 25
-
-
- 0
-
-
- 25
-
-
- 0
-
-
- 0
-
-
-
-
-
- -
-
-
-
-
-
-
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ 25
+
+
+ 0
+
+
+ 25
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+ -
+
+
+
+
+
+
+
-
@@ -504,9 +436,6 @@ image: url(:/icons/setup3_checked_hover.svg);
0
-
- QWidget {border:none;}
-
0
@@ -568,6 +497,9 @@ image: url(:/icons/setup3_checked_hover.svg);
0
+
+ QFrame::NoFrame
+
Qt::ScrollBarAlwaysOff
@@ -583,7 +515,7 @@ image: url(:/icons/setup3_checked_hover.svg);
0
0
200
- 272
+ 329
@@ -628,15 +560,19 @@ image: url(:/icons/setup3_checked_hover.svg);
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
Channel Settings
+
+ true
+
+
+
+ -
+
+
+
+
-
@@ -647,9 +583,6 @@ font-weight: normal;
1
-
- border: 2px solid #4a64ff
-
QFrame::Plain
@@ -659,6 +592,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
-
@@ -691,51 +627,27 @@ font-weight: normal;
-
-
-
-
-
- :/icons/trigger_rising_enabled.svg :/icons/trigger_rising_enabled.svg
+ Rising Edge
-
-
-
-
-
- :/icons/trigger_falling_enabled.svg
-
+ Falling Edge
-
-
-
-
-
- :/icons/trigger_low_enabled.svg
-
+ Low
-
-
-
-
-
- :/icons/trigger_high_enabled.svg
-
+ High
-
-
-
-
-
- :/icons/trigger_any_enabled.svg
-
+ Any Edge
@@ -835,16 +747,12 @@ border-color: grey;
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
GROUP
+
+ true
+
-
@@ -855,12 +763,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1013,31 +921,43 @@ font-weight: normal;
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
Trigger Settings
+
+ true
+
-
+
+
+ 0
+ 0
+
+
16777215
1
-
- border: 2px solid #4a64ff
+
+ false
+
+
+ 1
+
+
+ 0
Qt::Horizontal
+
+ true
+
-
@@ -1214,16 +1134,12 @@ color: rgba(255,255,255,51);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
EXTERNAL TRIGGER
+
+ true
+
-
@@ -1240,12 +1156,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1276,9 +1192,6 @@ font-weight: normal;
0
-
- color: white;
-
"Warning: This feature is not supported on the current firmware version!"
@@ -1341,6 +1254,9 @@ font-weight: normal;
false
+
+ 26
+
-
@@ -1355,52 +1271,27 @@ font-weight: normal;
-
-
-
-
-
- :/icons/trigger_rising_enabled.svg
-
+ Rising Edge
-
-
-
-
-
- :/icons/trigger_falling_enabled.svg
-
+ Falling Edge
-
-
-
-
-
- :/icons/trigger_low_enabled.svg
-
+ Low
-
-
-
-
-
- :/icons/trigger_high_enabled.svg
-
+ High
-
-
-
-
-
- :/icons/trigger_any_enabled.svg
-
+ Any Edge
@@ -1459,6 +1350,9 @@ font-weight: normal;
-
+
+ QFrame::NoFrame
+
Qt::ScrollBarAlwaysOff
@@ -1470,8 +1364,8 @@ font-weight: normal;
0
0
- 315
- 469
+ 420
+ 474
@@ -1498,15 +1392,12 @@ font-weight: normal;
-
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
General Settings
+
+ true
+
-
@@ -1517,9 +1408,6 @@ font-weight: normal;
1
-
- border: 2px solid #4a64ff
-
QFrame::Plain
@@ -1529,6 +1417,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
-
@@ -1540,12 +1431,27 @@ font-weight: normal;
-
+
+
+ 0
+ 0
+
+
+
+
+ 400
+ 30
+
+
+
+ Qt::LeftToRight
+
QPushButton {
min-height: 30px;
max-height: 30px;
-min-width: 280px;
-max-width: 280px;
+min-width: 400px;
+max-width: 400px;
background-color: black;
border-radius: 4px;
}
@@ -1557,8 +1463,8 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.501, y2:0, stop
QWidget#handle {
min-height: 30px;
max-height: 30px;
-min-width: 142px;
-max-width: 142px;
+min-width: 200px;
+max-width: 200px;
background-color: #4a64ff;
border-radius: 2px;
}
@@ -1577,8 +1483,8 @@ QLabel#on {
margin-top: 0px;
min-height:30px;
max-height:30px;
-min-width:140px;
-max-width:140px;
+min-width:200px;
+max-width:200px;
qproperty-alignment: AlignCenter AlignCenter;
margin-left: 0px;
color: white;
@@ -1592,9 +1498,9 @@ QLabel#off {
margin-top: 0px;
min-height:30px;
max-height:30px;
-min-width:140px;
-max-width:140px;
-margin-left: 140px;
+min-width:200px;
+max-width:200px;
+margin-left: 200px;
color: white;
qproperty-alignment: AlignCenter AlignCenter;
}
@@ -1624,6 +1530,22 @@ color: rgba(255,255,255,51);
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 400
+ 20
+
+
+
+
-
@@ -1634,16 +1556,12 @@ color: rgba(255,255,255,51);
-
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
AVAILABLE CHANNELS
+
+ true
+
-
@@ -1660,12 +1578,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1673,40 +1591,7 @@ font-weight: normal;
-
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
-width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
-width: 40px;
- height: 20px;
- background-color: transparent;
-}
-QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
-QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
-QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
+
@@ -1753,16 +1638,12 @@ color: rgba(255, 255, 255, 153);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
DECODERS
+
+ true
+
-
@@ -1779,12 +1660,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1798,42 +1679,6 @@ font-weight: normal;
-
-
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
-width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
-width: 40px;
- height: 20px;
- background-color: transparent;
-}
-QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
-QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
-QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
0
@@ -1924,25 +1769,7 @@ color: rgba(255, 255, 255, 153);
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
-width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
+ QPushButton {
width: 40px;
height: 20px;
background-color: transparent;
@@ -1950,14 +1777,7 @@ width: 40px;
QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
+QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
@@ -1990,6 +1810,9 @@ color: rgba(255, 255, 255, 153);
Channel Settings
+
+ true
+
-
@@ -2034,9 +1857,19 @@ color: rgba(255, 255, 255, 153);
-
+
+
+
+
+
+ -
+
Cursors
+
+ true
+
-
@@ -2085,6 +1918,9 @@ color: rgba(255, 255, 255, 153);
Trigger
+
+ true
+
-
@@ -2133,6 +1969,12 @@ color: rgba(255, 255, 255, 153);
QPushButton
+
+ adiscope::InstrumentNotes
+ QWidget
+
+ 1
+
adiscope::RunSingleWidget
QWidget
@@ -2145,14 +1987,14 @@ color: rgba(255, 255, 255, 153);
- adiscope::InstrumentNotes
- QWidget
-
- 1
+ adiscope::LinkedButton
+ QPushButton
+
+
diff --git a/ui/logic_channel_settings.ui b/ui/logic_channel_settings.ui
index a57695a305..1d058a6d8f 100644
--- a/ui/logic_channel_settings.ui
+++ b/ui/logic_channel_settings.ui
@@ -19,13 +19,6 @@
Form
-
- QLabel:disabled
-{
- color: rgb(85, 85, 85);
-}
-
-
0
@@ -82,9 +75,6 @@
0
-
- font-size: 13px;
-
BG Color
@@ -98,9 +88,6 @@
0
-
- font-size: 13px;
-
Edge Color
@@ -184,9 +171,6 @@
0
-
- font-size: 13px;
-
Low Color
@@ -200,9 +184,6 @@
0
-
- font-size: 13px;
-
High Color
@@ -310,15 +291,15 @@
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Plain
Qt::Horizontal
+
+ true
+
-
@@ -329,15 +310,12 @@
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
SETTINGS
+
+ true
+
-
@@ -398,28 +376,10 @@
- 10
- 6
+ 16777215
+ 16777215
-
- QPushButton {
- max-height: 6px;
- max-width: 10px;
- border-image: url(:/icons/sba_cmb_box_arrow.svg);
-}
-
-QPushButton:checked
-{
- max-height: 10px;
- max-width: 6px;
-border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
-}
-
-
-
-
-
@@ -429,6 +389,9 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
false
+
+ true
+
-
@@ -439,15 +402,12 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
COLOR SETTINGS
+
+ true
+
-
@@ -464,15 +424,15 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Plain
Qt::Horizontal
+
+ true
+
-
@@ -517,9 +477,6 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
0
-
- font-size: 13px;
-
Name
@@ -533,9 +490,6 @@ border-image: url(:/icons/sba_cmb_box_arrow_right.svg);
0
-
- font-size: 13px;
-
Thickness
diff --git a/ui/manualcalibration.ui b/ui/manualcalibration.ui
index 92a15f0be7..1f01ff5ec2 100644
--- a/ui/manualcalibration.ui
+++ b/ui/manualcalibration.ui
@@ -14,12 +14,7 @@
Form
- QWidget#TopWidget{
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
-QLabel {
- color: rgba(255, 255, 255, 150);
+ QLabel {
text-align: left;
font-size: 18px;
}
@@ -28,18 +23,8 @@ QPushButton
{
width: 175px;
height: 30px;
- background-color: #4a64ff;
- border-radius: 4px;
text-align: center;
- color: #ffffff;
-
-}
-
-
-QPushButton:hover
-{
- background-color: #4a34ff;
}
QTabWidget::pane {
@@ -233,6 +218,9 @@ QListWidget{
Load Calibration
+
+ false
+
-
@@ -246,6 +234,9 @@ QListWidget{
Save Calibration
+
+ false
+
-
@@ -283,6 +274,9 @@ QListWidget{
Run automatic
+
+ true
+
diff --git a/ui/marker_table.ui b/ui/marker_table.ui
index e1f2a37df5..0566e518e0 100644
--- a/ui/marker_table.ui
+++ b/ui/marker_table.ui
@@ -14,13 +14,7 @@
Form
- QHeaderView::section {
- background-color: transparent;
-}
-
-QHeaderView::section:checked {
- background-color: transparent;
-}
+
diff --git a/ui/math.ui b/ui/math.ui
index 55da906e85..ffc3ae3a05 100644
--- a/ui/math.ui
+++ b/ui/math.ui
@@ -29,8 +29,6 @@ QPushButton:pressed {
background-color: #F45000;
}
QLabel {
-color: white;
-
font-weight: bold;
}
QMenu {
diff --git a/ui/math_panel.ui b/ui/math_panel.ui
index da0fba542b..2e218203f4 100644
--- a/ui/math_panel.ui
+++ b/ui/math_panel.ui
@@ -24,23 +24,11 @@
QPushButton {
-color: white;
-background-color: #4a64ff;
-
font-weight: bold;
height: 30px;
border-width: 0px;
border-radius: 3px;
min-width: 6em;
-}
-QPushButton:disabled {
-background-color: gray;
-color:white;
-
-}
-QPushButton:hover
-{
- background-color: #4a34ff;
}
@@ -49,6 +37,9 @@ QPushButton:hover
true
+
+ true
+
diff --git a/ui/measure_panel.ui b/ui/measure_panel.ui
index a46773241d..2292f4a1c8 100644
--- a/ui/measure_panel.ui
+++ b/ui/measure_panel.ui
@@ -220,12 +220,12 @@
1
-
- border: 1px solid rgba(255, 255, 255, 33);
-
Qt::Horizontal
+
+ true
+
-
diff --git a/ui/measure_settings.ui b/ui/measure_settings.ui
index 692263aec7..f0a465b591 100644
--- a/ui/measure_settings.ui
+++ b/ui/measure_settings.ui
@@ -47,14 +47,12 @@
-
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
Measure
+
+ true
+
-
@@ -72,14 +70,12 @@ font-weight: normal;
-
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
Channel
+
+ true
+
@@ -143,9 +139,9 @@ font-weight: normal;
0
- -10
+ 0
252
- 545
+ 563
@@ -183,15 +179,12 @@ font-weight: normal;
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
MEASUREMENTS
+
+ true
+
-
@@ -202,12 +195,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -260,9 +253,6 @@ font-weight: normal;
-
-
- font-size: 13px;
-
Counter
@@ -270,9 +260,6 @@ font-weight: normal;
-
-
- font-size: 13px;
-
Display All
@@ -305,24 +292,6 @@ font-weight: normal;
max-width: 240px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:disabled {
- background-color: #727273;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
@@ -331,6 +300,9 @@ QPushButton:hover {
true
+
+ true
+
@@ -360,15 +332,12 @@ QPushButton:hover {
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
STATISTICS
+
+ true
+
-
@@ -385,12 +354,12 @@ QPushButton:hover {
0
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
@@ -458,20 +427,8 @@ QPushButton:hover {
max-width: 100px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
@@ -480,6 +437,9 @@ QPushButton:hover {
false
+
+ true
+
-
@@ -492,24 +452,6 @@ QPushButton:hover {
max-width: 240px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:disabled {
- background-color: #727273;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
@@ -518,6 +460,9 @@ QPushButton:hover {
true
+
+ true
+
@@ -541,18 +486,15 @@ QPushButton:hover {
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
QFrame::Sunken
CUSTOM SELECTION
+
+ true
+
-
@@ -569,12 +511,12 @@ QPushButton:hover {
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -650,19 +592,16 @@ QPushButton:hover {
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
-
-
- font-size: 13px;
-
Enable
@@ -670,15 +609,12 @@ QPushButton:hover {
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
GATING SETTINGS
+
+ true
+
-
diff --git a/ui/network_analyzer.ui b/ui/network_analyzer.ui
index 646c8e2eaf..7a5249ff5a 100644
--- a/ui/network_analyzer.ui
+++ b/ui/network_analyzer.ui
@@ -26,7 +26,7 @@
-
- #mainWidget { background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent); }
+
@@ -74,14 +74,16 @@
+ -
+
+
-
Qt::RightToLeft
-
-QPushButton {
+ QPushButton{
width: 80px;
height: 40px;
@@ -89,21 +91,7 @@ QPushButton {
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
+}
Print
@@ -118,6 +106,12 @@ QPushButton:hover {
10
+
+ true
+
+
+ true
+
-
@@ -144,31 +138,6 @@ QPushButton:hover {
0
-
- QPushButton {
- min-height: 40px;
- max-height: 40px;
- min-width: 60px;
- max-width: 60px;
- padding-top:5px
-}
-
-QPushButton:checked {
- border-top: 1px solid rgba(255,255,255,150);
-}
-
-QPushButton:!checked {
- border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:!checked:hover {
- border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:checked:hover {
- border-top: 1px solid rgba(255,255,255,200);
-}
-
0
@@ -189,40 +158,28 @@ QPushButton:checked:hover {
- 62
- 47
+ 0
+ 0
- 62
- 47
+ 16777215
+ 16777215
-
- QPushButton:checked {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
-
-QPushButton:!checked {
- image: url(:/icons/gear_wheel.svg);
-}
-
-
-QPushButton:!checked:hover {
- image: url(:/icons/gear_wheel_hover.svg);
-}
-
-QPushButton:checked:hover {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
-
true
+
+ true
+
+
+ true
+
buttonGroup
@@ -232,37 +189,25 @@ QPushButton:checked:hover {
- 62
- 47
+ 0
+ 0
- 62
- 47
+ 16777215
+ 16777215
-
-
-QPushButton:checked {
- image: url(:/icons/setup3_checked_hover.svg);
-}
-
-QPushButton:!checked {
- image: url(:/icons/setup3_unchecked.svg);
-}
-
-QPushButton:!checked:hover {
- image: url(:/icons/setup3_unchecked_hover.svg);
-}
-
-QPushButton:checked:hover {
- image: url(:/icons/setup3_checked_hover.svg);
-}
-
true
+
+ true
+
+
+ true
+
buttonGroup
@@ -310,6 +255,9 @@ QPushButton:checked:hover {
+
+ true
+
0
@@ -346,57 +294,8 @@ QPushButton:checked:hover {
0
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- color:white;
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- color:white;
-
-
- Current Frequency:
-
-
-
- -
-
-
- color:white;
-
-
-
-
-
-
- -
-
+ -
+
0
@@ -407,7 +306,7 @@ QPushButton:checked:hover {
color:white;
- Sample:
+ Average:
@@ -428,16 +327,6 @@ color: red;
- -
-
-
- color:white;
-
-
-
-
-
-
-
@@ -454,6 +343,22 @@ color: red;
+ -
+
+
+
+ 0
+ 0
+
+
+
+ color:white;
+
+
+ Sample:
+
+
+
-
@@ -470,8 +375,41 @@ color: red;
- -
-
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ color:white;
+
+
+
+
+
+
+ -
+
+
+ color:white;
+
+
+
+
+
+
+ -
+
0
@@ -482,7 +420,17 @@ color: red;
color:white;
- Average:
+ Current Frequency:
+
+
+
+ -
+
+
+ color:white;
+
+
+
@@ -817,9 +765,6 @@ border: 5px solid white;
0
-
- font-size: 13px;
-
0
@@ -851,7 +796,7 @@ border: 5px solid white;
- 1
+ 0
@@ -894,11 +839,23 @@ border: 5px solid white;
0
- 0
- 322
- 867
+ -465
+ 340
+ 1036
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
20
@@ -914,14 +871,12 @@ border: 5px solid white;
-
-
- color: white;
- font-size: 14px;
- font-weight: normal;
-
Settings
+
+ true
+
-
@@ -942,9 +897,6 @@ border: 5px solid white;
-
-
- color: #4A64FF;
-
QFrame::Plain
@@ -954,6 +906,9 @@ border: 5px solid white;
Qt::Horizontal
+
+ true
+
-
@@ -975,16 +930,12 @@ border: 5px solid white;
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70)
- }
-
-
REFERENCE
+
+ true
+
-
@@ -1001,15 +952,15 @@ border: 5px solid white;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Sunken
Qt::Horizontal
+
+ true
+
@@ -1100,6 +1051,22 @@ color: rgba(255,255,255,51);
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 300
+ 20
+
+
+
+
-
@@ -1157,9 +1124,6 @@ color: rgba(255,255,255,51);
-
-
- font-size: 13px;
-
Gain Mode
@@ -1205,16 +1169,12 @@ color: rgba(255,255,255,51);
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70)
- }
-
-
RESPONSE
+
+ true
+
-
@@ -1225,12 +1185,12 @@ color: rgba(255,255,255,51);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1242,9 +1202,6 @@ color: rgba(255,255,255,51);
-
-
- font-size: 13px;
-
DC Filtering
@@ -1324,15 +1281,12 @@ color: rgba(255,255,255,51);
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70)
-}
-
SWEEP
+
+ true
+
-
@@ -1349,9 +1303,6 @@ color: rgba(255,255,255,51);
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Sunken
@@ -1361,6 +1312,9 @@ color: rgba(255,255,255,51);
Qt::Horizontal
+
+ true
+
@@ -1532,11 +1486,10 @@ color: rgba(255,255,255,51);
-
- font-size: 14px;
+ QSpinBox{
+font-size: 14px;
height:24px;
-color: white;
-border: 0px;
-border-bottom: 1px solid rgba(255,255,255,100);
+}
QSpinBox[invalid=true] {
@@ -1580,34 +1533,24 @@ border-color: green;
QPushButton {
-color: white;
-background-color: #4a64ff;
-font-family: 14pt;
border-width: 0px;
border-radius: 3px;
min-width: 64px;
}
-QPushButton:disabled {
-background-color: grey;
-}
-QPushButton:pressed {
-background-color: #F45000;
-}
+/*
QPushButton:enabled:!pressed { background-color: #4a64ff; }
QPushButton[valid=true]:enabled:!pressed { background-color: #4a64ff; }
QPushButton[invalid=true]:enabled:!pressed { background-color: #4a64ff; }
-QPushButton:pressed {
-background-color: #4a64ff;
-}
-QPushButton:hover
-{
- background-color: #4a34ff;
-}
+*/
+
Apply
+
+ true
+
@@ -1633,13 +1576,10 @@ QPushButton:hover
-
- font-size: 14px;
+ QSpinBox{
+font-size: 14px;
height:24px;
-color: white;
-border: 0px;
-border-bottom: 1px solid rgba(255,255,255,100);
-
-
+}
QSpinBox[invalid=true] {
border-color: red;
}
@@ -1674,34 +1614,23 @@ border-color: green;
QPushButton {
-color: white;
-background-color: #4a64ff;
-font-family: 14pt;
border-width: 0px;
border-radius: 3px;
min-width: 64px;
}
-QPushButton:disabled {
-background-color: grey;
-}
-QPushButton:pressed {
-background-color: #F45000;
-}
+/*
QPushButton:enabled:!pressed { background-color: #4a64ff; }
QPushButton[valid=true]:enabled:!pressed { background-color: #4a64ff; }
QPushButton[invalid=true]:enabled:!pressed { background-color: #4a64ff; }
-QPushButton:pressed {
-background-color: #4a64ff;
-}
-QPushButton:hover
-{
- background-color: #4a34ff;
-}
+*/
Apply
+
+ true
+
@@ -1727,16 +1656,12 @@ QPushButton:hover
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70)
- }
-
-
DISPLAY
+
+ true
+
-
@@ -1753,10 +1678,6 @@ QPushButton:hover
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
QFrame::Sunken
@@ -1766,6 +1687,9 @@ QPushButton:hover
Qt::Horizontal
+
+ true
+
@@ -1786,9 +1710,6 @@ QPushButton:hover
-
-
- font-size: 13px;
-
@@ -1811,9 +1732,6 @@ QPushButton:hover
0
-
- font-size: 13px;
-
Delta Label
@@ -1853,16 +1771,12 @@ QPushButton:hover
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70)
- }
-
-
BUFFER PREVIEWER
+
+ true
+
-
@@ -1873,15 +1787,15 @@ QPushButton:hover
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
QFrame::Plain
Qt::Horizontal
+
+ true
+
@@ -1974,28 +1888,14 @@ QPushButton:hover
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-QPushButton:disabled {
-background-color: #727273;
}
ViewInOsc
+
+ true
+
@@ -2022,23 +1922,7 @@ background-color: #727273;
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-QPushButton:hover {
- background-color: #4a34ff;
-}
-QPushButton:disabled {
-background-color: #727273;
}
@@ -2054,6 +1938,9 @@ background-color: #727273;
12
+
+ true
+
-
@@ -2089,25 +1976,9 @@ background-color: #727273;
max-height: 30px;
border: 0px;
- border-radius: 4px;
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
text-align: right;
padding-left: 20px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-QPushButton:disabled {
-background-color: #727273;
}
@@ -2123,6 +1994,9 @@ background-color: #727273;
12
+
+ true
+
@@ -2166,666 +2040,621 @@ background-color: #727273;
20
-
-
-
- color: white;
- font-size: 14px;
- font-weight: normal;
-
-
- General Settings
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- color: #4A64FF;
-
-
- QFrame::Plain
-
-
- 2
-
-
- Qt::Horizontal
-
-
-
- -
-
-
- 0
-
-
- 25
+
+
+ Qt::ScrollBarAlwaysOff
-
- 0
+
+ true
- -
-
-
- 0
-
-
- 0
-
+
+
+
+ 0
+ 0
+ 298
+ 529
+
+
+
-
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
+
- PLOT
+ General Settings
+
+
+ true
-
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
-
+
0
0
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
+
+ QFrame::Plain
-
- border: 1px solid rgba(255, 255, 255, 70);
+
+ 2
Qt::Horizontal
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
- font-size: 13px;
-
-
- Type
-
-
-
- -
-
-
-
- 141
- 0
-
+
+ true
- -
-
- Bode
-
-
- -
-
- Nyquist
-
-
- -
-
- Nichols
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
-
+
0
-
- 0
+
+ 25
0
-
-
-
- font-size: 13px;
+
+
+ 0
-
- Line thickness
+
+ 0
-
-
-
-
- -
-
-
-
- 141
- 0
-
-
-
- 1
-
- -
-
- 0.5
-
-
- -
-
- 1
-
-
- -
-
- 1.5
-
-
- -
-
- 2
-
+ -
+
+
+
+ 0
+ 0
+
+
+
+ PLOT
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
-
-
- 2.5
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
-
-
- 3
-
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ Type
+
+
+
+ -
+
+
+
+ 141
+ 0
+
+
+ -
+
+ Bode
+
+
+ -
+
+ Nyquist
+
+
+ -
+
+ Nichols
+
+
+
+
+
-
-
- 3.5
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
-
-
- 4
-
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ Line thickness
+
+
+
+
+
+ -
+
+
+
+ 141
+ 0
+
+
+
+ 1
+
+ -
+
+ 0.5
+
+
+ -
+
+ 1
+
+
+ -
+
+ 1.5
+
+
+ -
+
+ 2
+
+
+ -
+
+ 2.5
+
+
+ -
+
+ 3
+
+
+ -
+
+ 3.5
+
+
+ -
+
+ 4
+
+
+ -
+
+ 4.5
+
+
+ -
+
+ 5
+
+
+
+
+
-
-
- 4.5
-
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 25
+
+
+
-
-
- 5
-
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ EXPORT
+
+
+ true
+
+
+
+ -
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 25
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- EXPORT
-
-
-
- -
-
-
-
- 16777215
- 1
-
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- QPushButton {
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ QPushButton {
min-height: 30px;
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
-
-
- Export
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 25
-
-
-
-
-
-
- -
-
-
- 0
-
-
- 20
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- REFERENCE
-
-
-
- -
-
-
-
- 16777215
- 1
-
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- QFrame::Plain
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- false
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- QPushButton {
+
+
+ Export
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 25
+
+
+
+
+ -
+
+
+ 0
+
+
+ 20
+
+ -
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ REFERENCE
+
+
+ true
+
+
+
+ -
+
+
+
+ 16777215
+ 1
+
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ false
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ QPushButton {
min-height: 30px;
max-height: 30px;
- border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
+ border: 0px;f;
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
-background-color: #727273;
}
-
-
- Import
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- QPushButton {
+
+
+ Import
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ QPushButton {
min-height: 30px;
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
-background-color: #727273;
}
-
-
- Snapshot
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 15
-
-
-
-
- -
-
-
- false
-
-
- QPushButton {
+
+
+ Snapshot
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 15
+
+
+
+
+ -
+
+
+ false
+
+
+ QPushButton {
min-height: 30px;
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
-}
-
-QPushButton:disabled {
-background-color: #727273;
}
-
-
- Remove Reference
-
-
- false
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
+
+
+ Remove Reference
+
+
+ false
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
@@ -2839,14 +2668,12 @@ background-color: #727273;
-
-
- color: white;
- font-size: 14px;
- font-weight: normal;
-
Cursors
+
+ true
+
-
@@ -2885,12 +2712,12 @@ background-color: #727273;
2
-
- border: 2px solid rgb(74, 100, 255);
-
Qt::Horizontal
+
+ true
+
-
@@ -2921,15 +2748,12 @@ background-color: #727273;
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
CURSOR READOUTS
+
+ true
+
-
@@ -2952,12 +2776,12 @@ background-color: #727273;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -2989,31 +2813,6 @@ background-color: #727273;
-
-
- QSlider::groove {
- border: 1px solid #444444;
- height: 2px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
- background: #999999;
- margin: 2px 0;
- border-radius: 2px;
-}
-
-QSlider::handle {
- background: rgb(73, 99, 255);
- border: 0px solid;
- width: 18px;
- margin: -8px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
- border-radius: 8px;
-}
-
-QSlider::handle:disabled {
- background: #444444;
-}
-
-QSlider::sub-page:horizontal {
- background: #4A64FF;
-}
-
100
@@ -3136,29 +2935,9 @@ QSlider::sub-page:horizontal {
-
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
- color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QLabel {
+ QLabel {
font-size: 14px;
font-weight: bold;
-
- color: rgba(255, 255, 255, 153);
}
@@ -3185,8 +2964,6 @@ QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
QLabel {
font-size: 14px;
font-weight: bold;
-
- color: rgba(255, 255, 255, 153);
}
@@ -3217,21 +2994,15 @@ QLabel {
1
- adiscope::MenuAnim
+ adiscope::InstrumentNotes
QWidget
-
+
1
- adiscope::CustomPushButton
+ adiscope::LinkedButton
QPushButton
-
-
-
- adiscope::RunSingleWidget
- QWidget
-
- 1
+
adiscope::CustomSwitch
@@ -3239,11 +3010,22 @@ QLabel {
- adiscope::InstrumentNotes
+ adiscope::MenuAnim
QWidget
-
+
+ 1
+
+
+ adiscope::RunSingleWidget
+ QWidget
+
1
+
+ adiscope::CustomPushButton
+ QPushButton
+
+
adiscope::dBgraph
QFrame
@@ -3265,6 +3047,7 @@ QLabel {
+
diff --git a/ui/note.ui b/ui/note.ui
index 0e43d7a856..05b411bb41 100644
--- a/ui/note.ui
+++ b/ui/note.ui
@@ -53,19 +53,14 @@
- [selected=true] {
- opacity: 0.6;
- border-radius: 4px;
- background-color: #141416;
-}
-
-[selected=false] {
- background-color: transparent;
-}
+
false
+
+ true
+
10
@@ -91,8 +86,7 @@
- qproperty-alignment: AlignCenter;
-color: white;
+ qproperty-alignment: AlignCenter;
TextLabel
@@ -124,11 +118,6 @@ background-color: transparent;
-
-
- :/icons/ic_note_unchecked.svg
- :/icons/ic_note_checked.svg :/icons/ic_note_unchecked.svg
-
40
@@ -141,6 +130,9 @@ background-color: transparent;
false
+
+ true
+
@@ -148,8 +140,6 @@ background-color: transparent;
-
-
-
+
diff --git a/ui/osc_export_settings.ui b/ui/osc_export_settings.ui
index 74c838ff07..2268971dec 100644
--- a/ui/osc_export_settings.ui
+++ b/ui/osc_export_settings.ui
@@ -19,14 +19,6 @@
Form
-
- QWidget {
- background-color: transparent;
- color: #bebebe;
- font-weight: normal;
- font-size: 13px;
-}
-
0
@@ -99,15 +91,12 @@
0
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
-}
-
EXPORT
+
+ true
+
-
@@ -124,12 +113,12 @@
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -264,25 +253,14 @@
max-height: 30px;
border: 0px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
- font-size: 14px;
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
Export
+
+ true
+
diff --git a/ui/osc_general_settings.ui b/ui/osc_general_settings.ui
index 0d380645ef..c3daf86530 100644
--- a/ui/osc_general_settings.ui
+++ b/ui/osc_general_settings.ui
@@ -6,40 +6,21 @@
0
0
- 280
- 444
+ 303
+ 475
+
+
+ 0
+ 0
+
+
GeneralSettings
- QWidget
-{
- background-color: rgb(39, 39, 48);
- color: rgb(190, 190, 190);
- font: 10pt;
- font-style: normal;
- font-weight: normal;
-
-}
-
-QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
- color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
+
@@ -58,445 +39,461 @@ QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
0
-
-
-
- 0
+
+
+
+ 0
+ 0
+
-
- 0
+
+ Qt::ScrollBarAsNeeded
- -
-
-
- 15
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- color: white;
- font-size: 14px;
- font-weight: normal;
-
-
-
- General settings
-
-
-
+
+ Qt::ScrollBarAlwaysOff
+
+
+ QAbstractScrollArea::AdjustIgnored
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 265
+ 473
+
+
+
+
+ 0
+ 0
+
+
+
-
-
-
-
- 240
- 2
-
-
-
-
- 240
- 2
-
-
-
- border: 2px solid rgb(74, 100, 255);
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 15
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 0
- 25
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- VIEWS
-
-
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
+
+
+ 0
-
- border: 1px solid rgba(255, 255, 255, 70);
+
+ 0
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
- 15
-
-
- 15
-
- -
-
-
- font-size: 13px;
-
-
- FFT
-
-
-
- -
-
-
- font-size: 13px;
-
-
- Histogram
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- font-size: 13px;
-
-
- X-Y
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- 0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 15
-
-
- 0
-
-
- 5
-
-
- 0
-
-
- 20
-
- -
-
-
- 0
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
- QLabel {
- font-size: 12px;
- color: rgba(255, 255, 255, 70);
- }
-
-
- X-Y
-
-
-
- -
-
-
-
- 0
- 1
-
-
-
-
- 16777215
- 1
-
-
-
- border: 1px solid rgba(255, 255, 255, 70);
-
-
- Qt::Horizontal
-
-
-
-
-
- -
-
-
- 0
-
-
- 25
-
-
- 5
-
- -
-
-
- font-size: 13px;
-
-
- Y-Axis
-
-
-
- -
-
-
- -
-
-
- font-size: 13px;
-
-
- X-Axis
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- true
-
-
- true
-
-
- dots
-
-
- lines
-
-
- 0
-
-
-
- -
-
-
- 0
-
- -
-
-
- X-Y Line thickness
-
-
-
- -
-
-
- 0
-
- -
+
-
+
+
+ 15
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
- 1
+ General settings
+
+
+ true
+
+
+
+ -
+
+
+
+ 240
+ 2
+
+
+
+
+ 240
+ 2
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
+
+ -
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 25
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 15
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
-
- -
- 2
+ VIEWS
-
- -
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
+
+ -
+
+
+ 0
+
+
+ 0
+
+
+ 15
+
+
+ 15
+
+ -
+
- 3
+ FFT
-
- -
+
+
+ -
+
- 4
+ Histogram
-
- -
+
+
+ -
+
- 5
+
-
- -
+
+
+ -
+
- 6
+
-
- -
+
+
+ -
+
- 7
+ X-Y
-
- -
+
+
+ -
+
- 8
+
+
+
+
+
+ -
+
+
+ 0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 15
+
+
+ 0
+
+
+ 5
+
+
+ 0
+
+
+ 20
+
+ -
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ X-Y
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 1
+
+
+
+
+ 16777215
+ 1
+
+
+
+ Qt::Horizontal
+
+
+ true
+
+
+
+
-
-
- 9
-
+
+
+ 0
+
+
+ 25
+
+
+ 5
+
+ -
+
+
+ Y-Axis
+
+
+
+ -
+
+
+ -
+
+
+ X-Axis
+
+
+
+ -
+
+
+
-
-
- 10
-
+
+
+
+
+
+ true
+
+
+ true
+
+
+ dots
+
+
+ lines
+
+
+ 0
+
+
+
+ -
+
+
+ 0
+
+ -
+
+
+ X-Y Line thickness
+
+
+
+ -
+
+
+ 0
+
+ -
+
+ 1
+
+
+ -
+
+ 2
+
+
+ -
+
+ 3
+
+
+ -
+
+ 4
+
+
+ -
+
+ 5
+
+
+ -
+
+ 6
+
+
+ -
+
+ 7
+
+
+ -
+
+ 8
+
+
+ -
+
+ 9
+
+
+ -
+
+ 10
+
+
+
+
+
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Expanding
-
-
-
- 0
- 0
-
-
-
-
-
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Expanding
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
diff --git a/ui/oscilloscope.ui b/ui/oscilloscope.ui
index 0368cf98db..e08ae438c0 100644
--- a/ui/oscilloscope.ui
+++ b/ui/oscilloscope.ui
@@ -43,11 +43,6 @@
-
-
- #mainWidget {
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
0
@@ -94,14 +89,20 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 r
+ -
+
+
+
+
+
+
-
Qt::RightToLeft
-
-QPushButton {
+ QPushButton{
width: 80px;
height: 40px;
@@ -109,19 +110,6 @@ QPushButton {
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
- border-radius: 4px;
-
- background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
- background-color: #2a44df;
-}
-
-QPushButton:hover {
- background-color: #4a34ff;
}
@@ -137,6 +125,32 @@ QPushButton:hover {
10
+
+ true
+
+
+
+ -
+
+
+ QPushButton{
+ width: 80px;
+ height: 40px;
+
+ font-size: 12px;
+ text-align: left;
+ font-weight: bold;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+
+ Enable Mixed
+Signal View
+
+
+ true
+
-
@@ -166,31 +180,6 @@ QPushButton:hover {
0
-
- QPushButton {
- min-height: 40px;
- max-height: 40px;
- min-width: 60px;
- max-width: 60px;
- padding-top:5px
-}
-
-QPushButton:checked {
- border-top: 1px solid rgba(255,255,255,150);
-}
-
-QPushButton:!checked {
- border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:!checked:hover {
- border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:checked:hover {
- border-top: 1px solid rgba(255,255,255,200);
-}
-
0
@@ -210,22 +199,7 @@ QPushButton:checked:hover {
-
- QPushButton:checked {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
-
-QPushButton:!checked {
- image: url(:/icons/gear_wheel.svg);
-}
-
-
-QPushButton:!checked:hover {
- image: url(:/icons/gear_wheel_hover.svg);
-}
-
-QPushButton:checked:hover {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
+
@@ -233,6 +207,12 @@ QPushButton:checked:hover {
true
+
+ true
+
+
+ true
+
settings_group
@@ -241,21 +221,7 @@ QPushButton:checked:hover {
-
- QPushButton:checked {
- image: url(:/icons/setup3_checked_hover.svg);
-}
-
-QPushButton:!checked {
- image: url(:/icons/setup3_unchecked.svg);
-}
-
-QPushButton:!checked:hover {
- image: url(:/icons/setup3_unchecked_hover.svg);
-}
-
-QPushButton:checked:hover {
- image: url(:/icons/setup3_checked_hover.svg);
-}
+
@@ -263,6 +229,12 @@ QPushButton:checked:hover {
true
+
+ true
+
+
+ true
+
@@ -282,217 +254,106 @@ QPushButton:checked:hover {
0
-
-
- -
-
-
- background-color:black;
-
-
-
- 0
-
- -
-
-
- Qt::Horizontal
-
-
-
- 10
- 10
-
-
-
-
- -
-
-
- 0
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 10
- 10
-
-
-
-
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
- -
-
-
- 25
-
-
- 0
-
-
- 25
-
-
- 0
-
-
- 0
-
-
-
- -
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 3
-
- -
-
-
- 15
-
-
- 10
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 0
- 15
-
-
-
-
-
-
-
-
- -
-
-
-
- 20
+
+
+ true
+
+
+ -
+
+
+
+ 0
+
+ -
+
+
+ Qt::Horizontal
-
+
+
+ 10
+ 10
+
+
+
+
+ -
+
+
0
-
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 10
+ 10
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
0
-
+
0
-
- 2
+
+ 0
-
+
0
- -
-
+ -
+
+
+ 25
+
+
+ 0
+
+
+ 25
+
+
+ 0
+
0
-
-
-
- -
-
-
- 0
-
-
- 20
-
-
- 20
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 0
-
-
-
+ -
+
0
@@ -502,40 +363,153 @@ QPushButton:checked:hover {
0
-
- 0
-
- 0
+ 3
+ -
+
+
+ 15
+
+
+ 10
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 0
+ 15
+
+
+
+
-
-
- -
-
-
- Qt::Horizontal
+
+
+
+ -
+
+
+
+ 20
+
+
+ 0
-
- QSizePolicy::Fixed
+
+ 0
-
-
- 20
- 20
-
+
+ 0
-
-
-
-
- -
-
-
-
-
-
-
+
+ 2
+
+
+ 0
+
+ -
+
+
+ 0
+
+
+
+
+
+
+ -
+
+
+ 0
+
+
+ 20
+
+
+ 20
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 20
+ 0
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
-
@@ -545,6 +519,9 @@ QPushButton:checked:hover {
0
+
+ true
+
0
@@ -581,9 +558,6 @@ QPushButton:checked:hover {
58
-
- background-color: black;
-
0
@@ -662,9 +636,6 @@ QPushButton:checked:hover {
45
-
- background-color: black;
-
0
@@ -787,40 +758,7 @@ QPushButton:checked:hover {
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
-width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
-width: 40px;
- height: 20px;
- background-color: transparent;
-}
-QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
-QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
-QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
+
@@ -918,25 +856,7 @@ color: rgba(255, 255, 255, 153);
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
- color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
- width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
+ QPushButton {
width: 40px;
height: 20px;
background-color: transparent;
@@ -944,14 +864,7 @@ QPushButton {
QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
- font-size: 14px;
- font-weight: bold;
-
- color: rgba(255, 255, 255, 153);
-}
+QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
@@ -1037,6 +950,9 @@ QLabel {
Trigger
+
+ true
+
-
@@ -1086,20 +1002,26 @@ QLabel {
- adiscope::RunSingleWidget
+ adiscope::InstrumentNotes
QWidget
-
+
1
- adiscope::InstrumentNotes
+ adiscope::RunSingleWidget
QWidget
-
+
1
+
+ adiscope::LinkedButton
+ QPushButton
+
+
+
diff --git a/ui/pattern_generator.ui b/ui/pattern_generator.ui
index 147276f424..c616a8acd6 100644
--- a/ui/pattern_generator.ui
+++ b/ui/pattern_generator.ui
@@ -46,11 +46,6 @@
-
-
- #mainWidget {
-background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 rgba(0, 0, 0, 40), stop:1 transparent);
-}
-
0
@@ -97,34 +92,23 @@ background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0.1, y2:0, stop:0 r
+ -
+
+
-
Qt::RightToLeft
-
-QPushButton {
-width: 80px;
+ QPushButton{
+ width: 80px;
height: 40px;
-text-align: left;
+ text-align: left;
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
-border-radius: 4px;
-
-background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
-background-color: #2a44df;
-}
-
-QPushButton:hover {
-background-color: #4a34ff;
}
@@ -140,34 +124,22 @@ background-color: #4a34ff;
10
+
+ true
+
-
-
-QPushButton {
-width: 80px;
+ QPushButton{
+ width: 80px;
height: 40px;
-text-align: left;
+ text-align: left;
font-weight: bold;
padding-left: 15px;
padding-right: 15px;
-
-border-radius: 4px;
-
-background-color: #4a64ff;
- color: #ffffff;
-
-}
-
-QPushButton:pressed {
-background-color: #2a44df;
-}
-
-QPushButton:hover {
-background-color: #4a34ff;
}
@@ -176,6 +148,9 @@ background-color: #4a34ff;
true
+
+ true
+
-
@@ -212,31 +187,6 @@ background-color: #4a34ff;
0
-
- QPushButton {
- min-height: 40px;
- max-height: 40px;
- min-width: 60px;
- max-width: 60px;
- padding-top:5px
-}
-
-QPushButton:checked {
-border-top: 1px solid rgba(255,255,255,150);
-}
-
-QPushButton:!checked {
-border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:!checked:hover {
-border-top: 1px solid rgba(255,255,255,0);
-}
-
-QPushButton:checked:hover {
-border-top: 1px solid rgba(255,255,255,200);
-}
-
0
@@ -255,30 +205,18 @@ border-top: 1px solid rgba(255,255,255,200);
-
-
- QPushButton:checked {
- image: url(:/icons/gear_wheel_pressed.svg);
-}
-
-QPushButton:!checked {
-image: url(:/icons/gear_wheel.svg);
-}
-
-
-QPushButton:!checked:hover {
-image: url(:/icons/gear_wheel_hover.svg);
-}
-
-QPushButton:checked:hover {
-image: url(:/icons/gear_wheel_pressed.svg);
-}
-
true
+
+ true
+
+
+ true
+
settings_group
@@ -286,29 +224,18 @@ image: url(:/icons/gear_wheel_pressed.svg);
-
-
- QPushButton:checked {
- image: url(:/icons/setup3_checked_hover.svg);
-}
-
-QPushButton:!checked {
-image: url(:/icons/setup3_unchecked.svg);
-}
-
-QPushButton:!checked:hover {
-image: url(:/icons/setup3_unchecked_hover.svg);
-}
-
-QPushButton:checked:hover {
-image: url(:/icons/setup3_checked_hover.svg);
-}
-
true
+
+ true
+
+
+ true
+
@@ -331,8 +258,8 @@ image: url(:/icons/setup3_checked_hover.svg);
-
-
- background-color:black;
+
+ true
@@ -423,8 +350,8 @@ image: url(:/icons/setup3_checked_hover.svg);
false
-
- background-color: black;
+
+ true
@@ -542,7 +469,7 @@ image: url(:/icons/setup3_checked_hover.svg);
- 0
+ 3
@@ -592,8 +519,8 @@ image: url(:/icons/setup3_checked_hover.svg);
0
0
- 300
- 469
+ 200
+ 300
@@ -638,15 +565,12 @@ image: url(:/icons/setup3_checked_hover.svg);
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
Channel Settings
+
+ true
+
-
@@ -657,9 +581,6 @@ font-weight: normal;
1
-
- border: 2px solid #4a64ff
-
QFrame::Plain
@@ -669,6 +590,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
-
@@ -866,16 +790,12 @@ color: rgba(255,255,255,51);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
GROUP
+
+ true
+
-
@@ -886,12 +806,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1048,15 +968,12 @@ font-weight: normal;
0
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
Trigger Settings
+
+ true
+
-
@@ -1067,12 +984,12 @@ font-weight: normal;
1
-
- border: 2px solid #4a64ff
-
Qt::Horizontal
+
+ true
+
-
@@ -1249,16 +1166,12 @@ color: rgba(255,255,255,51);
0
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
EXTERNAL TRIGGER
+
+ true
+
-
@@ -1275,12 +1188,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1469,7 +1382,7 @@ font-weight: normal;
0
0
280
- 469
+ 474
@@ -1496,19 +1409,22 @@ font-weight: normal;
-
-
- color: white;
-font-size: 14px;
-font-weight: normal;
-
-
General Settings
+
+ true
+
-
+
+
+ 0
+ 1
+
+
16777215
@@ -1516,7 +1432,7 @@ font-weight: normal;
- border: 2px solid #4a64ff
+
QFrame::Plain
@@ -1527,6 +1443,9 @@ font-weight: normal;
Qt::Horizontal
+
+ true
+
-
@@ -1539,16 +1458,12 @@ font-weight: normal;
-
-
- QLabel {
- font-size: 12px;
-color: rgba(255, 255, 255, 70);
-font-weight: normal;
-}
-
AVAILABLE CHANNELS
+
+ true
+
-
@@ -1565,12 +1480,12 @@ font-weight: normal;
1
-
- border: 1px solid rgba(255, 255, 255, 70);
-
Qt::Horizontal
+
+ true
+
@@ -1594,25 +1509,7 @@ font-weight: normal;
-
- QCheckBox {
- spacing: 8px;
- background-color: transparent;
- font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
-
-QCheckBox::indicator {
-width: 14px;
- height: 14px;
- border: 2px solid rgb(74,100,255);
- border-radius: 4px;
-}
-QCheckBox::indicator:unchecked { background-color: transparent; }
-QCheckBox::indicator:checked { background-color: rgb(74,100,255); }
-
-QPushButton {
+ QPushButton {
width: 40px;
height: 20px;
background-color: transparent;
@@ -1620,14 +1517,7 @@ width: 40px;
QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
+QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
@@ -1742,14 +1632,7 @@ width: 40px;
QPushButton:pressed { border-image: url(:/icons/setup_btn_checked.svg); }
QPushButton:!pressed { border-image: url(:/icons/setup_btn_unchecked.svg); }
QPushButton:hover:!pressed:!checked { border-image: url(:/icons/setup_btn_hover.svg); }
-QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
-
-QLabel {
-font-size: 14px;
- font-weight: bold;
-
-color: rgba(255, 255, 255, 153);
-}
+QPushButton:checked { border-image: url(:/icons/setup_btn_checked.svg); }
@@ -1782,6 +1665,9 @@ color: rgba(255, 255, 255, 153);
Channel Settings
+
+ true
+
-
@@ -1854,6 +1740,9 @@ color: rgba(255, 255, 255, 153);
+
+ true
+
-
@@ -1877,6 +1766,9 @@ color: rgba(255, 255, 255, 153);
Trigger
+
+ true
+
-
@@ -1925,6 +1817,12 @@ color: rgba(255, 255, 255, 153);
QPushButton
+
+ adiscope::InstrumentNotes
+ QWidget
+
+ 1
+
adiscope::RunSingleWidget
QWidget
@@ -1937,14 +1835,14 @@ color: rgba(255, 255, 255, 153);
- adiscope::InstrumentNotes
- QWidget
-
- 1
+ adiscope::LinkedButton
+ QPushButton
+
+
diff --git a/ui/patterns/binarycounterpatternui.ui b/ui/patterns/binarycounterpatternui.ui
index 3c30a98f9a..5794e9c553 100644
--- a/ui/patterns/binarycounterpatternui.ui
+++ b/ui/patterns/binarycounterpatternui.ui
@@ -7,7 +7,7 @@
0
0
258
- 284
+ 290
@@ -58,9 +58,6 @@
false
-
- font-size: 13px;
-
Init Value
@@ -88,9 +85,6 @@
-
-
- font-size: 13px;
-
Frequency
@@ -118,9 +112,6 @@
false
-
- font-size: 13px;
-
Start counter
@@ -157,9 +148,6 @@
false
-
- font-size: 13px;
-
End counter
@@ -193,9 +181,6 @@
false
-
- font-size: 13px;
-
Increment
diff --git a/ui/patterns/constantpattern.ui b/ui/patterns/constantpattern.ui
index 2b7128023a..29e6b84fdd 100644
--- a/ui/patterns/constantpattern.ui
+++ b/ui/patterns/constantpattern.ui
@@ -34,9 +34,6 @@
-
-
- font-size: 13px;
-
Constant
diff --git a/ui/patterns/frequencypattern.ui b/ui/patterns/frequencypattern.ui
index e7533ec76a..4653eadb24 100644
--- a/ui/patterns/frequencypattern.ui
+++ b/ui/patterns/frequencypattern.ui
@@ -7,7 +7,7 @@
0
0
240
- 43
+ 51
@@ -31,9 +31,6 @@
-
-
- font-size: 13px;
-
Frequency
diff --git a/ui/patterns/i2cpatternui.ui b/ui/patterns/i2cpatternui.ui
index f9621825b6..df60fefddc 100644
--- a/ui/patterns/i2cpatternui.ui
+++ b/ui/patterns/i2cpatternui.ui
@@ -67,9 +67,6 @@
-
-
- font-size: 13px;
-
Read/Write
@@ -93,9 +90,6 @@
false
-
- font-size: 13px;
-
MSB First
@@ -113,9 +107,6 @@
-
-
- font-size: 13px;
-
Address
@@ -136,9 +127,6 @@
-
-
- font-size: 13px;
-
Inter frame space
@@ -159,9 +147,6 @@
-
-
- font-size: 13px;
-
Data
diff --git a/ui/patterns/numberpattern.ui b/ui/patterns/numberpattern.ui
index 22b2960f87..0185a76a5b 100644
--- a/ui/patterns/numberpattern.ui
+++ b/ui/patterns/numberpattern.ui
@@ -31,9 +31,6 @@
-
-
- font-size: 13px;
-
Number
diff --git a/ui/patterns/spipatternui.ui b/ui/patterns/spipatternui.ui
index 69a3d1bc8b..40ea4441b5 100644
--- a/ui/patterns/spipatternui.ui
+++ b/ui/patterns/spipatternui.ui
@@ -69,9 +69,6 @@
-
-
- font-size: 13px;
-
MSB First
@@ -111,9 +108,6 @@
-
-
- font-size: 13px;
-
CLK Phase
@@ -156,9 +150,6 @@
-
-
- font-size: 13px;
-
CS Polarity
@@ -204,9 +195,6 @@
-
-
- font-size: 13px;
-
CLK Polarity
@@ -226,9 +214,6 @@
-
-
- font-size: 13px;
-
Bytes per frame
@@ -249,9 +234,6 @@
-
-
-